<?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>195276</bug_id>
          
          <creation_ts>2019-03-04 07:10:56 -0800</creation_ts>
          <short_desc>Rename AtomicString to AtomString</short_desc>
          <delta_ts>2019-06-16 18:49:30 -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>Web Template Framework</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</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="Michael Catanzaro">mcatanzaro</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>mjs</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1512150</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-03-04 07:10:56 -0800</bug_when>
    <thetext>On webkit-dev we discussed confusion caused by the name AtomicString. Many developers over the years have mistaken AtomicString for a threadsafe/synchronized string class to be shared across threads. In fact, it&apos;s an interned (&quot;atom string&quot;) class where all strings are stored in a global string table, so not only can AtomicStrings not be shared across threads, they cannot be created or used on secondary threads at all. Turns out many developers (myself included) have never heard of &quot;atom strings,&quot; while others have never heard of &quot;interned strings&quot; (the term I&apos;m familiar with, from both GLib and Java).

After several possible names were considered (the best: &quot;Stringleton&quot;, thanks for that one, Simon) we seem to have consensus to rename this class from AtomicString to AtomString.

It&apos;s an intimidating rename, so I don&apos;t plan to work on it myself (at least not now), but I wanted to file a bug at least.

Discussed at:

https://lists.webkit.org/pipermail/webkit-dev/2018-December/030355.html
https://lists.webkit.org/pipermail/webkit-dev/2019-January/030411.html

And older:

https://lists.webkit.org/pipermail/webkit-dev/2013-June/024988.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1512183</commentid>
    <comment_count>1</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-03-04 08:48:38 -0800</bug_when>
    <thetext>We’ll do it with the do-webcore-rename script, which makes it really easy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1512184</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-03-04 08:49:05 -0800</bug_when>
    <thetext>Although we might need to do some trial runs and fix bugs in the script.

I’ve done similarly-broad giant renames with that script before.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1512210</commentid>
    <comment_count>3</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-03-04 10:04:18 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #2)
&gt; Although we might need to do some trial runs and fix bugs in the script.
&gt; 
&gt; I’ve done similarly-broad giant renames with that script before.

Cool script. Note its output when not given anything new to rename:

diff --git a/Source/WTF/wtf/Expected.h b/Source/WTF/wtf/Expected.h
index e9b0ec9f9e6..b64f69ecdab 100644
--- a/Source/WTF/wtf/Expected.h
+++ b/Source/WTF/wtf/Expected.h
@@ -214,7 +214,7 @@ template&lt;class E&gt;
 class bad_expected_access : public bad_expected_access&lt;void&gt; {
 public:
     explicit bad_expected_access(E val) : val(val) { }
-    virtual const char* what() const noexcept override { return std::exception::what(); }
+    const char* what() const noexcept override { return std::exception::what(); }
     E&amp; error() &amp; { return val; }
     const E&amp; error() const&amp; { return val; }
     E&amp;&amp; error() &amp;&amp; { return std::move(val); }

(A code style error.)

diff --git a/Source/WTF/wtf/Platform.h b/Source/WTF/wtf/Platform.h
index 94037ce8e29..369d2344d98 100644
--- a/Source/WTF/wtf/Platform.h
+++ b/Source/WTF/wtf/Platform.h
@@ -353,7 +353,7 @@
 #endif
 
 /* ==== OS() - underlying operating system; only to be used for mandated low-level services like 
-   virtual memory, not to choose a GUI toolkit ==== */
+   memory, not to choose a GUI toolkit ==== */
 
 /* OS(AIX) - AIX */
 #ifdef _AIX

(A do-webcore-rename issue.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1512277</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-03-04 12:03:23 -0800</bug_when>
    <thetext>It removed the word &quot;virtual&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1512278</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-03-04 12:04:10 -0800</bug_when>
    <thetext>One tricky, but maybe obvious, thing about do-webcore-rename -- it usually has the &quot;old renaming&quot; list checked in, so you have to delete that and replace it with the new set of things to rename.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1545068</commentid>
    <comment_count>6</comment_count>
      <attachid>372205</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-06-15 17:51:28 -0700</bug_when>
    <thetext>Created attachment 372205
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1545069</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-06-15 17:52:48 -0700</bug_when>
    <thetext>Note for anyone reviewing the patch: All the changes were done by the do-webcore-rename script, except for the changes to do-webcore-rename itself, and the changes to AtomString.h to add a temporary AtomicString synonym. Still worth looking over the changes to see if you can spot any mistakes, but it&apos;s not like a person made a choice about each change.

Accordingly, I didn&apos;t try to fix the style mistakes mentioned by the style checker in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1545070</commentid>
    <comment_count>8</comment_count>
      <attachid>372205</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-06-15 17:54:21 -0700</bug_when>
    <thetext>Comment on attachment 372205
Patch

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

&gt; Tools/Scripts/do-webcore-rename:270
&gt; +            $newContents =~ s/\b$from\b/$renames{$from}/g; # this &quot; unconfuses Xcode syntax highlighting

I can take out that comment, since it doesn’t apply any more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1545071</commentid>
    <comment_count>9</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-06-15 17:56:35 -0700</bug_when>
    <thetext>Attachment 372205 did not pass style-queue:


ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:43:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:44:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:68:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:69:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/dom/QualifiedName.cpp:29:  l is incorrectly named. Don&apos;t use the single letter &apos;l&apos; as an identifier name.  [readability/naming] [4]
ERROR: Source/WTF/wtf/text/AtomStringHash.h:31:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/text/AtomStringHash.h:36:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/AtomString.cpp:28:  You should not add a blank line before implementation file&apos;s own header.  [build/include_order] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/AtomString.cpp:36:  Consider using ASSERT_EQ instead of ASSERT_TRUE(a == b)  [readability/check] [2]
ERROR: Source/WebCore/dom/Event.h:147:  The parameter name &quot;isTrusted&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/wtf/text/AtomString.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/text/AtomString.h:79:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/text/AtomString.h:80:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/text/AtomString.h:85:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/text/AtomString.h:100:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:42:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:43:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/VectorTraits.h:31:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/PointerEvent.h:128:  The parameter name &quot;isCancelable&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/xml/XPathStep.h:58:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/xml/XPathStep.h:59:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/TouchEvent.cpp:59:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WebCore/dom/SpaceSplitString.cpp:161:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 23 in 1257 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1545130</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-06-16 09:16:21 -0700</bug_when>
    <thetext>I think this is ready to land! Review, anyone?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1545132</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-06-16 09:18:34 -0700</bug_when>
    <thetext>Maybe someone needs to re-create the patch using Subversion directly so the renames work correctly?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1545173</commentid>
    <comment_count>12</comment_count>
      <attachid>372205</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-06-16 17:00:04 -0700</bug_when>
    <thetext>Comment on attachment 372205
Patch

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

Thanks Darin! I certainly haven&apos;t looked at the whole diff, but it passes my sanity check.

I suspect the Bugzilla review tool just isn&apos;t smart enough to notice renames? Renames generally appear as renames on trac.

&gt; Source/WTF/wtf/text/AtomString.h:180
&gt; +using AtomicString = AtomString;

This deserves a FIXME to remove it when Apple is able to do that, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1545180</commentid>
    <comment_count>13</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-06-16 18:12:25 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #12)
&gt; This deserves a FIXME to remove it when Apple is able to do that, right?

Sure, but that&apos;s going to be really soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1545182</commentid>
    <comment_count>14</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-06-16 18:39:03 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #12)
&gt; I suspect the Bugzilla review tool just isn&apos;t smart enough to notice
&gt; renames? Renames generally appear as renames on trac.

At one time, the review tool did the right thing when passed a patch generated by Subversion but not a patch generated but git. I don’t know about what will or won’t work when actually applying the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1545183</commentid>
    <comment_count>15</comment_count>
      <attachid>372205</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-06-16 18:48:50 -0700</bug_when>
    <thetext>Comment on attachment 372205
Patch

Clearing flags on attachment: 372205

Committed r246490: &lt;https://trac.webkit.org/changeset/246490&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1545184</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-06-16 18:48:51 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1545185</commentid>
    <comment_count>17</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-06-16 18:49:30 -0700</bug_when>
    <thetext>&lt;rdar://problem/51791157&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>372205</attachid>
            <date>2019-06-15 17:51:28 -0700</date>
            <delta_ts>2019-06-16 18:48:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195276-20190615175123.patch</filename>
            <type>text/plain</type>
            <size>2228709</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ2NDY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
NjkxNjBiYmQyYTU4NTJlMDg3NWFkNDI1YWQzZWIzM2MzZTA2MjQ0Li5jNzcyMDJkMGRkN2RmYmU1
NGE1MGM1MDhjODZkMmU2OWI0Y2IwZjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMiBAQAorMjAxOS0wNi0xNSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVuYW1lIEF0b21pY1N0cmluZyB0byBBdG9tU3RyaW5nCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTUyNzYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1hbnkgZmlsZXM6IExldCBkby13
ZWJjb3JlLXJlbmFtZSBkbyB0aGUgcmVuYW1pbmcuCisKIDIwMTktMDYtMTQgIEtlaXRoIE1pbGxl
ciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVzdG9yZSBQQUMgYmFzZWQg
Y2FnZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFu
Z2VMb2cKaW5kZXggZWRmMmNlZmQ0YzU3NDc3Nzc5NDE0MjczY2FjY2JlOTRmOTI5YTYyMS4uMDQw
OTU2ODc3NzE4MDBlN2JmMmYxN2NmMWVmYzhiYTFlMzEzOTA2OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBA
QAorMjAxOS0wNi0xNSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVuYW1lIEF0b21pY1N0cmluZyB0byBBdG9tU3RyaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTUyNzYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1hbnkgZmlsZXM6IExldCBkby13ZWJjb3JlLXJl
bmFtZSBkbyB0aGUgcmVuYW1pbmcuCisKKyAgICAgICAgKiB3dGYvdGV4dC9BdG9tU3RyaW5nLmg6
IEFmdGVyIHJlbmFtaW5nLCBhZGRlZCBBdG9taWNTdHJpbmcgYXMgYSBzeW5vbnltIGZvcgorICAg
ICAgICBub3c7IGhlbHBzIHNtb290aCB0aGluZ3Mgb3ZlciB3aXRoIGEgdGlueSBiaXQgb2YgQXBw
bGUgaW50ZXJuYWwgc29mdHdhcmUgc28KKyAgICAgICAgd2UgZG9uJ3QgaGF2ZSB0byBkbyB0aGlz
IGFsbCBhdCBvbmNlLiBDYW4gcmVtb3ZlIGl0IHNvb24uCisKIDIwMTktMDYtMTIgIEFudG9pbmUg
UXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBTaG93IHRoZSB3ZWIgcGFnZSBV
Ukwgd2hlbiBzaGFyaW5nIGFuIEFSIG1vZGVsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWMxOTYxMWZkYmRiODQw
Yzg3MWY4NzRhZTQ3NDY1N2EwZjJmZDVhMi4uMmJiZGZiNjRkOWQ4Y2YxZWVlZDUxNTAyM2Y4ZTAz
MmI1N2JlNDAzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE5LTA2LTE1ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgQXRvbWljU3RyaW5n
IHRvIEF0b21TdHJpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5NTI3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogbWFueSBmaWxlczogTGV0IGRvLXdlYmNvcmUtcmVuYW1lIGRvIHRoZSByZW5hbWlu
Zy4KKwogMjAxOS0wNi0xNSAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFtMRkNdW0JGQ10gRml4IGF2YWlsYWJsZSB3aWR0aCBmb3Igbm9uLWZsb2F0aW5nIHBvc2l0
aW9uZWQgZmxvYXQgYXZvaWRlcnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDkzNDI5MjQ3Y2ViMDAzYTBmY2Q3OTc4
NWZmZjU0ODczMDAwZWI2YTMuLjg5MjM2Njc1Zjc3ZmRiYzI1YWE5OTI4OTE3MzQ2MDk2OTA4ZDU2
ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTktMDYtMTUgIERhcmluIEFkbGVyICA8
ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBBdG9taWNTdHJpbmcgdG8gQXRvbVN0
cmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1
Mjc2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBt
YW55IGZpbGVzOiBMZXQgZG8td2ViY29yZS1yZW5hbWUgZG8gdGhlIHJlbmFtaW5nLgorCiAyMDE5
LTA2LTE1ICBMdWRvdmljbyBkZSBOaXR0aXMgIDxsdWRvdmljby5kZW5pdHRpc0Bjb2xsYWJvcmEu
Y29tPgogCiAgICAgICAgIFtHVEtdIFN0b3AgYWNjZXNzaW5nIEdka0V2ZW50IGZpZWxkcyB3aGVu
IHBvc3NpYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKaW5kZXggMTI1ZGRkYTA5ZTY4NzQw
N2YxNmRiNjZmNmUxOTljZWQxM2VjMDYwNy4uZjYzMjgyNDJkNTU1OGVjNDk5MjBlOTNlZDQzZmRl
ZWYyOThmMTQ5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBA
CisyMDE5LTA2LTE1ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZW5hbWUgQXRvbWljU3RyaW5nIHRvIEF0b21TdHJpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTI3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogbWFueSBmaWxlczogTGV0IGRvLXdlYmNvcmUtcmVu
YW1lIGRvIHRoZSByZW5hbWluZy4KKwogMjAxOS0wNC0xNyAgQnJhZHkgRWlkc29uICA8YmVpZHNv
bkBhcHBsZS5jb20+CiAKICAgICAgICAgTGluayBjbGlja3MgaW4gUERGcyBzaG91bGRuJ3Qgc2Vu
ZCByZWZlcnJlciBoZWFkZXJzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGFmNTE4
YzYwMTQ3MzdiMDU1OWU5ODcxMGZhZTdlYWNjOTM4ZTUzZWEuLjIxNjg0NGJhOTQxMjE3NjVhYTM1
ZTQ5NzRkODFjMzU3YmQzZDM1MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMiBAQAorMjAxOS0wNi0xNSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVuYW1lIEF0b21pY1N0cmluZyB0byBBdG9tU3RyaW5nCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTUyNzYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1hbnkgZmlsZXM6IExldCBkby13
ZWJjb3JlLXJlbmFtZSBkbyB0aGUgcmVuYW1pbmcuCisKIDIwMTktMDYtMTQgIE1lZ2FuIEdhcmRu
ZXIgIDxtZWdhbl9nYXJkbmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBNb3ZlIFN5bnRoZXRpYyBF
ZGl0aW5nIENvbW1hbmRzIHRvIGJlaGluZCBhbiBleHBlcmltZW50YWwgZmVhdHVyZSBmbGFnCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggZmEzMTA2N2Y2YmNhYWFiZDQ2MTAzOWY3MmU4
N2U1ZTczNjQxZWZkOC4uMjNhN2IxMTNkZTk3MmY5ZTk4Y2RjN2NmNzE0NmJjMjE0YWYxNzAyNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE5LTA2LTE1
ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgQXRvbWlj
U3RyaW5nIHRvIEF0b21TdHJpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5NTI3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogbWFueSBmaWxlczogTGV0IGRvLXdlYmNvcmUtcmVuYW1lIGRvIHRoZSBy
ZW5hbWluZy4KKwogMjAxOS0wNS0zMSAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnku
Y29tPgogCiAgICAgICAgIFtDTWFrZV0gQWRkIFdlYktpdDo6V1RGIHRhcmdldApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NsYXNzUmVmLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNDbGFzc1JlZi5jcHAKaW5kZXggZDQ1ODNkOGUxNjUxNWQ2MTRhNTlj
OWFjYzM4M2EzY2MxMTFmNjBhZC4uZjFjOWQ1NzAyYThhYTY5MDQ0ZGZiMjk1YjQ3MWZjZmNiYzg5
MGI2YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NsYXNzUmVmLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYuY3BwCkBAIC04NSwx
OSArODUsMTkgQEAgT3BhcXVlSlNDbGFzczo6T3BhcXVlSlNDbGFzcyhjb25zdCBKU0NsYXNzRGVm
aW5pdGlvbiogZGVmaW5pdGlvbiwgT3BhcXVlSlNDbGFzcyoKIE9wYXF1ZUpTQ2xhc3M6On5PcGFx
dWVKU0NsYXNzKCkKIHsKICAgICAvLyBUaGUgZW1wdHkgc3RyaW5nIGlzIHNoYXJlZCBhY3Jvc3Mg
dGhyZWFkcyAmIGlzIGFuIGlkZW50aWZpZXIsIGluIGFsbCBvdGhlciBjYXNlcyB3ZSBzaG91bGQg
aGF2ZSBkb25lIGEgZGVlcCBjb3B5IGluIGNsYXNzTmFtZSgpLCBiZWxvdy4gCi0gICAgQVNTRVJU
KCFtX2NsYXNzTmFtZS5sZW5ndGgoKSB8fCAhbV9jbGFzc05hbWUuaW1wbCgpLT5pc0F0b21pYygp
KTsKKyAgICBBU1NFUlQoIW1fY2xhc3NOYW1lLmxlbmd0aCgpIHx8ICFtX2NsYXNzTmFtZS5pbXBs
KCktPmlzQXRvbSgpKTsKIAogI2lmbmRlZiBOREVCVUcKICAgICBpZiAobV9zdGF0aWNWYWx1ZXMp
IHsKICAgICAgICAgT3BhcXVlSlNDbGFzc1N0YXRpY1ZhbHVlc1RhYmxlOjpjb25zdF9pdGVyYXRv
ciBlbmQgPSBtX3N0YXRpY1ZhbHVlcy0+ZW5kKCk7CiAgICAgICAgIGZvciAoT3BhcXVlSlNDbGFz
c1N0YXRpY1ZhbHVlc1RhYmxlOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fc3RhdGljVmFsdWVzLT5i
ZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgICAgICBBU1NFUlQoIWl0LT5rZXktPmlz
QXRvbWljKCkpOworICAgICAgICAgICAgQVNTRVJUKCFpdC0+a2V5LT5pc0F0b20oKSk7CiAgICAg
fQogCiAgICAgaWYgKG1fc3RhdGljRnVuY3Rpb25zKSB7CiAgICAgICAgIE9wYXF1ZUpTQ2xhc3NT
dGF0aWNGdW5jdGlvbnNUYWJsZTo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9zdGF0aWNGdW5jdGlv
bnMtPmVuZCgpOwogICAgICAgICBmb3IgKE9wYXF1ZUpTQ2xhc3NTdGF0aWNGdW5jdGlvbnNUYWJs
ZTo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3N0YXRpY0Z1bmN0aW9ucy0+YmVnaW4oKTsgaXQgIT0g
ZW5kOyArK2l0KQotICAgICAgICAgICAgQVNTRVJUKCFpdC0+a2V5LT5pc0F0b21pYygpKTsKKyAg
ICAgICAgICAgIEFTU0VSVCghaXQtPmtleS0+aXNBdG9tKCkpOwogICAgIH0KICNlbmRpZgogICAg
IApAQCAtMTMxLDcgKzEzMSw3IEBAIE9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YTo6T3BhcXVlSlND
bGFzc0NvbnRleHREYXRhKEpTQzo6Vk0mLCBPcGFxdWVKU0NsYXNzKiBqc0NsCiAgICAgICAgIHN0
YXRpY1ZhbHVlcyA9IHN0ZDo6bWFrZV91bmlxdWU8T3BhcXVlSlNDbGFzc1N0YXRpY1ZhbHVlc1Rh
YmxlPigpOwogICAgICAgICBPcGFxdWVKU0NsYXNzU3RhdGljVmFsdWVzVGFibGU6OmNvbnN0X2l0
ZXJhdG9yIGVuZCA9IGpzQ2xhc3MtPm1fc3RhdGljVmFsdWVzLT5lbmQoKTsKICAgICAgICAgZm9y
IChPcGFxdWVKU0NsYXNzU3RhdGljVmFsdWVzVGFibGU6OmNvbnN0X2l0ZXJhdG9yIGl0ID0ganND
bGFzcy0+bV9zdGF0aWNWYWx1ZXMtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAg
ICAgICAgQVNTRVJUKCFpdC0+a2V5LT5pc0F0b21pYygpKTsKKyAgICAgICAgICAgIEFTU0VSVCgh
aXQtPmtleS0+aXNBdG9tKCkpOwogICAgICAgICAgICAgU3RyaW5nIHZhbHVlTmFtZSA9IGl0LT5r
ZXktPmlzb2xhdGVkQ29weSgpOwogICAgICAgICAgICAgc3RhdGljVmFsdWVzLT5hZGQodmFsdWVO
YW1lLmltcGwoKSwgc3RkOjptYWtlX3VuaXF1ZTxTdGF0aWNWYWx1ZUVudHJ5PihpdC0+dmFsdWUt
PmdldFByb3BlcnR5LCBpdC0+dmFsdWUtPnNldFByb3BlcnR5LCBpdC0+dmFsdWUtPmF0dHJpYnV0
ZXMsIHZhbHVlTmFtZSkpOwogICAgICAgICB9CkBAIC0xNDEsNyArMTQxLDcgQEAgT3BhcXVlSlND
bGFzc0NvbnRleHREYXRhOjpPcGFxdWVKU0NsYXNzQ29udGV4dERhdGEoSlNDOjpWTSYsIE9wYXF1
ZUpTQ2xhc3MqIGpzQ2wKICAgICAgICAgc3RhdGljRnVuY3Rpb25zID0gc3RkOjptYWtlX3VuaXF1
ZTxPcGFxdWVKU0NsYXNzU3RhdGljRnVuY3Rpb25zVGFibGU+KCk7CiAgICAgICAgIE9wYXF1ZUpT
Q2xhc3NTdGF0aWNGdW5jdGlvbnNUYWJsZTo6Y29uc3RfaXRlcmF0b3IgZW5kID0ganNDbGFzcy0+
bV9zdGF0aWNGdW5jdGlvbnMtPmVuZCgpOwogICAgICAgICBmb3IgKE9wYXF1ZUpTQ2xhc3NTdGF0
aWNGdW5jdGlvbnNUYWJsZTo6Y29uc3RfaXRlcmF0b3IgaXQgPSBqc0NsYXNzLT5tX3N0YXRpY0Z1
bmN0aW9ucy0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBBU1NFUlQo
IWl0LT5rZXktPmlzQXRvbWljKCkpOworICAgICAgICAgICAgQVNTRVJUKCFpdC0+a2V5LT5pc0F0
b20oKSk7CiAgICAgICAgICAgICBzdGF0aWNGdW5jdGlvbnMtPmFkZChpdC0+a2V5LT5pc29sYXRl
ZENvcHkoKSwgc3RkOjptYWtlX3VuaXF1ZTxTdGF0aWNGdW5jdGlvbkVudHJ5PihpdC0+dmFsdWUt
PmNhbGxBc0Z1bmN0aW9uLCBpdC0+dmFsdWUtPmF0dHJpYnV0ZXMpKTsKICAgICAgICAgfQogICAg
IH0KQEAgLTE1Nyw3ICsxNTcsNyBAQCBPcGFxdWVKU0NsYXNzQ29udGV4dERhdGEmIE9wYXF1ZUpT
Q2xhc3M6OmNvbnRleHREYXRhKEV4ZWNTdGF0ZSogZXhlYykKIAogU3RyaW5nIE9wYXF1ZUpTQ2xh
c3M6OmNsYXNzTmFtZSgpCiB7Ci0gICAgLy8gTWFrZSBhIGRlZXAgY29weSwgc28gdGhhdCB0aGUg
Y2FsbGVyIGhhcyBubyBjaGFuY2UgdG8gcHV0IHRoZSBvcmlnaW5hbCBpbnRvIEF0b21pY1N0cmlu
Z1RhYmxlLgorICAgIC8vIE1ha2UgYSBkZWVwIGNvcHksIHNvIHRoYXQgdGhlIGNhbGxlciBoYXMg
bm8gY2hhbmNlIHRvIHB1dCB0aGUgb3JpZ2luYWwgaW50byBBdG9tU3RyaW5nVGFibGUuCiAgICAg
cmV0dXJuIG1fY2xhc3NOYW1lLmlzb2xhdGVkQ29weSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDbGFzc1JlZi5oCmluZGV4IDkwYzRmNTM5MDA1YzgyYjBlMjNhYjkxMjA3Njk5YWVh
NGEwMzlhODkuLjBkZDBkY2E1NGMwNDM4OTVlOWUwM2JhZGI5MDE1ZmJhZWY4YjI5YjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDbGFzc1JlZi5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDbGFzc1JlZi5oCkBAIC0xMjEsNyArMTIxLDcgQEAgcHJp
dmF0ZToKIAogICAgIE9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YSYgY29udGV4dERhdGEoSlNDOjpF
eGVjU3RhdGUqKTsKIAotICAgIC8vIFN0cmluZ3MgaW4gdGhlc2UgZGF0YSBtZW1iZXJzIHNob3Vs
ZCBub3QgYmUgcHV0IGludG8gYW55IEF0b21pY1N0cmluZ1RhYmxlLgorICAgIC8vIFN0cmluZ3Mg
aW4gdGhlc2UgZGF0YSBtZW1iZXJzIHNob3VsZCBub3QgYmUgcHV0IGludG8gYW55IEF0b21TdHJp
bmdUYWJsZS4KICAgICBTdHJpbmcgbV9jbGFzc05hbWU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE9w
YXF1ZUpTQ2xhc3NTdGF0aWNWYWx1ZXNUYWJsZT4gbV9zdGF0aWNWYWx1ZXM7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPE9wYXF1ZUpTQ2xhc3NTdGF0aWNGdW5jdGlvbnNUYWJsZT4gbV9zdGF0aWNGdW5j
dGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNBdG9taWNWYWx1
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQXRvbWljVmFsdWUuaAppbmRleCAwODVh
OWUxOTQ5NTdiMjQ3NmZiMTJmNWRiMmMzM2Q4MWNkNzYyYmJlLi45ZjJiNTJkN2EyNzYxZThlNDE2
ZjgzMDJhOTY2ZmUwN2M3MGRlYjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNBdG9taWNWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0F0b21p
Y1ZhbHVlLmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgQXRvbWlj
VmFsdWUgOiBwdWJsaWMgTWVtb3J5VmFsdWUgewogcHVibGljOgogICAgIHN0YXRpYyBib29sIGFj
Y2VwdHMoS2luZCBraW5kKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGlzQXRvbWljKGtpbmQub3Bj
b2RlKCkpOworICAgICAgICByZXR1cm4gaXNBdG9tKGtpbmQub3Bjb2RlKCkpOwogICAgIH0KICAg
ICAKICAgICB+QXRvbWljVmFsdWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM01lbW9yeVZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlW
YWx1ZS5oCmluZGV4IGFhYzM4Mjg0OTY2NmFjNjFkYjlkYTMxZWVmZDkxYmYzZjJiZDhiOTYuLmI5
OThhZWRjOTNmNzdjYzcxMzgxMDdhOTYzYTk5NzdmNmJlNzRiZmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuaApAQCAtNzQsNyArNzQsNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBpc0xvYWQoKSBjb25zdCB7IHJldHVybiBCMzo6aXNMb2FkKG9wY29kZSgpKTsgfQogCiAg
ICAgYm9vbCBoYXNGZW5jZSgpIGNvbnN0IHsgcmV0dXJuICEhZmVuY2VSYW5nZSgpOyB9Ci0gICAg
Ym9vbCBpc0V4b3RpYygpIGNvbnN0IHsgcmV0dXJuIGhhc0ZlbmNlKCkgfHwgaXNBdG9taWMob3Bj
b2RlKCkpOyB9CisgICAgYm9vbCBpc0V4b3RpYygpIGNvbnN0IHsgcmV0dXJuIGhhc0ZlbmNlKCkg
fHwgaXNBdG9tKG9wY29kZSgpKTsgfQogCiAgICAgVHlwZSBhY2Nlc3NUeXBlKCkgY29uc3Q7CiAg
ICAgQmFuayBhY2Nlc3NCYW5rKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNPcGNvZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5o
CmluZGV4IGFhZGYzOWI0Y2Q2ZDg2YTIwYzc4YmZiNWE2NmRjYWUxMGUwM2RkMWIuLjdhYTZkZTM1
YmY0MDI0NjY5OGYxNTI5OTMxYTNmZmY4MjljZjU2NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM09wY29kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M09wY29kZS5oCkBAIC00NjUsNyArNDY1LDcgQEAgaW5saW5lIGJvb2wgaXNMb2FkU3RvcmUoT3Bj
b2RlIG9wY29kZSkKICAgICB9CiB9CiAKLWlubGluZSBib29sIGlzQXRvbWljKE9wY29kZSBvcGNv
ZGUpCitpbmxpbmUgYm9vbCBpc0F0b20oT3Bjb2RlIG9wY29kZSkKIHsKICAgICBzd2l0Y2ggKG9w
Y29kZSkgewogICAgIGNhc2UgQXRvbWljV2Vha0NBUzoKQEAgLTUxMCw3ICs1MTAsNyBAQCBpbmxp
bmUgYm9vbCBpc0F0b21pY1hjaGcoT3Bjb2RlIG9wY29kZSkKIAogaW5saW5lIGJvb2wgaXNNZW1v
cnlBY2Nlc3MoT3Bjb2RlIG9wY29kZSkKIHsKLSAgICByZXR1cm4gaXNBdG9taWMob3Bjb2RlKSB8
fCBpc0xvYWRTdG9yZShvcGNvZGUpOworICAgIHJldHVybiBpc0F0b20ob3Bjb2RlKSB8fCBpc0xv
YWRTdG9yZShvcGNvZGUpOwogfQogCiBpbmxpbmUgT3Bjb2RlIHNpZ25FeHRlbmRPcGNvZGUoV2lk
dGggd2lkdGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3Bl
Y3VsYXRlZFR5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0
ZWRUeXBlLmNwcAppbmRleCAyNGU1NGVmN2U3ZDEwNTA5MDVkZWIzYjQ3MmJkNGEwZTJkYzczN2Nk
Li43MDExOTJmMGUyMDRlNTM5MDEzYTEwOTA0MmM0NDAzMzNmN2JkMDM4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAKQEAgLTQ5NCw3
ICs0OTQsNyBAQCBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZyb21DZWxsKEpTQ2VsbCogY2Vs
bCkKICAgICBpZiAoY2VsbC0+aXNTdHJpbmcoKSkgewogICAgICAgICBKU1N0cmluZyogc3RyaW5n
ID0ganNDYXN0PEpTU3RyaW5nKj4oY2VsbCk7CiAgICAgICAgIGlmIChjb25zdCBTdHJpbmdJbXBs
KiBpbXBsID0gc3RyaW5nLT50cnlHZXRWYWx1ZUltcGwoKSkgewotICAgICAgICAgICAgaWYgKGlt
cGwtPmlzQXRvbWljKCkpCisgICAgICAgICAgICBpZiAoaW1wbC0+aXNBdG9tKCkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIFNwZWNTdHJpbmdJZGVudDsKICAgICAgICAgfQogICAgICAgICByZXR1
cm4gU3BlY1N0cmluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggYWJlNDE2NmM1Yjg2ZTMyMjBhZTcz
YTRhNDgxMTgwMjNmMjFmNzRjYS4uNTE1YjU5ODNmNmExZDU4MDVkMmZiNDgxZWNjMGE5N2NkNTk5
ZDdiOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTg4OCw3ICs4ODgsNyBAQCBCeXRlY29kZUdlbmVy
YXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBFdmFsTm9kZSogZXZhbE5vZGUsIFVubGlu
a2VkRXZhbENvZAogICAgIFZlY3RvcjxJZGVudGlmaWVyLCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxv
dz4gaG9pc3RlZEZ1bmN0aW9uczsKICAgICBmb3IgKGF1dG8mIGVudHJ5IDogdmFyRGVjbGFyYXRp
b25zKSB7CiAgICAgICAgIEFTU0VSVChlbnRyeS52YWx1ZS5pc1ZhcigpKTsKLSAgICAgICAgQVNT
RVJUKGVudHJ5LmtleS0+aXNBdG9taWMoKSB8fCBlbnRyeS5rZXktPmlzU3ltYm9sKCkpOworICAg
ICAgICBBU1NFUlQoZW50cnkua2V5LT5pc0F0b20oKSB8fCBlbnRyeS5rZXktPmlzU3ltYm9sKCkp
OwogICAgICAgICBpZiAoZW50cnkudmFsdWUuaXNTbG9wcHlNb2RlSG9pc3RpbmdDYW5kaWRhdGUo
KSkKICAgICAgICAgICAgIGhvaXN0ZWRGdW5jdGlvbnMuYXBwZW5kKElkZW50aWZpZXI6OmZyb21V
aWQobV92bSwgZW50cnkua2V5LmdldCgpKSk7CiAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aAppbmRleCBjNjM2OGVlODQ4ZWRkZmRkZjlhZWE1ZTAyYTg5ZjQwMDRhYzRiNzkyLi4yZTBkMDFk
ODc0YjY1OTZjZjNlYWZhMTIxYzY5YTgyMjFiOGNjNzg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBA
IC0zNTg0LDcgKzM1ODQsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0
ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICAgICAg
aWYgKGNvbnN0YW50LmlzU3RyaW5nKCkpIHsKICAgICAgICAgICAgICAgICBKU1N0cmluZyogc3Ry
aW5nID0gYXNTdHJpbmcoY29uc3RhbnQpOwogICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZ0lt
cGwqIGltcGwgPSBzdHJpbmctPnRyeUdldFZhbHVlSW1wbCgpOwotICAgICAgICAgICAgICAgIGlm
IChpbXBsICYmIGltcGwtPmlzQXRvbWljKCkpCisgICAgICAgICAgICAgICAgaWYgKGltcGwgJiYg
aW1wbC0+aXNBdG9tKCkpCiAgICAgICAgICAgICAgICAgICAgIG1fc3RhdGUuc2V0Rm91bmRDb25z
dGFudHModHJ1ZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuY3BwCmluZGV4IDFjYTliNzRlNzE2MmVmYzIx
MDgyYjY4NjM3MWVjMzQyN2E5NzI5MjcuLjE5ZjkzYjcwYzEwNGY1OGRjZDE0MmNlYjNjZGJhYzBh
ZGM4Y2RjMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJh
Y3RWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZh
bHVlLmNwcApAQCAtMzc5LDcgKzM3OSw3IEBAIHZvaWQgQWJzdHJhY3RWYWx1ZTo6ZmlsdGVyVmFs
dWVCeVR5cGUoKQogCiAgICAgLy8gV2UgYXNzdW1lIHRoYXQgdGhlIGNvbnN0YW50IHZhbHVlIGNh
biBwcm9kdWNlIGEgbmFycm93ZXIgdHlwZSBhdAogICAgIC8vIHNvbWUgcG9pbnQuIEZvciBleGFt
cGxlLCByb3BlIEpTU3RyaW5nIHByb2R1Y2VzIFNwZWNTdHJpbmcsIGJ1dAotICAgIC8vIGl0IHBy
b2R1Y2VzIFNwZWNTdHJpbmdJZGVudCBvbmNlIGl0IGlzIHJlc29sdmVkIHRvIEF0b21pY1N0cmlu
Z0ltcGwuCisgICAgLy8gaXQgcHJvZHVjZXMgU3BlY1N0cmluZ0lkZW50IG9uY2UgaXQgaXMgcmVz
b2x2ZWQgdG8gQXRvbVN0cmluZ0ltcGwuCiAgICAgLy8gV2UgZG8gbm90IG1ha2UgdGhpcyBBYnN0
cmFjdFZhbHVlIGNsZWFyZWQsIGJ1dCBjbGVhciB0aGUgY29uc3RhbnQKICAgICAvLyB2YWx1ZSBp
ZiB2YWxpZGF0aW9uIGZhaWxzIGN1cnJlbnRseS4KICAgICBtX3ZhbHVlID0gSlNWYWx1ZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQ
aGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1Bo
YXNlLmNwcAppbmRleCA0YTJmMTQyMGVmNDI5Y2VkYTgwNzg3NmJhMjdlMGFiYWZkMThkZDM2Li42
MmI3OWZmYWIzODQzYzZkZGM2OGYwODgwMzM3ZmE5YmUyNWIwOTFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcApAQCAt
MzIzLDcgKzMyMyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
SG93ZXZlciwgYSBjb25zdGFudCB2YWx1ZSBwcm9wYWdhdGVkIGluIERGRyBpcyBub3QgZmlsdGVy
ZWQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU28gaGVyZSwgd2UgY2hlY2sgdGhl
IHByb3BhZ2F0ZWQgdmFsdWUgaXMgYWN0dWFsbHkgYW4gYXRvbWljIHN0cmluZy4KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBBbmQgaWYgaXQncyBub3QsIHdlIGp1c3QgaWdub3JlLgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbXBsLT5pc0F0b21pYygpKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChpbXBsLT5pc0F0b20oKSkKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3RhbnRVaWQgPSBzdGF0aWNfY2FzdDxjb25zdCBVbmlxdWVk
U3RyaW5nSW1wbCo+KGltcGwpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgICAgICB9CkBAIC02NzUsNyArNjc1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICAgICAgaWYgKGNvbnN0YW50LmlzU3RyaW5nKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
IEpTU3RyaW5nKiBzdHJpbmcgPSBhc1N0cmluZyhjb25zdGFudCk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBTdHJpbmdJbXBsKiBpbXBsID0gc3RyaW5nLT50cnlHZXRWYWx1ZUltcGwo
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbXBsICYmIGltcGwtPmlzQXRvbWljKCkp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbXBsICYmIGltcGwtPmlzQXRvbSgpKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9
IG1fZ3JhcGguaWRlbnRpZmllcnMoKS5lbnN1cmUoY29uc3RfY2FzdDxVbmlxdWVkU3RyaW5nSW1w
bCo+KHN0YXRpY19jYXN0PGNvbnN0IFVuaXF1ZWRTdHJpbmdJbXBsKj4oaW1wbCkpKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9JbkJ5SWQoaWRlbnRpZmllck51
bWJlcik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xhenlKU1ZhbHVlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUuY3BwCmluZGV4IDQzYmVhZDYy
ZmY5YmUxMGQ2ZTFhZjE2MTdhOTdkOTZlMDkxMjgxZTYuLjU4M2VlNWIzMTk4YjlkZDdmMjZjZjU0
YjNhOWFmNzAzZGY3MTVmNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTGF6eUpTVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6
eUpTVmFsdWUuY3BwCkBAIC01Myw3ICs1Myw3IEBAIEpTVmFsdWUgTGF6eUpTVmFsdWU6OmdldFZh
bHVlKFZNJiB2bSkgY29uc3QKICAgICBjYXNlIEtub3duU3RyaW5nSW1wbDoKICAgICAgICAgcmV0
dXJuIGpzU3RyaW5nKCZ2bSwgdS5zdHJpbmdJbXBsKTsKICAgICBjYXNlIE5ld1N0cmluZ0ltcGw6
Ci0gICAgICAgIHJldHVybiBqc1N0cmluZygmdm0sIEF0b21pY1N0cmluZ0ltcGw6OmFkZCh1LnN0
cmluZ0ltcGwpKTsKKyAgICAgICAgcmV0dXJuIGpzU3RyaW5nKCZ2bSwgQXRvbVN0cmluZ0ltcGw6
OmFkZCh1LnN0cmluZ0ltcGwpKTsKICAgICB9CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICByZXR1cm4gSlNWYWx1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT3BlcmF0aW9ucy5jcHAKaW5kZXggNWNiMjc2ZjNmMTlmY2Y4MWViZmYzZWZkY2Q3YmUwMTUz
OTQ3ZTk2Yi4uYzQyNWVhOTZlNzhlNzFjOWQ5MTM2M2YyZWVkZmY1MzIzM2E5NTNjZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC03MTIsMTAgKzcx
MiwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5VmFsKEV4
ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZQogICAgICAgICB9IGVsc2UgaWYgKHByb3Bl
cnR5LmlzU3RyaW5nKCkpIHsKICAgICAgICAgICAgIFN0cnVjdHVyZSYgc3RydWN0dXJlID0gKmJh
c2UtPnN0cnVjdHVyZSh2bSk7CiAgICAgICAgICAgICBpZiAoSlNDZWxsOjpjYW5Vc2VGYXN0R2V0
T3duUHJvcGVydHkoc3RydWN0dXJlKSkgewotICAgICAgICAgICAgICAgIFJlZlB0cjxBdG9taWNT
dHJpbmdJbXBsPiBleGlzdGluZ0F0b21pY1N0cmluZyA9IGFzU3RyaW5nKHByb3BlcnR5KS0+dG9F
eGlzdGluZ0F0b21pY1N0cmluZyhleGVjKTsKKyAgICAgICAgICAgICAgICBSZWZQdHI8QXRvbVN0
cmluZ0ltcGw+IGV4aXN0aW5nQXRvbVN0cmluZyA9IGFzU3RyaW5nKHByb3BlcnR5KS0+dG9FeGlz
dGluZ0F0b21TdHJpbmcoZXhlYyk7CiAgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgICAgICAgICAgICAgaWYgKGV4aXN0aW5n
QXRvbWljU3RyaW5nKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9
IGJhc2UtPmZhc3RHZXRPd25Qcm9wZXJ0eSh2bSwgc3RydWN0dXJlLCBleGlzdGluZ0F0b21pY1N0
cmluZy5nZXQoKSkpCisgICAgICAgICAgICAgICAgaWYgKGV4aXN0aW5nQXRvbVN0cmluZykgewor
ICAgICAgICAgICAgICAgICAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBiYXNlLT5mYXN0R2V0T3du
UHJvcGVydHkodm0sIHN0cnVjdHVyZSwgZXhpc3RpbmdBdG9tU3RyaW5nLmdldCgpKSkKICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC03NDksMTAgKzc0OSwxMCBAQCBFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5VmFsQ2VsbChFeGVjU3RhdGUqIGV4
ZWMsIEpTQ2VsbCogYmFzZQogICAgIH0gZWxzZSBpZiAocHJvcGVydHkuaXNTdHJpbmcoKSkgewog
ICAgICAgICBTdHJ1Y3R1cmUmIHN0cnVjdHVyZSA9ICpiYXNlLT5zdHJ1Y3R1cmUodm0pOwogICAg
ICAgICBpZiAoSlNDZWxsOjpjYW5Vc2VGYXN0R2V0T3duUHJvcGVydHkoc3RydWN0dXJlKSkgewot
ICAgICAgICAgICAgUmVmUHRyPEF0b21pY1N0cmluZ0ltcGw+IGV4aXN0aW5nQXRvbWljU3RyaW5n
ID0gYXNTdHJpbmcocHJvcGVydHkpLT50b0V4aXN0aW5nQXRvbWljU3RyaW5nKGV4ZWMpOworICAg
ICAgICAgICAgUmVmUHRyPEF0b21TdHJpbmdJbXBsPiBleGlzdGluZ0F0b21TdHJpbmcgPSBhc1N0
cmluZyhwcm9wZXJ0eSktPnRvRXhpc3RpbmdBdG9tU3RyaW5nKGV4ZWMpOwogICAgICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgICAgICAg
ICBpZiAoZXhpc3RpbmdBdG9taWNTdHJpbmcpIHsKLSAgICAgICAgICAgICAgICBpZiAoSlNWYWx1
ZSByZXN1bHQgPSBiYXNlLT5mYXN0R2V0T3duUHJvcGVydHkodm0sIHN0cnVjdHVyZSwgZXhpc3Rp
bmdBdG9taWNTdHJpbmcuZ2V0KCkpKQorICAgICAgICAgICAgaWYgKGV4aXN0aW5nQXRvbVN0cmlu
ZykgeworICAgICAgICAgICAgICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9IGJhc2UtPmZhc3RHZXRP
d25Qcm9wZXJ0eSh2bSwgc3RydWN0dXJlLCBleGlzdGluZ0F0b21TdHJpbmcuZ2V0KCkpKQogICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KQEAgLTE1MDksMTAgKzE1MDksMTAgQEAgRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeVZhbFdpdGhUaGlzKEV4ZWNTdGF0ZSogZXhlYywg
RW5jb2RlZEoKICAgICBpZiAoTElLRUxZKGJhc2VWYWx1ZS5pc0NlbGwoKSAmJiBzdWJzY3JpcHQu
aXNTdHJpbmcoKSkpIHsKICAgICAgICAgU3RydWN0dXJlJiBzdHJ1Y3R1cmUgPSAqYmFzZVZhbHVl
LmFzQ2VsbCgpLT5zdHJ1Y3R1cmUodm0pOwogICAgICAgICBpZiAoSlNDZWxsOjpjYW5Vc2VGYXN0
R2V0T3duUHJvcGVydHkoc3RydWN0dXJlKSkgewotICAgICAgICAgICAgUmVmUHRyPEF0b21pY1N0
cmluZ0ltcGw+IGV4aXN0aW5nQXRvbWljU3RyaW5nID0gYXNTdHJpbmcoc3Vic2NyaXB0KS0+dG9F
eGlzdGluZ0F0b21pY1N0cmluZyhleGVjKTsKKyAgICAgICAgICAgIFJlZlB0cjxBdG9tU3RyaW5n
SW1wbD4gZXhpc3RpbmdBdG9tU3RyaW5nID0gYXNTdHJpbmcoc3Vic2NyaXB0KS0+dG9FeGlzdGlu
Z0F0b21TdHJpbmcoZXhlYyk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICAgICAgICAgIGlmIChleGlzdGluZ0F0b21pY1N0cmlu
ZykgewotICAgICAgICAgICAgICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9IGJhc2VWYWx1ZS5hc0Nl
bGwoKS0+ZmFzdEdldE93blByb3BlcnR5KHZtLCBzdHJ1Y3R1cmUsIGV4aXN0aW5nQXRvbWljU3Ry
aW5nLmdldCgpKSkKKyAgICAgICAgICAgIGlmIChleGlzdGluZ0F0b21TdHJpbmcpIHsKKyAgICAg
ICAgICAgICAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBiYXNlVmFsdWUuYXNDZWxsKCktPmZhc3RH
ZXRPd25Qcm9wZXJ0eSh2bSwgc3RydWN0dXJlLCBleGlzdGluZ0F0b21TdHJpbmcuZ2V0KCkpKQog
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IDlkMzgyY2Y2MTZkOWQzMjc3NWJlOTc1
MDg5OWQwYzlhZTg1M2RkOGIuLjc1ZjEwMmJjNGZkYzYzMzI5ZjJkZGZkZTgxOWRlMDQ2MDY0NDY2
OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcApAQCAtMzkyMyw3ICszOTIzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICAgICAgfQogCi0gICAgICAgIC8vIE5vdGUgdGhhdCB3ZSBkb24ndCB0ZXN0IGlm
IHRoZSBoYXNoIGlzIHplcm8gaGVyZS4gQXRvbWljU3RyaW5nSW1wbCdzIGNhbid0IGhhdmUgYSB6
ZXJvCisgICAgICAgIC8vIE5vdGUgdGhhdCB3ZSBkb24ndCB0ZXN0IGlmIHRoZSBoYXNoIGlzIHpl
cm8gaGVyZS4gQXRvbVN0cmluZ0ltcGwncyBjYW4ndCBoYXZlIGEgemVybwogICAgICAgICAvLyBo
YXNoLCBob3dldmVyLCBhIFN5bWJvbEltcGwgbWF5LiBCdXQsIGJlY2F1c2UgdGhpcyBpcyBhIGNh
Y2hlLCB3ZSBkb24ndCBjYXJlLiBXZSBvbmx5CiAgICAgICAgIC8vIGV2ZXIgbG9hZCB0aGUgcmVz
dWx0IGZyb20gdGhlIGNhY2hlIGlmIHRoZSBjYWNoZSBlbnRyeSBtYXRjaGVzIHdoYXQgd2UgYXJl
IHF1ZXJ5aW5nIGZvci4KICAgICAgICAgLy8gU28gd2UgZWl0aGVyIGdldCBzdXBlciBsdWNreSBh
bmQgdXNlIHplcm8gZm9yIHRoZSBoYXNoIGFuZCBzb21laG93IGNvbGxpZGUgd2l0aCB0aGUgZW50
aXR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcAppbmRleCAyZDYyZmFhOGMzM2FjOTQ5OWY1MDNmZGIyNDA0NzZkYjYzYTYxZTkyLi5mM2Ew
YjJiYzZmY2YzYzI0NDI1YWM2ZDNhYTMwZGEyNjViOTRiNzUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTQ0OTAsNyArNDQ5
MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KIAotICAgICAgICAv
LyBOb3RlIHRoYXQgd2UgZG9uJ3QgdGVzdCBpZiB0aGUgaGFzaCBpcyB6ZXJvIGhlcmUuIEF0b21p
Y1N0cmluZ0ltcGwncyBjYW4ndCBoYXZlIGEgemVybworICAgICAgICAvLyBOb3RlIHRoYXQgd2Ug
ZG9uJ3QgdGVzdCBpZiB0aGUgaGFzaCBpcyB6ZXJvIGhlcmUuIEF0b21TdHJpbmdJbXBsJ3MgY2Fu
J3QgaGF2ZSBhIHplcm8KICAgICAgICAgLy8gaGFzaCwgaG93ZXZlciwgYSBTeW1ib2xJbXBsIG1h
eS4gQnV0LCBiZWNhdXNlIHRoaXMgaXMgYSBjYWNoZSwgd2UgZG9uJ3QgY2FyZS4gV2Ugb25seQog
ICAgICAgICAvLyBldmVyIGxvYWQgdGhlIHJlc3VsdCBmcm9tIHRoZSBjYWNoZSBpZiB0aGUgY2Fj
aGUgZW50cnkgbWF0Y2hlcyB3aGF0IHdlIGFyZSBxdWVyeWluZyBmb3IuCiAgICAgICAgIC8vIFNv
IHdlIGVpdGhlciBnZXQgc3VwZXIgbHVja3kgYW5kIHVzZSB6ZXJvIGZvciB0aGUgaGFzaCBhbmQg
c29tZWhvdyBjb2xsaWRlIHdpdGggdGhlIGVudGl0eQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDI0ZWE5N2RhNzU5Mzk3ODEwMjJkNWZhMzY5
N2NjNmM0M2YxZGMxYTMuLjljYjZlOGQzZGU0YTczYTYyNWY2MGYxM2ExYTZmMTMyNWI5MjM2ODMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAg
LTEwNDQwLDE3ICsxMDQ0MCwxNyBAQCBwcml2YXRlOgogICAgICAgICBzd2l0Y2ggKG1fbm9kZS0+
Y2hpbGQyKCkudXNlS2luZCgpKSB7CiAgICAgICAgIGNhc2UgU3RyaW5nVXNlOiB7CiAgICAgICAg
ICAgICBMQmFzaWNCbG9jayBpc05vbkVtcHR5U3RyaW5nID0gbV9vdXQubmV3QmxvY2soKTsKLSAg
ICAgICAgICAgIExCYXNpY0Jsb2NrIGlzQXRvbWljU3RyaW5nID0gbV9vdXQubmV3QmxvY2soKTsK
KyAgICAgICAgICAgIExCYXNpY0Jsb2NrIGlzQXRvbVN0cmluZyA9IG1fb3V0Lm5ld0Jsb2NrKCk7
CiAKICAgICAgICAgICAgIGtleUFzVmFsdWUgPSBsb3dTdHJpbmcobV9ub2RlLT5jaGlsZDIoKSk7
CiAgICAgICAgICAgICBtX291dC5icmFuY2goaXNOb3RSb3BlU3RyaW5nKGtleUFzVmFsdWUsIG1f
bm9kZS0+Y2hpbGQyKCkpLCB1c3VhbGx5KGlzTm9uRW1wdHlTdHJpbmcpLCByYXJlbHkoc2xvd0Nh
c2UpKTsKIAotICAgICAgICAgICAgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhpc05vbkVtcHR5
U3RyaW5nLCBpc0F0b21pY1N0cmluZyk7CisgICAgICAgICAgICBsYXN0TmV4dCA9IG1fb3V0LmFw
cGVuZFRvKGlzTm9uRW1wdHlTdHJpbmcsIGlzQXRvbVN0cmluZyk7CiAgICAgICAgICAgICB1bmlx
dWVkU3RyaW5nSW1wbCA9IG1fb3V0LmxvYWRQdHIoa2V5QXNWYWx1ZSwgbV9oZWFwcy5KU1N0cmlu
Z192YWx1ZSk7CiAgICAgICAgICAgICBMVmFsdWUgaXNOb3RBdG9taWMgPSBtX291dC50ZXN0SXNa
ZXJvMzIobV9vdXQubG9hZDMyKHVuaXF1ZWRTdHJpbmdJbXBsLCBtX2hlYXBzLlN0cmluZ0ltcGxf
aGFzaEFuZEZsYWdzKSwgbV9vdXQuY29uc3RJbnQzMihTdHJpbmdJbXBsOjpmbGFnSXNBdG9taWMo
KSkpOwotICAgICAgICAgICAgbV9vdXQuYnJhbmNoKGlzTm90QXRvbWljLCByYXJlbHkoc2xvd0Nh
c2UpLCB1c3VhbGx5KGlzQXRvbWljU3RyaW5nKSk7CisgICAgICAgICAgICBtX291dC5icmFuY2go
aXNOb3RBdG9taWMsIHJhcmVseShzbG93Q2FzZSksIHVzdWFsbHkoaXNBdG9tU3RyaW5nKSk7CiAK
LSAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGlzQXRvbWljU3RyaW5nLCBzbG93Q2FzZSk7Cisg
ICAgICAgICAgICBtX291dC5hcHBlbmRUbyhpc0F0b21TdHJpbmcsIHNsb3dDYXNlKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgU3ltYm9sVXNlOiB7CkBAIC0x
MDQ5OSw3ICsxMDQ5OSw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgQVNTRVJUKGtleUFzVmFsdWUp
OwogCi0gICAgICAgIC8vIE5vdGUgdGhhdCB3ZSBkb24ndCB0ZXN0IGlmIHRoZSBoYXNoIGlzIHpl
cm8gaGVyZS4gQXRvbWljU3RyaW5nSW1wbCdzIGNhbid0IGhhdmUgYSB6ZXJvCisgICAgICAgIC8v
IE5vdGUgdGhhdCB3ZSBkb24ndCB0ZXN0IGlmIHRoZSBoYXNoIGlzIHplcm8gaGVyZS4gQXRvbVN0
cmluZ0ltcGwncyBjYW4ndCBoYXZlIGEgemVybwogICAgICAgICAvLyBoYXNoLCBob3dldmVyLCBh
IFN5bWJvbEltcGwgbWF5LiBCdXQsIGJlY2F1c2UgdGhpcyBpcyBhIGNhY2hlLCB3ZSBkb24ndCBj
YXJlLiBXZSBvbmx5CiAgICAgICAgIC8vIGV2ZXIgbG9hZCB0aGUgcmVzdWx0IGZyb20gdGhlIGNh
Y2hlIGlmIHRoZSBjYWNoZSBlbnRyeSBtYXRjaGVzIHdoYXQgd2UgYXJlIHF1ZXJ5aW5nIGZvci4K
ICAgICAgICAgLy8gU28gd2UgZWl0aGVyIGdldCBzdXBlciBsdWNreSBhbmQgdXNlIHplcm8gZm9y
IHRoZSBoYXNoIGFuZCBzb21laG93IGNvbGxpZGUgd2l0aCB0aGUgZW50aXR5CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hlYXAuY3BwCmluZGV4IGE4NTIwN2YxMmNmNjAzZjA0Nzg4MWQxNjRjYzY3ODI3
NDQ4M2ZmZWUuLmQ5ZGVmMTc2ZDgwZDEzYzViMTMyYWRhNzA4OTE5ZTUxY2U0MTc3NzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCkBAIC0xNTAsNyArMTUwLDcgQEAgYm9vbCBpc1Zh
bGlkU2hhcmVkSW5zdGFuY2VUaHJlYWRTdGF0ZShWTSogdm0pCiAKIGJvb2wgaXNWYWxpZFRocmVh
ZFN0YXRlKFZNKiB2bSkKIHsKLSAgICBpZiAodm0tPmF0b21pY1N0cmluZ1RhYmxlKCkgIT0gVGhy
ZWFkOjpjdXJyZW50KCkuYXRvbWljU3RyaW5nVGFibGUoKSkKKyAgICBpZiAodm0tPmF0b21TdHJp
bmdUYWJsZSgpICE9IFRocmVhZDo6Y3VycmVudCgpLmF0b21TdHJpbmdUYWJsZSgpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAodm0tPmlzU2hhcmVkSW5zdGFuY2UoKSAmJiAhaXNW
YWxpZFNoYXJlZEluc3RhbmNlVGhyZWFkU3RhdGUodm0pKQpAQCAtMjEwNSw3ICsyMTA1LDcgQEAg
SGVhcDo6VGlja2V0IEhlYXA6OnJlcXVlc3RDb2xsZWN0aW9uKEdDUmVxdWVzdCByZXF1ZXN0KQog
ICAgIHN0b3BJZk5lY2Vzc2FyeSgpOwogICAgIAogICAgIEFTU0VSVCh2bSgpLT5jdXJyZW50VGhy
ZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKLSAgICBSRUxFQVNFX0FTU0VSVCh2bSgpLT5hdG9taWNT
dHJpbmdUYWJsZSgpID09IFRocmVhZDo6Y3VycmVudCgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwor
ICAgIFJFTEVBU0VfQVNTRVJUKHZtKCktPmF0b21TdHJpbmdUYWJsZSgpID09IFRocmVhZDo6Y3Vy
cmVudCgpLmF0b21TdHJpbmdUYWJsZSgpKTsKICAgICAKICAgICBMb2NrSG9sZGVyIGxvY2tlcigq
bV90aHJlYWRMb2NrKTsKICAgICAvLyBXZSBtYXkgYmUgYWJsZSB0byBzdGVhbCB0aGUgY29ubi4g
VGhhdCBvbmx5IHdvcmtzIGlmIHRoZSBjb2xsZWN0b3IgaXMgZGVmaW5pdGVseSBub3QgcnVubmlu
ZwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggZmJk
NmQ3MzY5Yjk1MmNkOTc3Y2M1MjIzYTFkYjhhYjk4MzZmOTZhYy4uN2JhMTgyMzU4NmE4NzgwMGIz
ZjAyYTk2MjI5Y2NiYTcxZjI1MDg0ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuY3BwCkBAIC0xODQxLDEyICsxODQxLDEyIEBAIHN0YXRpYyBKU1ZhbHVlIGdl
dEJ5VmFsKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNlVmFsdWUsIEpTVmFsdWUgc3Vic2Ny
aXB0LCBCCiAgICAgaWYgKExJS0VMWShiYXNlVmFsdWUuaXNDZWxsKCkgJiYgc3Vic2NyaXB0Lmlz
U3RyaW5nKCkpKSB7CiAgICAgICAgIFN0cnVjdHVyZSYgc3RydWN0dXJlID0gKmJhc2VWYWx1ZS5h
c0NlbGwoKS0+c3RydWN0dXJlKHZtKTsKICAgICAgICAgaWYgKEpTQ2VsbDo6Y2FuVXNlRmFzdEdl
dE93blByb3BlcnR5KHN0cnVjdHVyZSkpIHsKLSAgICAgICAgICAgIFJlZlB0cjxBdG9taWNTdHJp
bmdJbXBsPiBleGlzdGluZ0F0b21pY1N0cmluZyA9IGFzU3RyaW5nKHN1YnNjcmlwdCktPnRvRXhp
c3RpbmdBdG9taWNTdHJpbmcoZXhlYyk7CisgICAgICAgICAgICBSZWZQdHI8QXRvbVN0cmluZ0lt
cGw+IGV4aXN0aW5nQXRvbVN0cmluZyA9IGFzU3RyaW5nKHN1YnNjcmlwdCktPnRvRXhpc3RpbmdB
dG9tU3RyaW5nKGV4ZWMpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
SlNWYWx1ZSgpKTsKLSAgICAgICAgICAgIGlmIChleGlzdGluZ0F0b21pY1N0cmluZykgewotICAg
ICAgICAgICAgICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9IGJhc2VWYWx1ZS5hc0NlbGwoKS0+ZmFz
dEdldE93blByb3BlcnR5KHZtLCBzdHJ1Y3R1cmUsIGV4aXN0aW5nQXRvbWljU3RyaW5nLmdldCgp
KSkgeworICAgICAgICAgICAgaWYgKGV4aXN0aW5nQXRvbVN0cmluZykgeworICAgICAgICAgICAg
ICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9IGJhc2VWYWx1ZS5hc0NlbGwoKS0+ZmFzdEdldE93blBy
b3BlcnR5KHZtLCBzdHJ1Y3R1cmUsIGV4aXN0aW5nQXRvbVN0cmluZy5nZXQoKSkpIHsKICAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUKGV4ZWMtPmJ5dGVjb2RlT2Zmc2V0KCkpOwotICAgICAgICAg
ICAgICAgICAgICBpZiAoYnlWYWxJbmZvLT5zdHViSW5mbyAmJiBieVZhbEluZm8tPmNhY2hlZElk
LmltcGwoKSAhPSBleGlzdGluZ0F0b21pY1N0cmluZykKKyAgICAgICAgICAgICAgICAgICAgaWYg
KGJ5VmFsSW5mby0+c3R1YkluZm8gJiYgYnlWYWxJbmZvLT5jYWNoZWRJZC5pbXBsKCkgIT0gZXhp
c3RpbmdBdG9tU3RyaW5nKQogICAgICAgICAgICAgICAgICAgICAgICAgYnlWYWxJbmZvLT50b29r
U2xvd1BhdGggPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg
ICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwCmluZGV4IGIzYmU5ZDgxNTg2M2Q4YjgyMmNhZjU5YjNiYTc5NDEwYmQ2YzNlYWYu
LjE3MTIzNzhjZGRiNWE4OGZjYmQxMmUxNmRkYTg1MjY0MTI5ZWMzNjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtOTMyLDEwICs5MzIs
MTAgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBnZXRCeVZhbChWTSYgdm0sIEV4ZWNT
dGF0ZSogZXhlYywgT3BHZXRCeVZhbCBieXRlY28KICAgICBpZiAoTElLRUxZKGJhc2VWYWx1ZS5p
c0NlbGwoKSAmJiBzdWJzY3JpcHQuaXNTdHJpbmcoKSkpIHsKICAgICAgICAgU3RydWN0dXJlJiBz
dHJ1Y3R1cmUgPSAqYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUodm0pOwogICAgICAgICBp
ZiAoSlNDZWxsOjpjYW5Vc2VGYXN0R2V0T3duUHJvcGVydHkoc3RydWN0dXJlKSkgewotICAgICAg
ICAgICAgUmVmUHRyPEF0b21pY1N0cmluZ0ltcGw+IGV4aXN0aW5nQXRvbWljU3RyaW5nID0gYXNT
dHJpbmcoc3Vic2NyaXB0KS0+dG9FeGlzdGluZ0F0b21pY1N0cmluZyhleGVjKTsKKyAgICAgICAg
ICAgIFJlZlB0cjxBdG9tU3RyaW5nSW1wbD4gZXhpc3RpbmdBdG9tU3RyaW5nID0gYXNTdHJpbmco
c3Vic2NyaXB0KS0+dG9FeGlzdGluZ0F0b21TdHJpbmcoZXhlYyk7CiAgICAgICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwotICAgICAgICAgICAgaWYgKGV4aXN0
aW5nQXRvbWljU3RyaW5nKSB7Ci0gICAgICAgICAgICAgICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0g
YmFzZVZhbHVlLmFzQ2VsbCgpLT5mYXN0R2V0T3duUHJvcGVydHkodm0sIHN0cnVjdHVyZSwgZXhp
c3RpbmdBdG9taWNTdHJpbmcuZ2V0KCkpKQorICAgICAgICAgICAgaWYgKGV4aXN0aW5nQXRvbVN0
cmluZykgeworICAgICAgICAgICAgICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9IGJhc2VWYWx1ZS5h
c0NlbGwoKS0+ZmFzdEdldE93blByb3BlcnR5KHZtLCBzdHJ1Y3R1cmUsIGV4aXN0aW5nQXRvbVN0
cmluZy5nZXQoKSkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApp
bmRleCA0NWFjOTA4MDFlYzAzMmUzMjcxYjI4NjFmYzI4N2QzOWZhMzVhZTliLi42NGIwMzA4ODVl
Mzc3MzAwMDRhOTc0NGQ5YWI3ZDQzYzRlMjlkYTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXIuY3BwCkBAIC05MjgsNyArOTI4LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBUcmVlRGVzdHJ1Y3R1cmluZ1BhdHRlcm4gUGFyc2VyPExleGVyVHlwZT46OmNyZWF0
ZUIKIHsKICAgICBBU1NFUlQoIW5hbWUuaXNOdWxsKCkpOwogICAgIAotICAgIEFTU0VSVChuYW1l
LmltcGwoKS0+aXNBdG9taWMoKSB8fCBuYW1lLmltcGwoKS0+aXNTeW1ib2woKSk7CisgICAgQVNT
RVJUKG5hbWUuaW1wbCgpLT5pc0F0b20oKSB8fCBuYW1lLmltcGwoKS0+aXNTeW1ib2woKSk7CiAK
ICAgICBzd2l0Y2ggKGtpbmQpIHsKICAgICBjYXNlIERlc3RydWN0dXJpbmdLaW5kOjpEZXN0cnVj
dHVyZVRvVmFyaWFibGVzOiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheVByb3RvdHlwZS5jcHAKaW5kZXggNDNlZWM4NGNjNDU5NmU4NTc0MjExNmNkMzAxY2E5MzFm
MmRmZDdhMS4uNTdhODY5NWIzMTU0NmZkNmI3NTkxZWE5OTNkNmQ2NWNmZGQ4YzI4MCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcApAQCAt
Njg2LDcgKzY4Niw3IEBAIHN0YXRpYyBKU1ZhbHVlIHNsb3dKb2luKEV4ZWNTdGF0ZSYgZXhlYywg
SlNPYmplY3QqIHRoaXNPYmplY3QsIEpTU3RyaW5nKiBzZXBhcmF0CiAgICAgLy8gOS5lIEluY3Jl
YXNlIGsgYnkgMS4uCiAgICAgZm9yICh1aW50NjRfdCBrID0gMTsgayA8IGxlbmd0aDsgKytrKSB7
CiAgICAgICAgIC8vIGIuIExldCBlbGVtZW50IGJlID8gR2V0KE8sICEgVG9TdHJpbmcoaykpLgot
ICAgICAgICBKU1ZhbHVlIGVsZW1lbnQgPSB0aGlzT2JqZWN0LT5nZXQoJmV4ZWMsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoJmV4ZWMsIEF0b21pY1N0cmluZzo6bnVtYmVyKGspKSk7CisgICAgICAg
IEpTVmFsdWUgZWxlbWVudCA9IHRoaXNPYmplY3QtPmdldCgmZXhlYywgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZygmZXhlYywgQXRvbVN0cmluZzo6bnVtYmVyKGspKSk7CiAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICAgICAgLy8gYy4gSWYgZWxlbWVudCBpcyB1
bmRlZmluZWQgb3IgbnVsbCwgbGV0IG5leHQgYmUgdGhlIGVtcHR5IFN0cmluZzsgb3RoZXJ3aXNl
LCBsZXQgbmV4dCBiZSA/IFRvU3RyaW5nKGVsZW1lbnQpLgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCmluZGV4IDAzY2YxNjRmYmNjYzAxMWU4Yzg1ZjAx
Nzc3MjQwOGIxYzExNTRlYmIuLmZiOTUxMGVmOGE3YzQ2NTI2Yjk1ZjA5M2RjMGI3NGYzYTAyNWY5
MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAK
QEAgLTQzLDcgKzQzLDcgQEAKICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUg
PHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9VVUlELmg+Ci0jaW5jbHVkZSA8d3RmL3Rl
eHQvQXRvbWljU3RyaW5nSW1wbC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmdJbXBs
Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC02ODEsNyArNjgxLDcgQEAgY2xhc3MgQ2FjaGVk
VW5pcXVlZFN0cmluZ0ltcGxCYXNlIDogcHVibGljIFZhcmlhYmxlTGVuZ3RoT2JqZWN0PFQ+IHsK
IHB1YmxpYzoKICAgICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTdHJpbmdJ
bXBsJiBzdHJpbmcpCiAgICAgewotICAgICAgICBtX2lzQXRvbWljID0gc3RyaW5nLmlzQXRvbWlj
KCk7CisgICAgICAgIG1faXNBdG9taWMgPSBzdHJpbmcuaXNBdG9tKCk7CiAgICAgICAgIG1faXNT
eW1ib2wgPSBzdHJpbmcuaXNTeW1ib2woKTsKICAgICAgICAgUmVmUHRyPFN0cmluZ0ltcGw+IGlt
cGwgPSBjb25zdF9jYXN0PFN0cmluZ0ltcGwqPigmc3RyaW5nKTsKIApAQCAtNzE3LDcgKzcxNyw3
IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGF1dG8gY3JlYXRlID0gWyZdKGNvbnN0IGF1dG8q
IGJ1ZmZlcikgLT4gVW5pcXVlZFN0cmluZ0ltcGwqIHsKICAgICAgICAgICAgIGlmICghbV9pc1N5
bWJvbCkKLSAgICAgICAgICAgICAgICByZXR1cm4gQXRvbWljU3RyaW5nSW1wbDo6YWRkKGJ1ZmZl
ciwgbV9sZW5ndGgpLmxlYWtSZWYoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gQXRvbVN0cmlu
Z0ltcGw6OmFkZChidWZmZXIsIG1fbGVuZ3RoKS5sZWFrUmVmKCk7CiAKICAgICAgICAgICAgIElk
ZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZkZWNvZGVyLnZtKCksIGJ1
ZmZlciwgbV9sZW5ndGgpOwogICAgICAgICAgICAgU3RyaW5nIHN0ciA9IGRlY29kZXIudm0oKS5w
cm9wZXJ0eU5hbWVzLT5sb29rVXBQcml2YXRlTmFtZShpZGVudCk7CkBAIC03MjksNyArNzI5LDcg
QEAgcHVibGljOgogICAgICAgICBpZiAoIW1fbGVuZ3RoKSB7CiAgICAgICAgICAgICBpZiAobV9p
c1N5bWJvbCkKICAgICAgICAgICAgICAgICByZXR1cm4gJlN5bWJvbEltcGw6OmNyZWF0ZU51bGxT
eW1ib2woKS5sZWFrUmVmKCk7Ci0gICAgICAgICAgICByZXR1cm4gQXRvbWljU3RyaW5nSW1wbDo6
YWRkKCIiKS5sZWFrUmVmKCk7CisgICAgICAgICAgICByZXR1cm4gQXRvbVN0cmluZ0ltcGw6OmFk
ZCgiIikubGVha1JlZigpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKG1faXM4Qml0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5k
ZXggMjliMjAyMjMzOGFhYzNlODhmMmEzM2UyYjg5MzdhNTgzMmFkOTBlMi4uNDhjN2MxYTgzMTJm
NzMwOTVkNTNlZTIxMzJmOGMzY2FkMjEwOGI5ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCkBAIC0xMTQ5LDEwICsxMTQ5LDEwIEBA
IFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfdmFsX3dpdGhfdGhpcykKICAgICBpZiAo
TElLRUxZKGJhc2VWYWx1ZS5pc0NlbGwoKSAmJiBzdWJzY3JpcHQuaXNTdHJpbmcoKSkpIHsKICAg
ICAgICAgU3RydWN0dXJlJiBzdHJ1Y3R1cmUgPSAqYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1
cmUodm0pOwogICAgICAgICBpZiAoSlNDZWxsOjpjYW5Vc2VGYXN0R2V0T3duUHJvcGVydHkoc3Ry
dWN0dXJlKSkgewotICAgICAgICAgICAgUmVmUHRyPEF0b21pY1N0cmluZ0ltcGw+IGV4aXN0aW5n
QXRvbWljU3RyaW5nID0gYXNTdHJpbmcoc3Vic2NyaXB0KS0+dG9FeGlzdGluZ0F0b21pY1N0cmlu
ZyhleGVjKTsKKyAgICAgICAgICAgIFJlZlB0cjxBdG9tU3RyaW5nSW1wbD4gZXhpc3RpbmdBdG9t
U3RyaW5nID0gYXNTdHJpbmcoc3Vic2NyaXB0KS0+dG9FeGlzdGluZ0F0b21TdHJpbmcoZXhlYyk7
CiAgICAgICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICAgICAgICAgIGlmIChleGlzdGlu
Z0F0b21pY1N0cmluZykgewotICAgICAgICAgICAgICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9IGJh
c2VWYWx1ZS5hc0NlbGwoKS0+ZmFzdEdldE93blByb3BlcnR5KHZtLCBzdHJ1Y3R1cmUsIGV4aXN0
aW5nQXRvbWljU3RyaW5nLmdldCgpKSkKKyAgICAgICAgICAgIGlmIChleGlzdGluZ0F0b21TdHJp
bmcpIHsKKyAgICAgICAgICAgICAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBiYXNlVmFsdWUuYXND
ZWxsKCktPmZhc3RHZXRPd25Qcm9wZXJ0eSh2bSwgc3RydWN0dXJlLCBleGlzdGluZ0F0b21TdHJp
bmcuZ2V0KCkpKQogICAgICAgICAgICAgICAgICAgICBSRVRVUk5fUFJPRklMRUQocmVzdWx0KTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21wbGV0aW9uLmNwcAppbmRleCA3ZTJhYTMwMzE5Mjg2MTE2ODMzMmUwYTIyYmJkYzA5ZDNm
OTZmZWUwLi5kYmZmMTc4ZGU2YjNlOGUwNTVlNjU5OGQwYzI1NWE4MjllMzUzNDdiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcApAQCAtNTcsNyArNTcs
NyBAQCBib29sIGNoZWNrU3ludGF4KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYg
c291cmNlLCBKU1ZhbHVlKiByZXR1cm5lZEV4YwogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwotICAgIFJFTEVBU0VfQVNTRVJUKHZtLmF0b21p
Y1N0cmluZ1RhYmxlKCkgPT0gVGhyZWFkOjpjdXJyZW50KCkuYXRvbWljU3RyaW5nVGFibGUoKSk7
CisgICAgUkVMRUFTRV9BU1NFUlQodm0uYXRvbVN0cmluZ1RhYmxlKCkgPT0gVGhyZWFkOjpjdXJy
ZW50KCkuYXRvbVN0cmluZ1RhYmxlKCkpOwogCiAgICAgUGFyc2VyRXJyb3IgZXJyb3I7CiAgICAg
aWYgKGNoZWNrU3ludGF4SW50ZXJuYWwodm0sIHNvdXJjZSwgZXJyb3IpKQpAQCAtNzEsNyArNzEs
NyBAQCBib29sIGNoZWNrU3ludGF4KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYg
c291cmNlLCBKU1ZhbHVlKiByZXR1cm5lZEV4YwogYm9vbCBjaGVja1N5bnRheChWTSYgdm0sIGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUGFyc2VyRXJyb3ImIGVycm9yKQogewogICAgIEpTTG9j
a0hvbGRlciBsb2NrKHZtKTsKLSAgICBSRUxFQVNFX0FTU0VSVCh2bS5hdG9taWNTdHJpbmdUYWJs
ZSgpID09IFRocmVhZDo6Y3VycmVudCgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOworICAgIFJFTEVB
U0VfQVNTRVJUKHZtLmF0b21TdHJpbmdUYWJsZSgpID09IFRocmVhZDo6Y3VycmVudCgpLmF0b21T
dHJpbmdUYWJsZSgpKTsKICAgICByZXR1cm4gY2hlY2tTeW50YXhJbnRlcm5hbCh2bSwgc291cmNl
LCBlcnJvcik7CiB9CiAKQEAgLTc5LDcgKzc5LDcgQEAgYm9vbCBjaGVja01vZHVsZVN5bnRheChF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUGFyc2VyRXJyb3ImIGUK
IHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsK
LSAgICBSRUxFQVNFX0FTU0VSVCh2bS5hdG9taWNTdHJpbmdUYWJsZSgpID09IFRocmVhZDo6Y3Vy
cmVudCgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOworICAgIFJFTEVBU0VfQVNTRVJUKHZtLmF0b21T
dHJpbmdUYWJsZSgpID09IFRocmVhZDo6Y3VycmVudCgpLmF0b21TdHJpbmdUYWJsZSgpKTsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8TW9kdWxlUHJvZ3JhbU5vZGU+IG1vZHVsZVByb2dyYW1Ob2RlID0g
cGFyc2U8TW9kdWxlUHJvZ3JhbU5vZGU+KAogICAgICAgICAmdm0sIHNvdXJjZSwgSWRlbnRpZmll
cigpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLAogICAgICAgICBKU1BhcnNlclN0
cmljdE1vZGU6OlN0cmljdCwgSlNQYXJzZXJTY3JpcHRNb2RlOjpNb2R1bGUsIFNvdXJjZVBhcnNl
TW9kZTo6TW9kdWxlQW5hbHl6ZU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBlcnJvcik7
CkBAIC05NSw3ICs5NSw3IEBAIGJvb2wgY2hlY2tNb2R1bGVTeW50YXgoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcnNlckVycm9yJiBlCiBSZWZQdHI8Q2FjaGVk
Qnl0ZWNvZGU+IGdlbmVyYXRlUHJvZ3JhbUJ5dGVjb2RlKFZNJiB2bSwgY29uc3QgU291cmNlQ29k
ZSYgc291cmNlLCBpbnQgZmQsIEJ5dGVjb2RlQ2FjaGVFcnJvciYgZXJyb3IpCiB7CiAgICAgSlNM
b2NrSG9sZGVyIGxvY2sodm0pOwotICAgIFJFTEVBU0VfQVNTRVJUKHZtLmF0b21pY1N0cmluZ1Rh
YmxlKCkgPT0gVGhyZWFkOjpjdXJyZW50KCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CisgICAgUkVM
RUFTRV9BU1NFUlQodm0uYXRvbVN0cmluZ1RhYmxlKCkgPT0gVGhyZWFkOjpjdXJyZW50KCkuYXRv
bVN0cmluZ1RhYmxlKCkpOwogCiAgICAgVmFyaWFibGVFbnZpcm9ubWVudCB2YXJpYWJsZXNVbmRl
clREWjsKICAgICBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSA9IEpTUGFyc2VyU3RyaWN0
TW9kZTo6Tm90U3RyaWN0OwpAQCAtMTE1LDcgKzExNSw3IEBAIFJlZlB0cjxDYWNoZWRCeXRlY29k
ZT4gZ2VuZXJhdGVQcm9ncmFtQnl0ZWNvZGUoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3Vy
Y2UsCiBSZWZQdHI8Q2FjaGVkQnl0ZWNvZGU+IGdlbmVyYXRlTW9kdWxlQnl0ZWNvZGUoVk0mIHZt
LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGludCBmZCwgQnl0ZWNvZGVDYWNoZUVycm9yJiBl
cnJvcikKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQo
dm0uYXRvbWljU3RyaW5nVGFibGUoKSA9PSBUaHJlYWQ6OmN1cnJlbnQoKS5hdG9taWNTdHJpbmdU
YWJsZSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVCh2bS5hdG9tU3RyaW5nVGFibGUoKSA9PSBUaHJl
YWQ6OmN1cnJlbnQoKS5hdG9tU3RyaW5nVGFibGUoKSk7CiAKICAgICBWYXJpYWJsZUVudmlyb25t
ZW50IHZhcmlhYmxlc1VuZGVyVERaOwogICAgIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2Rl
ID0gSlNQYXJzZXJTdHJpY3RNb2RlOjpTdHJpY3Q7CkBAIC0xMzYsNyArMTM2LDcgQEAgSlNWYWx1
ZSBldmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNW
YWx1ZSB0aGlzVmFsdWUsIE4KICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIEpTTG9ja0hv
bGRlciBsb2NrKHZtKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7
Ci0gICAgUkVMRUFTRV9BU1NFUlQodm0uYXRvbWljU3RyaW5nVGFibGUoKSA9PSBUaHJlYWQ6OmN1
cnJlbnQoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVCh2bS5hdG9t
U3RyaW5nVGFibGUoKSA9PSBUaHJlYWQ6OmN1cnJlbnQoKS5hdG9tU3RyaW5nVGFibGUoKSk7CiAg
ICAgUkVMRUFTRV9BU1NFUlQoIXZtLmlzQ29sbGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgpKTsK
IAogICAgIENvZGVQcm9maWxpbmcgcHJvZmlsZShzb3VyY2UpOwpAQCAtMjA2LDcgKzIwNiw3IEBA
IEpTSW50ZXJuYWxQcm9taXNlKiBsb2FkQW5kRXZhbHVhdGVNb2R1bGUoRXhlY1N0YXRlKiBleGVj
LCBTeW1ib2wqIG1vZHVsZUlkLCBKU1ZhCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAg
ICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQodm0uYXRvbWljU3Ry
aW5nVGFibGUoKSA9PSBUaHJlYWQ6OmN1cnJlbnQoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKKyAg
ICBSRUxFQVNFX0FTU0VSVCh2bS5hdG9tU3RyaW5nVGFibGUoKSA9PSBUaHJlYWQ6OmN1cnJlbnQo
KS5hdG9tU3RyaW5nVGFibGUoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoIXZtLmlzQ29sbGVjdG9y
QnVzeU9uQ3VycmVudFRocmVhZCgpKTsKIAogICAgIHJldHVybiB2bS52bUVudHJ5R2xvYmFsT2Jq
ZWN0KGV4ZWMpLT5tb2R1bGVMb2FkZXIoKS0+bG9hZEFuZEV2YWx1YXRlTW9kdWxlKGV4ZWMsIG1v
ZHVsZUlkLCBwYXJhbWV0ZXJzLCBzY3JpcHRGZXRjaGVyKTsKQEAgLTIxNiw3ICsyMTYsNyBAQCBK
U0ludGVybmFsUHJvbWlzZSogbG9hZEFuZEV2YWx1YXRlTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgU3RyaW5nJiBtb2R1bGVOYQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAg
SlNMb2NrSG9sZGVyIGxvY2sodm0pOwotICAgIFJFTEVBU0VfQVNTRVJUKHZtLmF0b21pY1N0cmlu
Z1RhYmxlKCkgPT0gVGhyZWFkOjpjdXJyZW50KCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CisgICAg
UkVMRUFTRV9BU1NFUlQodm0uYXRvbVN0cmluZ1RhYmxlKCkgPT0gVGhyZWFkOjpjdXJyZW50KCku
YXRvbVN0cmluZ1RhYmxlKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKCF2bS5pc0NvbGxlY3RvckJ1
c3lPbkN1cnJlbnRUaHJlYWQoKSk7CiAKICAgICByZXR1cm4gdm0udm1FbnRyeUdsb2JhbE9iamVj
dChleGVjKS0+bW9kdWxlTG9hZGVyKCktPmxvYWRBbmRFdmFsdWF0ZU1vZHVsZShleGVjLCBpZGVu
dGlmaWVyVG9KU1ZhbHVlKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIG1vZHVsZU5h
bWUpKSwgcGFyYW1ldGVycywgc2NyaXB0RmV0Y2hlcik7CkBAIC0yMjcsNyArMjI3LDcgQEAgSlNJ
bnRlcm5hbFByb21pc2UqIGxvYWRBbmRFdmFsdWF0ZU1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXIKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIEpTTG9j
a0hvbGRlciBsb2NrKHZtKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQodm0uYXRvbWljU3RyaW5nVGFibGUoKSA9PSBUaHJlYWQ6
OmN1cnJlbnQoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVCh2bS5h
dG9tU3RyaW5nVGFibGUoKSA9PSBUaHJlYWQ6OmN1cnJlbnQoKS5hdG9tU3RyaW5nVGFibGUoKSk7
CiAgICAgUkVMRUFTRV9BU1NFUlQoIXZtLmlzQ29sbGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgp
KTsKIAogICAgIFN5bWJvbCoga2V5ID0gY3JlYXRlU3ltYm9sRm9yRW50cnlQb2ludE1vZHVsZSh2
bSk7CkBAIC0yNDUsNyArMjQ1LDcgQEAgSlNJbnRlcm5hbFByb21pc2UqIGxvYWRNb2R1bGUoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIG1vZHVsZU5hbWUsIEpTVmFsdWUKIHsKICAgICBW
TSYgdm0gPSBleGVjLT52bSgpOwogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKLSAgICBSRUxF
QVNFX0FTU0VSVCh2bS5hdG9taWNTdHJpbmdUYWJsZSgpID09IFRocmVhZDo6Y3VycmVudCgpLmF0
b21pY1N0cmluZ1RhYmxlKCkpOworICAgIFJFTEVBU0VfQVNTRVJUKHZtLmF0b21TdHJpbmdUYWJs
ZSgpID09IFRocmVhZDo6Y3VycmVudCgpLmF0b21TdHJpbmdUYWJsZSgpKTsKICAgICBSRUxFQVNF
X0FTU0VSVCghdm0uaXNDb2xsZWN0b3JCdXN5T25DdXJyZW50VGhyZWFkKCkpOwogCiAgICAgcmV0
dXJuIHZtLnZtRW50cnlHbG9iYWxPYmplY3QoZXhlYyktPm1vZHVsZUxvYWRlcigpLT5sb2FkTW9k
dWxlKGV4ZWMsIGlkZW50aWZpZXJUb0pTVmFsdWUodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmco
ZXhlYywgbW9kdWxlTmFtZSkpLCBwYXJhbWV0ZXJzLCBzY3JpcHRGZXRjaGVyKTsKQEAgLTI1Niw3
ICsyNTYsNyBAQCBKU0ludGVybmFsUHJvbWlzZSogbG9hZE1vZHVsZShFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNWYWx1ZQogICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKLSAgICBSRUxFQVNFX0FTU0VSVCh2bS5hdG9taWNTdHJpbmdUYWJs
ZSgpID09IFRocmVhZDo6Y3VycmVudCgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOworICAgIFJFTEVB
U0VfQVNTRVJUKHZtLmF0b21TdHJpbmdUYWJsZSgpID09IFRocmVhZDo6Y3VycmVudCgpLmF0b21T
dHJpbmdUYWJsZSgpKTsKICAgICBSRUxFQVNFX0FTU0VSVCghdm0uaXNDb2xsZWN0b3JCdXN5T25D
dXJyZW50VGhyZWFkKCkpOwogCiAgICAgU3ltYm9sKiBrZXkgPSBjcmVhdGVTeW1ib2xGb3JFbnRy
eVBvaW50TW9kdWxlKHZtKTsKQEAgLTI3NSw3ICsyNzUsNyBAQCBKU1ZhbHVlIGxpbmtBbmRFdmFs
dWF0ZU1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZUtleSwg
SlNWYQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2so
dm0pOwotICAgIFJFTEVBU0VfQVNTRVJUKHZtLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gVGhyZWFk
OjpjdXJyZW50KCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQodm0u
YXRvbVN0cmluZ1RhYmxlKCkgPT0gVGhyZWFkOjpjdXJyZW50KCkuYXRvbVN0cmluZ1RhYmxlKCkp
OwogICAgIFJFTEVBU0VfQVNTRVJUKCF2bS5pc0NvbGxlY3RvckJ1c3lPbkN1cnJlbnRUaHJlYWQo
KSk7CiAKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gdm0udm1FbnRyeUdsb2Jh
bE9iamVjdChleGVjKTsKQEAgLTI4Niw3ICsyODYsNyBAQCBKU0ludGVybmFsUHJvbWlzZSogaW1w
b3J0TW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlS2V5LCBK
UwogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0p
OwotICAgIFJFTEVBU0VfQVNTRVJUKHZtLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gVGhyZWFkOjpj
dXJyZW50KCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQodm0uYXRv
bVN0cmluZ1RhYmxlKCkgPT0gVGhyZWFkOjpjdXJyZW50KCkuYXRvbVN0cmluZ1RhYmxlKCkpOwog
ICAgIFJFTEVBU0VfQVNTRVJUKCF2bS5pc0NvbGxlY3RvckJ1c3lPbkN1cnJlbnRUaHJlYWQoKSk7
CiAKICAgICByZXR1cm4gdm0udm1FbnRyeUdsb2JhbE9iamVjdChleGVjKS0+bW9kdWxlTG9hZGVy
KCktPnJlcXVlc3RJbXBvcnRNb2R1bGUoZXhlYywgbW9kdWxlS2V5LCBwYXJhbWV0ZXJzLCBzY3Jp
cHRGZXRjaGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lk
ZW50aWZpZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5j
cHAKaW5kZXggNDZmNzljODZlZDZlYzEwZGIxYTc0MzdkZjMxNzQ1MWY5ZTkzOGViYi4uZDg2Mjg3
M2ZhYmI3ZDQyNjhmNTg3MzBmNDAwMDczMzc1N2Y5OGRhNyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgUmVmPFN0cmlu
Z0ltcGw+IElkZW50aWZpZXI6OmFkZChWTSogdm0sIGNvbnN0IGNoYXIqIGMpCiAgICAgaWYgKCFj
WzFdKQogICAgICAgICByZXR1cm4gdm0tPnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJTdHJp
bmdSZXAoY1swXSk7CiAKLSAgICByZXR1cm4gKkF0b21pY1N0cmluZ0ltcGw6OmFkZChjKTsKKyAg
ICByZXR1cm4gKkF0b21TdHJpbmdJbXBsOjphZGQoYyk7CiB9CiAKIFJlZjxTdHJpbmdJbXBsPiBJ
ZGVudGlmaWVyOjphZGQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBjaGFyKiBjKQpAQCAtNjEsNyAr
NjEsNyBAQCBSZWY8U3RyaW5nSW1wbD4gSWRlbnRpZmllcjo6YWRkOChWTSogdm0sIGNvbnN0IFVD
aGFyKiBzLCBpbnQgbGVuZ3RoKQogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gKlN0
cmluZ0ltcGw6OmVtcHR5KCk7CiAKLSAgICByZXR1cm4gKkF0b21pY1N0cmluZ0ltcGw6OmFkZChz
LCBsZW5ndGgpOworICAgIHJldHVybiAqQXRvbVN0cmluZ0ltcGw6OmFkZChzLCBsZW5ndGgpOwog
fQogCiBJZGVudGlmaWVyIElkZW50aWZpZXI6OmZyb20oRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25l
ZCB2YWx1ZSkKQEAgLTEwOSwyNCArMTA5LDI0IEBAIHZvaWQgSWRlbnRpZmllcjo6ZHVtcChQcmlu
dFN0cmVhbSYgb3V0KSBjb25zdAogCiAjaWZuZGVmIE5ERUJVRwogCi12b2lkIElkZW50aWZpZXI6
OmNoZWNrQ3VycmVudEF0b21pY1N0cmluZ1RhYmxlKFZNKiB2bSkKK3ZvaWQgSWRlbnRpZmllcjo6
Y2hlY2tDdXJyZW50QXRvbVN0cmluZ1RhYmxlKFZNKiB2bSkKIHsKICAgICAvLyBDaGVjayB0aGUg
aWRlbnRpZmllciB0YWJsZSBhY2Nlc3NpYmxlIHRocm91Z2ggdGhlIHRocmVhZHNwZWNpZmljIG1h
dGNoZXMgdGhlCiAgICAgLy8gdm0ncyBpZGVudGlmaWVyIHRhYmxlLgotICAgIEFTU0VSVF9VTlVT
RUQodm0sIHZtLT5hdG9taWNTdHJpbmdUYWJsZSgpID09IFRocmVhZDo6Y3VycmVudCgpLmF0b21p
Y1N0cmluZ1RhYmxlKCkpOworICAgIEFTU0VSVF9VTlVTRUQodm0sIHZtLT5hdG9tU3RyaW5nVGFi
bGUoKSA9PSBUaHJlYWQ6OmN1cnJlbnQoKS5hdG9tU3RyaW5nVGFibGUoKSk7CiB9CiAKLXZvaWQg
SWRlbnRpZmllcjo6Y2hlY2tDdXJyZW50QXRvbWljU3RyaW5nVGFibGUoRXhlY1N0YXRlKiBleGVj
KQordm9pZCBJZGVudGlmaWVyOjpjaGVja0N1cnJlbnRBdG9tU3RyaW5nVGFibGUoRXhlY1N0YXRl
KiBleGVjKQogewotICAgIGNoZWNrQ3VycmVudEF0b21pY1N0cmluZ1RhYmxlKCZleGVjLT52bSgp
KTsKKyAgICBjaGVja0N1cnJlbnRBdG9tU3RyaW5nVGFibGUoJmV4ZWMtPnZtKCkpOwogfQogCiAj
ZWxzZQogCiAvLyBUaGVzZSBvbmx5IGV4aXN0cyBzbyB0aGF0IG91ciBleHBvcnRzIGFyZSB0aGUg
c2FtZSBmb3IgZGVidWcgYW5kIHJlbGVhc2UgYnVpbGRzLgogLy8gVGhpcyB3b3VsZCBiZSBhbiBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpLCBidXQgd2UncmUgaW4gTkRFQlVHIG9ubHkgY29k
ZSBoZXJlIQotTk9fUkVUVVJOX0RVRV9UT19DUkFTSCB2b2lkIElkZW50aWZpZXI6OmNoZWNrQ3Vy
cmVudEF0b21pY1N0cmluZ1RhYmxlKFZNKikgeyBDUkFTSCgpOyB9Ci1OT19SRVRVUk5fRFVFX1RP
X0NSQVNIIHZvaWQgSWRlbnRpZmllcjo6Y2hlY2tDdXJyZW50QXRvbWljU3RyaW5nVGFibGUoRXhl
Y1N0YXRlKikgeyBDUkFTSCgpOyB9CitOT19SRVRVUk5fRFVFX1RPX0NSQVNIIHZvaWQgSWRlbnRp
Zmllcjo6Y2hlY2tDdXJyZW50QXRvbVN0cmluZ1RhYmxlKFZNKikgeyBDUkFTSCgpOyB9CitOT19S
RVRVUk5fRFVFX1RPX0NSQVNIIHZvaWQgSWRlbnRpZmllcjo6Y2hlY2tDdXJyZW50QXRvbVN0cmlu
Z1RhYmxlKEV4ZWNTdGF0ZSopIHsgQ1JBU0goKTsgfQogCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCmluZGV4IGZhOGQzNDIxYzQxYTJlZDJjMzMx
MDBjMjJiNGFmNmViOWFkMWQzMTYuLjEwNGExNDcwNzZiMzljMThkOWVhMDVjNTBiZGRiMTRlMTY0
MjRiOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZp
ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmgKQEAg
LTg4LDcgKzg4LDcgQEAgY2xhc3MgSWRlbnRpZmllciB7CiBwdWJsaWM6CiAgICAgSWRlbnRpZmll
cigpIHsgfQogICAgIGVudW0gRW1wdHlJZGVudGlmaWVyRmxhZyB7IEVtcHR5SWRlbnRpZmllciB9
OwotICAgIElkZW50aWZpZXIoRW1wdHlJZGVudGlmaWVyRmxhZykgOiBtX3N0cmluZyhTdHJpbmdJ
bXBsOjplbXB0eSgpKSB7IEFTU0VSVChtX3N0cmluZy5pbXBsKCktPmlzQXRvbWljKCkpOyB9Cisg
ICAgSWRlbnRpZmllcihFbXB0eUlkZW50aWZpZXJGbGFnKSA6IG1fc3RyaW5nKFN0cmluZ0ltcGw6
OmVtcHR5KCkpIHsgQVNTRVJUKG1fc3RyaW5nLmltcGwoKS0+aXNBdG9tKCkpOyB9CiAKICAgICBj
b25zdCBTdHJpbmcmIHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9CiAgICAgVW5p
cXVlZFN0cmluZ0ltcGwqIGltcGwoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxVbmlxdWVk
U3RyaW5nSW1wbCo+KG1fc3RyaW5nLmltcGwoKSk7IH0KQEAgLTExNyw4ICsxMTcsOCBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIElkZW50aWZpZXIgZnJvbVN0cmluZyhWTSosIGNvbnN0IExDaGFyKiwg
aW50IGxlbmd0aCk7CiAgICAgc3RhdGljIElkZW50aWZpZXIgZnJvbVN0cmluZyhWTSosIGNvbnN0
IFVDaGFyKiwgaW50IGxlbmd0aCk7CiAgICAgc3RhdGljIElkZW50aWZpZXIgZnJvbVN0cmluZyhW
TSosIGNvbnN0IFN0cmluZyYpOwotICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb21TdHJpbmcoRXhl
Y1N0YXRlKiwgQXRvbWljU3RyaW5nSW1wbCopOwotICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb21T
dHJpbmcoRXhlY1N0YXRlKiwgY29uc3QgQXRvbWljU3RyaW5nJik7CisgICAgc3RhdGljIElkZW50
aWZpZXIgZnJvbVN0cmluZyhFeGVjU3RhdGUqLCBBdG9tU3RyaW5nSW1wbCopOworICAgIHN0YXRp
YyBJZGVudGlmaWVyIGZyb21TdHJpbmcoRXhlY1N0YXRlKiwgY29uc3QgQXRvbVN0cmluZyYpOwog
ICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb21TdHJpbmcoRXhlY1N0YXRlKiwgY29uc3QgU3RyaW5n
Jik7CiAgICAgc3RhdGljIElkZW50aWZpZXIgZnJvbVN0cmluZyhFeGVjU3RhdGUqLCBjb25zdCBj
aGFyKik7CiAgICAgc3RhdGljIElkZW50aWZpZXIgZnJvbVN0cmluZyhWTSogdm0sIGNvbnN0IFZl
Y3RvcjxMQ2hhcj4mIGNoYXJhY3RlcnMpIHsgcmV0dXJuIGZyb21TdHJpbmcodm0sIGNoYXJhY3Rl
cnMuZGF0YSgpLCBjaGFyYWN0ZXJzLnNpemUoKSk7IH0KQEAgLTE2NywxNCArMTY3LDE0IEBAIHBy
aXZhdGU6CiAKICAgICAvLyBPbmx5IHRvIGJlIHVzZWQgd2l0aCBzdHJpbmcgbGl0ZXJhbHMuCiAg
ICAgdGVtcGxhdGU8dW5zaWduZWQgY2hhcmFjdGVyc0NvdW50PgotICAgIElkZW50aWZpZXIoVk0q
IHZtLCBjb25zdCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVyc0NvdW50XSkgOiBtX3N0cmlu
ZyhhZGQodm0sIGNoYXJhY3RlcnMpKSB7IEFTU0VSVChtX3N0cmluZy5pbXBsKCktPmlzQXRvbWlj
KCkpOyB9CisgICAgSWRlbnRpZmllcihWTSogdm0sIGNvbnN0IGNoYXIgKCZjaGFyYWN0ZXJzKVtj
aGFyYWN0ZXJzQ291bnRdKSA6IG1fc3RyaW5nKGFkZCh2bSwgY2hhcmFjdGVycykpIHsgQVNTRVJU
KG1fc3RyaW5nLmltcGwoKS0+aXNBdG9tKCkpOyB9CiAKLSAgICBJZGVudGlmaWVyKFZNKiB2bSwg
Y29uc3QgTENoYXIqIHMsIGludCBsZW5ndGgpIDogbV9zdHJpbmcoYWRkKHZtLCBzLCBsZW5ndGgp
KSB7IEFTU0VSVChtX3N0cmluZy5pbXBsKCktPmlzQXRvbWljKCkpOyB9Ci0gICAgSWRlbnRpZmll
cihWTSogdm0sIGNvbnN0IFVDaGFyKiBzLCBpbnQgbGVuZ3RoKSA6IG1fc3RyaW5nKGFkZCh2bSwg
cywgbGVuZ3RoKSkgeyBBU1NFUlQobV9zdHJpbmcuaW1wbCgpLT5pc0F0b21pYygpKTsgfQotICAg
IElkZW50aWZpZXIoRXhlY1N0YXRlKiwgQXRvbWljU3RyaW5nSW1wbCopOwotICAgIElkZW50aWZp
ZXIoRXhlY1N0YXRlKiwgY29uc3QgQXRvbWljU3RyaW5nJik7Ci0gICAgSWRlbnRpZmllcihWTSog
dm0sIGNvbnN0IFN0cmluZyYgc3RyaW5nKSA6IG1fc3RyaW5nKGFkZCh2bSwgc3RyaW5nLmltcGwo
KSkpIHsgQVNTRVJUKG1fc3RyaW5nLmltcGwoKS0+aXNBdG9taWMoKSk7IH0KLSAgICBJZGVudGlm
aWVyKFZNKiB2bSwgU3RyaW5nSW1wbCogcmVwKSA6IG1fc3RyaW5nKGFkZCh2bSwgcmVwKSkgeyBB
U1NFUlQobV9zdHJpbmcuaW1wbCgpLT5pc0F0b21pYygpKTsgfQorICAgIElkZW50aWZpZXIoVk0q
IHZtLCBjb25zdCBMQ2hhciogcywgaW50IGxlbmd0aCkgOiBtX3N0cmluZyhhZGQodm0sIHMsIGxl
bmd0aCkpIHsgQVNTRVJUKG1fc3RyaW5nLmltcGwoKS0+aXNBdG9tKCkpOyB9CisgICAgSWRlbnRp
ZmllcihWTSogdm0sIGNvbnN0IFVDaGFyKiBzLCBpbnQgbGVuZ3RoKSA6IG1fc3RyaW5nKGFkZCh2
bSwgcywgbGVuZ3RoKSkgeyBBU1NFUlQobV9zdHJpbmcuaW1wbCgpLT5pc0F0b20oKSk7IH0KKyAg
ICBJZGVudGlmaWVyKEV4ZWNTdGF0ZSosIEF0b21TdHJpbmdJbXBsKik7CisgICAgSWRlbnRpZmll
cihFeGVjU3RhdGUqLCBjb25zdCBBdG9tU3RyaW5nJik7CisgICAgSWRlbnRpZmllcihWTSogdm0s
IGNvbnN0IFN0cmluZyYgc3RyaW5nKSA6IG1fc3RyaW5nKGFkZCh2bSwgc3RyaW5nLmltcGwoKSkp
IHsgQVNTRVJUKG1fc3RyaW5nLmltcGwoKS0+aXNBdG9tKCkpOyB9CisgICAgSWRlbnRpZmllcihW
TSogdm0sIFN0cmluZ0ltcGwqIHJlcCkgOiBtX3N0cmluZyhhZGQodm0sIHJlcCkpIHsgQVNTRVJU
KG1fc3RyaW5nLmltcGwoKS0+aXNBdG9tKCkpOyB9CiAKICAgICBJZGVudGlmaWVyKFN5bWJvbElt
cGwmIHVpZCkKICAgICAgICAgOiBtX3N0cmluZygmdWlkKQpAQCAtMTk1LDExICsxOTUsMTEgQEAg
cHJpdmF0ZToKICAgICBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGFkZChWTSosIFN0cmluZ0ltcGwq
KTsKIAogI2lmbmRlZiBOREVCVUcKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBj
aGVja0N1cnJlbnRBdG9taWNTdHJpbmdUYWJsZShFeGVjU3RhdGUqKTsKLSAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgdm9pZCBjaGVja0N1cnJlbnRBdG9taWNTdHJpbmdUYWJsZShWTSopOwor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGNoZWNrQ3VycmVudEF0b21TdHJpbmdU
YWJsZShFeGVjU3RhdGUqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBjaGVj
a0N1cnJlbnRBdG9tU3RyaW5nVGFibGUoVk0qKTsKICNlbHNlCi0gICAgSlNfRVhQT1JUX1BSSVZB
VEUgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCBzdGF0aWMgdm9pZCBjaGVja0N1cnJlbnRBdG9taWNT
dHJpbmdUYWJsZShFeGVjU3RhdGUqKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBOT19SRVRVUk5f
RFVFX1RPX0NSQVNIIHN0YXRpYyB2b2lkIGNoZWNrQ3VycmVudEF0b21pY1N0cmluZ1RhYmxlKFZN
Kik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCBzdGF0aWMg
dm9pZCBjaGVja0N1cnJlbnRBdG9tU3RyaW5nVGFibGUoRXhlY1N0YXRlKik7CisgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCBzdGF0aWMgdm9pZCBjaGVja0N1cnJl
bnRBdG9tU3RyaW5nVGFibGUoVk0qKTsKICNlbmRpZgogfTsKIApAQCAtMjI1LDcgKzIyNSw3IEBA
IFJlZjxTdHJpbmdJbXBsPiBJZGVudGlmaWVyOjphZGQoVk0qIHZtLCBjb25zdCBUKiBzLCBpbnQg
bGVuZ3RoKQogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gKlN0cmluZ0ltcGw6OmVt
cHR5KCk7CiAKLSAgICByZXR1cm4gKkF0b21pY1N0cmluZ0ltcGw6OmFkZChzLCBsZW5ndGgpOwor
ICAgIHJldHVybiAqQXRvbVN0cmluZ0ltcGw6OmFkZChzLCBsZW5ndGgpOwogfQogCiBpbmxpbmUg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IElkZW50aWZpZXImIGEsIGNvbnN0IElkZW50aWZpZXImIGIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVySW5s
aW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllcklubGluZXMu
aAppbmRleCA5OTY0Y2M1OWM4MDg2MWQ5YzIzODBlYmFiM2U3ZTJjZjFjZjhhZTA5Li40NWI3ZWM4
YzJiNThiNGZjNmNjYzU5Y2E2NjgwOTc1N2JjNDk3OTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXJJbmxpbmVzLmgKQEAgLTMxLDI1ICszMSwyNSBA
QAogCiBuYW1lc3BhY2UgSlNDICB7CiAKLWlubGluZSBJZGVudGlmaWVyOjpJZGVudGlmaWVyKEV4
ZWNTdGF0ZSogZXhlYywgQXRvbWljU3RyaW5nSW1wbCogc3RyaW5nKQoraW5saW5lIElkZW50aWZp
ZXI6OklkZW50aWZpZXIoRXhlY1N0YXRlKiBleGVjLCBBdG9tU3RyaW5nSW1wbCogc3RyaW5nKQog
ICAgIDogbV9zdHJpbmcoc3RyaW5nKQogewogI2lmbmRlZiBOREVCVUcKLSAgICBjaGVja0N1cnJl
bnRBdG9taWNTdHJpbmdUYWJsZShleGVjKTsKKyAgICBjaGVja0N1cnJlbnRBdG9tU3RyaW5nVGFi
bGUoZXhlYyk7CiAgICAgaWYgKHN0cmluZykKLSAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSgh
c3RyaW5nLT5sZW5ndGgoKSB8fCBzdHJpbmctPmlzU3ltYm9sKCkgfHwgQXRvbWljU3RyaW5nSW1w
bDo6aXNJbkF0b21pY1N0cmluZ1RhYmxlKHN0cmluZyksICJUaGUgYXRvbWljIHN0cmluZyBjb21l
cyBmcm9tIGFuIG90aGVyIHRocmVhZCEiKTsKKyAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSgh
c3RyaW5nLT5sZW5ndGgoKSB8fCBzdHJpbmctPmlzU3ltYm9sKCkgfHwgQXRvbVN0cmluZ0ltcGw6
OmlzSW5BdG9tU3RyaW5nVGFibGUoc3RyaW5nKSwgIlRoZSBhdG9taWMgc3RyaW5nIGNvbWVzIGZy
b20gYW4gb3RoZXIgdGhyZWFkISIpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAj
ZW5kaWYKIH0KIAotaW5saW5lIElkZW50aWZpZXI6OklkZW50aWZpZXIoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBBdG9taWNTdHJpbmcmIHN0cmluZykKK2lubGluZSBJZGVudGlmaWVyOjpJZGVudGlm
aWVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXRvbVN0cmluZyYgc3RyaW5nKQogICAgIDogbV9z
dHJpbmcoc3RyaW5nLnN0cmluZygpKQogewogI2lmbmRlZiBOREVCVUcKLSAgICBjaGVja0N1cnJl
bnRBdG9taWNTdHJpbmdUYWJsZShleGVjKTsKKyAgICBjaGVja0N1cnJlbnRBdG9tU3RyaW5nVGFi
bGUoZXhlYyk7CiAgICAgaWYgKCFzdHJpbmcuaXNOdWxsKCkpCi0gICAgICAgIEFTU0VSVF9XSVRI
X01FU1NBR0UoIXN0cmluZy5sZW5ndGgoKSB8fCBzdHJpbmcuaW1wbCgpLT5pc1N5bWJvbCgpIHx8
IEF0b21pY1N0cmluZ0ltcGw6OmlzSW5BdG9taWNTdHJpbmdUYWJsZShzdHJpbmcuaW1wbCgpKSwg
IlRoZSBhdG9taWMgc3RyaW5nIGNvbWVzIGZyb20gYW4gb3RoZXIgdGhyZWFkISIpOworICAgICAg
ICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFzdHJpbmcubGVuZ3RoKCkgfHwgc3RyaW5nLmltcGwoKS0+
aXNTeW1ib2woKSB8fCBBdG9tU3RyaW5nSW1wbDo6aXNJbkF0b21TdHJpbmdUYWJsZShzdHJpbmcu
aW1wbCgpKSwgIlRoZSBhdG9taWMgc3RyaW5nIGNvbWVzIGZyb20gYW4gb3RoZXIgdGhyZWFkISIp
OwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAjZW5kaWYKQEAgLTU4LDE3ICs1OCwx
NyBAQCBpbmxpbmUgSWRlbnRpZmllcjo6SWRlbnRpZmllcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IEF0b21pY1N0cmluZyYgc3RyaW5nKQogaW5saW5lIFJlZjxTdHJpbmdJbXBsPiBJZGVudGlmaWVy
OjphZGQoRXhlY1N0YXRlKiBleGVjLCBTdHJpbmdJbXBsKiByKQogewogI2lmbmRlZiBOREVCVUcK
LSAgICBjaGVja0N1cnJlbnRBdG9taWNTdHJpbmdUYWJsZShleGVjKTsKKyAgICBjaGVja0N1cnJl
bnRBdG9tU3RyaW5nVGFibGUoZXhlYyk7CiAjZW5kaWYKICAgICBWTSYgdm0gPSBleGVjLT52bSgp
OwotICAgIHJldHVybiAqQXRvbWljU3RyaW5nSW1wbDo6YWRkV2l0aFN0cmluZ1RhYmxlUHJvdmlk
ZXIodm0sIHIpOworICAgIHJldHVybiAqQXRvbVN0cmluZ0ltcGw6OmFkZFdpdGhTdHJpbmdUYWJs
ZVByb3ZpZGVyKHZtLCByKTsKIH0KIGlubGluZSBSZWY8U3RyaW5nSW1wbD4gSWRlbnRpZmllcjo6
YWRkKFZNKiB2bSwgU3RyaW5nSW1wbCogcikKIHsKICNpZm5kZWYgTkRFQlVHCi0gICAgY2hlY2tD
dXJyZW50QXRvbWljU3RyaW5nVGFibGUodm0pOworICAgIGNoZWNrQ3VycmVudEF0b21TdHJpbmdU
YWJsZSh2bSk7CiAjZW5kaWYKLSAgICByZXR1cm4gKkF0b21pY1N0cmluZ0ltcGw6OmFkZFdpdGhT
dHJpbmdUYWJsZVByb3ZpZGVyKCp2bSwgcik7CisgICAgcmV0dXJuICpBdG9tU3RyaW5nSW1wbDo6
YWRkV2l0aFN0cmluZ1RhYmxlUHJvdmlkZXIoKnZtLCByKTsKIH0KIAogaW5saW5lIElkZW50aWZp
ZXIgSWRlbnRpZmllcjo6ZnJvbVVpZChWTSogdm0sIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCkBA
IC0xMjUsMTkgKzEyNSwxOSBAQCBpbmxpbmUgSWRlbnRpZmllciBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgcmV0dXJuIElk
ZW50aWZpZXIoJmV4ZWMtPnZtKCksIHN0cmluZy5pbXBsKCkpOwogfQogCi1pbmxpbmUgSWRlbnRp
ZmllciBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgQXRvbWljU3RyaW5n
SW1wbCogYXRvbWljU3RyaW5nKQoraW5saW5lIElkZW50aWZpZXIgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyhFeGVjU3RhdGUqIGV4ZWMsIEF0b21TdHJpbmdJbXBsKiBhdG9tU3RyaW5nKQogewotICAg
IHJldHVybiBJZGVudGlmaWVyKGV4ZWMsIGF0b21pY1N0cmluZyk7CisgICAgcmV0dXJuIElkZW50
aWZpZXIoZXhlYywgYXRvbVN0cmluZyk7CiB9CiAKLWlubGluZSBJZGVudGlmaWVyIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBdG9taWNTdHJpbmcmIGF0b21p
Y1N0cmluZykKK2lubGluZSBJZGVudGlmaWVyIElkZW50aWZpZXI6OmZyb21TdHJpbmcoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBBdG9tU3RyaW5nJiBhdG9tU3RyaW5nKQogewotICAgIHJldHVybiBJ
ZGVudGlmaWVyKGV4ZWMsIGF0b21pY1N0cmluZyk7CisgICAgcmV0dXJuIElkZW50aWZpZXIoZXhl
YywgYXRvbVN0cmluZyk7CiB9CiAKIGlubGluZSBJZGVudGlmaWVyIElkZW50aWZpZXI6OmZyb21T
dHJpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBjaGFyKiBzKQogewotICAgIHJldHVybiBJZGVu
dGlmaWVyKGV4ZWMsIEF0b21pY1N0cmluZyhzKSk7CisgICAgcmV0dXJuIElkZW50aWZpZXIoZXhl
YywgQXRvbVN0cmluZyhzKSk7CiB9CiAKIGlubGluZSBKU1ZhbHVlIGlkZW50aWZpZXJUb0pTVmFs
dWUoVk0mIHZtLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAppbmRleCBkNDcxZTE2M2YzZWJlYTMzZGRk
Y2NkMjIzY2M2ZGY0MjQ0NTAyNWI4Li40ZTVlNmEwYWE2MmRhMTQ2NDhlMDkxM2M2Mzg2ZjJjNGYx
MTkzMmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1Zh
bHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNw
cApAQCAtMjU5LDkgKzI1OSw5IEBAIHZvaWQgSlNWYWx1ZTo6ZHVtcEluQ29udGV4dEFzc3VtaW5n
U3RydWN0dXJlKAogICAgICAgICAgICAgICAgIG91dC5wcmludCgiIChyb3BlKSIpOwogICAgICAg
ICAgICAgY29uc3QgU3RyaW5nSW1wbCogaW1wbCA9IHN0cmluZy0+dHJ5R2V0VmFsdWVJbXBsKCk7
CiAgICAgICAgICAgICBpZiAoaW1wbCkgewotICAgICAgICAgICAgICAgIGlmIChpbXBsLT5pc0F0
b21pYygpKQorICAgICAgICAgICAgICAgIGlmIChpbXBsLT5pc0F0b20oKSkKICAgICAgICAgICAg
ICAgICAgICAgb3V0LnByaW50KCIgKGF0b21pYykiKTsKLSAgICAgICAgICAgICAgICBpZiAoaW1w
bC0+aXNBdG9taWMoKSkKKyAgICAgICAgICAgICAgICBpZiAoaW1wbC0+aXNBdG9tKCkpCiAgICAg
ICAgICAgICAgICAgICAgIG91dC5wcmludCgiIChpZGVudGlmaWVyKSIpOwogICAgICAgICAgICAg
ICAgIGlmIChpbXBsLT5pc1N5bWJvbCgpKQogICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnQo
IiAoc3ltYm9sKSIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNMb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5jcHAKaW5k
ZXggMDAwOTY5YzQ3NDYxNGNiZWU4NjVkMjRjYTFkYTZiNWZiYTQyNDY4Ni4uN2NjM2Y2OWQ0YWZj
MmU3ZDUyZWJjYjk3MzljODFkMjk3MjU1YzUyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNMb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0xvY2suY3BwCkBAIC04Myw3ICs4Myw3IEBAIEpTTG9jazo6SlNMb2NrKFZNKiB2bSkK
ICAgICA6IG1fbG9ja0NvdW50KDApCiAgICAgLCBtX2xvY2tEcm9wRGVwdGgoMCkKICAgICAsIG1f
dm0odm0pCi0gICAgLCBtX2VudHJ5QXRvbWljU3RyaW5nVGFibGUobnVsbHB0cikKKyAgICAsIG1f
ZW50cnlBdG9tU3RyaW5nVGFibGUobnVsbHB0cikKIHsKIH0KIApAQCAtMTMwLDkgKzEzMCw5IEBA
IHZvaWQgSlNMb2NrOjpkaWRBY3F1aXJlTG9jaygpCiAgICAgICAgIHJldHVybjsKICAgICAKICAg
ICBUaHJlYWQmIHRocmVhZCA9IFRocmVhZDo6Y3VycmVudCgpOwotICAgIEFTU0VSVCghbV9lbnRy
eUF0b21pY1N0cmluZ1RhYmxlKTsKLSAgICBtX2VudHJ5QXRvbWljU3RyaW5nVGFibGUgPSB0aHJl
YWQuc2V0Q3VycmVudEF0b21pY1N0cmluZ1RhYmxlKG1fdm0tPmF0b21pY1N0cmluZ1RhYmxlKCkp
OwotICAgIEFTU0VSVChtX2VudHJ5QXRvbWljU3RyaW5nVGFibGUpOworICAgIEFTU0VSVCghbV9l
bnRyeUF0b21TdHJpbmdUYWJsZSk7CisgICAgbV9lbnRyeUF0b21TdHJpbmdUYWJsZSA9IHRocmVh
ZC5zZXRDdXJyZW50QXRvbVN0cmluZ1RhYmxlKG1fdm0tPmF0b21TdHJpbmdUYWJsZSgpKTsKKyAg
ICBBU1NFUlQobV9lbnRyeUF0b21TdHJpbmdUYWJsZSk7CiAKICAgICBtX3ZtLT5zZXRMYXN0U3Rh
Y2tUb3AodGhyZWFkLnNhdmVkTGFzdFN0YWNrVG9wKCkpOwogICAgIEFTU0VSVCh0aHJlYWQuc3Rh
Y2soKS5jb250YWlucyhtX3ZtLT5sYXN0U3RhY2tUb3AoKSkpOwpAQCAtMjEyLDkgKzIxMiw5IEBA
IHZvaWQgSlNMb2NrOjp3aWxsUmVsZWFzZUxvY2soKQogICAgICAgICAgICAgdm0tPmhlYXAucmVs
ZWFzZUFjY2VzcygpOwogICAgIH0KIAotICAgIGlmIChtX2VudHJ5QXRvbWljU3RyaW5nVGFibGUp
IHsKLSAgICAgICAgVGhyZWFkOjpjdXJyZW50KCkuc2V0Q3VycmVudEF0b21pY1N0cmluZ1RhYmxl
KG1fZW50cnlBdG9taWNTdHJpbmdUYWJsZSk7Ci0gICAgICAgIG1fZW50cnlBdG9taWNTdHJpbmdU
YWJsZSA9IG51bGxwdHI7CisgICAgaWYgKG1fZW50cnlBdG9tU3RyaW5nVGFibGUpIHsKKyAgICAg
ICAgVGhyZWFkOjpjdXJyZW50KCkuc2V0Q3VycmVudEF0b21TdHJpbmdUYWJsZShtX2VudHJ5QXRv
bVN0cmluZ1RhYmxlKTsKKyAgICAgICAgbV9lbnRyeUF0b21TdHJpbmdUYWJsZSA9IG51bGxwdHI7
CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0xvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCmluZGV4IDUy
NzdmMDJjOGUxMTJjMjFmMGJhYTBmZWI3ZDRlYjBiYTA1M2ZkNmQuLmY0NjFmODIwZjllM2FhNWYx
ZWM4NmEwMjExM2RhMjI5NmYzMzMwZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTTG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
TG9jay5oCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KLSNpbmNs
dWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmdUYWJsZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0
b21TdHJpbmdUYWJsZS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMTQwLDcgKzE0MCw3IEBA
IHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9sb2NrRHJvcERlcHRoOwogICAgIGJvb2wgbV9zaG91
bGRSZWxlYXNlSGVhcEFjY2VzczsKICAgICBWTSogbV92bTsKLSAgICBBdG9taWNTdHJpbmdUYWJs
ZSogbV9lbnRyeUF0b21pY1N0cmluZ1RhYmxlOyAKKyAgICBBdG9tU3RyaW5nVGFibGUqIG1fZW50
cnlBdG9tU3RyaW5nVGFibGU7IAogfTsKIAogfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcAppbmRleCBkY2FlYWQ5N2FkMDU0YTcwOGNhNGEz
YWQ5ODVjMDE1Zjk0MzFjOTgxLi4yNTU3Mzg0NDdhNTU0MzQ4ZjI0MWUzNDIwNTA1MDYwN2M4ZTAx
ZjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCkBAIC0y
MTEsNyArMjExLDcgQEAgdm9pZCBKU1JvcGVTdHJpbmc6OnJlc29sdmVSb3BlSW50ZXJuYWwxNk5v
U3Vic3RyaW5nKFVDaGFyKiBidWZmZXIpIGNvbnN0CiAgICAgQVNTRVJUKChidWZmZXIgKyBsZW5n
dGgoKSkgPT0gcG9zaXRpb24pOwogfQogCi1BdG9taWNTdHJpbmcgSlNSb3BlU3RyaW5nOjpyZXNv
bHZlUm9wZVRvQXRvbWljU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK0F0b21TdHJpbmcg
SlNSb3BlU3RyaW5nOjpyZXNvbHZlUm9wZVRvQXRvbVN0cmluZyhFeGVjU3RhdGUqIGV4ZWMpIGNv
bnN0CiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CkBAIC0yMTksMTggKzIxOSwxOCBAQCBBdG9taWNTdHJpbmcgSlNS
b3BlU3RyaW5nOjpyZXNvbHZlUm9wZVRvQXRvbWljU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykgY29u
c3QKICAgICBpZiAobGVuZ3RoKCkgPiBtYXhMZW5ndGhGb3JPblN0YWNrUmVzb2x2ZSkgewogICAg
ICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgICAgIHJldHVybiByZXNvbHZlUm9wZVdpdGhGdW5j
dGlvbihleGVjLCBbJl0gKFJlZjxTdHJpbmdJbXBsPiYmIG5ld0ltcGwpIHsKLSAgICAgICAgICAg
IHJldHVybiBBdG9taWNTdHJpbmdJbXBsOjphZGQobmV3SW1wbC5wdHIoKSk7CisgICAgICAgICAg
ICByZXR1cm4gQXRvbVN0cmluZ0ltcGw6OmFkZChuZXdJbXBsLnB0cigpKTsKICAgICAgICAgfSk7
CiAgICAgfQogCiAgICAgaWYgKGlzOEJpdCgpKSB7CiAgICAgICAgIExDaGFyIGJ1ZmZlclttYXhM
ZW5ndGhGb3JPblN0YWNrUmVzb2x2ZV07CiAgICAgICAgIHJlc29sdmVSb3BlSW50ZXJuYWw4KGJ1
ZmZlcik7Ci0gICAgICAgIGNvbnZlcnRUb05vblJvcGUoQXRvbWljU3RyaW5nSW1wbDo6YWRkKGJ1
ZmZlciwgbGVuZ3RoKCkpKTsKKyAgICAgICAgY29udmVydFRvTm9uUm9wZShBdG9tU3RyaW5nSW1w
bDo6YWRkKGJ1ZmZlciwgbGVuZ3RoKCkpKTsKICAgICB9IGVsc2UgewogICAgICAgICBVQ2hhciBi
dWZmZXJbbWF4TGVuZ3RoRm9yT25TdGFja1Jlc29sdmVdOwogICAgICAgICByZXNvbHZlUm9wZUlu
dGVybmFsMTYoYnVmZmVyKTsKLSAgICAgICAgY29udmVydFRvTm9uUm9wZShBdG9taWNTdHJpbmdJ
bXBsOjphZGQoYnVmZmVyLCBsZW5ndGgoKSkpOworICAgICAgICBjb252ZXJ0VG9Ob25Sb3BlKEF0
b21TdHJpbmdJbXBsOjphZGQoYnVmZmVyLCBsZW5ndGgoKSkpOwogICAgIH0KIAogICAgIC8vIElm
IHdlIHJlc29sdmVkIGEgc3RyaW5nIHRoYXQgZGlkbid0IHByZXZpb3VzbHkgZXhpc3QsIG5vdGlm
eSB0aGUgaGVhcCB0aGF0IHdlJ3ZlIGdyb3duLgpAQCAtMjUxLDM2ICsyNTEsMzYgQEAgaW5saW5l
IHZvaWQgSlNSb3BlU3RyaW5nOjpjb252ZXJ0VG9Ob25Sb3BlKFN0cmluZyYmIHN0cmluZykgY29u
c3QKICAgICBBU1NFUlQoIUpTU3RyaW5nOjppc1JvcGUoKSk7CiB9CiAKLVJlZlB0cjxBdG9taWNT
dHJpbmdJbXBsPiBKU1JvcGVTdHJpbmc6OnJlc29sdmVSb3BlVG9FeGlzdGluZ0F0b21pY1N0cmlu
ZyhFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CitSZWZQdHI8QXRvbVN0cmluZ0ltcGw+IEpTUm9wZVN0
cmluZzo6cmVzb2x2ZVJvcGVUb0V4aXN0aW5nQXRvbVN0cmluZyhFeGVjU3RhdGUqIGV4ZWMpIGNv
bnN0CiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBpZiAobGVuZ3RoKCkgPiBtYXhMZW5ndGhGb3JPblN0
YWNrUmVzb2x2ZSkgewotICAgICAgICBSZWZQdHI8QXRvbWljU3RyaW5nSW1wbD4gZXhpc3RpbmdB
dG9taWNTdHJpbmc7CisgICAgICAgIFJlZlB0cjxBdG9tU3RyaW5nSW1wbD4gZXhpc3RpbmdBdG9t
U3RyaW5nOwogICAgICAgICByZXNvbHZlUm9wZVdpdGhGdW5jdGlvbihleGVjLCBbJl0gKFJlZjxT
dHJpbmdJbXBsPiYmIG5ld0ltcGwpIC0+IFJlZjxTdHJpbmdJbXBsPiB7Ci0gICAgICAgICAgICBl
eGlzdGluZ0F0b21pY1N0cmluZyA9IEF0b21pY1N0cmluZ0ltcGw6Omxvb2tVcChuZXdJbXBsLnB0
cigpKTsKLSAgICAgICAgICAgIGlmIChleGlzdGluZ0F0b21pY1N0cmluZykKLSAgICAgICAgICAg
ICAgICByZXR1cm4gbWFrZVJlZigqZXhpc3RpbmdBdG9taWNTdHJpbmcpOworICAgICAgICAgICAg
ZXhpc3RpbmdBdG9tU3RyaW5nID0gQXRvbVN0cmluZ0ltcGw6Omxvb2tVcChuZXdJbXBsLnB0cigp
KTsKKyAgICAgICAgICAgIGlmIChleGlzdGluZ0F0b21TdHJpbmcpCisgICAgICAgICAgICAgICAg
cmV0dXJuIG1ha2VSZWYoKmV4aXN0aW5nQXRvbVN0cmluZyk7CiAgICAgICAgICAgICByZXR1cm4g
V1RGTW92ZShuZXdJbXBsKTsKICAgICAgICAgfSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIG51bGxwdHIpOwotICAgICAgICByZXR1cm4gZXhpc3RpbmdBdG9taWNTdHJpbmc7
CisgICAgICAgIHJldHVybiBleGlzdGluZ0F0b21TdHJpbmc7CiAgICAgfQogICAgIAogICAgIGlm
IChpczhCaXQoKSkgewogICAgICAgICBMQ2hhciBidWZmZXJbbWF4TGVuZ3RoRm9yT25TdGFja1Jl
c29sdmVdOwogICAgICAgICByZXNvbHZlUm9wZUludGVybmFsOChidWZmZXIpOwotICAgICAgICBp
ZiAoUmVmUHRyPEF0b21pY1N0cmluZ0ltcGw+IGV4aXN0aW5nQXRvbWljU3RyaW5nID0gQXRvbWlj
U3RyaW5nSW1wbDo6bG9va1VwKGJ1ZmZlciwgbGVuZ3RoKCkpKSB7Ci0gICAgICAgICAgICBjb252
ZXJ0VG9Ob25Sb3BlKCpleGlzdGluZ0F0b21pY1N0cmluZyk7Ci0gICAgICAgICAgICByZXR1cm4g
ZXhpc3RpbmdBdG9taWNTdHJpbmc7CisgICAgICAgIGlmIChSZWZQdHI8QXRvbVN0cmluZ0ltcGw+
IGV4aXN0aW5nQXRvbVN0cmluZyA9IEF0b21TdHJpbmdJbXBsOjpsb29rVXAoYnVmZmVyLCBsZW5n
dGgoKSkpIHsKKyAgICAgICAgICAgIGNvbnZlcnRUb05vblJvcGUoKmV4aXN0aW5nQXRvbVN0cmlu
Zyk7CisgICAgICAgICAgICByZXR1cm4gZXhpc3RpbmdBdG9tU3RyaW5nOwogICAgICAgICB9CiAg
ICAgfSBlbHNlIHsKICAgICAgICAgVUNoYXIgYnVmZmVyW21heExlbmd0aEZvck9uU3RhY2tSZXNv
bHZlXTsKICAgICAgICAgcmVzb2x2ZVJvcGVJbnRlcm5hbDE2KGJ1ZmZlcik7Ci0gICAgICAgIGlm
IChSZWZQdHI8QXRvbWljU3RyaW5nSW1wbD4gZXhpc3RpbmdBdG9taWNTdHJpbmcgPSBBdG9taWNT
dHJpbmdJbXBsOjpsb29rVXAoYnVmZmVyLCBsZW5ndGgoKSkpIHsKLSAgICAgICAgICAgIGNvbnZl
cnRUb05vblJvcGUoKmV4aXN0aW5nQXRvbWljU3RyaW5nKTsKLSAgICAgICAgICAgIHJldHVybiBl
eGlzdGluZ0F0b21pY1N0cmluZzsKKyAgICAgICAgaWYgKFJlZlB0cjxBdG9tU3RyaW5nSW1wbD4g
ZXhpc3RpbmdBdG9tU3RyaW5nID0gQXRvbVN0cmluZ0ltcGw6Omxvb2tVcChidWZmZXIsIGxlbmd0
aCgpKSkgeworICAgICAgICAgICAgY29udmVydFRvTm9uUm9wZSgqZXhpc3RpbmdBdG9tU3RyaW5n
KTsKKyAgICAgICAgICAgIHJldHVybiBleGlzdGluZ0F0b21TdHJpbmc7CiAgICAgICAgIH0KICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5n
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCmluZGV4IGI4OTNl
MDQwNzgyOGZiMDBhYmMwYmE1NzVjNTcwZTJiYmZiZDk5ODguLjZiNWM2ZWZmY2EwYjRiNzkzMWI1
ZTc4OTkwOGY1MzE0NTMxYzY1NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU3RyaW5nLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
dHJpbmcuaApAQCAtMTgyLDggKzE4Miw4IEBAIHB1YmxpYzoKICAgICB+SlNTdHJpbmcoKTsKIAog
ICAgIElkZW50aWZpZXIgdG9JZGVudGlmaWVyKEV4ZWNTdGF0ZSopIGNvbnN0OwotICAgIEF0b21p
Y1N0cmluZyB0b0F0b21pY1N0cmluZyhFeGVjU3RhdGUqKSBjb25zdDsKLSAgICBSZWZQdHI8QXRv
bWljU3RyaW5nSW1wbD4gdG9FeGlzdGluZ0F0b21pY1N0cmluZyhFeGVjU3RhdGUqKSBjb25zdDsK
KyAgICBBdG9tU3RyaW5nIHRvQXRvbVN0cmluZyhFeGVjU3RhdGUqKSBjb25zdDsKKyAgICBSZWZQ
dHI8QXRvbVN0cmluZ0ltcGw+IHRvRXhpc3RpbmdBdG9tU3RyaW5nKEV4ZWNTdGF0ZSopIGNvbnN0
OwogCiAgICAgU3RyaW5nVmlld1dpdGhVbmRlcmx5aW5nU3RyaW5nIHZpZXdXaXRoVW5kZXJseWlu
Z1N0cmluZyhFeGVjU3RhdGUqKSBjb25zdDsKIApAQCAtNTc2LDggKzU3Niw4IEBAIHByaXZhdGU6
CiAgICAgLy8gVGhlIHJvcGUgdmFsdWUgd2lsbCByZW1haW4gYSBudWxsIHN0cmluZyBpbiB0aGF0
IGNhc2UuCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgY29uc3QgU3RyaW5nJiByZXNvbHZlUm9wZShF
eGVjU3RhdGUqIG51bGxPckV4ZWNGb3JPT00pIGNvbnN0OwogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEZ1bmN0aW9uPiBjb25zdCBTdHJpbmcmIHJlc29sdmVSb3BlV2l0aEZ1bmN0aW9uKEV4ZWNTdGF0
ZSogbnVsbE9yRXhlY0Zvck9PTSwgRnVuY3Rpb24mJikgY29uc3Q7Ci0gICAgSlNfRVhQT1JUX1BS
SVZBVEUgQXRvbWljU3RyaW5nIHJlc29sdmVSb3BlVG9BdG9taWNTdHJpbmcoRXhlY1N0YXRlKikg
Y29uc3Q7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmUHRyPEF0b21pY1N0cmluZ0ltcGw+IHJl
c29sdmVSb3BlVG9FeGlzdGluZ0F0b21pY1N0cmluZyhFeGVjU3RhdGUqKSBjb25zdDsKKyAgICBK
U19FWFBPUlRfUFJJVkFURSBBdG9tU3RyaW5nIHJlc29sdmVSb3BlVG9BdG9tU3RyaW5nKEV4ZWNT
dGF0ZSopIGNvbnN0OworICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZlB0cjxBdG9tU3RyaW5nSW1w
bD4gcmVzb2x2ZVJvcGVUb0V4aXN0aW5nQXRvbVN0cmluZyhFeGVjU3RhdGUqKSBjb25zdDsKICAg
ICB2b2lkIHJlc29sdmVSb3BlU2xvd0Nhc2U4KExDaGFyKikgY29uc3Q7CiAgICAgdm9pZCByZXNv
bHZlUm9wZVNsb3dDYXNlKFVDaGFyKikgY29uc3Q7CiAgICAgdm9pZCBvdXRPZk1lbW9yeShFeGVj
U3RhdGUqIG51bGxPckV4ZWNGb3JPT00pIGNvbnN0OwpAQCAtNzM1LDI3ICs3MzUsMjcgQEAgaW5s
aW5lIEpTU3RyaW5nKiBqc05vbnRyaXZpYWxTdHJpbmcoVk0qIHZtLCBTdHJpbmcmJiBzKQogCiBB
TFdBWVNfSU5MSU5FIElkZW50aWZpZXIgSlNTdHJpbmc6OnRvSWRlbnRpZmllcihFeGVjU3RhdGUq
IGV4ZWMpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywg
dG9BdG9taWNTdHJpbmcoZXhlYykpOworICAgIHJldHVybiBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KGV4ZWMsIHRvQXRvbVN0cmluZyhleGVjKSk7CiB9CiAKLUFMV0FZU19JTkxJTkUgQXRvbWljU3Ry
aW5nIEpTU3RyaW5nOjp0b0F0b21pY1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CitBTFdB
WVNfSU5MSU5FIEF0b21TdHJpbmcgSlNTdHJpbmc6OnRvQXRvbVN0cmluZyhFeGVjU3RhdGUqIGV4
ZWMpIGNvbnN0CiB7CiAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKQogICAgICAgICBSRUxFQVNF
X0FTU0VSVCh2bSgpLT5oZWFwLmV4cGVjdERvZXNHQygpKTsKICAgICBpZiAoaXNSb3BlKCkpCi0g
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU1JvcGVTdHJpbmcqPih0aGlzKS0+cmVz
b2x2ZVJvcGVUb0F0b21pY1N0cmluZyhleGVjKTsKLSAgICByZXR1cm4gQXRvbWljU3RyaW5nKHZh
bHVlSW50ZXJuYWwoKSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU1JvcGVT
dHJpbmcqPih0aGlzKS0+cmVzb2x2ZVJvcGVUb0F0b21TdHJpbmcoZXhlYyk7CisgICAgcmV0dXJu
IEF0b21TdHJpbmcodmFsdWVJbnRlcm5hbCgpKTsKIH0KIAotQUxXQVlTX0lOTElORSBSZWZQdHI8
QXRvbWljU3RyaW5nSW1wbD4gSlNTdHJpbmc6OnRvRXhpc3RpbmdBdG9taWNTdHJpbmcoRXhlY1N0
YXRlKiBleGVjKSBjb25zdAorQUxXQVlTX0lOTElORSBSZWZQdHI8QXRvbVN0cmluZ0ltcGw+IEpT
U3RyaW5nOjp0b0V4aXN0aW5nQXRvbVN0cmluZyhFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiB7CiAg
ICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKQogICAgICAgICBSRUxFQVNFX0FTU0VSVCh2bSgpLT5o
ZWFwLmV4cGVjdERvZXNHQygpKTsKICAgICBpZiAoaXNSb3BlKCkpCi0gICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxjb25zdCBKU1JvcGVTdHJpbmcqPih0aGlzKS0+cmVzb2x2ZVJvcGVUb0V4aXN0
aW5nQXRvbWljU3RyaW5nKGV4ZWMpOwotICAgIGlmICh2YWx1ZUludGVybmFsKCkuaW1wbCgpLT5p
c0F0b21pYygpKQotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QXRvbWljU3RyaW5nSW1wbCo+
KHZhbHVlSW50ZXJuYWwoKS5pbXBsKCkpOwotICAgIHJldHVybiBBdG9taWNTdHJpbmdJbXBsOjps
b29rVXAodmFsdWVJbnRlcm5hbCgpLmltcGwoKSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxjb25zdCBKU1JvcGVTdHJpbmcqPih0aGlzKS0+cmVzb2x2ZVJvcGVUb0V4aXN0aW5nQXRvbVN0
cmluZyhleGVjKTsKKyAgICBpZiAodmFsdWVJbnRlcm5hbCgpLmltcGwoKS0+aXNBdG9tKCkpCisg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxBdG9tU3RyaW5nSW1wbCo+KHZhbHVlSW50ZXJuYWwo
KS5pbXBsKCkpOworICAgIHJldHVybiBBdG9tU3RyaW5nSW1wbDo6bG9va1VwKHZhbHVlSW50ZXJu
YWwoKS5pbXBsKCkpOwogfQogCiBpbmxpbmUgY29uc3QgU3RyaW5nJiBKU1N0cmluZzo6dmFsdWUo
RXhlY1N0YXRlKiBleGVjKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmgKaW5kZXggNzBlOWE3MWQwZGRiMDY0Y2MyNTVi
NGUzZTIyYTkwYWJkZWFmMzgyOC4uNWYwNzhkMmE1MDlkMmI0NDIwMGY3YTRhZjM4ODEyNDZjYjJk
NThhNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlN
YXBIYXNoVGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0
eU1hcEhhc2hUYWJsZS5oCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hUYWJs
ZS5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgotI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ0ltcGwuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9BdG9tU3RyaW5nSW1wbC5oPgogCiAKICNkZWZpbmUgRFVNUF9QUk9QRVJUWU1BUF9TVEFU
UyAwCkBAIC0yODgsNyArMjg4LDcgQEAgaW5saW5lIFByb3BlcnR5VGFibGU6OmNvbnN0X2l0ZXJh
dG9yIFByb3BlcnR5VGFibGU6OmVuZCgpIGNvbnN0CiBpbmxpbmUgUHJvcGVydHlUYWJsZTo6Zmlu
ZF9pdGVyYXRvciBQcm9wZXJ0eVRhYmxlOjpmaW5kKGNvbnN0IEtleVR5cGUmIGtleSkKIHsKICAg
ICBBU1NFUlQoa2V5KTsKLSAgICBBU1NFUlQoa2V5LT5pc0F0b21pYygpIHx8IGtleS0+aXNTeW1i
b2woKSk7CisgICAgQVNTRVJUKGtleS0+aXNBdG9tKCkgfHwga2V5LT5pc1N5bWJvbCgpKTsKICAg
ICB1bnNpZ25lZCBoYXNoID0gSWRlbnRpZmllclJlcEhhc2g6Omhhc2goa2V5KTsKIAogI2lmIERV
TVBfUFJPUEVSVFlNQVBfU1RBVFMKQEAgLTMxOCw3ICszMTgsNyBAQCBpbmxpbmUgUHJvcGVydHlU
YWJsZTo6ZmluZF9pdGVyYXRvciBQcm9wZXJ0eVRhYmxlOjpmaW5kKGNvbnN0IEtleVR5cGUmIGtl
eSkKIGlubGluZSBQcm9wZXJ0eVRhYmxlOjpWYWx1ZVR5cGUqIFByb3BlcnR5VGFibGU6OmdldChj
b25zdCBLZXlUeXBlJiBrZXkpCiB7CiAgICAgQVNTRVJUKGtleSk7Ci0gICAgQVNTRVJUKGtleS0+
aXNBdG9taWMoKSB8fCBrZXktPmlzU3ltYm9sKCkpOworICAgIEFTU0VSVChrZXktPmlzQXRvbSgp
IHx8IGtleS0+aXNTeW1ib2woKSk7CiAKICAgICBpZiAoIW1fa2V5Q291bnQpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UHJvcGVydHlOYW1lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5h
bWUuaAppbmRleCBlOTA1NTFiY2QxYjczZTVmNGU4NjQ2MTNhMTFiZjUxNmQ5MjFkYmFkLi5mZWI1
MmU2Y2YwYTg4MmMxOTBmNWY5OGU1ZWNjOTFmZTM2YWE4NWI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWUuaApAQCAtNjksOSArNjksOSBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBtX2ltcGw7CiAgICAgfQogCi0gICAgQXRvbWljU3RyaW5nSW1wbCog
cHVibGljTmFtZSgpIGNvbnN0CisgICAgQXRvbVN0cmluZ0ltcGwqIHB1YmxpY05hbWUoKSBjb25z
dAogICAgIHsKLSAgICAgICAgcmV0dXJuICghbV9pbXBsIHx8IG1faW1wbC0+aXNTeW1ib2woKSkg
PyBudWxscHRyIDogc3RhdGljX2Nhc3Q8QXRvbWljU3RyaW5nSW1wbCo+KG1faW1wbCk7CisgICAg
ICAgIHJldHVybiAoIW1faW1wbCB8fCBtX2ltcGwtPmlzU3ltYm9sKCkpID8gbnVsbHB0ciA6IHN0
YXRpY19jYXN0PEF0b21TdHJpbmdJbXBsKj4obV9pbXBsKTsKICAgICB9CiAKICAgICB2b2lkIGR1
bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TbWFsbFN0cmluZ3MuY3BwCmluZGV4IDBiNTQwNGY2ZTUyZTU4ZDgxNjdmNjNjYWY2YWVi
ZjdiMzZjZGI0ZGUuLmJmY2QwYjk2YmY4YWQwYTRlZWUwMWVlZmQ3NjUxODQ5YjA2NDU0MDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmNwcApAQCAt
NTEsNyArNTEsNyBAQCB2b2lkIFNtYWxsU3RyaW5nczo6aW5pdGlhbGl6ZUNvbW1vblN0cmluZ3Mo
Vk0mIHZtKQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaW5nbGVDaGFyYWN0ZXJTdHJp
bmdDb3VudDsgKytpKSB7CiAgICAgICAgIEFTU0VSVCghbV9zaW5nbGVDaGFyYWN0ZXJTdHJpbmdz
W2ldKTsKICAgICAgICAgY29uc3QgTENoYXIgc3RyaW5nW10gPSB7IHN0YXRpY19jYXN0PExDaGFy
PihpKSB9OwotICAgICAgICBtX3NpbmdsZUNoYXJhY3RlclN0cmluZ3NbaV0gPSBKU1N0cmluZzo6
Y3JlYXRlSGFzT3RoZXJPd25lcih2bSwgQXRvbWljU3RyaW5nSW1wbDo6YWRkKHN0cmluZywgMSku
cmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgIG1fc2luZ2xlQ2hhcmFjdGVyU3RyaW5nc1tpXSA9
IEpTU3RyaW5nOjpjcmVhdGVIYXNPdGhlck93bmVyKHZtLCBBdG9tU3RyaW5nSW1wbDo6YWRkKHN0
cmluZywgMSkucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgICAgIEFTU0VSVChtX25lZWRzVG9CZVZp
c2l0ZWQpOwogICAgIH0KIApAQCAtODgsMTIgKzg4LDEyIEBAIFJlZjxTdHJpbmdJbXBsPiBTbWFs
bFN0cmluZ3M6OnNpbmdsZUNoYXJhY3RlclN0cmluZ1JlcCh1bnNpZ25lZCBjaGFyIGNoYXJhY3Rl
cikKICAgICBpZiAoTElLRUxZKG1faXNJbml0aWFsaXplZCkpCiAgICAgICAgIHJldHVybiAqY29u
c3RfY2FzdDxTdHJpbmdJbXBsKj4obV9zaW5nbGVDaGFyYWN0ZXJTdHJpbmdzW2NoYXJhY3Rlcl0t
PnRyeUdldFZhbHVlSW1wbCgpKTsKICAgICBjb25zdCBMQ2hhciBzdHJpbmdbXSA9IHsgc3RhdGlj
X2Nhc3Q8TENoYXI+KGNoYXJhY3RlcikgfTsKLSAgICByZXR1cm4gQXRvbWljU3RyaW5nSW1wbDo6
YWRkKHN0cmluZywgMSkucmVsZWFzZU5vbk51bGwoKTsKKyAgICByZXR1cm4gQXRvbVN0cmluZ0lt
cGw6OmFkZChzdHJpbmcsIDEpLnJlbGVhc2VOb25OdWxsKCk7CiB9CiAKIHZvaWQgU21hbGxTdHJp
bmdzOjppbml0aWFsaXplKFZNKiB2bSwgSlNTdHJpbmcqJiBzdHJpbmcsIGNvbnN0IGNoYXIqIHZh
bHVlKQogewotICAgIHN0cmluZyA9IEpTU3RyaW5nOjpjcmVhdGUoKnZtLCBBdG9taWNTdHJpbmdJ
bXBsOjphZGQodmFsdWUpLnJlbGVhc2VOb25OdWxsKCkpOworICAgIHN0cmluZyA9IEpTU3RyaW5n
OjpjcmVhdGUoKnZtLCBBdG9tU3RyaW5nSW1wbDo6YWRkKHZhbHVlKS5yZWxlYXNlTm9uTnVsbCgp
KTsKICAgICBBU1NFUlQobV9uZWVkc1RvQmVWaXNpdGVkKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uY3BwCmluZGV4IDI4NjFhMTJkYzJlZTM5OGM1MjMyZjk5ZmJiOWMyZTk4NjBk
NGZiYWMuLmIxZTNmZjM5NTQzNDFlZTRmMTE0Njk4NjYwYjk4MzdmMzA5MGJjYzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQAogI2luY2x1ZGUg
PHd0Zi9TaW1wbGVTdGF0cy5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgog
I2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJp
bmdUYWJsZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmdUYWJsZS5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5Lmg+CiAKICNpZiBFTkFCTEUoQ19MT09QKQpAQCAt
MjkyLDcgKzI5Miw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkK
ICAgICAsIHRvcEVudHJ5RnJhbWUobnVsbHB0cikKICAgICAsIHRvcENhbGxGcmFtZShDYWxsRnJh
bWU6Om5vQ2FsbGVyKCkpCiAgICAgLCBwcm9taXNlRGVmZXJyZWRUaW1lcihzdGQ6Om1ha2VfdW5p
cXVlPFByb21pc2VEZWZlcnJlZFRpbWVyPigqdGhpcykpCi0gICAgLCBtX2F0b21pY1N0cmluZ1Rh
YmxlKHZtVHlwZSA9PSBEZWZhdWx0ID8gVGhyZWFkOjpjdXJyZW50KCkuYXRvbWljU3RyaW5nVGFi
bGUoKSA6IG5ldyBBdG9taWNTdHJpbmdUYWJsZSkKKyAgICAsIG1fYXRvbVN0cmluZ1RhYmxlKHZt
VHlwZSA9PSBEZWZhdWx0ID8gVGhyZWFkOjpjdXJyZW50KCkuYXRvbVN0cmluZ1RhYmxlKCkgOiBu
ZXcgQXRvbVN0cmluZ1RhYmxlKQogICAgICwgcHJvcGVydHlOYW1lcyhudWxscHRyKQogICAgICwg
ZW1wdHlMaXN0KG5ldyBBcmdMaXN0KQogICAgICwgbWFjaGluZUNvZGVCeXRlc1BlckJ5dGVjb2Rl
V29yZEZvckJhc2VsaW5lSklUKHN0ZDo6bWFrZV91bmlxdWU8U2ltcGxlU3RhdHM+KCkpCkBAIC0z
MjksNyArMzI5LDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQog
CiAgICAgLy8gTmVlZCB0byBiZSBjYXJlZnVsIHRvIGtlZXAgZXZlcnl0aGluZyBjb25zaXN0ZW50
IGhlcmUKICAgICBKU0xvY2tIb2xkZXIgbG9jayh0aGlzKTsKLSAgICBBdG9taWNTdHJpbmdUYWJs
ZSogZXhpc3RpbmdFbnRyeUF0b21pY1N0cmluZ1RhYmxlID0gVGhyZWFkOjpjdXJyZW50KCkuc2V0
Q3VycmVudEF0b21pY1N0cmluZ1RhYmxlKG1fYXRvbWljU3RyaW5nVGFibGUpOworICAgIEF0b21T
dHJpbmdUYWJsZSogZXhpc3RpbmdFbnRyeUF0b21TdHJpbmdUYWJsZSA9IFRocmVhZDo6Y3VycmVu
dCgpLnNldEN1cnJlbnRBdG9tU3RyaW5nVGFibGUobV9hdG9tU3RyaW5nVGFibGUpOwogICAgIHN0
cnVjdHVyZVN0cnVjdHVyZS5zZXQoKnRoaXMsIFN0cnVjdHVyZTo6Y3JlYXRlU3RydWN0dXJlKCp0
aGlzKSk7CiAgICAgc3RydWN0dXJlUmFyZURhdGFTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBTdHJ1Y3R1
cmVSYXJlRGF0YTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHN0
cmluZ1N0cnVjdHVyZS5zZXQoKnRoaXMsIEpTU3RyaW5nOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMs
IDAsIGpzTnVsbCgpKSk7CkBAIC0zOTMsNyArMzkzLDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUs
IEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICAgICBzZW50aW5lbFNldEJ1Y2tldCgpOwogICAgIH0K
IAotICAgIFRocmVhZDo6Y3VycmVudCgpLnNldEN1cnJlbnRBdG9taWNTdHJpbmdUYWJsZShleGlz
dGluZ0VudHJ5QXRvbWljU3RyaW5nVGFibGUpOworICAgIFRocmVhZDo6Y3VycmVudCgpLnNldEN1
cnJlbnRBdG9tU3RyaW5nVGFibGUoZXhpc3RpbmdFbnRyeUF0b21TdHJpbmdUYWJsZSk7CiAgICAg
CiAjaWYgIUVOQUJMRShDX0xPT1ApCiAgICAgaW5pdGlhbGl6ZUhvc3RDYWxsUmV0dXJuVmFsdWUo
KTsgLy8gVGhpcyBpcyBuZWVkZWQgdG8gY29udmluY2UgdGhlIGxpbmtlciBub3QgdG8gZHJvcCBo
b3N0IGNhbGwgcmV0dXJuIHN1cHBvcnQuCkBAIC01NDEsNyArNTQxLDcgQEAgVk06On5WTSgpCiAK
ICAgICBkZWxldGUgcHJvcGVydHlOYW1lczsKICAgICBpZiAodm1UeXBlICE9IERlZmF1bHQpCi0g
ICAgICAgIGRlbGV0ZSBtX2F0b21pY1N0cmluZ1RhYmxlOworICAgICAgICBkZWxldGUgbV9hdG9t
U3RyaW5nVGFibGU7CiAKICAgICBkZWxldGUgY2xpZW50RGF0YTsKICAgICBkZWxldGUgbV9yZWdF
eHBDYWNoZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IGVlZTE1NWM0YjI5N2Q5
MjI5ZGJhZjNmZGNjOWFiMjdkOWZiMGE4YTIuLjU2NmUwMTNmM2JiNTViYWMzYTQxYjgzYmQ1ZTNh
YmYxNzdkMzY2YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtNTU0LDcgKzU1
NCw3IEBAIHB1YmxpYzoKICAgICBKU0NlbGwqIGN1cnJlbnRseURlc3RydWN0aW5nQ2FsbGJhY2tP
YmplY3Q7CiAgICAgY29uc3QgQ2xhc3NJbmZvKiBjdXJyZW50bHlEZXN0cnVjdGluZ0NhbGxiYWNr
T2JqZWN0Q2xhc3NJbmZvIHsgbnVsbHB0ciB9OwogCi0gICAgQXRvbWljU3RyaW5nVGFibGUqIG1f
YXRvbWljU3RyaW5nVGFibGU7CisgICAgQXRvbVN0cmluZ1RhYmxlKiBtX2F0b21TdHJpbmdUYWJs
ZTsKICAgICBXVEY6OlN5bWJvbFJlZ2lzdHJ5IG1fc3ltYm9sUmVnaXN0cnk7CiAgICAgQ29tbW9u
SWRlbnRpZmllcnMqIHByb3BlcnR5TmFtZXM7CiAgICAgY29uc3QgQXJnTGlzdCogZW1wdHlMaXN0
OwpAQCAtNTY2LDcgKzU2Niw3IEBAIHB1YmxpYzoKICAgICBXZWFrR0NNYXA8U3RyaW5nSW1wbCos
IEpTU3RyaW5nLCBQdHJIYXNoPFN0cmluZ0ltcGwqPj4gc3RyaW5nQ2FjaGU7CiAgICAgU3Ryb25n
PEpTU3RyaW5nPiBsYXN0Q2FjaGVkU3RyaW5nOwogCi0gICAgQXRvbWljU3RyaW5nVGFibGUqIGF0
b21pY1N0cmluZ1RhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9hdG9taWNTdHJpbmdUYWJsZTsgfQor
ICAgIEF0b21TdHJpbmdUYWJsZSogYXRvbVN0cmluZ1RhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9h
dG9tU3RyaW5nVGFibGU7IH0KICAgICBXVEY6OlN5bWJvbFJlZ2lzdHJ5JiBzeW1ib2xSZWdpc3Ry
eSgpIHsgcmV0dXJuIG1fc3ltYm9sUmVnaXN0cnk7IH0KIAogICAgIFN0cnVjdHVyZSogc2V0SXRl
cmF0b3JTdHJ1Y3R1cmUoKQpAQCAtODY2LDcgKzg2Niw3IEBAIHB1YmxpYzoKICAgICBXYXRjaHBv
aW50U2V0KiBlbnN1cmVXYXRjaHBvaW50U2V0Rm9ySW1wdXJlUHJvcGVydHkoY29uc3QgSWRlbnRp
ZmllciYpOwogICAgIHZvaWQgcmVnaXN0ZXJXYXRjaHBvaW50Rm9ySW1wdXJlUHJvcGVydHkoY29u
c3QgSWRlbnRpZmllciYsIFdhdGNocG9pbnQqKTsKICAgICAKLSAgICAvLyBGSVhNRTogVXNlIEF0
b21pY1N0cmluZyBvbmNlIGl0IGdvdCBtZXJnZWQgd2l0aCBJZGVudGlmaWVyLgorICAgIC8vIEZJ
WE1FOiBVc2UgQXRvbVN0cmluZyBvbmNlIGl0IGdvdCBtZXJnZWQgd2l0aCBJZGVudGlmaWVyLgog
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgYWRkSW1wdXJlUHJvcGVydHkoY29uc3QgU3RyaW5n
Jik7CiAgICAgCiAgICAgSW5saW5lV2F0Y2hwb2ludFNldCYgcHJpbWl0aXZlR2lnYWNhZ2VFbmFi
bGVkKCkgeyByZXR1cm4gbV9wcmltaXRpdmVHaWdhY2FnZUVuYWJsZWQ7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNb2R1bGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1vZHVsZS5jcHAKaW5k
ZXggNzE5MDkwODRhM2M4ZjViNDY4ZDc4MjBmNzRiMWZmYmZkMjQ3MmE1Yi4uM2FiYmNmNTg0N2Y5
NDM4NWVkYThlNTBlOGIyNmYyMjk1MjFlYWFhNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1vZHVsZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1vZHVsZS5jcHAKQEAgLTgyLDcgKzgyLDcg
QEAgdm9pZCBKU1dlYkFzc2VtYmx5TW9kdWxlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAgICAg
Zm9yIChhdXRvJiBleHAgOiBtb2R1bGVJbmZvcm1hdGlvbi5leHBvcnRzKSB7CiAgICAgICAgIGF1
dG8gb2Zmc2V0ID0gZXhwb3J0U3ltYm9sVGFibGUtPnRha2VOZXh0U2NvcGVPZmZzZXQoTm9Mb2Nr
aW5nTmVjZXNzYXJ5KTsKICAgICAgICAgU3RyaW5nIGZpZWxkID0gU3RyaW5nOjpmcm9tVVRGOChl
eHAuZmllbGQpOwotICAgICAgICBleHBvcnRTeW1ib2xUYWJsZS0+c2V0KE5vTG9ja2luZ05lY2Vz
c2FyeSwgQXRvbWljU3RyaW5nKGZpZWxkKS5pbXBsKCksIFN5bWJvbFRhYmxlRW50cnkoVmFyT2Zm
c2V0KG9mZnNldCkpKTsKKyAgICAgICAgZXhwb3J0U3ltYm9sVGFibGUtPnNldChOb0xvY2tpbmdO
ZWNlc3NhcnksIEF0b21TdHJpbmcoZmllbGQpLmltcGwoKSwgU3ltYm9sVGFibGVFbnRyeShWYXJP
ZmZzZXQob2Zmc2V0KSkpOwogICAgIH0KIAogICAgIG1fZXhwb3J0U3ltYm9sVGFibGUuc2V0KHZt
LCB0aGlzLCBleHBvcnRTeW1ib2xUYWJsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCAyNjM0NGFjNzI1YWM5M2QwMmVhYjkzYzQ0ZTVlY2YzZTNkYWZjOGRk
Li4wNzdhZmJmYjFkZDRjOTZjMGE4ZTllODc5NTE0OGQ5ODFmZmMwMGRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XVEYv
V1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTc5LDcgKzc5LDcgQEAKIAkJNUNDMEVF
OEEyMTYyQkMyMjAwQTFBODQyIC8qIE5TVVJMRXh0cmFzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDMEVFODgyMTYyQkMyMjAwQTFBODQyIC8qIE5T
VVJMRXh0cmFzLm1tICovOyB9OwogCQk1RkFEM0FFMjIxQjk2MzY2MDBCRUUxNzggLyogVVJMSGVs
cGVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
RkFEM0FFMTIxQjk2MzY2MDBCRUUxNzggLyogVVJMSGVscGVycy5jcHAgKi87IH07CiAJCTcwQTk5
M0ZFMUFENzE1MTMwMEZBNjE1QiAvKiBTeW1ib2xSZWdpc3RyeS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEE5OTNGQzFBRDcxNTEzMDBGQTYxNUIg
LyogU3ltYm9sUmVnaXN0cnkuY3BwICovOyB9OwotCQk3MEVDQTYwRDFCMDI0MjY4MDA0NDk3Mzkg
LyogQXRvbWljU3RyaW5nSW1wbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3MEVDQTYwQTFCMDI0MjY4MDA0NDk3MzkgLyogQXRvbWljU3RyaW5nSW1w
bC5jcHAgKi87IH07CisJCTcwRUNBNjBEMUIwMjQyNjgwMDQ0OTczOSAvKiBBdG9tU3RyaW5nSW1w
bC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEVD
QTYwQTFCMDI0MjY4MDA0NDk3MzkgLyogQXRvbVN0cmluZ0ltcGwuY3BwICovOyB9OwogCQk3QTA1
MDkzRjFGQjlEQ0M1MDBCMzNGQjggLyogSlNPTlZhbHVlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTA1MDkzRTFGQjlEQ0M1MDBCMzNGQjggLyog
SlNPTlZhbHVlcy5jcHAgKi87IH07CiAJCTdBNkVCQTM0MjA3NDZDMzQwMDRGOUM0NCAvKiBNYWNo
U2VuZFJpZ2h0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdBNkVCQTMzMjA3NDZDMzQwMDRGOUM0NCAvKiBNYWNoU2VuZFJpZ2h0LmNwcCAqLzsgfTsK
IAkJN0FGMDIzQjUyMDYxRTE3MDAwQThFRkQ2IC8qIFByb2Nlc3NQcml2aWxlZ2UuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGMDIzQjQyMDYxRTE2
RjAwQThFRkQ2IC8qIFByb2Nlc3NQcml2aWxlZ2UuY3BwICovOyB9OwpAQCAtOTEsNyArOTEsNyBA
QAogCQk5M0I1QjQ0RTIyMTNENjE2MDA0QjdBQTcgLyogSGV4TnVtYmVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjVCNDREMjIxM0Q2MTYwMDRC
N0FBNyAvKiBIZXhOdW1iZXIuY3BwICovOyB9OwogCQk5M0I1QjQ1MTIyMTcxRUVBMDA0QjdBQTcg
LyogTG9nZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDkzQjVCNDUwMjIxNzFFRTkwMDRCN0FBNyAvKiBMb2dnZXIuY3BwICovOyB9OwogCQk5M0Yx
OTkzRTE5RDc5NThEMDBDMjM5MEIgLyogU3RyaW5nVmlldy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0YxOTkzRDE5RDc5NThEMDBDMjM5MEIgLyog
U3RyaW5nVmlldy5jcHAgKi87IH07Ci0JCTlCQzcwRjA1MTc2QzM3OUQwMDEwMURFQyAvKiBBdG9t
aWNTdHJpbmdUYWJsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5QkM3MEYwNDE3NkMzNzlEMDAxMDFERUMgLyogQXRvbWljU3RyaW5nVGFibGUuY3Bw
ICovOyB9OworCQk5QkM3MEYwNTE3NkMzNzlEMDAxMDFERUMgLyogQXRvbVN0cmluZ1RhYmxlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCQzcwRjA0
MTc2QzM3OUQwMDEwMURFQyAvKiBBdG9tU3RyaW5nVGFibGUuY3BwICovOyB9OwogCQlBMzJEOEZB
NTIxRkZGQUI0MDA3ODA2NjIgLyogVGhyZWFkaW5nUE9TSVguY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTMyRDhGQTQyMUZGRkFCNDAwNzgwNjYyIC8q
IFRocmVhZGluZ1BPU0lYLmNwcCAqLzsgfTsKIAkJQTMzMUQ5NUIyMUYyNDk5MjAwOUYwMkFBIC8q
IEZpbGVTeXN0ZW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTMzMUQ5NUEyMUYyNDk5MjAwOUYwMkFBIC8qIEZpbGVTeXN0ZW0uY3BwICovOyB9Owog
CQlBMzMxRDk1RDIxRjI0OUU0MDA5RjAyQUEgLyogRmlsZVN5c3RlbUNGLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzMzFEOTVDMjFGMjQ5RTQwMDlG
MDJBQSAvKiBGaWxlU3lzdGVtQ0YuY3BwICovOyB9OwpAQCAtMTA2LDcgKzEwNiw3IEBACiAJCUEz
RUU1QzQwMjFGRkFDQTIwMEZBQkQ2MSAvKiBTY2hlZHVsZVBhaXJNYWMubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBM0VFNUMzRjIxRkZBQ0EyMDBGQUJE
NjEgLyogU2NoZWR1bGVQYWlyTWFjLm1tICovOyB9OwogCQlBNUJBMTVGMzE4MjQzM0E5MDBBODJF
NjkgLyogU3RyaW5nQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNUJBMTVGMjE4MjQzM0E5MDBBODJFNjkgLyogU3RyaW5nQ29jb2EubW0gKi87
IH07CiAJCUE1QkExNUY1MTgyNDM0ODAwMEE4MkU2OSAvKiBTdHJpbmdJbXBsQ29jb2EubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUJBMTVGNDE4MjQz
NDgwMDBBODJFNjkgLyogU3RyaW5nSW1wbENvY29hLm1tICovOyB9OwotCQlBNUJBMTVGQTE4MjQz
NUE2MDBBODJFNjkgLyogQXRvbWljU3RyaW5nSW1wbENGLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QkExNUY3MTgyNDM1QTYwMEE4MkU2OSAvKiBB
dG9taWNTdHJpbmdJbXBsQ0YuY3BwICovOyB9OworCQlBNUJBMTVGQTE4MjQzNUE2MDBBODJFNjkg
LyogQXRvbVN0cmluZ0ltcGxDRi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNUJBMTVGNzE4MjQzNUE2MDBBODJFNjkgLyogQXRvbVN0cmluZ0ltcGxD
Ri5jcHAgKi87IH07CiAJCUE1QkExNUZCMTgyNDM1QTYwMEE4MkU2OSAvKiBTdHJpbmdDRi5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUJBMTVGODE4
MjQzNUE2MDBBODJFNjkgLyogU3RyaW5nQ0YuY3BwICovOyB9OwogCQlBNUJBMTVGQzE4MjQzNUE2
MDBBODJFNjkgLyogU3RyaW5nSW1wbENGLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE1QkExNUY5MTgyNDM1QTYwMEE4MkU2OSAvKiBTdHJpbmdJbXBs
Q0YuY3BwICovOyB9OwogCQlBNzQ4NzQ1MjE3QTBCREFFMDBGQTA0Q0IgLyogU2l4Q2hhcmFjdGVy
SGFzaC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
NzQ4NzQ0RjE3QTBCREFFMDBGQTA0Q0IgLyogU2l4Q2hhcmFjdGVySGFzaC5jcHAgKi87IH07CkBA
IC0xMzksNyArMTM5LDcgQEAKIAkJQThBNDc0MjExNTFBODI1QjAwNDEyM0ZGIC8qIFNIQTEuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDczMDgx
NTFBODI1QjAwNDEyM0ZGIC8qIFNIQTEuY3BwICovOyB9OwogCQlBOEE0NzQyNTE1MUE4MjVCMDA0
MTIzRkYgLyogU2l6ZUxpbWl0cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBOEE0NzMwQzE1MUE4MjVCMDA0MTIzRkYgLyogU2l6ZUxpbWl0cy5jcHAg
Ki87IH07CiAJCUE4QTQ3NDI3MTUxQTgyNUIwMDQxMjNGRiAvKiBTdGFja0JvdW5kcy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzMwRTE1MUE4
MjVCMDA0MTIzRkYgLyogU3RhY2tCb3VuZHMuY3BwICovOyB9OwotCQlBOEE0NzQzNTE1MUE4MjVC
MDA0MTIzRkYgLyogQXRvbWljU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MzFEMTUxQTgyNUIwMDQxMjNGRiAvKiBBdG9taWNTdHJp
bmcuY3BwICovOyB9OworCQlBOEE0NzQzNTE1MUE4MjVCMDA0MTIzRkYgLyogQXRvbVN0cmluZy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzMx
RDE1MUE4MjVCMDA0MTIzRkYgLyogQXRvbVN0cmluZy5jcHAgKi87IH07CiAJCUE4QTQ3NDM5MTUx
QTgyNUIwMDQxMjNGRiAvKiBDU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MzIxMTUxQTgyNUIwMDQxMjNGRiAvKiBDU3RyaW5nLmNw
cCAqLzsgfTsKIAkJQThBNDc0M0MxNTFBODI1QjAwNDEyM0ZGIC8qIFN0cmluZ0J1aWxkZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDczMjQx
NTFBODI1QjAwNDEyM0ZGIC8qIFN0cmluZ0J1aWxkZXIuY3BwICovOyB9OwogCQlBOEE0NzQ0MDE1
MUE4MjVCMDA0MTIzRkYgLyogU3RyaW5nSW1wbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzMyODE1MUE4MjVCMDA0MTIzRkYgLyogU3RyaW5n
SW1wbC5jcHAgKi87IH07CkBAIC0zOTgsNyArMzk4LDcgQEAKIAkJNjU0MUNBRjQxNjMwREIyNjAw
NkQwREVDIC8qIENvcHlXVEZIZWFkZXJzLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZp
ZzsgcGF0aCA9IENvcHlXVEZIZWFkZXJzLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3MEE5OTNGQzFBRDcxNTEzMDBGQTYxNUIgLyogU3ltYm9sUmVnaXN0cnkuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3ltYm9sUmVnaXN0cnkuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MEE5OTNGRDFBRDcxNTEzMDBGQTYxNUIgLyog
U3ltYm9sUmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3ltYm9s
UmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNzBFQ0E2MEExQjAyNDI2
ODAwNDQ5NzM5IC8qIEF0b21pY1N0cmluZ0ltcGwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQXRvbWljU3RyaW5nSW1wbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTcwRUNBNjBBMUIwMjQyNjgwMDQ0OTczOSAvKiBBdG9tU3RyaW5nSW1wbC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdG9tU3RyaW5nSW1wbC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwRUNBNjBCMUIwMjQyNjgwMDQ0OTczOSAv
KiBTeW1ib2xJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN5bWJvbElt
cGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzBFQ0E2MEMxQjAyNDI2ODAwNDQ5
NzM5IC8qIFVuaXF1ZWRTdHJpbmdJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFVuaXF1ZWRTdHJpbmdJbXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc5
MDM4RTA1MjI0QjA1QTcwMDRDMDczOCAvKiBTcGFubmluZ1RyZWUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU3Bhbm5pbmdUcmVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC00NDYsOCArNDQ2LDggQEAKIAkJOTc0Q0ZDOEQxNkE0RjMyNzAwNkQ1NDA0IC8qIFdl
YWtQdHIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vha1B0ci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTZCMTc4NDFFQkE0NDFDMDA3RTEwRUIgLyogRGVi
dWdVdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVidWdVdGls
aXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUI2N0YzRjEyMjI4RDUzMTAw
MzBERTlDIC8qIFdlYWtIYXNoU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYWtIYXNoU2V0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTlCQzcwRjA0MTc2QzM3OUQwMDEwMURFQyAvKiBB
dG9taWNTdHJpbmdUYWJsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBBdG9taWNTdHJpbmdUYWJsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTlC
RDhGNDBBMTc2QzJBRDgwMDAyRDg2NSAvKiBBdG9taWNTdHJpbmdUYWJsZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBdG9taWNTdHJpbmdUYWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5
QkM3MEYwNDE3NkMzNzlEMDAxMDFERUMgLyogQXRvbVN0cmluZ1RhYmxlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF0b21TdHJpbmdUYWJsZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTlCRDhGNDBBMTc2QzJBRDgwMDAyRDg2NSAvKiBBdG9tU3Ry
aW5nVGFibGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXRvbVN0cmluZ1RhYmxlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTlDNjdDNTQyNTg5MzQ4RTI4NUI0OTY5OSAvKiBJbmRleGVkQ29u
dGFpbmVySXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5kZXhl
ZENvbnRhaW5lckl0ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExQjg5
Qjg3MjIxRTAwMEYwMEVCNENFQSAvKiBTREtWYXJpYW50LnhjY29uZmlnICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dC54Y2NvbmZpZzsgcGF0aCA9IFNES1ZhcmlhbnQueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUEzMEQ0MTJDMUYwREUwQkEwMEI3MTk1NCAvKiBTb2Z0TGlua2luZy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb2Z0TGlua2luZy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNDczLDcgKzQ3Myw3IEBACiAJCUE1MDk4QjAxMUMxNkE0Rjkw
MDA4Nzc5NyAvKiBTZWN1cml0eVNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTZWN1cml0eVNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNUJBMTVGMjE4
MjQzM0E5MDBBODJFNjkgLyogU3RyaW5nQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBTdHJpbmdDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTVCQTE1RjQxODI0MzQ4MDAwQTgyRTY5IC8qIFN0cmluZ0ltcGxDb2NvYS5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFN0cmluZ0ltcGxDb2NvYS5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTVCQTE1RjcxODI0MzVBNjAwQTgyRTY5IC8q
IEF0b21pY1N0cmluZ0ltcGxDRi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBBdG9taWNTdHJpbmdJbXBsQ0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBNUJBMTVGNzE4MjQzNUE2MDBBODJFNjkgLyogQXRvbVN0cmluZ0ltcGxDRi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdG9tU3RyaW5nSW1wbENGLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTVCQTE1RjgxODI0MzVBNjAwQTgyRTY5IC8qIFN0
cmluZ0NGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cmluZ0NG
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTVCQTE1RjkxODI0MzVBNjAwQTgy
RTY5IC8qIFN0cmluZ0ltcGxDRi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTdHJpbmdJbXBsQ0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzBE
QTA4MjE3OTlGMDREMDA1MjlBOUIgLyogSW5zZXJ0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEluc2VydGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
NTg5LDEwICs1ODksMTAgQEAKIAkJQThBNDczMTQxNTFBODI1QjAwNDEyM0ZGIC8qIEhhc2hlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIYXNoZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDczMUExNTFBODI1QjAwNDEyM0ZGIC8qIFNldEZvclNjb3Bl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNldEZvclNjb3BlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3MzFDMTUxQTgyNUIwMDQxMjNGRiAvKiBBU0NJ
SUZhc3RQYXRoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFTQ0lJRmFzdFBh
dGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQThBNDczMUQxNTFBODI1QjAwNDEy
M0ZGIC8qIEF0b21pY1N0cmluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBBdG9taWNTdHJpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBOEE0
NzMxRTE1MUE4MjVCMDA0MTIzRkYgLyogQXRvbWljU3RyaW5nLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEF0b21pY1N0cmluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlBOEE0NzMxRjE1MUE4MjVCMDA0MTIzRkYgLyogQXRvbWljU3RyaW5nSGFzaC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdG9taWNTdHJpbmdIYXNoLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE4QTQ3MzIwMTUxQTgyNUIwMDQxMjNGRiAvKiBBdG9taWNT
dHJpbmdJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF0b21pY1N0cmlu
Z0ltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQThBNDczMUQxNTFBODI1QjAw
NDEyM0ZGIC8qIEF0b21TdHJpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQXRvbVN0cmluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE4QTQ3
MzFFMTUxQTgyNUIwMDQxMjNGRiAvKiBBdG9tU3RyaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEF0b21TdHJpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QThBNDczMUYxNTFBODI1QjAwNDEyM0ZGIC8qIEF0b21TdHJpbmdIYXNoLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF0b21TdHJpbmdIYXNoLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUE4QTQ3MzIwMTUxQTgyNUIwMDQxMjNGRiAvKiBBdG9tU3RyaW5nSW1wbC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdG9tU3RyaW5nSW1wbC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEE0NzMyMTE1MUE4MjVCMDA0MTIzRkYgLyogQ1N0
cmluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU3RyaW5nLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDczMjIxNTFBODI1QjAwNDEyM0ZG
IC8qIENTdHJpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1N0cmluZy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEE0NzMyMzE1MUE4MjVCMDA0MTIzRkYg
LyogU3RyaW5nQnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmlu
Z0J1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODQyLDcgKzg0Miw3IEBA
CiAJCUE1QkExNUY2MTgyNDM1OUUwMEE4MkU2OSAvKiBjZiAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJQTVCQTE1RjcxODI0MzVBNjAwQTgyRTY5IC8qIEF0
b21pY1N0cmluZ0ltcGxDRi5jcHAgKi8sCisJCQkJQTVCQTE1RjcxODI0MzVBNjAwQTgyRTY5IC8q
IEF0b21TdHJpbmdJbXBsQ0YuY3BwICovLAogCQkJCUE1QkExNUY4MTgyNDM1QTYwMEE4MkU2OSAv
KiBTdHJpbmdDRi5jcHAgKi8sCiAJCQkJQTVCQTE1RjkxODI0MzVBNjAwQTgyRTY5IC8qIFN0cmlu
Z0ltcGxDRi5jcHAgKi8sCiAJCQkJOTM5MzRCRDQxOEExRjE2OTAwRDBENkExIC8qIFN0cmluZ1Zp
ZXdDRi5jcHAgKi8sCkBAIC0xMjY4LDEzICsxMjY4LDEzIEBACiAJCQkJQThBNDczMUMxNTFBODI1
QjAwNDEyM0ZGIC8qIEFTQ0lJRmFzdFBhdGguaCAqLywKIAkJCQlDNkYwNTA3OTBEOUM0MzJBOTkw
ODVFNzUgLyogQVNDSUlMaXRlcmFsLmNwcCAqLywKIAkJCQkzODIwMjlFMjQ2Qzg0QjAwOTlGRDY3
NjQgLyogQVNDSUlMaXRlcmFsLmggKi8sCi0JCQkJQThBNDczMUQxNTFBODI1QjAwNDEyM0ZGIC8q
IEF0b21pY1N0cmluZy5jcHAgKi8sCi0JCQkJQThBNDczMUUxNTFBODI1QjAwNDEyM0ZGIC8qIEF0
b21pY1N0cmluZy5oICovLAotCQkJCUE4QTQ3MzFGMTUxQTgyNUIwMDQxMjNGRiAvKiBBdG9taWNT
dHJpbmdIYXNoLmggKi8sCi0JCQkJNzBFQ0E2MEExQjAyNDI2ODAwNDQ5NzM5IC8qIEF0b21pY1N0
cmluZ0ltcGwuY3BwICovLAotCQkJCUE4QTQ3MzIwMTUxQTgyNUIwMDQxMjNGRiAvKiBBdG9taWNT
dHJpbmdJbXBsLmggKi8sCi0JCQkJOUJDNzBGMDQxNzZDMzc5RDAwMTAxREVDIC8qIEF0b21pY1N0
cmluZ1RhYmxlLmNwcCAqLywKLQkJCQk5QkQ4RjQwQTE3NkMyQUQ4MDAwMkQ4NjUgLyogQXRvbWlj
U3RyaW5nVGFibGUuaCAqLywKKwkJCQlBOEE0NzMxRDE1MUE4MjVCMDA0MTIzRkYgLyogQXRvbVN0
cmluZy5jcHAgKi8sCisJCQkJQThBNDczMUUxNTFBODI1QjAwNDEyM0ZGIC8qIEF0b21TdHJpbmcu
aCAqLywKKwkJCQlBOEE0NzMxRjE1MUE4MjVCMDA0MTIzRkYgLyogQXRvbVN0cmluZ0hhc2guaCAq
LywKKwkJCQk3MEVDQTYwQTFCMDI0MjY4MDA0NDk3MzkgLyogQXRvbVN0cmluZ0ltcGwuY3BwICov
LAorCQkJCUE4QTQ3MzIwMTUxQTgyNUIwMDQxMjNGRiAvKiBBdG9tU3RyaW5nSW1wbC5oICovLAor
CQkJCTlCQzcwRjA0MTc2QzM3OUQwMDEwMURFQyAvKiBBdG9tU3RyaW5nVGFibGUuY3BwICovLAor
CQkJCTlCRDhGNDBBMTc2QzJBRDgwMDAyRDg2NSAvKiBBdG9tU3RyaW5nVGFibGUuaCAqLywKIAkJ
CQk4MTM0MDEzNjE1QjA5MkZEMDAxRkYwQjggLyogQmFzZTY0LmNwcCAqLywKIAkJCQk4MTM0MDEz
NzE1QjA5MkZEMDAxRkYwQjggLyogQmFzZTY0LmggKi8sCiAJCQkJMEY4RjJCOUIxNzJGMjU5NDAw
N0RCREE1IC8qIENvbnZlcnNpb25Nb2RlLmggKi8sCkBAIC0xNTAzLDEwICsxNTAzLDEwIEBACiAJ
CQkJNDQyN0M1QUEyMUY2RDZDMzAwQTYxMkE0IC8qIEFTQ0lJQ1R5cGUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQzgwNUVGMzlFNUYxNDQ4MUE5NkQzOUZDIC8qIEFTQ0lJTGl0ZXJhbC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBOEE0NzM4NjE1MUE4MjVCMDA0MTIzRkYgLyogQXNzZXJ0aW9ucy5j
cHAgaW4gU291cmNlcyAqLywKLQkJCQlBOEE0NzQzNTE1MUE4MjVCMDA0MTIzRkYgLyogQXRvbWlj
U3RyaW5nLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTcwRUNBNjBEMUIwMjQyNjgwMDQ0OTczOSAv
KiBBdG9taWNTdHJpbmdJbXBsLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUE1QkExNUZBMTgyNDM1
QTYwMEE4MkU2OSAvKiBBdG9taWNTdHJpbmdJbXBsQ0YuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJ
OUJDNzBGMDUxNzZDMzc5RDAwMTAxREVDIC8qIEF0b21pY1N0cmluZ1RhYmxlLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUE4QTQ3NDM1MTUxQTgyNUIwMDQxMjNGRiAvKiBBdG9tU3RyaW5nLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTcwRUNBNjBEMUIwMjQyNjgwMDQ0OTczOSAvKiBBdG9tU3RyaW5n
SW1wbC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBNUJBMTVGQTE4MjQzNUE2MDBBODJFNjkgLyog
QXRvbVN0cmluZ0ltcGxDRi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5QkM3MEYwNTE3NkMzNzlE
MDAxMDFERUMgLyogQXRvbVN0cmluZ1RhYmxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0Njk0
MTlEMTZFQUIxMEEwMDI0RTE0NiAvKiBBdXRvZHJhaW5lZFBvb2wuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEY0M0Q4RjExREI1QUREQzAwMTA4RkI2IC8qIEF1dG9tYXRpY1RocmVhZC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk4MTM0MDEzODE1QjA5MkZEMDAxRkYwQjggLyogQmFzZTY0LmNwcCBp
biBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQmxvb21GaWx0ZXIuaCBi
L1NvdXJjZS9XVEYvd3RmL0Jsb29tRmlsdGVyLmgKaW5kZXggZWRhOTIxMGYyNWVjMTgzYTZkMjQ4
MTcyNDFiY2NhYjZlYTlhZmM1NS4uMTVkMWZkZDkwZTk2NDI5MmEzYmQyZjM1NzYwNDI5YzVkMDVj
MTIyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQmxvb21GaWx0ZXIuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9CbG9vbUZpbHRlci5oCkBAIC0yNiw3ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UK
IAogI2luY2x1ZGUgPGFycmF5PgotI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKQEAg
LTU1LDkgKzU1LDkgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgY2xlYXIoKTsKIAotICAgIHZv
aWQgYWRkKGNvbnN0IEF0b21pY1N0cmluZyYgc3RyaW5nKSB7IGFkZChzdHJpbmcuaW1wbCgpLT5l
eGlzdGluZ0hhc2goKSk7IH0KKyAgICB2b2lkIGFkZChjb25zdCBBdG9tU3RyaW5nJiBzdHJpbmcp
IHsgYWRkKHN0cmluZy5pbXBsKCktPmV4aXN0aW5nSGFzaCgpKTsgfQogICAgIHZvaWQgYWRkKGNv
bnN0IFN0cmluZyYgc3RyaW5nKSB7IGFkZChzdHJpbmcuaW1wbCgpLT5oYXNoKCkpOyB9Ci0gICAg
Ym9vbCBtYXlDb250YWluKGNvbnN0IEF0b21pY1N0cmluZyYgc3RyaW5nKSBjb25zdCB7IHJldHVy
biBtYXlDb250YWluKHN0cmluZy5pbXBsKCktPmV4aXN0aW5nSGFzaCgpKTsgfQorICAgIGJvb2wg
bWF5Q29udGFpbihjb25zdCBBdG9tU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1heUNv
bnRhaW4oc3RyaW5nLmltcGwoKS0+ZXhpc3RpbmdIYXNoKCkpOyB9CiAgICAgYm9vbCBtYXlDb250
YWluKGNvbnN0IFN0cmluZyYgc3RyaW5nKSBjb25zdCB7IHJldHVybiBtYXlDb250YWluKHN0cmlu
Zy5pbXBsKCktPmhhc2goKSk7IH0KIAogcHJpdmF0ZToKQEAgLTE3NCwxMiArMTc0LDEyIEBAIHB1
YmxpYzoKICAgICAvLyBPdGhlcndpc2Ugb3ZlcmZsb3dlZCBrZXlzIHdpbGwgc3RpY2sgYXJvdW5k
LgogICAgIHZvaWQgY2xlYXIoKTsKIAotICAgIHZvaWQgYWRkKGNvbnN0IEF0b21pY1N0cmluZyYg
c3RyaW5nKSB7IGFkZChzdHJpbmcuaW1wbCgpLT5leGlzdGluZ0hhc2goKSk7IH0KKyAgICB2b2lk
IGFkZChjb25zdCBBdG9tU3RyaW5nJiBzdHJpbmcpIHsgYWRkKHN0cmluZy5pbXBsKCktPmV4aXN0
aW5nSGFzaCgpKTsgfQogICAgIHZvaWQgYWRkKGNvbnN0IFN0cmluZyYgc3RyaW5nKSB7IGFkZChz
dHJpbmcuaW1wbCgpLT5oYXNoKCkpOyB9Ci0gICAgdm9pZCByZW1vdmUoY29uc3QgQXRvbWljU3Ry
aW5nJiBzdHJpbmcpIHsgcmVtb3ZlKHN0cmluZy5pbXBsKCktPmV4aXN0aW5nSGFzaCgpKTsgfQor
ICAgIHZvaWQgcmVtb3ZlKGNvbnN0IEF0b21TdHJpbmcmIHN0cmluZykgeyByZW1vdmUoc3RyaW5n
LmltcGwoKS0+ZXhpc3RpbmdIYXNoKCkpOyB9CiAgICAgdm9pZCByZW1vdmUoY29uc3QgU3RyaW5n
JiBzdHJpbmcpIHsgcmVtb3ZlKHN0cmluZy5pbXBsKCktPmhhc2goKSk7IH0KIAotICAgIGJvb2wg
bWF5Q29udGFpbihjb25zdCBBdG9taWNTdHJpbmcmIHN0cmluZykgY29uc3QgeyByZXR1cm4gbWF5
Q29udGFpbihzdHJpbmcuaW1wbCgpLT5leGlzdGluZ0hhc2goKSk7IH0KKyAgICBib29sIG1heUNv
bnRhaW4oY29uc3QgQXRvbVN0cmluZyYgc3RyaW5nKSBjb25zdCB7IHJldHVybiBtYXlDb250YWlu
KHN0cmluZy5pbXBsKCktPmV4aXN0aW5nSGFzaCgpKTsgfQogICAgIGJvb2wgbWF5Q29udGFpbihj
b25zdCBTdHJpbmcmIHN0cmluZykgY29uc3QgeyByZXR1cm4gbWF5Q29udGFpbihzdHJpbmcuaW1w
bCgpLT5oYXNoKCkpOyB9CiAKICNpZiAhQVNTRVJUX0RJU0FCTEVECmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0
CmluZGV4IDk3NWQ4NzEzMmE1MzQ0NDU2N2ZmZWI0Y2I5ODc4NmFlMDM4NzRiYmMuLmZlNDBmZTBi
MzdiNzJkOGRiZTgwMjFmYzhjZDE2OWUwMWEyYjQ2M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CkBA
IC0yODksMTAgKzI4OSwxMCBAQCBzZXQoV1RGX1BVQkxJQ19IRUFERVJTCiAKICAgICB0ZXh0L0FT
Q0lJRmFzdFBhdGguaAogICAgIHRleHQvQVNDSUlMaXRlcmFsLmgKLSAgICB0ZXh0L0F0b21pY1N0
cmluZy5oCi0gICAgdGV4dC9BdG9taWNTdHJpbmdIYXNoLmgKLSAgICB0ZXh0L0F0b21pY1N0cmlu
Z0ltcGwuaAotICAgIHRleHQvQXRvbWljU3RyaW5nVGFibGUuaAorICAgIHRleHQvQXRvbVN0cmlu
Zy5oCisgICAgdGV4dC9BdG9tU3RyaW5nSGFzaC5oCisgICAgdGV4dC9BdG9tU3RyaW5nSW1wbC5o
CisgICAgdGV4dC9BdG9tU3RyaW5nVGFibGUuaAogICAgIHRleHQvQmFzZTY0LmgKICAgICB0ZXh0
L0NTdHJpbmcuaAogICAgIHRleHQvQ29udmVyc2lvbk1vZGUuaApAQCAtNDMwLDkgKzQzMCw5IEBA
IHNldChXVEZfU09VUkNFUwogICAgIHBlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVyLmNwcAog
CiAgICAgdGV4dC9BU0NJSUxpdGVyYWwuY3BwCi0gICAgdGV4dC9BdG9taWNTdHJpbmcuY3BwCi0g
ICAgdGV4dC9BdG9taWNTdHJpbmdJbXBsLmNwcAotICAgIHRleHQvQXRvbWljU3RyaW5nVGFibGUu
Y3BwCisgICAgdGV4dC9BdG9tU3RyaW5nLmNwcAorICAgIHRleHQvQXRvbVN0cmluZ0ltcGwuY3Bw
CisgICAgdGV4dC9BdG9tU3RyaW5nVGFibGUuY3BwCiAgICAgdGV4dC9CYXNlNjQuY3BwCiAgICAg
dGV4dC9DU3RyaW5nLmNwcAogICAgIHRleHQvRXh0ZXJuYWxTdHJpbmdJbXBsLmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvRm9yd2FyZC5oIGIvU291cmNlL1dURi93dGYvRm9yd2FyZC5o
CmluZGV4IGY2YTBjMGU1ODI5OTUxYTIxZDY5ZjRhNjUzNjM2MDBkMzM2ZGQ0YjIuLmY2MDM5MTI1
OWI2NWRlZjdlOTZjOTEyMTNmNzg4NTNmZTczYjUxNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL0ZvcndhcmQuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Gb3J3YXJkLmgKQEAgLTI0LDggKzI0
LDggQEAKIAogbmFtZXNwYWNlIFdURiB7CiAKLWNsYXNzIEF0b21pY1N0cmluZzsKLWNsYXNzIEF0
b21pY1N0cmluZ0ltcGw7CitjbGFzcyBBdG9tU3RyaW5nOworY2xhc3MgQXRvbVN0cmluZ0ltcGw7
CiBjbGFzcyBCaW5hcnlTZW1hcGhvcmU7CiBjbGFzcyBDU3RyaW5nOwogY2xhc3MgQ3Jhc2hPbk92
ZXJmbG93OwpAQCAtODcsOCArODcsOCBAQCB0ZW1wbGF0ZTxjbGFzcywgY2xhc3M+IGNsYXNzIGV4
cGVjdGVkOwogdGVtcGxhdGU8Y2xhc3M+IGNsYXNzIHVuZXhwZWN0ZWQ7CiB9fX0gLy8gbmFtZXNw
YWNlIHN0ZDo6ZXhwZXJpbWVudGFsOjpmdW5kYW1lbnRhbHNfdjMKIAotdXNpbmcgV1RGOjpBdG9t
aWNTdHJpbmc7Ci11c2luZyBXVEY6OkF0b21pY1N0cmluZ0ltcGw7Cit1c2luZyBXVEY6OkF0b21T
dHJpbmc7Cit1c2luZyBXVEY6OkF0b21TdHJpbmdJbXBsOwogdXNpbmcgV1RGOjpCaW5hcnlTZW1h
cGhvcmU7CiB1c2luZyBXVEY6OkNTdHJpbmc7CiB1c2luZyBXVEY6OkNvbXBsZXRpb25IYW5kbGVy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTG9nZ2VyLmggYi9Tb3VyY2UvV1RGL3d0Zi9M
b2dnZXIuaAppbmRleCA1NTJmOWI2M2JmNzU4NzA4OWExZWVkNmU2MWIzNzdjNTY4MjBhODVhLi40
ZjVlMWEzNzBlYzkwMmE5Y2U2OWNlZWY2YzVhYjAzYWE5NmQyNzYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9Mb2dnZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Mb2dnZXIuaApAQCAtNDEs
NyArNDEsNyBAQCBzdHJ1Y3QgTG9nQXJndW1lbnQgewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUg
PSBUPiBzdGF0aWMgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19lbnVtPFU+Ojp2YWx1
ZSwgU3RyaW5nPjo6dHlwZSB0b1N0cmluZyhVIGFyZ3VtZW50KSB7IHJldHVybiBTdHJpbmc6Om51
bWJlcihzdGF0aWNfY2FzdDx0eXBlbmFtZSBzdGQ6OnVuZGVybHlpbmdfdHlwZTxVPjo6dHlwZT4o
YXJndW1lbnQpKTsgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBUPiBzdGF0aWMgdHlwZW5h
bWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1lPFUsIGZsb2F0Pjo6dmFsdWUsIFN0cmluZz46
OnR5cGUgdG9TdHJpbmcoZmxvYXQgYXJndW1lbnQpIHsgcmV0dXJuIFN0cmluZzo6bnVtYmVyVG9T
dHJpbmdGaXhlZFByZWNpc2lvbihhcmd1bWVudCk7IH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBV
ID0gVD4gc3RhdGljIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxVLCBkb3Vi
bGU+Ojp2YWx1ZSwgU3RyaW5nPjo6dHlwZSB0b1N0cmluZyhkb3VibGUgYXJndW1lbnQpIHsgcmV0
dXJuIFN0cmluZzo6bnVtYmVyVG9TdHJpbmdGaXhlZFByZWNpc2lvbihhcmd1bWVudCk7IH0KLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gVD4gc3RhdGljIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lm
PHN0ZDo6aXNfc2FtZTx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9yZWZlcmVuY2U8VT46OnR5cGUsIEF0
b21pY1N0cmluZz46OnZhbHVlLCBTdHJpbmc+Ojp0eXBlIHRvU3RyaW5nKGNvbnN0IEF0b21pY1N0
cmluZyYgYXJndW1lbnQpIHsgcmV0dXJuIGFyZ3VtZW50LnN0cmluZygpOyB9CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVSA9IFQ+IHN0YXRpYyB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6Omlz
X3NhbWU8dHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPFU+Ojp0eXBlLCBBdG9tU3RyaW5n
Pjo6dmFsdWUsIFN0cmluZz46OnR5cGUgdG9TdHJpbmcoY29uc3QgQXRvbVN0cmluZyYgYXJndW1l
bnQpIHsgcmV0dXJuIGFyZ3VtZW50LnN0cmluZygpOyB9CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VSA9IFQ+IHN0YXRpYyB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8dHlwZW5h
bWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPFU+Ojp0eXBlLCBTdHJpbmc+Ojp2YWx1ZSwgU3RyaW5n
Pjo6dHlwZSB0b1N0cmluZyhTdHJpbmcgYXJndW1lbnQpIHsgcmV0dXJuIGFyZ3VtZW50OyB9CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IFQ+IHN0YXRpYyB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9p
ZjxzdGQ6OmlzX3NhbWU8dHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPFU+Ojp0eXBlLCBT
dHJpbmdCdWlsZGVyKj46OnZhbHVlLCBTdHJpbmc+Ojp0eXBlIHRvU3RyaW5nKFN0cmluZ0J1aWxk
ZXIqIGFyZ3VtZW50KSB7IHJldHVybiBhcmd1bWVudC0+dG9TdHJpbmcoKTsgfQogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFUgPSBUPiBzdGF0aWMgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjpp
c19zYW1lPFUsIGNvbnN0IGNoYXIqPjo6dmFsdWUsIFN0cmluZz46OnR5cGUgdG9TdHJpbmcoY29u
c3QgY2hhciogYXJndW1lbnQpIHsgcmV0dXJuIFN0cmluZyhhcmd1bWVudCk7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dURi93dGYvUGxh
dGZvcm1NYWMuY21ha2UKaW5kZXggZTA5MDUzYmJjNDE5OTdjNTgwODE3MDVlZTBhMTBiNDRhNzM0
YzE5ZS4uNzk3YzVjZmU3YTViZWJlN2RhMmRjOGRkOTA2OGRkYWIzMmMyN2Q1MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dURi93dGYv
UGxhdGZvcm1NYWMuY21ha2UKQEAgLTY5LDcgKzY5LDcgQEAgbGlzdChBUFBFTkQgV1RGX1NPVVJD
RVMKICAgICBwb3NpeC9PU0FsbG9jYXRvclBPU0lYLmNwcAogICAgIHBvc2l4L1RocmVhZGluZ1BP
U0lYLmNwcAogCi0gICAgdGV4dC9jZi9BdG9taWNTdHJpbmdJbXBsQ0YuY3BwCisgICAgdGV4dC9j
Zi9BdG9tU3RyaW5nSW1wbENGLmNwcAogICAgIHRleHQvY2YvU3RyaW5nQ0YuY3BwCiAgICAgdGV4
dC9jZi9TdHJpbmdJbXBsQ0YuY3BwCiAgICAgdGV4dC9jZi9TdHJpbmdWaWV3Q0YuY3BwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdpbi5jbWFrZSBiL1NvdXJjZS9XVEYvd3Rm
L1BsYXRmb3JtV2luLmNtYWtlCmluZGV4IGM1OTc5ZDgzYTQzMjllMTIwZWUwY2JkMDc5MjY5ZTMw
MGU2YTA5Y2UuLjlmNTMzZmFhYmE3NWM0NzBiMzIxMTllNTM1MGRlOWYwNzk0NGU0ZjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV2luLmNtYWtlCisrKyBiL1NvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtV2luLmNtYWtlCkBAIC00NCw3ICs0NCw3IEBAIGlmIChVU0VfQ0YpCiAgICAg
ICAgIGNmL0ZpbGVTeXN0ZW1DRi5jcHAKICAgICAgICAgY2YvVVJMQ0YuY3BwCiAKLSAgICAgICAg
dGV4dC9jZi9BdG9taWNTdHJpbmdJbXBsQ0YuY3BwCisgICAgICAgIHRleHQvY2YvQXRvbVN0cmlu
Z0ltcGxDRi5jcHAKICAgICAgICAgdGV4dC9jZi9TdHJpbmdDRi5jcHAKICAgICAgICAgdGV4dC9j
Zi9TdHJpbmdJbXBsQ0YuY3BwCiAgICAgICAgIHRleHQvY2YvU3RyaW5nVmlld0NGLmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvUHJpbnRTdHJlYW0uaCBiL1NvdXJjZS9XVEYvd3RmL1By
aW50U3RyZWFtLmgKaW5kZXggNWM5ZmJkYjM5MDFkOWI3YjUyYjYwMWI1OTY3ZjY1YjY3NDU5MThh
OC4uMDRiMDU2MWJjZTFkNjBkMzBhZTMxMjNjNmE4NzBkNjhkMmY5MmQ0YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvUHJpbnRTdHJlYW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QcmludFN0
cmVhbS5oCkBAIC05OCwxNCArOTgsMTQgQEAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcHJpbnRJ
bnRlcm5hbChQcmludFN0cmVhbSYsIGNvbnN0IFN0cmluZ1ZpZXcmKTsKIFdURl9FWFBPUlRfUFJJ
VkFURSB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBjb25zdCBDU3RyaW5nJik7CiBX
VEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwgY29uc3Qg
U3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBwcmludEludGVybmFsKFByaW50U3Ry
ZWFtJiwgY29uc3QgU3RyaW5nSW1wbCopOwotaW5saW5lIHZvaWQgcHJpbnRJbnRlcm5hbChQcmlu
dFN0cmVhbSYgb3V0LCBjb25zdCBBdG9taWNTdHJpbmdJbXBsKiB2YWx1ZSkgeyBwcmludEludGVy
bmFsKG91dCwgYml0d2lzZV9jYXN0PGNvbnN0IFN0cmluZ0ltcGwqPih2YWx1ZSkpOyB9Citpbmxp
bmUgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IEF0b21TdHJpbmdJ
bXBsKiB2YWx1ZSkgeyBwcmludEludGVybmFsKG91dCwgYml0d2lzZV9jYXN0PGNvbnN0IFN0cmlu
Z0ltcGwqPih2YWx1ZSkpOyB9CiBpbmxpbmUgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFt
JiBvdXQsIGNvbnN0IFVuaXF1ZWRTdHJpbmdJbXBsKiB2YWx1ZSkgeyBwcmludEludGVybmFsKG91
dCwgYml0d2lzZV9jYXN0PGNvbnN0IFN0cmluZ0ltcGwqPih2YWx1ZSkpOyB9CiBpbmxpbmUgdm9p
ZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IFVuaXF1ZWRTdHJpbmdJbXBs
JiB2YWx1ZSkgeyBwcmludEludGVybmFsKG91dCwgJnZhbHVlKTsgfQogaW5saW5lIHZvaWQgcHJp
bnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBjaGFyKiB2YWx1ZSkgeyBwcmludEludGVybmFs
KG91dCwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KHZhbHVlKSk7IH0KIGlubGluZSB2b2lkIHBy
aW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgQ1N0cmluZyYgdmFsdWUpIHsgcHJpbnRJbnRl
cm5hbChvdXQsIHN0YXRpY19jYXN0PGNvbnN0IENTdHJpbmcmPih2YWx1ZSkpOyB9CiBpbmxpbmUg
dm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIFN0cmluZyYgdmFsdWUpIHsgcHJp
bnRJbnRlcm5hbChvdXQsIHN0YXRpY19jYXN0PGNvbnN0IFN0cmluZyY+KHZhbHVlKSk7IH0KIGlu
bGluZSB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgU3RyaW5nSW1wbCogdmFs
dWUpIHsgcHJpbnRJbnRlcm5hbChvdXQsIHN0YXRpY19jYXN0PGNvbnN0IFN0cmluZ0ltcGwqPih2
YWx1ZSkpOyB9Ci1pbmxpbmUgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEF0
b21pY1N0cmluZ0ltcGwqIHZhbHVlKSB7IHByaW50SW50ZXJuYWwob3V0LCBzdGF0aWNfY2FzdDxj
b25zdCBBdG9taWNTdHJpbmdJbXBsKj4odmFsdWUpKTsgfQoraW5saW5lIHZvaWQgcHJpbnRJbnRl
cm5hbChQcmludFN0cmVhbSYgb3V0LCBBdG9tU3RyaW5nSW1wbCogdmFsdWUpIHsgcHJpbnRJbnRl
cm5hbChvdXQsIHN0YXRpY19jYXN0PGNvbnN0IEF0b21TdHJpbmdJbXBsKj4odmFsdWUpKTsgfQog
aW5saW5lIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBVbmlxdWVkU3RyaW5n
SW1wbCogdmFsdWUpIHsgcHJpbnRJbnRlcm5hbChvdXQsIHN0YXRpY19jYXN0PGNvbnN0IFVuaXF1
ZWRTdHJpbmdJbXBsKj4odmFsdWUpKTsgfQogaW5saW5lIHZvaWQgcHJpbnRJbnRlcm5hbChQcmlu
dFN0cmVhbSYgb3V0LCBVbmlxdWVkU3RyaW5nSW1wbCYgdmFsdWUpIHsgcHJpbnRJbnRlcm5hbChv
dXQsICZ2YWx1ZSk7IH0KIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHByaW50SW50ZXJuYWwoUHJp
bnRTdHJlYW0mLCBib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5j
cHAgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuY3BwCmluZGV4IDkwOGJhZmU2M2Y5Y2U1NTY5
OGYyYmRlMzE2MGRiNTFhNmJkNmUzYzAuLjA3ZTdkMGYyMzE2OTQ5MDg4ZTQ5ODIwNGVlZTk5NzAw
NzVlNGExMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5jcHAKKysrIGIv
U291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcApAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUg
PHd0Zi9UaHJlYWRHcm91cC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRNZXNzYWdlLmg+CiAjaW5j
bHVkZSA8d3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9BdG9t
aWNTdHJpbmdUYWJsZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmdUYWJsZS5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KIAogI2lmIEhBVkUoUU9TX0NMQVNTRVMp
CkBAIC0xMTEsMTIgKzExMSwxMiBAQCB2b2lkIFRocmVhZDo6aW5pdGlhbGl6ZUluVGhyZWFkKCkK
ICAgICAgICAgbV9zdGFjayA9IFN0YWNrQm91bmRzOjpjdXJyZW50VGhyZWFkU3RhY2tCb3VuZHMo
KTsKICAgICBtX3NhdmVkTGFzdFN0YWNrVG9wID0gc3RhY2soKS5vcmlnaW4oKTsKIAotICAgIG1f
Y3VycmVudEF0b21pY1N0cmluZ1RhYmxlID0gJm1fZGVmYXVsdEF0b21pY1N0cmluZ1RhYmxlOwor
ICAgIG1fY3VycmVudEF0b21TdHJpbmdUYWJsZSA9ICZtX2RlZmF1bHRBdG9tU3RyaW5nVGFibGU7
CiAjaWYgVVNFKFdFQl9USFJFQUQpCi0gICAgLy8gT24gaU9TLCBvbmUgQXRvbWljU3RyaW5nVGFi
bGUgaXMgc2hhcmVkIGJldHdlZW4gdGhlIG1haW4gVUkgdGhyZWFkIGFuZCB0aGUgV2ViVGhyZWFk
LgorICAgIC8vIE9uIGlPUywgb25lIEF0b21TdHJpbmdUYWJsZSBpcyBzaGFyZWQgYmV0d2VlbiB0
aGUgbWFpbiBVSSB0aHJlYWQgYW5kIHRoZSBXZWJUaHJlYWQuCiAgICAgaWYgKGlzV2ViVGhyZWFk
KCkgfHwgaXNVSVRocmVhZCgpKSB7Ci0gICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9t
aWNTdHJpbmdUYWJsZT4gc2hhcmVkU3RyaW5nVGFibGU7Ci0gICAgICAgIG1fY3VycmVudEF0b21p
Y1N0cmluZ1RhYmxlID0gJnNoYXJlZFN0cmluZ1RhYmxlLmdldCgpOworICAgICAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8QXRvbVN0cmluZ1RhYmxlPiBzaGFyZWRTdHJpbmdUYWJsZTsKKyAgICAg
ICAgbV9jdXJyZW50QXRvbVN0cmluZ1RhYmxlID0gJnNoYXJlZFN0cmluZ1RhYmxlLmdldCgpOwog
ICAgIH0KICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuaAppbmRleCAxOThhMGU1NGMyOTI1MmRkNmM1YTNh
ODFhZjljM2ZmYzY3NmNkNTAyLi42OTUzZjZlZWVmZDRjYzE3OWMzMjY2YzM0ZTY5NDVkZjMyMzdj
ZjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9UaHJlYWRpbmcuaApAQCAtNDUsNyArNDUsNyBAQAogI2luY2x1ZGUgPHd0Zi9UaHJl
YWRTYWZlUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3
dGYvV29yZExvY2suaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmdUYWJsZS5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmdUYWJsZS5oPgogCiAjaWYgVVNFKFBUSFJFQURT
KSAmJiAhT1MoREFSV0lOKQogI2luY2x1ZGUgPHNpZ25hbC5oPgpAQCAtMTU2LDE2ICsxNTYsMTYg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9zdGFjazsKICAgICB9CiAKLSAgICBBdG9taWNT
dHJpbmdUYWJsZSogYXRvbWljU3RyaW5nVGFibGUoKQorICAgIEF0b21TdHJpbmdUYWJsZSogYXRv
bVN0cmluZ1RhYmxlKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBtX2N1cnJlbnRBdG9taWNTdHJp
bmdUYWJsZTsKKyAgICAgICAgcmV0dXJuIG1fY3VycmVudEF0b21TdHJpbmdUYWJsZTsKICAgICB9
CiAKLSAgICBBdG9taWNTdHJpbmdUYWJsZSogc2V0Q3VycmVudEF0b21pY1N0cmluZ1RhYmxlKEF0
b21pY1N0cmluZ1RhYmxlKiBhdG9taWNTdHJpbmdUYWJsZSkKKyAgICBBdG9tU3RyaW5nVGFibGUq
IHNldEN1cnJlbnRBdG9tU3RyaW5nVGFibGUoQXRvbVN0cmluZ1RhYmxlKiBhdG9tU3RyaW5nVGFi
bGUpCiAgICAgewotICAgICAgICBBdG9taWNTdHJpbmdUYWJsZSogb2xkQXRvbWljU3RyaW5nVGFi
bGUgPSBtX2N1cnJlbnRBdG9taWNTdHJpbmdUYWJsZTsKLSAgICAgICAgbV9jdXJyZW50QXRvbWlj
U3RyaW5nVGFibGUgPSBhdG9taWNTdHJpbmdUYWJsZTsKLSAgICAgICAgcmV0dXJuIG9sZEF0b21p
Y1N0cmluZ1RhYmxlOworICAgICAgICBBdG9tU3RyaW5nVGFibGUqIG9sZEF0b21TdHJpbmdUYWJs
ZSA9IG1fY3VycmVudEF0b21TdHJpbmdUYWJsZTsKKyAgICAgICAgbV9jdXJyZW50QXRvbVN0cmlu
Z1RhYmxlID0gYXRvbVN0cmluZ1RhYmxlOworICAgICAgICByZXR1cm4gb2xkQXRvbVN0cmluZ1Rh
YmxlOwogICAgIH0KIAogI2lmIEVOQUJMRShTVEFDS19TVEFUUykKQEAgLTMwMSw4ICszMDEsOCBA
QCBwcm90ZWN0ZWQ6CiAgICAgdW5zaWduZWQgbV9zdXNwZW5kQ291bnQgeyAwIH07CiAjZW5kaWYK
IAotICAgIEF0b21pY1N0cmluZ1RhYmxlKiBtX2N1cnJlbnRBdG9taWNTdHJpbmdUYWJsZSB7IG51
bGxwdHIgfTsKLSAgICBBdG9taWNTdHJpbmdUYWJsZSBtX2RlZmF1bHRBdG9taWNTdHJpbmdUYWJs
ZTsKKyAgICBBdG9tU3RyaW5nVGFibGUqIG1fY3VycmVudEF0b21TdHJpbmdUYWJsZSB7IG51bGxw
dHIgfTsKKyAgICBBdG9tU3RyaW5nVGFibGUgbV9kZWZhdWx0QXRvbVN0cmluZ1RhYmxlOwogCiAj
aWYgRU5BQkxFKFNUQUNLX1NUQVRTKQogICAgIFN0YWNrU3RhdHM6OlBlclRocmVhZFN0YXRzIG1f
c3RhY2tTdGF0czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1ZlY3RvclRyYWl0cy5oIGIv
U291cmNlL1dURi93dGYvVmVjdG9yVHJhaXRzLmgKaW5kZXggMmJmNWVlZTFkMmE2NjE5MDFkOTQ4
ODIwMGZmMWE0N2Y3ZjQxMTk0OC4uZDc4MzhjNGUwNzViM2NiNjE0ZTdmMTY2Yjg2Y2QzZGU3ZDgx
ZTk5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVmVjdG9yVHJhaXRzLmgKKysrIGIvU291
cmNlL1dURi93dGYvVmVjdG9yVHJhaXRzLmgKQEAgLTI4LDcgKzI4LDcgQEAKIAogbmFtZXNwYWNl
IFdURiB7CiAKLSAgICBjbGFzcyBBdG9taWNTdHJpbmc7CisgICAgY2xhc3MgQXRvbVN0cmluZzsK
IAogICAgIHRlbXBsYXRlPGJvb2wgaXNQb2QsIHR5cGVuYW1lIFQ+CiAgICAgc3RydWN0IFZlY3Rv
clRyYWl0c0Jhc2U7CkBAIC03MSw3ICs3MSw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFA+IHN0cnVjdCBWZWN0b3JUcmFpdHM8UmVmUHRyPFA+PiA6IFNpbXBsZUNs
YXNzVmVjdG9yVHJhaXRzIHsgfTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQPiBzdHJ1Y3QgVmVj
dG9yVHJhaXRzPHN0ZDo6dW5pcXVlX3B0cjxQPj4gOiBTaW1wbGVDbGFzc1ZlY3RvclRyYWl0cyB7
IH07CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgUD4gc3RydWN0IFZlY3RvclRyYWl0czxSZWY8UD4+
IDogU2ltcGxlQ2xhc3NWZWN0b3JUcmFpdHMgeyB9OwotICAgIHRlbXBsYXRlPD4gc3RydWN0IFZl
Y3RvclRyYWl0czxBdG9taWNTdHJpbmc+IDogU2ltcGxlQ2xhc3NWZWN0b3JUcmFpdHMgeyB9Owor
ICAgIHRlbXBsYXRlPD4gc3RydWN0IFZlY3RvclRyYWl0czxBdG9tU3RyaW5nPiA6IFNpbXBsZUNs
YXNzVmVjdG9yVHJhaXRzIHsgfTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZpcnN0LCB0eXBl
bmFtZSBTZWNvbmQ+CiAgICAgc3RydWN0IFZlY3RvclRyYWl0czxzdGQ6OnBhaXI8Rmlyc3QsIFNl
Y29uZD4+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50
Q29kZXJzLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2RlcnMu
Y3BwCmluZGV4IDk5YjJiZWVhY2JhYTcwNjk4OTUwYjY2Y2Y0YTAxZTc5YzJiMTI1OTAuLjZlYTI1
ZWEyZmQ5N2Q5YTIyMmYyZTBkNDE4MGRkMjgzMDUxY2MxNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XVEYv
d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2RlcnMuY3BwCkBAIC0zMiwxOCArMzIsMTggQEAK
IG5hbWVzcGFjZSBXVEYgewogbmFtZXNwYWNlIFBlcnNpc3RlbmNlIHsKIAotdm9pZCBDb2RlcjxB
dG9taWNTdHJpbmc+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgQXRvbWljU3RyaW5n
JiBhdG9taWNTdHJpbmcpCit2b2lkIENvZGVyPEF0b21TdHJpbmc+OjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlciwgY29uc3QgQXRvbVN0cmluZyYgYXRvbVN0cmluZykKIHsKLSAgICBlbmNvZGVyIDw8
IGF0b21pY1N0cmluZy5zdHJpbmcoKTsKKyAgICBlbmNvZGVyIDw8IGF0b21TdHJpbmcuc3RyaW5n
KCk7CiB9CiAKLWJvb2wgQ29kZXI8QXRvbWljU3RyaW5nPjo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIsIEF0b21pY1N0cmluZyYgYXRvbWljU3RyaW5nKQorYm9vbCBDb2RlcjxBdG9tU3RyaW5nPjo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIEF0b21TdHJpbmcmIGF0b21TdHJpbmcpCiB7CiAgICAg
U3RyaW5nIHN0cmluZzsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0cmluZykpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIGF0b21pY1N0cmluZyA9IHN0cmluZzsKKyAgICBhdG9tU3Ry
aW5nID0gc3RyaW5nOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXJzLmggYi9Tb3VyY2UvV1RGL3d0Zi9w
ZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXJzLmgKaW5kZXggOTMzMDM0ZjllYzZkNDZmMTI2OTJk
NDUzYjFiOGRiOThlN2U5NDIyNC4uN2VlM2M5MzI5NDAxZThjYzcwZGYxMzYxOTc5NjFmODY1ODE2
MGM4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudENv
ZGVycy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2RlcnMu
aApAQCAtMjgyLDkgKzI4Miw5IEBAIHRlbXBsYXRlPD4gc3RydWN0IENvZGVyPFdhbGxUaW1lPiB7
CiAgICAgfQogfTsKIAotdGVtcGxhdGU8PiBzdHJ1Y3QgQ29kZXI8QXRvbWljU3RyaW5nPiB7Ci0g
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3Qg
QXRvbWljU3RyaW5nJik7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlY29k
ZShEZWNvZGVyJiwgQXRvbWljU3RyaW5nJik7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBDb2RlcjxBdG9t
U3RyaW5nPiB7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGVuY29kZShFbmNv
ZGVyJiwgY29uc3QgQXRvbVN0cmluZyYpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMg
Ym9vbCBkZWNvZGUoRGVjb2RlciYsIEF0b21TdHJpbmcmKTsKIH07CiAKIHRlbXBsYXRlPD4gc3Ry
dWN0IENvZGVyPENTdHJpbmc+IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRv
bVN0cmluZy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmcuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjA1ZjVjNjE4YmY5NzNjNmZjMmE0YWMwMmRlNmMxNTZlNjY0NzdhYjUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmcuY3BwCkBAIC0wLDAgKzEsMTU3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIFBhdHJpY2sgR2Fuc3RlcmVyIDxwYXJv
Z2FAcGFyb2dhLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
ICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0
L0F0b21TdHJpbmcuaD4KKworI2luY2x1ZGUgPG11dGV4PgorI2luY2x1ZGUgPHd0Zi9NYWluVGhy
ZWFkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5oPgor
CisjaW5jbHVkZSA8d3RmL2R0b2EuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPEF0
b21TdHJpbmc6OkNhc2VDb252ZXJ0VHlwZSB0eXBlPgorQUxXQVlTX0lOTElORSBBdG9tU3RyaW5n
IEF0b21TdHJpbmc6OmNvbnZlcnRBU0NJSUNhc2UoKSBjb25zdAoreworICAgIFN0cmluZ0ltcGwq
IGltcGwgPSB0aGlzLT5pbXBsKCk7CisgICAgaWYgKFVOTElLRUxZKCFpbXBsKSkKKyAgICAgICAg
cmV0dXJuIG51bGxBdG9tKCk7CisKKyAgICAvLyBDb252ZXJ0IHNob3J0IHN0cmluZ3Mgd2l0aG91
dCBhbGxvY2F0aW5nIGEgbmV3IFN0cmluZ0ltcGwsIHNpbmNlCisgICAgLy8gdGhlcmUncyBhIGdv
b2QgY2hhbmNlIHRoZXNlIHN0cmluZ3MgYXJlIGFscmVhZHkgaW4gdGhlIGF0b21pYworICAgIC8v
IHN0cmluZyB0YWJsZSBhbmQgc28gbm8gbWVtb3J5IGFsbG9jYXRpb24gd2lsbCBiZSByZXF1aXJl
ZC4KKyAgICB1bnNpZ25lZCBsZW5ndGg7CisgICAgY29uc3QgdW5zaWduZWQgbG9jYWxCdWZmZXJT
aXplID0gMTAwOworICAgIGlmIChpbXBsLT5pczhCaXQoKSAmJiAobGVuZ3RoID0gaW1wbC0+bGVu
Z3RoKCkpIDw9IGxvY2FsQnVmZmVyU2l6ZSkgeworICAgICAgICBjb25zdCBMQ2hhciogY2hhcmFj
dGVycyA9IGltcGwtPmNoYXJhY3RlcnM4KCk7CisgICAgICAgIHVuc2lnbmVkIGZhaWxpbmdJbmRl
eDsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAg
ICAgICAgICBpZiAodHlwZSA9PSBDYXNlQ29udmVydFR5cGU6Okxvd2VyID8gVU5MSUtFTFkoaXNB
U0NJSVVwcGVyKGNoYXJhY3RlcnNbaV0pKSA6IExJS0VMWShpc0FTQ0lJTG93ZXIoY2hhcmFjdGVy
c1tpXSkpKSB7CisgICAgICAgICAgICAgICAgZmFpbGluZ0luZGV4ID0gaTsKKyAgICAgICAgICAg
ICAgICBnb3RvIFNsb3dQYXRoOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJl
dHVybiAqdGhpczsKK1Nsb3dQYXRoOgorICAgICAgICBMQ2hhciBsb2NhbEJ1ZmZlcltsb2NhbEJ1
ZmZlclNpemVdOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZmFpbGluZ0luZGV4
OyArK2kpCisgICAgICAgICAgICBsb2NhbEJ1ZmZlcltpXSA9IGNoYXJhY3RlcnNbaV07CisgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IGZhaWxpbmdJbmRleDsgaSA8IGxlbmd0aDsgKytpKQorICAg
ICAgICAgICAgbG9jYWxCdWZmZXJbaV0gPSB0eXBlID09IENhc2VDb252ZXJ0VHlwZTo6TG93ZXIg
PyB0b0FTQ0lJTG93ZXIoY2hhcmFjdGVyc1tpXSkgOiB0b0FTQ0lJVXBwZXIoY2hhcmFjdGVyc1tp
XSk7CisgICAgICAgIHJldHVybiBBdG9tU3RyaW5nKGxvY2FsQnVmZmVyLCBsZW5ndGgpOworICAg
IH0KKworICAgIFJlZjxTdHJpbmdJbXBsPiBjb252ZXJ0ZWRTdHJpbmcgPSB0eXBlID09IENhc2VD
b252ZXJ0VHlwZTo6TG93ZXIgPyBpbXBsLT5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpIDogaW1w
bC0+Y29udmVydFRvQVNDSUlVcHBlcmNhc2UoKTsKKyAgICBpZiAoTElLRUxZKGNvbnZlcnRlZFN0
cmluZy5wdHIoKSA9PSBpbXBsKSkKKyAgICAgICAgcmV0dXJuICp0aGlzOworCisgICAgQXRvbVN0
cmluZyByZXN1bHQ7CisgICAgcmVzdWx0Lm1fc3RyaW5nID0gQXRvbVN0cmluZ0ltcGw6OmFkZChj
b252ZXJ0ZWRTdHJpbmcucHRyKCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0F0b21TdHJp
bmcgQXRvbVN0cmluZzo6Y29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSBjb25zdAoreworICAgIHJl
dHVybiBjb252ZXJ0QVNDSUlDYXNlPENhc2VDb252ZXJ0VHlwZTo6TG93ZXI+KCk7Cit9CisKK0F0
b21TdHJpbmcgQXRvbVN0cmluZzo6Y29udmVydFRvQVNDSUlVcHBlcmNhc2UoKSBjb25zdAorewor
ICAgIHJldHVybiBjb252ZXJ0QVNDSUlDYXNlPENhc2VDb252ZXJ0VHlwZTo6VXBwZXI+KCk7Cit9
CisKK0F0b21TdHJpbmcgQXRvbVN0cmluZzo6bnVtYmVyKGludCBudW1iZXIpCit7CisgICAgcmV0
dXJuIG51bWJlclRvU3RyaW5nU2lnbmVkPEF0b21TdHJpbmc+KG51bWJlcik7Cit9CisKK0F0b21T
dHJpbmcgQXRvbVN0cmluZzo6bnVtYmVyKHVuc2lnbmVkIG51bWJlcikKK3sKKyAgICByZXR1cm4g
bnVtYmVyVG9TdHJpbmdVbnNpZ25lZDxBdG9tU3RyaW5nPihudW1iZXIpOworfQorCitBdG9tU3Ry
aW5nIEF0b21TdHJpbmc6Om51bWJlcih1bnNpZ25lZCBsb25nIG51bWJlcikKK3sKKyAgICByZXR1
cm4gbnVtYmVyVG9TdHJpbmdVbnNpZ25lZDxBdG9tU3RyaW5nPihudW1iZXIpOworfQorCitBdG9t
U3RyaW5nIEF0b21TdHJpbmc6Om51bWJlcih1bnNpZ25lZCBsb25nIGxvbmcgbnVtYmVyKQorewor
ICAgIHJldHVybiBudW1iZXJUb1N0cmluZ1Vuc2lnbmVkPEF0b21TdHJpbmc+KG51bWJlcik7Cit9
CisKK0F0b21TdHJpbmcgQXRvbVN0cmluZzo6bnVtYmVyKGZsb2F0IG51bWJlcikKK3sKKyAgICBO
dW1iZXJUb1N0cmluZ0J1ZmZlciBidWZmZXI7CisgICAgcmV0dXJuIG51bWJlclRvU3RyaW5nKG51
bWJlciwgYnVmZmVyKTsKK30KKworQXRvbVN0cmluZyBBdG9tU3RyaW5nOjpudW1iZXIoZG91Ymxl
IG51bWJlcikKK3sKKyAgICBOdW1iZXJUb1N0cmluZ0J1ZmZlciBidWZmZXI7CisgICAgcmV0dXJu
IG51bWJlclRvU3RyaW5nKG51bWJlciwgYnVmZmVyKTsKK30KKworQXRvbVN0cmluZyBBdG9tU3Ry
aW5nOjpmcm9tVVRGOEludGVybmFsKGNvbnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBjaGFyKiBlbmQp
Cit7CisgICAgQVNTRVJUKHN0YXJ0KTsKKworICAgIC8vIENhbGxlciBuZWVkcyB0byBoYW5kbGUg
ZW1wdHkgc3RyaW5nLgorICAgIEFTU0VSVCghZW5kIHx8IGVuZCA+IHN0YXJ0KTsKKyAgICBBU1NF
UlQoZW5kIHx8IHN0YXJ0WzBdKTsKKworICAgIHJldHVybiBBdG9tU3RyaW5nSW1wbDo6YWRkVVRG
OChzdGFydCwgZW5kID8gZW5kIDogc3RhcnQgKyBzdGQ6OnN0cmxlbihzdGFydCkpOworfQorCisj
aWZuZGVmIE5ERUJVRworCit2b2lkIEF0b21TdHJpbmc6OnNob3coKSBjb25zdAoreworICAgIG1f
c3RyaW5nLnNob3coKTsKK30KKworI2VuZGlmCisKK1dURl9FWFBPUlRfUFJJVkFURSBMYXp5TmV2
ZXJEZXN0cm95ZWQ8QXRvbVN0cmluZz4gbnVsbEF0b21EYXRhOworV1RGX0VYUE9SVF9QUklWQVRF
IExhenlOZXZlckRlc3Ryb3llZDxBdG9tU3RyaW5nPiBlbXB0eUF0b21EYXRhOworV1RGX0VYUE9S
VF9QUklWQVRFIExhenlOZXZlckRlc3Ryb3llZDxBdG9tU3RyaW5nPiBzdGFyQXRvbURhdGE7CitX
VEZfRVhQT1JUX1BSSVZBVEUgTGF6eU5ldmVyRGVzdHJveWVkPEF0b21TdHJpbmc+IHhtbEF0b21E
YXRhOworV1RGX0VYUE9SVF9QUklWQVRFIExhenlOZXZlckRlc3Ryb3llZDxBdG9tU3RyaW5nPiB4
bWxuc0F0b21EYXRhOworCit2b2lkIEF0b21TdHJpbmc6OmluaXQoKQoreworICAgIHN0YXRpYyBz
dGQ6Om9uY2VfZmxhZyBpbml0aWFsaXplS2V5OworICAgIHN0ZDo6Y2FsbF9vbmNlKGluaXRpYWxp
emVLZXksIFtdIHsKKyAgICAgICAgLy8gSW5pdGlhbGl6YXRpb24gaXMgbm90IHRocmVhZCBzYWZl
LCBzbyB0aGlzIGZ1bmN0aW9uIG11c3QgYmUgY2FsbGVkIGZyb20gdGhlIG1haW4gdGhyZWFkIGZp
cnN0LgorICAgICAgICBBU1NFUlQoaXNVSVRocmVhZCgpKTsKKworICAgICAgICBudWxsQXRvbURh
dGEuY29uc3RydWN0KCk7CisgICAgICAgIGVtcHR5QXRvbURhdGEuY29uc3RydWN0KCIiKTsKKyAg
ICAgICAgc3RhckF0b21EYXRhLmNvbnN0cnVjdCgiKiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKTsKKyAgICAgICAgeG1sQXRvbURhdGEuY29uc3RydWN0KCJ4bWwiLCBBdG9tU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgICAgIHhtbG5zQXRvbURhdGEuY29uc3Ry
dWN0KCJ4bWxucyIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICB9KTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L0F0b21TdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZy5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjlkNDNlMWZhNzI4NGViYTE0YTdjM2JjZGRkMzM5NGU2M2U5NmViYTcKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmcuaApAQCAtMCwwICsxLDM3MCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CisgKgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8dXRpbGl0eT4KKyNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nSW1w
bC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0ludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworI2lmIE9TKFdJTkRPV1MpCisjaW5jbHVk
ZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+CisjZW5kaWYKKworbmFtZXNwYWNl
IFdURiB7CisKK3N0cnVjdCBBdG9tU3RyaW5nSGFzaDsKKworY2xhc3MgQXRvbVN0cmluZyB7Citw
dWJsaWM6CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGluaXQoKTsKKworICAg
IEF0b21TdHJpbmcoKTsKKyAgICBBdG9tU3RyaW5nKGNvbnN0IExDaGFyKik7CisgICAgQXRvbVN0
cmluZyhjb25zdCBjaGFyKik7CisgICAgQXRvbVN0cmluZyhjb25zdCBMQ2hhciosIHVuc2lnbmVk
IGxlbmd0aCk7CisgICAgQXRvbVN0cmluZyhjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7
CisgICAgQXRvbVN0cmluZyhjb25zdCBVQ2hhciopOworCisgICAgdGVtcGxhdGU8c2l6ZV90IGlu
bGluZUNhcGFjaXR5PgorICAgIGV4cGxpY2l0IEF0b21TdHJpbmcoY29uc3QgVmVjdG9yPFVDaGFy
LCBpbmxpbmVDYXBhY2l0eT4mIGNoYXJhY3RlcnMpCisgICAgICAgIDogbV9zdHJpbmcoQXRvbVN0
cmluZ0ltcGw6OmFkZChjaGFyYWN0ZXJzLmRhdGEoKSwgY2hhcmFjdGVycy5zaXplKCkpKQorICAg
IHsKKyAgICB9CisKKyAgICBBdG9tU3RyaW5nKEF0b21TdHJpbmdJbXBsKik7CisgICAgQXRvbVN0
cmluZyhSZWZQdHI8QXRvbVN0cmluZ0ltcGw+JiYpOworICAgIEF0b21TdHJpbmcoY29uc3QgU3Rh
dGljU3RyaW5nSW1wbCopOworICAgIEF0b21TdHJpbmcoU3RyaW5nSW1wbCopOworICAgIEF0b21T
dHJpbmcoY29uc3QgU3RyaW5nJik7CisgICAgQXRvbVN0cmluZyhTdHJpbmdJbXBsKiBiYXNlU3Ry
aW5nLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoKTsKKworICAgIC8vIEZJWE1FOiBB
dG9tU3RyaW5nIGRvZXNu4oCZdCBhbHdheXMgaGF2ZSBBdG9tU3RyaW5nSW1wbCwgc28gb25lIG9m
IHRob3NlIHR3byBuYW1lcyBuZWVkcyB0byBjaGFuZ2UuCisgICAgQXRvbVN0cmluZyhVbmlxdWVk
U3RyaW5nSW1wbCogdWlkKTsKKworICAgIGVudW0gQ29uc3RydWN0RnJvbUxpdGVyYWxUYWcgeyBD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCB9OworICAgIEF0b21TdHJpbmcoY29uc3QgY2hhciogY2hhcmFj
dGVycywgdW5zaWduZWQgbGVuZ3RoLCBDb25zdHJ1Y3RGcm9tTGl0ZXJhbFRhZykKKyAgICAgICAg
OiBtX3N0cmluZyhBdG9tU3RyaW5nSW1wbDo6YWRkTGl0ZXJhbChjaGFyYWN0ZXJzLCBsZW5ndGgp
KQorICAgIHsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJDb3VudD4g
QUxXQVlTX0lOTElORSBBdG9tU3RyaW5nKGNvbnN0IGNoYXIgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0
ZXJDb3VudF0sIENvbnN0cnVjdEZyb21MaXRlcmFsVGFnKQorICAgICAgICA6IG1fc3RyaW5nKEF0
b21TdHJpbmdJbXBsOjphZGRMaXRlcmFsKGNoYXJhY3RlcnMsIGNoYXJhY3RlckNvdW50IC0gMSkp
CisgICAgeworICAgICAgICBDT01QSUxFX0FTU0VSVChjaGFyYWN0ZXJDb3VudCA+IDEsIEF0b21T
dHJpbmdGcm9tTGl0ZXJhbE5vdEVtcHR5KTsKKyAgICAgICAgQ09NUElMRV9BU1NFUlQoKGNoYXJh
Y3RlckNvdW50IC0gMSA8PSAoKHVuc2lnbmVkKH4wKSAtIHNpemVvZihTdHJpbmdJbXBsKSkgLyBz
aXplb2YoTENoYXIpKSksIEF0b21TdHJpbmdGcm9tTGl0ZXJhbENhbm5vdE92ZXJmbG93KTsKKyAg
ICB9CisKKyAgICAvLyBXZSBoYXZlIHRvIGRlY2xhcmUgdGhlIGNvcHkgY29uc3RydWN0b3IgYW5k
IGNvcHkgYXNzaWdubWVudCBvcGVyYXRvciBhcyB3ZWxsLCBvdGhlcndpc2UKKyAgICAvLyB0aGV5
J2xsIGJlIGltcGxpY2l0bHkgZGVsZXRlZCBieSBhZGRpbmcgdGhlIG1vdmUgY29uc3RydWN0b3Ig
YW5kIG1vdmUgYXNzaWdubWVudCBvcGVyYXRvci4KKyAgICBBdG9tU3RyaW5nKGNvbnN0IEF0b21T
dHJpbmcmIG90aGVyKSA6IG1fc3RyaW5nKG90aGVyLm1fc3RyaW5nKSB7IH0KKyAgICBBdG9tU3Ry
aW5nKEF0b21TdHJpbmcmJiBvdGhlcikgOiBtX3N0cmluZyhXVEZNb3ZlKG90aGVyLm1fc3RyaW5n
KSkgeyB9CisgICAgQXRvbVN0cmluZyYgb3BlcmF0b3I9KGNvbnN0IEF0b21TdHJpbmcmIG90aGVy
KSB7IG1fc3RyaW5nID0gb3RoZXIubV9zdHJpbmc7IHJldHVybiAqdGhpczsgfQorICAgIEF0b21T
dHJpbmcmIG9wZXJhdG9yPShBdG9tU3RyaW5nJiYgb3RoZXIpIHsgbV9zdHJpbmcgPSBXVEZNb3Zl
KG90aGVyLm1fc3RyaW5nKTsgcmV0dXJuICp0aGlzOyB9CisKKyAgICAvLyBIYXNoIHRhYmxlIGRl
bGV0ZWQgdmFsdWVzLCB3aGljaCBhcmUgb25seSBjb25zdHJ1Y3RlZCBhbmQgbmV2ZXIgY29waWVk
IG9yIGRlc3Ryb3llZC4KKyAgICBBdG9tU3RyaW5nKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVl
VHlwZSkgOiBtX3N0cmluZyhXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkgeyB9CisgICAgYm9v
bCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmlzSGFz
aFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0KKworICAgIHVuc2lnbmVkIGV4aXN0aW5nSGFzaCgpIGNv
bnN0IHsgcmV0dXJuIGlzTnVsbCgpID8gMCA6IGltcGwoKS0+ZXhpc3RpbmdIYXNoKCk7IH0KKwor
ICAgIG9wZXJhdG9yIGNvbnN0IFN0cmluZyYoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfQor
ICAgIGNvbnN0IFN0cmluZyYgc3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7IH07CisK
KyAgICBBdG9tU3RyaW5nSW1wbCogaW1wbCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEF0
b21TdHJpbmdJbXBsICo+KG1fc3RyaW5nLmltcGwoKSk7IH0KKworICAgIGJvb2wgaXM4Qml0KCkg
Y29uc3QgeyByZXR1cm4gbV9zdHJpbmcuaXM4Qml0KCk7IH0KKyAgICBjb25zdCBMQ2hhciogY2hh
cmFjdGVyczgoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5jaGFyYWN0ZXJzOCgpOyB9CisgICAg
Y29uc3QgVUNoYXIqIGNoYXJhY3RlcnMxNigpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmNoYXJh
Y3RlcnMxNigpOyB9CisgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9zdHJp
bmcubGVuZ3RoKCk7IH0KKworICAgIFVDaGFyIG9wZXJhdG9yW10odW5zaWduZWQgaW50IGkpIGNv
bnN0IHsgcmV0dXJuIG1fc3RyaW5nW2ldOyB9CisKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIEF0b21TdHJpbmcgbnVtYmVyKGludCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBBdG9tU3RyaW5nIG51bWJlcih1bnNpZ25lZCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBBdG9tU3RyaW5nIG51bWJlcih1bnNpZ25lZCBsb25nKTsKKyAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIEF0b21TdHJpbmcgbnVtYmVyKHVuc2lnbmVkIGxvbmcgbG9uZyk7CisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBBdG9tU3RyaW5nIG51bWJlcihmbG9hdCk7CisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBBdG9tU3RyaW5nIG51bWJlcihkb3VibGUpOworICAg
IC8vIElmIHdlIG5lZWQgbW9yZSBvdmVybG9hZHMgb2YgdGhlIG51bWJlciBmdW5jdGlvbiwgd2Ug
Y2FuIGFkZCBhbGwgdGhlIG90aGVycyB0aGF0IFN0cmluZyBoYXMsIGJ1dCB0aGVzZSBzZWVtIHRv
IGRvIGZvciBub3cuCisKKyAgICBib29sIGNvbnRhaW5zKFVDaGFyIGNoYXJhY3RlcikgY29uc3Qg
eyByZXR1cm4gbV9zdHJpbmcuY29udGFpbnMoY2hhcmFjdGVyKTsgfQorICAgIGJvb2wgY29udGFp
bnMoY29uc3QgTENoYXIqIHN0cmluZykgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuY29udGFpbnMo
c3RyaW5nKTsgfQorICAgIGJvb2wgY29udGFpbnMoY29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0
IHsgcmV0dXJuIG1fc3RyaW5nLmNvbnRhaW5zKHN0cmluZyk7IH0KKyAgICBib29sIGNvbnRhaW5z
SWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1f
c3RyaW5nLmNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nKTsgfQorCisgICAgc2l6ZV90
IGZpbmQoVUNoYXIgY2hhcmFjdGVyLCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0IHsgcmV0dXJu
IG1fc3RyaW5nLmZpbmQoY2hhcmFjdGVyLCBzdGFydCk7IH0KKyAgICBzaXplX3QgZmluZChjb25z
dCBMQ2hhciogc3RyaW5nLCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0IHsgcmV0dXJuIG1fc3Ry
aW5nLmZpbmQoc3RyaW5nLCBzdGFydCk7IH0KKyAgICBzaXplX3QgZmluZChjb25zdCBTdHJpbmcm
IHN0cmluZywgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5maW5k
KHN0cmluZywgc3RhcnQpOyB9CisgICAgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShjb25z
dCBTdHJpbmcmIHN0cmluZykgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuZmluZElnbm9yaW5nQVND
SUlDYXNlKHN0cmluZyk7IH0KKyAgICBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0
IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25lZCBzdGFydE9mZnNldCkgY29uc3QgeyByZXR1cm4gbV9z
dHJpbmcuZmluZElnbm9yaW5nQVNDSUlDYXNlKHN0cmluZywgc3RhcnRPZmZzZXQpOyB9CisgICAg
c2l6ZV90IGZpbmQoQ29kZVVuaXRNYXRjaEZ1bmN0aW9uIG1hdGNoRnVuY3Rpb24sIHVuc2lnbmVk
IHN0YXJ0ID0gMCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuZmluZChtYXRjaEZ1bmN0aW9uLCBz
dGFydCk7IH0KKworICAgIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTdHJpbmcmIHN0cmluZykgY29u
c3QgeyByZXR1cm4gbV9zdHJpbmcuc3RhcnRzV2l0aChzdHJpbmcpOyB9CisgICAgYm9vbCBzdGFy
dHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0
dXJuIG1fc3RyaW5nLnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcpOyB9CisgICAg
Ym9vbCBzdGFydHNXaXRoKFVDaGFyIGNoYXJhY3RlcikgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcu
c3RhcnRzV2l0aChjaGFyYWN0ZXIpOyB9CisgICAgdGVtcGxhdGU8dW5zaWduZWQgbWF0Y2hMZW5n
dGg+IGJvb2wgc3RhcnRzV2l0aChjb25zdCBjaGFyICgmcHJlZml4KVttYXRjaExlbmd0aF0pIGNv
bnN0IHsgcmV0dXJuIG1fc3RyaW5nLnN0YXJ0c1dpdGg8bWF0Y2hMZW5ndGg+KHByZWZpeCk7IH0K
KworICAgIGJvb2wgZW5kc1dpdGgoY29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJu
IG1fc3RyaW5nLmVuZHNXaXRoKHN0cmluZyk7IH0KKyAgICBib29sIGVuZHNXaXRoSWdub3JpbmdB
U0NJSUNhc2UoY29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmVu
ZHNXaXRoSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nKTsgfQorICAgIGJvb2wgZW5kc1dpdGgoVUNo
YXIgY2hhcmFjdGVyKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5lbmRzV2l0aChjaGFyYWN0ZXIp
OyB9CisgICAgdGVtcGxhdGU8dW5zaWduZWQgbWF0Y2hMZW5ndGg+IGJvb2wgZW5kc1dpdGgoY29u
c3QgY2hhciAoJnByZWZpeClbbWF0Y2hMZW5ndGhdKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5l
bmRzV2l0aDxtYXRjaExlbmd0aD4ocHJlZml4KTsgfQorCisgICAgV1RGX0VYUE9SVF9QUklWQVRF
IEF0b21TdHJpbmcgY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSBjb25zdDsKKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgQXRvbVN0cmluZyBjb252ZXJ0VG9BU0NJSVVwcGVyY2FzZSgpIGNvbnN0Owor
CisgICAgaW50IHRvSW50KGJvb2wqIG9rID0gMCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcudG9J
bnQob2spOyB9CisgICAgZG91YmxlIHRvRG91YmxlKGJvb2wqIG9rID0gMCkgY29uc3QgeyByZXR1
cm4gbV9zdHJpbmcudG9Eb3VibGUob2spOyB9CisgICAgZmxvYXQgdG9GbG9hdChib29sKiBvayA9
IDApIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLnRvRmxvYXQob2spOyB9CisgICAgYm9vbCBwZXJj
ZW50YWdlKGludCYgcCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcucGVyY2VudGFnZShwKTsgfQor
CisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5pc051bGwoKTsgfQor
ICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmlzRW1wdHkoKTsgfQor
CisjaWYgVVNFKENGKQorICAgIEF0b21TdHJpbmcoQ0ZTdHJpbmdSZWYpOworI2VuZGlmCisKKyNp
ZmRlZiBfX09CSkNfXworICAgIEF0b21TdHJpbmcoTlNTdHJpbmcqKTsKKyAgICBvcGVyYXRvciBO
U1N0cmluZyooKSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfQorI2VuZGlmCisKKyNpZiBPUyhX
SU5ET1dTKSAmJiBVX0lDVV9WRVJTSU9OX01BSk9SX05VTSA+PSA1OQorICAgIEF0b21TdHJpbmco
Y29uc3Qgd2NoYXJfdCogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQorICAgICAgICA6IEF0
b21TdHJpbmcodWNoYXJGcm9tKGNoYXJhY3RlcnMpLCBsZW5ndGgpIHsgfQorCisgICAgQXRvbVN0
cmluZyhjb25zdCB3Y2hhcl90KiBjaGFyYWN0ZXJzKQorICAgICAgICA6IEF0b21TdHJpbmcodWNo
YXJGcm9tKGNoYXJhY3RlcnMpKSB7IH0KKyNlbmRpZgorCisgICAgLy8gQXRvbVN0cmluZzo6ZnJv
bVVURjggd2lsbCByZXR1cm4gYSBudWxsIHN0cmluZyBpZiB0aGUgaW5wdXQgZGF0YSBjb250YWlu
cyBpbnZhbGlkIFVURi04IHNlcXVlbmNlcy4KKyAgICBzdGF0aWMgQXRvbVN0cmluZyBmcm9tVVRG
OChjb25zdCBjaGFyKiwgc2l6ZV90KTsKKyAgICBzdGF0aWMgQXRvbVN0cmluZyBmcm9tVVRGOChj
b25zdCBjaGFyKik7CisKKyNpZm5kZWYgTkRFQlVHCisgICAgdm9pZCBzaG93KCkgY29uc3Q7Cisj
ZW5kaWYKKworcHJpdmF0ZToKKyAgICAvLyBUaGUgZXhwbGljaXQgY29uc3RydWN0b3JzIHdpdGgg
QXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwgbXVzdCBiZSB1c2VkIGZvciBsaXRlcmFs
cy4KKyAgICBBdG9tU3RyaW5nKEFTQ0lJTGl0ZXJhbCk7CisKKyAgICBlbnVtIGNsYXNzIENhc2VD
b252ZXJ0VHlwZSB7IFVwcGVyLCBMb3dlciB9OworICAgIHRlbXBsYXRlPENhc2VDb252ZXJ0VHlw
ZT4gQXRvbVN0cmluZyBjb252ZXJ0QVNDSUlDYXNlKCkgY29uc3Q7CisKKyAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIEF0b21TdHJpbmcgZnJvbVVURjhJbnRlcm5hbChjb25zdCBjaGFyKiwg
Y29uc3QgY2hhciopOworCisgICAgU3RyaW5nIG1fc3RyaW5nOworfTsKKwordXNpbmcgQXRvbWlj
U3RyaW5nID0gQXRvbVN0cmluZzsKKworc3RhdGljX2Fzc2VydChzaXplb2YoQXRvbVN0cmluZykg
PT0gc2l6ZW9mKFN0cmluZyksICJBdG9tU3RyaW5nIGFuZCBTdHJpbmcgbXVzdCBiZSBzYW1lIHNp
emUhIik7CisKK2lubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgQXRvbVN0cmluZyYgYSwgY29u
c3QgQXRvbVN0cmluZyYgYikgeyByZXR1cm4gYS5pbXBsKCkgPT0gYi5pbXBsKCk7IH0KK2Jvb2wg
b3BlcmF0b3I9PShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgTENoYXIqKTsKK2lubGluZSBib29s
IG9wZXJhdG9yPT0oY29uc3QgQXRvbVN0cmluZyYgYSwgY29uc3QgY2hhciogYikgeyByZXR1cm4g
V1RGOjplcXVhbChhLmltcGwoKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGIpKTsg
fQoraW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBdG9tU3RyaW5nJiBhLCBjb25zdCBWZWN0
b3I8VUNoYXI+JiBiKSB7IHJldHVybiBhLmltcGwoKSAmJiBlcXVhbChhLmltcGwoKSwgYi5kYXRh
KCksIGIuc2l6ZSgpKTsgfSAgICAKK2lubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgQXRvbVN0
cmluZyYgYSwgY29uc3QgU3RyaW5nJiBiKSB7IHJldHVybiBlcXVhbChhLmltcGwoKSwgYi5pbXBs
KCkpOyB9CitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IExDaGFyKiBhLCBjb25zdCBBdG9t
U3RyaW5nJiBiKSB7IHJldHVybiBiID09IGE7IH0KK2lubGluZSBib29sIG9wZXJhdG9yPT0oY29u
c3QgU3RyaW5nJiBhLCBjb25zdCBBdG9tU3RyaW5nJiBiKSB7IHJldHVybiBlcXVhbChhLmltcGwo
KSwgYi5pbXBsKCkpOyB9CitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFZlY3RvcjxVQ2hh
cj4mIGEsIGNvbnN0IEF0b21TdHJpbmcmIGIpIHsgcmV0dXJuIGIgPT0gYTsgfQorCitpbmxpbmUg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IEF0b21TdHJpbmcmIGEsIGNvbnN0IEF0b21TdHJpbmcmIGIp
IHsgcmV0dXJuIGEuaW1wbCgpICE9IGIuaW1wbCgpOyB9CitpbmxpbmUgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IEF0b21TdHJpbmcmIGEsIGNvbnN0IExDaGFyKiBiKSB7IHJldHVybiAhKGEgPT0gYik7
IH0KK2lubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgQXRvbVN0cmluZyYgYSwgY29uc3QgY2hh
ciogYikgeyByZXR1cm4gIShhID09IGIpOyB9CitpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IEF0b21TdHJpbmcmIGEsIGNvbnN0IFN0cmluZyYgYikgeyByZXR1cm4gIWVxdWFsKGEuaW1wbCgp
LCBiLmltcGwoKSk7IH0KK2lubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgQXRvbVN0cmluZyYg
YSwgY29uc3QgVmVjdG9yPFVDaGFyPiYgYikgeyByZXR1cm4gIShhID09IGIpOyB9CitpbmxpbmUg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IExDaGFyKiBhLCBjb25zdCBBdG9tU3RyaW5nJiBiKSB7IHJl
dHVybiAhKGIgPT0gYSk7IH0KK2lubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgU3RyaW5nJiBh
LCBjb25zdCBBdG9tU3RyaW5nJiBiKSB7IHJldHVybiAhZXF1YWwoYS5pbXBsKCksIGIuaW1wbCgp
KTsgfQoraW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBWZWN0b3I8VUNoYXI+JiBhLCBjb25z
dCBBdG9tU3RyaW5nJiBiKSB7IHJldHVybiAhKGEgPT0gYik7IH0KKworYm9vbCBlcXVhbElnbm9y
aW5nQVNDSUlDYXNlKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBBdG9tU3RyaW5nJik7Citib29s
IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFN0cmluZyYp
OworYm9vbCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZyYsIGNvbnN0IEF0b21T
dHJpbmcmKTsKK2Jvb2wgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBBdG9tU3RyaW5nJiwg
Y29uc3QgY2hhciopOworCit0ZW1wbGF0ZTx1bnNpZ25lZCBsZW5ndGg+IGJvb2wgZXF1YWxMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IGNoYXIgKCZsb3dl
cmNhc2VMZXR0ZXJzKVtsZW5ndGhdKTsKKworaW5saW5lIEF0b21TdHJpbmc6OkF0b21TdHJpbmco
KQoreworfQorCitpbmxpbmUgQXRvbVN0cmluZzo6QXRvbVN0cmluZyhjb25zdCBMQ2hhciogc3Ry
aW5nKQorICAgIDogbV9zdHJpbmcoQXRvbVN0cmluZ0ltcGw6OmFkZChzdHJpbmcpKQoreworfQor
CitpbmxpbmUgQXRvbVN0cmluZzo6QXRvbVN0cmluZyhjb25zdCBjaGFyKiBzdHJpbmcpCisgICAg
OiBtX3N0cmluZyhBdG9tU3RyaW5nSW1wbDo6YWRkKHN0cmluZykpCit7Cit9CisKK2lubGluZSBB
dG9tU3RyaW5nOjpBdG9tU3RyaW5nKGNvbnN0IExDaGFyKiBzdHJpbmcsIHVuc2lnbmVkIGxlbmd0
aCkKKyAgICA6IG1fc3RyaW5nKEF0b21TdHJpbmdJbXBsOjphZGQoc3RyaW5nLCBsZW5ndGgpKQor
eworfQorCitpbmxpbmUgQXRvbVN0cmluZzo6QXRvbVN0cmluZyhjb25zdCBVQ2hhciogc3RyaW5n
LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgOiBtX3N0cmluZyhBdG9tU3RyaW5nSW1wbDo6YWRkKHN0
cmluZywgbGVuZ3RoKSkKK3sKK30KKworaW5saW5lIEF0b21TdHJpbmc6OkF0b21TdHJpbmcoY29u
c3QgVUNoYXIqIHN0cmluZykKKyAgICA6IG1fc3RyaW5nKEF0b21TdHJpbmdJbXBsOjphZGQoc3Ry
aW5nKSkKK3sKK30KKworaW5saW5lIEF0b21TdHJpbmc6OkF0b21TdHJpbmcoQXRvbVN0cmluZ0lt
cGwqIHN0cmluZykKKyAgICA6IG1fc3RyaW5nKHN0cmluZykKK3sKK30KKworaW5saW5lIEF0b21T
dHJpbmc6OkF0b21TdHJpbmcoUmVmUHRyPEF0b21TdHJpbmdJbXBsPiYmIHN0cmluZykKKyAgICA6
IG1fc3RyaW5nKFdURk1vdmUoc3RyaW5nKSkKK3sKK30KKworaW5saW5lIEF0b21TdHJpbmc6OkF0
b21TdHJpbmcoU3RyaW5nSW1wbCogc3RyaW5nKQorICAgIDogbV9zdHJpbmcoQXRvbVN0cmluZ0lt
cGw6OmFkZChzdHJpbmcpKQoreworfQorCitpbmxpbmUgQXRvbVN0cmluZzo6QXRvbVN0cmluZyhj
b25zdCBTdGF0aWNTdHJpbmdJbXBsKiBzdHJpbmcpCisgICAgOiBtX3N0cmluZyhBdG9tU3RyaW5n
SW1wbDo6YWRkKHN0cmluZykpCit7Cit9CisKK2lubGluZSBBdG9tU3RyaW5nOjpBdG9tU3RyaW5n
KGNvbnN0IFN0cmluZyYgc3RyaW5nKQorICAgIDogbV9zdHJpbmcoQXRvbVN0cmluZ0ltcGw6OmFk
ZChzdHJpbmcuaW1wbCgpKSkKK3sKK30KKworaW5saW5lIEF0b21TdHJpbmc6OkF0b21TdHJpbmco
U3RyaW5nSW1wbCogYmFzZVN0cmluZywgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCkK
KyAgICA6IG1fc3RyaW5nKEF0b21TdHJpbmdJbXBsOjphZGQoYmFzZVN0cmluZywgc3RhcnQsIGxl
bmd0aCkpCit7Cit9CisKK2lubGluZSBBdG9tU3RyaW5nOjpBdG9tU3RyaW5nKFVuaXF1ZWRTdHJp
bmdJbXBsKiB1aWQpCisgICAgOiBtX3N0cmluZyh1aWQpCit7Cit9CisKKyNpZiBVU0UoQ0YpCisK
K2lubGluZSBBdG9tU3RyaW5nOjpBdG9tU3RyaW5nKENGU3RyaW5nUmVmIHN0cmluZykKKyAgICA6
ICBtX3N0cmluZyhBdG9tU3RyaW5nSW1wbDo6YWRkKHN0cmluZykpCit7Cit9CisKKyNlbmRpZgor
CisjaWZkZWYgX19PQkpDX18KKworaW5saW5lIEF0b21TdHJpbmc6OkF0b21TdHJpbmcoTlNTdHJp
bmcqIHN0cmluZykKKyAgICA6IG1fc3RyaW5nKEF0b21TdHJpbmdJbXBsOjphZGQoKF9fYnJpZGdl
IENGU3RyaW5nUmVmKXN0cmluZykpCit7Cit9CisKKyNlbmRpZgorCisvLyBEZWZpbmUgZXh0ZXJu
YWwgZ2xvYmFsIHZhcmlhYmxlcyBmb3IgdGhlIGNvbW1vbmx5IHVzZWQgYXRvbWljIHN0cmluZ3Mu
CisvLyBUaGVzZSBhcmUgb25seSB1c2FibGUgZnJvbSB0aGUgbWFpbiB0aHJlYWQuCitleHRlcm4g
V1RGX0VYUE9SVF9QUklWQVRFIExhenlOZXZlckRlc3Ryb3llZDxBdG9tU3RyaW5nPiBudWxsQXRv
bURhdGE7CitleHRlcm4gV1RGX0VYUE9SVF9QUklWQVRFIExhenlOZXZlckRlc3Ryb3llZDxBdG9t
U3RyaW5nPiBlbXB0eUF0b21EYXRhOworZXh0ZXJuIFdURl9FWFBPUlRfUFJJVkFURSBMYXp5TmV2
ZXJEZXN0cm95ZWQ8QXRvbVN0cmluZz4gc3RhckF0b21EYXRhOworZXh0ZXJuIFdURl9FWFBPUlRf
UFJJVkFURSBMYXp5TmV2ZXJEZXN0cm95ZWQ8QXRvbVN0cmluZz4geG1sQXRvbURhdGE7CitleHRl
cm4gV1RGX0VYUE9SVF9QUklWQVRFIExhenlOZXZlckRlc3Ryb3llZDxBdG9tU3RyaW5nPiB4bWxu
c0F0b21EYXRhOworCitpbmxpbmUgY29uc3QgQXRvbVN0cmluZyYgbnVsbEF0b20oKSB7IHJldHVy
biBudWxsQXRvbURhdGEuZ2V0KCk7IH0KK2lubGluZSBjb25zdCBBdG9tU3RyaW5nJiBlbXB0eUF0
b20oKSB7IHJldHVybiBlbXB0eUF0b21EYXRhLmdldCgpOyB9CitpbmxpbmUgY29uc3QgQXRvbVN0
cmluZyYgc3RhckF0b20oKSB7IHJldHVybiBzdGFyQXRvbURhdGEuZ2V0KCk7IH0KK2lubGluZSBj
b25zdCBBdG9tU3RyaW5nJiB4bWxBdG9tKCkgeyByZXR1cm4geG1sQXRvbURhdGEuZ2V0KCk7IH0K
K2lubGluZSBjb25zdCBBdG9tU3RyaW5nJiB4bWxuc0F0b20oKSB7IHJldHVybiB4bWxuc0F0b21E
YXRhLmdldCgpOyB9CisKK2lubGluZSBBdG9tU3RyaW5nIEF0b21TdHJpbmc6OmZyb21VVEY4KGNv
bnN0IGNoYXIqIGNoYXJhY3RlcnMsIHNpemVfdCBsZW5ndGgpCit7CisgICAgaWYgKCFjaGFyYWN0
ZXJzKQorICAgICAgICByZXR1cm4gbnVsbEF0b20oKTsKKyAgICBpZiAoIWxlbmd0aCkKKyAgICAg
ICAgcmV0dXJuIGVtcHR5QXRvbSgpOworICAgIHJldHVybiBmcm9tVVRGOEludGVybmFsKGNoYXJh
Y3RlcnMsIGNoYXJhY3RlcnMgKyBsZW5ndGgpOworfQorCitpbmxpbmUgQXRvbVN0cmluZyBBdG9t
U3RyaW5nOjpmcm9tVVRGOChjb25zdCBjaGFyKiBjaGFyYWN0ZXJzKQoreworICAgIGlmICghY2hh
cmFjdGVycykKKyAgICAgICAgcmV0dXJuIG51bGxBdG9tKCk7CisgICAgaWYgKCEqY2hhcmFjdGVy
cykKKyAgICAgICAgcmV0dXJuIGVtcHR5QXRvbSgpOworICAgIHJldHVybiBmcm9tVVRGOEludGVy
bmFsKGNoYXJhY3RlcnMsIG51bGxwdHIpOworfQorCisvLyBBdG9tU3RyaW5nSGFzaCBpcyB0aGUg
ZGVmYXVsdCBoYXNoIGZvciBBdG9tU3RyaW5nCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3Qg
RGVmYXVsdEhhc2g7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxBdG9tU3RyaW5nPiB7
CisgICAgdHlwZWRlZiBBdG9tU3RyaW5nSGFzaCBIYXNoOworfTsKKwordGVtcGxhdGU8dW5zaWdu
ZWQgbGVuZ3RoPiBpbmxpbmUgYm9vbCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShjb25z
dCBBdG9tU3RyaW5nJiBzdHJpbmcsIGNvbnN0IGNoYXIgKCZsb3dlcmNhc2VMZXR0ZXJzKVtsZW5n
dGhdKQoreworICAgIHJldHVybiBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcu
c3RyaW5nKCksIGxvd2VyY2FzZUxldHRlcnMpOworfQorCitpbmxpbmUgYm9vbCBlcXVhbElnbm9y
aW5nQVNDSUlDYXNlKGNvbnN0IEF0b21TdHJpbmcmIGEsIGNvbnN0IEF0b21TdHJpbmcmIGIpCit7
CisgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoYS5zdHJpbmcoKSwgYi5zdHJpbmco
KSk7Cit9CisKK2lubGluZSBib29sIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgQXRvbVN0
cmluZyYgYSwgY29uc3QgU3RyaW5nJiBiKQoreworICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVND
SUlDYXNlKGEuc3RyaW5nKCksIGIpOworfQorCitpbmxpbmUgYm9vbCBlcXVhbElnbm9yaW5nQVND
SUlDYXNlKGNvbnN0IFN0cmluZyYgYSwgY29uc3QgQXRvbVN0cmluZyYgYikKK3sKKyAgICByZXR1
cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShhLCBiLnN0cmluZygpKTsKK30KKworaW5saW5lIGJv
b2wgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBBdG9tU3RyaW5nJiBhLCBjb25zdCBjaGFy
KiBiKQoreworICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGEuc3RyaW5nKCksIGIp
OworfQorCit0ZW1wbGF0ZTw+IHN0cnVjdCBJbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uVHJhaXQ8
QXRvbVN0cmluZz4geworICAgIHVzaW5nIFJldHVyblR5cGUgPSBBdG9tU3RyaW5nOworICAgIHVz
aW5nIEFkZGl0aW9uYWxBcmd1bWVudFR5cGUgPSB2b2lkOworICAgIHN0YXRpYyBBdG9tU3RyaW5n
IGZsdXNoKExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIHZvaWQqKSB7IHJldHVy
biB7IGNoYXJhY3RlcnMsIGxlbmd0aCB9OyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwor
dXNpbmcgV1RGOjpBdG9tU3RyaW5nOwordXNpbmcgV1RGOjpBdG9taWNTdHJpbmc7Cit1c2luZyBX
VEY6Om51bGxBdG9tOwordXNpbmcgV1RGOjplbXB0eUF0b207Cit1c2luZyBXVEY6OnN0YXJBdG9t
OwordXNpbmcgV1RGOjp4bWxBdG9tOwordXNpbmcgV1RGOjp4bWxuc0F0b207CisKKyNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvdGV4dC9BdG9tU3RyaW5nSGFzaC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5n
SGFzaC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjA0ZjU5MDhjYzFjYzYzNDg1NmE0ODI5YmY4NDU4MDg3MDgxYmJj
OTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmdIYXNo
LmgKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAqIDMuICBOZWl0aGVy
IHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAg
ICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJp
bmcuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgorCituYW1lc3BhY2UgV1RGIHsKKwor
ICAgIHN0cnVjdCBBdG9tU3RyaW5nSGFzaCB7CisgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNo
KGNvbnN0IEF0b21TdHJpbmcmIGtleSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGtl
eS5pbXBsKCktPmV4aXN0aW5nSGFzaCgpOworICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIGJv
b2wgZXF1YWwoY29uc3QgQXRvbVN0cmluZyYgYSwgY29uc3QgQXRvbVN0cmluZyYgYikKKyAgICAg
ICAgeworICAgICAgICAgICAgcmV0dXJuIGEgPT0gYjsKKyAgICAgICAgfQorCisgICAgICAgIHN0
YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gZmFsc2U7Cisg
ICAgfTsKKworICAgIHRlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8V1RGOjpBdG9tU3RyaW5n
PiA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxXVEY6OkF0b21TdHJpbmc+IHsKKyAgICAgICAgc3Rh
dGljIGNvbnN0IGJvb2wgaGFzSXNFbXB0eVZhbHVlRnVuY3Rpb24gPSB0cnVlOworICAgICAgICBz
dGF0aWMgYm9vbCBpc0VtcHR5VmFsdWUoY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZS5pc051bGwoKTsKKyAgICAgICAgfQorCisgICAg
ICAgIHN0YXRpYyB2b2lkIGN1c3RvbURlbGV0ZUJ1Y2tldChBdG9tU3RyaW5nJiB2YWx1ZSkKKyAg
ICAgICAgeworICAgICAgICAgICAgLy8gU2VlIHVuaXF1ZV9wdHIncyBjdXN0b21EZWxldGVCdWNr
ZXQoKSBmb3IgYW4gZXhwbGFuYXRpb24uCisgICAgICAgICAgICBBU1NFUlQoIWlzRGVsZXRlZFZh
bHVlKHZhbHVlKSk7CisgICAgICAgICAgICBBdG9tU3RyaW5nIHZhbHVlVG9CZURlc3Ryb3llZCA9
IFdURk1vdmUodmFsdWUpOworICAgICAgICAgICAgY29uc3RydWN0RGVsZXRlZFZhbHVlKHZhbHVl
KTsKKyAgICAgICAgfQorICAgIH07CisKK30KKwordXNpbmcgV1RGOjpBdG9tU3RyaW5nSGFzaDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZ0ltcGwuY3BwIGIvU291
cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nSW1wbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODdhNjRlZWFi
MjVhYTc0ZGMwYjkxOTA3YjJjODQ0OGI5NWQxZmM5YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZ0ltcGwuY3BwCkBAIC0wLDAgKzEsNTUzIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMDgsIDIwMTMtMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgUGF0cmljayBHYW5zdGVyZXIgPHBh
cm9nYUBwYXJvZ2EuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraTx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
CisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmdJbXBsLmg+CisKKyNpbmNsdWRl
IDx3dGYvQ29tbWFQcmludGVyLmg+CisjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KKyNpbmNsdWRl
IDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgorI2lu
Y2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nVGFi
bGUuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9JbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorI2luY2x1ZGUgPHd0Zi91bmljb2RlL1VU
RjhDb252ZXJzaW9uLmg+CisKKyNpZiBVU0UoV0VCX1RIUkVBRCkKKyNpbmNsdWRlIDx3dGYvTG9j
ay5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXVEYgeworCit1c2luZyBuYW1lc3BhY2UgVW5pY29k
ZTsKKworI2lmIFVTRShXRUJfVEhSRUFEKQorCitjbGFzcyBBdG9tU3RyaW5nVGFibGVMb2NrZXIg
OiBwdWJsaWMgTG9ja0hvbGRlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXRvbVN0cmlu
Z1RhYmxlTG9ja2VyKTsKKworICAgIHN0YXRpYyBMb2NrIHNfc3RyaW5nVGFibGVMb2NrOworcHVi
bGljOgorICAgIEF0b21TdHJpbmdUYWJsZUxvY2tlcigpCisgICAgICAgIDogTG9ja0hvbGRlcigm
c19zdHJpbmdUYWJsZUxvY2spCisgICAgeworICAgIH0KK307CisKK0xvY2sgQXRvbVN0cmluZ1Rh
YmxlTG9ja2VyOjpzX3N0cmluZ1RhYmxlTG9jazsKKworI2Vsc2UKKworY2xhc3MgQXRvbVN0cmlu
Z1RhYmxlTG9ja2VyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBdG9tU3RyaW5nVGFibGVM
b2NrZXIpOworcHVibGljOgorICAgIEF0b21TdHJpbmdUYWJsZUxvY2tlcigpIHsgfQorfTsKKwor
I2VuZGlmIC8vIFVTRShXRUJfVEhSRUFEKQorCit1c2luZyBTdHJpbmdUYWJsZUltcGwgPSBIYXNo
U2V0PFN0cmluZ0ltcGwqPjsKKworc3RhdGljIEFMV0FZU19JTkxJTkUgU3RyaW5nVGFibGVJbXBs
JiBzdHJpbmdUYWJsZSgpCit7CisgICAgcmV0dXJuIFRocmVhZDo6Y3VycmVudCgpLmF0b21TdHJp
bmdUYWJsZSgpLT50YWJsZSgpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBI
YXNoVHJhbnNsYXRvcj4KK3N0YXRpYyBpbmxpbmUgUmVmPEF0b21TdHJpbmdJbXBsPiBhZGRUb1N0
cmluZ1RhYmxlKEF0b21TdHJpbmdUYWJsZUxvY2tlciYsIFN0cmluZ1RhYmxlSW1wbCYgYXRvbVN0
cmluZ1RhYmxlLCBjb25zdCBUJiB2YWx1ZSkKK3sKKyAgICBhdXRvIGFkZFJlc3VsdCA9IGF0b21T
dHJpbmdUYWJsZS5hZGQ8SGFzaFRyYW5zbGF0b3I+KHZhbHVlKTsKKworICAgIC8vIElmIHRoZSBz
dHJpbmcgaXMgbmV3bHktdHJhbnNsYXRlZCwgdGhlbiB3ZSBuZWVkIHRvIGFkb3B0IGl0LgorICAg
IC8vIFRoZSBib29sZWFuIGluIHRoZSBwYWlyIHRlbGxzIHVzIGlmIHRoYXQgaXMgc28uCisgICAg
aWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICByZXR1cm4gYWRvcHRSZWYoc3RhdGlj
X2Nhc3Q8QXRvbVN0cmluZ0ltcGwmPigqKmFkZFJlc3VsdC5pdGVyYXRvcikpOworICAgIHJldHVy
biAqc3RhdGljX2Nhc3Q8QXRvbVN0cmluZ0ltcGwqPigqYWRkUmVzdWx0Lml0ZXJhdG9yKTsKK30K
KwordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSGFzaFRyYW5zbGF0b3I+CitzdGF0aWMg
aW5saW5lIFJlZjxBdG9tU3RyaW5nSW1wbD4gYWRkVG9TdHJpbmdUYWJsZShjb25zdCBUJiB2YWx1
ZSkKK3sKKyAgICBBdG9tU3RyaW5nVGFibGVMb2NrZXIgbG9ja2VyOworICAgIHJldHVybiBhZGRU
b1N0cmluZ1RhYmxlPFQsIEhhc2hUcmFuc2xhdG9yPihsb2NrZXIsIHN0cmluZ1RhYmxlKCksIHZh
bHVlKTsKK30KKworc3RydWN0IENTdHJpbmdUcmFuc2xhdG9yIHsKKyAgICBzdGF0aWMgdW5zaWdu
ZWQgaGFzaChjb25zdCBMQ2hhciogY2hhcmFjdGVycykKKyAgICB7CisgICAgICAgIHJldHVybiBT
dHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKGNoYXJhY3RlcnMpOworICAg
IH0KKworICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBlcXVhbChTdHJpbmdJbXBsKiBzdHIsIGNvbnN0
IExDaGFyKiBjaGFyYWN0ZXJzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFdURjo6ZXF1YWwoc3Ry
LCBjaGFyYWN0ZXJzKTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCB0cmFuc2xhdGUoU3RyaW5n
SW1wbComIGxvY2F0aW9uLCBjb25zdCBMQ2hhciogY29uc3QmIGNoYXJhY3RlcnMsIHVuc2lnbmVk
IGhhc2gpCisgICAgeworICAgICAgICBsb2NhdGlvbiA9ICZTdHJpbmdJbXBsOjpjcmVhdGUoY2hh
cmFjdGVycykubGVha1JlZigpOworICAgICAgICBsb2NhdGlvbi0+c2V0SGFzaChoYXNoKTsKKyAg
ICAgICAgbG9jYXRpb24tPnNldElzQXRvbWljKHRydWUpOworICAgIH0KK307CisKK1JlZlB0cjxB
dG9tU3RyaW5nSW1wbD4gQXRvbVN0cmluZ0ltcGw6OmFkZChjb25zdCBMQ2hhciogY2hhcmFjdGVy
cykKK3sKKyAgICBpZiAoIWNoYXJhY3RlcnMpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IGlmICghKmNoYXJhY3RlcnMpCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxBdG9tU3RyaW5n
SW1wbCo+KFN0cmluZ0ltcGw6OmVtcHR5KCkpOworCisgICAgcmV0dXJuIGFkZFRvU3RyaW5nVGFi
bGU8Y29uc3QgTENoYXIqLCBDU3RyaW5nVHJhbnNsYXRvcj4oY2hhcmFjdGVycyk7Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CitzdHJ1Y3QgSGFzaFRyYW5zbGF0b3JDaGFy
QnVmZmVyIHsKKyAgICBjb25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJzOworICAgIHVuc2ln
bmVkIGxlbmd0aDsKKyAgICB1bnNpZ25lZCBoYXNoOworCisgICAgSGFzaFRyYW5zbGF0b3JDaGFy
QnVmZmVyKGNvbnN0IENoYXJhY3RlclR5cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkK
KyAgICAgICAgOiBjaGFyYWN0ZXJzKGNoYXJhY3RlcnMpCisgICAgICAgICwgbGVuZ3RoKGxlbmd0
aCkKKyAgICAgICAgLCBoYXNoKFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJp
dHMoY2hhcmFjdGVycywgbGVuZ3RoKSkKKyAgICB7CisgICAgfQorCisgICAgSGFzaFRyYW5zbGF0
b3JDaGFyQnVmZmVyKGNvbnN0IENoYXJhY3RlclR5cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxl
bmd0aCwgdW5zaWduZWQgaGFzaCkKKyAgICAgICAgOiBjaGFyYWN0ZXJzKGNoYXJhY3RlcnMpCisg
ICAgICAgICwgbGVuZ3RoKGxlbmd0aCkKKyAgICAgICAgLCBoYXNoKGhhc2gpCisgICAgeworICAg
IH0KK307CisKK3VzaW5nIFVDaGFyQnVmZmVyID0gSGFzaFRyYW5zbGF0b3JDaGFyQnVmZmVyPFVD
aGFyPjsKK3N0cnVjdCBVQ2hhckJ1ZmZlclRyYW5zbGF0b3IgeworICAgIHN0YXRpYyB1bnNpZ25l
ZCBoYXNoKGNvbnN0IFVDaGFyQnVmZmVyJiBidWYpCisgICAgeworICAgICAgICByZXR1cm4gYnVm
Lmhhc2g7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgZXF1YWwoU3RyaW5nSW1wbCogY29uc3Qm
IHN0ciwgY29uc3QgVUNoYXJCdWZmZXImIGJ1ZikKKyAgICB7CisgICAgICAgIHJldHVybiBXVEY6
OmVxdWFsKHN0ciwgYnVmLmNoYXJhY3RlcnMsIGJ1Zi5sZW5ndGgpOworICAgIH0KKworICAgIHN0
YXRpYyB2b2lkIHRyYW5zbGF0ZShTdHJpbmdJbXBsKiYgbG9jYXRpb24sIGNvbnN0IFVDaGFyQnVm
ZmVyJiBidWYsIHVuc2lnbmVkIGhhc2gpCisgICAgeworICAgICAgICBsb2NhdGlvbiA9ICZTdHJp
bmdJbXBsOjpjcmVhdGU4Qml0SWZQb3NzaWJsZShidWYuY2hhcmFjdGVycywgYnVmLmxlbmd0aCku
bGVha1JlZigpOworICAgICAgICBsb2NhdGlvbi0+c2V0SGFzaChoYXNoKTsKKyAgICAgICAgbG9j
YXRpb24tPnNldElzQXRvbWljKHRydWUpOworICAgIH0KK307CisKK3N0cnVjdCBIYXNoQW5kVVRG
OENoYXJhY3RlcnMgeworICAgIHVuc2lnbmVkIGhhc2g7CisgICAgY29uc3QgY2hhciogY2hhcmFj
dGVyczsKKyAgICB1bnNpZ25lZCBsZW5ndGg7CisgICAgdW5zaWduZWQgdXRmMTZMZW5ndGg7Cit9
OworCitzdHJ1Y3QgSGFzaEFuZFVURjhDaGFyYWN0ZXJzVHJhbnNsYXRvciB7CisgICAgc3RhdGlj
IHVuc2lnbmVkIGhhc2goY29uc3QgSGFzaEFuZFVURjhDaGFyYWN0ZXJzJiBidWZmZXIpCisgICAg
eworICAgICAgICByZXR1cm4gYnVmZmVyLmhhc2g7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wg
ZXF1YWwoU3RyaW5nSW1wbCogY29uc3QmIHN0cmluZywgY29uc3QgSGFzaEFuZFVURjhDaGFyYWN0
ZXJzJiBidWZmZXIpCisgICAgeworICAgICAgICBpZiAoYnVmZmVyLnV0ZjE2TGVuZ3RoICE9IHN0
cmluZy0+bGVuZ3RoKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgLy8g
SWYgYnVmZmVyIGNvbnRhaW5zIG9ubHkgQVNDSUkgY2hhcmFjdGVycyBVVEYtOCBhbmQgVVRGMTYg
bGVuZ3RoIGFyZSB0aGUgc2FtZS4KKyAgICAgICAgaWYgKGJ1ZmZlci51dGYxNkxlbmd0aCAhPSBi
dWZmZXIubGVuZ3RoKSB7CisgICAgICAgICAgICBpZiAoc3RyaW5nLT5pczhCaXQoKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZXF1YWxMYXRpbjFXaXRoVVRGOChzdHJpbmctPmNoYXJhY3RlcnM4
KCksIGJ1ZmZlci5jaGFyYWN0ZXJzLCBidWZmZXIuY2hhcmFjdGVycyArIGJ1ZmZlci5sZW5ndGgp
OworCisgICAgICAgICAgICByZXR1cm4gZXF1YWxVVEYxNldpdGhVVEY4KHN0cmluZy0+Y2hhcmFj
dGVyczE2KCksIGJ1ZmZlci5jaGFyYWN0ZXJzLCBidWZmZXIuY2hhcmFjdGVycyArIGJ1ZmZlci5s
ZW5ndGgpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHN0cmluZy0+aXM4Qml0KCkpIHsKKyAg
ICAgICAgICAgIGNvbnN0IExDaGFyKiBzdHJpbmdDaGFyYWN0ZXJzID0gc3RyaW5nLT5jaGFyYWN0
ZXJzOCgpOworCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYnVmZmVyLmxl
bmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKGlzQVNDSUkoYnVmZmVyLmNoYXJh
Y3RlcnNbaV0pKTsKKyAgICAgICAgICAgICAgICBpZiAoc3RyaW5nQ2hhcmFjdGVyc1tpXSAhPSBi
dWZmZXIuY2hhcmFjdGVyc1tpXSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisg
ICAgICAgIGNvbnN0IFVDaGFyKiBzdHJpbmdDaGFyYWN0ZXJzID0gc3RyaW5nLT5jaGFyYWN0ZXJz
MTYoKTsKKworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYnVmZmVyLmxlbmd0aDsg
KytpKSB7CisgICAgICAgICAgICBBU1NFUlQoaXNBU0NJSShidWZmZXIuY2hhcmFjdGVyc1tpXSkp
OworICAgICAgICAgICAgaWYgKHN0cmluZ0NoYXJhY3RlcnNbaV0gIT0gYnVmZmVyLmNoYXJhY3Rl
cnNbaV0pCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgdHJhbnNsYXRlKFN0cmlu
Z0ltcGwqJiBsb2NhdGlvbiwgY29uc3QgSGFzaEFuZFVURjhDaGFyYWN0ZXJzJiBidWZmZXIsIHVu
c2lnbmVkIGhhc2gpCisgICAgeworICAgICAgICBVQ2hhciogdGFyZ2V0OworICAgICAgICBhdXRv
IG5ld1N0cmluZyA9IFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoYnVmZmVyLnV0ZjE2
TGVuZ3RoLCB0YXJnZXQpOworCisgICAgICAgIGJvb2wgaXNBbGxBU0NJSTsKKyAgICAgICAgY29u
c3QgY2hhciogc291cmNlID0gYnVmZmVyLmNoYXJhY3RlcnM7CisgICAgICAgIGlmICghY29udmVy
dFVURjhUb1VURjE2KHNvdXJjZSwgc291cmNlICsgYnVmZmVyLmxlbmd0aCwgJnRhcmdldCwgdGFy
Z2V0ICsgYnVmZmVyLnV0ZjE2TGVuZ3RoLCAmaXNBbGxBU0NJSSkpCisgICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKworICAgICAgICBpZiAoaXNBbGxBU0NJSSkKKyAgICAgICAgICAg
IG5ld1N0cmluZyA9IFN0cmluZ0ltcGw6OmNyZWF0ZShidWZmZXIuY2hhcmFjdGVycywgYnVmZmVy
Lmxlbmd0aCk7CisKKyAgICAgICAgbG9jYXRpb24gPSAmbmV3U3RyaW5nLmxlYWtSZWYoKTsKKyAg
ICAgICAgbG9jYXRpb24tPnNldEhhc2goaGFzaCk7CisgICAgICAgIGxvY2F0aW9uLT5zZXRJc0F0
b21pYyh0cnVlKTsKKyAgICB9Cit9OworCitSZWZQdHI8QXRvbVN0cmluZ0ltcGw+IEF0b21TdHJp
bmdJbXBsOjphZGQoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKK3sK
KyAgICBpZiAoIWNoYXJhY3RlcnMpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgaWYg
KCFsZW5ndGgpCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxBdG9tU3RyaW5nSW1wbCo+KFN0
cmluZ0ltcGw6OmVtcHR5KCkpOworCisgICAgVUNoYXJCdWZmZXIgYnVmZmVyIHsgY2hhcmFjdGVy
cywgbGVuZ3RoIH07CisgICAgcmV0dXJuIGFkZFRvU3RyaW5nVGFibGU8VUNoYXJCdWZmZXIsIFVD
aGFyQnVmZmVyVHJhbnNsYXRvcj4oYnVmZmVyKTsKK30KKworUmVmUHRyPEF0b21TdHJpbmdJbXBs
PiBBdG9tU3RyaW5nSW1wbDo6YWRkKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzKQoreworICAgIGlm
ICghY2hhcmFjdGVycykKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICB1bnNpZ25lZCBs
ZW5ndGggPSAwOworICAgIHdoaWxlIChjaGFyYWN0ZXJzW2xlbmd0aF0gIT0gVUNoYXIoMCkpCisg
ICAgICAgICsrbGVuZ3RoOworCisgICAgaWYgKCFsZW5ndGgpCisgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxBdG9tU3RyaW5nSW1wbCo+KFN0cmluZ0ltcGw6OmVtcHR5KCkpOworCisgICAgVUNo
YXJCdWZmZXIgYnVmZmVyIHsgY2hhcmFjdGVycywgbGVuZ3RoIH07CisgICAgcmV0dXJuIGFkZFRv
U3RyaW5nVGFibGU8VUNoYXJCdWZmZXIsIFVDaGFyQnVmZmVyVHJhbnNsYXRvcj4oYnVmZmVyKTsK
K30KKworc3RydWN0IFN1YnN0cmluZ0xvY2F0aW9uIHsKKyAgICBTdHJpbmdJbXBsKiBiYXNlU3Ry
aW5nOworICAgIHVuc2lnbmVkIHN0YXJ0OworICAgIHVuc2lnbmVkIGxlbmd0aDsKK307CisKK3N0
cnVjdCBTdWJzdHJpbmdUcmFuc2xhdG9yIHsKKyAgICBzdGF0aWMgdm9pZCB0cmFuc2xhdGUoU3Ry
aW5nSW1wbComIGxvY2F0aW9uLCBjb25zdCBTdWJzdHJpbmdMb2NhdGlvbiYgYnVmZmVyLCB1bnNp
Z25lZCBoYXNoKQorICAgIHsKKyAgICAgICAgbG9jYXRpb24gPSAmU3RyaW5nSW1wbDo6Y3JlYXRl
U3Vic3RyaW5nU2hhcmluZ0ltcGwoKmJ1ZmZlci5iYXNlU3RyaW5nLCBidWZmZXIuc3RhcnQsIGJ1
ZmZlci5sZW5ndGgpLmxlYWtSZWYoKTsKKyAgICAgICAgbG9jYXRpb24tPnNldEhhc2goaGFzaCk7
CisgICAgICAgIGxvY2F0aW9uLT5zZXRJc0F0b21pYyh0cnVlKTsKKyAgICB9Cit9OworCitzdHJ1
Y3QgU3Vic3RyaW5nVHJhbnNsYXRvcjggOiBTdWJzdHJpbmdUcmFuc2xhdG9yIHsKKyAgICBzdGF0
aWMgdW5zaWduZWQgaGFzaChjb25zdCBTdWJzdHJpbmdMb2NhdGlvbiYgYnVmZmVyKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMo
YnVmZmVyLmJhc2VTdHJpbmctPmNoYXJhY3RlcnM4KCkgKyBidWZmZXIuc3RhcnQsIGJ1ZmZlci5s
ZW5ndGgpOworICAgIH0KKworICAgIHN0YXRpYyBib29sIGVxdWFsKFN0cmluZ0ltcGwqIGNvbnN0
JiBzdHJpbmcsIGNvbnN0IFN1YnN0cmluZ0xvY2F0aW9uJiBidWZmZXIpCisgICAgeworICAgICAg
ICByZXR1cm4gV1RGOjplcXVhbChzdHJpbmcsIGJ1ZmZlci5iYXNlU3RyaW5nLT5jaGFyYWN0ZXJz
OCgpICsgYnVmZmVyLnN0YXJ0LCBidWZmZXIubGVuZ3RoKTsKKyAgICB9Cit9OworCitzdHJ1Y3Qg
U3Vic3RyaW5nVHJhbnNsYXRvcjE2IDogU3Vic3RyaW5nVHJhbnNsYXRvciB7CisgICAgc3RhdGlj
IHVuc2lnbmVkIGhhc2goY29uc3QgU3Vic3RyaW5nTG9jYXRpb24mIGJ1ZmZlcikKKyAgICB7Cisg
ICAgICAgIHJldHVybiBTdHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKGJ1
ZmZlci5iYXNlU3RyaW5nLT5jaGFyYWN0ZXJzMTYoKSArIGJ1ZmZlci5zdGFydCwgYnVmZmVyLmxl
bmd0aCk7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgZXF1YWwoU3RyaW5nSW1wbCogY29uc3Qm
IHN0cmluZywgY29uc3QgU3Vic3RyaW5nTG9jYXRpb24mIGJ1ZmZlcikKKyAgICB7CisgICAgICAg
IHJldHVybiBXVEY6OmVxdWFsKHN0cmluZywgYnVmZmVyLmJhc2VTdHJpbmctPmNoYXJhY3RlcnMx
NigpICsgYnVmZmVyLnN0YXJ0LCBidWZmZXIubGVuZ3RoKTsKKyAgICB9Cit9OworCitSZWZQdHI8
QXRvbVN0cmluZ0ltcGw+IEF0b21TdHJpbmdJbXBsOjphZGQoU3RyaW5nSW1wbCogYmFzZVN0cmlu
ZywgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBpZiAoIWJhc2VTdHJp
bmcpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgaWYgKCFsZW5ndGggfHwgc3RhcnQg
Pj0gYmFzZVN0cmluZy0+bGVuZ3RoKCkpCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxBdG9t
U3RyaW5nSW1wbCo+KFN0cmluZ0ltcGw6OmVtcHR5KCkpOworCisgICAgdW5zaWduZWQgbWF4TGVu
Z3RoID0gYmFzZVN0cmluZy0+bGVuZ3RoKCkgLSBzdGFydDsKKyAgICBpZiAobGVuZ3RoID49IG1h
eExlbmd0aCkgeworICAgICAgICBpZiAoIXN0YXJ0KQorICAgICAgICAgICAgcmV0dXJuIGFkZChi
YXNlU3RyaW5nKTsKKyAgICAgICAgbGVuZ3RoID0gbWF4TGVuZ3RoOworICAgIH0KKworICAgIFN1
YnN0cmluZ0xvY2F0aW9uIGJ1ZmZlciA9IHsgYmFzZVN0cmluZywgc3RhcnQsIGxlbmd0aCB9Owor
ICAgIGlmIChiYXNlU3RyaW5nLT5pczhCaXQoKSkKKyAgICAgICAgcmV0dXJuIGFkZFRvU3RyaW5n
VGFibGU8U3Vic3RyaW5nTG9jYXRpb24sIFN1YnN0cmluZ1RyYW5zbGF0b3I4PihidWZmZXIpOwor
ICAgIHJldHVybiBhZGRUb1N0cmluZ1RhYmxlPFN1YnN0cmluZ0xvY2F0aW9uLCBTdWJzdHJpbmdU
cmFuc2xhdG9yMTY+KGJ1ZmZlcik7Cit9CisgICAgCit1c2luZyBMQ2hhckJ1ZmZlciA9IEhhc2hU
cmFuc2xhdG9yQ2hhckJ1ZmZlcjxMQ2hhcj47CitzdHJ1Y3QgTENoYXJCdWZmZXJUcmFuc2xhdG9y
IHsKKyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBMQ2hhckJ1ZmZlciYgYnVmKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGJ1Zi5oYXNoOworICAgIH0KKworICAgIHN0YXRpYyBib29sIGVx
dWFsKFN0cmluZ0ltcGwqIGNvbnN0JiBzdHIsIGNvbnN0IExDaGFyQnVmZmVyJiBidWYpCisgICAg
eworICAgICAgICByZXR1cm4gV1RGOjplcXVhbChzdHIsIGJ1Zi5jaGFyYWN0ZXJzLCBidWYubGVu
Z3RoKTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCB0cmFuc2xhdGUoU3RyaW5nSW1wbComIGxv
Y2F0aW9uLCBjb25zdCBMQ2hhckJ1ZmZlciYgYnVmLCB1bnNpZ25lZCBoYXNoKQorICAgIHsKKyAg
ICAgICAgbG9jYXRpb24gPSAmU3RyaW5nSW1wbDo6Y3JlYXRlKGJ1Zi5jaGFyYWN0ZXJzLCBidWYu
bGVuZ3RoKS5sZWFrUmVmKCk7CisgICAgICAgIGxvY2F0aW9uLT5zZXRIYXNoKGhhc2gpOworICAg
ICAgICBsb2NhdGlvbi0+c2V0SXNBdG9taWModHJ1ZSk7CisgICAgfQorfTsKKwordGVtcGxhdGU8
dHlwZW5hbWUgQ2hhclR5cGU+CitzdHJ1Y3QgQnVmZmVyRnJvbVN0YXRpY0RhdGFUcmFuc2xhdG9y
IHsKKyAgICB1c2luZyBCdWZmZXIgPSBIYXNoVHJhbnNsYXRvckNoYXJCdWZmZXI8Q2hhclR5cGU+
OworICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IEJ1ZmZlciYgYnVmKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGJ1Zi5oYXNoOworICAgIH0KKworICAgIHN0YXRpYyBib29sIGVxdWFsKFN0
cmluZ0ltcGwqIGNvbnN0JiBzdHIsIGNvbnN0IEJ1ZmZlciYgYnVmKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIFdURjo6ZXF1YWwoc3RyLCBidWYuY2hhcmFjdGVycywgYnVmLmxlbmd0aCk7CisgICAg
fQorCisgICAgc3RhdGljIHZvaWQgdHJhbnNsYXRlKFN0cmluZ0ltcGwqJiBsb2NhdGlvbiwgY29u
c3QgQnVmZmVyJiBidWYsIHVuc2lnbmVkIGhhc2gpCisgICAgeworICAgICAgICBsb2NhdGlvbiA9
ICZTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29weWluZyhidWYuY2hhcmFjdGVycywgYnVmLmxl
bmd0aCkubGVha1JlZigpOworICAgICAgICBsb2NhdGlvbi0+c2V0SGFzaChoYXNoKTsKKyAgICAg
ICAgbG9jYXRpb24tPnNldElzQXRvbWljKHRydWUpOworICAgIH0KK307CisKK1JlZlB0cjxBdG9t
U3RyaW5nSW1wbD4gQXRvbVN0cmluZ0ltcGw6OmFkZChjb25zdCBMQ2hhciogY2hhcmFjdGVycywg
dW5zaWduZWQgbGVuZ3RoKQoreworICAgIGlmICghY2hhcmFjdGVycykKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKKyAgICBpZiAoIWxlbmd0aCkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PEF0b21TdHJpbmdJbXBsKj4oU3RyaW5nSW1wbDo6ZW1wdHkoKSk7CisKKyAgICBMQ2hhckJ1ZmZl
ciBidWZmZXIgeyBjaGFyYWN0ZXJzLCBsZW5ndGggfTsKKyAgICByZXR1cm4gYWRkVG9TdHJpbmdU
YWJsZTxMQ2hhckJ1ZmZlciwgTENoYXJCdWZmZXJUcmFuc2xhdG9yPihidWZmZXIpOworfQorCitS
ZWY8QXRvbVN0cmluZ0ltcGw+IEF0b21TdHJpbmdJbXBsOjphZGRMaXRlcmFsKGNvbnN0IGNoYXIq
IGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBBU1NFUlQoY2hhcmFjdGVycyk7
CisgICAgQVNTRVJUKGxlbmd0aCk7CisKKyAgICBMQ2hhckJ1ZmZlciBidWZmZXIgeyByZWludGVy
cHJldF9jYXN0PGNvbnN0IExDaGFyKj4oY2hhcmFjdGVycyksIGxlbmd0aCB9OworICAgIHJldHVy
biBhZGRUb1N0cmluZ1RhYmxlPExDaGFyQnVmZmVyLCBCdWZmZXJGcm9tU3RhdGljRGF0YVRyYW5z
bGF0b3I8TENoYXI+PihidWZmZXIpOworfQorCitzdGF0aWMgUmVmPEF0b21TdHJpbmdJbXBsPiBh
ZGRTeW1ib2woQXRvbVN0cmluZ1RhYmxlTG9ja2VyJiBsb2NrZXIsIFN0cmluZ1RhYmxlSW1wbCYg
YXRvbVN0cmluZ1RhYmxlLCBTdHJpbmdJbXBsJiBiYXNlKQoreworICAgIEFTU0VSVChiYXNlLmxl
bmd0aCgpKTsKKyAgICBBU1NFUlQoYmFzZS5pc1N5bWJvbCgpKTsKKworICAgIFN1YnN0cmluZ0xv
Y2F0aW9uIGJ1ZmZlciA9IHsgJmJhc2UsIDAsIGJhc2UubGVuZ3RoKCkgfTsKKyAgICBpZiAoYmFz
ZS5pczhCaXQoKSkKKyAgICAgICAgcmV0dXJuIGFkZFRvU3RyaW5nVGFibGU8U3Vic3RyaW5nTG9j
YXRpb24sIFN1YnN0cmluZ1RyYW5zbGF0b3I4Pihsb2NrZXIsIGF0b21TdHJpbmdUYWJsZSwgYnVm
ZmVyKTsKKyAgICByZXR1cm4gYWRkVG9TdHJpbmdUYWJsZTxTdWJzdHJpbmdMb2NhdGlvbiwgU3Vi
c3RyaW5nVHJhbnNsYXRvcjE2Pihsb2NrZXIsIGF0b21TdHJpbmdUYWJsZSwgYnVmZmVyKTsKK30K
Kworc3RhdGljIGlubGluZSBSZWY8QXRvbVN0cmluZ0ltcGw+IGFkZFN5bWJvbChTdHJpbmdJbXBs
JiBiYXNlKQoreworICAgIEF0b21TdHJpbmdUYWJsZUxvY2tlciBsb2NrZXI7CisgICAgcmV0dXJu
IGFkZFN5bWJvbChsb2NrZXIsIHN0cmluZ1RhYmxlKCksIGJhc2UpOworfQorCitzdGF0aWMgUmVm
PEF0b21TdHJpbmdJbXBsPiBhZGRTdGF0aWMoQXRvbVN0cmluZ1RhYmxlTG9ja2VyJiBsb2NrZXIs
IFN0cmluZ1RhYmxlSW1wbCYgYXRvbVN0cmluZ1RhYmxlLCBjb25zdCBTdHJpbmdJbXBsJiBiYXNl
KQoreworICAgIEFTU0VSVChiYXNlLmxlbmd0aCgpKTsKKyAgICBBU1NFUlQoYmFzZS5pc1N0YXRp
YygpKTsKKworICAgIGlmIChiYXNlLmlzOEJpdCgpKSB7CisgICAgICAgIExDaGFyQnVmZmVyIGJ1
ZmZlciB7IGJhc2UuY2hhcmFjdGVyczgoKSwgYmFzZS5sZW5ndGgoKSwgYmFzZS5oYXNoKCkgfTsK
KyAgICAgICAgcmV0dXJuIGFkZFRvU3RyaW5nVGFibGU8TENoYXJCdWZmZXIsIEJ1ZmZlckZyb21T
dGF0aWNEYXRhVHJhbnNsYXRvcjxMQ2hhcj4+KGxvY2tlciwgYXRvbVN0cmluZ1RhYmxlLCBidWZm
ZXIpOworICAgIH0KKyAgICBVQ2hhckJ1ZmZlciBidWZmZXIgeyBiYXNlLmNoYXJhY3RlcnMxNigp
LCBiYXNlLmxlbmd0aCgpLCBiYXNlLmhhc2goKSB9OworICAgIHJldHVybiBhZGRUb1N0cmluZ1Rh
YmxlPFVDaGFyQnVmZmVyLCBCdWZmZXJGcm9tU3RhdGljRGF0YVRyYW5zbGF0b3I8VUNoYXI+Pihs
b2NrZXIsIGF0b21TdHJpbmdUYWJsZSwgYnVmZmVyKTsKK30KKworc3RhdGljIGlubGluZSBSZWY8
QXRvbVN0cmluZ0ltcGw+IGFkZFN0YXRpYyhjb25zdCBTdHJpbmdJbXBsJiBiYXNlKQoreworICAg
IEF0b21TdHJpbmdUYWJsZUxvY2tlciBsb2NrZXI7CisgICAgcmV0dXJuIGFkZFN0YXRpYyhsb2Nr
ZXIsIHN0cmluZ1RhYmxlKCksIGJhc2UpOworfQorCitSZWZQdHI8QXRvbVN0cmluZ0ltcGw+IEF0
b21TdHJpbmdJbXBsOjphZGQoY29uc3QgU3RhdGljU3RyaW5nSW1wbCogc3RyaW5nKQoreworICAg
IGF1dG8gcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgU3RyaW5nSW1wbCo+KHN0cmluZyk7Cisg
ICAgQVNTRVJUKHMtPmlzU3RhdGljKCkpOworICAgIHJldHVybiBhZGRTdGF0aWMoKnMpOworfQor
CitSZWY8QXRvbVN0cmluZ0ltcGw+IEF0b21TdHJpbmdJbXBsOjphZGRTbG93Q2FzZShTdHJpbmdJ
bXBsJiBzdHJpbmcpCit7CisgICAgLy8gVGhpcyBjaGVjayBpcyBuZWNlc3NhcnkgZm9yIG51bGwg
c3ltYm9scy4KKyAgICAvLyBUaGVpciBsZW5ndGggaXMgemVybywgYnV0IHRoZXkgYXJlIG5vdCBB
dG9tU3RyaW5nSW1wbC4KKyAgICBpZiAoIXN0cmluZy5sZW5ndGgoKSkKKyAgICAgICAgcmV0dXJu
ICpzdGF0aWNfY2FzdDxBdG9tU3RyaW5nSW1wbCo+KFN0cmluZ0ltcGw6OmVtcHR5KCkpOworCisg
ICAgaWYgKHN0cmluZy5pc1N0YXRpYygpKQorICAgICAgICByZXR1cm4gYWRkU3RhdGljKHN0cmlu
Zyk7CisKKyAgICBpZiAoc3RyaW5nLmlzU3ltYm9sKCkpCisgICAgICAgIHJldHVybiBhZGRTeW1i
b2woc3RyaW5nKTsKKworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXN0cmluZy5pc0F0b20oKSwg
IkF0b21TdHJpbmdJbXBsIHNob3VsZCBub3QgaGl0IHRoZSBzbG93IGNhc2UgaWYgdGhlIHN0cmlu
ZyBpcyBhbHJlYWR5IGF0b21pYy4iKTsKKworICAgIEF0b21TdHJpbmdUYWJsZUxvY2tlciBsb2Nr
ZXI7CisgICAgYXV0byBhZGRSZXN1bHQgPSBzdHJpbmdUYWJsZSgpLmFkZCgmc3RyaW5nKTsKKwor
ICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkgeworICAgICAgICBBU1NFUlQoKmFkZFJlc3Vs
dC5pdGVyYXRvciA9PSAmc3RyaW5nKTsKKyAgICAgICAgc3RyaW5nLnNldElzQXRvbWljKHRydWUp
OworICAgIH0KKworICAgIHJldHVybiAqc3RhdGljX2Nhc3Q8QXRvbVN0cmluZ0ltcGwqPigqYWRk
UmVzdWx0Lml0ZXJhdG9yKTsKK30KKworUmVmPEF0b21TdHJpbmdJbXBsPiBBdG9tU3RyaW5nSW1w
bDo6YWRkU2xvd0Nhc2UoQXRvbVN0cmluZ1RhYmxlJiBzdHJpbmdUYWJsZSwgU3RyaW5nSW1wbCYg
c3RyaW5nKQoreworICAgIC8vIFRoaXMgY2hlY2sgaXMgbmVjZXNzYXJ5IGZvciBudWxsIHN5bWJv
bHMuCisgICAgLy8gVGhlaXIgbGVuZ3RoIGlzIHplcm8sIGJ1dCB0aGV5IGFyZSBub3QgQXRvbVN0
cmluZ0ltcGwuCisgICAgaWYgKCFzdHJpbmcubGVuZ3RoKCkpCisgICAgICAgIHJldHVybiAqc3Rh
dGljX2Nhc3Q8QXRvbVN0cmluZ0ltcGwqPihTdHJpbmdJbXBsOjplbXB0eSgpKTsKKworICAgIGlm
IChzdHJpbmcuaXNTdGF0aWMoKSkgeworICAgICAgICBBdG9tU3RyaW5nVGFibGVMb2NrZXIgbG9j
a2VyOworICAgICAgICByZXR1cm4gYWRkU3RhdGljKGxvY2tlciwgc3RyaW5nVGFibGUudGFibGUo
KSwgc3RyaW5nKTsKKyAgICB9CisKKyAgICBpZiAoc3RyaW5nLmlzU3ltYm9sKCkpIHsKKyAgICAg
ICAgQXRvbVN0cmluZ1RhYmxlTG9ja2VyIGxvY2tlcjsKKyAgICAgICAgcmV0dXJuIGFkZFN5bWJv
bChsb2NrZXIsIHN0cmluZ1RhYmxlLnRhYmxlKCksIHN0cmluZyk7CisgICAgfQorCisgICAgQVNT
RVJUX1dJVEhfTUVTU0FHRSghc3RyaW5nLmlzQXRvbSgpLCAiQXRvbVN0cmluZ0ltcGwgc2hvdWxk
IG5vdCBoaXQgdGhlIHNsb3cgY2FzZSBpZiB0aGUgc3RyaW5nIGlzIGFscmVhZHkgYXRvbWljLiIp
OworCisgICAgQXRvbVN0cmluZ1RhYmxlTG9ja2VyIGxvY2tlcjsKKyAgICBhdXRvIGFkZFJlc3Vs
dCA9IHN0cmluZ1RhYmxlLnRhYmxlKCkuYWRkKCZzdHJpbmcpOworCisgICAgaWYgKGFkZFJlc3Vs
dC5pc05ld0VudHJ5KSB7CisgICAgICAgIEFTU0VSVCgqYWRkUmVzdWx0Lml0ZXJhdG9yID09ICZz
dHJpbmcpOworICAgICAgICBzdHJpbmcuc2V0SXNBdG9taWModHJ1ZSk7CisgICAgfQorCisgICAg
cmV0dXJuICpzdGF0aWNfY2FzdDxBdG9tU3RyaW5nSW1wbCo+KCphZGRSZXN1bHQuaXRlcmF0b3Ip
OworfQorCit2b2lkIEF0b21TdHJpbmdJbXBsOjpyZW1vdmUoQXRvbVN0cmluZ0ltcGwqIHN0cmlu
ZykKK3sKKyAgICBBU1NFUlQoc3RyaW5nLT5pc0F0b20oKSk7CisgICAgQXRvbVN0cmluZ1RhYmxl
TG9ja2VyIGxvY2tlcjsKKyAgICBhdXRvJiBhdG9tU3RyaW5nVGFibGUgPSBzdHJpbmdUYWJsZSgp
OworICAgIGF1dG8gaXRlcmF0b3IgPSBhdG9tU3RyaW5nVGFibGUuZmluZChzdHJpbmcpOworICAg
IEFTU0VSVF9XSVRIX01FU1NBR0UoaXRlcmF0b3IgIT0gYXRvbVN0cmluZ1RhYmxlLmVuZCgpLCAi
VGhlIHN0cmluZyBiZWluZyByZW1vdmVkIGlzIGF0b21pYyBpbiB0aGUgc3RyaW5nIHRhYmxlIG9m
IGFuIG90aGVyIHRocmVhZCEiKTsKKyAgICBBU1NFUlQoc3RyaW5nID09ICppdGVyYXRvcik7Cisg
ICAgYXRvbVN0cmluZ1RhYmxlLnJlbW92ZShpdGVyYXRvcik7Cit9CisKK1JlZlB0cjxBdG9tU3Ry
aW5nSW1wbD4gQXRvbVN0cmluZ0ltcGw6Omxvb2tVcFNsb3dDYXNlKFN0cmluZ0ltcGwmIHN0cmlu
ZykKK3sKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFzdHJpbmcuaXNBdG9tKCksICJBdG9taWNT
dHJpbmdJbXBscyBzaG91bGQgcmV0dXJuIGZyb20gdGhlIGZhc3QgY2FzZS4iKTsKKworICAgIGlm
ICghc3RyaW5nLmxlbmd0aCgpKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QXRvbVN0cmlu
Z0ltcGwqPihTdHJpbmdJbXBsOjplbXB0eSgpKTsKKworICAgIEF0b21TdHJpbmdUYWJsZUxvY2tl
ciBsb2NrZXI7CisgICAgYXV0byYgYXRvbVN0cmluZ1RhYmxlID0gc3RyaW5nVGFibGUoKTsKKyAg
ICBhdXRvIGl0ZXJhdG9yID0gYXRvbVN0cmluZ1RhYmxlLmZpbmQoJnN0cmluZyk7CisgICAgaWYg
KGl0ZXJhdG9yICE9IGF0b21TdHJpbmdUYWJsZS5lbmQoKSkKKyAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PEF0b21TdHJpbmdJbXBsKj4oKml0ZXJhdG9yKTsKKyAgICByZXR1cm4gbnVsbHB0cjsK
K30KKworUmVmUHRyPEF0b21TdHJpbmdJbXBsPiBBdG9tU3RyaW5nSW1wbDo6YWRkVVRGOChjb25z
dCBjaGFyKiBjaGFyYWN0ZXJzU3RhcnQsIGNvbnN0IGNoYXIqIGNoYXJhY3RlcnNFbmQpCit7Cisg
ICAgSGFzaEFuZFVURjhDaGFyYWN0ZXJzIGJ1ZmZlcjsKKyAgICBidWZmZXIuY2hhcmFjdGVycyA9
IGNoYXJhY3RlcnNTdGFydDsKKyAgICBidWZmZXIuaGFzaCA9IGNhbGN1bGF0ZVN0cmluZ0hhc2hB
bmRMZW5ndGhGcm9tVVRGOE1hc2tpbmdUb3A4Qml0cyhjaGFyYWN0ZXJzU3RhcnQsIGNoYXJhY3Rl
cnNFbmQsIGJ1ZmZlci5sZW5ndGgsIGJ1ZmZlci51dGYxNkxlbmd0aCk7CisKKyAgICBpZiAoIWJ1
ZmZlci5oYXNoKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBhZGRUb1N0
cmluZ1RhYmxlPEhhc2hBbmRVVEY4Q2hhcmFjdGVycywgSGFzaEFuZFVURjhDaGFyYWN0ZXJzVHJh
bnNsYXRvcj4oYnVmZmVyKTsKK30KKworUmVmUHRyPEF0b21TdHJpbmdJbXBsPiBBdG9tU3RyaW5n
SW1wbDo6bG9va1VwKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCit7
CisgICAgQXRvbVN0cmluZ1RhYmxlTG9ja2VyIGxvY2tlcjsKKyAgICBhdXRvJiB0YWJsZSA9IHN0
cmluZ1RhYmxlKCk7CisKKyAgICBMQ2hhckJ1ZmZlciBidWZmZXIgPSB7IGNoYXJhY3RlcnMsIGxl
bmd0aCB9OworICAgIGF1dG8gaXRlcmF0b3IgPSB0YWJsZS5maW5kPExDaGFyQnVmZmVyVHJhbnNs
YXRvcj4oYnVmZmVyKTsKKyAgICBpZiAoaXRlcmF0b3IgIT0gdGFibGUuZW5kKCkpCisgICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxBdG9tU3RyaW5nSW1wbCo+KCppdGVyYXRvcik7CisgICAgcmV0
dXJuIG51bGxwdHI7Cit9CisKK1JlZlB0cjxBdG9tU3RyaW5nSW1wbD4gQXRvbVN0cmluZ0ltcGw6
Omxvb2tVcChjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQoreworICAg
IEF0b21TdHJpbmdUYWJsZUxvY2tlciBsb2NrZXI7CisgICAgYXV0byYgdGFibGUgPSBzdHJpbmdU
YWJsZSgpOworCisgICAgVUNoYXJCdWZmZXIgYnVmZmVyIHsgY2hhcmFjdGVycywgbGVuZ3RoIH07
CisgICAgYXV0byBpdGVyYXRvciA9IHRhYmxlLmZpbmQ8VUNoYXJCdWZmZXJUcmFuc2xhdG9yPihi
dWZmZXIpOworICAgIGlmIChpdGVyYXRvciAhPSB0YWJsZS5lbmQoKSkKKyAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PEF0b21TdHJpbmdJbXBsKj4oKml0ZXJhdG9yKTsKKyAgICByZXR1cm4gbnVs
bHB0cjsKK30KKworI2lmICFBU1NFUlRfRElTQUJMRUQKK2Jvb2wgQXRvbVN0cmluZ0ltcGw6Omlz
SW5BdG9tU3RyaW5nVGFibGUoU3RyaW5nSW1wbCogc3RyaW5nKQoreworICAgIEF0b21TdHJpbmdU
YWJsZUxvY2tlciBsb2NrZXI7CisgICAgcmV0dXJuIHN0cmluZ1RhYmxlKCkuY29udGFpbnMoc3Ry
aW5nKTsKK30KKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZ0ltcGwuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRv
bVN0cmluZ0ltcGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNDY2YTkxYmZhYmIyNTA5OTgyNmVjN2U4MDMzMzkx
YTViNTQxOWNkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3Ry
aW5nSW1wbC5oCkBAIC0wLDAgKzEsMTIzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IEFw
cGxlIEluYy4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CisgKgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL3RleHQvVW5pcXVlZFN0
cmluZ0ltcGwuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK2NsYXNzIEF0b21TdHJpbmdUYWJsZTsK
KworY2xhc3MgQXRvbVN0cmluZ0ltcGwgOiBwdWJsaWMgVW5pcXVlZFN0cmluZ0ltcGwgeworcHVi
bGljOgorICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEF0b21TdHJpbmdJbXBs
PiBsb29rVXAoY29uc3QgTENoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIFdURl9FWFBPUlRf
UFJJVkFURSBzdGF0aWMgUmVmUHRyPEF0b21TdHJpbmdJbXBsPiBsb29rVXAoY29uc3QgVUNoYXIq
LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRpYyBSZWZQdHI8QXRvbVN0cmluZ0ltcGw+IGxv
b2tVcChTdHJpbmdJbXBsKiBzdHJpbmcpCisgICAgeworICAgICAgICBpZiAoIXN0cmluZyB8fCBz
dHJpbmctPmlzQXRvbSgpKQorICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEF0b21TdHJp
bmdJbXBsKj4oc3RyaW5nKTsKKyAgICAgICAgcmV0dXJuIGxvb2tVcFNsb3dDYXNlKCpzdHJpbmcp
OworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHJlbW92ZShBdG9tU3RyaW5nSW1wbCopOworCisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXRvbVN0cmluZ0ltcGw+IGFkZChj
b25zdCBMQ2hhciopOworICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFJlZlB0cjxBdG9tU3RyaW5n
SW1wbD4gYWRkKGNvbnN0IGNoYXIqIHMpIHsgcmV0dXJuIGFkZChyZWludGVycHJldF9jYXN0PGNv
bnN0IExDaGFyKj4ocykpOyB9OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRy
PEF0b21TdHJpbmdJbXBsPiBhZGQoY29uc3QgTENoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOworICAg
IFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEF0b21TdHJpbmdJbXBsPiBhZGQoY29u
c3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFJl
ZlB0cjxBdG9tU3RyaW5nSW1wbD4gYWRkKGNvbnN0IGNoYXIqIHMsIHVuc2lnbmVkIGxlbmd0aCkg
eyByZXR1cm4gYWRkKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihzKSwgbGVuZ3RoKTsg
fTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBdG9tU3RyaW5nSW1wbD4g
YWRkKGNvbnN0IFVDaGFyKik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8
QXRvbVN0cmluZ0ltcGw+IGFkZChTdHJpbmdJbXBsKiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25l
ZCBsZW5ndGgpOworICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFJlZlB0cjxBdG9tU3RyaW5nSW1w
bD4gYWRkKFN0cmluZ0ltcGwqIHN0cmluZykKKyAgICB7CisgICAgICAgIGlmICghc3RyaW5nKQor
ICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEF0b21TdHJpbmdJbXBsKj4oc3RyaW5nKTsK
KyAgICAgICAgcmV0dXJuIGFkZCgqc3RyaW5nKTsKKyAgICB9CisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBSZWZQdHI8QXRvbVN0cmluZ0ltcGw+IGFkZChjb25zdCBTdGF0aWNTdHJpbmdJ
bXBsKik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXRvbVN0cmluZ0ltcGw+
IGFkZExpdGVyYWwoY29uc3QgY2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKKwor
ICAgIC8vIFJldHVybnMgbnVsbCBpZiB0aGUgaW5wdXQgZGF0YSBjb250YWlucyBhbiBpbnZhbGlk
IFVURi04IHNlcXVlbmNlLgorICAgIHN0YXRpYyBSZWZQdHI8QXRvbVN0cmluZ0ltcGw+IGFkZFVU
RjgoY29uc3QgY2hhciogc3RhcnQsIGNvbnN0IGNoYXIqIGVuZCk7CisKKyNpZiBVU0UoQ0YpCisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXRvbVN0cmluZ0ltcGw+IGFkZChD
RlN0cmluZ1JlZik7CisjZW5kaWYKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFN0cmluZ1RhYmxl
UHJvdmlkZXI+CisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgUmVmUHRyPEF0b21TdHJpbmdJbXBs
PiBhZGRXaXRoU3RyaW5nVGFibGVQcm92aWRlcihTdHJpbmdUYWJsZVByb3ZpZGVyJiBzdHJpbmdU
YWJsZVByb3ZpZGVyLCBTdHJpbmdJbXBsKiBzdHJpbmcpCisgICAgeworICAgICAgICBpZiAoIXN0
cmluZykKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gYWRkKCpz
dHJpbmdUYWJsZVByb3ZpZGVyLmF0b21TdHJpbmdUYWJsZSgpLCAqc3RyaW5nKTsKKyAgICB9CisK
KyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29s
IGlzSW5BdG9tU3RyaW5nVGFibGUoU3RyaW5nSW1wbCopOworI2VuZGlmCisKK3ByaXZhdGU6Cisg
ICAgQXRvbVN0cmluZ0ltcGwoKSA9IGRlbGV0ZTsKKworICAgIEFMV0FZU19JTkxJTkUgc3RhdGlj
IFJlZjxBdG9tU3RyaW5nSW1wbD4gYWRkKFN0cmluZ0ltcGwmIHN0cmluZykKKyAgICB7CisgICAg
ICAgIGlmIChzdHJpbmcuaXNBdG9tKCkpIHsKKyAgICAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NB
R0UoIXN0cmluZy5sZW5ndGgoKSB8fCBpc0luQXRvbVN0cmluZ1RhYmxlKCZzdHJpbmcpLCAiVGhl
IGF0b21pYyBzdHJpbmcgY29tZXMgZnJvbSBhbiBvdGhlciB0aHJlYWQhIik7CisgICAgICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8QXRvbVN0cmluZ0ltcGwmPihzdHJpbmcpOworICAgICAgICB9
CisgICAgICAgIHJldHVybiBhZGRTbG93Q2FzZShzdHJpbmcpOworICAgIH0KKworICAgIEFMV0FZ
U19JTkxJTkUgc3RhdGljIFJlZjxBdG9tU3RyaW5nSW1wbD4gYWRkKEF0b21TdHJpbmdUYWJsZSYg
c3RyaW5nVGFibGUsIFN0cmluZ0ltcGwmIHN0cmluZykKKyAgICB7CisgICAgICAgIGlmIChzdHJp
bmcuaXNBdG9tKCkpIHsKKyAgICAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXN0cmluZy5s
ZW5ndGgoKSB8fCBpc0luQXRvbVN0cmluZ1RhYmxlKCZzdHJpbmcpLCAiVGhlIGF0b21pYyBzdHJp
bmcgY29tZXMgZnJvbSBhbiBvdGhlciB0aHJlYWQhIik7CisgICAgICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8QXRvbVN0cmluZ0ltcGwmPihzdHJpbmcpOworICAgICAgICB9CisgICAgICAgIHJl
dHVybiBhZGRTbG93Q2FzZShzdHJpbmdUYWJsZSwgc3RyaW5nKTsKKyAgICB9CisKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBdG9tU3RyaW5nSW1wbD4gYWRkU2xvd0Nhc2UoU3Ry
aW5nSW1wbCYpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEF0b21TdHJpbmdJ
bXBsPiBhZGRTbG93Q2FzZShBdG9tU3RyaW5nVGFibGUmLCBTdHJpbmdJbXBsJik7CisKKyAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBdG9tU3RyaW5nSW1wbD4gbG9va1VwU2xv
d0Nhc2UoU3RyaW5nSW1wbCYpOworfTsKKworI2lmICFBU1NFUlRfRElTQUJMRUQKKy8vIEF0b21p
Y1N0cmluZ0ltcGxzIGNyZWF0ZWQgZnJvbSBTdGF0aWNTdHJpbmdJbXBsIHdpbGwgQVNTRVJUCisv
LyBpbiB0aGUgZ2VuZXJpYyBWYWx1ZUNoZWNrPFQ+OjpjaGVja0NvbnNpc3RlbmN5CisvLyBhcyB0
aGV5IGFyZSBub3QgYWxsb2NhdGVkIGJ5IGZhc3RNYWxsb2MuCisvLyBXZSBkb24ndCBjdXJyZW50
bHkgaGF2ZSBhbnkgd2F5IHRvIGRldGVjdCB0aGF0IGNhc2UKKy8vIHNvIHdlIGlnbm9yZSB0aGUg
Y29uc2lzdGVuY3kgY2hlY2sgZm9yIGFsbCBBdG9taWNTdHJpbmdJbXBscyouCit0ZW1wbGF0ZTw+
IHN0cnVjdAorVmFsdWVDaGVjazxBdG9tU3RyaW5nSW1wbCo+IHsKKyAgICBzdGF0aWMgdm9pZCBj
aGVja0NvbnNpc3RlbmN5KGNvbnN0IEF0b21TdHJpbmdJbXBsKikgeyB9Cit9OworCit0ZW1wbGF0
ZTw+IHN0cnVjdAorVmFsdWVDaGVjazxjb25zdCBBdG9tU3RyaW5nSW1wbCo+IHsKKyAgICBzdGF0
aWMgdm9pZCBjaGVja0NvbnNpc3RlbmN5KGNvbnN0IEF0b21TdHJpbmdJbXBsKikgeyB9Cit9Owor
I2VuZGlmCisKK30KKwordXNpbmcgV1RGOjpBdG9tU3RyaW5nSW1wbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZ1RhYmxlLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvQXRvbVN0cmluZ1RhYmxlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ODEyYWMyMjlmNWQ0YzRhNjkzM2Ux
OWYzMWNlZGJhNzZkOThjYjJkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvdGV4
dC9BdG9tU3RyaW5nVGFibGUuY3BwCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIFBhdHJpY2sgR2Fuc3RlcmVyIDxw
YXJvZ2FAcGFyb2dhLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHd0Zi90
ZXh0L0F0b21TdHJpbmdUYWJsZS5oPgorCisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNs
dWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKworbmFt
ZXNwYWNlIFdURiB7CisKK0F0b21TdHJpbmdUYWJsZTo6fkF0b21TdHJpbmdUYWJsZSgpCit7Cisg
ICAgZm9yIChhdXRvKiBzdHJpbmcgOiBtX3RhYmxlKQorICAgICAgICBzdHJpbmctPnNldElzQXRv
bWljKGZhbHNlKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9t
U3RyaW5nVGFibGUuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZ1RhYmxlLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMjRjNjBiMWZiMmQ3ZThmYjg5NDJlNjUwMzM5M2U0ODQ3MTY5NTY5YwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZ1RhYmxlLmgKQEAgLTAs
MCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywg
MjAwOCwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgUGF0cmljayBHYW5zdGVyZXIgPHBhcm9nYUBwYXJvZ2EuY29tPgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nSW1wbC5oPgorCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3MgU3RyaW5nSW1wbDsKKworY2xh
c3MgQXRvbVN0cmluZ1RhYmxlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1Ymxp
YzoKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgfkF0b21TdHJpbmdUYWJsZSgpOworCisgICAgSGFz
aFNldDxTdHJpbmdJbXBsKj4mIHRhYmxlKCkgeyByZXR1cm4gbV90YWJsZTsgfQorCitwcml2YXRl
OgorICAgIEhhc2hTZXQ8U3RyaW5nSW1wbCo+IG1fdGFibGU7Cit9OworCit9Cit1c2luZyBXVEY6
OkF0b21TdHJpbmdUYWJsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWlj
U3RyaW5nLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmZkY2E3ZjlhNzZjMGNhNmRmN2M3YTZkOWMzOTEyZTdh
NTdkYWFkMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwx
NTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMCBQYXRyaWNrIEdhbnN0ZXJl
ciA8cGFyb2dhQHBhcm9nYS5jb20+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCi0gKgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlIDx3
dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KLQotI2luY2x1ZGUgPG11dGV4PgotI2luY2x1ZGUgPHd0
Zi9NYWluVGhyZWFkLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvSW50ZWdlclRvU3RyaW5nQ29udmVy
c2lvbi5oPgotCi0jaW5jbHVkZSA8d3RmL2R0b2EuaD4KLQotbmFtZXNwYWNlIFdURiB7Ci0KLXRl
bXBsYXRlPEF0b21pY1N0cmluZzo6Q2FzZUNvbnZlcnRUeXBlIHR5cGU+Ci1BTFdBWVNfSU5MSU5F
IEF0b21pY1N0cmluZyBBdG9taWNTdHJpbmc6OmNvbnZlcnRBU0NJSUNhc2UoKSBjb25zdAotewot
ICAgIFN0cmluZ0ltcGwqIGltcGwgPSB0aGlzLT5pbXBsKCk7Ci0gICAgaWYgKFVOTElLRUxZKCFp
bXBsKSkKLSAgICAgICAgcmV0dXJuIG51bGxBdG9tKCk7Ci0KLSAgICAvLyBDb252ZXJ0IHNob3J0
IHN0cmluZ3Mgd2l0aG91dCBhbGxvY2F0aW5nIGEgbmV3IFN0cmluZ0ltcGwsIHNpbmNlCi0gICAg
Ly8gdGhlcmUncyBhIGdvb2QgY2hhbmNlIHRoZXNlIHN0cmluZ3MgYXJlIGFscmVhZHkgaW4gdGhl
IGF0b21pYwotICAgIC8vIHN0cmluZyB0YWJsZSBhbmQgc28gbm8gbWVtb3J5IGFsbG9jYXRpb24g
d2lsbCBiZSByZXF1aXJlZC4KLSAgICB1bnNpZ25lZCBsZW5ndGg7Ci0gICAgY29uc3QgdW5zaWdu
ZWQgbG9jYWxCdWZmZXJTaXplID0gMTAwOwotICAgIGlmIChpbXBsLT5pczhCaXQoKSAmJiAobGVu
Z3RoID0gaW1wbC0+bGVuZ3RoKCkpIDw9IGxvY2FsQnVmZmVyU2l6ZSkgewotICAgICAgICBjb25z
dCBMQ2hhciogY2hhcmFjdGVycyA9IGltcGwtPmNoYXJhY3RlcnM4KCk7Ci0gICAgICAgIHVuc2ln
bmVkIGZhaWxpbmdJbmRleDsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0
aDsgKytpKSB7Ci0gICAgICAgICAgICBpZiAodHlwZSA9PSBDYXNlQ29udmVydFR5cGU6Okxvd2Vy
ID8gVU5MSUtFTFkoaXNBU0NJSVVwcGVyKGNoYXJhY3RlcnNbaV0pKSA6IExJS0VMWShpc0FTQ0lJ
TG93ZXIoY2hhcmFjdGVyc1tpXSkpKSB7Ci0gICAgICAgICAgICAgICAgZmFpbGluZ0luZGV4ID0g
aTsKLSAgICAgICAgICAgICAgICBnb3RvIFNsb3dQYXRoOwotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0gICAgICAgIHJldHVybiAqdGhpczsKLVNsb3dQYXRoOgotICAgICAgICBMQ2hhciBsb2Nh
bEJ1ZmZlcltsb2NhbEJ1ZmZlclNpemVdOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgZmFpbGluZ0luZGV4OyArK2kpCi0gICAgICAgICAgICBsb2NhbEJ1ZmZlcltpXSA9IGNoYXJh
Y3RlcnNbaV07Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IGZhaWxpbmdJbmRleDsgaSA8IGxl
bmd0aDsgKytpKQotICAgICAgICAgICAgbG9jYWxCdWZmZXJbaV0gPSB0eXBlID09IENhc2VDb252
ZXJ0VHlwZTo6TG93ZXIgPyB0b0FTQ0lJTG93ZXIoY2hhcmFjdGVyc1tpXSkgOiB0b0FTQ0lJVXBw
ZXIoY2hhcmFjdGVyc1tpXSk7Ci0gICAgICAgIHJldHVybiBBdG9taWNTdHJpbmcobG9jYWxCdWZm
ZXIsIGxlbmd0aCk7Ci0gICAgfQotCi0gICAgUmVmPFN0cmluZ0ltcGw+IGNvbnZlcnRlZFN0cmlu
ZyA9IHR5cGUgPT0gQ2FzZUNvbnZlcnRUeXBlOjpMb3dlciA/IGltcGwtPmNvbnZlcnRUb0FTQ0lJ
TG93ZXJjYXNlKCkgOiBpbXBsLT5jb252ZXJ0VG9BU0NJSVVwcGVyY2FzZSgpOwotICAgIGlmIChM
SUtFTFkoY29udmVydGVkU3RyaW5nLnB0cigpID09IGltcGwpKQotICAgICAgICByZXR1cm4gKnRo
aXM7Ci0KLSAgICBBdG9taWNTdHJpbmcgcmVzdWx0OwotICAgIHJlc3VsdC5tX3N0cmluZyA9IEF0
b21pY1N0cmluZ0ltcGw6OmFkZChjb252ZXJ0ZWRTdHJpbmcucHRyKCkpOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci0KLUF0b21pY1N0cmluZyBBdG9taWNTdHJpbmc6OmNvbnZlcnRUb0FTQ0lJTG93
ZXJjYXNlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gY29udmVydEFTQ0lJQ2FzZTxDYXNlQ29udmVy
dFR5cGU6Okxvd2VyPigpOwotfQotCi1BdG9taWNTdHJpbmcgQXRvbWljU3RyaW5nOjpjb252ZXJ0
VG9BU0NJSVVwcGVyY2FzZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGNvbnZlcnRBU0NJSUNhc2U8
Q2FzZUNvbnZlcnRUeXBlOjpVcHBlcj4oKTsKLX0KLQotQXRvbWljU3RyaW5nIEF0b21pY1N0cmlu
Zzo6bnVtYmVyKGludCBudW1iZXIpCi17Ci0gICAgcmV0dXJuIG51bWJlclRvU3RyaW5nU2lnbmVk
PEF0b21pY1N0cmluZz4obnVtYmVyKTsKLX0KLQotQXRvbWljU3RyaW5nIEF0b21pY1N0cmluZzo6
bnVtYmVyKHVuc2lnbmVkIG51bWJlcikKLXsKLSAgICByZXR1cm4gbnVtYmVyVG9TdHJpbmdVbnNp
Z25lZDxBdG9taWNTdHJpbmc+KG51bWJlcik7Ci19Ci0KLUF0b21pY1N0cmluZyBBdG9taWNTdHJp
bmc6Om51bWJlcih1bnNpZ25lZCBsb25nIG51bWJlcikKLXsKLSAgICByZXR1cm4gbnVtYmVyVG9T
dHJpbmdVbnNpZ25lZDxBdG9taWNTdHJpbmc+KG51bWJlcik7Ci19Ci0KLUF0b21pY1N0cmluZyBB
dG9taWNTdHJpbmc6Om51bWJlcih1bnNpZ25lZCBsb25nIGxvbmcgbnVtYmVyKQotewotICAgIHJl
dHVybiBudW1iZXJUb1N0cmluZ1Vuc2lnbmVkPEF0b21pY1N0cmluZz4obnVtYmVyKTsKLX0KLQot
QXRvbWljU3RyaW5nIEF0b21pY1N0cmluZzo6bnVtYmVyKGZsb2F0IG51bWJlcikKLXsKLSAgICBO
dW1iZXJUb1N0cmluZ0J1ZmZlciBidWZmZXI7Ci0gICAgcmV0dXJuIG51bWJlclRvU3RyaW5nKG51
bWJlciwgYnVmZmVyKTsKLX0KLQotQXRvbWljU3RyaW5nIEF0b21pY1N0cmluZzo6bnVtYmVyKGRv
dWJsZSBudW1iZXIpCi17Ci0gICAgTnVtYmVyVG9TdHJpbmdCdWZmZXIgYnVmZmVyOwotICAgIHJl
dHVybiBudW1iZXJUb1N0cmluZyhudW1iZXIsIGJ1ZmZlcik7Ci19Ci0KLUF0b21pY1N0cmluZyBB
dG9taWNTdHJpbmc6OmZyb21VVEY4SW50ZXJuYWwoY29uc3QgY2hhciogc3RhcnQsIGNvbnN0IGNo
YXIqIGVuZCkKLXsKLSAgICBBU1NFUlQoc3RhcnQpOwotCi0gICAgLy8gQ2FsbGVyIG5lZWRzIHRv
IGhhbmRsZSBlbXB0eSBzdHJpbmcuCi0gICAgQVNTRVJUKCFlbmQgfHwgZW5kID4gc3RhcnQpOwot
ICAgIEFTU0VSVChlbmQgfHwgc3RhcnRbMF0pOwotCi0gICAgcmV0dXJuIEF0b21pY1N0cmluZ0lt
cGw6OmFkZFVURjgoc3RhcnQsIGVuZCA/IGVuZCA6IHN0YXJ0ICsgc3RkOjpzdHJsZW4oc3RhcnQp
KTsKLX0KLQotI2lmbmRlZiBOREVCVUcKLQotdm9pZCBBdG9taWNTdHJpbmc6OnNob3coKSBjb25z
dAotewotICAgIG1fc3RyaW5nLnNob3coKTsKLX0KLQotI2VuZGlmCi0KLVdURl9FWFBPUlRfUFJJ
VkFURSBMYXp5TmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBudWxsQXRvbURhdGE7Ci1XVEZf
RVhQT1JUX1BSSVZBVEUgTGF6eU5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gZW1wdHlBdG9t
RGF0YTsKLVdURl9FWFBPUlRfUFJJVkFURSBMYXp5TmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5n
PiBzdGFyQXRvbURhdGE7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgTGF6eU5ldmVyRGVzdHJveWVkPEF0
b21pY1N0cmluZz4geG1sQXRvbURhdGE7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgTGF6eU5ldmVyRGVz
dHJveWVkPEF0b21pY1N0cmluZz4geG1sbnNBdG9tRGF0YTsKLQotdm9pZCBBdG9taWNTdHJpbmc6
OmluaXQoKQotewotICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBpbml0aWFsaXplS2V5OwotICAg
IHN0ZDo6Y2FsbF9vbmNlKGluaXRpYWxpemVLZXksIFtdIHsKLSAgICAgICAgLy8gSW5pdGlhbGl6
YXRpb24gaXMgbm90IHRocmVhZCBzYWZlLCBzbyB0aGlzIGZ1bmN0aW9uIG11c3QgYmUgY2FsbGVk
IGZyb20gdGhlIG1haW4gdGhyZWFkIGZpcnN0LgotICAgICAgICBBU1NFUlQoaXNVSVRocmVhZCgp
KTsKLQotICAgICAgICBudWxsQXRvbURhdGEuY29uc3RydWN0KCk7Ci0gICAgICAgIGVtcHR5QXRv
bURhdGEuY29uc3RydWN0KCIiKTsKLSAgICAgICAgc3RhckF0b21EYXRhLmNvbnN0cnVjdCgiKiIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgICAgICB4bWxBdG9tRGF0
YS5jb25zdHJ1Y3QoInhtbCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwot
ICAgICAgICB4bWxuc0F0b21EYXRhLmNvbnN0cnVjdCgieG1sbnMiLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICB9KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV1RGCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5oIGIvU291cmNlL1dU
Ri93dGYvdGV4dC9BdG9taWNTdHJpbmcuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MTJkMGY2ZjgxYzEzYTdlMGQ0ODJjZDgyMDYyYTZjZjc5NzRlNWRhYi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21p
Y1N0cmluZy5oCisrKyAvZGV2L251bGwKQEAgLTEsMzc3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDQtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
LSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICoKLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotI2luY2x1ZGUgPHV0aWxpdHk+Ci0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nSW1wbC5oPgotI2luY2x1ZGUg
PHd0Zi90ZXh0L0ludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uaD4KLSNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KLQotI2lmIE9TKFdJTkRPV1MpCi0jaW5jbHVkZSA8d3RmL3RleHQvd2lu
L1dDaGFyU3RyaW5nRXh0cmFzLmg+Ci0jZW5kaWYKLQotLy8gRGVmaW5lICdOT19JTVBMSUNJVF9B
VE9NSUNTVFJJTkcnIGJlZm9yZSBpbmNsdWRpbmcgdGhpcyBoZWFkZXIsCi0vLyB0byBkaXNhbGxv
dyAoZXhwZW5zaXZlKSBpbXBsaWNpdCBTdHJpbmctLT5BdG9taWNTdHJpbmcgY29udmVyc2lvbnMu
Ci0jaWZkZWYgTk9fSU1QTElDSVRfQVRPTUlDU1RSSU5HCi0jZGVmaW5lIEFUT01JQ1NUUklOR19D
T05WRVJTSU9OIGV4cGxpY2l0Ci0jZWxzZQotI2RlZmluZSBBVE9NSUNTVFJJTkdfQ09OVkVSU0lP
TgotI2VuZGlmCi0KLW5hbWVzcGFjZSBXVEYgewotCi1zdHJ1Y3QgQXRvbWljU3RyaW5nSGFzaDsK
LQotY2xhc3MgQXRvbWljU3RyaW5nIHsKLXB1YmxpYzoKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIHZvaWQgaW5pdCgpOwotCi0gICAgQXRvbWljU3RyaW5nKCk7Ci0gICAgQXRvbWljU3Ry
aW5nKGNvbnN0IExDaGFyKik7Ci0gICAgQXRvbWljU3RyaW5nKGNvbnN0IGNoYXIqKTsKLSAgICBB
dG9taWNTdHJpbmcoY29uc3QgTENoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIEF0b21pY1N0
cmluZyhjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgQXRvbWljU3RyaW5nKGNv
bnN0IFVDaGFyKik7Ci0KLSAgICB0ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHk+Ci0gICAg
ZXhwbGljaXQgQXRvbWljU3RyaW5nKGNvbnN0IFZlY3RvcjxVQ2hhciwgaW5saW5lQ2FwYWNpdHk+
JiBjaGFyYWN0ZXJzKQotICAgICAgICA6IG1fc3RyaW5nKEF0b21pY1N0cmluZ0ltcGw6OmFkZChj
aGFyYWN0ZXJzLmRhdGEoKSwgY2hhcmFjdGVycy5zaXplKCkpKQotICAgIHsKLSAgICB9Ci0KLSAg
ICBBdG9taWNTdHJpbmcoQXRvbWljU3RyaW5nSW1wbCopOwotICAgIEF0b21pY1N0cmluZyhSZWZQ
dHI8QXRvbWljU3RyaW5nSW1wbD4mJik7Ci0gICAgQXRvbWljU3RyaW5nKGNvbnN0IFN0YXRpY1N0
cmluZ0ltcGwqKTsKLSAgICBBVE9NSUNTVFJJTkdfQ09OVkVSU0lPTiBBdG9taWNTdHJpbmcoU3Ry
aW5nSW1wbCopOwotICAgIEFUT01JQ1NUUklOR19DT05WRVJTSU9OIEF0b21pY1N0cmluZyhjb25z
dCBTdHJpbmcmKTsKLSAgICBBdG9taWNTdHJpbmcoU3RyaW5nSW1wbCogYmFzZVN0cmluZywgdW5z
aWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCk7Ci0KLSAgICAvLyBGSVhNRTogQXRvbWljU3Ry
aW5nIGRvZXNu4oCZdCBhbHdheXMgaGF2ZSBBdG9taWNTdHJpbmdJbXBsLCBzbyBvbmUgb2YgdGhv
c2UgdHdvIG5hbWVzIG5lZWRzIHRvIGNoYW5nZS4uCi0gICAgQXRvbWljU3RyaW5nKFVuaXF1ZWRT
dHJpbmdJbXBsKiB1aWQpOwotCi0gICAgZW51bSBDb25zdHJ1Y3RGcm9tTGl0ZXJhbFRhZyB7IENv
bnN0cnVjdEZyb21MaXRlcmFsIH07Ci0gICAgQXRvbWljU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJh
Y3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgQ29uc3RydWN0RnJvbUxpdGVyYWxUYWcpCi0gICAgICAg
IDogbV9zdHJpbmcoQXRvbWljU3RyaW5nSW1wbDo6YWRkTGl0ZXJhbChjaGFyYWN0ZXJzLCBsZW5n
dGgpKQotICAgIHsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJDb3Vu
dD4gQUxXQVlTX0lOTElORSBBdG9taWNTdHJpbmcoY29uc3QgY2hhciAoJmNoYXJhY3RlcnMpW2No
YXJhY3RlckNvdW50XSwgQ29uc3RydWN0RnJvbUxpdGVyYWxUYWcpCi0gICAgICAgIDogbV9zdHJp
bmcoQXRvbWljU3RyaW5nSW1wbDo6YWRkTGl0ZXJhbChjaGFyYWN0ZXJzLCBjaGFyYWN0ZXJDb3Vu
dCAtIDEpKQotICAgIHsKLSAgICAgICAgQ09NUElMRV9BU1NFUlQoY2hhcmFjdGVyQ291bnQgPiAx
LCBBdG9taWNTdHJpbmdGcm9tTGl0ZXJhbE5vdEVtcHR5KTsKLSAgICAgICAgQ09NUElMRV9BU1NF
UlQoKGNoYXJhY3RlckNvdW50IC0gMSA8PSAoKHVuc2lnbmVkKH4wKSAtIHNpemVvZihTdHJpbmdJ
bXBsKSkgLyBzaXplb2YoTENoYXIpKSksIEF0b21pY1N0cmluZ0Zyb21MaXRlcmFsQ2Fubm90T3Zl
cmZsb3cpOwotICAgIH0KLQotICAgIC8vIFdlIGhhdmUgdG8gZGVjbGFyZSB0aGUgY29weSBjb25z
dHJ1Y3RvciBhbmQgY29weSBhc3NpZ25tZW50IG9wZXJhdG9yIGFzIHdlbGwsIG90aGVyd2lzZQot
ICAgIC8vIHRoZXknbGwgYmUgaW1wbGljaXRseSBkZWxldGVkIGJ5IGFkZGluZyB0aGUgbW92ZSBj
b25zdHJ1Y3RvciBhbmQgbW92ZSBhc3NpZ25tZW50IG9wZXJhdG9yLgotICAgIEF0b21pY1N0cmlu
Zyhjb25zdCBBdG9taWNTdHJpbmcmIG90aGVyKSA6IG1fc3RyaW5nKG90aGVyLm1fc3RyaW5nKSB7
IH0KLSAgICBBdG9taWNTdHJpbmcoQXRvbWljU3RyaW5nJiYgb3RoZXIpIDogbV9zdHJpbmcoV1RG
TW92ZShvdGhlci5tX3N0cmluZykpIHsgfQotICAgIEF0b21pY1N0cmluZyYgb3BlcmF0b3I9KGNv
bnN0IEF0b21pY1N0cmluZyYgb3RoZXIpIHsgbV9zdHJpbmcgPSBvdGhlci5tX3N0cmluZzsgcmV0
dXJuICp0aGlzOyB9Ci0gICAgQXRvbWljU3RyaW5nJiBvcGVyYXRvcj0oQXRvbWljU3RyaW5nJiYg
b3RoZXIpIHsgbV9zdHJpbmcgPSBXVEZNb3ZlKG90aGVyLm1fc3RyaW5nKTsgcmV0dXJuICp0aGlz
OyB9Ci0KLSAgICAvLyBIYXNoIHRhYmxlIGRlbGV0ZWQgdmFsdWVzLCB3aGljaCBhcmUgb25seSBj
b25zdHJ1Y3RlZCBhbmQgbmV2ZXIgY29waWVkIG9yIGRlc3Ryb3llZC4KLSAgICBBdG9taWNTdHJp
bmcoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKSA6IG1fc3RyaW5nKFdURjo6SGFzaFRh
YmxlRGVsZXRlZFZhbHVlKSB7IH0KLSAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkg
Y29uc3QgeyByZXR1cm4gbV9zdHJpbmcuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQotCi0g
ICAgdW5zaWduZWQgZXhpc3RpbmdIYXNoKCkgY29uc3QgeyByZXR1cm4gaXNOdWxsKCkgPyAwIDog
aW1wbCgpLT5leGlzdGluZ0hhc2goKTsgfQotCi0gICAgb3BlcmF0b3IgY29uc3QgU3RyaW5nJigp
IGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9Ci0gICAgY29uc3QgU3RyaW5nJiBzdHJpbmcoKSBj
b25zdCB7IHJldHVybiBtX3N0cmluZzsgfTsKLQotICAgIEF0b21pY1N0cmluZ0ltcGwqIGltcGwo
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxBdG9taWNTdHJpbmdJbXBsICo+KG1fc3RyaW5n
LmltcGwoKSk7IH0KLQotICAgIGJvb2wgaXM4Qml0KCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcu
aXM4Qml0KCk7IH0KLSAgICBjb25zdCBMQ2hhciogY2hhcmFjdGVyczgoKSBjb25zdCB7IHJldHVy
biBtX3N0cmluZy5jaGFyYWN0ZXJzOCgpOyB9Ci0gICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMx
NigpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmNoYXJhY3RlcnMxNigpOyB9Ci0gICAgdW5zaWdu
ZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcubGVuZ3RoKCk7IH0KLQotICAgIFVD
aGFyIG9wZXJhdG9yW10odW5zaWduZWQgaW50IGkpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nW2ld
OyB9Ci0KLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEF0b21pY1N0cmluZyBudW1iZXIo
aW50KTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEF0b21pY1N0cmluZyBudW1iZXIo
dW5zaWduZWQpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgQXRvbWljU3RyaW5nIG51
bWJlcih1bnNpZ25lZCBsb25nKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEF0b21p
Y1N0cmluZyBudW1iZXIodW5zaWduZWQgbG9uZyBsb25nKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIEF0b21pY1N0cmluZyBudW1iZXIoZmxvYXQpOwotICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgQXRvbWljU3RyaW5nIG51bWJlcihkb3VibGUpOwotICAgIC8vIElmIHdlIG5l
ZWQgbW9yZSBvdmVybG9hZHMgb2YgdGhlIG51bWJlciBmdW5jdGlvbiwgd2UgY2FuIGFkZCBhbGwg
dGhlIG90aGVycyB0aGF0IFN0cmluZyBoYXMsIGJ1dCB0aGVzZSBzZWVtIHRvIGRvIGZvciBub3cu
Ci0KLSAgICBib29sIGNvbnRhaW5zKFVDaGFyIGNoYXJhY3RlcikgY29uc3QgeyByZXR1cm4gbV9z
dHJpbmcuY29udGFpbnMoY2hhcmFjdGVyKTsgfQotICAgIGJvb2wgY29udGFpbnMoY29uc3QgTENo
YXIqIHN0cmluZykgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuY29udGFpbnMoc3RyaW5nKTsgfQot
ICAgIGJvb2wgY29udGFpbnMoY29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1f
c3RyaW5nLmNvbnRhaW5zKHN0cmluZyk7IH0KLSAgICBib29sIGNvbnRhaW5zSWdub3JpbmdBU0NJ
SUNhc2UoY29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmNvbnRh
aW5zSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nKTsgfQotCi0gICAgc2l6ZV90IGZpbmQoVUNoYXIg
Y2hhcmFjdGVyLCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmZp
bmQoY2hhcmFjdGVyLCBzdGFydCk7IH0KLSAgICBzaXplX3QgZmluZChjb25zdCBMQ2hhciogc3Ry
aW5nLCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmZpbmQoc3Ry
aW5nLCBzdGFydCk7IH0KLSAgICBzaXplX3QgZmluZChjb25zdCBTdHJpbmcmIHN0cmluZywgdW5z
aWduZWQgc3RhcnQgPSAwKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5maW5kKHN0cmluZywgc3Rh
cnQpOyB9Ci0gICAgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcmIHN0
cmluZykgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuZmluZElnbm9yaW5nQVNDSUlDYXNlKHN0cmlu
Zyk7IH0KLSAgICBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZyYgc3Ry
aW5nLCB1bnNpZ25lZCBzdGFydE9mZnNldCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuZmluZEln
bm9yaW5nQVNDSUlDYXNlKHN0cmluZywgc3RhcnRPZmZzZXQpOyB9Ci0gICAgc2l6ZV90IGZpbmQo
Q29kZVVuaXRNYXRjaEZ1bmN0aW9uIG1hdGNoRnVuY3Rpb24sIHVuc2lnbmVkIHN0YXJ0ID0gMCkg
Y29uc3QgeyByZXR1cm4gbV9zdHJpbmcuZmluZChtYXRjaEZ1bmN0aW9uLCBzdGFydCk7IH0KLQot
ICAgIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTdHJpbmcmIHN0cmluZykgY29uc3QgeyByZXR1cm4g
bV9zdHJpbmcuc3RhcnRzV2l0aChzdHJpbmcpOyB9Ci0gICAgYm9vbCBzdGFydHNXaXRoSWdub3Jp
bmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5n
LnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcpOyB9Ci0gICAgYm9vbCBzdGFydHNX
aXRoKFVDaGFyIGNoYXJhY3RlcikgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuc3RhcnRzV2l0aChj
aGFyYWN0ZXIpOyB9Ci0gICAgdGVtcGxhdGU8dW5zaWduZWQgbWF0Y2hMZW5ndGg+IGJvb2wgc3Rh
cnRzV2l0aChjb25zdCBjaGFyICgmcHJlZml4KVttYXRjaExlbmd0aF0pIGNvbnN0IHsgcmV0dXJu
IG1fc3RyaW5nLnN0YXJ0c1dpdGg8bWF0Y2hMZW5ndGg+KHByZWZpeCk7IH0KLQotICAgIGJvb2wg
ZW5kc1dpdGgoY29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmVu
ZHNXaXRoKHN0cmluZyk7IH0KLSAgICBib29sIGVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoY29u
c3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmVuZHNXaXRoSWdub3Jp
bmdBU0NJSUNhc2Uoc3RyaW5nKTsgfQotICAgIGJvb2wgZW5kc1dpdGgoVUNoYXIgY2hhcmFjdGVy
KSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5lbmRzV2l0aChjaGFyYWN0ZXIpOyB9Ci0gICAgdGVt
cGxhdGU8dW5zaWduZWQgbWF0Y2hMZW5ndGg+IGJvb2wgZW5kc1dpdGgoY29uc3QgY2hhciAoJnBy
ZWZpeClbbWF0Y2hMZW5ndGhdKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5lbmRzV2l0aDxtYXRj
aExlbmd0aD4ocHJlZml4KTsgfQotCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIEF0b21pY1N0cmlu
ZyBjb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpIGNvbnN0OwotICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBBdG9taWNTdHJpbmcgY29udmVydFRvQVNDSUlVcHBlcmNhc2UoKSBjb25zdDsKLQotICAgIGlu
dCB0b0ludChib29sKiBvayA9IDApIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLnRvSW50KG9rKTsg
fQotICAgIGRvdWJsZSB0b0RvdWJsZShib29sKiBvayA9IDApIGNvbnN0IHsgcmV0dXJuIG1fc3Ry
aW5nLnRvRG91YmxlKG9rKTsgfQotICAgIGZsb2F0IHRvRmxvYXQoYm9vbCogb2sgPSAwKSBjb25z
dCB7IHJldHVybiBtX3N0cmluZy50b0Zsb2F0KG9rKTsgfQotICAgIGJvb2wgcGVyY2VudGFnZShp
bnQmIHApIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLnBlcmNlbnRhZ2UocCk7IH0KLQotICAgIGJv
b2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuaXNOdWxsKCk7IH0KLSAgICBib29s
IGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5pc0VtcHR5KCk7IH0KLQotI2lmIFVT
RShDRikKLSAgICBBdG9taWNTdHJpbmcoQ0ZTdHJpbmdSZWYpOwotI2VuZGlmCi0KLSNpZmRlZiBf
X09CSkNfXwotICAgIEF0b21pY1N0cmluZyhOU1N0cmluZyopOwotICAgIG9wZXJhdG9yIE5TU3Ry
aW5nKigpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9Ci0jZW5kaWYKLQotI2lmIE9TKFdJTkRP
V1MpICYmIFVfSUNVX1ZFUlNJT05fTUFKT1JfTlVNID49IDU5Ci0gICAgQXRvbWljU3RyaW5nKGNv
bnN0IHdjaGFyX3QqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKLSAgICAgICAgOiBBdG9t
aWNTdHJpbmcodWNoYXJGcm9tKGNoYXJhY3RlcnMpLCBsZW5ndGgpIHsgfQotCi0gICAgQXRvbWlj
U3RyaW5nKGNvbnN0IHdjaGFyX3QqIGNoYXJhY3RlcnMpCi0gICAgICAgIDogQXRvbWljU3RyaW5n
KHVjaGFyRnJvbShjaGFyYWN0ZXJzKSkgeyB9Ci0jZW5kaWYKLQotICAgIC8vIEF0b21pY1N0cmlu
Zzo6ZnJvbVVURjggd2lsbCByZXR1cm4gYSBudWxsIHN0cmluZyBpZiB0aGUgaW5wdXQgZGF0YSBj
b250YWlucyBpbnZhbGlkIFVURi04IHNlcXVlbmNlcy4KLSAgICBzdGF0aWMgQXRvbWljU3RyaW5n
IGZyb21VVEY4KGNvbnN0IGNoYXIqLCBzaXplX3QpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcg
ZnJvbVVURjgoY29uc3QgY2hhciopOwotCi0jaWZuZGVmIE5ERUJVRwotICAgIHZvaWQgc2hvdygp
IGNvbnN0OwotI2VuZGlmCi0KLXByaXZhdGU6Ci0gICAgLy8gVGhlIGV4cGxpY2l0IGNvbnN0cnVj
dG9ycyB3aXRoIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwgbXVzdCBiZSB1c2Vk
IGZvciBsaXRlcmFscy4KLSAgICBBdG9taWNTdHJpbmcoQVNDSUlMaXRlcmFsKTsKLQotICAgIGVu
dW0gY2xhc3MgQ2FzZUNvbnZlcnRUeXBlIHsgVXBwZXIsIExvd2VyIH07Ci0gICAgdGVtcGxhdGU8
Q2FzZUNvbnZlcnRUeXBlPiBBdG9taWNTdHJpbmcgY29udmVydEFTQ0lJQ2FzZSgpIGNvbnN0Owot
Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBBdG9taWNTdHJpbmcgZnJvbVVURjhJbnRl
cm5hbChjb25zdCBjaGFyKiwgY29uc3QgY2hhciopOwotCi0gICAgU3RyaW5nIG1fc3RyaW5nOwot
fTsKLQotc3RhdGljX2Fzc2VydChzaXplb2YoQXRvbWljU3RyaW5nKSA9PSBzaXplb2YoU3RyaW5n
KSwgIkF0b21pY1N0cmluZyBhbmQgU3RyaW5nIG11c3QgYmUgc2FtZSBzaXplISIpOwotCi1pbmxp
bmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEF0b21pY1N0cmluZyYgYSwgY29uc3QgQXRvbWljU3Ry
aW5nJiBiKSB7IHJldHVybiBhLmltcGwoKSA9PSBiLmltcGwoKTsgfQotYm9vbCBvcGVyYXRvcj09
KGNvbnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IExDaGFyKik7Ci1pbmxpbmUgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IEF0b21pY1N0cmluZyYgYSwgY29uc3QgY2hhciogYikgeyByZXR1cm4gV1RGOjpl
cXVhbChhLmltcGwoKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGIpKTsgfQotaW5s
aW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBdG9taWNTdHJpbmcmIGEsIGNvbnN0IFZlY3RvcjxV
Q2hhcj4mIGIpIHsgcmV0dXJuIGEuaW1wbCgpICYmIGVxdWFsKGEuaW1wbCgpLCBiLmRhdGEoKSwg
Yi5zaXplKCkpOyB9ICAgIAotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBdG9taWNTdHJp
bmcmIGEsIGNvbnN0IFN0cmluZyYgYikgeyByZXR1cm4gZXF1YWwoYS5pbXBsKCksIGIuaW1wbCgp
KTsgfQotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBMQ2hhciogYSwgY29uc3QgQXRvbWlj
U3RyaW5nJiBiKSB7IHJldHVybiBiID09IGE7IH0KLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29u
c3QgU3RyaW5nJiBhLCBjb25zdCBBdG9taWNTdHJpbmcmIGIpIHsgcmV0dXJuIGVxdWFsKGEuaW1w
bCgpLCBiLmltcGwoKSk7IH0KLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgVmVjdG9yPFVD
aGFyPiYgYSwgY29uc3QgQXRvbWljU3RyaW5nJiBiKSB7IHJldHVybiBiID09IGE7IH0KLQotaW5s
aW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBBdG9taWNTdHJpbmcmIGEsIGNvbnN0IEF0b21pY1N0
cmluZyYgYikgeyByZXR1cm4gYS5pbXBsKCkgIT0gYi5pbXBsKCk7IH0KLWlubGluZSBib29sIG9w
ZXJhdG9yIT0oY29uc3QgQXRvbWljU3RyaW5nJiBhLCBjb25zdCBMQ2hhciogYikgeyByZXR1cm4g
IShhID09IGIpOyB9Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEF0b21pY1N0cmluZyYg
YSwgY29uc3QgY2hhciogYikgeyByZXR1cm4gIShhID09IGIpOyB9Ci1pbmxpbmUgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IEF0b21pY1N0cmluZyYgYSwgY29uc3QgU3RyaW5nJiBiKSB7IHJldHVybiAh
ZXF1YWwoYS5pbXBsKCksIGIuaW1wbCgpKTsgfQotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBBdG9taWNTdHJpbmcmIGEsIGNvbnN0IFZlY3RvcjxVQ2hhcj4mIGIpIHsgcmV0dXJuICEoYSA9
PSBiKTsgfQotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBMQ2hhciogYSwgY29uc3QgQXRv
bWljU3RyaW5nJiBiKSB7IHJldHVybiAhKGIgPT0gYSk7IH0KLWlubGluZSBib29sIG9wZXJhdG9y
IT0oY29uc3QgU3RyaW5nJiBhLCBjb25zdCBBdG9taWNTdHJpbmcmIGIpIHsgcmV0dXJuICFlcXVh
bChhLmltcGwoKSwgYi5pbXBsKCkpOyB9Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFZl
Y3RvcjxVQ2hhcj4mIGEsIGNvbnN0IEF0b21pY1N0cmluZyYgYikgeyByZXR1cm4gIShhID09IGIp
OyB9Ci0KLWJvb2wgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBBdG9taWNTdHJpbmcmLCBj
b25zdCBBdG9taWNTdHJpbmcmKTsKLWJvb2wgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBB
dG9taWNTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKLWJvb2wgZXF1YWxJZ25vcmluZ0FTQ0lJQ2Fz
ZShjb25zdCBTdHJpbmcmLCBjb25zdCBBdG9taWNTdHJpbmcmKTsKLWJvb2wgZXF1YWxJZ25vcmlu
Z0FTQ0lJQ2FzZShjb25zdCBBdG9taWNTdHJpbmcmLCBjb25zdCBjaGFyKik7Ci0KLXRlbXBsYXRl
PHVuc2lnbmVkIGxlbmd0aD4gYm9vbCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShjb25z
dCBBdG9taWNTdHJpbmcmLCBjb25zdCBjaGFyICgmbG93ZXJjYXNlTGV0dGVycylbbGVuZ3RoXSk7
Ci0KLWlubGluZSBBdG9taWNTdHJpbmc6OkF0b21pY1N0cmluZygpCi17Ci19Ci0KLWlubGluZSBB
dG9taWNTdHJpbmc6OkF0b21pY1N0cmluZyhjb25zdCBMQ2hhciogc3RyaW5nKQotICAgIDogbV9z
dHJpbmcoQXRvbWljU3RyaW5nSW1wbDo6YWRkKHN0cmluZykpCi17Ci19Ci0KLWlubGluZSBBdG9t
aWNTdHJpbmc6OkF0b21pY1N0cmluZyhjb25zdCBjaGFyKiBzdHJpbmcpCi0gICAgOiBtX3N0cmlu
ZyhBdG9taWNTdHJpbmdJbXBsOjphZGQoc3RyaW5nKSkKLXsKLX0KLQotaW5saW5lIEF0b21pY1N0
cmluZzo6QXRvbWljU3RyaW5nKGNvbnN0IExDaGFyKiBzdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCkK
LSAgICA6IG1fc3RyaW5nKEF0b21pY1N0cmluZ0ltcGw6OmFkZChzdHJpbmcsIGxlbmd0aCkpCi17
Ci19Ci0KLWlubGluZSBBdG9taWNTdHJpbmc6OkF0b21pY1N0cmluZyhjb25zdCBVQ2hhciogc3Ry
aW5nLCB1bnNpZ25lZCBsZW5ndGgpCi0gICAgOiBtX3N0cmluZyhBdG9taWNTdHJpbmdJbXBsOjph
ZGQoc3RyaW5nLCBsZW5ndGgpKQotewotfQotCi1pbmxpbmUgQXRvbWljU3RyaW5nOjpBdG9taWNT
dHJpbmcoY29uc3QgVUNoYXIqIHN0cmluZykKLSAgICA6IG1fc3RyaW5nKEF0b21pY1N0cmluZ0lt
cGw6OmFkZChzdHJpbmcpKQotewotfQotCi1pbmxpbmUgQXRvbWljU3RyaW5nOjpBdG9taWNTdHJp
bmcoQXRvbWljU3RyaW5nSW1wbCogc3RyaW5nKQotICAgIDogbV9zdHJpbmcoc3RyaW5nKQotewot
fQotCi1pbmxpbmUgQXRvbWljU3RyaW5nOjpBdG9taWNTdHJpbmcoUmVmUHRyPEF0b21pY1N0cmlu
Z0ltcGw+JiYgc3RyaW5nKQotICAgIDogbV9zdHJpbmcoV1RGTW92ZShzdHJpbmcpKQotewotfQot
Ci1pbmxpbmUgQXRvbWljU3RyaW5nOjpBdG9taWNTdHJpbmcoU3RyaW5nSW1wbCogc3RyaW5nKQot
ICAgIDogbV9zdHJpbmcoQXRvbWljU3RyaW5nSW1wbDo6YWRkKHN0cmluZykpCi17Ci19Ci0KLWlu
bGluZSBBdG9taWNTdHJpbmc6OkF0b21pY1N0cmluZyhjb25zdCBTdGF0aWNTdHJpbmdJbXBsKiBz
dHJpbmcpCi0gICAgOiBtX3N0cmluZyhBdG9taWNTdHJpbmdJbXBsOjphZGQoc3RyaW5nKSkKLXsK
LX0KLQotaW5saW5lIEF0b21pY1N0cmluZzo6QXRvbWljU3RyaW5nKGNvbnN0IFN0cmluZyYgc3Ry
aW5nKQotICAgIDogbV9zdHJpbmcoQXRvbWljU3RyaW5nSW1wbDo6YWRkKHN0cmluZy5pbXBsKCkp
KQotewotfQotCi1pbmxpbmUgQXRvbWljU3RyaW5nOjpBdG9taWNTdHJpbmcoU3RyaW5nSW1wbCog
YmFzZVN0cmluZywgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCkKLSAgICA6IG1fc3Ry
aW5nKEF0b21pY1N0cmluZ0ltcGw6OmFkZChiYXNlU3RyaW5nLCBzdGFydCwgbGVuZ3RoKSkKLXsK
LX0KLQotaW5saW5lIEF0b21pY1N0cmluZzo6QXRvbWljU3RyaW5nKFVuaXF1ZWRTdHJpbmdJbXBs
KiB1aWQpCi0gICAgOiBtX3N0cmluZyh1aWQpCi17Ci19Ci0KLSNpZiBVU0UoQ0YpCi0KLWlubGlu
ZSBBdG9taWNTdHJpbmc6OkF0b21pY1N0cmluZyhDRlN0cmluZ1JlZiBzdHJpbmcpCi0gICAgOiAg
bV9zdHJpbmcoQXRvbWljU3RyaW5nSW1wbDo6YWRkKHN0cmluZykpCi17Ci19Ci0KLSNlbmRpZgot
Ci0jaWZkZWYgX19PQkpDX18KLQotaW5saW5lIEF0b21pY1N0cmluZzo6QXRvbWljU3RyaW5nKE5T
U3RyaW5nKiBzdHJpbmcpCi0gICAgOiBtX3N0cmluZyhBdG9taWNTdHJpbmdJbXBsOjphZGQoKF9f
YnJpZGdlIENGU3RyaW5nUmVmKXN0cmluZykpCi17Ci19Ci0KLSNlbmRpZgotCi0vLyBEZWZpbmUg
ZXh0ZXJuYWwgZ2xvYmFsIHZhcmlhYmxlcyBmb3IgdGhlIGNvbW1vbmx5IHVzZWQgYXRvbWljIHN0
cmluZ3MuCi0vLyBUaGVzZSBhcmUgb25seSB1c2FibGUgZnJvbSB0aGUgbWFpbiB0aHJlYWQuCi1l
eHRlcm4gV1RGX0VYUE9SVF9QUklWQVRFIExhenlOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+
IG51bGxBdG9tRGF0YTsKLWV4dGVybiBXVEZfRVhQT1JUX1BSSVZBVEUgTGF6eU5ldmVyRGVzdHJv
eWVkPEF0b21pY1N0cmluZz4gZW1wdHlBdG9tRGF0YTsKLWV4dGVybiBXVEZfRVhQT1JUX1BSSVZB
VEUgTGF6eU5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gc3RhckF0b21EYXRhOwotZXh0ZXJu
IFdURl9FWFBPUlRfUFJJVkFURSBMYXp5TmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiB4bWxB
dG9tRGF0YTsKLWV4dGVybiBXVEZfRVhQT1JUX1BSSVZBVEUgTGF6eU5ldmVyRGVzdHJveWVkPEF0
b21pY1N0cmluZz4geG1sbnNBdG9tRGF0YTsKLQotaW5saW5lIGNvbnN0IEF0b21pY1N0cmluZyYg
bnVsbEF0b20oKSB7IHJldHVybiBudWxsQXRvbURhdGEuZ2V0KCk7IH0KLWlubGluZSBjb25zdCBB
dG9taWNTdHJpbmcmIGVtcHR5QXRvbSgpIHsgcmV0dXJuIGVtcHR5QXRvbURhdGEuZ2V0KCk7IH0K
LWlubGluZSBjb25zdCBBdG9taWNTdHJpbmcmIHN0YXJBdG9tKCkgeyByZXR1cm4gc3RhckF0b21E
YXRhLmdldCgpOyB9Ci1pbmxpbmUgY29uc3QgQXRvbWljU3RyaW5nJiB4bWxBdG9tKCkgeyByZXR1
cm4geG1sQXRvbURhdGEuZ2V0KCk7IH0KLWlubGluZSBjb25zdCBBdG9taWNTdHJpbmcmIHhtbG5z
QXRvbSgpIHsgcmV0dXJuIHhtbG5zQXRvbURhdGEuZ2V0KCk7IH0KLQotaW5saW5lIEF0b21pY1N0
cmluZyBBdG9taWNTdHJpbmc6OmZyb21VVEY4KGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHNpemVf
dCBsZW5ndGgpCi17Ci0gICAgaWYgKCFjaGFyYWN0ZXJzKQotICAgICAgICByZXR1cm4gbnVsbEF0
b20oKTsKLSAgICBpZiAoIWxlbmd0aCkKLSAgICAgICAgcmV0dXJuIGVtcHR5QXRvbSgpOwotICAg
IHJldHVybiBmcm9tVVRGOEludGVybmFsKGNoYXJhY3RlcnMsIGNoYXJhY3RlcnMgKyBsZW5ndGgp
OwotfQotCi1pbmxpbmUgQXRvbWljU3RyaW5nIEF0b21pY1N0cmluZzo6ZnJvbVVURjgoY29uc3Qg
Y2hhciogY2hhcmFjdGVycykKLXsKLSAgICBpZiAoIWNoYXJhY3RlcnMpCi0gICAgICAgIHJldHVy
biBudWxsQXRvbSgpOwotICAgIGlmICghKmNoYXJhY3RlcnMpCi0gICAgICAgIHJldHVybiBlbXB0
eUF0b20oKTsKLSAgICByZXR1cm4gZnJvbVVURjhJbnRlcm5hbChjaGFyYWN0ZXJzLCBudWxscHRy
KTsKLX0KLQotLy8gQXRvbWljU3RyaW5nSGFzaCBpcyB0aGUgZGVmYXVsdCBoYXNoIGZvciBBdG9t
aWNTdHJpbmcKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBEZWZhdWx0SGFzaDsKLXRlbXBs
YXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPEF0b21pY1N0cmluZz4gewotICAgIHR5cGVkZWYgQXRv
bWljU3RyaW5nSGFzaCBIYXNoOwotfTsKLQotdGVtcGxhdGU8dW5zaWduZWQgbGVuZ3RoPiBpbmxp
bmUgYm9vbCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBBdG9taWNTdHJpbmcm
IHN0cmluZywgY29uc3QgY2hhciAoJmxvd2VyY2FzZUxldHRlcnMpW2xlbmd0aF0pCi17Ci0gICAg
cmV0dXJuIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHN0cmluZy5zdHJpbmcoKSwgbG93
ZXJjYXNlTGV0dGVycyk7Ci19Ci0KLWlubGluZSBib29sIGVxdWFsSWdub3JpbmdBU0NJSUNhc2Uo
Y29uc3QgQXRvbWljU3RyaW5nJiBhLCBjb25zdCBBdG9taWNTdHJpbmcmIGIpCi17Ci0gICAgcmV0
dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoYS5zdHJpbmcoKSwgYi5zdHJpbmcoKSk7Ci19Ci0K
LWlubGluZSBib29sIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgQXRvbWljU3RyaW5nJiBh
LCBjb25zdCBTdHJpbmcmIGIpCi17Ci0gICAgcmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2Uo
YS5zdHJpbmcoKSwgYik7Ci19Ci0KLWlubGluZSBib29sIGVxdWFsSWdub3JpbmdBU0NJSUNhc2Uo
Y29uc3QgU3RyaW5nJiBhLCBjb25zdCBBdG9taWNTdHJpbmcmIGIpCi17Ci0gICAgcmV0dXJuIGVx
dWFsSWdub3JpbmdBU0NJSUNhc2UoYSwgYi5zdHJpbmcoKSk7Ci19Ci0KLWlubGluZSBib29sIGVx
dWFsSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgQXRvbWljU3RyaW5nJiBhLCBjb25zdCBjaGFyKiBi
KQotewotICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGEuc3RyaW5nKCksIGIpOwot
fQotCi10ZW1wbGF0ZTw+IHN0cnVjdCBJbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uVHJhaXQ8QXRv
bWljU3RyaW5nPiB7Ci0gICAgdXNpbmcgUmV0dXJuVHlwZSA9IEF0b21pY1N0cmluZzsKLSAgICB1
c2luZyBBZGRpdGlvbmFsQXJndW1lbnRUeXBlID0gdm9pZDsKLSAgICBzdGF0aWMgQXRvbWljU3Ry
aW5nIGZsdXNoKExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIHZvaWQqKSB7IHJl
dHVybiB7IGNoYXJhY3RlcnMsIGxlbmd0aCB9OyB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXVEYK
LQotI2lmbmRlZiBBVE9NSUNTVFJJTkdfSElERV9HTE9CQUxTCi11c2luZyBXVEY6OkF0b21pY1N0
cmluZzsKLXVzaW5nIFdURjo6bnVsbEF0b207Ci11c2luZyBXVEY6OmVtcHR5QXRvbTsKLXVzaW5n
IFdURjo6c3RhckF0b207Ci11c2luZyBXVEY6OnhtbEF0b207Ci11c2luZyBXVEY6OnhtbG5zQXRv
bTsKLSNlbmRpZgotCi0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nSGFzaC5oIGIvU291cmNl
L1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmdIYXNoLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGYyYjdkMmUxNjVkMDY0MDY1OWFjZmEyYWU2NWEyODhlZTE1YmY1MTYuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dURi93dGYvdGV4
dC9BdG9taWNTdHJpbmdIYXNoLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2OCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuIAotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uIAotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAo
IkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9t
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
IAotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25j
ZQotCi0jaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL0hh
c2hUcmFpdHMuaD4KLQotbmFtZXNwYWNlIFdURiB7Ci0KLSAgICBzdHJ1Y3QgQXRvbWljU3RyaW5n
SGFzaCB7Ci0gICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IEF0b21pY1N0cmluZyYg
a2V5KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4ga2V5LmltcGwoKS0+ZXhpc3RpbmdI
YXNoKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBBdG9t
aWNTdHJpbmcmIGEsIGNvbnN0IEF0b21pY1N0cmluZyYgYikKLSAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuIGEgPT0gYjsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyBjb25zdCBib29s
IHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gZmFsc2U7Ci0gICAgfTsKLQotICAgIHRl
bXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8V1RGOjpBdG9taWNTdHJpbmc+IDogU2ltcGxlQ2xh
c3NIYXNoVHJhaXRzPFdURjo6QXRvbWljU3RyaW5nPiB7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBi
b29sIGhhc0lzRW1wdHlWYWx1ZUZ1bmN0aW9uID0gdHJ1ZTsKLSAgICAgICAgc3RhdGljIGJvb2wg
aXNFbXB0eVZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiB2YWx1ZS5pc051bGwoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRp
YyB2b2lkIGN1c3RvbURlbGV0ZUJ1Y2tldChBdG9taWNTdHJpbmcmIHZhbHVlKQotICAgICAgICB7
Ci0gICAgICAgICAgICAvLyBTZWUgdW5pcXVlX3B0cidzIGN1c3RvbURlbGV0ZUJ1Y2tldCgpIGZv
ciBhbiBleHBsYW5hdGlvbi4KLSAgICAgICAgICAgIEFTU0VSVCghaXNEZWxldGVkVmFsdWUodmFs
dWUpKTsKLSAgICAgICAgICAgIEF0b21pY1N0cmluZyB2YWx1ZVRvQmVEZXN0cm95ZWQgPSBXVEZN
b3ZlKHZhbHVlKTsKLSAgICAgICAgICAgIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZSh2YWx1ZSk7Ci0g
ICAgICAgIH0KLSAgICB9OwotCi19Ci0KLXVzaW5nIFdURjo6QXRvbWljU3RyaW5nSGFzaDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nSW1wbC5jcHAgYi9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZ0ltcGwuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA2MDFmZWI1ZmQzMzEzMGJlYzQ2MDUwMjM2ZTJlYzQxZDgwOWM0ZmVmLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvQXRvbWljU3RyaW5nSW1wbC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NTMgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNC0yMDA4LCAyMDEzLTIwMTQgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEwIFBhdHJpY2sgR2Fuc3Rl
cmVyIDxwYXJvZ2FAcGFyb2dhLmNvbT4KLSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1
a2k8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgot
ICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmdJbXBsLmg+Ci0K
LSNpbmNsdWRlIDx3dGYvQ29tbWFQcmludGVyLmg+Ci0jaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4K
LSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVh
bS5oPgotI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9BdG9t
aWNTdHJpbmdUYWJsZS5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0ludGVnZXJUb1N0cmluZ0NvbnZl
cnNpb24uaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+Ci0jaW5jbHVkZSA8d3Rm
L3VuaWNvZGUvVVRGOENvbnZlcnNpb24uaD4KLQotI2lmIFVTRShXRUJfVEhSRUFEKQotI2luY2x1
ZGUgPHd0Zi9Mb2NrLmg+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIFdURiB7Ci0KLXVzaW5nIG5hbWVz
cGFjZSBVbmljb2RlOwotCi0jaWYgVVNFKFdFQl9USFJFQUQpCi0KLWNsYXNzIEF0b21pY1N0cmlu
Z1RhYmxlTG9ja2VyIDogcHVibGljIExvY2tIb2xkZXIgewotICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKEF0b21pY1N0cmluZ1RhYmxlTG9ja2VyKTsKLQotICAgIHN0YXRpYyBMb2NrIHNfc3RyaW5n
VGFibGVMb2NrOwotcHVibGljOgotICAgIEF0b21pY1N0cmluZ1RhYmxlTG9ja2VyKCkKLSAgICAg
ICAgOiBMb2NrSG9sZGVyKCZzX3N0cmluZ1RhYmxlTG9jaykKLSAgICB7Ci0gICAgfQotfTsKLQot
TG9jayBBdG9taWNTdHJpbmdUYWJsZUxvY2tlcjo6c19zdHJpbmdUYWJsZUxvY2s7Ci0KLSNlbHNl
Ci0KLWNsYXNzIEF0b21pY1N0cmluZ1RhYmxlTG9ja2VyIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShBdG9taWNTdHJpbmdUYWJsZUxvY2tlcik7Ci1wdWJsaWM6Ci0gICAgQXRvbWljU3RyaW5n
VGFibGVMb2NrZXIoKSB7IH0KLX07Ci0KLSNlbmRpZiAvLyBVU0UoV0VCX1RIUkVBRCkKLQotdXNp
bmcgU3RyaW5nVGFibGVJbXBsID0gSGFzaFNldDxTdHJpbmdJbXBsKj47Ci0KLXN0YXRpYyBBTFdB
WVNfSU5MSU5FIFN0cmluZ1RhYmxlSW1wbCYgc3RyaW5nVGFibGUoKQotewotICAgIHJldHVybiBU
aHJlYWQ6OmN1cnJlbnQoKS5hdG9taWNTdHJpbmdUYWJsZSgpLT50YWJsZSgpOwotfQotCi10ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBIYXNoVHJhbnNsYXRvcj4KLXN0YXRpYyBpbmxpbmUg
UmVmPEF0b21pY1N0cmluZ0ltcGw+IGFkZFRvU3RyaW5nVGFibGUoQXRvbWljU3RyaW5nVGFibGVM
b2NrZXImLCBTdHJpbmdUYWJsZUltcGwmIGF0b21pY1N0cmluZ1RhYmxlLCBjb25zdCBUJiB2YWx1
ZSkKLXsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IGF0b21pY1N0cmluZ1RhYmxlLmFkZDxIYXNoVHJh
bnNsYXRvcj4odmFsdWUpOwotCi0gICAgLy8gSWYgdGhlIHN0cmluZyBpcyBuZXdseS10cmFuc2xh
dGVkLCB0aGVuIHdlIG5lZWQgdG8gYWRvcHQgaXQuCi0gICAgLy8gVGhlIGJvb2xlYW4gaW4gdGhl
IHBhaXIgdGVsbHMgdXMgaWYgdGhhdCBpcyBzby4KLSAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50
cnkpCi0gICAgICAgIHJldHVybiBhZG9wdFJlZihzdGF0aWNfY2FzdDxBdG9taWNTdHJpbmdJbXBs
Jj4oKiphZGRSZXN1bHQuaXRlcmF0b3IpKTsKLSAgICByZXR1cm4gKnN0YXRpY19jYXN0PEF0b21p
Y1N0cmluZ0ltcGwqPigqYWRkUmVzdWx0Lml0ZXJhdG9yKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgSGFzaFRyYW5zbGF0b3I+Ci1zdGF0aWMgaW5saW5lIFJlZjxBdG9taWNT
dHJpbmdJbXBsPiBhZGRUb1N0cmluZ1RhYmxlKGNvbnN0IFQmIHZhbHVlKQotewotICAgIEF0b21p
Y1N0cmluZ1RhYmxlTG9ja2VyIGxvY2tlcjsKLSAgICByZXR1cm4gYWRkVG9TdHJpbmdUYWJsZTxU
LCBIYXNoVHJhbnNsYXRvcj4obG9ja2VyLCBzdHJpbmdUYWJsZSgpLCB2YWx1ZSk7Ci19Ci0KLXN0
cnVjdCBDU3RyaW5nVHJhbnNsYXRvciB7Ci0gICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3Qg
TENoYXIqIGNoYXJhY3RlcnMpCi0gICAgewotICAgICAgICByZXR1cm4gU3RyaW5nSGFzaGVyOjpj
b21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0cyhjaGFyYWN0ZXJzKTsKLSAgICB9Ci0KLSAgICBzdGF0
aWMgaW5saW5lIGJvb2wgZXF1YWwoU3RyaW5nSW1wbCogc3RyLCBjb25zdCBMQ2hhciogY2hhcmFj
dGVycykKLSAgICB7Ci0gICAgICAgIHJldHVybiBXVEY6OmVxdWFsKHN0ciwgY2hhcmFjdGVycyk7
Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgdHJhbnNsYXRlKFN0cmluZ0ltcGwqJiBsb2NhdGlv
biwgY29uc3QgTENoYXIqIGNvbnN0JiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBoYXNoKQotICAgIHsK
LSAgICAgICAgbG9jYXRpb24gPSAmU3RyaW5nSW1wbDo6Y3JlYXRlKGNoYXJhY3RlcnMpLmxlYWtS
ZWYoKTsKLSAgICAgICAgbG9jYXRpb24tPnNldEhhc2goaGFzaCk7Ci0gICAgICAgIGxvY2F0aW9u
LT5zZXRJc0F0b21pYyh0cnVlKTsKLSAgICB9Ci19OwotCi1SZWZQdHI8QXRvbWljU3RyaW5nSW1w
bD4gQXRvbWljU3RyaW5nSW1wbDo6YWRkKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzKQotewotICAg
IGlmICghY2hhcmFjdGVycykKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgaWYgKCEqY2hh
cmFjdGVycykKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEF0b21pY1N0cmluZ0ltcGwqPihT
dHJpbmdJbXBsOjplbXB0eSgpKTsKLQotICAgIHJldHVybiBhZGRUb1N0cmluZ1RhYmxlPGNvbnN0
IExDaGFyKiwgQ1N0cmluZ1RyYW5zbGF0b3I+KGNoYXJhY3RlcnMpOwotfQotCi10ZW1wbGF0ZTx0
eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotc3RydWN0IEhhc2hUcmFuc2xhdG9yQ2hhckJ1ZmZlciB7
Ci0gICAgY29uc3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVyczsKLSAgICB1bnNpZ25lZCBsZW5n
dGg7Ci0gICAgdW5zaWduZWQgaGFzaDsKLQotICAgIEhhc2hUcmFuc2xhdG9yQ2hhckJ1ZmZlcihj
b25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCi0gICAgICAg
IDogY2hhcmFjdGVycyhjaGFyYWN0ZXJzKQotICAgICAgICAsIGxlbmd0aChsZW5ndGgpCi0gICAg
ICAgICwgaGFzaChTdHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKGNoYXJh
Y3RlcnMsIGxlbmd0aCkpCi0gICAgewotICAgIH0KLQotICAgIEhhc2hUcmFuc2xhdG9yQ2hhckJ1
ZmZlcihjb25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIHVu
c2lnbmVkIGhhc2gpCi0gICAgICAgIDogY2hhcmFjdGVycyhjaGFyYWN0ZXJzKQotICAgICAgICAs
IGxlbmd0aChsZW5ndGgpCi0gICAgICAgICwgaGFzaChoYXNoKQotICAgIHsKLSAgICB9Ci19Owot
Ci11c2luZyBVQ2hhckJ1ZmZlciA9IEhhc2hUcmFuc2xhdG9yQ2hhckJ1ZmZlcjxVQ2hhcj47Ci1z
dHJ1Y3QgVUNoYXJCdWZmZXJUcmFuc2xhdG9yIHsKLSAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChj
b25zdCBVQ2hhckJ1ZmZlciYgYnVmKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGJ1Zi5oYXNoOwot
ICAgIH0KLQotICAgIHN0YXRpYyBib29sIGVxdWFsKFN0cmluZ0ltcGwqIGNvbnN0JiBzdHIsIGNv
bnN0IFVDaGFyQnVmZmVyJiBidWYpCi0gICAgewotICAgICAgICByZXR1cm4gV1RGOjplcXVhbChz
dHIsIGJ1Zi5jaGFyYWN0ZXJzLCBidWYubGVuZ3RoKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9p
ZCB0cmFuc2xhdGUoU3RyaW5nSW1wbComIGxvY2F0aW9uLCBjb25zdCBVQ2hhckJ1ZmZlciYgYnVm
LCB1bnNpZ25lZCBoYXNoKQotICAgIHsKLSAgICAgICAgbG9jYXRpb24gPSAmU3RyaW5nSW1wbDo6
Y3JlYXRlOEJpdElmUG9zc2libGUoYnVmLmNoYXJhY3RlcnMsIGJ1Zi5sZW5ndGgpLmxlYWtSZWYo
KTsKLSAgICAgICAgbG9jYXRpb24tPnNldEhhc2goaGFzaCk7Ci0gICAgICAgIGxvY2F0aW9uLT5z
ZXRJc0F0b21pYyh0cnVlKTsKLSAgICB9Ci19OwotCi1zdHJ1Y3QgSGFzaEFuZFVURjhDaGFyYWN0
ZXJzIHsKLSAgICB1bnNpZ25lZCBoYXNoOwotICAgIGNvbnN0IGNoYXIqIGNoYXJhY3RlcnM7Ci0g
ICAgdW5zaWduZWQgbGVuZ3RoOwotICAgIHVuc2lnbmVkIHV0ZjE2TGVuZ3RoOwotfTsKLQotc3Ry
dWN0IEhhc2hBbmRVVEY4Q2hhcmFjdGVyc1RyYW5zbGF0b3IgewotICAgIHN0YXRpYyB1bnNpZ25l
ZCBoYXNoKGNvbnN0IEhhc2hBbmRVVEY4Q2hhcmFjdGVycyYgYnVmZmVyKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIGJ1ZmZlci5oYXNoOwotICAgIH0KLQotICAgIHN0YXRpYyBib29sIGVxdWFsKFN0
cmluZ0ltcGwqIGNvbnN0JiBzdHJpbmcsIGNvbnN0IEhhc2hBbmRVVEY4Q2hhcmFjdGVycyYgYnVm
ZmVyKQotICAgIHsKLSAgICAgICAgaWYgKGJ1ZmZlci51dGYxNkxlbmd0aCAhPSBzdHJpbmctPmxl
bmd0aCgpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIC8vIElmIGJ1ZmZl
ciBjb250YWlucyBvbmx5IEFTQ0lJIGNoYXJhY3RlcnMgVVRGLTggYW5kIFVURjE2IGxlbmd0aCBh
cmUgdGhlIHNhbWUuCi0gICAgICAgIGlmIChidWZmZXIudXRmMTZMZW5ndGggIT0gYnVmZmVyLmxl
bmd0aCkgewotICAgICAgICAgICAgaWYgKHN0cmluZy0+aXM4Qml0KCkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIGVxdWFsTGF0aW4xV2l0aFVURjgoc3RyaW5nLT5jaGFyYWN0ZXJzOCgpLCBidWZm
ZXIuY2hhcmFjdGVycywgYnVmZmVyLmNoYXJhY3RlcnMgKyBidWZmZXIubGVuZ3RoKTsKLQotICAg
ICAgICAgICAgcmV0dXJuIGVxdWFsVVRGMTZXaXRoVVRGOChzdHJpbmctPmNoYXJhY3RlcnMxNigp
LCBidWZmZXIuY2hhcmFjdGVycywgYnVmZmVyLmNoYXJhY3RlcnMgKyBidWZmZXIubGVuZ3RoKTsK
LSAgICAgICAgfQotCi0gICAgICAgIGlmIChzdHJpbmctPmlzOEJpdCgpKSB7Ci0gICAgICAgICAg
ICBjb25zdCBMQ2hhciogc3RyaW5nQ2hhcmFjdGVycyA9IHN0cmluZy0+Y2hhcmFjdGVyczgoKTsK
LQotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJ1ZmZlci5sZW5ndGg7ICsr
aSkgewotICAgICAgICAgICAgICAgIEFTU0VSVChpc0FTQ0lJKGJ1ZmZlci5jaGFyYWN0ZXJzW2ld
KSk7Ci0gICAgICAgICAgICAgICAgaWYgKHN0cmluZ0NoYXJhY3RlcnNbaV0gIT0gYnVmZmVyLmNo
YXJhY3RlcnNbaV0pCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICBj
b25zdCBVQ2hhciogc3RyaW5nQ2hhcmFjdGVycyA9IHN0cmluZy0+Y2hhcmFjdGVyczE2KCk7Ci0K
LSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJ1ZmZlci5sZW5ndGg7ICsraSkgewot
ICAgICAgICAgICAgQVNTRVJUKGlzQVNDSUkoYnVmZmVyLmNoYXJhY3RlcnNbaV0pKTsKLSAgICAg
ICAgICAgIGlmIChzdHJpbmdDaGFyYWN0ZXJzW2ldICE9IGJ1ZmZlci5jaGFyYWN0ZXJzW2ldKQot
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVy
biB0cnVlOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIHRyYW5zbGF0ZShTdHJpbmdJbXBsKiYg
bG9jYXRpb24sIGNvbnN0IEhhc2hBbmRVVEY4Q2hhcmFjdGVycyYgYnVmZmVyLCB1bnNpZ25lZCBo
YXNoKQotICAgIHsKLSAgICAgICAgVUNoYXIqIHRhcmdldDsKLSAgICAgICAgYXV0byBuZXdTdHJp
bmcgPSBTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRpYWxpemVkKGJ1ZmZlci51dGYxNkxlbmd0aCwg
dGFyZ2V0KTsKLQotICAgICAgICBib29sIGlzQWxsQVNDSUk7Ci0gICAgICAgIGNvbnN0IGNoYXIq
IHNvdXJjZSA9IGJ1ZmZlci5jaGFyYWN0ZXJzOwotICAgICAgICBpZiAoIWNvbnZlcnRVVEY4VG9V
VEYxNihzb3VyY2UsIHNvdXJjZSArIGJ1ZmZlci5sZW5ndGgsICZ0YXJnZXQsIHRhcmdldCArIGJ1
ZmZlci51dGYxNkxlbmd0aCwgJmlzQWxsQVNDSUkpKQotICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0KLSAgICAgICAgaWYgKGlzQWxsQVNDSUkpCi0gICAgICAgICAgICBuZXdTdHJp
bmcgPSBTdHJpbmdJbXBsOjpjcmVhdGUoYnVmZmVyLmNoYXJhY3RlcnMsIGJ1ZmZlci5sZW5ndGgp
OwotCi0gICAgICAgIGxvY2F0aW9uID0gJm5ld1N0cmluZy5sZWFrUmVmKCk7Ci0gICAgICAgIGxv
Y2F0aW9uLT5zZXRIYXNoKGhhc2gpOwotICAgICAgICBsb2NhdGlvbi0+c2V0SXNBdG9taWModHJ1
ZSk7Ci0gICAgfQotfTsKLQotUmVmUHRyPEF0b21pY1N0cmluZ0ltcGw+IEF0b21pY1N0cmluZ0lt
cGw6OmFkZChjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQotewotICAg
IGlmICghY2hhcmFjdGVycykKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBpZiAoIWxl
bmd0aCkKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEF0b21pY1N0cmluZ0ltcGwqPihTdHJp
bmdJbXBsOjplbXB0eSgpKTsKLQotICAgIFVDaGFyQnVmZmVyIGJ1ZmZlciB7IGNoYXJhY3RlcnMs
IGxlbmd0aCB9OwotICAgIHJldHVybiBhZGRUb1N0cmluZ1RhYmxlPFVDaGFyQnVmZmVyLCBVQ2hh
ckJ1ZmZlclRyYW5zbGF0b3I+KGJ1ZmZlcik7Ci19Ci0KLVJlZlB0cjxBdG9taWNTdHJpbmdJbXBs
PiBBdG9taWNTdHJpbmdJbXBsOjphZGQoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMpCi17Ci0gICAg
aWYgKCFjaGFyYWN0ZXJzKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHVuc2lnbmVk
IGxlbmd0aCA9IDA7Ci0gICAgd2hpbGUgKGNoYXJhY3RlcnNbbGVuZ3RoXSAhPSBVQ2hhcigwKSkK
LSAgICAgICAgKytsZW5ndGg7Ci0KLSAgICBpZiAoIWxlbmd0aCkKLSAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PEF0b21pY1N0cmluZ0ltcGwqPihTdHJpbmdJbXBsOjplbXB0eSgpKTsKLQotICAg
IFVDaGFyQnVmZmVyIGJ1ZmZlciB7IGNoYXJhY3RlcnMsIGxlbmd0aCB9OwotICAgIHJldHVybiBh
ZGRUb1N0cmluZ1RhYmxlPFVDaGFyQnVmZmVyLCBVQ2hhckJ1ZmZlclRyYW5zbGF0b3I+KGJ1ZmZl
cik7Ci19Ci0KLXN0cnVjdCBTdWJzdHJpbmdMb2NhdGlvbiB7Ci0gICAgU3RyaW5nSW1wbCogYmFz
ZVN0cmluZzsKLSAgICB1bnNpZ25lZCBzdGFydDsKLSAgICB1bnNpZ25lZCBsZW5ndGg7Ci19Owot
Ci1zdHJ1Y3QgU3Vic3RyaW5nVHJhbnNsYXRvciB7Ci0gICAgc3RhdGljIHZvaWQgdHJhbnNsYXRl
KFN0cmluZ0ltcGwqJiBsb2NhdGlvbiwgY29uc3QgU3Vic3RyaW5nTG9jYXRpb24mIGJ1ZmZlciwg
dW5zaWduZWQgaGFzaCkKLSAgICB7Ci0gICAgICAgIGxvY2F0aW9uID0gJlN0cmluZ0ltcGw6OmNy
ZWF0ZVN1YnN0cmluZ1NoYXJpbmdJbXBsKCpidWZmZXIuYmFzZVN0cmluZywgYnVmZmVyLnN0YXJ0
LCBidWZmZXIubGVuZ3RoKS5sZWFrUmVmKCk7Ci0gICAgICAgIGxvY2F0aW9uLT5zZXRIYXNoKGhh
c2gpOwotICAgICAgICBsb2NhdGlvbi0+c2V0SXNBdG9taWModHJ1ZSk7Ci0gICAgfQotfTsKLQot
c3RydWN0IFN1YnN0cmluZ1RyYW5zbGF0b3I4IDogU3Vic3RyaW5nVHJhbnNsYXRvciB7Ci0gICAg
c3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgU3Vic3RyaW5nTG9jYXRpb24mIGJ1ZmZlcikKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBTdHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhC
aXRzKGJ1ZmZlci5iYXNlU3RyaW5nLT5jaGFyYWN0ZXJzOCgpICsgYnVmZmVyLnN0YXJ0LCBidWZm
ZXIubGVuZ3RoKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgYm9vbCBlcXVhbChTdHJpbmdJbXBsKiBj
b25zdCYgc3RyaW5nLCBjb25zdCBTdWJzdHJpbmdMb2NhdGlvbiYgYnVmZmVyKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIFdURjo6ZXF1YWwoc3RyaW5nLCBidWZmZXIuYmFzZVN0cmluZy0+Y2hhcmFj
dGVyczgoKSArIGJ1ZmZlci5zdGFydCwgYnVmZmVyLmxlbmd0aCk7Ci0gICAgfQotfTsKLQotc3Ry
dWN0IFN1YnN0cmluZ1RyYW5zbGF0b3IxNiA6IFN1YnN0cmluZ1RyYW5zbGF0b3IgewotICAgIHN0
YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFN1YnN0cmluZ0xvY2F0aW9uJiBidWZmZXIpCi0gICAg
ewotICAgICAgICByZXR1cm4gU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0
cyhidWZmZXIuYmFzZVN0cmluZy0+Y2hhcmFjdGVyczE2KCkgKyBidWZmZXIuc3RhcnQsIGJ1ZmZl
ci5sZW5ndGgpOwotICAgIH0KLQotICAgIHN0YXRpYyBib29sIGVxdWFsKFN0cmluZ0ltcGwqIGNv
bnN0JiBzdHJpbmcsIGNvbnN0IFN1YnN0cmluZ0xvY2F0aW9uJiBidWZmZXIpCi0gICAgewotICAg
ICAgICByZXR1cm4gV1RGOjplcXVhbChzdHJpbmcsIGJ1ZmZlci5iYXNlU3RyaW5nLT5jaGFyYWN0
ZXJzMTYoKSArIGJ1ZmZlci5zdGFydCwgYnVmZmVyLmxlbmd0aCk7Ci0gICAgfQotfTsKLQotUmVm
UHRyPEF0b21pY1N0cmluZ0ltcGw+IEF0b21pY1N0cmluZ0ltcGw6OmFkZChTdHJpbmdJbXBsKiBi
YXNlU3RyaW5nLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoKQotewotICAgIGlmICgh
YmFzZVN0cmluZykKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBpZiAoIWxlbmd0aCB8
fCBzdGFydCA+PSBiYXNlU3RyaW5nLT5sZW5ndGgoKSkKLSAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PEF0b21pY1N0cmluZ0ltcGwqPihTdHJpbmdJbXBsOjplbXB0eSgpKTsKLQotICAgIHVuc2ln
bmVkIG1heExlbmd0aCA9IGJhc2VTdHJpbmctPmxlbmd0aCgpIC0gc3RhcnQ7Ci0gICAgaWYgKGxl
bmd0aCA+PSBtYXhMZW5ndGgpIHsKLSAgICAgICAgaWYgKCFzdGFydCkKLSAgICAgICAgICAgIHJl
dHVybiBhZGQoYmFzZVN0cmluZyk7Ci0gICAgICAgIGxlbmd0aCA9IG1heExlbmd0aDsKLSAgICB9
Ci0KLSAgICBTdWJzdHJpbmdMb2NhdGlvbiBidWZmZXIgPSB7IGJhc2VTdHJpbmcsIHN0YXJ0LCBs
ZW5ndGggfTsKLSAgICBpZiAoYmFzZVN0cmluZy0+aXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBh
ZGRUb1N0cmluZ1RhYmxlPFN1YnN0cmluZ0xvY2F0aW9uLCBTdWJzdHJpbmdUcmFuc2xhdG9yOD4o
YnVmZmVyKTsKLSAgICByZXR1cm4gYWRkVG9TdHJpbmdUYWJsZTxTdWJzdHJpbmdMb2NhdGlvbiwg
U3Vic3RyaW5nVHJhbnNsYXRvcjE2PihidWZmZXIpOwotfQotICAgIAotdXNpbmcgTENoYXJCdWZm
ZXIgPSBIYXNoVHJhbnNsYXRvckNoYXJCdWZmZXI8TENoYXI+Owotc3RydWN0IExDaGFyQnVmZmVy
VHJhbnNsYXRvciB7Ci0gICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgTENoYXJCdWZmZXIm
IGJ1ZikKLSAgICB7Ci0gICAgICAgIHJldHVybiBidWYuaGFzaDsKLSAgICB9Ci0KLSAgICBzdGF0
aWMgYm9vbCBlcXVhbChTdHJpbmdJbXBsKiBjb25zdCYgc3RyLCBjb25zdCBMQ2hhckJ1ZmZlciYg
YnVmKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFdURjo6ZXF1YWwoc3RyLCBidWYuY2hhcmFjdGVy
cywgYnVmLmxlbmd0aCk7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgdHJhbnNsYXRlKFN0cmlu
Z0ltcGwqJiBsb2NhdGlvbiwgY29uc3QgTENoYXJCdWZmZXImIGJ1ZiwgdW5zaWduZWQgaGFzaCkK
LSAgICB7Ci0gICAgICAgIGxvY2F0aW9uID0gJlN0cmluZ0ltcGw6OmNyZWF0ZShidWYuY2hhcmFj
dGVycywgYnVmLmxlbmd0aCkubGVha1JlZigpOwotICAgICAgICBsb2NhdGlvbi0+c2V0SGFzaCho
YXNoKTsKLSAgICAgICAgbG9jYXRpb24tPnNldElzQXRvbWljKHRydWUpOwotICAgIH0KLX07Ci0K
LXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUeXBlPgotc3RydWN0IEJ1ZmZlckZyb21TdGF0aWNEYXRh
VHJhbnNsYXRvciB7Ci0gICAgdXNpbmcgQnVmZmVyID0gSGFzaFRyYW5zbGF0b3JDaGFyQnVmZmVy
PENoYXJUeXBlPjsKLSAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBCdWZmZXImIGJ1ZikK
LSAgICB7Ci0gICAgICAgIHJldHVybiBidWYuaGFzaDsKLSAgICB9Ci0KLSAgICBzdGF0aWMgYm9v
bCBlcXVhbChTdHJpbmdJbXBsKiBjb25zdCYgc3RyLCBjb25zdCBCdWZmZXImIGJ1ZikKLSAgICB7
Ci0gICAgICAgIHJldHVybiBXVEY6OmVxdWFsKHN0ciwgYnVmLmNoYXJhY3RlcnMsIGJ1Zi5sZW5n
dGgpOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIHRyYW5zbGF0ZShTdHJpbmdJbXBsKiYgbG9j
YXRpb24sIGNvbnN0IEJ1ZmZlciYgYnVmLCB1bnNpZ25lZCBoYXNoKQotICAgIHsKLSAgICAgICAg
bG9jYXRpb24gPSAmU3RyaW5nSW1wbDo6Y3JlYXRlV2l0aG91dENvcHlpbmcoYnVmLmNoYXJhY3Rl
cnMsIGJ1Zi5sZW5ndGgpLmxlYWtSZWYoKTsKLSAgICAgICAgbG9jYXRpb24tPnNldEhhc2goaGFz
aCk7Ci0gICAgICAgIGxvY2F0aW9uLT5zZXRJc0F0b21pYyh0cnVlKTsKLSAgICB9Ci19OwotCi1S
ZWZQdHI8QXRvbWljU3RyaW5nSW1wbD4gQXRvbWljU3RyaW5nSW1wbDo6YWRkKGNvbnN0IExDaGFy
KiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgaWYgKCFjaGFyYWN0ZXJzKQot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGlmICghbGVuZ3RoKQotICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8QXRvbWljU3RyaW5nSW1wbCo+KFN0cmluZ0ltcGw6OmVtcHR5KCkpOwot
Ci0gICAgTENoYXJCdWZmZXIgYnVmZmVyIHsgY2hhcmFjdGVycywgbGVuZ3RoIH07Ci0gICAgcmV0
dXJuIGFkZFRvU3RyaW5nVGFibGU8TENoYXJCdWZmZXIsIExDaGFyQnVmZmVyVHJhbnNsYXRvcj4o
YnVmZmVyKTsKLX0KLQotUmVmPEF0b21pY1N0cmluZ0ltcGw+IEF0b21pY1N0cmluZ0ltcGw6OmFk
ZExpdGVyYWwoY29uc3QgY2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQotewotICAg
IEFTU0VSVChjaGFyYWN0ZXJzKTsKLSAgICBBU1NFUlQobGVuZ3RoKTsKLQotICAgIExDaGFyQnVm
ZmVyIGJ1ZmZlciB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihjaGFyYWN0ZXJzKSwg
bGVuZ3RoIH07Ci0gICAgcmV0dXJuIGFkZFRvU3RyaW5nVGFibGU8TENoYXJCdWZmZXIsIEJ1ZmZl
ckZyb21TdGF0aWNEYXRhVHJhbnNsYXRvcjxMQ2hhcj4+KGJ1ZmZlcik7Ci19Ci0KLXN0YXRpYyBS
ZWY8QXRvbWljU3RyaW5nSW1wbD4gYWRkU3ltYm9sKEF0b21pY1N0cmluZ1RhYmxlTG9ja2VyJiBs
b2NrZXIsIFN0cmluZ1RhYmxlSW1wbCYgYXRvbWljU3RyaW5nVGFibGUsIFN0cmluZ0ltcGwmIGJh
c2UpCi17Ci0gICAgQVNTRVJUKGJhc2UubGVuZ3RoKCkpOwotICAgIEFTU0VSVChiYXNlLmlzU3lt
Ym9sKCkpOwotCi0gICAgU3Vic3RyaW5nTG9jYXRpb24gYnVmZmVyID0geyAmYmFzZSwgMCwgYmFz
ZS5sZW5ndGgoKSB9OwotICAgIGlmIChiYXNlLmlzOEJpdCgpKQotICAgICAgICByZXR1cm4gYWRk
VG9TdHJpbmdUYWJsZTxTdWJzdHJpbmdMb2NhdGlvbiwgU3Vic3RyaW5nVHJhbnNsYXRvcjg+KGxv
Y2tlciwgYXRvbWljU3RyaW5nVGFibGUsIGJ1ZmZlcik7Ci0gICAgcmV0dXJuIGFkZFRvU3RyaW5n
VGFibGU8U3Vic3RyaW5nTG9jYXRpb24sIFN1YnN0cmluZ1RyYW5zbGF0b3IxNj4obG9ja2VyLCBh
dG9taWNTdHJpbmdUYWJsZSwgYnVmZmVyKTsKLX0KLQotc3RhdGljIGlubGluZSBSZWY8QXRvbWlj
U3RyaW5nSW1wbD4gYWRkU3ltYm9sKFN0cmluZ0ltcGwmIGJhc2UpCi17Ci0gICAgQXRvbWljU3Ry
aW5nVGFibGVMb2NrZXIgbG9ja2VyOwotICAgIHJldHVybiBhZGRTeW1ib2wobG9ja2VyLCBzdHJp
bmdUYWJsZSgpLCBiYXNlKTsKLX0KLQotc3RhdGljIFJlZjxBdG9taWNTdHJpbmdJbXBsPiBhZGRT
dGF0aWMoQXRvbWljU3RyaW5nVGFibGVMb2NrZXImIGxvY2tlciwgU3RyaW5nVGFibGVJbXBsJiBh
dG9taWNTdHJpbmdUYWJsZSwgY29uc3QgU3RyaW5nSW1wbCYgYmFzZSkKLXsKLSAgICBBU1NFUlQo
YmFzZS5sZW5ndGgoKSk7Ci0gICAgQVNTRVJUKGJhc2UuaXNTdGF0aWMoKSk7Ci0KLSAgICBpZiAo
YmFzZS5pczhCaXQoKSkgewotICAgICAgICBMQ2hhckJ1ZmZlciBidWZmZXIgeyBiYXNlLmNoYXJh
Y3RlcnM4KCksIGJhc2UubGVuZ3RoKCksIGJhc2UuaGFzaCgpIH07Ci0gICAgICAgIHJldHVybiBh
ZGRUb1N0cmluZ1RhYmxlPExDaGFyQnVmZmVyLCBCdWZmZXJGcm9tU3RhdGljRGF0YVRyYW5zbGF0
b3I8TENoYXI+Pihsb2NrZXIsIGF0b21pY1N0cmluZ1RhYmxlLCBidWZmZXIpOwotICAgIH0KLSAg
ICBVQ2hhckJ1ZmZlciBidWZmZXIgeyBiYXNlLmNoYXJhY3RlcnMxNigpLCBiYXNlLmxlbmd0aCgp
LCBiYXNlLmhhc2goKSB9OwotICAgIHJldHVybiBhZGRUb1N0cmluZ1RhYmxlPFVDaGFyQnVmZmVy
LCBCdWZmZXJGcm9tU3RhdGljRGF0YVRyYW5zbGF0b3I8VUNoYXI+Pihsb2NrZXIsIGF0b21pY1N0
cmluZ1RhYmxlLCBidWZmZXIpOwotfQotCi1zdGF0aWMgaW5saW5lIFJlZjxBdG9taWNTdHJpbmdJ
bXBsPiBhZGRTdGF0aWMoY29uc3QgU3RyaW5nSW1wbCYgYmFzZSkKLXsKLSAgICBBdG9taWNTdHJp
bmdUYWJsZUxvY2tlciBsb2NrZXI7Ci0gICAgcmV0dXJuIGFkZFN0YXRpYyhsb2NrZXIsIHN0cmlu
Z1RhYmxlKCksIGJhc2UpOwotfQotCi1SZWZQdHI8QXRvbWljU3RyaW5nSW1wbD4gQXRvbWljU3Ry
aW5nSW1wbDo6YWRkKGNvbnN0IFN0YXRpY1N0cmluZ0ltcGwqIHN0cmluZykKLXsKLSAgICBhdXRv
IHMgPSByZWludGVycHJldF9jYXN0PGNvbnN0IFN0cmluZ0ltcGwqPihzdHJpbmcpOwotICAgIEFT
U0VSVChzLT5pc1N0YXRpYygpKTsKLSAgICByZXR1cm4gYWRkU3RhdGljKCpzKTsKLX0KLQotUmVm
PEF0b21pY1N0cmluZ0ltcGw+IEF0b21pY1N0cmluZ0ltcGw6OmFkZFNsb3dDYXNlKFN0cmluZ0lt
cGwmIHN0cmluZykKLXsKLSAgICAvLyBUaGlzIGNoZWNrIGlzIG5lY2Vzc2FyeSBmb3IgbnVsbCBz
eW1ib2xzLgotICAgIC8vIFRoZWlyIGxlbmd0aCBpcyB6ZXJvLCBidXQgdGhleSBhcmUgbm90IEF0
b21pY1N0cmluZ0ltcGwuCi0gICAgaWYgKCFzdHJpbmcubGVuZ3RoKCkpCi0gICAgICAgIHJldHVy
biAqc3RhdGljX2Nhc3Q8QXRvbWljU3RyaW5nSW1wbCo+KFN0cmluZ0ltcGw6OmVtcHR5KCkpOwot
Ci0gICAgaWYgKHN0cmluZy5pc1N0YXRpYygpKQotICAgICAgICByZXR1cm4gYWRkU3RhdGljKHN0
cmluZyk7Ci0KLSAgICBpZiAoc3RyaW5nLmlzU3ltYm9sKCkpCi0gICAgICAgIHJldHVybiBhZGRT
eW1ib2woc3RyaW5nKTsKLQotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXN0cmluZy5pc0F0b21p
YygpLCAiQXRvbWljU3RyaW5nSW1wbCBzaG91bGQgbm90IGhpdCB0aGUgc2xvdyBjYXNlIGlmIHRo
ZSBzdHJpbmcgaXMgYWxyZWFkeSBhdG9taWMuIik7Ci0KLSAgICBBdG9taWNTdHJpbmdUYWJsZUxv
Y2tlciBsb2NrZXI7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBzdHJpbmdUYWJsZSgpLmFkZCgmc3Ry
aW5nKTsKLQotICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkgewotICAgICAgICBBU1NFUlQo
KmFkZFJlc3VsdC5pdGVyYXRvciA9PSAmc3RyaW5nKTsKLSAgICAgICAgc3RyaW5nLnNldElzQXRv
bWljKHRydWUpOwotICAgIH0KLQotICAgIHJldHVybiAqc3RhdGljX2Nhc3Q8QXRvbWljU3RyaW5n
SW1wbCo+KCphZGRSZXN1bHQuaXRlcmF0b3IpOwotfQotCi1SZWY8QXRvbWljU3RyaW5nSW1wbD4g
QXRvbWljU3RyaW5nSW1wbDo6YWRkU2xvd0Nhc2UoQXRvbWljU3RyaW5nVGFibGUmIHN0cmluZ1Rh
YmxlLCBTdHJpbmdJbXBsJiBzdHJpbmcpCi17Ci0gICAgLy8gVGhpcyBjaGVjayBpcyBuZWNlc3Nh
cnkgZm9yIG51bGwgc3ltYm9scy4KLSAgICAvLyBUaGVpciBsZW5ndGggaXMgemVybywgYnV0IHRo
ZXkgYXJlIG5vdCBBdG9taWNTdHJpbmdJbXBsLgotICAgIGlmICghc3RyaW5nLmxlbmd0aCgpKQot
ICAgICAgICByZXR1cm4gKnN0YXRpY19jYXN0PEF0b21pY1N0cmluZ0ltcGwqPihTdHJpbmdJbXBs
OjplbXB0eSgpKTsKLQotICAgIGlmIChzdHJpbmcuaXNTdGF0aWMoKSkgewotICAgICAgICBBdG9t
aWNTdHJpbmdUYWJsZUxvY2tlciBsb2NrZXI7Ci0gICAgICAgIHJldHVybiBhZGRTdGF0aWMobG9j
a2VyLCBzdHJpbmdUYWJsZS50YWJsZSgpLCBzdHJpbmcpOwotICAgIH0KLQotICAgIGlmIChzdHJp
bmcuaXNTeW1ib2woKSkgewotICAgICAgICBBdG9taWNTdHJpbmdUYWJsZUxvY2tlciBsb2NrZXI7
Ci0gICAgICAgIHJldHVybiBhZGRTeW1ib2wobG9ja2VyLCBzdHJpbmdUYWJsZS50YWJsZSgpLCBz
dHJpbmcpOwotICAgIH0KLQotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXN0cmluZy5pc0F0b21p
YygpLCAiQXRvbWljU3RyaW5nSW1wbCBzaG91bGQgbm90IGhpdCB0aGUgc2xvdyBjYXNlIGlmIHRo
ZSBzdHJpbmcgaXMgYWxyZWFkeSBhdG9taWMuIik7Ci0KLSAgICBBdG9taWNTdHJpbmdUYWJsZUxv
Y2tlciBsb2NrZXI7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBzdHJpbmdUYWJsZS50YWJsZSgpLmFk
ZCgmc3RyaW5nKTsKLQotICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkgewotICAgICAgICBB
U1NFUlQoKmFkZFJlc3VsdC5pdGVyYXRvciA9PSAmc3RyaW5nKTsKLSAgICAgICAgc3RyaW5nLnNl
dElzQXRvbWljKHRydWUpOwotICAgIH0KLQotICAgIHJldHVybiAqc3RhdGljX2Nhc3Q8QXRvbWlj
U3RyaW5nSW1wbCo+KCphZGRSZXN1bHQuaXRlcmF0b3IpOwotfQotCi12b2lkIEF0b21pY1N0cmlu
Z0ltcGw6OnJlbW92ZShBdG9taWNTdHJpbmdJbXBsKiBzdHJpbmcpCi17Ci0gICAgQVNTRVJUKHN0
cmluZy0+aXNBdG9taWMoKSk7Ci0gICAgQXRvbWljU3RyaW5nVGFibGVMb2NrZXIgbG9ja2VyOwot
ICAgIGF1dG8mIGF0b21pY1N0cmluZ1RhYmxlID0gc3RyaW5nVGFibGUoKTsKLSAgICBhdXRvIGl0
ZXJhdG9yID0gYXRvbWljU3RyaW5nVGFibGUuZmluZChzdHJpbmcpOwotICAgIEFTU0VSVF9XSVRI
X01FU1NBR0UoaXRlcmF0b3IgIT0gYXRvbWljU3RyaW5nVGFibGUuZW5kKCksICJUaGUgc3RyaW5n
IGJlaW5nIHJlbW92ZWQgaXMgYXRvbWljIGluIHRoZSBzdHJpbmcgdGFibGUgb2YgYW4gb3RoZXIg
dGhyZWFkISIpOwotICAgIEFTU0VSVChzdHJpbmcgPT0gKml0ZXJhdG9yKTsKLSAgICBhdG9taWNT
dHJpbmdUYWJsZS5yZW1vdmUoaXRlcmF0b3IpOwotfQotCi1SZWZQdHI8QXRvbWljU3RyaW5nSW1w
bD4gQXRvbWljU3RyaW5nSW1wbDo6bG9va1VwU2xvd0Nhc2UoU3RyaW5nSW1wbCYgc3RyaW5nKQot
ewotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXN0cmluZy5pc0F0b21pYygpLCAiQXRvbWljU3Ry
aW5nSW1wbHMgc2hvdWxkIHJldHVybiBmcm9tIHRoZSBmYXN0IGNhc2UuIik7Ci0KLSAgICBpZiAo
IXN0cmluZy5sZW5ndGgoKSkKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEF0b21pY1N0cmlu
Z0ltcGwqPihTdHJpbmdJbXBsOjplbXB0eSgpKTsKLQotICAgIEF0b21pY1N0cmluZ1RhYmxlTG9j
a2VyIGxvY2tlcjsKLSAgICBhdXRvJiBhdG9taWNTdHJpbmdUYWJsZSA9IHN0cmluZ1RhYmxlKCk7
Ci0gICAgYXV0byBpdGVyYXRvciA9IGF0b21pY1N0cmluZ1RhYmxlLmZpbmQoJnN0cmluZyk7Ci0g
ICAgaWYgKGl0ZXJhdG9yICE9IGF0b21pY1N0cmluZ1RhYmxlLmVuZCgpKQotICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8QXRvbWljU3RyaW5nSW1wbCo+KCppdGVyYXRvcik7Ci0gICAgcmV0dXJu
IG51bGxwdHI7Ci19Ci0KLVJlZlB0cjxBdG9taWNTdHJpbmdJbXBsPiBBdG9taWNTdHJpbmdJbXBs
OjphZGRVVEY4KGNvbnN0IGNoYXIqIGNoYXJhY3RlcnNTdGFydCwgY29uc3QgY2hhciogY2hhcmFj
dGVyc0VuZCkKLXsKLSAgICBIYXNoQW5kVVRGOENoYXJhY3RlcnMgYnVmZmVyOwotICAgIGJ1ZmZl
ci5jaGFyYWN0ZXJzID0gY2hhcmFjdGVyc1N0YXJ0OwotICAgIGJ1ZmZlci5oYXNoID0gY2FsY3Vs
YXRlU3RyaW5nSGFzaEFuZExlbmd0aEZyb21VVEY4TWFza2luZ1RvcDhCaXRzKGNoYXJhY3RlcnNT
dGFydCwgY2hhcmFjdGVyc0VuZCwgYnVmZmVyLmxlbmd0aCwgYnVmZmVyLnV0ZjE2TGVuZ3RoKTsK
LQotICAgIGlmICghYnVmZmVyLmhhc2gpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAg
cmV0dXJuIGFkZFRvU3RyaW5nVGFibGU8SGFzaEFuZFVURjhDaGFyYWN0ZXJzLCBIYXNoQW5kVVRG
OENoYXJhY3RlcnNUcmFuc2xhdG9yPihidWZmZXIpOwotfQotCi1SZWZQdHI8QXRvbWljU3RyaW5n
SW1wbD4gQXRvbWljU3RyaW5nSW1wbDo6bG9va1VwKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCB1
bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgQXRvbWljU3RyaW5nVGFibGVMb2NrZXIgbG9ja2VyOwot
ICAgIGF1dG8mIHRhYmxlID0gc3RyaW5nVGFibGUoKTsKLQotICAgIExDaGFyQnVmZmVyIGJ1ZmZl
ciA9IHsgY2hhcmFjdGVycywgbGVuZ3RoIH07Ci0gICAgYXV0byBpdGVyYXRvciA9IHRhYmxlLmZp
bmQ8TENoYXJCdWZmZXJUcmFuc2xhdG9yPihidWZmZXIpOwotICAgIGlmIChpdGVyYXRvciAhPSB0
YWJsZS5lbmQoKSkKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEF0b21pY1N0cmluZ0ltcGwq
PigqaXRlcmF0b3IpOwotICAgIHJldHVybiBudWxscHRyOwotfQotCi1SZWZQdHI8QXRvbWljU3Ry
aW5nSW1wbD4gQXRvbWljU3RyaW5nSW1wbDo6bG9va1VwKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJz
LCB1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgQXRvbWljU3RyaW5nVGFibGVMb2NrZXIgbG9ja2Vy
OwotICAgIGF1dG8mIHRhYmxlID0gc3RyaW5nVGFibGUoKTsKLQotICAgIFVDaGFyQnVmZmVyIGJ1
ZmZlciB7IGNoYXJhY3RlcnMsIGxlbmd0aCB9OwotICAgIGF1dG8gaXRlcmF0b3IgPSB0YWJsZS5m
aW5kPFVDaGFyQnVmZmVyVHJhbnNsYXRvcj4oYnVmZmVyKTsKLSAgICBpZiAoaXRlcmF0b3IgIT0g
dGFibGUuZW5kKCkpCi0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxBdG9taWNTdHJpbmdJbXBs
Kj4oKml0ZXJhdG9yKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotI2lmICFBU1NFUlRfRElT
QUJMRUQKLWJvb2wgQXRvbWljU3RyaW5nSW1wbDo6aXNJbkF0b21pY1N0cmluZ1RhYmxlKFN0cmlu
Z0ltcGwqIHN0cmluZykKLXsKLSAgICBBdG9taWNTdHJpbmdUYWJsZUxvY2tlciBsb2NrZXI7Ci0g
ICAgcmV0dXJuIHN0cmluZ1RhYmxlKCkuY29udGFpbnMoc3RyaW5nKTsKLX0KLSNlbmRpZgotCi19
IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWlj
U3RyaW5nSW1wbC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmdJbXBsLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM2YTA0ZjRjNGI4YzhjMTUxOGIxODc5NjE2ODI4
OWRmOGEzODRmZjIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmdJbXBsLmgKKysrIC9kZXYvbnVsbApA
QCAtMSwxMjMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBJbmMuCi0g
KgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICog
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwot
ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICoKLSAqLwot
Ci0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgPHd0Zi90ZXh0L1VuaXF1ZWRTdHJpbmdJbXBsLmg+
Ci0KLW5hbWVzcGFjZSBXVEYgewotCi1jbGFzcyBBdG9taWNTdHJpbmdUYWJsZTsKLQotY2xhc3Mg
QXRvbWljU3RyaW5nSW1wbCA6IHB1YmxpYyBVbmlxdWVkU3RyaW5nSW1wbCB7Ci1wdWJsaWM6Ci0g
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXRvbWljU3RyaW5nSW1wbD4gbG9v
a1VwKGNvbnN0IExDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIFJlZlB0cjxBdG9taWNTdHJpbmdJbXBsPiBsb29rVXAoY29uc3QgVUNoYXIqLCB1
bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBSZWZQdHI8QXRvbWljU3RyaW5nSW1wbD4gbG9v
a1VwKFN0cmluZ0ltcGwqIHN0cmluZykKLSAgICB7Ci0gICAgICAgIGlmICghc3RyaW5nIHx8IHN0
cmluZy0+aXNBdG9taWMoKSkKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxBdG9taWNT
dHJpbmdJbXBsKj4oc3RyaW5nKTsKLSAgICAgICAgcmV0dXJuIGxvb2tVcFNsb3dDYXNlKCpzdHJp
bmcpOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIHJlbW92ZShBdG9taWNTdHJpbmdJbXBsKik7
Ci0KLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBdG9taWNTdHJpbmdJbXBs
PiBhZGQoY29uc3QgTENoYXIqKTsKLSAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBSZWZQdHI8QXRv
bWljU3RyaW5nSW1wbD4gYWRkKGNvbnN0IGNoYXIqIHMpIHsgcmV0dXJuIGFkZChyZWludGVycHJl
dF9jYXN0PGNvbnN0IExDaGFyKj4ocykpOyB9OwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0
aWMgUmVmUHRyPEF0b21pY1N0cmluZ0ltcGw+IGFkZChjb25zdCBMQ2hhciosIHVuc2lnbmVkIGxl
bmd0aCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXRvbWljU3RyaW5n
SW1wbD4gYWRkKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBBTFdBWVNfSU5M
SU5FIHN0YXRpYyBSZWZQdHI8QXRvbWljU3RyaW5nSW1wbD4gYWRkKGNvbnN0IGNoYXIqIHMsIHVu
c2lnbmVkIGxlbmd0aCkgeyByZXR1cm4gYWRkKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIq
PihzKSwgbGVuZ3RoKTsgfTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxB
dG9taWNTdHJpbmdJbXBsPiBhZGQoY29uc3QgVUNoYXIqKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIFJlZlB0cjxBdG9taWNTdHJpbmdJbXBsPiBhZGQoU3RyaW5nSW1wbCosIHVuc2ln
bmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBS
ZWZQdHI8QXRvbWljU3RyaW5nSW1wbD4gYWRkKFN0cmluZ0ltcGwqIHN0cmluZykKLSAgICB7Ci0g
ICAgICAgIGlmICghc3RyaW5nKQotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEF0b21p
Y1N0cmluZ0ltcGwqPihzdHJpbmcpOwotICAgICAgICByZXR1cm4gYWRkKCpzdHJpbmcpOwotICAg
IH0KLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBdG9taWNTdHJpbmdJbXBs
PiBhZGQoY29uc3QgU3RhdGljU3RyaW5nSW1wbCopOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBz
dGF0aWMgUmVmPEF0b21pY1N0cmluZ0ltcGw+IGFkZExpdGVyYWwoY29uc3QgY2hhciogY2hhcmFj
dGVycywgdW5zaWduZWQgbGVuZ3RoKTsKLQotICAgIC8vIFJldHVybnMgbnVsbCBpZiB0aGUgaW5w
dXQgZGF0YSBjb250YWlucyBhbiBpbnZhbGlkIFVURi04IHNlcXVlbmNlLgotICAgIHN0YXRpYyBS
ZWZQdHI8QXRvbWljU3RyaW5nSW1wbD4gYWRkVVRGOChjb25zdCBjaGFyKiBzdGFydCwgY29uc3Qg
Y2hhciogZW5kKTsKLQotI2lmIFVTRShDRikKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IFJlZlB0cjxBdG9taWNTdHJpbmdJbXBsPiBhZGQoQ0ZTdHJpbmdSZWYpOwotI2VuZGlmCi0KLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUYWJsZVByb3ZpZGVyPgotICAgIEFMV0FZU19JTkxJ
TkUgc3RhdGljIFJlZlB0cjxBdG9taWNTdHJpbmdJbXBsPiBhZGRXaXRoU3RyaW5nVGFibGVQcm92
aWRlcihTdHJpbmdUYWJsZVByb3ZpZGVyJiBzdHJpbmdUYWJsZVByb3ZpZGVyLCBTdHJpbmdJbXBs
KiBzdHJpbmcpCi0gICAgewotICAgICAgICBpZiAoIXN0cmluZykKLSAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwotICAgICAgICByZXR1cm4gYWRkKCpzdHJpbmdUYWJsZVByb3ZpZGVyLmF0b21p
Y1N0cmluZ1RhYmxlKCksICpzdHJpbmcpOwotICAgIH0KLQotI2lmICFBU1NFUlRfRElTQUJMRUQK
LSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgaXNJbkF0b21pY1N0cmluZ1RhYmxl
KFN0cmluZ0ltcGwqKTsKLSNlbmRpZgotCi1wcml2YXRlOgotICAgIEF0b21pY1N0cmluZ0ltcGwo
KSA9IGRlbGV0ZTsKLQotICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFJlZjxBdG9taWNTdHJpbmdJ
bXBsPiBhZGQoU3RyaW5nSW1wbCYgc3RyaW5nKQotICAgIHsKLSAgICAgICAgaWYgKHN0cmluZy5p
c0F0b21pYygpKSB7Ci0gICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFzdHJpbmcubGVu
Z3RoKCkgfHwgaXNJbkF0b21pY1N0cmluZ1RhYmxlKCZzdHJpbmcpLCAiVGhlIGF0b21pYyBzdHJp
bmcgY29tZXMgZnJvbSBhbiBvdGhlciB0aHJlYWQhIik7Ci0gICAgICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8QXRvbWljU3RyaW5nSW1wbCY+KHN0cmluZyk7Ci0gICAgICAgIH0KLSAgICAgICAg
cmV0dXJuIGFkZFNsb3dDYXNlKHN0cmluZyk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSBz
dGF0aWMgUmVmPEF0b21pY1N0cmluZ0ltcGw+IGFkZChBdG9taWNTdHJpbmdUYWJsZSYgc3RyaW5n
VGFibGUsIFN0cmluZ0ltcGwmIHN0cmluZykKLSAgICB7Ci0gICAgICAgIGlmIChzdHJpbmcuaXNB
dG9taWMoKSkgewotICAgICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghc3RyaW5nLmxlbmd0
aCgpIHx8IGlzSW5BdG9taWNTdHJpbmdUYWJsZSgmc3RyaW5nKSwgIlRoZSBhdG9taWMgc3RyaW5n
IGNvbWVzIGZyb20gYW4gb3RoZXIgdGhyZWFkISIpOwotICAgICAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PEF0b21pY1N0cmluZ0ltcGwmPihzdHJpbmcpOwotICAgICAgICB9Ci0gICAgICAgIHJl
dHVybiBhZGRTbG93Q2FzZShzdHJpbmdUYWJsZSwgc3RyaW5nKTsKLSAgICB9Ci0KLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBdG9taWNTdHJpbmdJbXBsPiBhZGRTbG93Q2FzZShT
dHJpbmdJbXBsJik7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXRvbWljU3Ry
aW5nSW1wbD4gYWRkU2xvd0Nhc2UoQXRvbWljU3RyaW5nVGFibGUmLCBTdHJpbmdJbXBsJik7Ci0K
LSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBdG9taWNTdHJpbmdJbXBsPiBs
b29rVXBTbG93Q2FzZShTdHJpbmdJbXBsJik7Ci19OwotCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAot
Ly8gQXRvbWljU3RyaW5nSW1wbHMgY3JlYXRlZCBmcm9tIFN0YXRpY1N0cmluZ0ltcGwgd2lsbCBB
U1NFUlQKLS8vIGluIHRoZSBnZW5lcmljIFZhbHVlQ2hlY2s8VD46OmNoZWNrQ29uc2lzdGVuY3kK
LS8vIGFzIHRoZXkgYXJlIG5vdCBhbGxvY2F0ZWQgYnkgZmFzdE1hbGxvYy4KLS8vIFdlIGRvbid0
IGN1cnJlbnRseSBoYXZlIGFueSB3YXkgdG8gZGV0ZWN0IHRoYXQgY2FzZQotLy8gc28gd2UgaWdu
b3JlIHRoZSBjb25zaXN0ZW5jeSBjaGVjayBmb3IgYWxsIEF0b21pY1N0cmluZ0ltcGxzKi4KLXRl
bXBsYXRlPD4gc3RydWN0Ci1WYWx1ZUNoZWNrPEF0b21pY1N0cmluZ0ltcGwqPiB7Ci0gICAgc3Rh
dGljIHZvaWQgY2hlY2tDb25zaXN0ZW5jeShjb25zdCBBdG9taWNTdHJpbmdJbXBsKikgeyB9Ci19
OwotCi10ZW1wbGF0ZTw+IHN0cnVjdAotVmFsdWVDaGVjazxjb25zdCBBdG9taWNTdHJpbmdJbXBs
Kj4gewotICAgIHN0YXRpYyB2b2lkIGNoZWNrQ29uc2lzdGVuY3koY29uc3QgQXRvbWljU3RyaW5n
SW1wbCopIHsgfQotfTsKLSNlbmRpZgotCi19Ci0KLXVzaW5nIFdURjo6QXRvbWljU3RyaW5nSW1w
bDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nVGFibGUuY3Bw
IGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmdUYWJsZS5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDQyMDc4OWYxNTBkNGIyZDI2MzY2ZThhZDQ5MTU5YWVhMTQxMTVm
ODUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmdUYWJsZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwz
OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAy
MDA4LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAo
QykgMjAxMCBQYXRyaWNrIEdhbnN0ZXJlciA8cGFyb2dhQHBhcm9nYS5jb20+Ci0gKiBDb3B5cmln
aHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
Ci0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmdUYWJsZS5oPgotCi0j
aW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgotI2lu
Y2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KLQotbmFtZXNwYWNlIFdURiB7Ci0KLUF0b21pY1N0cmlu
Z1RhYmxlOjp+QXRvbWljU3RyaW5nVGFibGUoKQotewotICAgIGZvciAoYXV0byogc3RyaW5nIDog
bV90YWJsZSkKLSAgICAgICAgc3RyaW5nLT5zZXRJc0F0b21pYyhmYWxzZSk7Ci19Ci0KLX0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nVGFibGUuaCBiL1NvdXJj
ZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nVGFibGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMjk5MzA3MDc4MzM3MGY2MWQ1Y2RlNDUyN2VkNWNkY2E2MDFmMjJlOC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L0F0b21pY1N0cmluZ1RhYmxlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMCBQYXRy
aWNrIEdhbnN0ZXJlciA8cGFyb2dhQHBhcm9nYS5jb20+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTIg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICog
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAq
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAq
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5j
bHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdJbXBsLmg+Ci0K
LW5hbWVzcGFjZSBXVEYgewotCi1jbGFzcyBTdHJpbmdJbXBsOwotCi1jbGFzcyBBdG9taWNTdHJp
bmdUYWJsZSB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgV1RG
X0VYUE9SVF9QUklWQVRFIH5BdG9taWNTdHJpbmdUYWJsZSgpOwotCi0gICAgSGFzaFNldDxTdHJp
bmdJbXBsKj4mIHRhYmxlKCkgeyByZXR1cm4gbV90YWJsZTsgfQotCi1wcml2YXRlOgotICAgIEhh
c2hTZXQ8U3RyaW5nSW1wbCo+IG1fdGFibGU7Ci19OwotCi19Ci11c2luZyBXVEY6OkF0b21pY1N0
cmluZ1RhYmxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9MaW5lQnJlYWtJdGVy
YXRvclBvb2xJQ1UuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvTGluZUJyZWFrSXRlcmF0b3JQb29s
SUNVLmgKaW5kZXggOGU4OWMzMTE2ZWRiY2ZiMjY0MWViMDA2NGFlMGJiOWQ5MjIyODM4Zi4uMmY2
NzhkMWZjZjI4ZWVjZmE3MmYwMjdhMjczZTM0NWI2NzAwMmM1NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvdGV4dC9MaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L0xpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oCkBAIC0yOSw3ICsyOSw3IEBACiAj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
ICNpbmNsdWRlIDx3dGYvVGhyZWFkU3BlY2lmaWMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9BdG9t
aWNTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+CiAKIG5hbWVzcGFj
ZSBXVEYgewogCkBAIC00NCw5ICs0NCw5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICpwb29s
LmdldCgpOwogICAgIH0KIAotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgbWFrZUxvY2FsZVdpdGhC
cmVha0tleXdvcmQoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUsIExpbmVCcmVha0l0ZXJhdG9y
TW9kZSBtb2RlKQorICAgIHN0YXRpYyBBdG9tU3RyaW5nIG1ha2VMb2NhbGVXaXRoQnJlYWtLZXl3
b3JkKGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsZSwgTGluZUJyZWFrSXRlcmF0b3JNb2RlIG1vZGUp
CiAgICAgewotICAgICAgICAvLyBUaGUgdWxvYyBmdW5jdGlvbnMgbW9kZWwgbG9jYWxlcyBhcyBj
aGFyKiwgc28gd2UgaGF2ZSB0byBkb3duY29udmVydCBvdXIgQXRvbWljU3RyaW5nLgorICAgICAg
ICAvLyBUaGUgdWxvYyBmdW5jdGlvbnMgbW9kZWwgbG9jYWxlcyBhcyBjaGFyKiwgc28gd2UgaGF2
ZSB0byBkb3duY29udmVydCBvdXIgQXRvbVN0cmluZy4KICAgICAgICAgYXV0byB1dGY4TG9jYWxl
ID0gbG9jYWxlLnN0cmluZygpLnV0ZjgoKTsKICAgICAgICAgaWYgKCF1dGY4TG9jYWxlLmxlbmd0
aCgpKQogICAgICAgICAgICAgcmV0dXJuIGxvY2FsZTsKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGlj
OgogICAgICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICAgICAgaW50
MzJfdCBsZW5ndGhOZWVkZWQgPSB1bG9jX3NldEtleXdvcmRWYWx1ZSgibGIiLCBrZXl3b3JkVmFs
dWUsIHNjcmF0Y2hCdWZmZXIuZGF0YSgpLCBzY3JhdGNoQnVmZmVyLnNpemUoKSwgJnN0YXR1cyk7
CiAgICAgICAgIGlmIChVX1NVQ0NFU1Moc3RhdHVzKSkKLSAgICAgICAgICAgIHJldHVybiBBdG9t
aWNTdHJpbmc6OmZyb21VVEY4KHNjcmF0Y2hCdWZmZXIuZGF0YSgpLCBsZW5ndGhOZWVkZWQpOwor
ICAgICAgICAgICAgcmV0dXJuIEF0b21TdHJpbmc6OmZyb21VVEY4KHNjcmF0Y2hCdWZmZXIuZGF0
YSgpLCBsZW5ndGhOZWVkZWQpOwogICAgICAgICBpZiAoc3RhdHVzID09IFVfQlVGRkVSX09WRVJG
TE9XX0VSUk9SKSB7CiAgICAgICAgICAgICBzY3JhdGNoQnVmZmVyLmdyb3cobGVuZ3RoTmVlZGVk
ICsgMSk7CiAgICAgICAgICAgICBtZW1zZXQoc2NyYXRjaEJ1ZmZlci5kYXRhKCkgKyB1dGY4TG9j
YWxlLmxlbmd0aCgpLCAwLCBzY3JhdGNoQnVmZmVyLnNpemUoKSAtIHV0ZjhMb2NhbGUubGVuZ3Ro
KCkpOwpAQCAtODAsMTIgKzgwLDEyIEBAIHB1YmxpYzoKICAgICAgICAgICAgIGludDMyX3QgbGVu
Z3RoTmVlZGVkMiA9IHVsb2Nfc2V0S2V5d29yZFZhbHVlKCJsYiIsIGtleXdvcmRWYWx1ZSwgc2Ny
YXRjaEJ1ZmZlci5kYXRhKCksIHNjcmF0Y2hCdWZmZXIuc2l6ZSgpLCAmc3RhdHVzKTsKICAgICAg
ICAgICAgIGlmICghVV9TVUNDRVNTKHN0YXR1cykgfHwgbGVuZ3RoTmVlZGVkICE9IGxlbmd0aE5l
ZWRlZDIpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGxvY2FsZTsKLSAgICAgICAgICAgIHJldHVy
biBBdG9taWNTdHJpbmc6OmZyb21VVEY4KHNjcmF0Y2hCdWZmZXIuZGF0YSgpLCBsZW5ndGhOZWVk
ZWQpOworICAgICAgICAgICAgcmV0dXJuIEF0b21TdHJpbmc6OmZyb21VVEY4KHNjcmF0Y2hCdWZm
ZXIuZGF0YSgpLCBsZW5ndGhOZWVkZWQpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBsb2Nh
bGU7CiAgICAgfQogCi0gICAgVUJyZWFrSXRlcmF0b3IqIHRha2UoY29uc3QgQXRvbWljU3RyaW5n
JiBsb2NhbGUsIExpbmVCcmVha0l0ZXJhdG9yTW9kZSBtb2RlKQorICAgIFVCcmVha0l0ZXJhdG9y
KiB0YWtlKGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsZSwgTGluZUJyZWFrSXRlcmF0b3JNb2RlIG1v
ZGUpCiAgICAgewogICAgICAgICBhdXRvIGxvY2FsZVdpdGhPcHRpb25hbEJyZWFrS2V5d29yZCA9
IG1ha2VMb2NhbGVXaXRoQnJlYWtLZXl3b3JkKGxvY2FsZSwgbW9kZSk7CiAKQEAgLTEyMiw4ICsx
MjIsOCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGNh
cGFjaXR5ID0gNDsKIAotICAgIFZlY3RvcjxzdGQ6OnBhaXI8QXRvbWljU3RyaW5nLCBVQnJlYWtJ
dGVyYXRvcio+LCBjYXBhY2l0eT4gbV9wb29sOwotICAgIEhhc2hNYXA8VUJyZWFrSXRlcmF0b3Iq
LCBBdG9taWNTdHJpbmc+IG1fdmVuZGVkSXRlcmF0b3JzOworICAgIFZlY3RvcjxzdGQ6OnBhaXI8
QXRvbVN0cmluZywgVUJyZWFrSXRlcmF0b3IqPiwgY2FwYWNpdHk+IG1fcG9vbDsKKyAgICBIYXNo
TWFwPFVCcmVha0l0ZXJhdG9yKiwgQXRvbVN0cmluZz4gbV92ZW5kZWRJdGVyYXRvcnM7CiAKICAg
ICBmcmllbmQgV1RGOjpUaHJlYWRTcGVjaWZpYzxMaW5lQnJlYWtJdGVyYXRvclBvb2w+OjpvcGVy
YXRvciBMaW5lQnJlYWtJdGVyYXRvclBvb2wqKCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaAppbmRleCBmZTRjNTMyMGNlYjNmMWQyOGEwNGY1OTI4Mzk5NmI5MmJiYzFlNTFlLi5j
MzZmMDFmNmNmNWFmMTU3NDQwOTk0YzhlNGNkNzQzZjJkZDY0ZjQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1N0cmluZ0J1aWxkZXIuaApAQCAtMjcsNyArMjcsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNs
dWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNT
dHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ1ZpZXcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTcyLDkgKzcy
LDkgQEAgcHVibGljOgogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIGFwcGVuZChjb25zdCBjaGFy
KiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpIHsgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgTENoYXIqPihjaGFyYWN0ZXJzKSwgbGVuZ3RoKTsgfQogCi0gICAgdm9pZCBhcHBlbmQo
Y29uc3QgQXRvbWljU3RyaW5nJiBhdG9taWNTdHJpbmcpCisgICAgdm9pZCBhcHBlbmQoY29uc3Qg
QXRvbVN0cmluZyYgYXRvbVN0cmluZykKICAgICB7Ci0gICAgICAgIGFwcGVuZChhdG9taWNTdHJp
bmcuc3RyaW5nKCkpOworICAgICAgICBhcHBlbmQoYXRvbVN0cmluZy5zdHJpbmcoKSk7CiAgICAg
fQogCiAgICAgdm9pZCBhcHBlbmQoY29uc3QgU3RyaW5nJiBzdHJpbmcpCkBAIC0yNTIsMjQgKzI1
MiwyNCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX3N0cmluZzsKICAgICB9CiAKLSAgICBB
dG9taWNTdHJpbmcgdG9BdG9taWNTdHJpbmcoKSBjb25zdAorICAgIEF0b21TdHJpbmcgdG9BdG9t
U3RyaW5nKCkgY29uc3QKICAgICB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFoYXNPdmVyZmxv
d2VkKCkpOwogICAgICAgICBpZiAoIW1fbGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJuIGVtcHR5
QXRvbSgpOwogCi0gICAgICAgIC8vIElmIHRoZSBidWZmZXIgaXMgc3VmZmljaWVudGx5IG92ZXIt
YWxsb2NhdGVkLCBtYWtlIGEgbmV3IEF0b21pY1N0cmluZyBmcm9tIGEgY29weSBzbyBpdHMgYnVm
ZmVyIGlzIG5vdCBzbyBsYXJnZS4KKyAgICAgICAgLy8gSWYgdGhlIGJ1ZmZlciBpcyBzdWZmaWNp
ZW50bHkgb3Zlci1hbGxvY2F0ZWQsIG1ha2UgYSBuZXcgQXRvbVN0cmluZyBmcm9tIGEgY29weSBz
byBpdHMgYnVmZmVyIGlzIG5vdCBzbyBsYXJnZS4KICAgICAgICAgaWYgKGNhblNocmluaygpKSB7
CiAgICAgICAgICAgICBpZiAoaXM4Qml0KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEF0b21p
Y1N0cmluZyhjaGFyYWN0ZXJzOCgpLCBsZW5ndGgoKSk7Ci0gICAgICAgICAgICByZXR1cm4gQXRv
bWljU3RyaW5nKGNoYXJhY3RlcnMxNigpLCBsZW5ndGgoKSk7ICAgICAgICAgICAgCisgICAgICAg
ICAgICAgICAgcmV0dXJuIEF0b21TdHJpbmcoY2hhcmFjdGVyczgoKSwgbGVuZ3RoKCkpOworICAg
ICAgICAgICAgcmV0dXJuIEF0b21TdHJpbmcoY2hhcmFjdGVyczE2KCksIGxlbmd0aCgpKTsgICAg
ICAgICAgICAKICAgICAgICAgfQogCiAgICAgICAgIGlmICghbV9zdHJpbmcuaXNOdWxsKCkpCi0g
ICAgICAgICAgICByZXR1cm4gQXRvbWljU3RyaW5nKG1fc3RyaW5nKTsKKyAgICAgICAgICAgIHJl
dHVybiBBdG9tU3RyaW5nKG1fc3RyaW5nKTsKIAogICAgICAgICBBU1NFUlQobV9idWZmZXIpOwot
ICAgICAgICByZXR1cm4gQXRvbWljU3RyaW5nKG1fYnVmZmVyLmdldCgpLCAwLCBtX2xlbmd0aC51
bnNhZmVHZXQoKSk7CisgICAgICAgIHJldHVybiBBdG9tU3RyaW5nKG1fYnVmZmVyLmdldCgpLCAw
LCBtX2xlbmd0aC51bnNhZmVHZXQoKSk7CiAgICAgfQogCiAgICAgdW5zaWduZWQgbGVuZ3RoKCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUu
aCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaAppbmRleCBjNWQwMjAx
ODE4NDJjMjYwMTNiZDQ4NzllNzc0YTNiZjFjOGQxNzJjLi5jOGNiYTA3MjM1MzBlZTQ3NjJmYjcy
N2I4MGExMjMxYTU5ZmY5NDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmlu
Z0NvbmNhdGVuYXRlLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0
ZS5oCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpbmNsdWRlIDxjc3RyaW5nPgogI2luY2x1ZGUgPHd0
Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdWaWV3Lmg+CiAKIC8vIFRoaXMgbWFjcm8gaXMgaGVscGZ1bCBmb3IgdGVzdGluZyBob3cg
bWFueSBpbnRlcm1lZGlhdGUgU3RyaW5ncyBhcmUgY3JlYXRlZCB3aGlsZSBldmFsdWF0aW5nIGFu
CkBAIC0xODksOSArMTg5LDkgQEAgcHJpdmF0ZToKICAgICBjb25zdCBTdHJpbmcmIG1fc3RyaW5n
OwogfTsKIAotdGVtcGxhdGU8PiBjbGFzcyBTdHJpbmdUeXBlQWRhcHRlcjxBdG9taWNTdHJpbmcs
IHZvaWQ+IDogcHVibGljIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZywgdm9pZD4gewordGVtcGxh
dGU8PiBjbGFzcyBTdHJpbmdUeXBlQWRhcHRlcjxBdG9tU3RyaW5nLCB2b2lkPiA6IHB1YmxpYyBT
dHJpbmdUeXBlQWRhcHRlcjxTdHJpbmcsIHZvaWQ+IHsKIHB1YmxpYzoKLSAgICBTdHJpbmdUeXBl
QWRhcHRlcihjb25zdCBBdG9taWNTdHJpbmcmIHN0cmluZykKKyAgICBTdHJpbmdUeXBlQWRhcHRl
cihjb25zdCBBdG9tU3RyaW5nJiBzdHJpbmcpCiAgICAgICAgIDogU3RyaW5nVHlwZUFkYXB0ZXI8
U3RyaW5nLCB2b2lkPiB7IHN0cmluZy5zdHJpbmcoKSB9CiAgICAgewogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSGFzaC5oIGIvU291cmNlL1dURi93dGYvdGV4
dC9TdHJpbmdIYXNoLmgKaW5kZXggOWVlNjgzOGQ1NWZhMGVhNTUzZjQ3MTBlMjQ5NzY3MGFjNTI0
YmM4ZS4uMDJiN2YzNzk4MDI2Y2I2YTczYTEyOWZjN2UzODQ2ZmFlYTgxZTY0MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdIYXNoLmgKKysrIGIvU291cmNlL1dURi93dGYv
dGV4dC9TdHJpbmdIYXNoLmgKQEAgLTIyLDcgKzIyLDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5j
bHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nSGFzaGVyLmg+CiAKIG5hbWVzcGFjZSBXVEYgewpAQCAtMTM5LDcgKzEzOSw3IEBAIG5h
bWVzcGFjZSBXVEYgewogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gaGFzaChrZXkuaW1w
bCgpKTsKICAgICAgICAgfQotICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBBdG9t
aWNTdHJpbmcmIGtleSkKKyAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgQXRvbVN0
cmluZyYga2V5KQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gaGFzaChrZXkuaW1wbCgp
KTsKICAgICAgICAgfQpAQCAtMTQ3LDcgKzE0Nyw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAg
ICB7CiAgICAgICAgICAgICByZXR1cm4gZXF1YWwoYS5pbXBsKCksIGIuaW1wbCgpKTsKICAgICAg
ICAgfQotICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBBdG9taWNTdHJpbmcmIGEsIGNv
bnN0IEF0b21pY1N0cmluZyYgYikKKyAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgQXRv
bVN0cmluZyYgYSwgY29uc3QgQXRvbVN0cmluZyYgYikKICAgICAgICAgewogICAgICAgICAgICAg
Ly8gRklYTUU6IElzIHRoZSAiYSA9PSBiIiBoZXJlIGEgaGVscGZ1bCBvcHRpbWl6YXRpb24/CiAg
ICAgICAgICAgICAvLyBJdCBtYWtlcyBhbGwgY2FzZXMgd2hlcmUgdGhlIHN0cmluZ3MgYXJlIG5v
dCBpZGVudGljYWwgc2xpZ2h0bHkgc2xvd2VyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
dGV4dC9TdHJpbmdJbXBsLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAK
aW5kZXggMGQ4MGMzMmM3NDg1ZDhmOWM2MjkzNGJiMzZlZmRkZWZhNDc1ZGRlNC4uM2Y2MDc4MWY3
ZjFkNzkzN2FlNjlkZmRkOTA5ODQwMThiNDBhNjEwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvdGV4dC9TdHJpbmdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0lt
cGwuY3BwCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpbmNsdWRlIDx3dGYvUHJvY2Vzc0lELmg+CiAj
aW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0
cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvRXh0ZXJuYWxTdHJpbmdJbXBsLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVmZmVyLmg+CkBAIC0xMTIsMTAgKzExMiwxMCBA
QCBTdHJpbmdJbXBsOjp+U3RyaW5nSW1wbCgpCiAKICAgICBTVFJJTkdfU1RBVFNfUkVNT1ZFX1NU
UklORygqdGhpcyk7CiAKLSAgICBpZiAoaXNBdG9taWMoKSkgeworICAgIGlmIChpc0F0b20oKSkg
ewogICAgICAgICBBU1NFUlQoIWlzU3ltYm9sKCkpOwogICAgICAgICBpZiAobGVuZ3RoKCkpCi0g
ICAgICAgICAgICBBdG9taWNTdHJpbmdJbXBsOjpyZW1vdmUoc3RhdGljX2Nhc3Q8QXRvbWljU3Ry
aW5nSW1wbCo+KHRoaXMpKTsKKyAgICAgICAgICAgIEF0b21TdHJpbmdJbXBsOjpyZW1vdmUoc3Rh
dGljX2Nhc3Q8QXRvbVN0cmluZ0ltcGwqPih0aGlzKSk7CiAgICAgfSBlbHNlIGlmIChpc1N5bWJv
bCgpKSB7CiAgICAgICAgIGF1dG8mIHN5bWJvbCA9IHN0YXRpY19jYXN0PFN5bWJvbEltcGwmPigq
dGhpcyk7CiAgICAgICAgIGF1dG8qIHN5bWJvbFJlZ2lzdHJ5ID0gc3ltYm9sLnN5bWJvbFJlZ2lz
dHJ5KCk7CkBAIC01MTgsNyArNTE4LDcgQEAgdXBjb252ZXJ0OgogICAgIHJldHVybiBuZXdJbXBs
OwogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wgbmVlZHNUdXJraXNoQ2FzaW5nUnVsZXMoY29uc3Qg
QXRvbWljU3RyaW5nJiBsb2NhbGVJZGVudGlmaWVyKQorc3RhdGljIGlubGluZSBib29sIG5lZWRz
VHVya2lzaENhc2luZ1J1bGVzKGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsZUlkZW50aWZpZXIpCiB7
CiAgICAgLy8gRWl0aGVyICJ0ciIgb3IgImF6IiBsb2NhbGUsIHdpdGggY2FzZSBzZW5zaXRpdmUg
Y29tcGFyaXNvbiBhbmQgYWxsb3dpbmcgZm9yIGFuIGlnbm9yZWQgc3VidGFnLgogICAgIFVDaGFy
IGZpcnN0ID0gbG9jYWxlSWRlbnRpZmllclswXTsKQEAgLTUyOCw3ICs1MjgsNyBAQCBzdGF0aWMg
aW5saW5lIGJvb2wgbmVlZHNUdXJraXNoQ2FzaW5nUnVsZXMoY29uc3QgQXRvbWljU3RyaW5nJiBs
b2NhbGVJZGVudGlmaWVyKQogICAgICAgICAmJiAobG9jYWxlSWRlbnRpZmllci5sZW5ndGgoKSA9
PSAyIHx8IGxvY2FsZUlkZW50aWZpZXJbMl0gPT0gJy0nKTsKIH0KIAotUmVmPFN0cmluZ0ltcGw+
IFN0cmluZ0ltcGw6OmNvbnZlcnRUb0xvd2VyY2FzZVdpdGhMb2NhbGUoY29uc3QgQXRvbWljU3Ry
aW5nJiBsb2NhbGVJZGVudGlmaWVyKQorUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNvbnZl
cnRUb0xvd2VyY2FzZVdpdGhMb2NhbGUoY29uc3QgQXRvbVN0cmluZyYgbG9jYWxlSWRlbnRpZmll
cikKIHsKICAgICAvLyBVc2UgdGhlIG1vcmUtb3B0aW1pemVkIGNvZGUgcGF0aCBtb3N0IG9mIHRo
ZSB0aW1lLgogICAgIC8vIEFzc3VtaW5nIGhlcmUgdGhhdCB0aGUgb25seSBsb2NhbGUtc3BlY2lm
aWMgbG93ZXJjYXNpbmcgaXMgdGhlIFR1cmtpc2ggY2FzaW5nIHJ1bGVzLgpAQCAtNTY0LDcgKzU2
NCw3IEBAIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjb252ZXJ0VG9Mb3dlcmNhc2VXaXRo
TG9jYWxlKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jCiAgICAgcmV0dXJuIG5ld1N0cmluZzsKIH0K
IAotUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNvbnZlcnRUb1VwcGVyY2FzZVdpdGhMb2Nh
bGUoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGVJZGVudGlmaWVyKQorUmVmPFN0cmluZ0ltcGw+
IFN0cmluZ0ltcGw6OmNvbnZlcnRUb1VwcGVyY2FzZVdpdGhMb2NhbGUoY29uc3QgQXRvbVN0cmlu
ZyYgbG9jYWxlSWRlbnRpZmllcikKIHsKICAgICAvLyBVc2UgdGhlIG1vcmUtb3B0aW1pemVkIGNv
ZGUgcGF0aCBtb3N0IG9mIHRoZSB0aW1lLgogICAgIC8vIEFzc3VtaW5nIGhlcmUgdGhhdCB0aGUg
b25seSBsb2NhbGUtc3BlY2lmaWMgbG93ZXJjYXNpbmcgaXMgdGhlIFR1cmtpc2ggY2FzaW5nIHJ1
bGVzLApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmggYi9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAppbmRleCBlNTY0NjQ4YzU0M2NkODIzZGU4ZjIy
M2M0MjM3Y2M5MjY5NTE5MzA0Li5kNzljNTU3OTY2Y2E1ZDE1YTQzMGUzYmFhODA1YmI5NWQ0Yjdk
ZTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaApAQCAtMTY4LDcgKzE2OCw3IEBAIHByb3Rl
Y3RlZDoKIGNsYXNzIFN0cmluZ0ltcGwgOiBwcml2YXRlIFN0cmluZ0ltcGxTaGFwZSB7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoU3RyaW5nSW1wbCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogCi0gICAgZnJpZW5kIGNsYXNzIEF0b21pY1N0cmluZ0ltcGw7CisgICAgZnJpZW5kIGNsYXNz
IEF0b21TdHJpbmdJbXBsOwogICAgIGZyaWVuZCBjbGFzcyBKU0M6OkxMSW50OjpEYXRhOwogICAg
IGZyaWVuZCBjbGFzcyBKU0M6OkxMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBmcmllbmQgY2xh
c3MgUHJpdmF0ZVN5bWJvbEltcGw7CkBAIC0yOTIsNyArMjkyLDcgQEAgcHVibGljOgogICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25zdDsKIAogICAgIGJvb2wg
aXNTeW1ib2woKSBjb25zdCB7IHJldHVybiBtX2hhc2hBbmRGbGFncyAmIHNfaGFzaEZsYWdTdHJp
bmdLaW5kSXNTeW1ib2w7IH0KLSAgICBib29sIGlzQXRvbWljKCkgY29uc3QgeyByZXR1cm4gbV9o
YXNoQW5kRmxhZ3MgJiBzX2hhc2hGbGFnU3RyaW5nS2luZElzQXRvbWljOyB9CisgICAgYm9vbCBp
c0F0b20oKSBjb25zdCB7IHJldHVybiBtX2hhc2hBbmRGbGFncyAmIHNfaGFzaEZsYWdTdHJpbmdL
aW5kSXNBdG9taWM7IH0KICAgICB2b2lkIHNldElzQXRvbWljKGJvb2wpOwogICAgIAogICAgIGJv
b2wgaXNFeHRlcm5hbCgpIGNvbnN0IHsgcmV0dXJuIGJ1ZmZlck93bmVyc2hpcCgpID09IEJ1ZmZl
ckV4dGVybmFsOyB9CkBAIC00MTIsOCArNDEyLDggQEAgcHVibGljOgogICAgIFdURl9FWFBPUlRf
UFJJVkFURSBSZWY8U3RyaW5nSW1wbD4gY29udmVydFRvTG93ZXJjYXNlV2l0aG91dExvY2FsZSgp
OwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBSZWY8U3RyaW5nSW1wbD4gY29udmVydFRvTG93ZXJj
YXNlV2l0aG91dExvY2FsZVN0YXJ0aW5nQXRGYWlsaW5nSW5kZXg4Qml0KHVuc2lnbmVkKTsKICAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgUmVmPFN0cmluZ0ltcGw+IGNvbnZlcnRUb1VwcGVyY2FzZVdp
dGhvdXRMb2NhbGUoKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgUmVmPFN0cmluZ0ltcGw+IGNv
bnZlcnRUb0xvd2VyY2FzZVdpdGhMb2NhbGUoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGVJZGVu
dGlmaWVyKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgUmVmPFN0cmluZ0ltcGw+IGNvbnZlcnRU
b1VwcGVyY2FzZVdpdGhMb2NhbGUoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGVJZGVudGlmaWVy
KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgUmVmPFN0cmluZ0ltcGw+IGNvbnZlcnRUb0xvd2Vy
Y2FzZVdpdGhMb2NhbGUoY29uc3QgQXRvbVN0cmluZyYgbG9jYWxlSWRlbnRpZmllcik7CisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIFJlZjxTdHJpbmdJbXBsPiBjb252ZXJ0VG9VcHBlcmNhc2VXaXRo
TG9jYWxlKGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsZUlkZW50aWZpZXIpOwogCiAgICAgUmVmPFN0
cmluZ0ltcGw+IGZvbGRDYXNlKCk7CiAKQEAgLTEwMzEsMTEgKzEwMzEsMTEgQEAgaW5saW5lIHNp
emVfdCBTdHJpbmdJbXBsOjpjb3N0RHVyaW5nR0MoKQogICAgIHJldHVybiBkaXZpZGVSb3VuZGVk
VXAocmVzdWx0LCByZWZDb3VudCgpKTsKIH0KIAotaW5saW5lIHZvaWQgU3RyaW5nSW1wbDo6c2V0
SXNBdG9taWMoYm9vbCBpc0F0b21pYykKK2lubGluZSB2b2lkIFN0cmluZ0ltcGw6OnNldElzQXRv
bWljKGJvb2wgaXNBdG9tKQogewogICAgIEFTU0VSVCghaXNTdGF0aWMoKSk7CiAgICAgQVNTRVJU
KCFpc1N5bWJvbCgpKTsKLSAgICBpZiAoaXNBdG9taWMpCisgICAgaWYgKGlzQXRvbSkKICAgICAg
ICAgbV9oYXNoQW5kRmxhZ3MgfD0gc19oYXNoRmxhZ1N0cmluZ0tpbmRJc0F0b21pYzsKICAgICBl
bHNlCiAgICAgICAgIG1faGFzaEFuZEZsYWdzICY9IH5zX2hhc2hGbGFnU3RyaW5nS2luZElzQXRv
bWljOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdPcGVyYXRvcnMuaCBi
L1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nT3BlcmF0b3JzLmgKaW5kZXggNzQzZWU5Zjg0ZWUw
ZGExNDA1ZGU5Nzk1NTkwOGJjMDYxNjg0Zjk4Zi4uNzg2MjFmZjJmZTk4YTAwMDM2NzhkZTRkYzhi
YWQ4MTY2NzY4YWNjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdPcGVy
YXRvcnMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ09wZXJhdG9ycy5oCkBAIC0z
OSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAg
ICBvcGVyYXRvciBBdG9taWNTdHJpbmcoKSBjb25zdAorICAgIG9wZXJhdG9yIEF0b21TdHJpbmco
KSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG9wZXJhdG9yIFN0cmluZygpOwogICAgIH0K
QEAgLTEwMSw5ICsxMDEsOSBAQCBpbmxpbmUgU3RyaW5nQXBwZW5kPGNvbnN0IGNoYXIqLCBTdHJp
bmc+IG9wZXJhdG9yKyhjb25zdCBjaGFyKiBzdHJpbmcxLCBjb25zdCBTdAogICAgIHJldHVybiBT
dHJpbmdBcHBlbmQ8Y29uc3QgY2hhciosIFN0cmluZz4oc3RyaW5nMSwgc3RyaW5nMik7CiB9CiAK
LWlubGluZSBTdHJpbmdBcHBlbmQ8Y29uc3QgY2hhciosIEF0b21pY1N0cmluZz4gb3BlcmF0b3Ir
KGNvbnN0IGNoYXIqIHN0cmluZzEsIGNvbnN0IEF0b21pY1N0cmluZyYgc3RyaW5nMikKK2lubGlu
ZSBTdHJpbmdBcHBlbmQ8Y29uc3QgY2hhciosIEF0b21TdHJpbmc+IG9wZXJhdG9yKyhjb25zdCBj
aGFyKiBzdHJpbmcxLCBjb25zdCBBdG9tU3RyaW5nJiBzdHJpbmcyKQogewotICAgIHJldHVybiBT
dHJpbmdBcHBlbmQ8Y29uc3QgY2hhciosIEF0b21pY1N0cmluZz4oc3RyaW5nMSwgc3RyaW5nMik7
CisgICAgcmV0dXJuIFN0cmluZ0FwcGVuZDxjb25zdCBjaGFyKiwgQXRvbVN0cmluZz4oc3RyaW5n
MSwgc3RyaW5nMik7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gc3RkOjpl
bmFibGVfaWZfdDxzdGQ6OmlzX3NhbWU8c3RkOjpkZWNheV90PFQ+LCBTdHJpbmdWaWV3Pjo6dmFs
dWU+PgpAQCAtMTIzLDkgKzEyMyw5IEBAIGlubGluZSBTdHJpbmdBcHBlbmQ8Y29uc3QgVUNoYXIq
LCBTdHJpbmc+IG9wZXJhdG9yKyhjb25zdCBVQ2hhciogc3RyaW5nMSwgY29uc3QKICAgICByZXR1
cm4gU3RyaW5nQXBwZW5kPGNvbnN0IFVDaGFyKiwgU3RyaW5nPihzdHJpbmcxLCBzdHJpbmcyKTsK
IH0KIAotaW5saW5lIFN0cmluZ0FwcGVuZDxjb25zdCBVQ2hhciosIEF0b21pY1N0cmluZz4gb3Bl
cmF0b3IrKGNvbnN0IFVDaGFyKiBzdHJpbmcxLCBjb25zdCBBdG9taWNTdHJpbmcmIHN0cmluZzIp
CitpbmxpbmUgU3RyaW5nQXBwZW5kPGNvbnN0IFVDaGFyKiwgQXRvbVN0cmluZz4gb3BlcmF0b3Ir
KGNvbnN0IFVDaGFyKiBzdHJpbmcxLCBjb25zdCBBdG9tU3RyaW5nJiBzdHJpbmcyKQogewotICAg
IHJldHVybiBTdHJpbmdBcHBlbmQ8Y29uc3QgVUNoYXIqLCBBdG9taWNTdHJpbmc+KHN0cmluZzEs
IHN0cmluZzIpOworICAgIHJldHVybiBTdHJpbmdBcHBlbmQ8Y29uc3QgVUNoYXIqLCBBdG9tU3Ry
aW5nPihzdHJpbmcxLCBzdHJpbmcyKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgPSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfc2FtZTxzdGQ6OmRlY2F5X3Q8VD4sIFN0cmlu
Z1ZpZXc+Ojp2YWx1ZT4+CkBAIC0xNDUsOSArMTQ1LDkgQEAgaW5saW5lIFN0cmluZ0FwcGVuZDxB
U0NJSUxpdGVyYWwsIFN0cmluZz4gb3BlcmF0b3IrKGNvbnN0IEFTQ0lJTGl0ZXJhbCYgc3RyaW5n
MSwKICAgICByZXR1cm4gU3RyaW5nQXBwZW5kPEFTQ0lJTGl0ZXJhbCwgU3RyaW5nPihzdHJpbmcx
LCBzdHJpbmcyKTsKIH0KIAotaW5saW5lIFN0cmluZ0FwcGVuZDxBU0NJSUxpdGVyYWwsIEF0b21p
Y1N0cmluZz4gb3BlcmF0b3IrKGNvbnN0IEFTQ0lJTGl0ZXJhbCYgc3RyaW5nMSwgY29uc3QgQXRv
bWljU3RyaW5nJiBzdHJpbmcyKQoraW5saW5lIFN0cmluZ0FwcGVuZDxBU0NJSUxpdGVyYWwsIEF0
b21TdHJpbmc+IG9wZXJhdG9yKyhjb25zdCBBU0NJSUxpdGVyYWwmIHN0cmluZzEsIGNvbnN0IEF0
b21TdHJpbmcmIHN0cmluZzIpCiB7Ci0gICAgcmV0dXJuIFN0cmluZ0FwcGVuZDxBU0NJSUxpdGVy
YWwsIEF0b21pY1N0cmluZz4oc3RyaW5nMSwgc3RyaW5nMik7CisgICAgcmV0dXJuIFN0cmluZ0Fw
cGVuZDxBU0NJSUxpdGVyYWwsIEF0b21TdHJpbmc+KHN0cmluZzEsIHN0cmluZzIpOwogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19z
YW1lPHN0ZDo6ZGVjYXlfdDxUPiwgU3RyaW5nVmlldz46OnZhbHVlPj4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdWaWV3LmgKaW5kZXggNjQxMDJiZmFhODA1Y2IwYzYzOGY1NDg2MTJlNDY5MDE4YTFiMjY4Ny4u
Njg4ODZmNjZjZjkyNzQzZTk1NDFkYzI3MWViYzFjNDk3NzZlOGE2ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9T
dHJpbmdWaWV3LmgKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgIFN0cmluZ1ZpZXcmIG9w
ZXJhdG9yPShjb25zdCBTdHJpbmdWaWV3Jik7CiAjZW5kaWYKIAotICAgIFN0cmluZ1ZpZXcoY29u
c3QgQXRvbWljU3RyaW5nJik7CisgICAgU3RyaW5nVmlldyhjb25zdCBBdG9tU3RyaW5nJik7CiAg
ICAgU3RyaW5nVmlldyhjb25zdCBTdHJpbmcmKTsKICAgICBTdHJpbmdWaWV3KGNvbnN0IFN0cmlu
Z0ltcGwmKTsKICAgICBTdHJpbmdWaWV3KGNvbnN0IFN0cmluZ0ltcGwqKTsKQEAgLTkyLDggKzky
LDggQEAgcHVibGljOgogCiAgICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7CiAgICAgU3RyaW5n
IHRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSBjb25zdDsKLSAgICBBdG9taWNTdHJpbmcgdG9BdG9t
aWNTdHJpbmcoKSBjb25zdDsKLSAgICBSZWZQdHI8QXRvbWljU3RyaW5nSW1wbD4gdG9FeGlzdGlu
Z0F0b21pY1N0cmluZygpIGNvbnN0OworICAgIEF0b21TdHJpbmcgdG9BdG9tU3RyaW5nKCkgY29u
c3Q7CisgICAgUmVmUHRyPEF0b21TdHJpbmdJbXBsPiB0b0V4aXN0aW5nQXRvbVN0cmluZygpIGNv
bnN0OwogCiAjaWYgVVNFKENGKQogICAgIC8vIFRoaXMgZnVuY3Rpb24gY29udmVydHMgbnVsbCBz
dHJpbmdzIHRvIGVtcHR5IHN0cmluZ3MuCkBAIC0yMjMsNyArMjIzLDcgQEAgV1RGX0VYUE9SVF9Q
UklWQVRFIFN0cmluZyBub3JtYWxpemVkTkZDKGNvbnN0IFN0cmluZyYpOwogCiB9CiAKLSNpbmNs
dWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3Ry
aW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXVEYg
ewpAQCAtMzYyLDggKzM2Miw4IEBAIGlubGluZSBTdHJpbmdWaWV3OjpTdHJpbmdWaWV3KGNvbnN0
IFN0cmluZyYgc3RyaW5nKQogICAgIGluaXRpYWxpemUoc3RyaW5nLmNoYXJhY3RlcnMxNigpLCBz
dHJpbmcubGVuZ3RoKCkpOwogfQogCi1pbmxpbmUgU3RyaW5nVmlldzo6U3RyaW5nVmlldyhjb25z
dCBBdG9taWNTdHJpbmcmIGF0b21pY1N0cmluZykKLSAgICA6IFN0cmluZ1ZpZXcoYXRvbWljU3Ry
aW5nLnN0cmluZygpKQoraW5saW5lIFN0cmluZ1ZpZXc6OlN0cmluZ1ZpZXcoY29uc3QgQXRvbVN0
cmluZyYgYXRvbVN0cmluZykKKyAgICA6IFN0cmluZ1ZpZXcoYXRvbVN0cmluZy5zdHJpbmcoKSkK
IHsKIH0KIApAQCAtNTA0LDE4ICs1MDQsMTggQEAgaW5saW5lIFN0cmluZyBTdHJpbmdWaWV3Ojp0
b1N0cmluZygpIGNvbnN0CiAgICAgcmV0dXJuIFN0cmluZyhjaGFyYWN0ZXJzMTYoKSwgbV9sZW5n
dGgpOwogfQogCi1pbmxpbmUgQXRvbWljU3RyaW5nIFN0cmluZ1ZpZXc6OnRvQXRvbWljU3RyaW5n
KCkgY29uc3QKK2lubGluZSBBdG9tU3RyaW5nIFN0cmluZ1ZpZXc6OnRvQXRvbVN0cmluZygpIGNv
bnN0CiB7CiAgICAgaWYgKGlzOEJpdCgpKQotICAgICAgICByZXR1cm4gQXRvbWljU3RyaW5nKGNo
YXJhY3RlcnM4KCksIG1fbGVuZ3RoKTsKLSAgICByZXR1cm4gQXRvbWljU3RyaW5nKGNoYXJhY3Rl
cnMxNigpLCBtX2xlbmd0aCk7CisgICAgICAgIHJldHVybiBBdG9tU3RyaW5nKGNoYXJhY3RlcnM4
KCksIG1fbGVuZ3RoKTsKKyAgICByZXR1cm4gQXRvbVN0cmluZyhjaGFyYWN0ZXJzMTYoKSwgbV9s
ZW5ndGgpOwogfQogCi1pbmxpbmUgUmVmUHRyPEF0b21pY1N0cmluZ0ltcGw+IFN0cmluZ1ZpZXc6
OnRvRXhpc3RpbmdBdG9taWNTdHJpbmcoKSBjb25zdAoraW5saW5lIFJlZlB0cjxBdG9tU3RyaW5n
SW1wbD4gU3RyaW5nVmlldzo6dG9FeGlzdGluZ0F0b21TdHJpbmcoKSBjb25zdAogewogICAgIGlm
IChpczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIEF0b21pY1N0cmluZ0ltcGw6Omxvb2tVcChjaGFy
YWN0ZXJzOCgpLCBtX2xlbmd0aCk7Ci0gICAgcmV0dXJuIEF0b21pY1N0cmluZ0ltcGw6Omxvb2tV
cChjaGFyYWN0ZXJzMTYoKSwgbV9sZW5ndGgpOworICAgICAgICByZXR1cm4gQXRvbVN0cmluZ0lt
cGw6Omxvb2tVcChjaGFyYWN0ZXJzOCgpLCBtX2xlbmd0aCk7CisgICAgcmV0dXJuIEF0b21TdHJp
bmdJbXBsOjpsb29rVXAoY2hhcmFjdGVyczE2KCksIG1fbGVuZ3RoKTsKIH0KIAogaW5saW5lIGZs
b2F0IFN0cmluZ1ZpZXc6OnRvRmxvYXQoYm9vbCYgaXNWYWxpZCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuY3BwIGIvU291cmNlL1dURi93
dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5jcHAKaW5kZXggYWNmNjg0NGIwNjk1OGZmYWJiOGM1
YWY2NDE5YTRkMmJjODVlNzZjZS4uYjJhMWU1OTE4MzAzMDBlZmRlZWExODU5MTJjOGQ0ZjUyNGE3
ZDVkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5j
cHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5jcHAKQEAgLTM1
LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAKICNpZiAhUExBVEZPUk0oTUFDKSAmJiAhUExB
VEZPUk0oSU9TX0ZBTUlMWSkKIAotc3RhdGljIFZhcmlhbnQ8VGV4dEJyZWFrSXRlcmF0b3JJQ1Us
IFRleHRCcmVha0l0ZXJhdG9yUGxhdGZvcm0+IG1hcE1vZGVUb0JhY2tpbmdJdGVyYXRvcihTdHJp
bmdWaWV3IHN0cmluZywgVGV4dEJyZWFrSXRlcmF0b3I6Ok1vZGUgbW9kZSwgY29uc3QgQXRvbWlj
U3RyaW5nJiBsb2NhbGUpCitzdGF0aWMgVmFyaWFudDxUZXh0QnJlYWtJdGVyYXRvcklDVSwgVGV4
dEJyZWFrSXRlcmF0b3JQbGF0Zm9ybT4gbWFwTW9kZVRvQmFja2luZ0l0ZXJhdG9yKFN0cmluZ1Zp
ZXcgc3RyaW5nLCBUZXh0QnJlYWtJdGVyYXRvcjo6TW9kZSBtb2RlLCBjb25zdCBBdG9tU3RyaW5n
JiBsb2NhbGUpCiB7CiAgICAgc3dpdGNoIChtb2RlKSB7CiAgICAgY2FzZSBUZXh0QnJlYWtJdGVy
YXRvcjo6TW9kZTo6TGluZToKQEAgLTUwLDcgKzUwLDcgQEAgc3RhdGljIFZhcmlhbnQ8VGV4dEJy
ZWFrSXRlcmF0b3JJQ1UsIFRleHRCcmVha0l0ZXJhdG9yUGxhdGZvcm0+IG1hcE1vZGVUb0JhY2tp
bmcKICAgICB9CiB9CiAKLVRleHRCcmVha0l0ZXJhdG9yOjpUZXh0QnJlYWtJdGVyYXRvcihTdHJp
bmdWaWV3IHN0cmluZywgTW9kZSBtb2RlLCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSkKK1Rl
eHRCcmVha0l0ZXJhdG9yOjpUZXh0QnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3IHN0cmluZywgTW9k
ZSBtb2RlLCBjb25zdCBBdG9tU3RyaW5nJiBsb2NhbGUpCiAgICAgOiBtX2JhY2tpbmcobWFwTW9k
ZVRvQmFja2luZ0l0ZXJhdG9yKHN0cmluZywgbW9kZSwgbG9jYWxlKSkKICAgICAsIG1fbW9kZSht
b2RlKQogICAgICwgbV9sb2NhbGUobG9jYWxlKQpAQCAtMTcxLDcgKzE3MSw3IEBAIFVCcmVha0l0
ZXJhdG9yKiBzZW50ZW5jZUJyZWFrSXRlcmF0b3IoU3RyaW5nVmlldyBzdHJpbmcpCiAgICAgcmV0
dXJuIHNldFRleHRGb3JJdGVyYXRvcigqc3RhdGljU2VudGVuY2VCcmVha0l0ZXJhdG9yLCBzdHJp
bmcpOwogfQogCi1VQnJlYWtJdGVyYXRvciogYWNxdWlyZUxpbmVCcmVha0l0ZXJhdG9yKFN0cmlu
Z1ZpZXcgc3RyaW5nLCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSwgY29uc3QgVUNoYXIqIHBy
aW9yQ29udGV4dCwgdW5zaWduZWQgcHJpb3JDb250ZXh0TGVuZ3RoLCBMaW5lQnJlYWtJdGVyYXRv
ck1vZGUgbW9kZSkKK1VCcmVha0l0ZXJhdG9yKiBhY3F1aXJlTGluZUJyZWFrSXRlcmF0b3IoU3Ry
aW5nVmlldyBzdHJpbmcsIGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsZSwgY29uc3QgVUNoYXIqIHBy
aW9yQ29udGV4dCwgdW5zaWduZWQgcHJpb3JDb250ZXh0TGVuZ3RoLCBMaW5lQnJlYWtJdGVyYXRv
ck1vZGUgbW9kZSkKIHsKICAgICBVQnJlYWtJdGVyYXRvciogaXRlcmF0b3IgPSBMaW5lQnJlYWtJ
dGVyYXRvclBvb2w6OnNoYXJlZFBvb2woKS50YWtlKGxvY2FsZSwgbW9kZSk7CiAgICAgaWYgKCFp
dGVyYXRvcikKQEAgLTE4Nyw3ICsxODcsNyBAQCB2b2lkIHJlbGVhc2VMaW5lQnJlYWtJdGVyYXRv
cihVQnJlYWtJdGVyYXRvciogaXRlcmF0b3IpCiAgICAgTGluZUJyZWFrSXRlcmF0b3JQb29sOjpz
aGFyZWRQb29sKCkucHV0KGl0ZXJhdG9yKTsKIH0KIAotVUJyZWFrSXRlcmF0b3IqIG9wZW5MaW5l
QnJlYWtJdGVyYXRvcihjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSkKK1VCcmVha0l0ZXJhdG9y
KiBvcGVuTGluZUJyZWFrSXRlcmF0b3IoY29uc3QgQXRvbVN0cmluZyYgbG9jYWxlKQogewogICAg
IGJvb2wgbG9jYWxlSXNFbXB0eSA9IGxvY2FsZS5pc0VtcHR5KCk7CiAgICAgVUVycm9yQ29kZSBv
cGVuU3RhdHVzID0gVV9aRVJPX0VSUk9SOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4
dC9UZXh0QnJlYWtJdGVyYXRvci5oIGIvU291cmNlL1dURi93dGYvdGV4dC9UZXh0QnJlYWtJdGVy
YXRvci5oCmluZGV4IDkwMjIzMmZiMWMzMzNmMTgzYjNmMTU5ZDVhYWUyZGYzYmIzNjA3YTEuLjFh
ZjEwNTIxY2NmMTJmYzNmM2IyNTEwYzY5NmU3YTY3Y2M0MzQ5MjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmgKQEAgLTgxLDcgKzgxLDcgQEAgcHJpdmF0ZToKICAgICBm
cmllbmQgY2xhc3MgVGV4dEJyZWFrSXRlcmF0b3JDYWNoZTsKIAogICAgIC8vIFVzZSBDYWNoZWRU
ZXh0QnJlYWtJdGVyYXRvciBpbnN0ZWFkIG9mIGNvbnN0cnVjdGluZyBvbmUgb2YgdGhlc2UgZGly
ZWN0bHkuCi0gICAgV1RGX0VYUE9SVCBUZXh0QnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3LCBNb2Rl
LCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSk7CisgICAgV1RGX0VYUE9SVCBUZXh0QnJlYWtJ
dGVyYXRvcihTdHJpbmdWaWV3LCBNb2RlLCBjb25zdCBBdG9tU3RyaW5nJiBsb2NhbGUpOwogCiAg
ICAgdm9pZCBzZXRUZXh0KFN0cmluZ1ZpZXcgc3RyaW5nKQogICAgIHsKQEAgLTk1LDE0ICs5NSwx
NCBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gbV9tb2RlOwogICAgIH0KIAotICAgIGNvbnN0
IEF0b21pY1N0cmluZyYgbG9jYWxlKCkgY29uc3QKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBsb2Nh
bGUoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1fbG9jYWxlOwogICAgIH0KIAogICAg
IFZhcmlhbnQ8VGV4dEJyZWFrSXRlcmF0b3JJQ1UsIFRleHRCcmVha0l0ZXJhdG9yUGxhdGZvcm0+
IG1fYmFja2luZzsKICAgICBNb2RlIG1fbW9kZTsKLSAgICBBdG9taWNTdHJpbmcgbV9sb2NhbGU7
CisgICAgQXRvbVN0cmluZyBtX2xvY2FsZTsKIH07CiAKIGNsYXNzIENhY2hlZFRleHRCcmVha0l0
ZXJhdG9yOwpAQCAtMTI0LDcgKzEyNCw3IEBAIHByaXZhdGU6CiAgICAgVGV4dEJyZWFrSXRlcmF0
b3JDYWNoZSYgb3BlcmF0b3I9KGNvbnN0IFRleHRCcmVha0l0ZXJhdG9yQ2FjaGUmKSA9IGRlbGV0
ZTsKICAgICBUZXh0QnJlYWtJdGVyYXRvckNhY2hlJiBvcGVyYXRvcj0oVGV4dEJyZWFrSXRlcmF0
b3JDYWNoZSYmKSA9IGRlbGV0ZTsKIAotICAgIFRleHRCcmVha0l0ZXJhdG9yIHRha2UoU3RyaW5n
VmlldyBzdHJpbmcsIFRleHRCcmVha0l0ZXJhdG9yOjpNb2RlIG1vZGUsIGNvbnN0IEF0b21pY1N0
cmluZyYgbG9jYWxlKQorICAgIFRleHRCcmVha0l0ZXJhdG9yIHRha2UoU3RyaW5nVmlldyBzdHJp
bmcsIFRleHRCcmVha0l0ZXJhdG9yOjpNb2RlIG1vZGUsIGNvbnN0IEF0b21TdHJpbmcmIGxvY2Fs
ZSkKICAgICB7CiAgICAgICAgIGF1dG8gaXRlciA9IHN0ZDo6ZmluZF9pZihtX3VudXNlZC5iZWdp
bigpLCBtX3VudXNlZC5lbmQoKSwgWyZdKFRleHRCcmVha0l0ZXJhdG9yJiBjYW5kaWRhdGUpIHsK
ICAgICAgICAgICAgIHJldHVybiBjYW5kaWRhdGUubW9kZSgpID09IG1vZGUgJiYgY2FuZGlkYXRl
LmxvY2FsZSgpID09IGxvY2FsZTsKQEAgLTE1Nyw3ICsxNTcsNyBAQCBwcml2YXRlOgogLy8gUkFJ
SSBmb3IgVGV4dEJyZWFrSXRlcmF0b3IgYW5kIFRleHRCcmVha0l0ZXJhdG9yQ2FjaGUuCiBjbGFz
cyBDYWNoZWRUZXh0QnJlYWtJdGVyYXRvciB7CiBwdWJsaWM6Ci0gICAgQ2FjaGVkVGV4dEJyZWFr
SXRlcmF0b3IoU3RyaW5nVmlldyBzdHJpbmcsIFRleHRCcmVha0l0ZXJhdG9yOjpNb2RlIG1vZGUs
IGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlKQorICAgIENhY2hlZFRleHRCcmVha0l0ZXJhdG9y
KFN0cmluZ1ZpZXcgc3RyaW5nLCBUZXh0QnJlYWtJdGVyYXRvcjo6TW9kZSBtb2RlLCBjb25zdCBB
dG9tU3RyaW5nJiBsb2NhbGUpCiAgICAgICAgIDogbV9iYWNraW5nKFRleHRCcmVha0l0ZXJhdG9y
Q2FjaGU6OnNpbmdsZXRvbigpLnRha2Uoc3RyaW5nLCBtb2RlLCBsb2NhbGUpKQogICAgIHsKICAg
ICB9CkBAIC0xOTksOSArMTk5LDkgQEAgZW51bSBjbGFzcyBMaW5lQnJlYWtJdGVyYXRvck1vZGUg
eyBEZWZhdWx0LCBMb29zZSwgTm9ybWFsLCBTdHJpY3QgfTsKIFdURl9FWFBPUlRfUFJJVkFURSBV
QnJlYWtJdGVyYXRvciogd29yZEJyZWFrSXRlcmF0b3IoU3RyaW5nVmlldyk7CiBXVEZfRVhQT1JU
X1BSSVZBVEUgVUJyZWFrSXRlcmF0b3IqIHNlbnRlbmNlQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3
KTsKIAotV1RGX0VYUE9SVF9QUklWQVRFIFVCcmVha0l0ZXJhdG9yKiBhY3F1aXJlTGluZUJyZWFr
SXRlcmF0b3IoU3RyaW5nVmlldywgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUsIGNvbnN0IFVD
aGFyKiBwcmlvckNvbnRleHQsIHVuc2lnbmVkIHByaW9yQ29udGV4dExlbmd0aCwgTGluZUJyZWFr
SXRlcmF0b3JNb2RlKTsKK1dURl9FWFBPUlRfUFJJVkFURSBVQnJlYWtJdGVyYXRvciogYWNxdWly
ZUxpbmVCcmVha0l0ZXJhdG9yKFN0cmluZ1ZpZXcsIGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsZSwg
Y29uc3QgVUNoYXIqIHByaW9yQ29udGV4dCwgdW5zaWduZWQgcHJpb3JDb250ZXh0TGVuZ3RoLCBM
aW5lQnJlYWtJdGVyYXRvck1vZGUpOwogV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVsZWFzZUxp
bmVCcmVha0l0ZXJhdG9yKFVCcmVha0l0ZXJhdG9yKik7Ci1VQnJlYWtJdGVyYXRvciogb3Blbkxp
bmVCcmVha0l0ZXJhdG9yKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlKTsKK1VCcmVha0l0ZXJh
dG9yKiBvcGVuTGluZUJyZWFrSXRlcmF0b3IoY29uc3QgQXRvbVN0cmluZyYgbG9jYWxlKTsKIHZv
aWQgY2xvc2VMaW5lQnJlYWtJdGVyYXRvcihVQnJlYWtJdGVyYXRvciomKTsKIAogV1RGX0VYUE9S
VF9QUklWQVRFIGJvb2wgaXNXb3JkVGV4dEJyZWFrKFVCcmVha0l0ZXJhdG9yKik7CkBAIC0yMTMs
NyArMjEzLDcgQEAgcHVibGljOgogICAgICAgICByZXNldFByaW9yQ29udGV4dCgpOwogICAgIH0K
IAotICAgIGV4cGxpY2l0IExhenlMaW5lQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3IHN0cmluZ1Zp
ZXcsIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlID0gQXRvbWljU3RyaW5nKCksIExpbmVCcmVh
a0l0ZXJhdG9yTW9kZSBtb2RlID0gTGluZUJyZWFrSXRlcmF0b3JNb2RlOjpEZWZhdWx0KQorICAg
IGV4cGxpY2l0IExhenlMaW5lQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3IHN0cmluZ1ZpZXcsIGNv
bnN0IEF0b21TdHJpbmcmIGxvY2FsZSA9IEF0b21TdHJpbmcoKSwgTGluZUJyZWFrSXRlcmF0b3JN
b2RlIG1vZGUgPSBMaW5lQnJlYWtJdGVyYXRvck1vZGU6OkRlZmF1bHQpCiAgICAgICAgIDogbV9z
dHJpbmdWaWV3KHN0cmluZ1ZpZXcpCiAgICAgICAgICwgbV9sb2NhbGUobG9jYWxlKQogICAgICAg
ICAsIG1fbW9kZShtb2RlKQpAQCAtMjkzLDcgKzI5Myw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIG1faXRlcmF0b3I7CiAgICAgfQogCi0gICAgdm9pZCByZXNldFN0cmluZ0FuZFJlbGVhc2VJ
dGVyYXRvcihTdHJpbmdWaWV3IHN0cmluZ1ZpZXcsIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxl
LCBMaW5lQnJlYWtJdGVyYXRvck1vZGUgbW9kZSkKKyAgICB2b2lkIHJlc2V0U3RyaW5nQW5kUmVs
ZWFzZUl0ZXJhdG9yKFN0cmluZ1ZpZXcgc3RyaW5nVmlldywgY29uc3QgQXRvbVN0cmluZyYgbG9j
YWxlLCBMaW5lQnJlYWtJdGVyYXRvck1vZGUgbW9kZSkKICAgICB7CiAgICAgICAgIGlmIChtX2l0
ZXJhdG9yKQogICAgICAgICAgICAgcmVsZWFzZUxpbmVCcmVha0l0ZXJhdG9yKG1faXRlcmF0b3Ip
OwpAQCAtMzA4LDcgKzMwOCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0
ZXhwciB1bnNpZ25lZCBwcmlvckNvbnRleHRDYXBhY2l0eSA9IDI7CiAgICAgU3RyaW5nVmlldyBt
X3N0cmluZ1ZpZXc7Ci0gICAgQXRvbWljU3RyaW5nIG1fbG9jYWxlOworICAgIEF0b21TdHJpbmcg
bV9sb2NhbGU7CiAgICAgVUJyZWFrSXRlcmF0b3IqIG1faXRlcmF0b3IgeyBudWxscHRyIH07CiAg
ICAgY29uc3QgVUNoYXIqIG1fY2FjaGVkUHJpb3JDb250ZXh0IHsgbnVsbHB0ciB9OwogICAgIExp
bmVCcmVha0l0ZXJhdG9yTW9kZSBtX21vZGUgeyBMaW5lQnJlYWtJdGVyYXRvck1vZGU6OkRlZmF1
bHQgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcCBiL1Nv
dXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcAppbmRleCBlNWMxOGZlNGMzNmY1OWQ5NzIw
M2Q5MjcwZjZmMmEyMDhiMWUyNzY0Li40M2RlM2QwNzYwNTlmODA3NGI3NDg3NmVmNzdmNjgzOTA0
YjZhMGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKKysr
IGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCkBAIC0zNTYsMTMgKzM1NiwxMyBA
QCBTdHJpbmcgU3RyaW5nOjpjb252ZXJ0VG9VcHBlcmNhc2VXaXRob3V0TG9jYWxlKCkgY29uc3QK
ICAgICByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5jb252ZXJ0VG9VcHBlcmNhc2VXaXRob3V0TG9j
YWxlKCkgOiBTdHJpbmcgeyB9OwogfQogCi1TdHJpbmcgU3RyaW5nOjpjb252ZXJ0VG9Mb3dlcmNh
c2VXaXRoTG9jYWxlKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlSWRlbnRpZmllcikgY29uc3QK
K1N0cmluZyBTdHJpbmc6OmNvbnZlcnRUb0xvd2VyY2FzZVdpdGhMb2NhbGUoY29uc3QgQXRvbVN0
cmluZyYgbG9jYWxlSWRlbnRpZmllcikgY29uc3QKIHsKICAgICAvLyBGSVhNRTogU2hvdWxkIHRo
aXMgZnVuY3Rpb24sIGFuZCB0aGUgbWFueSBvdGhlcnMgbGlrZSBpdCwgYmUgaW5saW5lZD8KICAg
ICByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5jb252ZXJ0VG9Mb3dlcmNhc2VXaXRoTG9jYWxlKGxv
Y2FsZUlkZW50aWZpZXIpIDogU3RyaW5nIHsgfTsKIH0KIAotU3RyaW5nIFN0cmluZzo6Y29udmVy
dFRvVXBwZXJjYXNlV2l0aExvY2FsZShjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZUlkZW50aWZp
ZXIpIGNvbnN0CitTdHJpbmcgU3RyaW5nOjpjb252ZXJ0VG9VcHBlcmNhc2VXaXRoTG9jYWxlKGNv
bnN0IEF0b21TdHJpbmcmIGxvY2FsZUlkZW50aWZpZXIpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6
IFNob3VsZCB0aGlzIGZ1bmN0aW9uLCBhbmQgdGhlIG1hbnkgb3RoZXJzIGxpa2UgaXQsIGJlIGlu
bGluZWQ/CiAgICAgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+Y29udmVydFRvVXBwZXJjYXNlV2l0
aExvY2FsZShsb2NhbGVJZGVudGlmaWVyKSA6IFN0cmluZyB7IH07CkBAIC02NDksOCArNjQ5LDgg
QEAgU3RyaW5nIFN0cmluZzo6aXNvbGF0ZWRDb3B5KCkgJiYKIGJvb2wgU3RyaW5nOjppc1NhZmVU
b1NlbmRUb0Fub3RoZXJUaHJlYWQoKSBjb25zdAogewogICAgIC8vIEF0b21pY1N0cmluZ3MgYXJl
IG5vdCBzYWZlIHRvIHNlbmQgYmV0d2VlbiB0aHJlYWRzIGFzIH5TdHJpbmdJbXBsKCkKLSAgICAv
LyB3aWxsIHRyeSB0byByZW1vdmUgdGhlbSBmcm9tIHRoZSB3cm9uZyBBdG9taWNTdHJpbmdUYWJs
ZS4KLSAgICByZXR1cm4gaXNFbXB0eSgpIHx8IChtX2ltcGwtPmhhc09uZVJlZigpICYmICFtX2lt
cGwtPmlzQXRvbWljKCkpOworICAgIC8vIHdpbGwgdHJ5IHRvIHJlbW92ZSB0aGVtIGZyb20gdGhl
IHdyb25nIEF0b21TdHJpbmdUYWJsZS4KKyAgICByZXR1cm4gaXNFbXB0eSgpIHx8IChtX2ltcGwt
Pmhhc09uZVJlZigpICYmICFtX2ltcGwtPmlzQXRvbSgpKTsKIH0KIAogdGVtcGxhdGU8Ym9vbCBh
bGxvd0VtcHR5RW50cmllcz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3Ry
aW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCmluZGV4IDlhNzUzYWRiNjEy
M2RhNGM0ZjFlYjhmYWI5OTEyZTE0NmQzN2IzNjMuLjBkZDE1NjdiMDYzMmY4OTRmYTA1MjdjYTY3
ZmNlODE2NmJhNTg4NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5n
LmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaApAQCAtMTE0LDggKzExNCw4
IEBAIHB1YmxpYzoKICAgICBTdHJpbmcoUmVmPFN0cmluZ0ltcGw+JiYpOwogICAgIFN0cmluZyhS
ZWZQdHI8U3RyaW5nSW1wbD4mJik7CiAKLSAgICBTdHJpbmcoUmVmPEF0b21pY1N0cmluZ0ltcGw+
JiYpOwotICAgIFN0cmluZyhSZWZQdHI8QXRvbWljU3RyaW5nSW1wbD4mJik7CisgICAgU3RyaW5n
KFJlZjxBdG9tU3RyaW5nSW1wbD4mJik7CisgICAgU3RyaW5nKFJlZlB0cjxBdG9tU3RyaW5nSW1w
bD4mJik7CiAKICAgICBTdHJpbmcoU3RhdGljU3RyaW5nSW1wbCYpOwogICAgIFN0cmluZyhTdGF0
aWNTdHJpbmdJbXBsKik7CkBAIC0yNTAsOCArMjUwLDggQEAgcHVibGljOgogICAgIFdURl9FWFBP
UlRfUFJJVkFURSBTdHJpbmcgY29udmVydFRvTG93ZXJjYXNlV2l0aG91dExvY2FsZSgpIGNvbnN0
OwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgY29udmVydFRvTG93ZXJjYXNlV2l0aG91
dExvY2FsZVN0YXJ0aW5nQXRGYWlsaW5nSW5kZXg4Qml0KHVuc2lnbmVkKSBjb25zdDsKICAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGNvbnZlcnRUb1VwcGVyY2FzZVdpdGhvdXRMb2NhbGUo
KSBjb25zdDsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGNvbnZlcnRUb0xvd2VyY2Fz
ZVdpdGhMb2NhbGUoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGVJZGVudGlmaWVyKSBjb25zdDsK
LSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGNvbnZlcnRUb1VwcGVyY2FzZVdpdGhMb2Nh
bGUoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGVJZGVudGlmaWVyKSBjb25zdDsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nIGNvbnZlcnRUb0xvd2VyY2FzZVdpdGhMb2NhbGUoY29uc3Qg
QXRvbVN0cmluZyYgbG9jYWxlSWRlbnRpZmllcikgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIFN0cmluZyBjb252ZXJ0VG9VcHBlcmNhc2VXaXRoTG9jYWxlKGNvbnN0IEF0b21TdHJpbmcm
IGxvY2FsZUlkZW50aWZpZXIpIGNvbnN0OwogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmlu
ZyBzdHJpcFdoaXRlU3BhY2UoKSBjb25zdDsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5n
IHNpbXBsaWZ5V2hpdGVTcGFjZSgpIGNvbnN0OwpAQCAtNDc1LDEyICs0NzUsMTIgQEAgaW5saW5l
IFN0cmluZzo6U3RyaW5nKFJlZlB0cjxTdHJpbmdJbXBsPiYmIHN0cmluZykKIHsKIH0KIAotaW5s
aW5lIFN0cmluZzo6U3RyaW5nKFJlZjxBdG9taWNTdHJpbmdJbXBsPiYmIHN0cmluZykKK2lubGlu
ZSBTdHJpbmc6OlN0cmluZyhSZWY8QXRvbVN0cmluZ0ltcGw+JiYgc3RyaW5nKQogICAgIDogbV9p
bXBsKFdURk1vdmUoc3RyaW5nKSkKIHsKIH0KIAotaW5saW5lIFN0cmluZzo6U3RyaW5nKFJlZlB0
cjxBdG9taWNTdHJpbmdJbXBsPiYmIHN0cmluZykKK2lubGluZSBTdHJpbmc6OlN0cmluZyhSZWZQ
dHI8QXRvbVN0cmluZ0ltcGw+JiYgc3RyaW5nKQogICAgIDogbV9pbXBsKFdURk1vdmUoc3RyaW5n
KSkKIHsKIH0KQEAgLTY3OSw0ICs2NzksNCBAQCB1c2luZyBXVEY6OmlzQWxsU3BlY2lhbENoYXJh
Y3RlcnM7CiB1c2luZyBXVEY6OmlzU3BhY2VPck5ld2xpbmU7CiB1c2luZyBXVEY6OnJldmVyc2VG
aW5kOwogCi0jaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvQXRvbVN0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9jZi9B
dG9tU3RyaW5nSW1wbENGLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvY2YvQXRvbVN0cmluZ0lt
cGxDRi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMDIzMWE5YTA1ZmM2ZDkwMTZkOWYzYWFlZTdhZTM3OGNiYWZh
MzE3NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvY2YvQXRvbVN0cmlu
Z0ltcGxDRi5jcHAKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nSW1wbC5oPgorCisjaWYgVVNFKENG
KQorCisjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXVEYgeworCitSZWZQdHI8QXRvbVN0
cmluZ0ltcGw+IEF0b21TdHJpbmdJbXBsOjphZGQoQ0ZTdHJpbmdSZWYgc3RyaW5nKQoreworICAg
IGlmICghc3RyaW5nKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIENGSW5kZXggbGVu
Z3RoID0gQ0ZTdHJpbmdHZXRMZW5ndGgoc3RyaW5nKTsKKworICAgIGlmIChjb25zdCBMQ2hhciog
cHRyID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KENGU3RyaW5nR2V0Q1N0cmluZ1B0
cihzdHJpbmcsIGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xKSkpCisgICAgICAgIHJldHVybiBh
ZGQocHRyLCBsZW5ndGgpOworCisgICAgaWYgKGNvbnN0IFVuaUNoYXIqIHB0ciA9IENGU3RyaW5n
R2V0Q2hhcmFjdGVyc1B0cihzdHJpbmcpKQorICAgICAgICByZXR1cm4gYWRkKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgVUNoYXIqPihwdHIpLCBsZW5ndGgpOworCisgICAgVmVjdG9yPFVuaUNoYXIs
IDEwMjQ+IHVjaGFyQnVmZmVyKGxlbmd0aCk7CisgICAgQ0ZTdHJpbmdHZXRDaGFyYWN0ZXJzKHN0
cmluZywgQ0ZSYW5nZU1ha2UoMCwgbGVuZ3RoKSwgdWNoYXJCdWZmZXIuZGF0YSgpKTsKKyAgICBy
ZXR1cm4gYWRkKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPih1Y2hhckJ1ZmZlci5kYXRh
KCkpLCBsZW5ndGgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKKworI2VuZGlmIC8vIFVTRShD
RikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvY2YvQXRvbWljU3RyaW5nSW1wbENG
LmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvY2YvQXRvbWljU3RyaW5nSW1wbENGLmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGEzZjE1ZGFlNDk4NDdhYThmZjI4ZGMzYTc3NmI2
NzVjNTFmOTBjNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2NmL0F0b21pY1N0cmluZ0ltcGxDRi5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSw1NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ0ltcGwuaD4KLQotI2lmIFVTRShDRikKLQot
I2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+Ci0jaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgotCi1uYW1lc3BhY2UgV1RGIHsKLQotUmVmUHRyPEF0b21pY1N0cmlu
Z0ltcGw+IEF0b21pY1N0cmluZ0ltcGw6OmFkZChDRlN0cmluZ1JlZiBzdHJpbmcpCi17Ci0gICAg
aWYgKCFzdHJpbmcpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgQ0ZJbmRleCBsZW5n
dGggPSBDRlN0cmluZ0dldExlbmd0aChzdHJpbmcpOwotCi0gICAgaWYgKGNvbnN0IExDaGFyKiBw
dHIgPSByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oQ0ZTdHJpbmdHZXRDU3RyaW5nUHRy
KHN0cmluZywga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjEpKSkKLSAgICAgICAgcmV0dXJuIGFk
ZChwdHIsIGxlbmd0aCk7Ci0KLSAgICBpZiAoY29uc3QgVW5pQ2hhciogcHRyID0gQ0ZTdHJpbmdH
ZXRDaGFyYWN0ZXJzUHRyKHN0cmluZykpCi0gICAgICAgIHJldHVybiBhZGQocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBVQ2hhcio+KHB0ciksIGxlbmd0aCk7Ci0KLSAgICBWZWN0b3I8VW5pQ2hhciwg
MTAyND4gdWNoYXJCdWZmZXIobGVuZ3RoKTsKLSAgICBDRlN0cmluZ0dldENoYXJhY3RlcnMoc3Ry
aW5nLCBDRlJhbmdlTWFrZSgwLCBsZW5ndGgpLCB1Y2hhckJ1ZmZlci5kYXRhKCkpOwotICAgIHJl
dHVybiBhZGQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBVQ2hhcio+KHVjaGFyQnVmZmVyLmRhdGEo
KSksIGxlbmd0aCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgotCi0jZW5kaWYgLy8gVVNFKENG
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9jb2NvYS9UZXh0QnJlYWtJdGVyYXRv
ckludGVybmFsSUNVQ29jb2EuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9jb2NvYS9UZXh0QnJl
YWtJdGVyYXRvckludGVybmFsSUNVQ29jb2EuY3BwCmluZGV4IDZmNjNkZjliNDA4MDExYzMyYTgx
MmFiNmQwNjNjN2QwOWU0NGM0MWIuLmU5OWFmMzdlNjk5NzEwZTRkM2E4MWUwYWQ4MTQyYjE1MDY4
NTMwZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvY29jb2EvVGV4dEJyZWFrSXRl
cmF0b3JJbnRlcm5hbElDVUNvY29hLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2NvY29h
L1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VDb2NvYS5jcHAKQEAgLTI2LDcgKzI2LDcgQEAK
IAogbmFtZXNwYWNlIFdURiB7CiAKLXN0YXRpYyBWYXJpYW50PFRleHRCcmVha0l0ZXJhdG9ySUNV
LCBUZXh0QnJlYWtJdGVyYXRvclBsYXRmb3JtPiBtYXBNb2RlVG9CYWNraW5nSXRlcmF0b3IoU3Ry
aW5nVmlldyBzdHJpbmcsIFRleHRCcmVha0l0ZXJhdG9yOjpNb2RlIG1vZGUsIGNvbnN0IEF0b21p
Y1N0cmluZyYgbG9jYWxlKQorc3RhdGljIFZhcmlhbnQ8VGV4dEJyZWFrSXRlcmF0b3JJQ1UsIFRl
eHRCcmVha0l0ZXJhdG9yUGxhdGZvcm0+IG1hcE1vZGVUb0JhY2tpbmdJdGVyYXRvcihTdHJpbmdW
aWV3IHN0cmluZywgVGV4dEJyZWFrSXRlcmF0b3I6Ok1vZGUgbW9kZSwgY29uc3QgQXRvbVN0cmlu
ZyYgbG9jYWxlKQogewogICAgIHN3aXRjaCAobW9kZSkgewogICAgIGNhc2UgVGV4dEJyZWFrSXRl
cmF0b3I6Ok1vZGU6OkxpbmU6CkBAIC0zOCw3ICszOCw3IEBAIHN0YXRpYyBWYXJpYW50PFRleHRC
cmVha0l0ZXJhdG9ySUNVLCBUZXh0QnJlYWtJdGVyYXRvclBsYXRmb3JtPiBtYXBNb2RlVG9CYWNr
aW5nCiAgICAgfQogfQogCi1UZXh0QnJlYWtJdGVyYXRvcjo6VGV4dEJyZWFrSXRlcmF0b3IoU3Ry
aW5nVmlldyBzdHJpbmcsIE1vZGUgbW9kZSwgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUpCitU
ZXh0QnJlYWtJdGVyYXRvcjo6VGV4dEJyZWFrSXRlcmF0b3IoU3RyaW5nVmlldyBzdHJpbmcsIE1v
ZGUgbW9kZSwgY29uc3QgQXRvbVN0cmluZyYgbG9jYWxlKQogICAgIDogbV9iYWNraW5nKG1hcE1v
ZGVUb0JhY2tpbmdJdGVyYXRvcihzdHJpbmcsIG1vZGUsIGxvY2FsZSkpCiAgICAgLCBtX21vZGUo
bW9kZSkKICAgICAsIG1fbG9jYWxlKGxvY2FsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYWlycGxheS9XZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYWlycGxheS9XZWJLaXRQbGF5YmFja1RhcmdldEF2
YWlsYWJpbGl0eUV2ZW50LmNwcAppbmRleCAyYTNlMDkyMjNlMGM4ZDYzMjhkMWVlZWRiNjUyNTEy
Y2E1YjU2NjA4Li5lMjljYWQwZDFiMmMxMGRiMmExMmE0ZGE1OGEwNDI2MWY2N2Y4NzhiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FpcnBsYXkvV2ViS2l0UGxheWJhY2tUYXJn
ZXRBdmFpbGFiaWxpdHlFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9haXJw
bGF5L1dlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQuY3BwCkBAIC0zMiwyMSAr
MzIsMjEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgY29uc3QgQXRvbWljU3Ry
aW5nJiBzdHJpbmdGb3JQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eShib29sIGF2YWlsYWJsZSkK
K3N0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBzdHJpbmdGb3JQbGF5YmFja1RhcmdldEF2YWlsYWJp
bGl0eShib29sIGF2YWlsYWJsZSkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWlj
U3RyaW5nPiBhdmFpbGFibGVTdHJpbmcoImF2YWlsYWJsZSIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+
IG5vdEF2YWlsYWJsZVN0cmluZygibm90LWF2YWlsYWJsZSIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9tU3RyaW5nPiBh
dmFpbGFibGVTdHJpbmcoImF2YWlsYWJsZSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbVN0cmluZz4gbm90QXZhaWxhYmxl
U3RyaW5nKCJub3QtYXZhaWxhYmxlIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OwogCiAgICAgcmV0dXJuIGF2YWlsYWJsZSA/IGF2YWlsYWJsZVN0cmluZyA6IG5vdEF2YWlsYWJs
ZVN0cmluZzsKIH0KIAotV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudDo6V2Vi
S2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2
ZW50VHlwZSwgYm9vbCBhdmFpbGFibGUpCitXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0
eUV2ZW50OjpXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50KGNvbnN0IEF0b21T
dHJpbmcmIGV2ZW50VHlwZSwgYm9vbCBhdmFpbGFibGUpCiAgICAgOiBFdmVudChldmVudFR5cGUs
IENhbkJ1YmJsZTo6Tm8sIElzQ2FuY2VsYWJsZTo6Tm8pCiAgICAgLCBtX2F2YWlsYWJpbGl0eShz
dHJpbmdGb3JQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eShhdmFpbGFibGUpKQogewogfQogCi1X
ZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50OjpXZWJLaXRQbGF5YmFja1Rhcmdl
dEF2YWlsYWJpbGl0eUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBJ
bml0JiBpbml0aWFsaXplciwgSXNUcnVzdGVkIGlzVHJ1c3RlZCkKK1dlYktpdFBsYXliYWNrVGFy
Z2V0QXZhaWxhYmlsaXR5RXZlbnQ6OldlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZl
bnQoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBJbml0JiBpbml0aWFsaXplciwg
SXNUcnVzdGVkIGlzVHJ1c3RlZCkKICAgICA6IEV2ZW50KGV2ZW50VHlwZSwgaW5pdGlhbGl6ZXIs
IGlzVHJ1c3RlZCkKICAgICAsIG1fYXZhaWxhYmlsaXR5KGluaXRpYWxpemVyLmF2YWlsYWJpbGl0
eSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYWlycGxheS9XZWJLaXRQ
bGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FpcnBsYXkvV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5oCmluZGV4IDM2
Y2I2ZDFhM2MwNmNlMTNlNTA4ZjU2N2EwNzIwYWZhODRmMTdkNDUuLjBhZDM1NWVhMmIwNjJmY2I2
NWQyYTkwYjYxNjg1MzQ5Y2NjMTBjZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYWlycGxheS9XZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9haXJwbGF5L1dlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxh
YmlsaXR5RXZlbnQuaApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50IDogcHVibGljIEV2ZW50IHsK
IHB1YmxpYzoKIAotICAgIHN0YXRpYyBSZWY8V2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxp
dHlFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBib29sIGF2YWls
YWJsZSkKKyAgICBzdGF0aWMgUmVmPFdlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZl
bnQ+IGNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgYXZhaWxhYmxlKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViS2l0UGxheWJhY2tUYXJnZXRB
dmFpbGFiaWxpdHlFdmVudChldmVudFR5cGUsIGF2YWlsYWJsZSkpOwogICAgIH0KQEAgLTQzLDcg
KzQzLDcgQEAgcHVibGljOgogICAgICAgICBTdHJpbmcgYXZhaWxhYmlsaXR5OwogICAgIH07CiAK
LSAgICBzdGF0aWMgUmVmPFdlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQ+IGNy
ZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgSW5pdCYgaW5pdGlhbGl6
ZXIsIElzVHJ1c3RlZCBpc1RydXN0ZWQgPSBJc1RydXN0ZWQ6Ok5vKQorICAgIHN0YXRpYyBSZWY8
V2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21T
dHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgSW5pdCYgaW5pdGlhbGl6ZXIsIElzVHJ1c3RlZCBpc1Ry
dXN0ZWQgPSBJc1RydXN0ZWQ6Ok5vKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudChldmVudFR5cGUsIGluaXRp
YWxpemVyLCBpc1RydXN0ZWQpKTsKICAgICB9CkBAIC01Myw4ICs1Myw4IEBAIHB1YmxpYzoKICAg
ICBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IFdlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnRJbnRlcmZhY2VUeXBlOyB9CiAK
IHByaXZhdGU6Ci0gICAgZXhwbGljaXQgV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlF
dmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgYm9vbCBhdmFpbGFibGUpOwotICAg
IFdlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUsIGNvbnN0IEluaXQmLCBJc1RydXN0ZWQpOworICAgIGV4cGxpY2l0IFdlYktp
dFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRU
eXBlLCBib29sIGF2YWlsYWJsZSk7CisgICAgV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxp
dHlFdmVudChjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IEluaXQmLCBJc1RydXN0
ZWQpOwogCiAgICAgU3RyaW5nIG1fYXZhaWxhYmlsaXR5OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50QXV0aG9yaXplZEV2ZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50QXV0
aG9yaXplZEV2ZW50LmNwcAppbmRleCBiNzk3MDcwMDAwZDM1OThmMjdiZGRmYWU3N2VmZTQzM2Ex
MjlkMmJhLi5kZjQ4Mzc1ZmIxYzkzZWE4ODRlMTkwYWJiNDEyMDBjMTBmNDQ2ODg5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudEF1dGhv
cml6ZWRFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBs
ZVBheVBheW1lbnRBdXRob3JpemVkRXZlbnQuY3BwCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotQXBwbGVQYXlQYXltZW50QXV0aG9yaXplZEV2ZW50OjpBcHBsZVBh
eVBheW1lbnRBdXRob3JpemVkRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCB1bnNpZ25l
ZCB2ZXJzaW9uLCBjb25zdCBQYXltZW50JiBwYXltZW50KQorQXBwbGVQYXlQYXltZW50QXV0aG9y
aXplZEV2ZW50OjpBcHBsZVBheVBheW1lbnRBdXRob3JpemVkRXZlbnQoY29uc3QgQXRvbVN0cmlu
ZyYgdHlwZSwgdW5zaWduZWQgdmVyc2lvbiwgY29uc3QgUGF5bWVudCYgcGF5bWVudCkKICAgICA6
IEV2ZW50KHR5cGUsIENhbkJ1YmJsZTo6Tm8sIElzQ2FuY2VsYWJsZTo6Tm8pCiAgICAgLCBtX3Bh
eW1lbnQocGF5bWVudC50b0FwcGxlUGF5UGF5bWVudCh2ZXJzaW9uKSkKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50QXV0aG9yaXpl
ZEV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVu
dEF1dGhvcml6ZWRFdmVudC5oCmluZGV4IDJiYzAzMmRjYTU5MDE1MjQ1MjBjYTk0Mzk2NTcwNjcw
ODJmN2FiMDAuLjA4NWQ4MzY5MDNkM2QzZDhjODA3ZDdiNzZhNDIxMzk0NGU4NDUzMDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50QXV0
aG9yaXplZEV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBs
ZVBheVBheW1lbnRBdXRob3JpemVkRXZlbnQuaApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBQYXlt
ZW50OwogCiBjbGFzcyBBcHBsZVBheVBheW1lbnRBdXRob3JpemVkRXZlbnQgZmluYWwgOiBwdWJs
aWMgRXZlbnQgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8QXBwbGVQYXlQYXltZW50QXV0aG9y
aXplZEV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCB1bnNpZ25lZCB2ZXJz
aW9uLCBjb25zdCBQYXltZW50JiBwYXltZW50KQorICAgIHN0YXRpYyBSZWY8QXBwbGVQYXlQYXlt
ZW50QXV0aG9yaXplZEV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgdW5zaWdu
ZWQgdmVyc2lvbiwgY29uc3QgUGF5bWVudCYgcGF5bWVudCkKICAgICB7CiAgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEFwcGxlUGF5UGF5bWVudEF1dGhvcml6ZWRFdmVudCh0eXBlLCB2ZXJz
aW9uLCBwYXltZW50KSk7CiAgICAgfQpAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgY29u
c3QgQXBwbGVQYXlQYXltZW50JiBwYXltZW50KCkgY29uc3QgeyByZXR1cm4gbV9wYXltZW50OyB9
CiAKIHByaXZhdGU6Ci0gICAgQXBwbGVQYXlQYXltZW50QXV0aG9yaXplZEV2ZW50KGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSwgdW5zaWduZWQgdmVyc2lvbiwgY29uc3QgUGF5bWVudCYpOworICAg
IEFwcGxlUGF5UGF5bWVudEF1dGhvcml6ZWRFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCB1
bnNpZ25lZCB2ZXJzaW9uLCBjb25zdCBQYXltZW50Jik7CiAKICAgICAvLyBFdmVudC4KICAgICBF
dmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnRNZXRob2RT
ZWxlY3RlZEV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQ
YXlQYXltZW50TWV0aG9kU2VsZWN0ZWRFdmVudC5jcHAKaW5kZXggODEyNmU4NWNkODQwOWYxZTdm
OTVmMTBmZTc1YjI2NGRiOTYwZjdkYy4uNDUwZTkxYzVlODYxY2Y2ZTI0MWNiNDg3MjUyNWIzZDM2
NGM0MzA2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBs
ZVBheVBheW1lbnRNZXRob2RTZWxlY3RlZEV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudE1ldGhvZFNlbGVjdGVkRXZlbnQuY3BwCkBA
IC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQXBwbGVQYXlQYXltZW50
TWV0aG9kU2VsZWN0ZWRFdmVudDo6QXBwbGVQYXlQYXltZW50TWV0aG9kU2VsZWN0ZWRFdmVudChj
b25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IFBheW1lbnRNZXRob2QmIHBheW1lbnRNZXRo
b2QpCitBcHBsZVBheVBheW1lbnRNZXRob2RTZWxlY3RlZEV2ZW50OjpBcHBsZVBheVBheW1lbnRN
ZXRob2RTZWxlY3RlZEV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IFBheW1lbnRN
ZXRob2QmIHBheW1lbnRNZXRob2QpCiAgICAgOiBFdmVudCh0eXBlLCBDYW5CdWJibGU6Ok5vLCBJ
c0NhbmNlbGFibGU6Ok5vKQogICAgICwgbV9wYXltZW50TWV0aG9kKHBheW1lbnRNZXRob2QudG9B
cHBsZVBheVBheW1lbnRNZXRob2QoKSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kU2VsZWN0ZWRFdmVudC5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnRNZXRob2RTZWxlY3Rl
ZEV2ZW50LmgKaW5kZXggM2FjMWEzYzQxZmM4ZDA1ZjU1YjZjNWU4NjBhMjczMzIyNzA0OWNlMC4u
ODFhMmE0ZWRhZjU1MzA5YTUyYmU1MWFmMjkwNDIwMTViZmQ5NTczNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnRNZXRob2RTZWxlY3Rl
ZEV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBh
eW1lbnRNZXRob2RTZWxlY3RlZEV2ZW50LmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgUGF5bWVu
dE1ldGhvZDsKIAogY2xhc3MgQXBwbGVQYXlQYXltZW50TWV0aG9kU2VsZWN0ZWRFdmVudCA6IHB1
YmxpYyBFdmVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxBcHBsZVBheVBheW1lbnRNZXRo
b2RTZWxlY3RlZEV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBQ
YXltZW50TWV0aG9kJiBwYXltZW50TWV0aG9kKQorICAgIHN0YXRpYyBSZWY8QXBwbGVQYXlQYXlt
ZW50TWV0aG9kU2VsZWN0ZWRFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNv
bnN0IFBheW1lbnRNZXRob2QmIHBheW1lbnRNZXRob2QpCiAgICAgewogICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBBcHBsZVBheVBheW1lbnRNZXRob2RTZWxlY3RlZEV2ZW50KHR5cGUsIHBh
eW1lbnRNZXRob2QpKTsKICAgICB9CkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICBjb25z
dCBBcHBsZVBheVBheW1lbnRNZXRob2QmIHBheW1lbnRNZXRob2QoKSB7IHJldHVybiBtX3BheW1l
bnRNZXRob2Q7IH0KIAogcHJvdGVjdGVkOgotICAgIEFwcGxlUGF5UGF5bWVudE1ldGhvZFNlbGVj
dGVkRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBQYXltZW50TWV0aG9kJik7
CisgICAgQXBwbGVQYXlQYXltZW50TWV0aG9kU2VsZWN0ZWRFdmVudChjb25zdCBBdG9tU3RyaW5n
JiB0eXBlLCBjb25zdCBQYXltZW50TWV0aG9kJik7CiAKICAgICAvLyBFdmVudC4KICAgICBFdmVu
dEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5nQ29udGFjdFNl
bGVjdGVkRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBh
eVNoaXBwaW5nQ29udGFjdFNlbGVjdGVkRXZlbnQuY3BwCmluZGV4IGVjYTAyZDdlNDNmNzE3OWNh
NzJmMTAxMzg0MjI0OTk4ZjVlM2I1YzQuLmZlZWEwZDFlZTY3NTg1NTc1OGQ3NGJlNjFjZDQ4ZjQ2
OTA2NGE0YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBw
bGVQYXlTaGlwcGluZ0NvbnRhY3RTZWxlY3RlZEV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRFdmVudC5j
cHAKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1BcHBsZVBheVNo
aXBwaW5nQ29udGFjdFNlbGVjdGVkRXZlbnQ6OkFwcGxlUGF5U2hpcHBpbmdDb250YWN0U2VsZWN0
ZWRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIHVuc2lnbmVkIHZlcnNpb24sIGNvbnN0
IFBheW1lbnRDb250YWN0JiBzaGlwcGluZ0NvbnRhY3QpCitBcHBsZVBheVNoaXBwaW5nQ29udGFj
dFNlbGVjdGVkRXZlbnQ6OkFwcGxlUGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRFdmVudChjb25z
dCBBdG9tU3RyaW5nJiB0eXBlLCB1bnNpZ25lZCB2ZXJzaW9uLCBjb25zdCBQYXltZW50Q29udGFj
dCYgc2hpcHBpbmdDb250YWN0KQogICAgIDogRXZlbnQodHlwZSwgQ2FuQnViYmxlOjpObywgSXND
YW5jZWxhYmxlOjpObykKICAgICAsIG1fc2hpcHBpbmdDb250YWN0KHNoaXBwaW5nQ29udGFjdC50
b0FwcGxlUGF5UGF5bWVudENvbnRhY3QodmVyc2lvbikpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRF
dmVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5n
Q29udGFjdFNlbGVjdGVkRXZlbnQuaAppbmRleCAyNTNlZmQ5OTM0ZDE1NGFmOWJkYzM0OWJkMTFj
NWExMWZiMzNlMjUwLi4xOWExNTNkYjNhN2YzZDU4NzQ5YjM1NDQ0NGZjMTQ2N2RkMjcwYTdiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2hpcHBp
bmdDb250YWN0U2VsZWN0ZWRFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvQXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RTZWxlY3RlZEV2ZW50LmgKQEAgLTM2LDcgKzM2
LDcgQEAgY2xhc3MgUGF5bWVudENvbnRhY3Q7CiAKIGNsYXNzIEFwcGxlUGF5U2hpcHBpbmdDb250
YWN0U2VsZWN0ZWRFdmVudCBmaW5hbCA6IHB1YmxpYyBFdmVudCB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxBcHBsZVBheVNoaXBwaW5nQ29udGFjdFNlbGVjdGVkRXZlbnQ+IGNyZWF0ZShjb25z
dCBBdG9taWNTdHJpbmcmIHR5cGUsIHVuc2lnbmVkIHZlcnNpb24sIGNvbnN0IFBheW1lbnRDb250
YWN0JiBzaGlwcGluZ0NvbnRhY3QpCisgICAgc3RhdGljIFJlZjxBcHBsZVBheVNoaXBwaW5nQ29u
dGFjdFNlbGVjdGVkRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCB1bnNpZ25l
ZCB2ZXJzaW9uLCBjb25zdCBQYXltZW50Q29udGFjdCYgc2hpcHBpbmdDb250YWN0KQogICAgIHsK
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RTZWxl
Y3RlZEV2ZW50KHR5cGUsIHZlcnNpb24sIHNoaXBwaW5nQ29udGFjdCkpOwogICAgIH0KQEAgLTQ2
LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIGNvbnN0IEFwcGxlUGF5UGF5bWVudENvbnRhY3QmIHNo
aXBwaW5nQ29udGFjdCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hpcHBpbmdDb250YWN0OyB9CiAKIHBy
aXZhdGU6Ci0gICAgQXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RTZWxlY3RlZEV2ZW50KGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSwgdW5zaWduZWQgdmVyc2lvbiwgY29uc3QgUGF5bWVudENvbnRhY3Qm
KTsKKyAgICBBcHBsZVBheVNoaXBwaW5nQ29udGFjdFNlbGVjdGVkRXZlbnQoY29uc3QgQXRvbVN0
cmluZyYgdHlwZSwgdW5zaWduZWQgdmVyc2lvbiwgY29uc3QgUGF5bWVudENvbnRhY3QmKTsKIAog
ICAgIC8vIEV2ZW50LgogICAgIEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNlKCkgY29uc3Qg
b3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0Fw
cGxlUGF5U2hpcHBpbmdNZXRob2RTZWxlY3RlZEV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTaGlwcGluZ01ldGhvZFNlbGVjdGVkRXZlbnQuY3BwCmlu
ZGV4IGQ2MzA0YjkyZGEwZGQzZjQ5ZmNmN2NiNmVjNDdiYjYwMmNlODViYjQuLmI4ZTdkNWNiOTQz
OTA4MzdjNDZjOWU2YzFmNGYwNjI2MWU2YWQxODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTaGlwcGluZ01ldGhvZFNlbGVjdGVkRXZlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTaGlwcGluZ01l
dGhvZFNlbGVjdGVkRXZlbnQuY3BwCkBAIC00Myw3ICs0Myw3IEBAIHN0YXRpYyBpbmxpbmUgQXBw
bGVQYXlTaGlwcGluZ01ldGhvZCBjb252ZXJ0KGNvbnN0IEFwcGxlUGF5U2Vzc2lvblBheW1lbnRS
ZXF1ZXN0CiAgICAgcmV0dXJuIGNvbnZlcnRlZE1ldGhvZDsgCiB9CiAKLUFwcGxlUGF5U2hpcHBp
bmdNZXRob2RTZWxlY3RlZEV2ZW50OjpBcHBsZVBheVNoaXBwaW5nTWV0aG9kU2VsZWN0ZWRFdmVu
dChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IEFwcGxlUGF5U2Vzc2lvblBheW1lbnRS
ZXF1ZXN0OjpTaGlwcGluZ01ldGhvZCYgc2hpcHBpbmdNZXRob2QpCitBcHBsZVBheVNoaXBwaW5n
TWV0aG9kU2VsZWN0ZWRFdmVudDo6QXBwbGVQYXlTaGlwcGluZ01ldGhvZFNlbGVjdGVkRXZlbnQo
Y29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3QgQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVl
c3Q6OlNoaXBwaW5nTWV0aG9kJiBzaGlwcGluZ01ldGhvZCkKICAgICA6IEV2ZW50KHR5cGUsIENh
bkJ1YmJsZTo6Tm8sIElzQ2FuY2VsYWJsZTo6Tm8pCiAgICAgLCBtX3NoaXBwaW5nTWV0aG9kKGNv
bnZlcnQoc2hpcHBpbmdNZXRob2QpKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5nTWV0aG9kU2VsZWN0ZWRFdmVudC5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5nTWV0aG9kU2VsZWN0
ZWRFdmVudC5oCmluZGV4IGVjMWM2NGVlZjIwNTZjYzIxMTUzYmQ2ZjI1N2JhNTlmMzE4YjZiMDAu
LjE3YmYxZGZhODNlNmNhNTEyYTZiYzcxOGE2MmZjNDU2M2VhOTkxMjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTaGlwcGluZ01ldGhvZFNlbGVj
dGVkRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5
U2hpcHBpbmdNZXRob2RTZWxlY3RlZEV2ZW50LmgKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBBcHBsZVBheVNoaXBwaW5nTWV0aG9kU2VsZWN0ZWRFdmVudCBm
aW5hbCA6IHB1YmxpYyBFdmVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxBcHBsZVBheVNo
aXBwaW5nTWV0aG9kU2VsZWN0ZWRFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlw
ZSwgY29uc3QgQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5nTWV0aG9kJiBz
aGlwcGluZ01ldGhvZCkKKyAgICBzdGF0aWMgUmVmPEFwcGxlUGF5U2hpcHBpbmdNZXRob2RTZWxl
Y3RlZEV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3QgQXBwbGVQYXlT
ZXNzaW9uUGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5nTWV0aG9kJiBzaGlwcGluZ01ldGhvZCkKICAg
ICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFwcGxlUGF5U2hpcHBpbmdNZXRob2RT
ZWxlY3RlZEV2ZW50KHR5cGUsIHNoaXBwaW5nTWV0aG9kKSk7CiAgICAgfQpAQCAtNDUsNyArNDUs
NyBAQCBwdWJsaWM6CiAgICAgY29uc3QgQXBwbGVQYXlTaGlwcGluZ01ldGhvZCYgc2hpcHBpbmdN
ZXRob2QoKSBjb25zdCB7IHJldHVybiBtX3NoaXBwaW5nTWV0aG9kOyB9CiAKIHByaXZhdGU6Ci0g
ICAgQXBwbGVQYXlTaGlwcGluZ01ldGhvZFNlbGVjdGVkRXZlbnQoY29uc3QgQXRvbWljU3RyaW5n
JiB0eXBlLCBjb25zdCBBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6U2hpcHBpbmdNZXRo
b2QmKTsKKyAgICBBcHBsZVBheVNoaXBwaW5nTWV0aG9kU2VsZWN0ZWRFdmVudChjb25zdCBBdG9t
U3RyaW5nJiB0eXBlLCBjb25zdCBBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6U2hpcHBp
bmdNZXRob2QmKTsKIAogICAgIC8vIEV2ZW50LgogICAgIEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50
ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FwcGxlcGF5L0FwcGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2ZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlWYWxpZGF0ZU1lcmNoYW50RXZlbnQuY3Bw
CmluZGV4IGIxNjRiMTRiMjdmZWU4NmZjMjBkZDVmMWQ4YjkwYTJkYzFhZTkzZDUuLmY2YmQ3MjJi
MDVjYzZlNDJlOGUxMTcyMTY5OGJmYzk5MmJkMTA3ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlWYWxpZGF0ZU1lcmNoYW50RXZlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlWYWxpZGF0ZU1lcmNo
YW50RXZlbnQuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
QXBwbGVQYXlWYWxpZGF0ZU1lcmNoYW50RXZlbnQ6OkFwcGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2
ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgVVJMJiYgdmFsaWRhdGlvblVSTCkKK0FwcGxl
UGF5VmFsaWRhdGVNZXJjaGFudEV2ZW50OjpBcHBsZVBheVZhbGlkYXRlTWVyY2hhbnRFdmVudChj
b25zdCBBdG9tU3RyaW5nJiB0eXBlLCBVUkwmJiB2YWxpZGF0aW9uVVJMKQogICAgIDogRXZlbnQo
dHlwZSwgQ2FuQnViYmxlOjpObywgSXNDYW5jZWxhYmxlOjpObykKICAgICAsIG1fdmFsaWRhdGlv
blVSTChXVEZNb3ZlKHZhbGlkYXRpb25VUkwpKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVZhbGlkYXRlTWVyY2hhbnRFdmVudC5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVZhbGlkYXRlTWVyY2hhbnRFdmVu
dC5oCmluZGV4IDNhYTIyZjViODJkNmMyYzE4MGVjZTgxNDU4NWQ4NTEwODk0YjFiNGYuLjExZDM1
N2U1OTE1NzE3ZWRkZWM5NWNjOTY5Nzg1MDg1N2RlMDI1YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlWYWxpZGF0ZU1lcmNoYW50RXZlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5VmFsaWRhdGVNZXJj
aGFudEV2ZW50LmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBBcHBsZVBheVZhbGlkYXRlTWVyY2hhbnRFdmVudCA6IHB1YmxpYyBFdmVudCB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZjxBcHBsZVBheVZhbGlkYXRlTWVyY2hhbnRFdmVudD4gY3JlYXRlKGNv
bnN0IEF0b21pY1N0cmluZyYgdHlwZSwgVVJMJiYgdmFsaWRhdGlvblVSTCkKKyAgICBzdGF0aWMg
UmVmPEFwcGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbVN0cmlu
ZyYgdHlwZSwgVVJMJiYgdmFsaWRhdGlvblVSTCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEFwcGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2ZW50KHR5cGUsIFdURk1vdmUodmFs
aWRhdGlvblVSTCkpKTsKICAgICB9CkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICBjb25z
dCBTdHJpbmcmIHZhbGlkYXRpb25VUkwoKSBjb25zdCB7IHJldHVybiBtX3ZhbGlkYXRpb25VUkwu
c3RyaW5nKCk7IH0KIAogcHJvdGVjdGVkOgotICAgIEFwcGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2
ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgVVJMJiYgdmFsaWRhdGlvblVSTCk7CisgICAg
QXBwbGVQYXlWYWxpZGF0ZU1lcmNoYW50RXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgVVJM
JiYgdmFsaWRhdGlvblVSTCk7CiAKICAgICAvLyBFdmVudC4KICAgICBFdmVudEludGVyZmFjZSBl
dmVudEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwCmluZGV4IGFjMDY2YmQ5NTk3MDkxNzRkYTI3MDBlOTgw
ZGRmZGY3YWY4ZTlmYjkuLjYwMzhhZGQ4MzhhYWIyNjQwMzY5MzIyMDExNjRlMzY2NzE1MGEyNWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAKQEAg
LTYwOSwxNyArNjA5LDE3IEBAIGJvb2wgQ0RNOjpzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3QKICAg
ICByZXR1cm4gbV9wcml2YXRlICYmIG1fcHJpdmF0ZS0+c3VwcG9ydHNTZXNzaW9ucygpOwogfQog
Ci1ib29sIENETTo6c3VwcG9ydHNJbml0RGF0YVR5cGUoY29uc3QgQXRvbWljU3RyaW5nJiBpbml0
RGF0YVR5cGUpIGNvbnN0Citib29sIENETTo6c3VwcG9ydHNJbml0RGF0YVR5cGUoY29uc3QgQXRv
bVN0cmluZyYgaW5pdERhdGFUeXBlKSBjb25zdAogewogICAgIHJldHVybiBtX3ByaXZhdGUgJiYg
bV9wcml2YXRlLT5zdXBwb3J0c0luaXREYXRhVHlwZShpbml0RGF0YVR5cGUpOwogfQogCi1SZWZQ
dHI8U2hhcmVkQnVmZmVyPiBDRE06OnNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbWljU3RyaW5n
JiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCitSZWZQdHI8U2hh
cmVkQnVmZmVyPiBDRE06OnNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERh
dGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQogewogICAgIHJldHVybiBJbml0
RGF0YVJlZ2lzdHJ5OjpzaGFyZWQoKS5zYW5pdGl6ZUluaXREYXRhKGluaXREYXRhVHlwZSwgaW5p
dERhdGEpOwogfQogCi1ib29sIENETTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9taWNTdHJp
bmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKK2Jvb2wgQ0RN
OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3Qg
U2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKICAgICByZXR1cm4gbV9wcml2YXRlICYmIG1fcHJp
dmF0ZS0+c3VwcG9ydHNJbml0RGF0YShpbml0RGF0YVR5cGUsIGluaXREYXRhKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5oCmluZGV4IDJlN2ZhMTg3YjRl
NjdhZDA2ZTUxNmVhM2Y1NGFkNDQ1NTRjNTU0OGIuLmFlOTgzMjVmNmFkMTFmZjc5YWM2ZDE3NGM2
ZWRhYThiZDQ1YzlkMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvQ0RNLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9DRE0uaApAQCAtNjYsMTAgKzY2LDEwIEBAIHB1YmxpYzoKICAgICBSZWZQdHI8Q0RNSW5zdGFu
Y2U+IGNyZWF0ZUluc3RhbmNlKCk7CiAgICAgYm9vbCBzdXBwb3J0c1NlcnZlckNlcnRpZmljYXRl
cygpIGNvbnN0OwogICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0OwotICAgIGJvb2wg
c3VwcG9ydHNJbml0RGF0YVR5cGUoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3Q7CisgICAgYm9v
bCBzdXBwb3J0c0luaXREYXRhVHlwZShjb25zdCBBdG9tU3RyaW5nJikgY29uc3Q7CiAKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21pY1N0cmluZyYg
aW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImKTsKLSAgICBib29sIHN1cHBvcnRzSW5p
dERhdGEoY29uc3QgQXRvbWljU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZl
ciYpOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplSW5pdERhdGEoY29uc3QgQXRv
bVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBib29sIHN1
cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFy
ZWRCdWZmZXImKTsKIAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2Uo
Y29uc3QgU2hhcmVkQnVmZmVyJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCmluZGV4IDNiMmY4MWQ2
ZDM3OTZkZWE2M2ZlMWZjYWI3YzMwMjY5N2I5YTE4NzAuLjRiZjcxNDk0ZDliNzlkZjFmMGUyMDQw
NTY5M2U1NjFjMGM3MGNjZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcApAQCAtMjA2LDcgKzIwNiw3
IEBAIEluaXREYXRhUmVnaXN0cnk6OkluaXREYXRhUmVnaXN0cnkoKQogCiBJbml0RGF0YVJlZ2lz
dHJ5Ojp+SW5pdERhdGFSZWdpc3RyeSgpID0gZGVmYXVsdDsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gSW5pdERhdGFSZWdpc3RyeTo6c2FuaXRpemVJbml0RGF0YShjb25zdCBBdG9taWNTdHJpbmcm
IGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitSZWZQdHI8U2hhcmVk
QnVmZmVyPiBJbml0RGF0YVJlZ2lzdHJ5OjpzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJp
bmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgYXV0
byBpdGVyID0gbV90eXBlcy5maW5kKGluaXREYXRhVHlwZSk7CiAgICAgaWYgKGl0ZXIgPT0gbV90
eXBlcy5lbmQoKSB8fCAhaXRlci0+dmFsdWUuc2FuaXRpemVJbml0RGF0YSkKQEAgLTIxNCw3ICsy
MTQsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBJbml0RGF0YVJlZ2lzdHJ5OjpzYW5pdGl6ZUlu
aXREYXRhKGNvbnN0IEF0b21pY1N0cmluZyYgaW5pdAogICAgIHJldHVybiBpdGVyLT52YWx1ZS5z
YW5pdGl6ZUluaXREYXRhKGJ1ZmZlcik7CiB9CiAKLU9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVk
QnVmZmVyPj4+IEluaXREYXRhUmVnaXN0cnk6OmV4dHJhY3RLZXlJRHMoY29uc3QgQXRvbWljU3Ry
aW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorT3B0aW9uYWw8
VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdEtleUlE
cyhjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQogewogICAgIGF1dG8gaXRlciA9IG1fdHlwZXMuZmluZChpbml0RGF0YVR5cGUpOwogICAg
IGlmIChpdGVyID09IG1fdHlwZXMuZW5kKCkgfHwgIWl0ZXItPnZhbHVlLnNhbml0aXplSW5pdERh
dGEpCkBAIC0yMjIsNyArMjIyLDcgQEAgT3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+
Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdEtleUlEcyhjb25zdCBBdG9taWMKICAgICByZXR1
cm4gaXRlci0+dmFsdWUuZXh0cmFjdEtleUlEcyhidWZmZXIpOwogfQogCi12b2lkIEluaXREYXRh
UmVnaXN0cnk6OnJlZ2lzdGVySW5pdERhdGFUeXBlKGNvbnN0IEF0b21pY1N0cmluZyYgaW5pdERh
dGFUeXBlLCBJbml0RGF0YVR5cGVDYWxsYmFja3MmJiBjYWxsYmFja3MpCit2b2lkIEluaXREYXRh
UmVnaXN0cnk6OnJlZ2lzdGVySW5pdERhdGFUeXBlKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRh
VHlwZSwgSW5pdERhdGFUeXBlQ2FsbGJhY2tzJiYgY2FsbGJhY2tzKQogewogICAgIEFTU0VSVCgh
bV90eXBlcy5jb250YWlucyhpbml0RGF0YVR5cGUpKTsKICAgICBtX3R5cGVzLnNldChpbml0RGF0
YVR5cGUsIFdURk1vdmUoY2FsbGJhY2tzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5oCmluZGV4IDA1NGQzNzcw
ZTQ3NTM4ZjA2MTY2NDc5NTVlNmVhOTc3ZDZhMDc0NTQuLjFmNzkzMGI5OWQyMGMzZmQ1ZWQ0NzY3
M2JmNmVkNDViMDg2Yzg0MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5oCkBAIC0zMyw4ICszMyw4IEBACiAj
aW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+Ci0jaW5jbHVk
ZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nSGFzaC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21T
dHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nSGFzaC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTQ1LDggKzQ1LDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBJbml0RGF0YVJlZ2lzdHJ5JiBzaGFyZWQoKTsKICAgICBmcmllbmQgY2xhc3Mg
TmV2ZXJEZXN0cm95ZWQ8SW5pdERhdGFSZWdpc3RyeT47CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21pY1N0cmluZyYgaW5pdERhdGFUeXBlLCBj
b25zdCBTaGFyZWRCdWZmZXImKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxWZWN0b3I8
UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzKGNvbnN0IEF0b21pY1N0cmluZyYgaW5p
dERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3Qg
U2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8VmVjdG9yPFJlZjxT
aGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEcyhjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5
cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgc3RydWN0IEluaXREYXRhVHlwZUNhbGxi
YWNrcyB7CiAgICAgICAgIHVzaW5nIFNhbml0aXplSW5pdERhdGFDYWxsYmFjayA9IEZ1bmN0aW9u
PFJlZlB0cjxTaGFyZWRCdWZmZXI+KGNvbnN0IFNoYXJlZEJ1ZmZlciYpPjsKQEAgLTU1LDEzICs1
NSwxMyBAQCBwdWJsaWM6CiAgICAgICAgIFNhbml0aXplSW5pdERhdGFDYWxsYmFjayBzYW5pdGl6
ZUluaXREYXRhOwogICAgICAgICBFeHRyYWN0S2V5SURzQ2FsbGJhY2sgZXh0cmFjdEtleUlEczsK
ICAgICB9OwotICAgIHZvaWQgcmVnaXN0ZXJJbml0RGF0YVR5cGUoY29uc3QgQXRvbWljU3RyaW5n
JiBpbml0RGF0YVR5cGUsIEluaXREYXRhVHlwZUNhbGxiYWNrcyYmKTsKKyAgICB2b2lkIHJlZ2lz
dGVySW5pdERhdGFUeXBlKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgSW5pdERhdGFU
eXBlQ2FsbGJhY2tzJiYpOwogCiBwcml2YXRlOgogICAgIEluaXREYXRhUmVnaXN0cnkoKTsKICAg
ICB+SW5pdERhdGFSZWdpc3RyeSgpOwogCi0gICAgSGFzaE1hcDxBdG9taWNTdHJpbmcsIEluaXRE
YXRhVHlwZUNhbGxiYWNrcz4gbV90eXBlczsKKyAgICBIYXNoTWFwPEF0b21TdHJpbmcsIEluaXRE
YXRhVHlwZUNhbGxiYWNrcz4gbV90eXBlczsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlNZXNzYWdlRXZlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU1lc3NhZ2VFdmVu
dC5jcHAKaW5kZXggMmIzOWVjNGJmZWI0Mzg4MWFhOGFhNTIyOTA5YmJmNWUwOWY5NmViZC4uZmYz
MjUyYTBmZDg0MGNhMmQxNzEwZDkwZjJkNmY5ZDk4NzdlZjllMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU1lc3Nh
Z2VFdmVudC5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1N
ZWRpYUtleU1lc3NhZ2VFdmVudDo6TWVkaWFLZXlNZXNzYWdlRXZlbnQoY29uc3QgQXRvbWljU3Ry
aW5nJiB0eXBlLCBjb25zdCBNZWRpYUtleU1lc3NhZ2VFdmVudDo6SW5pdCYgaW5pdGlhbGl6ZXIs
IElzVHJ1c3RlZCBpc1RydXN0ZWQpCitNZWRpYUtleU1lc3NhZ2VFdmVudDo6TWVkaWFLZXlNZXNz
YWdlRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3QgTWVkaWFLZXlNZXNzYWdlRXZl
bnQ6OkluaXQmIGluaXRpYWxpemVyLCBJc1RydXN0ZWQgaXNUcnVzdGVkKQogICAgIDogRXZlbnQo
dHlwZSwgaW5pdGlhbGl6ZXIsIGlzVHJ1c3RlZCkKICAgICAsIG1fbWVzc2FnZVR5cGUoaW5pdGlh
bGl6ZXIubWVzc2FnZVR5cGUpCiAgICAgLCBtX21lc3NhZ2UoaW5pdGlhbGl6ZXIubWVzc2FnZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlNZXNzYWdlRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
TWVkaWFLZXlNZXNzYWdlRXZlbnQuaAppbmRleCA1MTkzMjIxN2E5ZjQ4YWMyYjJiMmRlNzUxMmIx
NjFjOWU3N2ZmZTlhLi45M2YzMDYwNGQ2ZDhiNjU1MjIzMDE4ZjQ0Mjg1YWM0MzIwZWVmZTU4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5
TWVzc2FnZUV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9NZWRpYUtleU1lc3NhZ2VFdmVudC5oCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgfk1lZGlhS2V5TWVzc2FnZUV2ZW50KCk7CiAKLSAgICBzdGF0aWMgUmVmPE1lZGlh
S2V5TWVzc2FnZUV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBN
ZWRpYUtleU1lc3NhZ2VFdmVudEluaXQmIGluaXRpYWxpemVyLCBJc1RydXN0ZWQgaXNUcnVzdGVk
ID0gSXNUcnVzdGVkOjpObykKKyAgICBzdGF0aWMgUmVmPE1lZGlhS2V5TWVzc2FnZUV2ZW50PiBj
cmVhdGUoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3QgTWVkaWFLZXlNZXNzYWdlRXZlbnRJ
bml0JiBpbml0aWFsaXplciwgSXNUcnVzdGVkIGlzVHJ1c3RlZCA9IElzVHJ1c3RlZDo6Tm8pCiAg
ICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYUtleU1lc3NhZ2VFdmVudCh0
eXBlLCBpbml0aWFsaXplciwgaXNUcnVzdGVkKSk7CiAgICAgfQpAQCAtNTMsNyArNTMsNyBAQCBw
dWJsaWM6CiAgICAgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IG1lc3NhZ2UoKSBjb25zdCB7IHJl
dHVybiBtX21lc3NhZ2U7IH0KIAogcHJpdmF0ZToKLSAgICBNZWRpYUtleU1lc3NhZ2VFdmVudChj
b25zdCBBdG9taWNTdHJpbmcmLCBjb25zdCBNZWRpYUtleU1lc3NhZ2VFdmVudEluaXQmLCBJc1Ry
dXN0ZWQpOworICAgIE1lZGlhS2V5TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmLCBjb25z
dCBNZWRpYUtleU1lc3NhZ2VFdmVudEluaXQmLCBJc1RydXN0ZWQpOwogCiAgICAgLy8gRXZlbnQK
ICAgICBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNl
c3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eVNlc3Npb24uY3BwCmluZGV4IDYxMmEyYmRmN2VlOGQ0NzMyMDY4ZmEyMWRlNmZkOTQ3ZDdkMTc4
MzUuLjcyMGZjNzRkOTQ5OGRjOWI0ZDc1ZTkzNmYzNGE0OTg0ZTFmNjE3MzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vz
c2lvbi5jcHAKQEAgLTExOCw3ICsxMTgsNyBAQCBSZWY8TWVkaWFLZXlTdGF0dXNNYXA+IE1lZGlh
S2V5U2Vzc2lvbjo6a2V5U3RhdHVzZXMoKSBjb25zdAogICAgIHJldHVybiBtX2tleVN0YXR1c2Vz
LmNvcHlSZWYoKTsKIH0KIAotdm9pZCBNZWRpYUtleVNlc3Npb246OmdlbmVyYXRlUmVxdWVzdChj
b25zdCBBdG9taWNTdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgQnVmZmVyU291cmNlJiBpbml0
RGF0YSwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQordm9pZCBNZWRpYUtleVNlc3Np
b246OmdlbmVyYXRlUmVxdWVzdChjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0
IEJ1ZmZlclNvdXJjZSYgaW5pdERhdGEsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkK
IHsKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhLyNkb20tbWVk
aWFrZXlzZXNzaW9uLWdlbmVyYXRlcmVxdWVzdAogICAgIC8vIFczQyBFZGl0b3IncyBEcmFmdCAw
OSBOb3ZlbWJlciAyMDE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaAppbmRleCBkZWQyZGRlMTA2Yjc0MzMyY2YzOGEw
YWYzMmNlNmU4NGQwZWYzMmFmLi5iZThjMGRkNmJkMzhjNmExMWJjZDliYzVjYTk1ZmYxYmMzZTQ0
ZGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01l
ZGlhS2V5U2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTWVkaWFLZXlTZXNzaW9uLmgKQEAgLTY3LDcgKzY3LDcgQEAgcHVibGljOgogICAgIGRvdWJs
ZSBleHBpcmF0aW9uKCkgY29uc3Q7CiAgICAgUmVmPE1lZGlhS2V5U3RhdHVzTWFwPiBrZXlTdGF0
dXNlcygpIGNvbnN0OwogCi0gICAgdm9pZCBnZW5lcmF0ZVJlcXVlc3QoY29uc3QgQXRvbWljU3Ry
aW5nJiwgY29uc3QgQnVmZmVyU291cmNlJiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CisgICAg
dm9pZCBnZW5lcmF0ZVJlcXVlc3QoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IEJ1ZmZlclNvdXJj
ZSYsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOwogICAgIHZvaWQgbG9hZChjb25zdCBTdHJpbmcm
LCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKICAgICB2b2lkIHVwZGF0ZShjb25zdCBCdWZmZXJT
b3VyY2UmLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKICAgICB2b2lkIGNsb3NlKFJlZjxEZWZl
cnJlZFByb21pc2U+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlNZXNzYWdlRXZlbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlNZXNz
YWdlRXZlbnQuY3BwCmluZGV4IDg0MTEzZjU4Mjk4MjAyMzc5ZWNjNmZkNjRiZDhlNWRhYmY1OTNh
Y2EuLjQyNGNjMjgwZmI1NmQ5NTlkYWYxNDUxYjg2MzRiOTQ3OTcyYWEyZjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlh
S2V5TWVzc2FnZUV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAKQEAgLTMyLDcgKzMy
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1XZWJLaXRNZWRpYUtleU1lc3NhZ2VFdmVu
dDo6V2ViS2l0TWVkaWFLZXlNZXNzYWdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBV
aW50OEFycmF5KiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMKQorV2ViS2l0
TWVkaWFLZXlNZXNzYWdlRXZlbnQ6OldlYktpdE1lZGlhS2V5TWVzc2FnZUV2ZW50KGNvbnN0IEF0
b21TdHJpbmcmIHR5cGUsIFVpbnQ4QXJyYXkqIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzdGlu
YXRpb25VUkwpCiAgICAgOiBFdmVudCh0eXBlLCBDYW5CdWJibGU6Ok5vLCBJc0NhbmNlbGFibGU6
Ok5vKQogICAgICwgbV9tZXNzYWdlKG1lc3NhZ2UpCiAgICAgLCBtX2Rlc3RpbmF0aW9uVVJMKGRl
c3RpbmF0aW9uVVJMKQpAQCAtNDAsNyArNDAsNyBAQCBXZWJLaXRNZWRpYUtleU1lc3NhZ2VFdmVu
dDo6V2ViS2l0TWVkaWFLZXlNZXNzYWdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLAog
fQogCiAKLVdlYktpdE1lZGlhS2V5TWVzc2FnZUV2ZW50OjpXZWJLaXRNZWRpYUtleU1lc3NhZ2VF
dmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IEluaXQmIGluaXRpYWxpemVyLCBJ
c1RydXN0ZWQgaXNUcnVzdGVkKQorV2ViS2l0TWVkaWFLZXlNZXNzYWdlRXZlbnQ6OldlYktpdE1l
ZGlhS2V5TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IEluaXQmIGlu
aXRpYWxpemVyLCBJc1RydXN0ZWQgaXNUcnVzdGVkKQogICAgIDogRXZlbnQodHlwZSwgaW5pdGlh
bGl6ZXIsIGlzVHJ1c3RlZCkKICAgICAsIG1fbWVzc2FnZShpbml0aWFsaXplci5tZXNzYWdlKQog
ICAgICwgbV9kZXN0aW5hdGlvblVSTChpbml0aWFsaXplci5kZXN0aW5hdGlvblVSTCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktp
dE1lZGlhS2V5TWVzc2FnZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleU1lc3NhZ2VFdmVudC5oCmluZGV4IDUxOTQ2ZjIx
M2VkMzRjODBmMThlYTBiY2ZkM2VhNDRkY2I4NTVkMGYuLmMyNjJlNGQ1YTExNzU5MzQ4Zjk0ZWNl
NDBkYTAzNzkzMjBlZDE5NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5TWVzc2FnZUV2ZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlN
ZXNzYWdlRXZlbnQuaApAQCAtMzcsNyArMzcsNyBAQCBjbGFzcyBXZWJLaXRNZWRpYUtleU1lc3Nh
Z2VFdmVudCA6IHB1YmxpYyBFdmVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViS2l0TWVk
aWFLZXlNZXNzYWdlRXZlbnQoKTsKIAotICAgIHN0YXRpYyBSZWY8V2ViS2l0TWVkaWFLZXlNZXNz
YWdlRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIFVpbnQ4QXJyYXkqIG1l
c3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25VUkwpCisgICAgc3RhdGljIFJlZjxXZWJL
aXRNZWRpYUtleU1lc3NhZ2VFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIFVp
bnQ4QXJyYXkqIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25VUkwpCiAgICAgewog
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJLaXRNZWRpYUtleU1lc3NhZ2VFdmVudCh0
eXBlLCBtZXNzYWdlLCBkZXN0aW5hdGlvblVSTCkpOwogICAgIH0KQEAgLTQ3LDcgKzQ3LDcgQEAg
cHVibGljOgogICAgICAgICBTdHJpbmcgZGVzdGluYXRpb25VUkw7CiAgICAgfTsKIAotICAgIHN0
YXRpYyBSZWY8V2ViS2l0TWVkaWFLZXlNZXNzYWdlRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNT
dHJpbmcmIHR5cGUsIGNvbnN0IEluaXQmIGluaXRpYWxpemVyLCBJc1RydXN0ZWQgaXNUcnVzdGVk
ID0gSXNUcnVzdGVkOjpObykKKyAgICBzdGF0aWMgUmVmPFdlYktpdE1lZGlhS2V5TWVzc2FnZUV2
ZW50PiBjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3QgSW5pdCYgaW5pdGlhbGl6
ZXIsIElzVHJ1c3RlZCBpc1RydXN0ZWQgPSBJc1RydXN0ZWQ6Ok5vKQogICAgIHsKICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViS2l0TWVkaWFLZXlNZXNzYWdlRXZlbnQodHlwZSwgaW5p
dGlhbGl6ZXIsIGlzVHJ1c3RlZCkpOwogICAgIH0KQEAgLTU4LDggKzU4LDggQEAgcHVibGljOgog
ICAgIFN0cmluZyBkZXN0aW5hdGlvblVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb25V
Ukw7IH0KIAogcHJpdmF0ZToKLSAgICBXZWJLaXRNZWRpYUtleU1lc3NhZ2VFdmVudChjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGUsIFVpbnQ4QXJyYXkqIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVz
dGluYXRpb25VUkwpOwotICAgIFdlYktpdE1lZGlhS2V5TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21p
Y1N0cmluZyYgdHlwZSwgY29uc3QgSW5pdCYsIElzVHJ1c3RlZCk7CisgICAgV2ViS2l0TWVkaWFL
ZXlNZXNzYWdlRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgVWludDhBcnJheSogbWVzc2Fn
ZSwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblVSTCk7CisgICAgV2ViS2l0TWVkaWFLZXlNZXNz
YWdlRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3QgSW5pdCYsIElzVHJ1c3RlZCk7
CiAKICAgICBSZWZQdHI8VWludDhBcnJheT4gbV9tZXNzYWdlOwogICAgIFN0cmluZyBtX2Rlc3Rp
bmF0aW9uVVJMOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlOZWVkZWRFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleU5lZWRlZEV2ZW50
LmNwcAppbmRleCA0YmFiMDYyZGYzNmRlYTZjMDNkMzViZjg2YmI3OTc1YWU2NThkZTA1Li40ODY4
YmJjNTgwZTlhY2YwY2NlMTJiNzliZjgxYWVjZWYzMmNiMzBmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleU5lZWRl
ZEV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xl
Z2FjeS9XZWJLaXRNZWRpYUtleU5lZWRlZEV2ZW50LmNwcApAQCAtMzIsMTMgKzMyLDEzIEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotV2ViS2l0TWVkaWFLZXlOZWVkZWRFdmVudDo6V2ViS2l0
TWVkaWFLZXlOZWVkZWRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIFVpbnQ4QXJyYXkq
IGluaXREYXRhKQorV2ViS2l0TWVkaWFLZXlOZWVkZWRFdmVudDo6V2ViS2l0TWVkaWFLZXlOZWVk
ZWRFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBVaW50OEFycmF5KiBpbml0RGF0YSkKICAg
ICA6IEV2ZW50KHR5cGUsIENhbkJ1YmJsZTo6Tm8sIElzQ2FuY2VsYWJsZTo6Tm8pCiAgICAgLCBt
X2luaXREYXRhKGluaXREYXRhKQogewogfQogCi1XZWJLaXRNZWRpYUtleU5lZWRlZEV2ZW50OjpX
ZWJLaXRNZWRpYUtleU5lZWRlZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3Qg
SW5pdCYgaW5pdGlhbGl6ZXIsIElzVHJ1c3RlZCBpc1RydXN0ZWQpCitXZWJLaXRNZWRpYUtleU5l
ZWRlZEV2ZW50OjpXZWJLaXRNZWRpYUtleU5lZWRlZEV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5
cGUsIGNvbnN0IEluaXQmIGluaXRpYWxpemVyLCBJc1RydXN0ZWQgaXNUcnVzdGVkKQogICAgIDog
RXZlbnQodHlwZSwgaW5pdGlhbGl6ZXIsIGlzVHJ1c3RlZCkKICAgICAsIG1faW5pdERhdGEoaW5p
dGlhbGl6ZXIuaW5pdERhdGEpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleU5lZWRlZEV2ZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleU5l
ZWRlZEV2ZW50LmgKaW5kZXggZGU0ODdkNWRmYTVjNTUwNWM4MzQ0NmUwOGQ4NjExYzlhY2M0MGMx
Zi4uYjFkZDQ1YTRjNzAzZTkxNzViN2EwOWY5ZDdjMmEzZWYxZWM5ZTRhMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFL
ZXlOZWVkZWRFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5TmVlZGVkRXZlbnQuaApAQCAtMzYsNyArMzYsNyBAQCBj
bGFzcyBXZWJLaXRNZWRpYUtleU5lZWRlZEV2ZW50IDogcHVibGljIEV2ZW50IHsKIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5XZWJLaXRNZWRpYUtleU5lZWRlZEV2ZW50KCk7CiAKLSAgICBzdGF0aWMg
UmVmPFdlYktpdE1lZGlhS2V5TmVlZGVkRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcm
IHR5cGUsIFVpbnQ4QXJyYXkqIGluaXREYXRhKQorICAgIHN0YXRpYyBSZWY8V2ViS2l0TWVkaWFL
ZXlOZWVkZWRFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIFVpbnQ4QXJyYXkq
IGluaXREYXRhKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViS2l0TWVk
aWFLZXlOZWVkZWRFdmVudCh0eXBlLCBpbml0RGF0YSkpOwogICAgIH0KQEAgLTQ1LDcgKzQ1LDcg
QEAgcHVibGljOgogICAgICAgICBSZWZQdHI8VWludDhBcnJheT4gaW5pdERhdGE7CiAgICAgfTsK
IAotICAgIHN0YXRpYyBSZWY8V2ViS2l0TWVkaWFLZXlOZWVkZWRFdmVudD4gY3JlYXRlKGNvbnN0
IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgSW5pdCYgaW5pdGlhbGl6ZXIsIElzVHJ1c3RlZCBp
c1RydXN0ZWQgPSBJc1RydXN0ZWQ6Ok5vKQorICAgIHN0YXRpYyBSZWY8V2ViS2l0TWVkaWFLZXlO
ZWVkZWRFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IEluaXQmIGlu
aXRpYWxpemVyLCBJc1RydXN0ZWQgaXNUcnVzdGVkID0gSXNUcnVzdGVkOjpObykKICAgICB7CiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYktpdE1lZGlhS2V5TmVlZGVkRXZlbnQodHlw
ZSwgaW5pdGlhbGl6ZXIsIGlzVHJ1c3RlZCkpOwogICAgIH0KQEAgLTU1LDggKzU1LDggQEAgcHVi
bGljOgogICAgIFVpbnQ4QXJyYXkqIGluaXREYXRhKCkgY29uc3QgeyByZXR1cm4gbV9pbml0RGF0
YS5nZXQoKTsgfQogCiBwcml2YXRlOgotICAgIFdlYktpdE1lZGlhS2V5TmVlZGVkRXZlbnQoY29u
c3QgQXRvbWljU3RyaW5nJiB0eXBlLCBVaW50OEFycmF5KiBpbml0RGF0YSk7Ci0gICAgV2ViS2l0
TWVkaWFLZXlOZWVkZWRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IEluaXQm
LCBJc1RydXN0ZWQpOworICAgIFdlYktpdE1lZGlhS2V5TmVlZGVkRXZlbnQoY29uc3QgQXRvbVN0
cmluZyYgdHlwZSwgVWludDhBcnJheSogaW5pdERhdGEpOworICAgIFdlYktpdE1lZGlhS2V5TmVl
ZGVkRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3QgSW5pdCYsIElzVHJ1c3RlZCk7
CiAKICAgICBSZWZQdHI8VWludDhBcnJheT4gbV9pbml0RGF0YTsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvR2FtZXBhZEV2ZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkRXZlbnQuY3BwCmluZGV4IDY4MzQxOTQzMzYx
Yjc2ZjJjMmY1NTc1ODFlOWNiNjBlNDA1NDkwMzcuLjQyNDk4ZmRlZjU0OTE4MjY4NzQ5OTE5MThm
YjQzMTUyNDAyM2IwMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBh
ZC9HYW1lcGFkRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9H
YW1lcGFkRXZlbnQuY3BwCkBAIC0yOSwxMyArMjksMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1HYW1lcGFkRXZlbnQ6OkdhbWVwYWRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
VHlwZSwgR2FtZXBhZCYgZ2FtZXBhZCkKK0dhbWVwYWRFdmVudDo6R2FtZXBhZEV2ZW50KGNvbnN0
IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgR2FtZXBhZCYgZ2FtZXBhZCkKICAgICA6IEV2ZW50KGV2
ZW50VHlwZSwgQ2FuQnViYmxlOjpObywgSXNDYW5jZWxhYmxlOjpObykKICAgICAsIG1fZ2FtZXBh
ZCgmZ2FtZXBhZCkKIHsKIH0KIAotR2FtZXBhZEV2ZW50OjpHYW1lcGFkRXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IEluaXQmIGluaXRpYWxpemVyLCBJc1RydXN0ZWQg
aXNUcnVzdGVkKQorR2FtZXBhZEV2ZW50OjpHYW1lcGFkRXZlbnQoY29uc3QgQXRvbVN0cmluZyYg
ZXZlbnRUeXBlLCBjb25zdCBJbml0JiBpbml0aWFsaXplciwgSXNUcnVzdGVkIGlzVHJ1c3RlZCkK
ICAgICA6IEV2ZW50KGV2ZW50VHlwZSwgaW5pdGlhbGl6ZXIsIGlzVHJ1c3RlZCkKICAgICAsIG1f
Z2FtZXBhZChpbml0aWFsaXplci5nYW1lcGFkKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWRFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9nYW1lcGFkL0dhbWVwYWRFdmVudC5oCmluZGV4IDZkNTA3NzhlNTg4NTVmM2YyOTY1YTZlZTQ1
NWU4NjI3MTc4NjIxNGIuLjAzZWZkNWYwMzc1ZGZmNmY0ODlhZTk2YjRhZDc4ZTJhZTEzYTQwMjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkRXZlbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvR2FtZXBhZEV2ZW50LmgKQEAg
LTM3LDcgKzM3LDcgQEAgY2xhc3MgR2FtZXBhZEV2ZW50IDogcHVibGljIEV2ZW50IHsKIHB1Ymxp
YzoKICAgICB+R2FtZXBhZEV2ZW50KCkgPSBkZWZhdWx0OwogCi0gICAgc3RhdGljIFJlZjxHYW1l
cGFkRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgR2FtZXBhZCYg
Z2FtZXBhZCkKKyAgICBzdGF0aWMgUmVmPEdhbWVwYWRFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21T
dHJpbmcmIGV2ZW50VHlwZSwgR2FtZXBhZCYgZ2FtZXBhZCkKICAgICB7CiAgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEdhbWVwYWRFdmVudChldmVudFR5cGUsIGdhbWVwYWQpKTsKICAgICB9
CkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICAgICAgUmVmUHRyPEdhbWVwYWQ+IGdhbWVw
YWQ7CiAgICAgfTsKIAotICAgIHN0YXRpYyBSZWY8R2FtZXBhZEV2ZW50PiBjcmVhdGUoY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IEluaXQmIGluaXRpYWxpemVyLCBJc1RydXN0
ZWQgaXNUcnVzdGVkID0gSXNUcnVzdGVkOjpObykKKyAgICBzdGF0aWMgUmVmPEdhbWVwYWRFdmVu
dD4gY3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgSW5pdCYgaW5pdGlh
bGl6ZXIsIElzVHJ1c3RlZCBpc1RydXN0ZWQgPSBJc1RydXN0ZWQ6Ok5vKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR2FtZXBhZEV2ZW50KGV2ZW50VHlwZSwgaW5pdGlhbGl6
ZXIsIGlzVHJ1c3RlZCkpOwogICAgIH0KQEAgLTU2LDggKzU2LDggQEAgcHVibGljOgogICAgIEV2
ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gR2Ft
ZXBhZEV2ZW50SW50ZXJmYWNlVHlwZTsgfQogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IEdhbWVw
YWRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgR2FtZXBhZCYpOwotICAgIEdh
bWVwYWRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgSW5pdCYsIElz
VHJ1c3RlZCk7CisgICAgZXhwbGljaXQgR2FtZXBhZEV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIGV2
ZW50VHlwZSwgR2FtZXBhZCYpOworICAgIEdhbWVwYWRFdmVudChjb25zdCBBdG9tU3RyaW5nJiBl
dmVudFR5cGUsIGNvbnN0IEluaXQmLCBJc1RydXN0ZWQpOwogCiAgICAgUmVmUHRyPEdhbWVwYWQ+
IG1fZ2FtZXBhZDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVw
YWQvR2FtZXBhZE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9HYW1l
cGFkTWFuYWdlci5oCmluZGV4IDhiYWQ3MmQ4MzY2NjIyN2NkOTcwY2VkMmExNjZiYTkyZGMxMjEy
MjQuLjQ1ZTgxMmFkYzU0M2ExNGU3MWJhYjI5NzMzZWM1ZmVlMjk5OWE0ZTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkTWFuYWdlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkTWFuYWdlci5oCkBAIC0zMCw3ICsz
MCw3IEBACiAjaW5jbHVkZSAiR2FtZXBhZFByb3ZpZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSA8d3Rm
L0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLSNpbmNsdWRlIDx3
dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTcsNyArNTcsNyBAQCBwcml2YXRlOgogICAg
IEdhbWVwYWRNYW5hZ2VyKCk7CiAKICAgICB2b2lkIG1ha2VHYW1lcGFkVmlzaWJsZShQbGF0Zm9y
bUdhbWVwYWQmLCBIYXNoU2V0PE5hdmlnYXRvckdhbWVwYWQqPiYsIEhhc2hTZXQ8RE9NV2luZG93
Kj4mKTsKLSAgICB2b2lkIGRpc3BhdGNoR2FtZXBhZEV2ZW50KGNvbnN0IFdURjo6QXRvbWljU3Ry
aW5nJiBldmVudE5hbWUsIFBsYXRmb3JtR2FtZXBhZCYpOworICAgIHZvaWQgZGlzcGF0Y2hHYW1l
cGFkRXZlbnQoY29uc3QgV1RGOjpBdG9tU3RyaW5nJiBldmVudE5hbWUsIFBsYXRmb3JtR2FtZXBh
ZCYpOwogCiAgICAgdm9pZCBtYXliZVN0YXJ0TW9uaXRvcmluZ0dhbWVwYWRzKCk7CiAgICAgdm9p
ZCBtYXliZVN0b3BNb25pdG9yaW5nR2FtZXBhZHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3RDb21wbGV0aW9uRXZlbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdENvbXBsZXRpb25FdmVudC5j
cHAKaW5kZXggYjk3MjAwNGVmYzVjYTIxYTM4Njc1NDZiNjJkOWViYjI5YWMzYjVkZi4uYzk2Zjlh
ZGViMjQ2MDNiMTlhYzNkZDYxNTg0NDUwOTRlMWVhNjRjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdENvbXBsZXRpb25FdmVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdENvbXBsZXRpb25F
dmVudC5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1JREJS
ZXF1ZXN0Q29tcGxldGlvbkV2ZW50OjpJREJSZXF1ZXN0Q29tcGxldGlvbkV2ZW50KGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSwgQ2FuQnViYmxlIGNhbkJ1YmJsZSwgSXNDYW5jZWxhYmxlIGNhbmNl
bGFibGUsIElEQlJlcXVlc3QmIHJlcXVlc3QpCitJREJSZXF1ZXN0Q29tcGxldGlvbkV2ZW50OjpJ
REJSZXF1ZXN0Q29tcGxldGlvbkV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIENhbkJ1YmJs
ZSBjYW5CdWJibGUsIElzQ2FuY2VsYWJsZSBjYW5jZWxhYmxlLCBJREJSZXF1ZXN0JiByZXF1ZXN0
KQogICAgIDogRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlKQogICAgICwgbV9yZXF1
ZXN0KHJlcXVlc3QpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJSZXF1ZXN0Q29tcGxldGlvbkV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJSZXF1ZXN0Q29tcGxldGlvbkV2ZW50LmgKaW5kZXggMzIxMDFlYWNhNDkw
ODgxNjc4NjQzM2ZhNmQwZWZhOGUyYjM2YzQ1Mi4uODBmYjE4ZTc2OWU2Nzk1ZWI1ZjA4OTM1NmMx
NDg2ZDBhMmJjMmJmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCUmVxdWVzdENvbXBsZXRpb25FdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3RDb21wbGV0aW9uRXZlbnQuaApAQCAtMzQsMTMgKzM0LDEz
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSURCUmVxdWVzdENvbXBsZXRpb25FdmVu
dCA6IHB1YmxpYyBFdmVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxFdmVudD4gY3JlYXRl
KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgQ2FuQnViYmxlIGNhbkJ1YmJsZSwgSXNDYW5jZWxh
YmxlIGNhbmNlbGFibGUsIElEQlJlcXVlc3QmIHJlcXVlc3QpCisgICAgc3RhdGljIFJlZjxFdmVu
dD4gY3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIENhbkJ1YmJsZSBjYW5CdWJibGUsIElz
Q2FuY2VsYWJsZSBjYW5jZWxhYmxlLCBJREJSZXF1ZXN0JiByZXF1ZXN0KQogICAgIHsKICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSURCUmVxdWVzdENvbXBsZXRpb25FdmVudCh0eXBlLCBj
YW5CdWJibGUsIGNhbmNlbGFibGUsIHJlcXVlc3QpKTsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAg
SURCUmVxdWVzdENvbXBsZXRpb25FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIENhbkJ1
YmJsZSwgSXNDYW5jZWxhYmxlLCBJREJSZXF1ZXN0Jik7CisgICAgSURCUmVxdWVzdENvbXBsZXRp
b25FdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBDYW5CdWJibGUsIElzQ2FuY2VsYWJsZSwg
SURCUmVxdWVzdCYpOwogCiAgICAgUmVmPElEQlJlcXVlc3Q+IG1fcmVxdWVzdDsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJWZXJzaW9uQ2hhbmdl
RXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVmVyc2lvbkNo
YW5nZUV2ZW50LmNwcAppbmRleCBiNmM1YTg2MzAwZTdhMDc3MzE5ZGYwZjgxOGJkNzhmYTI5ZDIw
OWZhLi4wMDU1NTZiMWQzMGYxYzRkMWQ3ZGU1ZWE3ODA5M2EwOTc5ZDBlZGU1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJWZXJzaW9uQ2hhbmdlRXZlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlZlcnNpb25DaGFu
Z2VFdmVudC5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1J
REJWZXJzaW9uQ2hhbmdlRXZlbnQ6OklEQlZlcnNpb25DaGFuZ2VFdmVudChjb25zdCBJREJSZXNv
dXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBvbGRWZXJzaW9uLCB1
aW50NjRfdCBuZXdWZXJzaW9uLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCitJREJWZXJzaW9u
Q2hhbmdlRXZlbnQ6OklEQlZlcnNpb25DaGFuZ2VFdmVudChjb25zdCBJREJSZXNvdXJjZUlkZW50
aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBvbGRWZXJzaW9uLCB1aW50NjRfdCBu
ZXdWZXJzaW9uLCBjb25zdCBBdG9tU3RyaW5nJiBuYW1lKQogICAgIDogRXZlbnQobmFtZSwgQ2Fu
QnViYmxlOjpObywgSXNDYW5jZWxhYmxlOjpObykKICAgICAsIG1fcmVxdWVzdElkZW50aWZpZXIo
cmVxdWVzdElkZW50aWZpZXIpCiAgICAgLCBtX29sZFZlcnNpb24ob2xkVmVyc2lvbikKQEAgLTQx
LDcgKzQxLDcgQEAgSURCVmVyc2lvbkNoYW5nZUV2ZW50OjpJREJWZXJzaW9uQ2hhbmdlRXZlbnQo
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXMKICAgICAgICAgbV9uZXdWZXJzaW9u
ID0gV1RGOjpudWxsb3B0OwogfQogCi1JREJWZXJzaW9uQ2hhbmdlRXZlbnQ6OklEQlZlcnNpb25D
aGFuZ2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IEluaXQmIGluaXQsIElz
VHJ1c3RlZCBpc1RydXN0ZWQpCitJREJWZXJzaW9uQ2hhbmdlRXZlbnQ6OklEQlZlcnNpb25DaGFu
Z2VFdmVudChjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBjb25zdCBJbml0JiBpbml0LCBJc1RydXN0
ZWQgaXNUcnVzdGVkKQogICAgIDogRXZlbnQobmFtZSwgaW5pdCwgaXNUcnVzdGVkKQogICAgICwg
bV9vbGRWZXJzaW9uKGluaXQub2xkVmVyc2lvbikKICAgICAsIG1fbmV3VmVyc2lvbihpbml0Lm5l
d1ZlcnNpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJWZXJzaW9uQ2hhbmdlRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQlZlcnNpb25DaGFuZ2VFdmVudC5oCmluZGV4IGU5MjE4ZWJhMTYyNjA5MjE5NDAwOGRlMDIx
ODVjMGIzODA2MzQwY2YuLjQzMzA1OWQzZjUzOGIxNzYyY2U3MzgyNTM4OTQ1OTFmYzgwMTFmMDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlZlcnNpb25D
aGFuZ2VFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlZl
cnNpb25DaGFuZ2VFdmVudC5oCkBAIC0zNSwxMiArMzUsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBJREJWZXJzaW9uQ2hhbmdlRXZlbnQgZmluYWwgOiBwdWJsaWMgRXZlbnQgewog
cHVibGljOgotICAgIHN0YXRpYyBSZWY8SURCVmVyc2lvbkNoYW5nZUV2ZW50PiBjcmVhdGUodWlu
dDY0X3Qgb2xkVmVyc2lvbiwgdWludDY0X3QgbmV3VmVyc2lvbiwgY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUpCisgICAgc3RhdGljIFJlZjxJREJWZXJzaW9uQ2hhbmdlRXZlbnQ+IGNyZWF0
ZSh1aW50NjRfdCBvbGRWZXJzaW9uLCB1aW50NjRfdCBuZXdWZXJzaW9uLCBjb25zdCBBdG9tU3Ry
aW5nJiBldmVudFR5cGUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJREJW
ZXJzaW9uQ2hhbmdlRXZlbnQoSURCUmVzb3VyY2VJZGVudGlmaWVyOjplbXB0eVZhbHVlKCksIG9s
ZFZlcnNpb24sIG5ld1ZlcnNpb24sIGV2ZW50VHlwZSkpOwogICAgIH0KIAotICAgIHN0YXRpYyBS
ZWY8SURCVmVyc2lvbkNoYW5nZUV2ZW50PiBjcmVhdGUoY29uc3QgSURCUmVzb3VyY2VJZGVudGlm
aWVyJiByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3Qgb2xkVmVyc2lvbiwgdWludDY0X3QgbmV3
VmVyc2lvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUpCisgICAgc3RhdGljIFJlZjxJ
REJWZXJzaW9uQ2hhbmdlRXZlbnQ+IGNyZWF0ZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXIm
IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBvbGRWZXJzaW9uLCB1aW50NjRfdCBuZXdWZXJz
aW9uLCBjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUpCiAgICAgewogICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBJREJWZXJzaW9uQ2hhbmdlRXZlbnQocmVxdWVzdElkZW50aWZpZXIsIG9s
ZFZlcnNpb24sIG5ld1ZlcnNpb24sIGV2ZW50VHlwZSkpOwogICAgIH0KQEAgLTUwLDcgKzUwLDcg
QEAgcHVibGljOgogICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4gbmV3VmVyc2lvbjsKICAgICB9
OwogCi0gICAgc3RhdGljIFJlZjxJREJWZXJzaW9uQ2hhbmdlRXZlbnQ+IGNyZWF0ZShjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IEluaXQmIGluaXRpYWxpemVyLCBJc1RydXN0ZWQgaXNU
cnVzdGVkID0gSXNUcnVzdGVkOjpObykKKyAgICBzdGF0aWMgUmVmPElEQlZlcnNpb25DaGFuZ2VF
dmVudD4gY3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IEluaXQmIGluaXRpYWxp
emVyLCBJc1RydXN0ZWQgaXNUcnVzdGVkID0gSXNUcnVzdGVkOjpObykKICAgICB7CiAgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IElEQlZlcnNpb25DaGFuZ2VFdmVudCh0eXBlLCBpbml0aWFs
aXplciwgaXNUcnVzdGVkKSk7CiAgICAgfQpAQCAtNjMsOCArNjMsOCBAQCBwdWJsaWM6CiAgICAg
T3B0aW9uYWw8dWludDY0X3Q+IG5ld1ZlcnNpb24oKSBjb25zdCB7IHJldHVybiBtX25ld1ZlcnNp
b247IH0KIAogcHJpdmF0ZToKLSAgICBJREJWZXJzaW9uQ2hhbmdlRXZlbnQoY29uc3QgSURCUmVz
b3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3Qgb2xkVmVyc2lvbiwg
dWludDY0X3QgbmV3VmVyc2lvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUpOwotICAg
IElEQlZlcnNpb25DaGFuZ2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmLCBjb25zdCBJbml0Jiwg
SXNUcnVzdGVkKTsKKyAgICBJREJWZXJzaW9uQ2hhbmdlRXZlbnQoY29uc3QgSURCUmVzb3VyY2VJ
ZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3Qgb2xkVmVyc2lvbiwgdWludDY0
X3QgbmV3VmVyc2lvbiwgY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlKTsKKyAgICBJREJWZXJz
aW9uQ2hhbmdlRXZlbnQoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IEluaXQmLCBJc1RydXN0ZWQp
OwogCiAgICAgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNI
b3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRy
b2xzSG9zdC5jcHAKaW5kZXggZDAxZTAxM2VkZGQzZDdmZDFjZDU1YjAzZTk0ODVhMTBmZWYxNjJh
My4uMTBmZjcyZmJiM2RkNTRkZDg3ZTJmMjIyNzhlN2RlYjUyYzkxM2JlNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9s
c0hvc3QuY3BwCkBAIC00NCwyNyArNDQsMjcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
b25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbHNIb3N0OjphdXRvbWF0aWNLZXl3b3JkKCkK
K2NvbnN0IEF0b21TdHJpbmcmIE1lZGlhQ29udHJvbHNIb3N0OjphdXRvbWF0aWNLZXl3b3JkKCkK
IHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBhdXRvbWF0
aWMoImF1dG9tYXRpYyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBhdXRvbWF0aWMoImF1dG9t
YXRpYyIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gYXV0
b21hdGljOwogfQogCi1jb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbHNIb3N0Ojpmb3Jj
ZWRPbmx5S2V5d29yZCgpCitjb25zdCBBdG9tU3RyaW5nJiBNZWRpYUNvbnRyb2xzSG9zdDo6Zm9y
Y2VkT25seUtleXdvcmQoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9t
aWNTdHJpbmc+IGZvcmNlZE9uKCJmb3JjZWQtb25seSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5n
PiBmb3JjZWRPbigiZm9yY2VkLW9ubHkiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCk7CiAgICAgcmV0dXJuIGZvcmNlZE9uOwogfQogCi1jb25zdCBBdG9taWNTdHJpbmcmIE1lZGlh
Q29udHJvbHNIb3N0OjphbHdheXNPbktleXdvcmQoKQorY29uc3QgQXRvbVN0cmluZyYgTWVkaWFD
b250cm9sc0hvc3Q6OmFsd2F5c09uS2V5d29yZCgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPGNvbnN0IEF0b21pY1N0cmluZz4gYWx3YXlzT24oImFsd2F5cy1vbiIsIEF0b21pY1N0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25z
dCBBdG9tU3RyaW5nPiBhbHdheXNPbigiYWx3YXlzLW9uIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBhbHdheXNPbjsKIH0KIAotY29uc3QgQXRvbWljU3Ry
aW5nJiBNZWRpYUNvbnRyb2xzSG9zdDo6bWFudWFsS2V5d29yZCgpCitjb25zdCBBdG9tU3RyaW5n
JiBNZWRpYUNvbnRyb2xzSG9zdDo6bWFudWFsS2V5d29yZCgpCiB7Ci0gICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gYWx3YXlzT24oIm1hbnVhbCIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxj
b25zdCBBdG9tU3RyaW5nPiBhbHdheXNPbigibWFudWFsIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBhbHdheXNPbjsKIH0KIApAQCAtMTI0LDcgKzEyNCw3
IEBAIFRleHRUcmFjayogTWVkaWFDb250cm9sc0hvc3Q6OmNhcHRpb25NZW51QXV0b21hdGljSXRl
bSgpCiAgICAgcmV0dXJuIFRleHRUcmFjazo6Y2FwdGlvbk1lbnVBdXRvbWF0aWNJdGVtKCk7CiB9
CiAKLUF0b21pY1N0cmluZyBNZWRpYUNvbnRyb2xzSG9zdDo6Y2FwdGlvbkRpc3BsYXlNb2RlKCkg
Y29uc3QKK0F0b21TdHJpbmcgTWVkaWFDb250cm9sc0hvc3Q6OmNhcHRpb25EaXNwbGF5TW9kZSgp
IGNvbnN0CiB7CiAgICAgUGFnZSogcGFnZSA9IG1fbWVkaWFFbGVtZW50LT5kb2N1bWVudCgpLnBh
Z2UoKTsKICAgICBpZiAoIXBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5oCmluZGV4IDJmNTFhZDJiNjlkMWE5
YzAxM2E2MDZiZWNjNmY1NmI5ZjQ2YTQ4MzMuLmVmNWQwNTcyYWQ0YWMwMGY1Yjc2YTEyZGVjMzc5
ZjFmMjg0NDcxZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250
cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5oCkBAIC00NywxMCArNDcsMTAgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBSZWY8TWVkaWFDb250cm9sc0hvc3Q+IGNyZWF0ZShIVE1MTWVkaWFFbGVt
ZW50Kik7CiAgICAgfk1lZGlhQ29udHJvbHNIb3N0KCk7CiAKLSAgICBzdGF0aWMgY29uc3QgQXRv
bWljU3RyaW5nJiBhdXRvbWF0aWNLZXl3b3JkKCk7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0
cmluZyYgZm9yY2VkT25seUtleXdvcmQoKTsKLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5n
JiBhbHdheXNPbktleXdvcmQoKTsKLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBtYW51
YWxLZXl3b3JkKCk7CisgICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGF1dG9tYXRpY0tleXdv
cmQoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgZm9yY2VkT25seUtleXdvcmQoKTsK
KyAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgYWx3YXlzT25LZXl3b3JkKCk7CisgICAgc3Rh
dGljIGNvbnN0IEF0b21TdHJpbmcmIG1hbnVhbEtleXdvcmQoKTsKIAogICAgIFZlY3RvcjxSZWZQ
dHI8VGV4dFRyYWNrPj4gc29ydGVkVHJhY2tMaXN0Rm9yTWVudShUZXh0VHJhY2tMaXN0Jik7CiAg
ICAgVmVjdG9yPFJlZlB0cjxBdWRpb1RyYWNrPj4gc29ydGVkVHJhY2tMaXN0Rm9yTWVudShBdWRp
b1RyYWNrTGlzdCYpOwpAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAKICAgICBUZXh0VHJhY2sq
IGNhcHRpb25NZW51T2ZmSXRlbSgpOwogICAgIFRleHRUcmFjayogY2FwdGlvbk1lbnVBdXRvbWF0
aWNJdGVtKCk7Ci0gICAgQXRvbWljU3RyaW5nIGNhcHRpb25EaXNwbGF5TW9kZSgpIGNvbnN0Owor
ICAgIEF0b21TdHJpbmcgY2FwdGlvbkRpc3BsYXlNb2RlKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRT
ZWxlY3RlZFRleHRUcmFjayhUZXh0VHJhY2sqKTsKICAgICBFbGVtZW50KiB0ZXh0VHJhY2tDb250
YWluZXIoKTsKICAgICB2b2lkIHVwZGF0ZVRleHRUcmFja0NvbnRhaW5lcigpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL0Jsb2JFdmVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvQmxvYkV2ZW50LmNwcAppbmRleCAz
ZDlhZmEzNDdlNjBjNjY4NzE1NzcxNjg1YzEwYzVmNDIzNDRmYzQ2Li5iNTE3OThhNzBkNjMwODNh
N2JjNDhmNmE5NTdiZTY2MTg2YzcwYTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhcmVjb3JkZXIvQmxvYkV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhcmVjb3JkZXIvQmxvYkV2ZW50LmNwcApAQCAtMzIsMjMgKzMyLDIzIEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPEJsb2JFdmVudD4gQmxvYkV2ZW50OjpjcmVhdGUoY29u
c3QgQXRvbWljU3RyaW5nJiB0eXBlLCBJbml0JiYgaW5pdCwgSXNUcnVzdGVkIGlzVHJ1c3RlZCkK
K1JlZjxCbG9iRXZlbnQ+IEJsb2JFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUs
IEluaXQmJiBpbml0LCBJc1RydXN0ZWQgaXNUcnVzdGVkKQogewogICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEJsb2JFdmVudCh0eXBlLCBXVEZNb3ZlKGluaXQpLCBpc1RydXN0ZWQpKTsKIH0KIAot
UmVmPEJsb2JFdmVudD4gQmxvYkV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBl
LCBDYW5CdWJibGUgY2FuQnViYmxlLCBJc0NhbmNlbGFibGUgaXNDYW5jZWxhYmxlLCBSZWY8Qmxv
Yj4mJiBkYXRhKQorUmVmPEJsb2JFdmVudD4gQmxvYkV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbVN0
cmluZyYgdHlwZSwgQ2FuQnViYmxlIGNhbkJ1YmJsZSwgSXNDYW5jZWxhYmxlIGlzQ2FuY2VsYWJs
ZSwgUmVmPEJsb2I+JiYgZGF0YSkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCbG9iRXZl
bnQodHlwZSwgY2FuQnViYmxlLCBpc0NhbmNlbGFibGUsIFdURk1vdmUoZGF0YSkpKTsKIH0KIAot
QmxvYkV2ZW50OjpCbG9iRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBJbml0JiYgaW5p
dCwgSXNUcnVzdGVkIGlzVHJ1c3RlZCkKK0Jsb2JFdmVudDo6QmxvYkV2ZW50KGNvbnN0IEF0b21T
dHJpbmcmIHR5cGUsIEluaXQmJiBpbml0LCBJc1RydXN0ZWQgaXNUcnVzdGVkKQogICAgIDogRXZl
bnQodHlwZSwgaW5pdCwgaXNUcnVzdGVkKQogICAgICwgbV9ibG9iKGluaXQuZGF0YS5yZWxlYXNl
Tm9uTnVsbCgpKQogewogfQogCi1CbG9iRXZlbnQ6OkJsb2JFdmVudChjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUsIENhbkJ1YmJsZSBjYW5CdWJibGUsIElzQ2FuY2VsYWJsZSBpc0NhbmNlbGFibGUs
IFJlZjxCbG9iPiYmIGRhdGEpCitCbG9iRXZlbnQ6OkJsb2JFdmVudChjb25zdCBBdG9tU3RyaW5n
JiB0eXBlLCBDYW5CdWJibGUgY2FuQnViYmxlLCBJc0NhbmNlbGFibGUgaXNDYW5jZWxhYmxlLCBS
ZWY8QmxvYj4mJiBkYXRhKQogICAgIDogRXZlbnQodHlwZSwgY2FuQnViYmxlLCBpc0NhbmNlbGFi
bGUpCiAgICAgLCBtX2Jsb2IoV1RGTW92ZShkYXRhKSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9CbG9iRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFyZWNvcmRlci9CbG9iRXZlbnQuaAppbmRleCBiNjNhZDMzZDM2MDIxNDdi
YWJjMzBlMjk5YTM2MmY1ZjM2YzlkMGU4Li41NDc4NGY2ZjRhZjY3MTQ4MWVhMDRhN2JkYzhjOGEx
ZjY0NTU1MzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3Jk
ZXIvQmxvYkV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVy
L0Jsb2JFdmVudC5oCkBAIC0zOSwxNCArMzksMTQgQEAgcHVibGljOgogICAgICAgICBkb3VibGUg
dGltZWNvZGU7CiAgICAgfTsKICAgICAKLSAgICBzdGF0aWMgUmVmPEJsb2JFdmVudD4gY3JlYXRl
KGNvbnN0IEF0b21pY1N0cmluZyYsIEluaXQmJiwgSXNUcnVzdGVkID0gSXNUcnVzdGVkOjpObyk7
Ci0gICAgc3RhdGljIFJlZjxCbG9iRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmLCBD
YW5CdWJibGUsIElzQ2FuY2VsYWJsZSwgUmVmPEJsb2I+JiYpOworICAgIHN0YXRpYyBSZWY8Qmxv
YkV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYsIEluaXQmJiwgSXNUcnVzdGVkID0gSXNU
cnVzdGVkOjpObyk7CisgICAgc3RhdGljIFJlZjxCbG9iRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9t
U3RyaW5nJiwgQ2FuQnViYmxlLCBJc0NhbmNlbGFibGUsIFJlZjxCbG9iPiYmKTsKIAogICAgIEJs
b2ImIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2Jsb2IuZ2V0KCk7IH0KICAgICAKIHByaXZhdGU6
Ci0gICAgQmxvYkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYsIEluaXQmJiwgSXNUcnVzdGVkKTsK
LSAgICBCbG9iRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiwgQ2FuQnViYmxlLCBJc0NhbmNlbGFi
bGUsIFJlZjxCbG9iPiYmKTsKKyAgICBCbG9iRXZlbnQoY29uc3QgQXRvbVN0cmluZyYsIEluaXQm
JiwgSXNUcnVzdGVkKTsKKyAgICBCbG9iRXZlbnQoY29uc3QgQXRvbVN0cmluZyYsIENhbkJ1YmJs
ZSwgSXNDYW5jZWxhYmxlLCBSZWY8QmxvYj4mJik7CiAgICAgCiAgICAgLy8gRXZlbnQKICAgICBF
dmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJFcnJvckV2
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29y
ZGVyRXJyb3JFdmVudC5jcHAKaW5kZXggZjQyMmFlODA4MjYwYjBlOWVhY2I0MjIyNWMzZTczYmEw
Mzk2NzVkZi4uNjRmMTNjYmQ3YWUyMzcyZGYyOWRkMzIyN2EyZDFiNDNmODkzODlmNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJF
cnJvckV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIv
TWVkaWFSZWNvcmRlckVycm9yRXZlbnQuY3BwCkBAIC0zMywyNCArMzMsMjQgQEAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogCi1SZWY8TWVkaWFSZWNvcmRlckVycm9yRXZlbnQ+IE1lZGlhUmVjb3Jk
ZXJFcnJvckV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBFeGNlcHRpb24m
JiBleGNlcHRpb24pCitSZWY8TWVkaWFSZWNvcmRlckVycm9yRXZlbnQ+IE1lZGlhUmVjb3JkZXJF
cnJvckV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgRXhjZXB0aW9uJiYgZXhj
ZXB0aW9uKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhUmVjb3JkZXJFcnJvckV2
ZW50KHR5cGUsIFdURk1vdmUoZXhjZXB0aW9uKSkpOwogfQogCi1SZWY8TWVkaWFSZWNvcmRlckVy
cm9yRXZlbnQ+IE1lZGlhUmVjb3JkZXJFcnJvckV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3Ry
aW5nJiB0eXBlLCBJbml0JiYgaW5pdCwgSXNUcnVzdGVkIGlzVHJ1c3RlZCkKK1JlZjxNZWRpYVJl
Y29yZGVyRXJyb3JFdmVudD4gTWVkaWFSZWNvcmRlckVycm9yRXZlbnQ6OmNyZWF0ZShjb25zdCBB
dG9tU3RyaW5nJiB0eXBlLCBJbml0JiYgaW5pdCwgSXNUcnVzdGVkIGlzVHJ1c3RlZCkKIHsKICAg
ICBhdXRvIGRvbUVycm9yID0gaW5pdC5lcnJvci5yZWxlYXNlTm9uTnVsbCgpOwogICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IE1lZGlhUmVjb3JkZXJFcnJvckV2ZW50KHR5cGUsIFdURk1vdmUoaW5p
dCksIFdURk1vdmUoZG9tRXJyb3IpLCBpc1RydXN0ZWQpKTsKIH0KIAotTWVkaWFSZWNvcmRlckVy
cm9yRXZlbnQ6Ok1lZGlhUmVjb3JkZXJFcnJvckV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlw
ZSwgSW5pdCYmIGluaXQsIFJlZjxET01FeGNlcHRpb24+JiYgZXhjZXB0aW9uLCBJc1RydXN0ZWQg
aXNUcnVzdGVkKQorTWVkaWFSZWNvcmRlckVycm9yRXZlbnQ6Ok1lZGlhUmVjb3JkZXJFcnJvckV2
ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIEluaXQmJiBpbml0LCBSZWY8RE9NRXhjZXB0aW9u
PiYmIGV4Y2VwdGlvbiwgSXNUcnVzdGVkIGlzVHJ1c3RlZCkKICAgICA6IEV2ZW50KHR5cGUsIFdU
Rk1vdmUoaW5pdCksIGlzVHJ1c3RlZCkKICAgICAsIG1fZG9tRXJyb3IoV1RGTW92ZShleGNlcHRp
b24pKQogewogfQogCi1NZWRpYVJlY29yZGVyRXJyb3JFdmVudDo6TWVkaWFSZWNvcmRlckVycm9y
RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBFeGNlcHRpb24mJiBleGNlcHRpb24pCitN
ZWRpYVJlY29yZGVyRXJyb3JFdmVudDo6TWVkaWFSZWNvcmRlckVycm9yRXZlbnQoY29uc3QgQXRv
bVN0cmluZyYgdHlwZSwgRXhjZXB0aW9uJiYgZXhjZXB0aW9uKQogICAgIDogRXZlbnQodHlwZSwg
RXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKQogICAgICwgbV9k
b21FcnJvcihET01FeGNlcHRpb246OmNyZWF0ZShleGNlcHRpb24pKQogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJFcnJvckV2
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRl
ckVycm9yRXZlbnQuaAppbmRleCA4OTFjM2EzMGMzMmZkM2VmZGQzYWYwZDNmYWZmZGJlMWNkMGU3
Nzc5Li4wN2ZjYTJmYWY5MmM1NjU4MDZmMmI0YTg3NjRlM2MyYmQ1YzM4ODBmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlckVycm9y
RXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFS
ZWNvcmRlckVycm9yRXZlbnQuaApAQCAtMzcsMTQgKzM3LDE0IEBAIHB1YmxpYzoKICAgICAgICAg
UmVmUHRyPERPTUV4Y2VwdGlvbj4gZXJyb3I7CiAgICAgfTsKICAgICAKLSAgICBzdGF0aWMgUmVm
PE1lZGlhUmVjb3JkZXJFcnJvckV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiwgSW5p
dCYmLCBJc1RydXN0ZWQgPSBJc1RydXN0ZWQ6Ok5vKTsKLSAgICBzdGF0aWMgUmVmPE1lZGlhUmVj
b3JkZXJFcnJvckV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiwgRXhjZXB0aW9uJiYp
OworICAgIHN0YXRpYyBSZWY8TWVkaWFSZWNvcmRlckVycm9yRXZlbnQ+IGNyZWF0ZShjb25zdCBB
dG9tU3RyaW5nJiwgSW5pdCYmLCBJc1RydXN0ZWQgPSBJc1RydXN0ZWQ6Ok5vKTsKKyAgICBzdGF0
aWMgUmVmPE1lZGlhUmVjb3JkZXJFcnJvckV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYs
IEV4Y2VwdGlvbiYmKTsKICAgICAKICAgICBET01FeGNlcHRpb24mIGVycm9yKCkgY29uc3QgeyBy
ZXR1cm4gbV9kb21FcnJvci5nZXQoKTsgfQogCiBwcml2YXRlOgotICAgIE1lZGlhUmVjb3JkZXJF
cnJvckV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYsIEluaXQmJiwgUmVmPERPTUV4Y2VwdGlvbj4m
JiwgSXNUcnVzdGVkKTsKLSAgICBNZWRpYVJlY29yZGVyRXJyb3JFdmVudChjb25zdCBBdG9taWNT
dHJpbmcmLCBFeGNlcHRpb24mJik7CisgICAgTWVkaWFSZWNvcmRlckVycm9yRXZlbnQoY29uc3Qg
QXRvbVN0cmluZyYsIEluaXQmJiwgUmVmPERPTUV4Y2VwdGlvbj4mJiwgSXNUcnVzdGVkKTsKKyAg
ICBNZWRpYVJlY29yZGVyRXJyb3JFdmVudChjb25zdCBBdG9tU3RyaW5nJiwgRXhjZXB0aW9uJiYp
OwogICAgIAogICAgIC8vIEV2ZW50CiAgICAgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2Uo
KSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNv
dXJjZS9NZWRpYVNvdXJjZS5jcHAKaW5kZXggN2U5MzYzZDVmYWU5MGQyYzE5OWM3MDQyMTVlNDk4
NGIxODY0YzI5Mi4uZDQxN2ExMjE2OTExMTIxNWQ1NDIyOTFlMDNjNTlkNWQ2ZTdlYjNmNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5j
cHAKQEAgLTEwNzMsNyArMTA3Myw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxTb3VyY2VCdWZmZXJQcml2
YXRlPj4gTWVkaWFTb3VyY2U6OmNyZWF0ZVNvdXJjZUJ1ZmZlclByaXZhdGUoY29uCiAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IFF1b3RhRXhjZWVkZWRFcnJvciB9OwogfQogCi12b2lkIE1lZGlhU291
cmNlOjpzY2hlZHVsZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lKQordm9pZCBN
ZWRpYVNvdXJjZTo6c2NoZWR1bGVFdmVudChjb25zdCBBdG9tU3RyaW5nJiBldmVudE5hbWUpCiB7
CiAgICAgREVCVUdfTE9HKExPR0lERU5USUZJRVIsICJzY2hlZHVsaW5nICciLCBldmVudE5hbWUs
ICInIik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2Uv
TWVkaWFTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFT
b3VyY2UuaAppbmRleCBmMmFlNDQwYTgyMGYyYzhiMWY3N2FjMjFlNThiZGY2MjA2ZTRlMmIwLi5m
ZGM2NDdiN2FjYmY3MzJjNTBjYmVlM2FjMWMwMjNmODFlNWQwOWMxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5oCkBAIC0xNDcsNyArMTQ3
LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8UGxhdGZvcm1UaW1lUmFuZ2VzPiBhY3RpdmVSYW5n
ZXMoKSBjb25zdDsKIAogICAgIEV4Y2VwdGlvbk9yPFJlZjxTb3VyY2VCdWZmZXJQcml2YXRlPj4g
Y3JlYXRlU291cmNlQnVmZmVyUHJpdmF0ZShjb25zdCBDb250ZW50VHlwZSYpOwotICAgIHZvaWQg
c2NoZWR1bGVFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50TmFtZSk7CisgICAgdm9pZCBz
Y2hlZHVsZUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50TmFtZSk7CiAKICAgICBib29sIGhh
c0J1ZmZlcmVkVGltZShjb25zdCBNZWRpYVRpbWUmKTsKICAgICBib29sIGhhc0N1cnJlbnRUaW1l
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJj
ZUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1
ZmZlci5jcHAKaW5kZXggYWE4MDA2ZTNjMzg3MmNjMDRjNTYxNWYyOWVlZmMxNDMyZWQ3MzcxMC4u
MGJmYmIwYWM5Y2I0Njk1YzMyMzFlMDVmNzQ0ZmY5NzFiNTg1MzJmYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcApAQCAtNDgx
LDcgKzQ4MSw3IEBAIHZvaWQgU291cmNlQnVmZmVyOjpzZWVrVG9UaW1lKGNvbnN0IE1lZGlhVGlt
ZSYgdGltZSkKIAogICAgIGZvciAoYXV0byYgdHJhY2tCdWZmZXJQYWlyIDogbV90cmFja0J1ZmZl
ck1hcCkgewogICAgICAgICBUcmFja0J1ZmZlciYgdHJhY2tCdWZmZXIgPSB0cmFja0J1ZmZlclBh
aXIudmFsdWU7Ci0gICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdHJhY2tJRCA9IHRyYWNrQnVm
ZmVyUGFpci5rZXk7CisgICAgICAgIGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSUQgPSB0cmFja0J1
ZmZlclBhaXIua2V5OwogCiAgICAgICAgIHRyYWNrQnVmZmVyLm5lZWRzUmVlbnF1ZXVlaW5nID0g
dHJ1ZTsKICAgICAgICAgcmVlbnF1ZXVlTWVkaWFGb3JUaW1lKHRyYWNrQnVmZmVyLCB0cmFja0lE
LCB0aW1lKTsKQEAgLTU3MCw3ICs1NzAsNyBAQCBib29sIFNvdXJjZUJ1ZmZlcjo6aXNSZW1vdmVk
KCkgY29uc3QKICAgICByZXR1cm4gIW1fc291cmNlOwogfQogCi12b2lkIFNvdXJjZUJ1ZmZlcjo6
c2NoZWR1bGVFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50TmFtZSkKK3ZvaWQgU291cmNl
QnVmZmVyOjpzY2hlZHVsZUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50TmFtZSkKIHsKICAg
ICBhdXRvIGV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWUsIEV2ZW50OjpDYW5CdWJibGU6
Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObyk7CiAgICAgZXZlbnQtPnNldFRhcmdldCh0aGlz
KTsKQEAgLTcwMyw3ICs3MDMsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJp
dmF0ZUFwcGVuZENvbXBsZXRlKEFwcGVuZFJlc3VsdCByZXN1bHQpCiAgICAgTWVkaWFUaW1lIGN1
cnJlbnRNZWRpYVRpbWUgPSBtX3NvdXJjZS0+Y3VycmVudFRpbWUoKTsKICAgICBmb3IgKGF1dG8m
IHRyYWNrQnVmZmVyUGFpciA6IG1fdHJhY2tCdWZmZXJNYXApIHsKICAgICAgICAgVHJhY2tCdWZm
ZXImIHRyYWNrQnVmZmVyID0gdHJhY2tCdWZmZXJQYWlyLnZhbHVlOwotICAgICAgICBjb25zdCBB
dG9taWNTdHJpbmcmIHRyYWNrSUQgPSB0cmFja0J1ZmZlclBhaXIua2V5OworICAgICAgICBjb25z
dCBBdG9tU3RyaW5nJiB0cmFja0lEID0gdHJhY2tCdWZmZXJQYWlyLmtleTsKIAogICAgICAgICBp
ZiAodHJhY2tCdWZmZXIubmVlZHNSZWVucXVldWVpbmcpIHsKICAgICAgICAgICAgIERFQlVHX0xP
RyhMT0dJREVOVElGSUVSLCAicmVlbnF1ZXVpbmcgYXQgdGltZSAiLCBjdXJyZW50TWVkaWFUaW1l
KTsKQEAgLTE1MDgsNyArMTUwOCw3IEBAIHZvaWQgU291cmNlQnVmZmVyOjpzb3VyY2VCdWZmZXJQ
cml2YXRlRGlkUmVjZWl2ZVNhbXBsZShNZWRpYVNhbXBsZSYgc2FtcGxlKQogCiAgICAgICAgIC8v
IE5PVEU6IHRoaXMgaXMgb3V0LW9mLW9yZGVyLCBidXQgd2UgbmVlZCBUcmFja0J1ZmZlciB0byBi
ZSBhYmxlIHRvIGNhY2hlIHRoZSByZXN1bHRzIG9mIHRpbWVzdGFtcCBvZmZzZXQgcm91bmRpbmcK
ICAgICAgICAgLy8gMS41IExldCB0cmFjayBidWZmZXIgZXF1YWwgdGhlIHRyYWNrIGJ1ZmZlciB0
aGF0IHRoZSBjb2RlZCBmcmFtZSB3aWxsIGJlIGFkZGVkIHRvLgotICAgICAgICBBdG9taWNTdHJp
bmcgdHJhY2tJRCA9IHNhbXBsZS50cmFja0lEKCk7CisgICAgICAgIEF0b21TdHJpbmcgdHJhY2tJ
RCA9IHNhbXBsZS50cmFja0lEKCk7CiAgICAgICAgIGF1dG8gaXQgPSBtX3RyYWNrQnVmZmVyTWFw
LmZpbmQodHJhY2tJRCk7CiAgICAgICAgIGlmIChpdCA9PSBtX3RyYWNrQnVmZmVyTWFwLmVuZCgp
KSB7CiAgICAgICAgICAgICAvLyBUaGUgY2xpZW50IG1hbmFnZWQgdG8gYXBwZW5kIGEgc2FtcGxl
IHdpdGggYSB0cmFja0lEIG5vdCBwcmVzZW50IGluIHRoZSBpbml0aWFsaXphdGlvbgpAQCAtMTk3
Niw3ICsxOTc2LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXI6OnRleHRUcmFja0tpbmRDaGFuZ2VkKFRl
eHRUcmFjayYgdHJhY2spCiAgICAgICAgIG1fc291cmNlLT5tZWRpYUVsZW1lbnQoKS0+dGV4dFRy
YWNrS2luZENoYW5nZWQodHJhY2spOwogfQogCi12b2lkIFNvdXJjZUJ1ZmZlcjo6c291cmNlQnVm
ZmVyUHJpdmF0ZVJlZW5xdWVTYW1wbGVzKGNvbnN0IEF0b21pY1N0cmluZyYgdHJhY2tJRCkKK3Zv
aWQgU291cmNlQnVmZmVyOjpzb3VyY2VCdWZmZXJQcml2YXRlUmVlbnF1ZVNhbXBsZXMoY29uc3Qg
QXRvbVN0cmluZyYgdHJhY2tJRCkKIHsKICAgICBpZiAoaXNSZW1vdmVkKCkpCiAgICAgICAgIHJl
dHVybjsKQEAgLTE5OTEsNyArMTk5MSw3IEBAIHZvaWQgU291cmNlQnVmZmVyOjpzb3VyY2VCdWZm
ZXJQcml2YXRlUmVlbnF1ZVNhbXBsZXMoY29uc3QgQXRvbWljU3RyaW5nJiB0cmFja0lECiAgICAg
cmVlbnF1ZXVlTWVkaWFGb3JUaW1lKHRyYWNrQnVmZmVyLCB0cmFja0lELCBtX3NvdXJjZS0+Y3Vy
cmVudFRpbWUoKSk7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyOjpzb3VyY2VCdWZmZXJQcml2YXRl
RGlkQmVjb21lUmVhZHlGb3JNb3JlU2FtcGxlcyhjb25zdCBBdG9taWNTdHJpbmcmIHRyYWNrSUQp
Cit2b2lkIFNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZURpZEJlY29tZVJlYWR5Rm9y
TW9yZVNhbXBsZXMoY29uc3QgQXRvbVN0cmluZyYgdHJhY2tJRCkKIHsKICAgICBpZiAoaXNSZW1v
dmVkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTIwMDYsNyArMjAwNiw3IEBAIHZvaWQgU291cmNl
QnVmZmVyOjpzb3VyY2VCdWZmZXJQcml2YXRlRGlkQmVjb21lUmVhZHlGb3JNb3JlU2FtcGxlcyhj
b25zdCBBdG9taWNTCiAgICAgICAgIHByb3ZpZGVNZWRpYURhdGEodHJhY2tCdWZmZXIsIHRyYWNr
SUQpOwogfQogCi12b2lkIFNvdXJjZUJ1ZmZlcjo6cHJvdmlkZU1lZGlhRGF0YShUcmFja0J1ZmZl
ciYgdHJhY2tCdWZmZXIsIGNvbnN0IEF0b21pY1N0cmluZyYgdHJhY2tJRCkKK3ZvaWQgU291cmNl
QnVmZmVyOjpwcm92aWRlTWVkaWFEYXRhKFRyYWNrQnVmZmVyJiB0cmFja0J1ZmZlciwgY29uc3Qg
QXRvbVN0cmluZyYgdHJhY2tJRCkKIHsKICAgICBpZiAobV9zb3VyY2UtPmlzU2Vla2luZygpKQog
ICAgICAgICByZXR1cm47CkBAIC0yMDU4LDcgKzIwNTgsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlcjo6
cHJvdmlkZU1lZGlhRGF0YShUcmFja0J1ZmZlciYgdHJhY2tCdWZmZXIsIGNvbnN0IEF0b21pY1N0
cmluZwogICAgIHRyeVNpZ25hbEFsbFNhbXBsZXNJblRyYWNrRW5xdWV1ZWQodHJhY2tJRCk7CiB9
CiAKLXZvaWQgU291cmNlQnVmZmVyOjp0cnlTaWduYWxBbGxTYW1wbGVzSW5UcmFja0VucXVldWVk
KGNvbnN0IEF0b21pY1N0cmluZyYgdHJhY2tJRCkKK3ZvaWQgU291cmNlQnVmZmVyOjp0cnlTaWdu
YWxBbGxTYW1wbGVzSW5UcmFja0VucXVldWVkKGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSUQpCiB7
CiAgICAgaWYgKG1fc291cmNlLT5pc0VuZGVkKCkgJiYgbV90cmFja0J1ZmZlck1hcC5nZXQodHJh
Y2tJRCkuZGVjb2RlUXVldWUuZW1wdHkoKSkgewogICAgICAgICBERUJVR19MT0coTE9HSURFTlRJ
RklFUiwgImVucXVldWVkIGFsbCBzYW1wbGVzIGZyb20gdHJhY2sgIiwgdHJhY2tJRCk7CkBAIC0y
MDY4LDExICsyMDY4LDExIEBAIHZvaWQgU291cmNlQnVmZmVyOjp0cnlTaWduYWxBbGxTYW1wbGVz
SW5UcmFja0VucXVldWVkKGNvbnN0IEF0b21pY1N0cmluZyYgdHJhY2tJCiAKIHZvaWQgU291cmNl
QnVmZmVyOjp0cnlTaWduYWxBbGxTYW1wbGVzRW5xdWV1ZWQoKQogewotICAgIGZvciAoY29uc3Qg
QXRvbWljU3RyaW5nJiB0cmFja0lEIDogbV90cmFja0J1ZmZlck1hcC5rZXlzKCkpCisgICAgZm9y
IChjb25zdCBBdG9tU3RyaW5nJiB0cmFja0lEIDogbV90cmFja0J1ZmZlck1hcC5rZXlzKCkpCiAg
ICAgICAgIHRyeVNpZ25hbEFsbFNhbXBsZXNJblRyYWNrRW5xdWV1ZWQodHJhY2tJRCk7CiB9CiAK
LXZvaWQgU291cmNlQnVmZmVyOjpyZWVucXVldWVNZWRpYUZvclRpbWUoVHJhY2tCdWZmZXImIHRy
YWNrQnVmZmVyLCBjb25zdCBBdG9taWNTdHJpbmcmIHRyYWNrSUQsIGNvbnN0IE1lZGlhVGltZSYg
dGltZSkKK3ZvaWQgU291cmNlQnVmZmVyOjpyZWVucXVldWVNZWRpYUZvclRpbWUoVHJhY2tCdWZm
ZXImIHRyYWNrQnVmZmVyLCBjb25zdCBBdG9tU3RyaW5nJiB0cmFja0lELCBjb25zdCBNZWRpYVRp
bWUmIHRpbWUpCiB7CiAgICAgbV9wcml2YXRlLT5mbHVzaCh0cmFja0lEKTsKICAgICB0cmFja0J1
ZmZlci5kZWNvZGVRdWV1ZS5jbGVhcigpOwpAQCAtMjI0Miw3ICsyMjQyLDcgQEAgdm9pZCBTb3Vy
Y2VCdWZmZXI6OnJlcG9ydEV4dHJhTWVtb3J5QWxsb2NhdGVkKCkKICAgICBzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCktPnZtKCkuaGVhcC5kZXByZWNhdGVkUmVwb3J0RXh0cmFNZW1vcnkoZXh0cmFN
ZW1vcnlDb3N0RGVsdGEpOwogfQogCi1WZWN0b3I8U3RyaW5nPiBTb3VyY2VCdWZmZXI6OmJ1ZmZl
cmVkU2FtcGxlc0ZvclRyYWNrSUQoY29uc3QgQXRvbWljU3RyaW5nJiB0cmFja0lEKQorVmVjdG9y
PFN0cmluZz4gU291cmNlQnVmZmVyOjpidWZmZXJlZFNhbXBsZXNGb3JUcmFja0lEKGNvbnN0IEF0
b21TdHJpbmcmIHRyYWNrSUQpCiB7CiAgICAgYXV0byBpdCA9IG1fdHJhY2tCdWZmZXJNYXAuZmlu
ZCh0cmFja0lEKTsKICAgICBpZiAoaXQgPT0gbV90cmFja0J1ZmZlck1hcC5lbmQoKSkKQEAgLTIy
NTYsNyArMjI1Niw3IEBAIFZlY3RvcjxTdHJpbmc+IFNvdXJjZUJ1ZmZlcjo6YnVmZmVyZWRTYW1w
bGVzRm9yVHJhY2tJRChjb25zdCBBdG9taWNTdHJpbmcmIHRyYWNrCiAgICAgcmV0dXJuIHNhbXBs
ZURlc2NyaXB0aW9uczsKIH0KIAotVmVjdG9yPFN0cmluZz4gU291cmNlQnVmZmVyOjplbnF1ZXVl
ZFNhbXBsZXNGb3JUcmFja0lEKGNvbnN0IEF0b21pY1N0cmluZyYgdHJhY2tJRCkKK1ZlY3RvcjxT
dHJpbmc+IFNvdXJjZUJ1ZmZlcjo6ZW5xdWV1ZWRTYW1wbGVzRm9yVHJhY2tJRChjb25zdCBBdG9t
U3RyaW5nJiB0cmFja0lEKQogewogICAgIHJldHVybiBtX3ByaXZhdGUtPmVucXVldWVkU2FtcGxl
c0ZvclRyYWNrSUQodHJhY2tJRCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaAppbmRleCAyNTA1MGRiNGYzMTUyMzI3NTk1ZDQ2ODM0
ZGM5ZThjNTI2MWI4MTE4Li4zMTNkMDdjY2Y5MjU1ZDlhNzYxZTMyZWE0YTYzODBiNjBhMzkzZWVk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1
ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVm
ZmVyLmgKQEAgLTE1NCw4ICsxNTQsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgc291cmNlQnVmZmVy
UHJpdmF0ZURpZFJlY2VpdmVTYW1wbGUoTWVkaWFTYW1wbGUmKSBmaW5hbDsKICAgICBib29sIHNv
dXJjZUJ1ZmZlclByaXZhdGVIYXNBdWRpbygpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgc291cmNl
QnVmZmVyUHJpdmF0ZUhhc1ZpZGVvKCkgY29uc3QgZmluYWw7Ci0gICAgdm9pZCBzb3VyY2VCdWZm
ZXJQcml2YXRlUmVlbnF1ZVNhbXBsZXMoY29uc3QgQXRvbWljU3RyaW5nJiB0cmFja0lEKSBmaW5h
bDsKLSAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEaWRCZWNvbWVSZWFkeUZvck1vcmVTYW1w
bGVzKGNvbnN0IEF0b21pY1N0cmluZyYgdHJhY2tJRCkgZmluYWw7CisgICAgdm9pZCBzb3VyY2VC
dWZmZXJQcml2YXRlUmVlbnF1ZVNhbXBsZXMoY29uc3QgQXRvbVN0cmluZyYgdHJhY2tJRCkgZmlu
YWw7CisgICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlRGlkQmVjb21lUmVhZHlGb3JNb3JlU2Ft
cGxlcyhjb25zdCBBdG9tU3RyaW5nJiB0cmFja0lEKSBmaW5hbDsKICAgICBNZWRpYVRpbWUgc291
cmNlQnVmZmVyUHJpdmF0ZUZhc3RTZWVrVGltZUZvck1lZGlhVGltZShjb25zdCBNZWRpYVRpbWUm
LCBjb25zdCBNZWRpYVRpbWUmIG5lZ2F0aXZlVGhyZXNob2xkLCBjb25zdCBNZWRpYVRpbWUmIHBv
c2l0aXZlVGhyZXNob2xkKSBmaW5hbDsKICAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVBcHBl
bmRDb21wbGV0ZShBcHBlbmRSZXN1bHQpIGZpbmFsOwogICAgIHZvaWQgc291cmNlQnVmZmVyUHJp
dmF0ZURpZFJlY2VpdmVSZW5kZXJpbmdFcnJvcihpbnQgZXJyb3JDb2RlKSBmaW5hbDsKQEAgLTE3
Myw3ICsxNzMsNyBAQCBwcml2YXRlOgogICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFy
Z2V0SW50ZXJmYWNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gU291cmNlQnVmZmVyRXZlbnRUYXJn
ZXRJbnRlcmZhY2VUeXBlOyB9CiAKICAgICBib29sIGlzUmVtb3ZlZCgpIGNvbnN0OwotICAgIHZv
aWQgc2NoZWR1bGVFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50TmFtZSk7CisgICAgdm9p
ZCBzY2hlZHVsZUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50TmFtZSk7CiAKICAgICBFeGNl
cHRpb25Pcjx2b2lkPiBhcHBlbmRCdWZmZXJJbnRlcm5hbChjb25zdCB1bnNpZ25lZCBjaGFyKiwg
dW5zaWduZWQpOwogICAgIHZvaWQgYXBwZW5kQnVmZmVyVGltZXJGaXJlZCgpOwpAQCAtMTgzLDgg
KzE4Myw4IEBAIHByaXZhdGU6CiAKICAgICBib29sIHZhbGlkYXRlSW5pdGlhbGl6YXRpb25TZWdt
ZW50KGNvbnN0IEluaXRpYWxpemF0aW9uU2VnbWVudCYpOwogCi0gICAgdm9pZCByZWVucXVldWVN
ZWRpYUZvclRpbWUoVHJhY2tCdWZmZXImLCBjb25zdCBBdG9taWNTdHJpbmcmIHRyYWNrSUQsIGNv
bnN0IE1lZGlhVGltZSYpOwotICAgIHZvaWQgcHJvdmlkZU1lZGlhRGF0YShUcmFja0J1ZmZlciYs
IGNvbnN0IEF0b21pY1N0cmluZyYgdHJhY2tJRCk7CisgICAgdm9pZCByZWVucXVldWVNZWRpYUZv
clRpbWUoVHJhY2tCdWZmZXImLCBjb25zdCBBdG9tU3RyaW5nJiB0cmFja0lELCBjb25zdCBNZWRp
YVRpbWUmKTsKKyAgICB2b2lkIHByb3ZpZGVNZWRpYURhdGEoVHJhY2tCdWZmZXImLCBjb25zdCBB
dG9tU3RyaW5nJiB0cmFja0lEKTsKICAgICB2b2lkIGRpZERyb3BTYW1wbGUoKTsKICAgICB2b2lk
IGV2aWN0Q29kZWRGcmFtZXMoc2l6ZV90IG5ld0RhdGFTaXplKTsKICAgICBzaXplX3QgbWF4aW11
bUJ1ZmZlclNpemUoKSBjb25zdDsKQEAgLTIwNSwxMSArMjA1LDExIEBAIHByaXZhdGU6CiAKICAg
ICB2b2lkIHJhbmdlUmVtb3ZhbChjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBNZWRpYVRpbWUmKTsK
IAotICAgIHZvaWQgdHJ5U2lnbmFsQWxsU2FtcGxlc0luVHJhY2tFbnF1ZXVlZChjb25zdCBBdG9t
aWNTdHJpbmcmKTsKKyAgICB2b2lkIHRyeVNpZ25hbEFsbFNhbXBsZXNJblRyYWNrRW5xdWV1ZWQo
Y29uc3QgQXRvbVN0cmluZyYpOwogCiAgICAgZnJpZW5kIGNsYXNzIEludGVybmFsczsKLSAgICBX
RUJDT1JFX0VYUE9SVCBWZWN0b3I8U3RyaW5nPiBidWZmZXJlZFNhbXBsZXNGb3JUcmFja0lEKGNv
bnN0IEF0b21pY1N0cmluZyYpOwotICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+IGVu
cXVldWVkU2FtcGxlc0ZvclRyYWNrSUQoY29uc3QgQXRvbWljU3RyaW5nJik7CisgICAgV0VCQ09S
RV9FWFBPUlQgVmVjdG9yPFN0cmluZz4gYnVmZmVyZWRTYW1wbGVzRm9yVHJhY2tJRChjb25zdCBB
dG9tU3RyaW5nJik7CisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFN0cmluZz4gZW5xdWV1ZWRT
YW1wbGVzRm9yVHJhY2tJRChjb25zdCBBdG9tU3RyaW5nJik7CiAKICAgICBSZWY8U291cmNlQnVm
ZmVyUHJpdmF0ZT4gbV9wcml2YXRlOwogICAgIE1lZGlhU291cmNlKiBtX3NvdXJjZTsKQEAgLTIy
Myw5ICsyMjMsOSBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxBdWRpb1RyYWNrTGlzdD4gbV9hdWRp
b1RyYWNrczsKICAgICBSZWZQdHI8VGV4dFRyYWNrTGlzdD4gbV90ZXh0VHJhY2tzOwogCi0gICAg
VmVjdG9yPEF0b21pY1N0cmluZz4gbV92aWRlb0NvZGVjczsKLSAgICBWZWN0b3I8QXRvbWljU3Ry
aW5nPiBtX2F1ZGlvQ29kZWNzOwotICAgIFZlY3RvcjxBdG9taWNTdHJpbmc+IG1fdGV4dENvZGVj
czsKKyAgICBWZWN0b3I8QXRvbVN0cmluZz4gbV92aWRlb0NvZGVjczsKKyAgICBWZWN0b3I8QXRv
bVN0cmluZz4gbV9hdWRpb0NvZGVjczsKKyAgICBWZWN0b3I8QXRvbVN0cmluZz4gbV90ZXh0Q29k
ZWNzOwogCiAgICAgTWVkaWFUaW1lIG1fdGltZXN0YW1wT2Zmc2V0OwogICAgIE1lZGlhVGltZSBt
X2FwcGVuZFdpbmRvd1N0YXJ0OwpAQCAtMjM0LDcgKzIzNCw3IEBAIHByaXZhdGU6CiAgICAgTWVk
aWFUaW1lIG1fZ3JvdXBTdGFydFRpbWVzdGFtcDsKICAgICBNZWRpYVRpbWUgbV9ncm91cEVuZFRp
bWVzdGFtcDsKIAotICAgIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBUcmFja0J1ZmZlcj4gbV90cmFj
a0J1ZmZlck1hcDsKKyAgICBIYXNoTWFwPEF0b21TdHJpbmcsIFRyYWNrQnVmZmVyPiBtX3RyYWNr
QnVmZmVyTWFwOwogICAgIFJlZlB0cjxUaW1lUmFuZ2VzPiBtX2J1ZmZlcmVkOwogICAgIGJvb2wg
bV9idWZmZXJlZERpcnR5IHsgdHJ1ZSB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlckxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXJMaXN0LmNwcAppbmRleCAyOTY2Yzk3Zjky
MTlhYTFiZGQ5NWFiM2M3MThiYjUzM2Q1ZmQxYTY4Li42NzgyMjQ2ZmQ0YzUwYjEzMTVlMWQ5MDQ1
YmE0YWRkOTg0MGY5NmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c291cmNlL1NvdXJjZUJ1ZmZlckxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzb3VyY2UvU291cmNlQnVmZmVyTGlzdC5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBT
b3VyY2VCdWZmZXJMaXN0Ojpzd2FwKFZlY3RvcjxSZWZQdHI8U291cmNlQnVmZmVyPj4mIG90aGVy
KQogICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5yZW1vdmVzb3VyY2VidWZmZXJF
dmVudCk7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyTGlzdDo6c2NoZWR1bGVFdmVudChjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50TmFtZSkKK3ZvaWQgU291cmNlQnVmZmVyTGlzdDo6c2NoZWR1bGVF
dmVudChjb25zdCBBdG9tU3RyaW5nJiBldmVudE5hbWUpCiB7CiAgICAgYXV0byBldmVudCA9IEV2
ZW50OjpjcmVhdGUoZXZlbnROYW1lLCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2Fu
Y2VsYWJsZTo6Tm8pOwogICAgIGV2ZW50LT5zZXRUYXJnZXQodGhpcyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlckxpc3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyTGlzdC5oCmluZGV4
IDIyZjdiMTQzNTlhOWJlMGVlNDI5MzQ5MWUzMmZiYmQzZGEyNzgxY2QuLmY4M2MxODQzMjIxYWNi
MjMxZjU0MjZhN2EzMmViMGIyMjkxNGEzNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyTGlzdC5oCkBAIC03Myw3ICs3Myw3IEBA
IHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgU291cmNlQnVmZmVyTGlzdChTY3JpcHRF
eGVjdXRpb25Db250ZXh0Kik7CiAKLSAgICB2b2lkIHNjaGVkdWxlRXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJik7CisgICAgdm9pZCBzY2hlZHVsZUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmKTsKIAog
ICAgIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBvdmVycmlkZSB7IHJlZigpOyB9CiAgICAgdm9pZCBk
ZXJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgeyBkZXJlZigpOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5jcHAKaW5kZXggNTJlNWZk
ODlmMzk2MDEyOThkOGRhMWRkODg0Njk2OWQxNzNjMjA3NS4uNGJkN2E5ZDdjY2I5OTNjYTExNGI5
MWFlYmU3YWFjODliNWYzMDE5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmNwcApAQCAtMTc3LDcgKzE3Nyw3IEBAIGJvb2wgTWVk
aWFEZXZpY2VzOjpjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3QKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBNZWRpYURldmljZXM6OmFkZEV2ZW50TGlzdGVuZXIoY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVy
LCBjb25zdCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucyYgb3B0aW9ucykKK2Jvb2wgTWVkaWFEZXZp
Y2VzOjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2
ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIsIGNvbnN0IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zJiBv
cHRpb25zKQogewogICAgIGlmICghbV9saXN0ZW5pbmdGb3JEZXZpY2VDaGFuZ2VzICYmIGV2ZW50
VHlwZSA9PSBldmVudE5hbWVzKCkuZGV2aWNlY2hhbmdlRXZlbnQpIHsKICAgICAgICAgYXV0byog
ZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmgKaW5kZXggYTUyNzlhNGU3ODU4NjcyM2JjN2Q4
ODQzMzM5NjJmMTQyNGJlZGZiNi4uZGUzZGEwOGJkMGVhYTZhYjZjZmNhMjUzYWY5YmM3MDZiN2E0
OWMzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YURldmljZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
RGV2aWNlcy5oCkBAIC04OSw3ICs4OSw3IEBAIHByaXZhdGU6CiAgICAgZXhwbGljaXQgTWVkaWFE
ZXZpY2VzKERvY3VtZW50Jik7CiAKICAgICB2b2lkIHNjaGVkdWxlZEV2ZW50VGltZXJGaXJlZCgp
OwotICAgIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSwgUmVmPEV2ZW50TGlzdGVuZXI+JiYsIGNvbnN0IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zJikg
b3ZlcnJpZGU7CisgICAgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21TdHJpbmcmIGV2
ZW50VHlwZSwgUmVmPEV2ZW50TGlzdGVuZXI+JiYsIGNvbnN0IEFkZEV2ZW50TGlzdGVuZXJPcHRp
b25zJikgb3ZlcnJpZGU7CiAKICAgICBmcmllbmQgY2xhc3MgSlNNZWRpYURldmljZXNPd25lcjsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbVRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1UcmFjay5jcHAKaW5kZXggZTdhMDkwZjA3YWY1YWVkNjBjN2E0ZTFlOGJjY2E5MDk2OTJh
M2M5ZS4uYWE1MTY3OWJlOWExOTlkZjM4NDg2ODg3YzIzZDE0MjNmNGFkN2Q3YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJh
Y2suY3BwCkBAIC04MSwxMCArODEsMTAgQEAgTWVkaWFTdHJlYW1UcmFjazo6fk1lZGlhU3RyZWFt
VHJhY2soKQogICAgICAgICBkb2N1bWVudC0+cmVtb3ZlQXVkaW9Qcm9kdWNlcigqdGhpcyk7CiB9
CiAKLWNvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFTdHJlYW1UcmFjazo6a2luZCgpIGNvbnN0Citj
b25zdCBBdG9tU3RyaW5nJiBNZWRpYVN0cmVhbVRyYWNrOjpraW5kKCkgY29uc3QKIHsKLSAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBhdWRpb0tpbmQoImF1ZGlvIiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPEF0b21pY1N0cmluZz4gdmlkZW9LaW5kKCJ2aWRlbyIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9tU3RyaW5nPiBh
dWRpb0tpbmQoImF1ZGlvIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9tU3RyaW5nPiB2aWRlb0tpbmQoInZpZGVvIiwgQXRv
bVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogCiAgICAgaWYgKG1fcHJpdmF0ZS0+dHlw
ZSgpID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvKQogICAgICAgICByZXR1cm4g
YXVkaW9LaW5kOwpAQCAtMTAxLDEzICsxMDEsMTMgQEAgY29uc3QgU3RyaW5nJiBNZWRpYVN0cmVh
bVRyYWNrOjpsYWJlbCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+bGFiZWwoKTsKIH0K
IAotY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYVN0cmVhbVRyYWNrOjpjb250ZW50SGludCgpIGNv
bnN0Citjb25zdCBBdG9tU3RyaW5nJiBNZWRpYVN0cmVhbVRyYWNrOjpjb250ZW50SGludCgpIGNv
bnN0CiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gc3Bl
ZWNoSGludCgic3BlZWNoIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0g
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gbXVzaWNIaW50KCJt
dXNpYyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGRldGFpbEhpbnQoImRldGFpbCIsIEF0
b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxjb25zdCBBdG9taWNTdHJpbmc+IHRleHRIaW50KCJ0ZXh0IiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0
b21pY1N0cmluZz4gbW90aW9uSGludCgibW90aW9uIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+
IHNwZWVjaEhpbnQoInNwZWVjaCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gbXVzaWNIaW50KCJt
dXNpYyIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gZGV0YWlsSGludCgiZGV0YWlsIiwgQXRvbVN0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxj
b25zdCBBdG9tU3RyaW5nPiB0ZXh0SGludCgidGV4dCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4g
bW90aW9uSGludCgibW90aW9uIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwog
CiAgICAgc3dpdGNoIChtX3ByaXZhdGUtPmNvbnRlbnRIaW50KCkpIHsKICAgICBjYXNlIE1lZGlh
U3RyZWFtVHJhY2tQcml2YXRlOjpIaW50VmFsdWU6OkVtcHR5OgpAQCAtNDU5LDcgKzQ1OSw3IEBA
IHZvaWQgTWVkaWFTdHJlYW1UcmFjazo6dHJhY2tNdXRlZENoYW5nZWQoTWVkaWFTdHJlYW1UcmFj
a1ByaXZhdGUmKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2V2ZW50VGFza1F1ZXVlLmVucXVl
dWVUYXNrKFt0aGlzLCBtdXRlZCA9IHRoaXMtPm11dGVkKCldIHsKLSAgICAgICAgQXRvbWljU3Ry
aW5nIGV2ZW50VHlwZSA9IG11dGVkID8gZXZlbnROYW1lcygpLm11dGVFdmVudCA6IGV2ZW50TmFt
ZXMoKS51bm11dGVFdmVudDsKKyAgICAgICAgQXRvbVN0cmluZyBldmVudFR5cGUgPSBtdXRlZCA/
IGV2ZW50TmFtZXMoKS5tdXRlRXZlbnQgOiBldmVudE5hbWVzKCkudW5tdXRlRXZlbnQ7CiAgICAg
ICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudFR5cGUsIEV2ZW50OjpDYW5CdWJi
bGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwogICAgIH0pOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oCmlu
ZGV4IDAyZjFlNzk0ZGE1OGZhOTJiNzc5M2Q0MDgzOTc0ZDIyZTQ4ZGJlMTYuLjliZjM4Yjc2NDNj
MjBmMjI4YmEyNTQ0OWFiOGQ4NzFkNmViZmY0ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oCkBAIC03MCwxMSArNzAs
MTEgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGlzQ2FudmFzKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KIAotICAgIGNvbnN0IEF0b21pY1N0cmluZyYga2luZCgpIGNvbnN0OworICAg
IGNvbnN0IEF0b21TdHJpbmcmIGtpbmQoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBjb25z
dCBTdHJpbmcmIGlkKCkgY29uc3Q7CiAgICAgY29uc3QgU3RyaW5nJiBsYWJlbCgpIGNvbnN0Owog
Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBjb250ZW50SGludCgpIGNvbnN0OworICAgIGNvbnN0
IEF0b21TdHJpbmcmIGNvbnRlbnRIaW50KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRDb250ZW50SGlu
dChjb25zdCBTdHJpbmcmKTsKICAgICAgICAgCiAgICAgYm9vbCBlbmFibGVkKCkgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
VHJhY2tFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtVHJhY2tFdmVudC5jcHAKaW5kZXggNjdjNDVjZGViNGM4MDRjNzkyY2I5Mjc3Y2UxOGJi
MjQwZmEwMzU0Yi4uM2Y0NGQ5YzI4ZmE1OTk3NTkwODMwYTFmNGVhODNjNDEyMDQwMDk3YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRy
YWNrRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1UcmFja0V2ZW50LmNwcApAQCAtMzEsMjMgKzMxLDIzIEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotUmVmPE1lZGlhU3RyZWFtVHJhY2tFdmVudD4gTWVkaWFTdHJlYW1UcmFja0V2
ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBDYW5CdWJibGUgY2FuQnViYmxl
LCBJc0NhbmNlbGFibGUgY2FuY2VsYWJsZSwgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+JiYgdHJh
Y2spCitSZWY8TWVkaWFTdHJlYW1UcmFja0V2ZW50PiBNZWRpYVN0cmVhbVRyYWNrRXZlbnQ6OmNy
ZWF0ZShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBDYW5CdWJibGUgY2FuQnViYmxlLCBJc0NhbmNl
bGFibGUgY2FuY2VsYWJsZSwgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+JiYgdHJhY2spCiB7CiAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFTdHJlYW1UcmFja0V2ZW50KHR5cGUsIGNhbkJ1
YmJsZSwgY2FuY2VsYWJsZSwgV1RGTW92ZSh0cmFjaykpKTsKIH0KIAotUmVmPE1lZGlhU3RyZWFt
VHJhY2tFdmVudD4gTWVkaWFTdHJlYW1UcmFja0V2ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3Ry
aW5nJiB0eXBlLCBjb25zdCBJbml0JiBpbml0aWFsaXplciwgSXNUcnVzdGVkIGlzVHJ1c3RlZCkK
K1JlZjxNZWRpYVN0cmVhbVRyYWNrRXZlbnQ+IE1lZGlhU3RyZWFtVHJhY2tFdmVudDo6Y3JlYXRl
KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IEluaXQmIGluaXRpYWxpemVyLCBJc1RydXN0
ZWQgaXNUcnVzdGVkKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhU3RyZWFtVHJh
Y2tFdmVudCh0eXBlLCBpbml0aWFsaXplciwgaXNUcnVzdGVkKSk7CiB9CiAKLU1lZGlhU3RyZWFt
VHJhY2tFdmVudDo6TWVkaWFTdHJlYW1UcmFja0V2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlw
ZSwgQ2FuQnViYmxlIGNhbkJ1YmJsZSwgSXNDYW5jZWxhYmxlIGNhbmNlbGFibGUsIFJlZlB0cjxN
ZWRpYVN0cmVhbVRyYWNrPiYmIHRyYWNrKQorTWVkaWFTdHJlYW1UcmFja0V2ZW50OjpNZWRpYVN0
cmVhbVRyYWNrRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgQ2FuQnViYmxlIGNhbkJ1YmJs
ZSwgSXNDYW5jZWxhYmxlIGNhbmNlbGFibGUsIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYmIHRy
YWNrKQogICAgIDogRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlKQogICAgICwgbV90
cmFjayhXVEZNb3ZlKHRyYWNrKSkKIHsKIH0KIAotTWVkaWFTdHJlYW1UcmFja0V2ZW50OjpNZWRp
YVN0cmVhbVRyYWNrRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiBp
bml0aWFsaXplciwgSXNUcnVzdGVkIGlzVHJ1c3RlZCkKK01lZGlhU3RyZWFtVHJhY2tFdmVudDo6
TWVkaWFTdHJlYW1UcmFja0V2ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IEluaXQm
IGluaXRpYWxpemVyLCBJc1RydXN0ZWQgaXNUcnVzdGVkKQogICAgIDogRXZlbnQodHlwZSwgaW5p
dGlhbGl6ZXIsIGlzVHJ1c3RlZCkKICAgICAsIG1fdHJhY2soaW5pdGlhbGl6ZXIudHJhY2spCiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtVHJhY2tFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbVRyYWNrRXZlbnQuaAppbmRleCBkMTU1ZGFlYjFlMTNhNGRlMjlmZDkwNzI0MzYxOGNj
NDM4ZWFlZWE3Li43ZDg5ZjlhZWRlY2VlZTg3ZDc5YTBlYTg5ZmJhZTg5ODU0MjQ2ODg1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJh
Y2tFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1UcmFja0V2ZW50LmgKQEAgLTI3LDcgKzI3LDcgQEAKICNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKQogCiAjaW5jbHVkZSAiRXZlbnQuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJp
bmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApAQCAtMzcsMTIgKzM3LDEyIEBAIGNsYXNzIE1lZGlhU3RyZWFtVHJhY2tFdmVudCA6
IHB1YmxpYyBFdmVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+TWVkaWFTdHJlYW1UcmFja0V2
ZW50KCk7CiAKLSAgICBzdGF0aWMgUmVmPE1lZGlhU3RyZWFtVHJhY2tFdmVudD4gY3JlYXRlKGNv
bnN0IEF0b21pY1N0cmluZyYgdHlwZSwgQ2FuQnViYmxlLCBJc0NhbmNlbGFibGUsIFJlZlB0cjxN
ZWRpYVN0cmVhbVRyYWNrPiYmKTsKKyAgICBzdGF0aWMgUmVmPE1lZGlhU3RyZWFtVHJhY2tFdmVu
dD4gY3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIENhbkJ1YmJsZSwgSXNDYW5jZWxhYmxl
LCBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4mJik7CiAKICAgICBzdHJ1Y3QgSW5pdCA6IEV2ZW50
SW5pdCB7CiAgICAgICAgIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiB0cmFjazsKICAgICB9Owot
ICAgIHN0YXRpYyBSZWY8TWVkaWFTdHJlYW1UcmFja0V2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiwgSXNUcnVzdGVkID0gSXNUcnVzdGVkOjpObyk7Cisg
ICAgc3RhdGljIFJlZjxNZWRpYVN0cmVhbVRyYWNrRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9tU3Ry
aW5nJiB0eXBlLCBjb25zdCBJbml0JiwgSXNUcnVzdGVkID0gSXNUcnVzdGVkOjpObyk7CiAKICAg
ICBNZWRpYVN0cmVhbVRyYWNrKiB0cmFjaygpIGNvbnN0OwogCkBAIC01MCw4ICs1MCw4IEBAIHB1
YmxpYzoKICAgICBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRl
OwogCiBwcml2YXRlOgotICAgIE1lZGlhU3RyZWFtVHJhY2tFdmVudChjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUsIENhbkJ1YmJsZSwgSXNDYW5jZWxhYmxlLCBSZWZQdHI8TWVkaWFTdHJlYW1UcmFj
az4mJik7Ci0gICAgTWVkaWFTdHJlYW1UcmFja0V2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlw
ZSwgY29uc3QgSW5pdCYsIElzVHJ1c3RlZCk7CisgICAgTWVkaWFTdHJlYW1UcmFja0V2ZW50KGNv
bnN0IEF0b21TdHJpbmcmIHR5cGUsIENhbkJ1YmJsZSwgSXNDYW5jZWxhYmxlLCBSZWZQdHI8TWVk
aWFTdHJlYW1UcmFjaz4mJik7CisgICAgTWVkaWFTdHJlYW1UcmFja0V2ZW50KGNvbnN0IEF0b21T
dHJpbmcmIHR5cGUsIGNvbnN0IEluaXQmLCBJc1RydXN0ZWQpOwogCiAgICAgUmVmUHRyPE1lZGlh
U3RyZWFtVHJhY2s+IG1fdHJhY2s7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9PdmVyY29uc3RyYWluZWRFcnJvckV2ZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL092ZXJjb25zdHJhaW5lZEVycm9yRXZlbnQuaAppbmRl
eCBjODA0ZTJhMmU5MDNlYzVkNTA3YjQxYTEzMWU1Nzk2ODcwMzY5MDUyLi44ZjcxZTAzNmY1ODdm
Mzk0NTMwMzIyYjZiMzliNWQ5NjAxMDBlNzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL092ZXJjb25zdHJhaW5lZEVycm9yRXZlbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL092ZXJjb25zdHJhaW5lZEVycm9yRXZlbnQu
aApAQCAtMzIsNyArMzIsNyBAQAogCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJPdmVy
Y29uc3RyYWluZWRFcnJvci5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC00MCw3ICs0MCw3IEBAIGNsYXNzIE92ZXJjb25zdHJhaW5lZEVycm9yRXZlbnQgOiBwdWJs
aWMgRXZlbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgfk92ZXJjb25zdHJhaW5lZEVycm9yRXZl
bnQoKSA9IGRlZmF1bHQ7CiAKLSAgICBzdGF0aWMgUmVmPE92ZXJjb25zdHJhaW5lZEVycm9yRXZl
bnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIENhbkJ1YmJsZSBjYW5CdWJibGUs
IElzQ2FuY2VsYWJsZSBjYW5jZWxhYmxlLCBPdmVyY29uc3RyYWluZWRFcnJvciogZXJyb3IpCisg
ICAgc3RhdGljIFJlZjxPdmVyY29uc3RyYWluZWRFcnJvckV2ZW50PiBjcmVhdGUoY29uc3QgQXRv
bVN0cmluZyYgdHlwZSwgQ2FuQnViYmxlIGNhbkJ1YmJsZSwgSXNDYW5jZWxhYmxlIGNhbmNlbGFi
bGUsIE92ZXJjb25zdHJhaW5lZEVycm9yKiBlcnJvcikKICAgICB7CiAgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IE92ZXJjb25zdHJhaW5lZEVycm9yRXZlbnQodHlwZSwgY2FuQnViYmxlLCBj
YW5jZWxhYmxlLCBlcnJvcikpOwogICAgIH0KQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAg
ICAgICBSZWZQdHI8T3ZlcmNvbnN0cmFpbmVkRXJyb3I+IGVycm9yOwogICAgIH07CiAKLSAgICBz
dGF0aWMgUmVmPE92ZXJjb25zdHJhaW5lZEVycm9yRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNT
dHJpbmcmIHR5cGUsIGNvbnN0IEluaXQmIGluaXRpYWxpemVyLCBJc1RydXN0ZWQgaXNUcnVzdGVk
ID0gSXNUcnVzdGVkOjpObykKKyAgICBzdGF0aWMgUmVmPE92ZXJjb25zdHJhaW5lZEVycm9yRXZl
bnQ+IGNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiBpbml0aWFsaXpl
ciwgSXNUcnVzdGVkIGlzVHJ1c3RlZCA9IElzVHJ1c3RlZDo6Tm8pCiAgICAgewogICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBPdmVyY29uc3RyYWluZWRFcnJvckV2ZW50KHR5cGUsIGluaXRp
YWxpemVyLCBpc1RydXN0ZWQpKTsKICAgICB9CkBAIC01OCwxMiArNTgsMTIgQEAgcHVibGljOgog
ICAgIEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gT3ZlcmNvbnN0cmFpbmVkRXJyb3JFdmVudEludGVyZmFjZVR5cGU7IH0KIAogcHJpdmF0ZToK
LSAgICBleHBsaWNpdCBPdmVyY29uc3RyYWluZWRFcnJvckV2ZW50KGNvbnN0IEF0b21pY1N0cmlu
ZyYgdHlwZSwgQ2FuQnViYmxlIGNhbkJ1YmJsZSwgSXNDYW5jZWxhYmxlIGNhbmNlbGFibGUsIE92
ZXJjb25zdHJhaW5lZEVycm9yKiBlcnJvcikKKyAgICBleHBsaWNpdCBPdmVyY29uc3RyYWluZWRF
cnJvckV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIENhbkJ1YmJsZSBjYW5CdWJibGUsIElz
Q2FuY2VsYWJsZSBjYW5jZWxhYmxlLCBPdmVyY29uc3RyYWluZWRFcnJvciogZXJyb3IpCiAgICAg
ICAgIDogRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlKQogICAgICAgICAsIG1fZXJy
b3IoZXJyb3IpCiAgICAgewogICAgIH0KLSAgICBPdmVyY29uc3RyYWluZWRFcnJvckV2ZW50KGNv
bnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgSW5pdCYgaW5pdGlhbGl6ZXIsIElzVHJ1c3Rl
ZCBpc1RydXN0ZWQpCisgICAgT3ZlcmNvbnN0cmFpbmVkRXJyb3JFdmVudChjb25zdCBBdG9tU3Ry
aW5nJiB0eXBlLCBjb25zdCBJbml0JiBpbml0aWFsaXplciwgSXNUcnVzdGVkIGlzVHJ1c3RlZCkK
ICAgICAgICAgOiBFdmVudCh0eXBlLCBpbml0aWFsaXplciwgaXNUcnVzdGVkKQogICAgICAgICAs
IG1fZXJyb3IoaW5pdGlhbGl6ZXIuZXJyb3IpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GVG9uZUNoYW5nZUV2ZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlRvbmVDaGFuZ2VFdmVudC5j
cHAKaW5kZXggYjA2N2QxMjYxNTdjOWVkZGQzZTU3MzMwZjUxMjcxZTg5ZjE5MWJiZC4uNDAzNWRi
ZjcyM2FjYTYzZTQ0OGIwODY2NzE2MjUxMjE5YThjZDkxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GVG9uZUNoYW5nZUV2ZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZUb25lQ2hhbmdlRXZl
bnQuY3BwCkBAIC0zNyw3ICszNyw3IEBAIFJlZjxSVENEVE1GVG9uZUNoYW5nZUV2ZW50PiBSVENE
VE1GVG9uZUNoYW5nZUV2ZW50OjpjcmVhdGUoY29uc3QgU3RyaW5nJiB0b25lKQogICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQodG9uZSkpOwogfQogCi1SZWY8
UlRDRFRNRlRvbmVDaGFuZ2VFdmVudD4gUlRDRFRNRlRvbmVDaGFuZ2VFdmVudDo6Y3JlYXRlKGNv
bnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgSW5pdCYgaW5pdGlhbGl6ZXIsIElzVHJ1c3Rl
ZCBpc1RydXN0ZWQpCitSZWY8UlRDRFRNRlRvbmVDaGFuZ2VFdmVudD4gUlRDRFRNRlRvbmVDaGFu
Z2VFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IEluaXQmIGluaXRp
YWxpemVyLCBJc1RydXN0ZWQgaXNUcnVzdGVkKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQodHlwZSwgaW5pdGlhbGl6ZXIsIGlzVHJ1c3RlZCkpOwog
fQpAQCAtNDgsNyArNDgsNyBAQCBSVENEVE1GVG9uZUNoYW5nZUV2ZW50OjpSVENEVE1GVG9uZUNo
YW5nZUV2ZW50KGNvbnN0IFN0cmluZyYgdG9uZSkKIHsKIH0KIAotUlRDRFRNRlRvbmVDaGFuZ2VF
dmVudDo6UlRDRFRNRlRvbmVDaGFuZ2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNv
bnN0IEluaXQmIGluaXRpYWxpemVyLCBJc1RydXN0ZWQgaXNUcnVzdGVkKQorUlRDRFRNRlRvbmVD
aGFuZ2VFdmVudDo6UlRDRFRNRlRvbmVDaGFuZ2VFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBl
LCBjb25zdCBJbml0JiBpbml0aWFsaXplciwgSXNUcnVzdGVkIGlzVHJ1c3RlZCkKICAgICA6IEV2
ZW50KHR5cGUsIGluaXRpYWxpemVyLCBpc1RydXN0ZWQpCiAgICAgLCBtX3RvbmUoaW5pdGlhbGl6
ZXIudG9uZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDRFRNRlRvbmVDaGFuZ2VFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENEVE1GVG9uZUNoYW5nZUV2ZW50LmgKaW5kZXggYzhkNmIyODExNDI3ODFkNDdi
ZTE1Y2M5MGM1Nzc2NzE4OGQ3OTk0ZC4uYjAzN2Q2M2E1NGIwMTRlMWQ4NDZhOTk1MmRmOTIzMjI3
NWUyNTc3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENEVE1GVG9uZUNoYW5nZUV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENEVE1GVG9uZUNoYW5nZUV2ZW50LmgKQEAgLTI4LDcgKzI4LDcgQEAKICNpZiBF
TkFCTEUoV0VCX1JUQ19EVE1GKQogCiAjaW5jbHVkZSAiRXZlbnQuaCIKLSNpbmNsdWRlIDx3dGYv
dGV4dC9BdG9taWNTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgICAg
IFN0cmluZyB0b25lOwogICAgIH07CiAKLSAgICBzdGF0aWMgUmVmPFJUQ0RUTUZUb25lQ2hhbmdl
RXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IEluaXQmLCBJc1Ry
dXN0ZWQgPSBJc1RydXN0ZWQ6Ok5vKTsKKyAgICBzdGF0aWMgUmVmPFJUQ0RUTUZUb25lQ2hhbmdl
RXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiwgSXNUcnVz
dGVkID0gSXNUcnVzdGVkOjpObyk7CiAKICAgICBjb25zdCBTdHJpbmcmIHRvbmUoKSBjb25zdDsK
IApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgUlRD
RFRNRlRvbmVDaGFuZ2VFdmVudChjb25zdCBTdHJpbmcmIHRvbmUpOwotICAgIFJUQ0RUTUZUb25l
Q2hhbmdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiwgSXNUcnVz
dGVkKTsKKyAgICBSVENEVE1GVG9uZUNoYW5nZUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUs
IGNvbnN0IEluaXQmLCBJc1RydXN0ZWQpOwogCiAgICAgU3RyaW5nIG1fdG9uZTsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwu
Y3BwCmluZGV4IGI2MmM0NGZkODc2ZWQyNjNhMzkxNTlkYjIzMmZiZmUzZGNhM2FiYWQuLjc1NGU0
NjhjOTIxNTZlOTczYmNkZmI0NjFhYzUzZjZkZDU1NTVkNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuY3BwCkBAIC00NCwx
NSArNDQsMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVE
X0lNUEwoUlRDRGF0YUNoYW5uZWwpOwogCi1zdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBibG9i
S2V5d29yZCgpCitzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgYmxvYktleXdvcmQoKQogewotICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGJsb2IoImJsb2IiLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
QXRvbVN0cmluZz4gYmxvYigiYmxvYiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKICAgICByZXR1cm4gYmxvYjsKIH0KIAotc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgYXJy
YXlidWZmZXJLZXl3b3JkKCkKK3N0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBhcnJheWJ1ZmZlcktl
eXdvcmQoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGFycmF5
YnVmZmVyKCJhcnJheWJ1ZmZlciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9tU3RyaW5nPiBhcnJheWJ1ZmZlcigiYXJy
YXlidWZmZXIiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJu
IGFycmF5YnVmZmVyOwogfQogCkBAIC04Myw3ICs4Myw3IEBAIHNpemVfdCBSVENEYXRhQ2hhbm5l
bDo6YnVmZmVyZWRBbW91bnQoKSBjb25zdAogICAgIHJldHVybiBtX2hhbmRsZXItPmJ1ZmZlcmVk
QW1vdW50KCk7CiB9CiAKLWNvbnN0IEF0b21pY1N0cmluZyYgUlRDRGF0YUNoYW5uZWw6OmJpbmFy
eVR5cGUoKSBjb25zdAorY29uc3QgQXRvbVN0cmluZyYgUlRDRGF0YUNoYW5uZWw6OmJpbmFyeVR5
cGUoKSBjb25zdAogewogICAgIHN3aXRjaCAobV9iaW5hcnlUeXBlKSB7CiAgICAgY2FzZSBCaW5h
cnlUeXBlOjpCbG9iOgpAQCAtOTYsNyArOTYsNyBAQCBjb25zdCBBdG9taWNTdHJpbmcmIFJUQ0Rh
dGFDaGFubmVsOjpiaW5hcnlUeXBlKCkgY29uc3QKICAgICByZXR1cm4gZW1wdHlBdG9tKCk7CiB9
CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IFJUQ0RhdGFDaGFubmVsOjpzZXRCaW5hcnlUeXBlKGNvbnN0
IEF0b21pY1N0cmluZyYgYmluYXJ5VHlwZSkKK0V4Y2VwdGlvbk9yPHZvaWQ+IFJUQ0RhdGFDaGFu
bmVsOjpzZXRCaW5hcnlUeXBlKGNvbnN0IEF0b21TdHJpbmcmIGJpbmFyeVR5cGUpCiB7CiAgICAg
aWYgKGJpbmFyeVR5cGUgPT0gYmxvYktleXdvcmQoKSkgewogICAgICAgICBtX2JpbmFyeVR5cGUg
PSBCaW5hcnlUeXBlOjpCbG9iOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5oCmluZGV4IDBkNjQzNmQ0OWRmYWQ4MmExMWE5YWIxZWQz
OTJmNDM3NjU3NWQ4MWQuLmJkY2Y5ZTE4NmM1MDcyZjYwNTUyNmRmYjFmYjQ4YzM2YjVhYzcxOWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNo
YW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFD
aGFubmVsLmgKQEAgLTY0LDggKzY0LDggQEAgcHVibGljOgogICAgIHNpemVfdCBidWZmZXJlZEFt
b3VudExvd1RocmVzaG9sZCgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyZWRBbW91bnRMb3dUaHJl
c2hvbGQ7IH0KICAgICB2b2lkIHNldEJ1ZmZlcmVkQW1vdW50TG93VGhyZXNob2xkKHNpemVfdCB2
YWx1ZSkgeyBtX2J1ZmZlcmVkQW1vdW50TG93VGhyZXNob2xkID0gdmFsdWU7IH0KIAotICAgIGNv
bnN0IEF0b21pY1N0cmluZyYgYmluYXJ5VHlwZSgpIGNvbnN0OwotICAgIEV4Y2VwdGlvbk9yPHZv
aWQ+IHNldEJpbmFyeVR5cGUoY29uc3QgQXRvbWljU3RyaW5nJik7CisgICAgY29uc3QgQXRvbVN0
cmluZyYgYmluYXJ5VHlwZSgpIGNvbnN0OworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldEJpbmFy
eVR5cGUoY29uc3QgQXRvbVN0cmluZyYpOwogCiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2VuZChj
b25zdCBTdHJpbmcmKTsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZW5kKEpTQzo6QXJyYXlCdWZm
ZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
RGF0YUNoYW5uZWxFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ0RhdGFDaGFubmVsRXZlbnQuY3BwCmluZGV4IGQ3MmZiN2E5MTYwNzU0YTRkNDZhOTYzOWU2
N2UyOGJiYjYwNzNhYTEuLjkxODA1ODFiNmE3ZjNjZmFlMGJjMTFhZGQ2MGViN2U2Y2IxYzRjOTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNo
YW5uZWxFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENEYXRhQ2hhbm5lbEV2ZW50LmNwcApAQCAtMzIsMjMgKzMyLDIzIEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotUmVmPFJUQ0RhdGFDaGFubmVsRXZlbnQ+IFJUQ0RhdGFDaGFubmVsRXZlbnQ6
OmNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIENhbkJ1YmJsZSBjYW5CdWJibGUsIElz
Q2FuY2VsYWJsZSBjYW5jZWxhYmxlLCBSZWY8UlRDRGF0YUNoYW5uZWw+JiYgY2hhbm5lbCkKK1Jl
ZjxSVENEYXRhQ2hhbm5lbEV2ZW50PiBSVENEYXRhQ2hhbm5lbEV2ZW50OjpjcmVhdGUoY29uc3Qg
QXRvbVN0cmluZyYgdHlwZSwgQ2FuQnViYmxlIGNhbkJ1YmJsZSwgSXNDYW5jZWxhYmxlIGNhbmNl
bGFibGUsIFJlZjxSVENEYXRhQ2hhbm5lbD4mJiBjaGFubmVsKQogewogICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFJUQ0RhdGFDaGFubmVsRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxl
LCBXVEZNb3ZlKGNoYW5uZWwpKSk7CiB9CiAKLVJlZjxSVENEYXRhQ2hhbm5lbEV2ZW50PiBSVENE
YXRhQ2hhbm5lbEV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBJbml0JiYg
aW5pdGlhbGl6ZXIsIElzVHJ1c3RlZCBpc1RydXN0ZWQpCitSZWY8UlRDRGF0YUNoYW5uZWxFdmVu
dD4gUlRDRGF0YUNoYW5uZWxFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIElu
aXQmJiBpbml0aWFsaXplciwgSXNUcnVzdGVkIGlzVHJ1c3RlZCkKIHsKICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBSVENEYXRhQ2hhbm5lbEV2ZW50KHR5cGUsIFdURk1vdmUoaW5pdGlhbGl6ZXIp
LCBpc1RydXN0ZWQpKTsKIH0KIAotUlRDRGF0YUNoYW5uZWxFdmVudDo6UlRDRGF0YUNoYW5uZWxF
dmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIENhbkJ1YmJsZSBjYW5CdWJibGUsIElzQ2Fu
Y2VsYWJsZSBjYW5jZWxhYmxlLCBSZWY8UlRDRGF0YUNoYW5uZWw+JiYgY2hhbm5lbCkKK1JUQ0Rh
dGFDaGFubmVsRXZlbnQ6OlJUQ0RhdGFDaGFubmVsRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlw
ZSwgQ2FuQnViYmxlIGNhbkJ1YmJsZSwgSXNDYW5jZWxhYmxlIGNhbmNlbGFibGUsIFJlZjxSVENE
YXRhQ2hhbm5lbD4mJiBjaGFubmVsKQogICAgIDogRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5j
ZWxhYmxlKQogICAgICwgbV9jaGFubmVsKFdURk1vdmUoY2hhbm5lbCkpCiB7CiB9CiAKLVJUQ0Rh
dGFDaGFubmVsRXZlbnQ6OlJUQ0RhdGFDaGFubmVsRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlLCBJbml0JiYgaW5pdGlhbGl6ZXIsIElzVHJ1c3RlZCBpc1RydXN0ZWQpCitSVENEYXRhQ2hh
bm5lbEV2ZW50OjpSVENEYXRhQ2hhbm5lbEV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIElu
aXQmJiBpbml0aWFsaXplciwgSXNUcnVzdGVkIGlzVHJ1c3RlZCkKICAgICA6IEV2ZW50KHR5cGUs
IGluaXRpYWxpemVyLCBpc1RydXN0ZWQpCiAgICAgLCBtX2NoYW5uZWwoaW5pdGlhbGl6ZXIuY2hh
bm5lbC5yZWxlYXNlTm9uTnVsbCgpKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsRXZlbnQuaAppbmRleCA0OWIyNGM3ZWNj
NmQ4YWY0MmRhMDg3YTM5YTUwNTFlNWUxYTQyODJlLi5lNzE2NzQ3MTYzMDhhOTQ5NWFmNWIxZjA0
ODg3OWZkZTFiMjgzOWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ0RhdGFDaGFubmVsRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsRXZlbnQuaApAQCAtMjksNyArMjksNyBAQAogCiAj
aW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJSVENEYXRhQ2hhbm5lbC5oIgotI2luY2x1ZGUg
PHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zOSwxNiArMzksMTYgQEAgcHVibGljOgog
ICAgICAgICBSZWZQdHI8UlRDRGF0YUNoYW5uZWw+IGNoYW5uZWw7CiAgICAgfTsKIAotICAgIHN0
YXRpYyBSZWY8UlRDRGF0YUNoYW5uZWxFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYg
dHlwZSwgQ2FuQnViYmxlLCBJc0NhbmNlbGFibGUsIFJlZjxSVENEYXRhQ2hhbm5lbD4mJik7Ci0g
ICAgc3RhdGljIFJlZjxSVENEYXRhQ2hhbm5lbEV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3Ry
aW5nJiB0eXBlLCBJbml0JiYsIElzVHJ1c3RlZCA9IElzVHJ1c3RlZDo6Tm8pOworICAgIHN0YXRp
YyBSZWY8UlRDRGF0YUNoYW5uZWxFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUs
IENhbkJ1YmJsZSwgSXNDYW5jZWxhYmxlLCBSZWY8UlRDRGF0YUNoYW5uZWw+JiYpOworICAgIHN0
YXRpYyBSZWY8UlRDRGF0YUNoYW5uZWxFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmIHR5
cGUsIEluaXQmJiwgSXNUcnVzdGVkID0gSXNUcnVzdGVkOjpObyk7CiAKICAgICBSVENEYXRhQ2hh
bm5lbCYgY2hhbm5lbCgpOwogCiAgICAgdmlydHVhbCBFdmVudEludGVyZmFjZSBldmVudEludGVy
ZmFjZSgpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIFJUQ0RhdGFDaGFubmVsRXZlbnQoY29uc3Qg
QXRvbWljU3RyaW5nJiB0eXBlLCBDYW5CdWJibGUsIElzQ2FuY2VsYWJsZSwgUmVmPFJUQ0RhdGFD
aGFubmVsPiYmKTsKLSAgICBSVENEYXRhQ2hhbm5lbEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYg
dHlwZSwgSW5pdCYmLCBJc1RydXN0ZWQpOworICAgIFJUQ0RhdGFDaGFubmVsRXZlbnQoY29uc3Qg
QXRvbVN0cmluZyYgdHlwZSwgQ2FuQnViYmxlLCBJc0NhbmNlbGFibGUsIFJlZjxSVENEYXRhQ2hh
bm5lbD4mJik7CisgICAgUlRDRGF0YUNoYW5uZWxFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBl
LCBJbml0JiYsIElzVHJ1c3RlZCk7CiAKICAgICBSZWY8UlRDRGF0YUNoYW5uZWw+IG1fY2hhbm5l
bDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1BlZXJDb25uZWN0aW9uSWNlRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50LmNwcAppbmRleCA1MzZhYjUxMjRiZjVh
ODg3MjgwNGI4NjVhYzA4YmE2YzNlYzkwZmRlLi5mYTY3NmUyODU2ZDQ0NTdhNDI1ZmU1MDg1MWQ2
YjEwYzE5YzlkZmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1BlZXJDb25uZWN0aW9uSWNlRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25JY2VFdmVudC5jcHAKQEAgLTM3LDEz
ICszNywxMyBAQCBSZWY8UlRDUGVlckNvbm5lY3Rpb25JY2VFdmVudD4gUlRDUGVlckNvbm5lY3Rp
b25JY2VFdmVudDo6Y3JlYXRlKENhbkJ1YmJsZSBjYW5CdQogICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFJUQ1BlZXJDb25uZWN0aW9uSWNlRXZlbnQoZXZlbnROYW1lcygpLmljZWNhbmRpZGF0ZUV2
ZW50LCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIFdURk1vdmUoY2FuZGlkYXRlKSwgV1RGTW92ZShz
ZXJ2ZXJVUkwpKSk7CiB9CiAKLVJlZjxSVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50PiBSVENQZWVy
Q29ubmVjdGlvbkljZUV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBJbml0
JiYgaW5pdCkKK1JlZjxSVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50PiBSVENQZWVyQ29ubmVjdGlv
bkljZUV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgSW5pdCYmIGluaXQpCiB7
CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUlRDUGVlckNvbm5lY3Rpb25JY2VFdmVudCh0eXBl
LCBpbml0LmJ1YmJsZXMgPyBDYW5CdWJibGU6OlllcyA6IENhbkJ1YmJsZTo6Tm8sCiAgICAgICAg
IGluaXQuY2FuY2VsYWJsZSA/IElzQ2FuY2VsYWJsZTo6WWVzIDogSXNDYW5jZWxhYmxlOjpObywg
V1RGTW92ZShpbml0LmNhbmRpZGF0ZSksIFdURk1vdmUoaW5pdC51cmwpKSk7CiB9CiAKLVJUQ1Bl
ZXJDb25uZWN0aW9uSWNlRXZlbnQ6OlJUQ1BlZXJDb25uZWN0aW9uSWNlRXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlLCBDYW5CdWJibGUgY2FuQnViYmxlLCBJc0NhbmNlbGFibGUgY2FuY2Vs
YWJsZSwgUmVmUHRyPFJUQ0ljZUNhbmRpZGF0ZT4mJiBjYW5kaWRhdGUsIFN0cmluZyYmIHNlcnZl
clVSTCkKK1JUQ1BlZXJDb25uZWN0aW9uSWNlRXZlbnQ6OlJUQ1BlZXJDb25uZWN0aW9uSWNlRXZl
bnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgQ2FuQnViYmxlIGNhbkJ1YmJsZSwgSXNDYW5jZWxh
YmxlIGNhbmNlbGFibGUsIFJlZlB0cjxSVENJY2VDYW5kaWRhdGU+JiYgY2FuZGlkYXRlLCBTdHJp
bmcmJiBzZXJ2ZXJVUkwpCiAgICAgOiBFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUp
CiAgICAgLCBtX2NhbmRpZGF0ZShXVEZNb3ZlKGNhbmRpZGF0ZSkpCiAgICAgLCBtX3VybChXVEZN
b3ZlKHNlcnZlclVSTCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uSWNlRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25JY2VFdmVudC5oCmluZGV4IDVmNjlkOGVh
N2Y3NDg5ZmZmYzk3NjkzMDNhNTBjZTBhZmZhMDA1OTYuLjk5MmU2ODFhOTNjZWQ2MzNiMjVkNDRh
Y2VhNjVjNGFmYWYwY2I0YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25JY2VFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25JY2VFdmVudC5oCkBAIC0yNyw3
ICsyNyw3IEBACiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAKICNpbmNsdWRlICJFdmVudC5oIgotI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21T
dHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUlRDSWNlQ2FuZGlkYXRlOwpA
QCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgICAgIFN0cmluZyB1cmw7CiAgICAgfTsKIAot
ICAgIHN0YXRpYyBSZWY8UlRDUGVlckNvbm5lY3Rpb25JY2VFdmVudD4gY3JlYXRlKGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSwgSW5pdCYmKTsKKyAgICBzdGF0aWMgUmVmPFJUQ1BlZXJDb25uZWN0
aW9uSWNlRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBJbml0JiYpOwogICAg
IHN0YXRpYyBSZWY8UlRDUGVlckNvbm5lY3Rpb25JY2VFdmVudD4gY3JlYXRlKENhbkJ1YmJsZSwg
SXNDYW5jZWxhYmxlLCBSZWZQdHI8UlRDSWNlQ2FuZGlkYXRlPiYmLCBTdHJpbmcmJiBzZXJ2ZXJV
UkwpOwogCiAgICAgUlRDSWNlQ2FuZGlkYXRlKiBjYW5kaWRhdGUoKSBjb25zdDsKQEAgLTUwLDcg
KzUwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZh
Y2UoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBSVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50KGNv
bnN0IEF0b21pY1N0cmluZyYgdHlwZSwgQ2FuQnViYmxlLCBJc0NhbmNlbGFibGUsIFJlZlB0cjxS
VENJY2VDYW5kaWRhdGU+JiYsIFN0cmluZyYmIHNlcnZlclVSTCk7CisgICAgUlRDUGVlckNvbm5l
Y3Rpb25JY2VFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBDYW5CdWJibGUsIElzQ2FuY2Vs
YWJsZSwgUmVmUHRyPFJUQ0ljZUNhbmRpZGF0ZT4mJiwgU3RyaW5nJiYgc2VydmVyVVJMKTsKIAog
ICAgIFJlZlB0cjxSVENJY2VDYW5kaWRhdGU+IG1fY2FuZGlkYXRlOwogICAgIFN0cmluZyBtX3Vy
bDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDVHJh
Y2tFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1RyYWNr
RXZlbnQuY3BwCmluZGV4IGQ0ZjMzNTVhNzJiNjE1OTU2YmE3NGNjOWFjNzA5Njg1MGFjODNhY2Uu
LjY3YzkyNmIxNGJhODFkOWVkNzNmNGE2NDcxNDkxOTFkOTkwNjg3NjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDVHJhY2tFdmVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENUcmFja0V2ZW50LmNwcApAQCAt
MzksMTcgKzM5LDE3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPFJUQ1RyYWNrRXZl
bnQ+IFJUQ1RyYWNrRXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIENhbkJ1
YmJsZSBjYW5CdWJibGUsIElzQ2FuY2VsYWJsZSBjYW5jZWxhYmxlLCBSZWZQdHI8UlRDUnRwUmVj
ZWl2ZXI+JiYgcmVjZWl2ZXIsIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYmIHRyYWNrLCBWZWN0
b3I8UmVmUHRyPE1lZGlhU3RyZWFtPj4mJiBzdHJlYW1zLCBSZWZQdHI8UlRDUnRwVHJhbnNjZWl2
ZXI+JiYgdHJhbnNjZWl2ZXIpCitSZWY8UlRDVHJhY2tFdmVudD4gUlRDVHJhY2tFdmVudDo6Y3Jl
YXRlKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIENhbkJ1YmJsZSBjYW5CdWJibGUsIElzQ2FuY2Vs
YWJsZSBjYW5jZWxhYmxlLCBSZWZQdHI8UlRDUnRwUmVjZWl2ZXI+JiYgcmVjZWl2ZXIsIFJlZlB0
cjxNZWRpYVN0cmVhbVRyYWNrPiYmIHRyYWNrLCBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtPj4m
JiBzdHJlYW1zLCBSZWZQdHI8UlRDUnRwVHJhbnNjZWl2ZXI+JiYgdHJhbnNjZWl2ZXIpCiB7CiAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUlRDVHJhY2tFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNh
bmNlbGFibGUsIFdURk1vdmUocmVjZWl2ZXIpLCBXVEZNb3ZlKHRyYWNrKSwgV1RGTW92ZShzdHJl
YW1zKSwgV1RGTW92ZSh0cmFuc2NlaXZlcikpKTsKIH0KIAotUmVmPFJUQ1RyYWNrRXZlbnQ+IFJU
Q1RyYWNrRXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IEluaXQm
IGluaXRpYWxpemVyLCBJc1RydXN0ZWQgaXNUcnVzdGVkKQorUmVmPFJUQ1RyYWNrRXZlbnQ+IFJU
Q1RyYWNrRXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiBp
bml0aWFsaXplciwgSXNUcnVzdGVkIGlzVHJ1c3RlZCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBSVENUcmFja0V2ZW50KHR5cGUsIGluaXRpYWxpemVyLCBpc1RydXN0ZWQpKTsKIH0KIAot
UlRDVHJhY2tFdmVudDo6UlRDVHJhY2tFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIENh
bkJ1YmJsZSBjYW5CdWJibGUsIElzQ2FuY2VsYWJsZSBjYW5jZWxhYmxlLCBSZWZQdHI8UlRDUnRw
UmVjZWl2ZXI+JiYgcmVjZWl2ZXIsIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYmIHRyYWNrLCBW
ZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtPj4mJiBzdHJlYW1zLCBSZWZQdHI8UlRDUnRwVHJhbnNj
ZWl2ZXI+JiYgdHJhbnNjZWl2ZXIpCitSVENUcmFja0V2ZW50OjpSVENUcmFja0V2ZW50KGNvbnN0
IEF0b21TdHJpbmcmIHR5cGUsIENhbkJ1YmJsZSBjYW5CdWJibGUsIElzQ2FuY2VsYWJsZSBjYW5j
ZWxhYmxlLCBSZWZQdHI8UlRDUnRwUmVjZWl2ZXI+JiYgcmVjZWl2ZXIsIFJlZlB0cjxNZWRpYVN0
cmVhbVRyYWNrPiYmIHRyYWNrLCBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtPj4mJiBzdHJlYW1z
LCBSZWZQdHI8UlRDUnRwVHJhbnNjZWl2ZXI+JiYgdHJhbnNjZWl2ZXIpCiAgICAgOiBFdmVudCh0
eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUpCiAgICAgLCBtX3JlY2VpdmVyKFdURk1vdmUocmVj
ZWl2ZXIpKQogICAgICwgbV90cmFjayhXVEZNb3ZlKHRyYWNrKSkKQEAgLTU4LDcgKzU4LDcgQEAg
UlRDVHJhY2tFdmVudDo6UlRDVHJhY2tFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIENh
bkJ1YmJsZSBjYW5CdWJibGUsIElzQ2EKIHsKIH0KIAotUlRDVHJhY2tFdmVudDo6UlRDVHJhY2tF
dmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IEluaXQmIGluaXRpYWxpemVyLCBJ
c1RydXN0ZWQgaXNUcnVzdGVkKQorUlRDVHJhY2tFdmVudDo6UlRDVHJhY2tFdmVudChjb25zdCBB
dG9tU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiBpbml0aWFsaXplciwgSXNUcnVzdGVkIGlzVHJ1
c3RlZCkKICAgICA6IEV2ZW50KHR5cGUsIGluaXRpYWxpemVyLCBpc1RydXN0ZWQpCiAgICAgLCBt
X3JlY2VpdmVyKGluaXRpYWxpemVyLnJlY2VpdmVyKQogICAgICwgbV90cmFjayhpbml0aWFsaXpl
ci50cmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDVHJhY2tFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENU
cmFja0V2ZW50LmgKaW5kZXggMTMyNTFjZGU4ZjgyYmMxMjc5ZDY1YTUxMmEwY2YxNmJjM2NiMjY5
Mi4uMzczOWU0OWQyNGVkNjJkOTdmN2JmZjk5OWIxMTc3ZTc4MWI2YTk5MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENUcmFja0V2ZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENUcmFja0V2ZW50LmgKQEAgLTMz
LDcgKzMzLDcgQEAKICNpZiBFTkFCTEUoV0VCX1JUQykKIAogI2luY2x1ZGUgIkV2ZW50LmgiCi0j
aW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRv
bVN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ2LDcgKzQ2LDcgQEAgdHlw
ZWRlZiBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtPj4gTWVkaWFTdHJlYW1BcnJheTsKIAogY2xh
c3MgUlRDVHJhY2tFdmVudCA6IHB1YmxpYyBFdmVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxSVENUcmFja0V2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBDYW5CdWJi
bGUsIElzQ2FuY2VsYWJsZSwgUmVmUHRyPFJUQ1J0cFJlY2VpdmVyPiYmLCBSZWZQdHI8TWVkaWFT
dHJlYW1UcmFjaz4mJiwgTWVkaWFTdHJlYW1BcnJheSYmLCBSZWZQdHI8UlRDUnRwVHJhbnNjZWl2
ZXI+JiYpOworICAgIHN0YXRpYyBSZWY8UlRDVHJhY2tFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21T
dHJpbmcmIHR5cGUsIENhbkJ1YmJsZSwgSXNDYW5jZWxhYmxlLCBSZWZQdHI8UlRDUnRwUmVjZWl2
ZXI+JiYsIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBNZWRpYVN0cmVhbUFycmF5JiYsIFJl
ZlB0cjxSVENSdHBUcmFuc2NlaXZlcj4mJik7CiAKICAgICBzdHJ1Y3QgSW5pdCA6IEV2ZW50SW5p
dCB7CiAgICAgICAgIFJlZlB0cjxSVENSdHBSZWNlaXZlcj4gcmVjZWl2ZXI7CkBAIC01NCw3ICs1
NCw3IEBAIHB1YmxpYzoKICAgICAgICAgTWVkaWFTdHJlYW1BcnJheSBzdHJlYW1zOwogICAgICAg
ICBSZWZQdHI8UlRDUnRwVHJhbnNjZWl2ZXI+IHRyYW5zY2VpdmVyOwogICAgIH07Ci0gICAgc3Rh
dGljIFJlZjxSVENUcmFja0V2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBj
b25zdCBJbml0JiwgSXNUcnVzdGVkID0gSXNUcnVzdGVkOjpObyk7CisgICAgc3RhdGljIFJlZjxS
VENUcmFja0V2ZW50PiBjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3QgSW5pdCYs
IElzVHJ1c3RlZCA9IElzVHJ1c3RlZDo6Tm8pOwogCiAgICAgUlRDUnRwUmVjZWl2ZXIqIHJlY2Vp
dmVyKCkgY29uc3QgeyByZXR1cm4gbV9yZWNlaXZlci5nZXQoKTsgfQogICAgIE1lZGlhU3RyZWFt
VHJhY2sqIHRyYWNrKCkgY29uc3QgIHsgcmV0dXJuIG1fdHJhY2suZ2V0KCk7IH0KQEAgLTY0LDgg
KzY0LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZh
Y2UoKSBjb25zdCB7IHJldHVybiBSVENUcmFja0V2ZW50SW50ZXJmYWNlVHlwZTsgfQogCiBwcml2
YXRlOgotICAgIFJUQ1RyYWNrRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBDYW5CdWJi
bGUsIElzQ2FuY2VsYWJsZSwgUmVmUHRyPFJUQ1J0cFJlY2VpdmVyPiYmLCBSZWZQdHI8TWVkaWFT
dHJlYW1UcmFjaz4mJiwgTWVkaWFTdHJlYW1BcnJheSYmLCBSZWZQdHI8UlRDUnRwVHJhbnNjZWl2
ZXI+JiYpOwotICAgIFJUQ1RyYWNrRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25z
dCBJbml0JiwgSXNUcnVzdGVkKTsKKyAgICBSVENUcmFja0V2ZW50KGNvbnN0IEF0b21TdHJpbmcm
IHR5cGUsIENhbkJ1YmJsZSwgSXNDYW5jZWxhYmxlLCBSZWZQdHI8UlRDUnRwUmVjZWl2ZXI+JiYs
IFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBNZWRpYVN0cmVhbUFycmF5JiYsIFJlZlB0cjxS
VENSdHBUcmFuc2NlaXZlcj4mJik7CisgICAgUlRDVHJhY2tFdmVudChjb25zdCBBdG9tU3RyaW5n
JiB0eXBlLCBjb25zdCBJbml0JiwgSXNUcnVzdGVkKTsKIAogICAgIFJlZlB0cjxSVENSdHBSZWNl
aXZlcj4gbV9yZWNlaXZlcjsKICAgICBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gbV90cmFjazsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvTWVyY2hh
bnRWYWxpZGF0aW9uRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVx
dWVzdC9NZXJjaGFudFZhbGlkYXRpb25FdmVudC5jcHAKaW5kZXggMzJhM2I2ZjFhZDY0YjEwMDE1
ODBhZGQzYTk5NWM0YTQwMzQwMDY2MS4uOTAyMTVhYTY3YzJjNjFhMWNhZDhlZTlhMzRkMzRmNjg2
ZDBmNDYxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVz
dC9NZXJjaGFudFZhbGlkYXRpb25FdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9wYXltZW50cmVxdWVzdC9NZXJjaGFudFZhbGlkYXRpb25FdmVudC5jcHAKQEAgLTMzLDEyICsz
MywxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxNZXJjaGFudFZhbGlkYXRpb25F
dmVudD4gTWVyY2hhbnRWYWxpZGF0aW9uRXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcm
IHR5cGUsIGNvbnN0IFN0cmluZyYgbWV0aG9kTmFtZSwgVVJMJiYgdmFsaWRhdGlvblVSTCkKK1Jl
ZjxNZXJjaGFudFZhbGlkYXRpb25FdmVudD4gTWVyY2hhbnRWYWxpZGF0aW9uRXZlbnQ6OmNyZWF0
ZShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG1ldGhvZE5hbWUsIFVSTCYm
IHZhbGlkYXRpb25VUkwpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVyY2hhbnRWYWxp
ZGF0aW9uRXZlbnQodHlwZSwgbWV0aG9kTmFtZSwgV1RGTW92ZSh2YWxpZGF0aW9uVVJMKSkpOwog
fQogCi1FeGNlcHRpb25PcjxSZWY8TWVyY2hhbnRWYWxpZGF0aW9uRXZlbnQ+PiBNZXJjaGFudFZh
bGlkYXRpb25FdmVudDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgQXRvbWljU3Ry
aW5nJiB0eXBlLCBJbml0JiYgZXZlbnRJbml0KQorRXhjZXB0aW9uT3I8UmVmPE1lcmNoYW50VmFs
aWRhdGlvbkV2ZW50Pj4gTWVyY2hhbnRWYWxpZGF0aW9uRXZlbnQ6OmNyZWF0ZShEb2N1bWVudCYg
ZG9jdW1lbnQsIGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIEluaXQmJiBldmVudEluaXQpCiB7CiAg
ICAgVVJMIHZhbGlkYXRpb25VUkwgeyBkb2N1bWVudC51cmwoKSwgZXZlbnRJbml0LnZhbGlkYXRp
b25VUkwgfTsKICAgICBpZiAoIXZhbGlkYXRpb25VUkwuaXNWYWxpZCgpKQpAQCAtNTQsNyArNTQs
NyBAQCBFeGNlcHRpb25PcjxSZWY8TWVyY2hhbnRWYWxpZGF0aW9uRXZlbnQ+PiBNZXJjaGFudFZh
bGlkYXRpb25FdmVudDo6Y3JlYXRlKERvY3VtZQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1l
cmNoYW50VmFsaWRhdGlvbkV2ZW50KHR5cGUsIFdURk1vdmUobWV0aG9kTmFtZSksIFdURk1vdmUo
dmFsaWRhdGlvblVSTCksIFdURk1vdmUoZXZlbnRJbml0KSkpOwogfQogCi1NZXJjaGFudFZhbGlk
YXRpb25FdmVudDo6TWVyY2hhbnRWYWxpZGF0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlLCBjb25zdCBTdHJpbmcmIG1ldGhvZE5hbWUsIFVSTCYmIHZhbGlkYXRpb25VUkwpCitNZXJj
aGFudFZhbGlkYXRpb25FdmVudDo6TWVyY2hhbnRWYWxpZGF0aW9uRXZlbnQoY29uc3QgQXRvbVN0
cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBtZXRob2ROYW1lLCBVUkwmJiB2YWxpZGF0aW9uVVJM
KQogICAgIDogRXZlbnQgeyB0eXBlLCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2Fu
Y2VsYWJsZTo6Tm8gfQogICAgICwgbV9tZXRob2ROYW1lIHsgbWV0aG9kTmFtZSB9CiAgICAgLCBt
X3ZhbGlkYXRpb25VUkwgeyBXVEZNb3ZlKHZhbGlkYXRpb25VUkwpIH0KQEAgLTYzLDcgKzYzLDcg
QEAgTWVyY2hhbnRWYWxpZGF0aW9uRXZlbnQ6Ok1lcmNoYW50VmFsaWRhdGlvbkV2ZW50KGNvbnN0
IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QKICAgICBBU1NFUlQobV92YWxpZGF0aW9uVVJMLmlz
VmFsaWQoKSk7CiB9CiAKLU1lcmNoYW50VmFsaWRhdGlvbkV2ZW50OjpNZXJjaGFudFZhbGlkYXRp
b25FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIFN0cmluZyYmIG1ldGhvZE5hbWUsIFVS
TCYmIHZhbGlkYXRpb25VUkwsIEluaXQmJiBldmVudEluaXQpCitNZXJjaGFudFZhbGlkYXRpb25F
dmVudDo6TWVyY2hhbnRWYWxpZGF0aW9uRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgU3Ry
aW5nJiYgbWV0aG9kTmFtZSwgVVJMJiYgdmFsaWRhdGlvblVSTCwgSW5pdCYmIGV2ZW50SW5pdCkK
ICAgICA6IEV2ZW50IHsgdHlwZSwgV1RGTW92ZShldmVudEluaXQpLCBJc1RydXN0ZWQ6Ok5vIH0K
ICAgICAsIG1fbWV0aG9kTmFtZSB7IFdURk1vdmUobWV0aG9kTmFtZSkgfQogICAgICwgbV92YWxp
ZGF0aW9uVVJMIHsgV1RGTW92ZSh2YWxpZGF0aW9uVVJMKSB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L01lcmNoYW50VmFsaWRhdGlvbkV2ZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L01lcmNoYW50VmFsaWRhdGlv
bkV2ZW50LmgKaW5kZXggMjlmZmZiZjIwYjI4NWY4ZjVlMGU2MTlkMDg3MWRkNjQ5NTI2NWQ0MS4u
ZTJiMWJkN2E3Y2MwNDQ4MTgyNWEzMWYxY2JmMmFlZDE1ZmZjZmJkYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9NZXJjaGFudFZhbGlkYXRpb25FdmVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvTWVyY2hhbnRW
YWxpZGF0aW9uRXZlbnQuaApAQCAtNDIsMTYgKzQyLDE2IEBAIHB1YmxpYzoKICAgICAgICAgU3Ry
aW5nIHZhbGlkYXRpb25VUkw7CiAgICAgfTsKIAotICAgIHN0YXRpYyBSZWY8TWVyY2hhbnRWYWxp
ZGF0aW9uRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmlu
ZyYgbWV0aG9kTmFtZSwgVVJMJiYgdmFsaWRhdGlvblVSTCk7Ci0gICAgc3RhdGljIEV4Y2VwdGlv
bk9yPFJlZjxNZXJjaGFudFZhbGlkYXRpb25FdmVudD4+IGNyZWF0ZShEb2N1bWVudCYsIGNvbnN0
IEF0b21pY1N0cmluZyYgdHlwZSwgSW5pdCYmKTsKKyAgICBzdGF0aWMgUmVmPE1lcmNoYW50VmFs
aWRhdGlvbkV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5n
JiBtZXRob2ROYW1lLCBVUkwmJiB2YWxpZGF0aW9uVVJMKTsKKyAgICBzdGF0aWMgRXhjZXB0aW9u
T3I8UmVmPE1lcmNoYW50VmFsaWRhdGlvbkV2ZW50Pj4gY3JlYXRlKERvY3VtZW50JiwgY29uc3Qg
QXRvbVN0cmluZyYgdHlwZSwgSW5pdCYmKTsKIAogICAgIGNvbnN0IFN0cmluZyYgbWV0aG9kTmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0aG9kTmFtZTsgfQogICAgIGNvbnN0IFN0cmluZyYgdmFs
aWRhdGlvblVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsaWRhdGlvblVSTC5zdHJpbmcoKTsgfQog
ICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGNvbXBsZXRlKFJlZjxET01Qcm9taXNlPiYmKTsKIAogcHJp
dmF0ZToKLSAgICBNZXJjaGFudFZhbGlkYXRpb25FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5
cGUsIGNvbnN0IFN0cmluZyYgbWV0aG9kTmFtZSwgVVJMJiYgdmFsaWRhdGlvblVSTCk7Ci0gICAg
TWVyY2hhbnRWYWxpZGF0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBTdHJpbmcm
JiBtZXRob2ROYW1lLCBVUkwmJiB2YWxpZGF0aW9uVVJMLCBJbml0JiYpOworICAgIE1lcmNoYW50
VmFsaWRhdGlvbkV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgbWV0
aG9kTmFtZSwgVVJMJiYgdmFsaWRhdGlvblVSTCk7CisgICAgTWVyY2hhbnRWYWxpZGF0aW9uRXZl
bnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgU3RyaW5nJiYgbWV0aG9kTmFtZSwgVVJMJiYgdmFs
aWRhdGlvblVSTCwgSW5pdCYmKTsKIAogICAgIC8vIEV2ZW50CiAgICAgRXZlbnRJbnRlcmZhY2Ug
ZXZlbnRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudE1ldGhvZENoYW5nZUV2ZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudE1ldGhvZENoYW5nZUV2
ZW50LmNwcAppbmRleCA2MmQ0MDVjZmFkZjIwMjY0ZTYzNGY2NmFiYjU1MGQ2NGNkZTNiOGY0Li44
NzM2NDE2NjI4MTU4YjIyYjA5NDc4ZDhlYjcwNDFjNmNhNWY4MGQ4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRNZXRob2RDaGFuZ2VFdmVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50
TWV0aG9kQ2hhbmdlRXZlbnQuY3BwCkBAIC0zNSwxNCArMzUsMTQgQEAgRXZlbnRJbnRlcmZhY2Ug
UGF5bWVudE1ldGhvZENoYW5nZUV2ZW50OjpldmVudEludGVyZmFjZSgpIGNvbnN0CiAgICAgcmV0
dXJuIFBheW1lbnRNZXRob2RDaGFuZ2VFdmVudEludGVyZmFjZVR5cGU7CiB9CiAKLVBheW1lbnRN
ZXRob2RDaGFuZ2VFdmVudDo6UGF5bWVudE1ldGhvZENoYW5nZUV2ZW50KGNvbnN0IEF0b21pY1N0
cmluZyYgdHlwZSwgSW5pdCYmIGV2ZW50SW5pdCkKK1BheW1lbnRNZXRob2RDaGFuZ2VFdmVudDo6
UGF5bWVudE1ldGhvZENoYW5nZUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIEluaXQmJiBl
dmVudEluaXQpCiAgICAgOiBQYXltZW50UmVxdWVzdFVwZGF0ZUV2ZW50IHsgdHlwZSwgZXZlbnRJ
bml0IH0KICAgICAsIG1fbWV0aG9kTmFtZSB7IFdURk1vdmUoZXZlbnRJbml0Lm1ldGhvZE5hbWUp
IH0KICAgICAsIG1fbWV0aG9kRGV0YWlscyB7IEpTVmFsdWVJbldyYXBwZWRPYmplY3QgeyBldmVu
dEluaXQubWV0aG9kRGV0YWlscy5nZXQoKSB9IH0KIHsKIH0KIAotUGF5bWVudE1ldGhvZENoYW5n
ZUV2ZW50OjpQYXltZW50TWV0aG9kQ2hhbmdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBl
LCBjb25zdCBTdHJpbmcmIG1ldGhvZE5hbWUsIE1ldGhvZERldGFpbHNGdW5jdGlvbiYmIG1ldGhv
ZERldGFpbHNGdW5jdGlvbikKK1BheW1lbnRNZXRob2RDaGFuZ2VFdmVudDo6UGF5bWVudE1ldGhv
ZENoYW5nZUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgbWV0aG9k
TmFtZSwgTWV0aG9kRGV0YWlsc0Z1bmN0aW9uJiYgbWV0aG9kRGV0YWlsc0Z1bmN0aW9uKQogICAg
IDogUGF5bWVudFJlcXVlc3RVcGRhdGVFdmVudCB7IHR5cGUgfQogICAgICwgbV9tZXRob2ROYW1l
IHsgbWV0aG9kTmFtZSB9CiAgICAgLCBtX21ldGhvZERldGFpbHMgeyBXVEZNb3ZlKG1ldGhvZERl
dGFpbHNGdW5jdGlvbikgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXlt
ZW50cmVxdWVzdC9QYXltZW50TWV0aG9kQ2hhbmdlRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudE1ldGhvZENoYW5nZUV2ZW50LmgKaW5kZXggOTJm
NWE3ODNiNzY5ZDkyMTQ3OGRhMjNlOTNhNzNkMTVmY2M1YmU2Yi4uODJlMzMxNzA0MjA2ZjdlM2Qz
OGJjMjk4M2EwMDg4YzIxZWVkNjQ4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9wYXltZW50cmVxdWVzdC9QYXltZW50TWV0aG9kQ2hhbmdlRXZlbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRNZXRob2RDaGFuZ2VFdmVudC5o
CkBAIC02Miw4ICs2Miw4IEBAIHB1YmxpYzoKICAgICB9OwogCiBwcml2YXRlOgotICAgIFBheW1l
bnRNZXRob2RDaGFuZ2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIEluaXQmJik7Ci0g
ICAgUGF5bWVudE1ldGhvZENoYW5nZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29u
c3QgU3RyaW5nJiBtZXRob2ROYW1lLCBNZXRob2REZXRhaWxzRnVuY3Rpb24mJik7CisgICAgUGF5
bWVudE1ldGhvZENoYW5nZUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIEluaXQmJik7Cisg
ICAgUGF5bWVudE1ldGhvZENoYW5nZUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0
IFN0cmluZyYgbWV0aG9kTmFtZSwgTWV0aG9kRGV0YWlsc0Z1bmN0aW9uJiYpOwogCiAgICAgU3Ry
aW5nIG1fbWV0aG9kTmFtZTsKICAgICBNZXRob2REZXRhaWxzVHlwZSBtX21ldGhvZERldGFpbHM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1l
bnRSZXF1ZXN0VXBkYXRlRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50
cmVxdWVzdC9QYXltZW50UmVxdWVzdFVwZGF0ZUV2ZW50LmNwcAppbmRleCBhMGQ3ZDc4M2Y4Yjhh
ZTI1NTUzNmUyMjIzMjZkNzY0YTQ0ZTcxOTlhLi44NzE1NTljOWQxMTU3NWMxNzdlNjY0OWI0MDVi
OTJmMzlhZTEzMjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRy
ZXF1ZXN0L1BheW1lbnRSZXF1ZXN0VXBkYXRlRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3RVcGRhdGVFdmVudC5jcHAKQEAg
LTMzLDEzICszMywxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBheW1lbnRSZXF1ZXN0
VXBkYXRlRXZlbnQ6OlBheW1lbnRSZXF1ZXN0VXBkYXRlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5n
JiB0eXBlLCBjb25zdCBQYXltZW50UmVxdWVzdFVwZGF0ZUV2ZW50SW5pdCYgZXZlbnRJbml0KQor
UGF5bWVudFJlcXVlc3RVcGRhdGVFdmVudDo6UGF5bWVudFJlcXVlc3RVcGRhdGVFdmVudChjb25z
dCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBQYXltZW50UmVxdWVzdFVwZGF0ZUV2ZW50SW5pdCYg
ZXZlbnRJbml0KQogICAgIDogRXZlbnQgeyB0eXBlLCBldmVudEluaXQsIElzVHJ1c3RlZDo6Tm8g
fQogewogICAgIEFTU0VSVCghaXNUcnVzdGVkKCkpOwogfQogCi1QYXltZW50UmVxdWVzdFVwZGF0
ZUV2ZW50OjpQYXltZW50UmVxdWVzdFVwZGF0ZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlw
ZSkKK1BheW1lbnRSZXF1ZXN0VXBkYXRlRXZlbnQ6OlBheW1lbnRSZXF1ZXN0VXBkYXRlRXZlbnQo
Y29uc3QgQXRvbVN0cmluZyYgdHlwZSkKICAgICA6IEV2ZW50IHsgdHlwZSwgQ2FuQnViYmxlOjpO
bywgSXNDYW5jZWxhYmxlOjpObyB9CiB7CiAgICAgQVNTRVJUKGlzVHJ1c3RlZCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVl
c3RVcGRhdGVFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9Q
YXltZW50UmVxdWVzdFVwZGF0ZUV2ZW50LmgKaW5kZXggMWU3OTA5YmQ2NDg2Mjg1NTdjMDgwY2Nl
MDgyZDM5NDI0OTk5YjEzZi4uNGEwYWNkM2MwNzhiMmI1Yjc2ODU2YWQ2MDBlMDA5NWMyY2Y0NTY5
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXlt
ZW50UmVxdWVzdFVwZGF0ZUV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXlt
ZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdFVwZGF0ZUV2ZW50LmgKQEAgLTQ1LDggKzQ1LDggQEAg
cHVibGljOgogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHVwZGF0ZVdpdGgoUmVmPERPTVByb21pc2U+
JiYpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgZXhwbGljaXQgUGF5bWVudFJlcXVlc3RVcGRhdGVFdmVu
dChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUpOwotICAgIFBheW1lbnRSZXF1ZXN0VXBkYXRlRXZl
bnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBQYXltZW50UmVxdWVzdFVwZGF0ZUV2
ZW50SW5pdCYpOworICAgIGV4cGxpY2l0IFBheW1lbnRSZXF1ZXN0VXBkYXRlRXZlbnQoY29uc3Qg
QXRvbVN0cmluZyYgdHlwZSk7CisgICAgUGF5bWVudFJlcXVlc3RVcGRhdGVFdmVudChjb25zdCBB
dG9tU3RyaW5nJiB0eXBlLCBjb25zdCBQYXltZW50UmVxdWVzdFVwZGF0ZUV2ZW50SW5pdCYpOwog
CiAgICAgLy8gRXZlbnQKICAgICBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1lv
dVR1YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdp
bnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcAppbmRleCA1MTg3YWRmYmVkMDkxMmZjYzhh
N2NmZDA2NGI4ZWMxMmVlOWI5OTI1Li5iYTk1YmY1MTgxYTIwYWMwMTlmYjNmMGZiMDlmZjY1Nzhh
YTQ4ODA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvWW91VHVi
ZVBsdWdpblJlcGxhY2VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdp
bnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcApAQCAtODUsMTkgKzg1LDE5IEBAIGJvb2wg
WW91VHViZVBsdWdpblJlcGxhY2VtZW50OjppbnN0YWxsUmVwbGFjZW1lbnQoU2hhZG93Um9vdCYg
cm9vdCkKIAogICAgIGF1dG8gaWZyYW1lRWxlbWVudCA9IEhUTUxJRnJhbWVFbGVtZW50OjpjcmVh
dGUoSFRNTE5hbWVzOjppZnJhbWVUYWcsIG1fcGFyZW50RWxlbWVudC0+ZG9jdW1lbnQoKSk7CiAg
ICAgaWYgKG1fYXR0cmlidXRlcy5jb250YWlucygid2lkdGgiKSkKLSAgICAgICAgaWZyYW1lRWxl
bWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OndpZHRo
QXR0ciwgQXRvbWljU3RyaW5nKCIxMDAlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCkpOworICAgICAgICBpZnJhbWVFbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hy
b25pemF0aW9uKEhUTUxOYW1lczo6d2lkdGhBdHRyLCBBdG9tU3RyaW5nKCIxMDAlIiwgQXRvbVN0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKICAgICAKICAgICBjb25zdCBhdXRvJiBoZWln
aHRWYWx1ZSA9IG1fYXR0cmlidXRlcy5maW5kKCJoZWlnaHQiKTsKICAgICBpZiAoaGVpZ2h0VmFs
dWUgIT0gbV9hdHRyaWJ1dGVzLmVuZCgpKSB7Ci0gICAgICAgIGlmcmFtZUVsZW1lbnQtPnNldEF0
dHJpYnV0ZShIVE1MTmFtZXM6OnN0eWxlQXR0ciwgQXRvbWljU3RyaW5nKCJtYXgtaGVpZ2h0OiAx
MDAlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgICAgICBpZnJh
bWVFbGVtZW50LT5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpzdHlsZUF0dHIsIEF0b21TdHJpbmco
Im1heC1oZWlnaHQ6IDEwMCUiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwog
ICAgICAgICBpZnJhbWVFbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9u
KEhUTUxOYW1lczo6aGVpZ2h0QXR0ciwgaGVpZ2h0VmFsdWUtPnZhbHVlKTsKICAgICB9CiAKICAg
ICBpZnJhbWVFbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxO
YW1lczo6c3JjQXR0ciwgeW91VHViZVVSTChtX2F0dHJpYnV0ZXMuZ2V0KCJzcmMiKSkpOwotICAg
IGlmcmFtZUVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5h
bWVzOjpmcmFtZWJvcmRlckF0dHIsIEF0b21pY1N0cmluZygiMCIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBpZnJhbWVFbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRo
b3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6ZnJhbWVib3JkZXJBdHRyLCBBdG9tU3RyaW5n
KCIwIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKICAgICAKICAgICAvLyBE
aXNhYmxlIGZyYW1lIGZsYXR0ZW5pbmcgZm9yIHRoaXMgaWZyYW1lLgotICAgIGlmcmFtZUVsZW1l
bnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpzY3JvbGxp
bmdBdHRyLCBBdG9taWNTdHJpbmcoIm5vIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCkpOworICAgIGlmcmFtZUVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6
YXRpb24oSFRNTE5hbWVzOjpzY3JvbGxpbmdBdHRyLCBBdG9tU3RyaW5nKCJubyIsIEF0b21TdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CiAgICAgbV9lbWJlZFNoYWRvd0VsZW1lbnQtPmFw
cGVuZENoaWxkKGlmcmFtZUVsZW1lbnQpOwogCiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmNwcAppbmRleCBiYTYz
YTc4OTBkZmM4NmVjMDYyY2RlNjZkN2JhNTBkNTU4NWQ3YzBiLi4zMmI2NWQ4MjBhYzM0NThlMmFj
N2QyZTg2NzZlY2JlYzY1ZWJiNmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
c3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5jcHAKQEAgLTE4MCw3ICsxODAsNyBAQCB2b2lkIFNwZWVj
aFN5bnRoZXNpczo6cmVzdW1lKCkKICAgICB9CiB9CiAKLXZvaWQgU3BlZWNoU3ludGhlc2lzOjpm
aXJlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBTcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2UmIHV0dGVyYW5jZSwgdW5zaWduZWQgbG9uZyBjaGFySW5kZXgsIGNvbnN0IFN0cmluZyYgbmFt
ZSkKK3ZvaWQgU3BlZWNoU3ludGhlc2lzOjpmaXJlRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlw
ZSwgU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJiB1dHRlcmFuY2UsIHVuc2lnbmVkIGxvbmcgY2hh
ckluZGV4LCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgdXR0ZXJhbmNlLmRpc3BhdGNoRXZl
bnQoU3BlZWNoU3ludGhlc2lzRXZlbnQ6OmNyZWF0ZSh0eXBlLCBjaGFySW5kZXgsIChNb25vdG9u
aWNUaW1lOjpub3coKSAtIHV0dGVyYW5jZS5zdGFydFRpbWUoKSkuc2Vjb25kcygpLCBuYW1lKSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50
aGVzaXMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5o
CmluZGV4IDRhMzE1OTQxMTg4NjcyYTg2ODFlMjg3MTUwYTBlMWFkMTc2OGEzMjUuLjEzMzE1ZTZk
NmIwZWQyOTZkMjU2Nzc1NTRkNWZkNWZhMDU4ODc1NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5oCkBAIC04MSw3ICs4MSw3IEBAIHByaXZh
dGU6CiAgICAgCiAgICAgdm9pZCBzdGFydFNwZWFraW5nSW1tZWRpYXRlbHkoU3BlZWNoU3ludGhl
c2lzVXR0ZXJhbmNlJik7CiAgICAgdm9pZCBoYW5kbGVTcGVha2luZ0NvbXBsZXRlZChTcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2UmLCBib29sIGVycm9yT2NjdXJyZWQpOwotICAgIHZvaWQgZmlyZUV2
ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJiwg
dW5zaWduZWQgbG9uZyBjaGFySW5kZXgsIGNvbnN0IFN0cmluZyYgbmFtZSk7CisgICAgdm9pZCBm
aXJlRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
JiwgdW5zaWduZWQgbG9uZyBjaGFySW5kZXgsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIFJlc3RyaWN0aW9ucyB0byBjaGFuZ2UgZGVmYXVs
dCBiZWhhdmlvcnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9T
cGVlY2hTeW50aGVzaXNFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9T
cGVlY2hTeW50aGVzaXNFdmVudC5jcHAKaW5kZXggZjJmZTAyNWNkOWNiODNmMzQ0NzU3NzQ1YmMx
YmE4NzBmZWJlODExOS4uZmIyMDhkYjM2MWE4NTIzOTRhYjYxMjVlZmY1NzU3ZmRlNGVjMWQwYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lz
RXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRo
ZXNpc0V2ZW50LmNwcApAQCAtMzAsMTIgKzMwLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotUmVmPFNwZWVjaFN5bnRoZXNpc0V2ZW50PiBTcGVlY2hTeW50aGVzaXNFdmVudDo6Y3JlYXRl
KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgdW5zaWduZWQgY2hhckluZGV4LCBmbG9hdCBlbGFw
c2VkVGltZSwgY29uc3QgU3RyaW5nJiBuYW1lKQorUmVmPFNwZWVjaFN5bnRoZXNpc0V2ZW50PiBT
cGVlY2hTeW50aGVzaXNFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIHVuc2ln
bmVkIGNoYXJJbmRleCwgZmxvYXQgZWxhcHNlZFRpbWUsIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsK
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTcGVlY2hTeW50aGVzaXNFdmVudCh0eXBlLCBjaGFy
SW5kZXgsIGVsYXBzZWRUaW1lLCBuYW1lKSk7CiB9CiAKLVNwZWVjaFN5bnRoZXNpc0V2ZW50OjpT
cGVlY2hTeW50aGVzaXNFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIHVuc2lnbmVkIGNo
YXJJbmRleCwgZmxvYXQgZWxhcHNlZFRpbWUsIGNvbnN0IFN0cmluZyYgbmFtZSkKK1NwZWVjaFN5
bnRoZXNpc0V2ZW50OjpTcGVlY2hTeW50aGVzaXNFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBl
LCB1bnNpZ25lZCBjaGFySW5kZXgsIGZsb2F0IGVsYXBzZWRUaW1lLCBjb25zdCBTdHJpbmcmIG5h
bWUpCiAgICAgOiBFdmVudCh0eXBlLCBDYW5CdWJibGU6Ok5vLCBJc0NhbmNlbGFibGU6Ok5vKQog
ICAgICwgbV9jaGFySW5kZXgoY2hhckluZGV4KQogICAgICwgbV9lbGFwc2VkVGltZShlbGFwc2Vk
VGltZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5
bnRoZXNpc0V2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50
aGVzaXNFdmVudC5oCmluZGV4IDZlNzIwNGIyYmQwNzkyODU4YzAyZTEyYTUwNDE2NGVkNTY0OGMz
YzMuLjIwOTRmYzE5YzkxNDc0MmJiYmM0YjQyNjczZjQ4NGRhN2ZmMjJmNWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc0V2ZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzRXZlbnQuaApA
QCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNwZWVjaFN5bnRo
ZXNpc0V2ZW50IDogcHVibGljIEV2ZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNwZWVj
aFN5bnRoZXNpc0V2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCB1bnNpZ25l
ZCBjaGFySW5kZXgsIGZsb2F0IGVsYXBzZWRUaW1lLCBjb25zdCBTdHJpbmcmIG5hbWUpOworICAg
IHN0YXRpYyBSZWY8U3BlZWNoU3ludGhlc2lzRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9tU3RyaW5n
JiB0eXBlLCB1bnNpZ25lZCBjaGFySW5kZXgsIGZsb2F0IGVsYXBzZWRUaW1lLCBjb25zdCBTdHJp
bmcmIG5hbWUpOwogCiAgICAgdW5zaWduZWQgbG9uZyBjaGFySW5kZXgoKSBjb25zdCB7IHJldHVy
biBtX2NoYXJJbmRleDsgfQogICAgIGZsb2F0IGVsYXBzZWRUaW1lKCkgY29uc3QgeyByZXR1cm4g
bV9lbGFwc2VkVGltZTsgfQpAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBF
dmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0IHsgcmV0dXJuIFNwZWVjaFN5bnRo
ZXNpc0V2ZW50SW50ZXJmYWNlVHlwZTsgfQogCiBwcml2YXRlOgotICAgIFNwZWVjaFN5bnRoZXNp
c0V2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgdW5zaWduZWQgY2hhckluZGV4LCBmbG9h
dCBlbGFwc2VkVGltZSwgY29uc3QgU3RyaW5nJiBuYW1lKTsKKyAgICBTcGVlY2hTeW50aGVzaXNF
dmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCB1bnNpZ25lZCBjaGFySW5kZXgsIGZsb2F0IGVs
YXBzZWRUaW1lLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCiAgICAgdW5zaWduZWQgbG9uZyBtX2No
YXJJbmRleDsKICAgICBmbG9hdCBtX2VsYXBzZWRUaW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKaW5kZXggY2YzNDY0ZTZlZWY2NmNiODVjNDgz
YmU2M2VjNGQxOWRmN2EzZDZmYy4uZjIxYThiNGUxYjkzOTUyZWU4MmUwNjNjN2Q3M2ZhMzU3YmJl
ODU3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Nv
bnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4
dC5oCkBAIC00Niw3ICs0Niw3IEBACiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVk
Lmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
LSNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvQXRvbVN0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9k
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291
cmNlTm9kZS5jcHAKaW5kZXggOWVlZDg3N2MyNjRhNWIzZjExZWVkYzg4NWMxY2VlYTQ5MzI0ZTEz
OS4uMTM1ODk1ODA0ZTMxNDIxMjE5ZDI5ZTk4MGRiYjQyMDhjMWQ3NGExZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRT
b3VyY2VOb2RlLmNwcApAQCAtMTg0LDcgKzE4NCw3IEBAIHZvaWQgQXVkaW9TY2hlZHVsZWRTb3Vy
Y2VOb2RlOjpmaW5pc2goKQogICAgIH0pOwogfQogCi1ib29sIEF1ZGlvU2NoZWR1bGVkU291cmNl
Tm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVm
PEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIsIGNvbnN0IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25z
JiBvcHRpb25zKQorYm9vbCBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGU6OmFkZEV2ZW50TGlzdGVu
ZXIoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0
ZW5lciwgY29uc3QgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgYm9v
bCBzdWNjZXNzID0gQXVkaW9Ob2RlOjphZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgV1RGTW92
ZShsaXN0ZW5lciksIG9wdGlvbnMpOwogICAgIGlmIChzdWNjZXNzICYmIGV2ZW50VHlwZSA9PSBl
dmVudE5hbWVzKCkuZW5kZWRFdmVudCkKQEAgLTE5Miw3ICsxOTIsNyBAQCBib29sIEF1ZGlvU2No
ZWR1bGVkU291cmNlTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2
ZW50VHlwZSwgUgogICAgIHJldHVybiBzdWNjZXNzOwogfQogCi1ib29sIEF1ZGlvU2NoZWR1bGVk
U291cmNlTm9kZTo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
VHlwZSwgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIsIGNvbnN0IExpc3RlbmVyT3B0aW9ucyYgb3B0
aW9ucykKK2Jvb2wgQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlOjpyZW1vdmVFdmVudExpc3RlbmVy
KGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIsIGNv
bnN0IExpc3RlbmVyT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBib29sIHN1Y2Nlc3MgPSBBdWRp
b05vZGU6OnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lciwgb3B0aW9ucyk7
CiAgICAgaWYgKHN1Y2Nlc3MgJiYgZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5lbmRlZEV2ZW50
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVk
dWxlZFNvdXJjZU5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9T
Y2hlZHVsZWRTb3VyY2VOb2RlLmgKaW5kZXggMmU5YzJlMDRmYzc5YTNkYzkyNzhlZjAyOWNkNzg0
NTUzNzY0ZjJlYy4uMGQ1NjIyYTcwN2I2YWYwOTllY2M5YzdlZDE4YmNjNTY1MGUxMzNmZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNv
dXJjZU5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2No
ZWR1bGVkU291cmNlTm9kZS5oCkBAIC04OCw4ICs4OCw4IEBAIHByb3RlY3RlZDoKICAgICBzdGF0
aWMgY29uc3QgZG91YmxlIFVua25vd25UaW1lOwogCiBwcml2YXRlOgotICAgIGJvb2wgYWRkRXZl
bnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50TGlzdGVu
ZXI+JiYsIGNvbnN0IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zJikgb3ZlcnJpZGU7Ci0gICAgYm9v
bCByZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVu
dExpc3RlbmVyJiwgY29uc3QgTGlzdGVuZXJPcHRpb25zJikgb3ZlcnJpZGU7CisgICAgYm9vbCBh
ZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50TGlz
dGVuZXI+JiYsIGNvbnN0IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zJikgb3ZlcnJpZGU7CisgICAg
Ym9vbCByZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgRXZl
bnRMaXN0ZW5lciYsIGNvbnN0IExpc3RlbmVyT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIHZvaWQg
cmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKSBvdmVycmlkZTsKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwCmlu
ZGV4IGQ1ZWJkMWY5MjJhYjE2MzU3MmJiZDNiMTk4YWVkZDZmMzIzNmJkZWUuLmQ1OWRlY2Y5OTUx
NmY2ZDAxYWY5YzFkOWZkYmYxZDBiMTAxOWU0MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcApAQCAtMjU2LDcg
KzI1Niw3IEBAIGRvdWJsZSBTY3JpcHRQcm9jZXNzb3JOb2RlOjpsYXRlbmN5VGltZSgpIGNvbnN0
CiAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKTsKIH0K
IAotYm9vbCBTY3JpcHRQcm9jZXNzb3JOb2RlOjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwgY29uc3Qg
QWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMmIG9wdGlvbnMpCitib29sIFNjcmlwdFByb2Nlc3Nvck5v
ZGU6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZl
bnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwgY29uc3QgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMmIG9w
dGlvbnMpCiB7CiAgICAgYm9vbCBzdWNjZXNzID0gQXVkaW9Ob2RlOjphZGRFdmVudExpc3RlbmVy
KGV2ZW50VHlwZSwgV1RGTW92ZShsaXN0ZW5lciksIG9wdGlvbnMpOwogICAgIGlmIChzdWNjZXNz
ICYmIGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkuYXVkaW9wcm9jZXNzRXZlbnQpCkBAIC0yNjQs
NyArMjY0LDcgQEAgYm9vbCBTY3JpcHRQcm9jZXNzb3JOb2RlOjphZGRFdmVudExpc3RlbmVyKGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXYKICAgICByZXR1cm4gc3VjY2VzczsK
IH0KIAotYm9vbCBTY3JpcHRQcm9jZXNzb3JOb2RlOjpyZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lciwgY29uc3Qg
TGlzdGVuZXJPcHRpb25zJiBvcHRpb25zKQorYm9vbCBTY3JpcHRQcm9jZXNzb3JOb2RlOjpyZW1v
dmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5l
ciYgbGlzdGVuZXIsIGNvbnN0IExpc3RlbmVyT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBib29s
IHN1Y2Nlc3MgPSBBdWRpb05vZGU6OnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0
ZW5lciwgb3B0aW9ucyk7CiAgICAgaWYgKHN1Y2Nlc3MgJiYgZXZlbnRUeXBlID09IGV2ZW50TmFt
ZXMoKS5hdWRpb3Byb2Nlc3NFdmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmgKaW5kZXggOThlMWYwYTQ3NzM0NjdkOTI2
ZGVlZTAxYmYyOGFiYjIxNDhiZDY0NS4uODBlMWFmZjU0ZmIyNTk3NDU0NTI4MDZlNzIwNjNlNTVl
ZTVmZmFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3Jp
cHRQcm9jZXNzb3JOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9T
Y3JpcHRQcm9jZXNzb3JOb2RlLmgKQEAgLTcxLDggKzcxLDggQEAgcHJpdmF0ZToKIAogICAgIHZv
aWQgZmlyZVByb2Nlc3NFdmVudCgpOwogCi0gICAgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiwgY29uc3QgQWRk
RXZlbnRMaXN0ZW5lck9wdGlvbnMmKSBvdmVycmlkZTsKLSAgICBib29sIHJlbW92ZUV2ZW50TGlz
dGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXImLCBjb25z
dCBMaXN0ZW5lck9wdGlvbnMmKSBvdmVycmlkZTsKKyAgICBib29sIGFkZEV2ZW50TGlzdGVuZXIo
Y29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiwgY29uc3Qg
QWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMmKSBvdmVycmlkZTsKKyAgICBib29sIHJlbW92ZUV2ZW50
TGlzdGVuZXIoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiwgY29u
c3QgTGlzdGVuZXJPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZW1vdmVBbGxFdmVudExp
c3RlbmVycygpIG92ZXJyaWRlOwogCiAgICAgLy8gRG91YmxlIGJ1ZmZlcmluZwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTmF0aXZlVHlw
ZURlY2xhcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xOYXRpdmVUeXBlRGVjbGFyYXRpb24uaAppbmRleCAzYWU2ZWQ2NDc1YjZjMjQ4ODA4NDRi
YmZjYmMyNmI1OTY1N2Q2MjQ4Li5mYmQ0ZmZiYzY4MTdhMzczOTNmNjZmOWY2MTg4ZDdjNzllMWVj
NjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xOYXRpdmVUeXBlRGVjbGFyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOYXRpdmVUeXBlRGVjbGFyYXRpb24uaApAQCAtNTksNyAr
NTksNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0ludCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJbnQ7
IH0KICAgICBib29sIGlzTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV9pc051bWJlcjsgfQogICAg
IGJvb2wgaXNGbG9hdGluZygpIGNvbnN0IHsgcmV0dXJuIG1faXNGbG9hdGluZzsgfQotICAgIGJv
b2wgaXNBdG9taWMoKSBjb25zdCB7IHJldHVybiBtX2lzQXRvbWljOyB9CisgICAgYm9vbCBpc0F0
b20oKSBjb25zdCB7IHJldHVybiBtX2lzQXRvbWljOyB9CiAgICAgYm9vbCBpc1ZlY3RvcigpIGNv
bnN0IHsgcmV0dXJuIG1faXNWZWN0b3I7IH0KICAgICBib29sIGlzTWF0cml4KCkgY29uc3QgeyBy
ZXR1cm4gbV9pc01hdHJpeDsgfQogICAgIGJvb2wgaXNUZXh0dXJlKCkgY29uc3QgeyByZXR1cm4g
bV9pc1RleHR1cmU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML01ldGFsL1dITFNMTmF0aXZlRnVuY3Rpb25Xcml0ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xOYXRpdmVGdW5jdGlvbldyaXRlci5j
cHAKaW5kZXggYWJhMzlkNWU5OThkYzc3ZWZiODZiZDJlMDVmOWMyNTllMWEyNmFiOS4uMGVkMTJk
MmZiYmM4OTUwZjY3MDliYjQ2MDIwYzE1NzY0OGFmNGY5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xOYXRpdmVGdW5jdGlvbldyaXRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hM
U0xOYXRpdmVGdW5jdGlvbldyaXRlci5jcHAKQEAgLTEwMiw3ICsxMDIsNyBAQCBTdHJpbmcgd3Jp
dGVOYXRpdmVGdW5jdGlvbihBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24mIG5hdGl2ZUZ1
bmN0aW9uRGVjbGFyYQogICAgICAgICAgICAgYXV0byYgcGFyYW1ldGVyTmFtZWRUeXBlID0gZG93
bmNhc3Q8QVNUOjpOYW1lZFR5cGU+KHBhcmFtZXRlclR5cGUpOwogICAgICAgICAgICAgaWYgKGlz
PEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPihwYXJhbWV0ZXJOYW1lZFR5cGUpKSB7CiAgICAg
ICAgICAgICAgICAgYXV0byYgcGFyYW1ldGVyTmF0aXZlVHlwZURlY2xhcmF0aW9uID0gZG93bmNh
c3Q8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+KHBhcmFtZXRlck5hbWVkVHlwZSk7Ci0gICAg
ICAgICAgICAgICAgaWYgKHBhcmFtZXRlck5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5pc0F0b21pYygp
KSB7CisgICAgICAgICAgICAgICAgaWYgKHBhcmFtZXRlck5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5p
c0F0b20oKSkgewogICAgICAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtl
U3RyaW5nKG1ldGFsUmV0dXJuTmFtZSwgJyAnLCBvdXRwdXRGdW5jdGlvbk5hbWUsICcoJywgbWV0
YWxQYXJhbWV0ZXJOYW1lLCAiIHgpIHtcbiIpKTsKICAgICAgICAgICAgICAgICAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQoIiAgICByZXR1cm4gYXRvbWljX2xvYWRfZXhwbGljaXQoJngsIG1lbW9y
eV9vcmRlcl9yZWxheGVkKTtcbiIpOwogICAgICAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZCgifVxuIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTFN5bnRoZXNpemVDb25zdHJ1Y3RvcnMuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTeW50aGVzaXplQ29uc3RydWN0b3JzLmNwcAppbmRl
eCBmMjg1MDYyMmM2N2FmY2ExNjA3MDIyZDgxZjQ3NzNjNTkzYTAyMDNjLi42NTI0MGRjZjEwNGYz
N2Y5YTA1NWEzYzFmZmQzOTYxOGNjMmM0ZDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN5bnRoZXNpemVDb25zdHJ1Y3RvcnMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3ludGhlc2l6ZUNvbnN0
cnVjdG9ycy5jcHAKQEAgLTEyNCw3ICsxMjQsNyBAQCBib29sIHN5bnRoZXNpemVDb25zdHJ1Y3Rv
cnMoUHJvZ3JhbSYgcHJvZ3JhbSkKICAgICBmb3IgKGF1dG8mIG5hbWVkVHlwZSA6IG5hbWVkVHlw
ZXMpIHsKICAgICAgICAgaWYgKG1hdGNoZXMobmFtZWRUeXBlLCBwcm9ncmFtLmludHJpbnNpY3Mo
KS52b2lkVHlwZSgpKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoaXM8QVNU
OjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+KHN0YXRpY19jYXN0PEFTVDo6TmFtZWRUeXBlJj4obmFt
ZWRUeXBlKSkgJiYgZG93bmNhc3Q8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+KHN0YXRpY19j
YXN0PEFTVDo6TmFtZWRUeXBlJj4obmFtZWRUeXBlKSkuaXNBdG9taWMoKSkKKyAgICAgICAgaWYg
KGlzPEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPihzdGF0aWNfY2FzdDxBU1Q6Ok5hbWVkVHlw
ZSY+KG5hbWVkVHlwZSkpICYmIGRvd25jYXN0PEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPihz
dGF0aWNfY2FzdDxBU1Q6Ok5hbWVkVHlwZSY+KG5hbWVkVHlwZSkpLmlzQXRvbSgpKQogICAgICAg
ICAgICAgY29udGludWU7CiAKICAgICAgICAgYXV0byB2YXJpYWJsZURlY2xhcmF0aW9uID0gbWFr
ZVVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24+KExleGVyOjpUb2tlbihuYW1lZFR5
cGUuZ2V0KCkub3JpZ2luKCkpLCBBU1Q6OlF1YWxpZmllcnMoKSwgVW5pcXVlUmVmPEFTVDo6VW5u
YW1lZFR5cGU+KEFTVDo6VHlwZVJlZmVyZW5jZTo6d3JhcChMZXhlcjo6VG9rZW4obmFtZWRUeXBl
LmdldCgpLm9yaWdpbigpKSwgbmFtZWRUeXBlLmdldCgpKSksIFN0cmluZygpLCBXVEY6Om51bGxv
cHQsIFdURjo6bnVsbG9wdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnNvY2tldHMvQ2xvc2VFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRz
L0Nsb3NlRXZlbnQuaAppbmRleCBiYzFhMGM0ODhiYmYyMmY2YWI3NGZhMDQ4NTA4M2UxM2VkMmQ5
Zjg1Li5kNzI4NWM0NDQ3NTY1Mzk5NDFjYmExNzJlNWYzZDE3YmI3YTI4NTQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvQ2xvc2VFdmVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9DbG9zZUV2ZW50LmgKQEAgLTQ4LDcgKzQ4
LDcgQEAgcHVibGljOgogICAgICAgICBTdHJpbmcgcmVhc29uOwogICAgIH07CiAKLSAgICBzdGF0
aWMgUmVmPENsb3NlRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0
IEluaXQmIGluaXRpYWxpemVyLCBJc1RydXN0ZWQgaXNUcnVzdGVkID0gSXNUcnVzdGVkOjpObykK
KyAgICBzdGF0aWMgUmVmPENsb3NlRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJiB0eXBl
LCBjb25zdCBJbml0JiBpbml0aWFsaXplciwgSXNUcnVzdGVkIGlzVHJ1c3RlZCA9IElzVHJ1c3Rl
ZDo6Tm8pCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDbG9zZUV2ZW50KHR5
cGUsIGluaXRpYWxpemVyLCBpc1RydXN0ZWQpKTsKICAgICB9CkBAIC02OSw3ICs2OSw3IEBAIHBy
aXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIENsb3NlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5n
JiB0eXBlLCBjb25zdCBJbml0JiBpbml0aWFsaXplciwgSXNUcnVzdGVkIGlzVHJ1c3RlZCkKKyAg
ICBDbG9zZUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IEluaXQmIGluaXRpYWxp
emVyLCBJc1RydXN0ZWQgaXNUcnVzdGVkKQogICAgICAgICA6IEV2ZW50KHR5cGUsIGluaXRpYWxp
emVyLCBpc1RydXN0ZWQpCiAgICAgICAgICwgbV93YXNDbGVhbihpbml0aWFsaXplci53YXNDbGVh
bikKICAgICAgICAgLCBtX2NvZGUoaW5pdGlhbGl6ZXIuY29kZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvVlJEaXNwbGF5RXZlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJ2ci9WUkRpc3BsYXlFdmVudC5jcHAKaW5kZXggOWI3NGMxODRjMzMwZDk1
NzY0MWVhNmNjMmZmZWQ5ZDQwYWU5YjE0Zi4uN2YxNGQxY2RjZjQ0YTM2NTE0MGYxMWNkYjc0M2M2
NDRlNDRiOGNhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9WUkRp
c3BsYXlFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9WUkRpc3Bs
YXlFdmVudC5jcHAKQEAgLTI5LDE0ICsyOSwxNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVZSRGlzcGxheUV2ZW50OjpWUkRpc3BsYXlFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUs
IGNvbnN0IEluaXQmIGluaXRpYWxpemVyLCBJc1RydXN0ZWQgaXNUcnVzdGVkKQorVlJEaXNwbGF5
RXZlbnQ6OlZSRGlzcGxheUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IEluaXQm
IGluaXRpYWxpemVyLCBJc1RydXN0ZWQgaXNUcnVzdGVkKQogICAgIDogRXZlbnQodHlwZSwgaW5p
dGlhbGl6ZXIsIGlzVHJ1c3RlZCkKICAgICAsIG1fZGlzcGxheShpbml0aWFsaXplci5kaXNwbGF5
KQogICAgICwgbV9yZWFzb24oaW5pdGlhbGl6ZXIucmVhc29uKQogewogfQogCi1WUkRpc3BsYXlF
dmVudDo6VlJEaXNwbGF5RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBSZWZQ
dHI8VlJEaXNwbGF5PiYgZGlzcGxheSwgT3B0aW9uYWw8VlJEaXNwbGF5RXZlbnRSZWFzb24+JiYg
cmVhc29uKQorVlJEaXNwbGF5RXZlbnQ6OlZSRGlzcGxheUV2ZW50KGNvbnN0IEF0b21TdHJpbmcm
IG5hbWUsIGNvbnN0IFJlZlB0cjxWUkRpc3BsYXk+JiBkaXNwbGF5LCBPcHRpb25hbDxWUkRpc3Bs
YXlFdmVudFJlYXNvbj4mJiByZWFzb24pCiAgICAgOiBFdmVudChuYW1lLCBDYW5CdWJibGU6Ok5v
LCBJc0NhbmNlbGFibGU6Ok5vKQogICAgICwgbV9kaXNwbGF5KGRpc3BsYXkpCiAgICAgLCBtX3Jl
YXNvbihXVEZNb3ZlKHJlYXNvbikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnZyL1ZSRGlzcGxheUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL1ZS
RGlzcGxheUV2ZW50LmgKaW5kZXggMjFjY2I4ODliZTM3MjY3Y2E2Yjg2NjkyMGExM2ZjYmM1Njk3
ZGFjYi4uZjc4ZDQ0ZWQ4ZmVmYjI4ZDNlMjQwM2I1NDU0ZjEwZWIwOTJiNzc4NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9WUkRpc3BsYXlFdmVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvVlJEaXNwbGF5RXZlbnQuaApAQCAtMzIsNyArMzIs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFZSRGlzcGxheUV2ZW50IGZpbmFsIDog
cHVibGljIEV2ZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFZSRGlzcGxheUV2ZW50PiBj
cmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBSZWZQdHI8VlJEaXNwbGF5PiYg
ZGlzcGxheSwgT3B0aW9uYWw8VlJEaXNwbGF5RXZlbnRSZWFzb24+JiYgcmVhc29uKQorICAgIHN0
YXRpYyBSZWY8VlJEaXNwbGF5RXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBj
b25zdCBSZWZQdHI8VlJEaXNwbGF5PiYgZGlzcGxheSwgT3B0aW9uYWw8VlJEaXNwbGF5RXZlbnRS
ZWFzb24+JiYgcmVhc29uKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVlJE
aXNwbGF5RXZlbnQodHlwZSwgZGlzcGxheSwgV1RGTW92ZShyZWFzb24pKSk7CiAgICAgfQpAQCAt
NDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgICAgIE9wdGlvbmFsPFZSRGlzcGxheUV2ZW50UmVh
c29uPiByZWFzb247CiAgICAgfTsKIAotICAgIHN0YXRpYyBSZWY8VlJEaXNwbGF5RXZlbnQ+IGNy
ZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IEluaXQmIGluaXRpYWxpemVyLCBJ
c1RydXN0ZWQgaXNUcnVzdGVkID0gSXNUcnVzdGVkOjpObykKKyAgICBzdGF0aWMgUmVmPFZSRGlz
cGxheUV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3QgSW5pdCYgaW5p
dGlhbGl6ZXIsIElzVHJ1c3RlZCBpc1RydXN0ZWQgPSBJc1RydXN0ZWQ6Ok5vKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVlJEaXNwbGF5RXZlbnQodHlwZSwgaW5pdGlhbGl6
ZXIsIGlzVHJ1c3RlZCkpOwogICAgIH0KQEAgLTUzLDggKzUzLDggQEAgcHVibGljOgogICAgIGNv
bnN0IE9wdGlvbmFsPFZSRGlzcGxheUV2ZW50UmVhc29uPiYgcmVhc29uKCkgY29uc3QgeyByZXR1
cm4gbV9yZWFzb247IH0KIAogcHJpdmF0ZToKLSAgICBWUkRpc3BsYXlFdmVudChjb25zdCBBdG9t
aWNTdHJpbmcmLCBjb25zdCBJbml0JiwgSXNUcnVzdGVkKTsKLSAgICBWUkRpc3BsYXlFdmVudChj
b25zdCBBdG9taWNTdHJpbmcmLCBjb25zdCBSZWZQdHI8VlJEaXNwbGF5PiYsIE9wdGlvbmFsPFZS
RGlzcGxheUV2ZW50UmVhc29uPiYmKTsKKyAgICBWUkRpc3BsYXlFdmVudChjb25zdCBBdG9tU3Ry
aW5nJiwgY29uc3QgSW5pdCYsIElzVHJ1c3RlZCk7CisgICAgVlJEaXNwbGF5RXZlbnQoY29uc3Qg
QXRvbVN0cmluZyYsIGNvbnN0IFJlZlB0cjxWUkRpc3BsYXk+JiwgT3B0aW9uYWw8VlJEaXNwbGF5
RXZlbnRSZWFzb24+JiYpOwogCiAgICAgLy8gRXZlbnQKICAgICBFdmVudEludGVyZmFjZSBldmVu
dEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZVByZWZpeC5oIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZVByZWZpeC5oCmluZGV4IGM1
YTY4ZmZjMmVmMjQxODk1NjJkNGIyYTQwOTE1NTk5NTY4NTQ2ZDkuLjc4MmE4NDc2Y2EyYzhiNTYy
YTkyMjdkZjliNzM4ZjlhYWRhODgyNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmVQcmVmaXguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlUHJlZml4LmgKQEAgLTE3MSw3
ICsxNzEsNyBAQAogI2ltcG9ydCA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbXBvcnQgPHd0Zi9PcHRp
b25hbC5oPgogI2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgotI2ltcG9ydCA8d3RmL3RleHQv
QXRvbWljU3RyaW5nLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+CiAjaW1wb3J0
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAppbmRleCBhMGUxYTRlNzE1NmFiYTNkNDg3NmI2
ZTcwN2I2NDRjOGIzZTdkZDI1Li4zYzhjZDk3MTA5NDc1NzA5NDIyYmRhYjI1NTZkMTRkNjczYmZl
NzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2Fj
aGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5j
cHAKQEAgLTg1MSw3ICs4NTEsNyBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZUxpdmVSZWdp
b25DcmVhdGVkKE5vZGUqIG5vZGUpCiAgICAgRWxlbWVudCogZWxlbWVudCA9IGRvd25jYXN0PEVs
ZW1lbnQ+KG5vZGUpOwogICAgIFN0cmluZyBsaXZlUmVnaW9uU3RhdHVzID0gZWxlbWVudC0+YXR0
cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihhcmlhX2xpdmVBdHRyKTsKICAgICBpZiAobGl2
ZVJlZ2lvblN0YXR1cy5pc0VtcHR5KCkpIHsKLSAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBh
cmlhUm9sZSA9IGVsZW1lbnQtPmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24ocm9sZUF0
dHIpOworICAgICAgICBjb25zdCBBdG9tU3RyaW5nJiBhcmlhUm9sZSA9IGVsZW1lbnQtPmF0dHJp
YnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24ocm9sZUF0dHIpOwogICAgICAgICBpZiAoIWFyaWFS
b2xlLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGxpdmVSZWdpb25TdGF0dXMgPSBBY2Nlc3NpYmls
aXR5T2JqZWN0OjpkZWZhdWx0TGl2ZVJlZ2lvblN0YXR1c0ZvclJvbGUoQWNjZXNzaWJpbGl0eU9i
amVjdDo6YXJpYVJvbGVUb1dlYkNvcmVSb2xlKGFyaWFSb2xlKSk7CiAgICAgfQpAQCAtMzAzOSw3
ICszMDM5LDcgQEAgYm9vbCBpc05vZGVBcmlhVmlzaWJsZShOb2RlKiBub2RlKQogICAgIGJvb2wg
YXJpYUhpZGRlbkZhbHNlUHJlc2VudCA9IGZhbHNlOwogICAgIGZvciAoTm9kZSogdGVzdE5vZGUg
PSBub2RlOyB0ZXN0Tm9kZTsgdGVzdE5vZGUgPSB0ZXN0Tm9kZS0+cGFyZW50Tm9kZSgpKSB7CiAg
ICAgICAgIGlmIChpczxFbGVtZW50PigqdGVzdE5vZGUpKSB7Ci0gICAgICAgICAgICBjb25zdCBB
dG9taWNTdHJpbmcmIGFyaWFIaWRkZW5WYWx1ZSA9IGRvd25jYXN0PEVsZW1lbnQ+KCp0ZXN0Tm9k
ZSkuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihhcmlhX2hpZGRlbkF0dHIpOworICAg
ICAgICAgICAgY29uc3QgQXRvbVN0cmluZyYgYXJpYUhpZGRlblZhbHVlID0gZG93bmNhc3Q8RWxl
bWVudD4oKnRlc3ROb2RlKS5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGFyaWFfaGlk
ZGVuQXR0cik7CiAgICAgICAgICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uo
YXJpYUhpZGRlblZhbHVlLCAidHJ1ZSIpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwCmluZGV4IGM5NGRkZmNmMTZlNGQ4NTJlZGZhNmUyMDE0
MjM3NmFmNGM4ZjYzMmMuLmQ3MzA5ODhmODk3ZWNmYTQ5YWJiOTBkMzNlNzEyZDYwZWRlODUyOWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFS
SUFHcmlkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlBUklBR3JpZC5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5QVJJQUdy
aWQ6OmFkZFRhYmxlQ2VsbENoaWxkKEFjY2Vzc2liaWxpdHlPYmplY3QqIGNoaWxkLCBIYXNoU2UK
IAogYm9vbCBBY2Nlc3NpYmlsaXR5QVJJQUdyaWQ6OmlzTXVsdGlTZWxlY3RhYmxlKCkgY29uc3QK
IHsKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGFyaWFNdWx0aVNlbGVjdGFibGUgPSBnZXRBdHRy
aWJ1dGUoSFRNTE5hbWVzOjphcmlhX211bHRpc2VsZWN0YWJsZUF0dHIpOworICAgIGNvbnN0IEF0
b21TdHJpbmcmIGFyaWFNdWx0aVNlbGVjdGFibGUgPSBnZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjph
cmlhX211bHRpc2VsZWN0YWJsZUF0dHIpOwogICAgIHJldHVybiAhZXF1YWxMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2UoYXJpYU11bHRpU2VsZWN0YWJsZSwgImZhbHNlIik7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUltYWdlTWFwTGlu
ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlJbWFnZU1h
cExpbmsuY3BwCmluZGV4IGUzMDMzNTA4Yzg1ZmQxMTQ1YjRmNmZjMjg4OTJiN2JhZTM3NDAwMjku
LmM1NTc5Nzg3MDdiNzFkNzA5ZDI1OTg2YjQwMzMyNjk1NTA3MjYyZWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluay5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBM
aW5rLmNwcApAQCAtNjgsNyArNjgsNyBAQCBBY2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmlsaXR5
SW1hZ2VNYXBMaW5rOjpyb2xlVmFsdWUoKSBjb25zdAogICAgIGlmICghbV9hcmVhRWxlbWVudCkK
ICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpXZWJDb3JlTGluazsKICAgICAKLSAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIGFyaWFSb2xlID0gZ2V0QXR0cmlidXRlKHJvbGVBdHRyKTsK
KyAgICBjb25zdCBBdG9tU3RyaW5nJiBhcmlhUm9sZSA9IGdldEF0dHJpYnV0ZShyb2xlQXR0cik7
CiAgICAgaWYgKCFhcmlhUm9sZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBBY2Nlc3NpYmls
aXR5T2JqZWN0OjphcmlhUm9sZVRvV2ViQ29yZVJvbGUoYXJpYVJvbGUpOwogCkBAIC05OSwyMSAr
OTksMjEgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rOjphY2Nlc3NpYmlsaXR5VGV4
dChWZWN0b3I8QWNjZXNzaWJpbGl0eVRleHQ+JiB0ZXgKICAgICBpZiAoIWRlc2NyaXB0aW9uLmlz
RW1wdHkoKSkKICAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4dChkZXNj
cmlwdGlvbiwgQWNjZXNzaWJpbGl0eVRleHRTb3VyY2U6OkFsdGVybmF0aXZlKSk7CiAKLSAgICBj
b25zdCBBdG9taWNTdHJpbmcmIHRpdGxlVGV4dCA9IGdldEF0dHJpYnV0ZSh0aXRsZUF0dHIpOwor
ICAgIGNvbnN0IEF0b21TdHJpbmcmIHRpdGxlVGV4dCA9IGdldEF0dHJpYnV0ZSh0aXRsZUF0dHIp
OwogICAgIGlmICghdGl0bGVUZXh0LmlzRW1wdHkoKSkKICAgICAgICAgdGV4dE9yZGVyLmFwcGVu
ZChBY2Nlc3NpYmlsaXR5VGV4dCh0aXRsZVRleHQsIEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpU
aXRsZVRhZykpOwogCi0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBzdW1tYXJ5ID0gZ2V0QXR0cmli
dXRlKHN1bW1hcnlBdHRyKTsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBzdW1tYXJ5ID0gZ2V0QXR0
cmlidXRlKHN1bW1hcnlBdHRyKTsKICAgICBpZiAoIXN1bW1hcnkuaXNFbXB0eSgpKQogICAgICAg
ICB0ZXh0T3JkZXIuYXBwZW5kKEFjY2Vzc2liaWxpdHlUZXh0KHN1bW1hcnksIEFjY2Vzc2liaWxp
dHlUZXh0U291cmNlOjpTdW1tYXJ5KSk7CiB9CiAgICAgCiBTdHJpbmcgQWNjZXNzaWJpbGl0eUlt
YWdlTWFwTGluazo6YWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKCkgY29uc3QKIHsKLSAgICBjb25z
dCBBdG9taWNTdHJpbmcmIGFyaWFMYWJlbCA9IGdldEF0dHJpYnV0ZShhcmlhX2xhYmVsQXR0cik7
CisgICAgY29uc3QgQXRvbVN0cmluZyYgYXJpYUxhYmVsID0gZ2V0QXR0cmlidXRlKGFyaWFfbGFi
ZWxBdHRyKTsKICAgICBpZiAoIWFyaWFMYWJlbC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBh
cmlhTGFiZWw7Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBhbHQgPSBnZXRBdHRyaWJ1dGUoYWx0
QXR0cik7CisgICAgY29uc3QgQXRvbVN0cmluZyYgYWx0ID0gZ2V0QXR0cmlidXRlKGFsdEF0dHIp
OwogICAgIGlmICghYWx0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGFsdDsKIApAQCAtMTIy
LDEwICsxMjIsMTAgQEAgU3RyaW5nIEFjY2Vzc2liaWxpdHlJbWFnZU1hcExpbms6OmFjY2Vzc2li
aWxpdHlEZXNjcmlwdGlvbigpIGNvbnN0CiAgICAgCiBTdHJpbmcgQWNjZXNzaWJpbGl0eUltYWdl
TWFwTGluazo6dGl0bGUoKSBjb25zdAogewotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdGl0bGUg
PSBnZXRBdHRyaWJ1dGUodGl0bGVBdHRyKTsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiB0aXRsZSA9
IGdldEF0dHJpYnV0ZSh0aXRsZUF0dHIpOwogICAgIGlmICghdGl0bGUuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm4gdGl0bGU7Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBzdW1tYXJ5ID0gZ2V0
QXR0cmlidXRlKHN1bW1hcnlBdHRyKTsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBzdW1tYXJ5ID0g
Z2V0QXR0cmlidXRlKHN1bW1hcnlBdHRyKTsKICAgICBpZiAoIXN1bW1hcnkuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gc3VtbWFyeTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmNwcAppbmRleCA0MTdk
NjI0ZDEzOTk1MjRmOGQwODM5Yjg4ZDk0MjMxZTRkYjRhZDJkLi4zYmRhMmU1YmNjYWQwNDAyNjgy
ODI5YzkwN2I1OWU4NWM2ODAwZDMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmNwcApAQCAtMTQxLDcg
KzE0MSw3IEBAIFN0cmluZyBBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbjo6c3RyaW5nVmFsdWUo
KSBjb25zdAogICAgIGlmICghbV9vcHRpb25FbGVtZW50KQogICAgICAgICByZXR1cm4gU3RyaW5n
KCk7CiAgICAgCi0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBhcmlhTGFiZWwgPSBnZXRBdHRyaWJ1
dGUoYXJpYV9sYWJlbEF0dHIpOworICAgIGNvbnN0IEF0b21TdHJpbmcmIGFyaWFMYWJlbCA9IGdl
dEF0dHJpYnV0ZShhcmlhX2xhYmVsQXR0cik7CiAgICAgaWYgKCFhcmlhTGFiZWwuaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiBhcmlhTGFiZWw7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xzLmgKaW5kZXgg
MTQ4ZjA3NjcyOWMxOGM2YjlkNmMxZWU5OTEzOGZkMjZjYjFmMWNlMS4uYzk4NWZkZGQzZGI3NWI4
YTg0YzdlMjU4MzNlMDA5OTU3NjZkNTk0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9scy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHMuaApAQCAtNjQsNyAr
NjQsNyBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgaGVscFRleHQoKSBjb25zdCBvdmVycmlkZTsK
ICAgICBTdHJpbmcgdmFsdWVEZXNjcmlwdGlvbigpIGNvbnN0IG92ZXJyaWRlOwotICAgIGNvbnN0
IEF0b21pY1N0cmluZyYgZ2V0QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0
ZSkgY29uc3Q7CisgICAgY29uc3QgQXRvbVN0cmluZyYgZ2V0QXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJpYnV0ZSkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQWNj
ZXNzaWJpbGl0eU1lZGlhVGltZWxpbmUoUmVuZGVyT2JqZWN0Kik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwCmlu
ZGV4IDEzN2M4NTg1ZThhODgwMTM2MTc5OGUxZDkzN2RjMGVmZTg4ZmI2NDEuLmEyZDMyN2Y4Y2Yx
NzgwOGNhZjI1YTY4MDVhNDg4ZTg4ZjhkNGU1YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwCkBAIC00ODgs
NyArNDg4LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNTZWFyY2hGaWVsZCgp
IGNvbnN0CiAgICAgLy8gYnV0IGl0IHdpbGwgY2F0Y2ggZ29vZ2xlLmNvbSBmb3IgZXhhbXBsZS4K
IAogICAgIC8vIENoZWNrIHRoZSBub2RlIG5hbWUgb2YgdGhlIGlucHV0IHR5cGUsIHNvbWV0aW1l
cyBpdCdzICJzZWFyY2giLgotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZUF0dHJpYnV0ZSA9
IGdldEF0dHJpYnV0ZShuYW1lQXR0cik7CisgICAgY29uc3QgQXRvbVN0cmluZyYgbmFtZUF0dHJp
YnV0ZSA9IGdldEF0dHJpYnV0ZShuYW1lQXR0cik7CiAgICAgaWYgKG5hbWVBdHRyaWJ1dGUuY29u
dGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZSgic2VhcmNoIikpCiAgICAgICAgIHJldHVybiB0cnVlOwog
CkBAIC02MzMsNyArNjMzLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNFbmFi
bGVkKCkgY29uc3QKIHsKICAgICAvLyBBUklBIHNheXMgdGhhdCB0aGUgZGlzYWJsZWQgc3RhdHVz
IGFwcGxpZXMgdG8gdGhlIGN1cnJlbnQgZWxlbWVudCBhbmQgYWxsIGRlc2NlbmRhbnQgZWxlbWVu
dHMuCiAgICAgZm9yIChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QgPSBjb25zdF9jYXN0PEFj
Y2Vzc2liaWxpdHlOb2RlT2JqZWN0Kj4odGhpcyk7IG9iamVjdDsgb2JqZWN0ID0gb2JqZWN0LT5w
YXJlbnRPYmplY3QoKSkgewotICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGRpc2FibGVkU3Rh
dHVzID0gb2JqZWN0LT5nZXRBdHRyaWJ1dGUoYXJpYV9kaXNhYmxlZEF0dHIpOworICAgICAgICBj
b25zdCBBdG9tU3RyaW5nJiBkaXNhYmxlZFN0YXR1cyA9IG9iamVjdC0+Z2V0QXR0cmlidXRlKGFy
aWFfZGlzYWJsZWRBdHRyKTsKICAgICAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKGRpc2FibGVkU3RhdHVzLCAidHJ1ZSIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZGlzYWJsZWRTdGF0dXMs
ICJmYWxzZSIpKQpAQCAtNzEyLDcgKzcxMiw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmpl
Y3Q6OmlzSG92ZXJlZCgpIGNvbnN0CiAKIGJvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6Omlz
TXVsdGlTZWxlY3RhYmxlKCkgY29uc3QKIHsKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGFyaWFN
dWx0aVNlbGVjdGFibGUgPSBnZXRBdHRyaWJ1dGUoYXJpYV9tdWx0aXNlbGVjdGFibGVBdHRyKTsK
KyAgICBjb25zdCBBdG9tU3RyaW5nJiBhcmlhTXVsdGlTZWxlY3RhYmxlID0gZ2V0QXR0cmlidXRl
KGFyaWFfbXVsdGlzZWxlY3RhYmxlQXR0cik7CiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5n
QVNDSUlDYXNlKGFyaWFNdWx0aVNlbGVjdGFibGUsICJ0cnVlIikpCiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShhcmlhTXVsdGlTZWxl
Y3RhYmxlLCAiZmFsc2UiKSkKQEAgLTcyNCw3ICs3MjQsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlO
b2RlT2JqZWN0Ojppc011bHRpU2VsZWN0YWJsZSgpIGNvbnN0CiBib29sIEFjY2Vzc2liaWxpdHlO
b2RlT2JqZWN0Ojppc1JlcXVpcmVkKCkgY29uc3QKIHsKICAgICAvLyBFeHBsaWNpdCBhcmlhLXJl
cXVpcmVkIHZhbHVlcyBzaG91bGQgdHJ1bXAgbmF0aXZlIHJlcXVpcmVkIGF0dHJpYnV0ZXMuCi0g
ICAgY29uc3QgQXRvbWljU3RyaW5nJiByZXF1aXJlZFZhbHVlID0gZ2V0QXR0cmlidXRlKGFyaWFf
cmVxdWlyZWRBdHRyKTsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiByZXF1aXJlZFZhbHVlID0gZ2V0
QXR0cmlidXRlKGFyaWFfcmVxdWlyZWRBdHRyKTsKICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2UocmVxdWlyZWRWYWx1ZSwgInRydWUiKSkKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHJlcXVpcmVkVmFsdWUsICJm
YWxzZSIpKQpAQCAtMTE3Myw3ICsxMTczLDcgQEAgSFRNTExhYmVsRWxlbWVudCogQWNjZXNzaWJp
bGl0eU5vZGVPYmplY3Q6OmxhYmVsRm9yRWxlbWVudChFbGVtZW50KiBlbGVtZW50KSBjb24KICAg
ICBpZiAoIWlzPEhUTUxFbGVtZW50PigqZWxlbWVudCkgfHwgIWRvd25jYXN0PEhUTUxFbGVtZW50
PigqZWxlbWVudCkuaXNMYWJlbGFibGUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIGlkID0gZWxlbWVudC0+Z2V0SWRBdHRyaWJ1dGUoKTsKKyAg
ICBjb25zdCBBdG9tU3RyaW5nJiBpZCA9IGVsZW1lbnQtPmdldElkQXR0cmlidXRlKCk7CiAgICAg
aWYgKCFpZC5pc0VtcHR5KCkpIHsKICAgICAgICAgaWYgKEhUTUxMYWJlbEVsZW1lbnQqIGxhYmVs
ID0gZWxlbWVudC0+dHJlZVNjb3BlKCkubGFiZWxFbGVtZW50Rm9ySWQoaWQpKQogICAgICAgICAg
ICAgcmV0dXJuIGxhYmVsOwpAQCAtMTE4OCw3ICsxMTg4LDcgQEAgU3RyaW5nIEFjY2Vzc2liaWxp
dHlOb2RlT2JqZWN0OjphcmlhQWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKCkgY29uc3QKICAgICBp
ZiAoIWFyaWFMYWJlbGVkQnkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gYXJpYUxhYmVsZWRC
eTsKIAotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYXJpYUxhYmVsID0gZ2V0QXR0cmlidXRlKGFy
aWFfbGFiZWxBdHRyKTsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBhcmlhTGFiZWwgPSBnZXRBdHRy
aWJ1dGUoYXJpYV9sYWJlbEF0dHIpOwogICAgIGlmICghYXJpYUxhYmVsLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIGFyaWFMYWJlbDsKIApAQCAtMTMzNCw3ICsxMzM0LDcgQEAgdm9pZCBBY2Nl
c3NpYmlsaXR5Tm9kZU9iamVjdDo6YWx0ZXJuYXRpdmVUZXh0KFZlY3RvcjxBY2Nlc3NpYmlsaXR5
VGV4dD4mIHRleHRPcmQKICAgICAKICAgICBhcmlhTGFiZWxlZEJ5VGV4dCh0ZXh0T3JkZXIpOwog
ICAgIAotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYXJpYUxhYmVsID0gZ2V0QXR0cmlidXRlKGFy
aWFfbGFiZWxBdHRyKTsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBhcmlhTGFiZWwgPSBnZXRBdHRy
aWJ1dGUoYXJpYV9sYWJlbEF0dHIpOwogICAgIGlmICghYXJpYUxhYmVsLmlzRW1wdHkoKSkKICAg
ICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4dChhcmlhTGFiZWwsIEFjY2Vz
c2liaWxpdHlUZXh0U291cmNlOjpBbHRlcm5hdGl2ZSkpOwogICAgIApAQCAtMTM1MCw3ICsxMzUw
LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6YWx0ZXJuYXRpdmVUZXh0KFZlY3Rv
cjxBY2Nlc3NpYmlsaXR5VGV4dD4mIHRleHRPcmQKICAgICAgICAgfQogICAgICAgICAvLyBJbWFn
ZXMgc2hvdWxkIHVzZSBhbHQgYXMgbG9uZyBhcyB0aGUgYXR0cmlidXRlIGlzIHByZXNlbnQsIGV2
ZW4gaWYgZW1wdHkuCiAgICAgICAgIC8vIE90aGVyd2lzZSwgaXQgc2hvdWxkIGZhbGxiYWNrIHRv
IG90aGVyIG1ldGhvZHMsIGxpa2UgdGhlIHRpdGxlIGF0dHJpYnV0ZS4KLSAgICAgICAgY29uc3Qg
QXRvbWljU3RyaW5nJiBhbHQgPSBnZXRBdHRyaWJ1dGUoYWx0QXR0cik7CisgICAgICAgIGNvbnN0
IEF0b21TdHJpbmcmIGFsdCA9IGdldEF0dHJpYnV0ZShhbHRBdHRyKTsKICAgICAgICAgaWYgKCFh
bHQuaXNFbXB0eSgpKQogICAgICAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5
VGV4dChhbHQsIEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpBbHRlcm5hdGl2ZSkpOwogICAgIH0K
QEAgLTE0NTUsNyArMTQ1NSw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnZpc2li
bGVUZXh0KFZlY3RvcjxBY2Nlc3NpYmlsaXR5VGV4dD4mIHRleHRPcmRlcikKIAogdm9pZCBBY2Nl
c3NpYmlsaXR5Tm9kZU9iamVjdDo6aGVscFRleHQoVmVjdG9yPEFjY2Vzc2liaWxpdHlUZXh0PiYg
dGV4dE9yZGVyKSBjb25zdAogewotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYXJpYUhlbHAgPSBn
ZXRBdHRyaWJ1dGUoYXJpYV9oZWxwQXR0cik7CisgICAgY29uc3QgQXRvbVN0cmluZyYgYXJpYUhl
bHAgPSBnZXRBdHRyaWJ1dGUoYXJpYV9oZWxwQXR0cik7CiAgICAgaWYgKCFhcmlhSGVscC5pc0Vt
cHR5KCkpCiAgICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRleHQoYXJpYUhl
bHAsIEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpIZWxwKSk7CiAgICAgCkBAIC0xNDcyLDcgKzE0
NzIsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpoZWxwVGV4dChWZWN0b3I8QWNj
ZXNzaWJpbGl0eVRleHQ+JiB0ZXh0T3JkZXIpIGNvbgogICAgIH0KIAogICAgIC8vIFN1bW1hcnkg
YXR0cmlidXRlIHVzZWQgYXMgaGVscCB0ZXh0IG9uIHRhYmxlcy4KLSAgICBjb25zdCBBdG9taWNT
dHJpbmcmIHN1bW1hcnkgPSBnZXRBdHRyaWJ1dGUoc3VtbWFyeUF0dHIpOworICAgIGNvbnN0IEF0
b21TdHJpbmcmIHN1bW1hcnkgPSBnZXRBdHRyaWJ1dGUoc3VtbWFyeUF0dHIpOwogICAgIGlmICgh
c3VtbWFyeS5pc0VtcHR5KCkpCiAgICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0
eVRleHQoc3VtbWFyeSwgQWNjZXNzaWJpbGl0eVRleHRTb3VyY2U6OlN1bW1hcnkpKTsKIApAQCAt
MTQ4MSw3ICsxNDgxLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aGVscFRleHQo
VmVjdG9yPEFjY2Vzc2liaWxpdHlUZXh0PiYgdGV4dE9yZGVyKSBjb24KICAgICAvLyBkZXNjcmlw
dGl2ZSB0ZXh0LiBUaGlzIGlzIHByb2JsZW1hdGljIGluIHRoZSBjYXNlIG9mIG1ldGVycyBiZWNh
dXNlIHRoZSBIVE1MIHNwZWMgc3VnZ2VzdHMgYXV0aG9ycwogICAgIC8vIGNhbiBleHBvc2UgdW5p
dHMgdGhyb3VnaCB0aGlzIGF0dHJpYnV0ZS4gVGhlcmVmb3JlLCBpZiB0aGUgZWxlbWVudCBpcyBh
IG1ldGVyLCBjaGFuZ2UgaXRzIHNvdXJjZQogICAgIC8vIHR5cGUgdG8gQWNjZXNzaWJpbGl0eVRl
eHRTb3VyY2U6OkhlbHAuCi0gICAgY29uc3QgQXRvbWljU3RyaW5nJiB0aXRsZSA9IGdldEF0dHJp
YnV0ZSh0aXRsZUF0dHIpOworICAgIGNvbnN0IEF0b21TdHJpbmcmIHRpdGxlID0gZ2V0QXR0cmli
dXRlKHRpdGxlQXR0cik7CiAgICAgaWYgKCF0aXRsZS5pc0VtcHR5KCkpIHsKICAgICAgICAgaWYg
KCFpc01ldGVyKCkgJiYgIXJvbGVJZ25vcmVzVGl0bGUoKSkKICAgICAgICAgICAgIHRleHRPcmRl
ci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRleHQodGl0bGUsIEFjY2Vzc2liaWxpdHlUZXh0U291cmNl
OjpUaXRsZVRhZykpOwpAQCAtMTUzOSwxNCArMTUzOSwxNCBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0
eU5vZGVPYmplY3Q6OmFsdGVybmF0aXZlVGV4dEZvcldlYkFyZWEoKSBjb25zdAogICAgIAogICAg
IC8vIENoZWNrIGlmIHRoZSBIVE1MIGVsZW1lbnQgaGFzIGFuIGFyaWEtbGFiZWwgZm9yIHRoZSB3
ZWJwYWdlLgogICAgIGlmIChFbGVtZW50KiBkb2N1bWVudEVsZW1lbnQgPSBkb2N1bWVudC0+ZG9j
dW1lbnRFbGVtZW50KCkpIHsKLSAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBhcmlhTGFiZWwg
PSBkb2N1bWVudEVsZW1lbnQtPmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oYXJpYV9s
YWJlbEF0dHIpOworICAgICAgICBjb25zdCBBdG9tU3RyaW5nJiBhcmlhTGFiZWwgPSBkb2N1bWVu
dEVsZW1lbnQtPmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oYXJpYV9sYWJlbEF0dHIp
OwogICAgICAgICBpZiAoIWFyaWFMYWJlbC5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4g
YXJpYUxhYmVsOwogICAgIH0KICAgICAKICAgICBpZiAoYXV0byogb3duZXIgPSBkb2N1bWVudC0+
b3duZXJFbGVtZW50KCkpIHsKICAgICAgICAgaWYgKG93bmVyLT5oYXNUYWdOYW1lKGZyYW1lVGFn
KSB8fCBvd25lci0+aGFzVGFnTmFtZShpZnJhbWVUYWcpKSB7Ci0gICAgICAgICAgICBjb25zdCBB
dG9taWNTdHJpbmcmIHRpdGxlID0gb3duZXItPmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRp
b24odGl0bGVBdHRyKTsKKyAgICAgICAgICAgIGNvbnN0IEF0b21TdHJpbmcmIHRpdGxlID0gb3du
ZXItPmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24odGl0bGVBdHRyKTsKICAgICAgICAg
ICAgIGlmICghdGl0bGUuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIHJldHVybiB0aXRsZTsK
ICAgICAgICAgfQpAQCAtMTU3Niw3ICsxNTc2LDcgQEAgU3RyaW5nIEFjY2Vzc2liaWxpdHlOb2Rl
T2JqZWN0OjphY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24oKSBjb25zdAogICAgIGlmICh1c2VzQWx0
VGFnRm9yVGV4dENvbXB1dGF0aW9uKCkpIHsKICAgICAgICAgLy8gSW1hZ2VzIHNob3VsZCB1c2Ug
YWx0IGFzIGxvbmcgYXMgdGhlIGF0dHJpYnV0ZSBpcyBwcmVzZW50LCBldmVuIGlmIGVtcHR5LiAg
ICAgICAgICAgICAgICAgICAgCiAgICAgICAgIC8vIE90aGVyd2lzZSwgaXQgc2hvdWxkIGZhbGxi
YWNrIHRvIG90aGVyIG1ldGhvZHMsIGxpa2UgdGhlIHRpdGxlIGF0dHJpYnV0ZS4gICAgICAgICAg
ICAgICAgICAgIAotICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGFsdCA9IGdldEF0dHJpYnV0
ZShhbHRBdHRyKTsKKyAgICAgICAgY29uc3QgQXRvbVN0cmluZyYgYWx0ID0gZ2V0QXR0cmlidXRl
KGFsdEF0dHIpOwogICAgICAgICBpZiAoIWFsdC5pc051bGwoKSkKICAgICAgICAgICAgIHJldHVy
biBhbHQ7CiAgICAgfQpAQCAtMTYxOSw3ICsxNjE5LDcgQEAgU3RyaW5nIEFjY2Vzc2liaWxpdHlO
b2RlT2JqZWN0OjpoZWxwVGV4dCgpIGNvbnN0CiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1
cm4gU3RyaW5nKCk7CiAgICAgCi0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBhcmlhSGVscCA9IGdl
dEF0dHJpYnV0ZShhcmlhX2hlbHBBdHRyKTsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBhcmlhSGVs
cCA9IGdldEF0dHJpYnV0ZShhcmlhX2hlbHBBdHRyKTsKICAgICBpZiAoIWFyaWFIZWxwLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIGFyaWFIZWxwOwogICAgIApAQCAtMTYzMSwxMiArMTYzMSwx
MiBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmhlbHBUZXh0KCkgY29uc3QKICAg
ICBmb3IgKE5vZGUqIGFuY2VzdG9yID0gbm9kZTsgYW5jZXN0b3I7IGFuY2VzdG9yID0gYW5jZXN0
b3ItPnBhcmVudE5vZGUoKSkgewogICAgICAgICBpZiAoaXM8SFRNTEVsZW1lbnQ+KCphbmNlc3Rv
cikpIHsKICAgICAgICAgICAgIEhUTUxFbGVtZW50JiBlbGVtZW50ID0gZG93bmNhc3Q8SFRNTEVs
ZW1lbnQ+KCphbmNlc3Rvcik7Ci0gICAgICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHN1bW1h
cnkgPSBlbGVtZW50LmdldEF0dHJpYnV0ZShzdW1tYXJ5QXR0cik7CisgICAgICAgICAgICBjb25z
dCBBdG9tU3RyaW5nJiBzdW1tYXJ5ID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUoc3VtbWFyeUF0dHIp
OwogICAgICAgICAgICAgaWYgKCFzdW1tYXJ5LmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gc3VtbWFyeTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gVGhlIHRpdGxlIGF0
dHJpYnV0ZSBzaG91bGQgYmUgdXNlZCBhcyBoZWxwIHRleHQgdW5sZXNzIGl0IGlzIGFscmVhZHkg
YmVpbmcgdXNlZCBhcyBkZXNjcmlwdGl2ZSB0ZXh0LgotICAgICAgICAgICAgY29uc3QgQXRvbWlj
U3RyaW5nJiB0aXRsZSA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKHRpdGxlQXR0cik7CisgICAgICAg
ICAgICBjb25zdCBBdG9tU3RyaW5nJiB0aXRsZSA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKHRpdGxl
QXR0cik7CiAgICAgICAgICAgICBpZiAoIXRpdGxlLmlzRW1wdHkoKSAmJiBkZXNjcmlwdGlvbiAh
PSB0aXRsZSkKICAgICAgICAgICAgICAgICByZXR1cm4gdGl0bGU7CiAgICAgICAgIH0KQEAgLTE2
NjIsNyArMTY2Miw3IEBAIHVuc2lnbmVkIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpoaWVyYXJj
aGljYWxMZXZlbCgpIGNvbnN0CiAgICAgaWYgKCFpczxFbGVtZW50Pihub2RlKSkKICAgICAgICAg
cmV0dXJuIDA7CiAgICAgRWxlbWVudCYgZWxlbWVudCA9IGRvd25jYXN0PEVsZW1lbnQ+KCpub2Rl
KTsKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGFyaWFMZXZlbCA9IGVsZW1lbnQuYXR0cmlidXRl
V2l0aG91dFN5bmNocm9uaXphdGlvbihhcmlhX2xldmVsQXR0cik7CisgICAgY29uc3QgQXRvbVN0
cmluZyYgYXJpYUxldmVsID0gZWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9u
KGFyaWFfbGV2ZWxBdHRyKTsKICAgICBpZiAoIWFyaWFMZXZlbC5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiBhcmlhTGV2ZWwudG9JbnQoKTsKICAgICAKQEAgLTE5MzAsNyArMTkzMCw3IEBAIFN0
cmluZyBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6c3RyaW5nVmFsdWUoKSBjb25zdAogICAgICAg
ICBpbnQgc2VsZWN0ZWRJbmRleCA9IHNlbGVjdEVsZW1lbnQuc2VsZWN0ZWRJbmRleCgpOwogICAg
ICAgICBjb25zdCBWZWN0b3I8SFRNTEVsZW1lbnQqPiYgbGlzdEl0ZW1zID0gc2VsZWN0RWxlbWVu
dC5saXN0SXRlbXMoKTsKICAgICAgICAgaWYgKHNlbGVjdGVkSW5kZXggPj0gMCAmJiBzdGF0aWNf
Y2FzdDxzaXplX3Q+KHNlbGVjdGVkSW5kZXgpIDwgbGlzdEl0ZW1zLnNpemUoKSkgewotICAgICAg
ICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBvdmVycmlkZGVuRGVzY3JpcHRpb24gPSBsaXN0SXRl
bXNbc2VsZWN0ZWRJbmRleF0tPmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oYXJpYV9s
YWJlbEF0dHIpOworICAgICAgICAgICAgY29uc3QgQXRvbVN0cmluZyYgb3ZlcnJpZGRlbkRlc2Ny
aXB0aW9uID0gbGlzdEl0ZW1zW3NlbGVjdGVkSW5kZXhdLT5hdHRyaWJ1dGVXaXRob3V0U3luY2hy
b25pemF0aW9uKGFyaWFfbGFiZWxBdHRyKTsKICAgICAgICAgICAgIGlmICghb3ZlcnJpZGRlbkRl
c2NyaXB0aW9uLmlzTnVsbCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBvdmVycmlkZGVuRGVz
Y3JpcHRpb247CiAgICAgICAgIH0KQEAgLTE5NzgsMTEgKzE5NzgsMTEgQEAgc3RhdGljIFN0cmlu
ZyBhY2Nlc3NpYmxlTmFtZUZvck5vZGUoTm9kZSogbm9kZSwgTm9kZSogbGFiZWxsZWRieU5vZGUp
CiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICAKICAgICBFbGVtZW50JiBlbGVtZW50ID0g
ZG93bmNhc3Q8RWxlbWVudD4oKm5vZGUpOwotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYXJpYUxh
YmVsID0gZWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGFyaWFfbGFiZWxB
dHRyKTsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBhcmlhTGFiZWwgPSBlbGVtZW50LmF0dHJpYnV0
ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oYXJpYV9sYWJlbEF0dHIpOwogICAgIGlmICghYXJpYUxh
YmVsLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGFyaWFMYWJlbDsKICAgICAKLSAgICBjb25z
dCBBdG9taWNTdHJpbmcmIGFsdCA9IGVsZW1lbnQuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXph
dGlvbihhbHRBdHRyKTsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBhbHQgPSBlbGVtZW50LmF0dHJp
YnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oYWx0QXR0cik7CiAgICAgaWYgKCFhbHQuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gYWx0OwogCkBAIC0yMDMxLDcgKzIwMzEsNyBAQCBzdGF0aWMg
U3RyaW5nIGFjY2Vzc2libGVOYW1lRm9yTm9kZShOb2RlKiBub2RlLCBOb2RlKiBsYWJlbGxlZGJ5
Tm9kZSkKICAgICBpZiAoIXRleHQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdGV4dDsKICAg
ICAKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIHRpdGxlID0gZWxlbWVudC5hdHRyaWJ1dGVXaXRo
b3V0U3luY2hyb25pemF0aW9uKHRpdGxlQXR0cik7CisgICAgY29uc3QgQXRvbVN0cmluZyYgdGl0
bGUgPSBlbGVtZW50LmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24odGl0bGVBdHRyKTsK
ICAgICBpZiAoIXRpdGxlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRpdGxlOwogICAgIApA
QCAtMjE5MSw3ICsyMTkxLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6Y2FuU2V0
VmFsdWVBdHRyaWJ1dGUoKSBjb25zdAogCiBBY2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmlsaXR5
Tm9kZU9iamVjdDo6ZGV0ZXJtaW5lQXJpYVJvbGVBdHRyaWJ1dGUoKSBjb25zdAogewotICAgIGNv
bnN0IEF0b21pY1N0cmluZyYgYXJpYVJvbGUgPSBnZXRBdHRyaWJ1dGUocm9sZUF0dHIpOworICAg
IGNvbnN0IEF0b21TdHJpbmcmIGFyaWFSb2xlID0gZ2V0QXR0cmlidXRlKHJvbGVBdHRyKTsKICAg
ICBpZiAoYXJpYVJvbGUuaXNOdWxsKCkgfHwgYXJpYVJvbGUuaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd247CiAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAppbmRleCA1NmNi
MTViYmU4YWYxNTkyNzRhNDE3NDQ5NTE1ZDI0YzMyZTAwZjE1Li44OTYwM2RmNzFiOTk1YjllZDE0
OTQ3NjQ5OTkyZGRmZmMzMjhmNDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKQEAgLTExNDIsNyArMTE0Miw3IEBAIERv
Y3VtZW50KiBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp0b3BEb2N1bWVudCgpIGNvbnN0CiAKIFN0cmlu
ZyBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsYW5ndWFnZSgpIGNvbnN0CiB7Ci0gICAgY29uc3QgQXRv
bWljU3RyaW5nJiBsYW5nID0gZ2V0QXR0cmlidXRlKGxhbmdBdHRyKTsKKyAgICBjb25zdCBBdG9t
U3RyaW5nJiBsYW5nID0gZ2V0QXR0cmlidXRlKGxhbmdBdHRyKTsKICAgICBpZiAoIWxhbmcuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm4gbGFuZzsKIApAQCAtMTc2OCw3ICsxNzY4LDcgQEAgYm9v
bCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzdXBwb3J0c0F1dG9Db21wbGV0ZSgpIGNvbnN0CiAKIFN0
cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphdXRvQ29tcGxldGVWYWx1ZSgpIGNvbnN0CiB7Ci0g
ICAgY29uc3QgQXRvbWljU3RyaW5nJiBhdXRvQ29tcGxldGUgPSBnZXRBdHRyaWJ1dGUoYXJpYV9h
dXRvY29tcGxldGVBdHRyKTsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBhdXRvQ29tcGxldGUgPSBn
ZXRBdHRyaWJ1dGUoYXJpYV9hdXRvY29tcGxldGVBdHRyKTsKICAgICBpZiAoZXF1YWxMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2UoYXV0b0NvbXBsZXRlLCAiaW5saW5lIikKICAgICAgICAgfHwgZXF1
YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoYXV0b0NvbXBsZXRlLCAibGlzdCIpCiAgICAgICAg
IHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGF1dG9Db21wbGV0ZSwgImJvdGgiKSkK
QEAgLTE3ODIsNyArMTc4Miw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6Y29udGVudEVk
aXRhYmxlQXR0cmlidXRlSXNFbmFibGVkKEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgaWYgKCFlbGVt
ZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgY29uc3QgQXRvbWljU3RyaW5n
JiBjb250ZW50RWRpdGFibGVWYWx1ZSA9IGVsZW1lbnQtPmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24oY29udGVudGVkaXRhYmxlQXR0cik7CisgICAgY29uc3QgQXRvbVN0cmluZyYgY29u
dGVudEVkaXRhYmxlVmFsdWUgPSBlbGVtZW50LT5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKGNvbnRlbnRlZGl0YWJsZUF0dHIpOwogICAgIGlmIChjb250ZW50RWRpdGFibGVWYWx1ZS5p
c051bGwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIApAQCAtMjI0MSw3ICsyMjQxLDcg
QEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpoYXNBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0cmlidXRlKSBjb25zdAogICAgIHJldHVybiBkb3duY2FzdDxFbGVtZW50Pigqbm9k
ZSkuaGFzQXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihhdHRyaWJ1dGUpOwogfQogICAg
IAotY29uc3QgQXRvbWljU3RyaW5nJiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpnZXRBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlKSBjb25zdAorY29uc3QgQXRvbVN0cmluZyYg
QWNjZXNzaWJpbGl0eU9iamVjdDo6Z2V0QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJpYnV0ZSkgY29uc3QKIHsKICAgICBpZiAoYXV0byogZWxlbWVudCA9IHRoaXMtPmVsZW1lbnQo
KSkKICAgICAgICAgcmV0dXJuIGVsZW1lbnQtPmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRp
b24oYXR0cmlidXRlKTsKQEAgLTI1NzYsMTIgKzI1NzYsMTIgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpzdXBwb3J0c0RhdGV0aW1lQXR0cmlidXRlKCkgY29uc3QKICAgICByZXR1cm4gaGFz
VGFnTmFtZShpbnNUYWcpIHx8IGhhc1RhZ05hbWUoZGVsVGFnKSB8fCBoYXNUYWdOYW1lKHRpbWVU
YWcpOwogfQogCi1jb25zdCBBdG9taWNTdHJpbmcmIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmRhdGV0
aW1lQXR0cmlidXRlVmFsdWUoKSBjb25zdAorY29uc3QgQXRvbVN0cmluZyYgQWNjZXNzaWJpbGl0
eU9iamVjdDo6ZGF0ZXRpbWVBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGdl
dEF0dHJpYnV0ZShkYXRldGltZUF0dHIpOwogfQogICAgIAotY29uc3QgQXRvbWljU3RyaW5nJiBB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpsaW5rUmVsVmFsdWUoKSBjb25zdAorY29uc3QgQXRvbVN0cmlu
ZyYgQWNjZXNzaWJpbGl0eU9iamVjdDo6bGlua1JlbFZhbHVlKCkgY29uc3QKIHsKICAgICByZXR1
cm4gZ2V0QXR0cmlidXRlKHJlbEF0dHIpOwogfQpAQCAtMjYzMywxMSArMjYzMywxMSBAQCBib29s
IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzVmFsdWVBdXRvZmlsbGVkKCkgY29uc3QKIAogY29uc3Qg
U3RyaW5nIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnBsYWNlaG9sZGVyVmFsdWUoKSBjb25zdAogewot
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgcGxhY2Vob2xkZXIgPSBnZXRBdHRyaWJ1dGUocGxhY2Vo
b2xkZXJBdHRyKTsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBwbGFjZWhvbGRlciA9IGdldEF0dHJp
YnV0ZShwbGFjZWhvbGRlckF0dHIpOwogICAgIGlmICghcGxhY2Vob2xkZXIuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gcGxhY2Vob2xkZXI7CiAgICAgCi0gICAgY29uc3QgQXRvbWljU3RyaW5n
JiBhcmlhUGxhY2Vob2xkZXIgPSBnZXRBdHRyaWJ1dGUoYXJpYV9wbGFjZWhvbGRlckF0dHIpOwor
ICAgIGNvbnN0IEF0b21TdHJpbmcmIGFyaWFQbGFjZWhvbGRlciA9IGdldEF0dHJpYnV0ZShhcmlh
X3BsYWNlaG9sZGVyQXR0cik7CiAgICAgaWYgKCFhcmlhUGxhY2Vob2xkZXIuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gYXJpYVBsYWNlaG9sZGVyOwogICAgIApAQCAtMjY3OSwxNCArMjY3OSwx
NCBAQCBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnN1cHBvcnRzQVJJQUF0dHJpYnV0ZXMoKSBj
b25zdAogICAgICAgICB8fCBoYXNBdHRyaWJ1dGUoYXJpYV9yZWxldmFudEF0dHIpOwogfQogICAg
IAotYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsaXZlUmVnaW9uU3RhdHVzSXNFbmFibGVkKGNv
bnN0IEF0b21pY1N0cmluZyYgbGl2ZVJlZ2lvblN0YXR1cykKK2Jvb2wgQWNjZXNzaWJpbGl0eU9i
amVjdDo6bGl2ZVJlZ2lvblN0YXR1c0lzRW5hYmxlZChjb25zdCBBdG9tU3RyaW5nJiBsaXZlUmVn
aW9uU3RhdHVzKQogewogICAgIHJldHVybiBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShs
aXZlUmVnaW9uU3RhdHVzLCAicG9saXRlIikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UobGl2ZVJlZ2lvblN0YXR1cywgImFzc2VydGl2ZSIpOwogfQogICAgIAogYm9vbCBBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpzdXBwb3J0c0xpdmVSZWdpb24oYm9vbCBleGNsdWRlSWZPZmYpIGNvbnN0
CiB7Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBsaXZlUmVnaW9uU3RhdHVzVmFsdWUgPSBsaXZl
UmVnaW9uU3RhdHVzKCk7CisgICAgY29uc3QgQXRvbVN0cmluZyYgbGl2ZVJlZ2lvblN0YXR1c1Zh
bHVlID0gbGl2ZVJlZ2lvblN0YXR1cygpOwogICAgIHJldHVybiBleGNsdWRlSWZPZmYgPyBsaXZl
UmVnaW9uU3RhdHVzSXNFbmFibGVkKGxpdmVSZWdpb25TdGF0dXNWYWx1ZSkgOiAhbGl2ZVJlZ2lv
blN0YXR1c1ZhbHVlLmlzRW1wdHkoKTsKIH0KIApAQCAtMjcyOSw3ICsyNzI5LDcgQEAgQWNjZXNz
aWJpbGl0eVNvcnREaXJlY3Rpb24gQWNjZXNzaWJpbGl0eU9iamVjdDo6c29ydERpcmVjdGlvbigp
IGNvbnN0CiAgICAgaWYgKHJvbGUgIT0gQWNjZXNzaWJpbGl0eVJvbGU6OlJvd0hlYWRlciAmJiBy
b2xlICE9IEFjY2Vzc2liaWxpdHlSb2xlOjpDb2x1bW5IZWFkZXIpCiAgICAgICAgIHJldHVybiBB
Y2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6SW52YWxpZDsKIAotICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgc29ydEF0dHJpYnV0ZSA9IGdldEF0dHJpYnV0ZShhcmlhX3NvcnRBdHRyKTsKKyAgICBj
b25zdCBBdG9tU3RyaW5nJiBzb3J0QXR0cmlidXRlID0gZ2V0QXR0cmlidXRlKGFyaWFfc29ydEF0
dHIpOwogICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzb3J0QXR0cmlidXRl
LCAiYXNjZW5kaW5nIikpCiAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlv
bjo6QXNjZW5kaW5nOwogICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzb3J0
QXR0cmlidXRlLCAiZGVzY2VuZGluZyIpKQpAQCAtMjc1Nyw3ICsyNzU3LDcgQEAgYm9vbCBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpzdXBwb3J0c0hhc1BvcHVwKCkgY29uc3QKIAogU3RyaW5nIEFjY2Vz
c2liaWxpdHlPYmplY3Q6Omhhc1BvcHVwVmFsdWUoKSBjb25zdAogewotICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgaGFzUG9wdXAgPSBnZXRBdHRyaWJ1dGUoYXJpYV9oYXNwb3B1cEF0dHIpOworICAg
IGNvbnN0IEF0b21TdHJpbmcmIGhhc1BvcHVwID0gZ2V0QXR0cmlidXRlKGFyaWFfaGFzcG9wdXBB
dHRyKTsKICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoaGFzUG9wdXAsICJ0
cnVlIikKICAgICAgICAgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoaGFzUG9wdXAs
ICJkaWFsb2ciKQogICAgICAgICB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShoYXNQ
b3B1cCwgImdyaWQiKQpAQCAtMjc5Niw3ICsyNzk2LDcgQEAgaW50IEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OnBvc0luU2V0KCkgY29uc3QKICAgICByZXR1cm4gZ2V0QXR0cmlidXRlKGFyaWFfcG9zaW5z
ZXRBdHRyKS50b0ludCgpOwogfQogICAgIAotY29uc3QgQXRvbWljU3RyaW5nJiBBY2Nlc3NpYmls
aXR5T2JqZWN0OjppZGVudGlmaWVyQXR0cmlidXRlKCkgY29uc3QKK2NvbnN0IEF0b21TdHJpbmcm
IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlkZW50aWZpZXJBdHRyaWJ1dGUoKSBjb25zdAogewogICAg
IHJldHVybiBnZXRBdHRyaWJ1dGUoaWRBdHRyKTsKIH0KQEAgLTI4MTYsMTQgKzI4MTYsMTQgQEAg
dm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpjbGFzc0xpc3QoVmVjdG9yPFN0cmluZz4mIGNsYXNz
TGlzdCkgY29uc3QKIAogYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzdXBwb3J0c1ByZXNzZWQo
KSBjb25zdAogewotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZXhwYW5kZWQgPSBnZXRBdHRyaWJ1
dGUoYXJpYV9wcmVzc2VkQXR0cik7CisgICAgY29uc3QgQXRvbVN0cmluZyYgZXhwYW5kZWQgPSBn
ZXRBdHRyaWJ1dGUoYXJpYV9wcmVzc2VkQXR0cik7CiAgICAgcmV0dXJuIGVxdWFsTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKGV4cGFuZGVkLCAidHJ1ZSIpIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5n
QVNDSUlDYXNlKGV4cGFuZGVkLCAiZmFsc2UiKTsKIH0KICAgICAKIGJvb2wgQWNjZXNzaWJpbGl0
eU9iamVjdDo6c3VwcG9ydHNFeHBhbmRlZCgpIGNvbnN0CiB7CiAgICAgLy8gVW5kZWZpbmVkIHZh
bHVlcyBzaG91bGQgbm90IHJlc3VsdCBpbiB0aGlzIGF0dHJpYnV0ZSBiZWluZyBleHBvc2VkIHRv
IEFUcyBhY2NvcmRpbmcgdG8gQVJJQS4KLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGV4cGFuZGVk
ID0gZ2V0QXR0cmlidXRlKGFyaWFfZXhwYW5kZWRBdHRyKTsKKyAgICBjb25zdCBBdG9tU3RyaW5n
JiBleHBhbmRlZCA9IGdldEF0dHJpYnV0ZShhcmlhX2V4cGFuZGVkQXR0cik7CiAgICAgaWYgKGVx
dWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGV4cGFuZGVkLCAidHJ1ZSIpIHx8IGVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGV4cGFuZGVkLCAiZmFsc2UiKSkKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgc3dpdGNoIChyb2xlVmFsdWUoKSkgewpAQCAtMjg3Niw3ICsyODc2LDcgQEAg
QWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRlIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmNoZWNrYm94T3JS
YWRpb1ZhbHVlKCkgY29uc3QKICAgICAvLyBJZiBpdCdzIGEgdG9nZ2xlIGJ1dHRvbiwgdGhlIGFy
aWEtcHJlc3NlZCBhdHRyaWJ1dGUgaXMgY29uc3VsdGVkLgogCiAgICAgaWYgKGlzVG9nZ2xlQnV0
dG9uKCkpIHsKLSAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBhcmlhUHJlc3NlZCA9IGdldEF0
dHJpYnV0ZShhcmlhX3ByZXNzZWRBdHRyKTsKKyAgICAgICAgY29uc3QgQXRvbVN0cmluZyYgYXJp
YVByZXNzZWQgPSBnZXRBdHRyaWJ1dGUoYXJpYV9wcmVzc2VkQXR0cik7CiAgICAgICAgIGlmIChl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShhcmlhUHJlc3NlZCwgInRydWUiKSkKICAgICAg
ICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5QnV0dG9uU3RhdGU6Ok9uOwogICAgICAgICBpZiAo
ZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoYXJpYVByZXNzZWQsICJtaXhlZCIpKQpAQCAt
Mjg4NCw3ICsyODg0LDcgQEAgQWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRlIEFjY2Vzc2liaWxpdHlP
YmplY3Q6OmNoZWNrYm94T3JSYWRpb1ZhbHVlKCkgY29uc3QKICAgICAgICAgcmV0dXJuIEFjY2Vz
c2liaWxpdHlCdXR0b25TdGF0ZTo6T2ZmOwogICAgIH0KICAgICAKLSAgICBjb25zdCBBdG9taWNT
dHJpbmcmIHJlc3VsdCA9IGdldEF0dHJpYnV0ZShhcmlhX2NoZWNrZWRBdHRyKTsKKyAgICBjb25z
dCBBdG9tU3RyaW5nJiByZXN1bHQgPSBnZXRBdHRyaWJ1dGUoYXJpYV9jaGVja2VkQXR0cik7CiAg
ICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHJlc3VsdCwgInRydWUiKSkKICAg
ICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlCdXR0b25TdGF0ZTo6T247CiAgICAgaWYgKGVxdWFs
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHJlc3VsdCwgIm1peGVkIikpIHsKQEAgLTMzOTYsNyAr
MzM5Niw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6ZWxlbWVudHNGcm9tQXR0cmlidXRl
KFZlY3RvcjxFbGVtZW50Kj4mIGVsZW1lbnRzLCBjb25zCiAKICAgICBUcmVlU2NvcGUmIHRyZWVT
Y29wZSA9IG5vZGUtPnRyZWVTY29wZSgpOwogCi0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBpZExp
c3QgPSBnZXRBdHRyaWJ1dGUoYXR0cmlidXRlKTsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBpZExp
c3QgPSBnZXRBdHRyaWJ1dGUoYXR0cmlidXRlKTsKICAgICBpZiAoaWRMaXN0LmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuOwogCkBAIC0zNTUyLDcgKzM1NTIsNyBAQCB2b2lkIEFjY2Vzc2liaWxp
dHlPYmplY3Q6OmFyaWFFbGVtZW50c1JlZmVyZW5jZWRCeUF0dHJpYnV0ZShBY2Nlc3NpYmlsaXR5
Q2hpbGRyZQogICAgICAgICByZXR1cm47CiAKICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBkZXNj
ZW5kYW50c09mVHlwZTxFbGVtZW50Pihub2RlKCktPnRyZWVTY29wZSgpLnJvb3ROb2RlKCkpKSB7
Ci0gICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgaWRMaXN0ID0gZWxlbWVudC5hdHRyaWJ1dGVX
aXRob3V0U3luY2hyb25pemF0aW9uKGF0dHJpYnV0ZSk7CisgICAgICAgIGNvbnN0IEF0b21TdHJp
bmcmIGlkTGlzdCA9IGVsZW1lbnQuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihhdHRy
aWJ1dGUpOwogICAgICAgICBpZiAoIVNwYWNlU3BsaXRTdHJpbmcoaWRMaXN0LCBmYWxzZSkuY29u
dGFpbnMoaWQpKQogICAgICAgICAgICAgY29udGludWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKaW5kZXggYzJhMWJiNGVjY2E3
MzI0OWE4ZTJmMTg0YjY0MWFjMDE4YWNkZjAzYy4uYjU5YjdkNWI2MzU5NjdmZDBmYTE5MmE1OTY2
MGE0ZWIzNDJlYjcxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0LmgKQEAgLTQ5Niw3ICs0OTYsNyBAQCBwdWJsaWM6CiAgICAgYm9v
bCBoYXNIaWdobGlnaHRpbmcoKSBjb25zdDsKIAogICAgIGJvb2wgc3VwcG9ydHNEYXRldGltZUF0
dHJpYnV0ZSgpIGNvbnN0OwotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZGF0ZXRpbWVBdHRyaWJ1
dGVWYWx1ZSgpIGNvbnN0OworICAgIGNvbnN0IEF0b21TdHJpbmcmIGRhdGV0aW1lQXR0cmlidXRl
VmFsdWUoKSBjb25zdDsKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0Rm9jdXNBdHRyaWJ1
dGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBjYW5TZXRUZXh0
UmFuZ2VBdHRyaWJ1dGVzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTU2Myw4ICs1NjMs
OCBAQCBwdWJsaWM6CiAgICAgQWNjZXNzaWJpbGl0eVNvcnREaXJlY3Rpb24gc29ydERpcmVjdGlv
bigpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBjYW52YXNIYXNGYWxsYmFja0NvbnRlbnQoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgc3VwcG9ydHNSYW5nZVZhbHVlKCkgY29u
c3Q7Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBpZGVudGlmaWVyQXR0cmlidXRlKCkgY29uc3Q7
Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBsaW5rUmVsVmFsdWUoKSBjb25zdDsKKyAgICBjb25z
dCBBdG9tU3RyaW5nJiBpZGVudGlmaWVyQXR0cmlidXRlKCkgY29uc3Q7CisgICAgY29uc3QgQXRv
bVN0cmluZyYgbGlua1JlbFZhbHVlKCkgY29uc3Q7CiAgICAgdm9pZCBjbGFzc0xpc3QoVmVjdG9y
PFN0cmluZz4mKSBjb25zdDsKICAgICB2aXJ0dWFsIFN0cmluZyByb2xlRGVzY3JpcHRpb24oKSBj
b25zdDsKICAgICBBY2Nlc3NpYmlsaXR5Q3VycmVudFN0YXRlIGN1cnJlbnRTdGF0ZSgpIGNvbnN0
OwpAQCAtNjQwLDcgKzY0MCw3IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgY29tcHV0ZWRMYWJlbCgp
OwogICAgIAogICAgIC8vIEEgcHJvZ3JhbW1hdGljIHdheSB0byBzZXQgYSBuYW1lIG9uIGFuIEFj
Y2Vzc2libGVPYmplY3QuCi0gICAgdmlydHVhbCB2b2lkIHNldEFjY2Vzc2libGVOYW1lKGNvbnN0
IEF0b21pY1N0cmluZyYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRBY2Nlc3NpYmxlTmFtZShj
b25zdCBBdG9tU3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCBib29sIGhhc0F0dHJpYnV0ZXNSZXF1
aXJlZEZvckluY2x1c2lvbigpIGNvbnN0OwogCiAgICAgLy8gQWNjZXNzaWJpbGl0eSBUZXh0IC0g
KFRvIGJlIGRlcHJlY2F0ZWQpLgpAQCAtNjk1LDcgKzY5NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIFVSTCB1cmwoKSBjb25zdCB7IHJldHVybiBVUkwoKTsgfQogICAgIHZpcnR1YWwgVmlzaWJs
ZVNlbGVjdGlvbiBzZWxlY3Rpb24oKSBjb25zdCB7IHJldHVybiBWaXNpYmxlU2VsZWN0aW9uKCk7
IH0KICAgICB2aXJ0dWFsIFN0cmluZyBzZWxlY3RlZFRleHQoKSBjb25zdCB7IHJldHVybiBTdHJp
bmcoKTsgfQotICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBhY2Nlc3NLZXkoKSBjb25z
dCB7IHJldHVybiBudWxsQXRvbSgpOyB9CisgICAgdmlydHVhbCBjb25zdCBBdG9tU3RyaW5nJiBh
Y2Nlc3NLZXkoKSBjb25zdCB7IHJldHVybiBudWxsQXRvbSgpOyB9CiAgICAgY29uc3QgU3RyaW5n
JiBhY3Rpb25WZXJiKCkgY29uc3Q7CiAgICAgdmlydHVhbCBXaWRnZXQqIHdpZGdldCgpIGNvbnN0
IHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICB2aXJ0dWFsIFdpZGdldCogd2lkZ2V0Rm9yQXR0YWNo
bWVudFZpZXcoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CkBAIC03NjYsNyArNzY2LDcgQEAg
cHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEFjY2Vzc2liaWxpdHlSb2xlIGFy
aWFSb2xlVG9XZWJDb3JlUm9sZShjb25zdCBTdHJpbmcmKTsKICAgICBib29sIGhhc0F0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBn
ZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OworICAgIGNvbnN0IEF0b21T
dHJpbmcmIGdldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7CiAgICAgYm9v
bCBoYXNUYWdOYW1lKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKICAgICAKICAgICB2aXJ0
dWFsIFZpc2libGVQb3NpdGlvblJhbmdlIHZpc2libGVQb3NpdGlvblJhbmdlKCkgY29uc3QgeyBy
ZXR1cm4gVmlzaWJsZVBvc2l0aW9uUmFuZ2UoKTsgfQpAQCAtODU5LDcgKzg1OSw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIGJvb2wgbGl2ZVJlZ2lvbkF0b21pYygpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzQnVzeSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgc3RhdGljIGNvbnN0IFN0cmluZyBkZWZhdWx0TGl2ZVJlZ2lvblN0YXR1c0ZvclJvbGUo
QWNjZXNzaWJpbGl0eVJvbGUpOwotICAgIHN0YXRpYyBib29sIGxpdmVSZWdpb25TdGF0dXNJc0Vu
YWJsZWQoY29uc3QgQXRvbWljU3RyaW5nJik7CisgICAgc3RhdGljIGJvb2wgbGl2ZVJlZ2lvblN0
YXR1c0lzRW5hYmxlZChjb25zdCBBdG9tU3RyaW5nJik7CiAgICAgc3RhdGljIGJvb2wgY29udGVu
dEVkaXRhYmxlQXR0cmlidXRlSXNFbmFibGVkKEVsZW1lbnQqKTsKICAgICBib29sIGhhc0NvbnRl
bnRFZGl0YWJsZUF0dHJpYnV0ZVNldCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAppbmRl
eCA1NjU1MDA5OTdkNGQxNDMzYTUzODNkZDEyNzI1YTgyZjhhNjA4M2I4Li5lZGJkYjgxZWU0MTJl
YWY3YTNhMmU0MWVhMzBkZmJmODk2OWVlOWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKQEAgLTU3
OSw3ICs1NzksNyBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aGVscFRleHQo
KSBjb25zdAogICAgIGlmICghbV9yZW5kZXJlcikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwog
ICAgIAotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYXJpYUhlbHAgPSBnZXRBdHRyaWJ1dGUoYXJp
YV9oZWxwQXR0cik7CisgICAgY29uc3QgQXRvbVN0cmluZyYgYXJpYUhlbHAgPSBnZXRBdHRyaWJ1
dGUoYXJpYV9oZWxwQXR0cik7CiAgICAgaWYgKCFhcmlhSGVscC5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiBhcmlhSGVscDsKICAgICAKQEAgLTU5MSwxMiArNTkxLDEyIEBAIFN0cmluZyBBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpoZWxwVGV4dCgpIGNvbnN0CiAgICAgZm9yIChSZW5kZXJP
YmplY3QqIGFuY2VzdG9yID0gcmVuZGVyZXIoKTsgYW5jZXN0b3I7IGFuY2VzdG9yID0gYW5jZXN0
b3ItPnBhcmVudCgpKSB7CiAgICAgICAgIGlmIChpczxIVE1MRWxlbWVudD4oYW5jZXN0b3ItPm5v
ZGUoKSkpIHsKICAgICAgICAgICAgIEhUTUxFbGVtZW50JiBlbGVtZW50ID0gZG93bmNhc3Q8SFRN
TEVsZW1lbnQ+KCphbmNlc3Rvci0+bm9kZSgpKTsKLSAgICAgICAgICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgc3VtbWFyeSA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKHN1bW1hcnlBdHRyKTsKKyAgICAg
ICAgICAgIGNvbnN0IEF0b21TdHJpbmcmIHN1bW1hcnkgPSBlbGVtZW50LmdldEF0dHJpYnV0ZShz
dW1tYXJ5QXR0cik7CiAgICAgICAgICAgICBpZiAoIXN1bW1hcnkuaXNFbXB0eSgpKQogICAgICAg
ICAgICAgICAgIHJldHVybiBzdW1tYXJ5OwogICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBU
aGUgdGl0bGUgYXR0cmlidXRlIHNob3VsZCBiZSB1c2VkIGFzIGhlbHAgdGV4dCB1bmxlc3MgaXQg
aXMgYWxyZWFkeSBiZWluZyB1c2VkIGFzIGRlc2NyaXB0aXZlIHRleHQuCi0gICAgICAgICAgICBj
b25zdCBBdG9taWNTdHJpbmcmIHRpdGxlID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUodGl0bGVBdHRy
KTsKKyAgICAgICAgICAgIGNvbnN0IEF0b21TdHJpbmcmIHRpdGxlID0gZWxlbWVudC5nZXRBdHRy
aWJ1dGUodGl0bGVBdHRyKTsKICAgICAgICAgICAgIGlmICghdGl0bGUuaXNFbXB0eSgpICYmIGRl
c2NyaXB0aW9uICE9IHRpdGxlKQogICAgICAgICAgICAgICAgIHJldHVybiB0aXRsZTsKICAgICAg
ICAgfQpAQCAtNzQ5LDcgKzc0OSw3IEBAIFN0cmluZyBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjpzdHJpbmdWYWx1ZSgpIGNvbnN0CiAgICAgICAgIGludCBzZWxlY3RlZEluZGV4ID0gc2VsZWN0
RWxlbWVudC5zZWxlY3RlZEluZGV4KCk7CiAgICAgICAgIGNvbnN0IFZlY3RvcjxIVE1MRWxlbWVu
dCo+JiBsaXN0SXRlbXMgPSBzZWxlY3RFbGVtZW50Lmxpc3RJdGVtcygpOwogICAgICAgICBpZiAo
c2VsZWN0ZWRJbmRleCA+PSAwICYmIHN0YXRpY19jYXN0PHNpemVfdD4oc2VsZWN0ZWRJbmRleCkg
PCBsaXN0SXRlbXMuc2l6ZSgpKSB7Ci0gICAgICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIG92
ZXJyaWRkZW5EZXNjcmlwdGlvbiA9IGxpc3RJdGVtc1tzZWxlY3RlZEluZGV4XS0+YXR0cmlidXRl
V2l0aG91dFN5bmNocm9uaXphdGlvbihhcmlhX2xhYmVsQXR0cik7CisgICAgICAgICAgICBjb25z
dCBBdG9tU3RyaW5nJiBvdmVycmlkZGVuRGVzY3JpcHRpb24gPSBsaXN0SXRlbXNbc2VsZWN0ZWRJ
bmRleF0tPmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oYXJpYV9sYWJlbEF0dHIpOwog
ICAgICAgICAgICAgaWYgKCFvdmVycmlkZGVuRGVzY3JpcHRpb24uaXNOdWxsKCkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIG92ZXJyaWRkZW5EZXNjcmlwdGlvbjsKICAgICAgICAgfQpAQCAtMTAz
NywxMyArMTAzNywxMyBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Omhhc1BvcHVw
KCkgY29uc3QKIAogYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzdXBwb3J0c0FSSUFE
cm9wcGluZygpIGNvbnN0IAogewotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZHJvcEVmZmVjdCA9
IGdldEF0dHJpYnV0ZShhcmlhX2Ryb3BlZmZlY3RBdHRyKTsKKyAgICBjb25zdCBBdG9tU3RyaW5n
JiBkcm9wRWZmZWN0ID0gZ2V0QXR0cmlidXRlKGFyaWFfZHJvcGVmZmVjdEF0dHIpOwogICAgIHJl
dHVybiAhZHJvcEVmZmVjdC5pc0VtcHR5KCk7CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6c3VwcG9ydHNBUklBRHJhZ2dpbmcoKSBjb25zdAogewotICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgZ3JhYmJlZCA9IGdldEF0dHJpYnV0ZShhcmlhX2dyYWJiZWRBdHRyKTsKKyAgICBj
b25zdCBBdG9tU3RyaW5nJiBncmFiYmVkID0gZ2V0QXR0cmlidXRlKGFyaWFfZ3JhYmJlZEF0dHIp
OwogICAgIHJldHVybiBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShncmFiYmVkLCAidHJ1
ZSIpIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGdyYWJiZWQsICJmYWxzZSIpOwog
fQogCkBAIC0xMDU0LDcgKzEwNTQsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OmlzQVJJQUdyYWJiZWQoKQogCiBWZWN0b3I8U3RyaW5nPiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0OjpkZXRlcm1pbmVBUklBRHJvcEVmZmVjdHMoKQogewotICAgIGNvbnN0IEF0b21pY1N0cmlu
ZyYgZHJvcEVmZmVjdHMgPSBnZXRBdHRyaWJ1dGUoYXJpYV9kcm9wZWZmZWN0QXR0cik7CisgICAg
Y29uc3QgQXRvbVN0cmluZyYgZHJvcEVmZmVjdHMgPSBnZXRBdHRyaWJ1dGUoYXJpYV9kcm9wZWZm
ZWN0QXR0cik7CiAgICAgaWYgKGRyb3BFZmZlY3RzLmlzRW1wdHkoKSkgewogICAgICAgICByZXR1
cm4geyB9OwogICAgIH0KQEAgLTE1NjYsNyArMTU2Niw3IEBAIFN0cmluZyBBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0OjpzZWxlY3RlZFRleHQoKSBjb25zdAogICAgIHJldHVybiBkb0FYU3RyaW5n
Rm9yUmFuZ2UoZG9jdW1lbnRCYXNlZFNlbGVjdGVkVGV4dFJhbmdlKCkpOwogfQogCi1jb25zdCBB
dG9taWNTdHJpbmcmIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFjY2Vzc0tleSgpIGNvbnN0
Citjb25zdCBBdG9tU3RyaW5nJiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphY2Nlc3NLZXko
KSBjb25zdAogewogICAgIE5vZGUqIG5vZGUgPSBtX3JlbmRlcmVyLT5ub2RlKCk7CiAgICAgaWYg
KCFpczxFbGVtZW50Pihub2RlKSkKQEAgLTE4NDgsNyArMTg0OCw3IEBAIGJvb2wgQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdDo6c3VwcG9ydHNBUklBT3ducygpIGNvbnN0CiB7CiAgICAgaWYgKCFt
X3JlbmRlcmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgY29uc3QgQXRvbWljU3RyaW5n
JiBhcmlhT3ducyA9IGdldEF0dHJpYnV0ZShhcmlhX293bnNBdHRyKTsKKyAgICBjb25zdCBBdG9t
U3RyaW5nJiBhcmlhT3ducyA9IGdldEF0dHJpYnV0ZShhcmlhX293bnNBdHRyKTsKIAogICAgIHJl
dHVybiAhYXJpYU93bnMuaXNFbXB0eSgpOwogfQpAQCAtMjUxMSw3ICsyNTExLDcgQEAgQWNjZXNz
aWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWN0aXZlRGVzY2VuZGFu
dCgpIGNvbnN0CiAgICAgaWYgKCFtX3JlbmRlcmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICAKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGFjdGl2ZURlc2NlbmRhbnRBdHRyU3RyID0g
Z2V0QXR0cmlidXRlKGFyaWFfYWN0aXZlZGVzY2VuZGFudEF0dHIpOworICAgIGNvbnN0IEF0b21T
dHJpbmcmIGFjdGl2ZURlc2NlbmRhbnRBdHRyU3RyID0gZ2V0QXR0cmlidXRlKGFyaWFfYWN0aXZl
ZGVzY2VuZGFudEF0dHIpOwogICAgIGlmIChhY3RpdmVEZXNjZW5kYW50QXR0clN0ci5pc051bGwo
KSB8fCBhY3RpdmVEZXNjZW5kYW50QXR0clN0ci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIEVsZW1lbnQqIGVsZW1lbnQgPSB0aGlzLT5lbGVtZW50KCk7CkBAIC0yOTYx
LDcgKzI5NjEsNyBAQCBBY2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjpkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSgpCiAKIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlv
biBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpvcmllbnRhdGlvbigpIGNvbnN0CiB7Ci0gICAg
Y29uc3QgQXRvbWljU3RyaW5nJiBhcmlhT3JpZW50YXRpb24gPSBnZXRBdHRyaWJ1dGUoYXJpYV9v
cmllbnRhdGlvbkF0dHIpOworICAgIGNvbnN0IEF0b21TdHJpbmcmIGFyaWFPcmllbnRhdGlvbiA9
IGdldEF0dHJpYnV0ZShhcmlhX29yaWVudGF0aW9uQXR0cik7CiAgICAgaWYgKGVxdWFsTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKGFyaWFPcmllbnRhdGlvbiwgImhvcml6b250YWwiKSkKICAgICAg
ICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbjo6SG9yaXpvbnRhbDsKICAgICBpZiAo
ZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoYXJpYU9yaWVudGF0aW9uLCAidmVydGljYWwi
KSkKQEAgLTMwNjIsNyArMzA2Miw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
Y2FuU2V0RXhwYW5kZWRBdHRyaWJ1dGUoKSBjb25zdAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAKICAgICAvLyBBbiBvYmplY3QgY2FuIGJlIGV4cGFuZGVkIGlmIGl0IGFyaWEtZXhwYW5kZWQg
aXMgdHJ1ZSBvciBmYWxzZS4KLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGV4cGFuZGVkID0gZ2V0
QXR0cmlidXRlKGFyaWFfZXhwYW5kZWRBdHRyKTsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBleHBh
bmRlZCA9IGdldEF0dHJpYnV0ZShhcmlhX2V4cGFuZGVkQXR0cik7CiAgICAgaWYgKGVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGV4cGFuZGVkLCAidHJ1ZSIpIHx8IGVxdWFsTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKGV4cGFuZGVkLCAiZmFsc2UiKSkKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzM4MCw3ICszMzgwLDcgQEAgYm9vbCBBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0OjpjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdAogCiBjb25zdCBTdHJpbmcg
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6bGl2ZVJlZ2lvblN0YXR1cygpIGNvbnN0CiB7Ci0g
ICAgY29uc3QgQXRvbWljU3RyaW5nJiBsaXZlUmVnaW9uU3RhdHVzID0gZ2V0QXR0cmlidXRlKGFy
aWFfbGl2ZUF0dHIpOworICAgIGNvbnN0IEF0b21TdHJpbmcmIGxpdmVSZWdpb25TdGF0dXMgPSBn
ZXRBdHRyaWJ1dGUoYXJpYV9saXZlQXR0cik7CiAgICAgLy8gVGhlc2Ugcm9sZXMgaGF2ZSBpbXBs
aWNpdCBsaXZlIHJlZ2lvbiBzdGF0dXMuCiAgICAgaWYgKGxpdmVSZWdpb25TdGF0dXMuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gZGVmYXVsdExpdmVSZWdpb25TdGF0dXNGb3JSb2xlKHJvbGVW
YWx1ZSgpKTsKQEAgLTMzOTAsOCArMzM5MCw4IEBAIGNvbnN0IFN0cmluZyBBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0OjpsaXZlUmVnaW9uU3RhdHVzKCkgY29uc3QKIAogY29uc3QgU3RyaW5nIEFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmxpdmVSZWdpb25SZWxldmFudCgpIGNvbnN0CiB7Ci0g
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gZGVmYXVsdExpdmVS
ZWdpb25SZWxldmFudCgiYWRkaXRpb25zIHRleHQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKTsKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIHJlbGV2YW50ID0gZ2V0QXR0cmli
dXRlKGFyaWFfcmVsZXZhbnRBdHRyKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3Qg
QXRvbVN0cmluZz4gZGVmYXVsdExpdmVSZWdpb25SZWxldmFudCgiYWRkaXRpb25zIHRleHQiLCBB
dG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgY29uc3QgQXRvbVN0cmluZyYg
cmVsZXZhbnQgPSBnZXRBdHRyaWJ1dGUoYXJpYV9yZWxldmFudEF0dHIpOwogCiAgICAgLy8gRGVm
YXVsdCBhcmlhLXJlbGV2YW50ID0gImFkZGl0aW9ucyB0ZXh0Ii4KICAgICBpZiAocmVsZXZhbnQu
aXNFbXB0eSgpKQpAQCAtMzQwMiw3ICszNDAyLDcgQEAgY29uc3QgU3RyaW5nIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OmxpdmVSZWdpb25SZWxldmFudCgpIGNvbnN0CiAKIGJvb2wgQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6bGl2ZVJlZ2lvbkF0b21pYygpIGNvbnN0CiB7Ci0gICAgY29u
c3QgQXRvbWljU3RyaW5nJiBhdG9taWMgPSBnZXRBdHRyaWJ1dGUoYXJpYV9hdG9taWNBdHRyKTsK
KyAgICBjb25zdCBBdG9tU3RyaW5nJiBhdG9taWMgPSBnZXRBdHRyaWJ1dGUoYXJpYV9hdG9taWNB
dHRyKTsKICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoYXRvbWljLCAidHJ1
ZSIpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UoYXRvbWljLCAiZmFsc2UiKSkKQEAgLTM2MDAsNyArMzYwMCw3IEBAIGNvbnN0IFN0
cmluZyYgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWN0aW9uVmVyYigpIGNvbnN0CiAjZW5k
aWYKIH0KICAgICAKLXZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c2V0QWNjZXNzaWJs
ZU5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQordm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0OjpzZXRBY2Nlc3NpYmxlTmFtZShjb25zdCBBdG9tU3RyaW5nJiBuYW1lKQogewogICAg
IC8vIFNldHRpbmcgdGhlIGFjY2Vzc2libGUgbmFtZSBjYW4gc3RvcmUgdGhlIHZhbHVlIGluIHRo
ZSBET00KICAgICBpZiAoIW1fcmVuZGVyZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCmluZGV4IGIxMjAzOWFi
ZWE1MGE4NDQ3YTllOTFhY2M2ODk2NjU3MmU3NTQ3NDIuLjBiMTlkYTUyYWJlNmMxZjE1ODcyOTgw
YjI3NGU1ZGQ0YWFlMDJiZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCkBAIC04MCw3ICs4MCw3IEBAIHB1
YmxpYzoKICAgICBib29sIGNhblNldFRleHRSYW5nZUF0dHJpYnV0ZXMoKSBjb25zdCBvdmVycmlk
ZTsKICAgICBib29sIGNhblNldEV4cGFuZGVkQXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGU7CiAK
LSAgICB2b2lkIHNldEFjY2Vzc2libGVOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRl
OworICAgIHZvaWQgc2V0QWNjZXNzaWJsZU5hbWUoY29uc3QgQXRvbVN0cmluZyYpIG92ZXJyaWRl
OwogICAgIAogICAgIC8vIFByb3ZpZGVzIGNvbW1vbiBsb2dpYyB1c2VkIGJ5IGFsbCBlbGVtZW50
cyB3aGVuIGRldGVybWluaW5nIGlzSWdub3JlZC4KICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5j
bHVzaW9uIGRlZmF1bHRPYmplY3RJbmNsdXNpb24oKSBjb25zdCBvdmVycmlkZTsKQEAgLTEzNCw3
ICsxMzQsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIHRleHQoKSBjb25zdCBvdmVycmlkZTsKICAg
ICBpbnQgdGV4dExlbmd0aCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFN0cmluZyBzZWxlY3RlZFRl
eHQoKSBjb25zdCBvdmVycmlkZTsKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGFjY2Vzc0tleSgp
IGNvbnN0IG92ZXJyaWRlOworICAgIGNvbnN0IEF0b21TdHJpbmcmIGFjY2Vzc0tleSgpIGNvbnN0
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBhY3Rpb25WZXJiKCkgY29uc3Q7
CiAgICAgV2lkZ2V0KiB3aWRnZXQoKSBjb25zdCBvdmVycmlkZTsKICAgICBXaWRnZXQqIHdpZGdl
dEZvckF0dGFjaG1lbnRWaWV3KCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTVkdFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNWR0VsZW1lbnQuY3BwCmluZGV4
IDllYjRlOTJmYTU2YmFiZDVkMzBlNTgzMzcwYTY4ZDk3NzMyMmQ3MDQuLmIwNjY4ODYzNWU2ZWYw
ZWQ3OWNiZDRjNTlmMjNiMzA4Yzk4MmFlMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNWR0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNWR0VsZW1lbnQuY3BwCkBAIC0xNTcsNyAr
MTU3LDcgQEAgU3RyaW5nIEFjY2Vzc2liaWxpdHlTVkdFbGVtZW50OjphY2Nlc3NpYmlsaXR5RGVz
Y3JpcHRpb24oKSBjb25zdAogICAgIC8vIGxpc3RlZCBhcyBhIHN1cHBvcnRlZCBhdHRyaWJ1dGUg
b2YgdGhlICdpbWFnZScgZWxlbWVudCBpbiB0aGUgU1ZHIHNwZWM6CiAgICAgLy8gaHR0cHM6Ly93
d3cudzMub3JnL1RSL1NWRy9zdHJ1Y3QuaHRtbCNJbWFnZUVsZW1lbnQKICAgICBpZiAobV9yZW5k
ZXJlci0+aXNTVkdJbWFnZSgpKSB7Ci0gICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYWx0ID0g
Z2V0QXR0cmlidXRlKEhUTUxOYW1lczo6YWx0QXR0cik7CisgICAgICAgIGNvbnN0IEF0b21TdHJp
bmcmIGFsdCA9IGdldEF0dHJpYnV0ZShIVE1MTmFtZXM6OmFsdEF0dHIpOwogICAgICAgICBpZiAo
IWFsdC5pc051bGwoKSkKICAgICAgICAgICAgIHJldHVybiBhbHQ7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5jcHAKaW5k
ZXggMTIyMjlkYzA2NjI1YTgxNDM4ODJhY2Y1MGEyMTEwYjk3ZGJhN2UyMy4uYjNmZjBhOTc1MTA4
ZjEzODNhOTY4MmZlMDJjMTZjNjkwOTVmNjdkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuY3BwCkBAIC05NSw3ICs5NSw3IEBA
IHZvaWQgQWNjZXNzaWJpbGl0eVNsaWRlcjo6YWRkQ2hpbGRyZW4oKQogICAgICAgICBtX2NoaWxk
cmVuLmFwcGVuZCgmdGh1bWIpOwogfQogCi1jb25zdCBBdG9taWNTdHJpbmcmIEFjY2Vzc2liaWxp
dHlTbGlkZXI6OmdldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGUpIGNv
bnN0Citjb25zdCBBdG9tU3RyaW5nJiBBY2Nlc3NpYmlsaXR5U2xpZGVyOjpnZXRBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlKSBjb25zdAogewogICAgIHJldHVybiBpbnB1
dEVsZW1lbnQoKS0+Z2V0QXR0cmlidXRlKGF0dHJpYnV0ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5oCmluZGV4IGYxYzc4YzFl
YWMxZWUwM2NkYzk1MWY5MjkxODdmMmZjYzIwZjY4ZGEuLjQ2OWQyMTcwMWJlYzUzYWYxOWQ5N2Jm
NDVlMGVlZTFiZGMyMjZjNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVNsaWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVNsaWRlci5oCkBAIC01NSw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBhZGRDaGlsZHJlbigpIG92ZXJyaWRlOwogICAgIAogICAgIGJvb2wgY2FuU2V0VmFsdWVB
dHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgY29uc3QgQXRv
bWljU3RyaW5nJiBnZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlKSBj
b25zdDsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBnZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0cmlidXRlKSBjb25zdDsKICAgICAKICAgICB2b2lkIHNldFZhbHVlKGNvbnN0IFN0
cmluZyYpIG92ZXJyaWRlOwogICAgIGZsb2F0IHZhbHVlRm9yUmFuZ2UoKSBjb25zdCBvdmVycmlk
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVRhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRh
YmxlLmNwcAppbmRleCA5ZGY5ZDI3NmI0NjU3M2MyZGY0NTA3NDZkNDZhYmFmYWJkYTFiMzc1Li5m
NWJmNWIyZjYwZmY4NTdjOGE2ZGU5MjVhMGJkMzBmN2NkODZmZTAxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCkBAIC03MDAs
NyArNzAwLDcgQEAgU3RyaW5nIEFjY2Vzc2liaWxpdHlUYWJsZTo6dGl0bGUoKSBjb25zdAogCiBp
bnQgQWNjZXNzaWJpbGl0eVRhYmxlOjpheENvbHVtbkNvdW50KCkgY29uc3QKIHsKLSAgICBjb25z
dCBBdG9taWNTdHJpbmcmIGNvbENvdW50VmFsdWUgPSBnZXRBdHRyaWJ1dGUoYXJpYV9jb2xjb3Vu
dEF0dHIpOworICAgIGNvbnN0IEF0b21TdHJpbmcmIGNvbENvdW50VmFsdWUgPSBnZXRBdHRyaWJ1
dGUoYXJpYV9jb2xjb3VudEF0dHIpOwogICAgIGludCBjb2xDb3VudEludCA9IGNvbENvdW50VmFs
dWUudG9JbnQoKTsKICAgICAvLyBUaGUgQVJJQSBzcGVjIHN0YXRlcywgIkF1dGhvcnMgbXVzdCBz
ZXQgdGhlIHZhbHVlIG9mIGFyaWEtY29sY291bnQgdG8gYW4gaW50ZWdlciBlcXVhbCB0byB0aGUK
ICAgICAvLyBudW1iZXIgb2YgY29sdW1ucyBpbiB0aGUgZnVsbCB0YWJsZS4gSWYgdGhlIHRvdGFs
IG51bWJlciBvZiBjb2x1bW5zIGlzIHVua25vd24sIGF1dGhvcnMgbXVzdApAQCAtNzE0LDcgKzcx
NCw3IEBAIGludCBBY2Nlc3NpYmlsaXR5VGFibGU6OmF4Q29sdW1uQ291bnQoKSBjb25zdAogCiBp
bnQgQWNjZXNzaWJpbGl0eVRhYmxlOjpheFJvd0NvdW50KCkgY29uc3QKIHsKLSAgICBjb25zdCBB
dG9taWNTdHJpbmcmIHJvd0NvdW50VmFsdWUgPSBnZXRBdHRyaWJ1dGUoYXJpYV9yb3djb3VudEF0
dHIpOworICAgIGNvbnN0IEF0b21TdHJpbmcmIHJvd0NvdW50VmFsdWUgPSBnZXRBdHRyaWJ1dGUo
YXJpYV9yb3djb3VudEF0dHIpOwogICAgIGludCByb3dDb3VudEludCA9IHJvd0NvdW50VmFsdWUu
dG9JbnQoKTsKICAgICAvLyBUaGUgQVJJQSBzcGVjIHN0YXRlcywgIkF1dGhvcnMgbXVzdCBzZXQg
dGhlIHZhbHVlIG9mIGFyaWEtcm93Y291bnQgdG8gYW4gaW50ZWdlciBlcXVhbCB0byB0aGUKICAg
ICAvLyBudW1iZXIgb2Ygcm93cyBpbiB0aGUgZnVsbCB0YWJsZS4gSWYgdGhlIHRvdGFsIG51bWJl
ciBvZiByb3dzIGlzIHVua25vd24sIGF1dGhvcnMgbXVzdCBzZXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwCmluZGV4
IGYyOWUzYmYwMjZlMzU1ZmZmZjNkZDc1MWQ2ZGVkNTZhYzdiY2NmYzguLjliYmFkMTEyOTZlNWUx
YzcwNTkzNzI1YjYyOTg0NmZhOTU2YjQ0MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcApAQCAtMTQ4LDcgKzE0
OCw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6aXNUYWJsZUhlYWRlckNlbGwoKSBj
b25zdAogCiBib29sIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmlzQ29sdW1uSGVhZGVyQ2VsbCgp
IGNvbnN0CiB7Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBzY29wZSA9IGdldEF0dHJpYnV0ZShz
Y29wZUF0dHIpOworICAgIGNvbnN0IEF0b21TdHJpbmcmIHNjb3BlID0gZ2V0QXR0cmlidXRlKHNj
b3BlQXR0cik7CiAgICAgaWYgKHNjb3BlID09ICJjb2wiIHx8IHNjb3BlID09ICJjb2xncm91cCIp
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGlmIChzY29wZSA9PSAicm93IiB8fCBzY29wZSA9
PSAicm93Z3JvdXAiKQpAQCAtMTc3LDcgKzE3Nyw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVRhYmxl
Q2VsbDo6aXNDb2x1bW5IZWFkZXJDZWxsKCkgY29uc3QKIAogYm9vbCBBY2Nlc3NpYmlsaXR5VGFi
bGVDZWxsOjppc1Jvd0hlYWRlckNlbGwoKSBjb25zdAogewotICAgIGNvbnN0IEF0b21pY1N0cmlu
ZyYgc2NvcGUgPSBnZXRBdHRyaWJ1dGUoc2NvcGVBdHRyKTsKKyAgICBjb25zdCBBdG9tU3RyaW5n
JiBzY29wZSA9IGdldEF0dHJpYnV0ZShzY29wZUF0dHIpOwogICAgIGlmIChzY29wZSA9PSAicm93
IiB8fCBzY29wZSA9PSAicm93Z3JvdXAiKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBpZiAo
c2NvcGUgPT0gImNvbCIgfHwgc2NvcGUgPT0gImNvbGdyb3VwIikKQEAgLTI2OSw3ICsyNjksNyBA
QCB2b2lkIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmNvbHVtbkhlYWRlcnMoQWNjZXNzaWJpbGl0
eUNoaWxkcmVuVmVjdG9yJiBoZWFkZXJzKQogICAgICAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVu
c2lnbmVkPiBjaGlsZFJvd1JhbmdlOwogICAgICAgICB0YWJsZUNlbGwtPnJvd0luZGV4UmFuZ2Uo
Y2hpbGRSb3dSYW5nZSk7CiAgICAgICAgICAgICAKLSAgICAgICAgY29uc3QgQXRvbWljU3RyaW5n
JiBzY29wZSA9IHRhYmxlQ2VsbC0+Z2V0QXR0cmlidXRlKHNjb3BlQXR0cik7CisgICAgICAgIGNv
bnN0IEF0b21TdHJpbmcmIHNjb3BlID0gdGFibGVDZWxsLT5nZXRBdHRyaWJ1dGUoc2NvcGVBdHRy
KTsKICAgICAgICAgaWYgKHNjb3BlID09ICJjb2xncm91cCIgJiYgaXNUYWJsZUNlbGxJblNhbWVD
b2xHcm91cCh0YWJsZUNlbGwpKQogICAgICAgICAgICAgaGVhZGVycy5hcHBlbmQodGFibGVDZWxs
KTsKICAgICAgICAgZWxzZSBpZiAodGFibGVDZWxsLT5pc0NvbHVtbkhlYWRlckNlbGwoKSkKQEAg
LTI5NCw3ICsyOTQsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OnJvd0hlYWRlcnMo
QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBoZWFkZXJzKQogICAgICAgICBpZiAoIXRhYmxl
Q2VsbCB8fCB0YWJsZUNlbGwgPT0gdGhpcyB8fCBoZWFkZXJzLmNvbnRhaW5zKHRhYmxlQ2VsbCkp
CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgCi0gICAgICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgc2NvcGUgPSB0YWJsZUNlbGwtPmdldEF0dHJpYnV0ZShzY29wZUF0dHIpOworICAgICAg
ICBjb25zdCBBdG9tU3RyaW5nJiBzY29wZSA9IHRhYmxlQ2VsbC0+Z2V0QXR0cmlidXRlKHNjb3Bl
QXR0cik7CiAgICAgICAgIGlmIChzY29wZSA9PSAicm93Z3JvdXAiICYmIGlzVGFibGVDZWxsSW5T
YW1lUm93R3JvdXAodGFibGVDZWxsKSkKICAgICAgICAgICAgIGhlYWRlcnMuYXBwZW5kKHRhYmxl
Q2VsbCk7CiAgICAgICAgIGVsc2UgaWYgKHRhYmxlQ2VsbC0+aXNSb3dIZWFkZXJDZWxsKCkpCkBA
IC0zODUsNyArMzg1LDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVRhYmxl
Q2VsbDo6dGl0bGVVSUVsZW1lbnQoKSBjb25zdAogICAgIAogaW50IEFjY2Vzc2liaWxpdHlUYWJs
ZUNlbGw6OmF4Q29sdW1uSW5kZXgoKSBjb25zdAogewotICAgIGNvbnN0IEF0b21pY1N0cmluZyYg
Y29sSW5kZXhWYWx1ZSA9IGdldEF0dHJpYnV0ZShhcmlhX2NvbGluZGV4QXR0cik7CisgICAgY29u
c3QgQXRvbVN0cmluZyYgY29sSW5kZXhWYWx1ZSA9IGdldEF0dHJpYnV0ZShhcmlhX2NvbGluZGV4
QXR0cik7CiAgICAgaWYgKGNvbEluZGV4VmFsdWUudG9JbnQoKSA+PSAxKQogICAgICAgICByZXR1
cm4gY29sSW5kZXhWYWx1ZS50b0ludCgpOwogCkBAIC00MDMsNyArNDAzLDcgQEAgaW50IEFjY2Vz
c2liaWxpdHlUYWJsZUNlbGw6OmF4Um93SW5kZXgoKSBjb25zdAogewogICAgIC8vIEFSSUEgMS4x
OiBBdXRob3JzIHNob3VsZCBwbGFjZSBhcmlhLXJvd2luZGV4IG9uIGVhY2ggcm93LiBBdXRob3Jz
IG1heSBhbHNvIHBsYWNlCiAgICAgLy8gYXJpYS1yb3dpbmRleCBvbiBhbGwgb2YgdGhlIGNoaWxk
cmVuIG9yIG93bmVkIGVsZW1lbnRzIG9mIGVhY2ggcm93LgotICAgIGNvbnN0IEF0b21pY1N0cmlu
ZyYgcm93SW5kZXhWYWx1ZSA9IGdldEF0dHJpYnV0ZShhcmlhX3Jvd2luZGV4QXR0cik7CisgICAg
Y29uc3QgQXRvbVN0cmluZyYgcm93SW5kZXhWYWx1ZSA9IGdldEF0dHJpYnV0ZShhcmlhX3Jvd2lu
ZGV4QXR0cik7CiAgICAgaWYgKHJvd0luZGV4VmFsdWUudG9JbnQoKSA+PSAxKQogICAgICAgICBy
ZXR1cm4gcm93SW5kZXhWYWx1ZS50b0ludCgpOwogICAgIApAQCAtNDIwLDcgKzQyMCw3IEBAIGlu
dCBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpheENvbHVtblNwYW4oKSBjb25zdAogICAgIGlmICho
YXNBdHRyaWJ1dGUoY29sc3BhbkF0dHIpKQogICAgICAgICByZXR1cm4gLTE7CiAKLSAgICBjb25z
dCBBdG9taWNTdHJpbmcmIGNvbFNwYW5WYWx1ZSA9IGdldEF0dHJpYnV0ZShhcmlhX2NvbHNwYW5B
dHRyKTsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBjb2xTcGFuVmFsdWUgPSBnZXRBdHRyaWJ1dGUo
YXJpYV9jb2xzcGFuQXR0cik7CiAgICAgLy8gQVJJQSAxLjE6IEF1dGhvcnMgbXVzdCBzZXQgdGhl
IHZhbHVlIG9mIGFyaWEtY29sc3BhbiB0byBhbiBpbnRlZ2VyIGdyZWF0ZXIgdGhhbiBvciBlcXVh
bCB0byAxLgogICAgIGlmIChjb2xTcGFuVmFsdWUudG9JbnQoKSA+PSAxKQogICAgICAgICByZXR1
cm4gY29sU3BhblZhbHVlLnRvSW50KCk7CkBAIC00MzUsNyArNDM1LDcgQEAgaW50IEFjY2Vzc2li
aWxpdHlUYWJsZUNlbGw6OmF4Um93U3BhbigpIGNvbnN0CiAgICAgaWYgKGhhc0F0dHJpYnV0ZShy
b3dzcGFuQXR0cikpCiAgICAgICAgIHJldHVybiAtMTsKIAotICAgIGNvbnN0IEF0b21pY1N0cmlu
ZyYgcm93U3BhblZhbHVlID0gZ2V0QXR0cmlidXRlKGFyaWFfcm93c3BhbkF0dHIpOworICAgIGNv
bnN0IEF0b21TdHJpbmcmIHJvd1NwYW5WYWx1ZSA9IGdldEF0dHJpYnV0ZShhcmlhX3Jvd3NwYW5B
dHRyKTsKICAgICAKICAgICAvLyBBUklBIDEuMTogQXV0aG9ycyBtdXN0IHNldCB0aGUgdmFsdWUg
b2YgYXJpYS1yb3dzcGFuIHRvIGFuIGludGVnZXIgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDAu
CiAgICAgLy8gU2V0dGluZyB0aGUgdmFsdWUgdG8gMCBpbmRpY2F0ZXMgdGhhdCB0aGUgY2VsbCBv
ciBncmlkY2VsbCBpcyB0byBzcGFuIGFsbCB0aGUgcmVtYWluaW5nIHJvd3MgaW4gdGhlIHJvdyBn
cm91cC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVRhYmxlUm93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVRhYmxlUm93LmNwcAppbmRleCAzMzVhODlmYjgxNmRmNTZlMjYwZjdlY2Y3OWJlOWEyZDk2
YWVmM2E3Li5iYjlkOWUwNGM0ZGY0ODZhZGI3NTZjMzNhZGVmMWRhMDU1OTkzMjdmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVS
b3cuY3BwCkBAIC0xNjksNyArMTY5LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VGFibGVSb3c6OmFk
ZENoaWxkcmVuKCkKIAogaW50IEFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6YXhDb2x1bW5JbmRleCgp
IGNvbnN0CiB7Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBjb2xJbmRleFZhbHVlID0gZ2V0QXR0
cmlidXRlKGFyaWFfY29saW5kZXhBdHRyKTsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBjb2xJbmRl
eFZhbHVlID0gZ2V0QXR0cmlidXRlKGFyaWFfY29saW5kZXhBdHRyKTsKICAgICBpZiAoY29sSW5k
ZXhWYWx1ZS50b0ludCgpID49IDEpCiAgICAgICAgIHJldHVybiBjb2xJbmRleFZhbHVlLnRvSW50
KCk7CiAgICAgCkBAIC0xNzgsNyArMTc4LDcgQEAgaW50IEFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6
YXhDb2x1bW5JbmRleCgpIGNvbnN0CiAKIGludCBBY2Nlc3NpYmlsaXR5VGFibGVSb3c6OmF4Um93
SW5kZXgoKSBjb25zdAogewotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgcm93SW5kZXhWYWx1ZSA9
IGdldEF0dHJpYnV0ZShhcmlhX3Jvd2luZGV4QXR0cik7CisgICAgY29uc3QgQXRvbVN0cmluZyYg
cm93SW5kZXhWYWx1ZSA9IGdldEF0dHJpYnV0ZShhcmlhX3Jvd2luZGV4QXR0cik7CiAgICAgaWYg
KHJvd0luZGV4VmFsdWUudG9JbnQoKSA+PSAxKQogICAgICAgICByZXR1cm4gcm93SW5kZXhWYWx1
ZS50b0ludCgpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmxlU2V0VmFsdWVFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2libGVTZXRWYWx1ZUV2ZW50LmNwcAppbmRleCAwZjgxYWZiMjVlNmRhMDc5MjRm
MDU0MGQ4ZmNkNzQ4ZDg4ZWUyZmI1Li5kZmRlNWZjMGQxMGY4OGJkNDI5OGRmZDM0NTU0NTgwMzBj
MWQzMjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
bGVTZXRWYWx1ZUV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2libGVTZXRWYWx1ZUV2ZW50LmNwcApAQCAtMjgsNyArMjgsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLUFjY2Vzc2libGVTZXRWYWx1ZUV2ZW50OjpBY2Nlc3NpYmxlU2V0VmFsdWVF
dmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUp
CitBY2Nlc3NpYmxlU2V0VmFsdWVFdmVudDo6QWNjZXNzaWJsZVNldFZhbHVlRXZlbnQoY29uc3Qg
QXRvbVN0cmluZyYgdHlwZSwgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCiAgICAgOiBFdmVudCh0
eXBlLCBDYW5CdWJibGU6OlllcywgSXNDYW5jZWxhYmxlOjpZZXMpCiAgICAgLCBtX3ZhbHVlKHZh
bHVlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmxlU2V0VmFsdWVFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmxlU2V0VmFsdWVFdmVudC5oCmluZGV4IDAyMjMzYzFiZGViZTljYWY4ZmIzZGZlZmY0NGI5ZmY1
Mjk4NjM4OGUuLjU3ZTgwNDVkZWNlMDM2YTlmODQ1MWUwNWIwY2ZlYzBmMTk1ZmNmNzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJsZVNldFZhbHVlRXZl
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2libGVTZXRWYWx1
ZUV2ZW50LmgKQEAgLTMxLDIzICszMSwyMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEFjY2Vzc2libGVTZXRWYWx1ZUV2ZW50IDogcHVibGljIEV2ZW50IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmPEFjY2Vzc2libGVTZXRWYWx1ZUV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3Ry
aW5nJiB0eXBlLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQorICAgIHN0YXRpYyBSZWY8QWNj
ZXNzaWJsZVNldFZhbHVlRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25z
dCBBdG9tU3RyaW5nJiB2YWx1ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEFjY2Vzc2libGVTZXRWYWx1ZUV2ZW50KHR5cGUsIHZhbHVlKSk7CiAgICAgfQogCiAgICAgdmly
dHVhbCB+QWNjZXNzaWJsZVNldFZhbHVlRXZlbnQoKTsKIAotICAgIGNvbnN0IEF0b21pY1N0cmlu
ZyYgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CisgICAgY29uc3QgQXRvbVN0cmlu
ZyYgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CiAKIHByb3RlY3RlZDoKLSAgICBB
Y2Nlc3NpYmxlU2V0VmFsdWVFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IEF0
b21pY1N0cmluZyYgdmFsdWUpOworICAgIEFjY2Vzc2libGVTZXRWYWx1ZUV2ZW50KGNvbnN0IEF0
b21TdHJpbmcmIHR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKTsKIAogICAgIC8vIEV2ZW50
LgogICAgIEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gQWNjZXNzaWJsZVNldFZhbHVlRXZlbnRJbnRlcmZhY2VUeXBlOyB9CiAKIHByaXZhdGU6
Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nIG1fdmFsdWU7CisgICAgY29uc3QgQXRvbVN0cmluZyBt
X3ZhbHVlOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9hdGsvV2ViS2l0QWNjZXNzaWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2F0ay9XZWJLaXRBY2Nlc3NpYmxlLmNwcAppbmRleCA2M2IwMzgyODkyYTQ5MmYzZjJmODdlNzQw
ZDUwM2IyMGQyOTQ2MmM1Li45Yzc3YTA0YTRjZTlhMDQ0MGRhYWEwMDM2Nzg2YzBkMTk1MDNkMGEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nl
c3NpYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRB
Y2Nlc3NpYmxlLmNwcApAQCAtNTMyLDE0ICs1MzIsMTQgQEAgc3RhdGljIEF0a0F0dHJpYnV0ZVNl
dCogd2Via2l0QWNjZXNzaWJsZUdldEF0dHJpYnV0ZXMoQXRrT2JqZWN0KiBvYmplY3QpCiAgICAg
aWYgKGF1dG8gbGl2ZUNvbnRhaW5lciA9IGNvcmVPYmplY3QtPmxpdmVSZWdpb25BbmNlc3Rvcihm
YWxzZSkpIHsKICAgICAgICAgU3RyaW5nIGxpdmVTdGF0dXMgPSBsaXZlQ29udGFpbmVyLT5saXZl
UmVnaW9uU3RhdHVzKCk7CiAgICAgICAgIFN0cmluZyByZWxldmFudCA9IGxpdmVDb250YWluZXIt
PmxpdmVSZWdpb25SZWxldmFudCgpOwotICAgICAgICBib29sIGlzQXRvbWljID0gbGl2ZUNvbnRh
aW5lci0+bGl2ZVJlZ2lvbkF0b21pYygpOworICAgICAgICBib29sIGlzQXRvbSA9IGxpdmVDb250
YWluZXItPmxpdmVSZWdpb25BdG9taWMoKTsKICAgICAgICAgU3RyaW5nIGxpdmVSb2xlID0gcm9s
ZVN0cmluZy5pc0VtcHR5KCkgPyBjb21wdXRlZFJvbGVTdHJpbmcgOiByb2xlU3RyaW5nOwogCiAg
ICAgICAgIC8vIEFjY29yZGluZyB0byB0aGUgQ29yZSBBQU0sIHdlIG5lZWQgdG8gZXhwb3NlIHRo
ZSBhYm92ZSBwcm9wZXJ0aWVzIHdpdGggImNvbnRhaW5lci0iIHByZWZpeGVkCiAgICAgICAgIC8v
IG9iamVjdCBhdHRyaWJ1dGVzIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGUgY29udGFpbmVyIGlz
IHRoaXMgb2JqZWN0LCBvciBhbiBhbmNlc3RvciBvZiBpdC4KICAgICAgICAgYXR0cmlidXRlU2V0
ID0gYWRkVG9BdGtBdHRyaWJ1dGVTZXQoYXR0cmlidXRlU2V0LCAiY29udGFpbmVyLWxpdmUiLCBs
aXZlU3RhdHVzLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBhdHRyaWJ1dGVTZXQgPSBhZGRUb0F0
a0F0dHJpYnV0ZVNldChhdHRyaWJ1dGVTZXQsICJjb250YWluZXItcmVsZXZhbnQiLCByZWxldmFu
dC51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgaWYgKGlzQXRvbWljKQorICAgICAgICBpZiAoaXNB
dG9tKQogICAgICAgICAgICAgYXR0cmlidXRlU2V0ID0gYWRkVG9BdGtBdHRyaWJ1dGVTZXQoYXR0
cmlidXRlU2V0LCAiY29udGFpbmVyLWF0b21pYyIsICJ0cnVlIik7CiAgICAgICAgIGlmICghbGl2
ZVJvbGUuaXNFbXB0eSgpKQogICAgICAgICAgICAgYXR0cmlidXRlU2V0ID0gYWRkVG9BdGtBdHRy
aWJ1dGVTZXQoYXR0cmlidXRlU2V0LCAiY29udGFpbmVyLWxpdmUtcm9sZSIsIGxpdmVSb2xlLnV0
ZjgoKS5kYXRhKCkpOwpAQCAtNTQ5LDkgKzU0OSw5IEBAIHN0YXRpYyBBdGtBdHRyaWJ1dGVTZXQq
IHdlYmtpdEFjY2Vzc2libGVHZXRBdHRyaWJ1dGVzKEF0a09iamVjdCogb2JqZWN0KQogICAgICAg
ICBpZiAobGl2ZUNvbnRhaW5lciA9PSBjb3JlT2JqZWN0KSB7CiAgICAgICAgICAgICBhdHRyaWJ1
dGVTZXQgPSBhZGRUb0F0a0F0dHJpYnV0ZVNldChhdHRyaWJ1dGVTZXQsICJsaXZlIiwgbGl2ZVN0
YXR1cy51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgICAgIGF0dHJpYnV0ZVNldCA9IGFkZFRvQXRr
QXR0cmlidXRlU2V0KGF0dHJpYnV0ZVNldCwgInJlbGV2YW50IiwgcmVsZXZhbnQudXRmOCgpLmRh
dGEoKSk7Ci0gICAgICAgICAgICBpZiAoaXNBdG9taWMpCisgICAgICAgICAgICBpZiAoaXNBdG9t
KQogICAgICAgICAgICAgICAgIGF0dHJpYnV0ZVNldCA9IGFkZFRvQXRrQXR0cmlidXRlU2V0KGF0
dHJpYnV0ZVNldCwgImF0b21pYyIsICJ0cnVlIik7Ci0gICAgICAgIH0gZWxzZSBpZiAoIWlzQXRv
bWljICYmIGNvcmVPYmplY3QtPmxpdmVSZWdpb25BdG9taWMoKSkKKyAgICAgICAgfSBlbHNlIGlm
ICghaXNBdG9tICYmIGNvcmVPYmplY3QtPmxpdmVSZWdpb25BdG9taWMoKSkKICAgICAgICAgICAg
IGF0dHJpYnV0ZVNldCA9IGFkZFRvQXRrQXR0cmlidXRlU2V0KGF0dHJpYnV0ZVNldCwgImF0b21p
YyIsICJ0cnVlIik7CiAgICAgfQogCkBAIC01NjYsNyArNTY2LDcgQEAgc3RhdGljIEF0a0F0dHJp
YnV0ZVNldCogd2Via2l0QWNjZXNzaWJsZUdldEF0dHJpYnV0ZXMoQXRrT2JqZWN0KiBvYmplY3Qp
CiAgICAgICAgIGF0dHJpYnV0ZVNldCA9IGFkZFRvQXRrQXR0cmlidXRlU2V0KGF0dHJpYnV0ZVNl
dCwgImdyYWJiZWQiLCAiZmFsc2UiKTsKIAogICAgIC8vIFRoZSBDb3JlIEFBTSBzdGF0ZXMgdGhl
IGF1dGhvci1wcm92aWRlZCB2YWx1ZSBzaG91bGQgYmUgZXhwb3NlZCBhcy1pcy4KLSAgICBjb25z
dCBBdG9taWNTdHJpbmcmIGtleVNob3J0Y3V0cyA9IGNvcmVPYmplY3QtPmtleVNob3J0Y3V0c1Zh
bHVlKCk7CisgICAgY29uc3QgQXRvbVN0cmluZyYga2V5U2hvcnRjdXRzID0gY29yZU9iamVjdC0+
a2V5U2hvcnRjdXRzVmFsdWUoKTsKICAgICBpZiAoIWtleVNob3J0Y3V0cy5pc0VtcHR5KCkpCiAg
ICAgICAgIGF0dHJpYnV0ZVNldCA9IGFkZFRvQXRrQXR0cmlidXRlU2V0KGF0dHJpYnV0ZVNldCwg
ImtleXNob3J0Y3V0cyIsIGtleVNob3J0Y3V0cy5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNz
aWJsZVV0aWwuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNj
ZXNzaWJsZVV0aWwuY3BwCmluZGV4IGEyZjU5MzZiNzE2ZWZjYjcwYjM5MjQ5MGM4ZjU2ZDI3OTM2
ZDI3YjkuLjNmODljZTY0NjUzMmJiMmZjNTcwZDQxMTAyZDI4NTYwNzg5N2U1ZjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVVdGls
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3Np
YmxlVXRpbC5jcHAKQEAgLTQzLDcgKzQzLDcgQEAKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIK
ICNpbmNsdWRlICJWaXNpYmxlU2VsZWN0aW9uLmgiCiAKLSNpbmNsdWRlIDx3dGYvdGV4dC9BdG9t
aWNTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KaW5kZXggMGUwZGNjNDVkNTk3ODcyYzM2YzRj
ZGNhMjkxODY3NGNiNWJhODQ2ZC4uZjQzMjAzODM0YmY2MGI4NzExZWUyZDBhMWRhYzIwMmJkZjNi
NDcwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KQEAgLTI0MzMs
NyArMjQzMyw3IEBAIC0gKE5TU3RyaW5nKilyb2xlRGVzY3JpcHRpb24KICAgICAgICAgcmV0dXJu
IFtbc2VsZiBhdHRhY2htZW50Vmlld10gYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNj
ZXNzaWJpbGl0eVJvbGVEZXNjcmlwdGlvbkF0dHJpYnV0ZV07CiAgICAgQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfRU5ECiAKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIG92ZXJyaWRlUm9s
ZURlc2NyaXB0aW9uID0gbV9vYmplY3QtPnJvbGVEZXNjcmlwdGlvbigpOworICAgIGNvbnN0IEF0
b21TdHJpbmcmIG92ZXJyaWRlUm9sZURlc2NyaXB0aW9uID0gbV9vYmplY3QtPnJvbGVEZXNjcmlw
dGlvbigpOwogICAgIGlmICghb3ZlcnJpZGVSb2xlRGVzY3JpcHRpb24uaXNOdWxsKCkgJiYgIW92
ZXJyaWRlUm9sZURlc2NyaXB0aW9uLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG92ZXJyaWRl
Um9sZURlc2NyaXB0aW9uOwogICAgIApAQCAtMjkxMiw3ICsyOTEyLDcgQEAgSUdOT1JFX1dBUk5J
TkdTX0VORAogICAgIH0KICAgICAKICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3Ry
aW5nOk5TQWNjZXNzaWJpbGl0eUFjY2Vzc0tleUF0dHJpYnV0ZV0pIHsKLSAgICAgICAgQXRvbWlj
U3RyaW5nIGFjY2Vzc0tleSA9IG1fb2JqZWN0LT5hY2Nlc3NLZXkoKTsKKyAgICAgICAgQXRvbVN0
cmluZyBhY2Nlc3NLZXkgPSBtX29iamVjdC0+YWNjZXNzS2V5KCk7CiAgICAgICAgIGlmIChhY2Nl
c3NLZXkuaXNOdWxsKCkpCiAgICAgICAgICAgICByZXR1cm4gbmlsOwogICAgICAgICByZXR1cm4g
YWNjZXNzS2V5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS93aW4v
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS93aW4vQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJXaW4uY3BwCmluZGV4IGE4ZTcy
Zjk5ODE2NzMwNDZhMWE2NTlhMGY5OTEwOWE4ODUzZTg4YzUuLjA5YWE2NGUyM2JhNGY5YmYyNGI1
Y2MxZjc5ZGU2Y2JmMzkwYmUzOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvd2luL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyV2luLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L3dpbi9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcldpbi5j
cHAKQEAgLTM3LDcgKzM3LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIEFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyOjphY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWUoY29uc3Qg
QXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVOYW1lLCBWQVJJQU5UKiByZXN1bHQpCit2b2lkIEFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyOjphY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWUoY29uc3Qg
QXRvbVN0cmluZyYgYXR0cmlidXRlTmFtZSwgVkFSSUFOVCogcmVzdWx0KQogewogICAgIC8vIEZJ
WE1FOiBUaGlzIHNob3VsZCBiZSBmbGVzaGVkIG91dCB0byBtYXRjaCB0aGUgTWFjIHZlcnNpb24K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS93aW4vQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXJXaW4uaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvd2lu
L0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyV2luLmgKaW5kZXggYTY1YWQyOTVlMjY2YjY0ZmM5
Mzc4YjIxM2QyZTRkNDQxOTQyMDU0ZC4uYzg2YzM0YTk3ZWZlZDEwYWIwZTc3MGQ0ZGM3N2FhM2Yy
MGQxMGYxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS93aW4vQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJXaW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L3dpbi9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcldpbi5oCkBAIC0yNiw3ICsyNiw3
IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPHVua253bi5oPgotI2luY2x1ZGUgPHd0Zi90
ZXh0L0F0b21pY1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgYm9vbCBhdHRhY2hlZCgpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0OyB9CiAg
ICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGFjY2Vzc2liaWxpdHlPYmplY3QoKSBjb25zdCB7
IHJldHVybiBtX29iamVjdDsgfQogCi0gICAgICAgIHZvaWQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0
ZVZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYsIFZBUklBTlQqKTsKKyAgICAgICAgdm9pZCBhY2Nl
c3NpYmlsaXR5QXR0cmlidXRlVmFsdWUoY29uc3QgQXRvbVN0cmluZyYsIFZBUklBTlQqKTsKIAog
ICAgIHByb3RlY3RlZDoKICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIoQWNjZXNz
aWJpbGl0eU9iamVjdCogb2JqKSA6IG1fb2JqZWN0KG9iaikgeyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uUGxheWJhY2tFdmVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uUGxheWJhY2tFdmVudC5jcHAKaW5kZXggM2FkMWFl
ZGIyMDI1N2I4ODYxOTZhZDlhNTQ2YTAxNWYwNjFmOWNlMy4uYWRmYjUwM2JlNWVkYmNlYzcyYWE1
NWQ5ZTBlYWU3M2NjZmE2MTU0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9u
L0FuaW1hdGlvblBsYXliYWNrRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlv
bi9BbmltYXRpb25QbGF5YmFja0V2ZW50LmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLUFuaW1hdGlvblBsYXliYWNrRXZlbnQ6OkFuaW1hdGlvblBsYXliYWNr
RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBBbmltYXRpb25QbGF5YmFja0V2
ZW50SW5pdCYgaW5pdGlhbGl6ZXIsIElzVHJ1c3RlZCBpc1RydXN0ZWQpCitBbmltYXRpb25QbGF5
YmFja0V2ZW50OjpBbmltYXRpb25QbGF5YmFja0V2ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUs
IGNvbnN0IEFuaW1hdGlvblBsYXliYWNrRXZlbnRJbml0JiBpbml0aWFsaXplciwgSXNUcnVzdGVk
IGlzVHJ1c3RlZCkKICAgICA6IEV2ZW50KHR5cGUsIGluaXRpYWxpemVyLCBpc1RydXN0ZWQpCiB7
CiAgICAgaWYgKGluaXRpYWxpemVyLmN1cnJlbnRUaW1lKQpAQCAtNDQsNyArNDQsNyBAQCBBbmlt
YXRpb25QbGF5YmFja0V2ZW50OjpBbmltYXRpb25QbGF5YmFja0V2ZW50KGNvbnN0IEF0b21pY1N0
cmluZyYgdHlwZSwgY29uc3QgQQogICAgICAgICBtX3RpbWVsaW5lVGltZSA9IFdURjo6bnVsbG9w
dDsKIH0KIAotQW5pbWF0aW9uUGxheWJhY2tFdmVudDo6QW5pbWF0aW9uUGxheWJhY2tFdmVudChj
b25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIE9wdGlvbmFsPFNlY29uZHM+IGN1cnJlbnRUaW1lLCBP
cHRpb25hbDxTZWNvbmRzPiB0aW1lbGluZVRpbWUpCitBbmltYXRpb25QbGF5YmFja0V2ZW50OjpB
bmltYXRpb25QbGF5YmFja0V2ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIE9wdGlvbmFsPFNl
Y29uZHM+IGN1cnJlbnRUaW1lLCBPcHRpb25hbDxTZWNvbmRzPiB0aW1lbGluZVRpbWUpCiAgICAg
OiBFdmVudCh0eXBlLCBDYW5CdWJibGU6OlllcywgSXNDYW5jZWxhYmxlOjpObykKICAgICAsIG1f
Y3VycmVudFRpbWUoY3VycmVudFRpbWUpCiAgICAgLCBtX3RpbWVsaW5lVGltZSh0aW1lbGluZVRp
bWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uUGxheWJh
Y2tFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvblBsYXliYWNrRXZl
bnQuaAppbmRleCBlYTg4ZDE0ZWQ5MWZkZmE2Mjk5OWMxZTRjOGNiNTNkN2EzYWZkNWMyLi43ZDFj
YzNhODcyMWI3NTliM2VkMjUzOTYyYTc2YTAzMWE2OTQxNTIwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uUGxheWJhY2tFdmVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25QbGF5YmFja0V2ZW50LmgKQEAgLTMzLDEyICszMywx
MiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFuaW1hdGlvblBsYXliYWNrRXZlbnQg
ZmluYWwgOiBwdWJsaWMgRXZlbnQgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8QW5pbWF0aW9u
UGxheWJhY2tFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgT3B0aW9uYWw8
U2Vjb25kcz4gY3VycmVudFRpbWUsIE9wdGlvbmFsPFNlY29uZHM+IHRpbWVsaW5lVGltZSkKKyAg
ICBzdGF0aWMgUmVmPEFuaW1hdGlvblBsYXliYWNrRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9tU3Ry
aW5nJiB0eXBlLCBPcHRpb25hbDxTZWNvbmRzPiBjdXJyZW50VGltZSwgT3B0aW9uYWw8U2Vjb25k
cz4gdGltZWxpbmVUaW1lKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQW5p
bWF0aW9uUGxheWJhY2tFdmVudCh0eXBlLCBjdXJyZW50VGltZSwgdGltZWxpbmVUaW1lKSk7CiAg
ICAgfQogCi0gICAgc3RhdGljIFJlZjxBbmltYXRpb25QbGF5YmFja0V2ZW50PiBjcmVhdGUoY29u
c3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBBbmltYXRpb25QbGF5YmFja0V2ZW50SW5pdCYg
aW5pdGlhbGl6ZXIsIElzVHJ1c3RlZCBpc1RydXN0ZWQgPSBJc1RydXN0ZWQ6Ok5vKQorICAgIHN0
YXRpYyBSZWY8QW5pbWF0aW9uUGxheWJhY2tFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21TdHJpbmcm
IHR5cGUsIGNvbnN0IEFuaW1hdGlvblBsYXliYWNrRXZlbnRJbml0JiBpbml0aWFsaXplciwgSXNU
cnVzdGVkIGlzVHJ1c3RlZCA9IElzVHJ1c3RlZDo6Tm8pCiAgICAgewogICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBBbmltYXRpb25QbGF5YmFja0V2ZW50KHR5cGUsIGluaXRpYWxpemVyLCBp
c1RydXN0ZWQpKTsKICAgICB9CkBAIC01Myw4ICs1Myw4IEBAIHB1YmxpYzoKICAgICBFdmVudElu
dGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEFuaW1hdGlv
blBsYXliYWNrRXZlbnRJbnRlcmZhY2VUeXBlOyB9CiAKIHByaXZhdGU6Ci0gICAgQW5pbWF0aW9u
UGxheWJhY2tFdmVudChjb25zdCBBdG9taWNTdHJpbmcmLCBPcHRpb25hbDxTZWNvbmRzPiwgT3B0
aW9uYWw8U2Vjb25kcz4pOwotICAgIEFuaW1hdGlvblBsYXliYWNrRXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiwgY29uc3QgQW5pbWF0aW9uUGxheWJhY2tFdmVudEluaXQmLCBJc1RydXN0ZWQpOwor
ICAgIEFuaW1hdGlvblBsYXliYWNrRXZlbnQoY29uc3QgQXRvbVN0cmluZyYsIE9wdGlvbmFsPFNl
Y29uZHM+LCBPcHRpb25hbDxTZWNvbmRzPik7CisgICAgQW5pbWF0aW9uUGxheWJhY2tFdmVudChj
b25zdCBBdG9tU3RyaW5nJiwgY29uc3QgQW5pbWF0aW9uUGxheWJhY2tFdmVudEluaXQmLCBJc1Ry
dXN0ZWQpOwogCiAgICAgTWFya2FibGU8U2Vjb25kcywgU2Vjb25kczo6TWFya2FibGVUcmFpdHM+
IG1fY3VycmVudFRpbWU7CiAgICAgTWFya2FibGU8U2Vjb25kcywgU2Vjb25kczo6TWFya2FibGVU
cmFpdHM+IG1fdGltZWxpbmVUaW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0
aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9E
ZWNsYXJhdGl2ZUFuaW1hdGlvbi5jcHAKaW5kZXggMDMxNTVjNzU5MDBiN2JlNDk5ZGEyZjYyMzBm
NjIyZTNmMWI2NDEzZC4uMmE2MDNkYWFhNjAxMGQ2NDY0NTc5MDE3ODZmNjcwNTUwYzU0ZDYxMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRGVjbGFyYXRpdmVBbmltYXRpb24u
Y3BwCkBAIC0zMzAsNyArMzMwLDcgQEAgdm9pZCBEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6aW52YWxp
ZGF0ZURPTUV2ZW50cyhTZWNvbmRzIGVsYXBzZWRUaW1lKQogICAgIG1fcHJldmlvdXNJdGVyYXRp
b24gPSBpdGVyYXRpb247CiB9CiAKLXZvaWQgRGVjbGFyYXRpdmVBbmltYXRpb246OmVucXVldWVE
T01FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgU2Vjb25kcyBlbGFwc2VkVGlt
ZSkKK3ZvaWQgRGVjbGFyYXRpdmVBbmltYXRpb246OmVucXVldWVET01FdmVudChjb25zdCBBdG9t
U3RyaW5nJiBldmVudFR5cGUsIFNlY29uZHMgZWxhcHNlZFRpbWUpCiB7CiAgICAgQVNTRVJUKG1f
b3duaW5nRWxlbWVudCk7CiAgICAgYXV0byB0aW1lID0gc2Vjb25kc1RvV2ViQW5pbWF0aW9uc0FQ
SVRpbWUoZWxhcHNlZFRpbWUpIC8gMTAwMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fu
aW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9u
L0RlY2xhcmF0aXZlQW5pbWF0aW9uLmgKaW5kZXggZDk1ODM4ZmJkOGE3NDY0ZTBhMDllMmZjZWJl
MDE2MWUyZWRjOTNiNi4uYzZhNzQwYTY1ODJlNDU2YmRiYWQ4YjNhNTJjOTdjZDU3NjAxNDE3MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9uLmgK
QEAgLTc3LDcgKzc3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpc2Fzc29jaWF0ZUZyb21Pd25p
bmdFbGVtZW50KCk7CiAgICAgdm9pZCBmbHVzaFBlbmRpbmdTdHlsZUNoYW5nZXMoKSBjb25zdDsK
ICAgICBBbmltYXRpb25FZmZlY3RQaGFzZSBwaGFzZVdpdGhvdXRFZmZlY3QoKSBjb25zdDsKLSAg
ICB2b2lkIGVucXVldWVET01FdmVudChjb25zdCBBdG9taWNTdHJpbmcmLCBTZWNvbmRzKTsKKyAg
ICB2b2lkIGVucXVldWVET01FdmVudChjb25zdCBBdG9tU3RyaW5nJiwgU2Vjb25kcyk7CiAgICAg
dm9pZCByZW1vdmUoKSBmaW5hbDsKIAogICAgIC8vIEFjdGl2ZURPTU9iamVjdC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuY3BwCmluZGV4IDNmMTM1NmY1ZjNkNTc3
ZDFiZGI0MzE2Y2NhZTZkYjA1NDZiZWI5YjUuLmY2NjA3NTExYTM2MTc0MDVkY2RjYWIzNWI1MmE5
M2ZmZTE1Njk5ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFt
ZUVmZmVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0
LmNwcApAQCAtNjA3LDcgKzYwNyw3IEBAIFZlY3RvcjxTdHJvbmc8SlNPYmplY3Q+PiBLZXlmcmFt
ZUVmZmVjdDo6Z2V0S2V5ZnJhbWVzKEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICAgICAg
YXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPihzdGF0ZSwgaWRsVmFsdWUpOwogICAgICAg
ICAgICAgICAgIC8vIDQuIENhbGwgdGhlIFtbRGVmaW5lT3duUHJvcGVydHldXSBpbnRlcm5hbCBt
ZXRob2Qgb24gb3V0cHV0IGtleWZyYW1lIHdpdGggcHJvcGVydHkgbmFtZSBwcm9wZXJ0eSBuYW1l
LAogICAgICAgICAgICAgICAgIC8vICAgIFByb3BlcnR5IERlc2NyaXB0b3IgeyBbW1dyaXRhYmxl
XV06IHRydWUsIFtbRW51bWVyYWJsZV1dOiB0cnVlLCBbW0NvbmZpZ3VyYWJsZV1dOiB0cnVlLCBb
W1ZhbHVlXV06IHZhbHVlIH0gYW5kIEJvb2xlYW4gZmxhZyBmYWxzZS4KLSAgICAgICAgICAgICAg
ICBKU09iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkob3V0cHV0S2V5ZnJhbWUsICZzdGF0ZSwgQXRv
bWljU3RyaW5nKHByb3BlcnR5TmFtZSkuaW1wbCgpLCBQcm9wZXJ0eURlc2NyaXB0b3IodmFsdWUs
IDApLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgSlNPYmplY3Q6OmRlZmluZU93blByb3BlcnR5
KG91dHB1dEtleWZyYW1lLCAmc3RhdGUsIEF0b21TdHJpbmcocHJvcGVydHlOYW1lKS5pbXBsKCks
IFByb3BlcnR5RGVzY3JpcHRvcih2YWx1ZSwgMCksIGZhbHNlKTsKICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgLy8gNS4gQXBwZW5kIG91dHB1dCBrZXlmcmFtZSB0byByZXN1bHQuCkBAIC02
NDUsNyArNjQ1LDcgQEAgVmVjdG9yPFN0cm9uZzxKU09iamVjdD4+IEtleWZyYW1lRWZmZWN0Ojpn
ZXRLZXlmcmFtZXMoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICAgICAgICAgICAgICBhdXRvIHZhbHVl
ID0gdG9KUzxJRExET01TdHJpbmc+KHN0YXRlLCBpdC0+dmFsdWUpOwogICAgICAgICAgICAgICAg
IC8vIDQuIENhbGwgdGhlIFtbRGVmaW5lT3duUHJvcGVydHldXSBpbnRlcm5hbCBtZXRob2Qgb24g
b3V0cHV0IGtleWZyYW1lIHdpdGggcHJvcGVydHkgbmFtZSBwcm9wZXJ0eSBuYW1lLAogICAgICAg
ICAgICAgICAgIC8vICAgIFByb3BlcnR5IERlc2NyaXB0b3IgeyBbW1dyaXRhYmxlXV06IHRydWUs
IFtbRW51bWVyYWJsZV1dOiB0cnVlLCBbW0NvbmZpZ3VyYWJsZV1dOiB0cnVlLCBbW1ZhbHVlXV06
IHZhbHVlIH0gYW5kIEJvb2xlYW4gZmxhZyBmYWxzZS4KLSAgICAgICAgICAgICAgICBKU09iamVj
dDo6ZGVmaW5lT3duUHJvcGVydHkob3V0cHV0S2V5ZnJhbWUsICZzdGF0ZSwgQXRvbWljU3RyaW5n
KHByb3BlcnR5TmFtZSkuaW1wbCgpLCBQcm9wZXJ0eURlc2NyaXB0b3IodmFsdWUsIDApLCBmYWxz
ZSk7CisgICAgICAgICAgICAgICAgSlNPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KG91dHB1dEtl
eWZyYW1lLCAmc3RhdGUsIEF0b21TdHJpbmcocHJvcGVydHlOYW1lKS5pbXBsKCksIFByb3BlcnR5
RGVzY3JpcHRvcih2YWx1ZSwgMCksIGZhbHNlKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAg
ICAgLy8gNC4gQXBwZW5kIG91dHB1dCBrZXlmcmFtZSB0byByZXN1bHQuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2FuaW1hdGlvbi9XZWJBbmltYXRpb24uY3BwCmluZGV4IGI5ZTY0NmEyZTQ4YjQwYTg2N2Q0NDYx
YjQ3MzUwNjU5Mzg0YzljMGMuLmVkZmRiYjBhMDZmZDZlZGEyNTA0OGI5NzE5YjllZjFiYTllMTM0
NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uY3BwCkBAIC01OTgs
NyArNTk4LDcgQEAgdm9pZCBXZWJBbmltYXRpb246OmNhbmNlbChTaWxlbnRseSBzaWxlbnRseSkK
ICAgICBpbnZhbGlkYXRlRWZmZWN0KCk7CiB9CiAKLXZvaWQgV2ViQW5pbWF0aW9uOjplbnF1ZXVl
QW5pbWF0aW9uUGxheWJhY2tFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIE9wdGlvbmFs
PFNlY29uZHM+IGN1cnJlbnRUaW1lLCBPcHRpb25hbDxTZWNvbmRzPiB0aW1lbGluZVRpbWUpCit2
b2lkIFdlYkFuaW1hdGlvbjo6ZW5xdWV1ZUFuaW1hdGlvblBsYXliYWNrRXZlbnQoY29uc3QgQXRv
bVN0cmluZyYgdHlwZSwgT3B0aW9uYWw8U2Vjb25kcz4gY3VycmVudFRpbWUsIE9wdGlvbmFsPFNl
Y29uZHM+IHRpbWVsaW5lVGltZSkKIHsKICAgICBhdXRvIGV2ZW50ID0gQW5pbWF0aW9uUGxheWJh
Y2tFdmVudDo6Y3JlYXRlKHR5cGUsIGN1cnJlbnRUaW1lLCB0aW1lbGluZVRpbWUpOwogICAgIGV2
ZW50LT5zZXRUYXJnZXQodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRp
b24vV2ViQW5pbWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9u
LmgKaW5kZXggZTRiMzhiNDNiMzE1N2NjZjc3OTljNGIzYmRhMjJlOGJjNDY3YWQ2Zi4uYTRmYTlk
MWY5ZWM4YTg2NzQxYzhlYzY5MzU5NjQ0MWU5YzVjMDgyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1h
dGlvbi9XZWJBbmltYXRpb24uaApAQCAtMTM3LDcgKzEzNyw3IEBAIHByaXZhdGU6CiAKICAgICB2
b2lkIHRpbWluZ0RpZENoYW5nZShEaWRTZWVrLCBTeW5jaHJvbm91c2x5Tm90aWZ5KTsKICAgICB2
b2lkIHVwZGF0ZUZpbmlzaGVkU3RhdGUoRGlkU2VlaywgU3luY2hyb25vdXNseU5vdGlmeSk7Ci0g
ICAgdm9pZCBlbnF1ZXVlQW5pbWF0aW9uUGxheWJhY2tFdmVudChjb25zdCBBdG9taWNTdHJpbmcm
LCBPcHRpb25hbDxTZWNvbmRzPiwgT3B0aW9uYWw8U2Vjb25kcz4pOworICAgIHZvaWQgZW5xdWV1
ZUFuaW1hdGlvblBsYXliYWNrRXZlbnQoY29uc3QgQXRvbVN0cmluZyYsIE9wdGlvbmFsPFNlY29u
ZHM+LCBPcHRpb25hbDxTZWNvbmRzPik7CiAgICAgU2Vjb25kcyBlZmZlY3RFbmRUaW1lKCkgY29u
c3Q7CiAgICAgV2ViQW5pbWF0aW9uJiByZWFkeVByb21pc2VSZXNvbHZlKCk7CiAgICAgV2ViQW5p
bWF0aW9uJiBmaW5pc2hlZFByb21pc2VSZXNvbHZlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9JRExUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvSURMVHlw
ZXMuaAppbmRleCAxOGEzYzEwZTNiZjBjNDczNWM5OTAxOTAyZDVhY2RkZmYzZjRmNjM4Li43NTBl
YThkZmM2ZDYwMWEyM2M3Y2EwNDBjM2IzOGE1YjA3ZTQxM2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9JRExUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L0lETFR5cGVzLmgKQEAgLTE0MSwxMSArMTQxLDExIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0
cnVjdCBJRExUcmVhdE51bGxBc0VtcHR5QWRhcHRvciA6IElETFN0cmluZzxTdHJpbmc+IHsKICAg
ICB1c2luZyBJbm5lclR5cGUgPSBUOwogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0
IElETEF0b21pY1N0cmluZ0FkYXB0b3IgOiBJRExTdHJpbmc8QXRvbWljU3RyaW5nPiB7Cit0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSURMQXRvbVN0cmluZ0FkYXB0b3IgOiBJRExTdHJpbmc8
QXRvbVN0cmluZz4gewogICAgIHVzaW5nIElubmVyVHlwZSA9IFQ7CiB9OwogCi10ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBzdHJ1Y3QgSURMUmVxdWlyZXNFeGlzdGluZ0F0b21pY1N0cmluZ0FkYXB0b3Ig
OiBJRExTdHJpbmc8QXRvbWljU3RyaW5nPiB7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3Qg
SURMUmVxdWlyZXNFeGlzdGluZ0F0b21TdHJpbmdBZGFwdG9yIDogSURMU3RyaW5nPEF0b21TdHJp
bmc+IHsKICAgICB1c2luZyBJbm5lclR5cGUgPSBUOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0RmV0Y2hlci5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0RmV0Y2hlci5oCmluZGV4IGQ1MzkxYzY5N2Q3Y2Y0
ZjZmNWQ0MDc5Y2EyNzJlZjc3ZWE5Y2FiYTcuLjM4MjMxNDI1MmNhNmU0ZDkzMjAyNzFhMTY4ZTgy
ZGUwMDljOTgyZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hl
ZFNjcmlwdEZldGNoZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRT
Y3JpcHRGZXRjaGVyLmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8
Q2FjaGVkU2NyaXB0RmV0Y2hlcj4gY3JlYXRlKGNvbnN0IFN0cmluZyYgY2hhcnNldCk7CiAKIHBy
b3RlY3RlZDoKLSAgICBDYWNoZWRTY3JpcHRGZXRjaGVyKGNvbnN0IFN0cmluZyYgbm9uY2UsIGNv
bnN0IFN0cmluZyYgY2hhcnNldCwgY29uc3QgQXRvbWljU3RyaW5nJiBpbml0aWF0b3JOYW1lLCBi
b29sIGlzSW5Vc2VyQWdlbnRTaGFkb3dUcmVlKQorICAgIENhY2hlZFNjcmlwdEZldGNoZXIoY29u
c3QgU3RyaW5nJiBub25jZSwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBjb25zdCBBdG9tU3RyaW5n
JiBpbml0aWF0b3JOYW1lLCBib29sIGlzSW5Vc2VyQWdlbnRTaGFkb3dUcmVlKQogICAgICAgICA6
IG1fbm9uY2Uobm9uY2UpCiAgICAgICAgICwgbV9jaGFyc2V0KGNoYXJzZXQpCiAgICAgICAgICwg
bV9pbml0aWF0b3JOYW1lKGluaXRpYXRvck5hbWUpCkBAIC01OSw3ICs1OSw3IEBAIHByb3RlY3Rl
ZDoKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fbm9uY2U7CiAgICAgU3RyaW5nIG1fY2hhcnNldDsK
LSAgICBBdG9taWNTdHJpbmcgbV9pbml0aWF0b3JOYW1lOworICAgIEF0b21TdHJpbmcgbV9pbml0
aWF0b3JOYW1lOwogICAgIGJvb2wgbV9pc0luVXNlckFnZW50U2hhZG93VHJlZSB7IGZhbHNlIH07
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Db21tb25WTS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Db21tb25WTS5jcHAKaW5kZXggOTIyMGYw
YjE2MDc5ZGEwNjA4OWI3N2UzMzUzMDFhZGM3ZWZkYWUxYi4uYzFlOTRiOGI4NTcyNmIzZDUxZmUx
MTk1ODk5MjM1MWJmMzdlMWI1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvQ29tbW9uVk0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NvbW1vblZN
LmNwcApAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL01hY2hpbmVT
dGFja01hcmtlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1ZNLmg+CiAjaW5jbHVkZSA8
d3RmL01haW5UaHJlYWQuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogI2luY2x1ZGUgIldlYkNvcmVUaHJlYWRJbnRlcm5hbC5oIgpAQCAtODMsNyArODMsNyBAQCBG
cmFtZSogbGV4aWNhbEZyYW1lRnJvbUNvbW1vblZNKCkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0K
IAotdm9pZCBhZGRJbXB1cmVQcm9wZXJ0eShjb25zdCBBdG9taWNTdHJpbmcmIHByb3BlcnR5TmFt
ZSkKK3ZvaWQgYWRkSW1wdXJlUHJvcGVydHkoY29uc3QgQXRvbVN0cmluZyYgcHJvcGVydHlOYW1l
KQogewogICAgIGNvbW1vblZNKCkuYWRkSW1wdXJlUHJvcGVydHkocHJvcGVydHlOYW1lKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NvbW1vblZNLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Db21tb25WTS5oCmluZGV4IDI4MjFlYjI4ODhlODVhMzAz
M2Y2ZGVkMmUxMjJkMThjOTMyNmU1ZDkuLjI5MTE2MmRmYzE2ZmIzOThiYWFlZWUyM2NhY2ZkNTY3
OTNiN2JlOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NvbW1vblZN
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ29tbW9uVk0uaApAQCAtNTIsNyAr
NTIsNyBAQCBpbmxpbmUgSlNDOjpWTSYgY29tbW9uVk0oKQogICAgIHJldHVybiBjb21tb25WTVNs
b3coKTsKIH0KIAotdm9pZCBhZGRJbXB1cmVQcm9wZXJ0eShjb25zdCBBdG9taWNTdHJpbmcmKTsK
K3ZvaWQgYWRkSW1wdXJlUHJvcGVydHkoY29uc3QgQXRvbVN0cmluZyYpOwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Q3VzdG9tRWxlbWVudEludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwCmluZGV4IDlmZjU0M2ZlYjk3ZDZmNTk2YmVkMmNm
MTBiNzJiOTAyOTM4ZjZiOTkuLjAxODRhN2Q0ZjM5NWNhMGM1NDBkNDhkNGU2ZGI1MDA1ZWMwYTAy
NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVu
dEludGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21F
bGVtZW50SW50ZXJmYWNlLmNwcApAQCAtNTUsOSArNTUsOSBAQCBKU0N1c3RvbUVsZW1lbnRJbnRl
cmZhY2U6OkpTQ3VzdG9tRWxlbWVudEludGVyZmFjZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1l
LCBKUwogCiBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6On5KU0N1c3RvbUVsZW1lbnRJbnRlcmZh
Y2UoKSA9IGRlZmF1bHQ7CiAKLXN0YXRpYyBSZWZQdHI8RWxlbWVudD4gY29uc3RydWN0Q3VzdG9t
RWxlbWVudFN5bmNocm9ub3VzbHkoRG9jdW1lbnQmLCBWTSYsIEV4ZWNTdGF0ZSYsIEpTT2JqZWN0
KiBjb25zdHJ1Y3RvciwgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUpOworc3RhdGljIFJl
ZlB0cjxFbGVtZW50PiBjb25zdHJ1Y3RDdXN0b21FbGVtZW50U3luY2hyb25vdXNseShEb2N1bWVu
dCYsIFZNJiwgRXhlY1N0YXRlJiwgSlNPYmplY3QqIGNvbnN0cnVjdG9yLCBjb25zdCBBdG9tU3Ry
aW5nJiBsb2NhbE5hbWUpOwogCi1SZWY8RWxlbWVudD4gSlNDdXN0b21FbGVtZW50SW50ZXJmYWNl
Ojpjb25zdHJ1Y3RFbGVtZW50V2l0aEZhbGxiYWNrKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3Qg
QXRvbWljU3RyaW5nJiBsb2NhbE5hbWUpCitSZWY8RWxlbWVudD4gSlNDdXN0b21FbGVtZW50SW50
ZXJmYWNlOjpjb25zdHJ1Y3RFbGVtZW50V2l0aEZhbGxiYWNrKERvY3VtZW50JiBkb2N1bWVudCwg
Y29uc3QgQXRvbVN0cmluZyYgbG9jYWxOYW1lKQogewogICAgIGlmIChhdXRvIGVsZW1lbnQgPSB0
cnlUb0NvbnN0cnVjdEN1c3RvbUVsZW1lbnQoZG9jdW1lbnQsIGxvY2FsTmFtZSkpCiAgICAgICAg
IHJldHVybiBlbGVtZW50LnJlbGVhc2VOb25OdWxsKCk7CkBAIC04NCw3ICs4NCw3IEBAIFJlZjxF
bGVtZW50PiBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6OmNvbnN0cnVjdEVsZW1lbnRXaXRoRmFs
bGJhY2soRG9jdW1lbnQmIGRvCiAgICAgcmV0dXJuIGVsZW1lbnQ7CiB9CiAKLVJlZlB0cjxFbGVt
ZW50PiBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6OnRyeVRvQ29uc3RydWN0Q3VzdG9tRWxlbWVu
dChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lKQorUmVm
UHRyPEVsZW1lbnQ+IEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZTo6dHJ5VG9Db25zdHJ1Y3RDdXN0
b21FbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgQXRvbVN0cmluZyYgbG9jYWxOYW1l
KQogewogICAgIGlmICghY2FuSW52b2tlQ2FsbGJhY2soKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CkBAIC0xMTQsNyArMTE0LDcgQEAgUmVmUHRyPEVsZW1lbnQ+IEpTQ3VzdG9tRWxlbWVudElu
dGVyZmFjZTo6dHJ5VG9Db25zdHJ1Y3RDdXN0b21FbGVtZW50KERvY3VtZW50JgogCiAvLyBodHRw
czovL2RvbS5zcGVjLndoYXR3Zy5vcmcvI2NvbmNlcHQtY3JlYXRlLWVsZW1lbnQKIC8vIDYuIDEu
IElmIHRoZSBzeW5jaHJvbm91cyBjdXN0b20gZWxlbWVudHMgZmxhZyBpcyBzZXQKLXN0YXRpYyBS
ZWZQdHI8RWxlbWVudD4gY29uc3RydWN0Q3VzdG9tRWxlbWVudFN5bmNocm9ub3VzbHkoRG9jdW1l
bnQmIGRvY3VtZW50LCBWTSYgdm0sIEV4ZWNTdGF0ZSYgc3RhdGUsIEpTT2JqZWN0KiBjb25zdHJ1
Y3RvciwgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUpCitzdGF0aWMgUmVmUHRyPEVsZW1l
bnQ+IGNvbnN0cnVjdEN1c3RvbUVsZW1lbnRTeW5jaHJvbm91c2x5KERvY3VtZW50JiBkb2N1bWVu
dCwgVk0mIHZtLCBFeGVjU3RhdGUmIHN0YXRlLCBKU09iamVjdCogY29uc3RydWN0b3IsIGNvbnN0
IEF0b21TdHJpbmcmIGxvY2FsTmFtZSkKIHsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICAgQ29uc3RydWN0RGF0YSBjb25zdHJ1Y3REYXRhOwpAQCAtMzAwLDcg
KzMwMCw3IEBAIHZvaWQgSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlOjpzZXRBdHRyaWJ1dGVDaGFu
Z2VkQ2FsbGJhY2soSlNDOjpKU09iamVjdCogY2FsbGJhCiAgICAgICAgIG1fb2JzZXJ2ZWRBdHRy
aWJ1dGVzLmFkZChuYW1lKTsKIH0KIAotdm9pZCBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6Omlu
dm9rZUF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayhFbGVtZW50JiBlbGVtZW50LCBjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIG9sZFZhbHVlLCBj
b25zdCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlKQordm9pZCBKU0N1c3RvbUVsZW1lbnRJbnRlcmZh
Y2U6Omludm9rZUF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayhFbGVtZW50JiBlbGVtZW50LCBjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBjb25zdCBBdG9tU3RyaW5nJiBvbGRWYWx1
ZSwgY29uc3QgQXRvbVN0cmluZyYgbmV3VmFsdWUpCiB7CiAgICAgaW52b2tlQ2FsbGJhY2soZWxl
bWVudCwgbV9hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2suZ2V0KCksIFsmXShFeGVjU3RhdGUqIHN0
YXRlLCBKU0RPTUdsb2JhbE9iamVjdCosIE1hcmtlZEFyZ3VtZW50QnVmZmVyJiBhcmdzKSB7CiAg
ICAgICAgIGFyZ3MuYXBwZW5kKHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIGF0dHJpYnV0ZU5h
bWUubG9jYWxOYW1lKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmgKaW5kZXggZDE4Y2FiZGFiMGFjNzZlMWRlYWE4NGE4
NzZjNDg3YjMxOTIwZmVhOC4uNDZiODE1NGRjMzNiNzkxYjE3ODA2OTg0YTc4ZGYyYzI5MzkzYjJm
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50
SW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVt
ZW50SW50ZXJmYWNlLmgKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
Ci0jaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nSGFzaC5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L0F0b21TdHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgSlNPYmplY3Q7
CkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
SlNDdXN0b21FbGVtZW50SW50ZXJmYWNlKG5hbWUsIGNhbGxiYWNrLCBnbG9iYWxPYmplY3QpKTsK
ICAgICB9CiAKLSAgICBSZWY8RWxlbWVudD4gY29uc3RydWN0RWxlbWVudFdpdGhGYWxsYmFjayhE
b2N1bWVudCYsIGNvbnN0IEF0b21pY1N0cmluZyYpOworICAgIFJlZjxFbGVtZW50PiBjb25zdHJ1
Y3RFbGVtZW50V2l0aEZhbGxiYWNrKERvY3VtZW50JiwgY29uc3QgQXRvbVN0cmluZyYpOwogICAg
IFJlZjxFbGVtZW50PiBjb25zdHJ1Y3RFbGVtZW50V2l0aEZhbGxiYWNrKERvY3VtZW50JiwgY29u
c3QgUXVhbGlmaWVkTmFtZSYpOwogCiAgICAgdm9pZCB1cGdyYWRlRWxlbWVudChFbGVtZW50Jik7
CkBAIC03NSw4ICs3NSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGludm9rZUFkb3B0ZWRDYWxsYmFj
ayhFbGVtZW50JiwgRG9jdW1lbnQmIG9sZERvY3VtZW50LCBEb2N1bWVudCYgbmV3RG9jdW1lbnQp
OwogCiAgICAgdm9pZCBzZXRBdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2soSlNDOjpKU09iamVjdCog
Y2FsbGJhY2ssIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvYnNlcnZlZEF0dHJpYnV0ZXMpOwotICAg
IGJvb2wgb2JzZXJ2ZXNBdHRyaWJ1dGUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdCB7
IHJldHVybiBtX29ic2VydmVkQXR0cmlidXRlcy5jb250YWlucyhuYW1lKTsgfQotICAgIHZvaWQg
aW52b2tlQXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKEVsZW1lbnQmLCBjb25zdCBRdWFsaWZpZWRO
YW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBu
ZXdWYWx1ZSk7CisgICAgYm9vbCBvYnNlcnZlc0F0dHJpYnV0ZShjb25zdCBBdG9tU3RyaW5nJiBu
YW1lKSBjb25zdCB7IHJldHVybiBtX29ic2VydmVkQXR0cmlidXRlcy5jb250YWlucyhuYW1lKTsg
fQorICAgIHZvaWQgaW52b2tlQXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKEVsZW1lbnQmLCBjb25z
dCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbVN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0b21T
dHJpbmcmIG5ld1ZhbHVlKTsKIAogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZl
cjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CiAgICAgSlNDOjpKU09iamVjdCogY29uc3Ry
dWN0b3IoKSB7IHJldHVybiBtX2NvbnN0cnVjdG9yLmdldCgpOyB9CkBAIC05Miw3ICs5Miw3IEBA
IHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlKGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBKU0M6OkpTT2JqZWN0KiBjYWxsYmFjaywgSlNET01HbG9iYWxPYmplY3Qq
KTsKIAotICAgIFJlZlB0cjxFbGVtZW50PiB0cnlUb0NvbnN0cnVjdEN1c3RvbUVsZW1lbnQoRG9j
dW1lbnQmLCBjb25zdCBBdG9taWNTdHJpbmcmKTsKKyAgICBSZWZQdHI8RWxlbWVudD4gdHJ5VG9D
b25zdHJ1Y3RDdXN0b21FbGVtZW50KERvY3VtZW50JiwgY29uc3QgQXRvbVN0cmluZyYpOwogCiAg
ICAgdm9pZCBpbnZva2VDYWxsYmFjayhFbGVtZW50JiwgSlNDOjpKU09iamVjdCogY2FsbGJhY2ss
IGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZlciYpPiYgYWRkQXJndW1lbnRzID0gW10oSlND
OjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCosIEpTQzo6TWFya2VkQXJndW1lbnRCdWZm
ZXImKSB7IH0pOwogCkBAIC0xMDQsNyArMTA0LDcgQEAgcHJpdmF0ZToKICAgICBKU0M6OldlYWs8
SlNDOjpKU09iamVjdD4gbV9hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2s7CiAgICAgUmVmPERPTVdy
YXBwZXJXb3JsZD4gbV9pc29sYXRlZFdvcmxkOwogICAgIFZlY3RvcjxSZWZQdHI8RWxlbWVudD4s
IDE+IG1fY29uc3RydWN0aW9uU3RhY2s7Ci0gICAgSGFzaFNldDxBdG9taWNTdHJpbmc+IG1fb2Jz
ZXJ2ZWRBdHRyaWJ1dGVzOworICAgIEhhc2hTZXQ8QXRvbVN0cmluZz4gbV9vYnNlcnZlZEF0dHJp
YnV0ZXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRSZWdpc3RyeUN1c3RvbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRSZWdpc3RyeUN1c3RvbS5j
cHAKaW5kZXggNDE1OTdjZDQ4ODAxODVmMzg2ZDc0MTQ5Mjc5YTcwNTdjOTYwYTAyZi4uOThkYmMy
YjY3YzRhZGE2YzNjOGYxZmNhODdiMjRiNjU0ZDljMzM4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50UmVnaXN0cnlDdXN0b20uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5Q3VzdG9t
LmNwcApAQCAtNTYsNyArNTYsNyBAQCBzdGF0aWMgSlNPYmplY3QqIGdldEN1c3RvbUVsZW1lbnRD
YWxsYmFjayhFeGVjU3RhdGUmIHN0YXRlLCBKU09iamVjdCYgcHJvdG90eXBlLAogICAgIHJldHVy
biBjYWxsYmFjay5nZXRPYmplY3QoKTsKIH0KIAotc3RhdGljIGJvb2wgdmFsaWRhdGVDdXN0b21F
bGVtZW50TmFtZUFuZFRocm93SWZOZWVkZWQoRXhlY1N0YXRlJiBzdGF0ZSwgY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lKQorc3RhdGljIGJvb2wgdmFsaWRhdGVDdXN0b21FbGVtZW50TmFtZUFuZFRo
cm93SWZOZWVkZWQoRXhlY1N0YXRlJiBzdGF0ZSwgY29uc3QgQXRvbVN0cmluZyYgbmFtZSkKIHsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShzdGF0ZS52bSgpKTsKICAgICBz
d2l0Y2ggKERvY3VtZW50Ojp2YWxpZGF0ZUN1c3RvbUVsZW1lbnROYW1lKG5hbWUpKSB7CkBAIC05
MSw3ICs5MSw3IEBAIEpTVmFsdWUgSlNDdXN0b21FbGVtZW50UmVnaXN0cnk6OmRlZmluZShFeGVj
U3RhdGUmIHN0YXRlKQogICAgIGlmIChVTkxJS0VMWShzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAy
KSkKICAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogCi0gICAgQXRvbWljU3RyaW5nIGxvY2Fs
TmFtZShzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS50b1N0cmluZygmc3RhdGUpLT50b0F0b21p
Y1N0cmluZygmc3RhdGUpKTsKKyAgICBBdG9tU3RyaW5nIGxvY2FsTmFtZShzdGF0ZS51bmNoZWNr
ZWRBcmd1bWVudCgwKS50b1N0cmluZygmc3RhdGUpLT50b0F0b21TdHJpbmcoJnN0YXRlKSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKIAogICAgIEpTVmFsdWUg
Y29uc3RydWN0b3JWYWx1ZSA9IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDEpOwpAQCAtMTgyLDcg
KzE4Miw3IEBAIHN0YXRpYyBKU1ZhbHVlIHdoZW5EZWZpbmVkUHJvbWlzZShFeGVjU3RhdGUmIHN0
YXRlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqCiAgICAgaWYgKFVOTElLRUxZKHN0YXRl
LmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0
YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAKLSAg
ICBBdG9taWNTdHJpbmcgbG9jYWxOYW1lKHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvU3Ry
aW5nKCZzdGF0ZSktPnRvQXRvbWljU3RyaW5nKCZzdGF0ZSkpOworICAgIEF0b21TdHJpbmcgbG9j
YWxOYW1lKHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvU3RyaW5nKCZzdGF0ZSktPnRvQXRv
bVN0cmluZygmc3RhdGUpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVl
KCkpOwogCiAgICAgaWYgKCF2YWxpZGF0ZUN1c3RvbUVsZW1lbnROYW1lQW5kVGhyb3dJZk5lZWRl
ZChzdGF0ZSwgbG9jYWxOYW1lKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01Db252ZXJ0U3RyaW5ncy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01Db252ZXJ0U3RyaW5ncy5oCmluZGV4IGRjODljYmYxNDU5NWE3MmU4ZjlkZjJlYTI0MGVk
ODVkYmU3YjQ3MWYuLmQ4ZDBiZTExZTZlMTE1M2M0YTFkODY5ZTFhYjExMzQ2NjIzYzUyYjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFN0cmluZ3Mu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRTdHJpbmdzLmgK
QEAgLTQyLDkgKzQyLDkgQEAgaW5saW5lIFN0cmluZyBwcm9wZXJ0eU5hbWVUb1N0cmluZyhKU0M6
OlByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiAgICAgcmV0dXJuIHByb3BlcnR5TmFtZS51aWQo
KSA/IHByb3BlcnR5TmFtZS51aWQoKSA6IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCk7CiB9CiAK
LWlubGluZSBBdG9taWNTdHJpbmcgcHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcoSlNDOjpQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQoraW5saW5lIEF0b21TdHJpbmcgcHJvcGVydHlOYW1lVG9B
dG9tU3RyaW5nKEpTQzo6UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4g
QXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZS51aWQoKSA/IHByb3BlcnR5TmFtZS51aWQoKSA6IHBy
b3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgIHJldHVybiBBdG9tU3RyaW5nKHByb3BlcnR5
TmFtZS51aWQoKSA/IHByb3BlcnR5TmFtZS51aWQoKSA6IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1l
KCkpOwogfQogCiAvLyBNQVJLOiAtCkBAIC0xNTMsMjAgKzE1MywyMCBAQCB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiAgc3RydWN0IEpTQ29udmVydGVyPElETFRyZWF0TnVsbEFzRW1wdHlBZGFwdG9yPFQ+
PiB7CiAgICAgfQogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IENvbnZlcnRlcjxJ
RExBdG9taWNTdHJpbmdBZGFwdG9yPFQ+PiA6IERlZmF1bHRDb252ZXJ0ZXI8SURMQXRvbWljU3Ry
aW5nQWRhcHRvcjxUPj4gewotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgY29udmVydChKU0M6OkV4
ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+
IHN0cnVjdCBDb252ZXJ0ZXI8SURMQXRvbVN0cmluZ0FkYXB0b3I8VD4+IDogRGVmYXVsdENvbnZl
cnRlcjxJRExBdG9tU3RyaW5nQWRhcHRvcjxUPj4geworICAgIHN0YXRpYyBBdG9tU3RyaW5nIGNv
bnZlcnQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUpCiAgICAgewog
ICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxULCBJRExET01TdHJpbmc+Ojp2YWx1
ZSwgIlRoaXMgYWRhcHRvciBpcyBvbmx5IHN1cHBvcnRlZCBmb3IgSURMRE9NU3RyaW5nIGF0IHRo
ZSBtb21lbnQuIik7CiAKLSAgICAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCZzdGF0ZSktPnRv
QXRvbWljU3RyaW5nKCZzdGF0ZSk7CisgICAgICAgIHJldHVybiB2YWx1ZS50b1N0cmluZygmc3Rh
dGUpLT50b0F0b21TdHJpbmcoJnN0YXRlKTsKICAgICB9CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiAgc3RydWN0IEpTQ29udmVydGVyPElETEF0b21pY1N0cmluZ0FkYXB0b3I8VD4+IHsKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+ICBzdHJ1Y3QgSlNDb252ZXJ0ZXI8SURMQXRvbVN0cmluZ0FkYXB0
b3I8VD4+IHsKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbmVlZHNTdGF0ZSA9IHRydWU7CiAg
ICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzR2xvYmFsT2JqZWN0ID0gZmFsc2U7CiAKLSAg
ICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGNvbnZlcnQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBjb25z
dCBBdG9taWNTdHJpbmcmIHZhbHVlKQorICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgY29udmVydChK
U0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKQogICAgIHsKICAg
ICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8VCwgSURMRE9NU3RyaW5nPjo6dmFsdWUs
ICJUaGlzIGFkYXB0b3IgaXMgb25seSBzdXBwb3J0ZWQgZm9yIElETERPTVN0cmluZyBhdCB0aGUg
bW9tZW50LiIpOwogCkBAIC0xNzQsMjAgKzE3NCwyMCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiAg
c3RydWN0IEpTQ29udmVydGVyPElETEF0b21pY1N0cmluZ0FkYXB0b3I8VD4+IHsKICAgICB9CiB9
OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ29udmVydGVyPElETFJlcXVpcmVzRXhp
c3RpbmdBdG9taWNTdHJpbmdBZGFwdG9yPFQ+PiA6IERlZmF1bHRDb252ZXJ0ZXI8SURMUmVxdWly
ZXNFeGlzdGluZ0F0b21pY1N0cmluZ0FkYXB0b3I8VD4+IHsKLSAgICBzdGF0aWMgQXRvbWljU3Ry
aW5nIGNvbnZlcnQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUpCit0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ29udmVydGVyPElETFJlcXVpcmVzRXhpc3RpbmdB
dG9tU3RyaW5nQWRhcHRvcjxUPj4gOiBEZWZhdWx0Q29udmVydGVyPElETFJlcXVpcmVzRXhpc3Rp
bmdBdG9tU3RyaW5nQWRhcHRvcjxUPj4geworICAgIHN0YXRpYyBBdG9tU3RyaW5nIGNvbnZlcnQo
SlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUpCiAgICAgewogICAgICAg
ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxULCBJRExET01TdHJpbmc+Ojp2YWx1ZSwgIlRo
aXMgYWRhcHRvciBpcyBvbmx5IHN1cHBvcnRlZCBmb3IgSURMRE9NU3RyaW5nIGF0IHRoZSBtb21l
bnQuIik7CiAgICAgCi0gICAgICAgIHJldHVybiBBdG9taWNTdHJpbmcodmFsdWUudG9TdHJpbmco
JnN0YXRlKS0+dG9FeGlzdGluZ0F0b21pY1N0cmluZygmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJu
IEF0b21TdHJpbmcodmFsdWUudG9TdHJpbmcoJnN0YXRlKS0+dG9FeGlzdGluZ0F0b21TdHJpbmco
JnN0YXRlKSk7CiAgICAgfQogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gIHN0cnVjdCBKU0Nv
bnZlcnRlcjxJRExSZXF1aXJlc0V4aXN0aW5nQXRvbWljU3RyaW5nQWRhcHRvcjxUPj4gewordGVt
cGxhdGU8dHlwZW5hbWUgVD4gIHN0cnVjdCBKU0NvbnZlcnRlcjxJRExSZXF1aXJlc0V4aXN0aW5n
QXRvbVN0cmluZ0FkYXB0b3I8VD4+IHsKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbmVlZHNT
dGF0ZSA9IHRydWU7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzR2xvYmFsT2JqZWN0
ID0gZmFsc2U7CiAKLSAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGNvbnZlcnQoSlNDOjpFeGVjU3Rh
dGUmIHN0YXRlLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQorICAgIHN0YXRpYyBKU0M6OkpT
VmFsdWUgY29udmVydChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IEF0b21TdHJpbmcmIHZh
bHVlKQogICAgIHsKICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8VCwgSURMRE9N
U3RyaW5nPjo6dmFsdWUsICJUaGlzIGFkYXB0b3IgaXMgb25seSBzdXBwb3J0ZWQgZm9yIElETERP
TVN0cmluZyBhdCB0aGUgbW9tZW50LiIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKaW5kZXggYTVmMDYxOWZlY2Y5MTJiY2NjYzIwOGNl
YjUxZjVkY2I5ZWNjZjY1Mi4uZDEwMzEwYWI2Yzg5YWEyYTRiOWE0YTcwMTc3NjdkNTAwY2Q0ODY4
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9t
LmNwcApAQCAtMTQ4LDcgKzE0OCw3IEBAIGJvb2wganNET01XaW5kb3dHZXRPd25Qcm9wZXJ0eVNs
b3RSZXN0cmljdGVkQWNjZXNzKEpTRE9NR2xvYmFsT2JqZWN0KiB0aGlzT2JqZWN0CiAgICAgLy8g
RklYTUU6IEFkZCBzdXBwb3J0IHRvIG5hbWVkIGF0dHJpYnV0ZXMgb24gUmVtb3RlRnJhbWVzLgog
ICAgIGF1dG8qIGZyYW1lID0gd2luZG93LmZyYW1lKCk7CiAgICAgaWYgKGZyYW1lICYmIGlzPEZy
YW1lPigqZnJhbWUpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBzY29wZWRDaGlsZCA9IGRvd25jYXN0
PEZyYW1lPigqZnJhbWUpLnRyZWUoKS5zY29wZWRDaGlsZChwcm9wZXJ0eU5hbWVUb0F0b21pY1N0
cmluZyhwcm9wZXJ0eU5hbWUpKSkgeworICAgICAgICBpZiAoYXV0byogc2NvcGVkQ2hpbGQgPSBk
b3duY2FzdDxGcmFtZT4oKmZyYW1lKS50cmVlKCkuc2NvcGVkQ2hpbGQocHJvcGVydHlOYW1lVG9B
dG9tU3RyaW5nKHByb3BlcnR5TmFtZSkpKSB7CiAgICAgICAgICAgICBzbG90LnNldFZhbHVlKHRo
aXNPYmplY3QsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
LCB0b0pTKCZzdGF0ZSwgc2NvcGVkQ2hpbGQtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpKSk7CiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dQcm9wZXJ0aWVzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93UHJvcGVydGllcy5jcHAKaW5kZXggMzA4Y2EwZTk0
ZDhhMGZjMWIwN2Y1ZTk0MTY1NmZmMWU2M2EwNDUwMC4uOWNhOWVkNzU2ZDJhNDJiYThlNmEwYjZk
YmQ1YThiMjBkM2I0ZmEwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XaW5kb3dQcm9wZXJ0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd1Byb3BlcnRpZXMuY3BwCkBAIC00OCw3ICs0OCw3IEBAIHN0YXRpYyBib29s
IGpzRE9NV2luZG93UHJvcGVydGllc0dldE93blByb3BlcnR5U2xvdE5hbWVkSXRlbUdldHRlcihK
U0RPTVdpbmRvd1ByCiAgICAgLy8gcHJvcGVydGllcyB0aGF0IGFyZSBpbiBNb3ogYnV0IG5vdCBJ
RS4gU2luY2Ugd2UgaGF2ZSBzb21lIG9mIHRoZXNlLCB3ZSBoYXZlIHRvIGRvIGl0CiAgICAgLy8g
dGhlIE1veiB3YXkuCiAgICAgaWYgKGF1dG8qIGZyYW1lID0gd2luZG93LmZyYW1lKCkpIHsKLSAg
ICAgICAgaWYgKGF1dG8qIHNjb3BlZENoaWxkID0gZnJhbWUtPnRyZWUoKS5zY29wZWRDaGlsZChw
cm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKSkgeworICAgICAgICBpZiAo
YXV0byogc2NvcGVkQ2hpbGQgPSBmcmFtZS0+dHJlZSgpLnNjb3BlZENoaWxkKHByb3BlcnR5TmFt
ZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpKSkgewogICAgICAgICAgICAgc2xvdC5zZXRWYWx1
ZSh0aGlzT2JqZWN0LCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSwgdG9KUyhleGVjLCBzY29wZWRDaGlsZC0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCkpKTsK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRXZlbnRDdXN0b20uY3BwCmluZGV4IDg3MTk5ZWI5MjA3YTYzMmI0ZTRiYTUz
NTE5ZjU4NTJkY2ExYzY2NTIuLjEzNjE5NmI1ZTI1MWY2MjgyNTQ5NjVjMmRkNWZkZTY3YmI1ZGRi
Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRDdXN0b20u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRDdXN0b20uY3BwCkBA
IC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNE
YXRhVHJhbnNmZXIuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0xvY2suaD4KLSNpbmNs
dWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3Ry
aW5nLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKaW5kZXggNTcxZTdjNzUxNGY4Njg5YjU0MGM3ZGU5
YTg2ZDE4ZDhiY2YyNDRmNS4uN2JkOThjNmM4NGZhN2E0MDhmNGNmNTM2MGI4OTNlZjkwZWI4NzE0
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3Bw
CkBAIC0yMzYsNDUgKzIzNiw0NSBAQCBzdGF0aWMgaW5saW5lIFJlZlB0cjxKU0V2ZW50TGlzdGVu
ZXI+IGNyZWF0ZUV2ZW50TGlzdGVuZXJGb3JFdmVudEhhbmRsZXJBdHRyaWJ1dAogICAgIHJldHVy
biBKU0V2ZW50TGlzdGVuZXI6OmNyZWF0ZShhc09iamVjdChsaXN0ZW5lciksICZ3cmFwcGVyLCB0
cnVlLCBjdXJyZW50V29ybGQoc3RhdGUpKTsKIH0KIAotSlNDOjpKU1ZhbHVlIGV2ZW50SGFuZGxl
ckF0dHJpYnV0ZShFdmVudFRhcmdldCYgdGFyZ2V0LCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
VHlwZSwgRE9NV3JhcHBlcldvcmxkJiBpc29sYXRlZFdvcmxkKQorSlNDOjpKU1ZhbHVlIGV2ZW50
SGFuZGxlckF0dHJpYnV0ZShFdmVudFRhcmdldCYgdGFyZ2V0LCBjb25zdCBBdG9tU3RyaW5nJiBl
dmVudFR5cGUsIERPTVdyYXBwZXJXb3JsZCYgaXNvbGF0ZWRXb3JsZCkKIHsKICAgICByZXR1cm4g
ZXZlbnRIYW5kbGVyQXR0cmlidXRlKHRhcmdldC5hdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50
VHlwZSwgaXNvbGF0ZWRXb3JsZCksICp0YXJnZXQuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsK
IH0KIAotdm9pZCBzZXRFdmVudEhhbmRsZXJBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUmIHN0YXRl
LCBKU0M6OkpTT2JqZWN0JiB3cmFwcGVyLCBFdmVudFRhcmdldCYgdGFyZ2V0LCBjb25zdCBBdG9t
aWNTdHJpbmcmIGV2ZW50VHlwZSwgSlNDOjpKU1ZhbHVlIHZhbHVlKQordm9pZCBzZXRFdmVudEhh
bmRsZXJBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTT2JqZWN0JiB3cmFw
cGVyLCBFdmVudFRhcmdldCYgdGFyZ2V0LCBjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIEpT
Qzo6SlNWYWx1ZSB2YWx1ZSkKIHsKICAgICB0YXJnZXQuc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5l
cihldmVudFR5cGUsIGNyZWF0ZUV2ZW50TGlzdGVuZXJGb3JFdmVudEhhbmRsZXJBdHRyaWJ1dGUo
c3RhdGUsIHZhbHVlLCB3cmFwcGVyKSwgY3VycmVudFdvcmxkKHN0YXRlKSk7CiB9CiAKLUpTQzo6
SlNWYWx1ZSB3aW5kb3dFdmVudEhhbmRsZXJBdHRyaWJ1dGUoSFRNTEVsZW1lbnQmIGVsZW1lbnQs
IGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBET01XcmFwcGVyV29ybGQmIGlzb2xhdGVk
V29ybGQpCitKU0M6OkpTVmFsdWUgd2luZG93RXZlbnRIYW5kbGVyQXR0cmlidXRlKEhUTUxFbGVt
ZW50JiBlbGVtZW50LCBjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIERPTVdyYXBwZXJXb3Js
ZCYgaXNvbGF0ZWRXb3JsZCkKIHsKICAgICBhdXRvJiBkb2N1bWVudCA9IGVsZW1lbnQuZG9jdW1l
bnQoKTsKICAgICByZXR1cm4gZXZlbnRIYW5kbGVyQXR0cmlidXRlKGRvY3VtZW50LmdldFdpbmRv
d0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBpc29sYXRlZFdvcmxkKSwgZG9jdW1l
bnQpOwogfQogCi12b2lkIHNldFdpbmRvd0V2ZW50SGFuZGxlckF0dHJpYnV0ZShKU0M6OkV4ZWNT
dGF0ZSYgc3RhdGUsIEpTQzo6SlNPYmplY3QmIHdyYXBwZXIsIEhUTUxFbGVtZW50JiBlbGVtZW50
LCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgSlNDOjpKU1ZhbHVlIHZhbHVlKQordm9p
ZCBzZXRXaW5kb3dFdmVudEhhbmRsZXJBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBK
U0M6OkpTT2JqZWN0JiB3cmFwcGVyLCBIVE1MRWxlbWVudCYgZWxlbWVudCwgY29uc3QgQXRvbVN0
cmluZyYgZXZlbnRUeXBlLCBKU0M6OkpTVmFsdWUgdmFsdWUpCiB7CiAgICAgQVNTRVJUKHdyYXBw
ZXIuZ2xvYmFsT2JqZWN0KCkpOwogICAgIGVsZW1lbnQuZG9jdW1lbnQoKS5zZXRXaW5kb3dBdHRy
aWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgY3JlYXRlRXZlbnRMaXN0ZW5lckZvckV2ZW50
SGFuZGxlckF0dHJpYnV0ZShzdGF0ZSwgdmFsdWUsICp3cmFwcGVyLmdsb2JhbE9iamVjdCgpKSwg
Y3VycmVudFdvcmxkKHN0YXRlKSk7CiB9CiAKLUpTQzo6SlNWYWx1ZSB3aW5kb3dFdmVudEhhbmRs
ZXJBdHRyaWJ1dGUoRE9NV2luZG93JiB3aW5kb3csIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlLCBET01XcmFwcGVyV29ybGQmIGlzb2xhdGVkV29ybGQpCitKU0M6OkpTVmFsdWUgd2luZG93
RXZlbnRIYW5kbGVyQXR0cmlidXRlKERPTVdpbmRvdyYgd2luZG93LCBjb25zdCBBdG9tU3RyaW5n
JiBldmVudFR5cGUsIERPTVdyYXBwZXJXb3JsZCYgaXNvbGF0ZWRXb3JsZCkKIHsKICAgICByZXR1
cm4gZXZlbnRIYW5kbGVyQXR0cmlidXRlKHdpbmRvdywgZXZlbnRUeXBlLCBpc29sYXRlZFdvcmxk
KTsKIH0KIAotdm9pZCBzZXRXaW5kb3dFdmVudEhhbmRsZXJBdHRyaWJ1dGUoSlNDOjpFeGVjU3Rh
dGUmIHN0YXRlLCBKU0M6OkpTT2JqZWN0JiB3cmFwcGVyLCBET01XaW5kb3cmIHdpbmRvdywgY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKK3ZvaWQgc2V0
V2luZG93RXZlbnRIYW5kbGVyQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpK
U09iamVjdCYgd3JhcHBlciwgRE9NV2luZG93JiB3aW5kb3csIGNvbnN0IEF0b21TdHJpbmcmIGV2
ZW50VHlwZSwgSlNDOjpKU1ZhbHVlIHZhbHVlKQogewogICAgIHNldEV2ZW50SGFuZGxlckF0dHJp
YnV0ZShzdGF0ZSwgd3JhcHBlciwgd2luZG93LCBldmVudFR5cGUsIHZhbHVlKTsKIH0KIAotSlND
OjpKU1ZhbHVlIGRvY3VtZW50RXZlbnRIYW5kbGVyQXR0cmlidXRlKEhUTUxFbGVtZW50JiBlbGVt
ZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRE9NV3JhcHBlcldvcmxkJiBpc29s
YXRlZFdvcmxkKQorSlNDOjpKU1ZhbHVlIGRvY3VtZW50RXZlbnRIYW5kbGVyQXR0cmlidXRlKEhU
TUxFbGVtZW50JiBlbGVtZW50LCBjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIERPTVdyYXBw
ZXJXb3JsZCYgaXNvbGF0ZWRXb3JsZCkKIHsKICAgICBhdXRvJiBkb2N1bWVudCA9IGVsZW1lbnQu
ZG9jdW1lbnQoKTsKICAgICByZXR1cm4gZXZlbnRIYW5kbGVyQXR0cmlidXRlKGRvY3VtZW50LmF0
dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBpc29sYXRlZFdvcmxkKSwgZG9jdW1lbnQp
OwogfQogCi12b2lkIHNldERvY3VtZW50RXZlbnRIYW5kbGVyQXR0cmlidXRlKEpTQzo6RXhlY1N0
YXRlJiBzdGF0ZSwgSlNDOjpKU09iamVjdCYgd3JhcHBlciwgSFRNTEVsZW1lbnQmIGVsZW1lbnQs
IGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBKU0M6OkpTVmFsdWUgdmFsdWUpCit2b2lk
IHNldERvY3VtZW50RXZlbnRIYW5kbGVyQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwg
SlNDOjpKU09iamVjdCYgd3JhcHBlciwgSFRNTEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEF0b21T
dHJpbmcmIGV2ZW50VHlwZSwgSlNDOjpKU1ZhbHVlIHZhbHVlKQogewogICAgIEFTU0VSVCh3cmFw
cGVyLmdsb2JhbE9iamVjdCgpKTsKICAgICBhdXRvJiBkb2N1bWVudCA9IGVsZW1lbnQuZG9jdW1l
bnQoKTsKQEAgLTI4MywxMiArMjgzLDEyIEBAIHZvaWQgc2V0RG9jdW1lbnRFdmVudEhhbmRsZXJB
dHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTT2JqZWN0JiB3cmFwCiAgICAg
ZG9jdW1lbnQuc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGNyZWF0ZUV2ZW50
TGlzdGVuZXJGb3JFdmVudEhhbmRsZXJBdHRyaWJ1dGUoc3RhdGUsIHZhbHVlLCAqZG9jdW1lbnRX
cmFwcGVyKSwgY3VycmVudFdvcmxkKHN0YXRlKSk7CiB9CiAKLUpTQzo6SlNWYWx1ZSBkb2N1bWVu
dEV2ZW50SGFuZGxlckF0dHJpYnV0ZShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBET01XcmFwcGVyV29ybGQmIGlzb2xhdGVkV29ybGQpCitKU0M6OkpT
VmFsdWUgZG9jdW1lbnRFdmVudEhhbmRsZXJBdHRyaWJ1dGUoRG9jdW1lbnQmIGRvY3VtZW50LCBj
b25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIERPTVdyYXBwZXJXb3JsZCYgaXNvbGF0ZWRXb3Js
ZCkKIHsKICAgICByZXR1cm4gZXZlbnRIYW5kbGVyQXR0cmlidXRlKGRvY3VtZW50LCBldmVudFR5
cGUsIGlzb2xhdGVkV29ybGQpOwogfQogCi12b2lkIHNldERvY3VtZW50RXZlbnRIYW5kbGVyQXR0
cmlidXRlKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU09iamVjdCYgd3JhcHBlciwgRG9j
dW1lbnQmIGRvY3VtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgSlNDOjpKU1Zh
bHVlIHZhbHVlKQordm9pZCBzZXREb2N1bWVudEV2ZW50SGFuZGxlckF0dHJpYnV0ZShKU0M6OkV4
ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNPYmplY3QmIHdyYXBwZXIsIERvY3VtZW50JiBkb2N1bWVu
dCwgY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBKU0M6OkpTVmFsdWUgdmFsdWUpCiB7CiAg
ICAgc2V0RXZlbnRIYW5kbGVyQXR0cmlidXRlKHN0YXRlLCB3cmFwcGVyLCBkb2N1bWVudCwgZXZl
bnRUeXBlLCB2YWx1ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0V2ZW50TGlzdGVuZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRM
aXN0ZW5lci5oCmluZGV4IGNiODg4MGJhZWUzMDlmMDNlNDE5YmE3MDMyNjg1OWNmMDYyMjVmNjAu
LmM0NjY4YmYzZGEzYjg2ODIxOTI3ZWNmMzVjYjdlYmMzMTgyMTIyN2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5oCkBAIC03NCwyMCArNzQsMjAgQEAg
cHJpdmF0ZToKIH07CiAKIC8vIEZvciAib254eHgiIGF0dHJpYnV0ZXMgdGhhdCBhdXRvbWF0aWNh
bGx5IHNldCB1cCBKYXZhU2NyaXB0IGV2ZW50IGxpc3RlbmVycy4KLUpTQzo6SlNWYWx1ZSBldmVu
dEhhbmRsZXJBdHRyaWJ1dGUoRXZlbnRUYXJnZXQmLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
VHlwZSwgRE9NV3JhcHBlcldvcmxkJik7Ci12b2lkIHNldEV2ZW50SGFuZGxlckF0dHJpYnV0ZShK
U0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNPYmplY3QmLCBFdmVudFRhcmdldCYsIGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBKU0M6OkpTVmFsdWUpOworSlNDOjpKU1ZhbHVlIGV2ZW50SGFu
ZGxlckF0dHJpYnV0ZShFdmVudFRhcmdldCYsIGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwg
RE9NV3JhcHBlcldvcmxkJik7Cit2b2lkIHNldEV2ZW50SGFuZGxlckF0dHJpYnV0ZShKU0M6OkV4
ZWNTdGF0ZSYsIEpTQzo6SlNPYmplY3QmLCBFdmVudFRhcmdldCYsIGNvbnN0IEF0b21TdHJpbmcm
IGV2ZW50VHlwZSwgSlNDOjpKU1ZhbHVlKTsKIAogLy8gTGlrZSB0aGUgZnVuY3Rpb25zIGFib3Zl
LCBidXQgZm9yIGF0dHJpYnV0ZXMgdGhhdCBmb3J3YXJkIGV2ZW50IGhhbmRsZXJzIHRvIHRoZSB3
aW5kb3cgb2JqZWN0IHJhdGhlciB0aGFuIHNldHRpbmcgdGhlbSBvbiB0aGUgdGFyZ2V0LgotSlND
OjpKU1ZhbHVlIHdpbmRvd0V2ZW50SGFuZGxlckF0dHJpYnV0ZShIVE1MRWxlbWVudCYsIGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBET01XcmFwcGVyV29ybGQmKTsKLXZvaWQgc2V0V2lu
ZG93RXZlbnRIYW5kbGVyQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU09iamVjdCYs
IEhUTUxFbGVtZW50JiwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEpTQzo6SlNWYWx1
ZSk7Ci1KU0M6OkpTVmFsdWUgd2luZG93RXZlbnRIYW5kbGVyQXR0cmlidXRlKERPTVdpbmRvdyYs
IGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBET01XcmFwcGVyV29ybGQmKTsKLXZvaWQg
c2V0V2luZG93RXZlbnRIYW5kbGVyQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU09i
amVjdCYsIERPTVdpbmRvdyYsIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBKU0M6OkpT
VmFsdWUpOworSlNDOjpKU1ZhbHVlIHdpbmRvd0V2ZW50SGFuZGxlckF0dHJpYnV0ZShIVE1MRWxl
bWVudCYsIGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgRE9NV3JhcHBlcldvcmxkJik7Cit2
b2lkIHNldFdpbmRvd0V2ZW50SGFuZGxlckF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6
SlNPYmplY3QmLCBIVE1MRWxlbWVudCYsIGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgSlND
OjpKU1ZhbHVlKTsKK0pTQzo6SlNWYWx1ZSB3aW5kb3dFdmVudEhhbmRsZXJBdHRyaWJ1dGUoRE9N
V2luZG93JiwgY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBET01XcmFwcGVyV29ybGQmKTsK
K3ZvaWQgc2V0V2luZG93RXZlbnRIYW5kbGVyQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlJiwgSlND
OjpKU09iamVjdCYsIERPTVdpbmRvdyYsIGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgSlND
OjpKU1ZhbHVlKTsKIAogLy8gTGlrZSB0aGUgZnVuY3Rpb25zIGFib3ZlLCBidXQgZm9yIGF0dHJp
YnV0ZXMgdGhhdCBmb3J3YXJkIGV2ZW50IGhhbmRsZXJzIHRvIHRoZSBkb2N1bWVudCByYXRoZXIg
dGhhbiBzZXR0aW5nIHRoZW0gb24gdGhlIHRhcmdldC4KLUpTQzo6SlNWYWx1ZSBkb2N1bWVudEV2
ZW50SGFuZGxlckF0dHJpYnV0ZShIVE1MRWxlbWVudCYsIGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlLCBET01XcmFwcGVyV29ybGQmKTsKLXZvaWQgc2V0RG9jdW1lbnRFdmVudEhhbmRsZXJB
dHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTT2JqZWN0JiwgSFRNTEVsZW1lbnQmLCBj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgSlNDOjpKU1ZhbHVlKTsKLUpTQzo6SlNWYWx1
ZSBkb2N1bWVudEV2ZW50SGFuZGxlckF0dHJpYnV0ZShEb2N1bWVudCYsIGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBET01XcmFwcGVyV29ybGQmKTsKLXZvaWQgc2V0RG9jdW1lbnRFdmVu
dEhhbmRsZXJBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTT2JqZWN0JiwgRG9jdW1l
bnQmLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgSlNDOjpKU1ZhbHVlKTsKK0pTQzo6
SlNWYWx1ZSBkb2N1bWVudEV2ZW50SGFuZGxlckF0dHJpYnV0ZShIVE1MRWxlbWVudCYsIGNvbnN0
IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgRE9NV3JhcHBlcldvcmxkJik7Cit2b2lkIHNldERvY3Vt
ZW50RXZlbnRIYW5kbGVyQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU09iamVjdCYs
IEhUTUxFbGVtZW50JiwgY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBKU0M6OkpTVmFsdWUp
OworSlNDOjpKU1ZhbHVlIGRvY3VtZW50RXZlbnRIYW5kbGVyQXR0cmlidXRlKERvY3VtZW50Jiwg
Y29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBET01XcmFwcGVyV29ybGQmKTsKK3ZvaWQgc2V0
RG9jdW1lbnRFdmVudEhhbmRsZXJBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTT2Jq
ZWN0JiwgRG9jdW1lbnQmLCBjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIEpTQzo6SlNWYWx1
ZSk7CiAKIGlubGluZSBKU0M6OkpTT2JqZWN0KiBKU0V2ZW50TGlzdGVuZXI6OmpzRnVuY3Rpb24o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgY29uc3QKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVu
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5j
cHAKaW5kZXggYmZlNjJjNDU4M2VlNTdkMDhhYzZiZGRmMjE3ZGY3MTY4MDJjYmU5ZS4uMmQ3NGYy
OWUyNmE1NDE1MTdiYWFkYTNkNmQ3MjFjYWQwMWZkZmU1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5jcHAKQEAgLTQyLDcgKzQyLDcg
QEAgREVGSU5FX0RFQlVHX09OTFlfR0xPQkFMKFdURjo6UmVmQ291bnRlZExlYWtDb3VudGVyLCBl
dmVudExpc3RlbmVyQ291bnRlciwgKCJKU0wKIAogc3RydWN0IEpTTGF6eUV2ZW50TGlzdGVuZXI6
OkNyZWF0aW9uQXJndW1lbnRzIHsKICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVO
YW1lOwotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlVmFsdWU7CisgICAgY29uc3Qg
QXRvbVN0cmluZyYgYXR0cmlidXRlVmFsdWU7CiAgICAgRG9jdW1lbnQmIGRvY3VtZW50OwogICAg
IFdlYWtQdHI8Q29udGFpbmVyTm9kZT4gbm9kZTsKICAgICBKU09iamVjdCogd3JhcHBlcjsKQEAg
LTE4NCwxOSArMTg0LDE5IEBAIFJlZlB0cjxKU0xhenlFdmVudExpc3RlbmVyPiBKU0xhenlFdmVu
dExpc3RlbmVyOjpjcmVhdGUoQ3JlYXRpb25Bcmd1bWVudHMmJiBhcmd1CiAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgSlNMYXp5RXZlbnRMaXN0ZW5lcihXVEZNb3ZlKGFyZ3VtZW50cyksIHNvdXJj
ZVVSTCwgcG9zaXRpb24pKTsKIH0KIAotUmVmUHRyPEpTTGF6eUV2ZW50TGlzdGVuZXI+IEpTTGF6
eUV2ZW50TGlzdGVuZXI6OmNyZWF0ZShFbGVtZW50JiBlbGVtZW50LCBjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyaWJ1dGVOYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVZhbHVlKQor
UmVmUHRyPEpTTGF6eUV2ZW50TGlzdGVuZXI+IEpTTGF6eUV2ZW50TGlzdGVuZXI6OmNyZWF0ZShF
bGVtZW50JiBlbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBjb25z
dCBBdG9tU3RyaW5nJiBhdHRyaWJ1dGVWYWx1ZSkKIHsKICAgICByZXR1cm4gY3JlYXRlKHsgYXR0
cmlidXRlTmFtZSwgYXR0cmlidXRlVmFsdWUsIGVsZW1lbnQuZG9jdW1lbnQoKSwgbWFrZVdlYWtQ
dHIoZWxlbWVudCksIG51bGxwdHIsIGVsZW1lbnQuaXNTVkdFbGVtZW50KCkgfSk7CiB9CiAKLVJl
ZlB0cjxKU0xhenlFdmVudExpc3RlbmVyPiBKU0xhenlFdmVudExpc3RlbmVyOjpjcmVhdGUoRG9j
dW1lbnQmIGRvY3VtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBjb25z
dCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVZhbHVlKQorUmVmUHRyPEpTTGF6eUV2ZW50TGlzdGVu
ZXI+IEpTTGF6eUV2ZW50TGlzdGVuZXI6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIGF0dHJpYnV0
ZVZhbHVlKQogewogICAgIC8vIEZJWE1FOiBUaGlzIGFsd2F5cyBwYXNzZXMgZmFsc2UgZm9yICJz
aG91bGRVc2VTVkdFdmVudE5hbWUiLiBJcyB0aGF0IGNvcnJlY3QgZm9yIGV2ZW50cyBkaXNwYXRj
aGVkIHRvIFNWRyBkb2N1bWVudHM/CiAgICAgLy8gVGhpcyBoYXMgYmVlbiB0aGlzIHdheSBmb3Ig
YSBsb25nIHRpbWUsIGJ1dCBiZWNhbWUgbW9yZSBvYnZpb3VzIHdoZW4gcmVmYWN0b3JpbmcgdG8g
c2VwYXJhdGUgdGhlIEVsZW1lbnQgYW5kIERvY3VtZW50IGNvZGUgcGF0aHMuCiAgICAgcmV0dXJu
IGNyZWF0ZSh7IGF0dHJpYnV0ZU5hbWUsIGF0dHJpYnV0ZVZhbHVlLCBkb2N1bWVudCwgbWFrZVdl
YWtQdHIoZG9jdW1lbnQpLCBudWxscHRyLCBmYWxzZSB9KTsKIH0KIAotUmVmUHRyPEpTTGF6eUV2
ZW50TGlzdGVuZXI+IEpTTGF6eUV2ZW50TGlzdGVuZXI6OmNyZWF0ZShET01XaW5kb3cmIHdpbmRv
dywgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgY29uc3QgQXRvbWljU3RyaW5n
JiBhdHRyaWJ1dGVWYWx1ZSkKK1JlZlB0cjxKU0xhenlFdmVudExpc3RlbmVyPiBKU0xhenlFdmVu
dExpc3RlbmVyOjpjcmVhdGUoRE9NV2luZG93JiB3aW5kb3csIGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJpYnV0ZU5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIGF0dHJpYnV0ZVZhbHVlKQogewogICAg
IEFTU0VSVCh3aW5kb3cuZG9jdW1lbnQoKSk7CiAgICAgYXV0byYgZG9jdW1lbnQgPSAqd2luZG93
LmRvY3VtZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xh
enlFdmVudExpc3RlbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xhenlFdmVu
dExpc3RlbmVyLmgKaW5kZXggZjQ3M2Y0NGQwNTlkNjFkNzJmYjIyNWE3Zjk3Y2Y1OGRkYmNlMzBh
Yi4uN2FiODcxNmZhM2Y0ZTVjMWFlMzZhMjQ3YTJhNmI5YjEyOWE5Mjc2ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIuaApAQCAtMzMsOSAr
MzMsOSBAQCBjbGFzcyBRdWFsaWZpZWROYW1lOwogCiBjbGFzcyBKU0xhenlFdmVudExpc3RlbmVy
IGZpbmFsIDogcHVibGljIEpTRXZlbnRMaXN0ZW5lciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZlB0cjxKU0xhenlFdmVudExpc3RlbmVyPiBjcmVhdGUoRWxlbWVudCYsIGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlVmFsdWUp
OwotICAgIHN0YXRpYyBSZWZQdHI8SlNMYXp5RXZlbnRMaXN0ZW5lcj4gY3JlYXRlKERvY3VtZW50
JiwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgY29uc3QgQXRvbWljU3RyaW5n
JiBhdHRyaWJ1dGVWYWx1ZSk7Ci0gICAgc3RhdGljIFJlZlB0cjxKU0xhenlFdmVudExpc3RlbmVy
PiBjcmVhdGUoRE9NV2luZG93JiwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwg
Y29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVWYWx1ZSk7CisgICAgc3RhdGljIFJlZlB0cjxK
U0xhenlFdmVudExpc3RlbmVyPiBjcmVhdGUoRWxlbWVudCYsIGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJpYnV0ZU5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIGF0dHJpYnV0ZVZhbHVlKTsKKyAgICBz
dGF0aWMgUmVmUHRyPEpTTGF6eUV2ZW50TGlzdGVuZXI+IGNyZWF0ZShEb2N1bWVudCYsIGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIGF0dHJpYnV0
ZVZhbHVlKTsKKyAgICBzdGF0aWMgUmVmUHRyPEpTTGF6eUV2ZW50TGlzdGVuZXI+IGNyZWF0ZShE
T01XaW5kb3cmLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBjb25zdCBBdG9t
U3RyaW5nJiBhdHRyaWJ1dGVWYWx1ZSk7CiAKICAgICB2aXJ0dWFsIH5KU0xhenlFdmVudExpc3Rl
bmVyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUxp
c3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlTGlzdEN1c3Rv
bS5jcHAKaW5kZXggN2Y2ZDllNzJkYTUwNzk1ZmVmMzVmZmQ2MmJkMjY4OGM1YTEwZWFmMi4uNjA5
YTEzZjU5OGI3ZWRkZWNiMTk2NGJkODUyNzE3OTM1NGM1YmM3YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlTGlzdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNOb2RlTGlzdEN1c3RvbS5jcHAKQEAgLTMxLDcgKzMxLDcgQEAK
ICNpbmNsdWRlICJMaXZlTm9kZUxpc3QuaCIKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAi
Tm9kZUxpc3QuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCmluZGV4IGVjZGU3YTBh
YTE4MDNhNGE3ZDkwYzE0MTMxNDY4MTc5ZDM2MDE2NjQuLjczNjExZDBjMjFjNjkxYjgzZWNhY2I1
NTIwZjllOWYxN2MyMzUyNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRDb250cm9sbGVyLmgKQEAgLTEzMyw4ICsxMzMsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHVw
ZGF0ZURvY3VtZW50KCk7CiAKLSAgICB2b2lkIG5hbWVkSXRlbUFkZGVkKEhUTUxEb2N1bWVudCos
IGNvbnN0IEF0b21pY1N0cmluZyYpIHsgfQotICAgIHZvaWQgbmFtZWRJdGVtUmVtb3ZlZChIVE1M
RG9jdW1lbnQqLCBjb25zdCBBdG9taWNTdHJpbmcmKSB7IH0KKyAgICB2b2lkIG5hbWVkSXRlbUFk
ZGVkKEhUTUxEb2N1bWVudCosIGNvbnN0IEF0b21TdHJpbmcmKSB7IH0KKyAgICB2b2lkIG5hbWVk
SXRlbVJlbW92ZWQoSFRNTERvY3VtZW50KiwgY29uc3QgQXRvbVN0cmluZyYpIHsgfQogCiAgICAg
dm9pZCBjbGVhclNjcmlwdE9iamVjdHMoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFu
dXBTY3JpcHRPYmplY3RzRm9yUGx1Z2luKHZvaWQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggOGQ2MjA4MTgyMzAyZDU1
MTQ3OGZmYjhjNmQwOTY1NmY3ZTQ3MGQ0MC4uMzU2MzZjOThkYTNjNzViODYwZDBmYWRhY2U0NDgx
MmIxMWNhYTUxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0KQEAgLTYwMCw3ICs2MDAsNyBAQCBzdWIgR2VuZXJhdGVOYW1lZEdl
dHRlckxhbWJkYQogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBhdXRvIGdldHRlckZ1bmN0
b3IgPSBbXSAoYXV0byYgdGhpc09iamVjdCwgYXV0byBwcm9wZXJ0eU5hbWUpIC0+ICR7cmV0dXJu
VHlwZX0ge1xuIik7CiAKICAgICBteSBAYXJndW1lbnRzID0gR2VuZXJhdGVDYWxsV2l0aFVzaW5n
UmVmZXJlbmNlcygkbmFtZWRHZXR0ZXJPcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0Nh
bGxXaXRofSwgJG91dHB1dEFycmF5LCAiV1RGOjpudWxsb3B0IiwgInRoaXNPYmplY3QiLCAiICAg
ICAgICAiKTsKLSAgICBwdXNoKEBhcmd1bWVudHMsICJwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmlu
Zyhwcm9wZXJ0eU5hbWUpIik7CisgICAgcHVzaChAYXJndW1lbnRzLCAicHJvcGVydHlOYW1lVG9B
dG9tU3RyaW5nKHByb3BlcnR5TmFtZSkiKTsKIAogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICAgICAgYXV0byByZXN1bHQgPSB0aGlzT2JqZWN0LndyYXBwZWQoKS4ke25hbWVkR2V0dGVyRnVu
Y3Rpb25OYW1lfSgiIC4gam9pbigiLCAiLCBAYXJndW1lbnRzKSAuICIpO1xuIik7CiAgICAgCkBA
IC0yMTg5LDEzICsyMTg5LDEzIEBAIHN1YiBHZW5lcmF0ZURlZmF1bHRWYWx1ZQogICAgIG15ICgk
dHlwZVNjb3BlLCAkY29udGV4dCwgJHR5cGUsICRkZWZhdWx0VmFsdWUpID0gQF87CiAKICAgICBp
ZiAoJGNvZGVHZW5lcmF0b3ItPklzU3RyaW5nVHlwZSgkdHlwZSkpIHsKLSAgICAgICAgbXkgJHVz
ZUF0b21pY1N0cmluZyA9ICR0eXBlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntBdG9taWNTdHJpbmd9
OworICAgICAgICBteSAkdXNlQXRvbVN0cmluZyA9ICR0eXBlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PntBdG9tU3RyaW5nfTsKICAgICAgICAgaWYgKCRkZWZhdWx0VmFsdWUgZXEgIm51bGwiKSB7Ci0g
ICAgICAgICAgICByZXR1cm4gJHVzZUF0b21pY1N0cmluZyA/ICJudWxsQXRvbSgpIiA6ICJTdHJp
bmcoKSI7CisgICAgICAgICAgICByZXR1cm4gJHVzZUF0b21TdHJpbmcgPyAibnVsbEF0b20oKSIg
OiAiU3RyaW5nKCkiOwogICAgICAgICB9IGVsc2lmICgkZGVmYXVsdFZhbHVlIGVxICJcIlwiIikg
ewotICAgICAgICAgICAgcmV0dXJuICR1c2VBdG9taWNTdHJpbmcgPyAiZW1wdHlBdG9tKCkiIDog
ImVtcHR5U3RyaW5nKCkiOworICAgICAgICAgICAgcmV0dXJuICR1c2VBdG9tU3RyaW5nID8gImVt
cHR5QXRvbSgpIiA6ICJlbXB0eVN0cmluZygpIjsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIHJldHVybiAkdXNlQXRvbWljU3RyaW5nID8gIkF0b21pY1N0cmluZygke2RlZmF1bHRWYWx1
ZX0sIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpIiA6ICIke2RlZmF1bHRWYWx1
ZX1fcyI7CisgICAgICAgICAgICByZXR1cm4gJHVzZUF0b21TdHJpbmcgPyAiQXRvbVN0cmluZygk
e2RlZmF1bHRWYWx1ZX0sIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSIgOiAiJHtk
ZWZhdWx0VmFsdWV9X3MiOwogICAgICAgICB9CiAgICAgfQogCkBAIC02NDY4LDggKzY0NjgsOCBA
QCBzdWIgSXNBbm5vdGF0ZWRUeXBlCiAgICAgcmV0dXJuIDEgaWYgJHR5cGUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+e0NsYW1wfTsKICAgICByZXR1cm4gMSBpZiAkdHlwZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57RW5mb3JjZVJhbmdlfTsKICAgICByZXR1cm4gMSBpZiAkdHlwZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57VHJlYXROdWxsQXN9ICYmICR0eXBlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntUcmVh
dE51bGxBc30gZXEgIkVtcHR5U3RyaW5nIjsKLSAgICByZXR1cm4gMSBpZiAkdHlwZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57QXRvbWljU3RyaW5nfTsKLSAgICByZXR1cm4gMSBpZiAkdHlwZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57UmVxdWlyZXNFeGlzdGluZ0F0b21pY1N0cmluZ307CisgICAgcmV0
dXJuIDEgaWYgJHR5cGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0F0b21TdHJpbmd9OworICAgIHJl
dHVybiAxIGlmICR0eXBlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntSZXF1aXJlc0V4aXN0aW5nQXRv
bVN0cmluZ307CiB9CiAKIHN1YiBHZXRBbm5vdGF0ZWRJRExUeXBlCkBAIC02NDc5LDggKzY0Nzks
OCBAQCBzdWIgR2V0QW5ub3RhdGVkSURMVHlwZQogICAgIHJldHVybiAiSURMQ2xhbXBBZGFwdG9y
IiBpZiAkdHlwZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q2xhbXB9OwogICAgIHJldHVybiAiSURM
RW5mb3JjZVJhbmdlQWRhcHRvciIgaWYgJHR5cGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0VuZm9y
Y2VSYW5nZX07CiAgICAgcmV0dXJuICJJRExUcmVhdE51bGxBc0VtcHR5QWRhcHRvciIgaWYgJHR5
cGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1RyZWF0TnVsbEFzfSAmJiAkdHlwZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57VHJlYXROdWxsQXN9IGVxICJFbXB0eVN0cmluZyI7Ci0gICAgcmV0dXJuICJJ
RExBdG9taWNTdHJpbmdBZGFwdG9yIiBpZiAkdHlwZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57QXRv
bWljU3RyaW5nfTsKLSAgICByZXR1cm4gIklETFJlcXVpcmVzRXhpc3RpbmdBdG9taWNTdHJpbmdB
ZGFwdG9yIiBpZiAkdHlwZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UmVxdWlyZXNFeGlzdGluZ0F0
b21pY1N0cmluZ307CisgICAgcmV0dXJuICJJRExBdG9tU3RyaW5nQWRhcHRvciIgaWYgJHR5cGUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+e0F0b21TdHJpbmd9OworICAgIHJldHVybiAiSURMUmVxdWly
ZXNFeGlzdGluZ0F0b21TdHJpbmdBZGFwdG9yIiBpZiAkdHlwZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57UmVxdWlyZXNFeGlzdGluZ0F0b21TdHJpbmd9OwogfQogCiBzdWIgR2V0QmFzZUlETFR5cGUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRl
cy5qc29uIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpz
b24KaW5kZXggZmM4MDkwNmFmOTE1ZjY1MDAyMDdmOWUyZjdlYWQyNjc4YmIzYTA0Ny4uZGQ5NTE5
ZTI0NDkxNDdiZWM5MzBjMjI0MzAxYmUyOTFjOWUzYjA1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb24KKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb24KQEAgLTIyLDcgKzIyLDcg
QEAKICAgICAgICAgIkFwcGxlQ29weXJpZ2h0IjogewogICAgICAgICAgICAgImNvbnRleHRzQWxs
b3dlZCI6IFsiaW50ZXJmYWNlIiwgImF0dHJpYnV0ZSIsICJvcGVyYXRpb24iXQogICAgICAgICB9
LAotICAgICAgICAiQXRvbWljU3RyaW5nIjogeworICAgICAgICAiQXRvbVN0cmluZyI6IHsKICAg
ICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbInR5cGUiXQogICAgICAgICB9LAogICAgICAg
ICAiQ0VSZWFjdGlvbnMiOiB7CkBAIC00MTEsNyArNDExLDcgQEAKICAgICAgICAgIlJlcG9ydEV4
dGVybmFsTWVtb3J5Q29zdCI6IHsKICAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImlu
dGVyZmFjZSJdCiAgICAgICAgIH0sCi0gICAgICAgICJSZXF1aXJlc0V4aXN0aW5nQXRvbWljU3Ry
aW5nIjogeworICAgICAgICAiUmVxdWlyZXNFeGlzdGluZ0F0b21TdHJpbmciOiB7CiAgICAgICAg
ICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJ0eXBlIl0KICAgICAgICAgfSwKICAgICAgICAgIlJl
dGhyb3dFeGNlcHRpb24iOiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwCmluZGV4IDgzYjBmN2Q5ZTRiNTM5NGMx
ZGQ0MDM0NGE0NjZlNTNkMDMzZGJlZTYuLjYwMDQzN2IwNmEzMmYyY2JkNjc4Mjc2NjgzMmZkN2Ey
MjU0NjVkNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RET01KSVQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwCkBAIC02MSw5ICs2MSw5IEBAIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiB1bnNhZmVKc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlv
bkl0ZW0oSlNDOjpFCiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0RE9N
SklUUHJvdG90eXBlRnVuY3Rpb25IYXNBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiB1bnNhZmVKc1Rlc3RET01KSVRQcm90b3R5cGVG
dW5jdGlvbkhhc0F0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTVGVzdERPTUpJVCopOwogSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0
aW9uR2V0RWxlbWVudEJ5SWQoSlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiB1bnNhZmVKc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1l
bnRCeUlkKEpTQzo6RXhlY1N0YXRlKiwgSlNUZXN0RE9NSklUKiwgRE9NSklUOjpJRExKU0FyZ3Vt
ZW50VHlwZTxJRExSZXF1aXJlc0V4aXN0aW5nQXRvbWljU3RyaW5nQWRhcHRvcjxJRExET01TdHJp
bmc+Pik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gdW5zYWZlSnNUZXN0RE9N
SklUUHJvdG90eXBlRnVuY3Rpb25HZXRFbGVtZW50QnlJZChKU0M6OkV4ZWNTdGF0ZSosIEpTVGVz
dERPTUpJVCosIERPTUpJVDo6SURMSlNBcmd1bWVudFR5cGU8SURMUmVxdWlyZXNFeGlzdGluZ0F0
b21TdHJpbmdBZGFwdG9yPElETERPTVN0cmluZz4+KTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRzQnlOYW1l
KEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gdW5z
YWZlSnNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRFbGVtZW50c0J5TmFtZShKU0M6OkV4
ZWNTdGF0ZSosIEpTVGVzdERPTUpJVCosIERPTUpJVDo6SURMSlNBcmd1bWVudFR5cGU8SURMQXRv
bWljU3RyaW5nQWRhcHRvcjxJRExET01TdHJpbmc+Pik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gdW5zYWZlSnNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRFbGVtZW50
c0J5TmFtZShKU0M6OkV4ZWNTdGF0ZSosIEpTVGVzdERPTUpJVCosIERPTUpJVDo6SURMSlNBcmd1
bWVudFR5cGU8SURMQXRvbVN0cmluZ0FkYXB0b3I8SURMRE9NU3RyaW5nPj4pOwogCiAvLyBBdHRy
aWJ1dGVzCiAKQEAgLTExMSw5ICsxMTEsOSBAQCBzdGF0aWMgY29uc3QgSlNDOjpET01KSVQ6OlNp
Z25hdHVyZSBET01KSVRTaWduYXR1cmVGb3JUZXN0RE9NSklUSXRlbSgodWludHB0cl90KQogCiBz
dGF0aWMgY29uc3QgSlNDOjpET01KSVQ6OlNpZ25hdHVyZSBET01KSVRTaWduYXR1cmVGb3JUZXN0
RE9NSklUSGFzQXR0cmlidXRlKCh1aW50cHRyX3QpdW5zYWZlSnNUZXN0RE9NSklUUHJvdG90eXBl
RnVuY3Rpb25IYXNBdHRyaWJ1dGUsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBKU0M6OkRPTUpJVDo6
RWZmZWN0Ojpmb3JSZWFkKERPTUpJVDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6RE9NKSwgRE9N
SklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETEJvb2xlYW4+Ojp2YWx1ZSk7CiAKLXN0YXRpYyBj
b25zdCBKU0M6OkRPTUpJVDo6U2lnbmF0dXJlIERPTUpJVFNpZ25hdHVyZUZvclRlc3RET01KSVRH
ZXRFbGVtZW50QnlJZCgodWludHB0cl90KXVuc2FmZUpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0
aW9uR2V0RWxlbWVudEJ5SWQsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBKU0M6OkRPTUpJVDo6RWZm
ZWN0Ojpmb3JSZWFkKERPTUpJVDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6RE9NKSwgRE9NSklU
OjpJRExSZXN1bHRUeXBlRmlsdGVyPElETEludGVyZmFjZTxFbGVtZW50Pj46OnZhbHVlLCBET01K
SVQ6OklETEFyZ3VtZW50VHlwZUZpbHRlcjxJRExSZXF1aXJlc0V4aXN0aW5nQXRvbWljU3RyaW5n
QWRhcHRvcjxJRExET01TdHJpbmc+Pjo6dmFsdWUpOworc3RhdGljIGNvbnN0IEpTQzo6RE9NSklU
OjpTaWduYXR1cmUgRE9NSklUU2lnbmF0dXJlRm9yVGVzdERPTUpJVEdldEVsZW1lbnRCeUlkKCh1
aW50cHRyX3QpdW5zYWZlSnNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRFbGVtZW50QnlJ
ZCwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvclJlYWQoRE9N
SklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpET00pLCBET01KSVQ6OklETFJlc3VsdFR5cGVG
aWx0ZXI8SURMSW50ZXJmYWNlPEVsZW1lbnQ+Pjo6dmFsdWUsIERPTUpJVDo6SURMQXJndW1lbnRU
eXBlRmlsdGVyPElETFJlcXVpcmVzRXhpc3RpbmdBdG9tU3RyaW5nQWRhcHRvcjxJRExET01TdHJp
bmc+Pjo6dmFsdWUpOwogCi1zdGF0aWMgY29uc3QgSlNDOjpET01KSVQ6OlNpZ25hdHVyZSBET01K
SVRTaWduYXR1cmVGb3JUZXN0RE9NSklUR2V0RWxlbWVudHNCeU5hbWUoKHVpbnRwdHJfdCl1bnNh
ZmVKc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRzQnlOYW1lLCBKU1Rlc3RE
T01KSVQ6OmluZm8oKSwgSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yUmVhZChET01KSVQ6OkFic3Ry
YWN0SGVhcFJlcG9zaXRvcnk6OkRPTSksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExJ
bnRlcmZhY2U8Tm9kZUxpc3Q+Pjo6dmFsdWUsIERPTUpJVDo6SURMQXJndW1lbnRUeXBlRmlsdGVy
PElETEF0b21pY1N0cmluZ0FkYXB0b3I8SURMRE9NU3RyaW5nPj46OnZhbHVlKTsKK3N0YXRpYyBj
b25zdCBKU0M6OkRPTUpJVDo6U2lnbmF0dXJlIERPTUpJVFNpZ25hdHVyZUZvclRlc3RET01KSVRH
ZXRFbGVtZW50c0J5TmFtZSgodWludHB0cl90KXVuc2FmZUpzVGVzdERPTUpJVFByb3RvdHlwZUZ1
bmN0aW9uR2V0RWxlbWVudHNCeU5hbWUsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBKU0M6OkRPTUpJ
VDo6RWZmZWN0Ojpmb3JSZWFkKERPTUpJVDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6RE9NKSwg
RE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETEludGVyZmFjZTxOb2RlTGlzdD4+Ojp2YWx1
ZSwgRE9NSklUOjpJRExBcmd1bWVudFR5cGVGaWx0ZXI8SURMQXRvbVN0cmluZ0FkYXB0b3I8SURM
RE9NU3RyaW5nPj46OnZhbHVlKTsKIAogc3RhdGljIGNvbnN0IEpTQzo6RE9NSklUOjpHZXR0ZXJT
ZXR0ZXIgRE9NSklUQXR0cmlidXRlRm9yVGVzdERPTUpJVEFueUF0dHIgewogICAgIGpzVGVzdERP
TUpJVEFueUF0dHIsCkBAIC0xMjA4LDcgKzEyMDgsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRFbGVtZW50QnlJZEJv
ZAogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElL
RUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3Rh
dGUpKTsKLSAgICBhdXRvIGVsZW1lbnRJZCA9IGNvbnZlcnQ8SURMUmVxdWlyZXNFeGlzdGluZ0F0
b21pY1N0cmluZ0FkYXB0b3I8SURMRE9NU3RyaW5nPj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2Vk
QXJndW1lbnQoMCkpOworICAgIGF1dG8gZWxlbWVudElkID0gY29udmVydDxJRExSZXF1aXJlc0V4
aXN0aW5nQXRvbVN0cmluZ0FkYXB0b3I8SURMRE9NU3RyaW5nPj4oKnN0YXRlLCBzdGF0ZS0+dW5j
aGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETElu
dGVyZmFjZTxFbGVtZW50Pj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGlt
cGwuZ2V0RWxlbWVudEJ5SWQoV1RGTW92ZShlbGVtZW50SWQpKSkpOwogfQpAQCAtMTIxOCw3ICsx
MjE4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RET01KSVRQcm90b3R5
cGVGdW5jdGlvbkdldEVsZW1lbnRCeUlkKEV4ZWNTdGEKICAgICByZXR1cm4gSURMT3BlcmF0aW9u
PEpTVGVzdERPTUpJVD46OmNhbGw8anNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRFbGVt
ZW50QnlJZEJvZHk+KCpzdGF0ZSwgImdldEVsZW1lbnRCeUlkIik7CiB9CiAKLUpTQzo6RW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiB1bnNhZmVKc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlv
bkdldEVsZW1lbnRCeUlkKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNUZXN0RE9NSklUKiBjYXN0
ZWRUaGlzLCBET01KSVQ6OklETEpTQXJndW1lbnRUeXBlPElETFJlcXVpcmVzRXhpc3RpbmdBdG9t
aWNTdHJpbmdBZGFwdG9yPElETERPTVN0cmluZz4+IGVuY29kZWRFbGVtZW50SWQpCitKU0M6OkVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gdW5zYWZlSnNUZXN0RE9NSklUUHJvdG90eXBlRnVu
Y3Rpb25HZXRFbGVtZW50QnlJZChKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTVGVzdERPTUpJVCog
Y2FzdGVkVGhpcywgRE9NSklUOjpJRExKU0FyZ3VtZW50VHlwZTxJRExSZXF1aXJlc0V4aXN0aW5n
QXRvbVN0cmluZ0FkYXB0b3I8SURMRE9NU3RyaW5nPj4gZW5jb2RlZEVsZW1lbnRJZCkKIHsKICAg
ICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwpAQCAtMTIy
Niw3ICsxMjI2LDcgQEAgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIHVuc2FmZUpz
VGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudEIKICAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29w
ZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICBhdXRvIGVs
ZW1lbnRJZCA9IERPTUpJVDo6RGlyZWN0Q29udmVydGVyPElETFJlcXVpcmVzRXhpc3RpbmdBdG9t
aWNTdHJpbmdBZGFwdG9yPElETERPTVN0cmluZz4+OjpkaXJlY3RDb252ZXJ0KCpzdGF0ZSwgZW5j
b2RlZEVsZW1lbnRJZCk7CisgICAgYXV0byBlbGVtZW50SWQgPSBET01KSVQ6OkRpcmVjdENvbnZl
cnRlcjxJRExSZXF1aXJlc0V4aXN0aW5nQXRvbVN0cmluZ0FkYXB0b3I8SURMRE9NU3RyaW5nPj46
OmRpcmVjdENvbnZlcnQoKnN0YXRlLCBlbmNvZGVkRWxlbWVudElkKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodG9KUzxJRExJbnRlcmZhY2U8RWxlbWVudD4+KCpzdGF0ZSwgKmNhc3RlZFRo
aXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLmdldEVsZW1lbnRCeUlkKFdURk1vdmUoZWxlbWVudElk
KSkpKTsKIH0KQEAgLTEyMzgsNyArMTIzOCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRzQnlOYW1lCiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFko
c3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkp
OwotICAgIGF1dG8gZWxlbWVudE5hbWUgPSBjb252ZXJ0PElETEF0b21pY1N0cmluZ0FkYXB0b3I8
SURMRE9NU3RyaW5nPj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOworICAg
IGF1dG8gZWxlbWVudE5hbWUgPSBjb252ZXJ0PElETEF0b21TdHJpbmdBZGFwdG9yPElETERPTVN0
cmluZz4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodG9KUzxJRExJbnRlcmZhY2U8Tm9kZUxpc3Q+Pigqc3RhdGUsICpjYXN0
ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC5nZXRFbGVtZW50c0J5TmFtZShXVEZNb3ZlKGVs
ZW1lbnROYW1lKSkpKTsKIH0KQEAgLTEyNDgsNyArMTI0OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRFbGVtZW50c0J5TmFt
ZShFeGVjCiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RET01KSVQ+OjpjYWxsPGpzVGVz
dERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudHNCeU5hbWVCb2R5Pigqc3RhdGUsICJn
ZXRFbGVtZW50c0J5TmFtZSIpOwogfQogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gdW5zYWZlSnNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRFbGVtZW50c0J5TmFtZShK
U0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTVGVzdERPTUpJVCogY2FzdGVkVGhpcywgRE9NSklUOjpJ
RExKU0FyZ3VtZW50VHlwZTxJRExBdG9taWNTdHJpbmdBZGFwdG9yPElETERPTVN0cmluZz4+IGVu
Y29kZWRFbGVtZW50TmFtZSkKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiB1bnNh
ZmVKc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRzQnlOYW1lKEpTQzo6RXhl
Y1N0YXRlKiBzdGF0ZSwgSlNUZXN0RE9NSklUKiBjYXN0ZWRUaGlzLCBET01KSVQ6OklETEpTQXJn
dW1lbnRUeXBlPElETEF0b21TdHJpbmdBZGFwdG9yPElETERPTVN0cmluZz4+IGVuY29kZWRFbGVt
ZW50TmFtZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFZNJiB2bSA9IHN0YXRl
LT52bSgpOwpAQCAtMTI1Niw3ICsxMjU2LDcgQEAgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIHVuc2FmZUpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudHMKICAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKLSAgICBhdXRvIGVsZW1lbnROYW1lID0gRE9NSklUOjpEaXJlY3RDb252ZXJ0ZXI8SURMQXRv
bWljU3RyaW5nQWRhcHRvcjxJRExET01TdHJpbmc+Pjo6ZGlyZWN0Q29udmVydCgqc3RhdGUsIGVu
Y29kZWRFbGVtZW50TmFtZSk7CisgICAgYXV0byBlbGVtZW50TmFtZSA9IERPTUpJVDo6RGlyZWN0
Q29udmVydGVyPElETEF0b21TdHJpbmdBZGFwdG9yPElETERPTVN0cmluZz4+OjpkaXJlY3RDb252
ZXJ0KCpzdGF0ZSwgZW5jb2RlZEVsZW1lbnROYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodG9KUzxJRExJbnRlcmZhY2U8Tm9kZUxpc3Q+Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9i
YWxPYmplY3QoKSwgaW1wbC5nZXRFbGVtZW50c0J5TmFtZShXVEZNb3ZlKGVsZW1lbnROYW1lKSkp
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RFdmVudFRhcmdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCmluZGV4IDVmYzdjYjZjNTU1ZTc0NWJjZmJh
YmNhMDY0MzExOGM2ZDYxZjA3NmYuLjkyYjlkOThhNWU3MzcyZjIxNDZjNzQxODExMDdiNWEyODhh
Mzk5OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RFdmVudFRhcmdldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcApAQCAtMTUyLDcgKzE1Miw3IEBAIGJv
b2wgSlNUZXN0RXZlbnRUYXJnZXQ6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0
LCBFeGVjU3RhdGUqIHN0YXRlLCBQCiAgICAgfQogICAgIHVzaW5nIEdldHRlcklETFR5cGUgPSBJ
RExJbnRlcmZhY2U8Tm9kZT47CiAgICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gW10gKGF1dG8mIHRo
aXNPYmplY3QsIGF1dG8gcHJvcGVydHlOYW1lKSAtPiBPcHRpb25hbDx0eXBlbmFtZSBHZXR0ZXJJ
RExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGU+IHsKLSAgICAgICAgYXV0byByZXN1bHQgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJv
cGVydHlOYW1lKSk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gdGhpc09iamVjdC53cmFwcGVkKCku
bmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpKTsKICAgICAg
ICAgaWYgKCFHZXR0ZXJJRExUeXBlOjppc051bGxWYWx1ZShyZXN1bHQpKQogICAgICAgICAgICAg
cmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRl
cklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07CiAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CkBAIC0xODAsNyArMTgwLDcgQEAgYm9vbCBKU1Rlc3RFdmVudFRh
cmdldDo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCogb2JqZWN0LCBFeGVjU3Rh
dGUqIHMKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20oc3RhdGUsIGlu
ZGV4KTsKICAgICB1c2luZyBHZXR0ZXJJRExUeXBlID0gSURMSW50ZXJmYWNlPE5vZGU+OwogICAg
IGF1dG8gZ2V0dGVyRnVuY3RvciA9IFtdIChhdXRvJiB0aGlzT2JqZWN0LCBhdXRvIHByb3BlcnR5
TmFtZSkgLT4gT3B0aW9uYWw8dHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25U
eXBlPiB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJ
dGVtKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgICAgICBh
dXRvIHJlc3VsdCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVU
b0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSk7CiAgICAgICAgIGlmICghR2V0dGVySURMVHlwZTo6
aXNOdWxsVmFsdWUocmVzdWx0KSkKICAgICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJ
RExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVG
cm9tTnVsbGFibGUocmVzdWx0KSB9OwogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlm
aWVyLmNwcAppbmRleCAzNWI3N2E3NGRiNjc4NjlmNGRhNzY3MjY4NDhjYTNjNjMzOTUwYzU3Li4z
OWU2YWU1Nzc4YjEwN2NkNjI1YjJkMjgyMzlhNjJlMWZkOTEyNjNlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVk
U2V0dGVyTm9JZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcApA
QCAtMTUxLDcgKzE1MSw3IEBAIGJvb2wgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVu
dGlmaWVyOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjCiAgICAgfQogICAgIHVz
aW5nIEdldHRlcklETFR5cGUgPSBJRExET01TdHJpbmc7CiAgICAgYXV0byBnZXR0ZXJGdW5jdG9y
ID0gW10gKGF1dG8mIHRoaXNPYmplY3QsIGF1dG8gcHJvcGVydHlOYW1lKSAtPiBPcHRpb25hbDx0
eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGU+IHsKLSAgICAgICAgYXV0
byByZXN1bHQgPSB0aGlzT2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9B
dG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gdGhpc09i
amVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0
eU5hbWUpKTsKICAgICAgICAgaWYgKCFHZXR0ZXJJRExUeXBlOjppc051bGxWYWx1ZShyZXN1bHQp
KQogICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0
aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQp
IH07CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CkBAIC0xNzksNyArMTc5LDcgQEAgYm9v
bCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXI6OmdldE93blByb3BlcnR5
U2xvdEJ5SW5kZXgoSlNPYmplY3QKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6
OmZyb20oc3RhdGUsIGluZGV4KTsKICAgICB1c2luZyBHZXR0ZXJJRExUeXBlID0gSURMRE9NU3Ry
aW5nOwogICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9IFtdIChhdXRvJiB0aGlzT2JqZWN0LCBhdXRv
IHByb3BlcnR5TmFtZSkgLT4gT3B0aW9uYWw8dHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVt
ZW50YXRpb25UeXBlPiB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gdGhpc09iamVjdC53cmFwcGVk
KCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOwor
ICAgICAgICBhdXRvIHJlc3VsdCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRlbShwcm9w
ZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSk7CiAgICAgICAgIGlmICghR2V0dGVy
SURMVHlwZTo6aXNOdWxsVmFsdWUocmVzdWx0KSkKICAgICAgICAgICAgIHJldHVybiB0eXBlbmFt
ZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRy
YWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwogICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRT
ZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKaW5kZXggZjFiMWRhMWI1NGI0YmEyNGM4Nzk0ZTky
MWRiNTY1Yjk5MWM5ZGM3Zi4uOWY4ZGNjNjhiYjczNDMxNTkyZDhiY2I4OWI0ZjRiMTQ2NzkxY2Vh
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVk
U2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgYm9vbCBKU1Rl
c3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6Z2V0T3duUHJvcGVydHlT
bG90KEpTT2JqZWN0KgogICAgIH0KICAgICB1c2luZyBHZXR0ZXJJRExUeXBlID0gSURMRE9NU3Ry
aW5nOwogICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9IFtdIChhdXRvJiB0aGlzT2JqZWN0LCBhdXRv
IHByb3BlcnR5TmFtZSkgLT4gT3B0aW9uYWw8dHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVt
ZW50YXRpb25UeXBlPiB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gdGhpc09iamVjdC53cmFwcGVk
KCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOwor
ICAgICAgICBhdXRvIHJlc3VsdCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRlbShwcm9w
ZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSk7CiAgICAgICAgIGlmICghR2V0dGVy
SURMVHlwZTo6aXNOdWxsVmFsdWUocmVzdWx0KSkKICAgICAgICAgICAgIHJldHVybiB0eXBlbmFt
ZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRy
YWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwogICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwpAQCAtMTc5LDcgKzE3OSw3IEBAIGJvb2wgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVy
VGhyb3dpbmdFeGNlcHRpb246OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPCiAgICAgYXV0
byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tKHN0YXRlLCBpbmRleCk7CiAgICAgdXNp
bmcgR2V0dGVySURMVHlwZSA9IElETERPTVN0cmluZzsKICAgICBhdXRvIGdldHRlckZ1bmN0b3Ig
PSBbXSAoYXV0byYgdGhpc09iamVjdCwgYXV0byBwcm9wZXJ0eU5hbWUpIC0+IE9wdGlvbmFsPHR5
cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZT4gewotICAgICAgICBhdXRv
IHJlc3VsdCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0
b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAgICAgICAgYXV0byByZXN1bHQgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5
TmFtZSkpOwogICAgICAgICBpZiAoIUdldHRlcklETFR5cGU6OmlzTnVsbFZhbHVlKHJlc3VsdCkp
CiAgICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRp
b25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkg
fTsKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJX
aXRoSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCmluZGV4IGZi
NjA4OWNiZDQxYTViZmUzMjgyNzM3YjIyNzE1OGQzMDgxN2ZlN2EuLmMzZjE0ZTU3YWNiMzU3ZWUx
NmU3MWViNjBkMGM5MjJhMjI4NTEyNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRp
Zmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcApAQCAtMTYwLDcgKzE2
MCw3IEBAIGJvb2wgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI6Omdl
dE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqCiAgICAgfQogICAgIHVzaW5nIEdldHRlcklE
TFR5cGUgPSBJRExET01TdHJpbmc7CiAgICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gW10gKGF1dG8m
IHRoaXNPYmplY3QsIGF1dG8gcHJvcGVydHlOYW1lKSAtPiBPcHRpb25hbDx0eXBlbmFtZSBHZXR0
ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGU+IHsKLSAgICAgICAgYXV0byByZXN1bHQgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmco
cHJvcGVydHlOYW1lKSk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gdGhpc09iamVjdC53cmFwcGVk
KCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpKTsKICAg
ICAgICAgaWYgKCFHZXR0ZXJJRExUeXBlOjppc051bGxWYWx1ZShyZXN1bHQpKQogICAgICAgICAg
ICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdl
dHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07CiAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CkBAIC0xODgsNyArMTg4LDcgQEAgYm9vbCBKU1Rlc3ROYW1l
ZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRl
eChKU09iamUKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20oc3RhdGUs
IGluZGV4KTsKICAgICB1c2luZyBHZXR0ZXJJRExUeXBlID0gSURMRE9NU3RyaW5nOwogICAgIGF1
dG8gZ2V0dGVyRnVuY3RvciA9IFtdIChhdXRvJiB0aGlzT2JqZWN0LCBhdXRvIHByb3BlcnR5TmFt
ZSkgLT4gT3B0aW9uYWw8dHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBl
PiB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVt
KHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgICAgICBhdXRv
IHJlc3VsdCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0
b21TdHJpbmcocHJvcGVydHlOYW1lKSk7CiAgICAgICAgIGlmICghR2V0dGVySURMVHlwZTo6aXNO
dWxsVmFsdWUocmVzdWx0KSkKICAgICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExU
eXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9t
TnVsbGFibGUocmVzdWx0KSB9OwogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
RGVsZXRlck5vSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmNwcAppbmRleCBlN2Q5MWY4
Yzg2OGMyNTNkNmI4ODAxMjE0MjU1MzExMmMzZjhkODBlLi5lZjNlNTU5MWFlZmY0YzNmNjgzM2Qx
ZDg2MzIwNzFkNzNlOTliNWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVy
Tm9JZGVudGlmaWVyLmNwcApAQCAtMTQyLDcgKzE0Miw3IEBAIGJvb2wgSlNUZXN0TmFtZWREZWxl
dGVyTm9JZGVudGlmaWVyOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhl
Y1N0CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwog
ICAgIHVzaW5nIEdldHRlcklETFR5cGUgPSBJRExET01TdHJpbmc7CiAgICAgYXV0byBnZXR0ZXJG
dW5jdG9yID0gW10gKGF1dG8mIHRoaXNPYmplY3QsIGF1dG8gcHJvcGVydHlOYW1lKSAtPiBPcHRp
b25hbDx0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGU+IHsKLSAgICAg
ICAgYXV0byByZXN1bHQgPSB0aGlzT2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlO
YW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0g
dGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhw
cm9wZXJ0eU5hbWUpKTsKICAgICAgICAgaWYgKCFHZXR0ZXJJRExUeXBlOjppc051bGxWYWx1ZShy
ZXN1bHQpKQogICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxl
bWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShy
ZXN1bHQpIH07CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CkBAIC0xNjIsNyArMTYyLDcg
QEAgYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXI6OmdldE93blByb3BlcnR5U2xv
dEJ5SW5kZXgoSlNPYmplY3QqIG9iamVjdCwKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50
aWZpZXI6OmZyb20oc3RhdGUsIGluZGV4KTsKICAgICB1c2luZyBHZXR0ZXJJRExUeXBlID0gSURM
RE9NU3RyaW5nOwogICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9IFtdIChhdXRvJiB0aGlzT2JqZWN0
LCBhdXRvIHByb3BlcnR5TmFtZSkgLT4gT3B0aW9uYWw8dHlwZW5hbWUgR2V0dGVySURMVHlwZTo6
SW1wbGVtZW50YXRpb25UeXBlPiB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gdGhpc09iamVjdC53
cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFt
ZSkpOworICAgICAgICBhdXRvIHJlc3VsdCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRl
bShwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSk7CiAgICAgICAgIGlmICgh
R2V0dGVySURMVHlwZTo6aXNOdWxsVmFsdWUocmVzdWx0KSkKICAgICAgICAgICAgIHJldHVybiB0
eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBl
OjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwogICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2lu
Z0V4Y2VwdGlvbi5jcHAKaW5kZXggYTdkNzZiYTdhM2RlYjU4NDUzMDRiZTY1Yzg5ZDhlMGRhMjlk
YWY3YS4uMGZkNzYzYjMyOGZiYjg4MThjZGMxMWQ5OGZjODU1MzhmYzczZThmYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVs
ZXRlclRocm93aW5nRXhjZXB0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCkBA
IC0xNDIsNyArMTQyLDcgQEAgYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlv
bjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEUKICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgdXNpbmcgR2V0dGVySURM
VHlwZSA9IElETERPTVN0cmluZzsKICAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSBbXSAoYXV0byYg
dGhpc09iamVjdCwgYXV0byBwcm9wZXJ0eU5hbWUpIC0+IE9wdGlvbmFsPHR5cGVuYW1lIEdldHRl
cklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZT4gewotICAgICAgICBhdXRvIHJlc3VsdCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhw
cm9wZXJ0eU5hbWUpKTsKKyAgICAgICAgYXV0byByZXN1bHQgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkpOwogICAg
ICAgICBpZiAoIUdldHRlcklETFR5cGU6OmlzTnVsbFZhbHVlKHJlc3VsdCkpCiAgICAgICAgICAg
ICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsgR2V0
dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKQEAgLTE2Miw3ICsxNjIsNyBAQCBib29sIEpTVGVzdE5hbWVk
RGVsZXRlclRocm93aW5nRXhjZXB0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2Jq
ZWN0KiBvYgogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbShzdGF0ZSwg
aW5kZXgpOwogICAgIHVzaW5nIEdldHRlcklETFR5cGUgPSBJRExET01TdHJpbmc7CiAgICAgYXV0
byBnZXR0ZXJGdW5jdG9yID0gW10gKGF1dG8mIHRoaXNPYmplY3QsIGF1dG8gcHJvcGVydHlOYW1l
KSAtPiBPcHRpb25hbDx0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGU+
IHsKLSAgICAgICAgYXV0byByZXN1bHQgPSB0aGlzT2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0o
cHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgICAgIGF1dG8g
cmVzdWx0ID0gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRv
bVN0cmluZyhwcm9wZXJ0eU5hbWUpKTsKICAgICAgICAgaWYgKCFHZXR0ZXJJRExUeXBlOjppc051
bGxWYWx1ZShyZXN1bHQpKQogICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5
cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21O
dWxsYWJsZShyZXN1bHQpIH07CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRE
ZWxldGVyV2l0aElkZW50aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmNwcAppbmRleCA5ZWRh
YjU5MWQ5NDgzNDk2NTBhZDEyMzkxOWY2YjM2MzE2ZDU0ZDZiLi45ZTUwMGJkZDZkODBlODE1ODNj
YzZiNzcyNzUyNjZiMzk4ODIxMTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERl
bGV0ZXJXaXRoSWRlbnRpZmllci5jcHAKQEAgLTE0OCw3ICsxNDgsNyBAQCBib29sIEpTVGVzdE5h
bWVkRGVsZXRlcldpdGhJZGVudGlmaWVyOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9i
amVjdCwgRXhlYwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5m
bygpKTsKICAgICB1c2luZyBHZXR0ZXJJRExUeXBlID0gSURMRE9NU3RyaW5nOwogICAgIGF1dG8g
Z2V0dGVyRnVuY3RvciA9IFtdIChhdXRvJiB0aGlzT2JqZWN0LCBhdXRvIHByb3BlcnR5TmFtZSkg
LT4gT3B0aW9uYWw8dHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlPiB7
Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHBy
b3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgICAgICBhdXRvIHJl
c3VsdCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21T
dHJpbmcocHJvcGVydHlOYW1lKSk7CiAgICAgICAgIGlmICghR2V0dGVySURMVHlwZTo6aXNOdWxs
VmFsdWUocmVzdWx0KSkKICAgICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBl
OjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVs
bGFibGUocmVzdWx0KSB9OwogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpAQCAtMTY4LDcg
KzE2OCw3IEBAIGJvb2wgSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXI6OmdldE93blBy
b3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqIG9iamVjCiAgICAgYXV0byBwcm9wZXJ0eU5hbWUg
PSBJZGVudGlmaWVyOjpmcm9tKHN0YXRlLCBpbmRleCk7CiAgICAgdXNpbmcgR2V0dGVySURMVHlw
ZSA9IElETERPTVN0cmluZzsKICAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSBbXSAoYXV0byYgdGhp
c09iamVjdCwgYXV0byBwcm9wZXJ0eU5hbWUpIC0+IE9wdGlvbmFsPHR5cGVuYW1lIEdldHRlcklE
TFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZT4gewotICAgICAgICBhdXRvIHJlc3VsdCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9w
ZXJ0eU5hbWUpKTsKKyAgICAgICAgYXV0byByZXN1bHQgPSB0aGlzT2JqZWN0LndyYXBwZWQoKS5u
YW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkpOwogICAgICAg
ICBpZiAoIUdldHRlcklETFR5cGU6OmlzTnVsbFZhbHVlKHJlc3VsdCkpCiAgICAgICAgICAgICBy
ZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsgR2V0dGVy
SURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVy
V2l0aEluZGV4ZWRHZXR0ZXIuY3BwCmluZGV4IDJmYjYyNGEwMTViNGJhNzg5OGQ5MDkyNTBiZDA3
NGM5MjBjYTZlM2UuLjk0OTJiNTdlZjdlZDFmOWNjZDQ4N2VlMzVmMjBlYWUzOTk4Y2U4NjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVy
LmNwcApAQCAtMTUxLDcgKzE1MSw3IEBAIGJvb2wgSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4
ZWRHZXR0ZXI6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFCiAgICAgfQog
ICAgIHVzaW5nIEdldHRlcklETFR5cGUgPSBJRExET01TdHJpbmc7CiAgICAgYXV0byBnZXR0ZXJG
dW5jdG9yID0gW10gKGF1dG8mIHRoaXNPYmplY3QsIGF1dG8gcHJvcGVydHlOYW1lKSAtPiBPcHRp
b25hbDx0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGU+IHsKLSAgICAg
ICAgYXV0byByZXN1bHQgPSB0aGlzT2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlO
YW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0g
dGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhw
cm9wZXJ0eU5hbWUpKTsKICAgICAgICAgaWYgKCFHZXR0ZXJJRExUeXBlOjppc051bGxWYWx1ZShy
ZXN1bHQpKQogICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxl
bWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShy
ZXN1bHQpIH07CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CkBAIC0xNzksNyArMTc5LDcg
QEAgYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcjo6Z2V0T3duUHJvcGVy
dHlTbG90QnlJbmRleChKU09iamVjdCogb2IKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50
aWZpZXI6OmZyb20oc3RhdGUsIGluZGV4KTsKICAgICB1c2luZyBHZXR0ZXJJRExUeXBlID0gSURM
RE9NU3RyaW5nOwogICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9IFtdIChhdXRvJiB0aGlzT2JqZWN0
LCBhdXRvIHByb3BlcnR5TmFtZSkgLT4gT3B0aW9uYWw8dHlwZW5hbWUgR2V0dGVySURMVHlwZTo6
SW1wbGVtZW50YXRpb25UeXBlPiB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gdGhpc09iamVjdC53
cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFt
ZSkpOworICAgICAgICBhdXRvIHJlc3VsdCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRl
bShwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSk7CiAgICAgICAgIGlmICgh
R2V0dGVySURMVHlwZTo6aXNOdWxsVmFsdWUocmVzdWx0KSkKICAgICAgICAgICAgIHJldHVybiB0
eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBl
OjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwogICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGguY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGguY3BwCmluZGV4
IGY1OTU5NjkwOTgwNTczMTgwZTg2MjQ2ZjE0ODNiZTlkMDMwOTBmMmUuLjEwZTRhNmI0YjYzNTNk
ZDA2MWUxMDE4NzNiM2RhNmI5Nzg3ZmE0ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0
ZXJDYWxsV2l0aC5jcHAKQEAgLTE0Miw3ICsxNDIsNyBAQCBib29sIEpTVGVzdE5hbWVkR2V0dGVy
Q2FsbFdpdGg6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUq
CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAg
IHVzaW5nIEdldHRlcklETFR5cGUgPSBJRExET01TdHJpbmc7CiAgICAgYXV0byBnZXR0ZXJGdW5j
dG9yID0gW10gKGF1dG8mIHRoaXNPYmplY3QsIGF1dG8gcHJvcGVydHlOYW1lKSAtPiBPcHRpb25h
bDx0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGU+IHsKLSAgICAgICAg
YXV0byByZXN1bHQgPSB0aGlzT2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0od29ybGRGb3JET01P
YmplY3QodGhpc09iamVjdCksIHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFt
ZSkpOworICAgICAgICBhdXRvIHJlc3VsdCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRl
bSh3b3JsZEZvckRPTU9iamVjdCh0aGlzT2JqZWN0KSwgcHJvcGVydHlOYW1lVG9BdG9tU3RyaW5n
KHByb3BlcnR5TmFtZSkpOwogICAgICAgICBpZiAoIUdldHRlcklETFR5cGU6OmlzTnVsbFZhbHVl
KHJlc3VsdCkpCiAgICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1w
bGVtZW50YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxl
KHJlc3VsdCkgfTsKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKQEAgLTE2Miw3ICsxNjIs
NyBAQCBib29sIEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGg6OmdldE93blByb3BlcnR5U2xvdEJ5
SW5kZXgoSlNPYmplY3QqIG9iamVjdCwgRXhlYwogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRl
bnRpZmllcjo6ZnJvbShzdGF0ZSwgaW5kZXgpOwogICAgIHVzaW5nIEdldHRlcklETFR5cGUgPSBJ
RExET01TdHJpbmc7CiAgICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gW10gKGF1dG8mIHRoaXNPYmpl
Y3QsIGF1dG8gcHJvcGVydHlOYW1lKSAtPiBPcHRpb25hbDx0eXBlbmFtZSBHZXR0ZXJJRExUeXBl
OjpJbXBsZW1lbnRhdGlvblR5cGU+IHsKLSAgICAgICAgYXV0byByZXN1bHQgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKS5uYW1lZEl0ZW0od29ybGRGb3JET01PYmplY3QodGhpc09iamVjdCksIHByb3Bl
cnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgICAgICBhdXRvIHJlc3Vs
dCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRlbSh3b3JsZEZvckRPTU9iamVjdCh0aGlz
T2JqZWN0KSwgcHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkpOwogICAgICAg
ICBpZiAoIUdldHRlcklETFR5cGU6OmlzTnVsbFZhbHVlKHJlc3VsdCkpCiAgICAgICAgICAgICBy
ZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsgR2V0dGVy
SURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50
aWZpZXIuY3BwCmluZGV4IGZhZTEwNGE4MzRjZDFkYjhhNGIyYTQxYTdjMTY3YzliN2JkMWY4YTUu
LmIyZGIyYWRhNDRmOTc3OThiOTFjMGQ4NmIwYzZmNWQzMzk5ZGVhOTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlck5v
SWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyLmNwcApAQCAtMTQyLDcgKzE0Miw3IEBA
IGJvb2wgSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXI6OmdldE93blByb3BlcnR5U2xvdChK
U09iamVjdCogb2JqZWN0LCBFeGVjU3RhCiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0
aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIHVzaW5nIEdldHRlcklETFR5cGUgPSBJRExET01TdHJp
bmc7CiAgICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gW10gKGF1dG8mIHRoaXNPYmplY3QsIGF1dG8g
cHJvcGVydHlOYW1lKSAtPiBPcHRpb25hbDx0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1l
bnRhdGlvblR5cGU+IHsKLSAgICAgICAgYXV0byByZXN1bHQgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7Cisg
ICAgICAgIGF1dG8gcmVzdWx0ID0gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3Bl
cnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpKTsKICAgICAgICAgaWYgKCFHZXR0ZXJJ
RExUeXBlOjppc051bGxWYWx1ZShyZXN1bHQpKQogICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1l
IEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJh
Y3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CkBAIC0xNjIsNyArMTYyLDcgQEAgYm9vbCBKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmll
cjo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCogb2JqZWN0LAogICAgIGF1dG8g
cHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbShzdGF0ZSwgaW5kZXgpOwogICAgIHVzaW5n
IEdldHRlcklETFR5cGUgPSBJRExET01TdHJpbmc7CiAgICAgYXV0byBnZXR0ZXJGdW5jdG9yID0g
W10gKGF1dG8mIHRoaXNPYmplY3QsIGF1dG8gcHJvcGVydHlOYW1lKSAtPiBPcHRpb25hbDx0eXBl
bmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGU+IHsKLSAgICAgICAgYXV0byBy
ZXN1bHQgPSB0aGlzT2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9t
aWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gdGhpc09iamVj
dC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5h
bWUpKTsKICAgICAgICAgaWYgKCFHZXR0ZXJJRExUeXBlOjppc051bGxWYWx1ZShyZXN1bHQpKQog
ICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9u
VHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07
CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmll
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKaW5kZXggOTE4YjJkNjFlYmQ2ZDIyZjcwNjIxNjRm
NjVkZDI0MWNhNDhiNDgxNC4uZGFhMjc5Zjk5ZjBhMmIxOGE3MTMxM2VjZDU2MzUyZjA1NDdlNzRh
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyLmNw
cApAQCAtMTQ4LDcgKzE0OCw3IEBAIGJvb2wgSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmll
cjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTCiAgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIHVzaW5nIEdldHRl
cklETFR5cGUgPSBJRExET01TdHJpbmc7CiAgICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gW10gKGF1
dG8mIHRoaXNPYmplY3QsIGF1dG8gcHJvcGVydHlOYW1lKSAtPiBPcHRpb25hbDx0eXBlbmFtZSBH
ZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGU+IHsKLSAgICAgICAgYXV0byByZXN1bHQg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKS5nZXR0ZXJOYW1lKHByb3BlcnR5TmFtZVRvQXRvbWljU3Ry
aW5nKHByb3BlcnR5TmFtZSkpOworICAgICAgICBhdXRvIHJlc3VsdCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpLmdldHRlck5hbWUocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkp
OwogICAgICAgICBpZiAoIUdldHRlcklETFR5cGU6OmlzTnVsbFZhbHVlKHJlc3VsdCkpCiAgICAg
ICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBl
IHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKQEAgLTE2OCw3ICsxNjgsNyBAQCBib29sIEpTVGVz
dE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXI6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNP
YmplY3QqIG9iamVjdAogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbShz
dGF0ZSwgaW5kZXgpOwogICAgIHVzaW5nIEdldHRlcklETFR5cGUgPSBJRExET01TdHJpbmc7CiAg
ICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gW10gKGF1dG8mIHRoaXNPYmplY3QsIGF1dG8gcHJvcGVy
dHlOYW1lKSAtPiBPcHRpb25hbDx0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlv
blR5cGU+IHsKLSAgICAgICAgYXV0byByZXN1bHQgPSB0aGlzT2JqZWN0LndyYXBwZWQoKS5nZXR0
ZXJOYW1lKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgICAg
ICBhdXRvIHJlc3VsdCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLmdldHRlck5hbWUocHJvcGVydHlO
YW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkpOwogICAgICAgICBpZiAoIUdldHRlcklETFR5
cGU6OmlzTnVsbFZhbHVlKHJlc3VsdCkpCiAgICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0
dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZh
bHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCmluZGV4IDAy
MWNlMWVhMTY3NDJkMzkxMGVhYjFlOTc1NmUxNjU1ZmJmNzU3YjEuLmRlNjE0MzhkMDNhODIxZGZm
MTRlOTlhNDMxZTE1YjhjZDAzODQzOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0
dGVyTm9JZGVudGlmaWVyLmNwcApAQCAtMTQyLDcgKzE0Miw3IEBAIGJvb2wgSlNUZXN0TmFtZWRT
ZXR0ZXJOb0lkZW50aWZpZXI6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhCiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkp
OwogICAgIHVzaW5nIEdldHRlcklETFR5cGUgPSBJRExET01TdHJpbmc7CiAgICAgYXV0byBnZXR0
ZXJGdW5jdG9yID0gW10gKGF1dG8mIHRoaXNPYmplY3QsIGF1dG8gcHJvcGVydHlOYW1lKSAtPiBP
cHRpb25hbDx0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGU+IHsKLSAg
ICAgICAgYXV0byByZXN1bHQgPSB0aGlzT2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVy
dHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgICAgIGF1dG8gcmVzdWx0
ID0gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0cmlu
Zyhwcm9wZXJ0eU5hbWUpKTsKICAgICAgICAgaWYgKCFHZXR0ZXJJRExUeXBlOjppc051bGxWYWx1
ZShyZXN1bHQpKQogICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6Oklt
cGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJs
ZShyZXN1bHQpIH07CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CkBAIC0xNjIsNyArMTYy
LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllcjo6Z2V0T3duUHJvcGVydHlT
bG90QnlJbmRleChKU09iamVjdCogb2JqZWN0LAogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRl
bnRpZmllcjo6ZnJvbShzdGF0ZSwgaW5kZXgpOwogICAgIHVzaW5nIEdldHRlcklETFR5cGUgPSBJ
RExET01TdHJpbmc7CiAgICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gW10gKGF1dG8mIHRoaXNPYmpl
Y3QsIGF1dG8gcHJvcGVydHlOYW1lKSAtPiBPcHRpb25hbDx0eXBlbmFtZSBHZXR0ZXJJRExUeXBl
OjpJbXBsZW1lbnRhdGlvblR5cGU+IHsKLSAgICAgICAgYXV0byByZXN1bHQgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlO
YW1lKSk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJ
dGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpKTsKICAgICAgICAgaWYg
KCFHZXR0ZXJJRExUeXBlOjppc051bGxWYWx1ZShyZXN1bHQpKQogICAgICAgICAgICAgcmV0dXJu
IHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5
cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07CiAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2lu
Z0V4Y2VwdGlvbi5jcHAKaW5kZXggMDUyYTFhMjI4MjVhYjRkNjA5OWI4ZGI2ZGExOGQ1MTc0ZDUw
YmEwMS4uZmY5NTE4MmQ5MWRmZGQyNDM0YmI1ZmEwNTlmYWNhMDRkMmI4MzY1ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0
dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcApAQCAt
MTQyLDcgKzE0Miw3IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6
Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4CiAgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIHVzaW5nIEdldHRlcklETFR5
cGUgPSBJRExET01TdHJpbmc7CiAgICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gW10gKGF1dG8mIHRo
aXNPYmplY3QsIGF1dG8gcHJvcGVydHlOYW1lKSAtPiBPcHRpb25hbDx0eXBlbmFtZSBHZXR0ZXJJ
RExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGU+IHsKLSAgICAgICAgYXV0byByZXN1bHQgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJv
cGVydHlOYW1lKSk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gdGhpc09iamVjdC53cmFwcGVkKCku
bmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpKTsKICAgICAg
ICAgaWYgKCFHZXR0ZXJJRExUeXBlOjppc051bGxWYWx1ZShyZXN1bHQpKQogICAgICAgICAgICAg
cmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRl
cklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07CiAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CkBAIC0xNjIsNyArMTYyLDcgQEAgYm9vbCBKU1Rlc3ROYW1lZFNl
dHRlclRocm93aW5nRXhjZXB0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0
KiBvYmoKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20oc3RhdGUsIGlu
ZGV4KTsKICAgICB1c2luZyBHZXR0ZXJJRExUeXBlID0gSURMRE9NU3RyaW5nOwogICAgIGF1dG8g
Z2V0dGVyRnVuY3RvciA9IFtdIChhdXRvJiB0aGlzT2JqZWN0LCBhdXRvIHByb3BlcnR5TmFtZSkg
LT4gT3B0aW9uYWw8dHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlPiB7
Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHBy
b3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgICAgICBhdXRvIHJl
c3VsdCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21T
dHJpbmcocHJvcGVydHlOYW1lKSk7CiAgICAgICAgIGlmICghR2V0dGVySURMVHlwZTo6aXNOdWxs
VmFsdWUocmVzdWx0KSkKICAgICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBl
OjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVs
bGFibGUocmVzdWx0KSB9OwogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0
dGVyV2l0aElkZW50aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCmluZGV4IDBiOGY1ZGUx
Y2FjNjQxYWJkZjBmNjkwYmQ4MmRiYjA1ZDNmMjlhNzEuLmY1ZmI4YjI3Y2IwNWU0OGFlYzgwNDgx
ZWIwNmRmN2I1ZjE2MTcxYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoSWRlbnRpZmllci5jcHAKQEAgLTE0OCw3ICsxNDgsNyBAQCBib29sIEpTVGVzdE5hbWVkU2V0
dGVyV2l0aElkZW50aWZpZXI6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBF
eGVjUwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsK
ICAgICB1c2luZyBHZXR0ZXJJRExUeXBlID0gSURMRE9NU3RyaW5nOwogICAgIGF1dG8gZ2V0dGVy
RnVuY3RvciA9IFtdIChhdXRvJiB0aGlzT2JqZWN0LCBhdXRvIHByb3BlcnR5TmFtZSkgLT4gT3B0
aW9uYWw8dHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlPiB7Ci0gICAg
ICAgIGF1dG8gcmVzdWx0ID0gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5
TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgICAgICBhdXRvIHJlc3VsdCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmco
cHJvcGVydHlOYW1lKSk7CiAgICAgICAgIGlmICghR2V0dGVySURMVHlwZTo6aXNOdWxsVmFsdWUo
cmVzdWx0KSkKICAgICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBs
ZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUo
cmVzdWx0KSB9OwogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpAQCAtMTY4LDcgKzE2OCw3
IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6Z2V0T3duUHJvcGVydHlT
bG90QnlJbmRleChKU09iamVjdCogb2JqZWN0CiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVu
dGlmaWVyOjpmcm9tKHN0YXRlLCBpbmRleCk7CiAgICAgdXNpbmcgR2V0dGVySURMVHlwZSA9IElE
TERPTVN0cmluZzsKICAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSBbXSAoYXV0byYgdGhpc09iamVj
dCwgYXV0byBwcm9wZXJ0eU5hbWUpIC0+IE9wdGlvbmFsPHR5cGVuYW1lIEdldHRlcklETFR5cGU6
OkltcGxlbWVudGF0aW9uVHlwZT4gewotICAgICAgICBhdXRvIHJlc3VsdCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5h
bWUpKTsKKyAgICAgICAgYXV0byByZXN1bHQgPSB0aGlzT2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0
ZW0ocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkpOwogICAgICAgICBpZiAo
IUdldHRlcklETFR5cGU6OmlzTnVsbFZhbHVlKHJlc3VsdCkpCiAgICAgICAgICAgICByZXR1cm4g
dHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsgR2V0dGVySURMVHlw
ZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRl
eGVkR2V0dGVyLmNwcAppbmRleCAwOTBkYTE2M2ZjNTIwOTMxNzFjYjRmZGMwNGFiZDZiZWI4NTc3
ODUwLi44MGViNTUyNTYyMWNkZWZiZGM5OGViNWRhNTAyOTBkMzhhOGQ3NGYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCkBAIC0x
NjAsNyArMTYwLDcgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyOjpn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXgKICAgICB9CiAgICAgdXNpbmcg
R2V0dGVySURMVHlwZSA9IElETERPTVN0cmluZzsKICAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSBb
XSAoYXV0byYgdGhpc09iamVjdCwgYXV0byBwcm9wZXJ0eU5hbWUpIC0+IE9wdGlvbmFsPHR5cGVu
YW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZT4gewotICAgICAgICBhdXRvIHJl
c3VsdCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21p
Y1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAgICAgICAgYXV0byByZXN1bHQgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFt
ZSkpOwogICAgICAgICBpZiAoIUdldHRlcklETFR5cGU6OmlzTnVsbFZhbHVlKHJlc3VsdCkpCiAg
ICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25U
eXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsK
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKQEAgLTE4OCw3ICsxODgsNyBAQCBib29sIEpT
VGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI6OmdldE93blByb3BlcnR5U2xvdEJ5SW5k
ZXgoSlNPYmplY3QqIG9iagogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJv
bShzdGF0ZSwgaW5kZXgpOwogICAgIHVzaW5nIEdldHRlcklETFR5cGUgPSBJRExET01TdHJpbmc7
CiAgICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gW10gKGF1dG8mIHRoaXNPYmplY3QsIGF1dG8gcHJv
cGVydHlOYW1lKSAtPiBPcHRpb25hbDx0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRh
dGlvblR5cGU+IHsKLSAgICAgICAgYXV0byByZXN1bHQgPSB0aGlzT2JqZWN0LndyYXBwZWQoKS5u
YW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAg
ICAgIGF1dG8gcmVzdWx0ID0gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5
TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpKTsKICAgICAgICAgaWYgKCFHZXR0ZXJJRExU
eXBlOjppc051bGxWYWx1ZShyZXN1bHQpKQogICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdl
dHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RW
YWx1ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhl
ZEdldHRlckFuZFNldHRlci5jcHAKaW5kZXggNWQwYmEyM2M0NzZjOWM2MjE1YjJjZTdlMTE1ZjM1
NTk4MzljYWYyYy4uOGUxNWZkZjlkMTBmMTA2OTllMDU3NWQ4OWE3OGNmNmEwMjdhOGQ0OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVk
R2V0dGVyQW5kU2V0dGVyLmNwcApAQCAtMTYwLDcgKzE2MCw3IEBAIGJvb2wgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlcjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2Jq
ZWN0KiBvCiAgICAgfQogICAgIHVzaW5nIEdldHRlcklETFR5cGUgPSBJRExET01TdHJpbmc7CiAg
ICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gW10gKGF1dG8mIHRoaXNPYmplY3QsIGF1dG8gcHJvcGVy
dHlOYW1lKSAtPiBPcHRpb25hbDx0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlv
blR5cGU+IHsKLSAgICAgICAgYXV0byByZXN1bHQgPSB0aGlzT2JqZWN0LndyYXBwZWQoKS5uYW1l
ZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgICAg
IGF1dG8gcmVzdWx0ID0gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFt
ZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpKTsKICAgICAgICAgaWYgKCFHZXR0ZXJJRExUeXBl
Ojppc051bGxWYWx1ZShyZXN1bHQpKQogICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRl
cklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1
ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CkBA
IC0xODgsNyArMTg4LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVy
QW5kU2V0dGVyOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2IKICAgICBhdXRvIHByb3Bl
cnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20oc3RhdGUsIGluZGV4KTsKICAgICB1c2luZyBHZXR0
ZXJJRExUeXBlID0gSURMRE9NU3RyaW5nOwogICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9IFtdIChh
dXRvJiB0aGlzT2JqZWN0LCBhdXRvIHByb3BlcnR5TmFtZSkgLT4gT3B0aW9uYWw8dHlwZW5hbWUg
R2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlPiB7Ci0gICAgICAgIGF1dG8gcmVzdWx0
ID0gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbWljU3Ry
aW5nKHByb3BlcnR5TmFtZSkpOworICAgICAgICBhdXRvIHJlc3VsdCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSk7
CiAgICAgICAgIGlmICghR2V0dGVySURMVHlwZTo6aXNOdWxsVmFsdWUocmVzdWx0KSkKICAgICAg
ICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUg
eyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwogICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRp
bnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMuY3BwCmluZGV4IGYyNzYyOWM3YmJiM2EyYjg4
YmI1NTZkMDllNzU0NTM2ZWI3YzQwMGUuLjUzYjEzN2JmZTNiYjYwZWVlNzZiNTA0MGI1ZTZjYWYx
ZGJhYTE3NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
T3ZlcnJpZGVCdWlsdGlucy5jcHAKQEAgLTE0Miw3ICsxNDIsNyBAQCBib29sIEpTVGVzdE5hbWVk
U2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnM6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCog
b2JqZWN0LAogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygp
KTsKICAgICB1c2luZyBHZXR0ZXJJRExUeXBlID0gSURMRE9NU3RyaW5nOwogICAgIGF1dG8gZ2V0
dGVyRnVuY3RvciA9IFtdIChhdXRvJiB0aGlzT2JqZWN0LCBhdXRvIHByb3BlcnR5TmFtZSkgLT4g
T3B0aW9uYWw8dHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlPiB7Ci0g
ICAgICAgIGF1dG8gcmVzdWx0ID0gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3Bl
cnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgICAgICBhdXRvIHJlc3Vs
dCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJp
bmcocHJvcGVydHlOYW1lKSk7CiAgICAgICAgIGlmICghR2V0dGVySURMVHlwZTo6aXNOdWxsVmFs
dWUocmVzdWx0KSkKICAgICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJ
bXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFi
bGUocmVzdWx0KSB9OwogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpAQCAtMTYyLDcgKzE2
Miw3IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluczo6Z2V0T3du
UHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCoKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElk
ZW50aWZpZXI6OmZyb20oc3RhdGUsIGluZGV4KTsKICAgICB1c2luZyBHZXR0ZXJJRExUeXBlID0g
SURMRE9NU3RyaW5nOwogICAgIGF1dG8gZ2V0dGVyRnVuY3RvciA9IFtdIChhdXRvJiB0aGlzT2Jq
ZWN0LCBhdXRvIHByb3BlcnR5TmFtZSkgLT4gT3B0aW9uYWw8dHlwZW5hbWUgR2V0dGVySURMVHlw
ZTo6SW1wbGVtZW50YXRpb25UeXBlPiB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gdGhpc09iamVj
dC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5
TmFtZSkpOworICAgICAgICBhdXRvIHJlc3VsdCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVk
SXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSk7CiAgICAgICAgIGlm
ICghR2V0dGVySURMVHlwZTo6aXNOdWxsVmFsdWUocmVzdWx0KSkKICAgICAgICAgICAgIHJldHVy
biB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGUgeyBHZXR0ZXJJRExU
eXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwogICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRl
cldpdGhVbmZvcmdhYmxlUHJvcGVydGllcy5jcHAKaW5kZXggZDRkOTczOGNkYjAxYjg0MjZiNjYz
YzIxZmM4Mjk4ZjE0NGJhMjYzNy4uYmM5YTQxZjI2MWU1Nzc4NTY3OWY1MGI2MzZkMGZmNGRiODc4
MmExMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
VW5mb3JnYWJsZVByb3BlcnRpZXMuY3BwCkBAIC0xNjYsNyArMTY2LDcgQEAgYm9vbCBKU1Rlc3RO
YW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllczo6Z2V0T3duUHJvcGVydHlTbG90KEpT
T2JqZWN0KiBvYmoKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGlu
Zm8oKSk7CiAgICAgdXNpbmcgR2V0dGVySURMVHlwZSA9IElETERPTVN0cmluZzsKICAgICBhdXRv
IGdldHRlckZ1bmN0b3IgPSBbXSAoYXV0byYgdGhpc09iamVjdCwgYXV0byBwcm9wZXJ0eU5hbWUp
IC0+IE9wdGlvbmFsPHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZT4g
ewotICAgICAgICBhdXRvIHJlc3VsdCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRlbShw
cm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAgICAgICAgYXV0byBy
ZXN1bHQgPSB0aGlzT2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9t
U3RyaW5nKHByb3BlcnR5TmFtZSkpOwogICAgICAgICBpZiAoIUdldHRlcklETFR5cGU6OmlzTnVs
bFZhbHVlKHJlc3VsdCkpCiAgICAgICAgICAgICByZXR1cm4gdHlwZW5hbWUgR2V0dGVySURMVHlw
ZTo6SW1wbGVtZW50YXRpb25UeXBlIHsgR2V0dGVySURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51
bGxhYmxlKHJlc3VsdCkgfTsKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKQEAgLTE4Niw3
ICsxODYsNyBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVz
OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZQogICAgIGF1dG8gcHJvcGVydHlOYW1l
ID0gSWRlbnRpZmllcjo6ZnJvbShzdGF0ZSwgaW5kZXgpOwogICAgIHVzaW5nIEdldHRlcklETFR5
cGUgPSBJRExET01TdHJpbmc7CiAgICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gW10gKGF1dG8mIHRo
aXNPYmplY3QsIGF1dG8gcHJvcGVydHlOYW1lKSAtPiBPcHRpb25hbDx0eXBlbmFtZSBHZXR0ZXJJ
RExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGU+IHsKLSAgICAgICAgYXV0byByZXN1bHQgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJv
cGVydHlOYW1lKSk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gdGhpc09iamVjdC53cmFwcGVkKCku
bmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpKTsKICAgICAg
ICAgaWYgKCFHZXR0ZXJJRExUeXBlOjppc051bGxWYWx1ZShyZXN1bHQpKQogICAgICAgICAgICAg
cmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZSB7IEdldHRl
cklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07CiAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNB
bmRPdmVycmlkZUJ1aWx0aW5zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJy
aWRlQnVpbHRpbnMuY3BwCmluZGV4IGNlNTllNzQ5YzI3M2UwMWM0NDA5ZjY2NTNhZjVkZmE4ZDA0
ZDJhMzQuLjE5ODc4M2ViOWYxYzQwYWM3MTBkYTk4NWJjMTdiN2YyYWEyNTQxMWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNl
dHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRl
cldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMuY3BwCkBAIC0xNjYs
NyArMTY2LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGll
c0FuZE92ZXJyaWRlQnVpbHRpbnM6OmdldE93blByb3BlcnQKICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgdXNpbmcgR2V0dGVySURMVHlwZSA9
IElETERPTVN0cmluZzsKICAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSBbXSAoYXV0byYgdGhpc09i
amVjdCwgYXV0byBwcm9wZXJ0eU5hbWUpIC0+IE9wdGlvbmFsPHR5cGVuYW1lIEdldHRlcklETFR5
cGU6OkltcGxlbWVudGF0aW9uVHlwZT4gewotICAgICAgICBhdXRvIHJlc3VsdCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0
eU5hbWUpKTsKKyAgICAgICAgYXV0byByZXN1bHQgPSB0aGlzT2JqZWN0LndyYXBwZWQoKS5uYW1l
ZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkpOwogICAgICAgICBp
ZiAoIUdldHRlcklETFR5cGU6OmlzTnVsbFZhbHVlKHJlc3VsdCkpCiAgICAgICAgICAgICByZXR1
cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsgR2V0dGVySURM
VHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKQEAgLTE4Niw3ICsxODYsNyBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVy
V2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluczo6Z2V0T3duUHJvcGVy
dAogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbShzdGF0ZSwgaW5kZXgp
OwogICAgIHVzaW5nIEdldHRlcklETFR5cGUgPSBJRExET01TdHJpbmc7CiAgICAgYXV0byBnZXR0
ZXJGdW5jdG9yID0gW10gKGF1dG8mIHRoaXNPYmplY3QsIGF1dG8gcHJvcGVydHlOYW1lKSAtPiBP
cHRpb25hbDx0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGU+IHsKLSAg
ICAgICAgYXV0byByZXN1bHQgPSB0aGlzT2JqZWN0LndyYXBwZWQoKS5uYW1lZEl0ZW0ocHJvcGVy
dHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgICAgIGF1dG8gcmVzdWx0
ID0gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbVN0cmlu
Zyhwcm9wZXJ0eU5hbWUpKTsKICAgICAgICAgaWYgKCFHZXR0ZXJJRExUeXBlOjppc051bGxWYWx1
ZShyZXN1bHQpKQogICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEdldHRlcklETFR5cGU6Oklt
cGxlbWVudGF0aW9uVHlwZSB7IEdldHRlcklETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJs
ZShyZXN1bHQpIH07CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4
IDVkZjczYmY0NTE1MDdmMjBkOTE2ZmQxMWNmOTIwM2FmOTE0MGZjNDIuLmM3ODFjODY2NDljN2Mz
YTU0NDE4ZTkwM2YyMjEwOTY2ODcxODcyMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCkBAIC02NDUzLDcgKzY0NTMs
NyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdAogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7Ci0gICAgYXV0byBzdHIgPSBzdGF0ZS0+YXJndW1lbnQoMCkuaXNVbmRlZmlu
ZWQoKSA/IG51bGxBdG9tKCkgOiBjb252ZXJ0PElETEF0b21pY1N0cmluZ0FkYXB0b3I8SURMRE9N
U3RyaW5nPj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOworICAgIGF1dG8g
c3RyID0gc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkKCkgPyBudWxsQXRvbSgpIDogY29u
dmVydDxJRExBdG9tU3RyaW5nQWRhcHRvcjxJRExET01TdHJpbmc+Pigqc3RhdGUsIHN0YXRlLT51
bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbEF0b21pY1N0
cmluZyhXVEZNb3ZlKHN0cikpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CkBAIC02NDg1LDcgKzY0ODUsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdAogICAg
IFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgYXV0byBzdHIgPSBzdGF0
ZS0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWQoKSA/IEF0b21pY1N0cmluZygiZm9vIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkgOiBjb252ZXJ0PElETEF0b21pY1N0cmluZ0Fk
YXB0b3I8SURMRE9NU3RyaW5nPj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkp
OworICAgIGF1dG8gc3RyID0gc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkKCkgPyBBdG9t
U3RyaW5nKCJmb28iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkgOiBjb252ZXJ0
PElETEF0b21TdHJpbmdBZGFwdG9yPElETERPTVN0cmluZz4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hl
Y2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwogICAgIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsQXRvbWljU3RyaW5n
QW5kRGVmYXVsdFZhbHVlKFdURk1vdmUoc3RyKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKQEAgLTY1MzMsNyArNjUzMyw3IEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRp
b25hbEF0CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICBhdXRv
IHN0ciA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gbnVsbEF0b20oKSA6IGNv
bnZlcnQ8SURMQXRvbWljU3RyaW5nQWRhcHRvcjxJRExET01TdHJpbmc+Pigqc3RhdGUsIHN0YXRl
LT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CisgICAgYXV0byBzdHIgPSBzdGF0ZS0+YXJndW1lbnQo
MCkuaXNVbmRlZmluZWQoKSA/IG51bGxBdG9tKCkgOiBjb252ZXJ0PElETEF0b21TdHJpbmdBZGFw
dG9yPElETERPTVN0cmluZz4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwog
ICAgIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsQXRvbWljU3RyaW5nSXNOdWxsKFdURk1vdmUoc3Ry
KSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTY1ODEs
NyArNjU4MSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0CiAgICAgVU5VU0VEX1BBUkFNKHN0
YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICBhdXRvIHN0ciA9IHN0YXRlLT5hcmd1bWVudCgwKS5p
c1VuZGVmaW5lZCgpID8gZW1wdHlBdG9tKCkgOiBjb252ZXJ0PElETEF0b21pY1N0cmluZ0FkYXB0
b3I8SURMRE9NU3RyaW5nPj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwor
ICAgIGF1dG8gc3RyID0gc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkKCkgPyBlbXB0eUF0
b20oKSA6IGNvbnZlcnQ8SURMQXRvbVN0cmluZ0FkYXB0b3I8SURMRE9NU3RyaW5nPj4oKnN0YXRl
LCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgaW1wbC5tZXRob2RXaXRoT3B0aW9u
YWxBdG9taWNTdHJpbmdJc0VtcHR5U3RyaW5nKFdURk1vdmUoc3RyKSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTc4NjMsNyArNzg2Myw3IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkdl
dEVsZW1lbnRCeUlkQm9keShKCiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hB
cmd1bWVudHNFcnJvcihzdGF0ZSkpOwotICAgIGF1dG8gZWxlbWVudElkID0gY29udmVydDxJRExS
ZXF1aXJlc0V4aXN0aW5nQXRvbWljU3RyaW5nQWRhcHRvcjxJRExET01TdHJpbmc+Pigqc3RhdGUs
IHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CisgICAgYXV0byBlbGVtZW50SWQgPSBjb252
ZXJ0PElETFJlcXVpcmVzRXhpc3RpbmdBdG9tU3RyaW5nQWRhcHRvcjxJRExET01TdHJpbmc+Pigq
c3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRvSlM8SURMTnVsbGFibGU8SURMSW50ZXJmYWNlPEVsZW1lbnQ+Pj4oKnN0YXRlLCAq
Y2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwuZ2V0RWxlbWVudEJ5SWQoV1RGTW92ZShl
bGVtZW50SWQpKSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuY3BwCmluZGV4
IDliNWEwMjcyMzE2Yzc1ODNhZjMyN2MyYmFlOTdmNTJjNzljYzgzOTkuLjMwYzc5MTJhZGI2YzM4
ZDMwMDQ1OTU1Mzg0ZTMwMGJmNTMwZGQyMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWls
dGlucy5jcHAKQEAgLTE1MSw3ICsxNTEsNyBAQCBib29sIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6
OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIHN0YQogICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICB1c2lu
ZyBHZXR0ZXJJRExUeXBlID0gSURMSW50ZXJmYWNlPE5vZGU+OwogICAgIGF1dG8gZ2V0dGVyRnVu
Y3RvciA9IFtdIChhdXRvJiB0aGlzT2JqZWN0LCBhdXRvIHByb3BlcnR5TmFtZSkgLT4gT3B0aW9u
YWw8dHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlPiB7Ci0gICAgICAg
IGF1dG8gcmVzdWx0ID0gdGhpc09iamVjdC53cmFwcGVkKCkubmFtZWRJdGVtKHByb3BlcnR5TmFt
ZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgICAgICBhdXRvIHJlc3VsdCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJv
cGVydHlOYW1lKSk7CiAgICAgICAgIGlmICghR2V0dGVySURMVHlwZTo6aXNOdWxsVmFsdWUocmVz
dWx0KSkKICAgICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBHZXR0ZXJJRExUeXBlOjpJbXBsZW1l
bnRhdGlvblR5cGUgeyBHZXR0ZXJJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVz
dWx0KSB9OwogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpAQCAtMTcxLDcgKzE3MSw3IEBA
IGJvb2wgSlNUZXN0T3ZlcnJpZGVCdWlsdGluczo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChK
U09iamVjdCogb2JqZWN0LCBFeGVjU3RhCiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlm
aWVyOjpmcm9tKHN0YXRlLCBpbmRleCk7CiAgICAgdXNpbmcgR2V0dGVySURMVHlwZSA9IElETElu
dGVyZmFjZTxOb2RlPjsKICAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSBbXSAoYXV0byYgdGhpc09i
amVjdCwgYXV0byBwcm9wZXJ0eU5hbWUpIC0+IE9wdGlvbmFsPHR5cGVuYW1lIEdldHRlcklETFR5
cGU6OkltcGxlbWVudGF0aW9uVHlwZT4gewotICAgICAgICBhdXRvIHJlc3VsdCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0
eU5hbWUpKTsKKyAgICAgICAgYXV0byByZXN1bHQgPSB0aGlzT2JqZWN0LndyYXBwZWQoKS5uYW1l
ZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkpOwogICAgICAgICBp
ZiAoIUdldHRlcklETFR5cGU6OmlzTnVsbFZhbHVlKHJlc3VsdCkpCiAgICAgICAgICAgICByZXR1
cm4gdHlwZW5hbWUgR2V0dGVySURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlIHsgR2V0dGVySURM
VHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKHJlc3VsdCkgfTsKICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9UZXN0RE9NSklULmlkbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9UZXN0RE9NSklULmlkbAppbmRleCBhYzRlYTY2Njg3YWU3OGM1MjUwMTA5OTBiZjkxMGQ3
ZDhjMzcwZWM3Li5jNjAyZjU5YjA4MmYwMzk2NzJiMWFjMGUzYWMxMzlkZjk3OWFjMjY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdERPTUpJVC5p
ZGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RET01KSVQu
aWRsCkBAIC02Nyw2ICs2Nyw2IEBAIGludGVyZmFjZSBUZXN0RE9NSklUIDogTm9kZSB7CiAgICAg
W0RPTUpJVD1SZWFkRE9NXSBET01TdHJpbmc/IGdldEF0dHJpYnV0ZShET01TdHJpbmcgbmFtZSk7
CiAgICAgW0RPTUpJVD1SZWFkRE9NXSBET01TdHJpbmcgaXRlbSh1bnNpZ25lZCBzaG9ydCB4LCB1
bnNpZ25lZCBzaG9ydCB5KTsKICAgICBbRE9NSklUPVJlYWRET01dIGJvb2xlYW4gaGFzQXR0cmli
dXRlKCk7Ci0gICAgW0RPTUpJVD1SZWFkRE9NXSBFbGVtZW50IGdldEVsZW1lbnRCeUlkKFtSZXF1
aXJlc0V4aXN0aW5nQXRvbWljU3RyaW5nXSBET01TdHJpbmcgZWxlbWVudElkKTsKLSAgICBbRE9N
SklUPVJlYWRET01dIE5vZGVMaXN0IGdldEVsZW1lbnRzQnlOYW1lKFtBdG9taWNTdHJpbmddIERP
TVN0cmluZyBlbGVtZW50TmFtZSk7CisgICAgW0RPTUpJVD1SZWFkRE9NXSBFbGVtZW50IGdldEVs
ZW1lbnRCeUlkKFtSZXF1aXJlc0V4aXN0aW5nQXRvbVN0cmluZ10gRE9NU3RyaW5nIGVsZW1lbnRJ
ZCk7CisgICAgW0RPTUpJVD1SZWFkRE9NXSBOb2RlTGlzdCBnZXRFbGVtZW50c0J5TmFtZShbQXRv
bVN0cmluZ10gRE9NU3RyaW5nIGVsZW1lbnROYW1lKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKaW5kZXggMjc3MTc1MjIxNGM5ZTY1
YWUxZGUwNmMwZDU4MGRkZmZkYjIwODIwNS4uMDg3MmE5ZjUxMzJiNjdkY2E2MTQ0ZmU2ZjM0M2Q4
ZjIyYWM3MzgyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Rlc3RPYmouaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9UZXN0T2JqLmlkbApAQCAtMjIwLDE1ICsyMjAsMTUgQEAgZW51bSBUZXN0Q29uZmlkZW5jZSB7
ICJoaWdoIiwgImtpbmRhLWxvdyIgfTsKICAgICB2b2lkICAgIG1ldGhvZFdpdGhOb25PcHRpb25h
bEFyZ0FuZFR3b09wdGlvbmFsQXJncyhsb25nIG5vbk9wdCwgb3B0aW9uYWwgbG9uZyBvcHQxLCBv
cHRpb25hbCBsb25nIG9wdDIpOwogICAgIHZvaWQgICAgbWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5n
KG9wdGlvbmFsIERPTVN0cmluZyBzdHIpOwogICAgIHZvaWQgICAgbWV0aG9kV2l0aE9wdGlvbmFs
VVNWU3RyaW5nKG9wdGlvbmFsIFVTVlN0cmluZyBzdHIpOwotICAgIHZvaWQgICAgbWV0aG9kV2l0
aE9wdGlvbmFsQXRvbWljU3RyaW5nKG9wdGlvbmFsIFtBdG9taWNTdHJpbmddIERPTVN0cmluZyBz
dHIpOworICAgIHZvaWQgICAgbWV0aG9kV2l0aE9wdGlvbmFsQXRvbWljU3RyaW5nKG9wdGlvbmFs
IFtBdG9tU3RyaW5nXSBET01TdHJpbmcgc3RyKTsKICAgICB2b2lkICAgIG1ldGhvZFdpdGhPcHRp
b25hbFN0cmluZ0FuZERlZmF1bHRWYWx1ZShvcHRpb25hbCBET01TdHJpbmcgc3RyID0gImZvbyIp
OwotICAgIHZvaWQgICAgbWV0aG9kV2l0aE9wdGlvbmFsQXRvbWljU3RyaW5nQW5kRGVmYXVsdFZh
bHVlKG9wdGlvbmFsIFtBdG9taWNTdHJpbmddIERPTVN0cmluZyBzdHIgPSAiZm9vIik7CisgICAg
dm9pZCAgICBtZXRob2RXaXRoT3B0aW9uYWxBdG9taWNTdHJpbmdBbmREZWZhdWx0VmFsdWUob3B0
aW9uYWwgW0F0b21TdHJpbmddIERPTVN0cmluZyBzdHIgPSAiZm9vIik7CiAgICAgdm9pZCAgICBt
ZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc051bGwob3B0aW9uYWwgRE9NU3RyaW5nIHN0ciA9IG51
bGwpOwogICAgIHZvaWQgICAgbWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNVbmRlZmluZWQob3B0
aW9uYWwgRE9NU3RyaW5nIHN0ciA9ICJ1bmRlZmluZWQiKTsKLSAgICB2b2lkICAgIG1ldGhvZFdp
dGhPcHRpb25hbEF0b21pY1N0cmluZ0lzTnVsbChvcHRpb25hbCBbQXRvbWljU3RyaW5nXSBET01T
dHJpbmcgc3RyID0gbnVsbCk7CisgICAgdm9pZCAgICBtZXRob2RXaXRoT3B0aW9uYWxBdG9taWNT
dHJpbmdJc051bGwob3B0aW9uYWwgW0F0b21TdHJpbmddIERPTVN0cmluZyBzdHIgPSBudWxsKTsK
ICAgICB2b2lkICAgIG1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzRW1wdHlTdHJpbmcob3B0aW9u
YWwgRE9NU3RyaW5nIHN0ciA9ICIiKTsKICAgICB2b2lkICAgIG1ldGhvZFdpdGhPcHRpb25hbFVT
VlN0cmluZ0lzRW1wdHlTdHJpbmcob3B0aW9uYWwgVVNWU3RyaW5nIHN0ciA9ICIiKTsKLSAgICB2
b2lkICAgIG1ldGhvZFdpdGhPcHRpb25hbEF0b21pY1N0cmluZ0lzRW1wdHlTdHJpbmcob3B0aW9u
YWwgW0F0b21pY1N0cmluZ10gRE9NU3RyaW5nIHN0ciA9ICIiKTsKKyAgICB2b2lkICAgIG1ldGhv
ZFdpdGhPcHRpb25hbEF0b21pY1N0cmluZ0lzRW1wdHlTdHJpbmcob3B0aW9uYWwgW0F0b21TdHJp
bmddIERPTVN0cmluZyBzdHIgPSAiIik7CiAgICAgdm9pZCAgICBtZXRob2RXaXRoT3B0aW9uYWxE
b3VibGVJc05hTihvcHRpb25hbCB1bnJlc3RyaWN0ZWQgZG91YmxlIG51bWJlciA9IE5hTik7CiAg
ICAgdm9pZCAgICBtZXRob2RXaXRoT3B0aW9uYWxGbG9hdElzTmFOKG9wdGlvbmFsIHVucmVzdHJp
Y3RlZCBmbG9hdCBudW1iZXIgPSBOYU4pOwogICAgIHZvaWQgICAgbWV0aG9kV2l0aE9wdGlvbmFs
TG9uZ0xvbmcob3B0aW9uYWwgbG9uZyBsb25nIG51bWJlcik7CkBAIC0zNDQsNyArMzQ0LDcgQEAg
ZW51bSBUZXN0Q29uZmlkZW5jZSB7ICJoaWdoIiwgImtpbmRhLWxvdyIgfTsKIAogICAgIHZvaWQg
bWV0aG9kV2l0aEFuZFdpdGhvdXROdWxsYWJsZVNlcXVlbmNlKHNlcXVlbmNlPHVuc2lnbmVkIGxv
bmc+IGFycmF5QXJnLCBzZXF1ZW5jZTx1bnNpZ25lZCBsb25nPj8gbnVsbGFibGVBcnJheUFyZyk7
CiAKLSAgICBFbGVtZW50PyBnZXRFbGVtZW50QnlJZChbUmVxdWlyZXNFeGlzdGluZ0F0b21pY1N0
cmluZ10gRE9NU3RyaW5nIGVsZW1lbnRJZCk7CisgICAgRWxlbWVudD8gZ2V0RWxlbWVudEJ5SWQo
W1JlcXVpcmVzRXhpc3RpbmdBdG9tU3RyaW5nXSBET01TdHJpbmcgZWxlbWVudElkKTsKIAogICAg
IFtDaGVja1NlY3VyaXR5Rm9yTm9kZV0gcmVhZG9ubHkgYXR0cmlidXRlIERvY3VtZW50IGNvbnRl
bnREb2N1bWVudDsKICAgICBbQ2hlY2tTZWN1cml0eUZvck5vZGUsIE1heVRocm93RXhjZXB0aW9u
XSBTVkdEb2N1bWVudCBnZXRTVkdEb2N1bWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblBhcnNlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcAppbmRl
eCA3NzIzYTJmYTU5ZDNhOThlM2U2YTE2N2M3ZDI2YjIyOWMyMzVkYTc2Li4wNjdjOTg5MmM0MWY4
OGQyY2ZkODQzNDkyZTRjOWJhODY4OGQ1NzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
b250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcApAQCAt
MjMxLDcgKzIzMSw3IEBAIHN0YXRpYyBFeHBlY3RlZDxUcmlnZ2VyLCBzdGQ6OmVycm9yX2NvZGU+
IGxvYWRUcmlnZ2VyKEV4ZWNTdGF0ZSYgZXhlYywgY29uc3QgSlNPCiBib29sIGlzVmFsaWRDU1NT
ZWxlY3Rvcihjb25zdCBTdHJpbmcmIHNlbGVjdG9yKQogewogICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7Ci0gICAgQXRvbWljU3RyaW5nOjppbml0KCk7CisgICAgQXRvbVN0cmluZzo6aW5pdCgp
OwogICAgIFF1YWxpZmllZE5hbWU6OmluaXQoKTsKICAgICBDU1NQYXJzZXJDb250ZXh0IGNvbnRl
eHQoSFRNTFF1aXJrc01vZGUpOwogICAgIENTU1BhcnNlciBwYXJzZXIoY29udGV4dCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmlu
ZGV4IDRiYzA2NGY3NzZhMjU3MDlkZmE4MzBmNjBmMjFhZGViY2Q3MGY5MjQuLmFmZjZkM2FiYTMw
MGJkZjQ1YTIwNjI4NzhmMDJmNjA0Njg2NjNiNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC0xNzMxLDcgKzE3MzEsNyBA
QCBib29sIENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnVzZUZpeGVkRm9udERlZmF1bHRTaXplKCkK
ICAgICByZXR1cm4gc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLnVzZUZpeGVkRGVmYXVsdFNpemUo
KTsKIH0KIAotc3RhdGljIENTU1ZhbHVlSUQgaWRlbnRpZmllckZvckZhbWlseShjb25zdCBBdG9t
aWNTdHJpbmcmIGZhbWlseSkKK3N0YXRpYyBDU1NWYWx1ZUlEIGlkZW50aWZpZXJGb3JGYW1pbHko
Y29uc3QgQXRvbVN0cmluZyYgZmFtaWx5KQogewogICAgIGlmIChmYW1pbHkgPT0gY3Vyc2l2ZUZh
bWlseSkKICAgICAgICAgcmV0dXJuIENTU1ZhbHVlQ3Vyc2l2ZTsKQEAgLTE3NTAsNyArMTc1MCw3
IEBAIHN0YXRpYyBDU1NWYWx1ZUlEIGlkZW50aWZpZXJGb3JGYW1pbHkoY29uc3QgQXRvbWljU3Ry
aW5nJiBmYW1pbHkpCiAgICAgcmV0dXJuIENTU1ZhbHVlSW52YWxpZDsKIH0KIAotc3RhdGljIFJl
ZjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFsdWVGb3JGYW1pbHkoY29uc3QgQXRvbWljU3RyaW5nJiBm
YW1pbHkpCitzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiB2YWx1ZUZvckZhbWlseShjb25z
dCBBdG9tU3RyaW5nJiBmYW1pbHkpCiB7CiAgICAgaWYgKENTU1ZhbHVlSUQgZmFtaWx5SWRlbnRp
ZmllciA9IGlkZW50aWZpZXJGb3JGYW1pbHkoZmFtaWx5KSkKICAgICAgICAgcmV0dXJuIENTU1Zh
bHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKGZhbWlseUlkZW50aWZp
ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1c3RvbUlkZW50VmFsdWUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1c3RvbUlkZW50VmFsdWUuY3BwCmluZGV4IDI2
ZDZlM2JiMGQwMzFkNjdiNGMwYTU4MzNmNzAwZjhjYzNjM2UyYjYuLjAxZTQ4YmRkYmE3YmEzYmU2
ODQwM2VhNzUxM2RjZmM1NDg1M2EzYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NDdXN0b21JZGVudFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3VzdG9t
SWRlbnRWYWx1ZS5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgQ1NTQ3VzdG9tSWRlbnRWYWx1ZTo6Q1NT
Q3VzdG9tSWRlbnRWYWx1ZShDU1NQcm9wZXJ0eUlEIGlkKQogU3RyaW5nIENTU0N1c3RvbUlkZW50
VmFsdWU6OmN1c3RvbUNTU1RleHQoKSBjb25zdAogewogICAgIGlmIChpc0tub3duUHJvcGVydHlJ
RCgpKQotICAgICAgICByZXR1cm4gZ2V0UHJvcGVydHlOYW1lQXRvbWljU3RyaW5nKG1fcHJvcGVy
dHlJZCk7CisgICAgICAgIHJldHVybiBnZXRQcm9wZXJ0eU5hbWVBdG9tU3RyaW5nKG1fcHJvcGVy
dHlJZCk7CiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogICAgIHNlcmlhbGl6ZUlkZW50aWZp
ZXIobV9zdHJpbmcsIGJ1aWxkZXIpOwogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3VzdG9tSWRlbnRWYWx1ZS5oIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0N1c3RvbUlkZW50VmFsdWUuaAppbmRleCBhNTYyYWVkMmRhMTNh
OWZiMzkyNmU1MWFiZDljMGI2ZDg5OTk2MmNhLi40YWJjZjMxZGRhYWZiZGVjZWFjNjQyZTA2ZWM3
M2Q4ZWY5ODYzNzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3VzdG9tSWRl
bnRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXN0b21JZGVudFZhbHVlLmgK
QEAgLTYyLDcgKzYyLDcgQEAgcHJpdmF0ZToKICAgICBDU1NDdXN0b21JZGVudFZhbHVlKGNvbnN0
IFN0cmluZyYpOwogICAgIENTU0N1c3RvbUlkZW50VmFsdWUoQ1NTUHJvcGVydHlJRCk7CiAKLSAg
ICAvLyBGSVhNRTogQ2hhbmdlIHRoaXMgdG8gYW4gQXRvbWljU3RyaW5nLgorICAgIC8vIEZJWE1F
OiBDaGFuZ2UgdGhpcyB0byBhbiBBdG9tU3RyaW5nLgogICAgIFN0cmluZyBtX3N0cmluZzsKICAg
ICBDU1NQcm9wZXJ0eUlEIG1fcHJvcGVydHlJZDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0N1c3RvbVByb3BlcnR5VmFsdWUuaAppbmRleCBiZGFhNzRkNTVhMGY4NzE5MjZkZjU4NmI2NmJj
MDJhYWM5MGU2NzgzLi4zYTUyZDA0NjE4ZmQ2NDMyNDUyYjJkZGE4MzQ3MDQzOTQ5YTA4MWM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmgKQEAgLTQ0LDM1
ICs0NCwzNSBAQCBjbGFzcyBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlIGZpbmFsIDogcHVibGljIENT
U1ZhbHVlIHsKIHB1YmxpYzoKICAgICB1c2luZyBWYXJpYW50VmFsdWUgPSBWYXJpYW50PFJlZjxD
U1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlPiwgQ1NTVmFsdWVJRCwgUmVmPENTU1ZhcmlhYmxlRGF0
YT4sIExlbmd0aCwgUmVmPFN0eWxlSW1hZ2U+PjsKIAotICAgIHN0YXRpYyBSZWY8Q1NTQ3VzdG9t
UHJvcGVydHlWYWx1ZT4gY3JlYXRlVW5yZXNvbHZlZChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUs
IFJlZjxDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlPiYmIHZhbHVlKQorICAgIHN0YXRpYyBSZWY8
Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4gY3JlYXRlVW5yZXNvbHZlZChjb25zdCBBdG9tU3RyaW5n
JiBuYW1lLCBSZWY8Q1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZT4mJiB2YWx1ZSkKICAgICB7CiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU0N1c3RvbVByb3BlcnR5VmFsdWUobmFtZSwg
eyBXVEZNb3ZlKHZhbHVlKSB9KSk7CiAgICAgfQogCi0gICAgc3RhdGljIFJlZjxDU1NDdXN0b21Q
cm9wZXJ0eVZhbHVlPiBjcmVhdGVVbnJlc29sdmVkKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwg
Q1NTVmFsdWVJRCB2YWx1ZSkKKyAgICBzdGF0aWMgUmVmPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+
IGNyZWF0ZVVucmVzb2x2ZWQoY29uc3QgQXRvbVN0cmluZyYgbmFtZSwgQ1NTVmFsdWVJRCB2YWx1
ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU0N1c3RvbVByb3BlcnR5
VmFsdWUobmFtZSwgeyB2YWx1ZSB9KSk7CiAgICAgfQogCi0gICAgc3RhdGljIFJlZjxDU1NDdXN0
b21Qcm9wZXJ0eVZhbHVlPiBjcmVhdGVXaXRoSUQoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBD
U1NWYWx1ZUlEIGlkKQorICAgIHN0YXRpYyBSZWY8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4gY3Jl
YXRlV2l0aElEKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIENTU1ZhbHVlSUQgaWQpCiAgICAgewog
ICAgICAgICBBU1NFUlQoaWQgPT0gQ1NTVmFsdWVJbmhlcml0IHx8IGlkID09IENTU1ZhbHVlSW5p
dGlhbCB8fCBpZCA9PSBDU1NWYWx1ZVVuc2V0IHx8IGlkID09IENTU1ZhbHVlUmV2ZXJ0IHx8IGlk
ID09IENTU1ZhbHVlSW52YWxpZCk7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU0N1
c3RvbVByb3BlcnR5VmFsdWUobmFtZSwgeyBpZCB9KSk7CiAgICAgfQogCi0gICAgc3RhdGljIFJl
ZjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiBjcmVhdGVTeW50YXhBbGwoY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lLCBSZWY8Q1NTVmFyaWFibGVEYXRhPiYmIHZhbHVlKQorICAgIHN0YXRpYyBSZWY8
Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4gY3JlYXRlU3ludGF4QWxsKGNvbnN0IEF0b21TdHJpbmcm
IG5hbWUsIFJlZjxDU1NWYXJpYWJsZURhdGE+JiYgdmFsdWUpCiAgICAgewogICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlKG5hbWUsIHsgV1RGTW92ZSh2
YWx1ZSkgfSkpOwogICAgIH0KICAgICAKLSAgICBzdGF0aWMgUmVmPENTU0N1c3RvbVByb3BlcnR5
VmFsdWU+IGNyZWF0ZVN5bnRheExlbmd0aChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIExlbmd0
aCB2YWx1ZSkKKyAgICBzdGF0aWMgUmVmPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+IGNyZWF0ZVN5
bnRheExlbmd0aChjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBMZW5ndGggdmFsdWUpCiAgICAgewog
ICAgICAgICBBU1NFUlQoIXZhbHVlLmlzVW5kZWZpbmVkKCkpOwogICAgICAgICBBU1NFUlQoIXZh
bHVlLmlzQ2FsY3VsYXRlZCgpKTsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTQ3Vz
dG9tUHJvcGVydHlWYWx1ZShuYW1lLCB7IFdURk1vdmUodmFsdWUpIH0pKTsKICAgICB9CiAKLSAg
ICBzdGF0aWMgUmVmPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+IGNyZWF0ZVN5bnRheEltYWdlKGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZSwgUmVmPFN0eWxlSW1hZ2U+JiYgdmFsdWUpCisgICAgc3Rh
dGljIFJlZjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiBjcmVhdGVTeW50YXhJbWFnZShjb25zdCBB
dG9tU3RyaW5nJiBuYW1lLCBSZWY8U3R5bGVJbWFnZT4mJiB2YWx1ZSkKICAgICB7CiAgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IENTU0N1c3RvbVByb3BlcnR5VmFsdWUobmFtZSwgeyBXVEZN
b3ZlKHZhbHVlKSB9KSk7CiAgICAgfQpAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6CiAgICAgCiAg
ICAgU3RyaW5nIGN1c3RvbUNTU1RleHQoKSBjb25zdDsKIAotICAgIGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQorICAgIGNvbnN0IEF0b21TdHJpbmcm
IG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KICAgICBib29sIGlzUmVzb2x2ZWQoKSBj
b25zdCAgeyByZXR1cm4gIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPENTU1ZhcmlhYmxlUmVm
ZXJlbmNlVmFsdWU+PihtX3ZhbHVlKTsgfQogICAgIGJvb2wgaXNVbnNldCgpIGNvbnN0ICB7IHJl
dHVybiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPENTU1ZhbHVlSUQ+KG1fdmFsdWUpICYmIFdURjo6
Z2V0PENTU1ZhbHVlSUQ+KG1fdmFsdWUpID09IENTU1ZhbHVlVW5zZXQ7IH0KICAgICBib29sIGlz
SW52YWxpZCgpIGNvbnN0ICB7IHJldHVybiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPENTU1ZhbHVl
SUQ+KG1fdmFsdWUpICYmIFdURjo6Z2V0PENTU1ZhbHVlSUQ+KG1fdmFsdWUpID09IENTU1ZhbHVl
SW52YWxpZDsgfQpAQCAtOTUsNyArOTUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBlcXVhbHMoY29u
c3QgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZSYgb3RoZXIpIGNvbnN0OwogCiBwcml2YXRlOgotICAg
IENTU0N1c3RvbVByb3BlcnR5VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBWYXJpYW50
VmFsdWUmJiB2YWx1ZSkKKyAgICBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IEF0b21TdHJp
bmcmIG5hbWUsIFZhcmlhbnRWYWx1ZSYmIHZhbHVlKQogICAgICAgICA6IENTU1ZhbHVlKEN1c3Rv
bVByb3BlcnR5Q2xhc3MpCiAgICAgICAgICwgbV9uYW1lKG5hbWUpCiAgICAgICAgICwgbV92YWx1
ZShXVEZNb3ZlKHZhbHVlKSkKQEAgLTEyNSw3ICsxMjUsNyBAQCBwcml2YXRlOgogICAgICAgICBX
VEY6OnZpc2l0KHZpc2l0b3IsIG90aGVyLm1fdmFsdWUpOwogICAgIH0KICAgICAKLSAgICBjb25z
dCBBdG9taWNTdHJpbmcgbV9uYW1lOworICAgIGNvbnN0IEF0b21TdHJpbmcgbV9uYW1lOwogICAg
IFZhcmlhbnRWYWx1ZSBtX3ZhbHVlOwogICAgIAogICAgIG11dGFibGUgU3RyaW5nIG1fc3RyaW5n
VmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTZXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcAppbmRleCAwYThjZjA5Mzlk
NjkxNmZlMjBiOWQ4YmM5ZDkxMWFlZGJjYTVhOWMwLi4wNWUzYTNmNmUyMWJjOTI4MTc4NTU2OWEx
NGFhNTBmZjUyZTRhMjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZh
Y2VTZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNldC5jcHAKQEAg
LTM1MSw4ICszNTEsOCBAQCBFeGNlcHRpb25PcjxWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBl
cjxDU1NGb250RmFjZT4+PiBDU1NGb250RmFjZVNldDo6bWF0Y2hpbgogICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgU3ludGF4RXJyb3IgfTsKICAgICBDU1NWYWx1ZUxpc3QmIGZhbWlseUxpc3Qg
PSBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KCpmYW1pbHkpOwogCi0gICAgSGFzaFNldDxBdG9taWNT
dHJpbmc+IHVuaXF1ZUZhbWlsaWVzOwotICAgIFZlY3RvcjxBdG9taWNTdHJpbmc+IGZhbWlseU9y
ZGVyOworICAgIEhhc2hTZXQ8QXRvbVN0cmluZz4gdW5pcXVlRmFtaWxpZXM7CisgICAgVmVjdG9y
PEF0b21TdHJpbmc+IGZhbWlseU9yZGVyOwogICAgIGZvciAoYXV0byYgZmFtaWx5IDogZmFtaWx5
TGlzdCkgewogICAgICAgICBhdXRvJiBwcmltaXRpdmUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZT4oZmFtaWx5LmdldCgpKTsKICAgICAgICAgaWYgKCFwcmltaXRpdmUuaXNGb250RmFtaWx5
KCkpCkBAIC00MDIsNyArNDAyLDcgQEAgRXhjZXB0aW9uT3I8Ym9vbD4gQ1NTRm9udEZhY2VTZXQ6
OmNoZWNrKGNvbnN0IFN0cmluZyYgZm9udCwgY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIHJldHVy
biB0cnVlOwogfQogCi1DU1NTZWdtZW50ZWRGb250RmFjZSogQ1NTRm9udEZhY2VTZXQ6OmZvbnRG
YWNlKEZvbnRTZWxlY3Rpb25SZXF1ZXN0IHJlcXVlc3QsIGNvbnN0IEF0b21pY1N0cmluZyYgZmFt
aWx5KQorQ1NTU2VnbWVudGVkRm9udEZhY2UqIENTU0ZvbnRGYWNlU2V0Ojpmb250RmFjZShGb250
U2VsZWN0aW9uUmVxdWVzdCByZXF1ZXN0LCBjb25zdCBBdG9tU3RyaW5nJiBmYW1pbHkpCiB7CiAg
ICAgYXV0byBpdGVyYXRvciA9IG1fZmFjZXNMb29rdXBUYWJsZS5maW5kKGZhbWlseSk7CiAgICAg
aWYgKGl0ZXJhdG9yID09IG1fZmFjZXNMb29rdXBUYWJsZS5lbmQoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNldC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ZvbnRGYWNlU2V0LmgKaW5kZXggNzk1ZDBhODYyNzViMDE0OWFlZjRjYzE0ZTg4ZWEzMGRlNzEz
ZjA1MC4uNjljMTg1NjhhMjkwNmQ3ZTMyNTRiYzkyNTA5YmM3MWI2YjRlZWFhNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU2V0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ZvbnRGYWNlU2V0LmgKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogCiAgICAg
RXhjZXB0aW9uT3I8Ym9vbD4gY2hlY2soY29uc3QgU3RyaW5nJiBmb250LCBjb25zdCBTdHJpbmcm
IHRleHQpOwogCi0gICAgQ1NTU2VnbWVudGVkRm9udEZhY2UqIGZvbnRGYWNlKEZvbnRTZWxlY3Rp
b25SZXF1ZXN0LCBjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSk7CisgICAgQ1NTU2VnbWVudGVk
Rm9udEZhY2UqIGZvbnRGYWNlKEZvbnRTZWxlY3Rpb25SZXF1ZXN0LCBjb25zdCBBdG9tU3RyaW5n
JiBmYW1pbHkpOwogCiAgICAgZW51bSBjbGFzcyBTdGF0dXMgeyBMb2FkaW5nLCBMb2FkZWQgfTsK
ICAgICBTdGF0dXMgc3RhdHVzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXM7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKaW5kZXggMmE2ZTRhYWZjNDk2YTFlZjhjYmFlZDg5
Njg5MmI1NmY3MjExNzAzMC4uMjkxYjI0ODA5MjYzN2ZjYjRjNzcwOGY0NTM3Nzc2MDkxOGVkNGQz
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKQEAgLTI5LDcgKzI5LDcg
QEAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0FycmF5QnVmZmVyVmlldy5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+Ci0jaW5j
bHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0
cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGlj
OgogICAgIH07CiAgICAgU3RhdHVzIHN0YXR1cygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzOyB9
CiAKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseU5hbWVPclVSSSgpIGNvbnN0IHsgcmV0
dXJuIG1fZmFtaWx5TmFtZU9yVVJJOyB9CisgICAgY29uc3QgQXRvbVN0cmluZyYgZmFtaWx5TmFt
ZU9yVVJJKCkgY29uc3QgeyByZXR1cm4gbV9mYW1pbHlOYW1lT3JVUkk7IH0KIAogICAgIHZvaWQg
b3Bwb3J0dW5pc3RpY2FsbHlTdGFydEZvbnREYXRhVVJMTG9hZGluZyhDU1NGb250U2VsZWN0b3Im
KTsKIApAQCAtODUsNyArODUsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzZXRTdGF0dXMoU3Rh
dHVzKTsKIAotICAgIEF0b21pY1N0cmluZyBtX2ZhbWlseU5hbWVPclVSSTsgLy8gVVJJIGZvciBy
ZW1vdGUsIGJ1aWx0LWluIGZvbnQgbmFtZSBmb3IgbG9jYWwuCisgICAgQXRvbVN0cmluZyBtX2Zh
bWlseU5hbWVPclVSSTsgLy8gVVJJIGZvciByZW1vdGUsIGJ1aWx0LWluIGZvbnQgbmFtZSBmb3Ig
bG9jYWwuCiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkRm9udD4gbV9mb250OyAvLyBG
b3IgcmVtb3RlIGZvbnRzLCBhIHBvaW50ZXIgdG8gb3VyIGNhY2hlZCByZXNvdXJjZS4KICAgICBD
U1NGb250RmFjZSYgbV9mYWNlOyAvLyBPdXIgb3duaW5nIGZvbnQgZmFjZS4KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcAppbmRleCBhNzU0Njg1NzY4NmFiODkwYjJmNzg4YWVm
NzgyOWY4ZGI3MmU2MGUzLi5kYjJlNzk5ODUxNWVjZjkzZDY1NGU2ZTkwYmEzMmVkMjE3Y2Y1OWM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcApAQCAtNTUsNyArNTUsNyBA
QAogI2luY2x1ZGUgIldlYktpdEZvbnRGYW1pbHlOYW1lcy5oIgogI2luY2x1ZGUgPHd0Zi9SZWYu
aD4KICNpbmNsdWRlIDx3dGYvU2V0Rm9yU2NvcGUuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9BdG9t
aWNTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtMjQ5LDcgKzI0OSw3IEBAIHZvaWQgQ1NTRm9udFNlbGVjdG9yOjpk
aXNwYXRjaEludmFsaWRhdGlvbkNhbGxiYWNrcygpCiAgICAgICAgIGNsaWVudC0+Zm9udHNOZWVk
VXBkYXRlKCp0aGlzKTsKIH0KIAotdm9pZCBDU1NGb250U2VsZWN0b3I6Om9wcG9ydHVuaXN0aWNh
bGx5U3RhcnRGb250RGF0YVVSTExvYWRpbmcoY29uc3QgRm9udENhc2NhZGVEZXNjcmlwdGlvbiYg
ZGVzY3JpcHRpb24sIGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5TmFtZSkKK3ZvaWQgQ1NTRm9u
dFNlbGVjdG9yOjpvcHBvcnR1bmlzdGljYWxseVN0YXJ0Rm9udERhdGFVUkxMb2FkaW5nKGNvbnN0
IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBjb25zdCBBdG9tU3RyaW5nJiBm
YW1pbHlOYW1lKQogewogICAgIGNvbnN0IGF1dG8mIHNlZ21lbnRlZEZvbnRGYWNlID0gbV9jc3NG
b250RmFjZVNldC0+Zm9udEZhY2UoZGVzY3JpcHRpb24uZm9udFNlbGVjdGlvblJlcXVlc3QoKSwg
ZmFtaWx5TmFtZSk7CiAgICAgaWYgKCFzZWdtZW50ZWRGb250RmFjZSkKQEAgLTI3NCw3ICsyNzQs
NyBAQCB2b2lkIENTU0ZvbnRTZWxlY3Rvcjo6Zm9udENhY2hlSW52YWxpZGF0ZWQoKQogICAgIGRp
c3BhdGNoSW52YWxpZGF0aW9uQ2FsbGJhY2tzKCk7CiB9CiAKLXN0YXRpYyBBdG9taWNTdHJpbmcg
cmVzb2x2ZUdlbmVyaWNGYW1pbHkoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBGb250RGVzY3Jp
cHRpb24mIGZvbnREZXNjcmlwdGlvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHlOYW1lKQor
c3RhdGljIEF0b21TdHJpbmcgcmVzb2x2ZUdlbmVyaWNGYW1pbHkoRG9jdW1lbnQqIGRvY3VtZW50
LCBjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgY29uc3QgQXRvbVN0cmlu
ZyYgZmFtaWx5TmFtZSkKIHsKICAgICBhdXRvIHBsYXRmb3JtUmVzdWx0ID0gRm9udERlc2NyaXB0
aW9uOjpwbGF0Zm9ybVJlc29sdmVHZW5lcmljRmFtaWx5KGZvbnREZXNjcmlwdGlvbi5zY3JpcHQo
KSwgZm9udERlc2NyaXB0aW9uLmxvY2FsZSgpLCBmYW1pbHlOYW1lKTsKICAgICBpZiAoIXBsYXRm
b3JtUmVzdWx0LmlzTnVsbCgpKQpAQCAtMzA0LDcgKzMwNCw3IEBAIHN0YXRpYyBBdG9taWNTdHJp
bmcgcmVzb2x2ZUdlbmVyaWNGYW1pbHkoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBGb250RGVz
Y3JpcHRpCiAgICAgcmV0dXJuIGZhbWlseU5hbWU7CiB9CiAKLUZvbnRSYW5nZXMgQ1NTRm9udFNl
bGVjdG9yOjpmb250UmFuZ2VzRm9yRmFtaWx5KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERl
c2NyaXB0aW9uLCBjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseU5hbWUpCitGb250UmFuZ2VzIENT
U0ZvbnRTZWxlY3Rvcjo6Zm9udFJhbmdlc0ZvckZhbWlseShjb25zdCBGb250RGVzY3JpcHRpb24m
IGZvbnREZXNjcmlwdGlvbiwgY29uc3QgQXRvbVN0cmluZyYgZmFtaWx5TmFtZSkKIHsKICAgICAv
LyBJZiB0aGlzIEFTU0VSVCgpIGZpcmVzLCBpdCB1c3VhbGx5IG1lYW5zIHlvdSBmb3Jnb3QgYSBk
b2N1bWVudC51cGRhdGVTdHlsZUlmTmVlZGVkKCkgc29tZXdoZXJlLgogICAgIEFTU0VSVCghbV9i
dWlsZElzVW5kZXJ3YXkgfHwgbV9jb21wdXRpbmdSb290U3R5bGVGb250Q291bnQpOwpAQCAtMzEy
LDcgKzMxMiw3IEBAIEZvbnRSYW5nZXMgQ1NTRm9udFNlbGVjdG9yOjpmb250UmFuZ2VzRm9yRmFt
aWx5KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyCiAgICAgLy8gRklYTUU6IFRoZSBz
cGVjIChhbmQgRmlyZWZveCkgc2F5cyB1c2VyIHNwZWNpZmllZCBnZW5lcmljIGZhbWlsaWVzIChz
YW5zLXNlcmlmIGV0Yy4pIHNob3VsZCBiZSByZXNvbHZlZCBiZWZvcmUgdGhlIEBmb250LWZhY2Ug
bG9va3VwIHRvby4KICAgICBib29sIHJlc29sdmVHZW5lcmljRmFtaWx5Rmlyc3QgPSBmYW1pbHlO
YW1lID09IHN0YW5kYXJkRmFtaWx5OwogCi0gICAgQXRvbWljU3RyaW5nIGZhbWlseUZvckxvb2t1
cCA9IHJlc29sdmVHZW5lcmljRmFtaWx5Rmlyc3QgPyByZXNvbHZlR2VuZXJpY0ZhbWlseShtX2Rv
Y3VtZW50LmdldCgpLCBmb250RGVzY3JpcHRpb24sIGZhbWlseU5hbWUpIDogZmFtaWx5TmFtZTsK
KyAgICBBdG9tU3RyaW5nIGZhbWlseUZvckxvb2t1cCA9IHJlc29sdmVHZW5lcmljRmFtaWx5Rmly
c3QgPyByZXNvbHZlR2VuZXJpY0ZhbWlseShtX2RvY3VtZW50LmdldCgpLCBmb250RGVzY3JpcHRp
b24sIGZhbWlseU5hbWUpIDogZmFtaWx5TmFtZTsKICAgICBhdXRvKiBmYWNlID0gbV9jc3NGb250
RmFjZVNldC0+Zm9udEZhY2UoZm9udERlc2NyaXB0aW9uLmZvbnRTZWxlY3Rpb25SZXF1ZXN0KCks
IGZhbWlseUZvckxvb2t1cCk7CiAgICAgaWYgKGZhY2UpIHsKICAgICAgICAgaWYgKFJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2ViQVBJU3RhdGlzdGljc0VuYWJsZWQo
KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5oCmluZGV4IDljMzFiMzZhNzE1Nzdl
YWRhYzBjMzJiMDE2ZmVkMWE0M2JhY2MxYzAuLmE0NDIwNzA2ZTYwNjMwNGE1YzBlOTlmN2JiMWFj
Y2EzMjM1NWU1MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0
b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmgKQEAgLTU4LDcg
KzU4LDcgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIHZlcnNpb24oKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBtX3ZlcnNpb247IH0KICAgICB1bnNpZ25lZCB1bmlxdWVJZCgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIG1fdW5pcXVlSWQ7IH0KIAotICAgIEZvbnRSYW5nZXMgZm9udFJhbmdlc0ZvckZhbWls
eShjb25zdCBGb250RGVzY3JpcHRpb24mLCBjb25zdCBBdG9taWNTdHJpbmcmKSBmaW5hbDsKKyAg
ICBGb250UmFuZ2VzIGZvbnRSYW5nZXNGb3JGYW1pbHkoY29uc3QgRm9udERlc2NyaXB0aW9uJiwg
Y29uc3QgQXRvbVN0cmluZyYpIGZpbmFsOwogICAgIHNpemVfdCBmYWxsYmFja0ZvbnRDb3VudCgp
IGZpbmFsOwogICAgIFJlZlB0cjxGb250PiBmYWxsYmFja0ZvbnRBdChjb25zdCBGb250RGVzY3Jp
cHRpb24mLCBzaXplX3QpIGZpbmFsOwogCkBAIC05MSw3ICs5MSw3IEBAIHByaXZhdGU6CiAKICAg
ICB2b2lkIGRpc3BhdGNoSW52YWxpZGF0aW9uQ2FsbGJhY2tzKCk7CiAKLSAgICB2b2lkIG9wcG9y
dHVuaXN0aWNhbGx5U3RhcnRGb250RGF0YVVSTExvYWRpbmcoY29uc3QgRm9udENhc2NhZGVEZXNj
cmlwdGlvbiYsIGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5KSBmaW5hbDsKKyAgICB2b2lkIG9w
cG9ydHVuaXN0aWNhbGx5U3RhcnRGb250RGF0YVVSTExvYWRpbmcoY29uc3QgRm9udENhc2NhZGVE
ZXNjcmlwdGlvbiYsIGNvbnN0IEF0b21TdHJpbmcmIGZhbWlseSkgZmluYWw7CiAKICAgICB2b2lk
IGZvbnRNb2RpZmllZCgpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTSW1hZ2VWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuaAppbmRl
eCA1OWJiNzFjNDFlYzY2ZWNjM2YzYjRiNzM3Zjc0ODE2M2I4NmE5MWJkLi43ZTZiYmI5NTE0NTMy
NTI2ODM2NGM1N2NiNTY3NjIyMzcxNGI0Yjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTSW1hZ2VWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVl
LmgKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBrbm93blRvQmVPcGFxdWUo
Y29uc3QgUmVuZGVyRWxlbWVudCYpIGNvbnN0OwogCi0gICAgdm9pZCBzZXRJbml0aWF0b3IoY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lKSB7IG1faW5pdGlhdG9yTmFtZSA9IG5hbWU7IH0KKyAgICB2
b2lkIHNldEluaXRpYXRvcihjb25zdCBBdG9tU3RyaW5nJiBuYW1lKSB7IG1faW5pdGlhdG9yTmFt
ZSA9IG5hbWU7IH0KIAogcHJpdmF0ZToKICAgICBDU1NJbWFnZVZhbHVlKFVSTCYmLCBMb2FkZWRG
cm9tT3BhcXVlU291cmNlKTsKQEAgLTY1LDcgKzY1LDcgQEAgcHJpdmF0ZToKICAgICBVUkwgbV91
cmw7CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkSW1hZ2U+IG1fY2FjaGVkSW1hZ2U7
CiAgICAgYm9vbCBtX2FjY2Vzc2VkSW1hZ2U7Ci0gICAgQXRvbWljU3RyaW5nIG1faW5pdGlhdG9y
TmFtZTsKKyAgICBBdG9tU3RyaW5nIG1faW5pdGlhdG9yTmFtZTsKICAgICBMb2FkZWRGcm9tT3Bh
cXVlU291cmNlIG1fbG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSB7IExvYWRlZEZyb21PcGFxdWVTb3Vy
Y2U6Ok5vIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJh
bWVzUnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVzUnVsZS5jcHAKaW5k
ZXggNjMyYTU0N2E5MmQ5ODczNjgyMTRmMTRhYjQ3NmFkNjY0OTM0NmVhMi4uYzkwOTgzMmRhMGU1
MTkwMjUzNTEzYTM5ODMxOTFhN2MyZjM5MzAwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0tleWZyYW1lc1J1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlm
cmFtZXNSdWxlLmNwcApAQCAtMzYsMTMgKzM2LDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotU3R5bGVSdWxlS2V5ZnJhbWVzOjpTdHlsZVJ1bGVLZXlmcmFtZXMoY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lKQorU3R5bGVSdWxlS2V5ZnJhbWVzOjpTdHlsZVJ1bGVLZXlmcmFtZXMoY29uc3Qg
QXRvbVN0cmluZyYgbmFtZSkKICAgICA6IFN0eWxlUnVsZUJhc2UoS2V5ZnJhbWVzKQogICAgICwg
bV9uYW1lKG5hbWUpCiB7CiB9CiAKLVN0eWxlUnVsZUtleWZyYW1lczo6U3R5bGVSdWxlS2V5ZnJh
bWVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgc3RkOjp1bmlxdWVfcHRyPERlZmVycmVkU3R5
bGVHcm91cFJ1bGVMaXN0PiYmIGRlZmVycmVkUnVsZXMpCitTdHlsZVJ1bGVLZXlmcmFtZXM6OlN0
eWxlUnVsZUtleWZyYW1lcyhjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBzdGQ6OnVuaXF1ZV9wdHI8
RGVmZXJyZWRTdHlsZUdyb3VwUnVsZUxpc3Q+JiYgZGVmZXJyZWRSdWxlcykKICAgICA6IFN0eWxl
UnVsZUJhc2UoS2V5ZnJhbWVzKQogICAgICwgbV9uYW1lKG5hbWUpCiAgICAgLCBtX2RlZmVycmVk
UnVsZXMoV1RGTW92ZShkZWZlcnJlZFJ1bGVzKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NLZXlmcmFtZXNSdWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVz
UnVsZS5oCmluZGV4IGRkMDc1OTU3ZTkzMDJkOGNjYzg2NGVlNDhlOTk0MWI3YmE1MWExZGUuLjI4
MGI2Y2JhOWM2NGE5MTM1MGEzODlmNzUxNTI1Y2JkOTFjMjYwNzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZXNSdWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0tleWZyYW1lc1J1bGUuaApAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgIlN0eWxlUnVs
ZS5oIgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1
ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJp
bmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zOSw4ICszOSw4IEBAIGNsYXNzIENT
U0tleWZyYW1lUnVsZTsKIAogY2xhc3MgU3R5bGVSdWxlS2V5ZnJhbWVzIGZpbmFsIDogcHVibGlj
IFN0eWxlUnVsZUJhc2UgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U3R5bGVSdWxlS2V5ZnJh
bWVzPiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IFN0eWxlUnVsZUtleWZyYW1lcyhuYW1lKSk7IH0KLSAgICBzdGF0aWMgUmVmPFN0eWxlUnVs
ZUtleWZyYW1lcz4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgc3RkOjp1bmlxdWVf
cHRyPERlZmVycmVkU3R5bGVHcm91cFJ1bGVMaXN0PiYmIGRlZmVycmVkUnVsZXMpIHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU3R5bGVSdWxlS2V5ZnJhbWVzKG5hbWUsIFdURk1vdmUoZGVmZXJyZWRS
dWxlcykpKTsgfQorICAgIHN0YXRpYyBSZWY8U3R5bGVSdWxlS2V5ZnJhbWVzPiBjcmVhdGUoY29u
c3QgQXRvbVN0cmluZyYgbmFtZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVJ1bGVLZXlm
cmFtZXMobmFtZSkpOyB9CisgICAgc3RhdGljIFJlZjxTdHlsZVJ1bGVLZXlmcmFtZXM+IGNyZWF0
ZShjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBzdGQ6OnVuaXF1ZV9wdHI8RGVmZXJyZWRTdHlsZUdy
b3VwUnVsZUxpc3Q+JiYgZGVmZXJyZWRSdWxlcykgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHls
ZVJ1bGVLZXlmcmFtZXMobmFtZSwgV1RGTW92ZShkZWZlcnJlZFJ1bGVzKSkpOyB9CiAgICAgCiAg
ICAgflN0eWxlUnVsZUtleWZyYW1lcygpOwogICAgIApAQCAtNTQsMjIgKzU0LDIyIEBAIHB1Ymxp
YzoKICAgICB2b2lkIHdyYXBwZXJBcHBlbmRLZXlmcmFtZShSZWY8U3R5bGVSdWxlS2V5ZnJhbWU+
JiYpOwogICAgIHZvaWQgd3JhcHBlclJlbW92ZUtleWZyYW1lKHVuc2lnbmVkKTsKIAotICAgIGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQotICAgIHZv
aWQgc2V0TmFtZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIHsgbV9uYW1lID0gbmFtZTsgfQor
ICAgIGNvbnN0IEF0b21TdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KKyAg
ICB2b2lkIHNldE5hbWUoY29uc3QgQXRvbVN0cmluZyYgbmFtZSkgeyBtX25hbWUgPSBuYW1lOyB9
CiAKICAgICBzaXplX3QgZmluZEtleWZyYW1lSW5kZXgoY29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0
OwogCiAgICAgUmVmPFN0eWxlUnVsZUtleWZyYW1lcz4gY29weSgpIGNvbnN0IHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU3R5bGVSdWxlS2V5ZnJhbWVzKCp0aGlzKSk7IH0KIAogcHJpdmF0ZToKLSAg
ICBTdHlsZVJ1bGVLZXlmcmFtZXMoY29uc3QgQXRvbWljU3RyaW5nJik7Ci0gICAgU3R5bGVSdWxl
S2V5ZnJhbWVzKGNvbnN0IEF0b21pY1N0cmluZyYsIHN0ZDo6dW5pcXVlX3B0cjxEZWZlcnJlZFN0
eWxlR3JvdXBSdWxlTGlzdD4mJik7CisgICAgU3R5bGVSdWxlS2V5ZnJhbWVzKGNvbnN0IEF0b21T
dHJpbmcmKTsKKyAgICBTdHlsZVJ1bGVLZXlmcmFtZXMoY29uc3QgQXRvbVN0cmluZyYsIHN0ZDo6
dW5pcXVlX3B0cjxEZWZlcnJlZFN0eWxlR3JvdXBSdWxlTGlzdD4mJik7CiAgICAgU3R5bGVSdWxl
S2V5ZnJhbWVzKGNvbnN0IFN0eWxlUnVsZUtleWZyYW1lcyYpOwogCiAgICAgdm9pZCBwYXJzZURl
ZmVycmVkUnVsZXNJZk5lZWRlZCgpIGNvbnN0OwogICAgIAogICAgIG11dGFibGUgVmVjdG9yPFJl
ZjxTdHlsZVJ1bGVLZXlmcmFtZT4+IG1fa2V5ZnJhbWVzOwotICAgIEF0b21pY1N0cmluZyBtX25h
bWU7CisgICAgQXRvbVN0cmluZyBtX25hbWU7CiAgICAgCiAgICAgbXV0YWJsZSBzdGQ6OnVuaXF1
ZV9wdHI8RGVmZXJyZWRTdHlsZUdyb3VwUnVsZUxpc3Q+IG1fZGVmZXJyZWRSdWxlczsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTmFtZXNwYWNlUnVsZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTTmFtZXNwYWNlUnVsZS5jcHAKaW5kZXggM2QzZWM2ZmYwN2QyNWI4
YjFkYjBmYTQ3N2U2ZGZmOTNiZjVjYmE0Ny4uM2I5MzNiODc2NDU5NmYwMThmZWFlMzk3Y2Q2MGI2
MTQwNmMzOGYwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU05hbWVzcGFjZVJ1
bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NOYW1lc3BhY2VSdWxlLmNwcApAQCAt
NDAsMTIgKzQwLDEyIEBAIENTU05hbWVzcGFjZVJ1bGU6OkNTU05hbWVzcGFjZVJ1bGUoU3R5bGVS
dWxlTmFtZXNwYWNlJiBuYW1lc3BhY2VSdWxlLCBDU1NTdHlsZVNoCiAKIENTU05hbWVzcGFjZVJ1
bGU6On5DU1NOYW1lc3BhY2VSdWxlKCkgPSBkZWZhdWx0OwogCi1BdG9taWNTdHJpbmcgQ1NTTmFt
ZXNwYWNlUnVsZTo6bmFtZXNwYWNlVVJJKCkgY29uc3QKK0F0b21TdHJpbmcgQ1NTTmFtZXNwYWNl
UnVsZTo6bmFtZXNwYWNlVVJJKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9uYW1lc3BhY2VSdWxl
LT51cmkoKTsKIH0KICAgICAKLUF0b21pY1N0cmluZyBDU1NOYW1lc3BhY2VSdWxlOjpwcmVmaXgo
KSBjb25zdAorQXRvbVN0cmluZyBDU1NOYW1lc3BhY2VSdWxlOjpwcmVmaXgoKSBjb25zdAogewog
ICAgIHJldHVybiBtX25hbWVzcGFjZVJ1bGUtPnByZWZpeCgpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU05hbWVzcGFjZVJ1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NOYW1lc3BhY2VSdWxlLmgKaW5kZXggY2Q3MDA0MzIxZTY3Y2UxMTk5MGQ3NTZhODhiODg5ZGZi
N2E1OTIzMS4uMTFmNmY5Mjk4YmMxNDFkOGQxZTM2YmJkMDY2NjYxNWNhNDY2ZGEyYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU05hbWVzcGFjZVJ1bGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTTmFtZXNwYWNlUnVsZS5oCkBAIC0zNyw4ICszNyw4IEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgfkNTU05hbWVzcGFjZVJ1bGUoKTsKIAotICAgIEF0b21pY1N0cmluZyBu
YW1lc3BhY2VVUkkoKSBjb25zdDsKLSAgICBBdG9taWNTdHJpbmcgcHJlZml4KCkgY29uc3Q7Cisg
ICAgQXRvbVN0cmluZyBuYW1lc3BhY2VVUkkoKSBjb25zdDsKKyAgICBBdG9tU3RyaW5nIHByZWZp
eCgpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIENTU05hbWVzcGFjZVJ1bGUoU3R5bGVSdWxlTmFt
ZXNwYWNlJiwgQ1NTU3R5bGVTaGVldCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1ByaW1pdGl2ZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVW
YWx1ZS5jcHAKaW5kZXggOGU0ZjIxZmFkZDViN2U3MGQxODdlNWZkYTYyMDUzZDQ5YmEyYzlmMC4u
OTExNjhlNzcxMGFiMmQxMzM1YWZmMmE4OWM1YTM2Y2YwMzNlYmM1YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCkBAIC0yNTUsMTggKzI1NSwxOCBAQCB1bnNpZ25l
ZCBzaG9ydCBDU1NQcmltaXRpdmVWYWx1ZTo6cHJpbWl0aXZlVHlwZSgpIGNvbnN0CiAgICAgcmV0
dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVU5LTk9XTjsKIH0KIAotc3RhdGljIGNvbnN0IEF0
b21pY1N0cmluZyYgcHJvcGVydHlOYW1lKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkKK3N0YXRp
YyBjb25zdCBBdG9tU3RyaW5nJiBwcm9wZXJ0eU5hbWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlE
KQogewogICAgIEFTU0VSVF9BUkcocHJvcGVydHlJRCwgKHByb3BlcnR5SUQgPj0gZmlyc3RDU1NQ
cm9wZXJ0eSAmJiBwcm9wZXJ0eUlEIDwgZmlyc3RDU1NQcm9wZXJ0eSArIG51bUNTU1Byb3BlcnRp
ZXMpKTsKIAotICAgIHJldHVybiBnZXRQcm9wZXJ0eU5hbWVBdG9taWNTdHJpbmcocHJvcGVydHlJ
RCk7CisgICAgcmV0dXJuIGdldFByb3BlcnR5TmFtZUF0b21TdHJpbmcocHJvcGVydHlJRCk7CiB9
CiAKLXN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlTmFtZShDU1NWYWx1ZUlEIHZhbHVl
SUQpCitzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgdmFsdWVOYW1lKENTU1ZhbHVlSUQgdmFsdWVJ
RCkKIHsKICAgICBBU1NFUlRfQVJHKHZhbHVlSUQsICh2YWx1ZUlEID49IGZpcnN0Q1NTVmFsdWVL
ZXl3b3JkICYmIHZhbHVlSUQgPD0gbGFzdENTU1ZhbHVlS2V5d29yZCkpOwogCi0gICAgcmV0dXJu
IGdldFZhbHVlTmFtZUF0b21pY1N0cmluZyh2YWx1ZUlEKTsKKyAgICByZXR1cm4gZ2V0VmFsdWVO
YW1lQXRvbVN0cmluZyh2YWx1ZUlEKTsKIH0KIAogQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1p
dGl2ZVZhbHVlKENTU1ZhbHVlSUQgdmFsdWVJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3Bw
CmluZGV4IGYzNjVhODVlNzRkYjgyNjU3ZmJhYjg4OGMwNjM1NTQxYzBiNjAwNmYuLmVmZTQ4ZWYw
NmU5MTEwNzU0Zjc5NDA3NDk4MTE5ODNlYzA0MDYyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVj
dG9yLmNwcApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAj
aW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNp
bmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
QXRvbVN0cmluZ0hhc2guaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTYzLDggKzYzLDggQEAgQ1NTU2VsZWN0b3I6OkNTU1Nl
bGVjdG9yKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ1FOYW1lLCBib29sIHRhZ0lzRm9yTmFtZXNw
YWNlUnUKICAgICAsIG1fZGVzdHJ1Y3Rvckhhc0JlZW5DYWxsZWQoZmFsc2UpCiAjZW5kaWYKIHsK
LSAgICBjb25zdCBBdG9taWNTdHJpbmcmIHRhZ0xvY2FsTmFtZSA9IHRhZ1FOYW1lLmxvY2FsTmFt
ZSgpOwotICAgIGNvbnN0IEF0b21pY1N0cmluZyB0YWdMb2NhbE5hbWVBU0NJSUxvd2VyY2FzZSA9
IHRhZ0xvY2FsTmFtZS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOworICAgIGNvbnN0IEF0b21T
dHJpbmcmIHRhZ0xvY2FsTmFtZSA9IHRhZ1FOYW1lLmxvY2FsTmFtZSgpOworICAgIGNvbnN0IEF0
b21TdHJpbmcgdGFnTG9jYWxOYW1lQVNDSUlMb3dlcmNhc2UgPSB0YWdMb2NhbE5hbWUuY29udmVy
dFRvQVNDSUlMb3dlcmNhc2UoKTsKIAogICAgIGlmICh0YWdMb2NhbE5hbWUgPT0gdGFnTG9jYWxO
YW1lQVNDSUlMb3dlcmNhc2UpIHsKICAgICAgICAgbV9kYXRhLm1fdGFnUU5hbWUgPSB0YWdRTmFt
ZS5pbXBsKCk7CkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgQ1NTU2VsZWN0b3I6OmNyZWF0ZVJhcmVE
YXRhKCkKICAgICBpZiAobV9oYXNSYXJlRGF0YSkKICAgICAgICAgcmV0dXJuOwogICAgIC8vIE1v
dmUgdGhlIHZhbHVlIHRvIHRoZSByYXJlIGRhdGEgc3R1Y3R1cmUuCi0gICAgQXRvbWljU3RyaW5n
IHZhbHVlIHsgYWRvcHRSZWYobV9kYXRhLm1fdmFsdWUpIH07CisgICAgQXRvbVN0cmluZyB2YWx1
ZSB7IGFkb3B0UmVmKG1fZGF0YS5tX3ZhbHVlKSB9OwogICAgIG1fZGF0YS5tX3JhcmVEYXRhID0g
JlJhcmVEYXRhOjpjcmVhdGUoV1RGTW92ZSh2YWx1ZSkpLmxlYWtSZWYoKTsKICAgICBtX2hhc1Jh
cmVEYXRhID0gdHJ1ZTsKIH0KQEAgLTM3Myw3ICszNzMsNyBAQCBzdGF0aWMgdm9pZCBhcHBlbmRQ
c2V1ZG9DbGFzc0Z1bmN0aW9uVGFpbChTdHJpbmdCdWlsZGVyJiBzdHIsIGNvbnN0IENTU1NlbGVj
dG9yKgogCiB9CiAKLXN0YXRpYyB2b2lkIGFwcGVuZExhbmdBcmd1bWVudExpc3QoU3RyaW5nQnVp
bGRlciYgc3RyLCBjb25zdCBWZWN0b3I8QXRvbWljU3RyaW5nPiYgYXJndW1lbnRMaXN0KQorc3Rh
dGljIHZvaWQgYXBwZW5kTGFuZ0FyZ3VtZW50TGlzdChTdHJpbmdCdWlsZGVyJiBzdHIsIGNvbnN0
IFZlY3RvcjxBdG9tU3RyaW5nPiYgYXJndW1lbnRMaXN0KQogewogICAgIHVuc2lnbmVkIGFyZ3Vt
ZW50TGlzdFNpemUgPSBhcmd1bWVudExpc3Quc2l6ZSgpOwogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBhcmd1bWVudExpc3RTaXplOyArK2kpIHsKQEAgLTY3MSw3ICs2NzEsNyBAQCBTdHJp
bmcgQ1NTU2VsZWN0b3I6OnNlbGVjdG9yVGV4dChjb25zdCBTdHJpbmcmIHJpZ2h0U2lkZSkgY29u
c3QKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChjcy0+aXNBdHRyaWJ1dGVTZWxl
Y3RvcigpKSB7CiAgICAgICAgICAgICBzdHIuYXBwZW5kKCdbJyk7Ci0gICAgICAgICAgICBjb25z
dCBBdG9taWNTdHJpbmcmIHByZWZpeCA9IGNzLT5hdHRyaWJ1dGUoKS5wcmVmaXgoKTsKKyAgICAg
ICAgICAgIGNvbnN0IEF0b21TdHJpbmcmIHByZWZpeCA9IGNzLT5hdHRyaWJ1dGUoKS5wcmVmaXgo
KTsKICAgICAgICAgICAgIGlmICghcHJlZml4LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgICAg
IHN0ci5hcHBlbmQocHJlZml4KTsKICAgICAgICAgICAgICAgICBzdHIuYXBwZW5kKCd8Jyk7CkBA
IC03NTksMTMgKzc1OSwxMyBAQCB2b2lkIENTU1NlbGVjdG9yOjpzZXRBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdmFsdWUsIGJvb2wgY29udmVydFRvTG93ZXJjYQogICAgIG1fY2FzZUlu
c2Vuc2l0aXZlQXR0cmlidXRlVmFsdWVNYXRjaGluZyA9IG1hdGNoVHlwZSA9PSBDYXNlSW5zZW5z
aXRpdmU7CiB9CiAgICAgCi12b2lkIENTU1NlbGVjdG9yOjpzZXRBcmd1bWVudChjb25zdCBBdG9t
aWNTdHJpbmcmIHZhbHVlKQordm9pZCBDU1NTZWxlY3Rvcjo6c2V0QXJndW1lbnQoY29uc3QgQXRv
bVN0cmluZyYgdmFsdWUpCiB7CiAgICAgY3JlYXRlUmFyZURhdGEoKTsKICAgICBtX2RhdGEubV9y
YXJlRGF0YS0+bV9hcmd1bWVudCA9IHZhbHVlOwogfQogCi12b2lkIENTU1NlbGVjdG9yOjpzZXRM
YW5nQXJndW1lbnRMaXN0KHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8QXRvbWljU3RyaW5nPj4gYXJn
dW1lbnRMaXN0KQordm9pZCBDU1NTZWxlY3Rvcjo6c2V0TGFuZ0FyZ3VtZW50TGlzdChzdGQ6OnVu
aXF1ZV9wdHI8VmVjdG9yPEF0b21TdHJpbmc+PiBhcmd1bWVudExpc3QpCiB7CiAgICAgY3JlYXRl
UmFyZURhdGEoKTsKICAgICBtX2RhdGEubV9yYXJlRGF0YS0+bV9sYW5nQXJndW1lbnRMaXN0ID0g
V1RGTW92ZShhcmd1bWVudExpc3QpOwpAQCAtODAyLDcgKzgwMiw3IEBAIGludCBDU1NTZWxlY3Rv
cjo6bnRoQigpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGF0YS5tX3JhcmVEYXRhLT5tX2I7CiB9CiAK
LUNTU1NlbGVjdG9yOjpSYXJlRGF0YTo6UmFyZURhdGEoQXRvbWljU3RyaW5nJiYgdmFsdWUpCitD
U1NTZWxlY3Rvcjo6UmFyZURhdGE6OlJhcmVEYXRhKEF0b21TdHJpbmcmJiB2YWx1ZSkKICAgICA6
IG1fbWF0Y2hpbmdWYWx1ZSh2YWx1ZSkKICAgICAsIG1fc2VyaWFsaXppbmdWYWx1ZSh2YWx1ZSkK
ICAgICAsIG1fYSgwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9y
LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaAppbmRleCA1NDRjYzJjZDU4YWJl
YTgwNDQ0MzViMTY0ODVjMjM4NTg4NTNlYTU1Li5lNTkxYzZjYTQ4YjE4Njg1MjdhZGU0MTI5MzAw
MzQ3ZTA3ZWNlMWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3Iu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaApAQCAtMjMxLDIzICsyMzEs
MjMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBjb25zdCBDU1NTZWxlY3RvciogdGFn
SGlzdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1faXNMYXN0SW5UYWdIaXN0b3J5ID8gMCA6IGNvbnN0
X2Nhc3Q8Q1NTU2VsZWN0b3IqPih0aGlzICsgMSk7IH0KIAogICAgICAgICBjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdRTmFtZSgpIGNvbnN0OwotICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHRh
Z0xvd2VyY2FzZUxvY2FsTmFtZSgpIGNvbnN0OworICAgICAgICBjb25zdCBBdG9tU3RyaW5nJiB0
YWdMb3dlcmNhc2VMb2NhbE5hbWUoKSBjb25zdDsKIAotICAgICAgICBjb25zdCBBdG9taWNTdHJp
bmcmIHZhbHVlKCkgY29uc3Q7Ci0gICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgc2VyaWFsaXpp
bmdWYWx1ZSgpIGNvbnN0OworICAgICAgICBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSgpIGNvbnN0
OworICAgICAgICBjb25zdCBBdG9tU3RyaW5nJiBzZXJpYWxpemluZ1ZhbHVlKCkgY29uc3Q7CiAg
ICAgICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZSgpIGNvbnN0OwotICAgICAgICBj
b25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZUNhbm9uaWNhbExvY2FsTmFtZSgpIGNvbnN0Owot
ICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGFyZ3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9o
YXNSYXJlRGF0YSA/IG1fZGF0YS5tX3JhcmVEYXRhLT5tX2FyZ3VtZW50IDogbnVsbEF0b20oKTsg
fQorICAgICAgICBjb25zdCBBdG9tU3RyaW5nJiBhdHRyaWJ1dGVDYW5vbmljYWxMb2NhbE5hbWUo
KSBjb25zdDsKKyAgICAgICAgY29uc3QgQXRvbVN0cmluZyYgYXJndW1lbnQoKSBjb25zdCB7IHJl
dHVybiBtX2hhc1JhcmVEYXRhID8gbV9kYXRhLm1fcmFyZURhdGEtPm1fYXJndW1lbnQgOiBudWxs
QXRvbSgpOyB9CiAgICAgICAgIGJvb2wgYXR0cmlidXRlVmFsdWVNYXRjaGluZ0lzQ2FzZUluc2Vu
c2l0aXZlKCkgY29uc3Q7Ci0gICAgICAgIGNvbnN0IFZlY3RvcjxBdG9taWNTdHJpbmc+KiBsYW5n
QXJndW1lbnRMaXN0KCkgY29uc3QgeyByZXR1cm4gbV9oYXNSYXJlRGF0YSA/IG1fZGF0YS5tX3Jh
cmVEYXRhLT5tX2xhbmdBcmd1bWVudExpc3QuZ2V0KCkgOiBudWxscHRyOyB9CisgICAgICAgIGNv
bnN0IFZlY3RvcjxBdG9tU3RyaW5nPiogbGFuZ0FyZ3VtZW50TGlzdCgpIGNvbnN0IHsgcmV0dXJu
IG1faGFzUmFyZURhdGEgPyBtX2RhdGEubV9yYXJlRGF0YS0+bV9sYW5nQXJndW1lbnRMaXN0Lmdl
dCgpIDogbnVsbHB0cjsgfQogICAgICAgICBjb25zdCBDU1NTZWxlY3Rvckxpc3QqIHNlbGVjdG9y
TGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzUmFyZURhdGEgPyBtX2RhdGEubV9yYXJlRGF0YS0+
bV9zZWxlY3Rvckxpc3QuZ2V0KCkgOiBudWxscHRyOyB9CiAKLSAgICAgICAgdm9pZCBzZXRWYWx1
ZShjb25zdCBBdG9taWNTdHJpbmcmLCBib29sIG1hdGNoTG93ZXJDYXNlID0gZmFsc2UpOworICAg
ICAgICB2b2lkIHNldFZhbHVlKGNvbnN0IEF0b21TdHJpbmcmLCBib29sIG1hdGNoTG93ZXJDYXNl
ID0gZmFsc2UpOwogICAgICAgICAKICAgICAgICAgdm9pZCBzZXRBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIGJvb2wgY29udmVydFRvTG93ZXJjYXNlLCBBdHRyaWJ1dGVNYXRjaFR5cGUp
OwogICAgICAgICB2b2lkIHNldE50aChpbnQgYSwgaW50IGIpOwotICAgICAgICB2b2lkIHNldEFy
Z3VtZW50KGNvbnN0IEF0b21pY1N0cmluZyYpOwotICAgICAgICB2b2lkIHNldExhbmdBcmd1bWVu
dExpc3Qoc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxBdG9taWNTdHJpbmc+Pik7CisgICAgICAgIHZv
aWQgc2V0QXJndW1lbnQoY29uc3QgQXRvbVN0cmluZyYpOworICAgICAgICB2b2lkIHNldExhbmdB
cmd1bWVudExpc3Qoc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxBdG9tU3RyaW5nPj4pOwogICAgICAg
ICB2b2lkIHNldFNlbGVjdG9yTGlzdChzdGQ6OnVuaXF1ZV9wdHI8Q1NTU2VsZWN0b3JMaXN0Pik7
CiAKICAgICAgICAgYm9vbCBtYXRjaE50aChpbnQgY291bnQpIGNvbnN0OwpAQCAtMzQxLDcgKzM0
MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgQ1NTU2VsZWN0b3ImIG9wZXJhdG9y
PShjb25zdCBDU1NTZWxlY3RvciYpOwogCiAgICAgICAgIHN0cnVjdCBSYXJlRGF0YSA6IHB1Ymxp
YyBSZWZDb3VudGVkPFJhcmVEYXRhPiB7Ci0gICAgICAgICAgICBzdGF0aWMgUmVmPFJhcmVEYXRh
PiBjcmVhdGUoQXRvbWljU3RyaW5nJiYgdmFsdWUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmFy
ZURhdGEoV1RGTW92ZSh2YWx1ZSkpKTsgfQorICAgICAgICAgICAgc3RhdGljIFJlZjxSYXJlRGF0
YT4gY3JlYXRlKEF0b21TdHJpbmcmJiB2YWx1ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBSYXJl
RGF0YShXVEZNb3ZlKHZhbHVlKSkpOyB9CiAgICAgICAgICAgICB+UmFyZURhdGEoKTsKIAogICAg
ICAgICAgICAgYm9vbCBtYXRjaE50aChpbnQgY291bnQpOwpAQCAtMzQ5LDI0ICszNDksMjQgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgLy8gRm9yIHF1aXJrcyBtb2RlLCBjbGFz
cyBhbmQgaWQgYXJlIGNhc2UtaW5zZW5zaXRpdmUuIEluIHRoZSBjYXNlIHdoZXJlIHVwcGVyY2Fz
ZQogICAgICAgICAgICAgLy8gbGV0dGVycyBhcmUgdXNlZCBpbiBxdWlya3MgbW9kZSwgfG1fbWF0
Y2hpbmdWYWx1ZXwgaG9sZHMgdGhlIGxvd2VyY2FzZSBjbGFzcy9pZAogICAgICAgICAgICAgLy8g
YW5kIHxtX3NlcmlhbGl6aW5nVmFsdWV8IGhvbGRzIHRoZSBvcmlnaW5hbCBzdHJpbmcuCi0gICAg
ICAgICAgICBBdG9taWNTdHJpbmcgbV9tYXRjaGluZ1ZhbHVlOwotICAgICAgICAgICAgQXRvbWlj
U3RyaW5nIG1fc2VyaWFsaXppbmdWYWx1ZTsKKyAgICAgICAgICAgIEF0b21TdHJpbmcgbV9tYXRj
aGluZ1ZhbHVlOworICAgICAgICAgICAgQXRvbVN0cmluZyBtX3NlcmlhbGl6aW5nVmFsdWU7CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIGludCBtX2E7IC8vIFVzZWQgZm9yIDpudGgtKgogICAg
ICAgICAgICAgaW50IG1fYjsgLy8gVXNlZCBmb3IgOm50aC0qCiAgICAgICAgICAgICBRdWFsaWZp
ZWROYW1lIG1fYXR0cmlidXRlOyAvLyB1c2VkIGZvciBhdHRyaWJ1dGUgc2VsZWN0b3IKLSAgICAg
ICAgICAgIEF0b21pY1N0cmluZyBtX2F0dHJpYnV0ZUNhbm9uaWNhbExvY2FsTmFtZTsKLSAgICAg
ICAgICAgIEF0b21pY1N0cmluZyBtX2FyZ3VtZW50OyAvLyBVc2VkIGZvciA6Y29udGFpbnMgYW5k
IDpudGgtKgotICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxBdG9taWNTdHJpbmc+
PiBtX2xhbmdBcmd1bWVudExpc3Q7IC8vIFVzZWQgZm9yIDpsYW5nIGFyZ3VtZW50cy4KKyAgICAg
ICAgICAgIEF0b21TdHJpbmcgbV9hdHRyaWJ1dGVDYW5vbmljYWxMb2NhbE5hbWU7CisgICAgICAg
ICAgICBBdG9tU3RyaW5nIG1fYXJndW1lbnQ7IC8vIFVzZWQgZm9yIDpjb250YWlucyBhbmQgOm50
aC0qCisgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPEF0b21TdHJpbmc+PiBtX2xh
bmdBcmd1bWVudExpc3Q7IC8vIFVzZWQgZm9yIDpsYW5nIGFyZ3VtZW50cy4KICAgICAgICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxDU1NTZWxlY3Rvckxpc3Q+IG1fc2VsZWN0b3JMaXN0OyAvLyBVc2Vk
IGZvciA6bWF0Y2hlcygpIGFuZCA6bm90KCkuCiAgICAgICAgIAogICAgICAgICBwcml2YXRlOgot
ICAgICAgICAgICAgUmFyZURhdGEoQXRvbWljU3RyaW5nJiYgdmFsdWUpOworICAgICAgICAgICAg
UmFyZURhdGEoQXRvbVN0cmluZyYmIHZhbHVlKTsKICAgICAgICAgfTsKICAgICAgICAgdm9pZCBj
cmVhdGVSYXJlRGF0YSgpOwogCiAgICAgICAgIHN0cnVjdCBOYW1lV2l0aENhc2UgOiBwdWJsaWMg
UmVmQ291bnRlZDxOYW1lV2l0aENhc2U+IHsKLSAgICAgICAgICAgIE5hbWVXaXRoQ2FzZShjb25z
dCBRdWFsaWZpZWROYW1lJiBvcmlnaW5hbE5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbG93ZXJj
YXNlTmFtZSkKKyAgICAgICAgICAgIE5hbWVXaXRoQ2FzZShjb25zdCBRdWFsaWZpZWROYW1lJiBv
cmlnaW5hbE5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIGxvd2VyY2FzZU5hbWUpCiAgICAgICAgICAg
ICAgICAgOiBtX29yaWdpbmFsTmFtZShvcmlnaW5hbE5hbWUpCiAgICAgICAgICAgICAgICAgLCBt
X2xvd2VyY2FzZUxvY2FsTmFtZShsb3dlcmNhc2VOYW1lKQogICAgICAgICAgICAgewpAQCAtMzc0
LDEyICszNzQsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICBjb25zdCBRdWFsaWZpZWROYW1lIG1fb3JpZ2luYWxOYW1lOwotICAgICAgICAgICAg
Y29uc3QgQXRvbWljU3RyaW5nIG1fbG93ZXJjYXNlTG9jYWxOYW1lOworICAgICAgICAgICAgY29u
c3QgQXRvbVN0cmluZyBtX2xvd2VyY2FzZUxvY2FsTmFtZTsKICAgICAgICAgfTsKIAogICAgICAg
ICB1bmlvbiBEYXRhVW5pb24gewogICAgICAgICAgICAgRGF0YVVuaW9uKCkgOiBtX3ZhbHVlKDAp
IHsgfQotICAgICAgICAgICAgQXRvbWljU3RyaW5nSW1wbCogbV92YWx1ZTsKKyAgICAgICAgICAg
IEF0b21TdHJpbmdJbXBsKiBtX3ZhbHVlOwogICAgICAgICAgICAgUXVhbGlmaWVkTmFtZTo6UXVh
bGlmaWVkTmFtZUltcGwqIG1fdGFnUU5hbWU7CiAgICAgICAgICAgICBSYXJlRGF0YSogbV9yYXJl
RGF0YTsKICAgICAgICAgICAgIE5hbWVXaXRoQ2FzZSogbV9uYW1lV2l0aENhc2U7CkBAIC0zOTMs
NyArMzkzLDcgQEAgaW5saW5lIGNvbnN0IFF1YWxpZmllZE5hbWUmIENTU1NlbGVjdG9yOjphdHRy
aWJ1dGUoKSBjb25zdAogICAgIHJldHVybiBtX2RhdGEubV9yYXJlRGF0YS0+bV9hdHRyaWJ1dGU7
CiB9CiAKLWlubGluZSBjb25zdCBBdG9taWNTdHJpbmcmIENTU1NlbGVjdG9yOjphdHRyaWJ1dGVD
YW5vbmljYWxMb2NhbE5hbWUoKSBjb25zdAoraW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIENTU1Nl
bGVjdG9yOjphdHRyaWJ1dGVDYW5vbmljYWxMb2NhbE5hbWUoKSBjb25zdAogewogICAgIEFTU0VS
VChpc0F0dHJpYnV0ZVNlbGVjdG9yKCkpOwogICAgIEFTU0VSVChtX2hhc1JhcmVEYXRhKTsKQEAg
LTQ1NSwxMCArNDU1LDEwIEBAIGlubGluZSBib29sIENTU1NlbGVjdG9yOjppc0F0dHJpYnV0ZVNl
bGVjdG9yKCkgY29uc3QKICAgICAgICAgfHwgbWF0Y2goKSA9PSBDU1NTZWxlY3Rvcjo6RW5kOwog
fQogCi1pbmxpbmUgdm9pZCBDU1NTZWxlY3Rvcjo6c2V0VmFsdWUoY29uc3QgQXRvbWljU3RyaW5n
JiB2YWx1ZSwgYm9vbCBtYXRjaExvd2VyQ2FzZSkKK2lubGluZSB2b2lkIENTU1NlbGVjdG9yOjpz
ZXRWYWx1ZShjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSwgYm9vbCBtYXRjaExvd2VyQ2FzZSkKIHsK
ICAgICBBU1NFUlQobWF0Y2goKSAhPSBUYWcpOwotICAgIEF0b21pY1N0cmluZyBtYXRjaGluZ1Zh
bHVlID0gbWF0Y2hMb3dlckNhc2UgPyB2YWx1ZS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpIDog
dmFsdWU7CisgICAgQXRvbVN0cmluZyBtYXRjaGluZ1ZhbHVlID0gbWF0Y2hMb3dlckNhc2UgPyB2
YWx1ZS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpIDogdmFsdWU7CiAgICAgaWYgKCFtX2hhc1Jh
cmVEYXRhICYmIG1hdGNoaW5nVmFsdWUgIT0gdmFsdWUpCiAgICAgICAgIGNyZWF0ZVJhcmVEYXRh
KCk7CiAgICAgCkBAIC01NTQsMzEgKzU1NCwzMSBAQCBpbmxpbmUgY29uc3QgUXVhbGlmaWVkTmFt
ZSYgQ1NTU2VsZWN0b3I6OnRhZ1FOYW1lKCkgY29uc3QKICAgICByZXR1cm4gKnJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgUXVhbGlmaWVkTmFtZSo+KCZtX2RhdGEubV90YWdRTmFtZSk7CiB9CiAKLWlu
bGluZSBjb25zdCBBdG9taWNTdHJpbmcmIENTU1NlbGVjdG9yOjp0YWdMb3dlcmNhc2VMb2NhbE5h
bWUoKSBjb25zdAoraW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIENTU1NlbGVjdG9yOjp0YWdMb3dl
cmNhc2VMb2NhbE5hbWUoKSBjb25zdAogewogICAgIGlmIChtX2hhc05hbWVXaXRoQ2FzZSkKICAg
ICAgICAgcmV0dXJuIG1fZGF0YS5tX25hbWVXaXRoQ2FzZS0+bV9sb3dlcmNhc2VMb2NhbE5hbWU7
CiAgICAgcmV0dXJuIG1fZGF0YS5tX3RhZ1FOYW1lLT5tX2xvY2FsTmFtZTsKIH0KIAotaW5saW5l
IGNvbnN0IEF0b21pY1N0cmluZyYgQ1NTU2VsZWN0b3I6OnZhbHVlKCkgY29uc3QKK2lubGluZSBj
b25zdCBBdG9tU3RyaW5nJiBDU1NTZWxlY3Rvcjo6dmFsdWUoKSBjb25zdAogewogICAgIEFTU0VS
VChtYXRjaCgpICE9IFRhZyk7CiAgICAgaWYgKG1faGFzUmFyZURhdGEpCiAgICAgICAgIHJldHVy
biBtX2RhdGEubV9yYXJlRGF0YS0+bV9tYXRjaGluZ1ZhbHVlOwogCi0gICAgLy8gQXRvbWljU3Ry
aW5nIGlzIHJlYWxseSBqdXN0IGFuIEF0b21pY1N0cmluZ0ltcGwqIHNvIHRoZSBjYXN0IGJlbG93
IGlzIHNhZmUuCi0gICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PGNvbnN0IEF0b21pY1N0cmlu
Zyo+KCZtX2RhdGEubV92YWx1ZSk7CisgICAgLy8gQXRvbVN0cmluZyBpcyByZWFsbHkganVzdCBh
biBBdG9tU3RyaW5nSW1wbCogc28gdGhlIGNhc3QgYmVsb3cgaXMgc2FmZS4KKyAgICByZXR1cm4g
KnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgQXRvbVN0cmluZyo+KCZtX2RhdGEubV92YWx1ZSk7CiB9
CiAKLWlubGluZSBjb25zdCBBdG9taWNTdHJpbmcmIENTU1NlbGVjdG9yOjpzZXJpYWxpemluZ1Zh
bHVlKCkgY29uc3QKK2lubGluZSBjb25zdCBBdG9tU3RyaW5nJiBDU1NTZWxlY3Rvcjo6c2VyaWFs
aXppbmdWYWx1ZSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1hdGNoKCkgIT0gVGFnKTsKICAgICBp
ZiAobV9oYXNSYXJlRGF0YSkKICAgICAgICAgcmV0dXJuIG1fZGF0YS5tX3JhcmVEYXRhLT5tX3Nl
cmlhbGl6aW5nVmFsdWU7CiAgICAgCi0gICAgLy8gQXRvbWljU3RyaW5nIGlzIHJlYWxseSBqdXN0
IGFuIEF0b21pY1N0cmluZ0ltcGwqIHNvIHRoZSBjYXN0IGJlbG93IGlzIHNhZmUuCi0gICAgcmV0
dXJuICpyZWludGVycHJldF9jYXN0PGNvbnN0IEF0b21pY1N0cmluZyo+KCZtX2RhdGEubV92YWx1
ZSk7CisgICAgLy8gQXRvbVN0cmluZyBpcyByZWFsbHkganVzdCBhbiBBdG9tU3RyaW5nSW1wbCog
c28gdGhlIGNhc3QgYmVsb3cgaXMgc2FmZS4KKyAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgQXRvbVN0cmluZyo+KCZtX2RhdGEubV92YWx1ZSk7CiB9CiAgICAgCiBpbmxpbmUgYm9v
bCBDU1NTZWxlY3Rvcjo6YXR0cmlidXRlVmFsdWVNYXRjaGluZ0lzQ2FzZUluc2Vuc2l0aXZlKCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCBh
NGYzNDgxZTM2NjdjMDgwZjA0NTQ3MzNhOTdjNDZkNGVmNjRjM2FiLi4yZjY5ZWY3ZGY4NTg1NDE5
MWFhZGQwMjdhY2JlNDJiZDNhNTdlMjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxl
RGVjbGFyYXRpb24uY3BwCkBAIC0xNDksNyArMTQ5LDcgQEAgc3RydWN0IENTU1Byb3BlcnR5SW5m
byB7CiAgICAgYm9vbCBoYWRQaXhlbE9yUG9zUHJlZml4OwogfTsKIAotc3RhdGljIENTU1Byb3Bl
cnR5SW5mbyBwYXJzZUphdmFTY3JpcHRDU1NQcm9wZXJ0eU5hbWUoY29uc3QgQXRvbWljU3RyaW5n
JiBwcm9wZXJ0eU5hbWUpCitzdGF0aWMgQ1NTUHJvcGVydHlJbmZvIHBhcnNlSmF2YVNjcmlwdENT
U1Byb3BlcnR5TmFtZShjb25zdCBBdG9tU3RyaW5nJiBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgdXNp
bmcgQ1NTUHJvcGVydHlJbmZvTWFwID0gSGFzaE1hcDxTdHJpbmcsIENTU1Byb3BlcnR5SW5mbz47
CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPENTU1Byb3BlcnR5SW5mb01hcD4gcHJvcGVydHlJ
bmZvQ2FjaGU7CkBAIC0yNTgsMTIgKzI1OCwxMiBAQCBzdGF0aWMgQ1NTUHJvcGVydHlJbmZvIHBh
cnNlSmF2YVNjcmlwdENTU1Byb3BlcnR5TmFtZShjb25zdCBBdG9taWNTdHJpbmcmIHByb3Blcgog
CiB9CiAKLUNTU1Byb3BlcnR5SUQgQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0Q1NTUHJvcGVydHlJ
REZyb21KYXZhU2NyaXB0UHJvcGVydHlOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgcHJvcGVydHlO
YW1lKQorQ1NTUHJvcGVydHlJRCBDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRDU1NQcm9wZXJ0eUlE
RnJvbUphdmFTY3JpcHRQcm9wZXJ0eU5hbWUoY29uc3QgQXRvbVN0cmluZyYgcHJvcGVydHlOYW1l
KQogewogICAgIHJldHVybiBwYXJzZUphdmFTY3JpcHRDU1NQcm9wZXJ0eU5hbWUocHJvcGVydHlO
YW1lKS5wcm9wZXJ0eUlEOwogfQogCi1PcHRpb25hbDxWYXJpYW50PFN0cmluZywgZG91YmxlPj4g
Q1NTU3R5bGVEZWNsYXJhdGlvbjo6bmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgcHJvcGVy
dHlOYW1lKQorT3B0aW9uYWw8VmFyaWFudDxTdHJpbmcsIGRvdWJsZT4+IENTU1N0eWxlRGVjbGFy
YXRpb246Om5hbWVkSXRlbShjb25zdCBBdG9tU3RyaW5nJiBwcm9wZXJ0eU5hbWUpCiB7CiAgICAg
YXV0byBwcm9wZXJ0eUluZm8gPSBwYXJzZUphdmFTY3JpcHRDU1NQcm9wZXJ0eU5hbWUocHJvcGVy
dHlOYW1lKTsKICAgICBpZiAoIXByb3BlcnR5SW5mby5wcm9wZXJ0eUlEKQpAQCAtMjg1LDcgKzI4
NSw3IEBAIE9wdGlvbmFsPFZhcmlhbnQ8U3RyaW5nLCBkb3VibGU+PiBDU1NTdHlsZURlY2xhcmF0
aW9uOjpuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyCiAgICAgcmV0dXJuIFZhcmlhbnQ8U3RyaW5n
LCBkb3VibGU+IHsgdmFsdWUtPmNzc1RleHQoKSB9OwogfQogCi1FeGNlcHRpb25Pcjx2b2lkPiBD
U1NTdHlsZURlY2xhcmF0aW9uOjpzZXROYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBwcm9w
ZXJ0eU5hbWUsIFN0cmluZyB2YWx1ZSwgYm9vbCYgcHJvcGVydHlTdXBwb3J0ZWQpCitFeGNlcHRp
b25Pcjx2b2lkPiBDU1NTdHlsZURlY2xhcmF0aW9uOjpzZXROYW1lZEl0ZW0oY29uc3QgQXRvbVN0
cmluZyYgcHJvcGVydHlOYW1lLCBTdHJpbmcgdmFsdWUsIGJvb2wmIHByb3BlcnR5U3VwcG9ydGVk
KQogewogICAgIGF1dG8gcHJvcGVydHlJbmZvID0gcGFyc2VKYXZhU2NyaXB0Q1NTUHJvcGVydHlO
YW1lKHByb3BlcnR5TmFtZSk7CiAgICAgaWYgKCFwcm9wZXJ0eUluZm8ucHJvcGVydHlJRCkgewpA
QCAtMzE0LDEwICszMTQsMTAgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQ1NTU3R5bGVEZWNsYXJhdGlv
bjo6c2V0TmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgcHJvcGVydHkKICAgICByZXR1cm4g
eyB9OwogfQogCi1WZWN0b3I8QXRvbWljU3RyaW5nPiBDU1NTdHlsZURlY2xhcmF0aW9uOjpzdXBw
b3J0ZWRQcm9wZXJ0eU5hbWVzKCkgY29uc3QKK1ZlY3RvcjxBdG9tU3RyaW5nPiBDU1NTdHlsZURl
Y2xhcmF0aW9uOjpzdXBwb3J0ZWRQcm9wZXJ0eU5hbWVzKCkgY29uc3QKIHsKICAgICBzdGF0aWMg
dW5zaWduZWQgbnVtTmFtZXMgPSAwOwotICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcqIGNv
bnN0IGNzc1Byb3BlcnR5TmFtZXMgPSBbXSB7CisgICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcq
IGNvbnN0IGNzc1Byb3BlcnR5TmFtZXMgPSBbXSB7CiAgICAgICAgIFN0cmluZyBuYW1lc1tudW1D
U1NQcm9wZXJ0aWVzXTsKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1DU1NQcm9wZXJ0
aWVzOyArK2kpIHsKICAgICAgICAgICAgIENTU1Byb3BlcnR5SUQgaWQgPSBzdGF0aWNfY2FzdDxD
U1NQcm9wZXJ0eUlEPihmaXJzdENTU1Byb3BlcnR5ICsgaSk7CkBAIC0zMjUsMTMgKzMyNSwxMyBA
QCBWZWN0b3I8QXRvbWljU3RyaW5nPiBDU1NTdHlsZURlY2xhcmF0aW9uOjpzdXBwb3J0ZWRQcm9w
ZXJ0eU5hbWVzKCkgY29uc3QKICAgICAgICAgICAgICAgICBuYW1lc1tudW1OYW1lcysrXSA9IGdl
dEpTUHJvcGVydHlOYW1lKGlkKTsKICAgICAgICAgfQogICAgICAgICBzdGQ6OnNvcnQoJm5hbWVz
WzBdLCAmbmFtZXNbbnVtTmFtZXNdLCBXVEY6OmNvZGVQb2ludENvbXBhcmVMZXNzVGhhbik7Ci0g
ICAgICAgIGF1dG8qIGlkZW50aWZpZXJzID0gbmV3IEF0b21pY1N0cmluZ1tudW1OYW1lc107Cisg
ICAgICAgIGF1dG8qIGlkZW50aWZpZXJzID0gbmV3IEF0b21TdHJpbmdbbnVtTmFtZXNdOwogICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtTmFtZXM7ICsraSkKICAgICAgICAgICAg
IGlkZW50aWZpZXJzW2ldID0gbmFtZXNbaV07CiAgICAgICAgIHJldHVybiBpZGVudGlmaWVyczsK
ICAgICB9KCk7CiAKLSAgICBWZWN0b3I8QXRvbWljU3RyaW5nPiByZXN1bHQ7CisgICAgVmVjdG9y
PEF0b21TdHJpbmc+IHJlc3VsdDsKICAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShu
dW1OYW1lcyk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtTmFtZXM7ICsraSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5oCmluZGV4IDM1OGQ3ZDZlM2Y3
MzE5ZWM4NWUyZTZmNTI2ZDAwN2JlYzA5MzM5YzEuLmY5ODdkMWU5Y2JmNmY3ZTM2YzU0YzQzYjhm
NzQxMWI1NzRhMjMwMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURl
Y2xhcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24u
aApAQCAtNzMsMTEgKzczLDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIENTU1N0eWxlU2hlZXQq
IHBhcmVudFN0eWxlU2hlZXQoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CiAKICAgICAvLyBC
aW5kaW5ncyBzdXBwb3J0LgotICAgIE9wdGlvbmFsPFZhcmlhbnQ8U3RyaW5nLCBkb3VibGU+PiBu
YW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJik7Ci0gICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0
TmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgU3RyaW5nIHZhbHVlLCBib29sJiBw
cm9wZXJ0eVN1cHBvcnRlZCk7Ci0gICAgVmVjdG9yPEF0b21pY1N0cmluZz4gc3VwcG9ydGVkUHJv
cGVydHlOYW1lcygpIGNvbnN0OworICAgIE9wdGlvbmFsPFZhcmlhbnQ8U3RyaW5nLCBkb3VibGU+
PiBuYW1lZEl0ZW0oY29uc3QgQXRvbVN0cmluZyYpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNl
dE5hbWVkSXRlbShjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBTdHJpbmcgdmFsdWUsIGJvb2wmIHBy
b3BlcnR5U3VwcG9ydGVkKTsKKyAgICBWZWN0b3I8QXRvbVN0cmluZz4gc3VwcG9ydGVkUHJvcGVy
dHlOYW1lcygpIGNvbnN0OwogCi0gICAgc3RhdGljIENTU1Byb3BlcnR5SUQgZ2V0Q1NTUHJvcGVy
dHlJREZyb21KYXZhU2NyaXB0UHJvcGVydHlOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYpOworICAg
IHN0YXRpYyBDU1NQcm9wZXJ0eUlEIGdldENTU1Byb3BlcnR5SURGcm9tSmF2YVNjcmlwdFByb3Bl
cnR5TmFtZShjb25zdCBBdG9tU3RyaW5nJik7CiBwcm90ZWN0ZWQ6CiAgICAgQ1NTU3R5bGVEZWNs
YXJhdGlvbigpID0gZGVmYXVsdDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaAppbmRl
eCAyMzc2OGU1MGZiYzhjN2NkMDQxYWIwMjYzZjkzZDEzMzc3NjdlMzhhLi40ZDBjZmY5YTg1YTY3
NGJjZDA3NzQzNzIyOGMwYTRiMGJjYzUwOTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0
LmgKQEAgLTI1LDcgKzI1LDcgQEAKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5oPgotI2luY2x1ZGUgPHd0Zi90
ZXh0L0F0b21pY1N0cmluZ0hhc2guaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nSGFz
aC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRQb3NpdGlvbi5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oCmluZGV4IDdkNGIxMThmYjdiZTFiMjBmMzRjNTBkZGVh
Yjg0ZmY2ZDIxMGVmYmUuLmY4ODVlYmQ5MzA3ZDI2ZDExZjM4YmZkOWQ4MDQyM2IxYzhjZjE0ZmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oCkBAIC0yNzksNyArMjc5LDcgQEAgaW5saW5lIGJvb2wgY29t
cGFyZUNTU1ZhbHVlKGNvbnN0IFJlZjxDU1NWYWx1ZVR5cGU+JiBmaXJzdCwgY29uc3QgUmVmPENT
U1ZhbHVlVHkKICAgICByZXR1cm4gZmlyc3QuZ2V0KCkuZXF1YWxzKHNlY29uZCk7CiB9CiAKLXR5
cGVkZWYgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFJlZlB0cjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVl
Pj4gQ3VzdG9tUHJvcGVydHlWYWx1ZU1hcDsKK3R5cGVkZWYgSGFzaE1hcDxBdG9tU3RyaW5nLCBS
ZWZQdHI8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4+IEN1c3RvbVByb3BlcnR5VmFsdWVNYXA7CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1ZhbHVlUG9vbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQb29sLmNwcApp
bmRleCBmYmQ2YjE2ZWNhOWYxZmFhZmM2NGU4NzNkNDllNjQ3YTZmMjI2N2VlLi42OTQ3ZTA1YmFm
OWRmYjdhZjFkYjc2NDcyYjhmNjljZmYyNWYzYTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTVmFsdWVQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQ
b29sLmNwcApAQCAtMTMxLDcgKzEzMSw3IEBAIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gQ1NTVmFs
dWVQb29sOjpjcmVhdGVGb250RmFtaWx5VmFsdWUoY29uc3QgU3RyaW5nJiBmYW1pbHlOCiAgICAg
fSkuaXRlcmF0b3ItPnZhbHVlOwogfQogCi1SZWZQdHI8Q1NTVmFsdWVMaXN0PiBDU1NWYWx1ZVBv
b2w6OmNyZWF0ZUZvbnRGYWNlVmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiBzdHJpbmcpCitSZWZQ
dHI8Q1NTVmFsdWVMaXN0PiBDU1NWYWx1ZVBvb2w6OmNyZWF0ZUZvbnRGYWNlVmFsdWUoY29uc3Qg
QXRvbVN0cmluZyYgc3RyaW5nKQogewogICAgIC8vIFJlbW92ZSBvbmUgZW50cnkgYXQgcmFuZG9t
IGlmIHRoZSBjYWNoZSBncm93cyB0b28gbGFyZ2UuCiAgICAgLy8gRklYTUU6IFVzZSBUaW55TFJV
Q2FjaGUgaW5zdGVhZD8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZVBv
b2wuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZVBvb2wuaAppbmRleCBhOTJiZTQ2YTQ1
YjEwZTY3N2NjYjczYWFjNDdmMzZiMDY4MDkzNmY3Li5lODBlNjc2ODRkNTY4NTgxZGI3OTU1M2Jm
NzllZDAyMDE3MjVjNTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQ
b29sLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlUG9vbC5oCkBAIC0zNyw3ICsz
Nyw3IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0
cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQXRv
bWljU3RyaW5nSGFzaC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmdIYXNoLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTAsNyArNTAsNyBAQCBjbGFzcyBDU1NWYWx1ZVBv
b2wgewogcHVibGljOgogICAgIHN0YXRpYyBDU1NWYWx1ZVBvb2wmIHNpbmdsZXRvbigpOwogCi0g
ICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gY3JlYXRlRm9udEZhY2VWYWx1ZShjb25zdCBBdG9taWNT
dHJpbmcmKTsKKyAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBjcmVhdGVGb250RmFjZVZhbHVlKGNv
bnN0IEF0b21TdHJpbmcmKTsKICAgICBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZUZvbnRG
YW1pbHlWYWx1ZShjb25zdCBTdHJpbmcmLCBGcm9tU3lzdGVtRm9udElEID0gRnJvbVN5c3RlbUZv
bnRJRDo6Tm8pOwogICAgIFJlZjxDU1NJbmhlcml0ZWRWYWx1ZT4gY3JlYXRlSW5oZXJpdGVkVmFs
dWUoKSB7IHJldHVybiBtX2luaGVyaXRlZFZhbHVlLmdldCgpOyB9CiAgICAgUmVmPENTU0luaXRp
YWxWYWx1ZT4gY3JlYXRlSW1wbGljaXRJbml0aWFsVmFsdWUoKSB7IHJldHVybiBtX2ltcGxpY2l0
SW5pdGlhbFZhbHVlLmdldCgpOyB9CkBAIC03NCw3ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgdHlw
ZWRlZiBIYXNoTWFwPENvbG9yLCBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+PiBDb2xvclZhbHVl
Q2FjaGU7CiAgICAgQ29sb3JWYWx1ZUNhY2hlIG1fY29sb3JWYWx1ZUNhY2hlOwogCi0gICAgdHlw
ZWRlZiBIYXNoTWFwPEF0b21pY1N0cmluZywgUmVmUHRyPENTU1ZhbHVlTGlzdD4+IEZvbnRGYWNl
VmFsdWVDYWNoZTsKKyAgICB0eXBlZGVmIEhhc2hNYXA8QXRvbVN0cmluZywgUmVmUHRyPENTU1Zh
bHVlTGlzdD4+IEZvbnRGYWNlVmFsdWVDYWNoZTsKICAgICBGb250RmFjZVZhbHVlQ2FjaGUgbV9m
b250RmFjZVZhbHVlQ2FjaGU7CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8c3RkOjpwYWlyPFN0cmlu
ZywgYm9vbD4sIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4+IEZvbnRGYW1pbHlWYWx1ZUNhY2hl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxlRGF0YS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFyaWFibGVEYXRhLmNwcAppbmRleCA2MDRjYTE4MzQzNGI2
NTg2NzRkM2Q4YzA3MjlhNDExMDkxNThkOTlkLi4wY2IxYjE5YzlmMDI2NTg2MDNlODAzNjMyNGEx
OTk5MWYzMmI1MmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFyaWFibGVE
YXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFyaWFibGVEYXRhLmNwcApAQCAt
MzQsNyArMzQsNyBAQAogI2luY2x1ZGUgIkNTU1BhcnNlclRva2VuUmFuZ2UuaCIKICNpbmNsdWRl
ICJDU1NWYWx1ZVBvb2wuaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgotI2luY2x1ZGUgPHd0
Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2guaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5n
SGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9E
b2N1bWVudFJ1bGVTZXRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Eb2N1bWVudFJ1bGVTZXRz
LmNwcAppbmRleCBhMmVmOTA4Mzg2YmU3MDNhNmZhZmU5MjZjMzBhNzdmMTRiYWZkOTQ1Li4wY2Iw
ZmZjNWMyYmEwNmY3NGQ2ZGMwN2Y3MDIzNGVjMmIwMmZmNGM1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvRG9jdW1lbnRSdWxlU2V0cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0RvY3VtZW50UnVsZVNldHMuY3BwCkBAIC0xNzQsNyArMTc0LDcgQEAgdm9pZCBEb2N1bWVudFJ1
bGVTZXRzOjpjb2xsZWN0RmVhdHVyZXMoKSBjb25zdAogICAgIG1fZmVhdHVyZXMuc2hyaW5rVG9G
aXQoKTsKIH0KIAotc3RhdGljIFZlY3RvcjxJbnZhbGlkYXRpb25SdWxlU2V0PiogZW5zdXJlSW52
YWxpZGF0aW9uUnVsZVNldHMoY29uc3QgQXRvbWljU3RyaW5nJiBrZXksIEhhc2hNYXA8QXRvbWlj
U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPEludmFsaWRhdGlvblJ1bGVTZXQ+Pj4mIHJ1
bGVTZXRNYXAsIGNvbnN0IEhhc2hNYXA8QXRvbWljU3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8VmVj
dG9yPFJ1bGVGZWF0dXJlPj4+JiBydWxlRmVhdHVyZXMpCitzdGF0aWMgVmVjdG9yPEludmFsaWRh
dGlvblJ1bGVTZXQ+KiBlbnN1cmVJbnZhbGlkYXRpb25SdWxlU2V0cyhjb25zdCBBdG9tU3RyaW5n
JiBrZXksIEhhc2hNYXA8QXRvbVN0cmluZywgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxJbnZhbGlk
YXRpb25SdWxlU2V0Pj4+JiBydWxlU2V0TWFwLCBjb25zdCBIYXNoTWFwPEF0b21TdHJpbmcsIHN0
ZDo6dW5pcXVlX3B0cjxWZWN0b3I8UnVsZUZlYXR1cmU+Pj4mIHJ1bGVGZWF0dXJlcykKIHsKICAg
ICByZXR1cm4gcnVsZVNldE1hcC5lbnN1cmUoa2V5LCBbJl0gKCkgLT4gc3RkOjp1bmlxdWVfcHRy
PFZlY3RvcjxJbnZhbGlkYXRpb25SdWxlU2V0Pj4gewogICAgICAgICBhdXRvKiBmZWF0dXJlcyA9
IHJ1bGVGZWF0dXJlcy5nZXQoa2V5KTsKQEAgLTIwMSwxMiArMjAxLDEyIEBAIHN0YXRpYyBWZWN0
b3I8SW52YWxpZGF0aW9uUnVsZVNldD4qIGVuc3VyZUludmFsaWRhdGlvblJ1bGVTZXRzKGNvbnN0
IEF0b21pY1N0cmluCiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogfQogCi1jb25zdCBW
ZWN0b3I8SW52YWxpZGF0aW9uUnVsZVNldD4qIERvY3VtZW50UnVsZVNldHM6OmNsYXNzSW52YWxp
ZGF0aW9uUnVsZVNldHMoY29uc3QgQXRvbWljU3RyaW5nJiBjbGFzc05hbWUpIGNvbnN0Citjb25z
dCBWZWN0b3I8SW52YWxpZGF0aW9uUnVsZVNldD4qIERvY3VtZW50UnVsZVNldHM6OmNsYXNzSW52
YWxpZGF0aW9uUnVsZVNldHMoY29uc3QgQXRvbVN0cmluZyYgY2xhc3NOYW1lKSBjb25zdAogewog
ICAgIHJldHVybiBlbnN1cmVJbnZhbGlkYXRpb25SdWxlU2V0cyhjbGFzc05hbWUsIG1fY2xhc3NJ
bnZhbGlkYXRpb25SdWxlU2V0cywgbV9mZWF0dXJlcy5jbGFzc1J1bGVzKTsKIH0KIAotY29uc3Qg
VmVjdG9yPEludmFsaWRhdGlvblJ1bGVTZXQ+KiBEb2N1bWVudFJ1bGVTZXRzOjphdHRyaWJ1dGVJ
bnZhbGlkYXRpb25SdWxlU2V0cyhjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZU5hbWUpIGNv
bnN0Citjb25zdCBWZWN0b3I8SW52YWxpZGF0aW9uUnVsZVNldD4qIERvY3VtZW50UnVsZVNldHM6
OmF0dHJpYnV0ZUludmFsaWRhdGlvblJ1bGVTZXRzKGNvbnN0IEF0b21TdHJpbmcmIGF0dHJpYnV0
ZU5hbWUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGVuc3VyZUludmFsaWRhdGlvblJ1bGVTZXRzKGF0
dHJpYnV0ZU5hbWUsIG1fYXR0cmlidXRlSW52YWxpZGF0aW9uUnVsZVNldHMsIG1fZmVhdHVyZXMu
YXR0cmlidXRlUnVsZXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0RvY3Vt
ZW50UnVsZVNldHMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Eb2N1bWVudFJ1bGVTZXRzLmgKaW5k
ZXggMWJmMDY0OTQ4MmMxNTdiZDBmNzY3MzNjM2RiODc0MTNjMmM5ZDRlNC4uMmIxNmNmZmQ5OTc5
NzNiODcxNjVmOWRlMjM4ZjY1ZmE1MmFjODA2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0RvY3VtZW50UnVsZVNldHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRG9jdW1lbnRS
dWxlU2V0cy5oCkBAIC01OSw4ICs1OSw4IEBAIHB1YmxpYzoKICAgICBSdWxlU2V0KiBzaWJsaW5n
KCkgY29uc3QgeyByZXR1cm4gbV9zaWJsaW5nUnVsZVNldC5nZXQoKTsgfQogICAgIFJ1bGVTZXQq
IHVuY29tbW9uQXR0cmlidXRlKCkgY29uc3QgeyByZXR1cm4gbV91bmNvbW1vbkF0dHJpYnV0ZVJ1
bGVTZXQuZ2V0KCk7IH0KIAotICAgIGNvbnN0IFZlY3RvcjxJbnZhbGlkYXRpb25SdWxlU2V0Piog
Y2xhc3NJbnZhbGlkYXRpb25SdWxlU2V0cyhjb25zdCBBdG9taWNTdHJpbmcmIGNsYXNzTmFtZSkg
Y29uc3Q7Ci0gICAgY29uc3QgVmVjdG9yPEludmFsaWRhdGlvblJ1bGVTZXQ+KiBhdHRyaWJ1dGVJ
bnZhbGlkYXRpb25SdWxlU2V0cyhjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZU5hbWUpIGNv
bnN0OworICAgIGNvbnN0IFZlY3RvcjxJbnZhbGlkYXRpb25SdWxlU2V0PiogY2xhc3NJbnZhbGlk
YXRpb25SdWxlU2V0cyhjb25zdCBBdG9tU3RyaW5nJiBjbGFzc05hbWUpIGNvbnN0OworICAgIGNv
bnN0IFZlY3RvcjxJbnZhbGlkYXRpb25SdWxlU2V0PiogYXR0cmlidXRlSW52YWxpZGF0aW9uUnVs
ZVNldHMoY29uc3QgQXRvbVN0cmluZyYgYXR0cmlidXRlTmFtZSkgY29uc3Q7CiAKICAgICBib29s
IGhhc0NvbXBsZXhTZWxlY3RvcnNGb3JTdHlsZUF0dHJpYnV0ZSgpIGNvbnN0OwogCkBAIC04OSw4
ICs4OSw4IEBAIHByaXZhdGU6CiAgICAgbXV0YWJsZSBSdWxlRmVhdHVyZVNldCBtX2ZlYXR1cmVz
OwogICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPFJ1bGVTZXQ+IG1fc2libGluZ1J1bGVTZXQ7
CiAgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8UnVsZVNldD4gbV91bmNvbW1vbkF0dHJpYnV0
ZVJ1bGVTZXQ7Ci0gICAgbXV0YWJsZSBIYXNoTWFwPEF0b21pY1N0cmluZywgc3RkOjp1bmlxdWVf
cHRyPFZlY3RvcjxJbnZhbGlkYXRpb25SdWxlU2V0Pj4+IG1fY2xhc3NJbnZhbGlkYXRpb25SdWxl
U2V0czsKLSAgICBtdXRhYmxlIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8
VmVjdG9yPEludmFsaWRhdGlvblJ1bGVTZXQ+Pj4gbV9hdHRyaWJ1dGVJbnZhbGlkYXRpb25SdWxl
U2V0czsKKyAgICBtdXRhYmxlIEhhc2hNYXA8QXRvbVN0cmluZywgc3RkOjp1bmlxdWVfcHRyPFZl
Y3RvcjxJbnZhbGlkYXRpb25SdWxlU2V0Pj4+IG1fY2xhc3NJbnZhbGlkYXRpb25SdWxlU2V0czsK
KyAgICBtdXRhYmxlIEhhc2hNYXA8QXRvbVN0cmluZywgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxJ
bnZhbGlkYXRpb25SdWxlU2V0Pj4+IG1fYXR0cmlidXRlSW52YWxpZGF0aW9uUnVsZVNldHM7CiAK
ICAgICBtdXRhYmxlIE9wdGlvbmFsPGJvb2w+IG1fY2FjaGVkSGFzQ29tcGxleFNlbGVjdG9yc0Zv
clN0eWxlQXR0cmlidXRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFG
ZWF0dXJlTmFtZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhRmVhdHVyZU5hbWVzLmNw
cAppbmRleCBlYTQ2MDExNjRiODViZjIyZThiMzUyMDFmOWViZjg2YzJlNWQwNTI4Li4yZjViOGIw
NDczOTVhMmNiZDc1NWFjMWNmNTM0YmZkY2VmNTcxMDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvTWVkaWFGZWF0dXJlTmFtZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9N
ZWRpYUZlYXR1cmVOYW1lcy5jcHAKQEAgLTI0LDcgKzI0LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIG5hbWVzcGFjZSBNZWRpYUZlYXR1cmVOYW1lcyB7CiAKLSNkZWZpbmUgREVGSU5FX01FRElB
RkVBVFVSRV9HTE9CQUwobmFtZSwgc3RyaW5nKSBMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRv
bWljU3RyaW5nPiBuYW1lOworI2RlZmluZSBERUZJTkVfTUVESUFGRUFUVVJFX0dMT0JBTChuYW1l
LCBzdHJpbmcpIExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBuYW1lOwogQ1NT
X01FRElBUVVFUllfTkFNRVNfRk9SX0VBQ0hfTUVESUFGRUFUVVJFKERFRklORV9NRURJQUZFQVRV
UkVfR0xPQkFMKQogI3VuZGVmIERFRklORV9NRURJQUZFQVRVUkVfR0xPQkFMCiAKQEAgLTMyLDgg
KzMyLDggQEAgdm9pZCBpbml0KCkKIHsKICAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZDsKICAg
ICBpZiAoIWluaXRpYWxpemVkKSB7Ci0gICAgICAgIEF0b21pY1N0cmluZzo6aW5pdCgpOwotI2Rl
ZmluZSBJTklUSUFMSVpFX0dMT0JBTChuYW1lLCBzdHJpbmcpIG5hbWUuY29uc3RydWN0KHN0cmlu
ZywgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgICAgIEF0b21TdHJp
bmc6OmluaXQoKTsKKyNkZWZpbmUgSU5JVElBTElaRV9HTE9CQUwobmFtZSwgc3RyaW5nKSBuYW1l
LmNvbnN0cnVjdChzdHJpbmcsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAg
ICAgICAgQ1NTX01FRElBUVVFUllfTkFNRVNfRk9SX0VBQ0hfTUVESUFGRUFUVVJFKElOSVRJQUxJ
WkVfR0xPQkFMKQogI3VuZGVmIElOSVRJQUxJWkVfR0xPQkFMCiAgICAgICAgIGluaXRpYWxpemVk
ID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUZlYXR1cmVOYW1l
cy5oIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhRmVhdHVyZU5hbWVzLmgKaW5kZXggNmI1NjQ1
NTU2MmY2OGY5YjRmYjJjNTllYmZmMDAyNTc4ZWZmNDNmYS4uZDg2ZTY2NDZhOTlmYzgyN2M3MjEx
YWVhNjAzNTQwZmM5MGRjNWJiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlh
RmVhdHVyZU5hbWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhRmVhdHVyZU5hbWVz
LmgKQEAgLTIxLDcgKzIxLDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvQXRvbVN0cmluZy5oPgogCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklG
RVNUKQogI2RlZmluZSBDU1NfTUVESUFRVUVSWV9ESVNQTEFZX01PREUobWFjcm8pIG1hY3JvKGRp
c3BsYXlNb2RlLCAiZGlzcGxheS1tb2RlIikKQEAgLTkyLDcgKzkyLDcgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIG5hbWVzcGFjZSBNZWRpYUZlYXR1cmVOYW1lcyB7CiAKLSNkZWZpbmUgQ1NTX01F
RElBUVVFUllfTkFNRVNfREVDTEFSRShuYW1lLCBzdHJpbmcpIGV4dGVybiBMYXp5TmV2ZXJEZXN0
cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBuYW1lOworI2RlZmluZSBDU1NfTUVESUFRVUVSWV9O
QU1FU19ERUNMQVJFKG5hbWUsIHN0cmluZykgZXh0ZXJuIExhenlOZXZlckRlc3Ryb3llZDxjb25z
dCBBdG9tU3RyaW5nPiBuYW1lOwogICAgIENTU19NRURJQVFVRVJZX05BTUVTX0ZPUl9FQUNIX01F
RElBRkVBVFVSRShDU1NfTUVESUFRVUVSWV9OQU1FU19ERUNMQVJFKQogI3VuZGVmIENTU19NRURJ
QVFVRVJZX05BTUVTX0RFQ0xBUkUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL01l
ZGlhUXVlcnlFdmFsdWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFs
dWF0b3IuY3BwCmluZGV4IDZlZTAwZGU3ZjI3OTc0MzYzNTVhZTY3MGY2ZWZlZGEwYjhmODNiODMu
LjZjYWM5ZTFlMzZhZDk5YWNmOGRhYmMwOWRmZjc5ZjE1YWQ4ZTIzMDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHAKQEAgLTc0LDkgKzc0LDkgQEAgc3RhdGlj
IFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIE1lZGlhRmVhdHVyZVByZWZp
eCBvcCkKICNlbmRpZgogCiB0eXBlZGVmIGJvb2wgKCpNZWRpYVF1ZXJ5RnVuY3Rpb24pKENTU1Zh
bHVlKiwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYsIEZyYW1lJiwgTWVkaWFGZWF0
dXJlUHJlZml4KTsKLXR5cGVkZWYgSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgTWVkaWFRdWVy
eUZ1bmN0aW9uPiBNZWRpYVF1ZXJ5RnVuY3Rpb25NYXA7Cit0eXBlZGVmIEhhc2hNYXA8QXRvbVN0
cmluZ0ltcGwqLCBNZWRpYVF1ZXJ5RnVuY3Rpb24+IE1lZGlhUXVlcnlGdW5jdGlvbk1hcDsKIAot
c3RhdGljIGJvb2wgaXNBY2Nlc3NpYmlsaXR5U2V0dGluZ3NEZXBlbmRlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiBtZWRpYUZlYXR1cmUpCitzdGF0aWMgYm9vbCBpc0FjY2Vzc2liaWxpdHlTZXR0aW5n
c0RlcGVuZGVudChjb25zdCBBdG9tU3RyaW5nJiBtZWRpYUZlYXR1cmUpCiB7CiAgICAgcmV0dXJu
IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6aW52ZXJ0ZWRDb2xvcnMKICAgICAg
ICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjptYXhNb25vY2hyb21lCkBA
IC04NSw3ICs4NSw3IEBAIHN0YXRpYyBib29sIGlzQWNjZXNzaWJpbGl0eVNldHRpbmdzRGVwZW5k
ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgbWVkaWFGZWF0dXJlKQogICAgICAgICB8fCBtZWRpYUZl
YXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OnByZWZlcnNSZWR1Y2VkTW90aW9uOwogfQogCi1z
dGF0aWMgYm9vbCBpc1ZpZXdwb3J0RGVwZW5kZW50KGNvbnN0IEF0b21pY1N0cmluZyYgbWVkaWFG
ZWF0dXJlKQorc3RhdGljIGJvb2wgaXNWaWV3cG9ydERlcGVuZGVudChjb25zdCBBdG9tU3RyaW5n
JiBtZWRpYUZlYXR1cmUpCiB7CiAgICAgcmV0dXJuIG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1
cmVOYW1lczo6d2lkdGgKICAgICAgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5h
bWVzOjpoZWlnaHQKQEAgLTk5LDcgKzk5LDcgQEAgc3RhdGljIGJvb2wgaXNWaWV3cG9ydERlcGVu
ZGVudChjb25zdCBBdG9taWNTdHJpbmcmIG1lZGlhRmVhdHVyZSkKICAgICAgICAgfHwgbWVkaWFG
ZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjptYXhBc3BlY3RSYXRpbzsKIH0KIAotc3RhdGlj
IGJvb2wgaXNBcHBlYXJhbmNlRGVwZW5kZW50KGNvbnN0IEF0b21pY1N0cmluZyYgbWVkaWFGZWF0
dXJlKQorc3RhdGljIGJvb2wgaXNBcHBlYXJhbmNlRGVwZW5kZW50KGNvbnN0IEF0b21TdHJpbmcm
IG1lZGlhRmVhdHVyZSkKIHsKICAgICByZXR1cm4gbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVy
ZU5hbWVzOjpwcmVmZXJzRGFya0ludGVyZmFjZQogI2lmIEVOQUJMRShEQVJLX01PREVfQ1NTKQpA
QCAtODQyLDcgKzg0Miw3IEBAIHN0YXRpYyBib29sIGRpc3BsYXlNb2RlRXZhbHVhdGUoQ1NTVmFs
dWUqIHZhbHVlLCBjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhCiAjZW5kaWYgLy8gRU5B
QkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQogCiAvLyBVc2UgdGhpcyBmdW5jdGlvbiBpbnN0ZWFk
IG9mIGNhbGxpbmcgYWRkIGRpcmVjdGx5IHRvIGF2b2lkIGlubGluaW5nLgotc3RhdGljIHZvaWQg
YWRkKE1lZGlhUXVlcnlGdW5jdGlvbk1hcCYgbWFwLCBBdG9taWNTdHJpbmdJbXBsKiBrZXksIE1l
ZGlhUXVlcnlGdW5jdGlvbiB2YWx1ZSkKK3N0YXRpYyB2b2lkIGFkZChNZWRpYVF1ZXJ5RnVuY3Rp
b25NYXAmIG1hcCwgQXRvbVN0cmluZ0ltcGwqIGtleSwgTWVkaWFRdWVyeUZ1bmN0aW9uIHZhbHVl
KQogewogICAgIG1hcC5hZGQoa2V5LCB2YWx1ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvTWVkaWFRdWVyeUV4cHJlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL01l
ZGlhUXVlcnlFeHByZXNzaW9uLmNwcAppbmRleCAwOGJlMDU1MjYwNTdmYzk1ZDU5OGRhOGI4ZDdh
ZDVlZDk5M2M0YzZmLi40MzczZThiM2YxNzJkOGEwMjU5OTA2NTdiMjQyNWQ1ODk5M2UxMGQzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV4cHJlc3Npb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXhwcmVzc2lvbi5jcHAKQEAgLTM5LDcg
KzM5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgaW5saW5lIGJvb2wgZmVh
dHVyZVdpdGhWYWxpZElkZW50KGNvbnN0IEF0b21pY1N0cmluZyYgbWVkaWFGZWF0dXJlLCBjb25z
dCBDU1NQcmltaXRpdmVWYWx1ZSYgdmFsdWUsIGNvbnN0IE1lZGlhUXVlcnlQYXJzZXJDb250ZXh0
JiBjb250ZXh0KQorc3RhdGljIGlubGluZSBib29sIGZlYXR1cmVXaXRoVmFsaWRJZGVudChjb25z
dCBBdG9tU3RyaW5nJiBtZWRpYUZlYXR1cmUsIGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJiB2YWx1
ZSwgY29uc3QgTWVkaWFRdWVyeVBhcnNlckNvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgaWYgKHZh
bHVlLnByaW1pdGl2ZVR5cGUoKSAhPSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OkNTU19J
REVOVCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTMyLDcgKzEzMiw3IEBAIHN0YXRpYyBp
bmxpbmUgYm9vbCBmZWF0dXJlV2l0aFplcm9Pck9uZShjb25zdCBTdHJpbmcmIG1lZGlhRmVhdHVy
ZSwgY29uc3QgQ1NTUHJpCiAgICAgcmV0dXJuIG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVO
YW1lczo6Z3JpZDsKIH0KIAotc3RhdGljIGlubGluZSBib29sIGlzQXNwZWN0UmF0aW9GZWF0dXJl
KGNvbnN0IEF0b21pY1N0cmluZyYgbWVkaWFGZWF0dXJlKQorc3RhdGljIGlubGluZSBib29sIGlz
QXNwZWN0UmF0aW9GZWF0dXJlKGNvbnN0IEF0b21TdHJpbmcmIG1lZGlhRmVhdHVyZSkKIHsKICAg
ICByZXR1cm4gbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjphc3BlY3RSYXRpbwog
ICAgICAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OmRldmljZUFzcGVj
dFJhdGlvCkBAIC0xNDIsNyArMTQyLDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzQXNwZWN0UmF0
aW9GZWF0dXJlKGNvbnN0IEF0b21pY1N0cmluZyYgbWVkaWFGZWF0dXJlKQogICAgICAgICB8fCBt
ZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6Om1heERldmljZUFzcGVjdFJhdGlvOwog
fQogCi1zdGF0aWMgaW5saW5lIGJvb2wgaXNGZWF0dXJlVmFsaWRXaXRob3V0VmFsdWUoY29uc3Qg
QXRvbWljU3RyaW5nJiBtZWRpYUZlYXR1cmUsIGNvbnN0IE1lZGlhUXVlcnlQYXJzZXJDb250ZXh0
JiBjb250ZXh0KQorc3RhdGljIGlubGluZSBib29sIGlzRmVhdHVyZVZhbGlkV2l0aG91dFZhbHVl
KGNvbnN0IEF0b21TdHJpbmcmIG1lZGlhRmVhdHVyZSwgY29uc3QgTWVkaWFRdWVyeVBhcnNlckNv
bnRleHQmIGNvbnRleHQpCiB7CiAgICAgLy8gTWVkaWEgZmVhdHVyZXMgdGhhdCBhcmUgcHJlZml4
ZWQgYnkgbWluL21heCBjYW5ub3QgYmUgdXNlZCB3aXRob3V0IGEgdmFsdWUuCiAgICAgcmV0dXJu
IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6YW55SG92ZXIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXhwcmVzc2lvbi5oIGIvU291cmNlL1dlYkNv
cmUvY3NzL01lZGlhUXVlcnlFeHByZXNzaW9uLmgKaW5kZXggZDRkYWMxZDI0ZDc3MzJiZTFmMWJk
ZjMzMGQ4YThiYjdlYjc5MjFlZi4uNmM4MzY1NTljYzE3NTQ1Mjk2ZjljOTcwMDJkZDgxNDVlYWQ4
YWY3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFeHByZXNzaW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFeHByZXNzaW9uLmgKQEAgLTQ0
LDcgKzQ0LDcgQEAgY2xhc3MgTWVkaWFRdWVyeUV4cHJlc3Npb24gewogcHVibGljOgogICAgIGV4
cGxpY2l0IE1lZGlhUXVlcnlFeHByZXNzaW9uKGNvbnN0IFN0cmluZyYgbWVkaWFGZWF0dXJlLCBD
U1NQYXJzZXJUb2tlblJhbmdlJiwgTWVkaWFRdWVyeVBhcnNlckNvbnRleHQmKTsKIAotICAgIGNv
bnN0IEF0b21pY1N0cmluZyYgbWVkaWFGZWF0dXJlKCkgY29uc3Q7CisgICAgY29uc3QgQXRvbVN0
cmluZyYgbWVkaWFGZWF0dXJlKCkgY29uc3Q7CiAgICAgQ1NTVmFsdWUqIHZhbHVlKCkgY29uc3Q7
CiAKICAgICBib29sIGlzVmFsaWQoKSBjb25zdDsKQEAgLTU0LDEzICs1NCwxMyBAQCBwdWJsaWM6
CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE1lZGlhUXVlcnlFeHByZXNzaW9uJikgY29uc3Q7
CiAKIHByaXZhdGU6Ci0gICAgQXRvbWljU3RyaW5nIG1fbWVkaWFGZWF0dXJlOworICAgIEF0b21T
dHJpbmcgbV9tZWRpYUZlYXR1cmU7CiAgICAgUmVmUHRyPENTU1ZhbHVlPiBtX3ZhbHVlOwogICAg
IGJvb2wgbV9pc1ZhbGlkIHsgZmFsc2UgfTsKICAgICBtdXRhYmxlIFN0cmluZyBtX3NlcmlhbGl6
YXRpb25DYWNoZTsKIH07CiAKLWlubGluZSBjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhUXVlcnlF
eHByZXNzaW9uOjptZWRpYUZlYXR1cmUoKSBjb25zdAoraW5saW5lIGNvbnN0IEF0b21TdHJpbmcm
IE1lZGlhUXVlcnlFeHByZXNzaW9uOjptZWRpYUZlYXR1cmUoKSBjb25zdAogewogICAgIHJldHVy
biBtX21lZGlhRmVhdHVyZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9QYWdl
UnVsZUNvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUGFnZVJ1bGVDb2xsZWN0b3Iu
Y3BwCmluZGV4IGQ1MzAzMzRjY2Y4MWM1MGQ2YTE0NDM0NzZkYzczYThmZWE1ZGM4NmQuLmEyODQ1
MGE4ZmFjYmU4MDkzNjZmNjZkY2ZlMjA0MDJlMzEzOWQxM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9QYWdlUnVsZUNvbGxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1BhZ2VSdWxlQ29sbGVjdG9yLmNwcApAQCAtOTQsNyArOTQsNyBAQCBzdGF0aWMgYm9vbCBjaGVj
a1BhZ2VTZWxlY3RvckNvbXBvbmVudHMoY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yLCBib29s
IGlzTGVmdAogewogICAgIGZvciAoY29uc3QgQ1NTU2VsZWN0b3IqIGNvbXBvbmVudCA9IHNlbGVj
dG9yOyBjb21wb25lbnQ7IGNvbXBvbmVudCA9IGNvbXBvbmVudC0+dGFnSGlzdG9yeSgpKSB7CiAg
ICAgICAgIGlmIChjb21wb25lbnQtPm1hdGNoKCkgPT0gQ1NTU2VsZWN0b3I6OlRhZykgewotICAg
ICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUgPSBjb21wb25lbnQtPnRhZ1FO
YW1lKCkubG9jYWxOYW1lKCk7CisgICAgICAgICAgICBjb25zdCBBdG9tU3RyaW5nJiBsb2NhbE5h
bWUgPSBjb21wb25lbnQtPnRhZ1FOYW1lKCkubG9jYWxOYW1lKCk7CiAgICAgICAgICAgICBpZiAo
bG9jYWxOYW1lICE9IHN0YXJBdG9tKCkgJiYgbG9jYWxOYW1lICE9IHBhZ2VOYW1lKQogICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfSBlbHNlIGlmIChjb21wb25lbnQtPm1h
dGNoKCkgPT0gQ1NTU2VsZWN0b3I6OlBhZ2VQc2V1ZG9DbGFzcykgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCBl
ZDFmZjIzZmFhODhmNDgxNWUxYjVlZDFiMWVhNjAwOTQ2NjhmMWMyLi4zYjIwZDQxMzMzNzUzM2Q2
Y2IzYzU4Y2IzZDEwNGYwZjA0YjVlNjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
UHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtMTI2LDcgKzEyNiw3IEBA
IHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgc19zaG91bGREZWxpdmVyOwogCiAgICAgc3RkOjp1
bmlxdWVfcHRyPE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwPiBtX211dGF0aW9uUmVjaXBp
ZW50czsKLSAgICBBdG9taWNTdHJpbmcgbV9vbGRWYWx1ZTsKKyAgICBBdG9tU3RyaW5nIG1fb2xk
VmFsdWU7CiAgICAgUmVmUHRyPEVsZW1lbnQ+IG1fY3VzdG9tRWxlbWVudDsKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlRmVhdHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvUnVsZUZlYXR1cmUuY3BwCmluZGV4IGE0ODhiODVjZDc4ZTcwMmE1NjlhMzAzOWI2Y2Qz
ZGY0MDgwNGFjYjQuLmRmZmRhNmY1MWRmOTU0ZDIwNmYwM2QwYzczNTYwZGRhMzkyZDE0MzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlRmVhdHVyZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL1J1bGVGZWF0dXJlLmNwcApAQCAtMjE3LDcgKzIxNyw3IEBAIHZvaWQgUnVs
ZUZlYXR1cmVTZXQ6OmFkZChjb25zdCBSdWxlRmVhdHVyZVNldCYgb3RoZXIpCiAgICAgdXNlc0Zp
cnN0TGV0dGVyUnVsZXMgPSB1c2VzRmlyc3RMZXR0ZXJSdWxlcyB8fCBvdGhlci51c2VzRmlyc3RM
ZXR0ZXJSdWxlczsKIH0KIAotdm9pZCBSdWxlRmVhdHVyZVNldDo6cmVnaXN0ZXJDb250ZW50QXR0
cmlidXRlKGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlTmFtZSkKK3ZvaWQgUnVsZUZlYXR1
cmVTZXQ6OnJlZ2lzdGVyQ29udGVudEF0dHJpYnV0ZShjb25zdCBBdG9tU3RyaW5nJiBhdHRyaWJ1
dGVOYW1lKQogewogICAgIGNvbnRlbnRBdHRyaWJ1dGVOYW1lc0luUnVsZXMuYWRkKGF0dHJpYnV0
ZU5hbWUuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSk7CiAgICAgYXR0cmlidXRlQ2Fub25pY2Fs
TG9jYWxOYW1lc0luUnVsZXMuYWRkKGF0dHJpYnV0ZU5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL1J1bGVGZWF0dXJlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZUZlYXR1
cmUuaAppbmRleCBmOGM5NDAzNWMzMTVmNDhmY2FhZjMyMDRhZmRlMzlkOGI1MjVmNDhiLi4yNWVh
NGVjZDhhYWRjOWI1MzI3M2U4YTgyNWE1NzNmMjM5NzEwMDYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvUnVsZUZlYXR1cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZUZl
YXR1cmUuaApAQCAtMjUsOCArMjUsOCBAQAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUg
PHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmlu
Z0hhc2guaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvQXRvbVN0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01Nywy
MCArNTcsMjAgQEAgc3RydWN0IFJ1bGVGZWF0dXJlU2V0IHsKICAgICB2b2lkIGNsZWFyKCk7CiAg
ICAgdm9pZCBzaHJpbmtUb0ZpdCgpOwogICAgIHZvaWQgY29sbGVjdEZlYXR1cmVzKGNvbnN0IFJ1
bGVEYXRhJik7Ci0gICAgdm9pZCByZWdpc3RlckNvbnRlbnRBdHRyaWJ1dGUoY29uc3QgQXRvbWlj
U3RyaW5nJik7CisgICAgdm9pZCByZWdpc3RlckNvbnRlbnRBdHRyaWJ1dGUoY29uc3QgQXRvbVN0
cmluZyYpOwogCi0gICAgSGFzaFNldDxBdG9taWNTdHJpbmc+IGlkc0luUnVsZXM7Ci0gICAgSGFz
aFNldDxBdG9taWNTdHJpbmc+IGlkc01hdGNoaW5nQW5jZXN0b3JzSW5SdWxlczsKLSAgICBIYXNo
U2V0PEF0b21pY1N0cmluZz4gYXR0cmlidXRlQ2Fub25pY2FsTG9jYWxOYW1lc0luUnVsZXM7Ci0g
ICAgSGFzaFNldDxBdG9taWNTdHJpbmc+IGF0dHJpYnV0ZUxvY2FsTmFtZXNJblJ1bGVzOwotICAg
IEhhc2hTZXQ8QXRvbWljU3RyaW5nPiBjb250ZW50QXR0cmlidXRlTmFtZXNJblJ1bGVzOworICAg
IEhhc2hTZXQ8QXRvbVN0cmluZz4gaWRzSW5SdWxlczsKKyAgICBIYXNoU2V0PEF0b21TdHJpbmc+
IGlkc01hdGNoaW5nQW5jZXN0b3JzSW5SdWxlczsKKyAgICBIYXNoU2V0PEF0b21TdHJpbmc+IGF0
dHJpYnV0ZUNhbm9uaWNhbExvY2FsTmFtZXNJblJ1bGVzOworICAgIEhhc2hTZXQ8QXRvbVN0cmlu
Zz4gYXR0cmlidXRlTG9jYWxOYW1lc0luUnVsZXM7CisgICAgSGFzaFNldDxBdG9tU3RyaW5nPiBj
b250ZW50QXR0cmlidXRlTmFtZXNJblJ1bGVzOwogICAgIFZlY3RvcjxSdWxlRmVhdHVyZT4gc2li
bGluZ1J1bGVzOwogICAgIFZlY3RvcjxSdWxlRmVhdHVyZT4gdW5jb21tb25BdHRyaWJ1dGVSdWxl
czsKICAgICAKLSAgICBIYXNoTWFwPEF0b21pY1N0cmluZywgc3RkOjp1bmlxdWVfcHRyPFZlY3Rv
cjxSdWxlRmVhdHVyZT4+PiBjbGFzc1J1bGVzOwotICAgIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBz
dGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFJ1bGVGZWF0dXJlPj4+IGF0dHJpYnV0ZVJ1bGVzOwotICAg
IEhhc2hTZXQ8QXRvbWljU3RyaW5nPiBjbGFzc2VzQWZmZWN0aW5nSG9zdDsKLSAgICBIYXNoU2V0
PEF0b21pY1N0cmluZz4gYXR0cmlidXRlc0FmZmVjdGluZ0hvc3Q7CisgICAgSGFzaE1hcDxBdG9t
U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFJ1bGVGZWF0dXJlPj4+IGNsYXNzUnVsZXM7
CisgICAgSGFzaE1hcDxBdG9tU3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFJ1bGVGZWF0
dXJlPj4+IGF0dHJpYnV0ZVJ1bGVzOworICAgIEhhc2hTZXQ8QXRvbVN0cmluZz4gY2xhc3Nlc0Fm
ZmVjdGluZ0hvc3Q7CisgICAgSGFzaFNldDxBdG9tU3RyaW5nPiBhdHRyaWJ1dGVzQWZmZWN0aW5n
SG9zdDsKIAogICAgIGJvb2wgdXNlc0ZpcnN0TGluZVJ1bGVzIHsgZmFsc2UgfTsKICAgICBib29s
IHVzZXNGaXJzdExldHRlclJ1bGVzIHsgZmFsc2UgfTsKQEAgLTgyLDcgKzgyLDcgQEAgcHJpdmF0
ZToKICAgICBzdHJ1Y3QgU2VsZWN0b3JGZWF0dXJlcyB7CiAgICAgICAgIGJvb2wgaGFzU2libGlu
Z1NlbGVjdG9yIHsgZmFsc2UgfTsKIAotICAgICAgICBWZWN0b3I8c3RkOjpwYWlyPEF0b21pY1N0
cmluZywgTWF0Y2hFbGVtZW50PiwgMzI+IGNsYXNzZXM7CisgICAgICAgIFZlY3RvcjxzdGQ6OnBh
aXI8QXRvbVN0cmluZywgTWF0Y2hFbGVtZW50PiwgMzI+IGNsYXNzZXM7CiAgICAgICAgIFZlY3Rv
cjxzdGQ6OnBhaXI8Y29uc3QgQ1NTU2VsZWN0b3IqLCBNYXRjaEVsZW1lbnQ+LCAzMj4gYXR0cmli
dXRlczsKICAgICB9OwogICAgIHZvaWQgcmVjdXJzaXZlbHlDb2xsZWN0RmVhdHVyZXNGcm9tU2Vs
ZWN0b3IoU2VsZWN0b3JGZWF0dXJlcyYsIGNvbnN0IENTU1NlbGVjdG9yJiwgTWF0Y2hFbGVtZW50
ID0gTWF0Y2hFbGVtZW50OjpTdWJqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9SdWxlU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcAppbmRleCAwZWJh
NDJkZjQ1MmU4ZjJkZWM5YTA4ZDJlYzhhNGMwZGU2ODhlMjMyLi5mYTZiOTEyMDIxM2VjNTRiYjY1
OTAzY2ZhZTY2OWJkNDY2ZmJiMDI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVs
ZVNldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwCkBAIC02MSw3ICs2
MSw3IEBAIHN0YXRpYyBpbmxpbmUgTWF0Y2hCYXNlZE9uUnVsZUhhc2ggY29tcHV0ZU1hdGNoQmFz
ZWRPblJ1bGVIYXNoKGNvbnN0IENTU1NlbGVjdG9yCiAKICAgICBpZiAoc2VsZWN0b3IubWF0Y2go
KSA9PSBDU1NTZWxlY3Rvcjo6VGFnKSB7CiAgICAgICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z1F1YWxpZmllZE5hbWUgPSBzZWxlY3Rvci50YWdRTmFtZSgpOwotICAgICAgICBjb25zdCBBdG9t
aWNTdHJpbmcmIHNlbGVjdG9yTmFtZXNwYWNlID0gdGFnUXVhbGlmaWVkTmFtZS5uYW1lc3BhY2VV
UkkoKTsKKyAgICAgICAgY29uc3QgQXRvbVN0cmluZyYgc2VsZWN0b3JOYW1lc3BhY2UgPSB0YWdR
dWFsaWZpZWROYW1lLm5hbWVzcGFjZVVSSSgpOwogICAgICAgICBpZiAoc2VsZWN0b3JOYW1lc3Bh
Y2UgPT0gc3RhckF0b20oKSB8fCBzZWxlY3Rvck5hbWVzcGFjZSA9PSB4aHRtbE5hbWVzcGFjZVVS
SSkgewogICAgICAgICAgICAgaWYgKHRhZ1F1YWxpZmllZE5hbWUgPT0gYW55UU5hbWUoKSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gTWF0Y2hCYXNlZE9uUnVsZUhhc2g6OlVuaXZlcnNhbDsKQEAg
LTE3Niw3ICsxNzYsNyBAQCBSdWxlU2V0OjpSdWxlU2V0KCkgPSBkZWZhdWx0OwogCiBSdWxlU2V0
Ojp+UnVsZVNldCgpID0gZGVmYXVsdDsKIAotdm9pZCBSdWxlU2V0OjphZGRUb1J1bGVTZXQoY29u
c3QgQXRvbWljU3RyaW5nJiBrZXksIEF0b21SdWxlTWFwJiBtYXAsIGNvbnN0IFJ1bGVEYXRhJiBy
dWxlRGF0YSkKK3ZvaWQgUnVsZVNldDo6YWRkVG9SdWxlU2V0KGNvbnN0IEF0b21TdHJpbmcmIGtl
eSwgQXRvbVJ1bGVNYXAmIG1hcCwgY29uc3QgUnVsZURhdGEmIHJ1bGVEYXRhKQogewogICAgIGlm
IChrZXkuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTE4Niw3ICsxODYsNyBAQCB2b2lk
IFJ1bGVTZXQ6OmFkZFRvUnVsZVNldChjb25zdCBBdG9taWNTdHJpbmcmIGtleSwgQXRvbVJ1bGVN
YXAmIG1hcCwgY29uc3QgUnVsZQogICAgIHJ1bGVzLT5hcHBlbmQocnVsZURhdGEpOwogfQogCi1z
dGF0aWMgdW5zaWduZWQgcnVsZXNDb3VudEZvck5hbWUoY29uc3QgUnVsZVNldDo6QXRvbVJ1bGVN
YXAmIG1hcCwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQorc3RhdGljIHVuc2lnbmVkIHJ1bGVz
Q291bnRGb3JOYW1lKGNvbnN0IFJ1bGVTZXQ6OkF0b21SdWxlTWFwJiBtYXAsIGNvbnN0IEF0b21T
dHJpbmcmIG5hbWUpCiB7CiAgICAgaWYgKGNvbnN0IGF1dG8qIHJ1bGVzID0gbWFwLmdldChuYW1l
KSkKICAgICAgICAgcmV0dXJuIHJ1bGVzLT5zaXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvUnVsZVNldC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuaAppbmRleCBi
YTVkYzYwZmUzNGM2Yjc2NzgyNDY3MzRkMzIyYWMyZjdhMDJmNTdmLi4yMzgwZmU3MGNhOGJmNmVj
OGFhMDVhMzIzMWQxMDVkYzM4MjAzODVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
UnVsZVNldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmgKQEAgLTI3LDggKzI3
LDggQEAKICNpbmNsdWRlICJTdHlsZVJ1bGUuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgog
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5n
Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nSGFzaC5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L0F0b21TdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nSGFzaC5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTExNSwyMyArMTE1LDIzIEBAIHB1YmxpYzoK
ICAgICB+UnVsZVNldCgpOwogCiAgICAgdHlwZWRlZiBWZWN0b3I8UnVsZURhdGEsIDE+IFJ1bGVE
YXRhVmVjdG9yOwotICAgIHR5cGVkZWYgSGFzaE1hcDxBdG9taWNTdHJpbmcsIHN0ZDo6dW5pcXVl
X3B0cjxSdWxlRGF0YVZlY3Rvcj4+IEF0b21SdWxlTWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxB
dG9tU3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8UnVsZURhdGFWZWN0b3I+PiBBdG9tUnVsZU1hcDsK
IAogICAgIHZvaWQgYWRkUnVsZXNGcm9tU2hlZXQoU3R5bGVTaGVldENvbnRlbnRzJiwgY29uc3Qg
TWVkaWFRdWVyeUV2YWx1YXRvciYsIFN0eWxlUmVzb2x2ZXIqID0gMCk7CiAKICAgICB2b2lkIGFk
ZFN0eWxlUnVsZShTdHlsZVJ1bGUqKTsKICAgICB2b2lkIGFkZFJ1bGUoU3R5bGVSdWxlKiwgdW5z
aWduZWQgc2VsZWN0b3JJbmRleCwgdW5zaWduZWQgc2VsZWN0b3JMaXN0SW5kZXgpOwogICAgIHZv
aWQgYWRkUGFnZVJ1bGUoU3R5bGVSdWxlUGFnZSopOwotICAgIHZvaWQgYWRkVG9SdWxlU2V0KGNv
bnN0IEF0b21pY1N0cmluZyYga2V5LCBBdG9tUnVsZU1hcCYsIGNvbnN0IFJ1bGVEYXRhJik7Cisg
ICAgdm9pZCBhZGRUb1J1bGVTZXQoY29uc3QgQXRvbVN0cmluZyYga2V5LCBBdG9tUnVsZU1hcCYs
IGNvbnN0IFJ1bGVEYXRhJik7CiAgICAgdm9pZCBzaHJpbmtUb0ZpdCgpOwogICAgIHZvaWQgZGlz
YWJsZUF1dG9TaHJpbmtUb0ZpdCgpIHsgbV9hdXRvU2hyaW5rVG9GaXRFbmFibGVkID0gZmFsc2U7
IH0KIAogICAgIGNvbnN0IFJ1bGVGZWF0dXJlU2V0JiBmZWF0dXJlcygpIGNvbnN0IHsgcmV0dXJu
IG1fZmVhdHVyZXM7IH0KIAotICAgIGNvbnN0IFJ1bGVEYXRhVmVjdG9yKiBpZFJ1bGVzKGNvbnN0
IEF0b21pY1N0cmluZyYga2V5KSBjb25zdCB7IHJldHVybiBtX2lkUnVsZXMuZ2V0KGtleSk7IH0K
LSAgICBjb25zdCBSdWxlRGF0YVZlY3RvciogY2xhc3NSdWxlcyhjb25zdCBBdG9taWNTdHJpbmcm
IGtleSkgY29uc3QgeyByZXR1cm4gbV9jbGFzc1J1bGVzLmdldChrZXkpOyB9Ci0gICAgY29uc3Qg
UnVsZURhdGFWZWN0b3IqIHRhZ1J1bGVzKGNvbnN0IEF0b21pY1N0cmluZyYga2V5LCBib29sIGlz
SFRNTE5hbWUpIGNvbnN0OwotICAgIGNvbnN0IFJ1bGVEYXRhVmVjdG9yKiBzaGFkb3dQc2V1ZG9F
bGVtZW50UnVsZXMoY29uc3QgQXRvbWljU3RyaW5nJiBrZXkpIGNvbnN0IHsgcmV0dXJuIG1fc2hh
ZG93UHNldWRvRWxlbWVudFJ1bGVzLmdldChrZXkpOyB9CisgICAgY29uc3QgUnVsZURhdGFWZWN0
b3IqIGlkUnVsZXMoY29uc3QgQXRvbVN0cmluZyYga2V5KSBjb25zdCB7IHJldHVybiBtX2lkUnVs
ZXMuZ2V0KGtleSk7IH0KKyAgICBjb25zdCBSdWxlRGF0YVZlY3RvciogY2xhc3NSdWxlcyhjb25z
dCBBdG9tU3RyaW5nJiBrZXkpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NSdWxlcy5nZXQoa2V5KTsg
fQorICAgIGNvbnN0IFJ1bGVEYXRhVmVjdG9yKiB0YWdSdWxlcyhjb25zdCBBdG9tU3RyaW5nJiBr
ZXksIGJvb2wgaXNIVE1MTmFtZSkgY29uc3Q7CisgICAgY29uc3QgUnVsZURhdGFWZWN0b3IqIHNo
YWRvd1BzZXVkb0VsZW1lbnRSdWxlcyhjb25zdCBBdG9tU3RyaW5nJiBrZXkpIGNvbnN0IHsgcmV0
dXJuIG1fc2hhZG93UHNldWRvRWxlbWVudFJ1bGVzLmdldChrZXkpOyB9CiAgICAgY29uc3QgUnVs
ZURhdGFWZWN0b3IqIGxpbmtQc2V1ZG9DbGFzc1J1bGVzKCkgY29uc3QgeyByZXR1cm4gJm1fbGlu
a1BzZXVkb0NsYXNzUnVsZXM7IH0KICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgY29uc3Qg
UnVsZURhdGFWZWN0b3IqIGN1ZVBzZXVkb1J1bGVzKCkgY29uc3QgeyByZXR1cm4gJm1fY3VlUHNl
dWRvUnVsZXM7IH0KQEAgLTE3MSw3ICsxNzEsNyBAQCBwcml2YXRlOgogICAgIFJ1bGVGZWF0dXJl
U2V0IG1fZmVhdHVyZXM7CiB9OwogCi1pbmxpbmUgY29uc3QgUnVsZVNldDo6UnVsZURhdGFWZWN0
b3IqIFJ1bGVTZXQ6OnRhZ1J1bGVzKGNvbnN0IEF0b21pY1N0cmluZyYga2V5LCBib29sIGlzSFRN
TE5hbWUpIGNvbnN0CitpbmxpbmUgY29uc3QgUnVsZVNldDo6UnVsZURhdGFWZWN0b3IqIFJ1bGVT
ZXQ6OnRhZ1J1bGVzKGNvbnN0IEF0b21TdHJpbmcmIGtleSwgYm9vbCBpc0hUTUxOYW1lKSBjb25z
dAogewogICAgIGNvbnN0IEF0b21SdWxlTWFwKiB0YWdSdWxlczsKICAgICBpZiAoaXNIVE1MTmFt
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKaW5kZXggNzBjODNiOGVhMzJh
ZTViYTU5MjJkZDJlOWZkMzRjMmVlZWNkN2RkYi4uMmRiMzFkZDVmZTY5MTJlNjBkYWViZmUzNGE5
YjQyZGRiNjA1NjE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hl
Y2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKQEAg
LTQ1MSw5ICs0NTEsOSBAQCBTZWxlY3RvckNoZWNrZXI6Ok1hdGNoUmVzdWx0IFNlbGVjdG9yQ2hl
Y2tlcjo6bWF0Y2hSZWN1cnNpdmVseShDaGVja2luZ0NvbnRleHQmCiAgICAgcmV0dXJuIE1hdGNo
UmVzdWx0OjpmYWlscyhNYXRjaDo6U2VsZWN0b3JGYWlsc0NvbXBsZXRlbHkpOwogfQogCi1zdGF0
aWMgYm9vbCBhdHRyaWJ1dGVWYWx1ZU1hdGNoZXMoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUs
IENTU1NlbGVjdG9yOjpNYXRjaCBtYXRjaCwgY29uc3QgQXRvbWljU3RyaW5nJiBzZWxlY3RvclZh
bHVlLCBib29sIGNhc2VTZW5zaXRpdmUpCitzdGF0aWMgYm9vbCBhdHRyaWJ1dGVWYWx1ZU1hdGNo
ZXMoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUsIENTU1NlbGVjdG9yOjpNYXRjaCBtYXRjaCwg
Y29uc3QgQXRvbVN0cmluZyYgc2VsZWN0b3JWYWx1ZSwgYm9vbCBjYXNlU2Vuc2l0aXZlKQogewot
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSBhdHRyaWJ1dGUudmFsdWUoKTsKKyAgICBj
b25zdCBBdG9tU3RyaW5nJiB2YWx1ZSA9IGF0dHJpYnV0ZS52YWx1ZSgpOwogICAgIEFTU0VSVCgh
dmFsdWUuaXNOdWxsKCkpOwogCiAgICAgc3dpdGNoIChtYXRjaCkgewpAQCAtNTU5LDcgKzU1OSw3
IEBAIHN0YXRpYyBib29sIGFueUF0dHJpYnV0ZU1hdGNoZXMoY29uc3QgRWxlbWVudCYgZWxlbWVu
dCwgY29uc3QgQ1NTU2VsZWN0b3ImIHNlbGVjCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29s
IFNlbGVjdG9yQ2hlY2tlcjo6YXR0cmlidXRlU2VsZWN0b3JNYXRjaGVzKGNvbnN0IEVsZW1lbnQm
IGVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IEF0b21p
Y1N0cmluZyYgYXR0cmlidXRlVmFsdWUsIGNvbnN0IENTU1NlbGVjdG9yJiBzZWxlY3RvcikKK2Jv
b2wgU2VsZWN0b3JDaGVja2VyOjphdHRyaWJ1dGVTZWxlY3Rvck1hdGNoZXMoY29uc3QgRWxlbWVu
dCYgZWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgY29uc3QgQXRv
bVN0cmluZyYgYXR0cmlidXRlVmFsdWUsIGNvbnN0IENTU1NlbGVjdG9yJiBzZWxlY3RvcikKIHsK
ICAgICBBU1NFUlQoc2VsZWN0b3IuaXNBdHRyaWJ1dGVTZWxlY3RvcigpKTsKICAgICBhdXRvJiBz
ZWxlY3RvckF0dHJpYnV0ZSA9IHNlbGVjdG9yLmF0dHJpYnV0ZSgpOwpAQCAtNjM2LDExICs2MzYs
MTEgQEAgc3RhdGljIGlubGluZSBib29sIHRhZ01hdGNoZXMoY29uc3QgRWxlbWVudCYgZWxlbWVu
dCwgY29uc3QgQ1NTU2VsZWN0b3ImIHNpbXBsZVMKICAgICBpZiAodGFnUU5hbWUgPT0gYW55UU5h
bWUoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGxv
Y2FsTmFtZSA9IChlbGVtZW50LmlzSFRNTEVsZW1lbnQoKSAmJiBlbGVtZW50LmRvY3VtZW50KCku
aXNIVE1MRG9jdW1lbnQoKSkgPyBzaW1wbGVTZWxlY3Rvci50YWdMb3dlcmNhc2VMb2NhbE5hbWUo
KSA6IHRhZ1FOYW1lLmxvY2FsTmFtZSgpOworICAgIGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsTmFt
ZSA9IChlbGVtZW50LmlzSFRNTEVsZW1lbnQoKSAmJiBlbGVtZW50LmRvY3VtZW50KCkuaXNIVE1M
RG9jdW1lbnQoKSkgPyBzaW1wbGVTZWxlY3Rvci50YWdMb3dlcmNhc2VMb2NhbE5hbWUoKSA6IHRh
Z1FOYW1lLmxvY2FsTmFtZSgpOwogCiAgICAgaWYgKGxvY2FsTmFtZSAhPSBzdGFyQXRvbSgpICYm
IGxvY2FsTmFtZSAhPSBlbGVtZW50LmxvY2FsTmFtZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkkgPSB0YWdRTmFtZS5uYW1lc3Bh
Y2VVUkkoKTsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBuYW1lc3BhY2VVUkkgPSB0YWdRTmFtZS5u
YW1lc3BhY2VVUkkoKTsKICAgICByZXR1cm4gbmFtZXNwYWNlVVJJID09IHN0YXJBdG9tKCkgfHwg
bmFtZXNwYWNlVVJJID09IGVsZW1lbnQubmFtZXNwYWNlVVJJKCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TZWxlY3RvckNoZWNrZXIuaAppbmRleCAzZGJiMTEzZGJjMDQ5MmE0ZmViMTA0OTU3ZTI5MzU3
OWU5Y2Y4ZWYxLi42MGI3ZWVhNTE3MDU5MWE5MzFhOGYzNWRjNjEzZjA0YThjZDNlNjkyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oCkBAIC05Niw3ICs5Niw3IEBAIHB1YmxpYzoK
IAogICAgIHN0YXRpYyBib29sIGlzQ29tbW9uUHNldWRvQ2xhc3NTZWxlY3Rvcihjb25zdCBDU1NT
ZWxlY3RvciopOwogICAgIHN0YXRpYyBib29sIG1hdGNoZXNGb2N1c1BzZXVkb0NsYXNzKGNvbnN0
IEVsZW1lbnQmKTsKLSAgICBzdGF0aWMgYm9vbCBhdHRyaWJ1dGVTZWxlY3Rvck1hdGNoZXMoY29u
c3QgRWxlbWVudCYsIGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmIGF0
dHJpYnV0ZVZhbHVlLCBjb25zdCBDU1NTZWxlY3RvciYpOworICAgIHN0YXRpYyBib29sIGF0dHJp
YnV0ZVNlbGVjdG9yTWF0Y2hlcyhjb25zdCBFbGVtZW50JiwgY29uc3QgUXVhbGlmaWVkTmFtZSYs
IGNvbnN0IEF0b21TdHJpbmcmIGF0dHJpYnV0ZVZhbHVlLCBjb25zdCBDU1NTZWxlY3RvciYpOwog
CiAgICAgZW51bSBMaW5rTWF0Y2hNYXNrIHsgTWF0Y2hEZWZhdWx0ID0gMCwgTWF0Y2hMaW5rID0g
MSwgTWF0Y2hWaXNpdGVkID0gMiwgTWF0Y2hBbGwgPSBNYXRjaExpbmsgfCBNYXRjaFZpc2l0ZWQg
fTsKICAgICBzdGF0aWMgdW5zaWduZWQgZGV0ZXJtaW5lTGlua01hdGNoVHlwZShjb25zdCBDU1NT
ZWxlY3RvciopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tl
clRlc3RGdW5jdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXJUZXN0
RnVuY3Rpb25zLmgKaW5kZXggNTg0OGZiZTM1MjNiZjA2MjM3YmM5YjY2OTlmYWQyNzA1NjEzNTFj
Ny4uYzNmNzg0YjU3Yzk0MDZkYjFkMDBjZDhmYjRhZGNhNjcxOWIyNjA2ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlclRlc3RGdW5jdGlvbnMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyVGVzdEZ1bmN0aW9ucy5oCkBAIC0xNzIs
OSArMTcyLDkgQEAgQUxXQVlTX0lOTElORSBib29sIGNvbnRhaW5zbGFuZ3VhZ2VTdWJ0YWdNYXRj
aGluZ1JhbmdlKFN0cmluZ1ZpZXcgbGFuZ3VhZ2UsIFN0cmkKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLUFMV0FZU19JTkxJTkUgYm9vbCBtYXRjaGVzTGFuZ1BzZXVkb0NsYXNzKGNvbnN0IEVsZW1l
bnQmIGVsZW1lbnQsIGNvbnN0IFZlY3RvcjxBdG9taWNTdHJpbmc+JiBhcmd1bWVudExpc3QpCitB
TFdBWVNfSU5MSU5FIGJvb2wgbWF0Y2hlc0xhbmdQc2V1ZG9DbGFzcyhjb25zdCBFbGVtZW50JiBl
bGVtZW50LCBjb25zdCBWZWN0b3I8QXRvbVN0cmluZz4mIGFyZ3VtZW50TGlzdCkKIHsKLSAgICBB
dG9taWNTdHJpbmcgbGFuZ3VhZ2U7CisgICAgQXRvbVN0cmluZyBsYW5ndWFnZTsKICNpZiBFTkFC
TEUoVklERU9fVFJBQ0spCiAgICAgaWYgKGlzPFdlYlZUVEVsZW1lbnQ+KGVsZW1lbnQpKQogICAg
ICAgICBsYW5ndWFnZSA9IGRvd25jYXN0PFdlYlZUVEVsZW1lbnQ+KGVsZW1lbnQpLmxhbmd1YWdl
KCk7CkBAIC0xODksNyArMTg5LDcgQEAgQUxXQVlTX0lOTElORSBib29sIG1hdGNoZXNMYW5nUHNl
dWRvQ2xhc3MoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgVmVjdG9yPEEKICAgICAvLyBh
cyBzcGVjaWZpZWQgaW4gd3d3LmlldGYub3JnL3JmYy9yZmM0NjQ3LnR4dC4KICAgICBTdHJpbmdW
aWV3IGxhbmd1YWdlU3RyaW5nVmlldyA9IGxhbmd1YWdlLnN0cmluZygpOwogICAgIHVuc2lnbmVk
IGxhbmd1YWdlTGVuZ3RoID0gbGFuZ3VhZ2UubGVuZ3RoKCk7Ci0gICAgZm9yIChjb25zdCBBdG9t
aWNTdHJpbmcmIHJhbmdlIDogYXJndW1lbnRMaXN0KSB7CisgICAgZm9yIChjb25zdCBBdG9tU3Ry
aW5nJiByYW5nZSA6IGFyZ3VtZW50TGlzdCkgewogICAgICAgICBpZiAocmFuZ2UuaXNFbXB0eSgp
KQogICAgICAgICAgICAgY29udGludWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TZWxlY3RvckZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JGaWx0ZXIu
Y3BwCmluZGV4IDg4NjJjNjkwNDJiYmQxZDE1ODFlZDVmNzVkMmNjNGI5MGJhYjhkMzAuLjBiNjVl
NjgwMzIyZjllMTVkNWE5YWJjMDQ5MWJiYzIzZDNkNjkzMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TZWxlY3RvckZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1Nl
bGVjdG9yRmlsdGVyLmNwcApAQCAtMzgsMTQgKzM4LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IC8vIFNhbHQgdG8gc2VwYXJhdGUgb3RoZXJ3aXNlIGlkZW50aWNhbCBzdHJpbmcgaGFzaGVzIHNv
IGEgY2xhc3Mtc2VsZWN0b3IgbGlrZSAuYXJ0aWNsZSB3b24ndCBtYXRjaCA8YXJ0aWNsZT4gZWxl
bWVudHMuCiBlbnVtIHsgVGFnTmFtZVNhbHQgPSAxMywgSWRTYWx0ID0gMTcsIENsYXNzU2FsdCA9
IDE5LCBBdHRyaWJ1dGVTYWx0ID0gMjMgfTsKIAotc3RhdGljIGJvb2wgaXNFeGNsdWRlZEF0dHJp
YnV0ZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCitzdGF0aWMgYm9vbCBpc0V4Y2x1ZGVkQXR0
cmlidXRlKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUpCiB7CiAgICAgcmV0dXJuIG5hbWUgPT0gSFRN
TE5hbWVzOjpjbGFzc0F0dHItPmxvY2FsTmFtZSgpIHx8IG5hbWUgPT0gSFRNTE5hbWVzOjppZEF0
dHItPmxvY2FsTmFtZSgpIHx8IG5hbWUgPT0gSFRNTE5hbWVzOjpzdHlsZUF0dHItPmxvY2FsTmFt
ZSgpOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgY29sbGVjdEVsZW1lbnRJZGVudGlmaWVySGFz
aGVzKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIFZlY3Rvcjx1bnNpZ25lZCwgND4mIGlkZW50aWZp
ZXJIYXNoZXMpCiB7Ci0gICAgQXRvbWljU3RyaW5nIHRhZ0xvd2VyY2FzZUxvY2FsTmFtZSA9IGVs
ZW1lbnQubG9jYWxOYW1lKCkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKKyAgICBBdG9tU3Ry
aW5nIHRhZ0xvd2VyY2FzZUxvY2FsTmFtZSA9IGVsZW1lbnQubG9jYWxOYW1lKCkuY29udmVydFRv
QVNDSUlMb3dlcmNhc2UoKTsKICAgICBpZGVudGlmaWVySGFzaGVzLmFwcGVuZCh0YWdMb3dlcmNh
c2VMb2NhbE5hbWUuaW1wbCgpLT5leGlzdGluZ0hhc2goKSAqIFRhZ05hbWVTYWx0KTsKIAogICAg
IGF1dG8mIGlkID0gZWxlbWVudC5pZEZvclN0eWxlUmVzb2x1dGlvbigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oCmluZGV4IGFkNWIwMmRiYWExYWFkZGVlODM3Mzc2ZGMw
ODBlYTVhNWE3Y2FhM2EuLjlhMTkxZDE3ZGQ4ZTNlZGNjMWMxMzBjMjY1OTBlMGNhNmY0ZTM2YTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDdXN0b20uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmgKQEAgLTE0NSw4ICsxNDUs
OCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZVN0cm9rZVdpZHRoKFN0eWxl
UmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwogICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWVTdHJva2VD
b2xvcihTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmKTsKIAotICAgIHN0YXRpYyB2b2lkIGFwcGx5
SW5pdGlhbEN1c3RvbVByb3BlcnR5KFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NSZWdpc3RlcmVk
Q3VzdG9tUHJvcGVydHkqLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpOwotICAgIHN0YXRpYyB2
b2lkIGFwcGx5SW5oZXJpdEN1c3RvbVByb3BlcnR5KFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NS
ZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHkqLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpOworICAg
IHN0YXRpYyB2b2lkIGFwcGx5SW5pdGlhbEN1c3RvbVByb3BlcnR5KFN0eWxlUmVzb2x2ZXImLCBj
b25zdCBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHkqLCBjb25zdCBBdG9tU3RyaW5nJiBuYW1l
KTsKKyAgICBzdGF0aWMgdm9pZCBhcHBseUluaGVyaXRDdXN0b21Qcm9wZXJ0eShTdHlsZVJlc29s
dmVyJiwgY29uc3QgQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5KiwgY29uc3QgQXRvbVN0cmlu
ZyYgbmFtZSk7CiAgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZUN1c3RvbVByb3BlcnR5KFN0eWxl
UmVzb2x2ZXImLCBjb25zdCBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHkqLCBDU1NDdXN0b21Q
cm9wZXJ0eVZhbHVlJik7CiAKIHByaXZhdGU6CkBAIC05MDEsMTIgKzkwMSwxMiBAQCBpbmxpbmUg
dm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVGb250RmFtaWx5KFN0eWxlUmVzb2x2
ZXImIHN0eWxlUmVzb2x2ZQogICAgIC8vIEJlZm9yZSBtYXBwaW5nIGluIGEgbmV3IGZvbnQtZmFt
aWx5IHByb3BlcnR5LCB3ZSBzaG91bGQgcmVzZXQgdGhlIGdlbmVyaWMgZmFtaWx5LgogICAgIGJv
b2wgb2xkRmFtaWx5VXNlZEZpeGVkRGVmYXVsdFNpemUgPSBmb250RGVzY3JpcHRpb24udXNlRml4
ZWREZWZhdWx0U2l6ZSgpOwogCi0gICAgVmVjdG9yPEF0b21pY1N0cmluZz4gZmFtaWxpZXM7Cisg
ICAgVmVjdG9yPEF0b21TdHJpbmc+IGZhbWlsaWVzOwogICAgIGZhbWlsaWVzLnJlc2VydmVJbml0
aWFsQ2FwYWNpdHkodmFsdWVMaXN0Lmxlbmd0aCgpKTsKIAogICAgIGZvciAoYXV0byYgaXRlbSA6
IHZhbHVlTGlzdCkgewogICAgICAgICBhdXRvJiBjb250ZW50VmFsdWUgPSBkb3duY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZT4oaXRlbS5nZXQoKSk7Ci0gICAgICAgIEF0b21pY1N0cmluZyBmYW1pbHk7
CisgICAgICAgIEF0b21TdHJpbmcgZmFtaWx5OwogICAgICAgICBib29sIGlzR2VuZXJpY0ZhbWls
eSA9IGZhbHNlOwogICAgICAgICBpZiAoY29udGVudFZhbHVlLmlzRm9udEZhbWlseSgpKSB7CiAg
ICAgICAgICAgICBjb25zdCBDU1NGb250RmFtaWx5JiBmb250RmFtaWx5ID0gY29udGVudFZhbHVl
LmZvbnRGYW1pbHkoKTsKQEAgLTExMzUsNyArMTEzNSw3IEBAIGlubGluZSB2b2lkIFN0eWxlQnVp
bGRlckN1c3RvbTo6YXBwbHlWYWx1ZUNvdW50ZXIoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZl
ciwKIAogICAgIGZvciAoYXV0byYgaXRlbSA6IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4odmFsdWUp
KSB7CiAgICAgICAgIFBhaXIqIHBhaXIgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oaXRl
bS5nZXQoKSkucGFpclZhbHVlKCk7Ci0gICAgICAgIEF0b21pY1N0cmluZyBpZGVudGlmaWVyID0g
cGFpci0+Zmlyc3QoKS0+c3RyaW5nVmFsdWUoKTsKKyAgICAgICAgQXRvbVN0cmluZyBpZGVudGlm
aWVyID0gcGFpci0+Zmlyc3QoKS0+c3RyaW5nVmFsdWUoKTsKICAgICAgICAgaW50IHZhbHVlID0g
cGFpci0+c2Vjb25kKCktPmludFZhbHVlKCk7CiAgICAgICAgIGF1dG8mIGRpcmVjdGl2ZXMgPSBt
YXAuYWRkKGlkZW50aWZpZXIsIENvdW50ZXJEaXJlY3RpdmVzIHsgfSkuaXRlcmF0b3ItPnZhbHVl
OwogICAgICAgICBpZiAoY291bnRlckJlaGF2aW9yID09IFJlc2V0KQpAQCAtMTM0OCw3ICsxMzQ4
LDcgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlQ29udGVudChT
dHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLAogICAgICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgICAgIGNvbnN0X2Nhc3Q8UmVuZGVyU3R5bGUqPihzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxl
KCkpLT5zZXRIYXNBdHRyQ29udGVudCgpOwogICAgICAgICAgICAgUXVhbGlmaWVkTmFtZSBhdHRy
KG51bGxBdG9tKCksIGNvbnRlbnRWYWx1ZS5zdHJpbmdWYWx1ZSgpLmltcGwoKSwgbnVsbEF0b20o
KSk7Ci0gICAgICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0gc3R5bGVSZXNvbHZl
ci5lbGVtZW50KCktPmdldEF0dHJpYnV0ZShhdHRyKTsKKyAgICAgICAgICAgIGNvbnN0IEF0b21T
dHJpbmcmIHZhbHVlID0gc3R5bGVSZXNvbHZlci5lbGVtZW50KCktPmdldEF0dHJpYnV0ZShhdHRy
KTsKICAgICAgICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0Q29udGVudCh2YWx1ZS5p
c051bGwoKSA/IGVtcHR5QXRvbSgpIDogdmFsdWUuaW1wbCgpLCBkaWRTZXQpOwogICAgICAgICAg
ICAgZGlkU2V0ID0gdHJ1ZTsKICAgICAgICAgICAgIC8vIFJlZ2lzdGVyIHRoZSBmYWN0IHRoYXQg
dGhlIGF0dHJpYnV0ZSB2YWx1ZSBhZmZlY3RzIHRoZSBzdHlsZS4KQEAgLTE3NDUsNyArMTc0NSw3
IEBAIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlQWx0KFN0eWxlUmVzb2x2ZXIm
IHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2CiAgICAgICAgICAgICBjb25zdF9jYXN0PFJlbmRl
clN0eWxlKj4oc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpKS0+c2V0VW5pcXVlKCk7CiAKICAg
ICAgICAgUXVhbGlmaWVkTmFtZSBhdHRyKG51bGxBdG9tKCksIHByaW1pdGl2ZVZhbHVlLnN0cmlu
Z1ZhbHVlKCksIG51bGxBdG9tKCkpOwotICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVl
ID0gc3R5bGVSZXNvbHZlci5lbGVtZW50KCktPmdldEF0dHJpYnV0ZShhdHRyKTsKKyAgICAgICAg
Y29uc3QgQXRvbVN0cmluZyYgdmFsdWUgPSBzdHlsZVJlc29sdmVyLmVsZW1lbnQoKS0+Z2V0QXR0
cmlidXRlKGF0dHIpOwogICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldENvbnRlbnRB
bHRUZXh0KHZhbHVlLmlzTnVsbCgpID8gZW1wdHlBdG9tKCkgOiB2YWx1ZSk7CiAKICAgICAgICAg
Ly8gUmVnaXN0ZXIgdGhlIGZhY3QgdGhhdCB0aGUgYXR0cmlidXRlIHZhbHVlIGFmZmVjdHMgdGhl
IHN0eWxlLgpAQCAtMTc5OSw3ICsxNzk5LDcgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3Vz
dG9tOjphcHBseVZhbHVlU3Ryb2tlQ29sb3IoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHYKICAg
ICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldEhhc0V4cGxpY2l0bHlTZXRTdHJva2VDb2xvcih0
cnVlKTsKIH0KIAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxD
dXN0b21Qcm9wZXJ0eShTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBjb25zdCBDU1NSZWdp
c3RlcmVkQ3VzdG9tUHJvcGVydHkqIHJlZ2lzdGVyZWQsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZSkKK2lubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsQ3VzdG9tUHJv
cGVydHkoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgY29uc3QgQ1NTUmVnaXN0ZXJlZEN1
c3RvbVByb3BlcnR5KiByZWdpc3RlcmVkLCBjb25zdCBBdG9tU3RyaW5nJiBuYW1lKQogewogICAg
IGlmIChyZWdpc3RlcmVkICYmIHJlZ2lzdGVyZWQtPmluaXRpYWxWYWx1ZSgpKSB7CiAgICAgICAg
IGF1dG8gaW5pdGlhbFZhbHVlID0gcmVnaXN0ZXJlZC0+aW5pdGlhbFZhbHVlQ29weSgpOwpAQCAt
MTgxMSw3ICsxODExLDcgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUlu
aXRpYWxDdXN0b21Qcm9wZXJ0eShTdHlsZVJlc29sdmVyJiBzdHlsZVIKICAgICBhcHBseVZhbHVl
Q3VzdG9tUHJvcGVydHkoc3R5bGVSZXNvbHZlciwgcmVnaXN0ZXJlZCwgaW52YWxpZC5nZXQoKSk7
CiB9CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0Q3VzdG9t
UHJvcGVydHkoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgY29uc3QgQ1NTUmVnaXN0ZXJl
ZEN1c3RvbVByb3BlcnR5KiByZWdpc3RlcmVkLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCitp
bmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdEN1c3RvbVByb3BlcnR5
KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIGNvbnN0IENTU1JlZ2lzdGVyZWRDdXN0b21Q
cm9wZXJ0eSogcmVnaXN0ZXJlZCwgY29uc3QgQXRvbVN0cmluZyYgbmFtZSkKIHsKICAgICBhdXRv
KiBwYXJlbnRWYWx1ZSA9IHN0eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKSA/IHN0eWxlUmVzb2x2
ZXIucGFyZW50U3R5bGUoKS0+aW5oZXJpdGVkQ3VzdG9tUHJvcGVydGllcygpLmdldChuYW1lKSA6
IG51bGxwdHI7CiAgICAgaWYgKHBhcmVudFZhbHVlICYmICEocmVnaXN0ZXJlZCAmJiAhcmVnaXN0
ZXJlZC0+aW5oZXJpdHMpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVz
b2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IGRk
ZDk0MTRlNTI0Y2QwOTcwMGQwZDgxMmFlNDZhZWE3MmFmNjc5ODQuLjY0NDEwMDQ2OThiZTM1Y2Zj
OGQ3ZWE2MWMxNDA3YThiMDBmNzkwYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5j
cHAKQEAgLTExMSw3ICsxMTEsNyBAQAogI2luY2x1ZGUgPHd0Zi9TZWNvbmRzLmg+CiAjaW5jbHVk
ZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRl
IDx3dGYvdGV4dC9BdG9taWNTdHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0
cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0yNTUsNyArMjU1LDcgQEAg
dm9pZCBTdHlsZVJlc29sdmVyOjphcHBlbmRBdXRob3JTdHlsZVNoZWV0cyhjb25zdCBWZWN0b3I8
UmVmUHRyPENTU1N0eWxlU2hlZXQ+PiYKIC8vIFRoaXMgaXMgYSBzaW1wbGlmaWVkIHN0eWxlIHNl
dHRpbmcgZnVuY3Rpb24gZm9yIGtleWZyYW1lIHN0eWxlcwogdm9pZCBTdHlsZVJlc29sdmVyOjph
ZGRLZXlmcmFtZVN0eWxlKFJlZjxTdHlsZVJ1bGVLZXlmcmFtZXM+JiYgcnVsZSkKIHsKLSAgICBB
dG9taWNTdHJpbmcgcyhydWxlLT5uYW1lKCkpOworICAgIEF0b21TdHJpbmcgcyhydWxlLT5uYW1l
KCkpOwogICAgIG1fa2V5ZnJhbWVzUnVsZU1hcC5zZXQocy5pbXBsKCksIFdURk1vdmUocnVsZSkp
OwogfQogCkBAIC00NTksNyArNDU5LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBT
dHlsZVJlc29sdmVyOjpzdHlsZUZvcktleWZyYW1lKGNvbnN0IFJlbmRlclN0eWxlKgogCiBib29s
IFN0eWxlUmVzb2x2ZXI6OmlzQW5pbWF0aW9uTmFtZVZhbGlkKGNvbnN0IFN0cmluZyYgbmFtZSkK
IHsKLSAgICByZXR1cm4gbV9rZXlmcmFtZXNSdWxlTWFwLmZpbmQoQXRvbWljU3RyaW5nKG5hbWUp
LmltcGwoKSkgIT0gbV9rZXlmcmFtZXNSdWxlTWFwLmVuZCgpOworICAgIHJldHVybiBtX2tleWZy
YW1lc1J1bGVNYXAuZmluZChBdG9tU3RyaW5nKG5hbWUpLmltcGwoKSkgIT0gbV9rZXlmcmFtZXNS
dWxlTWFwLmVuZCgpOwogfQogCiB2b2lkIFN0eWxlUmVzb2x2ZXI6OmtleWZyYW1lU3R5bGVzRm9y
QW5pbWF0aW9uKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFJlbmRlclN0eWxlKiBlbGVt
ZW50U3R5bGUsIEtleWZyYW1lTGlzdCYgbGlzdCkKQEAgLTc2MCw3ICs3NjAsNyBAQCB2b2lkIFN0
eWxlUmVzb2x2ZXI6OmFkanVzdFN0eWxlRm9ySW50ZXJDaGFyYWN0ZXJSdWJ5KCkKIHN0YXRpYyBi
b29sIGhhc0VmZmVjdGl2ZURpc3BsYXlOb25lRm9yRGlzcGxheUNvbnRlbnRzKGNvbnN0IEVsZW1l
bnQmIGVsZW1lbnQpCiB7CiAgICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1kaXNw
bGF5LTMvI3VuYm94LWh0bWwKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxBdG9t
aWNTdHJpbmc+PiB0YWdOYW1lcyA9IFtdIHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFz
aFNldDxBdG9tU3RyaW5nPj4gdGFnTmFtZXMgPSBbXSB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBI
VE1MUXVhbGlmaWVkTmFtZSogY29uc3QgdGFnTGlzdFtdID0gewogICAgICAgICAgICAgJmJyVGFn
LmdldCgpLAogICAgICAgICAgICAgJndiclRhZy5nZXQoKSwKQEAgLTc4MCw3ICs3ODAsNyBAQCBz
dGF0aWMgYm9vbCBoYXNFZmZlY3RpdmVEaXNwbGF5Tm9uZUZvckRpc3BsYXlDb250ZW50cyhjb25z
dCBFbGVtZW50JiBlbGVtZW50KQogICAgICAgICAgICAgJnRleHRhcmVhVGFnLmdldCgpLAogICAg
ICAgICAgICAgJnNlbGVjdFRhZy5nZXQoKSwKICAgICAgICAgfTsKLSAgICAgICAgSGFzaFNldDxB
dG9taWNTdHJpbmc+IHNldDsKKyAgICAgICAgSGFzaFNldDxBdG9tU3RyaW5nPiBzZXQ7CiAgICAg
ICAgIGZvciAoYXV0byYgbmFtZSA6IHRhZ0xpc3QpCiAgICAgICAgICAgICBzZXQuYWRkKG5hbWUt
PmxvY2FsTmFtZSgpKTsKICAgICAgICAgcmV0dXJuIHNldDsKQEAgLTExNjIsMTMgKzExNjIsMTMg
QEAgdm9pZCBTdHlsZVJlc29sdmVyOjphZGp1c3RSZW5kZXJTdHlsZUZvclNpdGVTcGVjaWZpY1F1
aXJrcyhSZW5kZXJTdHlsZSYgc3R5bGUsIGMKIHsKICAgICBpZiAoZG9jdW1lbnQoKS5xdWlya3Mo
KS5uZWVkc0dNYWlsT3ZlcmZsb3dTY3JvbGxRdWlyaygpKSB7CiAgICAgICAgIC8vIFRoaXMgdHVy
bnMgc2lkZWJhciBzY3JvbGxhYmxlIHdpdGhvdXQgbW91c2UgbW92ZSBldmVudC4KLSAgICAgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gcm9sZVZhbHVlKCJuYXZpZ2F0aW9u
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxBdG9tU3RyaW5nPiByb2xlVmFsdWUoIm5hdmlnYXRpb24iLCBBdG9tU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgICAgIGlmIChzdHlsZS5vdmVyZmxvd1ko
KSA9PSBPdmVyZmxvdzo6SGlkZGVuICYmIGVsZW1lbnQuYXR0cmlidXRlV2l0aG91dFN5bmNocm9u
aXphdGlvbihyb2xlQXR0cikgPT0gcm9sZVZhbHVlKQogICAgICAgICAgICAgc3R5bGUuc2V0T3Zl
cmZsb3dZKE92ZXJmbG93OjpBdXRvKTsKICAgICB9CiAgICAgaWYgKGRvY3VtZW50KCkucXVpcmtz
KCkubmVlZHNZb3VUdWJlT3ZlcmZsb3dTY3JvbGxRdWlyaygpKSB7CiAgICAgICAgIC8vIFRoaXMg
dHVybnMgc2lkZWJhciBzY3JvbGxhYmxlIHdpdGhvdXQgaG92ZXIuCi0gICAgICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGlkVmFsdWUoImd1aWRlLWlubmVyLWNvbnRlbnQi
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICAgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPEF0b21TdHJpbmc+IGlkVmFsdWUoImd1aWRlLWlubmVyLWNvbnRlbnQiLCBB
dG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgICAgIGlmIChzdHlsZS5vdmVy
Zmxvd1koKSA9PSBPdmVyZmxvdzo6SGlkZGVuICYmIGVsZW1lbnQuaWRGb3JTdHlsZVJlc29sdXRp
b24oKSA9PSBpZFZhbHVlKQogICAgICAgICAgICAgc3R5bGUuc2V0T3ZlcmZsb3dZKE92ZXJmbG93
OjpBdXRvKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNv
bHZlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAppbmRleCAyYTM0YjI2
ZDcxYjI0NWY2MTNiMjYxZjM1MWYyNzQwY2M1ODQ5NDVlLi4wMWJiOGZiYjNkYzEyMzBjMGYzOTE4
NGUxOWExZmVhNjQ0MTBhMjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVS
ZXNvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKQEAgLTM2
LDcgKzM2LDcgQEAKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQXRvbWlj
U3RyaW5nSGFzaC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmdIYXNoLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0x
OTMsOCArMTkzLDggQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGNvbG9yRnJvbVByaW1pdGl2
ZVZhbHVlSXNEZXJpdmVkRnJvbUVsZW1lbnQoY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmKTsKICAg
ICBDb2xvciBjb2xvckZyb21QcmltaXRpdmVWYWx1ZShjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYs
IGJvb2wgZm9yVmlzaXRlZExpbmsgPSBmYWxzZSkgY29uc3Q7CiAKLSAgICBib29sIGhhc1NlbGVj
dG9yRm9ySWQoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3Q7Ci0gICAgYm9vbCBoYXNTZWxlY3Rv
ckZvckF0dHJpYnV0ZShjb25zdCBFbGVtZW50JiwgY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3Q7
CisgICAgYm9vbCBoYXNTZWxlY3RvckZvcklkKGNvbnN0IEF0b21TdHJpbmcmKSBjb25zdDsKKyAg
ICBib29sIGhhc1NlbGVjdG9yRm9yQXR0cmlidXRlKGNvbnN0IEVsZW1lbnQmLCBjb25zdCBBdG9t
U3RyaW5nJikgY29uc3Q7CiAKICNpZiBFTkFCTEUoQ1NTX0RFVklDRV9BREFQVEFUSU9OKQogICAg
IFZpZXdwb3J0U3R5bGVSZXNvbHZlciogdmlld3BvcnRTdHlsZVJlc29sdmVyKCkgeyByZXR1cm4g
bV92aWV3cG9ydFN0eWxlUmVzb2x2ZXIuZ2V0KCk7IH0KQEAgLTI4Nyw3ICsyODcsNyBAQCBwdWJs
aWM6CiAKICAgICAgICAgdm9pZCBhcHBseURlZmVycmVkUHJvcGVydGllcyhTdHlsZVJlc29sdmVy
JiwgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGUmKTsKIAotICAgICAgICBIYXNoTWFwPEF0b21p
Y1N0cmluZywgUHJvcGVydHk+JiBjdXN0b21Qcm9wZXJ0aWVzKCkgeyByZXR1cm4gbV9jdXN0b21Q
cm9wZXJ0aWVzOyB9CisgICAgICAgIEhhc2hNYXA8QXRvbVN0cmluZywgUHJvcGVydHk+JiBjdXN0
b21Qcm9wZXJ0aWVzKCkgeyByZXR1cm4gbV9jdXN0b21Qcm9wZXJ0aWVzOyB9CiAgICAgICAgIGJv
b2wgaGFzQ3VzdG9tUHJvcGVydHkoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAgICAgIFByb3Bl
cnR5IGN1c3RvbVByb3BlcnR5KGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAgICAgICAKQEAgLTMw
MSw3ICszMDEsNyBAQCBwdWJsaWM6CiAgICAgICAgIHN0ZDo6Yml0c2V0PG51bUNTU1Byb3BlcnRp
ZXMgKyAyPiBtX3Byb3BlcnR5SXNQcmVzZW50OwogCiAgICAgICAgIFZlY3RvcjxQcm9wZXJ0eSwg
OD4gbV9kZWZlcnJlZFByb3BlcnRpZXM7Ci0gICAgICAgIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBQ
cm9wZXJ0eT4gbV9jdXN0b21Qcm9wZXJ0aWVzOworICAgICAgICBIYXNoTWFwPEF0b21TdHJpbmcs
IFByb3BlcnR5PiBtX2N1c3RvbVByb3BlcnRpZXM7CiAKICAgICAgICAgVGV4dERpcmVjdGlvbiBt
X2RpcmVjdGlvbjsKICAgICAgICAgV3JpdGluZ01vZGUgbV93cml0aW5nTW9kZTsKQEAgLTM0Niw3
ICszNDYsNyBAQCBwcml2YXRlOgogCiAgICAgRG9jdW1lbnRSdWxlU2V0cyBtX3J1bGVTZXRzOwog
Ci0gICAgdHlwZWRlZiBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBSZWZQdHI8U3R5bGVSdWxl
S2V5ZnJhbWVzPj4gS2V5ZnJhbWVzUnVsZU1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8QXRvbVN0
cmluZ0ltcGwqLCBSZWZQdHI8U3R5bGVSdWxlS2V5ZnJhbWVzPj4gS2V5ZnJhbWVzUnVsZU1hcDsK
ICAgICBLZXlmcmFtZXNSdWxlTWFwIG1fa2V5ZnJhbWVzUnVsZU1hcDsKIAogcHVibGljOgpAQCAt
NTUyLDcgKzU1Miw3IEBAIHN0cnVjdCBBcHBseUNhc2NhZGVkUHJvcGVydHlTdGF0ZSB7CiB9Owog
CiAKLWlubGluZSBib29sIFN0eWxlUmVzb2x2ZXI6Omhhc1NlbGVjdG9yRm9yQXR0cmlidXRlKGNv
bnN0IEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyAmYXR0cmlidXRlTmFtZSkg
Y29uc3QKK2lubGluZSBib29sIFN0eWxlUmVzb2x2ZXI6Omhhc1NlbGVjdG9yRm9yQXR0cmlidXRl
KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEF0b21TdHJpbmcgJmF0dHJpYnV0ZU5hbWUp
IGNvbnN0CiB7CiAgICAgQVNTRVJUKCFhdHRyaWJ1dGVOYW1lLmlzRW1wdHkoKSk7CiAgICAgaWYg
KGVsZW1lbnQuaXNIVE1MRWxlbWVudCgpKQpAQCAtNTYwLDcgKzU2MCw3IEBAIGlubGluZSBib29s
IFN0eWxlUmVzb2x2ZXI6Omhhc1NlbGVjdG9yRm9yQXR0cmlidXRlKGNvbnN0IEVsZW1lbnQmIGVs
ZW1lbnQsIGNvbnN0CiAgICAgcmV0dXJuIG1fcnVsZVNldHMuZmVhdHVyZXMoKS5hdHRyaWJ1dGVM
b2NhbE5hbWVzSW5SdWxlcy5jb250YWlucyhhdHRyaWJ1dGVOYW1lKTsKIH0KIAotaW5saW5lIGJv
b2wgU3R5bGVSZXNvbHZlcjo6aGFzU2VsZWN0b3JGb3JJZChjb25zdCBBdG9taWNTdHJpbmcmIGlk
VmFsdWUpIGNvbnN0CitpbmxpbmUgYm9vbCBTdHlsZVJlc29sdmVyOjpoYXNTZWxlY3RvckZvcklk
KGNvbnN0IEF0b21TdHJpbmcmIGlkVmFsdWUpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFpZFZhbHVl
LmlzRW1wdHkoKSk7CiAgICAgcmV0dXJuIG1fcnVsZVNldHMuZmVhdHVyZXMoKS5pZHNJblJ1bGVz
LmNvbnRhaW5zKGlkVmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
UnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmNwcAppbmRleCAxZWVmZWI4
YmQxMGMyNTRiODI0YmMwNmNkNWI4YWVmMDY2MDIxODRmLi4xZGYwYTJhNDI1NzNhODZhZjhkZGUz
OGExY2FhMzlkZDQ2OWNjNzJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVS
dWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmNwcApAQCAtNDM0LDcg
KzQzNCw3IEBAIFN0eWxlUnVsZUNoYXJzZXQ6OlN0eWxlUnVsZUNoYXJzZXQoY29uc3QgU3R5bGVS
dWxlQ2hhcnNldCYgbykKIAogU3R5bGVSdWxlQ2hhcnNldDo6flN0eWxlUnVsZUNoYXJzZXQoKSA9
IGRlZmF1bHQ7CiAKLVN0eWxlUnVsZU5hbWVzcGFjZTo6U3R5bGVSdWxlTmFtZXNwYWNlKEF0b21p
Y1N0cmluZyBwcmVmaXgsIEF0b21pY1N0cmluZyB1cmkpCitTdHlsZVJ1bGVOYW1lc3BhY2U6OlN0
eWxlUnVsZU5hbWVzcGFjZShBdG9tU3RyaW5nIHByZWZpeCwgQXRvbVN0cmluZyB1cmkpCiAgICAg
OiBTdHlsZVJ1bGVCYXNlKE5hbWVzcGFjZSkKICAgICAsIG1fcHJlZml4KHByZWZpeCkKICAgICAs
IG1fdXJpKHVyaSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaAppbmRleCA0MDFkMDQ5NDJjMzFlMTMxMDhi
MGJkZTg1NDQ1NDFjY2E4ZmVlYzA4Li45ZTZhOTZkMjNmOGM4ZTFjYmY3MjM5ZDJkZGMwZGY5YTU4
NmM0OTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5oCkBAIC0zNDMsNyArMzQzLDcgQEAgcHJpdmF0
ZToKIAogY2xhc3MgU3R5bGVSdWxlTmFtZXNwYWNlIGZpbmFsIDogcHVibGljIFN0eWxlUnVsZUJh
c2UgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U3R5bGVSdWxlTmFtZXNwYWNlPiBjcmVhdGUo
QXRvbWljU3RyaW5nIHByZWZpeCwgQXRvbWljU3RyaW5nIHVyaSkKKyAgICBzdGF0aWMgUmVmPFN0
eWxlUnVsZU5hbWVzcGFjZT4gY3JlYXRlKEF0b21TdHJpbmcgcHJlZml4LCBBdG9tU3RyaW5nIHVy
aSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlUnVsZU5hbWVzcGFj
ZShwcmVmaXgsIHVyaSkpOwogICAgIH0KQEAgLTM1MiwxNSArMzUyLDE1IEBAIHB1YmxpYzoKIAog
ICAgIFJlZjxTdHlsZVJ1bGVOYW1lc3BhY2U+IGNvcHkoKSBjb25zdCB7IHJldHVybiBhZG9wdFJl
ZigqbmV3IFN0eWxlUnVsZU5hbWVzcGFjZSgqdGhpcykpOyB9CiAgICAgCi0gICAgQXRvbWljU3Ry
aW5nIHByZWZpeCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlZml4OyB9Ci0gICAgQXRvbWljU3RyaW5n
IHVyaSgpIGNvbnN0IHsgcmV0dXJuIG1fdXJpOyB9CisgICAgQXRvbVN0cmluZyBwcmVmaXgoKSBj
b25zdCB7IHJldHVybiBtX3ByZWZpeDsgfQorICAgIEF0b21TdHJpbmcgdXJpKCkgY29uc3QgeyBy
ZXR1cm4gbV91cmk7IH0KIAogcHJpdmF0ZToKLSAgICBTdHlsZVJ1bGVOYW1lc3BhY2UoQXRvbWlj
U3RyaW5nIHByZWZpeCwgQXRvbWljU3RyaW5nIHVyaSk7CisgICAgU3R5bGVSdWxlTmFtZXNwYWNl
KEF0b21TdHJpbmcgcHJlZml4LCBBdG9tU3RyaW5nIHVyaSk7CiAgICAgU3R5bGVSdWxlTmFtZXNw
YWNlKGNvbnN0IFN0eWxlUnVsZU5hbWVzcGFjZSYpOwogICAgIAotICAgIEF0b21pY1N0cmluZyBt
X3ByZWZpeDsKLSAgICBBdG9taWNTdHJpbmcgbV91cmk7CisgICAgQXRvbVN0cmluZyBtX3ByZWZp
eDsKKyAgICBBdG9tU3RyaW5nIG1fdXJpOwogfTsKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50cy5jcHAKaW5kZXggYWVjYmIy
MGYzOWU5M2Y0ZjdiOGNhMmRjYTFjZWY5Y2I3ZWU5NzBkOS4uOGU4ODE4Y2M2M2NiZTBhZDMyMmQ1
ZmQ0MDc3YTYwMDQxNmFlNjNjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
U2hlZXRDb250ZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250
ZW50cy5jcHAKQEAgLTI5NSw3ICsyOTUsNyBAQCB2b2lkIFN0eWxlU2hlZXRDb250ZW50czo6d3Jh
cHBlckRlbGV0ZVJ1bGUodW5zaWduZWQgaW5kZXgpCiAgICAgbV9jaGlsZFJ1bGVzLnJlbW92ZShj
aGlsZFZlY3RvckluZGV4KTsKIH0KIAotdm9pZCBTdHlsZVNoZWV0Q29udGVudHM6OnBhcnNlckFk
ZE5hbWVzcGFjZShjb25zdCBBdG9taWNTdHJpbmcmIHByZWZpeCwgY29uc3QgQXRvbWljU3RyaW5n
JiB1cmkpCit2b2lkIFN0eWxlU2hlZXRDb250ZW50czo6cGFyc2VyQWRkTmFtZXNwYWNlKGNvbnN0
IEF0b21TdHJpbmcmIHByZWZpeCwgY29uc3QgQXRvbVN0cmluZyYgdXJpKQogewogICAgIEFTU0VS
VCghdXJpLmlzTnVsbCgpKTsKICAgICBpZiAocHJlZml4LmlzTnVsbCgpKSB7CkBAIC0zMDgsNyAr
MzA4LDcgQEAgdm9pZCBTdHlsZVNoZWV0Q29udGVudHM6OnBhcnNlckFkZE5hbWVzcGFjZShjb25z
dCBBdG9taWNTdHJpbmcmIHByZWZpeCwgY29uc3QgQXQKICAgICByZXN1bHQuaXRlcmF0b3ItPnZh
bHVlID0gdXJpOwogfQogCi1jb25zdCBBdG9taWNTdHJpbmcmIFN0eWxlU2hlZXRDb250ZW50czo6
bmFtZXNwYWNlVVJJRnJvbVByZWZpeChjb25zdCBBdG9taWNTdHJpbmcmIHByZWZpeCkKK2NvbnN0
IEF0b21TdHJpbmcmIFN0eWxlU2hlZXRDb250ZW50czo6bmFtZXNwYWNlVVJJRnJvbVByZWZpeChj
b25zdCBBdG9tU3RyaW5nJiBwcmVmaXgpCiB7CiAgICAgUHJlZml4TmFtZXNwYWNlVVJJTWFwOjpj
b25zdF9pdGVyYXRvciBpdCA9IG1fbmFtZXNwYWNlcy5maW5kKHByZWZpeCk7CiAgICAgaWYgKGl0
ID09IG1fbmFtZXNwYWNlcy5lbmQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVNoZWV0Q29udGVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVu
dHMuaAppbmRleCA1NTM3MTYyMDNlYThhNWYzZjUwZDJlMWNiYjJhNGM3MmM4NjhkYTJiLi5jZWRj
MGVkM2Q4NTA3OWQxNDQ2YjM5OGE2ZjZiODRlNDU0NTViMjdlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlU2hlZXRDb250ZW50cy5oCkBAIC0yOCw3ICsyOCw3IEBACiAjaW5jbHVkZSA8d3RmL1VS
TC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgot
I2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2guaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9BdG9tU3RyaW5nSGFzaC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTYyLDggKzYy
LDggQEAgcHVibGljOgogICAgIAogICAgIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIHBhcnNlckNv
bnRleHQoKSBjb25zdCB7IHJldHVybiBtX3BhcnNlckNvbnRleHQ7IH0KICAgICAKLSAgICBjb25z
dCBBdG9taWNTdHJpbmcmIGRlZmF1bHROYW1lc3BhY2UoKSB7IHJldHVybiBtX2RlZmF1bHROYW1l
c3BhY2U7IH0KLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSUZyb21QcmVmaXgo
Y29uc3QgQXRvbWljU3RyaW5nJiBwcmVmaXgpOworICAgIGNvbnN0IEF0b21TdHJpbmcmIGRlZmF1
bHROYW1lc3BhY2UoKSB7IHJldHVybiBtX2RlZmF1bHROYW1lc3BhY2U7IH0KKyAgICBjb25zdCBB
dG9tU3RyaW5nJiBuYW1lc3BhY2VVUklGcm9tUHJlZml4KGNvbnN0IEF0b21TdHJpbmcmIHByZWZp
eCk7CiAKICAgICB2b2lkIHBhcnNlQXV0aG9yU3R5bGVTaGVldChjb25zdCBDYWNoZWRDU1NTdHls
ZVNoZWV0KiwgY29uc3QgU2VjdXJpdHlPcmlnaW4qKTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29s
IHBhcnNlU3RyaW5nKGNvbnN0IFN0cmluZyYpOwpAQCAtOTQsNyArOTQsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRIYXNTeW50YWN0aWNhbGx5VmFsaWRDU1NIZWFkZXIoYm9vbCBiKSB7IG1faGFz
U3ludGFjdGljYWxseVZhbGlkQ1NTSGVhZGVyID0gYjsgfQogICAgIGJvb2wgaGFzU3ludGFjdGlj
YWxseVZhbGlkQ1NTSGVhZGVyKCkgY29uc3QgeyByZXR1cm4gbV9oYXNTeW50YWN0aWNhbGx5VmFs
aWRDU1NIZWFkZXI7IH0KIAotICAgIHZvaWQgcGFyc2VyQWRkTmFtZXNwYWNlKGNvbnN0IEF0b21p
Y1N0cmluZyYgcHJlZml4LCBjb25zdCBBdG9taWNTdHJpbmcmIHVyaSk7CisgICAgdm9pZCBwYXJz
ZXJBZGROYW1lc3BhY2UoY29uc3QgQXRvbVN0cmluZyYgcHJlZml4LCBjb25zdCBBdG9tU3RyaW5n
JiB1cmkpOwogICAgIHZvaWQgcGFyc2VyQXBwZW5kUnVsZShSZWY8U3R5bGVSdWxlQmFzZT4mJik7
CiAgICAgdm9pZCBwYXJzZXJTZXRFbmNvZGluZ0Zyb21DaGFyc2V0UnVsZShjb25zdCBTdHJpbmcm
IGVuY29kaW5nKTsgCiAgICAgdm9pZCBwYXJzZXJTZXRVc2VzU3R5bGVCYXNlZEVkaXRhYmlsaXR5
KCkgeyBtX3VzZXNTdHlsZUJhc2VkRWRpdGFiaWxpdHkgPSB0cnVlOyB9CkBAIC0xNjEsOSArMTYx
LDkgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUltcG9ydD4+IG1faW1w
b3J0UnVsZXM7CiAgICAgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVOYW1lc3BhY2U+PiBtX25hbWVz
cGFjZVJ1bGVzOwogICAgIFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlQmFzZT4+IG1fY2hpbGRSdWxl
czsKLSAgICB0eXBlZGVmIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBBdG9taWNTdHJpbmc+IFByZWZp
eE5hbWVzcGFjZVVSSU1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8QXRvbVN0cmluZywgQXRvbVN0
cmluZz4gUHJlZml4TmFtZXNwYWNlVVJJTWFwOwogICAgIFByZWZpeE5hbWVzcGFjZVVSSU1hcCBt
X25hbWVzcGFjZXM7Ci0gICAgQXRvbWljU3RyaW5nIG1fZGVmYXVsdE5hbWVzcGFjZTsKKyAgICBB
dG9tU3RyaW5nIG1fZGVmYXVsdE5hbWVzcGFjZTsKIAogICAgIGJvb2wgbV9pc1VzZXJTdHlsZVNo
ZWV0OwogICAgIGJvb2wgbV9sb2FkQ29tcGxldGVkIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVTaGVldExpc3QuY3BwCmluZGV4IDg2OTMyZDIwM2Q4YTI1ZTVhZDMwNjkyMjFmZTBlYTc1
NDgyYzdhMTcuLmI1Mzk0N2QxOGNlMTNjNjFkNjY0MTBkZDg4ZGRhMGUzY2IzOGZmZTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0TGlzdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRMaXN0LmNwcApAQCAtODYsNyArODYsNyBAQCBTdHlsZVNo
ZWV0KiBTdHlsZVNoZWV0TGlzdDo6aXRlbSh1bnNpZ25lZCBpbmRleCkKICAgICByZXR1cm4gaW5k
ZXggPCBzaGVldHMuc2l6ZSgpID8gc2hlZXRzW2luZGV4XS5nZXQoKSA6IDA7CiB9CiAKLUNTU1N0
eWxlU2hlZXQqIFN0eWxlU2hlZXRMaXN0OjpuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lKSBjb25zdAorQ1NTU3R5bGVTaGVldCogU3R5bGVTaGVldExpc3Q6Om5hbWVkSXRlbShjb25z
dCBBdG9tU3RyaW5nJiBuYW1lKSBjb25zdAogewogICAgIC8vIFN1cHBvcnQgdGhlIG5hbWVkIGdl
dHRlciBvbiBkb2N1bWVudCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuCiAgICAgaWYgKCFt
X2RvY3VtZW50KQpAQCAtMTAzLDEwICsxMDMsMTAgQEAgQ1NTU3R5bGVTaGVldCogU3R5bGVTaGVl
dExpc3Q6Om5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0CiAgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKLVZlY3RvcjxBdG9taWNTdHJpbmc+IFN0eWxlU2hlZXRMaXN0Ojpz
dXBwb3J0ZWRQcm9wZXJ0eU5hbWVzKCkKK1ZlY3RvcjxBdG9tU3RyaW5nPiBTdHlsZVNoZWV0TGlz
dDo6c3VwcG9ydGVkUHJvcGVydHlOYW1lcygpCiB7CiAgICAgLy8gRklYTUU6IFNob3VsZCBiZSBp
bXBsZW1lbnRlZC4KLSAgICByZXR1cm4gVmVjdG9yPEF0b21pY1N0cmluZz4oKTsKKyAgICByZXR1
cm4gVmVjdG9yPEF0b21TdHJpbmc+KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0TGlzdC5oIGIvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlU2hlZXRMaXN0LmgKaW5kZXggNDgwMjU3MTkxMDVhZTI5MzNlZTA4N2Q0
MTM1MjE2MWI5YzMwMTY3MC4uYzFjNDg0MGZiNzE3ODZlOWNlM2M4MDAxYzQ2YWQyNWU3YTJhMGVl
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRMaXN0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRMaXN0LmgKQEAgLTQzLDggKzQzLDggQEAgcHVi
bGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0OwogICAgIFdF
QkNPUkVfRVhQT1JUIFN0eWxlU2hlZXQqIGl0ZW0odW5zaWduZWQgaW5kZXgpOwogCi0gICAgQ1NT
U3R5bGVTaGVldCogbmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0OwotICAgIFZl
Y3RvcjxBdG9taWNTdHJpbmc+IHN1cHBvcnRlZFByb3BlcnR5TmFtZXMoKTsKKyAgICBDU1NTdHls
ZVNoZWV0KiBuYW1lZEl0ZW0oY29uc3QgQXRvbVN0cmluZyYpIGNvbnN0OworICAgIFZlY3RvcjxB
dG9tU3RyaW5nPiBzdXBwb3J0ZWRQcm9wZXJ0eU5hbWVzKCk7CiAKICAgICBOb2RlKiBvd25lck5v
ZGUoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL21ha2Vwcm9wLnBs
IGIvU291cmNlL1dlYkNvcmUvY3NzL21ha2Vwcm9wLnBsCmluZGV4IDg2OTczNWYxMGE4OWM0NTJm
NjE1NDk4NGY5ZGI2MWYxYjk4MGQ1MDYuLjdhY2M1OGNiZjEyZTRhYWY1NzRhZDM4MmU1NWE0NjQ1
OGNiZWM5ZjYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9tYWtlcHJvcC5wbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvbWFrZXByb3AucGwKQEAgLTI0OCw3ICsyNDgsNyBAQCBwcmlu
dCBHUEVSRiA8PCAiRU9GIjsKICNpbmNsdWRlIFwiSGFzaFRvb2xzLmhcIgogI2luY2x1ZGUgIlJ1
bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgotI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21T
dHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KICNpbmNsdWRlIDxzdHJp
bmcuaD4KIApAQCAtMzUwLDcgKzM1MCw3IEBAIGNvbnN0IGNoYXIqIGdldFByb3BlcnR5TmFtZShD
U1NQcm9wZXJ0eUlEIGlkKQogICAgIHJldHVybiBwcm9wZXJ0eU5hbWVTdHJpbmdzW2luZGV4XTsK
IH0KIAotY29uc3QgQXRvbWljU3RyaW5nJiBnZXRQcm9wZXJ0eU5hbWVBdG9taWNTdHJpbmcoQ1NT
UHJvcGVydHlJRCBpZCkKK2NvbnN0IEF0b21TdHJpbmcmIGdldFByb3BlcnR5TmFtZUF0b21TdHJp
bmcoQ1NTUHJvcGVydHlJRCBpZCkKIHsKICAgICBpZiAoaWQgPCBmaXJzdENTU1Byb3BlcnR5KQog
ICAgICAgICByZXR1cm4gbnVsbEF0b20oKTsKQEAgLTM1OCwxMSArMzU4LDExIEBAIGNvbnN0IEF0
b21pY1N0cmluZyYgZ2V0UHJvcGVydHlOYW1lQXRvbWljU3RyaW5nKENTU1Byb3BlcnR5SUQgaWQp
CiAgICAgaWYgKGluZGV4ID49IG51bUNTU1Byb3BlcnRpZXMpCiAgICAgICAgIHJldHVybiBudWxs
QXRvbSgpOwogCi0gICAgc3RhdGljIEF0b21pY1N0cmluZyogcHJvcGVydHlTdHJpbmdzID0gbmV3
IEF0b21pY1N0cmluZ1tudW1DU1NQcm9wZXJ0aWVzXTsgLy8gSW50ZW50aW9uYWxseSBuZXZlciBk
ZXN0cm95ZWQuCi0gICAgQXRvbWljU3RyaW5nJiBwcm9wZXJ0eVN0cmluZyA9IHByb3BlcnR5U3Ry
aW5nc1tpbmRleF07CisgICAgc3RhdGljIEF0b21TdHJpbmcqIHByb3BlcnR5U3RyaW5ncyA9IG5l
dyBBdG9tU3RyaW5nW251bUNTU1Byb3BlcnRpZXNdOyAvLyBJbnRlbnRpb25hbGx5IG5ldmVyIGRl
c3Ryb3llZC4KKyAgICBBdG9tU3RyaW5nJiBwcm9wZXJ0eVN0cmluZyA9IHByb3BlcnR5U3RyaW5n
c1tpbmRleF07CiAgICAgaWYgKHByb3BlcnR5U3RyaW5nLmlzTnVsbCgpKSB7CiAgICAgICAgIGNv
bnN0IGNoYXIqIHByb3BlcnR5TmFtZSA9IHByb3BlcnR5TmFtZVN0cmluZ3NbaW5kZXhdOwotICAg
ICAgICBwcm9wZXJ0eVN0cmluZyA9IEF0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUsIHN0cmxlbihw
cm9wZXJ0eU5hbWUpLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICAg
ICAgcHJvcGVydHlTdHJpbmcgPSBBdG9tU3RyaW5nKHByb3BlcnR5TmFtZSwgc3RybGVuKHByb3Bl
cnR5TmFtZSksIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICB9CiAgICAg
cmV0dXJuIHByb3BlcnR5U3RyaW5nOwogfQpAQCAtMzcwLDcgKzM3MCw3IEBAIGNvbnN0IEF0b21p
Y1N0cmluZyYgZ2V0UHJvcGVydHlOYW1lQXRvbWljU3RyaW5nKENTU1Byb3BlcnR5SUQgaWQpCiBT
dHJpbmcgZ2V0UHJvcGVydHlOYW1lU3RyaW5nKENTU1Byb3BlcnR5SUQgaWQpCiB7CiAgICAgLy8g
V2Ugc2hhcmUgdGhlIFN0cmluZ0ltcGwgd2l0aCB0aGUgQXRvbWljU3RyaW5ncy4KLSAgICByZXR1
cm4gZ2V0UHJvcGVydHlOYW1lQXRvbWljU3RyaW5nKGlkKS5zdHJpbmcoKTsKKyAgICByZXR1cm4g
Z2V0UHJvcGVydHlOYW1lQXRvbVN0cmluZyhpZCkuc3RyaW5nKCk7CiB9CiAKIFN0cmluZyBnZXRK
U1Byb3BlcnR5TmFtZShDU1NQcm9wZXJ0eUlEIGlkKQpAQCAtNDg3LDcgKzQ4Nyw3IEBAIHByaW50
IEhFQURFUiA8PCAiRU9GIjsKIGJvb2wgaXNJbnRlcm5hbENTU1Byb3BlcnR5KGNvbnN0IENTU1By
b3BlcnR5SUQpOwogYm9vbCBpc0VuYWJsZWRDU1NQcm9wZXJ0eShjb25zdCBDU1NQcm9wZXJ0eUlE
KTsKIGNvbnN0IGNoYXIqIGdldFByb3BlcnR5TmFtZShDU1NQcm9wZXJ0eUlEKTsKLWNvbnN0IFdU
Rjo6QXRvbWljU3RyaW5nJiBnZXRQcm9wZXJ0eU5hbWVBdG9taWNTdHJpbmcoQ1NTUHJvcGVydHlJ
RCBpZCk7Citjb25zdCBXVEY6OkF0b21TdHJpbmcmIGdldFByb3BlcnR5TmFtZUF0b21TdHJpbmco
Q1NTUHJvcGVydHlJRCBpZCk7CiBXVEY6OlN0cmluZyBnZXRQcm9wZXJ0eU5hbWVTdHJpbmcoQ1NT
UHJvcGVydHlJRCBpZCk7CiBXVEY6OlN0cmluZyBnZXRKU1Byb3BlcnR5TmFtZShDU1NQcm9wZXJ0
eUlEKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL21ha2V2YWx1ZXMucGwgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvbWFrZXZhbHVlcy5wbAppbmRleCBkMWU4MDkwZDgxZDZlOGMxYzZm
ZDg4NzJmMGQxNmIyNzhlNmMyMjE3Li43MjI0ZGY1MTE0MjQ2Nzk1ZmRlNWI2NDk5MWIyYzVjMjY5
Yzc0MTI1IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvbWFrZXZhbHVlcy5wbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvbWFrZXZhbHVlcy5wbApAQCAtNzQsNyArNzQsNyBAQCBwcmlu
dCBHUEVSRiA8PCAiRU9GIjsKICNpbmNsdWRlIFwiQ1NTVmFsdWVLZXl3b3Jkcy5oXCIKICNpbmNs
dWRlIFwiSGFzaFRvb2xzLmhcIgogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+Ci0jaW5jbHVk
ZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmlu
Zy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogI2luY2x1ZGUgPHN0cmluZy5o
PgogCkBAIC0xMzEsMTMgKzEzMSwxMyBAQCBjb25zdCBjaGFyKiBnZXRWYWx1ZU5hbWUodW5zaWdu
ZWQgc2hvcnQgaWQpCiAgICAgcmV0dXJuIHZhbHVlTGlzdFtpZF07CiB9CiAKLWNvbnN0IEF0b21p
Y1N0cmluZyYgZ2V0VmFsdWVOYW1lQXRvbWljU3RyaW5nKENTU1ZhbHVlSUQgaWQpCitjb25zdCBB
dG9tU3RyaW5nJiBnZXRWYWx1ZU5hbWVBdG9tU3RyaW5nKENTU1ZhbHVlSUQgaWQpCiB7CiAgICAg
aWYgKGlkIDwgZmlyc3RDU1NWYWx1ZUtleXdvcmQgfHwgaWQgPiBsYXN0Q1NTVmFsdWVLZXl3b3Jk
KQogICAgICAgICByZXR1cm4gbnVsbEF0b20oKTsKIAotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcq
IHZhbHVlS2V5d29yZFN0cmluZ3MgPSBuZXcgQXRvbWljU3RyaW5nW251bUNTU1ZhbHVlS2V5d29y
ZHNdOyAvLyBMZWFrZWQgaW50ZW50aW9uYWxseS4KLSAgICBBdG9taWNTdHJpbmcmIHZhbHVlS2V5
d29yZFN0cmluZyA9IHZhbHVlS2V5d29yZFN0cmluZ3NbaWRdOworICAgIHN0YXRpYyBBdG9tU3Ry
aW5nKiB2YWx1ZUtleXdvcmRTdHJpbmdzID0gbmV3IEF0b21TdHJpbmdbbnVtQ1NTVmFsdWVLZXl3
b3Jkc107IC8vIExlYWtlZCBpbnRlbnRpb25hbGx5LgorICAgIEF0b21TdHJpbmcmIHZhbHVlS2V5
d29yZFN0cmluZyA9IHZhbHVlS2V5d29yZFN0cmluZ3NbaWRdOwogICAgIGlmICh2YWx1ZUtleXdv
cmRTdHJpbmcuaXNOdWxsKCkpCiAgICAgICAgIHZhbHVlS2V5d29yZFN0cmluZyA9IGdldFZhbHVl
TmFtZShpZCk7CiAgICAgcmV0dXJuIHZhbHVlS2V5d29yZFN0cmluZzsKQEAgLTE0Niw3ICsxNDYs
NyBAQCBjb25zdCBBdG9taWNTdHJpbmcmIGdldFZhbHVlTmFtZUF0b21pY1N0cmluZyhDU1NWYWx1
ZUlEIGlkKQogU3RyaW5nIGdldFZhbHVlTmFtZVN0cmluZyhDU1NWYWx1ZUlEIGlkKQogewogICAg
IC8vIFdlIHNoYXJlIHRoZSBTdHJpbmdJbXBsIHdpdGggdGhlIEF0b21pY1N0cmluZ3MuCi0gICAg
cmV0dXJuIGdldFZhbHVlTmFtZUF0b21pY1N0cmluZyhpZCkuc3RyaW5nKCk7CisgICAgcmV0dXJu
IGdldFZhbHVlTmFtZUF0b21TdHJpbmcoaWQpLnN0cmluZygpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkBAIC0xOTQsNyArMTk0LDcgQEAgcHJpbnQgSEVBREVSICJjb25zdCBzaXplX3Qg
bWF4Q1NTVmFsdWVLZXl3b3JkTGVuZ3RoID0gIiAuICRtYXhMZW4gLiAiO1xuIjsKIHByaW50IEhF
QURFUiA8PCAiRU9GIjsKIAogY29uc3QgY2hhciogZ2V0VmFsdWVOYW1lKHVuc2lnbmVkIHNob3J0
IGlkKTsKLWNvbnN0IFdURjo6QXRvbWljU3RyaW5nJiBnZXRWYWx1ZU5hbWVBdG9taWNTdHJpbmco
Q1NTVmFsdWVJRCBpZCk7Citjb25zdCBXVEY6OkF0b21TdHJpbmcmIGdldFZhbHVlTmFtZUF0b21T
dHJpbmcoQ1NTVmFsdWVJRCBpZCk7CiBXVEY6OlN0cmluZyBnZXRWYWx1ZU5hbWVTdHJpbmcoQ1NT
VmFsdWVJRCBpZCk7CiAKIGlubGluZSBDU1NWYWx1ZUlEIGNvbnZlcnRUb0NTU1ZhbHVlSUQoaW50
IHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuY3BwCmluZGV4IGI0ZmE2
OTdjOTY3YTE5MTQ1YzNkZTMzMmUzNTdjNjIzMmQ0YTlhYjIuLjA1ZTEwMGI5ZTY5N2VhZjkzNTcy
NDkyYjU3MmQxYmVmNmIwZjNiMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNl
ci5jcHAKQEAgLTE0Niw3ICsxNDYsNyBAQCBDU1NQYXJzZXI6OlBhcnNlUmVzdWx0IENTU1BhcnNl
cjo6cGFyc2VWYWx1ZShNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJiBkZWNsYXJhdGlvbgogICAgIHJl
dHVybiBwYXJzZXIucGFyc2VWYWx1ZShkZWNsYXJhdGlvbiwgcHJvcGVydHlJRCwgc3RyaW5nLCBp
bXBvcnRhbnQpOwogfQogCi1DU1NQYXJzZXI6OlBhcnNlUmVzdWx0IENTU1BhcnNlcjo6cGFyc2VD
dXN0b21Qcm9wZXJ0eVZhbHVlKE11dGFibGVTdHlsZVByb3BlcnRpZXMmIGRlY2xhcmF0aW9uLCBj
b25zdCBBdG9taWNTdHJpbmcmIHByb3BlcnR5TmFtZSwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJv
b2wgaW1wb3J0YW50LCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQorQ1NTUGFyc2Vy
OjpQYXJzZVJlc3VsdCBDU1NQYXJzZXI6OnBhcnNlQ3VzdG9tUHJvcGVydHlWYWx1ZShNdXRhYmxl
U3R5bGVQcm9wZXJ0aWVzJiBkZWNsYXJhdGlvbiwgY29uc3QgQXRvbVN0cmluZyYgcHJvcGVydHlO
YW1lLCBjb25zdCBTdHJpbmcmIHN0cmluZywgYm9vbCBpbXBvcnRhbnQsIGNvbnN0IENTU1BhcnNl
ckNvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgcmV0dXJuIENTU1BhcnNlckltcGw6OnBhcnNlQ3Vz
dG9tUHJvcGVydHlWYWx1ZSgmZGVjbGFyYXRpb24sIHByb3BlcnR5TmFtZSwgc3RyaW5nLCBpbXBv
cnRhbnQsIGNvbnRleHQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNl
ci9DU1NQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmgKaW5k
ZXggNDcwNjNjZGZiOWEyNTVjNTZiZmRjNDVmNmNlNGIwMzY0NDExMDBmYS4uZTMzMDc4OThmYWFm
ZjJjZjcyZjU4MWEwYzI4YzhlNTcyMjY1M2MzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL3BhcnNlci9DU1NQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NT
U1BhcnNlci5oCkBAIC02Nyw3ICs2Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBwYXJz
ZURlY2xhcmF0aW9uRm9ySW5zcGVjdG9yKGNvbnN0IENTU1BhcnNlckNvbnRleHQmLCBjb25zdCBT
dHJpbmcmLCBDU1NQYXJzZXJPYnNlcnZlciYpOwogCiAgICAgc3RhdGljIFBhcnNlUmVzdWx0IHBh
cnNlVmFsdWUoTXV0YWJsZVN0eWxlUHJvcGVydGllcyYsIENTU1Byb3BlcnR5SUQsIGNvbnN0IFN0
cmluZyYsIGJvb2wgaW1wb3J0YW50LCBjb25zdCBDU1NQYXJzZXJDb250ZXh0Jik7Ci0gICAgc3Rh
dGljIFBhcnNlUmVzdWx0IHBhcnNlQ3VzdG9tUHJvcGVydHlWYWx1ZShNdXRhYmxlU3R5bGVQcm9w
ZXJ0aWVzJiwgY29uc3QgQXRvbWljU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFN0cmluZyYs
IGJvb2wgaW1wb3J0YW50LCBjb25zdCBDU1NQYXJzZXJDb250ZXh0Jik7CisgICAgc3RhdGljIFBh
cnNlUmVzdWx0IHBhcnNlQ3VzdG9tUHJvcGVydHlWYWx1ZShNdXRhYmxlU3R5bGVQcm9wZXJ0aWVz
JiwgY29uc3QgQXRvbVN0cmluZyYgcHJvcGVydHlOYW1lLCBjb25zdCBTdHJpbmcmLCBib29sIGlt
cG9ydGFudCwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYpOwogICAgIAogICAgIHN0YXRpYyBSZWZQ
dHI8Q1NTVmFsdWU+IHBhcnNlRm9udEZhY2VEZXNjcmlwdG9yKENTU1Byb3BlcnR5SUQsIGNvbnN0
IFN0cmluZyYsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5jcHAKaW5kZXggNDExMGNkNGY1NTRlMjY3NjdlZWU2OWFl
ZTQ4ZmVjMzhkOGQ4YTYxYS4uZmVmYjc3ZDViNGU1MjZlNTkxNmVjZTU5MzY1OGNhYzE4YzJlYjdi
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckltcGwuY3BwCkBAIC05
Niw3ICs5Niw3IEBAIENTU1BhcnNlcjo6UGFyc2VSZXN1bHQgQ1NTUGFyc2VySW1wbDo6cGFyc2VW
YWx1ZShNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzKiBkZWNsYXJhCiAgICAgcmV0dXJuIGRlY2xhcmF0
aW9uLT5hZGRQYXJzZWRQcm9wZXJ0aWVzKHBhcnNlci5tX3BhcnNlZFByb3BlcnRpZXMpID8gQ1NT
UGFyc2VyOjpQYXJzZVJlc3VsdDo6Q2hhbmdlZCA6IENTU1BhcnNlcjo6UGFyc2VSZXN1bHQ6OlVu
Y2hhbmdlZDsKIH0KIAotQ1NTUGFyc2VyOjpQYXJzZVJlc3VsdCBDU1NQYXJzZXJJbXBsOjpwYXJz
ZUN1c3RvbVByb3BlcnR5VmFsdWUoTXV0YWJsZVN0eWxlUHJvcGVydGllcyogZGVjbGFyYXRpb24s
IGNvbnN0IEF0b21pY1N0cmluZyYgcHJvcGVydHlOYW1lLCBjb25zdCBTdHJpbmcmIHN0cmluZywg
Ym9vbCBpbXBvcnRhbnQsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCitDU1NQYXJz
ZXI6OlBhcnNlUmVzdWx0IENTU1BhcnNlckltcGw6OnBhcnNlQ3VzdG9tUHJvcGVydHlWYWx1ZShN
dXRhYmxlU3R5bGVQcm9wZXJ0aWVzKiBkZWNsYXJhdGlvbiwgY29uc3QgQXRvbVN0cmluZyYgcHJv
cGVydHlOYW1lLCBjb25zdCBTdHJpbmcmIHN0cmluZywgYm9vbCBpbXBvcnRhbnQsIGNvbnN0IENT
U1BhcnNlckNvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgQ1NTUGFyc2VySW1wbCBwYXJzZXIoY29u
dGV4dCwgc3RyaW5nKTsKICAgICBwYXJzZXIuY29uc3VtZUN1c3RvbVByb3BlcnR5VmFsdWUocGFy
c2VyLnRva2VuaXplcigpLT50b2tlblJhbmdlKCksIHByb3BlcnR5TmFtZSwgaW1wb3J0YW50KTsK
QEAgLTEwNSw3ICsxMDUsNyBAQCBDU1NQYXJzZXI6OlBhcnNlUmVzdWx0IENTU1BhcnNlckltcGw6
OnBhcnNlQ3VzdG9tUHJvcGVydHlWYWx1ZShNdXRhYmxlU3R5bGVQcm9wZQogICAgIHJldHVybiBk
ZWNsYXJhdGlvbi0+YWRkUGFyc2VkUHJvcGVydGllcyhwYXJzZXIubV9wYXJzZWRQcm9wZXJ0aWVz
KSA/IENTU1BhcnNlcjo6UGFyc2VSZXN1bHQ6OkNoYW5nZWQgOiBDU1NQYXJzZXI6OlBhcnNlUmVz
dWx0OjpVbmNoYW5nZWQ7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBmaWx0ZXJQcm9wZXJ0aWVz
KGJvb2wgaW1wb3J0YW50LCBjb25zdCBQYXJzZWRQcm9wZXJ0eVZlY3RvciYgaW5wdXQsIFBhcnNl
ZFByb3BlcnR5VmVjdG9yJiBvdXRwdXQsIHNpemVfdCYgdW51c2VkRW50cmllcywgc3RkOjpiaXRz
ZXQ8bnVtQ1NTUHJvcGVydGllcz4mIHNlZW5Qcm9wZXJ0aWVzLCBIYXNoU2V0PEF0b21pY1N0cmlu
Zz4mIHNlZW5DdXN0b21Qcm9wZXJ0aWVzKQorc3RhdGljIGlubGluZSB2b2lkIGZpbHRlclByb3Bl
cnRpZXMoYm9vbCBpbXBvcnRhbnQsIGNvbnN0IFBhcnNlZFByb3BlcnR5VmVjdG9yJiBpbnB1dCwg
UGFyc2VkUHJvcGVydHlWZWN0b3ImIG91dHB1dCwgc2l6ZV90JiB1bnVzZWRFbnRyaWVzLCBzdGQ6
OmJpdHNldDxudW1DU1NQcm9wZXJ0aWVzPiYgc2VlblByb3BlcnRpZXMsIEhhc2hTZXQ8QXRvbVN0
cmluZz4mIHNlZW5DdXN0b21Qcm9wZXJ0aWVzKQogewogICAgIC8vIEFkZCBwcm9wZXJ0aWVzIGlu
IHJldmVyc2Ugb3JkZXIgc28gdGhhdCBoaWdoZXN0IHByaW9yaXR5IGRlZmluaXRpb25zIGFyZSBy
ZWFjaGVkIGZpcnN0LiBEdXBsaWNhdGUgZGVmaW5pdGlvbnMgY2FuIHRoZW4gYmUgaWdub3JlZCB3
aGVuIGZvdW5kLgogICAgIGZvciAoc2l6ZV90IGkgPSBpbnB1dC5zaXplKCk7IGktLTsgKSB7CkBA
IC0xNDYsNyArMTQ2LDcgQEAgc3RhdGljIFJlZjxJbW11dGFibGVTdHlsZVByb3BlcnRpZXM+IGNy
ZWF0ZVN0eWxlUHJvcGVydGllcyhQYXJzZWRQcm9wZXJ0eVZlY3RvciYKICAgICBzdGQ6OmJpdHNl
dDxudW1DU1NQcm9wZXJ0aWVzPiBzZWVuUHJvcGVydGllczsKICAgICBzaXplX3QgdW51c2VkRW50
cmllcyA9IHBhcnNlZFByb3BlcnRpZXMuc2l6ZSgpOwogICAgIFBhcnNlZFByb3BlcnR5VmVjdG9y
IHJlc3VsdHModW51c2VkRW50cmllcyk7Ci0gICAgSGFzaFNldDxBdG9taWNTdHJpbmc+IHNlZW5D
dXN0b21Qcm9wZXJ0aWVzOworICAgIEhhc2hTZXQ8QXRvbVN0cmluZz4gc2VlbkN1c3RvbVByb3Bl
cnRpZXM7CiAKICAgICBmaWx0ZXJQcm9wZXJ0aWVzKHRydWUsIHBhcnNlZFByb3BlcnRpZXMsIHJl
c3VsdHMsIHVudXNlZEVudHJpZXMsIHNlZW5Qcm9wZXJ0aWVzLCBzZWVuQ3VzdG9tUHJvcGVydGll
cyk7CiAgICAgZmlsdGVyUHJvcGVydGllcyhmYWxzZSwgcGFyc2VkUHJvcGVydGllcywgcmVzdWx0
cywgdW51c2VkRW50cmllcywgc2VlblByb3BlcnRpZXMsIHNlZW5DdXN0b21Qcm9wZXJ0aWVzKTsK
QEAgLTIxMyw3ICsyMTMsNyBAQCBib29sIENTU1BhcnNlckltcGw6OnBhcnNlRGVjbGFyYXRpb25M
aXN0KE11dGFibGVTdHlsZVByb3BlcnRpZXMqIGRlY2xhcmF0aW9uLCBjbwogICAgIHN0ZDo6Yml0
c2V0PG51bUNTU1Byb3BlcnRpZXM+IHNlZW5Qcm9wZXJ0aWVzOwogICAgIHNpemVfdCB1bnVzZWRF
bnRyaWVzID0gcGFyc2VyLm1fcGFyc2VkUHJvcGVydGllcy5zaXplKCk7CiAgICAgUGFyc2VkUHJv
cGVydHlWZWN0b3IgcmVzdWx0cyh1bnVzZWRFbnRyaWVzKTsKLSAgICBIYXNoU2V0PEF0b21pY1N0
cmluZz4gc2VlbkN1c3RvbVByb3BlcnRpZXM7CisgICAgSGFzaFNldDxBdG9tU3RyaW5nPiBzZWVu
Q3VzdG9tUHJvcGVydGllczsKICAgICBmaWx0ZXJQcm9wZXJ0aWVzKHRydWUsIHBhcnNlci5tX3Bh
cnNlZFByb3BlcnRpZXMsIHJlc3VsdHMsIHVudXNlZEVudHJpZXMsIHNlZW5Qcm9wZXJ0aWVzLCBz
ZWVuQ3VzdG9tUHJvcGVydGllcyk7CiAgICAgZmlsdGVyUHJvcGVydGllcyhmYWxzZSwgcGFyc2Vy
Lm1fcGFyc2VkUHJvcGVydGllcywgcmVzdWx0cywgdW51c2VkRW50cmllcywgc2VlblByb3BlcnRp
ZXMsIHNlZW5DdXN0b21Qcm9wZXJ0aWVzKTsKICAgICBpZiAodW51c2VkRW50cmllcykKQEAgLTI2
NCwxNiArMjY0LDE2IEBAIENTU1NlbGVjdG9yTGlzdCBDU1NQYXJzZXJJbXBsOjpwYXJzZVBhZ2VT
ZWxlY3RvcihDU1NQYXJzZXJUb2tlblJhbmdlIHJhbmdlLCBTdHlsCiB7CiAgICAgLy8gV2Ugb25s
eSBzdXBwb3J0IGEgc21hbGwgc3Vic2V0IG9mIHRoZSBjc3MtcGFnZSBzcGVjLgogICAgIHJhbmdl
LmNvbnN1bWVXaGl0ZXNwYWNlKCk7Ci0gICAgQXRvbWljU3RyaW5nIHR5cGVTZWxlY3RvcjsKKyAg
ICBBdG9tU3RyaW5nIHR5cGVTZWxlY3RvcjsKICAgICBpZiAocmFuZ2UucGVlaygpLnR5cGUoKSA9
PSBJZGVudFRva2VuKQotICAgICAgICB0eXBlU2VsZWN0b3IgPSByYW5nZS5jb25zdW1lKCkudmFs
dWUoKS50b0F0b21pY1N0cmluZygpOworICAgICAgICB0eXBlU2VsZWN0b3IgPSByYW5nZS5jb25z
dW1lKCkudmFsdWUoKS50b0F0b21TdHJpbmcoKTsKIAotICAgIEF0b21pY1N0cmluZyBwc2V1ZG87
CisgICAgQXRvbVN0cmluZyBwc2V1ZG87CiAgICAgaWYgKHJhbmdlLnBlZWsoKS50eXBlKCkgPT0g
Q29sb25Ub2tlbikgewogICAgICAgICByYW5nZS5jb25zdW1lKCk7CiAgICAgICAgIGlmIChyYW5n
ZS5wZWVrKCkudHlwZSgpICE9IElkZW50VG9rZW4pCiAgICAgICAgICAgICByZXR1cm4gQ1NTU2Vs
ZWN0b3JMaXN0KCk7Ci0gICAgICAgIHBzZXVkbyA9IHJhbmdlLmNvbnN1bWUoKS52YWx1ZSgpLnRv
QXRvbWljU3RyaW5nKCk7CisgICAgICAgIHBzZXVkbyA9IHJhbmdlLmNvbnN1bWUoKS52YWx1ZSgp
LnRvQXRvbVN0cmluZygpOwogICAgIH0KIAogICAgIHJhbmdlLmNvbnN1bWVXaGl0ZXNwYWNlKCk7
CkBAIC00NzcsMjEgKzQ3NywyMSBAQCBSZWZQdHI8U3R5bGVSdWxlQmFzZT4gQ1NTUGFyc2VySW1w
bDo6Y29uc3VtZVF1YWxpZmllZFJ1bGUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcgogfQogCiAvLyBU
aGlzIG1heSBzdGlsbCBjb25zdW1lIHRva2VucyBpZiBpdCBmYWlscwotc3RhdGljIEF0b21pY1N0
cmluZyBjb25zdW1lU3RyaW5nT3JVUkkoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCitzdGF0
aWMgQXRvbVN0cmluZyBjb25zdW1lU3RyaW5nT3JVUkkoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFu
Z2UpCiB7CiAgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuID0gcmFuZ2UucGVlaygpOwog
CiAgICAgaWYgKHRva2VuLnR5cGUoKSA9PSBTdHJpbmdUb2tlbiB8fCB0b2tlbi50eXBlKCkgPT0g
VXJsVG9rZW4pCi0gICAgICAgIHJldHVybiByYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFj
ZSgpLnZhbHVlKCkudG9BdG9taWNTdHJpbmcoKTsKKyAgICAgICAgcmV0dXJuIHJhbmdlLmNvbnN1
bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkudmFsdWUoKS50b0F0b21TdHJpbmcoKTsKIAogICAgIGlm
ICh0b2tlbi50eXBlKCkgIT0gRnVuY3Rpb25Ub2tlbiB8fCAhZXF1YWxJZ25vcmluZ0FTQ0lJQ2Fz
ZSh0b2tlbi52YWx1ZSgpLCAidXJsIikpCi0gICAgICAgIHJldHVybiBBdG9taWNTdHJpbmcoKTsK
KyAgICAgICAgcmV0dXJuIEF0b21TdHJpbmcoKTsKIAogICAgIENTU1BhcnNlclRva2VuUmFuZ2Ug
Y29udGVudHMgPSByYW5nZS5jb25zdW1lQmxvY2soKTsKICAgICBjb25zdCBDU1NQYXJzZXJUb2tl
biYgdXJpID0gY29udGVudHMuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKICAgICBpZiAo
dXJpLnR5cGUoKSA9PSBCYWRTdHJpbmdUb2tlbiB8fCAhY29udGVudHMuYXRFbmQoKSkKLSAgICAg
ICAgcmV0dXJuIEF0b21pY1N0cmluZygpOwotICAgIHJldHVybiB1cmkudmFsdWUoKS50b0F0b21p
Y1N0cmluZygpOworICAgICAgICByZXR1cm4gQXRvbVN0cmluZygpOworICAgIHJldHVybiB1cmku
dmFsdWUoKS50b0F0b21TdHJpbmcoKTsKIH0KIAogUmVmUHRyPFN0eWxlUnVsZUNoYXJzZXQ+IENT
U1BhcnNlckltcGw6OmNvbnN1bWVDaGFyc2V0UnVsZShDU1NQYXJzZXJUb2tlblJhbmdlIHByZWx1
ZGUpCkBAIC01MDQsNyArNTA0LDcgQEAgUmVmUHRyPFN0eWxlUnVsZUNoYXJzZXQ+IENTU1BhcnNl
ckltcGw6OmNvbnN1bWVDaGFyc2V0UnVsZShDU1NQYXJzZXJUb2tlblJhbmdlIHAKIAogUmVmUHRy
PFN0eWxlUnVsZUltcG9ydD4gQ1NTUGFyc2VySW1wbDo6Y29uc3VtZUltcG9ydFJ1bGUoQ1NTUGFy
c2VyVG9rZW5SYW5nZSBwcmVsdWRlKQogewotICAgIEF0b21pY1N0cmluZyB1cmkoY29uc3VtZVN0
cmluZ09yVVJJKHByZWx1ZGUpKTsKKyAgICBBdG9tU3RyaW5nIHVyaShjb25zdW1lU3RyaW5nT3JV
UkkocHJlbHVkZSkpOwogICAgIGlmICh1cmkuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOyAvLyBQYXJzZSBlcnJvciwgZXhwZWN0ZWQgc3RyaW5nIG9yIFVSSQogCkBAIC01MjEsMTEg
KzUyMSwxMSBAQCBSZWZQdHI8U3R5bGVSdWxlSW1wb3J0PiBDU1NQYXJzZXJJbXBsOjpjb25zdW1l
SW1wb3J0UnVsZShDU1NQYXJzZXJUb2tlblJhbmdlIHByZQogCiBSZWZQdHI8U3R5bGVSdWxlTmFt
ZXNwYWNlPiBDU1NQYXJzZXJJbXBsOjpjb25zdW1lTmFtZXNwYWNlUnVsZShDU1NQYXJzZXJUb2tl
blJhbmdlIHByZWx1ZGUpCiB7Ci0gICAgQXRvbWljU3RyaW5nIG5hbWVzcGFjZVByZWZpeDsKKyAg
ICBBdG9tU3RyaW5nIG5hbWVzcGFjZVByZWZpeDsKICAgICBpZiAocHJlbHVkZS5wZWVrKCkudHlw
ZSgpID09IElkZW50VG9rZW4pCi0gICAgICAgIG5hbWVzcGFjZVByZWZpeCA9IHByZWx1ZGUuY29u
c3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS52YWx1ZSgpLnRvQXRvbWljU3RyaW5nKCk7CisgICAg
ICAgIG5hbWVzcGFjZVByZWZpeCA9IHByZWx1ZGUuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2Uo
KS52YWx1ZSgpLnRvQXRvbVN0cmluZygpOwogCi0gICAgQXRvbWljU3RyaW5nIHVyaShjb25zdW1l
U3RyaW5nT3JVUkkocHJlbHVkZSkpOworICAgIEF0b21TdHJpbmcgdXJpKGNvbnN1bWVTdHJpbmdP
clVSSShwcmVsdWRlKSk7CiAgICAgaWYgKHVyaS5pc051bGwoKSB8fCAhcHJlbHVkZS5hdEVuZCgp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsgLy8gUGFyc2UgZXJyb3IsIGV4cGVjdGVkIHN0cmlu
ZyBvciBVUkkKIApAQCAtODIyLDcgKzgyMiw3IEBAIHZvaWQgQ1NTUGFyc2VySW1wbDo6Y29uc3Vt
ZURlY2xhcmF0aW9uKENTU1BhcnNlclRva2VuUmFuZ2UgcmFuZ2UsIFN0eWxlUnVsZTo6VHlwCiAK
ICAgICBzaXplX3QgcHJvcGVydGllc0NvdW50ID0gbV9wYXJzZWRQcm9wZXJ0aWVzLnNpemUoKTsK
ICAgICBpZiAocHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eUludmFsaWQgJiYgQ1NTVmFyaWFibGVQ
YXJzZXI6OmlzVmFsaWRWYXJpYWJsZU5hbWUodG9rZW4pKSB7Ci0gICAgICAgIEF0b21pY1N0cmlu
ZyB2YXJpYWJsZU5hbWUgPSB0b2tlbi52YWx1ZSgpLnRvQXRvbWljU3RyaW5nKCk7CisgICAgICAg
IEF0b21TdHJpbmcgdmFyaWFibGVOYW1lID0gdG9rZW4udmFsdWUoKS50b0F0b21TdHJpbmcoKTsK
ICAgICAgICAgY29uc3VtZUN1c3RvbVByb3BlcnR5VmFsdWUocmFuZ2UubWFrZVN1YlJhbmdlKCZy
YW5nZS5wZWVrKCksIGRlY2xhcmF0aW9uVmFsdWVFbmQpLCB2YXJpYWJsZU5hbWUsIGltcG9ydGFu
dCk7CiAgICAgfQogCkBAIC04MzksNyArODM5LDcgQEAgdm9pZCBDU1NQYXJzZXJJbXBsOjpjb25z
dW1lRGVjbGFyYXRpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSByYW5nZSwgU3R5bGVSdWxlOjpUeXAK
ICAgICB9CiB9CiAKLXZvaWQgQ1NTUGFyc2VySW1wbDo6Y29uc3VtZUN1c3RvbVByb3BlcnR5VmFs
dWUoQ1NTUGFyc2VyVG9rZW5SYW5nZSByYW5nZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YXJpYWJs
ZU5hbWUsIGJvb2wgaW1wb3J0YW50KQordm9pZCBDU1NQYXJzZXJJbXBsOjpjb25zdW1lQ3VzdG9t
UHJvcGVydHlWYWx1ZShDU1NQYXJzZXJUb2tlblJhbmdlIHJhbmdlLCBjb25zdCBBdG9tU3RyaW5n
JiB2YXJpYWJsZU5hbWUsIGJvb2wgaW1wb3J0YW50KQogewogICAgIGlmIChSZWZQdHI8Q1NTQ3Vz
dG9tUHJvcGVydHlWYWx1ZT4gdmFsdWUgPSBDU1NWYXJpYWJsZVBhcnNlcjo6cGFyc2VEZWNsYXJh
dGlvblZhbHVlKHZhcmlhYmxlTmFtZSwgcmFuZ2UsIG1fY29udGV4dCkpCiAgICAgICAgIG1fcGFy
c2VkUHJvcGVydGllcy5hcHBlbmQoQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlDdXN0b20sIFdURk1v
dmUodmFsdWUpLCBpbXBvcnRhbnQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9w
YXJzZXIvQ1NTUGFyc2VySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJz
ZXJJbXBsLmgKaW5kZXggMzZlMzc5MDVlMjdiZDNiYzY2NDUwNjU5NTI5N2MyMThiY2M5MmQ3OC4u
MTE1ODQzMDQ5MzkwYzE1NTk3NDJiMmExMDZhZTE3MTE2OThhYWE3NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJbXBsLmgKQEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgog
ICAgIH07CiAKICAgICBzdGF0aWMgQ1NTUGFyc2VyOjpQYXJzZVJlc3VsdCBwYXJzZVZhbHVlKE11
dGFibGVTdHlsZVByb3BlcnRpZXMqLCBDU1NQcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmLCBib29s
IGltcG9ydGFudCwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYpOwotICAgIHN0YXRpYyBDU1NQYXJz
ZXI6OlBhcnNlUmVzdWx0IHBhcnNlQ3VzdG9tUHJvcGVydHlWYWx1ZShNdXRhYmxlU3R5bGVQcm9w
ZXJ0aWVzKiwgY29uc3QgQXRvbWljU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFN0cmluZyYs
IGJvb2wgaW1wb3J0YW50LCBjb25zdCBDU1NQYXJzZXJDb250ZXh0Jik7CisgICAgc3RhdGljIENT
U1BhcnNlcjo6UGFyc2VSZXN1bHQgcGFyc2VDdXN0b21Qcm9wZXJ0eVZhbHVlKE11dGFibGVTdHls
ZVByb3BlcnRpZXMqLCBjb25zdCBBdG9tU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFN0cmlu
ZyYsIGJvb2wgaW1wb3J0YW50LCBjb25zdCBDU1NQYXJzZXJDb250ZXh0Jik7CiAgICAgc3RhdGlj
IFJlZjxJbW11dGFibGVTdHlsZVByb3BlcnRpZXM+IHBhcnNlSW5saW5lU3R5bGVEZWNsYXJhdGlv
bihjb25zdCBTdHJpbmcmLCBjb25zdCBFbGVtZW50Kik7CiAgICAgc3RhdGljIGJvb2wgcGFyc2VE
ZWNsYXJhdGlvbkxpc3QoTXV0YWJsZVN0eWxlUHJvcGVydGllcyosIGNvbnN0IFN0cmluZyYsIGNv
bnN0IENTU1BhcnNlckNvbnRleHQmKTsKICAgICBzdGF0aWMgUmVmUHRyPFN0eWxlUnVsZUJhc2U+
IHBhcnNlUnVsZShjb25zdCBTdHJpbmcmLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiwgU3R5bGVT
aGVldENvbnRlbnRzKiwgQWxsb3dlZFJ1bGVzVHlwZSk7CkBAIC0xNDEsNyArMTQxLDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGNvbnN1bWVEZWNsYXJhdGlvbkxpc3QoQ1NTUGFyc2VyVG9rZW5SYW5n
ZSwgU3R5bGVSdWxlOjpUeXBlKTsKICAgICB2b2lkIGNvbnN1bWVEZWNsYXJhdGlvbihDU1NQYXJz
ZXJUb2tlblJhbmdlLCBTdHlsZVJ1bGU6OlR5cGUpOwogICAgIHZvaWQgY29uc3VtZURlY2xhcmF0
aW9uVmFsdWUoQ1NTUGFyc2VyVG9rZW5SYW5nZSwgQ1NTUHJvcGVydHlJRCwgYm9vbCBpbXBvcnRh
bnQsIFN0eWxlUnVsZTo6VHlwZSk7Ci0gICAgdm9pZCBjb25zdW1lQ3VzdG9tUHJvcGVydHlWYWx1
ZShDU1NQYXJzZXJUb2tlblJhbmdlLCBjb25zdCBBdG9taWNTdHJpbmcmIHByb3BlcnR5TmFtZSwg
Ym9vbCBpbXBvcnRhbnQpOworICAgIHZvaWQgY29uc3VtZUN1c3RvbVByb3BlcnR5VmFsdWUoQ1NT
UGFyc2VyVG9rZW5SYW5nZSwgY29uc3QgQXRvbVN0cmluZyYgcHJvcGVydHlOYW1lLCBib29sIGlt
cG9ydGFudCk7CiAKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFZlY3Rvcjxkb3VibGU+PiBj
b25zdW1lS2V5ZnJhbWVLZXlMaXN0KENTU1BhcnNlclRva2VuUmFuZ2UpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclNlbGVjdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyU2VsZWN0b3IuY3BwCmluZGV4IDFhZjQyNGVh
YzlmZjNiNzBmNTJmZTVlNmIzMjQxNzQxOWMxMWI3YTMuLjk3MzkzYzk0NzQ4YTM3ZjdmZWE5NTRh
NjU2MDdkZTMwZjlhMDc5MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIv
Q1NTUGFyc2VyU2VsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NT
UGFyc2VyU2VsZWN0b3IuY3BwCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotQ1NTUGFyc2VyU2VsZWN0b3IqIENTU1BhcnNlclNlbGVjdG9yOjpwYXJzZVBhZ2VQc2V1
ZG9TZWxlY3Rvcihjb25zdCBBdG9taWNTdHJpbmcmIHBzZXVkb1R5cGVTdHJpbmcpCitDU1NQYXJz
ZXJTZWxlY3RvciogQ1NTUGFyc2VyU2VsZWN0b3I6OnBhcnNlUGFnZVBzZXVkb1NlbGVjdG9yKGNv
bnN0IEF0b21TdHJpbmcmIHBzZXVkb1R5cGVTdHJpbmcpCiB7CiAgICAgQ1NTU2VsZWN0b3I6OlBh
Z2VQc2V1ZG9DbGFzc1R5cGUgcHNldWRvVHlwZTsKICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2UocHNldWRvVHlwZVN0cmluZywgImZpcnN0IikpCkBAIC01Miw3ICs1Miw3IEBA
IENTU1BhcnNlclNlbGVjdG9yKiBDU1NQYXJzZXJTZWxlY3Rvcjo6cGFyc2VQYWdlUHNldWRvU2Vs
ZWN0b3IoY29uc3QgQXRvbWljU3RyaW5nCiAKIENTU1BhcnNlclNlbGVjdG9yKiBDU1NQYXJzZXJT
ZWxlY3Rvcjo6cGFyc2VQc2V1ZG9FbGVtZW50U2VsZWN0b3JGcm9tU3RyaW5nVmlldyhTdHJpbmdW
aWV3JiBwc2V1ZG9UeXBlU3RyaW5nKQogewotICAgIEF0b21pY1N0cmluZyBuYW1lID0gcHNldWRv
VHlwZVN0cmluZy50b0F0b21pY1N0cmluZygpOworICAgIEF0b21TdHJpbmcgbmFtZSA9IHBzZXVk
b1R5cGVTdHJpbmcudG9BdG9tU3RyaW5nKCk7CiAgICAgCiAgICAgQ1NTU2VsZWN0b3I6OlBzZXVk
b0VsZW1lbnRUeXBlIHBzZXVkb1R5cGUgPSBDU1NTZWxlY3Rvcjo6cGFyc2VQc2V1ZG9FbGVtZW50
VHlwZShuYW1lKTsKICAgICBpZiAocHNldWRvVHlwZSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvRWxl
bWVudFVua25vd24pIHsKQEAgLTcxLDcgKzcxLDcgQEAgQ1NTUGFyc2VyU2VsZWN0b3IqIENTU1Bh
cnNlclNlbGVjdG9yOjpwYXJzZVBzZXVkb0VsZW1lbnRTZWxlY3RvckZyb21TdHJpbmdWaWV3KFMK
ICAgICBpZiAocHNldWRvVHlwZSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVudFdlYktpdEN1
c3RvbUxlZ2FjeVByZWZpeGVkKSB7CiAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobmFtZSA9
PSAiLXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciIsICItd2Via2l0LWlucHV0LXBsYWNlaG9sZGVy
IGlzIHRoZSBvbmx5IExlZ2FjeVByZWZpeCBwc2V1ZG8gdHlwZS4iKTsKICAgICAgICAgaWYgKG5h
bWUgPT0gIi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIiKQotICAgICAgICAgICAgbmFtZSA9IEF0
b21pY1N0cmluZygicGxhY2Vob2xkZXIiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKTsKKyAgICAgICAgICAgIG5hbWUgPSBBdG9tU3RyaW5nKCJwbGFjZWhvbGRlciIsIEF0b21T
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICB9CiAgICAgc2VsZWN0b3ItPm1fc2Vs
ZWN0b3ItPnNldFZhbHVlKG5hbWUpOwogICAgIHJldHVybiBzZWxlY3Rvci5yZWxlYXNlKCk7CkBA
IC05MCw3ICs5MCw3IEBAIENTU1BhcnNlclNlbGVjdG9yKiBDU1NQYXJzZXJTZWxlY3Rvcjo6cGFy
c2VQc2V1ZG9DbGFzc1NlbGVjdG9yRnJvbVN0cmluZ1ZpZXcoU3RyCiAgICAgICAgIGF1dG8gc2Vs
ZWN0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPENTU1BhcnNlclNlbGVjdG9yPigpOwogICAgICAgICBz
ZWxlY3Rvci0+bV9zZWxlY3Rvci0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnQp
OwogICAgICAgICBzZWxlY3Rvci0+bV9zZWxlY3Rvci0+c2V0UHNldWRvRWxlbWVudFR5cGUocHNl
dWRvVHlwZS5jb21wYXRpYmlsaXR5UHNldWRvRWxlbWVudCk7Ci0gICAgICAgIEF0b21pY1N0cmlu
ZyBuYW1lID0gcHNldWRvVHlwZVN0cmluZy50b0F0b21pY1N0cmluZygpOworICAgICAgICBBdG9t
U3RyaW5nIG5hbWUgPSBwc2V1ZG9UeXBlU3RyaW5nLnRvQXRvbVN0cmluZygpOwogICAgICAgICBz
ZWxlY3Rvci0+bV9zZWxlY3Rvci0+c2V0VmFsdWUobmFtZSk7CiAgICAgICAgIHJldHVybiBzZWxl
Y3Rvci5yZWxlYXNlKCk7CiAgICAgfQpAQCAtMTI3LDcgKzEyNyw3IEBAIHZvaWQgQ1NTUGFyc2Vy
U2VsZWN0b3I6OmFkb3B0U2VsZWN0b3JWZWN0b3IoVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxDU1NQ
YXJzZXJTZWxlCiAgICAgbV9zZWxlY3Rvci0+c2V0U2VsZWN0b3JMaXN0KHN0ZDo6bWFrZV91bmlx
dWU8Q1NTU2VsZWN0b3JMaXN0PihXVEZNb3ZlKHNlbGVjdG9yVmVjdG9yKSkpOwogfQogCi12b2lk
IENTU1BhcnNlclNlbGVjdG9yOjpzZXRMYW5nQXJndW1lbnRMaXN0KHN0ZDo6dW5pcXVlX3B0cjxW
ZWN0b3I8QXRvbWljU3RyaW5nPj4gYXJndW1lbnRMaXN0KQordm9pZCBDU1NQYXJzZXJTZWxlY3Rv
cjo6c2V0TGFuZ0FyZ3VtZW50TGlzdChzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPEF0b21TdHJpbmc+
PiBhcmd1bWVudExpc3QpCiB7CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghYXJndW1lbnRMaXN0
LT5pc0VtcHR5KCksICJObyBDU1MgU2VsZWN0b3IgdGFrZXMgYW4gZW1wdHkgYXJndW1lbnQgbGlz
dC4iKTsKICAgICBtX3NlbGVjdG9yLT5zZXRMYW5nQXJndW1lbnRMaXN0KFdURk1vdmUoYXJndW1l
bnRMaXN0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNl
clNlbGVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclNlbGVjdG9y
LmgKaW5kZXggODYwZmRhMWMxMTEyYWI5OWEzMjgzZTNhMjNjNjQxN2NlYTU3MjdjZS4uMDJiOWM4
NTU2ODMxYjM4YTZlNzM1OTI2ZDZkM2FhMWM2N2ExOGFmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJTZWxlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9wYXJzZXIvQ1NTUGFyc2VyU2VsZWN0b3IuaApAQCAtMjIsOCArMjIsOCBAQAogCiAjaW5j
bHVkZSAiQ1NTU2VsZWN0b3IuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCi0jaW5j
bHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQXRvbWlj
U3RyaW5nSGFzaC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9BdG9tU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIENTU1Bh
cnNlclNlbGVjdG9yIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgQ1NTUGFyc2VyU2VsZWN0b3IqIHBh
cnNlUHNldWRvQ2xhc3NTZWxlY3RvckZyb21TdHJpbmdWaWV3KFN0cmluZ1ZpZXcmKTsKICAgICBz
dGF0aWMgQ1NTUGFyc2VyU2VsZWN0b3IqIHBhcnNlUHNldWRvRWxlbWVudFNlbGVjdG9yRnJvbVN0
cmluZ1ZpZXcoU3RyaW5nVmlldyYpOwotICAgIHN0YXRpYyBDU1NQYXJzZXJTZWxlY3RvciogcGFy
c2VQYWdlUHNldWRvU2VsZWN0b3IoY29uc3QgQXRvbWljU3RyaW5nJik7CisgICAgc3RhdGljIENT
U1BhcnNlclNlbGVjdG9yKiBwYXJzZVBhZ2VQc2V1ZG9TZWxlY3Rvcihjb25zdCBBdG9tU3RyaW5n
Jik7CiAgICAgCiAgICAgQ1NTUGFyc2VyU2VsZWN0b3IoKTsKICAgICBleHBsaWNpdCBDU1NQYXJz
ZXJTZWxlY3Rvcihjb25zdCBRdWFsaWZpZWROYW1lJik7CkBAIC01MSwxMSArNTEsMTEgQEAgcHVi
bGljOgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPENTU1NlbGVjdG9yPiByZWxlYXNlU2VsZWN0b3Io
KSB7IHJldHVybiBXVEZNb3ZlKG1fc2VsZWN0b3IpOyB9CiAKLSAgICB2b2lkIHNldFZhbHVlKGNv
bnN0IEF0b21pY1N0cmluZyYgdmFsdWUsIGJvb2wgbWF0Y2hMb3dlckNhc2UgPSBmYWxzZSkgeyBt
X3NlbGVjdG9yLT5zZXRWYWx1ZSh2YWx1ZSwgbWF0Y2hMb3dlckNhc2UpOyB9CisgICAgdm9pZCBz
ZXRWYWx1ZShjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSwgYm9vbCBtYXRjaExvd2VyQ2FzZSA9IGZh
bHNlKSB7IG1fc2VsZWN0b3ItPnNldFZhbHVlKHZhbHVlLCBtYXRjaExvd2VyQ2FzZSk7IH0KIAog
ICAgIHZvaWQgc2V0QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHZhbHVlLCBib29sIGNv
bnZlcnRUb0xvd2VyY2FzZSwgQ1NTU2VsZWN0b3I6OkF0dHJpYnV0ZU1hdGNoVHlwZSB0eXBlKSB7
IG1fc2VsZWN0b3ItPnNldEF0dHJpYnV0ZSh2YWx1ZSwgY29udmVydFRvTG93ZXJjYXNlLCB0eXBl
KTsgfQogICAgIAotICAgIHZvaWQgc2V0QXJndW1lbnQoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1
ZSkgeyBtX3NlbGVjdG9yLT5zZXRBcmd1bWVudCh2YWx1ZSk7IH0KKyAgICB2b2lkIHNldEFyZ3Vt
ZW50KGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKSB7IG1fc2VsZWN0b3ItPnNldEFyZ3VtZW50KHZh
bHVlKTsgfQogICAgIHZvaWQgc2V0TnRoKGludCBhLCBpbnQgYikgeyBtX3NlbGVjdG9yLT5zZXRO
dGgoYSwgYik7IH0KICAgICB2b2lkIHNldE1hdGNoKENTU1NlbGVjdG9yOjpNYXRjaCB2YWx1ZSkg
eyBtX3NlbGVjdG9yLT5zZXRNYXRjaCh2YWx1ZSk7IH0KICAgICB2b2lkIHNldFJlbGF0aW9uKENT
U1NlbGVjdG9yOjpSZWxhdGlvblR5cGUgdmFsdWUpIHsgbV9zZWxlY3Rvci0+c2V0UmVsYXRpb24o
dmFsdWUpOyB9CkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFBzZXVkb0Vs
ZW1lbnRUeXBlKENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50VHlwZSB0eXBlKSB7IG1fc2VsZWN0
b3ItPnNldFBzZXVkb0VsZW1lbnRUeXBlKHR5cGUpOyB9CiAKICAgICB2b2lkIGFkb3B0U2VsZWN0
b3JWZWN0b3IoVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4+JiYpOwot
ICAgIHZvaWQgc2V0TGFuZ0FyZ3VtZW50TGlzdChzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPEF0b21p
Y1N0cmluZz4+KTsKKyAgICB2b2lkIHNldExhbmdBcmd1bWVudExpc3Qoc3RkOjp1bmlxdWVfcHRy
PFZlY3RvcjxBdG9tU3RyaW5nPj4pOwogICAgIHZvaWQgc2V0U2VsZWN0b3JMaXN0KHN0ZDo6dW5p
cXVlX3B0cjxDU1NTZWxlY3Rvckxpc3Q+KTsKIAogICAgIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFz
c1R5cGUgcHNldWRvQ2xhc3NUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rvci0+cHNldWRv
Q2xhc3NUeXBlKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NT
UHJvcGVydHlQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0
eVBhcnNlci5jcHAKaW5kZXggZmI4YjVlNjk0Y2IzNTBlNTg5Nzk3YmZhZDI2MjQzNjI3NzY1Yjgy
NS4uOTAyZGExNTFjMDM2MGE4N2Y5MDAwMzJkYThkNWQ3YzRmODU2Y2QyMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKQEAgLTIxOTcsNyAr
MjE5Nyw3IEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVBdHRyKENTU1BhcnNlclRv
a2VuUmFuZ2UgYXJncywgQ1NTUGFyc2VyQ29udGV4dCBjCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIAogICAgIENTU1BhcnNlclRva2VuIHRva2VuID0gYXJncy5jb25zdW1lSW5jbHVkaW5n
V2hpdGVzcGFjZSgpOwotICAgIGF1dG8gYXR0ck5hbWUgPSB0b2tlbi52YWx1ZSgpLnRvQXRvbWlj
U3RyaW5nKCk7CisgICAgYXV0byBhdHRyTmFtZSA9IHRva2VuLnZhbHVlKCkudG9BdG9tU3RyaW5n
KCk7CiAgICAgaWYgKGNvbnRleHQuaXNIVE1MRG9jdW1lbnQpCiAgICAgICAgIGF0dHJOYW1lID0g
YXR0ck5hbWUuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwCmluZGV4IDhi
OTM5YWFhYTNkNjZkM2Q4OGZjNDI5MzQ5ZjVkZDVjOWVhZjA2MGUuLjIwMDVmYzAyYTk5ZDZiMmVj
NmI2ZjAxOTkxOTczMjExNWQ5M2U2YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9w
YXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5jcHAKQEAgLTE0NDQsNyArMTQ0NCw3
IEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVJbWFnZVNldChDU1NQYXJzZXJUb2tl
blJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyCiAgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSBhcmdz
ID0gY29uc3VtZUZ1bmN0aW9uKHJhbmdlQ29weSk7CiAgICAgUmVmUHRyPENTU0ltYWdlU2V0VmFs
dWU+IGltYWdlU2V0ID0gQ1NTSW1hZ2VTZXRWYWx1ZTo6Y3JlYXRlKGNvbnRleHQuaXNDb250ZW50
T3BhcXVlID8gTG9hZGVkRnJvbU9wYXF1ZVNvdXJjZTo6WWVzIDogTG9hZGVkRnJvbU9wYXF1ZVNv
dXJjZTo6Tm8pOwogICAgIGRvIHsKLSAgICAgICAgQXRvbWljU3RyaW5nIHVybFZhbHVlID0gY29u
c3VtZVVybEFzU3RyaW5nVmlldyhhcmdzKS50b0F0b21pY1N0cmluZygpOworICAgICAgICBBdG9t
U3RyaW5nIHVybFZhbHVlID0gY29uc3VtZVVybEFzU3RyaW5nVmlldyhhcmdzKS50b0F0b21TdHJp
bmcoKTsKICAgICAgICAgaWYgKHVybFZhbHVlLmlzTnVsbCgpKQogICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKQEAgLTE2NjEsNyArMTY2MSw3IEBAIFJlZlB0cjxDU1NTaGFkb3dWYWx1ZT4g
Y29uc3VtZVNpbmdsZVNoYWRvdyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2Vy
CiAKIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZUltYWdlKENTU1BhcnNlclRva2VuUmFuZ2UmIHJh
bmdlLCBDU1NQYXJzZXJDb250ZXh0IGNvbnRleHQsIENvbnN1bWVHZW5lcmF0ZWRJbWFnZSBnZW5l
cmF0ZWRJbWFnZSkKIHsKLSAgICBBdG9taWNTdHJpbmcgdXJpID0gY29uc3VtZVVybEFzU3RyaW5n
VmlldyhyYW5nZSkudG9BdG9taWNTdHJpbmcoKTsKKyAgICBBdG9tU3RyaW5nIHVyaSA9IGNvbnN1
bWVVcmxBc1N0cmluZ1ZpZXcocmFuZ2UpLnRvQXRvbVN0cmluZygpOwogICAgIGlmICghdXJpLmlz
TnVsbCgpKQogICAgICAgICByZXR1cm4gQ1NTSW1hZ2VWYWx1ZTo6Y3JlYXRlKGNvbXBsZXRlVVJM
KGNvbnRleHQsIHVyaSksIGNvbnRleHQuaXNDb250ZW50T3BhcXVlID8gTG9hZGVkRnJvbU9wYXF1
ZVNvdXJjZTo6WWVzIDogTG9hZGVkRnJvbU9wYXF1ZVNvdXJjZTo6Tm8pOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1NlbGVjdG9yUGFyc2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTU2VsZWN0b3JQYXJzZXIuY3BwCmluZGV4IDk4ZDc1YzVj
OWI5MWYzZjk0ZGVlMmFkZDhmNzBjYWEyZDJlNDYyYmYuLmVjZDAwMzY3MGM0YzRlNDA1ZGE2ZDgz
M2QwMDMzMTBkMmFlYWYyNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIv
Q1NTU2VsZWN0b3JQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NT
U2VsZWN0b3JQYXJzZXIuY3BwCkBAIC05NSw3ICs5NSw3IEBAIENTU1NlbGVjdG9yTGlzdCBDU1NT
ZWxlY3RvclBhcnNlcjo6Y29uc3VtZUNvbXBvdW5kU2VsZWN0b3JMaXN0KENTU1BhcnNlclRva2Vu
UmFuCiAgICAgcmV0dXJuIENTU1NlbGVjdG9yTGlzdCB7IFdURk1vdmUoc2VsZWN0b3JMaXN0KSB9
OwogfQogCi1zdGF0aWMgYm9vbCBjb25zdW1lTGFuZ0FyZ3VtZW50TGlzdChzdGQ6OnVuaXF1ZV9w
dHI8VmVjdG9yPEF0b21pY1N0cmluZz4+JiBhcmd1bWVudExpc3QsIENTU1BhcnNlclRva2VuUmFu
Z2UmIHJhbmdlKQorc3RhdGljIGJvb2wgY29uc3VtZUxhbmdBcmd1bWVudExpc3Qoc3RkOjp1bmlx
dWVfcHRyPFZlY3RvcjxBdG9tU3RyaW5nPj4mIGFyZ3VtZW50TGlzdCwgQ1NTUGFyc2VyVG9rZW5S
YW5nZSYgcmFuZ2UpCiB7CiAgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIGlkZW50ID0gcmFuZ2Uu
Y29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKICAgICBpZiAoaWRlbnQudHlwZSgpICE9IElk
ZW50VG9rZW4gJiYgaWRlbnQudHlwZSgpICE9IFN0cmluZ1Rva2VuKQpAQCAtMTAzLDcgKzEwMyw3
IEBAIHN0YXRpYyBib29sIGNvbnN1bWVMYW5nQXJndW1lbnRMaXN0KHN0ZDo6dW5pcXVlX3B0cjxW
ZWN0b3I8QXRvbWljU3RyaW5nPj4mIGFyZ3VtCiAgICAgU3RyaW5nVmlldyBzdHJpbmcgPSBpZGVu
dC52YWx1ZSgpOwogICAgIGlmIChzdHJpbmcuc3RhcnRzV2l0aCgiLS0iKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIGFyZ3VtZW50TGlzdC0+YXBwZW5kKHN0cmluZy50b0F0b21pY1N0cmlu
ZygpKTsKKyAgICBhcmd1bWVudExpc3QtPmFwcGVuZChzdHJpbmcudG9BdG9tU3RyaW5nKCkpOwog
ICAgIHdoaWxlICghcmFuZ2UuYXRFbmQoKSAmJiByYW5nZS5wZWVrKCkudHlwZSgpID09IENvbW1h
VG9rZW4pIHsKICAgICAgICAgcmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKICAg
ICAgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIGlkZW50ID0gcmFuZ2UuY29uc3VtZUluY2x1ZGlu
Z1doaXRlc3BhY2UoKTsKQEAgLTExMiw3ICsxMTIsNyBAQCBzdGF0aWMgYm9vbCBjb25zdW1lTGFu
Z0FyZ3VtZW50TGlzdChzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPEF0b21pY1N0cmluZz4+JiBhcmd1
bQogICAgICAgICBTdHJpbmdWaWV3IHN0cmluZyA9IGlkZW50LnZhbHVlKCk7CiAgICAgICAgIGlm
IChzdHJpbmcuc3RhcnRzV2l0aCgiLS0iKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgYXJndW1lbnRMaXN0LT5hcHBlbmQoc3RyaW5nLnRvQXRvbWljU3RyaW5nKCkpOworICAg
ICAgICBhcmd1bWVudExpc3QtPmFwcGVuZChzdHJpbmcudG9BdG9tU3RyaW5nKCkpOwogICAgIH0K
ICAgICByZXR1cm4gcmFuZ2UuYXRFbmQoKTsKIH0KQEAgLTI2MCw4ICsyNjAsOCBAQCBzdGQ6OnVu
aXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IENTU1NlbGVjdG9yUGFyc2VyOjpjb25zdW1lQ29t
cG91bmRTZWxlY3RvcihDUwogewogICAgIHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rv
cj4gY29tcG91bmRTZWxlY3RvcjsKIAotICAgIEF0b21pY1N0cmluZyBuYW1lc3BhY2VQcmVmaXg7
Ci0gICAgQXRvbWljU3RyaW5nIGVsZW1lbnROYW1lOworICAgIEF0b21TdHJpbmcgbmFtZXNwYWNl
UHJlZml4OworICAgIEF0b21TdHJpbmcgZWxlbWVudE5hbWU7CiAgICAgQ1NTU2VsZWN0b3I6OlBz
ZXVkb0VsZW1lbnRUeXBlIGNvbXBvdW5kUHNldWRvRWxlbWVudCA9IENTU1NlbGVjdG9yOjpQc2V1
ZG9FbGVtZW50VW5rbm93bjsKICAgICBpZiAoIWNvbnN1bWVOYW1lKHJhbmdlLCBlbGVtZW50TmFt
ZSwgbmFtZXNwYWNlUHJlZml4KSkgewogICAgICAgICBjb21wb3VuZFNlbGVjdG9yID0gY29uc3Vt
ZVNpbXBsZVNlbGVjdG9yKHJhbmdlKTsKQEAgLTI4OSw3ICsyODksNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8Q1NTUGFyc2VyU2VsZWN0b3I+IENTU1NlbGVjdG9yUGFyc2VyOjpjb25zdW1lQ29tcG91bmRT
ZWxlY3RvcihDUwogICAgIH0KIAogICAgIGlmICghY29tcG91bmRTZWxlY3RvcikgewotICAgICAg
ICBBdG9taWNTdHJpbmcgbmFtZXNwYWNlVVJJID0gZGV0ZXJtaW5lTmFtZXNwYWNlKG5hbWVzcGFj
ZVByZWZpeCk7CisgICAgICAgIEF0b21TdHJpbmcgbmFtZXNwYWNlVVJJID0gZGV0ZXJtaW5lTmFt
ZXNwYWNlKG5hbWVzcGFjZVByZWZpeCk7CiAgICAgICAgIGlmIChuYW1lc3BhY2VVUkkuaXNOdWxs
KCkpIHsKICAgICAgICAgICAgIG1fZmFpbGVkUGFyc2luZyA9IHRydWU7CiAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKQEAgLTMyNCwxNCArMzI0LDE0IEBAIHN0ZDo6dW5pcXVlX3B0cjxDU1NQ
YXJzZXJTZWxlY3Rvcj4gQ1NTU2VsZWN0b3JQYXJzZXI6OmNvbnN1bWVTaW1wbGVTZWxlY3RvcihD
U1NQCiAgICAgcmV0dXJuIHNlbGVjdG9yOwogfQogCi1ib29sIENTU1NlbGVjdG9yUGFyc2VyOjpj
b25zdW1lTmFtZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQXRvbWljU3RyaW5nJiBuYW1l
LCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVByZWZpeCkKK2Jvb2wgQ1NTU2VsZWN0b3JQYXJzZXI6
OmNvbnN1bWVOYW1lKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBBdG9tU3RyaW5nJiBuYW1l
LCBBdG9tU3RyaW5nJiBuYW1lc3BhY2VQcmVmaXgpCiB7CiAgICAgbmFtZSA9IG51bGxBdG9tKCk7
CiAgICAgbmFtZXNwYWNlUHJlZml4ID0gbnVsbEF0b20oKTsKIAogICAgIGNvbnN0IENTU1BhcnNl
clRva2VuJiBmaXJzdFRva2VuID0gcmFuZ2UucGVlaygpOwogICAgIGlmIChmaXJzdFRva2VuLnR5
cGUoKSA9PSBJZGVudFRva2VuKSB7Ci0gICAgICAgIG5hbWUgPSBmaXJzdFRva2VuLnZhbHVlKCku
dG9BdG9taWNTdHJpbmcoKTsKKyAgICAgICAgbmFtZSA9IGZpcnN0VG9rZW4udmFsdWUoKS50b0F0
b21TdHJpbmcoKTsKICAgICAgICAgcmFuZ2UuY29uc3VtZSgpOwogICAgIH0gZWxzZSBpZiAoZmly
c3RUb2tlbi50eXBlKCkgPT0gRGVsaW1pdGVyVG9rZW4gJiYgZmlyc3RUb2tlbi5kZWxpbWl0ZXIo
KSA9PSAnKicpIHsKICAgICAgICAgbmFtZSA9IHN0YXJBdG9tKCk7CkBAIC0zNDksNyArMzQ5LDcg
QEAgYm9vbCBDU1NTZWxlY3RvclBhcnNlcjo6Y29uc3VtZU5hbWUoQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYgcmFuZ2UsIEF0b21pY1N0cmluZyYgbmEKICAgICBuYW1lc3BhY2VQcmVmaXggPSBuYW1lOwog
ICAgIGNvbnN0IENTU1BhcnNlclRva2VuJiBuYW1lVG9rZW4gPSByYW5nZS5jb25zdW1lKCk7CiAg
ICAgaWYgKG5hbWVUb2tlbi50eXBlKCkgPT0gSWRlbnRUb2tlbikgewotICAgICAgICBuYW1lID0g
bmFtZVRva2VuLnZhbHVlKCkudG9BdG9taWNTdHJpbmcoKTsKKyAgICAgICAgbmFtZSA9IG5hbWVU
b2tlbi52YWx1ZSgpLnRvQXRvbVN0cmluZygpOwogICAgIH0gZWxzZSBpZiAobmFtZVRva2VuLnR5
cGUoKSA9PSBEZWxpbWl0ZXJUb2tlbiAmJiBuYW1lVG9rZW4uZGVsaW1pdGVyKCkgPT0gJyonKQog
ICAgICAgICBuYW1lID0gc3RhckF0b20oKTsKICAgICBlbHNlIHsKQEAgLTM3Miw3ICszNzIsNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IENTU1NlbGVjdG9yUGFyc2VyOjpj
b25zdW1lSWQoQ1NTUGFyc2VyVG9rZW5SYQogICAgIC8vIEZJWE1FLU5FV1BBUlNFUjogQXZvaWQg
aGF2aW5nIHRvIGRvIHRoaXMsIGJ1dCB0aGUgb2xkIHBhcnNlciBkb2VzIGFuZCB3ZSBuZWVkCiAg
ICAgLy8gdG8gYmUgY29tcGF0aWJsZSBmb3Igbm93LgogICAgIENTU1BhcnNlclRva2VuIHRva2Vu
ID0gcmFuZ2UuY29uc3VtZSgpOwotICAgIHNlbGVjdG9yLT5zZXRWYWx1ZSh0b2tlbi52YWx1ZSgp
LnRvQXRvbWljU3RyaW5nKCksIG1fY29udGV4dC5tb2RlID09IEhUTUxRdWlya3NNb2RlKTsKKyAg
ICBzZWxlY3Rvci0+c2V0VmFsdWUodG9rZW4udmFsdWUoKS50b0F0b21TdHJpbmcoKSwgbV9jb250
ZXh0Lm1vZGUgPT0gSFRNTFF1aXJrc01vZGUpOwogICAgIHJldHVybiBzZWxlY3RvcjsKIH0KIApA
QCAtMzg5LDcgKzM4OSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gQ1NT
U2VsZWN0b3JQYXJzZXI6OmNvbnN1bWVDbGFzcyhDU1NQYXJzZXJUb2tlCiAgICAgLy8gRklYTUUt
TkVXUEFSU0VSOiBBdm9pZCBoYXZpbmcgdG8gZG8gdGhpcywgYnV0IHRoZSBvbGQgcGFyc2VyIGRv
ZXMgYW5kIHdlIG5lZWQKICAgICAvLyB0byBiZSBjb21wYXRpYmxlIGZvciBub3cuCiAgICAgQ1NT
UGFyc2VyVG9rZW4gdG9rZW4gPSByYW5nZS5jb25zdW1lKCk7Ci0gICAgc2VsZWN0b3ItPnNldFZh
bHVlKHRva2VuLnZhbHVlKCkudG9BdG9taWNTdHJpbmcoKSwgbV9jb250ZXh0Lm1vZGUgPT0gSFRN
TFF1aXJrc01vZGUpOworICAgIHNlbGVjdG9yLT5zZXRWYWx1ZSh0b2tlbi52YWx1ZSgpLnRvQXRv
bVN0cmluZygpLCBtX2NvbnRleHQubW9kZSA9PSBIVE1MUXVpcmtzTW9kZSk7CiAKICAgICByZXR1
cm4gc2VsZWN0b3I7CiB9CkBAIC00MDAsMTMgKzQwMCwxMyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q1NT
UGFyc2VyU2VsZWN0b3I+IENTU1NlbGVjdG9yUGFyc2VyOjpjb25zdW1lQXR0cmlidXRlKENTU1Bh
cnNlcgogICAgIENTU1BhcnNlclRva2VuUmFuZ2UgYmxvY2sgPSByYW5nZS5jb25zdW1lQmxvY2so
KTsKICAgICBibG9jay5jb25zdW1lV2hpdGVzcGFjZSgpOwogCi0gICAgQXRvbWljU3RyaW5nIG5h
bWVzcGFjZVByZWZpeDsKLSAgICBBdG9taWNTdHJpbmcgYXR0cmlidXRlTmFtZTsKKyAgICBBdG9t
U3RyaW5nIG5hbWVzcGFjZVByZWZpeDsKKyAgICBBdG9tU3RyaW5nIGF0dHJpYnV0ZU5hbWU7CiAg
ICAgaWYgKCFjb25zdW1lTmFtZShibG9jaywgYXR0cmlidXRlTmFtZSwgbmFtZXNwYWNlUHJlZml4
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgYmxvY2suY29uc3VtZVdoaXRlc3BhY2Uo
KTsKIAotICAgIEF0b21pY1N0cmluZyBuYW1lc3BhY2VVUkkgPSBkZXRlcm1pbmVOYW1lc3BhY2Uo
bmFtZXNwYWNlUHJlZml4KTsKKyAgICBBdG9tU3RyaW5nIG5hbWVzcGFjZVVSSSA9IGRldGVybWlu
ZU5hbWVzcGFjZShuYW1lc3BhY2VQcmVmaXgpOwogICAgIGlmIChuYW1lc3BhY2VVUkkuaXNOdWxs
KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC00MjcsNyArNDI3LDcgQEAgc3RkOjp1
bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPiBDU1NTZWxlY3RvclBhcnNlcjo6Y29uc3VtZUF0
dHJpYnV0ZShDU1NQYXJzZXIKICAgICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgYXR0cmlidXRlVmFs
dWUgPSBibG9jay5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOwogICAgIGlmIChhdHRyaWJ1
dGVWYWx1ZS50eXBlKCkgIT0gSWRlbnRUb2tlbiAmJiBhdHRyaWJ1dGVWYWx1ZS50eXBlKCkgIT0g
U3RyaW5nVG9rZW4pCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHNlbGVjdG9yLT5zZXRW
YWx1ZShhdHRyaWJ1dGVWYWx1ZS52YWx1ZSgpLnRvQXRvbWljU3RyaW5nKCkpOworICAgIHNlbGVj
dG9yLT5zZXRWYWx1ZShhdHRyaWJ1dGVWYWx1ZS52YWx1ZSgpLnRvQXRvbVN0cmluZygpKTsKICAg
ICAKICAgICBzZWxlY3Rvci0+c2V0QXR0cmlidXRlKHF1YWxpZmllZE5hbWUsIG1fY29udGV4dC5p
c0hUTUxEb2N1bWVudCwgY29uc3VtZUF0dHJpYnV0ZUZsYWdzKGJsb2NrKSk7CiAKQEAgLTU2Nyw3
ICs1NjcsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IENTU1NlbGVjdG9y
UGFyc2VyOjpjb25zdW1lUHNldWRvKENTU1BhcnNlclRvawogICAgICAgICB9CiAgICAgICAgIGNh
c2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzTGFuZzogewogICAgICAgICAgICAgLy8gRklYTUU6
IENTUyBTZWxlY3RvcnMgTGV2ZWwgNCBhbGxvd3MgOmxhbmcoKi1mb28pCi0gICAgICAgICAgICBh
dXRvIGFyZ3VtZW50TGlzdCA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPEF0b21pY1N0cmluZz4+
KCk7CisgICAgICAgICAgICBhdXRvIGFyZ3VtZW50TGlzdCA9IHN0ZDo6bWFrZV91bmlxdWU8VmVj
dG9yPEF0b21TdHJpbmc+PigpOwogICAgICAgICAgICAgaWYgKCFjb25zdW1lTGFuZ0FyZ3VtZW50
TGlzdChhcmd1bWVudExpc3QsIGJsb2NrKSkKICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICAgICAgICAgIHNlbGVjdG9yLT5zZXRMYW5nQXJndW1lbnRMaXN0KFdURk1vdmUoYXJn
dW1lbnRMaXN0KSk7CkBAIC01OTYsNyArNTk2LDcgQEAgc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNl
clNlbGVjdG9yPiBDU1NTZWxlY3RvclBhcnNlcjo6Y29uc3VtZVBzZXVkbyhDU1NQYXJzZXJUb2sK
ICAgICAgICAgICAgIGNvbnN0IENTU1BhcnNlclRva2VuJiBpZGVudCA9IGJsb2NrLmNvbnN1bWVJ
bmNsdWRpbmdXaGl0ZXNwYWNlKCk7CiAgICAgICAgICAgICBpZiAoaWRlbnQudHlwZSgpICE9IElk
ZW50VG9rZW4gfHwgIWJsb2NrLmF0RW5kKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgICAgICAgICBzZWxlY3Rvci0+c2V0QXJndW1lbnQoaWRlbnQudmFsdWUoKS50b0F0
b21pY1N0cmluZygpKTsKKyAgICAgICAgICAgIHNlbGVjdG9yLT5zZXRBcmd1bWVudChpZGVudC52
YWx1ZSgpLnRvQXRvbVN0cmluZygpKTsKICAgICAgICAgICAgIHJldHVybiBzZWxlY3RvcjsKICAg
ICAgICAgfQogI2VuZGlmCkBAIC03NzUsMTQgKzc3NSwxNCBAQCBib29sIENTU1NlbGVjdG9yUGFy
c2VyOjpjb25zdW1lQU5QbHVzQihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgc3RkOjpwYWly
PGludAogICAgIHJldHVybiB0cnVlOwogfQogCi1jb25zdCBBdG9taWNTdHJpbmcmIENTU1NlbGVj
dG9yUGFyc2VyOjpkZWZhdWx0TmFtZXNwYWNlKCkgY29uc3QKK2NvbnN0IEF0b21TdHJpbmcmIENT
U1NlbGVjdG9yUGFyc2VyOjpkZWZhdWx0TmFtZXNwYWNlKCkgY29uc3QKIHsKICAgICBpZiAoIW1f
c3R5bGVTaGVldCkKICAgICAgICAgcmV0dXJuIHN0YXJBdG9tKCk7CiAgICAgcmV0dXJuIG1fc3R5
bGVTaGVldC0+ZGVmYXVsdE5hbWVzcGFjZSgpOwogfQogCi1jb25zdCBBdG9taWNTdHJpbmcmIENT
U1NlbGVjdG9yUGFyc2VyOjpkZXRlcm1pbmVOYW1lc3BhY2UoY29uc3QgQXRvbWljU3RyaW5nJiBw
cmVmaXgpCitjb25zdCBBdG9tU3RyaW5nJiBDU1NTZWxlY3RvclBhcnNlcjo6ZGV0ZXJtaW5lTmFt
ZXNwYWNlKGNvbnN0IEF0b21TdHJpbmcmIHByZWZpeCkKIHsKICAgICBpZiAocHJlZml4LmlzTnVs
bCgpKQogICAgICAgICByZXR1cm4gZGVmYXVsdE5hbWVzcGFjZSgpOwpAQCAtNzk1LDIwICs3OTUs
MjAgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBDU1NTZWxlY3RvclBhcnNlcjo6ZGV0ZXJtaW5lTmFt
ZXNwYWNlKGNvbnN0IEF0b21pY1N0cmluZyYgcHIKICAgICByZXR1cm4gbV9zdHlsZVNoZWV0LT5u
YW1lc3BhY2VVUklGcm9tUHJlZml4KHByZWZpeCk7CiB9CiAKLXZvaWQgQ1NTU2VsZWN0b3JQYXJz
ZXI6OnByZXBlbmRUeXBlU2VsZWN0b3JJZk5lZWRlZChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVz
cGFjZVByZWZpeCwgY29uc3QgQXRvbWljU3RyaW5nJiBlbGVtZW50TmFtZSwgQ1NTUGFyc2VyU2Vs
ZWN0b3IqIGNvbXBvdW5kU2VsZWN0b3IpCit2b2lkIENTU1NlbGVjdG9yUGFyc2VyOjpwcmVwZW5k
VHlwZVNlbGVjdG9ySWZOZWVkZWQoY29uc3QgQXRvbVN0cmluZyYgbmFtZXNwYWNlUHJlZml4LCBj
b25zdCBBdG9tU3RyaW5nJiBlbGVtZW50TmFtZSwgQ1NTUGFyc2VyU2VsZWN0b3IqIGNvbXBvdW5k
U2VsZWN0b3IpCiB7CiAgICAgYm9vbCBpc1NoYWRvd0RPTSA9IGNvbXBvdW5kU2VsZWN0b3ItPm5l
ZWRzSW1wbGljaXRTaGFkb3dDb21iaW5hdG9yRm9yTWF0Y2hpbmcoKTsKICAgICAKICAgICBpZiAo
ZWxlbWVudE5hbWUuaXNOdWxsKCkgJiYgZGVmYXVsdE5hbWVzcGFjZSgpID09IHN0YXJBdG9tKCkg
JiYgIWlzU2hhZG93RE9NKQogICAgICAgICByZXR1cm47CiAKLSAgICBBdG9taWNTdHJpbmcgZGV0
ZXJtaW5lZEVsZW1lbnROYW1lID0gZWxlbWVudE5hbWUuaXNOdWxsKCkgPyBzdGFyQXRvbSgpIDog
ZWxlbWVudE5hbWU7Ci0gICAgQXRvbWljU3RyaW5nIG5hbWVzcGFjZVVSSSA9IGRldGVybWluZU5h
bWVzcGFjZShuYW1lc3BhY2VQcmVmaXgpOworICAgIEF0b21TdHJpbmcgZGV0ZXJtaW5lZEVsZW1l
bnROYW1lID0gZWxlbWVudE5hbWUuaXNOdWxsKCkgPyBzdGFyQXRvbSgpIDogZWxlbWVudE5hbWU7
CisgICAgQXRvbVN0cmluZyBuYW1lc3BhY2VVUkkgPSBkZXRlcm1pbmVOYW1lc3BhY2UobmFtZXNw
YWNlUHJlZml4KTsKICAgICBpZiAobmFtZXNwYWNlVVJJLmlzTnVsbCgpKSB7CiAgICAgICAgIG1f
ZmFpbGVkUGFyc2luZyA9IHRydWU7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgQXRvbWlj
U3RyaW5nIGRldGVybWluZWRQcmVmaXggPSBuYW1lc3BhY2VQcmVmaXg7CisgICAgQXRvbVN0cmlu
ZyBkZXRlcm1pbmVkUHJlZml4ID0gbmFtZXNwYWNlUHJlZml4OwogICAgIGlmIChuYW1lc3BhY2VV
UkkgPT0gZGVmYXVsdE5hbWVzcGFjZSgpKQogICAgICAgICBkZXRlcm1pbmVkUHJlZml4ID0gbnVs
bEF0b20oKTsKICAgICBRdWFsaWZpZWROYW1lIHRhZyA9IFF1YWxpZmllZE5hbWUoZGV0ZXJtaW5l
ZFByZWZpeCwgZGV0ZXJtaW5lZEVsZW1lbnROYW1lLCBuYW1lc3BhY2VVUkkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NTZWxlY3RvclBhcnNlci5oIGIvU291cmNl
L1dlYkNvcmUvY3NzL3BhcnNlci9DU1NTZWxlY3RvclBhcnNlci5oCmluZGV4IDI4MzAyODczN2M3
YzIwYjQ2OWEyMWFlNzI1MmYzNjFjMjQ1NjMzNDUuLjUyMWUxZGE4ZTJhODkwZTgzYWZiZDBjNmQy
Y2RkZTJjNjBmMWZkNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NT
U2VsZWN0b3JQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1NlbGVj
dG9yUGFyc2VyLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHJpdmF0ZToKICAgICAvLyBUaGlzIGRvZXNu
J3QgaW5jbHVkZSBlbGVtZW50IG5hbWVzLCBzaW5jZSB0aGV5J3JlIGhhbmRsZWQgc3BlY2lhbGx5
CiAgICAgc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPiBjb25zdW1lU2ltcGxlU2Vs
ZWN0b3IoQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOwogCi0gICAgYm9vbCBjb25zdW1lTmFtZShDU1NQ
YXJzZXJUb2tlblJhbmdlJiwgQXRvbWljU3RyaW5nJiBuYW1lLCBBdG9taWNTdHJpbmcmIG5hbWVz
cGFjZVByZWZpeCk7CisgICAgYm9vbCBjb25zdW1lTmFtZShDU1NQYXJzZXJUb2tlblJhbmdlJiwg
QXRvbVN0cmluZyYgbmFtZSwgQXRvbVN0cmluZyYgbmFtZXNwYWNlUHJlZml4KTsKIAogICAgIC8v
IFRoZXNlIHdpbGwgcmV0dXJuIG51bGxwdHIgd2hlbiB0aGUgc2VsZWN0b3IgaXMgaW52YWxpZAog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gY29uc3VtZUlkKENTU1BhcnNl
clRva2VuUmFuZ2UmKTsKQEAgLTcyLDkgKzcyLDkgQEAgcHJpdmF0ZToKICAgICBDU1NTZWxlY3Rv
cjo6TWF0Y2ggY29uc3VtZUF0dHJpYnV0ZU1hdGNoKENTU1BhcnNlclRva2VuUmFuZ2UmKTsKICAg
ICBDU1NTZWxlY3Rvcjo6QXR0cmlidXRlTWF0Y2hUeXBlIGNvbnN1bWVBdHRyaWJ1dGVGbGFncyhD
U1NQYXJzZXJUb2tlblJhbmdlJik7CiAKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGRlZmF1bHRO
YW1lc3BhY2UoKSBjb25zdDsKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGRldGVybWluZU5hbWVz
cGFjZShjb25zdCBBdG9taWNTdHJpbmcmIHByZWZpeCk7Ci0gICAgdm9pZCBwcmVwZW5kVHlwZVNl
bGVjdG9ySWZOZWVkZWQoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VQcmVmaXgsIGNvbnN0
IEF0b21pY1N0cmluZyYgZWxlbWVudE5hbWUsIENTU1BhcnNlclNlbGVjdG9yKik7CisgICAgY29u
c3QgQXRvbVN0cmluZyYgZGVmYXVsdE5hbWVzcGFjZSgpIGNvbnN0OworICAgIGNvbnN0IEF0b21T
dHJpbmcmIGRldGVybWluZU5hbWVzcGFjZShjb25zdCBBdG9tU3RyaW5nJiBwcmVmaXgpOworICAg
IHZvaWQgcHJlcGVuZFR5cGVTZWxlY3RvcklmTmVlZGVkKGNvbnN0IEF0b21TdHJpbmcmIG5hbWVz
cGFjZVByZWZpeCwgY29uc3QgQXRvbVN0cmluZyYgZWxlbWVudE5hbWUsIENTU1BhcnNlclNlbGVj
dG9yKik7CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gYWRk
U2ltcGxlU2VsZWN0b3JUb0NvbXBvdW5kKHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rv
cj4gY29tcG91bmRTZWxlY3Rvciwgc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPiBz
aW1wbGVTZWxlY3Rvcik7CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxl
Y3Rvcj4gc3BsaXRDb21wb3VuZEF0SW1wbGljaXRTaGFkb3dDcm9zc2luZ0NvbWJpbmF0b3Ioc3Rk
Ojp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPiBjb21wb3VuZFNlbGVjdG9yLCBjb25zdCBD
U1NQYXJzZXJDb250ZXh0Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTVmFyaWFibGVQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NW
YXJpYWJsZVBhcnNlci5jcHAKaW5kZXggMWJlMjNiOWZlYzhmNWVjZGFkNGViODQ0ODUzZjllMDJj
YTVhOTIwZC4uMWYzYjMzYWZmZTc2OGU0MTk5NTVmMDI5ZjU4ZjY0ODIzZjkyZjA3OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NWYXJpYWJsZVBhcnNlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NWYXJpYWJsZVBhcnNlci5jcHAKQEAgLTE3
Nyw3ICsxNzcsNyBAQCBib29sIENTU1ZhcmlhYmxlUGFyc2VyOjpjb250YWluc1ZhbGlkVmFyaWFi
bGVSZWZlcmVuY2VzKENTU1BhcnNlclRva2VuUmFuZ2UgcmFuZwogICAgIHJldHVybiB0eXBlID09
IENTU1ZhbHVlSW50ZXJuYWxWYXJpYWJsZVZhbHVlICYmIGhhc1JlZmVyZW5jZXMgJiYgIWhhc0F0
QXBwbHlSdWxlOwogfQogCi1SZWZQdHI8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4gQ1NTVmFyaWFi
bGVQYXJzZXI6OnBhcnNlRGVjbGFyYXRpb25WYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmIHZhcmlh
YmxlTmFtZSwgQ1NTUGFyc2VyVG9rZW5SYW5nZSByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4
dCYgcGFyc2VyQ29udGV4dCkKK1JlZlB0cjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiBDU1NWYXJp
YWJsZVBhcnNlcjo6cGFyc2VEZWNsYXJhdGlvblZhbHVlKGNvbnN0IEF0b21TdHJpbmcmIHZhcmlh
YmxlTmFtZSwgQ1NTUGFyc2VyVG9rZW5SYW5nZSByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4
dCYgcGFyc2VyQ29udGV4dCkKIHsKICAgICBpZiAocmFuZ2UuYXRFbmQoKSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Zh
cmlhYmxlUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1ZhcmlhYmxlUGFy
c2VyLmgKaW5kZXggYzEwYzQ0YzI3ZDk0Y2E3OTZjOWQzNWYwZWIzMmEyNjA2YmZmZGZhNi4uM2Rl
MWMxNjYzZmNlZDZhNGE0Njc4ODc2MTliYzNiN2Y3Y2EwYjMzNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL3BhcnNlci9DU1NWYXJpYWJsZVBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9wYXJzZXIvQ1NTVmFyaWFibGVQYXJzZXIuaApAQCAtMzEsNyArMzEsNyBAQAogCiAj
aW5jbHVkZSAiQ1NTUGFyc2VyVG9rZW5SYW5nZS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
LSNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9B
dG9tU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDIsNyArNDIsNyBAQCBj
bGFzcyBDU1NWYXJpYWJsZVBhcnNlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgY29udGFp
bnNWYWxpZFZhcmlhYmxlUmVmZXJlbmNlcyhDU1NQYXJzZXJUb2tlblJhbmdlLCBjb25zdCBDU1NQ
YXJzZXJDb250ZXh0Jik7CiAKLSAgICBzdGF0aWMgUmVmUHRyPENTU0N1c3RvbVByb3BlcnR5VmFs
dWU+IHBhcnNlRGVjbGFyYXRpb25WYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmLCBDU1NQYXJzZXJU
b2tlblJhbmdlLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0Jik7CisgICAgc3RhdGljIFJlZlB0cjxD
U1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiBwYXJzZURlY2xhcmF0aW9uVmFsdWUoY29uc3QgQXRvbVN0
cmluZyYsIENTU1BhcnNlclRva2VuUmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmKTsKIAog
ICAgIHN0YXRpYyBib29sIGlzVmFsaWRWYXJpYWJsZU5hbWUoY29uc3QgQ1NTUGFyc2VyVG9rZW4m
KTsKICAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkVmFyaWFibGVOYW1lKGNvbnN0IFN0cmluZyYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwCmluZGV4IDJhNDNmZDgy
MDBiYWYzOGExMjc1NDViZGFlMWIxYTMyMjk0YzYyNmEuLjExNDg3OTA5NGZhMDZlNDU2MWI4MmVj
MTQwNTBiYmNjN2YzOGM3Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzc2ppdC9TZWxl
Y3RvckNvbXBpbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3NqaXQvU2VsZWN0b3JDb21w
aWxlci5jcHAKQEAgLTE5Nyw5ICsxOTcsOSBAQCBzdHJ1Y3QgU2VsZWN0b3JGcmFnbWVudCB7CiAg
ICAgLy8gRklYTUU6IHRoZSBsYXJnZSBzdGFjayBhbGxvY2F0aW9uIGNhdXNlZCBieSB0aGUgaW5s
aW5lIGNhcGFjaXR5IGNhdXNlcyBtZW1vcnkgaW5lZmZpY2llbmN5LiBXZSBzaG91bGQgZHVtcAog
ICAgIC8vIHRoZSBtaW4vbWF4L2F2ZXJhZ2Ugb2YgdGhlIHZlY3RvcnMgYW5kIHBpY2sgYmV0dGVy
IGlubGluZSBjYXBhY2l0eS4KICAgICBjb25zdCBDU1NTZWxlY3RvciogdGFnTmFtZVNlbGVjdG9y
ID0gbnVsbHB0cjsKLSAgICBjb25zdCBBdG9taWNTdHJpbmcqIGlkID0gbnVsbHB0cjsKLSAgICBW
ZWN0b3I8Y29uc3QgVmVjdG9yPEF0b21pY1N0cmluZz4qPiBsYW5ndWFnZUFyZ3VtZW50c0xpc3Q7
Ci0gICAgVmVjdG9yPGNvbnN0IEF0b21pY1N0cmluZ0ltcGwqLCA4PiBjbGFzc05hbWVzOworICAg
IGNvbnN0IEF0b21TdHJpbmcqIGlkID0gbnVsbHB0cjsKKyAgICBWZWN0b3I8Y29uc3QgVmVjdG9y
PEF0b21TdHJpbmc+Kj4gbGFuZ3VhZ2VBcmd1bWVudHNMaXN0OworICAgIFZlY3Rvcjxjb25zdCBB
dG9tU3RyaW5nSW1wbCosIDg+IGNsYXNzTmFtZXM7CiAgICAgSGFzaFNldDx1bnNpZ25lZD4gcHNl
dWRvQ2xhc3NlczsKICAgICBWZWN0b3I8SlNDOjpGdW5jdGlvblB0cjxDU1NPcGVyYXRpb25QdHJU
YWc+LCA0PiB1bm9wdGltaXplZFBzZXVkb0NsYXNzZXM7CiAgICAgVmVjdG9yPEpTQzo6RnVuY3Rp
b25QdHI8Q1NTT3BlcmF0aW9uUHRyVGFnPiwgND4gdW5vcHRpbWl6ZWRQc2V1ZG9DbGFzc2VzV2l0
aENvbnRleHQ7CkBAIC0zMDAsNyArMzAwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdlbmVyYXRl
RWxlbWVudElzRmlyc3RDaGlsZChBc3NlbWJsZXI6Okp1bXBMaXN0JiBmYWlsdXJlQ2FzZXMpOwog
ICAgIHZvaWQgZ2VuZXJhdGVFbGVtZW50SXNIb3ZlcmVkKEFzc2VtYmxlcjo6SnVtcExpc3QmIGZh
aWx1cmVDYXNlcywgY29uc3QgU2VsZWN0b3JGcmFnbWVudCYpOwogICAgIHZvaWQgZ2VuZXJhdGVF
bGVtZW50SXNJbkxhbmd1YWdlKEFzc2VtYmxlcjo6SnVtcExpc3QmIGZhaWx1cmVDYXNlcywgY29u
c3QgU2VsZWN0b3JGcmFnbWVudCYpOwotICAgIHZvaWQgZ2VuZXJhdGVFbGVtZW50SXNJbkxhbmd1
YWdlKEFzc2VtYmxlcjo6SnVtcExpc3QmIGZhaWx1cmVDYXNlcywgY29uc3QgVmVjdG9yPEF0b21p
Y1N0cmluZz4qKTsKKyAgICB2b2lkIGdlbmVyYXRlRWxlbWVudElzSW5MYW5ndWFnZShBc3NlbWJs
ZXI6Okp1bXBMaXN0JiBmYWlsdXJlQ2FzZXMsIGNvbnN0IFZlY3RvcjxBdG9tU3RyaW5nPiopOwog
ICAgIHZvaWQgZ2VuZXJhdGVFbGVtZW50SXNMYXN0Q2hpbGQoQXNzZW1ibGVyOjpKdW1wTGlzdCYg
ZmFpbHVyZUNhc2VzKTsKICAgICB2b2lkIGdlbmVyYXRlRWxlbWVudElzT25seUNoaWxkKEFzc2Vt
Ymxlcjo6SnVtcExpc3QmIGZhaWx1cmVDYXNlcyk7CiAgICAgdm9pZCBnZW5lcmF0ZUVsZW1lbnRI
YXNQbGFjZWhvbGRlclNob3duKEFzc2VtYmxlcjo6SnVtcExpc3QmIGZhaWx1cmVDYXNlcyk7CkBA
IC0zMDksMTEgKzMwOSwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgZ2VuZXJhdGVFbGVtZW50QXR0
cmlidXRlc01hdGNoaW5nKEFzc2VtYmxlcjo6SnVtcExpc3QmIGZhaWx1cmVDYXNlcywgY29uc3Qg
TG9jYWxSZWdpc3RlciYgZWxlbWVudERhdGFBZGRyZXNzLCBjb25zdCBTZWxlY3RvckZyYWdtZW50
Jik7CiAgICAgdm9pZCBnZW5lcmF0ZUVsZW1lbnRBdHRyaWJ1dGVNYXRjaGluZyhBc3NlbWJsZXI6
Okp1bXBMaXN0JiBmYWlsdXJlQ2FzZXMsIEFzc2VtYmxlcjo6UmVnaXN0ZXJJRCBjdXJyZW50QXR0
cmlidXRlQWRkcmVzcywgQXNzZW1ibGVyOjpSZWdpc3RlcklEIGRlY0luZGV4UmVnaXN0ZXIsIGNv
bnN0IEF0dHJpYnV0ZU1hdGNoaW5nSW5mbyYgYXR0cmlidXRlSW5mbyk7CiAgICAgdm9pZCBnZW5l
cmF0ZUVsZW1lbnRBdHRyaWJ1dGVWYWx1ZU1hdGNoaW5nKEFzc2VtYmxlcjo6SnVtcExpc3QmIGZh
aWx1cmVDYXNlcywgQXNzZW1ibGVyOjpSZWdpc3RlcklEIGN1cnJlbnRBdHRyaWJ1dGVBZGRyZXNz
LCBjb25zdCBBdHRyaWJ1dGVNYXRjaGluZ0luZm8mIGF0dHJpYnV0ZUluZm8pOwotICAgIHZvaWQg
Z2VuZXJhdGVFbGVtZW50QXR0cmlidXRlVmFsdWVFeGFjdE1hdGNoaW5nKEFzc2VtYmxlcjo6SnVt
cExpc3QmIGZhaWx1cmVDYXNlcywgQXNzZW1ibGVyOjpSZWdpc3RlcklEIGN1cnJlbnRBdHRyaWJ1
dGVBZGRyZXNzLCBjb25zdCBBdG9taWNTdHJpbmcmIGV4cGVjdGVkVmFsdWUsIEF0dHJpYnV0ZUNh
c2VTZW5zaXRpdml0eSB2YWx1ZUNhc2VTZW5zaXRpdml0eSk7Ci0gICAgdm9pZCBnZW5lcmF0ZUVs
ZW1lbnRBdHRyaWJ1dGVGdW5jdGlvbkNhbGxWYWx1ZU1hdGNoaW5nKEFzc2VtYmxlcjo6SnVtcExp
c3QmIGZhaWx1cmVDYXNlcywgQXNzZW1ibGVyOjpSZWdpc3RlcklEIGN1cnJlbnRBdHRyaWJ1dGVB
ZGRyZXNzLCBjb25zdCBBdG9taWNTdHJpbmcmIGV4cGVjdGVkVmFsdWUsIEF0dHJpYnV0ZUNhc2VT
ZW5zaXRpdml0eSB2YWx1ZUNhc2VTZW5zaXRpdml0eSwgSlNDOjpGdW5jdGlvblB0cjxDU1NPcGVy
YXRpb25QdHJUYWc+IGNhc2VTZW5zaXRpdmVUZXN0LCBKU0M6OkZ1bmN0aW9uUHRyPENTU09wZXJh
dGlvblB0clRhZz4gY2FzZUluc2Vuc2l0aXZlVGVzdCk7CisgICAgdm9pZCBnZW5lcmF0ZUVsZW1l
bnRBdHRyaWJ1dGVWYWx1ZUV4YWN0TWF0Y2hpbmcoQXNzZW1ibGVyOjpKdW1wTGlzdCYgZmFpbHVy
ZUNhc2VzLCBBc3NlbWJsZXI6OlJlZ2lzdGVySUQgY3VycmVudEF0dHJpYnV0ZUFkZHJlc3MsIGNv
bnN0IEF0b21TdHJpbmcmIGV4cGVjdGVkVmFsdWUsIEF0dHJpYnV0ZUNhc2VTZW5zaXRpdml0eSB2
YWx1ZUNhc2VTZW5zaXRpdml0eSk7CisgICAgdm9pZCBnZW5lcmF0ZUVsZW1lbnRBdHRyaWJ1dGVG
dW5jdGlvbkNhbGxWYWx1ZU1hdGNoaW5nKEFzc2VtYmxlcjo6SnVtcExpc3QmIGZhaWx1cmVDYXNl
cywgQXNzZW1ibGVyOjpSZWdpc3RlcklEIGN1cnJlbnRBdHRyaWJ1dGVBZGRyZXNzLCBjb25zdCBB
dG9tU3RyaW5nJiBleHBlY3RlZFZhbHVlLCBBdHRyaWJ1dGVDYXNlU2Vuc2l0aXZpdHkgdmFsdWVD
YXNlU2Vuc2l0aXZpdHksIEpTQzo6RnVuY3Rpb25QdHI8Q1NTT3BlcmF0aW9uUHRyVGFnPiBjYXNl
U2Vuc2l0aXZlVGVzdCwgSlNDOjpGdW5jdGlvblB0cjxDU1NPcGVyYXRpb25QdHJUYWc+IGNhc2VJ
bnNlbnNpdGl2ZVRlc3QpOwogICAgIHZvaWQgZ2VuZXJhdGVFbGVtZW50SGFzVGFnTmFtZShBc3Nl
bWJsZXI6Okp1bXBMaXN0JiBmYWlsdXJlQ2FzZXMsIGNvbnN0IENTU1NlbGVjdG9yJiB0YWdNYXRj
aGluZ1NlbGVjdG9yKTsKLSAgICB2b2lkIGdlbmVyYXRlRWxlbWVudEhhc0lkKEFzc2VtYmxlcjo6
SnVtcExpc3QmIGZhaWx1cmVDYXNlcywgY29uc3QgTG9jYWxSZWdpc3RlciYgZWxlbWVudERhdGFB
ZGRyZXNzLCBjb25zdCBBdG9taWNTdHJpbmcmIGlkVG9NYXRjaCk7Ci0gICAgdm9pZCBnZW5lcmF0
ZUVsZW1lbnRIYXNDbGFzc2VzKEFzc2VtYmxlcjo6SnVtcExpc3QmIGZhaWx1cmVDYXNlcywgY29u
c3QgTG9jYWxSZWdpc3RlciYgZWxlbWVudERhdGFBZGRyZXNzLCBjb25zdCBWZWN0b3I8Y29uc3Qg
QXRvbWljU3RyaW5nSW1wbCosIDg+JiBjbGFzc05hbWVzKTsKKyAgICB2b2lkIGdlbmVyYXRlRWxl
bWVudEhhc0lkKEFzc2VtYmxlcjo6SnVtcExpc3QmIGZhaWx1cmVDYXNlcywgY29uc3QgTG9jYWxS
ZWdpc3RlciYgZWxlbWVudERhdGFBZGRyZXNzLCBjb25zdCBBdG9tU3RyaW5nJiBpZFRvTWF0Y2gp
OworICAgIHZvaWQgZ2VuZXJhdGVFbGVtZW50SGFzQ2xhc3NlcyhBc3NlbWJsZXI6Okp1bXBMaXN0
JiBmYWlsdXJlQ2FzZXMsIGNvbnN0IExvY2FsUmVnaXN0ZXImIGVsZW1lbnREYXRhQWRkcmVzcywg
Y29uc3QgVmVjdG9yPGNvbnN0IEF0b21TdHJpbmdJbXBsKiwgOD4mIGNsYXNzTmFtZXMpOwogICAg
IHZvaWQgZ2VuZXJhdGVFbGVtZW50SXNMaW5rKEFzc2VtYmxlcjo6SnVtcExpc3QmIGZhaWx1cmVD
YXNlcyk7CiAgICAgdm9pZCBnZW5lcmF0ZUVsZW1lbnRJc050aENoaWxkKEFzc2VtYmxlcjo6SnVt
cExpc3QmIGZhaWx1cmVDYXNlcywgY29uc3QgU2VsZWN0b3JGcmFnbWVudCYpOwogICAgIHZvaWQg
Z2VuZXJhdGVFbGVtZW50SXNOdGhDaGlsZE9mKEFzc2VtYmxlcjo6SnVtcExpc3QmIGZhaWx1cmVD
YXNlcywgY29uc3QgU2VsZWN0b3JGcmFnbWVudCYpOwpAQCAtNzgxLDcgKzc4MSw3IEBAIHN0YXRp
YyBpbmxpbmUgRnVuY3Rpb25UeXBlIGFkZFBzZXVkb0NsYXNzVHlwZShjb25zdCBDU1NTZWxlY3Rv
ciYgc2VsZWN0b3IsIFNlbGVjCiAKICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0xh
bmc6CiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxBdG9taWNTdHJpbmc+KiBz
ZWxlY3RvckxhbmdBcmd1bWVudExpc3QgPSBzZWxlY3Rvci5sYW5nQXJndW1lbnRMaXN0KCk7Cisg
ICAgICAgICAgICBjb25zdCBWZWN0b3I8QXRvbVN0cmluZz4qIHNlbGVjdG9yTGFuZ0FyZ3VtZW50
TGlzdCA9IHNlbGVjdG9yLmxhbmdBcmd1bWVudExpc3QoKTsKICAgICAgICAgICAgIEFTU0VSVChz
ZWxlY3RvckxhbmdBcmd1bWVudExpc3QgJiYgIXNlbGVjdG9yTGFuZ0FyZ3VtZW50TGlzdC0+aXNF
bXB0eSgpKTsKICAgICAgICAgICAgIGZyYWdtZW50Lmxhbmd1YWdlQXJndW1lbnRzTGlzdC5hcHBl
bmQoc2VsZWN0b3JMYW5nQXJndW1lbnRMaXN0KTsKICAgICAgICAgICAgIHJldHVybiBGdW5jdGlv
blR5cGU6OlNpbXBsZVNlbGVjdG9yQ2hlY2tlcjsKQEAgLTkxNyw3ICs5MTcsNyBAQCBzdGF0aWMg
RnVuY3Rpb25UeXBlIGNvbnN0cnVjdEZyYWdtZW50c0ludGVybmFsKGNvbnN0IENTU1NlbGVjdG9y
KiByb290U2VsZWN0b3IsCiAgICAgICAgICAgICAgICAgZnJhZ21lbnQtPm9ubHlNYXRjaGVzTGlu
a3NJblF1aXJrc01vZGUgPSBmYWxzZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IENTU1NlbGVjdG9yOjpJZDogewotICAgICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBpZCA9
IHNlbGVjdG9yLT52YWx1ZSgpOworICAgICAgICAgICAgY29uc3QgQXRvbVN0cmluZyYgaWQgPSBz
ZWxlY3Rvci0+dmFsdWUoKTsKICAgICAgICAgICAgIGlmIChmcmFnbWVudC0+aWQpIHsKICAgICAg
ICAgICAgICAgICBpZiAoaWQgIT0gKmZyYWdtZW50LT5pZCkKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIEZ1bmN0aW9uVHlwZTo6Q2Fubm90TWF0Y2hBbnl0aGluZzsKQEAgLTE0MDQsMTEgKzE0
MDQsMTEgQEAgc3RhdGljIGlubGluZSBUYWdOYW1lRXF1YWxpdHkgZXF1YWxUYWdOYW1lcyhjb25z
dCBDU1NTZWxlY3RvciogbGhzLCBjb25zdCBDU1NTZWwKICAgICBpZiAocmhzUXVhbGlmaWVkTmFt
ZSA9PSBhbnlRTmFtZSgpKQogICAgICAgICByZXR1cm4gVGFnTmFtZUVxdWFsaXR5OjpNYXliZUVx
dWFsOwogCi0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBsaHNMb2NhbE5hbWUgPSBsaHNRdWFsaWZp
ZWROYW1lLmxvY2FsTmFtZSgpOwotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgcmhzTG9jYWxOYW1l
ID0gcmhzUXVhbGlmaWVkTmFtZS5sb2NhbE5hbWUoKTsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBs
aHNMb2NhbE5hbWUgPSBsaHNRdWFsaWZpZWROYW1lLmxvY2FsTmFtZSgpOworICAgIGNvbnN0IEF0
b21TdHJpbmcmIHJoc0xvY2FsTmFtZSA9IHJoc1F1YWxpZmllZE5hbWUubG9jYWxOYW1lKCk7CiAg
ICAgaWYgKGxoc0xvY2FsTmFtZSAhPSBzdGFyQXRvbSgpICYmIHJoc0xvY2FsTmFtZSAhPSBzdGFy
QXRvbSgpKSB7Ci0gICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbGhzTG93ZXJjYXNlTG9jYWxO
YW1lID0gbGhzLT50YWdMb3dlcmNhc2VMb2NhbE5hbWUoKTsKLSAgICAgICAgY29uc3QgQXRvbWlj
U3RyaW5nJiByaHNMb3dlcmNhc2VMb2NhbE5hbWUgPSByaHMtPnRhZ0xvd2VyY2FzZUxvY2FsTmFt
ZSgpOworICAgICAgICBjb25zdCBBdG9tU3RyaW5nJiBsaHNMb3dlcmNhc2VMb2NhbE5hbWUgPSBs
aHMtPnRhZ0xvd2VyY2FzZUxvY2FsTmFtZSgpOworICAgICAgICBjb25zdCBBdG9tU3RyaW5nJiBy
aHNMb3dlcmNhc2VMb2NhbE5hbWUgPSByaHMtPnRhZ0xvd2VyY2FzZUxvY2FsTmFtZSgpOwogCiAg
ICAgICAgIGlmIChsaHNMb3dlcmNhc2VMb2NhbE5hbWUgIT0gcmhzTG93ZXJjYXNlTG9jYWxOYW1l
KQogICAgICAgICAgICAgcmV0dXJuIFRhZ05hbWVFcXVhbGl0eTo6U3RyaWN0bHlOb3RFcXVhbDsK
QEAgLTE0MTgsOCArMTQxOCw4IEBAIHN0YXRpYyBpbmxpbmUgVGFnTmFtZUVxdWFsaXR5IGVxdWFs
VGFnTmFtZXMoY29uc3QgQ1NTU2VsZWN0b3IqIGxocywgY29uc3QgQ1NTU2VsCiAgICAgICAgIHJl
dHVybiBUYWdOYW1lRXF1YWxpdHk6Ok1heWJlRXF1YWw7CiAgICAgfQogCi0gICAgY29uc3QgQXRv
bWljU3RyaW5nJiBsaHNOYW1lc3BhY2VVUkkgPSBsaHNRdWFsaWZpZWROYW1lLm5hbWVzcGFjZVVS
SSgpOwotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgcmhzTmFtZXNwYWNlVVJJID0gcmhzUXVhbGlm
aWVkTmFtZS5uYW1lc3BhY2VVUkkoKTsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBsaHNOYW1lc3Bh
Y2VVUkkgPSBsaHNRdWFsaWZpZWROYW1lLm5hbWVzcGFjZVVSSSgpOworICAgIGNvbnN0IEF0b21T
dHJpbmcmIHJoc05hbWVzcGFjZVVSSSA9IHJoc1F1YWxpZmllZE5hbWUubmFtZXNwYWNlVVJJKCk7
CiAgICAgaWYgKGxoc05hbWVzcGFjZVVSSSAhPSBzdGFyQXRvbSgpICYmIHJoc05hbWVzcGFjZVVS
SSAhPSBzdGFyQXRvbSgpKSB7CiAgICAgICAgIGlmIChsaHNOYW1lc3BhY2VVUkkgIT0gcmhzTmFt
ZXNwYWNlVVJJKQogICAgICAgICAgICAgcmV0dXJuIFRhZ05hbWVFcXVhbGl0eTo6U3RyaWN0bHlO
b3RFcXVhbDsKQEAgLTI2OTcsNyArMjY5Nyw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBjYW5NYXRj
aFN0eWxlQXR0cmlidXRlKGNvbnN0IFNlbGVjdG9yRnJhZ21lbnQmIGZyYWdtZW50KQogICAgICAg
ICBpZiAoQXR0cmlidXRlOjpuYW1lTWF0Y2hlc0ZpbHRlcihIVE1MTmFtZXM6OnN0eWxlQXR0ciwg
YXR0cmlidXRlTmFtZS5wcmVmaXgoKSwgYXR0cmlidXRlTmFtZS5sb2NhbE5hbWUoKSwgYXR0cmli
dXRlTmFtZS5uYW1lc3BhY2VVUkkoKSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAg
ICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGNhbm9uaWNhbExvY2FsTmFtZSA9IGF0dHJpYnV0ZVNl
bGVjdG9yLmF0dHJpYnV0ZUNhbm9uaWNhbExvY2FsTmFtZSgpOworICAgICAgICBjb25zdCBBdG9t
U3RyaW5nJiBjYW5vbmljYWxMb2NhbE5hbWUgPSBhdHRyaWJ1dGVTZWxlY3Rvci5hdHRyaWJ1dGVD
YW5vbmljYWxMb2NhbE5hbWUoKTsKICAgICAgICAgaWYgKGF0dHJpYnV0ZU5hbWUubG9jYWxOYW1l
KCkgIT0gY2Fub25pY2FsTG9jYWxOYW1lCiAgICAgICAgICAgICAmJiBBdHRyaWJ1dGU6Om5hbWVN
YXRjaGVzRmlsdGVyKEhUTUxOYW1lczo6c3R5bGVBdHRyLCBhdHRyaWJ1dGVOYW1lLnByZWZpeCgp
LCBhdHRyaWJ1dGVTZWxlY3Rvci5hdHRyaWJ1dGVDYW5vbmljYWxMb2NhbE5hbWUoKSwgYXR0cmli
dXRlTmFtZS5uYW1lc3BhY2VVUkkoKSkpIHsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAt
MjczMCw3ICsyNzMwLDcgQEAgc3RhdGljIGlubGluZSBib29sIGNhbk1hdGNoQW5pbWF0YWJsZVNW
R0F0dHJpYnV0ZShjb25zdCBTZWxlY3RvckZyYWdtZW50JiBmcmFnbWUKICAgICAgICAgaWYgKEF0
dHJpYnV0ZTo6bmFtZU1hdGNoZXNGaWx0ZXIoY2FuZGlkYXRlRm9yTG9jYWxOYW1lLCBzZWxlY3Rv
ckF0dHJpYnV0ZU5hbWUucHJlZml4KCksIHNlbGVjdG9yQXR0cmlidXRlTmFtZS5sb2NhbE5hbWUo
KSwgc2VsZWN0b3JBdHRyaWJ1dGVOYW1lLm5hbWVzcGFjZVVSSSgpKSkKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogCi0gICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgY2Fub25pY2FsTG9jYWxO
YW1lID0gYXR0cmlidXRlU2VsZWN0b3IuYXR0cmlidXRlQ2Fub25pY2FsTG9jYWxOYW1lKCk7Cisg
ICAgICAgIGNvbnN0IEF0b21TdHJpbmcmIGNhbm9uaWNhbExvY2FsTmFtZSA9IGF0dHJpYnV0ZVNl
bGVjdG9yLmF0dHJpYnV0ZUNhbm9uaWNhbExvY2FsTmFtZSgpOwogICAgICAgICBpZiAoc2VsZWN0
b3JBdHRyaWJ1dGVOYW1lLmxvY2FsTmFtZSgpICE9IGNhbm9uaWNhbExvY2FsTmFtZSkgewogICAg
ICAgICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgY2FuZGlkYXRlRm9yQ2Fub25pY2FsTG9jYWxO
YW1lID0gU1ZHRWxlbWVudDo6YW5pbWF0YWJsZUF0dHJpYnV0ZUZvck5hbWUoc2VsZWN0b3JBdHRy
aWJ1dGVOYW1lLmxvY2FsTmFtZSgpKTsKICAgICAgICAgICAgIGlmIChBdHRyaWJ1dGU6Om5hbWVN
YXRjaGVzRmlsdGVyKGNhbmRpZGF0ZUZvckNhbm9uaWNhbExvY2FsTmFtZSwgc2VsZWN0b3JBdHRy
aWJ1dGVOYW1lLnByZWZpeCgpLCBzZWxlY3RvckF0dHJpYnV0ZU5hbWUubG9jYWxOYW1lKCksIHNl
bGVjdG9yQXR0cmlidXRlTmFtZS5uYW1lc3BhY2VVUkkoKSkpCkBAIC0yODI1LDggKzI4MjUsOCBA
QCB2b2lkIFNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVFbGVtZW50QXR0cmlidXRlTWF0
Y2hpbmcoQXNzZW1ibGVyOjpKdW1wTGlzdAogICAgIC8vIEluIGdlbmVyYWwsIGNhbm9uaWNhbExv
Y2FsTmFtZSBhbmQgbG9jYWxOYW1lIGFyZSB0aGUgc2FtZS4gV2hlbiB0aGV5IGRpZmZlciwgd2Ug
aGF2ZSB0byBjaGVjayBpZiB0aGUgbm9kZSBpcyBIVE1MIHRvIGtub3cKICAgICAvLyB3aGljaCBv
bmUgdG8gdXNlLgogICAgIGNvbnN0IENTU1NlbGVjdG9yJiBhdHRyaWJ1dGVTZWxlY3RvciA9IGF0
dHJpYnV0ZUluZm8uc2VsZWN0b3IoKTsKLSAgICBjb25zdCBBdG9taWNTdHJpbmdJbXBsKiBjYW5v
bmljYWxMb2NhbE5hbWUgPSBhdHRyaWJ1dGVTZWxlY3Rvci5hdHRyaWJ1dGVDYW5vbmljYWxMb2Nh
bE5hbWUoKS5pbXBsKCk7Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nSW1wbCogbG9jYWxOYW1lID0g
YXR0cmlidXRlU2VsZWN0b3IuYXR0cmlidXRlKCkubG9jYWxOYW1lKCkuaW1wbCgpOworICAgIGNv
bnN0IEF0b21TdHJpbmdJbXBsKiBjYW5vbmljYWxMb2NhbE5hbWUgPSBhdHRyaWJ1dGVTZWxlY3Rv
ci5hdHRyaWJ1dGVDYW5vbmljYWxMb2NhbE5hbWUoKS5pbXBsKCk7CisgICAgY29uc3QgQXRvbVN0
cmluZ0ltcGwqIGxvY2FsTmFtZSA9IGF0dHJpYnV0ZVNlbGVjdG9yLmF0dHJpYnV0ZSgpLmxvY2Fs
TmFtZSgpLmltcGwoKTsKICAgICBpZiAoY2Fub25pY2FsTG9jYWxOYW1lID09IGxvY2FsTmFtZSkK
ICAgICAgICAgbV9hc3NlbWJsZXIubW92ZShBc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoY2Fub25p
Y2FsTG9jYWxOYW1lKSwgbG9jYWxOYW1lVG9NYXRjaCk7CiAgICAgZWxzZSB7CkBAIC0yODQ3LDcg
KzI4NDcsNyBAQCB2b2lkIFNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVFbGVtZW50QXR0
cmlidXRlTWF0Y2hpbmcoQXNzZW1ibGVyOjpKdW1wTGlzdAogICAgICAgICBpZiAoc2hvdWxkQ2hl
Y2tOYW1lc3BhY2UpIHsKICAgICAgICAgICAgIEFzc2VtYmxlcjo6SnVtcCBuYW1lRG9lc05vdE1h
dGNoID0gbV9hc3NlbWJsZXIuYnJhbmNoUHRyKEFzc2VtYmxlcjo6Tm90RXF1YWwsIEFzc2VtYmxl
cjo6QWRkcmVzcyhxdWFsaWZpZWROYW1lSW1wbCwgUXVhbGlmaWVkTmFtZTo6UXVhbGlmaWVkTmFt
ZUltcGw6OmxvY2FsTmFtZU1lbW9yeU9mZnNldCgpKSwgbG9jYWxOYW1lVG9NYXRjaCk7CiAKLSAg
ICAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZ0ltcGwqIG5hbWVzcGFjZVVSSSA9IGF0dHJpYnV0
ZVNlbGVjdG9yLmF0dHJpYnV0ZSgpLm5hbWVzcGFjZVVSSSgpLmltcGwoKTsKKyAgICAgICAgICAg
IGNvbnN0IEF0b21TdHJpbmdJbXBsKiBuYW1lc3BhY2VVUkkgPSBhdHRyaWJ1dGVTZWxlY3Rvci5h
dHRyaWJ1dGUoKS5uYW1lc3BhY2VVUkkoKS5pbXBsKCk7CiAgICAgICAgICAgICBpZiAobmFtZXNw
YWNlVVJJKSB7CiAgICAgICAgICAgICAgICAgTG9jYWxSZWdpc3RlciBuYW1lc3BhY2VUb01hdGNo
KG1fcmVnaXN0ZXJBbGxvY2F0b3IpOwogICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLm1vdmUo
QXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG5hbWVzcGFjZVVSSSksIG5hbWVzcGFjZVRvTWF0Y2gp
OwpAQCAtMjg4Niw0MiArMjg4Niw0MiBAQCBlbnVtIENhc2VTZW5zaXRpdml0eSB7CiB9OwogCiB0
ZW1wbGF0ZTxDYXNlU2Vuc2l0aXZpdHkgY2FzZVNlbnNpdGl2aXR5Pgotc3RhdGljIGJvb2wgYXR0
cmlidXRlVmFsdWVCZWdpbnNXaXRoKGNvbnN0IEF0dHJpYnV0ZSogYXR0cmlidXRlLCBBdG9taWNT
dHJpbmdJbXBsKiBleHBlY3RlZFN0cmluZykKK3N0YXRpYyBib29sIGF0dHJpYnV0ZVZhbHVlQmVn
aW5zV2l0aChjb25zdCBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSwgQXRvbVN0cmluZ0ltcGwqIGV4cGVj
dGVkU3RyaW5nKQogewogICAgIEFTU0VSVChleHBlY3RlZFN0cmluZyk7CiAKLSAgICBBdG9taWNT
dHJpbmdJbXBsJiB2YWx1ZUltcGwgPSAqYXR0cmlidXRlLT52YWx1ZSgpLmltcGwoKTsKKyAgICBB
dG9tU3RyaW5nSW1wbCYgdmFsdWVJbXBsID0gKmF0dHJpYnV0ZS0+dmFsdWUoKS5pbXBsKCk7CiAg
ICAgaWYgKGNhc2VTZW5zaXRpdml0eSA9PSBDYXNlU2Vuc2l0aXZlKQogICAgICAgICByZXR1cm4g
dmFsdWVJbXBsLnN0YXJ0c1dpdGgoKmV4cGVjdGVkU3RyaW5nKTsKICAgICByZXR1cm4gdmFsdWVJ
bXBsLnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgqZXhwZWN0ZWRTdHJpbmcpOwogfQogCiB0
ZW1wbGF0ZTxDYXNlU2Vuc2l0aXZpdHkgY2FzZVNlbnNpdGl2aXR5Pgotc3RhdGljIGJvb2wgYXR0
cmlidXRlVmFsdWVDb250YWlucyhjb25zdCBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSwgQXRvbWljU3Ry
aW5nSW1wbCogZXhwZWN0ZWRTdHJpbmcpCitzdGF0aWMgYm9vbCBhdHRyaWJ1dGVWYWx1ZUNvbnRh
aW5zKGNvbnN0IEF0dHJpYnV0ZSogYXR0cmlidXRlLCBBdG9tU3RyaW5nSW1wbCogZXhwZWN0ZWRT
dHJpbmcpCiB7Ci0gICAgQXRvbWljU3RyaW5nSW1wbCYgdmFsdWVJbXBsID0gKmF0dHJpYnV0ZS0+
dmFsdWUoKS5pbXBsKCk7CisgICAgQXRvbVN0cmluZ0ltcGwmIHZhbHVlSW1wbCA9ICphdHRyaWJ1
dGUtPnZhbHVlKCkuaW1wbCgpOwogICAgIGlmIChjYXNlU2Vuc2l0aXZpdHkgPT0gQ2FzZVNlbnNp
dGl2ZSkKICAgICAgICAgcmV0dXJuIHZhbHVlSW1wbC5maW5kKGV4cGVjdGVkU3RyaW5nKSAhPSBu
b3RGb3VuZDsKICAgICByZXR1cm4gdmFsdWVJbXBsLmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShleHBl
Y3RlZFN0cmluZykgIT0gbm90Rm91bmQ7CiB9CiAKIHRlbXBsYXRlPENhc2VTZW5zaXRpdml0eSBj
YXNlU2Vuc2l0aXZpdHk+Ci1zdGF0aWMgYm9vbCBhdHRyaWJ1dGVWYWx1ZUVuZHNXaXRoKGNvbnN0
IEF0dHJpYnV0ZSogYXR0cmlidXRlLCBBdG9taWNTdHJpbmdJbXBsKiBleHBlY3RlZFN0cmluZykK
K3N0YXRpYyBib29sIGF0dHJpYnV0ZVZhbHVlRW5kc1dpdGgoY29uc3QgQXR0cmlidXRlKiBhdHRy
aWJ1dGUsIEF0b21TdHJpbmdJbXBsKiBleHBlY3RlZFN0cmluZykKIHsKICAgICBBU1NFUlQoZXhw
ZWN0ZWRTdHJpbmcpOwogCi0gICAgQXRvbWljU3RyaW5nSW1wbCYgdmFsdWVJbXBsID0gKmF0dHJp
YnV0ZS0+dmFsdWUoKS5pbXBsKCk7CisgICAgQXRvbVN0cmluZ0ltcGwmIHZhbHVlSW1wbCA9ICph
dHRyaWJ1dGUtPnZhbHVlKCkuaW1wbCgpOwogICAgIGlmIChjYXNlU2Vuc2l0aXZpdHkgPT0gQ2Fz
ZVNlbnNpdGl2ZSkKICAgICAgICAgcmV0dXJuIHZhbHVlSW1wbC5lbmRzV2l0aCgqZXhwZWN0ZWRT
dHJpbmcpOwogICAgIHJldHVybiB2YWx1ZUltcGwuZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgq
ZXhwZWN0ZWRTdHJpbmcpOwogfQogCiB0ZW1wbGF0ZTxDYXNlU2Vuc2l0aXZpdHkgY2FzZVNlbnNp
dGl2aXR5Pgotc3RhdGljIGJvb2wgYXR0cmlidXRlVmFsdWVNYXRjaEh5cGhlblJ1bGUoY29uc3Qg
QXR0cmlidXRlKiBhdHRyaWJ1dGUsIEF0b21pY1N0cmluZ0ltcGwqIGV4cGVjdGVkU3RyaW5nKQor
c3RhdGljIGJvb2wgYXR0cmlidXRlVmFsdWVNYXRjaEh5cGhlblJ1bGUoY29uc3QgQXR0cmlidXRl
KiBhdHRyaWJ1dGUsIEF0b21TdHJpbmdJbXBsKiBleHBlY3RlZFN0cmluZykKIHsKICAgICBBU1NF
UlQoZXhwZWN0ZWRTdHJpbmcpOwogCi0gICAgQXRvbWljU3RyaW5nSW1wbCYgdmFsdWVJbXBsID0g
KmF0dHJpYnV0ZS0+dmFsdWUoKS5pbXBsKCk7CisgICAgQXRvbVN0cmluZ0ltcGwmIHZhbHVlSW1w
bCA9ICphdHRyaWJ1dGUtPnZhbHVlKCkuaW1wbCgpOwogICAgIGlmICh2YWx1ZUltcGwubGVuZ3Ro
KCkgPCBleHBlY3RlZFN0cmluZy0+bGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApA
QCAtMjkzOCw5ICsyOTM4LDkgQEAgc3RhdGljIGJvb2wgYXR0cmlidXRlVmFsdWVNYXRjaEh5cGhl
blJ1bGUoY29uc3QgQXR0cmlidXRlKiBhdHRyaWJ1dGUsIEF0b21pY1N0cmkKIH0KIAogdGVtcGxh
dGU8Q2FzZVNlbnNpdGl2aXR5IGNhc2VTZW5zaXRpdml0eT4KLXN0YXRpYyBib29sIGF0dHJpYnV0
ZVZhbHVlU3BhY2VTZXBhcmV0ZWRMaXN0Q29udGFpbnMoY29uc3QgQXR0cmlidXRlKiBhdHRyaWJ1
dGUsIEF0b21pY1N0cmluZ0ltcGwqIGV4cGVjdGVkU3RyaW5nKQorc3RhdGljIGJvb2wgYXR0cmli
dXRlVmFsdWVTcGFjZVNlcGFyZXRlZExpc3RDb250YWlucyhjb25zdCBBdHRyaWJ1dGUqIGF0dHJp
YnV0ZSwgQXRvbVN0cmluZ0ltcGwqIGV4cGVjdGVkU3RyaW5nKQogewotICAgIEF0b21pY1N0cmlu
Z0ltcGwmIHZhbHVlID0gKmF0dHJpYnV0ZS0+dmFsdWUoKS5pbXBsKCk7CisgICAgQXRvbVN0cmlu
Z0ltcGwmIHZhbHVlID0gKmF0dHJpYnV0ZS0+dmFsdWUoKS5pbXBsKCk7CiAKICAgICB1bnNpZ25l
ZCBzdGFydFNlYXJjaEF0ID0gMDsKICAgICB3aGlsZSAodHJ1ZSkgewpAQCAtMjk2NCw3ICsyOTY0
LDcgQEAgc3RhdGljIGJvb2wgYXR0cmlidXRlVmFsdWVTcGFjZVNlcGFyZXRlZExpc3RDb250YWlu
cyhjb25zdCBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSwKIHZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9y
OjpnZW5lcmF0ZUVsZW1lbnRBdHRyaWJ1dGVWYWx1ZU1hdGNoaW5nKEFzc2VtYmxlcjo6SnVtcExp
c3QmIGZhaWx1cmVDYXNlcywgQXNzZW1ibGVyOjpSZWdpc3RlcklEIGN1cnJlbnRBdHRyaWJ1dGVB
ZGRyZXNzLCBjb25zdCBBdHRyaWJ1dGVNYXRjaGluZ0luZm8mIGF0dHJpYnV0ZUluZm8pCiB7CiAg
ICAgY29uc3QgQ1NTU2VsZWN0b3ImIGF0dHJpYnV0ZVNlbGVjdG9yID0gYXR0cmlidXRlSW5mby5z
ZWxlY3RvcigpOwotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZXhwZWN0ZWRWYWx1ZSA9IGF0dHJp
YnV0ZVNlbGVjdG9yLnZhbHVlKCk7CisgICAgY29uc3QgQXRvbVN0cmluZyYgZXhwZWN0ZWRWYWx1
ZSA9IGF0dHJpYnV0ZVNlbGVjdG9yLnZhbHVlKCk7CiAgICAgQVNTRVJUKCFleHBlY3RlZFZhbHVl
LmlzTnVsbCgpKTsKICAgICBBdHRyaWJ1dGVDYXNlU2Vuc2l0aXZpdHkgdmFsdWVDYXNlU2Vuc2l0
aXZpdHkgPSBhdHRyaWJ1dGVJbmZvLmF0dHJpYnV0ZUNhc2VTZW5zaXRpdml0eSgpOwogCkBAIC0y
OTk3LDcgKzI5OTcsNyBAQCBzdGF0aWMgaW5saW5lIEFzc2VtYmxlcjo6SnVtcCB0ZXN0SXNIVE1M
Q2xhc3NPbkRvY3VtZW50KEFzc2VtYmxlcjo6UmVzdWx0Q29uZGl0aQogICAgIHJldHVybiBhc3Nl
bWJsZXIuYnJhbmNoVGVzdDMyKGNvbmRpdGlvbiwgQXNzZW1ibGVyOjpBZGRyZXNzKGRvY3VtZW50
QWRkcmVzcywgRG9jdW1lbnQ6OmRvY3VtZW50Q2xhc3Nlc01lbW9yeU9mZnNldCgpKSwgQXNzZW1i
bGVyOjpUcnVzdGVkSW1tMzIoRG9jdW1lbnQ6OmlzSFRNTERvY3VtZW50Q2xhc3NGbGFnKCkpKTsK
IH0KIAotdm9pZCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlRWxlbWVudEF0dHJpYnV0
ZVZhbHVlRXhhY3RNYXRjaGluZyhBc3NlbWJsZXI6Okp1bXBMaXN0JiBmYWlsdXJlQ2FzZXMsIEFz
c2VtYmxlcjo6UmVnaXN0ZXJJRCBjdXJyZW50QXR0cmlidXRlQWRkcmVzcywgY29uc3QgQXRvbWlj
U3RyaW5nJiBleHBlY3RlZFZhbHVlLCBBdHRyaWJ1dGVDYXNlU2Vuc2l0aXZpdHkgdmFsdWVDYXNl
U2Vuc2l0aXZpdHkpCit2b2lkIFNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVFbGVtZW50
QXR0cmlidXRlVmFsdWVFeGFjdE1hdGNoaW5nKEFzc2VtYmxlcjo6SnVtcExpc3QmIGZhaWx1cmVD
YXNlcywgQXNzZW1ibGVyOjpSZWdpc3RlcklEIGN1cnJlbnRBdHRyaWJ1dGVBZGRyZXNzLCBjb25z
dCBBdG9tU3RyaW5nJiBleHBlY3RlZFZhbHVlLCBBdHRyaWJ1dGVDYXNlU2Vuc2l0aXZpdHkgdmFs
dWVDYXNlU2Vuc2l0aXZpdHkpCiB7CiAgICAgTG9jYWxSZWdpc3RlcldpdGhQcmVmZXJlbmNlIGV4
cGVjdGVkVmFsdWVSZWdpc3RlcihtX3JlZ2lzdGVyQWxsb2NhdG9yLCBKU0M6OkdQUkluZm86OmFy
Z3VtZW50R1BSMSk7CiAgICAgbV9hc3NlbWJsZXIubW92ZShBc3NlbWJsZXI6OlRydXN0ZWRJbW1Q
dHIoZXhwZWN0ZWRWYWx1ZS5pbXBsKCkpLCBleHBlY3RlZFZhbHVlUmVnaXN0ZXIpOwpAQCAtMzA0
Nyw3ICszMDQ3LDcgQEAgdm9pZCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlRWxlbWVu
dEF0dHJpYnV0ZVZhbHVlRXhhY3RNYXRjaGluZyhBc3NlbWJsZXIKICAgICB9CiB9CiAKLXZvaWQg
U2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUVsZW1lbnRBdHRyaWJ1dGVGdW5jdGlvbkNh
bGxWYWx1ZU1hdGNoaW5nKEFzc2VtYmxlcjo6SnVtcExpc3QmIGZhaWx1cmVDYXNlcywgQXNzZW1i
bGVyOjpSZWdpc3RlcklEIGN1cnJlbnRBdHRyaWJ1dGVBZGRyZXNzLCBjb25zdCBBdG9taWNTdHJp
bmcmIGV4cGVjdGVkVmFsdWUsIEF0dHJpYnV0ZUNhc2VTZW5zaXRpdml0eSB2YWx1ZUNhc2VTZW5z
aXRpdml0eSwgSlNDOjpGdW5jdGlvblB0cjxDU1NPcGVyYXRpb25QdHJUYWc+IGNhc2VTZW5zaXRp
dmVUZXN0LCBKU0M6OkZ1bmN0aW9uUHRyPENTU09wZXJhdGlvblB0clRhZz4gY2FzZUluc2Vuc2l0
aXZlVGVzdCkKK3ZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUVsZW1lbnRBdHRy
aWJ1dGVGdW5jdGlvbkNhbGxWYWx1ZU1hdGNoaW5nKEFzc2VtYmxlcjo6SnVtcExpc3QmIGZhaWx1
cmVDYXNlcywgQXNzZW1ibGVyOjpSZWdpc3RlcklEIGN1cnJlbnRBdHRyaWJ1dGVBZGRyZXNzLCBj
b25zdCBBdG9tU3RyaW5nJiBleHBlY3RlZFZhbHVlLCBBdHRyaWJ1dGVDYXNlU2Vuc2l0aXZpdHkg
dmFsdWVDYXNlU2Vuc2l0aXZpdHksIEpTQzo6RnVuY3Rpb25QdHI8Q1NTT3BlcmF0aW9uUHRyVGFn
PiBjYXNlU2Vuc2l0aXZlVGVzdCwgSlNDOjpGdW5jdGlvblB0cjxDU1NPcGVyYXRpb25QdHJUYWc+
IGNhc2VJbnNlbnNpdGl2ZVRlc3QpCiB7CiAgICAgTG9jYWxSZWdpc3RlcldpdGhQcmVmZXJlbmNl
IGV4cGVjdGVkVmFsdWVSZWdpc3RlcihtX3JlZ2lzdGVyQWxsb2NhdG9yLCBKU0M6OkdQUkluZm86
OmFyZ3VtZW50R1BSMSk7CiAgICAgbV9hc3NlbWJsZXIubW92ZShBc3NlbWJsZXI6OlRydXN0ZWRJ
bW1QdHIoZXhwZWN0ZWRWYWx1ZS5pbXBsKCkpLCBleHBlY3RlZFZhbHVlUmVnaXN0ZXIpOwpAQCAt
MzI2OCwxMSArMzI2OCwxMSBAQCB2b2lkIFNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVF
bGVtZW50SXNIb3ZlcmVkKEFzc2VtYmxlcjo6SnVtcExpc3QmIGZhaWx1cgogCiB2b2lkIFNlbGVj
dG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVFbGVtZW50SXNJbkxhbmd1YWdlKEFzc2VtYmxlcjo6
SnVtcExpc3QmIGZhaWx1cmVDYXNlcywgY29uc3QgU2VsZWN0b3JGcmFnbWVudCYgZnJhZ21lbnQp
CiB7Ci0gICAgZm9yIChjb25zdCBWZWN0b3I8QXRvbWljU3RyaW5nPiogbGFuZ3VhZ2VBcmd1bWVu
dHMgOiBmcmFnbWVudC5sYW5ndWFnZUFyZ3VtZW50c0xpc3QpCisgICAgZm9yIChjb25zdCBWZWN0
b3I8QXRvbVN0cmluZz4qIGxhbmd1YWdlQXJndW1lbnRzIDogZnJhZ21lbnQubGFuZ3VhZ2VBcmd1
bWVudHNMaXN0KQogICAgICAgICBnZW5lcmF0ZUVsZW1lbnRJc0luTGFuZ3VhZ2UoZmFpbHVyZUNh
c2VzLCBsYW5ndWFnZUFyZ3VtZW50cyk7CiB9CiAKLXZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9y
OjpnZW5lcmF0ZUVsZW1lbnRJc0luTGFuZ3VhZ2UoQXNzZW1ibGVyOjpKdW1wTGlzdCYgZmFpbHVy
ZUNhc2VzLCBjb25zdCBWZWN0b3I8QXRvbWljU3RyaW5nPiogbGFuZ3VhZ2VBcmd1bWVudHMpCit2
b2lkIFNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVFbGVtZW50SXNJbkxhbmd1YWdlKEFz
c2VtYmxlcjo6SnVtcExpc3QmIGZhaWx1cmVDYXNlcywgY29uc3QgVmVjdG9yPEF0b21TdHJpbmc+
KiBsYW5ndWFnZUFyZ3VtZW50cykKIHsKICAgICBMb2NhbFJlZ2lzdGVyV2l0aFByZWZlcmVuY2Ug
bGFuZ1JhbmdlUmVnaXN0ZXIobV9yZWdpc3RlckFsbG9jYXRvciwgSlNDOjpHUFJJbmZvOjphcmd1
bWVudEdQUjEpOwogICAgIG1fYXNzZW1ibGVyLm1vdmUoQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
KGxhbmd1YWdlQXJndW1lbnRzKSwgbGFuZ1JhbmdlUmVnaXN0ZXIpOwpAQCAtMzQ1NSw5ICszNDU1
LDkgQEAgaW5saW5lIHZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUVsZW1lbnRI
YXNUYWdOYW1lKEFzc2VtYmxlcjo6SnVtcExpc3QKICAgICBMb2NhbFJlZ2lzdGVyIHF1YWxpZmll
ZE5hbWVJbXBsKG1fcmVnaXN0ZXJBbGxvY2F0b3IpOwogICAgIG1fYXNzZW1ibGVyLmxvYWRQdHIo
QXNzZW1ibGVyOjpBZGRyZXNzKGVsZW1lbnRBZGRyZXNzUmVnaXN0ZXIsIEVsZW1lbnQ6OnRhZ1FO
YW1lTWVtb3J5T2Zmc2V0KCkgKyBRdWFsaWZpZWROYW1lOjppbXBsTWVtb3J5T2Zmc2V0KCkpLCBx
dWFsaWZpZWROYW1lSW1wbCk7CiAKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIHNlbGVjdG9yTG9j
YWxOYW1lID0gbmFtZVRvTWF0Y2gubG9jYWxOYW1lKCk7CisgICAgY29uc3QgQXRvbVN0cmluZyYg
c2VsZWN0b3JMb2NhbE5hbWUgPSBuYW1lVG9NYXRjaC5sb2NhbE5hbWUoKTsKICAgICBpZiAoc2Vs
ZWN0b3JMb2NhbE5hbWUgIT0gc3RhckF0b20oKSkgewotICAgICAgICBjb25zdCBBdG9taWNTdHJp
bmcmIGxvd2VyY2FzZUxvY2FsTmFtZSA9IHRhZ01hdGNoaW5nU2VsZWN0b3IudGFnTG93ZXJjYXNl
TG9jYWxOYW1lKCk7CisgICAgICAgIGNvbnN0IEF0b21TdHJpbmcmIGxvd2VyY2FzZUxvY2FsTmFt
ZSA9IHRhZ01hdGNoaW5nU2VsZWN0b3IudGFnTG93ZXJjYXNlTG9jYWxOYW1lKCk7CiAKICAgICAg
ICAgaWYgKHNlbGVjdG9yTG9jYWxOYW1lID09IGxvd2VyY2FzZUxvY2FsTmFtZSkgewogICAgICAg
ICAgICAgLy8gR2VuZXJhdGUgbG9jYWxOYW1lID09IGVsZW1lbnQtPmxvY2FsTmFtZSgpLgpAQCAt
MzQ4NSw3ICszNDg1LDcgQEAgaW5saW5lIHZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5l
cmF0ZUVsZW1lbnRIYXNUYWdOYW1lKEFzc2VtYmxlcjo6SnVtcExpc3QKICAgICAgICAgfQogICAg
IH0KIAotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgc2VsZWN0b3JOYW1lc3BhY2VVUkkgPSBuYW1l
VG9NYXRjaC5uYW1lc3BhY2VVUkkoKTsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBzZWxlY3Rvck5h
bWVzcGFjZVVSSSA9IG5hbWVUb01hdGNoLm5hbWVzcGFjZVVSSSgpOwogICAgIGlmIChzZWxlY3Rv
ck5hbWVzcGFjZVVSSSAhPSBzdGFyQXRvbSgpKSB7CiAgICAgICAgIC8vIEdlbmVyYXRlIG5hbWVz
cGFjZVVSSSA9PSBlbGVtZW50LT5uYW1lc3BhY2VVUkkoKS4KICAgICAgICAgTG9jYWxSZWdpc3Rl
ciBjb25zdGFudFJlZ2lzdGVyKG1fcmVnaXN0ZXJBbGxvY2F0b3IpOwpAQCAtMzQ5NCwxNSArMzQ5
NCwxNSBAQCBpbmxpbmUgdm9pZCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlRWxlbWVu
dEhhc1RhZ05hbWUoQXNzZW1ibGVyOjpKdW1wTGlzdAogICAgIH0KIH0KIAotdm9pZCBTZWxlY3Rv
ckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlRWxlbWVudEhhc0lkKEFzc2VtYmxlcjo6SnVtcExpc3Qm
IGZhaWx1cmVDYXNlcywgY29uc3QgTG9jYWxSZWdpc3RlciYgZWxlbWVudERhdGFBZGRyZXNzLCBj
b25zdCBBdG9taWNTdHJpbmcmIGlkVG9NYXRjaCkKK3ZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9y
OjpnZW5lcmF0ZUVsZW1lbnRIYXNJZChBc3NlbWJsZXI6Okp1bXBMaXN0JiBmYWlsdXJlQ2FzZXMs
IGNvbnN0IExvY2FsUmVnaXN0ZXImIGVsZW1lbnREYXRhQWRkcmVzcywgY29uc3QgQXRvbVN0cmlu
ZyYgaWRUb01hdGNoKQogewotICAgIC8vIENvbXBhcmUgdGhlIHBvaW50ZXJzIG9mIHRoZSBBdG9t
aWNTdHJpbmdJbXBsIGZyb20gaWRGb3JTdHlsZVJlc29sdXRpb24gd2l0aCB0aGUgcmVmZXJlbmNl
IGlkVG9NYXRjaC4KKyAgICAvLyBDb21wYXJlIHRoZSBwb2ludGVycyBvZiB0aGUgQXRvbVN0cmlu
Z0ltcGwgZnJvbSBpZEZvclN0eWxlUmVzb2x1dGlvbiB3aXRoIHRoZSByZWZlcmVuY2UgaWRUb01h
dGNoLgogICAgIExvY2FsUmVnaXN0ZXIgaWRUb01hdGNoUmVnaXN0ZXIobV9yZWdpc3RlckFsbG9j
YXRvcik7CiAgICAgbV9hc3NlbWJsZXIubW92ZShBc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoaWRU
b01hdGNoLmltcGwoKSksIGlkVG9NYXRjaFJlZ2lzdGVyKTsKICAgICBmYWlsdXJlQ2FzZXMuYXBw
ZW5kKG1fYXNzZW1ibGVyLmJyYW5jaFB0cihBc3NlbWJsZXI6Ok5vdEVxdWFsLCBBc3NlbWJsZXI6
OkFkZHJlc3MoZWxlbWVudERhdGFBZGRyZXNzLCBFbGVtZW50RGF0YTo6aWRGb3JTdHlsZVJlc29s
dXRpb25NZW1vcnlPZmZzZXQoKSksIGlkVG9NYXRjaFJlZ2lzdGVyKSk7CiB9CiAKLXZvaWQgU2Vs
ZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUVsZW1lbnRIYXNDbGFzc2VzKEFzc2VtYmxlcjo6
SnVtcExpc3QmIGZhaWx1cmVDYXNlcywgY29uc3QgTG9jYWxSZWdpc3RlciYgZWxlbWVudERhdGFB
ZGRyZXNzLCBjb25zdCBWZWN0b3I8Y29uc3QgQXRvbWljU3RyaW5nSW1wbCosIDg+JiBjbGFzc05h
bWVzKQordm9pZCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlRWxlbWVudEhhc0NsYXNz
ZXMoQXNzZW1ibGVyOjpKdW1wTGlzdCYgZmFpbHVyZUNhc2VzLCBjb25zdCBMb2NhbFJlZ2lzdGVy
JiBlbGVtZW50RGF0YUFkZHJlc3MsIGNvbnN0IFZlY3Rvcjxjb25zdCBBdG9tU3RyaW5nSW1wbCos
IDg+JiBjbGFzc05hbWVzKQogewogICAgIC8vIExvYWQgbV9jbGFzc05hbWVzLgogICAgIExvY2Fs
UmVnaXN0ZXIgc3BhY2VTcGxpdFN0cmluZ0RhdGEobV9yZWdpc3RlckFsbG9jYXRvcik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQW5pbWF0aW9uRXZlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0FuaW1hdGlvbkV2ZW50LmNwcAppbmRleCBjNTI1NjY3MWM3ODA4ZmZjMmYyMzY1
NGE5NGU2Y2YxMWEyMzFjY2Q4Li5hYjMzMmNhYzU5OTMwZDYyNWI3NDRjYjEzYjU2NWNiYmQ0OTVk
ODdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQW5pbWF0aW9uRXZlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BbmltYXRpb25FdmVudC5jcHAKQEAgLTI4LDE0ICsyOCwx
NCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUFuaW1hdGlvbkV2ZW50OjpBbmltYXRpb25F
dmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IEluaXQmIGluaXRpYWxpemVyLCBJ
c1RydXN0ZWQgaXNUcnVzdGVkKQorQW5pbWF0aW9uRXZlbnQ6OkFuaW1hdGlvbkV2ZW50KGNvbnN0
IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IEluaXQmIGluaXRpYWxpemVyLCBJc1RydXN0ZWQgaXNU
cnVzdGVkKQogICAgIDogRXZlbnQodHlwZSwgaW5pdGlhbGl6ZXIsIGlzVHJ1c3RlZCkKICAgICAs
IG1fYW5pbWF0aW9uTmFtZShpbml0aWFsaXplci5hbmltYXRpb25OYW1lKQogICAgICwgbV9lbGFw
c2VkVGltZShpbml0aWFsaXplci5lbGFwc2VkVGltZSkKIHsKIH0KIAotQW5pbWF0aW9uRXZlbnQ6
OkFuaW1hdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBh
bmltYXRpb25OYW1lLCBkb3VibGUgZWxhcHNlZFRpbWUpCitBbmltYXRpb25FdmVudDo6QW5pbWF0
aW9uRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25O
YW1lLCBkb3VibGUgZWxhcHNlZFRpbWUpCiAgICAgOiBFdmVudCh0eXBlLCBDYW5CdWJibGU6Olll
cywgSXNDYW5jZWxhYmxlOjpObykKICAgICAsIG1fYW5pbWF0aW9uTmFtZShhbmltYXRpb25OYW1l
KQogICAgICwgbV9lbGFwc2VkVGltZShlbGFwc2VkVGltZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9BbmltYXRpb25FdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0FuaW1hdGlv
bkV2ZW50LmgKaW5kZXggNTJiZWJmNDI4ZDY3YWY3OTZlMzRjYzMwZWRjYTZjNGZjZjcxZTU5MC4u
NTFlMmY2OTU5M2M4YzlhN2M3ODUxZmE3NzExNWNhODA1M2VhZTQzNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0FuaW1hdGlvbkV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0FuaW1hdGlvbkV2ZW50LmgKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBBbmltYXRpb25FdmVudCBmaW5hbCA6IHB1YmxpYyBFdmVudCB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZjxBbmltYXRpb25FdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYg
dHlwZSwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBkb3VibGUgZWxhcHNlZFRpbWUpCisg
ICAgc3RhdGljIFJlZjxBbmltYXRpb25FdmVudD4gY3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmIHR5
cGUsIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgZG91YmxlIGVsYXBzZWRUaW1lKQogICAg
IHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQW5pbWF0aW9uRXZlbnQodHlwZSwgYW5p
bWF0aW9uTmFtZSwgZWxhcHNlZFRpbWUpKTsKICAgICB9CkBAIC00MSw3ICs0MSw3IEBAIHB1Ymxp
YzoKICAgICAgICAgZG91YmxlIGVsYXBzZWRUaW1lIHsgMCB9OwogICAgIH07CiAKLSAgICBzdGF0
aWMgUmVmPEFuaW1hdGlvbkV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBj
b25zdCBJbml0JiBpbml0aWFsaXplciwgSXNUcnVzdGVkIGlzVHJ1c3RlZCA9IElzVHJ1c3RlZDo6
Tm8pCisgICAgc3RhdGljIFJlZjxBbmltYXRpb25FdmVudD4gY3JlYXRlKGNvbnN0IEF0b21TdHJp
bmcmIHR5cGUsIGNvbnN0IEluaXQmIGluaXRpYWxpemVyLCBJc1RydXN0ZWQgaXNUcnVzdGVkID0g
SXNUcnVzdGVkOjpObykKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFuaW1h
dGlvbkV2ZW50KHR5cGUsIGluaXRpYWxpemVyLCBpc1RydXN0ZWQpKTsKICAgICB9CkBAIC01NCw4
ICs1NCw4IEBAIHB1YmxpYzoKICAgICBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNv
bnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIEFuaW1hdGlvbkV2ZW50KGNvbnN0IEF0b21p
Y1N0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBkb3VibGUgZWxhcHNl
ZFRpbWUpOwotICAgIEFuaW1hdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IElu
aXQmLCBJc1RydXN0ZWQpOworICAgIEFuaW1hdGlvbkV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5
cGUsIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgZG91YmxlIGVsYXBzZWRUaW1lKTsKKyAg
ICBBbmltYXRpb25FdmVudChjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgSW5pdCYsIElzVHJ1c3Rl
ZCk7CiAKICAgICBTdHJpbmcgbV9hbmltYXRpb25OYW1lOwogICAgIGRvdWJsZSBtX2VsYXBzZWRU
aW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0F0dHIuY3BwCmluZGV4IDQ5ZmE1N2RmYTVlYjkwNjQ0MWMzOGUzOTc0YjMyNjRk
MjYxYTMzNGMuLjJlOTk0MGEzOGJmZWNjYWFiOTY3YjE3OWMyOGIzMTQ5ZDZkNDY1ZjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vQXR0ci5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlICJUZXh0Tm9kZVRyYXZlcnNh
bC5oIgogI2luY2x1ZGUgIlhNTE5TTmFtZXMuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5s
aW5lcy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L0F0b21TdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Niw3ICs0
Niw3IEBAIEF0dHI6OkF0dHIoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYg
bmFtZSkKIHsKIH0KIAotQXR0cjo6QXR0cihEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFF1YWxp
ZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgc3RhbmRhbG9uZVZhbHVlKQorQXR0
cjo6QXR0cihEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNv
bnN0IEF0b21TdHJpbmcmIHN0YW5kYWxvbmVWYWx1ZSkKICAgICA6IE5vZGUoZG9jdW1lbnQsIENy
ZWF0ZU90aGVyKQogICAgICwgbV9uYW1lKG5hbWUpCiAgICAgLCBtX3N0YW5kYWxvbmVWYWx1ZShz
dGFuZGFsb25lVmFsdWUpCkBAIC01OCw3ICs1OCw3IEBAIFJlZjxBdHRyPiBBdHRyOjpjcmVhdGUo
RWxlbWVudCYgZWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkKICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBBdHRyKGVsZW1lbnQsIG5hbWUpKTsKIH0KIAotUmVmPEF0dHI+IEF0dHI6
OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNv
bnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCitSZWY8QXR0cj4gQXR0cjo6Y3JlYXRlKERvY3VtZW50
JiBkb2N1bWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYg
dmFsdWUpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXR0cihkb2N1bWVudCwgbmFtZSwg
dmFsdWUpKTsKIH0KQEAgLTY5LDcgKzY5LDcgQEAgQXR0cjo6fkF0dHIoKQogICAgIEFTU0VSVF9X
SVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHRyZWVTY29wZSgpLnJvb3ROb2RlKCkuaXNEb2N1bWVu
dE5vZGUoKSk7CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IEF0dHI6OnNldFByZWZpeChjb25zdCBB
dG9taWNTdHJpbmcmIHByZWZpeCkKK0V4Y2VwdGlvbk9yPHZvaWQ+IEF0dHI6OnNldFByZWZpeChj
b25zdCBBdG9tU3RyaW5nJiBwcmVmaXgpCiB7CiAgICAgYXV0byByZXN1bHQgPSBjaGVja1NldFBy
ZWZpeChwcmVmaXgpOwogICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCkBAIC03OCw3ICs3
OCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEF0dHI6OnNldFByZWZpeChjb25zdCBBdG9taWNTdHJp
bmcmIHByZWZpeCkKICAgICBpZiAoKHByZWZpeCA9PSB4bWxuc0F0b20oKSAmJiBuYW1lc3BhY2VV
UkkoKSAhPSBYTUxOU05hbWVzOjp4bWxuc05hbWVzcGFjZVVSSSkgfHwgcXVhbGlmaWVkTmFtZSgp
ID09IHhtbG5zQXRvbSgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTmFtZXNwYWNlRXJy
b3IgfTsKIAotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3UHJlZml4ID0gcHJlZml4LmlzRW1w
dHkoKSA/IG51bGxBdG9tKCkgOiBwcmVmaXg7CisgICAgY29uc3QgQXRvbVN0cmluZyYgbmV3UHJl
Zml4ID0gcHJlZml4LmlzRW1wdHkoKSA/IG51bGxBdG9tKCkgOiBwcmVmaXg7CiAgICAgaWYgKG1f
ZWxlbWVudCkKICAgICAgICAgZWxlbWVudEF0dHJpYnV0ZSgpLnNldFByZWZpeChuZXdQcmVmaXgp
OwogICAgIG1fbmFtZS5zZXRQcmVmaXgobmV3UHJlZml4KTsKQEAgLTg2LDcgKzg2LDcgQEAgRXhj
ZXB0aW9uT3I8dm9pZD4gQXR0cjo6c2V0UHJlZml4KGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4
KQogICAgIHJldHVybiB7IH07CiB9CiAKLXZvaWQgQXR0cjo6c2V0VmFsdWUoY29uc3QgQXRvbWlj
U3RyaW5nJiB2YWx1ZSkKK3ZvaWQgQXR0cjo6c2V0VmFsdWUoY29uc3QgQXRvbVN0cmluZyYgdmFs
dWUpCiB7CiAgICAgaWYgKG1fZWxlbWVudCkKICAgICAgICAgbV9lbGVtZW50LT5zZXRBdHRyaWJ1
dGUocXVhbGlmaWVkTmFtZSgpLCB2YWx1ZSk7CkBAIC0xMTYsNyArMTE2LDcgQEAgQ1NTU3R5bGVE
ZWNsYXJhdGlvbiogQXR0cjo6c3R5bGUoKQogICAgIHJldHVybiAmbV9zdHlsZS0+ZW5zdXJlQ1NT
U3R5bGVEZWNsYXJhdGlvbigpOwogfQogCi1jb25zdCBBdG9taWNTdHJpbmcmIEF0dHI6OnZhbHVl
KCkgY29uc3QKK2NvbnN0IEF0b21TdHJpbmcmIEF0dHI6OnZhbHVlKCkgY29uc3QKIHsKICAgICBp
ZiAobV9lbGVtZW50KQogICAgICAgICByZXR1cm4gbV9lbGVtZW50LT5nZXRBdHRyaWJ1dGUocXVh
bGlmaWVkTmFtZSgpKTsKQEAgLTEzMCw3ICsxMzAsNyBAQCBBdHRyaWJ1dGUmIEF0dHI6OmVsZW1l
bnRBdHRyaWJ1dGUoKQogICAgIHJldHVybiAqbV9lbGVtZW50LT5lbnN1cmVVbmlxdWVFbGVtZW50
RGF0YSgpLmZpbmRBdHRyaWJ1dGVCeU5hbWUocXVhbGlmaWVkTmFtZSgpKTsKIH0KIAotdm9pZCBB
dHRyOjpkZXRhY2hGcm9tRWxlbWVudFdpdGhWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVl
KQordm9pZCBBdHRyOjpkZXRhY2hGcm9tRWxlbWVudFdpdGhWYWx1ZShjb25zdCBBdG9tU3RyaW5n
JiB2YWx1ZSkKIHsKICAgICBBU1NFUlQobV9lbGVtZW50KTsKICAgICBBU1NFUlQobV9zdGFuZGFs
b25lVmFsdWUuaXNOdWxsKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmgKaW5kZXggN2VlMGEwYmQwOGQ3NTg5NzFmM2Mw
MmE1MGJmNDFkOTZiMTA1NzE1Yi4uYWM5NGM4MDllOTM2M2NiNGM2Nzc2ZTM1NDYwNjIxMGFiYzQ1
MjdhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vQXR0ci5oCkBAIC0zNywzMCArMzcsMzAgQEAgY2xhc3MgQXR0ciBmaW5hbCA6
IHB1YmxpYyBOb2RlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEF0dHIpOwogcHVibGlj
OgogICAgIHN0YXRpYyBSZWY8QXR0cj4gY3JlYXRlKEVsZW1lbnQmLCBjb25zdCBRdWFsaWZpZWRO
YW1lJik7Ci0gICAgc3RhdGljIFJlZjxBdHRyPiBjcmVhdGUoRG9jdW1lbnQmLCBjb25zdCBRdWFs
aWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSk7CisgICAgc3RhdGljIFJlZjxB
dHRyPiBjcmVhdGUoRG9jdW1lbnQmLCBjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbVN0
cmluZyYgdmFsdWUpOwogICAgIHZpcnR1YWwgfkF0dHIoKTsKIAogICAgIFN0cmluZyBuYW1lKCkg
Y29uc3QgeyByZXR1cm4gcXVhbGlmaWVkTmFtZSgpLnRvU3RyaW5nKCk7IH0KICAgICBib29sIHNw
ZWNpZmllZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICBFbGVtZW50KiBvd25lckVsZW1l
bnQoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnQ7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIGNv
bnN0IEF0b21pY1N0cmluZyYgdmFsdWUoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldFZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYpOworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0
IEF0b21TdHJpbmcmIHZhbHVlKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRW
YWx1ZShjb25zdCBBdG9tU3RyaW5nJik7CiAKICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBxdWFs
aWZpZWROYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CiAKICAgICBXRUJDT1JFX0VYUE9S
VCBDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSgpOwogCiAgICAgdm9pZCBhdHRhY2hUb0VsZW1l
bnQoRWxlbWVudCYpOwotICAgIHZvaWQgZGV0YWNoRnJvbUVsZW1lbnRXaXRoVmFsdWUoY29uc3Qg
QXRvbWljU3RyaW5nJik7CisgICAgdm9pZCBkZXRhY2hGcm9tRWxlbWVudFdpdGhWYWx1ZShjb25z
dCBBdG9tU3RyaW5nJik7CiAKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbmFtZS5uYW1lc3BhY2VVUkkoKTsgfQotICAgIGNvbnN0
IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9uYW1lLmxv
Y2FsTmFtZSgpOyB9Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBwcmVmaXgoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX25hbWUucHJlZml4KCk7IH0KKyAgICBjb25zdCBBdG9tU3RyaW5nJiBuYW1l
c3BhY2VVUkkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX25hbWUubmFtZXNwYWNlVVJJKCk7IH0K
KyAgICBjb25zdCBBdG9tU3RyaW5nJiBsb2NhbE5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X25hbWUubG9jYWxOYW1lKCk7IH0KKyAgICBjb25zdCBBdG9tU3RyaW5nJiBwcmVmaXgoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBtX25hbWUucHJlZml4KCk7IH0KIAogcHJpdmF0ZToKICAgICBBdHRy
KEVsZW1lbnQmLCBjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgQXR0cihEb2N1bWVudCYsIGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKTsKKyAgICBBdHRy
KERvY3VtZW50JiwgY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVl
KTsKIAogICAgIFN0cmluZyBub2RlTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG5hbWUoKTsg
fQogICAgIE5vZGVUeXBlIG5vZGVUeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gQVRUUklCVVRF
X05PREU7IH0KQEAgLTY4LDcgKzY4LDcgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbm9kZVZhbHVl
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdmFsdWUoKTsgfQogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+
IHNldE5vZGVWYWx1ZShjb25zdCBTdHJpbmcmKSBmaW5hbDsKIAotICAgIEV4Y2VwdGlvbk9yPHZv
aWQ+IHNldFByZWZpeChjb25zdCBBdG9taWNTdHJpbmcmKSBmaW5hbDsKKyAgICBFeGNlcHRpb25P
cjx2b2lkPiBzZXRQcmVmaXgoY29uc3QgQXRvbVN0cmluZyYpIGZpbmFsOwogCiAgICAgUmVmPE5v
ZGU+IGNsb25lTm9kZUludGVybmFsKERvY3VtZW50JiwgQ2xvbmluZ09wZXJhdGlvbikgZmluYWw7
CiAKQEAgLTgwLDcgKzgwLDcgQEAgcHJpdmF0ZToKICAgICAvLyBOb3RlIHRoYXQgbV9uYW1lIGlz
IGFsd2F5cyBzZXQsIGJ1dCBtX2VsZW1lbnQvbV9zdGFuZGFsb25lVmFsdWUgbWF5IGJlIG51bGwu
CiAgICAgRWxlbWVudCogbV9lbGVtZW50IHsgbnVsbHB0ciB9OwogICAgIFF1YWxpZmllZE5hbWUg
bV9uYW1lOwotICAgIEF0b21pY1N0cmluZyBtX3N0YW5kYWxvbmVWYWx1ZTsKKyAgICBBdG9tU3Ry
aW5nIG1fc3RhbmRhbG9uZVZhbHVlOwogCiAgICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnRp
ZXM+IG1fc3R5bGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0F0dHJpYnV0
ZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0F0dHJpYnV0ZS5oCmluZGV4IDQ1NmMyODZmMmExYmNi
YjBlYzJkODc4ZGNiMTk4YWZlNmNhYmRjODAuLjBkNjI1ZTk0ZWM0N2JmMmNhMDhmNWQ5Y2I1Yzdi
MDQyZmQ2NDUyNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyaWJ1dGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0cmlidXRlLmgKQEAgLTMzLDcgKzMzLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogLy8gVGhlIGFjdHVhbCBBdHRyIHdpdGggaXRzIHZhbHVlIGFzIGEg
VGV4dCBjaGlsZCBpcyBhbGxvY2F0ZWQgb25seSBpZiBuZWVkZWQuCiBjbGFzcyBBdHRyaWJ1dGUg
ewogcHVibGljOgotICAgIEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25z
dCBBdG9taWNTdHJpbmcmIHZhbHVlKQorICAgIEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKICAgICAgICAgOiBtX25hbWUobmFtZSkK
ICAgICAgICAgLCBtX3ZhbHVlKHZhbHVlKQogICAgIHsKQEAgLTQyLDIxICs0MiwyMSBAQCBwdWJs
aWM6CiAgICAgLy8gTk9URTogVGhlIHJlZmVyZW5jZXMgcmV0dXJuZWQgYnkgdGhlc2UgZnVuY3Rp
b25zIGFyZSBvbmx5IHZhbGlkIGZvciBhcyBsb25nCiAgICAgLy8gYXMgdGhlIEF0dHJpYnV0ZSBz
dGF5cyBpbiBwbGFjZS4gRm9yIGV4YW1wbGUsIGNhbGxpbmcgYSBmdW5jdGlvbiB0aGF0IG11dGF0
ZXMKICAgICAvLyBhbiBFbGVtZW50J3MgaW50ZXJuYWwgYXR0cmlidXRlIHN0b3JhZ2UgbWF5IGlu
dmFsaWRhdGUgdGhlbS4KLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKCkgY29uc3QgeyBy
ZXR1cm4gbV92YWx1ZTsgfQorICAgIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKCkgY29uc3QgeyBy
ZXR1cm4gbV92YWx1ZTsgfQogICAgIHN0YXRpYyBwdHJkaWZmX3QgdmFsdWVNZW1vcnlPZmZzZXQo
KSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQXR0cmlidXRlLCBtX3ZhbHVlKTsgfQotICAgIGNv
bnN0IEF0b21pY1N0cmluZyYgcHJlZml4KCkgY29uc3QgeyByZXR1cm4gbV9uYW1lLnByZWZpeCgp
OyB9Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUoKSBjb25zdCB7IHJldHVybiBt
X25hbWUubG9jYWxOYW1lKCk7IH0KLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVS
SSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZS5uYW1lc3BhY2VVUkkoKTsgfQorICAgIGNvbnN0IEF0
b21TdHJpbmcmIHByZWZpeCgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZS5wcmVmaXgoKTsgfQorICAg
IGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZS5sb2Nh
bE5hbWUoKTsgfQorICAgIGNvbnN0IEF0b21TdHJpbmcmIG5hbWVzcGFjZVVSSSgpIGNvbnN0IHsg
cmV0dXJuIG1fbmFtZS5uYW1lc3BhY2VVUkkoKTsgfQogCiAgICAgY29uc3QgUXVhbGlmaWVkTmFt
ZSYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQogICAgIHN0YXRpYyBwdHJkaWZmX3Qg
bmFtZU1lbW9yeU9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihBdHRyaWJ1dGUsIG1f
bmFtZSk7IH0KIAogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUuaXNF
bXB0eSgpOyB9Ci0gICAgc3RhdGljIGJvb2wgbmFtZU1hdGNoZXNGaWx0ZXIoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYgZmlsdGVyUHJlZml4LCBjb25zdCBBdG9taWNT
dHJpbmcmIGZpbHRlckxvY2FsTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBmaWx0ZXJOYW1lc3Bh
Y2VVUkkpOwotICAgIGJvb2wgbWF0Y2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIHByZWZpeCwgY29u
c3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNl
VVJJKSBjb25zdDsKKyAgICBzdGF0aWMgYm9vbCBuYW1lTWF0Y2hlc0ZpbHRlcihjb25zdCBRdWFs
aWZpZWROYW1lJiwgY29uc3QgQXRvbVN0cmluZyYgZmlsdGVyUHJlZml4LCBjb25zdCBBdG9tU3Ry
aW5nJiBmaWx0ZXJMb2NhbE5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIGZpbHRlck5hbWVzcGFjZVVS
SSk7CisgICAgYm9vbCBtYXRjaGVzKGNvbnN0IEF0b21TdHJpbmcmIHByZWZpeCwgY29uc3QgQXRv
bVN0cmluZyYgbG9jYWxOYW1lLCBjb25zdCBBdG9tU3RyaW5nJiBuYW1lc3BhY2VVUkkpIGNvbnN0
OwogCi0gICAgdm9pZCBzZXRWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKSB7IG1fdmFs
dWUgPSB2YWx1ZTsgfQotICAgIHZvaWQgc2V0UHJlZml4KGNvbnN0IEF0b21pY1N0cmluZyYgcHJl
Zml4KSB7IG1fbmFtZS5zZXRQcmVmaXgocHJlZml4KTsgfQorICAgIHZvaWQgc2V0VmFsdWUoY29u
c3QgQXRvbVN0cmluZyYgdmFsdWUpIHsgbV92YWx1ZSA9IHZhbHVlOyB9CisgICAgdm9pZCBzZXRQ
cmVmaXgoY29uc3QgQXRvbVN0cmluZyYgcHJlZml4KSB7IG1fbmFtZS5zZXRQcmVmaXgocHJlZml4
KTsgfQogCiAgICAgLy8gTm90ZTogVGhpcyBBUEkgaXMgb25seSBmb3IgSFRNTFRyZWVCdWlsZGVy
LiAgSXQgaXMgbm90IHNhZmUgdG8gY2hhbmdlIHRoZQogICAgIC8vIG5hbWUgb2YgYW4gYXR0cmli
dXRlIG9uY2UgcGFyc2VBdHRyaWJ1dGUgaGFzIGJlZW4gY2FsbGVkIGFzIERPTQpAQCAtNzEsMTcg
KzcxLDE3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBRdWFsaWZpZWROYW1lIG1fbmFtZTsK
LSAgICBBdG9taWNTdHJpbmcgbV92YWx1ZTsKKyAgICBBdG9tU3RyaW5nIG1fdmFsdWU7CiB9Owog
Ci1pbmxpbmUgYm9vbCBBdHRyaWJ1dGU6Om5hbWVNYXRjaGVzRmlsdGVyKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgZmlsdGVyUHJlZml4LCBjb25zdCBBdG9t
aWNTdHJpbmcmIGZpbHRlckxvY2FsTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBmaWx0ZXJOYW1l
c3BhY2VVUkkpCitpbmxpbmUgYm9vbCBBdHRyaWJ1dGU6Om5hbWVNYXRjaGVzRmlsdGVyKGNvbnN0
IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIGZpbHRlclByZWZpeCwgY29u
c3QgQXRvbVN0cmluZyYgZmlsdGVyTG9jYWxOYW1lLCBjb25zdCBBdG9tU3RyaW5nJiBmaWx0ZXJO
YW1lc3BhY2VVUkkpCiB7CiAgICAgaWYgKGZpbHRlckxvY2FsTmFtZSAhPSBuYW1lLmxvY2FsTmFt
ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIGZpbHRlclByZWZpeCA9PSBz
dGFyQXRvbSgpIHx8IGZpbHRlck5hbWVzcGFjZVVSSSA9PSBuYW1lLm5hbWVzcGFjZVVSSSgpOwog
fQogCi1pbmxpbmUgYm9vbCBBdHRyaWJ1dGU6Om1hdGNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBw
cmVmaXgsIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lLCBjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWVzcGFjZVVSSSkgY29uc3QKK2lubGluZSBib29sIEF0dHJpYnV0ZTo6bWF0Y2hlcyhjb25z
dCBBdG9tU3RyaW5nJiBwcmVmaXgsIGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsTmFtZSwgY29uc3Qg
QXRvbVN0cmluZyYgbmFtZXNwYWNlVVJJKSBjb25zdAogewogICAgIHJldHVybiBuYW1lTWF0Y2hl
c0ZpbHRlcihtX25hbWUsIHByZWZpeCwgbG9jYWxOYW1lLCBuYW1lc3BhY2VVUkkpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0JlZm9yZUxvYWRFdmVudC5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL0JlZm9yZUxvYWRFdmVudC5oCmluZGV4IGY2MzU2OTI0OTU5YWJlOGIxN2VlYjMz
MmM1ZDMzODhmODZlYTk0MWQuLjEwN2FkMjI0OWNmNzE5ZDg1M2JhNDM4MWRmMTBiOWY2MjQ2ODJh
MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9CZWZvcmVMb2FkRXZlbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vQmVmb3JlTG9hZEV2ZW50LmgKQEAgLTQyLDcgKzQyLDcgQEAg
cHVibGljOgogICAgICAgICBTdHJpbmcgdXJsOwogICAgIH07CiAKLSAgICBzdGF0aWMgUmVmPEJl
Zm9yZUxvYWRFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgSW5p
dCYgaW5pdGlhbGl6ZXIsIElzVHJ1c3RlZCBpc1RydXN0ZWQgPSBJc1RydXN0ZWQ6Ok5vKQorICAg
IHN0YXRpYyBSZWY8QmVmb3JlTG9hZEV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYgdHlw
ZSwgY29uc3QgSW5pdCYgaW5pdGlhbGl6ZXIsIElzVHJ1c3RlZCBpc1RydXN0ZWQgPSBJc1RydXN0
ZWQ6Ok5vKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmVmb3JlTG9hZEV2
ZW50KHR5cGUsIGluaXRpYWxpemVyLCBpc1RydXN0ZWQpKTsKICAgICB9CkBAIC01OCw3ICs1OCw3
IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIEJlZm9yZUxvYWRFdmVudChjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IEluaXQmIGluaXRpYWxpemVyLCBJc1RydXN0ZWQgaXNU
cnVzdGVkKQorICAgIEJlZm9yZUxvYWRFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25z
dCBJbml0JiBpbml0aWFsaXplciwgSXNUcnVzdGVkIGlzVHJ1c3RlZCkKICAgICAgICAgOiBFdmVu
dCh0eXBlLCBpbml0aWFsaXplciwgaXNUcnVzdGVkKQogICAgICAgICAsIG1fdXJsKGluaXRpYWxp
emVyLnVybCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xhc3NDb2xs
ZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DbGFzc0NvbGxlY3Rpb24uY3BwCmluZGV4
IDM4MTdlY2Q3YmIwZmY2NzZjM2M0Nzk4ZDZjYzIyYTBmOTc5NDg1ZDEuLjE5OTgzMDVjNGQ2ZjJh
MTU5MTgzODk4Y2I1NTI3YzQ2OGNmMGVjZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9DbGFzc0NvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DbGFzc0NvbGxl
Y3Rpb24uY3BwCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01B
S0VfSVNPX0FMTE9DQVRFRF9JTVBMKENsYXNzQ29sbGVjdGlvbik7CiAKLVJlZjxDbGFzc0NvbGxl
Y3Rpb24+IENsYXNzQ29sbGVjdGlvbjo6Y3JlYXRlKENvbnRhaW5lck5vZGUmIHJvb3ROb2RlLCBD
b2xsZWN0aW9uVHlwZSB0eXBlLCBjb25zdCBBdG9taWNTdHJpbmcmIGNsYXNzTmFtZXMpCitSZWY8
Q2xhc3NDb2xsZWN0aW9uPiBDbGFzc0NvbGxlY3Rpb246OmNyZWF0ZShDb250YWluZXJOb2RlJiBy
b290Tm9kZSwgQ29sbGVjdGlvblR5cGUgdHlwZSwgY29uc3QgQXRvbVN0cmluZyYgY2xhc3NOYW1l
cykKIHsKICAgICBBU1NFUlQodHlwZSA9PSBCeUNsYXNzKTsKICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBDbGFzc0NvbGxlY3Rpb24ocm9vdE5vZGUsIHR5cGUsIGNsYXNzTmFtZXMpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DbGFzc0NvbGxlY3Rpb24uaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9DbGFzc0NvbGxlY3Rpb24uaAppbmRleCAzZDg4MDNmNWMzNDQyNzE5MGU4M2JhYjFi
NTkxMDIxYWJlYTQ4ZmRjLi5lY2Y3ZjNkMjBjNjE1YzQ2ODk4MjBmMTlhYTljZjNhODYzMmY2YmRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xhc3NDb2xsZWN0aW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0NsYXNzQ29sbGVjdGlvbi5oCkBAIC0zOCwyMCArMzgsMjAgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ2xhc3NDb2xsZWN0aW9uIGZpbmFsIDogcHVibGlj
IENhY2hlZEhUTUxDb2xsZWN0aW9uPENsYXNzQ29sbGVjdGlvbiwgQ29sbGVjdGlvblR5cGVUcmFp
dHM8QnlDbGFzcz46OnRyYXZlcnNhbFR5cGU+IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVE
KENsYXNzQ29sbGVjdGlvbik7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDbGFzc0NvbGxlY3Rp
b24+IGNyZWF0ZShDb250YWluZXJOb2RlJiwgQ29sbGVjdGlvblR5cGUsIGNvbnN0IEF0b21pY1N0
cmluZyYgY2xhc3NOYW1lcyk7CisgICAgc3RhdGljIFJlZjxDbGFzc0NvbGxlY3Rpb24+IGNyZWF0
ZShDb250YWluZXJOb2RlJiwgQ29sbGVjdGlvblR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGNsYXNz
TmFtZXMpOwogCiAgICAgdmlydHVhbCB+Q2xhc3NDb2xsZWN0aW9uKCk7CiAKICAgICBib29sIGVs
ZW1lbnRNYXRjaGVzKEVsZW1lbnQmKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBDbGFzc0NvbGxl
Y3Rpb24oQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUsIENvbGxlY3Rpb25UeXBlLCBjb25zdCBBdG9t
aWNTdHJpbmcmIGNsYXNzTmFtZXMpOworICAgIENsYXNzQ29sbGVjdGlvbihDb250YWluZXJOb2Rl
JiByb290Tm9kZSwgQ29sbGVjdGlvblR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGNsYXNzTmFtZXMp
OwogCiAgICAgU3BhY2VTcGxpdFN0cmluZyBtX2NsYXNzTmFtZXM7Ci0gICAgQXRvbWljU3RyaW5n
IG1fb3JpZ2luYWxDbGFzc05hbWVzOworICAgIEF0b21TdHJpbmcgbV9vcmlnaW5hbENsYXNzTmFt
ZXM7CiB9OwogCi1pbmxpbmUgQ2xhc3NDb2xsZWN0aW9uOjpDbGFzc0NvbGxlY3Rpb24oQ29udGFp
bmVyTm9kZSYgcm9vdE5vZGUsIENvbGxlY3Rpb25UeXBlIHR5cGUsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgY2xhc3NOYW1lcykKK2lubGluZSBDbGFzc0NvbGxlY3Rpb246OkNsYXNzQ29sbGVjdGlvbihD
b250YWluZXJOb2RlJiByb290Tm9kZSwgQ29sbGVjdGlvblR5cGUgdHlwZSwgY29uc3QgQXRvbVN0
cmluZyYgY2xhc3NOYW1lcykKICAgICA6IENhY2hlZEhUTUxDb2xsZWN0aW9uPENsYXNzQ29sbGVj
dGlvbiwgQ29sbGVjdGlvblR5cGVUcmFpdHM8QnlDbGFzcz46OnRyYXZlcnNhbFR5cGU+KHJvb3RO
b2RlLCB0eXBlKQogICAgICwgbV9jbGFzc05hbWVzKGNsYXNzTmFtZXMsIHJvb3ROb2RlLmRvY3Vt
ZW50KCkuaW5RdWlya3NNb2RlKCkpCiAgICAgLCBtX29yaWdpbmFsQ2xhc3NOYW1lcyhjbGFzc05h
bWVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NsaXBib2FyZEV2ZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9DbGlwYm9hcmRFdmVudC5jcHAKaW5kZXggM2NhYWRjZjI0YzVm
ZTU1NjljNzAzNzhmYWY1ZTcyZmYwZjRkMWU1MC4uZTNmZjUxYWRmNGZhZGVjZjNiMzYwMmY4Y2Zh
NDY4M2VkMzliMGE2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NsaXBib2FyZEV2
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xpcGJvYXJkRXZlbnQuY3BwCkBAIC0y
NywxMyArMjcsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DbGlwYm9hcmRFdmVudDo6
Q2xpcGJvYXJkRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBSZWY8RGF0YVRyYW5zZmVy
PiYmIGRhdGFUcmFuc2ZlcikKK0NsaXBib2FyZEV2ZW50OjpDbGlwYm9hcmRFdmVudChjb25zdCBB
dG9tU3RyaW5nJiB0eXBlLCBSZWY8RGF0YVRyYW5zZmVyPiYmIGRhdGFUcmFuc2ZlcikKICAgICA6
IEV2ZW50KHR5cGUsIENhbkJ1YmJsZTo6WWVzLCBJc0NhbmNlbGFibGU6OlllcywgSXNDb21wb3Nl
ZDo6WWVzKQogICAgICwgbV9jbGlwYm9hcmREYXRhKFdURk1vdmUoZGF0YVRyYW5zZmVyKSkKIHsK
IH0KIAotQ2xpcGJvYXJkRXZlbnQ6OkNsaXBib2FyZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYg
dHlwZSwgY29uc3QgSW5pdCYgaW5pdCkKK0NsaXBib2FyZEV2ZW50OjpDbGlwYm9hcmRFdmVudChj
b25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiBpbml0KQogICAgIDogRXZlbnQodHlw
ZSwgaW5pdCwgSXNUcnVzdGVkOjpObykKICAgICAsIG1fY2xpcGJvYXJkRGF0YShpbml0LmNsaXBi
b2FyZERhdGEpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xpcGJvYXJkRXZl
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DbGlwYm9hcmRFdmVudC5oCmluZGV4IDc5MDZiZTBk
MzgwMWE3Y2I3MTQ2MGRmYTk4OGUxZTcwNTgzNmNlMTAuLjBkNGU0Y2IxNjExMDM3ZTY3MWM1OTIx
ODJkOTlmNDNhNDEwMDRmOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DbGlwYm9h
cmRFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DbGlwYm9hcmRFdmVudC5oCkBAIC0z
NywxMiArMzcsMTIgQEAgcHVibGljOgogICAgICAgICBSZWZQdHI8RGF0YVRyYW5zZmVyPiBjbGlw
Ym9hcmREYXRhOwogICAgIH07CiAKLSAgICBzdGF0aWMgUmVmPENsaXBib2FyZEV2ZW50PiBjcmVh
dGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBSZWY8RGF0YVRyYW5zZmVyPiYmIGRhdGFUcmFu
c2ZlcikKKyAgICBzdGF0aWMgUmVmPENsaXBib2FyZEV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbVN0
cmluZyYgdHlwZSwgUmVmPERhdGFUcmFuc2Zlcj4mJiBkYXRhVHJhbnNmZXIpCiAgICAgewogICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDbGlwYm9hcmRFdmVudCh0eXBlLCBXVEZNb3ZlKGRh
dGFUcmFuc2ZlcikpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmPENsaXBib2FyZEV2ZW50PiBj
cmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiBpbml0KQorICAgIHN0
YXRpYyBSZWY8Q2xpcGJvYXJkRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBj
b25zdCBJbml0JiBpbml0KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ2xp
cGJvYXJkRXZlbnQodHlwZSwgaW5pdCkpOwogICAgIH0KQEAgLTUwLDggKzUwLDggQEAgcHVibGlj
OgogICAgIERhdGFUcmFuc2ZlciogY2xpcGJvYXJkRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xp
cGJvYXJkRGF0YS5nZXQoKTsgfQogCiBwcml2YXRlOgotICAgIENsaXBib2FyZEV2ZW50KGNvbnN0
IEF0b21pY1N0cmluZyYgdHlwZSwgUmVmPERhdGFUcmFuc2Zlcj4mJik7Ci0gICAgQ2xpcGJvYXJk
RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0Jik7CisgICAgQ2xpcGJv
YXJkRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgUmVmPERhdGFUcmFuc2Zlcj4mJik7Cisg
ICAgQ2xpcGJvYXJkRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3QgSW5pdCYpOwog
CiAgICAgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbDsKICAgICBi
b29sIGlzQ2xpcGJvYXJkRXZlbnQoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Db21wb3NpdGlvbkV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21w
b3NpdGlvbkV2ZW50LmNwcAppbmRleCAxZDA0Nzk1ZGU4Mjc4NzA1MmI2Yzk2MWI3OWVlMGY4ZTE2
MWZmYjhhLi5lYzA5YzM4NDUxOWMwNjhlNjI2MzEyODNiZGUzNGQwN2I1N2Q2YWE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zaXRpb25FdmVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZlbnQuY3BwCkBAIC0zMSwxMyArMzEsMTMgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBDb21wb3NpdGlvbkV2ZW50OjpDb21wb3NpdGlvbkV2ZW50KCkg
PSBkZWZhdWx0OwogCi1Db21wb3NpdGlvbkV2ZW50OjpDb21wb3NpdGlvbkV2ZW50KGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGNvbnN0IFN0cmlu
ZyYgZGF0YSkKK0NvbXBvc2l0aW9uRXZlbnQ6OkNvbXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbVN0
cmluZyYgdHlwZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0
YSkKICAgICA6IFVJRXZlbnQodHlwZSwgQ2FuQnViYmxlOjpZZXMsIElzQ2FuY2VsYWJsZTo6WWVz
LCBJc0NvbXBvc2VkOjpZZXMsIFdURk1vdmUodmlldyksIDApCiAgICAgLCBtX2RhdGEoZGF0YSkK
IHsKIH0KIAotQ29tcG9zaXRpb25FdmVudDo6Q29tcG9zaXRpb25FdmVudChjb25zdCBBdG9taWNT
dHJpbmcmIHR5cGUsIGNvbnN0IEluaXQmIGluaXRpYWxpemVyKQorQ29tcG9zaXRpb25FdmVudDo6
Q29tcG9zaXRpb25FdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiBpbml0
aWFsaXplcikKICAgICA6IFVJRXZlbnQodHlwZSwgaW5pdGlhbGl6ZXIpCiAgICAgLCBtX2RhdGEo
aW5pdGlhbGl6ZXIuZGF0YSkKIHsKQEAgLTQ1LDcgKzQ1LDcgQEAgQ29tcG9zaXRpb25FdmVudDo6
Q29tcG9zaXRpb25FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IEluaXQmIGlu
aXRpYWwKIAogQ29tcG9zaXRpb25FdmVudDo6fkNvbXBvc2l0aW9uRXZlbnQoKSA9IGRlZmF1bHQ7
CiAKLXZvaWQgQ29tcG9zaXRpb25FdmVudDo6aW5pdENvbXBvc2l0aW9uRXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8
V2luZG93UHJveHk+JiYgdmlldywgY29uc3QgU3RyaW5nJiBkYXRhKQordm9pZCBDb21wb3NpdGlv
bkV2ZW50Ojppbml0Q29tcG9zaXRpb25FdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBib29s
IGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywg
Y29uc3QgU3RyaW5nJiBkYXRhKQogewogICAgIGlmIChpc0JlaW5nRGlzcGF0Y2hlZCgpKQogICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zaXRpb25F
dmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZlbnQuaAppbmRleCAyMjNi
ODYwNTk0OWNhMmU1MmM0ZjNjNjIyOTVmMzg1NjdhYTZkMjIzLi4yMTA5MDVhMDE0MTg4NTIzYTVk
YjUzNmEwNDMyNDFhNWRiNmNkYjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29t
cG9zaXRpb25FdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NpdGlvbkV2ZW50
LmgKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb21wb3Np
dGlvbkV2ZW50IGZpbmFsIDogcHVibGljIFVJRXZlbnQgewogcHVibGljOgotICAgIHN0YXRpYyBS
ZWY8Q29tcG9zaXRpb25FdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgUmVm
UHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSkKKyAgICBzdGF0aWMg
UmVmPENvbXBvc2l0aW9uRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBSZWZQ
dHI8V2luZG93UHJveHk+JiYgdmlldywgY29uc3QgU3RyaW5nJiBkYXRhKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29tcG9zaXRpb25FdmVudCh0eXBlLCBXVEZNb3ZlKHZp
ZXcpLCBkYXRhKSk7CiAgICAgfQpAQCAtNDYsMTQgKzQ2LDE0IEBAIHB1YmxpYzoKICAgICAgICAg
U3RyaW5nIGRhdGE7CiAgICAgfTsKIAotICAgIHN0YXRpYyBSZWY8Q29tcG9zaXRpb25FdmVudD4g
Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgSW5pdCYgaW5pdGlhbGl6ZXIp
CisgICAgc3RhdGljIFJlZjxDb21wb3NpdGlvbkV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbVN0cmlu
ZyYgdHlwZSwgY29uc3QgSW5pdCYgaW5pdGlhbGl6ZXIpCiAgICAgewogICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBDb21wb3NpdGlvbkV2ZW50KHR5cGUsIGluaXRpYWxpemVyKSk7CiAgICAg
fQogCiAgICAgdmlydHVhbCB+Q29tcG9zaXRpb25FdmVudCgpOwogCi0gICAgdm9pZCBpbml0Q29t
cG9zaXRpb25FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBi
b29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgY29uc3QgU3RyaW5nJiBkYXRh
KTsKKyAgICB2b2lkIGluaXRDb21wb3NpdGlvbkV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUs
IGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwg
Y29uc3QgU3RyaW5nJiBkYXRhKTsKIAogICAgIFN0cmluZyBkYXRhKCkgY29uc3QgeyByZXR1cm4g
bV9kYXRhOyB9CiAKQEAgLTYxLDggKzYxLDggQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIENv
bXBvc2l0aW9uRXZlbnQoKTsKLSAgICBDb21wb3NpdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmlu
ZyYgdHlwZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmLCBjb25zdCBTdHJpbmcmKTsKLSAgICBDb21w
b3NpdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgSW5pdCYpOworICAg
IENvbXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgUmVmUHRyPFdpbmRvd1By
b3h5PiYmLCBjb25zdCBTdHJpbmcmKTsKKyAgICBDb21wb3NpdGlvbkV2ZW50KGNvbnN0IEF0b21T
dHJpbmcmIHR5cGUsIGNvbnN0IEluaXQmKTsKIAogICAgIGJvb2wgaXNDb21wb3NpdGlvbkV2ZW50
KCkgY29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db25z
dGFudFByb3BlcnR5TWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db25zdGFudFByb3BlcnR5
TWFwLmNwcAppbmRleCA2YzEwOGM4ODg3MTVmNjdmYTk4MTg2MDBhYmRiMTUxMDRmYWFjMmYwLi5m
ZDE0MmY3ZGVhYjA3NDhlOTZhMTljNWIwZGFlZDkwNjI3MGQzMGIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ29uc3RhbnRQcm9wZXJ0eU1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0NvbnN0YW50UHJvcGVydHlNYXAuY3BwCkBAIC00OCwxNyArNDgsMTcgQEAgY29uc3Qg
Q29uc3RhbnRQcm9wZXJ0eU1hcDo6VmFsdWVzJiBDb25zdGFudFByb3BlcnR5TWFwOjp2YWx1ZXMo
KSBjb25zdAogICAgIHJldHVybiAqbV92YWx1ZXM7CiB9CiAKLWNvbnN0IEF0b21pY1N0cmluZyYg
Q29uc3RhbnRQcm9wZXJ0eU1hcDo6bmFtZUZvclByb3BlcnR5KENvbnN0YW50UHJvcGVydHkgcHJv
cGVydHkpIGNvbnN0Citjb25zdCBBdG9tU3RyaW5nJiBDb25zdGFudFByb3BlcnR5TWFwOjpuYW1l
Rm9yUHJvcGVydHkoQ29uc3RhbnRQcm9wZXJ0eSBwcm9wZXJ0eSkgY29uc3QKIHsKLSAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBzYWZlQXJlYUluc2V0VG9wTmFtZSgic2Fm
ZS1hcmVhLWluc2V0LXRvcCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwot
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHNhZmVBcmVhSW5zZXRSaWdo
dE5hbWUoInNhZmUtYXJlYS1pbnNldC1yaWdodCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHNhZmVB
cmVhSW5zZXRCb3R0b21OYW1lKCJzYWZlLWFyZWEtaW5zZXQtYm90dG9tIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21p
Y1N0cmluZz4gc2FmZUFyZWFJbnNldExlZnROYW1lKCJzYWZlLWFyZWEtaW5zZXQtbGVmdCIsIEF0
b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxBdG9taWNTdHJpbmc+IGZ1bGxzY3JlZW5JbnNldFRvcE5hbWUoImZ1bGxzY3JlZW4taW5z
ZXQtdG9wIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gZnVsbHNjcmVlbkluc2V0TGVmdE5hbWUoImZ1
bGxzY3JlZW4taW5zZXQtbGVmdCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGZ1bGxzY3JlZW5JbnNl
dEJvdHRvbU5hbWUoImZ1bGxzY3JlZW4taW5zZXQtYm90dG9tIiwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmlu
Zz4gZnVsbHNjcmVlbkluc2V0UmlnaHROYW1lKCJmdWxsc2NyZWVuLWluc2V0LXJpZ2h0IiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPEF0b21pY1N0cmluZz4gZnVsbHNjcmVlbkF1dG9IaWRlRHVyYXRpb25OYW1lKCJmdWxsc2Ny
ZWVuLWF1dG8taGlkZS1kdXJhdGlvbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9tU3RyaW5nPiBzYWZlQXJlYUluc2V0
VG9wTmFtZSgic2FmZS1hcmVhLWluc2V0LXRvcCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbVN0cmluZz4gc2FmZUFyZWFJ
bnNldFJpZ2h0TmFtZSgic2FmZS1hcmVhLWluc2V0LXJpZ2h0IiwgQXRvbVN0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9tU3RyaW5nPiBz
YWZlQXJlYUluc2V0Qm90dG9tTmFtZSgic2FmZS1hcmVhLWluc2V0LWJvdHRvbSIsIEF0b21TdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRv
bVN0cmluZz4gc2FmZUFyZWFJbnNldExlZnROYW1lKCJzYWZlLWFyZWEtaW5zZXQtbGVmdCIsIEF0
b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8QXRvbVN0cmluZz4gZnVsbHNjcmVlbkluc2V0VG9wTmFtZSgiZnVsbHNjcmVlbi1pbnNldC10
b3AiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEF0b21TdHJpbmc+IGZ1bGxzY3JlZW5JbnNldExlZnROYW1lKCJmdWxsc2NyZWVu
LWluc2V0LWxlZnQiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPEF0b21TdHJpbmc+IGZ1bGxzY3JlZW5JbnNldEJvdHRvbU5hbWUo
ImZ1bGxzY3JlZW4taW5zZXQtYm90dG9tIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9tU3RyaW5nPiBmdWxsc2NyZWVuSW5z
ZXRSaWdodE5hbWUoImZ1bGxzY3JlZW4taW5zZXQtcmlnaHQiLCBBdG9tU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21TdHJpbmc+IGZ1
bGxzY3JlZW5BdXRvSGlkZUR1cmF0aW9uTmFtZSgiZnVsbHNjcmVlbi1hdXRvLWhpZGUtZHVyYXRp
b24iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAKICAgICBzd2l0Y2ggKHBy
b3BlcnR5KSB7CiAgICAgY2FzZSBDb25zdGFudFByb3BlcnR5OjpTYWZlQXJlYUluc2V0VG9wOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnN0YW50UHJvcGVydHlNYXAuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Db25zdGFudFByb3BlcnR5TWFwLmgKaW5kZXggZDI2ZmI5ODhiMDE4
Y2RlNjNiNDRmMmExYTc1NzE3NzkxOWFiNDY5Ny4uN2ZhZWQ5OGEwYjFlYjEyYTllYTBhYWY2ZjAw
OTk3MzZkOGJjODM4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnN0YW50UHJv
cGVydHlNYXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29uc3RhbnRQcm9wZXJ0eU1hcC5o
CkBAIC0yOSw4ICsyOSw4IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3
dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1NlY29uZHMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9B
dG9taWNTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmdIYXNoLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21T
dHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTUsNyArNTUsNyBAQCBj
bGFzcyBDb25zdGFudFByb3BlcnR5TWFwIHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBDb25zdGFu
dFByb3BlcnR5TWFwKERvY3VtZW50Jik7CiAKLSAgICB0eXBlZGVmIEhhc2hNYXA8QXRvbWljU3Ry
aW5nLCBSZWY8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4+IFZhbHVlczsKKyAgICB0eXBlZGVmIEhh
c2hNYXA8QXRvbVN0cmluZywgUmVmPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+PiBWYWx1ZXM7CiAg
ICAgY29uc3QgVmFsdWVzJiB2YWx1ZXMoKSBjb25zdDsKIAogICAgIHZvaWQgZGlkQ2hhbmdlU2Fm
ZUFyZWFJbnNldHMoKTsKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2
b2lkIGJ1aWxkVmFsdWVzKCk7CiAKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVGb3JQcm9w
ZXJ0eShDb25zdGFudFByb3BlcnR5KSBjb25zdDsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBuYW1l
Rm9yUHJvcGVydHkoQ29uc3RhbnRQcm9wZXJ0eSkgY29uc3Q7CiAgICAgdm9pZCBzZXRWYWx1ZUZv
clByb3BlcnR5KENvbnN0YW50UHJvcGVydHksIFJlZjxDU1NWYXJpYWJsZURhdGE+JiYpOwogCiAg
ICAgdm9pZCB1cGRhdGVDb25zdGFudHNGb3JTYWZlQXJlYUluc2V0cygpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L0NvbnRhaW5lck5vZGUuY3BwCmluZGV4IGI4NWFmMTMxYjVhYzQwOTg3ODcyM2JjNGVmMmE4NjQ1
MGVkMzhiNjUuLjAzMGZjNjQ0MDI3NjM2ZmYyYTZhMGRiZjljYmRkYzNmYTI0ZjZmYmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKQEAgLTg3NSw3ICs4NzUsNyBAQCBFeGNlcHRp
b25PcjxSZWY8Tm9kZUxpc3Q+PiBDb250YWluZXJOb2RlOjpxdWVyeVNlbGVjdG9yQWxsKGNvbnN0
IFN0cmluZyYgc2VsZWN0bwogICAgIHJldHVybiBxdWVyeS5yZWxlYXNlUmV0dXJuVmFsdWUoKS5x
dWVyeUFsbCgqdGhpcyk7CiB9CiAKLVJlZjxIVE1MQ29sbGVjdGlvbj4gQ29udGFpbmVyTm9kZTo6
Z2V0RWxlbWVudHNCeVRhZ05hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBxdWFsaWZpZWROYW1lKQor
UmVmPEhUTUxDb2xsZWN0aW9uPiBDb250YWluZXJOb2RlOjpnZXRFbGVtZW50c0J5VGFnTmFtZShj
b25zdCBBdG9tU3RyaW5nJiBxdWFsaWZpZWROYW1lKQogewogICAgIEFTU0VSVCghcXVhbGlmaWVk
TmFtZS5pc051bGwoKSk7CiAKQEAgLTg4Nyw3ICs4ODcsNyBAQCBSZWY8SFRNTENvbGxlY3Rpb24+
IENvbnRhaW5lck5vZGU6OmdldEVsZW1lbnRzQnlUYWdOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYg
cXVhbAogICAgIHJldHVybiBlbnN1cmVSYXJlRGF0YSgpLmVuc3VyZU5vZGVMaXN0cygpLmFkZENh
Y2hlZENvbGxlY3Rpb248VGFnQ29sbGVjdGlvbj4oKnRoaXMsIEJ5VGFnLCBxdWFsaWZpZWROYW1l
KTsKIH0KIAotUmVmPEhUTUxDb2xsZWN0aW9uPiBDb250YWluZXJOb2RlOjpnZXRFbGVtZW50c0J5
VGFnTmFtZU5TKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBBdG9taWNT
dHJpbmcmIGxvY2FsTmFtZSkKK1JlZjxIVE1MQ29sbGVjdGlvbj4gQ29udGFpbmVyTm9kZTo6Z2V0
RWxlbWVudHNCeVRhZ05hbWVOUyhjb25zdCBBdG9tU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0
IEF0b21TdHJpbmcmIGxvY2FsTmFtZSkKIHsKICAgICBBU1NFUlQoIWxvY2FsTmFtZS5pc051bGwo
KSk7CiAgICAgcmV0dXJuIGVuc3VyZVJhcmVEYXRhKCkuZW5zdXJlTm9kZUxpc3RzKCkuYWRkQ2Fj
aGVkVGFnQ29sbGVjdGlvbk5TKCp0aGlzLCBuYW1lc3BhY2VVUkkuaXNFbXB0eSgpID8gbnVsbEF0
b20oKSA6IG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lKTsKQEAgLTg5OCwxMiArODk4LDEyIEBAIFJl
ZjxOb2RlTGlzdD4gQ29udGFpbmVyTm9kZTo6Z2V0RWxlbWVudHNCeU5hbWUoY29uc3QgU3RyaW5n
JiBlbGVtZW50TmFtZSkKICAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEoKS5lbnN1cmVOb2RlTGlz
dHMoKS5hZGRDYWNoZVdpdGhBdG9taWNOYW1lPE5hbWVOb2RlTGlzdD4oKnRoaXMsIGVsZW1lbnRO
YW1lKTsKIH0KIAotUmVmPEhUTUxDb2xsZWN0aW9uPiBDb250YWluZXJOb2RlOjpnZXRFbGVtZW50
c0J5Q2xhc3NOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgY2xhc3NOYW1lcykKK1JlZjxIVE1MQ29s
bGVjdGlvbj4gQ29udGFpbmVyTm9kZTo6Z2V0RWxlbWVudHNCeUNsYXNzTmFtZShjb25zdCBBdG9t
U3RyaW5nJiBjbGFzc05hbWVzKQogewogICAgIHJldHVybiBlbnN1cmVSYXJlRGF0YSgpLmVuc3Vy
ZU5vZGVMaXN0cygpLmFkZENhY2hlZENvbGxlY3Rpb248Q2xhc3NDb2xsZWN0aW9uPigqdGhpcywg
QnlDbGFzcywgY2xhc3NOYW1lcyk7CiB9CiAKLVJlZjxSYWRpb05vZGVMaXN0PiBDb250YWluZXJO
b2RlOjpyYWRpb05vZGVMaXN0KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKK1JlZjxSYWRpb05v
ZGVMaXN0PiBDb250YWluZXJOb2RlOjpyYWRpb05vZGVMaXN0KGNvbnN0IEF0b21TdHJpbmcmIG5h
bWUpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoSFRNTE5hbWVzOjpmb3JtVGFnKSB8fCBoYXNU
YWdOYW1lKEhUTUxOYW1lczo6ZmllbGRzZXRUYWcpKTsKICAgICByZXR1cm4gZW5zdXJlUmFyZURh
dGEoKS5lbnN1cmVOb2RlTGlzdHMoKS5hZGRDYWNoZVdpdGhBdG9taWNOYW1lPFJhZGlvTm9kZUxp
c3Q+KCp0aGlzLCBuYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWlu
ZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCmluZGV4IDNmMDU3
MWUzMzVlNzc5NmVlZmU1NDQ4YTIwN2EyZjAyYTg4OGFkNGEuLjJiMjkwNjBmZTU0OTIwNTNkY2Jh
YWU5YTk2YzU1NDNmYTlkYWY1YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250
YWluZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaApAQCAt
MTE0LDExICsxMTQsMTEgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9y
PEVsZW1lbnQqPiBxdWVyeVNlbGVjdG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0b3JzKTsKICAgICBX
RUJDT1JFX0VYUE9SVCBFeGNlcHRpb25PcjxSZWY8Tm9kZUxpc3Q+PiBxdWVyeVNlbGVjdG9yQWxs
KGNvbnN0IFN0cmluZyYgc2VsZWN0b3JzKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxIVE1M
Q29sbGVjdGlvbj4gZ2V0RWxlbWVudHNCeVRhZ05hbWUoY29uc3QgQXRvbWljU3RyaW5nJik7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgUmVmPEhUTUxDb2xsZWN0aW9uPiBnZXRFbGVtZW50c0J5VGFnTmFt
ZU5TKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBBdG9taWNTdHJpbmcm
IGxvY2FsTmFtZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmPEhUTUxDb2xsZWN0aW9uPiBnZXRF
bGVtZW50c0J5VGFnTmFtZShjb25zdCBBdG9tU3RyaW5nJik7CisgICAgV0VCQ09SRV9FWFBPUlQg
UmVmPEhUTUxDb2xsZWN0aW9uPiBnZXRFbGVtZW50c0J5VGFnTmFtZU5TKGNvbnN0IEF0b21TdHJp
bmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgQXRvbVN0cmluZyYgbG9jYWxOYW1lKTsKICAgICBXRUJD
T1JFX0VYUE9SVCBSZWY8Tm9kZUxpc3Q+IGdldEVsZW1lbnRzQnlOYW1lKGNvbnN0IFN0cmluZyYg
ZWxlbWVudE5hbWUpOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxIVE1MQ29sbGVjdGlvbj4gZ2V0
RWxlbWVudHNCeUNsYXNzTmFtZShjb25zdCBBdG9taWNTdHJpbmcmIGNsYXNzTmFtZXMpOwotICAg
IFJlZjxSYWRpb05vZGVMaXN0PiByYWRpb05vZGVMaXN0KGNvbnN0IEF0b21pY1N0cmluZyYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxIVE1MQ29sbGVjdGlvbj4gZ2V0RWxlbWVudHNCeUNsYXNz
TmFtZShjb25zdCBBdG9tU3RyaW5nJiBjbGFzc05hbWVzKTsKKyAgICBSZWY8UmFkaW9Ob2RlTGlz
dD4gcmFkaW9Ob2RlTGlzdChjb25zdCBBdG9tU3RyaW5nJik7CiAKICAgICAvLyBGcm9tIHRoZSBQ
YXJlbnROb2RlIGludGVyZmFjZSAtIGh0dHBzOi8vZG9tLnNwZWMud2hhdHdnLm9yZy8jaW50ZXJm
YWNlLXBhcmVudG5vZGUKICAgICBXRUJDT1JFX0VYUE9SVCBSZWY8SFRNTENvbGxlY3Rpb24+IGNo
aWxkcmVuKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJl
YWN0aW9uUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWFjdGlv
blF1ZXVlLmNwcAppbmRleCBiZDQ5ZTg3MzQ3NGQ1MTMwMTlkMjI0N2E4YTYxY2UzNGZlMzQzMTA0
Li45ZWI1ZDdlNDlmNTZhMWU5OGQxZmJiOWIyM2U2ZWE3MmUyMjYxNThmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5jcHAKQEAgLTYzLDcg
KzYzLDcgQEAgcHVibGljOgogICAgICAgICAsIG1fbmV3RG9jdW1lbnQoJm5ld0RvY3VtZW50KQog
ICAgIHsgfQogCi0gICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWVJdGVtKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgb2xkVmFsdWUsIGNv
bnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUpCisgICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVl
dWVJdGVtKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IEF0b21TdHJp
bmcmIG9sZFZhbHVlLCBjb25zdCBBdG9tU3RyaW5nJiBuZXdWYWx1ZSkKICAgICAgICAgOiBtX3R5
cGUoVHlwZTo6QXR0cmlidXRlQ2hhbmdlZCkKICAgICAgICAgLCBtX2F0dHJpYnV0ZU5hbWUoYXR0
cmlidXRlTmFtZSkKICAgICAgICAgLCBtX29sZFZhbHVlKG9sZFZhbHVlKQpAQCAtOTksOCArOTks
OCBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxEb2N1bWVudD4gbV9vbGREb2N1bWVudDsKICAgICBS
ZWZQdHI8RG9jdW1lbnQ+IG1fbmV3RG9jdW1lbnQ7CiAgICAgT3B0aW9uYWw8UXVhbGlmaWVkTmFt
ZT4gbV9hdHRyaWJ1dGVOYW1lOwotICAgIEF0b21pY1N0cmluZyBtX29sZFZhbHVlOwotICAgIEF0
b21pY1N0cmluZyBtX25ld1ZhbHVlOworICAgIEF0b21TdHJpbmcgbV9vbGRWYWx1ZTsKKyAgICBB
dG9tU3RyaW5nIG1fbmV3VmFsdWU7CiB9OwogCiBDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZTo6
Q3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUoSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlJiBlbGVt
ZW50SW50ZXJmYWNlKQpAQCAtMTkwLDcgKzE5MCw3IEBAIHZvaWQgQ3VzdG9tRWxlbWVudFJlYWN0
aW9uUXVldWU6OmVucXVldWVBZG9wdGVkQ2FsbGJhY2tJZk5lZWRlZChFbGVtZW50JiBlbGVtZW50
CiAgICAgZW5xdWV1ZUVsZW1lbnRPbkFwcHJvcHJpYXRlRWxlbWVudFF1ZXVlKGVsZW1lbnQpOwog
fQogCi12b2lkIEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlOjplbnF1ZXVlQXR0cmlidXRlQ2hh
bmdlZENhbGxiYWNrSWZOZWVkZWQoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXR0cmlidXRlTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRv
bWljU3RyaW5nJiBuZXdWYWx1ZSkKK3ZvaWQgQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWU6OmVu
cXVldWVBdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2tJZk5lZWRlZChFbGVtZW50JiBlbGVtZW50LCBj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBjb25zdCBBdG9tU3RyaW5nJiBvbGRW
YWx1ZSwgY29uc3QgQXRvbVN0cmluZyYgbmV3VmFsdWUpCiB7CiAgICAgQVNTRVJUKEN1c3RvbUVs
ZW1lbnRSZWFjdGlvbkRpc2FsbG93ZWRTY29wZTo6aXNSZWFjdGlvbkFsbG93ZWQoKSk7CiAgICAg
QVNTRVJUKGVsZW1lbnQuaXNEZWZpbmVkQ3VzdG9tRWxlbWVudCgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmgKaW5kZXggYzgyYzYwNzA0ZGI0
NTljY2I3NzEzZWI4YWFhODBhNGU5YWQ0Mzg3YS4uNTg5Yzg0MWNjM2U4OGNlNzllNzQyZTdiMmJi
MzRhZTllNjlmMDhhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1l
bnRSZWFjdGlvblF1ZXVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRS
ZWFjdGlvblF1ZXVlLmgKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lk
IGVucXVldWVDb25uZWN0ZWRDYWxsYmFja0lmTmVlZGVkKEVsZW1lbnQmKTsKICAgICBzdGF0aWMg
dm9pZCBlbnF1ZXVlRGlzY29ubmVjdGVkQ2FsbGJhY2tJZk5lZWRlZChFbGVtZW50Jik7CiAgICAg
c3RhdGljIHZvaWQgZW5xdWV1ZUFkb3B0ZWRDYWxsYmFja0lmTmVlZGVkKEVsZW1lbnQmLCBEb2N1
bWVudCYgb2xkRG9jdW1lbnQsIERvY3VtZW50JiBuZXdEb2N1bWVudCk7Ci0gICAgc3RhdGljIHZv
aWQgZW5xdWV1ZUF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFja0lmTmVlZGVkKEVsZW1lbnQmLCBjb25z
dCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRv
bWljU3RyaW5nJiBuZXdWYWx1ZSk7CisgICAgc3RhdGljIHZvaWQgZW5xdWV1ZUF0dHJpYnV0ZUNo
YW5nZWRDYWxsYmFja0lmTmVlZGVkKEVsZW1lbnQmLCBjb25zdCBRdWFsaWZpZWROYW1lJiwgY29u
c3QgQXRvbVN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0b21TdHJpbmcmIG5ld1ZhbHVlKTsKICAg
ICBzdGF0aWMgdm9pZCBlbnF1ZXVlUG9zdFVwZ3JhZGVSZWFjdGlvbnMoRWxlbWVudCYpOwogCiAg
ICAgYm9vbCBvYnNlcnZlc1N0eWxlQXR0cmlidXRlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuY3BwCmluZGV4IDY2MTcyMWQwYTU5NDVhMTRkMjkx
ZjcxMzY4OGYzZjA2MWM5YjU1ZDQuLjc2OWIxNmJiNGZiZTVlNzk1MDNmNjQ1MGU4ZjI3MTFhZWY1
NzJiNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVnaXN0
cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuY3Bw
CkBAIC0zNyw3ICszNyw3IEBACiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogI2luY2x1ZGUgIlR5
cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0pTQ0pTVmFsdWVJbmxpbmVzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKQEAgLTY5LDcgKzY5LDcgQEAgc3RhdGljIHZvaWQgZW5xdWV1ZVVwZ3JhZGVJblNoYWRvd0lu
Y2x1ZGluZ1RyZWVPcmRlcihDb250YWluZXJOb2RlJiBub2RlLCBKU0N1c3QKIAogdm9pZCBDdXN0
b21FbGVtZW50UmVnaXN0cnk6OmFkZEVsZW1lbnREZWZpbml0aW9uKFJlZjxKU0N1c3RvbUVsZW1l
bnRJbnRlcmZhY2U+JiYgZWxlbWVudEludGVyZmFjZSkKIHsKLSAgICBBdG9taWNTdHJpbmcgbG9j
YWxOYW1lID0gZWxlbWVudEludGVyZmFjZS0+bmFtZSgpLmxvY2FsTmFtZSgpOworICAgIEF0b21T
dHJpbmcgbG9jYWxOYW1lID0gZWxlbWVudEludGVyZmFjZS0+bmFtZSgpLmxvY2FsTmFtZSgpOwog
ICAgIEFTU0VSVCghbV9uYW1lTWFwLmNvbnRhaW5zKGxvY2FsTmFtZSkpOwogICAgIG1fY29uc3Ry
dWN0b3JNYXAuYWRkKGVsZW1lbnRJbnRlcmZhY2UtPmNvbnN0cnVjdG9yKCksIGVsZW1lbnRJbnRl
cmZhY2UucHRyKCkpOwogICAgIG1fbmFtZU1hcC5hZGQobG9jYWxOYW1lLCBlbGVtZW50SW50ZXJm
YWNlLmNvcHlSZWYoKSk7CkBAIC05Myw3ICs5Myw3IEBAIEpTQ3VzdG9tRWxlbWVudEludGVyZmFj
ZSogQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpmaW5kSW50ZXJmYWNlKGNvbnN0IFF1YWxpZmllZE5h
CiAgICAgcmV0dXJuIG1fbmFtZU1hcC5nZXQobmFtZS5sb2NhbE5hbWUoKSk7CiB9CiAKLUpTQ3Vz
dG9tRWxlbWVudEludGVyZmFjZSogQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpmaW5kSW50ZXJmYWNl
KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3QKK0pTQ3VzdG9tRWxlbWVudEludGVyZmFj
ZSogQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpmaW5kSW50ZXJmYWNlKGNvbnN0IEF0b21TdHJpbmcm
IG5hbWUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fbmFtZU1hcC5nZXQobmFtZSk7CiB9CkBAIC0x
MDgsNyArMTA4LDcgQEAgYm9vbCBDdXN0b21FbGVtZW50UmVnaXN0cnk6OmNvbnRhaW5zQ29uc3Ry
dWN0b3IoY29uc3QgSlNDOjpKU09iamVjdCogY29uc3RydWN0b3IKICAgICByZXR1cm4gbV9jb25z
dHJ1Y3Rvck1hcC5jb250YWlucyhjb25zdHJ1Y3Rvcik7CiB9CiAKLUpTQzo6SlNWYWx1ZSBDdXN0
b21FbGVtZW50UmVnaXN0cnk6OmdldChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCitKU0M6OkpT
VmFsdWUgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpnZXQoY29uc3QgQXRvbVN0cmluZyYgbmFtZSkK
IHsKICAgICBpZiAoYXV0byogZWxlbWVudEludGVyZmFjZSA9IG1fbmFtZU1hcC5nZXQobmFtZSkp
CiAgICAgICAgIHJldHVybiBlbGVtZW50SW50ZXJmYWNlLT5jb25zdHJ1Y3RvcigpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5oCmluZGV4IGI0MmFiYmQxZWNjOGRj
OWIyOTUyNjQwYzA0YTQwY2Y4YzFjMGNmN2QuLmRlYzc4MjQ0MTcwYWY3ZGVhYjNhZDY5YmRmMjhl
ZDkwZTVlZDY1NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50
UmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5
LmgKQEAgLTI4LDggKzI4LDggQEAKICNpbmNsdWRlICJDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZl
ci5oIgogI2luY2x1ZGUgIlF1YWxpZmllZE5hbWUuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgotI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0
L0F0b21pY1N0cmluZ0hhc2guaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAK
QEAgLTU5LDIyICs1OSwyMiBAQCBwdWJsaWM6CiAKICAgICBKU0N1c3RvbUVsZW1lbnRJbnRlcmZh
Y2UqIGZpbmRJbnRlcmZhY2UoY29uc3QgRWxlbWVudCYpIGNvbnN0OwogICAgIEpTQ3VzdG9tRWxl
bWVudEludGVyZmFjZSogZmluZEludGVyZmFjZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7
Ci0gICAgSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlKiBmaW5kSW50ZXJmYWNlKGNvbnN0IEF0b21p
Y1N0cmluZyYpIGNvbnN0OworICAgIEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZSogZmluZEludGVy
ZmFjZShjb25zdCBBdG9tU3RyaW5nJikgY29uc3Q7CiAgICAgSlNDdXN0b21FbGVtZW50SW50ZXJm
YWNlKiBmaW5kSW50ZXJmYWNlKGNvbnN0IEpTQzo6SlNPYmplY3QqKSBjb25zdDsKICAgICBib29s
IGNvbnRhaW5zQ29uc3RydWN0b3IoY29uc3QgSlNDOjpKU09iamVjdCopIGNvbnN0OwogCi0gICAg
SlNDOjpKU1ZhbHVlIGdldChjb25zdCBBdG9taWNTdHJpbmcmKTsKKyAgICBKU0M6OkpTVmFsdWUg
Z2V0KGNvbnN0IEF0b21TdHJpbmcmKTsKICAgICB2b2lkIHVwZ3JhZGUoTm9kZSYgcm9vdCk7CiAK
LSAgICBIYXNoTWFwPEF0b21pY1N0cmluZywgUmVmPERlZmVycmVkUHJvbWlzZT4+JiBwcm9taXNl
TWFwKCkgeyByZXR1cm4gbV9wcm9taXNlTWFwOyB9CisgICAgSGFzaE1hcDxBdG9tU3RyaW5nLCBS
ZWY8RGVmZXJyZWRQcm9taXNlPj4mIHByb21pc2VNYXAoKSB7IHJldHVybiBtX3Byb21pc2VNYXA7
IH0KIAogcHJpdmF0ZToKICAgICBDdXN0b21FbGVtZW50UmVnaXN0cnkoRE9NV2luZG93JiwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCopOwogCiAgICAgRE9NV2luZG93JiBtX3dpbmRvdzsKLSAgICBI
YXNoTWFwPEF0b21pY1N0cmluZywgUmVmPEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZT4+IG1fbmFt
ZU1hcDsKKyAgICBIYXNoTWFwPEF0b21TdHJpbmcsIFJlZjxKU0N1c3RvbUVsZW1lbnRJbnRlcmZh
Y2U+PiBtX25hbWVNYXA7CiAgICAgSGFzaE1hcDxjb25zdCBKU0M6OkpTT2JqZWN0KiwgSlNDdXN0
b21FbGVtZW50SW50ZXJmYWNlKj4gbV9jb25zdHJ1Y3Rvck1hcDsKLSAgICBIYXNoTWFwPEF0b21p
Y1N0cmluZywgUmVmPERlZmVycmVkUHJvbWlzZT4+IG1fcHJvbWlzZU1hcDsKKyAgICBIYXNoTWFw
PEF0b21TdHJpbmcsIFJlZjxEZWZlcnJlZFByb21pc2U+PiBtX3Byb21pc2VNYXA7CiAKICAgICBi
b29sIG1fZWxlbWVudERlZmluaXRpb25Jc1J1bm5pbmcgeyBmYWxzZSB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L0N1c3RvbUV2ZW50LmNwcAppbmRleCA2ZTY1MGIzMjI4Njk4Yzk1NzYyODhmNjZkZGFmZjlmOWNl
NDkwMmNkLi42NmQ3MmZmMDNkYjJhNzRjMDVmZmE3MGFlOGU4YzU0NzVkYmJiMjljIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9DdXN0b21FdmVudC5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgaW5saW5lIEN1c3RvbUV2
ZW50OjpDdXN0b21FdmVudChJc1RydXN0ZWQgaXNUcnVzdGVkKQogewogfQogCi1pbmxpbmUgQ3Vz
dG9tRXZlbnQ6OkN1c3RvbUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgSW5p
dCYgaW5pdGlhbGl6ZXIsIElzVHJ1c3RlZCBpc1RydXN0ZWQpCitpbmxpbmUgQ3VzdG9tRXZlbnQ6
OkN1c3RvbUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IEluaXQmIGluaXRpYWxp
emVyLCBJc1RydXN0ZWQgaXNUcnVzdGVkKQogICAgIDogRXZlbnQodHlwZSwgaW5pdGlhbGl6ZXIs
IGlzVHJ1c3RlZCkKICAgICAsIG1fZGV0YWlsKGluaXRpYWxpemVyLmRldGFpbCkKIHsKQEAgLTQ5
LDEyICs0OSwxMiBAQCBSZWY8Q3VzdG9tRXZlbnQ+IEN1c3RvbUV2ZW50OjpjcmVhdGUoSXNUcnVz
dGVkIGlzVHJ1c3RlZCkKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDdXN0b21FdmVudChpc1Ry
dXN0ZWQpKTsKIH0KIAotUmVmPEN1c3RvbUV2ZW50PiBDdXN0b21FdmVudDo6Y3JlYXRlKGNvbnN0
IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgSW5pdCYgaW5pdGlhbGl6ZXIsIElzVHJ1c3RlZCBp
c1RydXN0ZWQpCitSZWY8Q3VzdG9tRXZlbnQ+IEN1c3RvbUV2ZW50OjpjcmVhdGUoY29uc3QgQXRv
bVN0cmluZyYgdHlwZSwgY29uc3QgSW5pdCYgaW5pdGlhbGl6ZXIsIElzVHJ1c3RlZCBpc1RydXN0
ZWQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ3VzdG9tRXZlbnQodHlwZSwgaW5pdGlh
bGl6ZXIsIGlzVHJ1c3RlZCkpOwogfQogCi12b2lkIEN1c3RvbUV2ZW50Ojppbml0Q3VzdG9tRXZl
bnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxh
YmxlLCBKU0M6OkpTVmFsdWUgZGV0YWlsKQordm9pZCBDdXN0b21FdmVudDo6aW5pdEN1c3RvbUV2
ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFi
bGUsIEpTQzo6SlNWYWx1ZSBkZXRhaWwpCiB7CiAgICAgaWYgKGlzQmVpbmdEaXNwYXRjaGVkKCkp
CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21F
dmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUV2ZW50LmgKaW5kZXggOTczYWJiYmFh
NzBhMGQ4NzIwMzFhYzRjYjhiYTg5OTI3N2IwMDNkYi4uZTc4ZDUwZTY3N2U3NzdmZTE1Y2E1Mzk4
NDI2ODc0MTM5ZDdhNjFhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUV2
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUV2ZW50LmgKQEAgLTQyLDE2ICs0
MiwxNiBAQCBwdWJsaWM6CiAgICAgICAgIEpTQzo6SlNWYWx1ZSBkZXRhaWw7CiAgICAgfTsKIAot
ICAgIHN0YXRpYyBSZWY8Q3VzdG9tRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5
cGUsIGNvbnN0IEluaXQmLCBJc1RydXN0ZWQgPSBJc1RydXN0ZWQ6Ok5vKTsKKyAgICBzdGF0aWMg
UmVmPEN1c3RvbUV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3QgSW5p
dCYsIElzVHJ1c3RlZCA9IElzVHJ1c3RlZDo6Tm8pOwogCi0gICAgdm9pZCBpbml0Q3VzdG9tRXZl
bnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxh
YmxlLCBKU0M6OkpTVmFsdWUgZGV0YWlsID0gSlNDOjpKU1ZhbHVlOjpKU1VuZGVmaW5lZCk7Cisg
ICAgdm9pZCBpbml0Q3VzdG9tRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgYm9vbCBjYW5C
dWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgSlNDOjpKU1ZhbHVlIGRldGFpbCA9IEpTQzo6SlNWYWx1
ZTo6SlNVbmRlZmluZWQpOwogCiAgICAgY29uc3QgSlNWYWx1ZUluV3JhcHBlZE9iamVjdCYgZGV0
YWlsKCkgY29uc3QgeyByZXR1cm4gbV9kZXRhaWw7IH0KICAgICBKU1ZhbHVlSW5XcmFwcGVkT2Jq
ZWN0JiBjYWNoZWREZXRhaWwoKSB7IHJldHVybiBtX2NhY2hlZERldGFpbDsgfQogCiBwcml2YXRl
OgogICAgIEN1c3RvbUV2ZW50KElzVHJ1c3RlZCk7Ci0gICAgQ3VzdG9tRXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiBpbml0aWFsaXplciwgSXNUcnVzdGVkKTsKKyAg
ICBDdXN0b21FdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiBpbml0aWFs
aXplciwgSXNUcnVzdGVkKTsKIAogICAgIEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNlKCkg
Y29uc3QgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNm
ZXJJdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbS5oCmluZGV4IDkx
ZWJkYTFhNGU2Zjc1MjcwN2U1Zjc4YjI0OTkyNmMzODExMzcyNWYuLmI0ZmY1OTk0NWFmOWM5ZWE0
YzFjZjhiZmIzMDY2MGVhODM2YWU2ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
YXRhVHJhbnNmZXJJdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0
ZW0uaApAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgotI2luY2x1ZGUg
PHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRGF0YXNldERPTVN0cmluZ01hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YXNldERP
TVN0cmluZ01hcC5jcHAKaW5kZXggYTZhZWVkYzBlN2ViNjJmNjhhMWQyZDk4NDhjZTA2YWRkY2Mw
YjZmOC4uZDc4OWNjN2ZhNGI2NzE4NzZlOGM2MzZjMmIyMzBhZTE2NjYzYzc0MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFzZXRET01TdHJpbmdNYXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9EYXRhc2V0RE9NU3RyaW5nTWFwLmNwcApAQCAtMjksNyArMjksNyBAQAog
I2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgogI2luY2x1
ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3Ry
aW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTA5LDcgKzEw
OSw3IEBAIHN0YXRpYyBib29sIGlzVmFsaWRQcm9wZXJ0eU5hbWUoY29uc3QgU3RyaW5nJiBuYW1l
KQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotc3RhdGljIGlubGluZSBB
dG9taWNTdHJpbmcgY29udmVydFByb3BlcnR5TmFtZVRvQXR0cmlidXRlTmFtZShjb25zdCBTdHJp
bmdJbXBsJiBuYW1lKQorc3RhdGljIGlubGluZSBBdG9tU3RyaW5nIGNvbnZlcnRQcm9wZXJ0eU5h
bWVUb0F0dHJpYnV0ZU5hbWUoY29uc3QgU3RyaW5nSW1wbCYgbmFtZSkKIHsKICAgICBjb25zdCBD
aGFyYWN0ZXJUeXBlIGRhdGFQcmVmaXhbXSA9IHsgJ2QnLCAnYScsICd0JywgJ2EnLCAnLScgfTsK
IApAQCAtMTI5LDEwICsxMjksMTAgQEAgc3RhdGljIGlubGluZSBBdG9taWNTdHJpbmcgY29udmVy
dFByb3BlcnR5TmFtZVRvQXR0cmlidXRlTmFtZShjb25zdCBTdHJpbmdJbXBsJgogICAgICAgICB9
IGVsc2UKICAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoY2hhcmFjdGVyKTsKICAgICB9Ci0gICAg
cmV0dXJuIEF0b21pY1N0cmluZyhidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICBy
ZXR1cm4gQXRvbVN0cmluZyhidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKIH0KIAotc3Rh
dGljIEF0b21pY1N0cmluZyBjb252ZXJ0UHJvcGVydHlOYW1lVG9BdHRyaWJ1dGVOYW1lKGNvbnN0
IFN0cmluZyYgbmFtZSkKK3N0YXRpYyBBdG9tU3RyaW5nIGNvbnZlcnRQcm9wZXJ0eU5hbWVUb0F0
dHJpYnV0ZU5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIGlmIChuYW1lLmlzTnVsbCgp
KQogICAgICAgICByZXR1cm4gbnVsbEF0b20oKTsKQEAgLTE2MSw3ICsxNjEsNyBAQCBib29sIERh
dGFzZXRET01TdHJpbmdNYXA6OmlzU3VwcG9ydGVkUHJvcGVydHlOYW1lKGNvbnN0IFN0cmluZyYg
cHJvcGVydHlOYW1lKSBjbwogICAgIGF1dG8gYXR0cmlidXRlSXRlcmF0b3JBY2Nlc3NvciA9IG1f
ZWxlbWVudC5hdHRyaWJ1dGVzSXRlcmF0b3IoKTsKICAgICBpZiAoYXR0cmlidXRlSXRlcmF0b3JB
Y2Nlc3Nvci5hdHRyaWJ1dGVDb3VudCgpID09IDEpIHsKICAgICAgICAgLy8gSWYgdGhlIG5vZGUg
aGFzIGEgc2luZ2xlIGF0dHJpYnV0ZSwgaXQgaXMgdGhlIGRhdGFzZXQgbWVtYmVyIGFjY2Vzc2Vk
IGluIG1vc3QgY2FzZXMuCi0gICAgICAgIC8vIEJ1aWxkaW5nIGEgbmV3IEF0b21pY1N0cmluZyBp
biB0aGF0IGNhc2UgaXMgb3ZlcmtpbGwgc28gd2UgZG8gYSBkaXJlY3QgY2hhcmFjdGVyIGNvbXBh
cmlzb24uCisgICAgICAgIC8vIEJ1aWxkaW5nIGEgbmV3IEF0b21TdHJpbmcgaW4gdGhhdCBjYXNl
IGlzIG92ZXJraWxsIHNvIHdlIGRvIGEgZGlyZWN0IGNoYXJhY3RlciBjb21wYXJpc29uLgogICAg
ICAgICBjb25zdCBhdXRvJiBhdHRyaWJ1dGUgPSAqYXR0cmlidXRlSXRlcmF0b3JBY2Nlc3Nvci5i
ZWdpbigpOwogICAgICAgICBpZiAocHJvcGVydHlOYW1lTWF0Y2hlc0F0dHJpYnV0ZU5hbWUocHJv
cGVydHlOYW1lLCBhdHRyaWJ1dGUubG9jYWxOYW1lKCkpKQogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CkBAIC0xOTEsMTkgKzE5MSwxOSBAQCBWZWN0b3I8U3RyaW5nPiBEYXRhc2V0RE9NU3RyaW5n
TWFwOjpzdXBwb3J0ZWRQcm9wZXJ0eU5hbWVzKCkgY29uc3QKICAgICByZXR1cm4gbmFtZXM7CiB9
CiAKLWNvbnN0IEF0b21pY1N0cmluZyogRGF0YXNldERPTVN0cmluZ01hcDo6aXRlbShjb25zdCBT
dHJpbmcmIHByb3BlcnR5TmFtZSkgY29uc3QKK2NvbnN0IEF0b21TdHJpbmcqIERhdGFzZXRET01T
dHJpbmdNYXA6Oml0ZW0oY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpIGNvbnN0CiB7CiAgICAg
aWYgKG1fZWxlbWVudC5oYXNBdHRyaWJ1dGVzKCkpIHsKICAgICAgICAgQXR0cmlidXRlSXRlcmF0
b3JBY2Nlc3NvciBhdHRyaWJ1dGVJdGVyYXRvckFjY2Vzc29yID0gbV9lbGVtZW50LmF0dHJpYnV0
ZXNJdGVyYXRvcigpOwogCiAgICAgICAgIGlmIChhdHRyaWJ1dGVJdGVyYXRvckFjY2Vzc29yLmF0
dHJpYnV0ZUNvdW50KCkgPT0gMSkgewogICAgICAgICAgICAgLy8gSWYgdGhlIG5vZGUgaGFzIGEg
c2luZ2xlIGF0dHJpYnV0ZSwgaXQgaXMgdGhlIGRhdGFzZXQgbWVtYmVyIGFjY2Vzc2VkIGluIG1v
c3QgY2FzZXMuCi0gICAgICAgICAgICAvLyBCdWlsZGluZyBhIG5ldyBBdG9taWNTdHJpbmcgaW4g
dGhhdCBjYXNlIGlzIG92ZXJraWxsIHNvIHdlIGRvIGEgZGlyZWN0IGNoYXJhY3RlciBjb21wYXJp
c29uLgorICAgICAgICAgICAgLy8gQnVpbGRpbmcgYSBuZXcgQXRvbVN0cmluZyBpbiB0aGF0IGNh
c2UgaXMgb3ZlcmtpbGwgc28gd2UgZG8gYSBkaXJlY3QgY2hhcmFjdGVyIGNvbXBhcmlzb24uCiAg
ICAgICAgICAgICBjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSA9ICphdHRyaWJ1dGVJdGVyYXRv
ckFjY2Vzc29yLmJlZ2luKCk7CiAgICAgICAgICAgICBpZiAocHJvcGVydHlOYW1lTWF0Y2hlc0F0
dHJpYnV0ZU5hbWUocHJvcGVydHlOYW1lLCBhdHRyaWJ1dGUubG9jYWxOYW1lKCkpKQogICAgICAg
ICAgICAgICAgIHJldHVybiAmYXR0cmlidXRlLnZhbHVlKCk7CiAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICBBdG9taWNTdHJpbmcgYXR0cmlidXRlTmFtZSA9IGNvbnZlcnRQcm9wZXJ0eU5h
bWVUb0F0dHJpYnV0ZU5hbWUocHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgIEF0b21TdHJpbmcg
YXR0cmlidXRlTmFtZSA9IGNvbnZlcnRQcm9wZXJ0eU5hbWVUb0F0dHJpYnV0ZU5hbWUocHJvcGVy
dHlOYW1lKTsKICAgICAgICAgICAgIGZvciAoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUgOiBh
dHRyaWJ1dGVJdGVyYXRvckFjY2Vzc29yKSB7CiAgICAgICAgICAgICAgICAgaWYgKGF0dHJpYnV0
ZS5sb2NhbE5hbWUoKSA9PSBhdHRyaWJ1dGVOYW1lKQogICAgICAgICAgICAgICAgICAgICByZXR1
cm4gJmF0dHJpYnV0ZS52YWx1ZSgpOwpAQCAtMjE0LDcgKzIxNCw3IEBAIGNvbnN0IEF0b21pY1N0
cmluZyogRGF0YXNldERPTVN0cmluZ01hcDo6aXRlbShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFt
ZSkgY29uc3QKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotU3RyaW5nIERhdGFzZXRET01TdHJp
bmdNYXA6Om5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0CitTdHJpbmcg
RGF0YXNldERPTVN0cmluZ01hcDo6bmFtZWRJdGVtKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUpIGNv
bnN0CiB7CiAgICAgaWYgKGNvbnN0IGF1dG8qIHZhbHVlID0gaXRlbShuYW1lKSkKICAgICAgICAg
cmV0dXJuICp2YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhc2V0RE9N
U3RyaW5nTWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YXNldERPTVN0cmluZ01hcC5oCmlu
ZGV4IDNmZGI1NDdmYTE3NTI1ZmI5YzNhMjc4ZWQzMDM2ZDVkMDVhN2NmNzAuLmYxYTk4YWNkZGNk
YjZlOWZlOWU4OTA3MzQzNTIyMWNhZWQ1OTI3ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9EYXRhc2V0RE9NU3RyaW5nTWFwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFz
ZXRET01TdHJpbmdNYXAuaApAQCAtNDYsMTQgKzQ2LDE0IEBAIHB1YmxpYzoKICAgICBib29sIGlz
U3VwcG9ydGVkUHJvcGVydHlOYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3Q7CiAgICAgVmVj
dG9yPFN0cmluZz4gc3VwcG9ydGVkUHJvcGVydHlOYW1lcygpIGNvbnN0OwogCi0gICAgU3RyaW5n
IG5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0OworICAgIFN0cmluZyBu
YW1lZEl0ZW0oY29uc3QgQXRvbVN0cmluZyYgbmFtZSkgY29uc3Q7CiAgICAgRXhjZXB0aW9uT3I8
dm9pZD4gc2V0TmFtZWRJdGVtKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1
ZSk7CiAgICAgYm9vbCBkZWxldGVOYW1lZFByb3BlcnR5KGNvbnN0IFN0cmluZyYgbmFtZSk7CiAK
ICAgICBFbGVtZW50JiBlbGVtZW50KCkgeyByZXR1cm4gbV9lbGVtZW50OyB9CiAKIHByaXZhdGU6
Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nKiBpdGVtKGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3Q7
CisgICAgY29uc3QgQXRvbVN0cmluZyogaXRlbShjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0Owog
CiAgICAgRWxlbWVudCYgbV9lbGVtZW50OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9EZXZpY2VNb3Rpb25FdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlTW90
aW9uRXZlbnQuY3BwCmluZGV4IDkwZDcwMmRjMzkwNTJkMGZjNzZkZTA4NDE1ZGE0N2I4MzczYjJk
OTYuLmM1MTQwMmFhOTRiNTczYjE0NTFhOWYwMjNhODJjZjJlODJjOWMxNjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VNb3Rpb25FdmVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RldmljZU1vdGlvbkV2ZW50LmNwcApAQCAtMzcsNyArMzcsNyBAQCBEZXZpY2VN
b3Rpb25FdmVudDo6RGV2aWNlTW90aW9uRXZlbnQoKQogewogfQogCi1EZXZpY2VNb3Rpb25FdmVu
dDo6RGV2aWNlTW90aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIERldmlj
ZU1vdGlvbkRhdGEqIGRldmljZU1vdGlvbkRhdGEpCitEZXZpY2VNb3Rpb25FdmVudDo6RGV2aWNl
TW90aW9uRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBEZXZpY2VNb3Rpb25EYXRh
KiBkZXZpY2VNb3Rpb25EYXRhKQogICAgIDogRXZlbnQoZXZlbnRUeXBlLCBDYW5CdWJibGU6Ok5v
LCBJc0NhbmNlbGFibGU6Ok5vKQogICAgICwgbV9kZXZpY2VNb3Rpb25EYXRhKGRldmljZU1vdGlv
bkRhdGEpCiB7CkBAIC0xMDEsNyArMTAxLDcgQEAgT3B0aW9uYWw8ZG91YmxlPiBEZXZpY2VNb3Rp
b25FdmVudDo6aW50ZXJ2YWwoKSBjb25zdAogICAgIHJldHVybiBtX2RldmljZU1vdGlvbkRhdGEt
PmludGVydmFsKCk7CiB9CiAKLXZvaWQgRGV2aWNlTW90aW9uRXZlbnQ6OmluaXREZXZpY2VNb3Rp
b25FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgYnViYmxlcywgYm9vbCBjYW5j
ZWxhYmxlLCBPcHRpb25hbDxEZXZpY2VNb3Rpb25FdmVudDo6QWNjZWxlcmF0aW9uPiYmIGFjY2Vs
ZXJhdGlvbiwgT3B0aW9uYWw8RGV2aWNlTW90aW9uRXZlbnQ6OkFjY2VsZXJhdGlvbj4mJiBhY2Nl
bGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5LCBPcHRpb25hbDxEZXZpY2VNb3Rpb25FdmVudDo6Um90
YXRpb25SYXRlPiYmIHJvdGF0aW9uUmF0ZSwgT3B0aW9uYWw8ZG91YmxlPiBpbnRlcnZhbCkKK3Zv
aWQgRGV2aWNlTW90aW9uRXZlbnQ6OmluaXREZXZpY2VNb3Rpb25FdmVudChjb25zdCBBdG9tU3Ry
aW5nJiB0eXBlLCBib29sIGJ1YmJsZXMsIGJvb2wgY2FuY2VsYWJsZSwgT3B0aW9uYWw8RGV2aWNl
TW90aW9uRXZlbnQ6OkFjY2VsZXJhdGlvbj4mJiBhY2NlbGVyYXRpb24sIE9wdGlvbmFsPERldmlj
ZU1vdGlvbkV2ZW50OjpBY2NlbGVyYXRpb24+JiYgYWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0
eSwgT3B0aW9uYWw8RGV2aWNlTW90aW9uRXZlbnQ6OlJvdGF0aW9uUmF0ZT4mJiByb3RhdGlvblJh
dGUsIE9wdGlvbmFsPGRvdWJsZT4gaW50ZXJ2YWwpCiB7CiAgICAgaWYgKGlzQmVpbmdEaXNwYXRj
aGVkKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
ZXZpY2VNb3Rpb25FdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU1vdGlvbkV2ZW50
LmgKaW5kZXggNTFkNzFhMGU3Y2Q3ODQzZDE1ODJiMDM5Y2NlMjNhODI3MjUzZTlmYy4uOWVhMTgz
NDViNDg3NzQzZDA4ZDdmNzAyMTY1M2RhMzYxMjY0NTY5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RldmljZU1vdGlvbkV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rl
dmljZU1vdGlvbkV2ZW50LmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgICAgICBPcHRp
b25hbDxkb3VibGU+IGdhbW1hOwogICAgIH07CiAKLSAgICBzdGF0aWMgUmVmPERldmljZU1vdGlv
bkV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIERldmljZU1vdGlv
bkRhdGEqIGRldmljZU1vdGlvbkRhdGEpCisgICAgc3RhdGljIFJlZjxEZXZpY2VNb3Rpb25FdmVu
dD4gY3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgRGV2aWNlTW90aW9uRGF0YSog
ZGV2aWNlTW90aW9uRGF0YSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERl
dmljZU1vdGlvbkV2ZW50KGV2ZW50VHlwZSwgZGV2aWNlTW90aW9uRGF0YSkpOwogICAgIH0KQEAg
LTY1LDExICs2NSwxMSBAQCBwdWJsaWM6CiAgICAgT3B0aW9uYWw8Um90YXRpb25SYXRlPiByb3Rh
dGlvblJhdGUoKSBjb25zdDsKICAgICBPcHRpb25hbDxkb3VibGU+IGludGVydmFsKCkgY29uc3Q7
CiAKLSAgICB2b2lkIGluaXREZXZpY2VNb3Rpb25FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5
cGUsIGJvb2wgYnViYmxlcywgYm9vbCBjYW5jZWxhYmxlLCBPcHRpb25hbDxBY2NlbGVyYXRpb24+
JiYsIE9wdGlvbmFsPEFjY2VsZXJhdGlvbj4mJiwgT3B0aW9uYWw8Um90YXRpb25SYXRlPiYmLCBP
cHRpb25hbDxkb3VibGU+KTsKKyAgICB2b2lkIGluaXREZXZpY2VNb3Rpb25FdmVudChjb25zdCBB
dG9tU3RyaW5nJiB0eXBlLCBib29sIGJ1YmJsZXMsIGJvb2wgY2FuY2VsYWJsZSwgT3B0aW9uYWw8
QWNjZWxlcmF0aW9uPiYmLCBPcHRpb25hbDxBY2NlbGVyYXRpb24+JiYsIE9wdGlvbmFsPFJvdGF0
aW9uUmF0ZT4mJiwgT3B0aW9uYWw8ZG91YmxlPik7CiAKIHByaXZhdGU6CiAgICAgRGV2aWNlTW90
aW9uRXZlbnQoKTsKLSAgICBEZXZpY2VNb3Rpb25FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2
ZW50VHlwZSwgRGV2aWNlTW90aW9uRGF0YSopOworICAgIERldmljZU1vdGlvbkV2ZW50KGNvbnN0
IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgRGV2aWNlTW90aW9uRGF0YSopOwogCiAgICAgRXZlbnRJ
bnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uRXZlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uRXZlbnQuY3BwCmluZGV4IGU4MjFiNjU1MzEwOGEx
MjBjMGZiMjcxMjdiYTU3NTUxOTBlNzFlMWUuLjNkOTQ2Y2JjY2MzYmRiNTcyMzZiYTg1YWIyMmE2
MTI3ZDY3OWQ5YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRh
dGlvbkV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25F
dmVudC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgRGV2aWNlT3JpZW50YXRpb25FdmVudDo6RGV2aWNl
T3JpZW50YXRpb25FdmVudCgpCiB7CiB9CiAKLURldmljZU9yaWVudGF0aW9uRXZlbnQ6OkRldmlj
ZU9yaWVudGF0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIERldmljZU9y
aWVudGF0aW9uRGF0YSogb3JpZW50YXRpb24pCitEZXZpY2VPcmllbnRhdGlvbkV2ZW50OjpEZXZp
Y2VPcmllbnRhdGlvbkV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgRGV2aWNlT3Jp
ZW50YXRpb25EYXRhKiBvcmllbnRhdGlvbikKICAgICA6IEV2ZW50KGV2ZW50VHlwZSwgQ2FuQnVi
YmxlOjpObywgSXNDYW5jZWxhYmxlOjpObykKICAgICAsIG1fb3JpZW50YXRpb24ob3JpZW50YXRp
b24pCiB7CkBAIC03MCw3ICs3MCw3IEBAIE9wdGlvbmFsPGRvdWJsZT4gRGV2aWNlT3JpZW50YXRp
b25FdmVudDo6Y29tcGFzc0FjY3VyYWN5KCkgY29uc3QKICAgICByZXR1cm4gbV9vcmllbnRhdGlv
bi0+Y29tcGFzc0FjY3VyYWN5KCk7CiB9CiAKLXZvaWQgRGV2aWNlT3JpZW50YXRpb25FdmVudDo6
aW5pdERldmljZU9yaWVudGF0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29s
IGJ1YmJsZXMsIGJvb2wgY2FuY2VsYWJsZSwgT3B0aW9uYWw8ZG91YmxlPiBhbHBoYSwgT3B0aW9u
YWw8ZG91YmxlPiBiZXRhLCBPcHRpb25hbDxkb3VibGU+IGdhbW1hLCBPcHRpb25hbDxkb3VibGU+
IGNvbXBhc3NIZWFkaW5nLCBPcHRpb25hbDxkb3VibGU+IGNvbXBhc3NBY2N1cmFjeSkKK3ZvaWQg
RGV2aWNlT3JpZW50YXRpb25FdmVudDo6aW5pdERldmljZU9yaWVudGF0aW9uRXZlbnQoY29uc3Qg
QXRvbVN0cmluZyYgdHlwZSwgYm9vbCBidWJibGVzLCBib29sIGNhbmNlbGFibGUsIE9wdGlvbmFs
PGRvdWJsZT4gYWxwaGEsIE9wdGlvbmFsPGRvdWJsZT4gYmV0YSwgT3B0aW9uYWw8ZG91YmxlPiBn
YW1tYSwgT3B0aW9uYWw8ZG91YmxlPiBjb21wYXNzSGVhZGluZywgT3B0aW9uYWw8ZG91YmxlPiBj
b21wYXNzQWNjdXJhY3kpCiB7CiAgICAgaWYgKGlzQmVpbmdEaXNwYXRjaGVkKCkpCiAgICAgICAg
IHJldHVybjsKQEAgLTg2LDcgKzg2LDcgQEAgT3B0aW9uYWw8Ym9vbD4gRGV2aWNlT3JpZW50YXRp
b25FdmVudDo6YWJzb2x1dGUoKSBjb25zdAogICAgIHJldHVybiBtX29yaWVudGF0aW9uLT5hYnNv
bHV0ZSgpOwogfQogCi12b2lkIERldmljZU9yaWVudGF0aW9uRXZlbnQ6OmluaXREZXZpY2VPcmll
bnRhdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBidWJibGVzLCBib29s
IGNhbmNlbGFibGUsIE9wdGlvbmFsPGRvdWJsZT4gYWxwaGEsIE9wdGlvbmFsPGRvdWJsZT4gYmV0
YSwgT3B0aW9uYWw8ZG91YmxlPiBnYW1tYSwgT3B0aW9uYWw8Ym9vbD4gYWJzb2x1dGUpCit2b2lk
IERldmljZU9yaWVudGF0aW9uRXZlbnQ6OmluaXREZXZpY2VPcmllbnRhdGlvbkV2ZW50KGNvbnN0
IEF0b21TdHJpbmcmIHR5cGUsIGJvb2wgYnViYmxlcywgYm9vbCBjYW5jZWxhYmxlLCBPcHRpb25h
bDxkb3VibGU+IGFscGhhLCBPcHRpb25hbDxkb3VibGU+IGJldGEsIE9wdGlvbmFsPGRvdWJsZT4g
Z2FtbWEsIE9wdGlvbmFsPGJvb2w+IGFic29sdXRlKQogewogICAgIGlmIChpc0JlaW5nRGlzcGF0
Y2hlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RGV2aWNlT3JpZW50YXRpb25FdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU9yaWVu
dGF0aW9uRXZlbnQuaAppbmRleCA2Mjg3MDhiNmU4NGI1MjYxOGU5NjgzY2Q2Y2RlNjdmM2ZhMTE2
OGYzLi5hYmIzOTQwNWRlNmNlYTAxMDJlZjlhZjE2NjQ1ZTdjZjVlOWE0NzQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25FdmVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkV2ZW50LmgKQEAgLTM0LDcgKzM0LDcgQEAg
Y2xhc3MgRGV2aWNlT3JpZW50YXRpb25EYXRhOwogCiBjbGFzcyBEZXZpY2VPcmllbnRhdGlvbkV2
ZW50IGZpbmFsIDogcHVibGljIEV2ZW50LCBwdWJsaWMgRGV2aWNlT3JpZW50YXRpb25Pck1vdGlv
bkV2ZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPERldmljZU9yaWVudGF0aW9uRXZlbnQ+
IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRGV2aWNlT3JpZW50YXRpb25E
YXRhKiBvcmllbnRhdGlvbikKKyAgICBzdGF0aWMgUmVmPERldmljZU9yaWVudGF0aW9uRXZlbnQ+
IGNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIERldmljZU9yaWVudGF0aW9uRGF0
YSogb3JpZW50YXRpb24pCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEZXZp
Y2VPcmllbnRhdGlvbkV2ZW50KGV2ZW50VHlwZSwgb3JpZW50YXRpb24pKTsKICAgICB9CkBAIC01
NCwxNiArNTQsMTYgQEAgcHVibGljOgogICAgIE9wdGlvbmFsPGRvdWJsZT4gY29tcGFzc0hlYWRp
bmcoKSBjb25zdDsKICAgICBPcHRpb25hbDxkb3VibGU+IGNvbXBhc3NBY2N1cmFjeSgpIGNvbnN0
OwogCi0gICAgdm9pZCBpbml0RGV2aWNlT3JpZW50YXRpb25FdmVudChjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUsIGJvb2wgYnViYmxlcywgYm9vbCBjYW5jZWxhYmxlLCBPcHRpb25hbDxkb3VibGU+
IGFscGhhLCBPcHRpb25hbDxkb3VibGU+IGJldGEsIE9wdGlvbmFsPGRvdWJsZT4gZ2FtbWEsIE9w
dGlvbmFsPGRvdWJsZT4gY29tcGFzc0hlYWRpbmcsIE9wdGlvbmFsPGRvdWJsZT4gY29tcGFzc0Fj
Y3VyYWN5KTsKKyAgICB2b2lkIGluaXREZXZpY2VPcmllbnRhdGlvbkV2ZW50KGNvbnN0IEF0b21T
dHJpbmcmIHR5cGUsIGJvb2wgYnViYmxlcywgYm9vbCBjYW5jZWxhYmxlLCBPcHRpb25hbDxkb3Vi
bGU+IGFscGhhLCBPcHRpb25hbDxkb3VibGU+IGJldGEsIE9wdGlvbmFsPGRvdWJsZT4gZ2FtbWEs
IE9wdGlvbmFsPGRvdWJsZT4gY29tcGFzc0hlYWRpbmcsIE9wdGlvbmFsPGRvdWJsZT4gY29tcGFz
c0FjY3VyYWN5KTsKICNlbHNlCiAgICAgT3B0aW9uYWw8Ym9vbD4gYWJzb2x1dGUoKSBjb25zdDsK
IAotICAgIHZvaWQgaW5pdERldmljZU9yaWVudGF0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5n
JiB0eXBlLCBib29sIGJ1YmJsZXMsIGJvb2wgY2FuY2VsYWJsZSwgT3B0aW9uYWw8ZG91YmxlPiBh
bHBoYSwgT3B0aW9uYWw8ZG91YmxlPiBiZXRhLCBPcHRpb25hbDxkb3VibGU+IGdhbW1hLCBPcHRp
b25hbDxib29sPiBhYnNvbHV0ZSk7CisgICAgdm9pZCBpbml0RGV2aWNlT3JpZW50YXRpb25FdmVu
dChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBib29sIGJ1YmJsZXMsIGJvb2wgY2FuY2VsYWJsZSwg
T3B0aW9uYWw8ZG91YmxlPiBhbHBoYSwgT3B0aW9uYWw8ZG91YmxlPiBiZXRhLCBPcHRpb25hbDxk
b3VibGU+IGdhbW1hLCBPcHRpb25hbDxib29sPiBhYnNvbHV0ZSk7CiAjZW5kaWYKIAogcHJpdmF0
ZToKICAgICBEZXZpY2VPcmllbnRhdGlvbkV2ZW50KCk7Ci0gICAgRGV2aWNlT3JpZW50YXRpb25F
dmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRGV2aWNlT3JpZW50YXRpb25EYXRh
Kik7CisgICAgRGV2aWNlT3JpZW50YXRpb25FdmVudChjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5
cGUsIERldmljZU9yaWVudGF0aW9uRGF0YSopOwogCiAgICAgRXZlbnRJbnRlcmZhY2UgZXZlbnRJ
bnRlcmZhY2UoKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXgg
YTJlZGFiMWYzZjZhMDU0MDliNjQ5YTlmMzM4NjdkNDA0M2RiMzQ5NC4uNDQ1N2QxM2Y4MWVkYWY3
ZjIwYTg3MjE3M2VhNzFhMWE2ZjIwNTczMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC04
OTMsMTIgKzg5MywxMiBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBSZWY8SFRNTEVsZW1lbnQ+IGNy
ZWF0ZVVwZ3JhZGVDYW5kaWRhdGVFbGVtZW50KERvY3VtZW50JiBkbwogICAgIHJldHVybiBlbGVt
ZW50OwogfQogCi1zdGF0aWMgQUxXQVlTX0lOTElORSBSZWY8SFRNTEVsZW1lbnQ+IGNyZWF0ZVVw
Z3JhZGVDYW5kaWRhdGVFbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgQXRvbWljU3Ry
aW5nJiBsb2NhbE5hbWUpCitzdGF0aWMgQUxXQVlTX0lOTElORSBSZWY8SFRNTEVsZW1lbnQ+IGNy
ZWF0ZVVwZ3JhZGVDYW5kaWRhdGVFbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgQXRv
bVN0cmluZyYgbG9jYWxOYW1lKQogewogICAgIHJldHVybiBjcmVhdGVVcGdyYWRlQ2FuZGlkYXRl
RWxlbWVudChkb2N1bWVudCwgUXVhbGlmaWVkTmFtZSB7IG51bGxBdG9tKCksIGxvY2FsTmFtZSwg
eGh0bWxOYW1lc3BhY2VVUkkgfSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBpc1ZhbGlkSFRN
TEVsZW1lbnROYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lKQorc3RhdGljIGlubGlu
ZSBib29sIGlzVmFsaWRIVE1MRWxlbWVudE5hbWUoY29uc3QgQXRvbVN0cmluZyYgbG9jYWxOYW1l
KQogewogICAgIHJldHVybiBEb2N1bWVudDo6aXNWYWxpZE5hbWUobG9jYWxOYW1lKTsKIH0KQEAg
LTkyOSw3ICs5MjksNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPEVsZW1lbnQ+PiBjcmVhdGVI
VE1MRWxlbWVudFdpdGhOYW1lVmFsaWRhdGlvbihEb2N1bWVudCYgZAogICAgIHJldHVybiBSZWY8
RWxlbWVudD4geyBjcmVhdGVVcGdyYWRlQ2FuZGlkYXRlRWxlbWVudChkb2N1bWVudCwgbmFtZSkg
fTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPEVsZW1lbnQ+PiBEb2N1bWVudDo6Y3JlYXRlRWxlbWVu
dEZvckJpbmRpbmdzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKK0V4Y2VwdGlvbk9yPFJlZjxF
bGVtZW50Pj4gRG9jdW1lbnQ6OmNyZWF0ZUVsZW1lbnRGb3JCaW5kaW5ncyhjb25zdCBBdG9tU3Ry
aW5nJiBuYW1lKQogewogICAgIGlmIChpc0hUTUxEb2N1bWVudCgpKQogICAgICAgICByZXR1cm4g
Y3JlYXRlSFRNTEVsZW1lbnRXaXRoTmFtZVZhbGlkYXRpb24oKnRoaXMsIG5hbWUuY29udmVydFRv
QVNDSUlMb3dlcmNhc2UoKSk7CkBAIC0xMTc0LDcgKzExNzQsNyBAQCBzdGF0aWMgaW5saW5lIGJv
b2wgaXNQb3RlbnRpYWxDdXN0b21FbGVtZW50TmFtZUNoYXJhY3RlcihVQ2hhcjMyIGNoYXJhY3Rl
cikKICAgICByZXR1cm4gc3RkOjpiaW5hcnlfc2VhcmNoKHN0ZDo6YmVnaW4ocmFuZ2VzKSwgc3Rk
OjplbmQocmFuZ2VzKSwgY2hhcmFjdGVyKTsKIH0KIAotQ3VzdG9tRWxlbWVudE5hbWVWYWxpZGF0
aW9uU3RhdHVzIERvY3VtZW50Ojp2YWxpZGF0ZUN1c3RvbUVsZW1lbnROYW1lKGNvbnN0IEF0b21p
Y1N0cmluZyYgbG9jYWxOYW1lKQorQ3VzdG9tRWxlbWVudE5hbWVWYWxpZGF0aW9uU3RhdHVzIERv
Y3VtZW50Ojp2YWxpZGF0ZUN1c3RvbUVsZW1lbnROYW1lKGNvbnN0IEF0b21TdHJpbmcmIGxvY2Fs
TmFtZSkKIHsKICAgICBpZiAoIWlzQVNDSUlMb3dlcihsb2NhbE5hbWVbMF0pKQogICAgICAgICBy
ZXR1cm4gQ3VzdG9tRWxlbWVudE5hbWVWYWxpZGF0aW9uU3RhdHVzOjpGaXJzdENoYXJhY3Rlcklz
Tm90TG93ZXJjYXNlQVNDSUlMZXR0ZXI7CkBAIC0xMTk1LDcgKzExOTUsNyBAQCBDdXN0b21FbGVt
ZW50TmFtZVZhbGlkYXRpb25TdGF0dXMgRG9jdW1lbnQ6OnZhbGlkYXRlQ3VzdG9tRWxlbWVudE5h
bWUoY29uc3QgQXRvbQogI2lmIEVOQUJMRShNQVRITUwpCiAgICAgY29uc3QgYXV0byYgYW5ub3Rh
dGlvblhtbExvY2FsTmFtZSA9IE1hdGhNTE5hbWVzOjphbm5vdGF0aW9uX3htbFRhZy0+bG9jYWxO
YW1lKCk7CiAjZWxzZQotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJp
bmc+IGFubm90YXRpb25YbWxMb2NhbE5hbWUoImFubm90YXRpb24teG1sIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0
IEF0b21TdHJpbmc+IGFubm90YXRpb25YbWxMb2NhbE5hbWUoImFubm90YXRpb24teG1sIiwgQXRv
bVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogI2VuZGlmCiAKICAgICBpZiAobG9jYWxO
YW1lID09IFNWR05hbWVzOjpjb2xvcl9wcm9maWxlVGFnLT5sb2NhbE5hbWUoKQpAQCAtMTIxMSw3
ICsxMjExLDcgQEAgQ3VzdG9tRWxlbWVudE5hbWVWYWxpZGF0aW9uU3RhdHVzIERvY3VtZW50Ojp2
YWxpZGF0ZUN1c3RvbUVsZW1lbnROYW1lKGNvbnN0IEF0b20KICAgICByZXR1cm4gQ3VzdG9tRWxl
bWVudE5hbWVWYWxpZGF0aW9uU3RhdHVzOjpWYWxpZDsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPEVs
ZW1lbnQ+PiBEb2N1bWVudDo6Y3JlYXRlRWxlbWVudE5TKGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZXNwYWNlVVJJLCBjb25zdCBTdHJpbmcmIHF1YWxpZmllZE5hbWUpCitFeGNlcHRpb25PcjxSZWY8
RWxlbWVudD4+IERvY3VtZW50OjpjcmVhdGVFbGVtZW50TlMoY29uc3QgQXRvbVN0cmluZyYgbmFt
ZXNwYWNlVVJJLCBjb25zdCBTdHJpbmcmIHF1YWxpZmllZE5hbWUpCiB7CiAgICAgYXV0byBwYXJz
ZVJlc3VsdCA9IHBhcnNlUXVhbGlmaWVkTmFtZShuYW1lc3BhY2VVUkksIHF1YWxpZmllZE5hbWUp
OwogICAgIGlmIChwYXJzZVJlc3VsdC5oYXNFeGNlcHRpb24oKSkKQEAgLTEzNDAsNyArMTM0MCw3
IEBAIHZvaWQgRG9jdW1lbnQ6OnNldFZpc3VhbFVwZGF0ZXNBbGxvd2VkQnlDbGllbnQoYm9vbCB2
aXN1YWxVcGRhdGVzQWxsb3dlZEJ5Q2xpZW50CiAKIFN0cmluZyBEb2N1bWVudDo6Y2hhcmFjdGVy
U2V0V2l0aFVURjhGYWxsYmFjaygpIGNvbnN0CiB7Ci0gICAgQXRvbWljU3RyaW5nIG5hbWUgPSBl
bmNvZGluZygpOworICAgIEF0b21TdHJpbmcgbmFtZSA9IGVuY29kaW5nKCk7CiAgICAgaWYgKCFu
YW1lLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gbmFtZTsKICAgICByZXR1cm4gVVRGOEVuY29k
aW5nKCkuZG9tTmFtZSgpOwpAQCAtMjY5OCw3ICsyNjk4LDcgQEAgU2NyaXB0YWJsZURvY3VtZW50
UGFyc2VyKiBEb2N1bWVudDo6c2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKCkgY29uc3QKICAgICBy
ZXR1cm4gcGFyc2VyKCkgPyBwYXJzZXIoKS0+YXNTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIoKSA6
IG51bGxwdHI7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZlB0cjxXaW5kb3dQcm94eT4+IERvY3VtZW50
OjpvcGVuRm9yQmluZGluZ3MoRE9NV2luZG93JiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyYgZmly
c3RXaW5kb3csIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNv
bnN0IFN0cmluZyYgZmVhdHVyZXMpCitFeGNlcHRpb25PcjxSZWZQdHI8V2luZG93UHJveHk+PiBE
b2N1bWVudDo6b3BlbkZvckJpbmRpbmdzKERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBET01XaW5k
b3cmIGZpcnN0V2luZG93LCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgQXRvbVN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiBmZWF0dXJlcykKIHsKICAgICBpZiAoIW1fZG9tV2luZG93KQogICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yIH07CkBAIC0zMjIxLDEy
ICszMjIxLDEyIEBAIHZvaWQgRG9jdW1lbnQ6OnNldEJhc2VVUkxPdmVycmlkZShjb25zdCBVUkwm
IHVybCkKIHZvaWQgRG9jdW1lbnQ6OnByb2Nlc3NCYXNlRWxlbWVudCgpCiB7CiAgICAgLy8gRmlu
ZCB0aGUgZmlyc3QgaHJlZiBhdHRyaWJ1dGUgaW4gYSBiYXNlIGVsZW1lbnQgYW5kIHRoZSBmaXJz
dCB0YXJnZXQgYXR0cmlidXRlIGluIGEgYmFzZSBlbGVtZW50LgotICAgIGNvbnN0IEF0b21pY1N0
cmluZyogaHJlZiA9IG51bGxwdHI7Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nKiB0YXJnZXQgPSBu
dWxscHRyOworICAgIGNvbnN0IEF0b21TdHJpbmcqIGhyZWYgPSBudWxscHRyOworICAgIGNvbnN0
IEF0b21TdHJpbmcqIHRhcmdldCA9IG51bGxwdHI7CiAgICAgYXV0byBiYXNlRGVzY2VuZGFudHMg
PSBkZXNjZW5kYW50c09mVHlwZTxIVE1MQmFzZUVsZW1lbnQ+KCp0aGlzKTsKICAgICBmb3IgKGF1
dG8mIGJhc2UgOiBiYXNlRGVzY2VuZGFudHMpIHsKICAgICAgICAgaWYgKCFocmVmKSB7Ci0gICAg
ICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0gYmFzZS5hdHRyaWJ1dGVXaXRob3V0
U3luY2hyb25pemF0aW9uKGhyZWZBdHRyKTsKKyAgICAgICAgICAgIGNvbnN0IEF0b21TdHJpbmcm
IHZhbHVlID0gYmFzZS5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGhyZWZBdHRyKTsK
ICAgICAgICAgICAgIGlmICghdmFsdWUuaXNOdWxsKCkpIHsKICAgICAgICAgICAgICAgICBocmVm
ID0gJnZhbHVlOwogICAgICAgICAgICAgICAgIGlmICh0YXJnZXQpCkBAIC0zMjM0LDcgKzMyMzQs
NyBAQCB2b2lkIERvY3VtZW50Ojpwcm9jZXNzQmFzZUVsZW1lbnQoKQogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAgICAgICAgIGlmICghdGFyZ2V0KSB7Ci0gICAgICAgICAgICBjb25zdCBBdG9t
aWNTdHJpbmcmIHZhbHVlID0gYmFzZS5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHRh
cmdldEF0dHIpOworICAgICAgICAgICAgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUgPSBiYXNlLmF0
dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24odGFyZ2V0QXR0cik7CiAgICAgICAgICAgICBp
ZiAoIXZhbHVlLmlzTnVsbCgpKSB7CiAgICAgICAgICAgICAgICAgdGFyZ2V0ID0gJnZhbHVlOwog
ICAgICAgICAgICAgICAgIGlmIChocmVmKQpAQCAtNDU0NiwyNiArNDU0NiwyNiBAQCBEb2N1bWVu
dCYgRG9jdW1lbnQ6OmNvbnRleHREb2N1bWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIGNvbnN0X2Nh
c3Q8RG9jdW1lbnQmPigqdGhpcyk7CiB9CiAKLXZvaWQgRG9jdW1lbnQ6OnNldEF0dHJpYnV0ZUV2
ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlVmFsdWUs
IERPTVdyYXBwZXJXb3JsZCYgaXNvbGF0ZWRXb3JsZCkKK3ZvaWQgRG9jdW1lbnQ6OnNldEF0dHJp
YnV0ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBjb25zdCBBdG9tU3RyaW5nJiBhdHRyaWJ1dGVWYWx1
ZSwgRE9NV3JhcHBlcldvcmxkJiBpc29sYXRlZFdvcmxkKQogewogICAgIHNldEF0dHJpYnV0ZUV2
ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBKU0xhenlFdmVudExpc3RlbmVyOjpjcmVhdGUoKnRoaXMs
IGF0dHJpYnV0ZU5hbWUsIGF0dHJpYnV0ZVZhbHVlKSwgaXNvbGF0ZWRXb3JsZCk7CiB9CiAKLXZv
aWQgRG9jdW1lbnQ6OnNldFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBET01X
cmFwcGVyV29ybGQmIGlzb2xhdGVkV29ybGQpCit2b2lkIERvY3VtZW50OjpzZXRXaW5kb3dBdHRy
aWJ1dGVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2
ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIsIERPTVdyYXBwZXJXb3JsZCYgaXNvbGF0ZWRXb3JsZCkK
IHsKICAgICBpZiAoIW1fZG9tV2luZG93KQogICAgICAgICByZXR1cm47CiAgICAgbV9kb21XaW5k
b3ctPnNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBXVEZNb3ZlKGxpc3RlbmVy
KSwgaXNvbGF0ZWRXb3JsZCk7CiB9CiAKLXZvaWQgRG9jdW1lbnQ6OnNldFdpbmRvd0F0dHJpYnV0
ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlVmFs
dWUsIERPTVdyYXBwZXJXb3JsZCYgaXNvbGF0ZWRXb3JsZCkKK3ZvaWQgRG9jdW1lbnQ6OnNldFdp
bmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBjb25zdCBBdG9tU3RyaW5nJiBhdHRy
aWJ1dGVWYWx1ZSwgRE9NV3JhcHBlcldvcmxkJiBpc29sYXRlZFdvcmxkKQogewogICAgIGlmICgh
bV9kb21XaW5kb3cpCiAgICAgICAgIHJldHVybjsKICAgICBzZXRXaW5kb3dBdHRyaWJ1dGVFdmVu
dExpc3RlbmVyKGV2ZW50VHlwZSwgSlNMYXp5RXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKCptX2RvbVdp
bmRvdywgYXR0cmlidXRlTmFtZSwgYXR0cmlidXRlVmFsdWUpLCBpc29sYXRlZFdvcmxkKTsKIH0K
IAotRXZlbnRMaXN0ZW5lciogRG9jdW1lbnQ6OmdldFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVu
ZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIERPTVdyYXBwZXJXb3JsZCYgaXNvbGF0
ZWRXb3JsZCkKK0V2ZW50TGlzdGVuZXIqIERvY3VtZW50OjpnZXRXaW5kb3dBdHRyaWJ1dGVFdmVu
dExpc3RlbmVyKGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgRE9NV3JhcHBlcldvcmxkJiBp
c29sYXRlZFdvcmxkKQogewogICAgIGlmICghbV9kb21XaW5kb3cpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwpAQCAtNDcwNCw3ICs0NzA0LDcgQEAgYm9vbCBEb2N1bWVudDo6aGFzTGlzdGVuZXJU
eXBlRm9yRXZlbnRUeXBlKFBsYXRmb3JtRXZlbnQ6OlR5cGUgZXZlbnRUeXBlKSBjb25zdAogICAg
IH0KIH0KIAotdm9pZCBEb2N1bWVudDo6YWRkTGlzdGVuZXJUeXBlSWZOZWVkZWQoY29uc3QgQXRv
bWljU3RyaW5nJiBldmVudFR5cGUpCit2b2lkIERvY3VtZW50OjphZGRMaXN0ZW5lclR5cGVJZk5l
ZWRlZChjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUpCiB7CiAgICAgaWYgKGV2ZW50VHlwZSA9
PSBldmVudE5hbWVzKCkuRE9NU3VidHJlZU1vZGlmaWVkRXZlbnQpCiAgICAgICAgIGFkZExpc3Rl
bmVyVHlwZShET01TVUJUUkVFTU9ESUZJRURfTElTVEVORVIpOwpAQCAtNDk2Myw3ICs0OTYzLDcg
QEAgYm9vbCBEb2N1bWVudDo6aXNWYWxpZE5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIHJl
dHVybiBpc1ZhbGlkTmFtZU5vbkFTQ0lJKGNoYXJhY3RlcnMsIGxlbmd0aCk7CiB9CiAKLUV4Y2Vw
dGlvbk9yPHN0ZDo6cGFpcjxBdG9taWNTdHJpbmcsIEF0b21pY1N0cmluZz4+IERvY3VtZW50Ojpw
YXJzZVF1YWxpZmllZE5hbWUoY29uc3QgU3RyaW5nJiBxdWFsaWZpZWROYW1lKQorRXhjZXB0aW9u
T3I8c3RkOjpwYWlyPEF0b21TdHJpbmcsIEF0b21TdHJpbmc+PiBEb2N1bWVudDo6cGFyc2VRdWFs
aWZpZWROYW1lKGNvbnN0IFN0cmluZyYgcXVhbGlmaWVkTmFtZSkKIHsKICAgICB1bnNpZ25lZCBs
ZW5ndGggPSBxdWFsaWZpZWROYW1lLmxlbmd0aCgpOwogCkBAIC00OTk0LDE1ICs0OTk0LDE1IEBA
IEV4Y2VwdGlvbk9yPHN0ZDo6cGFpcjxBdG9taWNTdHJpbmcsIEF0b21pY1N0cmluZz4+IERvY3Vt
ZW50OjpwYXJzZVF1YWxpZmllZE5hbWUoCiAgICAgfQogCiAgICAgaWYgKCFzYXdDb2xvbikKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6cGFpcjxBdG9taWNTdHJpbmcsIEF0b21pY1N0cmluZz4geyB7IH0s
IHsgcXVhbGlmaWVkTmFtZSB9IH07CisgICAgICAgIHJldHVybiBzdGQ6OnBhaXI8QXRvbVN0cmlu
ZywgQXRvbVN0cmluZz4geyB7IH0sIHsgcXVhbGlmaWVkTmFtZSB9IH07CiAKICAgICBpZiAoIWNv
bG9uUG9zaXRpb24gfHwgbGVuZ3RoIC0gY29sb25Qb3NpdGlvbiA8PSAxKQogICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgSW52YWxpZENoYXJhY3RlckVycm9yIH07CiAKLSAgICByZXR1cm4gc3Rk
OjpwYWlyPEF0b21pY1N0cmluZywgQXRvbWljU3RyaW5nPiB7IFN0cmluZ1ZpZXcgeyBxdWFsaWZp
ZWROYW1lIH0uc3Vic3RyaW5nKDAsIGNvbG9uUG9zaXRpb24pLnRvQXRvbWljU3RyaW5nKCksIFN0
cmluZ1ZpZXcgeyBxdWFsaWZpZWROYW1lIH0uc3Vic3RyaW5nKGNvbG9uUG9zaXRpb24gKyAxKS50
b0F0b21pY1N0cmluZygpIH07CisgICAgcmV0dXJuIHN0ZDo6cGFpcjxBdG9tU3RyaW5nLCBBdG9t
U3RyaW5nPiB7IFN0cmluZ1ZpZXcgeyBxdWFsaWZpZWROYW1lIH0uc3Vic3RyaW5nKDAsIGNvbG9u
UG9zaXRpb24pLnRvQXRvbVN0cmluZygpLCBTdHJpbmdWaWV3IHsgcXVhbGlmaWVkTmFtZSB9LnN1
YnN0cmluZyhjb2xvblBvc2l0aW9uICsgMSkudG9BdG9tU3RyaW5nKCkgfTsKIH0KIAotRXhjZXB0
aW9uT3I8UXVhbGlmaWVkTmFtZT4gRG9jdW1lbnQ6OnBhcnNlUXVhbGlmaWVkTmFtZShjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgU3RyaW5nJiBxdWFsaWZpZWROYW1lKQor
RXhjZXB0aW9uT3I8UXVhbGlmaWVkTmFtZT4gRG9jdW1lbnQ6OnBhcnNlUXVhbGlmaWVkTmFtZShj
b25zdCBBdG9tU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IFN0cmluZyYgcXVhbGlmaWVkTmFt
ZSkKIHsKICAgICBhdXRvIHBhcnNlUmVzdWx0ID0gcGFyc2VRdWFsaWZpZWROYW1lKHF1YWxpZmll
ZE5hbWUpOwogICAgIGlmIChwYXJzZVJlc3VsdC5oYXNFeGNlcHRpb24oKSkKQEAgLTU1MjIsNyAr
NTUyMiw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxBdHRyPj4gRG9jdW1lbnQ6OmNyZWF0ZUF0dHJpYnV0
ZShjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgcmV0dXJuIGNyZWF0ZUF0dHJpYnV0ZU5TKHsgfSwg
aXNIVE1MRG9jdW1lbnQoKSA/IG5hbWUuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSA6IG5hbWUs
IHRydWUpOwogfQogCi1FeGNlcHRpb25PcjxSZWY8QXR0cj4+IERvY3VtZW50OjpjcmVhdGVBdHRy
aWJ1dGVOUyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgU3RyaW5nJiBx
dWFsaWZpZWROYW1lLCBib29sIHNob3VsZElnbm9yZU5hbWVzcGFjZUNoZWNrcykKK0V4Y2VwdGlv
bk9yPFJlZjxBdHRyPj4gRG9jdW1lbnQ6OmNyZWF0ZUF0dHJpYnV0ZU5TKGNvbnN0IEF0b21TdHJp
bmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgU3RyaW5nJiBxdWFsaWZpZWROYW1lLCBib29sIHNob3Vs
ZElnbm9yZU5hbWVzcGFjZUNoZWNrcykKIHsKICAgICBhdXRvIHBhcnNlUmVzdWx0ID0gcGFyc2VR
dWFsaWZpZWROYW1lKG5hbWVzcGFjZVVSSSwgcXVhbGlmaWVkTmFtZSk7CiAgICAgaWYgKHBhcnNl
UmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQpAQCAtNTYxNCwxNyArNTYxNCwxNyBAQCBSZWY8SFRNTENv
bGxlY3Rpb24+IERvY3VtZW50OjphbGwoKQogICAgIHJldHVybiBlbnN1cmVSYXJlRGF0YSgpLmVu
c3VyZU5vZGVMaXN0cygpLmFkZENhY2hlZENvbGxlY3Rpb248SFRNTEFsbENvbGxlY3Rpb24+KCp0
aGlzLCBEb2NBbGwpOwogfQogCi1SZWY8SFRNTENvbGxlY3Rpb24+IERvY3VtZW50OjphbGxGaWx0
ZXJlZEJ5TmFtZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCitSZWY8SFRNTENvbGxlY3Rpb24+
IERvY3VtZW50OjphbGxGaWx0ZXJlZEJ5TmFtZShjb25zdCBBdG9tU3RyaW5nJiBuYW1lKQogewog
ICAgIHJldHVybiBlbnN1cmVSYXJlRGF0YSgpLmVuc3VyZU5vZGVMaXN0cygpLmFkZENhY2hlZENv
bGxlY3Rpb248SFRNTEFsbE5hbWVkU3ViQ29sbGVjdGlvbj4oKnRoaXMsIERvY3VtZW50QWxsTmFt
ZWRJdGVtcywgbmFtZSk7CiB9CiAKLVJlZjxIVE1MQ29sbGVjdGlvbj4gRG9jdW1lbnQ6OndpbmRv
d05hbWVkSXRlbXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQorUmVmPEhUTUxDb2xsZWN0aW9u
PiBEb2N1bWVudDo6d2luZG93TmFtZWRJdGVtcyhjb25zdCBBdG9tU3RyaW5nJiBuYW1lKQogewog
ICAgIHJldHVybiBlbnN1cmVSYXJlRGF0YSgpLmVuc3VyZU5vZGVMaXN0cygpLmFkZENhY2hlZENv
bGxlY3Rpb248V2luZG93TmFtZUNvbGxlY3Rpb24+KCp0aGlzLCBXaW5kb3dOYW1lZEl0ZW1zLCBu
YW1lKTsKIH0KIAotUmVmPEhUTUxDb2xsZWN0aW9uPiBEb2N1bWVudDo6ZG9jdW1lbnROYW1lZEl0
ZW1zKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKK1JlZjxIVE1MQ29sbGVjdGlvbj4gRG9jdW1l
bnQ6OmRvY3VtZW50TmFtZWRJdGVtcyhjb25zdCBBdG9tU3RyaW5nJiBuYW1lKQogewogICAgIHJl
dHVybiBlbnN1cmVSYXJlRGF0YSgpLmVuc3VyZU5vZGVMaXN0cygpLmFkZENhY2hlZENvbGxlY3Rp
b248RG9jdW1lbnROYW1lQ29sbGVjdGlvbj4oKnRoaXMsIERvY3VtZW50TmFtZWRJdGVtcywgbmFt
ZSk7CiB9CkBAIC02ODM5LDkgKzY4MzksOSBAQCBib29sIERvY3VtZW50OjpoYXZlU3R5bGVzaGVl
dHNMb2FkZWQoKSBjb25zdAogICAgIHJldHVybiAhc3R5bGVTY29wZSgpLmhhc1BlbmRpbmdTaGVl
dHMoKSB8fCBtX2lnbm9yZVBlbmRpbmdTdHlsZXNoZWV0czsKIH0KIAotTG9jYWxlJiBEb2N1bWVu
dDo6Z2V0Q2FjaGVkTG9jYWxlKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlKQorTG9jYWxlJiBE
b2N1bWVudDo6Z2V0Q2FjaGVkTG9jYWxlKGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsZSkKIHsKLSAg
ICBBdG9taWNTdHJpbmcgbG9jYWxlS2V5ID0gbG9jYWxlOworICAgIEF0b21TdHJpbmcgbG9jYWxl
S2V5ID0gbG9jYWxlOwogICAgIGlmIChsb2NhbGUuaXNFbXB0eSgpIHx8ICFzZXR0aW5ncygpLmxh
bmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFibGVkKCkpCiAgICAgICAgIGxvY2FsZUtl
eSA9IGRlZmF1bHRMYW5ndWFnZSgpOwogICAgIExvY2FsZUlkZW50aWZpZXJUb0xvY2FsZU1hcDo6
QWRkUmVzdWx0IHJlc3VsdCA9IG1fbG9jYWxlQ2FjaGUuYWRkKGxvY2FsZUtleSwgbnVsbHB0cik7
CkBAIC03NTY2LDcgKzc1NjYsNyBAQCB2b2lkIERvY3VtZW50Ojp1cGRhdGVSZXNpemVPYnNlcnZh
dGlvbnMoUGFnZSYgcGFnZSkKIH0KICNlbmRpZgogCi1jb25zdCBBdG9taWNTdHJpbmcmIERvY3Vt
ZW50OjpkaXIoKSBjb25zdAorY29uc3QgQXRvbVN0cmluZyYgRG9jdW1lbnQ6OmRpcigpIGNvbnN0
CiB7CiAgICAgYXV0byogZG9jdW1lbnRFbGVtZW50ID0gdGhpcy0+ZG9jdW1lbnRFbGVtZW50KCk7
CiAgICAgaWYgKCFpczxIVE1MSHRtbEVsZW1lbnQ+KGRvY3VtZW50RWxlbWVudCkpCkBAIC03NTc0
LDcgKzc1NzQsNyBAQCBjb25zdCBBdG9taWNTdHJpbmcmIERvY3VtZW50OjpkaXIoKSBjb25zdAog
ICAgIHJldHVybiBkb3duY2FzdDxIVE1MSHRtbEVsZW1lbnQ+KCpkb2N1bWVudEVsZW1lbnQpLmRp
cigpOwogfQogCi12b2lkIERvY3VtZW50OjpzZXREaXIoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1
ZSkKK3ZvaWQgRG9jdW1lbnQ6OnNldERpcihjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKIHsKICAg
ICBhdXRvKiBkb2N1bWVudEVsZW1lbnQgPSB0aGlzLT5kb2N1bWVudEVsZW1lbnQoKTsKICAgICBp
ZiAoaXM8SFRNTEh0bWxFbGVtZW50Pihkb2N1bWVudEVsZW1lbnQpKQpAQCAtNzY2OCw3ICs3NjY4
LDcgQEAgdm9pZCBEb2N1bWVudDo6Zm9yRWFjaEFwcGxpY2F0aW9uU3RhdGVDaGFuZ2VMaXN0ZW5l
cihjb25zdCBGdW5jdGlvbjx2b2lkKEFwcGxpY2EKICAgICAgICAgZnVuY3RvcigqbGlzdGVuZXIp
OwogfQogCi1jb25zdCBBdG9taWNTdHJpbmcmIERvY3VtZW50OjpiZ0NvbG9yKCkgY29uc3QKK2Nv
bnN0IEF0b21TdHJpbmcmIERvY3VtZW50OjpiZ0NvbG9yKCkgY29uc3QKIHsKICAgICBhdXRvKiBi
b2R5RWxlbWVudCA9IGJvZHkoKTsKICAgICBpZiAoIWJvZHlFbGVtZW50KQpAQCAtNzY4Miw3ICs3
NjgyLDcgQEAgdm9pZCBEb2N1bWVudDo6c2V0QmdDb2xvcihjb25zdCBTdHJpbmcmIHZhbHVlKQog
ICAgICAgICBib2R5RWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihi
Z2NvbG9yQXR0ciwgdmFsdWUpOwogfQogCi1jb25zdCBBdG9taWNTdHJpbmcmIERvY3VtZW50Ojpm
Z0NvbG9yKCkgY29uc3QKK2NvbnN0IEF0b21TdHJpbmcmIERvY3VtZW50OjpmZ0NvbG9yKCkgY29u
c3QKIHsKICAgICBhdXRvKiBib2R5RWxlbWVudCA9IGJvZHkoKTsKICAgICBpZiAoIWJvZHlFbGVt
ZW50KQpAQCAtNzY5Niw3ICs3Njk2LDcgQEAgdm9pZCBEb2N1bWVudDo6c2V0RmdDb2xvcihjb25z
dCBTdHJpbmcmIHZhbHVlKQogICAgICAgICBib2R5RWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91
dFN5bmNocm9uaXphdGlvbih0ZXh0QXR0ciwgdmFsdWUpOwogfQogCi1jb25zdCBBdG9taWNTdHJp
bmcmIERvY3VtZW50OjphbGlua0NvbG9yKCkgY29uc3QKK2NvbnN0IEF0b21TdHJpbmcmIERvY3Vt
ZW50OjphbGlua0NvbG9yKCkgY29uc3QKIHsKICAgICBhdXRvKiBib2R5RWxlbWVudCA9IGJvZHko
KTsKICAgICBpZiAoIWJvZHlFbGVtZW50KQpAQCAtNzcxMCw3ICs3NzEwLDcgQEAgdm9pZCBEb2N1
bWVudDo6c2V0QWxpbmtDb2xvcihjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgICAgICBib2R5RWxl
bWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihhbGlua0F0dHIsIHZhbHVl
KTsKIH0KIAotY29uc3QgQXRvbWljU3RyaW5nJiBEb2N1bWVudDo6bGlua0NvbG9yRm9yQmluZGlu
Z3MoKSBjb25zdAorY29uc3QgQXRvbVN0cmluZyYgRG9jdW1lbnQ6OmxpbmtDb2xvckZvckJpbmRp
bmdzKCkgY29uc3QKIHsKICAgICBhdXRvKiBib2R5RWxlbWVudCA9IGJvZHkoKTsKICAgICBpZiAo
IWJvZHlFbGVtZW50KQpAQCAtNzcyNCw3ICs3NzI0LDcgQEAgdm9pZCBEb2N1bWVudDo6c2V0TGlu
a0NvbG9yRm9yQmluZGluZ3MoY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICAgICAgYm9keUVsZW1l
bnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24obGlua0F0dHIsIHZhbHVlKTsK
IH0KIAotY29uc3QgQXRvbWljU3RyaW5nJiBEb2N1bWVudDo6dmxpbmtDb2xvcigpIGNvbnN0Citj
b25zdCBBdG9tU3RyaW5nJiBEb2N1bWVudDo6dmxpbmtDb2xvcigpIGNvbnN0CiB7CiAgICAgYXV0
byogYm9keUVsZW1lbnQgPSBib2R5KCk7CiAgICAgaWYgKCFib2R5RWxlbWVudCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmgKaW5kZXggMWI2ZmFmZDEyYWYzZGU3Y2MwMTI1MDhiMDhkYTIxNWZkMDNjNWFlZC4u
NWJhNzQ5NjYwMWJiODc3YjJiNTVkOTdkNjcyNWNkOWU3OTgyNjBmZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmgKQEAgLTY5LDcgKzY5LDcgQEAKICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5j
bHVkZSA8d3RmL1dlYWtIYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KLSNpbmNs
dWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRv
bVN0cmluZ0hhc2guaD4KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW5jbHVkZSAiRXZl
bnRUcmFja2luZ1JlZ2lvbnMuaCIKQEAgLTQyOSwxOSArNDI5LDE5IEBAIHB1YmxpYzoKIAogICAg
IGJvb2wgaGFzTWFuaWZlc3QoKSBjb25zdDsKICAgICAKLSAgICBXRUJDT1JFX0VYUE9SVCBFeGNl
cHRpb25PcjxSZWY8RWxlbWVudD4+IGNyZWF0ZUVsZW1lbnRGb3JCaW5kaW5ncyhjb25zdCBBdG9t
aWNTdHJpbmcmIHRhZ05hbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPFJlZjxF
bGVtZW50Pj4gY3JlYXRlRWxlbWVudEZvckJpbmRpbmdzKGNvbnN0IEF0b21TdHJpbmcmIHRhZ05h
bWUpOwogICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVEb2N1
bWVudEZyYWdtZW50KCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgUmVmPFRleHQ+IGNyZWF0ZVRleHRO
b2RlKGNvbnN0IFN0cmluZyYgZGF0YSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgUmVmPENvbW1lbnQ+
IGNyZWF0ZUNvbW1lbnQoY29uc3QgU3RyaW5nJiBkYXRhKTsKICAgICBXRUJDT1JFX0VYUE9SVCBF
eGNlcHRpb25PcjxSZWY8Q0RBVEFTZWN0aW9uPj4gY3JlYXRlQ0RBVEFTZWN0aW9uKGNvbnN0IFN0
cmluZyYgZGF0YSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8UmVmPFByb2Nlc3Np
bmdJbnN0cnVjdGlvbj4+IGNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbihjb25zdCBTdHJpbmcm
IHRhcmdldCwgY29uc3QgU3RyaW5nJiBkYXRhKTsKICAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRp
b25PcjxSZWY8QXR0cj4+IGNyZWF0ZUF0dHJpYnV0ZShjb25zdCBTdHJpbmcmIG5hbWUpOwotICAg
IFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPFJlZjxBdHRyPj4gY3JlYXRlQXR0cmlidXRlTlMo
Y29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IFN0cmluZyYgcXVhbGlmaWVk
TmFtZSwgYm9vbCBzaG91bGRJZ25vcmVOYW1lc3BhY2VDaGVja3MgPSBmYWxzZSk7CisgICAgV0VC
Q09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8UmVmPEF0dHI+PiBjcmVhdGVBdHRyaWJ1dGVOUyhjb25z
dCBBdG9tU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IFN0cmluZyYgcXVhbGlmaWVkTmFtZSwg
Ym9vbCBzaG91bGRJZ25vcmVOYW1lc3BhY2VDaGVja3MgPSBmYWxzZSk7CiAgICAgV0VCQ09SRV9F
WFBPUlQgRXhjZXB0aW9uT3I8UmVmPE5vZGU+PiBpbXBvcnROb2RlKE5vZGUmIG5vZGVUb0ltcG9y
dCwgYm9vbCBkZWVwKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25PcjxSZWY8RWxlbWVu
dD4+IGNyZWF0ZUVsZW1lbnROUyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29u
c3QgU3RyaW5nJiBxdWFsaWZpZWROYW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25P
cjxSZWY8RWxlbWVudD4+IGNyZWF0ZUVsZW1lbnROUyhjb25zdCBBdG9tU3RyaW5nJiBuYW1lc3Bh
Y2VVUkksIGNvbnN0IFN0cmluZyYgcXVhbGlmaWVkTmFtZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQg
UmVmPEVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGJvb2wgY3Jl
YXRlZEJ5UGFyc2VyKTsKIAotICAgIHN0YXRpYyBDdXN0b21FbGVtZW50TmFtZVZhbGlkYXRpb25T
dGF0dXMgdmFsaWRhdGVDdXN0b21FbGVtZW50TmFtZShjb25zdCBBdG9taWNTdHJpbmcmKTsKKyAg
ICBzdGF0aWMgQ3VzdG9tRWxlbWVudE5hbWVWYWxpZGF0aW9uU3RhdHVzIHZhbGlkYXRlQ3VzdG9t
RWxlbWVudE5hbWUoY29uc3QgQXRvbVN0cmluZyYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgUmVm
UHRyPFJhbmdlPiBjYXJldFJhbmdlRnJvbVBvaW50KGludCB4LCBpbnQgeSk7CiAgICAgUmVmUHRy
PFJhbmdlPiBjYXJldFJhbmdlRnJvbVBvaW50KGNvbnN0IExheW91dFBvaW50JiBjbGllbnRQb2lu
dCk7CkBAIC00NTgsNyArNDU4LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmlu
ZyBjaGFyYWN0ZXJTZXRXaXRoVVRGOEZhbGxiYWNrKCkgY29uc3Q7CiAgICAgVGV4dEVuY29kaW5n
IHRleHRFbmNvZGluZygpIGNvbnN0OwogCi0gICAgQXRvbWljU3RyaW5nIGVuY29kaW5nKCkgY29u
c3QgeyByZXR1cm4gdGV4dEVuY29kaW5nKCkuZG9tTmFtZSgpOyB9CisgICAgQXRvbVN0cmluZyBl
bmNvZGluZygpIGNvbnN0IHsgcmV0dXJuIHRleHRFbmNvZGluZygpLmRvbU5hbWUoKTsgfQogCiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDaGFyc2V0KGNvbnN0IFN0cmluZyYpOyAvLyBVc2Vk
IGJ5IE9iakMgLyBHT0JqZWN0IGJpbmRpbmdzIG9ubHkuCiAKQEAgLTUwNSwxMCArNTA1LDEwIEBA
IHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBSZWY8SFRNTENvbGxlY3Rpb24+IGFuY2hvcnMo
KTsKICAgICBXRUJDT1JFX0VYUE9SVCBSZWY8SFRNTENvbGxlY3Rpb24+IHNjcmlwdHMoKTsKICAg
ICBSZWY8SFRNTENvbGxlY3Rpb24+IGFsbCgpOwotICAgIFJlZjxIVE1MQ29sbGVjdGlvbj4gYWxs
RmlsdGVyZWRCeU5hbWUoY29uc3QgQXRvbWljU3RyaW5nJik7CisgICAgUmVmPEhUTUxDb2xsZWN0
aW9uPiBhbGxGaWx0ZXJlZEJ5TmFtZShjb25zdCBBdG9tU3RyaW5nJik7CiAKLSAgICBSZWY8SFRN
TENvbGxlY3Rpb24+IHdpbmRvd05hbWVkSXRlbXMoY29uc3QgQXRvbWljU3RyaW5nJik7Ci0gICAg
UmVmPEhUTUxDb2xsZWN0aW9uPiBkb2N1bWVudE5hbWVkSXRlbXMoY29uc3QgQXRvbWljU3RyaW5n
Jik7CisgICAgUmVmPEhUTUxDb2xsZWN0aW9uPiB3aW5kb3dOYW1lZEl0ZW1zKGNvbnN0IEF0b21T
dHJpbmcmKTsKKyAgICBSZWY8SFRNTENvbGxlY3Rpb24+IGRvY3VtZW50TmFtZWRJdGVtcyhjb25z
dCBBdG9tU3RyaW5nJik7CiAKICAgICAvLyBPdGhlciBtZXRob2RzIChub3QgcGFydCBvZiBET00p
CiAgICAgYm9vbCBpc1N5bnRoZXNpemVkKCkgY29uc3QgeyByZXR1cm4gbV9pc1N5bnRoZXNpemVk
OyB9CkBAIC02MzgsNyArNjM4LDcgQEAgcHVibGljOgogICAgIAogICAgIFdFQkNPUkVfRVhQT1JU
IERvY3VtZW50TG9hZGVyKiBsb2FkZXIoKSBjb25zdDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIEV4
Y2VwdGlvbk9yPFJlZlB0cjxXaW5kb3dQcm94eT4+IG9wZW5Gb3JCaW5kaW5ncyhET01XaW5kb3cm
IGFjdGl2ZVdpbmRvdywgRE9NV2luZG93JiBmaXJzdERPTVdpbmRvdywgY29uc3QgU3RyaW5nJiB1
cmwsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBmZWF0dXJlcyk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8UmVmUHRyPFdpbmRvd1Byb3h5Pj4gb3BlbkZv
ckJpbmRpbmdzKERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBET01XaW5kb3cmIGZpcnN0RE9NV2lu
ZG93LCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgQXRvbVN0cmluZyYgbmFtZSwgY29uc3QgU3Ry
aW5nJiBmZWF0dXJlcyk7CiAgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8RG9jdW1lbnQm
PiBvcGVuRm9yQmluZGluZ3MoRG9jdW1lbnQqIHJlc3BvbnNpYmxlRG9jdW1lbnQsIGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYpOwogCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCByZW5hbWUg
dGhpcyBhdCBzb21lIHBvaW50IGFuZCBnaXZlIGJhY2sgdGhlIG5hbWUgJ29wZW4nIHRvIHRoZSBI
VE1MIHNwZWNpZmllZCBvbmVzLgpAQCAtODIzLDkgKzgyMyw5IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldENvbnRleHREb2N1bWVudChEb2N1bWVudCYgZG9jdW1lbnQpIHsgbV9jb250ZXh0RG9jdW1l
bnQgPSBtYWtlV2Vha1B0cihkb2N1bWVudCk7IH0KIAogICAgIC8vIEhlbHBlciBmdW5jdGlvbnMg
Zm9yIGZvcndhcmRpbmcgRE9NV2luZG93IGV2ZW50IHJlbGF0ZWQgdGFza3MgdG8gdGhlIERPTVdp
bmRvdyBpZiBpdCBleGlzdHMuCi0gICAgdm9pZCBzZXRXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3Rl
bmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyaWJ1dGVOYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlLCBET01XcmFwcGVyV29ybGQm
KTsKLSAgICB2b2lkIHNldFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmLCBET01XcmFwcGVyV29y
bGQmKTsKLSAgICBFdmVudExpc3RlbmVyKiBnZXRXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVy
KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBET01XcmFwcGVyV29ybGQmKTsKKyAgICB2
b2lkIHNldFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbVN0cmluZyYgZXZl
bnRUeXBlLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBjb25zdCBBdG9tU3Ry
aW5nJiB2YWx1ZSwgRE9NV3JhcHBlcldvcmxkJik7CisgICAgdm9pZCBzZXRXaW5kb3dBdHRyaWJ1
dGVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50
TGlzdGVuZXI+JiYsIERPTVdyYXBwZXJXb3JsZCYpOworICAgIEV2ZW50TGlzdGVuZXIqIGdldFdp
bmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBE
T01XcmFwcGVyV29ybGQmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpc3BhdGNoV2luZG93
RXZlbnQoRXZlbnQmLCBFdmVudFRhcmdldCogPSBudWxscHRyKTsKICAgICB2b2lkIGRpc3BhdGNo
V2luZG93TG9hZEV2ZW50KCk7CiAKQEAgLTg1Niw3ICs4NTYsNyBAQCBwdWJsaWM6CiAKICAgICBi
b29sIGhhc0xpc3RlbmVyVHlwZShMaXN0ZW5lclR5cGUgbGlzdGVuZXJUeXBlKSBjb25zdCB7IHJl
dHVybiAobV9saXN0ZW5lclR5cGVzICYgbGlzdGVuZXJUeXBlKTsgfQogICAgIGJvb2wgaGFzTGlz
dGVuZXJUeXBlRm9yRXZlbnRUeXBlKFBsYXRmb3JtRXZlbnQ6OlR5cGUpIGNvbnN0OwotICAgIHZv
aWQgYWRkTGlzdGVuZXJUeXBlSWZOZWVkZWQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUp
OworICAgIHZvaWQgYWRkTGlzdGVuZXJUeXBlSWZOZWVkZWQoY29uc3QgQXRvbVN0cmluZyYgZXZl
bnRUeXBlKTsKIAogICAgIGJvb2wgaGFzTXV0YXRpb25PYnNlcnZlcnNPZlR5cGUoTXV0YXRpb25P
YnNlcnZlcjo6TXV0YXRpb25UeXBlIHR5cGUpIGNvbnN0CiAgICAgewpAQCAtODk5LDggKzg5OSw4
IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIHRpdGxlKCkgY29uc3QgeyByZXR1cm4gbV90
aXRsZS5zdHJpbmc7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFRpdGxlKGNvbnN0IFN0
cmluZyYpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgQXRvbWljU3RyaW5nJiBkaXIoKSBj
b25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldERpcihjb25zdCBBdG9taWNTdHJpbmcm
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBBdG9tU3RyaW5nJiBkaXIoKSBjb25zdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldERpcihjb25zdCBBdG9tU3RyaW5nJik7CiAKICAgICB2
b2lkIHRpdGxlRWxlbWVudEFkZGVkKEVsZW1lbnQmIHRpdGxlRWxlbWVudCk7CiAgICAgdm9pZCB0
aXRsZUVsZW1lbnRSZW1vdmVkKEVsZW1lbnQmIHRpdGxlRWxlbWVudCk7CkBAIC05NjIsOCArOTYy
LDggQEAgcHVibGljOgogCiAgICAgLy8gVGhlIGZvbGxvd2luZyBicmVha3MgYSBxdWFsaWZpZWQg
bmFtZSBpbnRvIGEgcHJlZml4IGFuZCBhIGxvY2FsIG5hbWUuCiAgICAgLy8gSXQgYWxzbyBkb2Vz
IGEgdmFsaWRpdHkgY2hlY2ssIGFuZCByZXR1cm5zIGFuIGVycm9yIGlmIHRoZSBxdWFsaWZpZWQg
bmFtZSBpcyBpbnZhbGlkLgotICAgIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnBhaXI8QXRvbWlj
U3RyaW5nLCBBdG9taWNTdHJpbmc+PiBwYXJzZVF1YWxpZmllZE5hbWUoY29uc3QgU3RyaW5nJiBx
dWFsaWZpZWROYW1lKTsKLSAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UXVhbGlmaWVkTmFtZT4gcGFy
c2VRdWFsaWZpZWROYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBT
dHJpbmcmIHF1YWxpZmllZE5hbWUpOworICAgIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnBhaXI8
QXRvbVN0cmluZywgQXRvbVN0cmluZz4+IHBhcnNlUXVhbGlmaWVkTmFtZShjb25zdCBTdHJpbmcm
IHF1YWxpZmllZE5hbWUpOworICAgIHN0YXRpYyBFeGNlcHRpb25PcjxRdWFsaWZpZWROYW1lPiBw
YXJzZVF1YWxpZmllZE5hbWUoY29uc3QgQXRvbVN0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBT
dHJpbmcmIHF1YWxpZmllZE5hbWUpOwogCiAgICAgLy8gQ2hlY2tzIHRvIG1ha2Ugc3VyZSBwcmVm
aXggYW5kIG5hbWVzcGFjZSBkbyBub3QgY29uZmxpY3QgKHBlciBET00gQ29yZSAzKQogICAgIHN0
YXRpYyBib29sIGhhc1ZhbGlkTmFtZXNwYWNlRm9yRWxlbWVudHMoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpOwpAQCAtMTI5Nyw3ICsxMjk3LDcgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlVGV4dFJl
bmRlcmVyKFRleHQmLCB1bnNpZ25lZCBvZmZzZXRPZlJlcGxhY2VkVGV4dCwgdW5zaWduZWQgbGVu
Z3RoT2ZSZXBsYWNlZFRleHQpOwogCiAgICAgLy8gUmV0dXJuIGEgTG9jYWxlIGZvciB0aGUgZGVm
YXVsdCBsb2NhbGUgaWYgdGhlIGFyZ3VtZW50IGlzIG51bGwgb3IgZW1wdHkuCi0gICAgTG9jYWxl
JiBnZXRDYWNoZWRMb2NhbGUoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUgPSBudWxsQXRvbSgp
KTsKKyAgICBMb2NhbGUmIGdldENhY2hlZExvY2FsZShjb25zdCBBdG9tU3RyaW5nJiBsb2NhbGUg
PSBudWxsQXRvbSgpKTsKIAogICAgIGNvbnN0IERvY3VtZW50KiB0ZW1wbGF0ZURvY3VtZW50KCkg
Y29uc3Q7CiAgICAgRG9jdW1lbnQmIGVuc3VyZVRlbXBsYXRlRG9jdW1lbnQoKTsKQEAgLTE0MTMs
NyArMTQxMyw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgdXNpbmcgQ29udGFpbmVyTm9kZTo6
c2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcjsKLSAgICB2b2lkIHNldEF0dHJpYnV0ZUV2ZW50TGlz
dGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJpYnV0ZU5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUsIERPTVdyYXBwZXJXb3Js
ZCYgaXNvbGF0ZWRXb3JsZCk7CisgICAgdm9pZCBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGNv
bnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRl
TmFtZSwgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUsIERPTVdyYXBwZXJXb3JsZCYgaXNvbGF0ZWRX
b3JsZCk7CiAKICAgICBET01TZWxlY3Rpb24qIGdldFNlbGVjdGlvbigpOwogCkBAIC0xNDI5LDE1
ICsxNDI5LDE1IEBAIHB1YmxpYzoKICAgICB2b2lkIG9yaWVudGF0aW9uQ2hhbmdlZChpbnQgb3Jp
ZW50YXRpb24pOwogICAgIE9yaWVudGF0aW9uTm90aWZpZXImIG9yaWVudGF0aW9uTm90aWZpZXIo
KSB7IHJldHVybiBtX29yaWVudGF0aW9uTm90aWZpZXI7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JU
IGNvbnN0IEF0b21pY1N0cmluZyYgYmdDb2xvcigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
IGNvbnN0IEF0b21TdHJpbmcmIGJnQ29sb3IoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldEJnQ29sb3IoY29uc3QgU3RyaW5nJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgY29uc3Qg
QXRvbWljU3RyaW5nJiBmZ0NvbG9yKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3Qg
QXRvbVN0cmluZyYgZmdDb2xvcigpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
RmdDb2xvcihjb25zdCBTdHJpbmcmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBBdG9taWNT
dHJpbmcmIGFsaW5rQ29sb3IoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBBdG9t
U3RyaW5nJiBhbGlua0NvbG9yKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRB
bGlua0NvbG9yKGNvbnN0IFN0cmluZyYpOwotICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IEF0b21p
Y1N0cmluZyYgbGlua0NvbG9yRm9yQmluZGluZ3MoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBjb25zdCBBdG9tU3RyaW5nJiBsaW5rQ29sb3JGb3JCaW5kaW5ncygpIGNvbnN0OwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0TGlua0NvbG9yRm9yQmluZGluZ3MoY29uc3QgU3RyaW5nJik7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgQXRvbWljU3RyaW5nJiB2bGlua0NvbG9yKCkgY29u
c3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgQXRvbVN0cmluZyYgdmxpbmtDb2xvcigpIGNv
bnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VmxpbmtDb2xvcihjb25zdCBTdHJpbmcm
KTsKIAogICAgIC8vIFBlciBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9v
YnNvbGV0ZS5odG1sI2RvbS1kb2N1bWVudC1jbGVhciwgdGhpcyBtZXRob2QgZG9lcyBub3RoaW5n
LgpAQCAtMTg1Niw3ICsxODU2LDcgQEAgcHJpdmF0ZToKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxE
b2N1bWVudFNoYXJlZE9iamVjdFBvb2w+IG1fc2hhcmVkT2JqZWN0UG9vbDsKIAotICAgIHR5cGVk
ZWYgSGFzaE1hcDxBdG9taWNTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxMb2NhbGU+PiBMb2NhbGVJ
ZGVudGlmaWVyVG9Mb2NhbGVNYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPEF0b21TdHJpbmcsIHN0
ZDo6dW5pcXVlX3B0cjxMb2NhbGU+PiBMb2NhbGVJZGVudGlmaWVyVG9Mb2NhbGVNYXA7CiAgICAg
TG9jYWxlSWRlbnRpZmllclRvTG9jYWxlTWFwIG1fbG9jYWxlQ2FjaGU7CiAKICAgICBSZWZQdHI8
RG9jdW1lbnQ+IG1fdGVtcGxhdGVEb2N1bWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCmluZGV4
IDU2NDliNmMzYzcwODUwYTljZTQ2ODBlYzE4ZGU1YmZkYjIzMjcxYzAuLmY0Njc1NzYyZDQyYjMy
ZjQ4NWFhMDg2ZTY1ZGQxNjAyZmUxNWU0YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbApAQCAt
MTAwLDcgKzEwMCw3IEBAIHR5cGVkZWYgKAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBIVE1MQ29s
bGVjdGlvbiBsaW5rczsgLy8gU2hvdWxkIGJlIFtTYW1lT2JqZWN0XS4KICAgICByZWFkb25seSBh
dHRyaWJ1dGUgSFRNTENvbGxlY3Rpb24gZm9ybXM7IC8vIFNob3VsZCBiZSBbU2FtZU9iamVjdF0u
CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEhUTUxDb2xsZWN0aW9uIHNjcmlwdHM7IC8vIFNob3Vs
ZCBiZSBbU2FtZU9iamVjdF0uCi0gICAgTm9kZUxpc3QgZ2V0RWxlbWVudHNCeU5hbWUoW0F0b21p
Y1N0cmluZ10gRE9NU3RyaW5nIGVsZW1lbnROYW1lKTsKKyAgICBOb2RlTGlzdCBnZXRFbGVtZW50
c0J5TmFtZShbQXRvbVN0cmluZ10gRE9NU3RyaW5nIGVsZW1lbnROYW1lKTsKICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgSFRNTFNjcmlwdEVsZW1lbnQ/IGN1cnJlbnRTY3JpcHQ7IC8vIEZJWE1FOiBT
aG91bGQgcmV0dXJuIGEgSFRNTE9yU1ZHU2NyaXB0RWxlbWVudC4KIAogICAgIC8vIGR5bmFtaWMg
bWFya3VwIGluc2VydGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
RnJhZ21lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwCmlu
ZGV4IDI5YmNmNGM2ZjFlNDRkNTNiNzBhMGE3MWNkYTExOTIzZmQ0MjM4NDAuLjhmMjFiMjc5MzUw
Mzc2MTllYjEwM2I5NGNjMjBjNzJjYmI3MTFhMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudEZyYWdtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnRGcmFnbWVudC5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgYm9vbCBEb2N1bWVudEZyYWdtZW50Ojpw
YXJzZVhNTChjb25zdCBTdHJpbmcmIHNvdXJjZSwgRWxlbWVudCogY29udGV4dEVsZW1lbnQsIFAK
ICAgICByZXR1cm4gWE1MRG9jdW1lbnRQYXJzZXI6OnBhcnNlRG9jdW1lbnRGcmFnbWVudChzb3Vy
Y2UsICp0aGlzLCBjb250ZXh0RWxlbWVudCwgcGFyc2VyQ29udGVudFBvbGljeSk7CiB9CiAKLUVs
ZW1lbnQqIERvY3VtZW50RnJhZ21lbnQ6OmdldEVsZW1lbnRCeUlkKGNvbnN0IEF0b21pY1N0cmlu
ZyYgaWQpIGNvbnN0CitFbGVtZW50KiBEb2N1bWVudEZyYWdtZW50OjpnZXRFbGVtZW50QnlJZChj
b25zdCBBdG9tU3RyaW5nJiBpZCkgY29uc3QKIHsKICAgICBpZiAoaWQuaXNOdWxsKCkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50RnJhZ21lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmgKaW5k
ZXggZDFjOTMyMjg5NWEzYTlkNTIyYjBlZTI1MzY3OThiNzkxMjM2MTkwOS4uZjlmOWJhMDhjMWE4
NmY1MmY3ZTU3ZGJhODBkYjNkMWU4NDJkZDE1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50RnJhZ21lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRG
cmFnbWVudC5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNU
ZW1wbGF0ZUNvbnRlbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgLy8gRnJvbSB0
aGUgTm9uRWxlbWVudFBhcmVudE5vZGUgaW50ZXJmYWNlIC0gaHR0cHM6Ly9kb20uc3BlYy53aGF0
d2cub3JnLyNpbnRlcmZhY2Utbm9uZWxlbWVudHBhcmVudG5vZGUKLSAgICBXRUJDT1JFX0VYUE9S
VCBFbGVtZW50KiBnZXRFbGVtZW50QnlJZChjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBFbGVtZW50KiBnZXRFbGVtZW50QnlJZChjb25zdCBBdG9tU3RyaW5n
JikgY29uc3Q7CiAKIHByb3RlY3RlZDoKICAgICBEb2N1bWVudEZyYWdtZW50KERvY3VtZW50Jiwg
Q29uc3RydWN0aW9uVHlwZSA9IENyZWF0ZUNvbnRhaW5lcik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAK
aW5kZXggYjEwOTBkOTMwNDE0NTdjZDNhMTk2ZTg5MzFjYTQyYTYyNWM4ZWM1MC4uZjA3YzVlYzYx
ZDI3NWJjOTAzYTQ2OGQ2YTRkZTQ5ODQ3ZTY3ZjMxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApA
QCAtMTY5LDkgKzE2OSw5IEBAIHN0YXRpYyBBdHRyKiBmaW5kQXR0ck5vZGVJbkxpc3QoVmVjdG9y
PFJlZlB0cjxBdHRyPj4mIGF0dHJOb2RlTGlzdCwgY29uc3QgUXVhbGlmCiAgICAgcmV0dXJuIG51
bGxwdHI7CiB9CiAKLXN0YXRpYyBBdHRyKiBmaW5kQXR0ck5vZGVJbkxpc3QoVmVjdG9yPFJlZlB0
cjxBdHRyPj4mIGF0dHJOb2RlTGlzdCwgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUsIGJv
b2wgc2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZSkKK3N0YXRpYyBBdHRyKiBmaW5kQXR0ck5vZGVJ
bkxpc3QoVmVjdG9yPFJlZlB0cjxBdHRyPj4mIGF0dHJOb2RlTGlzdCwgY29uc3QgQXRvbVN0cmlu
ZyYgbG9jYWxOYW1lLCBib29sIHNob3VsZElnbm9yZUF0dHJpYnV0ZUNhc2UpCiB7Ci0gICAgY29u
c3QgQXRvbWljU3RyaW5nJiBjYXNlQWRqdXN0ZWROYW1lID0gc2hvdWxkSWdub3JlQXR0cmlidXRl
Q2FzZSA/IGxvY2FsTmFtZS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpIDogbG9jYWxOYW1lOwor
ICAgIGNvbnN0IEF0b21TdHJpbmcmIGNhc2VBZGp1c3RlZE5hbWUgPSBzaG91bGRJZ25vcmVBdHRy
aWJ1dGVDYXNlID8gbG9jYWxOYW1lLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkgOiBsb2NhbE5h
bWU7CiAgICAgZm9yIChhdXRvJiBub2RlIDogYXR0ck5vZGVMaXN0KSB7CiAgICAgICAgIGlmIChu
b2RlLT5xdWFsaWZpZWROYW1lKCkubG9jYWxOYW1lKCkgPT0gY2FzZUFkanVzdGVkTmFtZSkKICAg
ICAgICAgICAgIHJldHVybiBub2RlLmdldCgpOwpAQCAtMjk3LDcgKzI5Nyw3IEBAIHN0YXRpYyBi
b29sIGlzQ29tcGF0aWJpbGl0eU1vdXNlRXZlbnQoY29uc3QgTW91c2VFdmVudCYgbW91c2VFdmVu
dCkKIH0KICNlbmRpZgogCi1ib29sIEVsZW1lbnQ6OmRpc3BhdGNoTW91c2VFdmVudChjb25zdCBQ
bGF0Zm9ybU1vdXNlRXZlbnQmIHBsYXRmb3JtRXZlbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlLCBpbnQgZGV0YWlsLCBFbGVtZW50KiByZWxhdGVkVGFyZ2V0KQorYm9vbCBFbGVtZW50
OjpkaXNwYXRjaE1vdXNlRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBwbGF0Zm9ybUV2
ZW50LCBjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIGludCBkZXRhaWwsIEVsZW1lbnQqIHJl
bGF0ZWRUYXJnZXQpCiB7CiAgICAgaWYgKGlzRGlzYWJsZWRGb3JtQ29udHJvbCgpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC01MTgsMTQgKzUxOCwxNCBAQCBBTFdBWVNfSU5MSU5FIHZvaWQg
RWxlbWVudDo6c3luY2hyb25pemVBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkg
Y29ucwogICAgICAgICBkb3duY2FzdDxTVkdFbGVtZW50Pihjb25zdF9jYXN0PEVsZW1lbnQmPigq
dGhpcykpLnN5bmNocm9uaXplQXR0cmlidXRlKG5hbWUpOwogfQogCi1zdGF0aWMgQUxXQVlTX0lO
TElORSBib29sIGlzU3R5bGVBdHRyaWJ1dGUoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29uc3Qg
QXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVMb2NhbE5hbWUpCitzdGF0aWMgQUxXQVlTX0lOTElORSBi
b29sIGlzU3R5bGVBdHRyaWJ1dGUoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgQXRvbVN0
cmluZyYgYXR0cmlidXRlTG9jYWxOYW1lKQogewogICAgIGlmIChzaG91bGRJZ25vcmVBdHRyaWJ1
dGVDYXNlKGVsZW1lbnQpKQogICAgICAgICByZXR1cm4gZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2UoYXR0cmlidXRlTG9jYWxOYW1lLCAic3R5bGUiKTsKICAgICByZXR1cm4gYXR0cmlidXRl
TG9jYWxOYW1lID09IHN0eWxlQXR0ci0+bG9jYWxOYW1lKCk7CiB9CiAKLUFMV0FZU19JTkxJTkUg
dm9pZCBFbGVtZW50OjpzeW5jaHJvbml6ZUF0dHJpYnV0ZShjb25zdCBBdG9taWNTdHJpbmcmIGxv
Y2FsTmFtZSkgY29uc3QKK0FMV0FZU19JTkxJTkUgdm9pZCBFbGVtZW50OjpzeW5jaHJvbml6ZUF0
dHJpYnV0ZShjb25zdCBBdG9tU3RyaW5nJiBsb2NhbE5hbWUpIGNvbnN0CiB7CiAgICAgLy8gVGhp
cyB2ZXJzaW9uIG9mIHN5bmNocm9uaXplQXR0cmlidXRlKCkgaXMgc3RyZWFtbGluZWQgZm9yIHRo
ZSBjYXNlIHdoZXJlIHlvdSBkb24ndCBoYXZlIGEgZnVsbCBRdWFsaWZpZWROYW1lLAogICAgIC8v
IGUuZyB3aGVuIGNhbGxlZCBmcm9tIERPTSBBUEkuCkBAIC01NDEsNyArNTQxLDcgQEAgQUxXQVlT
X0lOTElORSB2b2lkIEVsZW1lbnQ6OnN5bmNocm9uaXplQXR0cmlidXRlKGNvbnN0IEF0b21pY1N0
cmluZyYgbG9jYWxOYW1lKQogICAgICAgICBkb3duY2FzdDxTVkdFbGVtZW50Pihjb25zdF9jYXN0
PEVsZW1lbnQmPigqdGhpcykpLnN5bmNocm9uaXplQXR0cmlidXRlKFF1YWxpZmllZE5hbWUobnVs
bEF0b20oKSwgbG9jYWxOYW1lLCBudWxsQXRvbSgpKSk7CiB9CiAKLWNvbnN0IEF0b21pY1N0cmlu
ZyYgRWxlbWVudDo6Z2V0QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0
Citjb25zdCBBdG9tU3RyaW5nJiBFbGVtZW50OjpnZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgbmFtZSkgY29uc3QKIHsKICAgICBpZiAoIWVsZW1lbnREYXRhKCkpCiAgICAgICAgIHJl
dHVybiBudWxsQXRvbSgpOwpAQCAtMTQ5MCw3ICsxNDkwLDcgQEAgSW50UmVjdCBFbGVtZW50Ojpz
Y3JlZW5SZWN0KCkgY29uc3QKICAgICByZXR1cm4gSW50UmVjdCgpOwogfQogCi1jb25zdCBBdG9t
aWNTdHJpbmcmIEVsZW1lbnQ6OmdldEF0dHJpYnV0ZShjb25zdCBBdG9taWNTdHJpbmcmIHF1YWxp
ZmllZE5hbWUpIGNvbnN0Citjb25zdCBBdG9tU3RyaW5nJiBFbGVtZW50OjpnZXRBdHRyaWJ1dGUo
Y29uc3QgQXRvbVN0cmluZyYgcXVhbGlmaWVkTmFtZSkgY29uc3QKIHsKICAgICBpZiAoIWVsZW1l
bnREYXRhKCkpCiAgICAgICAgIHJldHVybiBudWxsQXRvbSgpOwpAQCAtMTUwMCwxMyArMTUwMCwx
MyBAQCBjb25zdCBBdG9taWNTdHJpbmcmIEVsZW1lbnQ6OmdldEF0dHJpYnV0ZShjb25zdCBBdG9t
aWNTdHJpbmcmIHF1YWxpZmllZE5hbWUpIGNvbgogICAgIHJldHVybiBudWxsQXRvbSgpOwogfQog
Ci1jb25zdCBBdG9taWNTdHJpbmcmIEVsZW1lbnQ6OmdldEF0dHJpYnV0ZU5TKGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSkgY29u
c3QKK2NvbnN0IEF0b21TdHJpbmcmIEVsZW1lbnQ6OmdldEF0dHJpYnV0ZU5TKGNvbnN0IEF0b21T
dHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgQXRvbVN0cmluZyYgbG9jYWxOYW1lKSBjb25zdAog
ewogICAgIHJldHVybiBnZXRBdHRyaWJ1dGUoUXVhbGlmaWVkTmFtZShudWxsQXRvbSgpLCBsb2Nh
bE5hbWUsIG5hbWVzcGFjZVVSSSkpOwogfQogCiAvLyBodHRwczovL2RvbS5zcGVjLndoYXR3Zy5v
cmcvI2RvbS1lbGVtZW50LXRvZ2dsZWF0dHJpYnV0ZQotRXhjZXB0aW9uT3I8Ym9vbD4gRWxlbWVu
dDo6dG9nZ2xlQXR0cmlidXRlKGNvbnN0IEF0b21pY1N0cmluZyYgcXVhbGlmaWVkTmFtZSwgT3B0
aW9uYWw8Ym9vbD4gZm9yY2UpCitFeGNlcHRpb25Pcjxib29sPiBFbGVtZW50Ojp0b2dnbGVBdHRy
aWJ1dGUoY29uc3QgQXRvbVN0cmluZyYgcXVhbGlmaWVkTmFtZSwgT3B0aW9uYWw8Ym9vbD4gZm9y
Y2UpCiB7CiAgICAgaWYgKCFEb2N1bWVudDo6aXNWYWxpZE5hbWUocXVhbGlmaWVkTmFtZSkpCiAg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkQ2hhcmFjdGVyRXJyb3IgfTsKQEAgLTE1
MzAsNyArMTUzMCw3IEBAIEV4Y2VwdGlvbk9yPGJvb2w+IEVsZW1lbnQ6OnRvZ2dsZUF0dHJpYnV0
ZShjb25zdCBBdG9taWNTdHJpbmcmIHF1YWxpZmllZE5hbWUsIE9wCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IEVsZW1lbnQ6OnNldEF0dHJpYnV0ZShjb25zdCBBdG9t
aWNTdHJpbmcmIHF1YWxpZmllZE5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCitFeGNl
cHRpb25Pcjx2b2lkPiBFbGVtZW50OjpzZXRBdHRyaWJ1dGUoY29uc3QgQXRvbVN0cmluZyYgcXVh
bGlmaWVkTmFtZSwgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKCFEb2N1bWVu
dDo6aXNWYWxpZE5hbWUocXVhbGlmaWVkTmFtZSkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBJbnZhbGlkQ2hhcmFjdGVyRXJyb3IgfTsKQEAgLTE1NDQsMjYgKzE1NDQsMjYgQEAgRXhjZXB0
aW9uT3I8dm9pZD4gRWxlbWVudDo6c2V0QXR0cmlidXRlKGNvbnN0IEF0b21pY1N0cmluZyYgcXVh
bGlmaWVkTmFtZSwgY29uc3QKICAgICByZXR1cm4geyB9OwogfQogCi12b2lkIEVsZW1lbnQ6OnNl
dEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcm
IHZhbHVlKQordm9pZCBFbGVtZW50OjpzZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
bmFtZSwgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCiB7CiAgICAgc3luY2hyb25pemVBdHRyaWJ1
dGUobmFtZSk7CiAgICAgdW5zaWduZWQgaW5kZXggPSBlbGVtZW50RGF0YSgpID8gZWxlbWVudERh
dGEoKS0+ZmluZEF0dHJpYnV0ZUluZGV4QnlOYW1lKG5hbWUpIDogRWxlbWVudERhdGE6OmF0dHJp
YnV0ZU5vdEZvdW5kOwogICAgIHNldEF0dHJpYnV0ZUludGVybmFsKGluZGV4LCBuYW1lLCB2YWx1
ZSwgTm90SW5TeW5jaHJvbml6YXRpb25PZkxhenlBdHRyaWJ1dGUpOwogfQogCi12b2lkIEVsZW1l
bnQ6OnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oY29uc3QgUXVhbGlmaWVkTmFt
ZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKK3ZvaWQgRWxlbWVudDo6c2V0QXR0
cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBj
b25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKIHsKICAgICB1bnNpZ25lZCBpbmRleCA9IGVsZW1lbnRE
YXRhKCkgPyBlbGVtZW50RGF0YSgpLT5maW5kQXR0cmlidXRlSW5kZXhCeU5hbWUobmFtZSkgOiBF
bGVtZW50RGF0YTo6YXR0cmlidXRlTm90Rm91bmQ7CiAgICAgc2V0QXR0cmlidXRlSW50ZXJuYWwo
aW5kZXgsIG5hbWUsIHZhbHVlLCBOb3RJblN5bmNocm9uaXphdGlvbk9mTGF6eUF0dHJpYnV0ZSk7
CiB9CiAKLXZvaWQgRWxlbWVudDo6c2V0U3luY2hyb25pemVkTGF6eUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQordm9pZCBFbGVt
ZW50OjpzZXRTeW5jaHJvbml6ZWRMYXp5QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5h
bWUsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKQogewogICAgIHVuc2lnbmVkIGluZGV4ID0gZWxl
bWVudERhdGEoKSA/IGVsZW1lbnREYXRhKCktPmZpbmRBdHRyaWJ1dGVJbmRleEJ5TmFtZShuYW1l
KSA6IEVsZW1lbnREYXRhOjphdHRyaWJ1dGVOb3RGb3VuZDsKICAgICBzZXRBdHRyaWJ1dGVJbnRl
cm5hbChpbmRleCwgbmFtZSwgdmFsdWUsIEluU3luY2hyb25pemF0aW9uT2ZMYXp5QXR0cmlidXRl
KTsKIH0KIAotaW5saW5lIHZvaWQgRWxlbWVudDo6c2V0QXR0cmlidXRlSW50ZXJuYWwodW5zaWdu
ZWQgaW5kZXgsIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYg
bmV3VmFsdWUsIFN5bmNocm9uaXphdGlvbk9mTGF6eUF0dHJpYnV0ZSBpblN5bmNocm9uaXphdGlv
bk9mTGF6eUF0dHJpYnV0ZSkKK2lubGluZSB2b2lkIEVsZW1lbnQ6OnNldEF0dHJpYnV0ZUludGVy
bmFsKHVuc2lnbmVkIGluZGV4LCBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9t
U3RyaW5nJiBuZXdWYWx1ZSwgU3luY2hyb25pemF0aW9uT2ZMYXp5QXR0cmlidXRlIGluU3luY2hy
b25pemF0aW9uT2ZMYXp5QXR0cmlidXRlKQogewogICAgIGlmIChuZXdWYWx1ZS5pc051bGwoKSkg
ewogICAgICAgICBpZiAoaW5kZXggIT0gRWxlbWVudERhdGE6OmF0dHJpYnV0ZU5vdEZvdW5kKQpA
QCAtMTU4Myw3ICsxNTgzLDcgQEAgaW5saW5lIHZvaWQgRWxlbWVudDo6c2V0QXR0cmlidXRlSW50
ZXJuYWwodW5zaWduZWQgaW5kZXgsIGNvbnN0IFF1YWxpZmllZE5hbWUmIG4KIAogICAgIGNvbnN0
IEF0dHJpYnV0ZSYgYXR0cmlidXRlID0gYXR0cmlidXRlQXQoaW5kZXgpOwogICAgIFF1YWxpZmll
ZE5hbWUgYXR0cmlidXRlTmFtZSA9IGF0dHJpYnV0ZS5uYW1lKCk7Ci0gICAgQXRvbWljU3RyaW5n
IG9sZFZhbHVlID0gYXR0cmlidXRlLnZhbHVlKCk7CisgICAgQXRvbVN0cmluZyBvbGRWYWx1ZSA9
IGF0dHJpYnV0ZS52YWx1ZSgpOwogCiAgICAgd2lsbE1vZGlmeUF0dHJpYnV0ZShhdHRyaWJ1dGVO
YW1lLCBvbGRWYWx1ZSwgbmV3VmFsdWUpOwogCkBAIC0xNTk1LDE0ICsxNTk1LDE0IEBAIGlubGlu
ZSB2b2lkIEVsZW1lbnQ6OnNldEF0dHJpYnV0ZUludGVybmFsKHVuc2lnbmVkIGluZGV4LCBjb25z
dCBRdWFsaWZpZWROYW1lJiBuCiAgICAgZGlkTW9kaWZ5QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUs
IG9sZFZhbHVlLCBuZXdWYWx1ZSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgQXRvbWljU3RyaW5nIG1h
a2VJZEZvclN0eWxlUmVzb2x1dGlvbihjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlLCBib29sIGlu
UXVpcmtzTW9kZSkKK3N0YXRpYyBpbmxpbmUgQXRvbVN0cmluZyBtYWtlSWRGb3JTdHlsZVJlc29s
dXRpb24oY29uc3QgQXRvbVN0cmluZyYgdmFsdWUsIGJvb2wgaW5RdWlya3NNb2RlKQogewogICAg
IGlmIChpblF1aXJrc01vZGUpCiAgICAgICAgIHJldHVybiB2YWx1ZS5jb252ZXJ0VG9BU0NJSUxv
d2VyY2FzZSgpOwogICAgIHJldHVybiB2YWx1ZTsKIH0KIAotdm9pZCBFbGVtZW50OjphdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYg
b2xkVmFsdWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUsIEF0dHJpYnV0ZU1vZGlmaWNh
dGlvblJlYXNvbikKK3ZvaWQgRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZp
ZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbVN0cmlu
ZyYgbmV3VmFsdWUsIEF0dHJpYnV0ZU1vZGlmaWNhdGlvblJlYXNvbikKIHsKICAgICBib29sIHZh
bHVlSXNTYW1lQXNCZWZvcmUgPSBvbGRWYWx1ZSA9PSBuZXdWYWx1ZTsKIApAQCAtMTYxMiw4ICsx
NjEyLDggQEAgdm9pZCBFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5h
bWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgb2wKICAgICAgICAgZWxzZSBpZiAobmFtZSA9
PSBIVE1MTmFtZXM6OmNsYXNzQXR0cikKICAgICAgICAgICAgIGNsYXNzQXR0cmlidXRlQ2hhbmdl
ZChuZXdWYWx1ZSk7CiAgICAgICAgIGVsc2UgaWYgKG5hbWUgPT0gSFRNTE5hbWVzOjppZEF0dHIp
IHsKLSAgICAgICAgICAgIEF0b21pY1N0cmluZyBvbGRJZCA9IGVsZW1lbnREYXRhKCktPmlkRm9y
U3R5bGVSZXNvbHV0aW9uKCk7Ci0gICAgICAgICAgICBBdG9taWNTdHJpbmcgbmV3SWQgPSBtYWtl
SWRGb3JTdHlsZVJlc29sdXRpb24obmV3VmFsdWUsIGRvY3VtZW50KCkuaW5RdWlya3NNb2RlKCkp
OworICAgICAgICAgICAgQXRvbVN0cmluZyBvbGRJZCA9IGVsZW1lbnREYXRhKCktPmlkRm9yU3R5
bGVSZXNvbHV0aW9uKCk7CisgICAgICAgICAgICBBdG9tU3RyaW5nIG5ld0lkID0gbWFrZUlkRm9y
U3R5bGVSZXNvbHV0aW9uKG5ld1ZhbHVlLCBkb2N1bWVudCgpLmluUXVpcmtzTW9kZSgpKTsKICAg
ICAgICAgICAgIGlmIChuZXdJZCAhPSBvbGRJZCkgewogICAgICAgICAgICAgICAgIFN0eWxlOjpJ
ZENoYW5nZUludmFsaWRhdGlvbiBzdHlsZUludmFsaWRhdGlvbigqdGhpcywgb2xkSWQsIG5ld0lk
KTsKICAgICAgICAgICAgICAgICBlbGVtZW50RGF0YSgpLT5zZXRJZEZvclN0eWxlUmVzb2x1dGlv
bihuZXdJZCk7CkBAIC0xNjY3LDcgKzE2NjcsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgY2xhc3NT
dHJpbmdIYXNDbGFzc05hbWUoY29uc3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycywgdW5zaQog
ICAgIHJldHVybiBpIDwgbGVuZ3RoOwogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wgY2xhc3NTdHJp
bmdIYXNDbGFzc05hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBuZXdDbGFzc1N0cmluZykKK3N0YXRp
YyBpbmxpbmUgYm9vbCBjbGFzc1N0cmluZ0hhc0NsYXNzTmFtZShjb25zdCBBdG9tU3RyaW5nJiBu
ZXdDbGFzc1N0cmluZykKIHsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBuZXdDbGFzc1N0cmluZy5s
ZW5ndGgoKTsKIApAQCAtMTY3OSw3ICsxNjc5LDcgQEAgc3RhdGljIGlubGluZSBib29sIGNsYXNz
U3RyaW5nSGFzQ2xhc3NOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgbmV3Q2xhc3NTdHJpbmcpCiAg
ICAgcmV0dXJuIGNsYXNzU3RyaW5nSGFzQ2xhc3NOYW1lKG5ld0NsYXNzU3RyaW5nLmNoYXJhY3Rl
cnMxNigpLCBsZW5ndGgpOwogfQogCi12b2lkIEVsZW1lbnQ6OmNsYXNzQXR0cmlidXRlQ2hhbmdl
ZChjb25zdCBBdG9taWNTdHJpbmcmIG5ld0NsYXNzU3RyaW5nKQordm9pZCBFbGVtZW50OjpjbGFz
c0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgQXRvbVN0cmluZyYgbmV3Q2xhc3NTdHJpbmcpCiB7CiAg
ICAgLy8gTm90ZTogV2UnbGwgbmVlZCBFbGVtZW50RGF0YSwgYnV0IGl0IGRvZXNuJ3QgaGF2ZSB0
byBiZSBVbmlxdWVFbGVtZW50RGF0YS4KICAgICBpZiAoIWVsZW1lbnREYXRhKCkpCkBAIC0xNzA2
LDcgKzE3MDYsNyBAQCBVUkwgRWxlbWVudDo6YWJzb2x1dGVMaW5rVVJMKCkgY29uc3QKICAgICBp
ZiAoIWlzTGluaygpKQogICAgICAgICByZXR1cm4gVVJMKCk7CiAKLSAgICBBdG9taWNTdHJpbmcg
bGlua0F0dHJpYnV0ZTsKKyAgICBBdG9tU3RyaW5nIGxpbmtBdHRyaWJ1dGU7CiAgICAgaWYgKGhh
c1RhZ05hbWUoU1ZHTmFtZXM6OmFUYWcpKQogICAgICAgICBsaW5rQXR0cmlidXRlID0gZ2V0QXR0
cmlidXRlKFNWR05hbWVzOjpocmVmQXR0ciwgWExpbmtOYW1lczo6aHJlZkF0dHIpOwogICAgIGVs
c2UKQEAgLTE5MjQsNyArMTkyNCw3IEBAIFN0cmluZyBFbGVtZW50Ojpub2RlTmFtZVByZXNlcnZp
bmdDYXNlKCkgY29uc3QKICAgICByZXR1cm4gbV90YWdOYW1lLnRvU3RyaW5nKCk7CiB9CiAKLUV4
Y2VwdGlvbk9yPHZvaWQ+IEVsZW1lbnQ6OnNldFByZWZpeChjb25zdCBBdG9taWNTdHJpbmcmIHBy
ZWZpeCkKK0V4Y2VwdGlvbk9yPHZvaWQ+IEVsZW1lbnQ6OnNldFByZWZpeChjb25zdCBBdG9tU3Ry
aW5nJiBwcmVmaXgpCiB7CiAgICAgYXV0byByZXN1bHQgPSBjaGVja1NldFByZWZpeChwcmVmaXgp
OwogICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCkBAIC0xOTM0LDcgKzE5MzQsNyBAQCBF
eGNlcHRpb25Pcjx2b2lkPiBFbGVtZW50OjpzZXRQcmVmaXgoY29uc3QgQXRvbWljU3RyaW5nJiBw
cmVmaXgpCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotY29uc3QgQXRvbWljU3RyaW5nJiBFbGVtZW50
OjppbWFnZVNvdXJjZVVSTCgpIGNvbnN0Citjb25zdCBBdG9tU3RyaW5nJiBFbGVtZW50OjppbWFn
ZVNvdXJjZVVSTCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24oc3JjQXR0cik7CiB9CkBAIC0xOTcyLDcgKzE5NzIsNyBAQCBOb2RlOjpJbnNlcnRl
ZEludG9BbmNlc3RvclJlc3VsdCBFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3RvcihJbnNlcnRp
b25UeXBlIGlucwogICAgIGlmICghaW5zZXJ0aW9uVHlwZS50cmVlU2NvcGVDaGFuZ2VkKQogICAg
ICAgICBuZXdTY29wZSA9IG51bGxwdHI7CiAKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGlkVmFs
dWUgPSBnZXRJZEF0dHJpYnV0ZSgpOworICAgIGNvbnN0IEF0b21TdHJpbmcmIGlkVmFsdWUgPSBn
ZXRJZEF0dHJpYnV0ZSgpOwogICAgIGlmICghaWRWYWx1ZS5pc051bGwoKSkgewogICAgICAgICBp
ZiAobmV3U2NvcGUpCiAgICAgICAgICAgICB1cGRhdGVJZEZvclRyZWVTY29wZSgqbmV3U2NvcGUs
IG51bGxBdG9tKCksIGlkVmFsdWUpOwpAQCAtMTk4MCw3ICsxOTgwLDcgQEAgTm9kZTo6SW5zZXJ0
ZWRJbnRvQW5jZXN0b3JSZXN1bHQgRWxlbWVudDo6aW5zZXJ0ZWRJbnRvQW5jZXN0b3IoSW5zZXJ0
aW9uVHlwZSBpbnMKICAgICAgICAgICAgIHVwZGF0ZUlkRm9yRG9jdW1lbnQoKm5ld0RvY3VtZW50
LCBudWxsQXRvbSgpLCBpZFZhbHVlLCBBbHdheXNVcGRhdGVIVE1MRG9jdW1lbnROYW1lZEl0ZW1N
YXBzKTsKICAgICB9CiAKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVWYWx1ZSA9IGdldE5h
bWVBdHRyaWJ1dGUoKTsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBuYW1lVmFsdWUgPSBnZXROYW1l
QXR0cmlidXRlKCk7CiAgICAgaWYgKCFuYW1lVmFsdWUuaXNOdWxsKCkpIHsKICAgICAgICAgaWYg
KG5ld1Njb3BlKQogICAgICAgICAgICAgdXBkYXRlTmFtZUZvclRyZWVTY29wZSgqbmV3U2NvcGUs
IG51bGxBdG9tKCksIG5hbWVWYWx1ZSk7CkBAIC0yMDMyLDcgKzIwMzIsNyBAQCB2b2lkIEVsZW1l
bnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IoUmVtb3ZhbFR5cGUgcmVtb3ZhbFR5cGUsIENvbnRhaW5l
ck5vZGUmIG9sZFBhcgogICAgICAgICBpZiAoIXJlbW92YWxUeXBlLnRyZWVTY29wZUNoYW5nZWQp
CiAgICAgICAgICAgICBvbGRTY29wZSA9IG51bGxwdHI7CiAKLSAgICAgICAgY29uc3QgQXRvbWlj
U3RyaW5nJiBpZFZhbHVlID0gZ2V0SWRBdHRyaWJ1dGUoKTsKKyAgICAgICAgY29uc3QgQXRvbVN0
cmluZyYgaWRWYWx1ZSA9IGdldElkQXR0cmlidXRlKCk7CiAgICAgICAgIGlmICghaWRWYWx1ZS5p
c051bGwoKSkgewogICAgICAgICAgICAgaWYgKG9sZFNjb3BlKQogICAgICAgICAgICAgICAgIHVw
ZGF0ZUlkRm9yVHJlZVNjb3BlKCpvbGRTY29wZSwgaWRWYWx1ZSwgbnVsbEF0b20oKSk7CkBAIC0y
MDQwLDcgKzIwNDAsNyBAQCB2b2lkIEVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IoUmVtb3Zh
bFR5cGUgcmVtb3ZhbFR5cGUsIENvbnRhaW5lck5vZGUmIG9sZFBhcgogICAgICAgICAgICAgICAg
IHVwZGF0ZUlkRm9yRG9jdW1lbnQoKm9sZEhUTUxEb2N1bWVudCwgaWRWYWx1ZSwgbnVsbEF0b20o
KSwgQWx3YXlzVXBkYXRlSFRNTERvY3VtZW50TmFtZWRJdGVtTWFwcyk7CiAgICAgICAgIH0KIAot
ICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVWYWx1ZSA9IGdldE5hbWVBdHRyaWJ1dGUo
KTsKKyAgICAgICAgY29uc3QgQXRvbVN0cmluZyYgbmFtZVZhbHVlID0gZ2V0TmFtZUF0dHJpYnV0
ZSgpOwogICAgICAgICBpZiAoIW5hbWVWYWx1ZS5pc051bGwoKSkgewogICAgICAgICAgICAgaWYg
KG9sZFNjb3BlKQogICAgICAgICAgICAgICAgIHVwZGF0ZU5hbWVGb3JUcmVlU2NvcGUoKm9sZFNj
b3BlLCBuYW1lVmFsdWUsIG51bGxBdG9tKCkpOwpAQCAtMjE0OSw3ICsyMTQ5LDcgQEAgdm9pZCBF
bGVtZW50OjpyZW1vdmVTaGFkb3dSb290KCkKIAogc3RhdGljIGJvb2wgY2FuQXR0YWNoQXV0aG9y
U2hhZG93Um9vdChjb25zdCBFbGVtZW50JiBlbGVtZW50KQogewotICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxIYXNoU2V0PEF0b21pY1N0cmluZz4+IHRhZ05hbWVzID0gW10geworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PEF0b21TdHJpbmc+PiB0YWdOYW1lcyA9IFtdIHsKICAg
ICAgICAgc3RhdGljIGNvbnN0IEhUTUxRdWFsaWZpZWROYW1lKiBjb25zdCB0YWdMaXN0W10gPSB7
CiAgICAgICAgICAgICAmYXJ0aWNsZVRhZy5nZXQoKSwKICAgICAgICAgICAgICZhc2lkZVRhZy5n
ZXQoKSwKQEAgLTIxNjksNyArMjE2OSw3IEBAIHN0YXRpYyBib29sIGNhbkF0dGFjaEF1dGhvclNo
YWRvd1Jvb3QoY29uc3QgRWxlbWVudCYgZWxlbWVudCkKICAgICAgICAgICAgICZzZWN0aW9uVGFn
LmdldCgpLAogICAgICAgICAgICAgJnNwYW5UYWcuZ2V0KCkKICAgICAgICAgfTsKLSAgICAgICAg
SGFzaFNldDxBdG9taWNTdHJpbmc+IHNldDsKKyAgICAgICAgSGFzaFNldDxBdG9tU3RyaW5nPiBz
ZXQ7CiAgICAgICAgIGZvciAoYXV0byYgbmFtZSA6IHRhZ0xpc3QpCiAgICAgICAgICAgICBzZXQu
YWRkKG5hbWUtPmxvY2FsTmFtZSgpKTsKICAgICAgICAgcmV0dXJuIHNldDsKQEAgLTIyNzksNyAr
MjI3OSw3IEBAIEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlKiBFbGVtZW50OjpyZWFjdGlvblF1
ZXVlKCkgY29uc3QKICAgICByZXR1cm4gZWxlbWVudFJhcmVEYXRhKCktPmN1c3RvbUVsZW1lbnRS
ZWFjdGlvblF1ZXVlKCk7CiB9CiAKLWNvbnN0IEF0b21pY1N0cmluZyYgRWxlbWVudDo6c2hhZG93
UHNldWRvSWQoKSBjb25zdAorY29uc3QgQXRvbVN0cmluZyYgRWxlbWVudDo6c2hhZG93UHNldWRv
SWQoKSBjb25zdAogewogICAgIHJldHVybiBwc2V1ZG8oKTsKIH0KQEAgLTI0MzcsNyArMjQzNyw3
IEBAIHZvaWQgRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFu
Z2UpCiAgICAgfQogfQogCi12b2lkIEVsZW1lbnQ6OnNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIo
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJp
YnV0ZU5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlVmFsdWUpCit2b2lkIEVsZW1l
bnQ6OnNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBl
LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBjb25zdCBBdG9tU3RyaW5nJiBh
dHRyaWJ1dGVWYWx1ZSkKIHsKICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50VHlw
ZSwgSlNMYXp5RXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKCp0aGlzLCBhdHRyaWJ1dGVOYW1lLCBhdHRy
aWJ1dGVWYWx1ZSksIG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKTsKIH0KQEAgLTI2MTQsNyArMjYx
NCw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxBdHRyPj4gRWxlbWVudDo6cmVtb3ZlQXR0cmlidXRlTm9k
ZShBdHRyJiBhdHRyKQogICAgIHJldHVybiBvbGRBdHRyTm9kZTsKIH0KIAotRXhjZXB0aW9uT3I8
UXVhbGlmaWVkTmFtZT4gRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGVOYW1lKGNvbnN0IEF0b21pY1N0
cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBBdG9taWNTdHJpbmcmIHF1YWxpZmllZE5hbWUpCitF
eGNlcHRpb25PcjxRdWFsaWZpZWROYW1lPiBFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZU5hbWUoY29u
c3QgQXRvbVN0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBBdG9tU3RyaW5nJiBxdWFsaWZpZWRO
YW1lKQogewogICAgIGF1dG8gcGFyc2VSZXN1bHQgPSBEb2N1bWVudDo6cGFyc2VRdWFsaWZpZWRO
YW1lKG5hbWVzcGFjZVVSSSwgcXVhbGlmaWVkTmFtZSk7CiAgICAgaWYgKHBhcnNlUmVzdWx0Lmhh
c0V4Y2VwdGlvbigpKQpAQCAtMjYyNSw3ICsyNjI1LDcgQEAgRXhjZXB0aW9uT3I8UXVhbGlmaWVk
TmFtZT4gRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGVOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZXMKICAgICByZXR1cm4gcGFyc2VkQXR0cmlidXRlTmFtZTsKIH0KIAotRXhjZXB0aW9uT3I8dm9p
ZD4gRWxlbWVudDo6c2V0QXR0cmlidXRlTlMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VV
UkksIGNvbnN0IEF0b21pY1N0cmluZyYgcXVhbGlmaWVkTmFtZSwgY29uc3QgQXRvbWljU3RyaW5n
JiB2YWx1ZSkKK0V4Y2VwdGlvbk9yPHZvaWQ+IEVsZW1lbnQ6OnNldEF0dHJpYnV0ZU5TKGNvbnN0
IEF0b21TdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgQXRvbVN0cmluZyYgcXVhbGlmaWVkTmFt
ZSwgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCiB7CiAgICAgYXV0byByZXN1bHQgPSBwYXJzZUF0
dHJpYnV0ZU5hbWUobmFtZXNwYWNlVVJJLCBxdWFsaWZpZWROYW1lKTsKICAgICBpZiAocmVzdWx0
Lmhhc0V4Y2VwdGlvbigpKQpAQCAtMjY0MSw3ICsyNjQxLDcgQEAgdm9pZCBFbGVtZW50OjpyZW1v
dmVBdHRyaWJ1dGVJbnRlcm5hbCh1bnNpZ25lZCBpbmRleCwgU3luY2hyb25pemF0aW9uT2ZMYXp5
QXR0cmkKICAgICBVbmlxdWVFbGVtZW50RGF0YSYgZWxlbWVudERhdGEgPSBlbnN1cmVVbmlxdWVF
bGVtZW50RGF0YSgpOwogCiAgICAgUXVhbGlmaWVkTmFtZSBuYW1lID0gZWxlbWVudERhdGEuYXR0
cmlidXRlQXQoaW5kZXgpLm5hbWUoKTsKLSAgICBBdG9taWNTdHJpbmcgdmFsdWVCZWluZ1JlbW92
ZWQgPSBlbGVtZW50RGF0YS5hdHRyaWJ1dGVBdChpbmRleCkudmFsdWUoKTsKKyAgICBBdG9tU3Ry
aW5nIHZhbHVlQmVpbmdSZW1vdmVkID0gZWxlbWVudERhdGEuYXR0cmlidXRlQXQoaW5kZXgpLnZh
bHVlKCk7CiAKICAgICBpZiAoUmVmUHRyPEF0dHI+IGF0dHJOb2RlID0gYXR0cklmRXhpc3RzKG5h
bWUpKQogICAgICAgICBkZXRhY2hBdHRyTm9kZUZyb21FbGVtZW50V2l0aFZhbHVlKGF0dHJOb2Rl
LmdldCgpLCBlbGVtZW50RGF0YS5hdHRyaWJ1dGVBdChpbmRleCkudmFsdWUoKSk7CkBAIC0yNjYx
LDcgKzI2NjEsNyBAQCB2b2lkIEVsZW1lbnQ6OnJlbW92ZUF0dHJpYnV0ZUludGVybmFsKHVuc2ln
bmVkIGluZGV4LCBTeW5jaHJvbml6YXRpb25PZkxhenlBdHRyaQogICAgIGRpZFJlbW92ZUF0dHJp
YnV0ZShuYW1lLCB2YWx1ZUJlaW5nUmVtb3ZlZCk7CiB9CiAKLXZvaWQgRWxlbWVudDo6YWRkQXR0
cmlidXRlSW50ZXJuYWwoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3Ry
aW5nJiB2YWx1ZSwgU3luY2hyb25pemF0aW9uT2ZMYXp5QXR0cmlidXRlIGluU3luY2hyb25pemF0
aW9uT2ZMYXp5QXR0cmlidXRlKQordm9pZCBFbGVtZW50OjphZGRBdHRyaWJ1dGVJbnRlcm5hbChj
b25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSwgU3luY2hy
b25pemF0aW9uT2ZMYXp5QXR0cmlidXRlIGluU3luY2hyb25pemF0aW9uT2ZMYXp5QXR0cmlidXRl
KQogewogICAgIGlmIChpblN5bmNocm9uaXphdGlvbk9mTGF6eUF0dHJpYnV0ZSkgewogICAgICAg
ICBlbnN1cmVVbmlxdWVFbGVtZW50RGF0YSgpLmFkZEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CkBA
IC0yNjc2LDEyICsyNjc2LDEyIEBAIHZvaWQgRWxlbWVudDo6YWRkQXR0cmlidXRlSW50ZXJuYWwo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nCiAgICAgZGlkQWRk
QXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKIH0KIAotYm9vbCBFbGVtZW50OjpyZW1vdmVBdHRyaWJ1
dGUoY29uc3QgQXRvbWljU3RyaW5nJiBxdWFsaWZpZWROYW1lKQorYm9vbCBFbGVtZW50OjpyZW1v
dmVBdHRyaWJ1dGUoY29uc3QgQXRvbVN0cmluZyYgcXVhbGlmaWVkTmFtZSkKIHsKICAgICBpZiAo
IWVsZW1lbnREYXRhKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEF0b21pY1N0cmlu
ZyBjYXNlQWRqdXN0ZWRRdWFsaWZpZWROYW1lID0gc2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZSgq
dGhpcykgPyBxdWFsaWZpZWROYW1lLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkgOiBxdWFsaWZp
ZWROYW1lOworICAgIEF0b21TdHJpbmcgY2FzZUFkanVzdGVkUXVhbGlmaWVkTmFtZSA9IHNob3Vs
ZElnbm9yZUF0dHJpYnV0ZUNhc2UoKnRoaXMpID8gcXVhbGlmaWVkTmFtZS5jb252ZXJ0VG9BU0NJ
SUxvd2VyY2FzZSgpIDogcXVhbGlmaWVkTmFtZTsKICAgICB1bnNpZ25lZCBpbmRleCA9IGVsZW1l
bnREYXRhKCktPmZpbmRBdHRyaWJ1dGVJbmRleEJ5TmFtZShjYXNlQWRqdXN0ZWRRdWFsaWZpZWRO
YW1lLCBmYWxzZSk7CiAgICAgaWYgKGluZGV4ID09IEVsZW1lbnREYXRhOjphdHRyaWJ1dGVOb3RG
b3VuZCkgewogICAgICAgICBpZiAoVU5MSUtFTFkoY2FzZUFkanVzdGVkUXVhbGlmaWVkTmFtZSA9
PSBzdHlsZUF0dHIpICYmIGVsZW1lbnREYXRhKCktPnN0eWxlQXR0cmlidXRlSXNEaXJ0eSgpICYm
IGlzPFN0eWxlZEVsZW1lbnQ+KCp0aGlzKSkKQEAgLTI2OTMsMTIgKzI2OTMsMTIgQEAgYm9vbCBF
bGVtZW50OjpyZW1vdmVBdHRyaWJ1dGUoY29uc3QgQXRvbWljU3RyaW5nJiBxdWFsaWZpZWROYW1l
KQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEVsZW1lbnQ6OnJlbW92ZUF0dHJpYnV0ZU5T
KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBBdG9taWNTdHJpbmcmIGxv
Y2FsTmFtZSkKK2Jvb2wgRWxlbWVudDo6cmVtb3ZlQXR0cmlidXRlTlMoY29uc3QgQXRvbVN0cmlu
ZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBBdG9tU3RyaW5nJiBsb2NhbE5hbWUpCiB7CiAgICAgcmV0
dXJuIHJlbW92ZUF0dHJpYnV0ZShRdWFsaWZpZWROYW1lKG51bGxBdG9tKCksIGxvY2FsTmFtZSwg
bmFtZXNwYWNlVVJJKSk7CiB9CiAKLVJlZlB0cjxBdHRyPiBFbGVtZW50OjpnZXRBdHRyaWJ1dGVO
b2RlKGNvbnN0IEF0b21pY1N0cmluZyYgcXVhbGlmaWVkTmFtZSkKK1JlZlB0cjxBdHRyPiBFbGVt
ZW50OjpnZXRBdHRyaWJ1dGVOb2RlKGNvbnN0IEF0b21TdHJpbmcmIHF1YWxpZmllZE5hbWUpCiB7
CiAgICAgaWYgKCFlbGVtZW50RGF0YSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI3
MDksNyArMjcwOSw3IEBAIFJlZlB0cjxBdHRyPiBFbGVtZW50OjpnZXRBdHRyaWJ1dGVOb2RlKGNv
bnN0IEF0b21pY1N0cmluZyYgcXVhbGlmaWVkTmFtZSkKICAgICByZXR1cm4gZW5zdXJlQXR0cihh
dHRyaWJ1dGUtPm5hbWUoKSk7CiB9CiAKLVJlZlB0cjxBdHRyPiBFbGVtZW50OjpnZXRBdHRyaWJ1
dGVOb2RlTlMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IEF0b21pY1N0
cmluZyYgbG9jYWxOYW1lKQorUmVmUHRyPEF0dHI+IEVsZW1lbnQ6OmdldEF0dHJpYnV0ZU5vZGVO
Uyhjb25zdCBBdG9tU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IEF0b21TdHJpbmcmIGxvY2Fs
TmFtZSkKIHsKICAgICBpZiAoIWVsZW1lbnREYXRhKCkpCiAgICAgICAgIHJldHVybiAwOwpAQCAt
MjcyMSw3ICsyNzIxLDcgQEAgUmVmUHRyPEF0dHI+IEVsZW1lbnQ6OmdldEF0dHJpYnV0ZU5vZGVO
Uyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QKICAgICByZXR1cm4gZW5z
dXJlQXR0cihhdHRyaWJ1dGUtPm5hbWUoKSk7CiB9CiAKLWJvb2wgRWxlbWVudDo6aGFzQXR0cmli
dXRlKGNvbnN0IEF0b21pY1N0cmluZyYgcXVhbGlmaWVkTmFtZSkgY29uc3QKK2Jvb2wgRWxlbWVu
dDo6aGFzQXR0cmlidXRlKGNvbnN0IEF0b21TdHJpbmcmIHF1YWxpZmllZE5hbWUpIGNvbnN0CiB7
CiAgICAgaWYgKCFlbGVtZW50RGF0YSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNzI5
LDcgKzI3MjksNyBAQCBib29sIEVsZW1lbnQ6Omhhc0F0dHJpYnV0ZShjb25zdCBBdG9taWNTdHJp
bmcmIHF1YWxpZmllZE5hbWUpIGNvbnN0CiAgICAgcmV0dXJuIGVsZW1lbnREYXRhKCktPmZpbmRB
dHRyaWJ1dGVCeU5hbWUocXVhbGlmaWVkTmFtZSwgc2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZSgq
dGhpcykpOwogfQogCi1ib29sIEVsZW1lbnQ6Omhhc0F0dHJpYnV0ZU5TKGNvbnN0IEF0b21pY1N0
cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSkgY29uc3QK
K2Jvb2wgRWxlbWVudDo6aGFzQXR0cmlidXRlTlMoY29uc3QgQXRvbVN0cmluZyYgbmFtZXNwYWNl
VVJJLCBjb25zdCBBdG9tU3RyaW5nJiBsb2NhbE5hbWUpIGNvbnN0CiB7CiAgICAgaWYgKCFlbGVt
ZW50RGF0YSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yODMwLDE0ICsyODMwLDE0IEBA
IHZvaWQgRWxlbWVudDo6Ymx1cigpCiAgICAgfQogfQogCi12b2lkIEVsZW1lbnQ6OmRpc3BhdGNo
Rm9jdXNJbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RWxlbWVu
dD4mJiBvbGRGb2N1c2VkRWxlbWVudCkKK3ZvaWQgRWxlbWVudDo6ZGlzcGF0Y2hGb2N1c0luRXZl
bnQoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RWxlbWVudD4mJiBvbGRGb2N1
c2VkRWxlbWVudCkKIHsKICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihTY3Jp
cHREaXNhbGxvd2VkU2NvcGU6OkluTWFpblRocmVhZDo6aXNTY3JpcHRBbGxvd2VkKCkpOwogICAg
IEFTU0VSVChldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLmZvY3VzaW5FdmVudCB8fCBldmVudFR5
cGUgPT0gZXZlbnROYW1lcygpLkRPTUZvY3VzSW5FdmVudCk7CiAgICAgZGlzcGF0Y2hTY29wZWRF
dmVudChGb2N1c0V2ZW50OjpjcmVhdGUoZXZlbnRUeXBlLCBFdmVudDo6Q2FuQnViYmxlOjpZZXMs
IEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vLCBkb2N1bWVudCgpLndpbmRvd1Byb3h5KCksIDAsIFdU
Rk1vdmUob2xkRm9jdXNlZEVsZW1lbnQpKSk7CiB9CiAKLXZvaWQgRWxlbWVudDo6ZGlzcGF0Y2hG
b2N1c091dEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RWxlbWVu
dD4mJiBuZXdGb2N1c2VkRWxlbWVudCkKK3ZvaWQgRWxlbWVudDo6ZGlzcGF0Y2hGb2N1c091dEV2
ZW50KGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEVsZW1lbnQ+JiYgbmV3Rm9j
dXNlZEVsZW1lbnQpCiB7CiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oU2Ny
aXB0RGlzYWxsb3dlZFNjb3BlOjpJbk1haW5UaHJlYWQ6OmlzU2NyaXB0QWxsb3dlZCgpKTsKICAg
ICBBU1NFUlQoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5mb2N1c291dEV2ZW50IHx8IGV2ZW50
VHlwZSA9PSBldmVudE5hbWVzKCkuRE9NRm9jdXNPdXRFdmVudCk7CkBAIC0yOTgwLDEyICsyOTgw
LDEyIEBAIFN0cmluZyBFbGVtZW50Ojp0aXRsZSgpIGNvbnN0CiAgICAgcmV0dXJuIFN0cmluZygp
OwogfQogCi1jb25zdCBBdG9taWNTdHJpbmcmIEVsZW1lbnQ6OnBzZXVkbygpIGNvbnN0Citjb25z
dCBBdG9tU3RyaW5nJiBFbGVtZW50Ojpwc2V1ZG8oKSBjb25zdAogewogICAgIHJldHVybiBhdHRy
aWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHBzZXVkb0F0dHIpOwogfQogCi12b2lkIEVsZW1l
bnQ6OnNldFBzZXVkbyhjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQordm9pZCBFbGVtZW50Ojpz
ZXRQc2V1ZG8oY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCiB7CiAgICAgc2V0QXR0cmlidXRlV2l0
aG91dFN5bmNocm9uaXphdGlvbihwc2V1ZG9BdHRyLCB2YWx1ZSk7CiB9CkBAIC0zMjUzLDcgKzMy
NTMsNyBAQCB1bnNpZ25lZCBFbGVtZW50OjpyYXJlRGF0YUNoaWxkSW5kZXgoKSBjb25zdAogICAg
IHJldHVybiBlbGVtZW50UmFyZURhdGEoKS0+Y2hpbGRJbmRleCgpOwogfQogCi1BdG9taWNTdHJp
bmcgRWxlbWVudDo6Y29tcHV0ZUluaGVyaXRlZExhbmd1YWdlKCkgY29uc3QKK0F0b21TdHJpbmcg
RWxlbWVudDo6Y29tcHV0ZUluaGVyaXRlZExhbmd1YWdlKCkgY29uc3QKIHsKICAgICBpZiAoY29u
c3QgRWxlbWVudERhdGEqIGVsZW1lbnREYXRhID0gdGhpcy0+ZWxlbWVudERhdGEoKSkgewogICAg
ICAgICBpZiAoY29uc3QgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBlbGVtZW50RGF0YS0+ZmluZExh
bmd1YWdlQXR0cmlidXRlKCkpCkBAIC0zNDQzLDcgKzM0NDMsNyBAQCBpbnQgRWxlbWVudDo6Z2V0
SW50ZWdyYWxBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgY29u
c3QKIAogdm9pZCBFbGVtZW50OjpzZXRJbnRlZ3JhbEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyaWJ1dGVOYW1lLCBpbnQgdmFsdWUpCiB7Ci0gICAgc2V0QXR0cmlidXRlKGF0dHJp
YnV0ZU5hbWUsIEF0b21pY1N0cmluZzo6bnVtYmVyKHZhbHVlKSk7CisgICAgc2V0QXR0cmlidXRl
KGF0dHJpYnV0ZU5hbWUsIEF0b21TdHJpbmc6Om51bWJlcih2YWx1ZSkpOwogfQogCiB1bnNpZ25l
ZCBFbGVtZW50OjpnZXRVbnNpZ25lZEludGVncmFsQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJpYnV0ZU5hbWUpIGNvbnN0CkBAIC0zNDUzLDcgKzM0NTMsNyBAQCB1bnNpZ25lZCBF
bGVtZW50OjpnZXRVbnNpZ25lZEludGVncmFsQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJpYnV0ZU5hbQogCiB2b2lkIEVsZW1lbnQ6OnNldFVuc2lnbmVkSW50ZWdyYWxBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgdW5zaWduZWQgdmFsdWUpCiB7
Ci0gICAgc2V0QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUsIEF0b21pY1N0cmluZzo6bnVtYmVyKGxp
bWl0VG9Pbmx5SFRNTE5vbk5lZ2F0aXZlKHZhbHVlKSkpOworICAgIHNldEF0dHJpYnV0ZShhdHRy
aWJ1dGVOYW1lLCBBdG9tU3RyaW5nOjpudW1iZXIobGltaXRUb09ubHlIVE1MTm9uTmVnYXRpdmUo
dmFsdWUpKSk7CiB9CiAKIGJvb2wgRWxlbWVudDo6Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihj
b25zdCBOb2RlJiBjaGlsZCkgY29uc3QKQEAgLTM1ODksNyArMzU4OSw3IEBAIFJlc2l6ZU9ic2Vy
dmVyRGF0YSogRWxlbWVudDo6cmVzaXplT2JzZXJ2ZXJEYXRhKCkKIAogU3BlbGxjaGVja0F0dHJp
YnV0ZVN0YXRlIEVsZW1lbnQ6OnNwZWxsY2hlY2tBdHRyaWJ1dGVTdGF0ZSgpIGNvbnN0CiB7Ci0g
ICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSA9IGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6
YXRpb24oSFRNTE5hbWVzOjpzcGVsbGNoZWNrQXR0cik7CisgICAgY29uc3QgQXRvbVN0cmluZyYg
dmFsdWUgPSBhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6c3BlbGxj
aGVja0F0dHIpOwogICAgIGlmICh2YWx1ZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIFNwZWxs
Y2hlY2tBdHRyaWJ1dGVEZWZhdWx0OwogICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkgfHwgZXF1YWxM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFsdWUsICJ0cnVlIikpCkBAIC0zNjM1LDcgKzM2MzUs
NyBAQCBib29sIEVsZW1lbnQ6Omhhc05hbWVkTm9kZU1hcCgpIGNvbnN0CiB9CiAjZW5kaWYKIAot
aW5saW5lIHZvaWQgRWxlbWVudDo6dXBkYXRlTmFtZShjb25zdCBBdG9taWNTdHJpbmcmIG9sZE5h
bWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3TmFtZSkKK2lubGluZSB2b2lkIEVsZW1lbnQ6OnVw
ZGF0ZU5hbWUoY29uc3QgQXRvbVN0cmluZyYgb2xkTmFtZSwgY29uc3QgQXRvbVN0cmluZyYgbmV3
TmFtZSkKIHsKICAgICBpZiAoIWlzSW5UcmVlU2NvcGUoKSkKICAgICAgICAgcmV0dXJuOwpAQCAt
MzY1Miw3ICszNjUyLDcgQEAgaW5saW5lIHZvaWQgRWxlbWVudDo6dXBkYXRlTmFtZShjb25zdCBB
dG9taWNTdHJpbmcmIG9sZE5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYKICAgICB1cGRhdGVOYW1l
Rm9yRG9jdW1lbnQoZG93bmNhc3Q8SFRNTERvY3VtZW50Pihkb2N1bWVudCgpKSwgb2xkTmFtZSwg
bmV3TmFtZSk7CiB9CiAKLXZvaWQgRWxlbWVudDo6dXBkYXRlTmFtZUZvclRyZWVTY29wZShUcmVl
U2NvcGUmIHNjb3BlLCBjb25zdCBBdG9taWNTdHJpbmcmIG9sZE5hbWUsIGNvbnN0IEF0b21pY1N0
cmluZyYgbmV3TmFtZSkKK3ZvaWQgRWxlbWVudDo6dXBkYXRlTmFtZUZvclRyZWVTY29wZShUcmVl
U2NvcGUmIHNjb3BlLCBjb25zdCBBdG9tU3RyaW5nJiBvbGROYW1lLCBjb25zdCBBdG9tU3RyaW5n
JiBuZXdOYW1lKQogewogICAgIEFTU0VSVChvbGROYW1lICE9IG5ld05hbWUpOwogCkBAIC0zNjYy
LDcgKzM2NjIsNyBAQCB2b2lkIEVsZW1lbnQ6OnVwZGF0ZU5hbWVGb3JUcmVlU2NvcGUoVHJlZVNj
b3BlJiBzY29wZSwgY29uc3QgQXRvbWljU3RyaW5nJiBvbGROYQogICAgICAgICBzY29wZS5hZGRF
bGVtZW50QnlOYW1lKCpuZXdOYW1lLmltcGwoKSwgKnRoaXMpOwogfQogCi12b2lkIEVsZW1lbnQ6
OnVwZGF0ZU5hbWVGb3JEb2N1bWVudChIVE1MRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBBdG9t
aWNTdHJpbmcmIG9sZE5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3TmFtZSkKK3ZvaWQgRWxl
bWVudDo6dXBkYXRlTmFtZUZvckRvY3VtZW50KEhUTUxEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0
IEF0b21TdHJpbmcmIG9sZE5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIG5ld05hbWUpCiB7CiAgICAg
QVNTRVJUKG9sZE5hbWUgIT0gbmV3TmFtZSk7CiAKQEAgLTM2NzAsNyArMzY3MCw3IEBAIHZvaWQg
RWxlbWVudDo6dXBkYXRlTmFtZUZvckRvY3VtZW50KEhUTUxEb2N1bWVudCYgZG9jdW1lbnQsIGNv
bnN0IEF0b21pY1N0cmluZyYKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKFdpbmRvd05hbWVD
b2xsZWN0aW9uOjplbGVtZW50TWF0Y2hlc0lmTmFtZUF0dHJpYnV0ZU1hdGNoKCp0aGlzKSkgewot
ICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGlkID0gV2luZG93TmFtZUNvbGxlY3Rpb246OmVs
ZW1lbnRNYXRjaGVzSWZJZEF0dHJpYnV0ZU1hdGNoKCp0aGlzKSA/IGdldElkQXR0cmlidXRlKCkg
OiBudWxsQXRvbSgpOworICAgICAgICBjb25zdCBBdG9tU3RyaW5nJiBpZCA9IFdpbmRvd05hbWVD
b2xsZWN0aW9uOjplbGVtZW50TWF0Y2hlc0lmSWRBdHRyaWJ1dGVNYXRjaCgqdGhpcykgPyBnZXRJ
ZEF0dHJpYnV0ZSgpIDogbnVsbEF0b20oKTsKICAgICAgICAgaWYgKCFvbGROYW1lLmlzRW1wdHko
KSAmJiBvbGROYW1lICE9IGlkKQogICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlV2luZG93TmFt
ZWRJdGVtKCpvbGROYW1lLmltcGwoKSwgKnRoaXMpOwogICAgICAgICBpZiAoIW5ld05hbWUuaXNF
bXB0eSgpICYmIG5ld05hbWUgIT0gaWQpCkBAIC0zNjc4LDcgKzM2NzgsNyBAQCB2b2lkIEVsZW1l
bnQ6OnVwZGF0ZU5hbWVGb3JEb2N1bWVudChIVE1MRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBB
dG9taWNTdHJpbmcmCiAgICAgfQogCiAgICAgaWYgKERvY3VtZW50TmFtZUNvbGxlY3Rpb246OmVs
ZW1lbnRNYXRjaGVzSWZOYW1lQXR0cmlidXRlTWF0Y2goKnRoaXMpKSB7Ci0gICAgICAgIGNvbnN0
IEF0b21pY1N0cmluZyYgaWQgPSBEb2N1bWVudE5hbWVDb2xsZWN0aW9uOjplbGVtZW50TWF0Y2hl
c0lmSWRBdHRyaWJ1dGVNYXRjaCgqdGhpcykgPyBnZXRJZEF0dHJpYnV0ZSgpIDogbnVsbEF0b20o
KTsKKyAgICAgICAgY29uc3QgQXRvbVN0cmluZyYgaWQgPSBEb2N1bWVudE5hbWVDb2xsZWN0aW9u
OjplbGVtZW50TWF0Y2hlc0lmSWRBdHRyaWJ1dGVNYXRjaCgqdGhpcykgPyBnZXRJZEF0dHJpYnV0
ZSgpIDogbnVsbEF0b20oKTsKICAgICAgICAgaWYgKCFvbGROYW1lLmlzRW1wdHkoKSAmJiBvbGRO
YW1lICE9IGlkKQogICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRG9jdW1lbnROYW1lZEl0ZW0o
Km9sZE5hbWUuaW1wbCgpLCAqdGhpcyk7CiAgICAgICAgIGlmICghbmV3TmFtZS5pc0VtcHR5KCkg
JiYgbmV3TmFtZSAhPSBpZCkKQEAgLTM2ODYsNyArMzY4Niw3IEBAIHZvaWQgRWxlbWVudDo6dXBk
YXRlTmFtZUZvckRvY3VtZW50KEhUTUxEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IEF0b21pY1N0
cmluZyYKICAgICB9CiB9CiAKLWlubGluZSB2b2lkIEVsZW1lbnQ6OnVwZGF0ZUlkKGNvbnN0IEF0
b21pY1N0cmluZyYgb2xkSWQsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3SWQsIE5vdGlmeU9ic2Vy
dmVycyBub3RpZnlPYnNlcnZlcnMpCitpbmxpbmUgdm9pZCBFbGVtZW50Ojp1cGRhdGVJZChjb25z
dCBBdG9tU3RyaW5nJiBvbGRJZCwgY29uc3QgQXRvbVN0cmluZyYgbmV3SWQsIE5vdGlmeU9ic2Vy
dmVycyBub3RpZnlPYnNlcnZlcnMpCiB7CiAgICAgaWYgKCFpc0luVHJlZVNjb3BlKCkpCiAgICAg
ICAgIHJldHVybjsKQEAgLTM3MDMsNyArMzcwMyw3IEBAIGlubGluZSB2b2lkIEVsZW1lbnQ6OnVw
ZGF0ZUlkKGNvbnN0IEF0b21pY1N0cmluZyYgb2xkSWQsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3
CiAgICAgdXBkYXRlSWRGb3JEb2N1bWVudChkb3duY2FzdDxIVE1MRG9jdW1lbnQ+KGRvY3VtZW50
KCkpLCBvbGRJZCwgbmV3SWQsIFVwZGF0ZUhUTUxEb2N1bWVudE5hbWVkSXRlbU1hcHNPbmx5SWZE
aWZmZXJzRnJvbU5hbWVBdHRyaWJ1dGUpOwogfQogCi12b2lkIEVsZW1lbnQ6OnVwZGF0ZUlkRm9y
VHJlZVNjb3BlKFRyZWVTY29wZSYgc2NvcGUsIGNvbnN0IEF0b21pY1N0cmluZyYgb2xkSWQsIGNv
bnN0IEF0b21pY1N0cmluZyYgbmV3SWQsIE5vdGlmeU9ic2VydmVycyBub3RpZnlPYnNlcnZlcnMp
Cit2b2lkIEVsZW1lbnQ6OnVwZGF0ZUlkRm9yVHJlZVNjb3BlKFRyZWVTY29wZSYgc2NvcGUsIGNv
bnN0IEF0b21TdHJpbmcmIG9sZElkLCBjb25zdCBBdG9tU3RyaW5nJiBuZXdJZCwgTm90aWZ5T2Jz
ZXJ2ZXJzIG5vdGlmeU9ic2VydmVycykKIHsKICAgICBBU1NFUlQoaXNJblRyZWVTY29wZSgpKTsK
ICAgICBBU1NFUlQob2xkSWQgIT0gbmV3SWQpOwpAQCAtMzcxNCw3ICszNzE0LDcgQEAgdm9pZCBF
bGVtZW50Ojp1cGRhdGVJZEZvclRyZWVTY29wZShUcmVlU2NvcGUmIHNjb3BlLCBjb25zdCBBdG9t
aWNTdHJpbmcmIG9sZElkLAogICAgICAgICBzY29wZS5hZGRFbGVtZW50QnlJZCgqbmV3SWQuaW1w
bCgpLCAqdGhpcywgbm90aWZ5T2JzZXJ2ZXJzID09IE5vdGlmeU9ic2VydmVyczo6WWVzKTsKIH0K
IAotdm9pZCBFbGVtZW50Ojp1cGRhdGVJZEZvckRvY3VtZW50KEhUTUxEb2N1bWVudCYgZG9jdW1l
bnQsIGNvbnN0IEF0b21pY1N0cmluZyYgb2xkSWQsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3SWQs
IEhUTUxEb2N1bWVudE5hbWVkSXRlbU1hcHNVcGRhdGluZ0NvbmRpdGlvbiBjb25kaXRpb24pCit2
b2lkIEVsZW1lbnQ6OnVwZGF0ZUlkRm9yRG9jdW1lbnQoSFRNTERvY3VtZW50JiBkb2N1bWVudCwg
Y29uc3QgQXRvbVN0cmluZyYgb2xkSWQsIGNvbnN0IEF0b21TdHJpbmcmIG5ld0lkLCBIVE1MRG9j
dW1lbnROYW1lZEl0ZW1NYXBzVXBkYXRpbmdDb25kaXRpb24gY29uZGl0aW9uKQogewogICAgIEFT
U0VSVChpc0Nvbm5lY3RlZCgpKTsKICAgICBBU1NFUlQob2xkSWQgIT0gbmV3SWQpOwpAQCAtMzcy
Myw3ICszNzIzLDcgQEAgdm9pZCBFbGVtZW50Ojp1cGRhdGVJZEZvckRvY3VtZW50KEhUTUxEb2N1
bWVudCYgZG9jdW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgb2wKICAgICAgICAgcmV0dXJuOwog
CiAgICAgaWYgKFdpbmRvd05hbWVDb2xsZWN0aW9uOjplbGVtZW50TWF0Y2hlc0lmSWRBdHRyaWJ1
dGVNYXRjaCgqdGhpcykpIHsKLSAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lID0gY29u
ZGl0aW9uID09IFVwZGF0ZUhUTUxEb2N1bWVudE5hbWVkSXRlbU1hcHNPbmx5SWZEaWZmZXJzRnJv
bU5hbWVBdHRyaWJ1dGUgJiYgV2luZG93TmFtZUNvbGxlY3Rpb246OmVsZW1lbnRNYXRjaGVzSWZO
YW1lQXR0cmlidXRlTWF0Y2goKnRoaXMpID8gZ2V0TmFtZUF0dHJpYnV0ZSgpIDogbnVsbEF0b20o
KTsKKyAgICAgICAgY29uc3QgQXRvbVN0cmluZyYgbmFtZSA9IGNvbmRpdGlvbiA9PSBVcGRhdGVI
VE1MRG9jdW1lbnROYW1lZEl0ZW1NYXBzT25seUlmRGlmZmVyc0Zyb21OYW1lQXR0cmlidXRlICYm
IFdpbmRvd05hbWVDb2xsZWN0aW9uOjplbGVtZW50TWF0Y2hlc0lmTmFtZUF0dHJpYnV0ZU1hdGNo
KCp0aGlzKSA/IGdldE5hbWVBdHRyaWJ1dGUoKSA6IG51bGxBdG9tKCk7CiAgICAgICAgIGlmICgh
b2xkSWQuaXNFbXB0eSgpICYmIG9sZElkICE9IG5hbWUpCiAgICAgICAgICAgICBkb2N1bWVudC5y
ZW1vdmVXaW5kb3dOYW1lZEl0ZW0oKm9sZElkLmltcGwoKSwgKnRoaXMpOwogICAgICAgICBpZiAo
IW5ld0lkLmlzRW1wdHkoKSAmJiBuZXdJZCAhPSBuYW1lKQpAQCAtMzczMSw3ICszNzMxLDcgQEAg
dm9pZCBFbGVtZW50Ojp1cGRhdGVJZEZvckRvY3VtZW50KEhUTUxEb2N1bWVudCYgZG9jdW1lbnQs
IGNvbnN0IEF0b21pY1N0cmluZyYgb2wKICAgICB9CiAKICAgICBpZiAoRG9jdW1lbnROYW1lQ29s
bGVjdGlvbjo6ZWxlbWVudE1hdGNoZXNJZklkQXR0cmlidXRlTWF0Y2goKnRoaXMpKSB7Ci0gICAg
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSA9IGNvbmRpdGlvbiA9PSBVcGRhdGVIVE1MRG9j
dW1lbnROYW1lZEl0ZW1NYXBzT25seUlmRGlmZmVyc0Zyb21OYW1lQXR0cmlidXRlICYmIERvY3Vt
ZW50TmFtZUNvbGxlY3Rpb246OmVsZW1lbnRNYXRjaGVzSWZOYW1lQXR0cmlidXRlTWF0Y2goKnRo
aXMpID8gZ2V0TmFtZUF0dHJpYnV0ZSgpIDogbnVsbEF0b20oKTsKKyAgICAgICAgY29uc3QgQXRv
bVN0cmluZyYgbmFtZSA9IGNvbmRpdGlvbiA9PSBVcGRhdGVIVE1MRG9jdW1lbnROYW1lZEl0ZW1N
YXBzT25seUlmRGlmZmVyc0Zyb21OYW1lQXR0cmlidXRlICYmIERvY3VtZW50TmFtZUNvbGxlY3Rp
b246OmVsZW1lbnRNYXRjaGVzSWZOYW1lQXR0cmlidXRlTWF0Y2goKnRoaXMpID8gZ2V0TmFtZUF0
dHJpYnV0ZSgpIDogbnVsbEF0b20oKTsKICAgICAgICAgaWYgKCFvbGRJZC5pc0VtcHR5KCkgJiYg
b2xkSWQgIT0gbmFtZSkKICAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZURvY3VtZW50TmFtZWRJ
dGVtKCpvbGRJZC5pbXBsKCksICp0aGlzKTsKICAgICAgICAgaWYgKCFuZXdJZC5pc0VtcHR5KCkg
JiYgbmV3SWQgIT0gbmFtZSkKQEAgLTM3MzksNyArMzczOSw3IEBAIHZvaWQgRWxlbWVudDo6dXBk
YXRlSWRGb3JEb2N1bWVudChIVE1MRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBBdG9taWNTdHJp
bmcmIG9sCiAgICAgfQogfQogCi12b2lkIEVsZW1lbnQ6OnVwZGF0ZUxhYmVsKFRyZWVTY29wZSYg
c2NvcGUsIGNvbnN0IEF0b21pY1N0cmluZyYgb2xkRm9yQXR0cmlidXRlVmFsdWUsIGNvbnN0IEF0
b21pY1N0cmluZyYgbmV3Rm9yQXR0cmlidXRlVmFsdWUpCit2b2lkIEVsZW1lbnQ6OnVwZGF0ZUxh
YmVsKFRyZWVTY29wZSYgc2NvcGUsIGNvbnN0IEF0b21TdHJpbmcmIG9sZEZvckF0dHJpYnV0ZVZh
bHVlLCBjb25zdCBBdG9tU3RyaW5nJiBuZXdGb3JBdHRyaWJ1dGVWYWx1ZSkKIHsKICAgICBBU1NF
UlQoaGFzVGFnTmFtZShsYWJlbFRhZykpOwogCkBAIC0zNzU1LDcgKzM3NTUsNyBAQCB2b2lkIEVs
ZW1lbnQ6OnVwZGF0ZUxhYmVsKFRyZWVTY29wZSYgc2NvcGUsIGNvbnN0IEF0b21pY1N0cmluZyYg
b2xkRm9yQXR0cmlidXRlVgogICAgICAgICBzY29wZS5hZGRMYWJlbCgqbmV3Rm9yQXR0cmlidXRl
VmFsdWUuaW1wbCgpLCBkb3duY2FzdDxIVE1MTGFiZWxFbGVtZW50PigqdGhpcykpOwogfQogCi12
b2lkIEVsZW1lbnQ6OndpbGxNb2RpZnlBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFt
ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdW
YWx1ZSkKK3ZvaWQgRWxlbWVudDo6d2lsbE1vZGlmeUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbVN0cmluZyYg
bmV3VmFsdWUpCiB7CiAgICAgaWYgKG5hbWUgPT0gSFRNTE5hbWVzOjppZEF0dHIpCiAgICAgICAg
IHVwZGF0ZUlkKG9sZFZhbHVlLCBuZXdWYWx1ZSwgTm90aWZ5T2JzZXJ2ZXJzOjpObyk7IC8vIFdp
bGwgbm90aWZ5IG9ic2VydmVycyBhZnRlciB0aGUgYXR0cmlidXRlIGlzIGFjdHVhbGx5IGNoYW5n
ZWQuCkBAIC0zNzcyLDIxICszNzcyLDIxIEBAIHZvaWQgRWxlbWVudDo6d2lsbE1vZGlmeUF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmCiAgICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTW9kaWZ5RE9NQXR0cihkb2N1bWVudCgpLCAq
dGhpcywgb2xkVmFsdWUsIG5ld1ZhbHVlKTsKIH0KIAotdm9pZCBFbGVtZW50OjpkaWRBZGRBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1
ZSkKK3ZvaWQgRWxlbWVudDo6ZGlkQWRkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5h
bWUsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKQogewogICAgIGF0dHJpYnV0ZUNoYW5nZWQobmFt
ZSwgbnVsbEF0b20oKSwgdmFsdWUpOwogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
TW9kaWZ5RE9NQXR0cihkb2N1bWVudCgpLCAqdGhpcywgbmFtZS5sb2NhbE5hbWUoKSwgdmFsdWUp
OwogICAgIGRpc3BhdGNoU3VidHJlZU1vZGlmaWVkRXZlbnQoKTsKIH0KIAotdm9pZCBFbGVtZW50
OjpkaWRNb2RpZnlBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRv
bWljU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSkKK3ZvaWQg
RWxlbWVudDo6ZGlkTW9kaWZ5QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNv
bnN0IEF0b21TdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBBdG9tU3RyaW5nJiBuZXdWYWx1ZSkKIHsK
ICAgICBhdHRyaWJ1dGVDaGFuZ2VkKG5hbWUsIG9sZFZhbHVlLCBuZXdWYWx1ZSk7CiAgICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRNb2RpZnlET01BdHRyKGRvY3VtZW50KCksICp0aGlz
LCBuYW1lLmxvY2FsTmFtZSgpLCBuZXdWYWx1ZSk7CiAgICAgLy8gRG8gbm90IGRpc3BhdGNoIGEg
RE9NU3VidHJlZU1vZGlmaWVkIGV2ZW50IGhlcmU7IHNlZSBidWcgODExNDEuCiB9CiAKLXZvaWQg
RWxlbWVudDo6ZGlkUmVtb3ZlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNv
bnN0IEF0b21pY1N0cmluZyYgb2xkVmFsdWUpCit2b2lkIEVsZW1lbnQ6OmRpZFJlbW92ZUF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiBvbGRWYWx1
ZSkKIHsKICAgICBhdHRyaWJ1dGVDaGFuZ2VkKG5hbWUsIG9sZFZhbHVlLCBudWxsQXRvbSgpKTsK
ICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlbW92ZURPTUF0dHIoZG9jdW1lbnQo
KSwgKnRoaXMsIG5hbWUubG9jYWxOYW1lKCkpOwpAQCAtMzgwNSw3ICszODA1LDcgQEAgdm9pZCBF
bGVtZW50OjpzZXRTYXZlZExheWVyU2Nyb2xsUG9zaXRpb24oY29uc3QgSW50UG9pbnQmIHBvc2l0
aW9uKQogICAgIGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpLnNldFNhdmVkTGF5ZXJTY3JvbGxQb3Np
dGlvbihwb3NpdGlvbik7CiB9CiAKLVJlZlB0cjxBdHRyPiBFbGVtZW50OjphdHRySWZFeGlzdHMo
Y29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUsIGJvb2wgc2hvdWxkSWdub3JlQXR0cmlidXRl
Q2FzZSkKK1JlZlB0cjxBdHRyPiBFbGVtZW50OjphdHRySWZFeGlzdHMoY29uc3QgQXRvbVN0cmlu
ZyYgbG9jYWxOYW1lLCBib29sIHNob3VsZElnbm9yZUF0dHJpYnV0ZUNhc2UpCiB7CiAgICAgaWYg
KGF1dG8qIGF0dHJOb2RlTGlzdCA9IGF0dHJOb2RlTGlzdEZvckVsZW1lbnQoKnRoaXMpKQogICAg
ICAgICByZXR1cm4gZmluZEF0dHJOb2RlSW5MaXN0KCphdHRyTm9kZUxpc3QsIGxvY2FsTmFtZSwg
c2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZSk7CkBAIC0zODMxLDcgKzM4MzEsNyBAQCBSZWY8QXR0
cj4gRWxlbWVudDo6ZW5zdXJlQXR0cihjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKQogICAgIHJl
dHVybiBhdHRyTm9kZS5yZWxlYXNlTm9uTnVsbCgpOwogfQogCi12b2lkIEVsZW1lbnQ6OmRldGFj
aEF0dHJOb2RlRnJvbUVsZW1lbnRXaXRoVmFsdWUoQXR0ciogYXR0ck5vZGUsIGNvbnN0IEF0b21p
Y1N0cmluZyYgdmFsdWUpCit2b2lkIEVsZW1lbnQ6OmRldGFjaEF0dHJOb2RlRnJvbUVsZW1lbnRX
aXRoVmFsdWUoQXR0ciogYXR0ck5vZGUsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKQogewogICAg
IEFTU0VSVChoYXNTeW50aGV0aWNBdHRyQ2hpbGROb2RlcygpKTsKICAgICBhdHRyTm9kZS0+ZGV0
YWNoRnJvbUVsZW1lbnRXaXRoVmFsdWUodmFsdWUpOwpAQCAtMzk0OSwxNCArMzk0OSwxNCBAQCB2
b2lkIEVsZW1lbnQ6OmNsb25lQXR0cmlidXRlc0Zyb21FbGVtZW50KGNvbnN0IEVsZW1lbnQmIG90
aGVyKQogICAgIC8vIEZvcnR1bmF0ZWx5LCB0aG9zZSBuYW1lZCBpdGVtIG1hcHMgYXJlIG9ubHkg
dXBkYXRlZCB3aGVuIHRoaXMgZWxlbWVudCBpcyBpbiB0aGUgZG9jdW1lbnQsIHdoaWNoIHNob3Vs
ZCBuZXZlciBiZSB0aGUgY2FzZS4KICAgICBBU1NFUlQoIWlzQ29ubmVjdGVkKCkpOwogCi0gICAg
Y29uc3QgQXRvbWljU3RyaW5nJiBvbGRJRCA9IGdldElkQXR0cmlidXRlKCk7Ci0gICAgY29uc3Qg
QXRvbWljU3RyaW5nJiBuZXdJRCA9IG90aGVyLmdldElkQXR0cmlidXRlKCk7CisgICAgY29uc3Qg
QXRvbVN0cmluZyYgb2xkSUQgPSBnZXRJZEF0dHJpYnV0ZSgpOworICAgIGNvbnN0IEF0b21TdHJp
bmcmIG5ld0lEID0gb3RoZXIuZ2V0SWRBdHRyaWJ1dGUoKTsKIAogICAgIGlmICghb2xkSUQuaXNO
dWxsKCkgfHwgIW5ld0lELmlzTnVsbCgpKQogICAgICAgICB1cGRhdGVJZChvbGRJRCwgbmV3SUQs
IE5vdGlmeU9ic2VydmVyczo6Tm8pOyAvLyBXaWxsIG5vdGlmeSBvYnNlcnZlcnMgYWZ0ZXIgdGhl
IGF0dHJpYnV0ZSBpcyBhY3R1YWxseSBjaGFuZ2VkLgogCi0gICAgY29uc3QgQXRvbWljU3RyaW5n
JiBvbGROYW1lID0gZ2V0TmFtZUF0dHJpYnV0ZSgpOwotICAgIGNvbnN0IEF0b21pY1N0cmluZyYg
bmV3TmFtZSA9IG90aGVyLmdldE5hbWVBdHRyaWJ1dGUoKTsKKyAgICBjb25zdCBBdG9tU3RyaW5n
JiBvbGROYW1lID0gZ2V0TmFtZUF0dHJpYnV0ZSgpOworICAgIGNvbnN0IEF0b21TdHJpbmcmIG5l
d05hbWUgPSBvdGhlci5nZXROYW1lQXR0cmlidXRlKCk7CiAKICAgICBpZiAoIW9sZE5hbWUuaXNO
dWxsKCkgfHwgIW5ld05hbWUuaXNOdWxsKCkpCiAgICAgICAgIHVwZGF0ZU5hbWUob2xkTmFtZSwg
bmV3TmFtZSk7CkBAIC00MTU4LDcgKzQxNTgsNyBAQCBFbGVtZW50KiBFbGVtZW50OjpmaW5kQW5j
aG9yRWxlbWVudEZvckxpbmsoU3RyaW5nJiBvdXRBbmNob3JOYW1lKQogICAgIGlmICghaXNMaW5r
KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBo
cmVmID0gYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OmhyZWZBdHRy
KTsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBocmVmID0gYXR0cmlidXRlV2l0aG91dFN5bmNocm9u
aXphdGlvbihIVE1MTmFtZXM6OmhyZWZBdHRyKTsKICAgICBpZiAoaHJlZi5pc051bGwoKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IDc4NGUzY2RiNWFi
NjczZjA2NjdlZmZlMDE5OGMxYjRjNTBhZGM1MDUuLjQ0NzVkNzU4YTU4MGU2MWE3ZmZiNmU5NTk2
YTgxMDg5YTczYjdjYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtODQsMTIgKzg0LDEyIEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIH5FbGVtZW50KCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29s
IGhhc0F0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgY29uc3QgQXRvbWljU3RyaW5nJiBnZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IEF0b21TdHJpbmcmIGdldEF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUu
Li4gUXVhbGlmaWVkTmFtZXM+Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBnZXRBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IFF1YWxpZmllZE5hbWVzJi4uLikgY29uc3Q7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihjb25zdCBRdWFsaWZpZWROYW1lJiwgY29u
c3QgQXRvbWljU3RyaW5nJiB2YWx1ZSk7Ci0gICAgdm9pZCBzZXRTeW5jaHJvbml6ZWRMYXp5QXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKTsK
KyAgICBjb25zdCBBdG9tU3RyaW5nJiBnZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IGNvbnN0IFF1YWxpZmllZE5hbWVzJi4uLikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmIHZh
bHVlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24oY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKTsK
KyAgICB2b2lkIHNldFN5bmNocm9uaXplZExhenlBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKTsKICAgICBib29sIHJlbW92ZUF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgVmVjdG9yPFN0cmluZz4gZ2V0QXR0cmlidXRlTmFt
ZXMoKSBjb25zdDsKIApAQCAtMTAyLDcgKzEwMiw3IEBAIHB1YmxpYzoKICAgICAvLyBDYWxsIHRo
aXMgdG8gZ2V0IHRoZSB2YWx1ZSBvZiBhbiBhdHRyaWJ1dGUgdGhhdCBpcyBrbm93biBub3QgdG8g
YmUgdGhlIHN0eWxlCiAgICAgLy8gYXR0cmlidXRlIG9yIG9uZSBvZiB0aGUgU1ZHIGFuaW1hdGFi
bGUgYXR0cmlidXRlcy4KICAgICBib29sIGhhc0F0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRp
b24oY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwotICAgIGNvbnN0IEF0b21pY1N0cmluZyYg
YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihjb25zdCBRdWFsaWZpZWROYW1lJikgY29u
c3Q7CisgICAgY29uc3QgQXRvbVN0cmluZyYgYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlv
bihjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7CiAjaWZuZGVmIE5ERUJVRwogICAgIFdFQkNP
UkVfRVhQT1JUIGJvb2wgZmFzdEF0dHJpYnV0ZUxvb2t1cEFsbG93ZWQoY29uc3QgUXVhbGlmaWVk
TmFtZSYpIGNvbnN0OwogI2VuZGlmCkBAIC0xMTUsMjcgKzExNSwyNyBAQCBwdWJsaWM6CiAgICAg
Ly8gaW4gc3R5bGUgYXR0cmlidXRlIG9yIG9uZSBvZiB0aGUgU1ZHIGFuaW1hdGlvbiBhdHRyaWJ1
dGVzLgogICAgIGJvb2wgaGFzQXR0cmlidXRlc1dpdGhvdXRVcGRhdGUoKSBjb25zdDsKIAotICAg
IFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzQXR0cmlidXRlKGNvbnN0IEF0b21pY1N0cmluZyYgcXVh
bGlmaWVkTmFtZSkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNBdHRyaWJ1dGVO
Uyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgQXRvbWljU3RyaW5nJiBs
b2NhbE5hbWUpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzQXR0cmlidXRlKGNv
bnN0IEF0b21TdHJpbmcmIHF1YWxpZmllZE5hbWUpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgaGFzQXR0cmlidXRlTlMoY29uc3QgQXRvbVN0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25z
dCBBdG9tU3RyaW5nJiBsb2NhbE5hbWUpIGNvbnN0OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgY29u
c3QgQXRvbWljU3RyaW5nJiBnZXRBdHRyaWJ1dGUoY29uc3QgQXRvbWljU3RyaW5nJiBxdWFsaWZp
ZWROYW1lKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBBdG9taWNTdHJpbmcmIGdl
dEF0dHJpYnV0ZU5TKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBBdG9t
aWNTdHJpbmcmIGxvY2FsTmFtZSkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgQXRv
bVN0cmluZyYgZ2V0QXR0cmlidXRlKGNvbnN0IEF0b21TdHJpbmcmIHF1YWxpZmllZE5hbWUpIGNv
bnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IEF0b21TdHJpbmcmIGdldEF0dHJpYnV0ZU5T
KGNvbnN0IEF0b21TdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgQXRvbVN0cmluZyYgbG9jYWxO
YW1lKSBjb25zdDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldEF0
dHJpYnV0ZShjb25zdCBBdG9taWNTdHJpbmcmIHF1YWxpZmllZE5hbWUsIGNvbnN0IEF0b21pY1N0
cmluZyYgdmFsdWUpOwotICAgIHN0YXRpYyBFeGNlcHRpb25PcjxRdWFsaWZpZWROYW1lPiBwYXJz
ZUF0dHJpYnV0ZU5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IEF0
b21pY1N0cmluZyYgcXVhbGlmaWVkTmFtZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9u
T3I8dm9pZD4gc2V0QXR0cmlidXRlTlMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkks
IGNvbnN0IEF0b21pY1N0cmluZyYgcXVhbGlmaWVkTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2
YWx1ZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8dm9pZD4gc2V0QXR0cmlidXRl
KGNvbnN0IEF0b21TdHJpbmcmIHF1YWxpZmllZE5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVl
KTsKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UXVhbGlmaWVkTmFtZT4gcGFyc2VBdHRyaWJ1dGVO
YW1lKGNvbnN0IEF0b21TdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgQXRvbVN0cmluZyYgcXVh
bGlmaWVkTmFtZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8dm9pZD4gc2V0QXR0
cmlidXRlTlMoY29uc3QgQXRvbVN0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBBdG9tU3RyaW5n
JiBxdWFsaWZpZWROYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSk7CiAKLSAgICBFeGNlcHRp
b25Pcjxib29sPiB0b2dnbGVBdHRyaWJ1dGUoY29uc3QgQXRvbWljU3RyaW5nJiBxdWFsaWZpZWRO
YW1lLCBPcHRpb25hbDxib29sPiBmb3JjZSk7CisgICAgRXhjZXB0aW9uT3I8Ym9vbD4gdG9nZ2xl
QXR0cmlidXRlKGNvbnN0IEF0b21TdHJpbmcmIHF1YWxpZmllZE5hbWUsIE9wdGlvbmFsPGJvb2w+
IGZvcmNlKTsKIAotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZ2V0SWRBdHRyaWJ1dGUoKSBjb25z
dDsKLSAgICB2b2lkIHNldElkQXR0cmlidXRlKGNvbnN0IEF0b21pY1N0cmluZyYpOworICAgIGNv
bnN0IEF0b21TdHJpbmcmIGdldElkQXR0cmlidXRlKCkgY29uc3Q7CisgICAgdm9pZCBzZXRJZEF0
dHJpYnV0ZShjb25zdCBBdG9tU3RyaW5nJik7CiAKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGdl
dE5hbWVBdHRyaWJ1dGUoKSBjb25zdDsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBnZXROYW1lQXR0
cmlidXRlKCkgY29uc3Q7CiAKICAgICAvLyBDYWxsIHRoaXMgdG8gZ2V0IHRoZSB2YWx1ZSBvZiB0
aGUgaWQgYXR0cmlidXRlIGZvciBzdHlsZSByZXNvbHV0aW9uIHB1cnBvc2VzLgogICAgIC8vIFRo
ZSB2YWx1ZSB3aWxsIGFscmVhZHkgYmUgbG93ZXJjYXNlZCBpZiB0aGUgZG9jdW1lbnQgaXMgaW4g
Y29tcGF0aWJpbGl0eSBtb2RlLAogICAgIC8vIHNvIHRoaXMgZnVuY3Rpb24gaXMgbm90IHN1aXRh
YmxlIGZvciBub24tc3R5bGUgdXNlcy4KLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGlkRm9yU3R5
bGVSZXNvbHV0aW9uKCkgY29uc3Q7CisgICAgY29uc3QgQXRvbVN0cmluZyYgaWRGb3JTdHlsZVJl
c29sdXRpb24oKSBjb25zdDsKIAogICAgIC8vIEludGVybmFsIG1ldGhvZHMgdGhhdCBhc3N1bWUg
dGhlIGV4aXN0ZW5jZSBvZiBhdHRyaWJ1dGUgc3RvcmFnZSwgb25lIHNob3VsZCB1c2UgaGFzQXR0
cmlidXRlcygpCiAgICAgLy8gYmVmb3JlIGNhbGxpbmcgdGhlbS4KQEAgLTE0NCw3ICsxNDQsNyBA
QCBwdWJsaWM6CiAgICAgY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGVBdCh1bnNpZ25lZCBpbmRl
eCkgY29uc3Q7CiAgICAgY29uc3QgQXR0cmlidXRlKiBmaW5kQXR0cmlidXRlQnlOYW1lKGNvbnN0
IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKICAgICB1bnNpZ25lZCBmaW5kQXR0cmlidXRlSW5kZXhC
eU5hbWUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QgeyByZXR1cm4gZWxlbWVudERh
dGEoKS0+ZmluZEF0dHJpYnV0ZUluZGV4QnlOYW1lKG5hbWUpOyB9Ci0gICAgdW5zaWduZWQgZmlu
ZEF0dHJpYnV0ZUluZGV4QnlOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgYm9vbCBzaG91
bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKSBjb25zdCB7IHJldHVybiBlbGVtZW50RGF0YSgpLT5maW5k
QXR0cmlidXRlSW5kZXhCeU5hbWUobmFtZSwgc2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZSk7IH0K
KyAgICB1bnNpZ25lZCBmaW5kQXR0cmlidXRlSW5kZXhCeU5hbWUoY29uc3QgQXRvbVN0cmluZyYg
bmFtZSwgYm9vbCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKSBjb25zdCB7IHJldHVybiBlbGVt
ZW50RGF0YSgpLT5maW5kQXR0cmlidXRlSW5kZXhCeU5hbWUobmFtZSwgc2hvdWxkSWdub3JlQXR0
cmlidXRlQ2FzZSk7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2Nyb2xsSW50b1ZpZXco
T3B0aW9uYWw8VmFyaWFudDxib29sLCBTY3JvbGxJbnRvVmlld09wdGlvbnM+PiYmIGFyZyk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzY3JvbGxJbnRvVmlldyhib29sIGFsaWduVG9Ub3AgPSB0
cnVlKTsKQEAgLTIwMSwxOSArMjAxLDE5IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm5zIHRoZSBh
YnNvbHV0ZSBib3VuZGluZyBib3ggdHJhbnNsYXRlZCBpbnRvIHNjcmVlbiBjb29yZGluYXRlcy4K
ICAgICBXRUJDT1JFX0VYUE9SVCBJbnRSZWN0IHNjcmVlblJlY3QoKSBjb25zdDsKIAotICAgIFdF
QkNPUkVfRVhQT1JUIGJvb2wgcmVtb3ZlQXR0cmlidXRlKGNvbnN0IEF0b21pY1N0cmluZyYgcXVh
bGlmaWVkTmFtZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCByZW1vdmVBdHRyaWJ1dGVOUyhj
b25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgQXRvbWljU3RyaW5nJiBsb2Nh
bE5hbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgcmVtb3ZlQXR0cmlidXRlKGNvbnN0IEF0
b21TdHJpbmcmIHF1YWxpZmllZE5hbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgcmVtb3Zl
QXR0cmlidXRlTlMoY29uc3QgQXRvbVN0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBBdG9tU3Ry
aW5nJiBsb2NhbE5hbWUpOwogCiAgICAgUmVmPEF0dHI+IGRldGFjaEF0dHJpYnV0ZSh1bnNpZ25l
ZCBpbmRleCk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8QXR0cj4gZ2V0QXR0cmlidXRl
Tm9kZShjb25zdCBBdG9taWNTdHJpbmcmIHF1YWxpZmllZE5hbWUpOwotICAgIFdFQkNPUkVfRVhQ
T1JUIFJlZlB0cjxBdHRyPiBnZXRBdHRyaWJ1dGVOb2RlTlMoY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lc3BhY2VVUkksIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBSZWZQdHI8QXR0cj4gZ2V0QXR0cmlidXRlTm9kZShjb25zdCBBdG9tU3RyaW5nJiBx
dWFsaWZpZWROYW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8QXR0cj4gZ2V0QXR0cmli
dXRlTm9kZU5TKGNvbnN0IEF0b21TdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgQXRvbVN0cmlu
ZyYgbG9jYWxOYW1lKTsKICAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25PcjxSZWZQdHI8QXR0
cj4+IHNldEF0dHJpYnV0ZU5vZGUoQXR0ciYpOwogICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlv
bk9yPFJlZlB0cjxBdHRyPj4gc2V0QXR0cmlidXRlTm9kZU5TKEF0dHImKTsKICAgICBXRUJDT1JF
X0VYUE9SVCBFeGNlcHRpb25PcjxSZWY8QXR0cj4+IHJlbW92ZUF0dHJpYnV0ZU5vZGUoQXR0ciYp
OwogCiAgICAgUmVmUHRyPEF0dHI+IGF0dHJJZkV4aXN0cyhjb25zdCBRdWFsaWZpZWROYW1lJik7
Ci0gICAgUmVmUHRyPEF0dHI+IGF0dHJJZkV4aXN0cyhjb25zdCBBdG9taWNTdHJpbmcmIGxvY2Fs
TmFtZSwgYm9vbCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKTsKKyAgICBSZWZQdHI8QXR0cj4g
YXR0cklmRXhpc3RzKGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsTmFtZSwgYm9vbCBzaG91bGRJZ25v
cmVBdHRyaWJ1dGVDYXNlKTsKICAgICBSZWY8QXR0cj4gZW5zdXJlQXR0cihjb25zdCBRdWFsaWZp
ZWROYW1lJik7CiAKICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPEF0dHI+PiYgYXR0ck5vZGVMaXN0
KCk7CkBAIC0yMjksMTMgKzIyOSwxMyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNUYWdOYW1lKGNv
bnN0IFNWR1F1YWxpZmllZE5hbWUmIHRhZ05hbWUpIGNvbnN0IHsgcmV0dXJuIENvbnRhaW5lck5v
ZGU6Omhhc1RhZ05hbWUodGFnTmFtZSk7IH0KIAogICAgIC8vIEEgZmFzdCBmdW5jdGlvbiBmb3Ig
Y2hlY2tpbmcgdGhlIGxvY2FsIG5hbWUgYWdhaW5zdCBhbm90aGVyIGF0b21pYyBzdHJpbmcuCi0g
ICAgYm9vbCBoYXNMb2NhbE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBvdGhlcikgY29uc3QgeyBy
ZXR1cm4gbV90YWdOYW1lLmxvY2FsTmFtZSgpID09IG90aGVyOyB9CisgICAgYm9vbCBoYXNMb2Nh
bE5hbWUoY29uc3QgQXRvbVN0cmluZyYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fdGFnTmFtZS5s
b2NhbE5hbWUoKSA9PSBvdGhlcjsgfQogCi0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5h
bWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3RhZ05hbWUubG9jYWxOYW1lKCk7IH0KLSAgICBj
b25zdCBBdG9taWNTdHJpbmcmIHByZWZpeCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fdGFnTmFt
ZS5wcmVmaXgoKTsgfQotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV90YWdOYW1lLm5hbWVzcGFjZVVSSSgpOyB9CisgICAgY29uc3Qg
QXRvbVN0cmluZyYgbG9jYWxOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV90YWdOYW1lLmxv
Y2FsTmFtZSgpOyB9CisgICAgY29uc3QgQXRvbVN0cmluZyYgcHJlZml4KCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV90YWdOYW1lLnByZWZpeCgpOyB9CisgICAgY29uc3QgQXRvbVN0cmluZyYgbmFt
ZXNwYWNlVVJJKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV90YWdOYW1lLm5hbWVzcGFjZVVSSSgp
OyB9CiAKLSAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRQcmVmaXgoY29uc3QgQXRvbWljU3RyaW5n
JikgZmluYWw7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0UHJlZml4KGNvbnN0IEF0b21TdHJp
bmcmKSBmaW5hbDsKIAogICAgIFN0cmluZyBub2RlTmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogCkBA
IC0yNTYsOCArMjU2LDggQEAgcHVibGljOgogICAgIH07CiAKICAgICAvLyBUaGlzIG1ldGhvZCBp
cyBjYWxsZWQgd2hlbmV2ZXIgYW4gYXR0cmlidXRlIGlzIGFkZGVkLCBjaGFuZ2VkIG9yIHJlbW92
ZWQuCi0gICAgdmlydHVhbCB2b2lkIGF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIGNvbnN0IEF0b21pY1N0cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3
VmFsdWUsIEF0dHJpYnV0ZU1vZGlmaWNhdGlvblJlYXNvbiA9IE1vZGlmaWVkRGlyZWN0bHkpOwot
ICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29u
c3QgQXRvbWljU3RyaW5nJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGF0dHJpYnV0ZUNoYW5nZWQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBB
dG9tU3RyaW5nJiBuZXdWYWx1ZSwgQXR0cmlidXRlTW9kaWZpY2F0aW9uUmVhc29uID0gTW9kaWZp
ZWREaXJlY3RseSk7CisgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5nJikgeyB9CiAKICAgICAvLyBPbmx5IGNhbGxlZCBi
eSB0aGUgcGFyc2VyIGltbWVkaWF0ZWx5IGFmdGVyIGVsZW1lbnQgY29uc3RydWN0aW9uLgogICAg
IHZvaWQgcGFyc2VyU2V0QXR0cmlidXRlcyhjb25zdCBWZWN0b3I8QXR0cmlidXRlPiYpOwpAQCAt
MzA3LDcgKzMwNyw3IEBAIHB1YmxpYzoKICAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZSog
cmVhY3Rpb25RdWV1ZSgpIGNvbnN0OwogCiAgICAgLy8gRklYTUU6IHRoaXMgc2hvdWxkIG5vdCBi
ZSB2aXJ0dWFsLCBkbyBub3Qgb3ZlcnJpZGUgdGhpcy4KLSAgICB2aXJ0dWFsIGNvbnN0IEF0b21p
Y1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21T
dHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3Q7CiAKICAgICBib29sIGlzSW5BY3RpdmVDaGFp
bigpIGNvbnN0IHsgcmV0dXJuIGlzVXNlckFjdGlvbkVsZW1lbnQoKSAmJiBpc1VzZXJBY3Rpb25F
bGVtZW50SW5BY3RpdmVDaGFpbigpOyB9CiAgICAgYm9vbCBhY3RpdmUoKSBjb25zdCB7IHJldHVy
biBpc1VzZXJBY3Rpb25FbGVtZW50KCkgJiYgaXNVc2VyQWN0aW9uRWxlbWVudEFjdGl2ZSgpOyB9
CkBAIC0zNzgsNyArMzc4LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U3R5bGVJc0FmZmVjdGVk
QnlQcmV2aW91c1NpYmxpbmcoKSB7IHNldEZsYWcoU3R5bGVJc0FmZmVjdGVkQnlQcmV2aW91c1Np
YmxpbmcpOyB9CiAgICAgdm9pZCBzZXRDaGlsZEluZGV4KHVuc2lnbmVkKTsKIAotICAgIFdFQkNP
UkVfRVhQT1JUIEF0b21pY1N0cmluZyBjb21wdXRlSW5oZXJpdGVkTGFuZ3VhZ2UoKSBjb25zdDsK
KyAgICBXRUJDT1JFX0VYUE9SVCBBdG9tU3RyaW5nIGNvbXB1dGVJbmhlcml0ZWRMYW5ndWFnZSgp
IGNvbnN0OwogICAgIExvY2FsZSYgbG9jYWxlKCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQg
YWNjZXNzS2V5QWN0aW9uKGJvb2wgLypzZW5kVG9BbnlFdmVudCovKSB7IH0KQEAgLTM5MSw3ICsz
OTEsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgVVJMIGdldFVSTEF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7CiAgICAgVVJMIGdldE5vbkVtcHR5VVJMQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKIAotICAgIHZpcnR1YWwgY29uc3QgQXRv
bWljU3RyaW5nJiBpbWFnZVNvdXJjZVVSTCgpIGNvbnN0OworICAgIHZpcnR1YWwgY29uc3QgQXRv
bVN0cmluZyYgaW1hZ2VTb3VyY2VVUkwoKSBjb25zdDsKICAgICB2aXJ0dWFsIFN0cmluZyB0YXJn
ZXQoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQogCiAgICAgc3RhdGljIEFYVGV4dFN0YXRl
Q2hhbmdlSW50ZW50IGRlZmF1bHRGb2N1c1RleHRTdGF0ZUNoYW5nZUludGVudCgpIHsgcmV0dXJu
IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50KEFYVGV4dFN0YXRlQ2hhbmdlVHlwZVNlbGVjdGlvbk1v
dmUsIEFYVGV4dFNlbGVjdGlvbiB7IEFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvbkRpc2NvbnRpZ3Vv
dXMsIEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5VW5rbm93biwgdHJ1ZSB9KTsgfQpAQCAtNDA5
LDggKzQwOSw4IEBAIHB1YmxpYzoKICAKICAgICB2aXJ0dWFsIFN0cmluZyB0aXRsZSgpIGNvbnN0
OwogCi0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBwc2V1ZG8oKSBjb25zdDsKLSAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldFBzZXVkbyhjb25zdCBBdG9taWNTdHJpbmcmKTsKKyAgICBjb25zdCBB
dG9tU3RyaW5nJiBwc2V1ZG8oKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFBz
ZXVkbyhjb25zdCBBdG9tU3RyaW5nJik7CiAKICAgICBMYXlvdXRTaXplIG1pbmltdW1TaXplRm9y
UmVzaXppbmcoKSBjb25zdDsKICAgICB2b2lkIHNldE1pbmltdW1TaXplRm9yUmVzaXppbmcoY29u
c3QgTGF5b3V0U2l6ZSYpOwpAQCAtNTE2LDEyICs1MTYsMTIgQEAgcHVibGljOgogICAgIEludFBv
aW50IHNhdmVkTGF5ZXJTY3JvbGxQb3NpdGlvbigpIGNvbnN0OwogICAgIHZvaWQgc2V0U2F2ZWRM
YXllclNjcm9sbFBvc2l0aW9uKGNvbnN0IEludFBvaW50Jik7CiAKLSAgICBib29sIGRpc3BhdGNo
TW91c2VFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmLCBjb25zdCBBdG9taWNTdHJpbmcm
IGV2ZW50VHlwZSwgaW50IGNsaWNrQ291bnQgPSAwLCBFbGVtZW50KiByZWxhdGVkVGFyZ2V0ID0g
bnVsbHB0cik7CisgICAgYm9vbCBkaXNwYXRjaE1vdXNlRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3Vz
ZUV2ZW50JiwgY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBpbnQgY2xpY2tDb3VudCA9IDAs
IEVsZW1lbnQqIHJlbGF0ZWRUYXJnZXQgPSBudWxscHRyKTsKICAgICBib29sIGRpc3BhdGNoV2hl
ZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKTsKICAgICBib29sIGRpc3BhdGNoS2V5
RXZlbnQoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50Jik7CiAgICAgdm9pZCBkaXNwYXRjaFNp
bXVsYXRlZENsaWNrKEV2ZW50KiB1bmRlcmx5aW5nRXZlbnQsIFNpbXVsYXRlZENsaWNrTW91c2VF
dmVudE9wdGlvbnMgPSBTZW5kTm9FdmVudHMsIFNpbXVsYXRlZENsaWNrVmlzdWFsT3B0aW9ucyA9
IFNob3dQcmVzc2VkTG9vayk7Ci0gICAgdm9pZCBkaXNwYXRjaEZvY3VzSW5FdmVudChjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEVsZW1lbnQ+JiYgb2xkRm9jdXNlZEVsZW1l
bnQpOwotICAgIHZvaWQgZGlzcGF0Y2hGb2N1c091dEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBSZWZQdHI8RWxlbWVudD4mJiBuZXdGb2N1c2VkRWxlbWVudCk7CisgICAgdm9p
ZCBkaXNwYXRjaEZvY3VzSW5FdmVudChjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0
cjxFbGVtZW50PiYmIG9sZEZvY3VzZWRFbGVtZW50KTsKKyAgICB2b2lkIGRpc3BhdGNoRm9jdXNP
dXRFdmVudChjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFbGVtZW50PiYmIG5l
d0ZvY3VzZWRFbGVtZW50KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hGb2N1c0V2ZW50KFJl
ZlB0cjxFbGVtZW50PiYmIG9sZEZvY3VzZWRFbGVtZW50LCBGb2N1c0RpcmVjdGlvbik7CiAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoQmx1ckV2ZW50KFJlZlB0cjxFbGVtZW50PiYmIG5ld0ZvY3Vz
ZWRFbGVtZW50KTsKICAgICB2b2lkIGRpc3BhdGNoV2ViS2l0SW1hZ2VSZWFkeUV2ZW50Rm9yVGVz
dGluZygpOwpAQCAtNTg2LDcgKzU4Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0b3JlRGlzcGxh
eUNvbnRlbnRzU3R5bGUoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CiAKICAgICB1c2lu
ZyBDb250YWluZXJOb2RlOjpzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyOwotICAgIHZvaWQgc2V0
QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1
ZSk7CisgICAgdm9pZCBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21TdHJpbmcm
IGV2ZW50VHlwZSwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgY29uc3QgQXRv
bVN0cmluZyYgdmFsdWUpOwogCiAjaWYgRU5BQkxFKElOVEVSU0VDVElPTl9PQlNFUlZFUikKICAg
ICBJbnRlcnNlY3Rpb25PYnNlcnZlckRhdGEmIGVuc3VyZUludGVyc2VjdGlvbk9ic2VydmVyRGF0
YSgpOwpAQCAtNjI3LDcgKzYyNyw3IEBAIHByb3RlY3RlZDoKICAgICAvLyBjbGFzc0F0dHJpYnV0
ZUNoYW5nZWQoKSBleGlzdHMgdG8gc2hhcmUgY29kZSBiZXR3ZWVuCiAgICAgLy8gcGFyc2VBdHRy
aWJ1dGUgKGNhbGxlZCB2aWEgc2V0QXR0cmlidXRlKCkpIGFuZAogICAgIC8vIHN2Z0F0dHJpYnV0
ZUNoYW5nZWQgKGNhbGxlZCB3aGVuIGVsZW1lbnQuY2xhc3NOYW1lLmJhc2VWYWx1ZSBpcyBzZXQp
Ci0gICAgdm9pZCBjbGFzc0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgQXRvbWljU3RyaW5nJiBuZXdD
bGFzc1N0cmluZyk7CisgICAgdm9pZCBjbGFzc0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgQXRvbVN0
cmluZyYgbmV3Q2xhc3NTdHJpbmcpOwogCiAgICAgdm9pZCBhZGRTaGFkb3dSb290KFJlZjxTaGFk
b3dSb290PiYmKTsKIApAQCAtNjUwLDI1ICs2NTAsMjUgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1
YWwgdm9pZCBkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KFNoYWRvd1Jvb3QmKSB7IH0KIAotICAg
IHZvaWQgZGlkQWRkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNT
dHJpbmcmKTsKLSAgICB2b2lkIHdpbGxNb2RpZnlBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIGNvbnN0IEF0b21pY1N0cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3
VmFsdWUpOwotICAgIHZvaWQgZGlkTW9kaWZ5QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBjb25zdCBBdG9taWNTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5ld1Zh
bHVlKTsKLSAgICB2b2lkIGRpZFJlbW92ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwg
Y29uc3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1ZSk7CisgICAgdm9pZCBkaWRBZGRBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmKTsKKyAgICB2b2lkIHdpbGxN
b2RpZnlBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmIG9s
ZFZhbHVlLCBjb25zdCBBdG9tU3RyaW5nJiBuZXdWYWx1ZSk7CisgICAgdm9pZCBkaWRNb2RpZnlB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmIG9sZFZhbHVl
LCBjb25zdCBBdG9tU3RyaW5nJiBuZXdWYWx1ZSk7CisgICAgdm9pZCBkaWRSZW1vdmVBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmIG9sZFZhbHVlKTsKIAog
ICAgIHZvaWQgc3luY2hyb25pemVBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0
OwotICAgIHZvaWQgc3luY2hyb25pemVBdHRyaWJ1dGUoY29uc3QgQXRvbWljU3RyaW5nJiBsb2Nh
bE5hbWUpIGNvbnN0OworICAgIHZvaWQgc3luY2hyb25pemVBdHRyaWJ1dGUoY29uc3QgQXRvbVN0
cmluZyYgbG9jYWxOYW1lKSBjb25zdDsKIAotICAgIHZvaWQgdXBkYXRlTmFtZShjb25zdCBBdG9t
aWNTdHJpbmcmIG9sZE5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3TmFtZSk7Ci0gICAgdm9p
ZCB1cGRhdGVOYW1lRm9yVHJlZVNjb3BlKFRyZWVTY29wZSYsIGNvbnN0IEF0b21pY1N0cmluZyYg
b2xkTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdOYW1lKTsKLSAgICB2b2lkIHVwZGF0ZU5h
bWVGb3JEb2N1bWVudChIVE1MRG9jdW1lbnQmLCBjb25zdCBBdG9taWNTdHJpbmcmIG9sZE5hbWUs
IGNvbnN0IEF0b21pY1N0cmluZyYgbmV3TmFtZSk7CisgICAgdm9pZCB1cGRhdGVOYW1lKGNvbnN0
IEF0b21TdHJpbmcmIG9sZE5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIG5ld05hbWUpOworICAgIHZv
aWQgdXBkYXRlTmFtZUZvclRyZWVTY29wZShUcmVlU2NvcGUmLCBjb25zdCBBdG9tU3RyaW5nJiBv
bGROYW1lLCBjb25zdCBBdG9tU3RyaW5nJiBuZXdOYW1lKTsKKyAgICB2b2lkIHVwZGF0ZU5hbWVG
b3JEb2N1bWVudChIVE1MRG9jdW1lbnQmLCBjb25zdCBBdG9tU3RyaW5nJiBvbGROYW1lLCBjb25z
dCBBdG9tU3RyaW5nJiBuZXdOYW1lKTsKIAogICAgIGVudW0gY2xhc3MgTm90aWZ5T2JzZXJ2ZXJz
IHsgTm8sIFllcyB9OwotICAgIHZvaWQgdXBkYXRlSWQoY29uc3QgQXRvbWljU3RyaW5nJiBvbGRJ
ZCwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdJZCwgTm90aWZ5T2JzZXJ2ZXJzID0gTm90aWZ5T2Jz
ZXJ2ZXJzOjpZZXMpOwotICAgIHZvaWQgdXBkYXRlSWRGb3JUcmVlU2NvcGUoVHJlZVNjb3BlJiwg
Y29uc3QgQXRvbWljU3RyaW5nJiBvbGRJZCwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdJZCwgTm90
aWZ5T2JzZXJ2ZXJzID0gTm90aWZ5T2JzZXJ2ZXJzOjpZZXMpOworICAgIHZvaWQgdXBkYXRlSWQo
Y29uc3QgQXRvbVN0cmluZyYgb2xkSWQsIGNvbnN0IEF0b21TdHJpbmcmIG5ld0lkLCBOb3RpZnlP
YnNlcnZlcnMgPSBOb3RpZnlPYnNlcnZlcnM6Olllcyk7CisgICAgdm9pZCB1cGRhdGVJZEZvclRy
ZWVTY29wZShUcmVlU2NvcGUmLCBjb25zdCBBdG9tU3RyaW5nJiBvbGRJZCwgY29uc3QgQXRvbVN0
cmluZyYgbmV3SWQsIE5vdGlmeU9ic2VydmVycyA9IE5vdGlmeU9ic2VydmVyczo6WWVzKTsKIAog
ICAgIGVudW0gSFRNTERvY3VtZW50TmFtZWRJdGVtTWFwc1VwZGF0aW5nQ29uZGl0aW9uIHsgQWx3
YXlzVXBkYXRlSFRNTERvY3VtZW50TmFtZWRJdGVtTWFwcywgVXBkYXRlSFRNTERvY3VtZW50TmFt
ZWRJdGVtTWFwc09ubHlJZkRpZmZlcnNGcm9tTmFtZUF0dHJpYnV0ZSB9OwotICAgIHZvaWQgdXBk
YXRlSWRGb3JEb2N1bWVudChIVE1MRG9jdW1lbnQmLCBjb25zdCBBdG9taWNTdHJpbmcmIG9sZElk
LCBjb25zdCBBdG9taWNTdHJpbmcmIG5ld0lkLCBIVE1MRG9jdW1lbnROYW1lZEl0ZW1NYXBzVXBk
YXRpbmdDb25kaXRpb24pOwotICAgIHZvaWQgdXBkYXRlTGFiZWwoVHJlZVNjb3BlJiwgY29uc3Qg
QXRvbWljU3RyaW5nJiBvbGRGb3JBdHRyaWJ1dGVWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBu
ZXdGb3JBdHRyaWJ1dGVWYWx1ZSk7CisgICAgdm9pZCB1cGRhdGVJZEZvckRvY3VtZW50KEhUTUxE
b2N1bWVudCYsIGNvbnN0IEF0b21TdHJpbmcmIG9sZElkLCBjb25zdCBBdG9tU3RyaW5nJiBuZXdJ
ZCwgSFRNTERvY3VtZW50TmFtZWRJdGVtTWFwc1VwZGF0aW5nQ29uZGl0aW9uKTsKKyAgICB2b2lk
IHVwZGF0ZUxhYmVsKFRyZWVTY29wZSYsIGNvbnN0IEF0b21TdHJpbmcmIG9sZEZvckF0dHJpYnV0
ZVZhbHVlLCBjb25zdCBBdG9tU3RyaW5nJiBuZXdGb3JBdHRyaWJ1dGVWYWx1ZSk7CiAKICAgICBF
eGNlcHRpb25PcjxOb2RlKj4gaW5zZXJ0QWRqYWNlbnQoY29uc3QgU3RyaW5nJiB3aGVyZSwgUmVm
PE5vZGU+JiYgbmV3Q2hpbGQpOwogCkBAIC02NzgsOCArNjc4LDggQEAgcHJpdmF0ZToKICAgICBi
b29sIGNoaWxkVHlwZUFsbG93ZWQoTm9kZVR5cGUpIGNvbnN0IGZpbmFsOwogCiAgICAgZW51bSBT
eW5jaHJvbml6YXRpb25PZkxhenlBdHRyaWJ1dGUgeyBOb3RJblN5bmNocm9uaXphdGlvbk9mTGF6
eUF0dHJpYnV0ZSwgSW5TeW5jaHJvbml6YXRpb25PZkxhenlBdHRyaWJ1dGUgfTsKLSAgICB2b2lk
IHNldEF0dHJpYnV0ZUludGVybmFsKHVuc2lnbmVkIGluZGV4LCBjb25zdCBRdWFsaWZpZWROYW1l
JiwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSwgU3luY2hyb25pemF0aW9uT2ZMYXp5QXR0cmli
dXRlKTsKLSAgICB2b2lkIGFkZEF0dHJpYnV0ZUludGVybmFsKGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlLCBTeW5jaHJvbml6YXRpb25PZkxhenlBdHRyaWJ1
dGUpOworICAgIHZvaWQgc2V0QXR0cmlidXRlSW50ZXJuYWwodW5zaWduZWQgaW5kZXgsIGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSwgU3luY2hyb25pemF0aW9u
T2ZMYXp5QXR0cmlidXRlKTsKKyAgICB2b2lkIGFkZEF0dHJpYnV0ZUludGVybmFsKGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSwgU3luY2hyb25pemF0aW9uT2ZM
YXp5QXR0cmlidXRlKTsKICAgICB2b2lkIHJlbW92ZUF0dHJpYnV0ZUludGVybmFsKHVuc2lnbmVk
IGluZGV4LCBTeW5jaHJvbml6YXRpb25PZkxhenlBdHRyaWJ1dGUpOwogCiAgICAgTGF5b3V0UmVj
dCBhYnNvbHV0ZUV2ZW50Qm91bmRzKGJvb2wmIGJvdW5kc0luY2x1ZGVBbGxEZXNjZW5kYW50RWxl
bWVudHMsIGJvb2wmIGluY2x1ZGVzRml4ZWRQb3NpdGlvbkVsZW1lbnRzKTsKQEAgLTcyNyw3ICs3
MjcsNyBAQCBwcml2YXRlOgogICAgIEVsZW1lbnRSYXJlRGF0YSYgZW5zdXJlRWxlbWVudFJhcmVE
YXRhKCk7CiAKICAgICB2b2lkIGRldGFjaEFsbEF0dHJOb2Rlc0Zyb21FbGVtZW50KCk7Ci0gICAg
dm9pZCBkZXRhY2hBdHRyTm9kZUZyb21FbGVtZW50V2l0aFZhbHVlKEF0dHIqLCBjb25zdCBBdG9t
aWNTdHJpbmcmIHZhbHVlKTsKKyAgICB2b2lkIGRldGFjaEF0dHJOb2RlRnJvbUVsZW1lbnRXaXRo
VmFsdWUoQXR0ciosIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKTsKIAogICAgIC8vIEFueW9uZSB0
aGlua2luZyBvZiB1c2luZyB0aGlzIHNob3VsZCBjYWxsIGRvY3VtZW50IGluc3RlYWQgb2Ygb3du
ZXJEb2N1bWVudC4KICAgICB2b2lkIG93bmVyRG9jdW1lbnQoKSBjb25zdCA9IGRlbGV0ZTsKQEAg
LTc3MSw3ICs3NzEsNyBAQCBpbmxpbmUgYm9vbCBFbGVtZW50OjpoYXNBdHRyaWJ1dGVXaXRob3V0
U3luY2hyb25pemF0aW9uKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbQogICAgIHJldHVybiBlbGVt
ZW50RGF0YSgpICYmIGZpbmRBdHRyaWJ1dGVCeU5hbWUobmFtZSk7CiB9CiAKLWlubGluZSBjb25z
dCBBdG9taWNTdHJpbmcmIEVsZW1lbnQ6OmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24o
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKK2lubGluZSBjb25zdCBBdG9tU3RyaW5n
JiBFbGVtZW50OjphdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIG5hbWUpIGNvbnN0CiB7CiAgICAgaWYgKGVsZW1lbnREYXRhKCkpIHsKICAgICAgICAg
aWYgKGNvbnN0IEF0dHJpYnV0ZSogYXR0cmlidXRlID0gZmluZEF0dHJpYnV0ZUJ5TmFtZShuYW1l
KSkKQEAgLTc4NSwyNiArNzg1LDI2IEBAIGlubGluZSBib29sIEVsZW1lbnQ6Omhhc0F0dHJpYnV0
ZXNXaXRob3V0VXBkYXRlKCkgY29uc3QKICAgICByZXR1cm4gZWxlbWVudERhdGEoKSAmJiAhZWxl
bWVudERhdGEoKS0+aXNFbXB0eSgpOwogfQogCi1pbmxpbmUgY29uc3QgQXRvbWljU3RyaW5nJiBF
bGVtZW50OjppZEZvclN0eWxlUmVzb2x1dGlvbigpIGNvbnN0CitpbmxpbmUgY29uc3QgQXRvbVN0
cmluZyYgRWxlbWVudDo6aWRGb3JTdHlsZVJlc29sdXRpb24oKSBjb25zdAogewogICAgIHJldHVy
biBoYXNJRCgpID8gZWxlbWVudERhdGEoKS0+aWRGb3JTdHlsZVJlc29sdXRpb24oKSA6IG51bGxB
dG9tKCk7CiB9CiAKLWlubGluZSBjb25zdCBBdG9taWNTdHJpbmcmIEVsZW1lbnQ6OmdldElkQXR0
cmlidXRlKCkgY29uc3QKK2lubGluZSBjb25zdCBBdG9tU3RyaW5nJiBFbGVtZW50OjpnZXRJZEF0
dHJpYnV0ZSgpIGNvbnN0CiB7CiAgICAgaWYgKGhhc0lEKCkpCiAgICAgICAgIHJldHVybiBlbGVt
ZW50RGF0YSgpLT5maW5kQXR0cmlidXRlQnlOYW1lKEhUTUxOYW1lczo6aWRBdHRyKS0+dmFsdWUo
KTsKICAgICByZXR1cm4gbnVsbEF0b20oKTsKIH0KIAotaW5saW5lIGNvbnN0IEF0b21pY1N0cmlu
ZyYgRWxlbWVudDo6Z2V0TmFtZUF0dHJpYnV0ZSgpIGNvbnN0CitpbmxpbmUgY29uc3QgQXRvbVN0
cmluZyYgRWxlbWVudDo6Z2V0TmFtZUF0dHJpYnV0ZSgpIGNvbnN0CiB7CiAgICAgaWYgKGhhc05h
bWUoKSkKICAgICAgICAgcmV0dXJuIGVsZW1lbnREYXRhKCktPmZpbmRBdHRyaWJ1dGVCeU5hbWUo
SFRNTE5hbWVzOjpuYW1lQXR0ciktPnZhbHVlKCk7CiAgICAgcmV0dXJuIG51bGxBdG9tKCk7CiB9
CiAKLWlubGluZSB2b2lkIEVsZW1lbnQ6OnNldElkQXR0cmlidXRlKGNvbnN0IEF0b21pY1N0cmlu
ZyYgdmFsdWUpCitpbmxpbmUgdm9pZCBFbGVtZW50OjpzZXRJZEF0dHJpYnV0ZShjb25zdCBBdG9t
U3RyaW5nJiB2YWx1ZSkKIHsKICAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9u
KEhUTUxOYW1lczo6aWRBdHRyLCB2YWx1ZSk7CiB9CkBAIC04NzEsOSArODcxLDkgQEAgaW5saW5l
IHZvaWQgRWxlbWVudDo6c2V0SGFzRm9jdXNXaXRoaW4oYm9vbCBmbGFnKQogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZS4uLiBRdWFsaWZpZWROYW1lcz4KLWlubGluZSBjb25zdCBBdG9taWNTdHJpbmcm
IEVsZW1lbnQ6OmdldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBR
dWFsaWZpZWROYW1lcyYuLi4gbmFtZXMpIGNvbnN0CitpbmxpbmUgY29uc3QgQXRvbVN0cmluZyYg
RWxlbWVudDo6Z2V0QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IFF1
YWxpZmllZE5hbWVzJi4uLiBuYW1lcykgY29uc3QKIHsKLSAgICBjb25zdCBBdG9taWNTdHJpbmcm
IHZhbHVlID0gZ2V0QXR0cmlidXRlKG5hbWUpOworICAgIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVl
ID0gZ2V0QXR0cmlidXRlKG5hbWUpOwogICAgIGlmICghdmFsdWUuaXNOdWxsKCkpCiAgICAgICAg
IHJldHVybiB2YWx1ZTsKICAgICByZXR1cm4gZ2V0QXR0cmlidXRlKG5hbWVzLi4uKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50RGF0YS5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnREYXRhLmgKaW5kZXggZjZkMWVhZmQ3MzZiMmFhODI2YmViMmI3ZmUwNTRmZmMy
ZDU5YjY1My4uNzE1OGQxZDhmYjkyYzZjNjAwYzgwOTAzZDhhNDNhYmQ4ZDliMzQxMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnREYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnREYXRhLmgKQEAgLTg4LDkgKzg4LDkgQEAgcHVibGljOgogICAgIGNvbnN0
IFNwYWNlU3BsaXRTdHJpbmcmIGNsYXNzTmFtZXMoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzTmFt
ZXM7IH0KICAgICBzdGF0aWMgcHRyZGlmZl90IGNsYXNzTmFtZXNNZW1vcnlPZmZzZXQoKSB7IHJl
dHVybiBPQkpFQ1RfT0ZGU0VUT0YoRWxlbWVudERhdGEsIG1fY2xhc3NOYW1lcyk7IH0KIAotICAg
IGNvbnN0IEF0b21pY1N0cmluZyYgaWRGb3JTdHlsZVJlc29sdXRpb24oKSBjb25zdCB7IHJldHVy
biBtX2lkRm9yU3R5bGVSZXNvbHV0aW9uOyB9CisgICAgY29uc3QgQXRvbVN0cmluZyYgaWRGb3JT
dHlsZVJlc29sdXRpb24oKSBjb25zdCB7IHJldHVybiBtX2lkRm9yU3R5bGVSZXNvbHV0aW9uOyB9
CiAgICAgc3RhdGljIHB0cmRpZmZfdCBpZEZvclN0eWxlUmVzb2x1dGlvbk1lbW9yeU9mZnNldCgp
IHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihFbGVtZW50RGF0YSwgbV9pZEZvclN0eWxlUmVzb2x1
dGlvbik7IH0KLSAgICB2b2lkIHNldElkRm9yU3R5bGVSZXNvbHV0aW9uKGNvbnN0IEF0b21pY1N0
cmluZyYgbmV3SWQpIGNvbnN0IHsgbV9pZEZvclN0eWxlUmVzb2x1dGlvbiA9IG5ld0lkOyB9Cisg
ICAgdm9pZCBzZXRJZEZvclN0eWxlUmVzb2x1dGlvbihjb25zdCBBdG9tU3RyaW5nJiBuZXdJZCkg
Y29uc3QgeyBtX2lkRm9yU3R5bGVSZXNvbHV0aW9uID0gbmV3SWQ7IH0KIAogICAgIGNvbnN0IFN0
eWxlUHJvcGVydGllcyogaW5saW5lU3R5bGUoKSBjb25zdCB7IHJldHVybiBtX2lubGluZVN0eWxl
LmdldCgpOyB9CiAgICAgY29uc3QgU3R5bGVQcm9wZXJ0aWVzKiBwcmVzZW50YXRpb25BdHRyaWJ1
dGVTdHlsZSgpIGNvbnN0OwpAQCAtMTAyLDcgKzEwMiw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBB
dHRyaWJ1dGUmIGF0dHJpYnV0ZUF0KHVuc2lnbmVkIGluZGV4KSBjb25zdDsKICAgICBjb25zdCBB
dHRyaWJ1dGUqIGZpbmRBdHRyaWJ1dGVCeU5hbWUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0
OwogICAgIHVuc2lnbmVkIGZpbmRBdHRyaWJ1dGVJbmRleEJ5TmFtZShjb25zdCBRdWFsaWZpZWRO
YW1lJikgY29uc3Q7Ci0gICAgdW5zaWduZWQgZmluZEF0dHJpYnV0ZUluZGV4QnlOYW1lKGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZSwgYm9vbCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKSBjb25z
dDsKKyAgICB1bnNpZ25lZCBmaW5kQXR0cmlidXRlSW5kZXhCeU5hbWUoY29uc3QgQXRvbVN0cmlu
ZyYgbmFtZSwgYm9vbCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKSBjb25zdDsKICAgICBjb25z
dCBBdHRyaWJ1dGUqIGZpbmRMYW5ndWFnZUF0dHJpYnV0ZSgpIGNvbnN0OwogCiAgICAgYm9vbCBo
YXNJRCgpIGNvbnN0IHsgcmV0dXJuICFtX2lkRm9yU3R5bGVSZXNvbHV0aW9uLmlzTnVsbCgpOyB9
CkBAIC0xNjEsNyArMTYxLDcgQEAgcHJvdGVjdGVkOgogCiAgICAgbXV0YWJsZSBSZWZQdHI8U3R5
bGVQcm9wZXJ0aWVzPiBtX2lubGluZVN0eWxlOwogICAgIG11dGFibGUgU3BhY2VTcGxpdFN0cmlu
ZyBtX2NsYXNzTmFtZXM7Ci0gICAgbXV0YWJsZSBBdG9taWNTdHJpbmcgbV9pZEZvclN0eWxlUmVz
b2x1dGlvbjsKKyAgICBtdXRhYmxlIEF0b21TdHJpbmcgbV9pZEZvclN0eWxlUmVzb2x1dGlvbjsK
IAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgRWxlbWVudDsKQEAgLTE3Myw3ICsxNzMsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgZGVzdHJveSgpOwogCiAgICAgY29uc3QgQXR0cmlidXRlKiBh
dHRyaWJ1dGVCYXNlKCkgY29uc3Q7Ci0gICAgY29uc3QgQXR0cmlidXRlKiBmaW5kQXR0cmlidXRl
QnlOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgYm9vbCBzaG91bGRJZ25vcmVBdHRyaWJ1
dGVDYXNlKSBjb25zdDsKKyAgICBjb25zdCBBdHRyaWJ1dGUqIGZpbmRBdHRyaWJ1dGVCeU5hbWUo
Y29uc3QgQXRvbVN0cmluZyYgbmFtZSwgYm9vbCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKSBj
b25zdDsKIAogICAgIFJlZjxVbmlxdWVFbGVtZW50RGF0YT4gbWFrZVVuaXF1ZUNvcHkoKSBjb25z
dDsKIH07CkBAIC0yMDYsNyArMjA2LDcgQEAgcHVibGljOgogICAgIFJlZjxTaGFyZWFibGVFbGVt
ZW50RGF0YT4gbWFrZVNoYXJlYWJsZUNvcHkoKSBjb25zdDsKIAogICAgIC8vIFRoZXNlIGZ1bmN0
aW9ucyBkbyBubyBlcnJvci9kdXBsaWNhdGUgY2hlY2tpbmcuCi0gICAgdm9pZCBhZGRBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpOworICAgIHZvaWQg
YWRkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5nJik7CiAg
ICAgdm9pZCByZW1vdmVBdHRyaWJ1dGUodW5zaWduZWQgaW5kZXgpOwogCiAgICAgQXR0cmlidXRl
JiBhdHRyaWJ1dGVBdCh1bnNpZ25lZCBpbmRleCk7CkBAIC0yNjAsNyArMjYwLDcgQEAgaW5saW5l
IEF0dHJpYnV0ZUl0ZXJhdG9yQWNjZXNzb3IgRWxlbWVudERhdGE6OmF0dHJpYnV0ZXNJdGVyYXRv
cigpIGNvbnN0CiAgICAgcmV0dXJuIEF0dHJpYnV0ZUl0ZXJhdG9yQWNjZXNzb3IoZG93bmNhc3Q8
U2hhcmVhYmxlRWxlbWVudERhdGE+KCp0aGlzKS5tX2F0dHJpYnV0ZUFycmF5LCBhcnJheVNpemUo
KSk7CiB9CiAKLUFMV0FZU19JTkxJTkUgY29uc3QgQXR0cmlidXRlKiBFbGVtZW50RGF0YTo6Zmlu
ZEF0dHJpYnV0ZUJ5TmFtZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGJvb2wgc2hvdWxkSWdu
b3JlQXR0cmlidXRlQ2FzZSkgY29uc3QKK0FMV0FZU19JTkxJTkUgY29uc3QgQXR0cmlidXRlKiBF
bGVtZW50RGF0YTo6ZmluZEF0dHJpYnV0ZUJ5TmFtZShjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBi
b29sIHNob3VsZElnbm9yZUF0dHJpYnV0ZUNhc2UpIGNvbnN0CiB7CiAgICAgdW5zaWduZWQgaW5k
ZXggPSBmaW5kQXR0cmlidXRlSW5kZXhCeU5hbWUobmFtZSwgc2hvdWxkSWdub3JlQXR0cmlidXRl
Q2FzZSk7CiAgICAgaWYgKGluZGV4ICE9IGF0dHJpYnV0ZU5vdEZvdW5kKQpAQCAtMjgwLDE0ICsy
ODAsMTQgQEAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBFbGVtZW50RGF0YTo6ZmluZEF0dHJpYnV0
ZUluZGV4QnlOYW1lKGNvbnN0IFF1YWxpZmllZE5hbWUKIAogLy8gV2UgdXNlIGEgYm9vbGVhbiBw
YXJhbWV0ZXIgaW5zdGVhZCBvZiBjYWxsaW5nIHNob3VsZElnbm9yZUF0dHJpYnV0ZUNhc2Ugc28g
dGhhdCB0aGUgY2FsbGVyCiAvLyBjYW4gdHVuZSB0aGUgYmVoYXZpb3IgKGhhc0F0dHJpYnV0ZSBp
cyBjYXNlIHNlbnNpdGl2ZSB3aGVyZWFzIGdldEF0dHJpYnV0ZSBpcyBub3QpLgotQUxXQVlTX0lO
TElORSB1bnNpZ25lZCBFbGVtZW50RGF0YTo6ZmluZEF0dHJpYnV0ZUluZGV4QnlOYW1lKGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZSwgYm9vbCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKSBjb25z
dAorQUxXQVlTX0lOTElORSB1bnNpZ25lZCBFbGVtZW50RGF0YTo6ZmluZEF0dHJpYnV0ZUluZGV4
QnlOYW1lKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIGJvb2wgc2hvdWxkSWdub3JlQXR0cmlidXRl
Q2FzZSkgY29uc3QKIHsKICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVDb3VudCA9IGxlbmd0aCgpOwog
ICAgIGlmICghYXR0cmlidXRlQ291bnQpCiAgICAgICAgIHJldHVybiBhdHRyaWJ1dGVOb3RGb3Vu
ZDsKIAogICAgIGNvbnN0IEF0dHJpYnV0ZSogYXR0cmlidXRlcyA9IGF0dHJpYnV0ZUJhc2UoKTsK
LSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGNhc2VBZGp1c3RlZE5hbWUgPSBzaG91bGRJZ25vcmVB
dHRyaWJ1dGVDYXNlID8gbmFtZS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpIDogbmFtZTsKKyAg
ICBjb25zdCBBdG9tU3RyaW5nJiBjYXNlQWRqdXN0ZWROYW1lID0gc2hvdWxkSWdub3JlQXR0cmli
dXRlQ2FzZSA/IG5hbWUuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSA6IG5hbWU7CiAKICAgICB1
bnNpZ25lZCBhdHRyaWJ1dGVJbmRleCA9IDA7CiAgICAgZG8gewpAQCAtMzIyLDcgKzMyMiw3IEBA
IGlubGluZSBjb25zdCBBdHRyaWJ1dGUmIEVsZW1lbnREYXRhOjphdHRyaWJ1dGVBdCh1bnNpZ25l
ZCBpbmRleCkgY29uc3QKICAgICByZXR1cm4gYXR0cmlidXRlQmFzZSgpW2luZGV4XTsKIH0KIAot
aW5saW5lIHZvaWQgVW5pcXVlRWxlbWVudERhdGE6OmFkZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQoraW5saW5l
IHZvaWQgVW5pcXVlRWxlbWVudERhdGE6OmFkZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyaWJ1dGVOYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBtX2F0dHJp
YnV0ZVZlY3Rvci5hcHBlbmQoQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUsIHZhbHVlKSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXJyb3JFdmVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXJyb3JFdmVudC5jcHAKaW5kZXggNDhkYmQxZDFhNDRhZWE5MTY5NTA1ZmUzMmI4
YjU5OTg4ZjE2YzE1NC4uYWIwNzdkNmVmMmJiZjRjNjQ0ODg0NTY4MWFkMTk0MjdlYzRiNThjYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Vycm9yRXZlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FcnJvckV2ZW50LmNwcApAQCAtNDAsNyArNDAsNyBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAotRXJyb3JFdmVudDo6RXJyb3JFdmVu
dChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IEluaXQmIGluaXRpYWxpemVyLCBJc1Ry
dXN0ZWQgaXNUcnVzdGVkKQorRXJyb3JFdmVudDo6RXJyb3JFdmVudChjb25zdCBBdG9tU3RyaW5n
JiB0eXBlLCBjb25zdCBJbml0JiBpbml0aWFsaXplciwgSXNUcnVzdGVkIGlzVHJ1c3RlZCkKICAg
ICA6IEV2ZW50KHR5cGUsIGluaXRpYWxpemVyLCBpc1RydXN0ZWQpCiAgICAgLCBtX21lc3NhZ2Uo
aW5pdGlhbGl6ZXIubWVzc2FnZSkKICAgICAsIG1fZmlsZU5hbWUoaW5pdGlhbGl6ZXIuZmlsZW5h
bWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXJyb3JFdmVudC5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL0Vycm9yRXZlbnQuaAppbmRleCBhODVlOTNjY2E2NjFhYjdmNGY0MDYzYmIx
YTczN2M2ZmExMTg3YzVkLi4zN2ZlMzI4MmM5MmFkZGViODVjZDQ1MDg4ODU3OTFhOGM0YTZlN2Fj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXJyb3JFdmVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FcnJvckV2ZW50LmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAg
ICAgICBKU0M6OkpTVmFsdWUgZXJyb3I7CiAgICAgfTsKIAotICAgIHN0YXRpYyBSZWY8RXJyb3JF
dmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgSW5pdCYgaW5pdGlh
bGl6ZXIsIElzVHJ1c3RlZCBpc1RydXN0ZWQgPSBJc1RydXN0ZWQ6Ok5vKQorICAgIHN0YXRpYyBS
ZWY8RXJyb3JFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IEluaXQm
IGluaXRpYWxpemVyLCBJc1RydXN0ZWQgaXNUcnVzdGVkID0gSXNUcnVzdGVkOjpObykKICAgICB7
CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEVycm9yRXZlbnQodHlwZSwgaW5pdGlhbGl6
ZXIsIGlzVHJ1c3RlZCkpOwogICAgIH0KQEAgLTc2LDcgKzc2LDcgQEAgcHVibGljOgogCiBwcml2
YXRlOgogICAgIEVycm9yRXZlbnQoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcm
IGZpbGVOYW1lLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCB1bnNpZ25lZCBjb2x1bW5OdW1iZXIsIEpT
Qzo6U3Ryb25nPEpTQzo6VW5rbm93bj4gZXJyb3IpOwotICAgIEVycm9yRXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiwgY29uc3QgSW5pdCYsIElzVHJ1c3RlZCk7CisgICAgRXJyb3JFdmVudChjb25z
dCBBdG9tU3RyaW5nJiwgY29uc3QgSW5pdCYsIElzVHJ1c3RlZCk7CiAKICAgICBib29sIGlzRXJy
b3JFdmVudCgpIGNvbnN0IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmNwcAppbmRleCBjODQ2OWMz
YzRiZjA1YzA3MThmMDM3Y2Q3YjdkOTc5MTdmY2NiMmE4Li45YjRmYjcyNzZmZjAwYTVlMzJhMzEy
M2UzOWI5ZTkxOTEwZTVmMTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5jcHAKQEAgLTM1LDcgKzM1LDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1BTFdBWVNfSU5MSU5FIEV2ZW50OjpFdmVudChNb25v
dG9uaWNUaW1lIGNyZWF0ZVRpbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgSXNUcnVzdGVk
IGlzVHJ1c3RlZCwgQ2FuQnViYmxlIGNhbkJ1YmJsZSwgSXNDYW5jZWxhYmxlIGNhbmNlbGFibGUs
IElzQ29tcG9zZWQgY29tcG9zZWQpCitBTFdBWVNfSU5MSU5FIEV2ZW50OjpFdmVudChNb25vdG9u
aWNUaW1lIGNyZWF0ZVRpbWUsIGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIElzVHJ1c3RlZCBpc1Ry
dXN0ZWQsIENhbkJ1YmJsZSBjYW5CdWJibGUsIElzQ2FuY2VsYWJsZSBjYW5jZWxhYmxlLCBJc0Nv
bXBvc2VkIGNvbXBvc2VkKQogICAgIDogbV9pc0luaXRpYWxpemVkIHsgIXR5cGUuaXNOdWxsKCkg
fQogICAgICwgbV9jYW5CdWJibGUgeyBjYW5CdWJibGUgPT0gQ2FuQnViYmxlOjpZZXMgfQogICAg
ICwgbV9jYW5jZWxhYmxlIHsgY2FuY2VsYWJsZSA9PSBJc0NhbmNlbGFibGU6OlllcyB9CkBAIC01
OCwxOSArNTgsMTkgQEAgRXZlbnQ6OkV2ZW50KElzVHJ1c3RlZCBpc1RydXN0ZWQpCiB7CiB9CiAK
LUV2ZW50OjpFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgQ2FuQnViYmxlIGNh
bkJ1YmJsZSwgSXNDYW5jZWxhYmxlIGlzQ2FuY2VsYWJsZSwgSXNDb21wb3NlZCBpc0NvbXBvc2Vk
KQorRXZlbnQ6OkV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgQ2FuQnViYmxlIGNh
bkJ1YmJsZSwgSXNDYW5jZWxhYmxlIGlzQ2FuY2VsYWJsZSwgSXNDb21wb3NlZCBpc0NvbXBvc2Vk
KQogICAgIDogRXZlbnQgeyBNb25vdG9uaWNUaW1lOjpub3coKSwgZXZlbnRUeXBlLCBJc1RydXN0
ZWQ6OlllcywgY2FuQnViYmxlLCBpc0NhbmNlbGFibGUsIGlzQ29tcG9zZWQgfQogewogICAgIEFT
U0VSVCghZXZlbnRUeXBlLmlzTnVsbCgpKTsKIH0KIAotRXZlbnQ6OkV2ZW50KGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBDYW5CdWJibGUgY2FuQnViYmxlLCBJc0NhbmNlbGFibGUgaXND
YW5jZWxhYmxlLCBJc0NvbXBvc2VkIGlzQ29tcG9zZWQsIE1vbm90b25pY1RpbWUgdGltZXN0YW1w
LCBJc1RydXN0ZWQgaXNUcnVzdGVkKQorRXZlbnQ6OkV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIGV2
ZW50VHlwZSwgQ2FuQnViYmxlIGNhbkJ1YmJsZSwgSXNDYW5jZWxhYmxlIGlzQ2FuY2VsYWJsZSwg
SXNDb21wb3NlZCBpc0NvbXBvc2VkLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgSXNUcnVzdGVk
IGlzVHJ1c3RlZCkKICAgICA6IEV2ZW50IHsgdGltZXN0YW1wLCBldmVudFR5cGUsIGlzVHJ1c3Rl
ZCwgY2FuQnViYmxlLCBpc0NhbmNlbGFibGUsIGlzQ29tcG9zZWQgfQogewogICAgIEFTU0VSVCgh
ZXZlbnRUeXBlLmlzTnVsbCgpKTsKIH0KIAotRXZlbnQ6OkV2ZW50KGNvbnN0IEF0b21pY1N0cmlu
ZyYgZXZlbnRUeXBlLCBjb25zdCBFdmVudEluaXQmIGluaXRpYWxpemVyLCBJc1RydXN0ZWQgaXNU
cnVzdGVkKQorRXZlbnQ6OkV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgY29uc3Qg
RXZlbnRJbml0JiBpbml0aWFsaXplciwgSXNUcnVzdGVkIGlzVHJ1c3RlZCkKICAgICA6IEV2ZW50
IHsgTW9ub3RvbmljVGltZTo6bm93KCksIGV2ZW50VHlwZSwgaXNUcnVzdGVkLAogICAgICAgICBp
bml0aWFsaXplci5idWJibGVzID8gQ2FuQnViYmxlOjpZZXMgOiBDYW5CdWJibGU6Ok5vLAogICAg
ICAgICBpbml0aWFsaXplci5jYW5jZWxhYmxlID8gSXNDYW5jZWxhYmxlOjpZZXMgOiBJc0NhbmNl
bGFibGU6Ok5vLApAQCAtODEsNyArODEsNyBAQCBFdmVudDo6RXZlbnQoY29uc3QgQXRvbWljU3Ry
aW5nJiBldmVudFR5cGUsIGNvbnN0IEV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIsIElzVHJ1cwogCiBF
dmVudDo6fkV2ZW50KCkgPSBkZWZhdWx0OwogCi1SZWY8RXZlbnQ+IEV2ZW50OjpjcmVhdGUoY29u
c3QgQXRvbWljU3RyaW5nJiB0eXBlLCBDYW5CdWJibGUgY2FuQnViYmxlLCBJc0NhbmNlbGFibGUg
aXNDYW5jZWxhYmxlLCBJc0NvbXBvc2VkIGlzQ29tcG9zZWQpCitSZWY8RXZlbnQ+IEV2ZW50Ojpj
cmVhdGUoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgQ2FuQnViYmxlIGNhbkJ1YmJsZSwgSXNDYW5j
ZWxhYmxlIGlzQ2FuY2VsYWJsZSwgSXNDb21wb3NlZCBpc0NvbXBvc2VkKQogewogICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgaXNDYW5jZWxhYmxlLCBpc0Nv
bXBvc2VkKSk7CiB9CkBAIC05MSwxMiArOTEsMTIgQEAgUmVmPEV2ZW50PiBFdmVudDo6Y3JlYXRl
Rm9yQmluZGluZ3MoKQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEV2ZW50KTsKIH0KIAotUmVm
PEV2ZW50PiBFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgRXZl
bnRJbml0JiBpbml0aWFsaXplciwgSXNUcnVzdGVkIGlzVHJ1c3RlZCkKK1JlZjxFdmVudD4gRXZl
bnQ6OmNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBFdmVudEluaXQmIGluaXRp
YWxpemVyLCBJc1RydXN0ZWQgaXNUcnVzdGVkKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEV2ZW50KHR5cGUsIGluaXRpYWxpemVyLCBpc1RydXN0ZWQpKTsKIH0KIAotdm9pZCBFdmVudDo6
aW5pdEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlQXJnLCBib29sIGNhbkJ1YmJs
ZUFyZywgYm9vbCBjYW5jZWxhYmxlQXJnKQordm9pZCBFdmVudDo6aW5pdEV2ZW50KGNvbnN0IEF0
b21TdHJpbmcmIGV2ZW50VHlwZUFyZywgYm9vbCBjYW5CdWJibGVBcmcsIGJvb2wgY2FuY2VsYWJs
ZUFyZykKIHsKICAgICBpZiAoaXNCZWluZ0Rpc3BhdGNoZWQoKSkKICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnQuaAppbmRleCAxMTM2MDg1OGJmNWQ0NjcwNzA3YjMwMWY3OWI2MTNjZDk4OGRkNDky
Li4yMzc5NTliZTViYjE3M2NiOTBjYjM3OGZjODJlMmMxOTgxNGY2NjllIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQu
aApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgogI2luY2x1
ZGUgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5oPgotI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21T
dHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01MiwxOCArNTIsMTggQEAgcHVi
bGljOgogICAgICAgICBCVUJCTElOR19QSEFTRSA9IDMKICAgICB9OwogCi0gICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFJlZjxFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwg
Q2FuQnViYmxlLCBJc0NhbmNlbGFibGUsIElzQ29tcG9zZWQgPSBJc0NvbXBvc2VkOjpObyk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21TdHJp
bmcmIHR5cGUsIENhbkJ1YmJsZSwgSXNDYW5jZWxhYmxlLCBJc0NvbXBvc2VkID0gSXNDb21wb3Nl
ZDo6Tm8pOwogICAgIHN0YXRpYyBSZWY8RXZlbnQ+IGNyZWF0ZUZvckJpbmRpbmdzKCk7Ci0gICAg
c3RhdGljIFJlZjxFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3Qg
RXZlbnRJbml0JiwgSXNUcnVzdGVkID0gSXNUcnVzdGVkOjpObyk7CisgICAgc3RhdGljIFJlZjxF
dmVudD4gY3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IEV2ZW50SW5pdCYsIElz
VHJ1c3RlZCA9IElzVHJ1c3RlZDo6Tm8pOwogCiAgICAgdmlydHVhbCB+RXZlbnQoKTsKIAotICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5pdEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwg
Ym9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBpbml0RXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wg
Y2FuY2VsYWJsZSk7CiAKICAgICBib29sIGlzSW5pdGlhbGl6ZWQoKSBjb25zdCB7IHJldHVybiBt
X2lzSW5pdGlhbGl6ZWQ7IH0KIAotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdHlwZTsgfQotICAgIHZvaWQgc2V0VHlwZShjb25zdCBBdG9taWNTdHJpbmcm
IHR5cGUpIHsgbV90eXBlID0gdHlwZTsgfQorICAgIGNvbnN0IEF0b21TdHJpbmcmIHR5cGUoKSBj
b25zdCB7IHJldHVybiBtX3R5cGU7IH0KKyAgICB2b2lkIHNldFR5cGUoY29uc3QgQXRvbVN0cmlu
ZyYgdHlwZSkgeyBtX3R5cGUgPSB0eXBlOyB9CiAgICAgCiAgICAgRXZlbnRUYXJnZXQqIHRhcmdl
dCgpIGNvbnN0IHsgcmV0dXJuIG1fdGFyZ2V0LmdldCgpOyB9CiAgICAgdm9pZCBzZXRUYXJnZXQo
UmVmUHRyPEV2ZW50VGFyZ2V0PiYmKTsKQEAgLTE0MywxNCArMTQzLDE0IEBAIHB1YmxpYzoKIAog
cHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IEV2ZW50KElzVHJ1c3RlZCA9IElzVHJ1c3RlZDo6Tm8p
OwotICAgIEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgQ2FuQnViYmxlLCBJc0NhbmNl
bGFibGUsIElzQ29tcG9zZWQgPSBJc0NvbXBvc2VkOjpObyk7Ci0gICAgRXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlLCBDYW5CdWJibGUsIElzQ2FuY2VsYWJsZSwgSXNDb21wb3NlZCwgTW9u
b3RvbmljVGltZSB0aW1lc3RhbXAsIElzVHJ1c3RlZCBpc1RydXN0ZWQgPSBJc1RydXN0ZWQ6Olll
cyk7Ci0gICAgRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBFdmVudEluaXQm
LCBJc1RydXN0ZWQpOworICAgIEV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIENhbkJ1YmJs
ZSwgSXNDYW5jZWxhYmxlLCBJc0NvbXBvc2VkID0gSXNDb21wb3NlZDo6Tm8pOworICAgIEV2ZW50
KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIENhbkJ1YmJsZSwgSXNDYW5jZWxhYmxlLCBJc0NvbXBv
c2VkLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgSXNUcnVzdGVkIGlzVHJ1c3RlZCA9IElzVHJ1
c3RlZDo6WWVzKTsKKyAgICBFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBFdmVu
dEluaXQmLCBJc1RydXN0ZWQpOwogCiAgICAgdmlydHVhbCB2b2lkIHJlY2VpdmVkVGFyZ2V0KCkg
eyB9CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgRXZlbnQoTW9ub3RvbmljVGltZSBjcmVhdGVU
aW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIElzVHJ1c3RlZCwgQ2FuQnViYmxlLCBJc0Nh
bmNlbGFibGUsIElzQ29tcG9zZWQpOworICAgIGV4cGxpY2l0IEV2ZW50KE1vbm90b25pY1RpbWUg
Y3JlYXRlVGltZSwgY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgSXNUcnVzdGVkLCBDYW5CdWJibGUs
IElzQ2FuY2VsYWJsZSwgSXNDb21wb3NlZCk7CiAKICAgICB2b2lkIHNldENhbmNlbGVkRmxhZ0lm
UG9zc2libGUoKTsKIApAQCAtMTY5LDcgKzE2OSw3IEBAIHByaXZhdGU6CiAKICAgICB1bnNpZ25l
ZCBtX2V2ZW50UGhhc2UgOiAyOwogCi0gICAgQXRvbWljU3RyaW5nIG1fdHlwZTsKKyAgICBBdG9t
U3RyaW5nIG1fdHlwZTsKIAogICAgIFJlZlB0cjxFdmVudFRhcmdldD4gbV9jdXJyZW50VGFyZ2V0
OwogICAgIGNvbnN0IEV2ZW50UGF0aCogbV9ldmVudFBhdGggeyBudWxscHRyIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lck1hcC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnRMaXN0ZW5lck1hcC5jcHAKaW5kZXggYmRkMmQ1NmFiNWIyYWE5Y2VlODBm
YzA2ZDkyOGI4ZThhMjBiMjdiZC4uZDllNjYzNDljYmRiYTBiYjgxZDJhY2ZiZmRjMGQ0MzM3OGM2
NThkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyTWFwLmNwcApAQCAtNTMsNyAr
NTMsNyBAQCBFdmVudExpc3RlbmVyTWFwOjpFdmVudExpc3RlbmVyTWFwKCkKIHsKIH0KIAotYm9v
bCBFdmVudExpc3RlbmVyTWFwOjpjb250YWluc0NhcHR1cmluZyhjb25zdCBBdG9taWNTdHJpbmcm
IGV2ZW50VHlwZSkgY29uc3QKK2Jvb2wgRXZlbnRMaXN0ZW5lck1hcDo6Y29udGFpbnNDYXB0dXJp
bmcoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlKSBjb25zdAogewogICAgIGF1dG8qIGxpc3Rl
bmVycyA9IGZpbmQoZXZlbnRUeXBlKTsKICAgICBpZiAoIWxpc3RlbmVycykKQEAgLTY2LDcgKzY2
LDcgQEAgYm9vbCBFdmVudExpc3RlbmVyTWFwOjpjb250YWluc0NhcHR1cmluZyhjb25zdCBBdG9t
aWNTdHJpbmcmIGV2ZW50VHlwZSkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wg
RXZlbnRMaXN0ZW5lck1hcDo6Y29udGFpbnNBY3RpdmUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVu
dFR5cGUpIGNvbnN0Citib29sIEV2ZW50TGlzdGVuZXJNYXA6OmNvbnRhaW5zQWN0aXZlKGNvbnN0
IEF0b21TdHJpbmcmIGV2ZW50VHlwZSkgY29uc3QKIHsKICAgICBhdXRvKiBsaXN0ZW5lcnMgPSBm
aW5kKGV2ZW50VHlwZSk7CiAgICAgaWYgKCFsaXN0ZW5lcnMpCkBAIC05Myw5ICs5Myw5IEBAIHZv
aWQgRXZlbnRMaXN0ZW5lck1hcDo6Y2xlYXIoKQogICAgIG1fZW50cmllcy5jbGVhcigpOwogfQog
Ci1WZWN0b3I8QXRvbWljU3RyaW5nPiBFdmVudExpc3RlbmVyTWFwOjpldmVudFR5cGVzKCkgY29u
c3QKK1ZlY3RvcjxBdG9tU3RyaW5nPiBFdmVudExpc3RlbmVyTWFwOjpldmVudFR5cGVzKCkgY29u
c3QKIHsKLSAgICBWZWN0b3I8QXRvbWljU3RyaW5nPiB0eXBlczsKKyAgICBWZWN0b3I8QXRvbVN0
cmluZz4gdHlwZXM7CiAgICAgdHlwZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX2VudHJpZXMu
c2l6ZSgpKTsKIAogICAgIGZvciAoYXV0byYgZW50cnkgOiBtX2VudHJpZXMpCkBAIC0xMTQsNyAr
MTE0LDcgQEAgc3RhdGljIGlubGluZSBzaXplX3QgZmluZExpc3RlbmVyKGNvbnN0IEV2ZW50TGlz
dGVuZXJWZWN0b3ImIGxpc3RlbmVycywgRXZlbnRMaXMKICAgICByZXR1cm4gbm90Rm91bmQ7CiB9
CiAKLXZvaWQgRXZlbnRMaXN0ZW5lck1hcDo6cmVwbGFjZShjb25zdCBBdG9taWNTdHJpbmcmIGV2
ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYgb2xkTGlzdGVuZXIsIFJlZjxFdmVudExpc3RlbmVyPiYm
IG5ld0xpc3RlbmVyLCBjb25zdCBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lcjo6T3B0aW9ucyYgb3B0
aW9ucykKK3ZvaWQgRXZlbnRMaXN0ZW5lck1hcDo6cmVwbGFjZShjb25zdCBBdG9tU3RyaW5nJiBl
dmVudFR5cGUsIEV2ZW50TGlzdGVuZXImIG9sZExpc3RlbmVyLCBSZWY8RXZlbnRMaXN0ZW5lcj4m
JiBuZXdMaXN0ZW5lciwgY29uc3QgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXI6Ok9wdGlvbnMmIG9w
dGlvbnMpCiB7CiAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOwogICAgIApAQCAt
MTI5LDcgKzEyOSw3IEBAIHZvaWQgRXZlbnRMaXN0ZW5lck1hcDo6cmVwbGFjZShjb25zdCBBdG9t
aWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYgb2xkCiAgICAgcmVnaXN0ZXJlZExp
c3RlbmVyID0gUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXI6OmNyZWF0ZShXVEZNb3ZlKG5ld0xpc3Rl
bmVyKSwgb3B0aW9ucyk7CiB9CiAKLWJvb2wgRXZlbnRMaXN0ZW5lck1hcDo6YWRkKGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwgY29u
c3QgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXI6Ok9wdGlvbnMmIG9wdGlvbnMpCitib29sIEV2ZW50
TGlzdGVuZXJNYXA6OmFkZChjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIFJlZjxFdmVudExp
c3RlbmVyPiYmIGxpc3RlbmVyLCBjb25zdCBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lcjo6T3B0aW9u
cyYgb3B0aW9ucykKIHsKICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7CiAgICAg
CkBAIC0xNTksNyArMTU5LDcgQEAgc3RhdGljIGJvb2wgcmVtb3ZlTGlzdGVuZXJGcm9tVmVjdG9y
KEV2ZW50TGlzdGVuZXJWZWN0b3ImIGxpc3RlbmVycywgRXZlbnRMaXN0ZW4KICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBFdmVudExpc3RlbmVyTWFwOjpyZW1vdmUoY29uc3QgQXRvbWljU3Ry
aW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXImIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUp
Citib29sIEV2ZW50TGlzdGVuZXJNYXA6OnJlbW92ZShjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5
cGUsIEV2ZW50TGlzdGVuZXImIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCiB7CiAgICAgYXV0
byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOwogICAgIApAQCAtMTc3LDcgKzE3Nyw3IEBAIGJv
b2wgRXZlbnRMaXN0ZW5lck1hcDo6cmVtb3ZlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBl
LCBFdmVudExpc3RlbmVyJiBsaXN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1FdmVudExpc3Rl
bmVyVmVjdG9yKiBFdmVudExpc3RlbmVyTWFwOjpmaW5kKGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlKSBjb25zdAorRXZlbnRMaXN0ZW5lclZlY3RvciogRXZlbnRMaXN0ZW5lck1hcDo6Zmlu
ZChjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUpIGNvbnN0CiB7CiAgICAgZm9yIChhdXRvJiBl
bnRyeSA6IG1fZW50cmllcykgewogICAgICAgICBpZiAoZW50cnkuZmlyc3QgPT0gZXZlbnRUeXBl
KQpAQCAtMTk5LDcgKzE5OSw3IEBAIHN0YXRpYyB2b2lkIHJlbW92ZUZpcnN0TGlzdGVuZXJDcmVh
dGVkRnJvbU1hcmt1cChFdmVudExpc3RlbmVyVmVjdG9yJiBsaXN0ZW5lclZlCiAgICAgQVNTRVJU
X1VOVVNFRChmb3VuZExpc3RlbmVyLCBmb3VuZExpc3RlbmVyKTsKIH0KIAotdm9pZCBFdmVudExp
c3RlbmVyTWFwOjpyZW1vdmVGaXJzdEV2ZW50TGlzdGVuZXJDcmVhdGVkRnJvbU1hcmt1cChjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSkKK3ZvaWQgRXZlbnRMaXN0ZW5lck1hcDo6cmVtb3Zl
Rmlyc3RFdmVudExpc3RlbmVyQ3JlYXRlZEZyb21NYXJrdXAoY29uc3QgQXRvbVN0cmluZyYgZXZl
bnRUeXBlKQogewogICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKICAgICAKQEAg
LTIxNSw3ICsyMTUsNyBAQCB2b2lkIEV2ZW50TGlzdGVuZXJNYXA6OnJlbW92ZUZpcnN0RXZlbnRM
aXN0ZW5lckNyZWF0ZWRGcm9tTWFya3VwKGNvbnN0IEF0b21pY1N0cgogICAgIH0KIH0KIAotc3Rh
dGljIHZvaWQgY29weUxpc3RlbmVyc05vdENyZWF0ZWRGcm9tTWFya3VwVG9UYXJnZXQoY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXJWZWN0b3ImIGxpc3RlbmVyVmVj
dG9yLCBFdmVudFRhcmdldCogdGFyZ2V0KQorc3RhdGljIHZvaWQgY29weUxpc3RlbmVyc05vdENy
ZWF0ZWRGcm9tTWFya3VwVG9UYXJnZXQoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBFdmVu
dExpc3RlbmVyVmVjdG9yJiBsaXN0ZW5lclZlY3RvciwgRXZlbnRUYXJnZXQqIHRhcmdldCkKIHsK
ICAgICBmb3IgKGF1dG8mIHJlZ2lzdGVyZWRMaXN0ZW5lciA6IGxpc3RlbmVyVmVjdG9yKSB7CiAg
ICAgICAgIC8vIEV2ZW50IGxpc3RlbmVycyBjcmVhdGVkIGZyb20gbWFya3VwIGhhdmUgYWxyZWFk
eSBiZWVuIHRyYW5zZmVyZWQgdG8gdGhlIHNoYWRvdyB0cmVlIGR1cmluZyBjbG9uaW5nLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyTWFwLmgKaW5kZXggYWU1Zjk4ZDIzYWMzZTY4NTVkYzMw
ZWQ2NjUxNjUyMmVjNmZmNTRjMS4uYWM0NDc2MGQ2ZTdjYWEzNDEwM2I3OWFjYzcyNTBmMDZmMGI5
NmMzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lck1hcC5oCkBAIC0zNyw3ICszNyw3
IEBACiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVk
ZSA8d3RmL0xvY2suaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAt
NTAsMTkgKzUwLDE5IEBAIHB1YmxpYzoKICAgICBFdmVudExpc3RlbmVyTWFwKCk7CiAKICAgICBi
b29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2VudHJpZXMuaXNFbXB0eSgpOyB9Ci0gICAg
Ym9vbCBjb250YWlucyhjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSkgY29uc3QgeyByZXR1
cm4gZmluZChldmVudFR5cGUpOyB9Ci0gICAgYm9vbCBjb250YWluc0NhcHR1cmluZyhjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSkgY29uc3Q7Ci0gICAgYm9vbCBjb250YWluc0FjdGl2ZShj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSkgY29uc3Q7CisgICAgYm9vbCBjb250YWlucyhj
b25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUpIGNvbnN0IHsgcmV0dXJuIGZpbmQoZXZlbnRUeXBl
KTsgfQorICAgIGJvb2wgY29udGFpbnNDYXB0dXJpbmcoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRU
eXBlKSBjb25zdDsKKyAgICBib29sIGNvbnRhaW5zQWN0aXZlKGNvbnN0IEF0b21TdHJpbmcmIGV2
ZW50VHlwZSkgY29uc3Q7CiAKICAgICB2b2lkIGNsZWFyKCk7CiAKLSAgICB2b2lkIHJlcGxhY2Uo
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXImIG9sZExpc3RlbmVy
LCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiBuZXdMaXN0ZW5lciwgY29uc3QgUmVnaXN0ZXJlZEV2ZW50
TGlzdGVuZXI6Ok9wdGlvbnMmKTsKLSAgICBib29sIGFkZChjb25zdCBBdG9taWNTdHJpbmcmIGV2
ZW50VHlwZSwgUmVmPEV2ZW50TGlzdGVuZXI+JiYsIGNvbnN0IFJlZ2lzdGVyZWRFdmVudExpc3Rl
bmVyOjpPcHRpb25zJik7Ci0gICAgYm9vbCByZW1vdmUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVu
dFR5cGUsIEV2ZW50TGlzdGVuZXImLCBib29sIHVzZUNhcHR1cmUpOwotICAgIFdFQkNPUkVfRVhQ
T1JUIEV2ZW50TGlzdGVuZXJWZWN0b3IqIGZpbmQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5
cGUpIGNvbnN0OwotICAgIFZlY3RvcjxBdG9taWNTdHJpbmc+IGV2ZW50VHlwZXMoKSBjb25zdDsK
KyAgICB2b2lkIHJlcGxhY2UoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3Rl
bmVyJiBvbGRMaXN0ZW5lciwgUmVmPEV2ZW50TGlzdGVuZXI+JiYgbmV3TGlzdGVuZXIsIGNvbnN0
IFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyOjpPcHRpb25zJik7CisgICAgYm9vbCBhZGQoY29uc3Qg
QXRvbVN0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiwgY29uc3QgUmVnaXN0
ZXJlZEV2ZW50TGlzdGVuZXI6Ok9wdGlvbnMmKTsKKyAgICBib29sIHJlbW92ZShjb25zdCBBdG9t
U3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXImLCBib29sIHVzZUNhcHR1cmUpOworICAg
IFdFQkNPUkVfRVhQT1JUIEV2ZW50TGlzdGVuZXJWZWN0b3IqIGZpbmQoY29uc3QgQXRvbVN0cmlu
ZyYgZXZlbnRUeXBlKSBjb25zdDsKKyAgICBWZWN0b3I8QXRvbVN0cmluZz4gZXZlbnRUeXBlcygp
IGNvbnN0OwogCi0gICAgdm9pZCByZW1vdmVGaXJzdEV2ZW50TGlzdGVuZXJDcmVhdGVkRnJvbU1h
cmt1cChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSk7CisgICAgdm9pZCByZW1vdmVGaXJz
dEV2ZW50TGlzdGVuZXJDcmVhdGVkRnJvbU1hcmt1cChjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5
cGUpOwogICAgIHZvaWQgY29weUV2ZW50TGlzdGVuZXJzTm90Q3JlYXRlZEZyb21NYXJrdXBUb1Rh
cmdldChFdmVudFRhcmdldCopOwogICAgIAogICAgIExvY2smIGxvY2soKSB7IHJldHVybiBtX2xv
Y2s7IH0KQEAgLTcyLDcgKzcyLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgYXNzZXJ0Tm9BY3Rp
dmVJdGVyYXRvcnMoKSBjb25zdDsKIAotICAgIFZlY3RvcjxzdGQ6OnBhaXI8QXRvbWljU3RyaW5n
LCBzdGQ6OnVuaXF1ZV9wdHI8RXZlbnRMaXN0ZW5lclZlY3Rvcj4+LCAyPiBtX2VudHJpZXM7Cisg
ICAgVmVjdG9yPHN0ZDo6cGFpcjxBdG9tU3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8RXZlbnRMaXN0
ZW5lclZlY3Rvcj4+LCAyPiBtX2VudHJpZXM7CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgc3RkOjph
dG9taWM8aW50PiBtX2FjdGl2ZUl0ZXJhdG9yQ291bnQgeyAwIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRO
YW1lcy5jcHAKaW5kZXggZmNjNTYwMWZjNjAxMDE3MzcxNDZkNTYxOTkzMGNmNmU5YmRlYWE2ZS4u
ZDQ5ZjRjNGYxZGM3MGU2MzhjNmM3YWMwNjAyOWVkOTE2ZTU1NWYyNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudE5hbWVzLmNwcApAQCAtMjQsNyArMjQsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAj
ZGVmaW5lIElOSVRJQUxJWkVfRVZFTlRfTkFNRShuYW1lKSBcCi0gICAgbmFtZSMjRXZlbnQoI25h
bWUsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpLAorICAgIG5hbWUjI0V2ZW50
KCNuYW1lLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCksCiAKIEV2ZW50TmFtZXM6
OkV2ZW50TmFtZXMoKQogICAgIDogRE9NX0VWRU5UX05BTUVTX0ZPUl9FQUNIKElOSVRJQUxJWkVf
RVZFTlRfTkFNRSkgZHVtbXkoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dE5hbWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCmluZGV4IGVmZjgyZDBh
MjA1ZjM1MDNlZmNmMzYxOTdhZDI3MzE5Y2EwMTg1YWIuLjFkZmQ5MDk1Y2M1YWZkOGZlNTE1ZmI2
ZThlM2FmMmNlYTkwZjY2NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5h
bWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaApAQCAtMjYsNyArMjYs
NyBAQAogI2luY2x1ZGUgIlRocmVhZEdsb2JhbERhdGEuaCIKICNpbmNsdWRlIDxhcnJheT4KICNp
bmNsdWRlIDxmdW5jdGlvbmFsPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4KIAogI2lmIEVOQUJMRShUT1VDSF9FVkVO
VFMpCiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgpAQCAtMzM1LDcgKzMzNSw3
IEBAIHN0cnVjdCBFdmVudE5hbWVzIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShFdmVudE5h
bWVzKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAKIHB1YmxpYzoKLSNkZWZpbmUgRE9NX0VW
RU5UX05BTUVTX0RFQ0xBUkUobmFtZSkgY29uc3QgQXRvbWljU3RyaW5nIG5hbWUjI0V2ZW50Owor
I2RlZmluZSBET01fRVZFTlRfTkFNRVNfREVDTEFSRShuYW1lKSBjb25zdCBBdG9tU3RyaW5nIG5h
bWUjI0V2ZW50OwogICAgIERPTV9FVkVOVF9OQU1FU19GT1JfRUFDSChET01fRVZFTlRfTkFNRVNf
REVDTEFSRSkKICN1bmRlZiBET01fRVZFTlRfTkFNRVNfREVDTEFSRQogCkBAIC0zNTUsMTcgKzM1
NSwxNyBAQCBwdWJsaWM6CiAKICAgICAvLyBGSVhNRTogSW5lbGVnYW50IHRvIGNhbGwgdGhlc2Ug
Ym90aCBldmVudCBuYW1lcyBhbmQgZXZlbnQgdHlwZXMuCiAgICAgLy8gV2Ugc2hvdWxkIGNob29z
ZSBvbmUgdGVybSBhbmQgc3RpY2sgdG8gaXQuCi0gICAgYm9vbCBpc1doZWVsRXZlbnRUeXBlKGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKSBjb25zdDsKLSAgICBib29sIGlzR2VzdHVyZUV2
ZW50VHlwZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSkgY29uc3Q7Ci0gICAgYm9vbCBp
c1RvdWNoUmVsYXRlZEV2ZW50VHlwZShjb25zdCBEb2N1bWVudCYsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgZXZlbnRUeXBlKSBjb25zdDsKLSAgICBib29sIGlzVG91Y2hTY3JvbGxCbG9ja2luZ0V2ZW50
VHlwZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSkgY29uc3Q7CisgICAgYm9vbCBpc1do
ZWVsRXZlbnRUeXBlKGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSkgY29uc3Q7CisgICAgYm9v
bCBpc0dlc3R1cmVFdmVudFR5cGUoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlKSBjb25zdDsK
KyAgICBib29sIGlzVG91Y2hSZWxhdGVkRXZlbnRUeXBlKGNvbnN0IERvY3VtZW50JiwgY29uc3Qg
QXRvbVN0cmluZyYgZXZlbnRUeXBlKSBjb25zdDsKKyAgICBib29sIGlzVG91Y2hTY3JvbGxCbG9j
a2luZ0V2ZW50VHlwZShjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUpIGNvbnN0OwogI2lmIEVO
QUJMRShHQU1FUEFEKQotICAgIGJvb2wgaXNHYW1lcGFkRXZlbnRUeXBlKGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlKSBjb25zdDsKKyAgICBib29sIGlzR2FtZXBhZEV2ZW50VHlwZShjb25z
dCBBdG9tU3RyaW5nJiBldmVudFR5cGUpIGNvbnN0OwogI2VuZGlmCiAKLSAgICBzdGQ6OmFycmF5
PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Y29uc3QgQXRvbWljU3RyaW5nPiwgMTM+IHRvdWNoUmVs
YXRlZEV2ZW50TmFtZXMoKSBjb25zdDsKLSAgICBzdGQ6OmFycmF5PHN0ZDo6cmVmZXJlbmNlX3dy
YXBwZXI8Y29uc3QgQXRvbWljU3RyaW5nPiwgMTY+IGV4dGVuZGVkVG91Y2hSZWxhdGVkRXZlbnRO
YW1lcygpIGNvbnN0OwotICAgIHN0ZDo6YXJyYXk8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxjb25z
dCBBdG9taWNTdHJpbmc+LCAzPiBnZXN0dXJlRXZlbnROYW1lcygpIGNvbnN0OworICAgIHN0ZDo6
YXJyYXk8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxjb25zdCBBdG9tU3RyaW5nPiwgMTM+IHRvdWNo
UmVsYXRlZEV2ZW50TmFtZXMoKSBjb25zdDsKKyAgICBzdGQ6OmFycmF5PHN0ZDo6cmVmZXJlbmNl
X3dyYXBwZXI8Y29uc3QgQXRvbVN0cmluZz4sIDE2PiBleHRlbmRlZFRvdWNoUmVsYXRlZEV2ZW50
TmFtZXMoKSBjb25zdDsKKyAgICBzdGQ6OmFycmF5PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Y29u
c3QgQXRvbVN0cmluZz4sIDM+IGdlc3R1cmVFdmVudE5hbWVzKCkgY29uc3Q7CiAKIHByaXZhdGU6
CiAgICAgRXZlbnROYW1lcygpOyAvLyBQcml2YXRlIHRvIHByZXZlbnQgYWNjaWRlbnRhbCBjYWxs
IHRvIEV2ZW50TmFtZXMoKSBpbnN0ZWFkIG9mIGV2ZW50TmFtZXMoKS4KQEAgLTM4MSwxOCArMzgx
LDE4IEBAIGlubGluZSBjb25zdCBFdmVudE5hbWVzJiBldmVudE5hbWVzKCkKICAgICByZXR1cm4g
dGhyZWFkR2xvYmFsRGF0YSgpLmV2ZW50TmFtZXMoKTsKIH0KIAotaW5saW5lIGJvb2wgRXZlbnRO
YW1lczo6aXNHZXN0dXJlRXZlbnRUeXBlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKSBj
b25zdAoraW5saW5lIGJvb2wgRXZlbnROYW1lczo6aXNHZXN0dXJlRXZlbnRUeXBlKGNvbnN0IEF0
b21TdHJpbmcmIGV2ZW50VHlwZSkgY29uc3QKIHsKICAgICByZXR1cm4gZXZlbnRUeXBlID09IGdl
c3R1cmVzdGFydEV2ZW50IHx8IGV2ZW50VHlwZSA9PSBnZXN0dXJlY2hhbmdlRXZlbnQgfHwgZXZl
bnRUeXBlID09IGdlc3R1cmVlbmRFdmVudDsKIH0KIAotaW5saW5lIGJvb2wgRXZlbnROYW1lczo6
aXNUb3VjaFNjcm9sbEJsb2NraW5nRXZlbnRUeXBlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlKSBjb25zdAoraW5saW5lIGJvb2wgRXZlbnROYW1lczo6aXNUb3VjaFNjcm9sbEJsb2NraW5n
RXZlbnRUeXBlKGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSkgY29uc3QKIHsKICAgICByZXR1
cm4gZXZlbnRUeXBlID09IHRvdWNoc3RhcnRFdmVudAogICAgICAgICB8fCBldmVudFR5cGUgPT0g
dG91Y2htb3ZlRXZlbnQ7CiB9CiAKLWlubGluZSBib29sIEV2ZW50TmFtZXM6OmlzVG91Y2hSZWxh
dGVkRXZlbnRUeXBlKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUpIGNvbnN0CitpbmxpbmUgYm9vbCBFdmVudE5hbWVzOjppc1RvdWNoUmVsYXRl
ZEV2ZW50VHlwZShjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IEF0b21TdHJpbmcmIGV2
ZW50VHlwZSkgY29uc3QKIHsKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIGlmIChkb2N1
bWVudC5xdWlya3MoKS5zaG91bGREaXNwYXRjaFNpbXVsYXRlZE1vdXNlRXZlbnRzKCkgfHwgUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5tb3VzZUV2ZW50c1NpbXVsYXRp
b25FbmFibGVkKCkpIHsKQEAgLTQxNiwzMCArNDE2LDMwIEBAIGlubGluZSBib29sIEV2ZW50TmFt
ZXM6OmlzVG91Y2hSZWxhdGVkRXZlbnRUeXBlKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwgY29u
c3QKICAgICAgICAgfHwgZXZlbnRUeXBlID09IHBvaW50ZXJjYW5jZWxFdmVudDsKIH0KIAotaW5s
aW5lIGJvb2wgRXZlbnROYW1lczo6aXNXaGVlbEV2ZW50VHlwZShjb25zdCBBdG9taWNTdHJpbmcm
IGV2ZW50VHlwZSkgY29uc3QKK2lubGluZSBib29sIEV2ZW50TmFtZXM6OmlzV2hlZWxFdmVudFR5
cGUoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlKSBjb25zdAogewogICAgIHJldHVybiBldmVu
dFR5cGUgPT0gd2hlZWxFdmVudAogICAgICAgICB8fCBldmVudFR5cGUgPT0gbW91c2V3aGVlbEV2
ZW50OwogfQogCi1pbmxpbmUgc3RkOjphcnJheTxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPGNvbnN0
IEF0b21pY1N0cmluZz4sIDEzPiBFdmVudE5hbWVzOjp0b3VjaFJlbGF0ZWRFdmVudE5hbWVzKCkg
Y29uc3QKK2lubGluZSBzdGQ6OmFycmF5PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Y29uc3QgQXRv
bVN0cmluZz4sIDEzPiBFdmVudE5hbWVzOjp0b3VjaFJlbGF0ZWRFdmVudE5hbWVzKCkgY29uc3QK
IHsKICAgICByZXR1cm4geyB7IHRvdWNoc3RhcnRFdmVudCwgdG91Y2htb3ZlRXZlbnQsIHRvdWNo
ZW5kRXZlbnQsIHRvdWNoY2FuY2VsRXZlbnQsIHRvdWNoZm9yY2VjaGFuZ2VFdmVudCwgcG9pbnRl
cm92ZXJFdmVudCwgcG9pbnRlcmVudGVyRXZlbnQsIHBvaW50ZXJkb3duRXZlbnQsIHBvaW50ZXJt
b3ZlRXZlbnQsIHBvaW50ZXJ1cEV2ZW50LCBwb2ludGVyb3V0RXZlbnQsIHBvaW50ZXJsZWF2ZUV2
ZW50LCBwb2ludGVyY2FuY2VsRXZlbnQgfSB9OwogfQogCi1pbmxpbmUgc3RkOjphcnJheTxzdGQ6
OnJlZmVyZW5jZV93cmFwcGVyPGNvbnN0IEF0b21pY1N0cmluZz4sIDE2PiBFdmVudE5hbWVzOjpl
eHRlbmRlZFRvdWNoUmVsYXRlZEV2ZW50TmFtZXMoKSBjb25zdAoraW5saW5lIHN0ZDo6YXJyYXk8
c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxjb25zdCBBdG9tU3RyaW5nPiwgMTY+IEV2ZW50TmFtZXM6
OmV4dGVuZGVkVG91Y2hSZWxhdGVkRXZlbnROYW1lcygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHsg
eyB0b3VjaHN0YXJ0RXZlbnQsIHRvdWNobW92ZUV2ZW50LCB0b3VjaGVuZEV2ZW50LCB0b3VjaGNh
bmNlbEV2ZW50LCB0b3VjaGZvcmNlY2hhbmdlRXZlbnQsIHBvaW50ZXJvdmVyRXZlbnQsIHBvaW50
ZXJlbnRlckV2ZW50LCBwb2ludGVyZG93bkV2ZW50LCBwb2ludGVybW92ZUV2ZW50LCBwb2ludGVy
dXBFdmVudCwgcG9pbnRlcm91dEV2ZW50LCBwb2ludGVybGVhdmVFdmVudCwgcG9pbnRlcmNhbmNl
bEV2ZW50LCBtb3VzZWRvd25FdmVudCwgbW91c2Vtb3ZlRXZlbnQsIG1vdXNldXBFdmVudCB9IH07
CiB9CiAgICAgCi1pbmxpbmUgc3RkOjphcnJheTxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPGNvbnN0
IEF0b21pY1N0cmluZz4sIDM+IEV2ZW50TmFtZXM6Omdlc3R1cmVFdmVudE5hbWVzKCkgY29uc3QK
K2lubGluZSBzdGQ6OmFycmF5PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Y29uc3QgQXRvbVN0cmlu
Zz4sIDM+IEV2ZW50TmFtZXM6Omdlc3R1cmVFdmVudE5hbWVzKCkgY29uc3QKIHsKICAgICByZXR1
cm4geyB7IGdlc3R1cmVzdGFydEV2ZW50LCBnZXN0dXJlY2hhbmdlRXZlbnQsIGdlc3R1cmVlbmRF
dmVudCB9IH07CiB9CiAKICNpZiBFTkFCTEUoR0FNRVBBRCkKIAotaW5saW5lIGJvb2wgRXZlbnRO
YW1lczo6aXNHYW1lcGFkRXZlbnRUeXBlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKSBj
b25zdAoraW5saW5lIGJvb2wgRXZlbnROYW1lczo6aXNHYW1lcGFkRXZlbnRUeXBlKGNvbnN0IEF0
b21TdHJpbmcmIGV2ZW50VHlwZSkgY29uc3QKIHsKICAgICByZXR1cm4gZXZlbnRUeXBlID09IGdh
bWVwYWRjb25uZWN0ZWRFdmVudAogICAgICAgICB8fCBldmVudFR5cGUgPT0gZ2FtZXBhZGRpc2Nv
bm5lY3RlZEV2ZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50U2VuZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRTZW5kZXIuaAppbmRleCAxNWNkYjE3NzliMjAw
YWYzNjkyYmZlZTFlNzBjOWFiMDJjNmIzNGU5Li43MTdjYzUxNjE5MTM0ZmMzNzI4ZmQxNmJmMDJi
NTJkYjI5ZWZkYWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRTZW5kZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRTZW5kZXIuaApAQCAtMzMsOSArMzMsOSBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBFdmVudFNl
bmRlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRXZlbnRTZW5kZXIpOyBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBFdmVudFNlbmRlcihjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSk7CisgICAgZXhwbGljaXQgRXZlbnRTZW5kZXIoY29uc3Qg
QXRvbVN0cmluZyYgZXZlbnRUeXBlKTsKIAotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlKCkgY29uc3QgeyByZXR1cm4gbV9ldmVudFR5cGU7IH0KKyAgICBjb25zdCBBdG9tU3RyaW5n
JiBldmVudFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2V2ZW50VHlwZTsgfQogICAgIHZvaWQgZGlz
cGF0Y2hFdmVudFNvb24oVCYpOwogICAgIHZvaWQgY2FuY2VsRXZlbnQoVCYpOwogICAgIHZvaWQg
ZGlzcGF0Y2hQZW5kaW5nRXZlbnRzKCk7CkBAIC01MCwxMyArNTAsMTMgQEAgcHVibGljOgogcHJp
dmF0ZToKICAgICB2b2lkIHRpbWVyRmlyZWQoKSB7IGRpc3BhdGNoUGVuZGluZ0V2ZW50cygpOyB9
CiAKLSAgICBBdG9taWNTdHJpbmcgbV9ldmVudFR5cGU7CisgICAgQXRvbVN0cmluZyBtX2V2ZW50
VHlwZTsKICAgICBUaW1lciBtX3RpbWVyOwogICAgIFZlY3RvcjxUKj4gbV9kaXNwYXRjaFNvb25M
aXN0OwogICAgIFZlY3RvcjxUKj4gbV9kaXNwYXRjaGluZ0xpc3Q7CiB9OwogCi10ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBFdmVudFNlbmRlcjxUPjo6RXZlbnRTZW5kZXIoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUpCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBFdmVudFNlbmRlcjxUPjo6RXZlbnRT
ZW5kZXIoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlKQogICAgIDogbV9ldmVudFR5cGUoZXZl
bnRUeXBlKQogICAgICwgbV90aW1lcigqdGhpcywgJkV2ZW50U2VuZGVyOjp0aW1lckZpcmVkKQog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKaW5kZXggYjg5Mzk0YmFlOWFkYWFkNDg1Y2Iz
MDU4MmQ0MzI0MTAwMjBmMzBmYS4uOWU0NzE0NDBjODdlYmZhZmEzODEwNTdkZDk5M2JkYTJkZmY4
ZGExYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCkBAIC02OCw3ICs2OCw3IEBAIGJv
b2wgRXZlbnRUYXJnZXQ6OmlzUGF5bWVudFJlcXVlc3QoKSBjb25zdAogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotYm9vbCBFdmVudFRhcmdldDo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIsIGNvbnN0IEFk
ZEV2ZW50TGlzdGVuZXJPcHRpb25zJiBvcHRpb25zKQorYm9vbCBFdmVudFRhcmdldDo6YWRkRXZl
bnRMaXN0ZW5lcihjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIFJlZjxFdmVudExpc3RlbmVy
PiYmIGxpc3RlbmVyLCBjb25zdCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucyYgb3B0aW9ucykKIHsK
ICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgbGlzdGVuZXItPmNoZWNrVmFsaWRpdHlGb3JFdmVu
dFRhcmdldCgqdGhpcyk7CkBAIC0xMDAsNyArMTAwLDcgQEAgYm9vbCBFdmVudFRhcmdldDo6YWRk
RXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50TGlz
dGUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBFdmVudFRhcmdldDo6YWRkRXZlbnRMaXN0
ZW5lckZvckJpbmRpbmdzKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZl
bnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnNPckJvb2xlYW4m
JiB2YXJpYW50KQordm9pZCBFdmVudFRhcmdldDo6YWRkRXZlbnRMaXN0ZW5lckZvckJpbmRpbmdz
KGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYgbGlz
dGVuZXIsIEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zT3JCb29sZWFuJiYgdmFyaWFudCkKIHsKICAg
ICBpZiAoIWxpc3RlbmVyKQogICAgICAgICByZXR1cm47CkBAIC0xMTQsNyArMTE0LDcgQEAgdm9p
ZCBFdmVudFRhcmdldDo6YWRkRXZlbnRMaXN0ZW5lckZvckJpbmRpbmdzKGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBSZWYKICAgICBXVEY6OnZpc2l0KHZpc2l0b3IsIHZhcmlhbnQpOwog
fQogCi12b2lkIEV2ZW50VGFyZ2V0OjpyZW1vdmVFdmVudExpc3RlbmVyRm9yQmluZGluZ3MoY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmIGxpc3Rl
bmVyLCBMaXN0ZW5lck9wdGlvbnNPckJvb2xlYW4mJiB2YXJpYW50KQordm9pZCBFdmVudFRhcmdl
dDo6cmVtb3ZlRXZlbnRMaXN0ZW5lckZvckJpbmRpbmdzKGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50
VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIsIExpc3RlbmVyT3B0aW9uc09y
Qm9vbGVhbiYmIHZhcmlhbnQpCiB7CiAgICAgaWYgKCFsaXN0ZW5lcikKICAgICAgICAgcmV0dXJu
OwpAQCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgRXZlbnRUYXJnZXQ6OnJlbW92ZUV2ZW50TGlzdGVu
ZXJGb3JCaW5kaW5ncyhjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwKICAgICBXVEY6OnZp
c2l0KHZpc2l0b3IsIHZhcmlhbnQpOwogfQogCi1ib29sIEV2ZW50VGFyZ2V0OjpyZW1vdmVFdmVu
dExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiBs
aXN0ZW5lciwgY29uc3QgTGlzdGVuZXJPcHRpb25zJiBvcHRpb25zKQorYm9vbCBFdmVudFRhcmdl
dDo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50
TGlzdGVuZXImIGxpc3RlbmVyLCBjb25zdCBMaXN0ZW5lck9wdGlvbnMmIG9wdGlvbnMpCiB7CiAg
ICAgYXV0byogZGF0YSA9IGV2ZW50VGFyZ2V0RGF0YSgpOwogICAgIGlmICghZGF0YSkKQEAgLTEz
OSw3ICsxMzksNyBAQCBib29sIEV2ZW50VGFyZ2V0OjpyZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbgogICAgIHJldHVybiBkYXRhLT5l
dmVudExpc3RlbmVyTWFwLnJlbW92ZShldmVudFR5cGUsIGxpc3RlbmVyLCBvcHRpb25zLmNhcHR1
cmUpOwogfQogCi1ib29sIEV2ZW50VGFyZ2V0OjpzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0
ZW5lciwgRE9NV3JhcHBlcldvcmxkJiBpc29sYXRlZFdvcmxkKQorYm9vbCBFdmVudFRhcmdldDo6
c2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIFJl
ZlB0cjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBET01XcmFwcGVyV29ybGQmIGlzb2xhdGVk
V29ybGQpCiB7CiAgICAgYXV0byogZXhpc3RpbmdMaXN0ZW5lciA9IGF0dHJpYnV0ZUV2ZW50TGlz
dGVuZXIoZXZlbnRUeXBlLCBpc29sYXRlZFdvcmxkKTsKICAgICBpZiAoIWxpc3RlbmVyKSB7CkBA
IC0xNjQsNyArMTY0LDcgQEAgYm9vbCBFdmVudFRhcmdldDo6c2V0QXR0cmlidXRlRXZlbnRMaXN0
ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHQKICAgICByZXR1cm4gYWRk
RXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3RlbmVyLnJlbGVhc2VOb25OdWxsKCkpOwogfQog
Ci1FdmVudExpc3RlbmVyKiBFdmVudFRhcmdldDo6YXR0cmlidXRlRXZlbnRMaXN0ZW5lcihjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRE9NV3JhcHBlcldvcmxkJiBpc29sYXRlZFdvcmxk
KQorRXZlbnRMaXN0ZW5lciogRXZlbnRUYXJnZXQ6OmF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoY29u
c3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBET01XcmFwcGVyV29ybGQmIGlzb2xhdGVkV29ybGQp
CiB7CiAgICAgZm9yIChhdXRvJiBldmVudExpc3RlbmVyIDogZXZlbnRMaXN0ZW5lcnMoZXZlbnRU
eXBlKSkgewogICAgICAgICBhdXRvJiBsaXN0ZW5lciA9IGV2ZW50TGlzdGVuZXItPmNhbGxiYWNr
KCk7CkBAIC0xNzksNyArMTc5LDcgQEAgRXZlbnRMaXN0ZW5lciogRXZlbnRUYXJnZXQ6OmF0dHJp
YnV0ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUKICAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIAotYm9vbCBFdmVudFRhcmdldDo6aGFzQWN0aXZlRXZlbnRMaXN0ZW5l
cnMoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUpIGNvbnN0Citib29sIEV2ZW50VGFyZ2V0
OjpoYXNBY3RpdmVFdmVudExpc3RlbmVycyhjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUpIGNv
bnN0CiB7CiAgICAgYXV0byogZGF0YSA9IGV2ZW50VGFyZ2V0RGF0YSgpOwogICAgIHJldHVybiBk
YXRhICYmIGRhdGEtPmV2ZW50TGlzdGVuZXJNYXAuY29udGFpbnNBY3RpdmUoZXZlbnRUeXBlKTsK
QEAgLTIxOCw3ICsyMTgsNyBAQCB2b2lkIEV2ZW50VGFyZ2V0Ojp1bmNhdWdodEV4Y2VwdGlvbklu
RXZlbnRIYW5kbGVyKCkKIHsKIH0KIAotc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgbGVnYWN5
VHlwZShjb25zdCBFdmVudCYgZXZlbnQpCitzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgbGVnYWN5
VHlwZShjb25zdCBFdmVudCYgZXZlbnQpCiB7CiAgICAgaWYgKGV2ZW50LnR5cGUoKSA9PSBldmVu
dE5hbWVzKCkuYW5pbWF0aW9uZW5kRXZlbnQpCiAgICAgICAgIHJldHVybiBldmVudE5hbWVzKCku
d2Via2l0QW5pbWF0aW9uRW5kRXZlbnQ7CkBAIC0yNjAsMTAgKzI2MCwxMCBAQCB2b2lkIEV2ZW50
VGFyZ2V0OjpmaXJlRXZlbnRMaXN0ZW5lcnMoRXZlbnQmIGV2ZW50LCBFdmVudEludm9rZVBoYXNl
IHBoYXNlKQogICAgIGlmICghZXZlbnQuaXNUcnVzdGVkKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbGVnYWN5VHlwZU5hbWUgPSBsZWdhY3lUeXBlKGV2ZW50
KTsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBsZWdhY3lUeXBlTmFtZSA9IGxlZ2FjeVR5cGUoZXZl
bnQpOwogICAgIGlmICghbGVnYWN5VHlwZU5hbWUuaXNOdWxsKCkpIHsKICAgICAgICAgaWYgKGF1
dG8qIGxlZ2FjeUxpc3RlbmVyc1ZlY3RvciA9IGRhdGEtPmV2ZW50TGlzdGVuZXJNYXAuZmluZChs
ZWdhY3lUeXBlTmFtZSkpIHsKLSAgICAgICAgICAgIEF0b21pY1N0cmluZyB0eXBlTmFtZSA9IGV2
ZW50LnR5cGUoKTsKKyAgICAgICAgICAgIEF0b21TdHJpbmcgdHlwZU5hbWUgPSBldmVudC50eXBl
KCk7CiAgICAgICAgICAgICBldmVudC5zZXRUeXBlKGxlZ2FjeVR5cGVOYW1lKTsKICAgICAgICAg
ICAgIGlubmVySW52b2tlRXZlbnRMaXN0ZW5lcnMoZXZlbnQsICpsZWdhY3lMaXN0ZW5lcnNWZWN0
b3IsIHBoYXNlKTsKICAgICAgICAgICAgIGV2ZW50LnNldFR5cGUodHlwZU5hbWUpOwpAQCAtMzI2
LDE0ICszMjYsMTQgQEAgdm9pZCBFdmVudFRhcmdldDo6aW5uZXJJbnZva2VFdmVudExpc3RlbmVy
cyhFdmVudCYgZXZlbnQsIEV2ZW50TGlzdGVuZXJWZWN0b3IgbGkKICAgICAgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWREaXNwYXRjaEV2ZW50KHdpbGxEaXNwYXRjaEV2ZW50Q29va2ll
LCBldmVudC5kZWZhdWx0UHJldmVudGVkKCkpOwogfQogCi1WZWN0b3I8QXRvbWljU3RyaW5nPiBF
dmVudFRhcmdldDo6ZXZlbnRUeXBlcygpCitWZWN0b3I8QXRvbVN0cmluZz4gRXZlbnRUYXJnZXQ6
OmV2ZW50VHlwZXMoKQogewogICAgIGlmIChhdXRvKiBkYXRhID0gZXZlbnRUYXJnZXREYXRhKCkp
CiAgICAgICAgIHJldHVybiBkYXRhLT5ldmVudExpc3RlbmVyTWFwLmV2ZW50VHlwZXMoKTsKICAg
ICByZXR1cm4geyB9OwogfQogCi1jb25zdCBFdmVudExpc3RlbmVyVmVjdG9yJiBFdmVudFRhcmdl
dDo6ZXZlbnRMaXN0ZW5lcnMoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUpCitjb25zdCBF
dmVudExpc3RlbmVyVmVjdG9yJiBFdmVudFRhcmdldDo6ZXZlbnRMaXN0ZW5lcnMoY29uc3QgQXRv
bVN0cmluZyYgZXZlbnRUeXBlKQogewogICAgIGF1dG8qIGRhdGEgPSBldmVudFRhcmdldERhdGEo
KTsKICAgICBhdXRvKiBsaXN0ZW5lclZlY3RvciA9IGRhdGEgPyBkYXRhLT5ldmVudExpc3RlbmVy
TWFwLmZpbmQoZXZlbnRUeXBlKSA6IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnRUYXJnZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCmlu
ZGV4IDEwMjMzN2I1M2Y5ZDY4ZWU1ZDhkYjg1NDczMGU4NTdmMzU0ZTFlZTAuLmY4MmFlNTI0OGZh
ZGUwZWEzZThhNzVmZmNjOTFmOWRkNThhYjM2OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudFRhcmdldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5o
CkBAIC04MywyOSArODMsMjkgQEAgcHVibGljOgogICAgIH07CiAKICAgICB1c2luZyBBZGRFdmVu
dExpc3RlbmVyT3B0aW9uc09yQm9vbGVhbiA9IFZhcmlhbnQ8QWRkRXZlbnRMaXN0ZW5lck9wdGlv
bnMsIGJvb2w+OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkRXZlbnRMaXN0ZW5lckZvckJp
bmRpbmdzKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5l
cj4mJiwgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnNPckJvb2xlYW4mJik7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBhZGRFdmVudExpc3RlbmVyRm9yQmluZGluZ3MoY29uc3QgQXRvbVN0cmluZyYg
ZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiwgQWRkRXZlbnRMaXN0ZW5lck9wdGlv
bnNPckJvb2xlYW4mJik7CiAgICAgdXNpbmcgTGlzdGVuZXJPcHRpb25zT3JCb29sZWFuID0gVmFy
aWFudDxMaXN0ZW5lck9wdGlvbnMsIGJvb2w+OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVt
b3ZlRXZlbnRMaXN0ZW5lckZvckJpbmRpbmdzKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBl
LCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiwgTGlzdGVuZXJPcHRpb25zT3JCb29sZWFuJiYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lckZvckJpbmRpbmdzKGNv
bnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYsIExpc3Rl
bmVyT3B0aW9uc09yQm9vbGVhbiYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25Pcjxi
b29sPiBkaXNwYXRjaEV2ZW50Rm9yQmluZGluZ3MoRXZlbnQmKTsKIAotICAgIHZpcnR1YWwgYm9v
bCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZl
bnRMaXN0ZW5lcj4mJiwgY29uc3QgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMmID0geyB9KTsKLSAg
ICB2aXJ0dWFsIGJvb2wgcmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2
ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYsIGNvbnN0IExpc3RlbmVyT3B0aW9ucyYpOworICAgIHZp
cnR1YWwgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwg
UmVmPEV2ZW50TGlzdGVuZXI+JiYsIGNvbnN0IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zJiA9IHsg
fSk7CisgICAgdmlydHVhbCBib29sIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbVN0cmlu
ZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiwgY29uc3QgTGlzdGVuZXJPcHRpb25zJik7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKTsKICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hFdmVudChFdmVudCYpOwogICAgIHZpcnR1YWwgdm9pZCB1bmNhdWdodEV4
Y2VwdGlvbkluRXZlbnRIYW5kbGVyKCk7CiAKICAgICAvLyBVc2VkIGZvciBsZWdhY3kgIm9uZXZl
bnQiIGF0dHJpYnV0ZXMuCi0gICAgYm9vbCBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiwgRE9NV3Jh
cHBlcldvcmxkJik7Ci0gICAgRXZlbnRMaXN0ZW5lciogYXR0cmlidXRlRXZlbnRMaXN0ZW5lcihj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRE9NV3JhcHBlcldvcmxkJik7CisgICAgYm9v
bCBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwg
UmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYsIERPTVdyYXBwZXJXb3JsZCYpOworICAgIEV2ZW50TGlz
dGVuZXIqIGF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBl
LCBET01XcmFwcGVyV29ybGQmKTsKIAogICAgIGJvb2wgaGFzRXZlbnRMaXN0ZW5lcnMoKSBjb25z
dDsKLSAgICBib29sIGhhc0V2ZW50TGlzdGVuZXJzKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlKSBjb25zdDsKLSAgICBib29sIGhhc0NhcHR1cmluZ0V2ZW50TGlzdGVuZXJzKGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlKTsKLSAgICBib29sIGhhc0FjdGl2ZUV2ZW50TGlzdGVuZXJz
KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKSBjb25zdDsKKyAgICBib29sIGhhc0V2ZW50
TGlzdGVuZXJzKGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSkgY29uc3Q7CisgICAgYm9vbCBo
YXNDYXB0dXJpbmdFdmVudExpc3RlbmVycyhjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUpOwor
ICAgIGJvb2wgaGFzQWN0aXZlRXZlbnRMaXN0ZW5lcnMoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRU
eXBlKSBjb25zdDsKIAotICAgIFZlY3RvcjxBdG9taWNTdHJpbmc+IGV2ZW50VHlwZXMoKTsKLSAg
ICBjb25zdCBFdmVudExpc3RlbmVyVmVjdG9yJiBldmVudExpc3RlbmVycyhjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSk7CisgICAgVmVjdG9yPEF0b21TdHJpbmc+IGV2ZW50VHlwZXMoKTsK
KyAgICBjb25zdCBFdmVudExpc3RlbmVyVmVjdG9yJiBldmVudExpc3RlbmVycyhjb25zdCBBdG9t
U3RyaW5nJiBldmVudFR5cGUpOwogCiAgICAgZW51bSBjbGFzcyBFdmVudEludm9rZVBoYXNlIHsg
Q2FwdHVyaW5nLCBCdWJibGluZyB9OwogICAgIHZvaWQgZmlyZUV2ZW50TGlzdGVuZXJzKEV2ZW50
JiwgRXZlbnRJbnZva2VQaGFzZSk7CkBAIC0xNTgsMTMgKzE1OCwxMyBAQCBpbmxpbmUgYm9vbCBF
dmVudFRhcmdldDo6aGFzRXZlbnRMaXN0ZW5lcnMoKSBjb25zdAogICAgIHJldHVybiBkYXRhICYm
ICFkYXRhLT5ldmVudExpc3RlbmVyTWFwLmlzRW1wdHkoKTsKIH0KIAotaW5saW5lIGJvb2wgRXZl
bnRUYXJnZXQ6Omhhc0V2ZW50TGlzdGVuZXJzKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBl
KSBjb25zdAoraW5saW5lIGJvb2wgRXZlbnRUYXJnZXQ6Omhhc0V2ZW50TGlzdGVuZXJzKGNvbnN0
IEF0b21TdHJpbmcmIGV2ZW50VHlwZSkgY29uc3QKIHsKICAgICBhdXRvKiBkYXRhID0gZXZlbnRU
YXJnZXREYXRhKCk7CiAgICAgcmV0dXJuIGRhdGEgJiYgZGF0YS0+ZXZlbnRMaXN0ZW5lck1hcC5j
b250YWlucyhldmVudFR5cGUpOwogfQogCi1pbmxpbmUgYm9vbCBFdmVudFRhcmdldDo6aGFzQ2Fw
dHVyaW5nRXZlbnRMaXN0ZW5lcnMoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUpCitpbmxp
bmUgYm9vbCBFdmVudFRhcmdldDo6aGFzQ2FwdHVyaW5nRXZlbnRMaXN0ZW5lcnMoY29uc3QgQXRv
bVN0cmluZyYgZXZlbnRUeXBlKQogewogICAgIGF1dG8qIGRhdGEgPSBldmVudFRhcmdldERhdGEo
KTsKICAgICByZXR1cm4gZGF0YSAmJiBkYXRhLT5ldmVudExpc3RlbmVyTWFwLmNvbnRhaW5zQ2Fw
dHVyaW5nKGV2ZW50VHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRU
YXJnZXQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmlkbAppbmRleCAwZjkx
ZWYzMjRhNjZjMDJkYmIwMTlhZDU0MjE2YWExM2I2YjJiMTRiLi5lNWYxNzlkNTFkMWY1OTU2N2Ux
NGQ5YjVjNzllODUxNWIzYzg1MGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnRUYXJnZXQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5pZGwKQEAg
LTI2LDggKzI2LDggQEAKICAgICBKU0N1c3RvbU1hcmtGdW5jdGlvbiwKICAgICBKU0N1c3RvbVRv
TmF0aXZlT2JqZWN0LAogXSBpbnRlcmZhY2UgRXZlbnRUYXJnZXQgewotICAgIFtJbXBsZW1lbnRl
ZEFzPWFkZEV2ZW50TGlzdGVuZXJGb3JCaW5kaW5nc10gdm9pZCBhZGRFdmVudExpc3RlbmVyKFtB
dG9taWNTdHJpbmddIERPTVN0cmluZyB0eXBlLCBFdmVudExpc3RlbmVyPyBjYWxsYmFjaywgb3B0
aW9uYWwgKEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zIG9yIGJvb2xlYW4pIG9wdGlvbnMgPSBmYWxz
ZSk7Ci0gICAgW0ltcGxlbWVudGVkQXM9cmVtb3ZlRXZlbnRMaXN0ZW5lckZvckJpbmRpbmdzXSB2
b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXIoW0F0b21pY1N0cmluZ10gRE9NU3RyaW5nIHR5cGUsIEV2
ZW50TGlzdGVuZXI/IGNhbGxiYWNrLCBvcHRpb25hbCAoRXZlbnRMaXN0ZW5lck9wdGlvbnMgb3Ig
Ym9vbGVhbikgb3B0aW9ucyA9IGZhbHNlKTsKKyAgICBbSW1wbGVtZW50ZWRBcz1hZGRFdmVudExp
c3RlbmVyRm9yQmluZGluZ3NdIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihbQXRvbVN0cmluZ10gRE9N
U3RyaW5nIHR5cGUsIEV2ZW50TGlzdGVuZXI/IGNhbGxiYWNrLCBvcHRpb25hbCAoQWRkRXZlbnRM
aXN0ZW5lck9wdGlvbnMgb3IgYm9vbGVhbikgb3B0aW9ucyA9IGZhbHNlKTsKKyAgICBbSW1wbGVt
ZW50ZWRBcz1yZW1vdmVFdmVudExpc3RlbmVyRm9yQmluZGluZ3NdIHZvaWQgcmVtb3ZlRXZlbnRM
aXN0ZW5lcihbQXRvbVN0cmluZ10gRE9NU3RyaW5nIHR5cGUsIEV2ZW50TGlzdGVuZXI/IGNhbGxi
YWNrLCBvcHRpb25hbCAoRXZlbnRMaXN0ZW5lck9wdGlvbnMgb3IgYm9vbGVhbikgb3B0aW9ucyA9
IGZhbHNlKTsKICAgICBbSW1wbGVtZW50ZWRBcz1kaXNwYXRjaEV2ZW50Rm9yQmluZGluZ3MsIE1h
eVRocm93RXhjZXB0aW9uXSBib29sZWFuIGRpc3BhdGNoRXZlbnQoRXZlbnQgZXZlbnQpOwogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0ZvY3VzRXZlbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0ZvY3VzRXZlbnQuY3BwCmluZGV4IDgyNjM2MTU0OWMyZTNiMDMwY2M4Zjlk
NjMzZTk1NDQxN2I3ODk4YzUuLjZiMjE5YTRhODI0ZWI1MTQ1ODQ0ZGE1ZTVlMjg0MjlhYzUyNjI0
M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Gb2N1c0V2ZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRm9jdXNFdmVudC5jcHAKQEAgLTQwLDEzICs0MCwxMyBAQCBib29s
IEZvY3VzRXZlbnQ6OmlzRm9jdXNFdmVudCgpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LUZvY3VzRXZlbnQ6OkZvY3VzRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBDYW5CdWJi
bGUgY2FuQnViYmxlLCBJc0NhbmNlbGFibGUgaXNDYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJv
eHk+JiYgdmlldywgaW50IGRldGFpbCwgUmVmUHRyPEV2ZW50VGFyZ2V0PiYmIHJlbGF0ZWRUYXJn
ZXQpCitGb2N1c0V2ZW50OjpGb2N1c0V2ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIENhbkJ1
YmJsZSBjYW5CdWJibGUsIElzQ2FuY2VsYWJsZSBpc0NhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQ
cm94eT4mJiB2aWV3LCBpbnQgZGV0YWlsLCBSZWZQdHI8RXZlbnRUYXJnZXQ+JiYgcmVsYXRlZFRh
cmdldCkKICAgICA6IFVJRXZlbnQodHlwZSwgY2FuQnViYmxlLCBpc0NhbmNlbGFibGUsIElzQ29t
cG9zZWQ6OlllcywgV1RGTW92ZSh2aWV3KSwgZGV0YWlsKQogICAgICwgbV9yZWxhdGVkVGFyZ2V0
KFdURk1vdmUocmVsYXRlZFRhcmdldCkpCiB7CiB9CiAKLUZvY3VzRXZlbnQ6OkZvY3VzRXZlbnQo
Y29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiBpbml0aWFsaXplcikKK0ZvY3Vz
RXZlbnQ6OkZvY3VzRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3QgSW5pdCYgaW5p
dGlhbGl6ZXIpCiAgICAgOiBVSUV2ZW50KHR5cGUsIGluaXRpYWxpemVyKQogICAgICwgbV9yZWxh
dGVkVGFyZ2V0KGluaXRpYWxpemVyLnJlbGF0ZWRUYXJnZXQpCiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRm9jdXNFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0ZvY3VzRXZl
bnQuaAppbmRleCA4NjdhMDA4ZDVjYTNiN2U5ZDllYzUzN2UxMzIwYmJhZWVmMzYxNTI2Li5lNzNh
YjQwZjRhZTY3NWRkZjQwNDU4MjJjOTZhNDAwMWIyYjcyYWUxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRm9jdXNFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Gb2N1c0V2
ZW50LmgKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgTm9kZTsKIAogY2xhc3MgRm9jdXNFdmVudCBm
aW5hbCA6IHB1YmxpYyBVSUV2ZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEZvY3VzRXZl
bnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIENhbkJ1YmJsZSBjYW5CdWJibGUs
IElzQ2FuY2VsYWJsZSBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgaW50
IGRldGFpbCwgUmVmUHRyPEV2ZW50VGFyZ2V0PiYmIHJlbGF0ZWRUYXJnZXQpCisgICAgc3RhdGlj
IFJlZjxGb2N1c0V2ZW50PiBjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgQ2FuQnViYmxl
IGNhbkJ1YmJsZSwgSXNDYW5jZWxhYmxlIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4m
JiB2aWV3LCBpbnQgZGV0YWlsLCBSZWZQdHI8RXZlbnRUYXJnZXQ+JiYgcmVsYXRlZFRhcmdldCkK
ICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZvY3VzRXZlbnQodHlwZSwgY2Fu
QnViYmxlLCBjYW5jZWxhYmxlLCBXVEZNb3ZlKHZpZXcpLCBkZXRhaWwsIFdURk1vdmUocmVsYXRl
ZFRhcmdldCkpKTsKICAgICB9CkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICAgICAgUmVm
UHRyPEV2ZW50VGFyZ2V0PiByZWxhdGVkVGFyZ2V0OwogICAgIH07CiAKLSAgICBzdGF0aWMgUmVm
PEZvY3VzRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IEluaXQm
IGluaXRpYWxpemVyKQorICAgIHN0YXRpYyBSZWY8Rm9jdXNFdmVudD4gY3JlYXRlKGNvbnN0IEF0
b21TdHJpbmcmIHR5cGUsIGNvbnN0IEluaXQmIGluaXRpYWxpemVyKQogICAgIHsKICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRm9jdXNFdmVudCh0eXBlLCBpbml0aWFsaXplcikpOwogICAg
IH0KQEAgLTU4LDggKzU4LDggQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIEZvY3VzRXZlbnQo
KSA9IGRlZmF1bHQ7Ci0gICAgRm9jdXNFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIENh
bkJ1YmJsZSwgSXNDYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGludCwgUmVmUHRy
PEV2ZW50VGFyZ2V0PiYmKTsKLSAgICBGb2N1c0V2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlw
ZSwgY29uc3QgSW5pdCYpOworICAgIEZvY3VzRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwg
Q2FuQnViYmxlLCBJc0NhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgaW50LCBSZWZQ
dHI8RXZlbnRUYXJnZXQ+JiYpOworICAgIEZvY3VzRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlw
ZSwgY29uc3QgSW5pdCYpOwogCiAgICAgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBj
b25zdCBmaW5hbDsKICAgICBib29sIGlzRm9jdXNFdmVudCgpIGNvbnN0IGZpbmFsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Z1bGxzY3JlZW5NYW5hZ2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9GdWxsc2NyZWVuTWFuYWdlci5jcHAKaW5kZXggNmY5MmM5MDUwMjhmOTE2MmI4
YzA1ZDc1MWQzODQ0YzcxOTlkNGE5Ny4uODMwYTFjYjI0NTU2MTQ2YzUyMmRmNzgyMDE0OTg2ZjJk
MzY5M2FhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Z1bGxzY3JlZW5NYW5hZ2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRnVsbHNjcmVlbk1hbmFnZXIuY3BwCkBAIC00
NTgsNyArNDU4LDcgQEAgdm9pZCBGdWxsc2NyZWVuTWFuYWdlcjo6ZGlzcGF0Y2hGdWxsc2NyZWVu
Q2hhbmdlRXZlbnRzKCkKICAgICBkaXNwYXRjaEZ1bGxzY3JlZW5DaGFuZ2VPckVycm9yRXZlbnQo
ZXJyb3JRdWV1ZSwgZXZlbnROYW1lcygpLndlYmtpdGZ1bGxzY3JlZW5lcnJvckV2ZW50LCAvKiBz
aG91bGROb3RpZnlNZWRpYUVsZW1lbnQgKi8gZmFsc2UpOwogfQogCi12b2lkIEZ1bGxzY3JlZW5N
YW5hZ2VyOjpkaXNwYXRjaEZ1bGxzY3JlZW5DaGFuZ2VPckVycm9yRXZlbnQoRGVxdWU8UmVmUHRy
PE5vZGU+PiYgcXVldWUsIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lLCBib29sIHNob3Vs
ZE5vdGlmeU1lZGlhRWxlbWVudCkKK3ZvaWQgRnVsbHNjcmVlbk1hbmFnZXI6OmRpc3BhdGNoRnVs
bHNjcmVlbkNoYW5nZU9yRXJyb3JFdmVudChEZXF1ZTxSZWZQdHI8Tm9kZT4+JiBxdWV1ZSwgY29u
c3QgQXRvbVN0cmluZyYgZXZlbnROYW1lLCBib29sIHNob3VsZE5vdGlmeU1lZGlhRWxlbWVudCkK
IHsKICAgICB3aGlsZSAoIXF1ZXVlLmlzRW1wdHkoKSkgewogICAgICAgICBSZWZQdHI8Tm9kZT4g
bm9kZSA9IHF1ZXVlLnRha2VGaXJzdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0Z1bGxzY3JlZW5NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRnVsbHNjcmVlbk1hbmFn
ZXIuaAppbmRleCBlYmRhYTk1ZDhjZGZkZTQyYjgwMjlmN2FhNDM0YTE5OTMyMzQ5YzA2Li5lZGQ5
Y2EyOGVhNDkzYWM3Yzk0YzhiZGUyODViMTY2NmMzODgyNTU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRnVsbHNjcmVlbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RnVsbHNjcmVlbk1hbmFnZXIuaApAQCAtOTksNyArOTksNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6
CiAgICAgZnJpZW5kIGNsYXNzIERvY3VtZW50OwogCi0gICAgdm9pZCBkaXNwYXRjaEZ1bGxzY3Jl
ZW5DaGFuZ2VPckVycm9yRXZlbnQoRGVxdWU8UmVmUHRyPE5vZGU+PiYsIGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnROYW1lLCBib29sIHNob3VsZE5vdGlmeU1lZGlhRWxlbWVudCk7CisgICAgdm9p
ZCBkaXNwYXRjaEZ1bGxzY3JlZW5DaGFuZ2VPckVycm9yRXZlbnQoRGVxdWU8UmVmUHRyPE5vZGU+
PiYsIGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50TmFtZSwgYm9vbCBzaG91bGROb3RpZnlNZWRpYUVs
ZW1lbnQpOwogICAgIHZvaWQgY2xlYXJGdWxsc2NyZWVuRWxlbWVudFN0YWNrKCk7CiAgICAgdm9p
ZCBwb3BGdWxsc2NyZWVuRWxlbWVudFN0YWNrKCk7CiAgICAgdm9pZCBwdXNoRnVsbHNjcmVlbkVs
ZW1lbnRTdGFjayhFbGVtZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vR2Vu
ZXJpY0V2ZW50UXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0dlbmVyaWNFdmVudFF1ZXVl
LmNwcAppbmRleCA4Y2ZhOGYwNGNiMTJmMGNlMWZmNDY1NDJiZTYyMmE0NzQxMzBhYWUwLi43YTA4
NDgyZTc3Y2M0MDNkMmYwOWVlNDRiM2FjZGU3MDM3MjM3ZTVmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vR2VuZXJpY0V2ZW50UXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9HZW5lcmljRXZlbnRRdWV1ZS5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgYm9vbCBHZW5lcmljRXZl
bnRRdWV1ZTo6aGFzUGVuZGluZ0V2ZW50cygpIGNvbnN0CiAgICAgcmV0dXJuICFtX3BlbmRpbmdF
dmVudHMuaXNFbXB0eSgpOwogfQogCi1ib29sIEdlbmVyaWNFdmVudFF1ZXVlOjpoYXNQZW5kaW5n
RXZlbnRzT2ZUeXBlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSkgY29uc3QKK2Jvb2wgR2VuZXJp
Y0V2ZW50UXVldWU6Omhhc1BlbmRpbmdFdmVudHNPZlR5cGUoY29uc3QgQXRvbVN0cmluZyYgdHlw
ZSkgY29uc3QKIHsKICAgICBmb3IgKGF1dG8mIGV2ZW50IDogbV9wZW5kaW5nRXZlbnRzKSB7CiAg
ICAgICAgIGlmIChldmVudC0+dHlwZSgpID09IHR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vR2VuZXJpY0V2ZW50UXVldWUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9HZW5lcmlj
RXZlbnRRdWV1ZS5oCmluZGV4IGU0OThjZmEzNzdhZGYxNTZjMzc1NzQxZTg2YjUxYmYxMzk4ZGNh
NmUuLmI3YjY1OWYzMmUwYWE1YjZjODkxN2I0MjcxM2I1YzUzZGFlMzZiOGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9HZW5lcmljRXZlbnRRdWV1ZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9HZW5lcmljRXZlbnRRdWV1ZS5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgY2FuY2VsQWxsRXZlbnRzKCk7CiAgICAgYm9vbCBoYXNQZW5kaW5nRXZlbnRzKCkg
Y29uc3Q7Ci0gICAgYm9vbCBoYXNQZW5kaW5nRXZlbnRzT2ZUeXBlKGNvbnN0IEF0b21pY1N0cmlu
ZyYpIGNvbnN0OworICAgIGJvb2wgaGFzUGVuZGluZ0V2ZW50c09mVHlwZShjb25zdCBBdG9tU3Ry
aW5nJikgY29uc3Q7CiAKICAgICB2b2lkIHN1c3BlbmQoKTsKICAgICB2b2lkIHJlc3VtZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0hhc2hDaGFuZ2VFdmVudC5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL0hhc2hDaGFuZ2VFdmVudC5oCmluZGV4IGM4MTM3NWViODY3ZjIwMTE3Y2Fh
YWY0NDlmMTM1YjBjM2FhZjk3OTIuLjgxYTZiNDc3ZTYwNjEzOWJlMGMxM2VlMjJhNzZmZGVkNGZi
NDRkMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9IYXNoQ2hhbmdlRXZlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSGFzaENoYW5nZUV2ZW50LmgKQEAgLTQyLDEyICs0Miwx
MiBAQCBwdWJsaWM6CiAgICAgICAgIFN0cmluZyBuZXdVUkw7CiAgICAgfTsKIAotICAgIHN0YXRp
YyBSZWY8SGFzaENoYW5nZUV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBj
b25zdCBJbml0JiBpbml0aWFsaXplciwgSXNUcnVzdGVkIGlzVHJ1c3RlZCA9IElzVHJ1c3RlZDo6
Tm8pCisgICAgc3RhdGljIFJlZjxIYXNoQ2hhbmdlRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9tU3Ry
aW5nJiB0eXBlLCBjb25zdCBJbml0JiBpbml0aWFsaXplciwgSXNUcnVzdGVkIGlzVHJ1c3RlZCA9
IElzVHJ1c3RlZDo6Tm8pCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBIYXNo
Q2hhbmdlRXZlbnQodHlwZSwgaW5pdGlhbGl6ZXIsIGlzVHJ1c3RlZCkpOwogICAgIH0KIAotICAg
IHZvaWQgaW5pdEhhc2hDaGFuZ2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwg
Ym9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgY29uc3QgU3RyaW5nJiBvbGRVUkwsIGNv
bnN0IFN0cmluZyYgbmV3VVJMKQorICAgIHZvaWQgaW5pdEhhc2hDaGFuZ2VFdmVudChjb25zdCBB
dG9tU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIGNv
bnN0IFN0cmluZyYgb2xkVVJMLCBjb25zdCBTdHJpbmcmIG5ld1VSTCkKICAgICB7CiAgICAgICAg
IGlmIChpc0JlaW5nRGlzcGF0Y2hlZCgpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNzUsNyAr
NzUsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICBIYXNoQ2hhbmdlRXZlbnQoY29u
c3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiBpbml0aWFsaXplciwgSXNUcnVzdGVk
IGlzVHJ1c3RlZCkKKyAgICBIYXNoQ2hhbmdlRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwg
Y29uc3QgSW5pdCYgaW5pdGlhbGl6ZXIsIElzVHJ1c3RlZCBpc1RydXN0ZWQpCiAgICAgICAgIDog
RXZlbnQodHlwZSwgaW5pdGlhbGl6ZXIsIGlzVHJ1c3RlZCkKICAgICAgICAgLCBtX29sZFVSTChp
bml0aWFsaXplci5vbGRVUkwpCiAgICAgICAgICwgbV9uZXdVUkwoaW5pdGlhbGl6ZXIubmV3VVJM
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0lkVGFyZ2V0T2JzZXJ2ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0lkVGFyZ2V0T2JzZXJ2ZXIuY3BwCmluZGV4IGFmYWRkMzhmOTA4
MTRjOTkxNjAzYzBlMjI1Y2U5MGQ4OGNhYzQxMjUuLmUyNzMwZDFjZmI1ZTlmZmE5Y2ZlODM3ZmZl
YmM4YzUwNDZlNzJhMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JZFRhcmdldE9i
c2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSWRUYXJnZXRPYnNlcnZlci5jcHAK
QEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1JZFRhcmdldE9ic2Vy
dmVyOjpJZFRhcmdldE9ic2VydmVyKElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeSYgcmVnaXN0cnks
IGNvbnN0IEF0b21pY1N0cmluZyYgaWQpCitJZFRhcmdldE9ic2VydmVyOjpJZFRhcmdldE9ic2Vy
dmVyKElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeSYgcmVnaXN0cnksIGNvbnN0IEF0b21TdHJpbmcm
IGlkKQogICAgIDogbV9yZWdpc3RyeSgmcmVnaXN0cnkpCiAgICAgLCBtX2lkKGlkKQogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0lkVGFyZ2V0T2JzZXJ2ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9JZFRhcmdldE9ic2VydmVyLmgKaW5kZXggMmUyNmJmMjc2YWI3ZDE4MTFhMGYx
ZWFiOWZjZTcwMmQ2NGIwMjlhOS4uNDQwNmI2Mzc1YTcwZjdmMzA4MTNiYzQ0NGY2ZjQ5OWQ4MDFm
NmI4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0lkVGFyZ2V0T2JzZXJ2ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSWRUYXJnZXRPYnNlcnZlci5oCkBAIC0yNSw3ICsyNSw3
IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKQEAgLTM3LDExICszNywxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGlkVGFyZ2V0
Q2hhbmdlZCgpID0gMDsKIAogcHJvdGVjdGVkOgotICAgIElkVGFyZ2V0T2JzZXJ2ZXIoSWRUYXJn
ZXRPYnNlcnZlclJlZ2lzdHJ5JiwgY29uc3QgQXRvbWljU3RyaW5nJiBpZCk7CisgICAgSWRUYXJn
ZXRPYnNlcnZlcihJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkmLCBjb25zdCBBdG9tU3RyaW5nJiBp
ZCk7CiAKIHByaXZhdGU6CiAgICAgSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5KiBtX3JlZ2lzdHJ5
OwotICAgIEF0b21pY1N0cmluZyBtX2lkOworICAgIEF0b21TdHJpbmcgbV9pZDsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JZFRh
cmdldE9ic2VydmVyUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0lkVGFyZ2V0T2Jz
ZXJ2ZXJSZWdpc3RyeS5jcHAKaW5kZXggZjcxMWI0MGEyOWNkYTViZGQ1ZWZlNTFiNmFjYjYzOGQ2
MzA0NzMxNi4uYjNhMDZlNDdiMDcwMGY3YzQ3ZDNkOWFlZjMzZjQ0MzcyNGUwYzU1ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHAKQEAgLTMw
LDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIElkVGFyZ2V0T2JzZXJ2
ZXJSZWdpc3RyeTo6YWRkT2JzZXJ2ZXIoY29uc3QgQXRvbWljU3RyaW5nJiBpZCwgSWRUYXJnZXRP
YnNlcnZlciogb2JzZXJ2ZXIpCit2b2lkIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeTo6YWRkT2Jz
ZXJ2ZXIoY29uc3QgQXRvbVN0cmluZyYgaWQsIElkVGFyZ2V0T2JzZXJ2ZXIqIG9ic2VydmVyKQog
ewogICAgIGlmIChpZC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTQyLDcgKzQyLDcg
QEAgdm9pZCBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnk6OmFkZE9ic2VydmVyKGNvbnN0IEF0b21p
Y1N0cmluZyYgaWQsIElkVGFyZ2V0T2JzZXIKICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5h
ZGQob2JzZXJ2ZXIpOwogfQogCi12b2lkIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeTo6cmVtb3Zl
T2JzZXJ2ZXIoY29uc3QgQXRvbWljU3RyaW5nJiBpZCwgSWRUYXJnZXRPYnNlcnZlciogb2JzZXJ2
ZXIpCit2b2lkIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeTo6cmVtb3ZlT2JzZXJ2ZXIoY29uc3Qg
QXRvbVN0cmluZyYgaWQsIElkVGFyZ2V0T2JzZXJ2ZXIqIG9ic2VydmVyKQogewogICAgIGlmIChp
ZC5pc0VtcHR5KCkgfHwgbV9yZWdpc3RyeS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKQEAg
LTU1LDcgKzU1LDcgQEAgdm9pZCBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnk6OnJlbW92ZU9ic2Vy
dmVyKGNvbnN0IEF0b21pY1N0cmluZyYgaWQsIElkVGFyZ2V0T2IKICAgICAgICAgbV9yZWdpc3Ry
eS5yZW1vdmUoaXRlcik7CiB9CiAKLXZvaWQgSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5Ojpub3Rp
ZnlPYnNlcnZlcnNJbnRlcm5hbChjb25zdCBBdG9taWNTdHJpbmdJbXBsJiBpZCkKK3ZvaWQgSWRU
YXJnZXRPYnNlcnZlclJlZ2lzdHJ5Ojpub3RpZnlPYnNlcnZlcnNJbnRlcm5hbChjb25zdCBBdG9t
U3RyaW5nSW1wbCYgaWQpCiB7CiAgICAgQVNTRVJUKCFtX3JlZ2lzdHJ5LmlzRW1wdHkoKSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JZFRhcmdldE9ic2VydmVyUmVnaXN0cnku
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuaAppbmRleCBl
ZGFjMTNkZDZjMzQyYTdlYTBkMzIyYTg2YjE4OGM0NWI2MDgxYThjLi5hMWU2M2FjZTEzZjMwMzNj
NDMxYTg4OWY3YTZkMjBkNTlhYTdjZjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
SWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0lkVGFy
Z2V0T2JzZXJ2ZXJSZWdpc3RyeS5oCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvQXRvbVN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQxLDI3ICs0MSwy
NyBAQCBjbGFzcyBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkgewogcHVibGljOgogICAgIElkVGFy
Z2V0T2JzZXJ2ZXJSZWdpc3RyeSgpIHsgfQogCi0gICAgdm9pZCBub3RpZnlPYnNlcnZlcnMoY29u
c3QgQXRvbWljU3RyaW5nJiBpZCk7Ci0gICAgdm9pZCBub3RpZnlPYnNlcnZlcnMoY29uc3QgQXRv
bWljU3RyaW5nSW1wbCYgaWQpOworICAgIHZvaWQgbm90aWZ5T2JzZXJ2ZXJzKGNvbnN0IEF0b21T
dHJpbmcmIGlkKTsKKyAgICB2b2lkIG5vdGlmeU9ic2VydmVycyhjb25zdCBBdG9tU3RyaW5nSW1w
bCYgaWQpOwogCiBwcml2YXRlOgotICAgIHZvaWQgYWRkT2JzZXJ2ZXIoY29uc3QgQXRvbWljU3Ry
aW5nJiBpZCwgSWRUYXJnZXRPYnNlcnZlciopOwotICAgIHZvaWQgcmVtb3ZlT2JzZXJ2ZXIoY29u
c3QgQXRvbWljU3RyaW5nJiBpZCwgSWRUYXJnZXRPYnNlcnZlciopOwotICAgIHZvaWQgbm90aWZ5
T2JzZXJ2ZXJzSW50ZXJuYWwoY29uc3QgQXRvbWljU3RyaW5nSW1wbCYgaWQpOworICAgIHZvaWQg
YWRkT2JzZXJ2ZXIoY29uc3QgQXRvbVN0cmluZyYgaWQsIElkVGFyZ2V0T2JzZXJ2ZXIqKTsKKyAg
ICB2b2lkIHJlbW92ZU9ic2VydmVyKGNvbnN0IEF0b21TdHJpbmcmIGlkLCBJZFRhcmdldE9ic2Vy
dmVyKik7CisgICAgdm9pZCBub3RpZnlPYnNlcnZlcnNJbnRlcm5hbChjb25zdCBBdG9tU3RyaW5n
SW1wbCYgaWQpOwogCiAgICAgdHlwZWRlZiBIYXNoU2V0PElkVGFyZ2V0T2JzZXJ2ZXIqPiBPYnNl
cnZlclNldDsKLSAgICB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgQXRvbWljU3RyaW5nSW1wbCosIHN0
ZDo6dW5pcXVlX3B0cjxPYnNlcnZlclNldD4+IElkVG9PYnNlcnZlclNldE1hcDsKKyAgICB0eXBl
ZGVmIEhhc2hNYXA8Y29uc3QgQXRvbVN0cmluZ0ltcGwqLCBzdGQ6OnVuaXF1ZV9wdHI8T2JzZXJ2
ZXJTZXQ+PiBJZFRvT2JzZXJ2ZXJTZXRNYXA7CiAgICAgSWRUb09ic2VydmVyU2V0TWFwIG1fcmVn
aXN0cnk7CiAgICAgT2JzZXJ2ZXJTZXQqIG1fbm90aWZ5aW5nT2JzZXJ2ZXJzSW5TZXQgeyBudWxs
cHRyIH07CiB9OwogCi1pbmxpbmUgdm9pZCBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnk6Om5vdGlm
eU9ic2VydmVycyhjb25zdCBBdG9taWNTdHJpbmcmIGlkKQoraW5saW5lIHZvaWQgSWRUYXJnZXRP
YnNlcnZlclJlZ2lzdHJ5Ojpub3RpZnlPYnNlcnZlcnMoY29uc3QgQXRvbVN0cmluZyYgaWQpCiB7
CiAgICAgaWYgKCFpZC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBub3RpZnlPYnNlcnZlcnMo
KmlkLmltcGwoKSk7CiB9CiAKLWlubGluZSB2b2lkIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeTo6
bm90aWZ5T2JzZXJ2ZXJzKGNvbnN0IEF0b21pY1N0cmluZ0ltcGwmIGlkKQoraW5saW5lIHZvaWQg
SWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5Ojpub3RpZnlPYnNlcnZlcnMoY29uc3QgQXRvbVN0cmlu
Z0ltcGwmIGlkKQogewogICAgIEFTU0VSVCghbV9ub3RpZnlpbmdPYnNlcnZlcnNJblNldCk7CiAg
ICAgQVNTRVJUKGlkLmxlbmd0aCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9J
bmxpbmVDbGFzc2ljU2NyaXB0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lQ2xhc3NpY1Nj
cmlwdC5oCmluZGV4IDlmYTlmMzFmNGUzZjZiZDY3OTc1Y2E2MTZhNGMyZTcwYzdhZDIyOGIuLmFk
NGI4NTBmMWFmNjcwZGI3ODBjYWI3Zjc5NWJiMjBjMDRkYzU1MmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9JbmxpbmVDbGFzc2ljU2NyaXB0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0lubGluZUNsYXNzaWNTY3JpcHQuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBpc01vZHVsZVNjcmlwdCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAKIHBy
aXZhdGU6Ci0gICAgSW5saW5lQ2xhc3NpY1NjcmlwdChjb25zdCBTdHJpbmcmIG5vbmNlLCBjb25z
dCBTdHJpbmcmIGNyb3NzT3JpZ2luTW9kZSwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBjb25zdCBB
dG9taWNTdHJpbmcmIGluaXRpYXRvck5hbWUsIGJvb2wgaXNJblVzZXJBZ2VudFNoYWRvd1RyZWUp
CisgICAgSW5saW5lQ2xhc3NpY1NjcmlwdChjb25zdCBTdHJpbmcmIG5vbmNlLCBjb25zdCBTdHJp
bmcmIGNyb3NzT3JpZ2luTW9kZSwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBjb25zdCBBdG9tU3Ry
aW5nJiBpbml0aWF0b3JOYW1lLCBib29sIGlzSW5Vc2VyQWdlbnRTaGFkb3dUcmVlKQogICAgICAg
ICA6IFNjcmlwdEVsZW1lbnRDYWNoZWRTY3JpcHRGZXRjaGVyKG5vbmNlLCBjcm9zc09yaWdpbk1v
ZGUsIGNoYXJzZXQsIGluaXRpYXRvck5hbWUsIGlzSW5Vc2VyQWdlbnRTaGFkb3dUcmVlKQogICAg
IHsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVTaGVl
dE93bmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuY3Bw
CmluZGV4IDE1MGE3OGQ1OTAzMTZjN2UxNDQxOWQ4MmFjYjc5YjgwNGM2MmI4YWYuLjNiMTJjYTQ1
YWE4NGVjMmQ4NTk1OGRhYzhhZmVhYWExM2ZjYjlmYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwCkBAIC0xNDIsMTQgKzE0MiwxNCBAQCB2b2lkIElu
bGluZVN0eWxlU2hlZXRPd25lcjo6Y2xlYXJTaGVldCgpCiAgICAgc2hlZXQtPmNsZWFyT3duZXJO
b2RlKCk7CiB9CiAKLWlubGluZSBib29sIGlzVmFsaWRDU1NDb250ZW50VHlwZShFbGVtZW50JiBl
bGVtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUpCitpbmxpbmUgYm9vbCBpc1ZhbGlkQ1NT
Q29udGVudFR5cGUoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgQXRvbVN0cmluZyYgdHlwZSkKIHsK
ICAgICBpZiAodHlwZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIC8vIEZJ
WE1FOiBTaG91bGQgTUlNRSB0eXBlcyByZWFsbHkgYmUgY2FzZSBzZW5zaXRpdmUgaW4gWE1MIGRv
Y3VtZW50cz8gRG9lc24ndCBzZWVtIGxpa2UgdGhleSBzaG91bGQsCiAgICAgLy8gZXZlbiB0aG91
Z2ggb3RoZXIgdGhpbmdzIGFyZSBjYXNlIHNlbnNpdGl2ZSBpbiB0aGF0IGNvbnRleHQuIE1JTUUg
dHlwZXMgc2hvdWxkIG5ldmVyIGJlIGNhc2Ugc2Vuc2l0aXZlLgogICAgIC8vIFdlIHNob3VsZCB2
ZXJpZnkgdGhpcyBhbmQgdGhlbiByZW1vdmUgdGhlIGlzSFRNTEVsZW1lbnQgY2hlY2sgaGVyZS4K
LSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBjc3NDb250ZW50
VHlwZSgidGV4dC9jc3MiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gY3NzQ29udGVudFR5cGUo
InRleHQvY3NzIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVy
biBlbGVtZW50LmlzSFRNTEVsZW1lbnQoKSA/IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KHR5cGUsICJ0ZXh0L2NzcyIpIDogdHlwZSA9PSBjc3NDb250ZW50VHlwZTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5oCmluZGV4IDA2ZmFlODBkMWYwNGE1
MjEzZDYyNmM5Mzg3YmYyMGZiYWQ4MDhkOGUuLjRiYTBmYTljYjg4YzRlYjhiZDNmZjEzZGY3NmE4
N2Y5MDdhMDNkZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVTdHlsZVNo
ZWV0T3duZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVTaGVldE93bmVy
LmgKQEAgLTM0LDggKzM0LDggQEAgcHVibGljOgogICAgIElubGluZVN0eWxlU2hlZXRPd25lcihE
b2N1bWVudCYsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKTsKICAgICB+SW5saW5lU3R5bGVTaGVldE93
bmVyKCk7CiAKLSAgICB2b2lkIHNldENvbnRlbnRUeXBlKGNvbnN0IEF0b21pY1N0cmluZyYgY29u
dGVudFR5cGUpIHsgbV9jb250ZW50VHlwZSA9IGNvbnRlbnRUeXBlOyB9Ci0gICAgdm9pZCBzZXRN
ZWRpYShjb25zdCBBdG9taWNTdHJpbmcmIG1lZGlhKSB7IG1fbWVkaWEgPSBtZWRpYTsgfQorICAg
IHZvaWQgc2V0Q29udGVudFR5cGUoY29uc3QgQXRvbVN0cmluZyYgY29udGVudFR5cGUpIHsgbV9j
b250ZW50VHlwZSA9IGNvbnRlbnRUeXBlOyB9CisgICAgdm9pZCBzZXRNZWRpYShjb25zdCBBdG9t
U3RyaW5nJiBtZWRpYSkgeyBtX21lZGlhID0gbWVkaWE7IH0KIAogICAgIENTU1N0eWxlU2hlZXQq
IHNoZWV0KCkgY29uc3QgeyByZXR1cm4gbV9zaGVldC5nZXQoKTsgfQogCkBAIC02MSw4ICs2MSw4
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzUGFyc2luZ0NoaWxkcmVuOwogICAgIGJvb2wgbV9s
b2FkaW5nOwogICAgIFdURjo6VGV4dFBvc2l0aW9uIG1fc3RhcnRUZXh0UG9zaXRpb247Ci0gICAg
QXRvbWljU3RyaW5nIG1fY29udGVudFR5cGU7Ci0gICAgQXRvbWljU3RyaW5nIG1fbWVkaWE7Cisg
ICAgQXRvbVN0cmluZyBtX2NvbnRlbnRUeXBlOworICAgIEF0b21TdHJpbmcgbV9tZWRpYTsKICAg
ICBSZWZQdHI8Q1NTU3R5bGVTaGVldD4gbV9zaGVldDsKICAgICBTdHlsZTo6U2NvcGUqIG1fc3R5
bGVTY29wZSB7IG51bGxwdHIgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
SW5wdXRFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5wdXRFdmVudC5jcHAKaW5kZXgg
MDQwZTVkNWYyNjg1MjViNzU1YjAxMDJkMDY5MjlhMWUwOTBkMjAxNS4uMGU5YWVlZTc2MmE3YjZm
NDJiNjg4ZTQzMzJmMTkyZjgxOTRkMjliMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0lucHV0RXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JbnB1dEV2ZW50LmNwcApA
QCAtMzMsMTIgKzMzLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPElucHV0RXZl
bnQ+IElucHV0RXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29u
c3QgU3RyaW5nJiBpbnB1dFR5cGUsIElzQ2FuY2VsYWJsZSBjYW5jZWxhYmxlLCBSZWZQdHI8V2lu
ZG93UHJveHk+JiYgdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBSZWZQdHI8RGF0YVRyYW5zZmVy
PiYmIGRhdGFUcmFuc2ZlciwgY29uc3QgVmVjdG9yPFJlZlB0cjxTdGF0aWNSYW5nZT4+JiB0YXJn
ZXRSYW5nZXMsIGludCBkZXRhaWwpCitSZWY8SW5wdXRFdmVudD4gSW5wdXRFdmVudDo6Y3JlYXRl
KGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBpbnB1dFR5cGUsIElz
Q2FuY2VsYWJsZSBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgY29uc3Qg
U3RyaW5nJiBkYXRhLCBSZWZQdHI8RGF0YVRyYW5zZmVyPiYmIGRhdGFUcmFuc2ZlciwgY29uc3Qg
VmVjdG9yPFJlZlB0cjxTdGF0aWNSYW5nZT4+JiB0YXJnZXRSYW5nZXMsIGludCBkZXRhaWwpCiB7
CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5wdXRFdmVudChldmVudFR5cGUsIGlucHV0VHlw
ZSwgY2FuY2VsYWJsZSwgV1RGTW92ZSh2aWV3KSwgZGF0YSwgV1RGTW92ZShkYXRhVHJhbnNmZXIp
LCB0YXJnZXRSYW5nZXMsIGRldGFpbCkpOwogfQogCi1JbnB1dEV2ZW50OjpJbnB1dEV2ZW50KGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGlucHV0VHlwZSwgSXND
YW5jZWxhYmxlIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBjb25zdCBT
dHJpbmcmIGRhdGEsIFJlZlB0cjxEYXRhVHJhbnNmZXI+JiYgZGF0YVRyYW5zZmVyLCBjb25zdCBW
ZWN0b3I8UmVmUHRyPFN0YXRpY1JhbmdlPj4mIHRhcmdldFJhbmdlcywgaW50IGRldGFpbCkKK0lu
cHV0RXZlbnQ6OklucHV0RXZlbnQoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBT
dHJpbmcmIGlucHV0VHlwZSwgSXNDYW5jZWxhYmxlIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQ
cm94eT4mJiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIFJlZlB0cjxEYXRhVHJhbnNmZXI+JiYg
ZGF0YVRyYW5zZmVyLCBjb25zdCBWZWN0b3I8UmVmUHRyPFN0YXRpY1JhbmdlPj4mIHRhcmdldFJh
bmdlcywgaW50IGRldGFpbCkKICAgICA6IFVJRXZlbnQoZXZlbnRUeXBlLCBDYW5CdWJibGU6Olll
cywgY2FuY2VsYWJsZSwgSXNDb21wb3NlZDo6WWVzLCBXVEZNb3ZlKHZpZXcpLCBkZXRhaWwpCiAg
ICAgLCBtX2lucHV0VHlwZShpbnB1dFR5cGUpCiAgICAgLCBtX2RhdGEoZGF0YSkKQEAgLTQ3LDcg
KzQ3LDcgQEAgSW5wdXRFdmVudDo6SW5wdXRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
VHlwZSwgY29uc3QgU3RyaW5nJiBpbnB1dFR5cGUsIEkKIHsKIH0KIAotSW5wdXRFdmVudDo6SW5w
dXRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgSW5pdCYgaW5pdGlh
bGl6ZXIpCitJbnB1dEV2ZW50OjpJbnB1dEV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlw
ZSwgY29uc3QgSW5pdCYgaW5pdGlhbGl6ZXIpCiAgICAgOiBVSUV2ZW50KGV2ZW50VHlwZSwgaW5p
dGlhbGl6ZXIpCiAgICAgLCBtX2lucHV0VHlwZShlbXB0eVN0cmluZygpKQogICAgICwgbV9kYXRh
KGluaXRpYWxpemVyLmRhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vSW5wdXRF
dmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0lucHV0RXZlbnQuaAppbmRleCBiMzMzYmZlOTBh
ZjIxOWQyNTk3ZGFiZTM2MzgzY2Q5NmFiNmI4ZTUxLi4zZTcwOGEzYzU3OWEwM2NlNDk3N2I3YTY5
NmU1NGQ5OGMyOGYwYzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vSW5wdXRFdmVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JbnB1dEV2ZW50LmgKQEAgLTM5LDEwICszOSwx
MCBAQCBwdWJsaWM6CiAgICAgICAgIFN0cmluZyBkYXRhOwogICAgIH07CiAKLSAgICBzdGF0aWMg
UmVmPElucHV0RXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29u
c3QgU3RyaW5nJiBpbnB1dFR5cGUsIElzQ2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYm
IHZpZXcsCisgICAgc3RhdGljIFJlZjxJbnB1dEV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbVN0cmlu
ZyYgZXZlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGlucHV0VHlwZSwgSXNDYW5jZWxhYmxlLCBSZWZQ
dHI8V2luZG93UHJveHk+JiYgdmlldywKICAgICAgICAgY29uc3QgU3RyaW5nJiBkYXRhLCBSZWZQ
dHI8RGF0YVRyYW5zZmVyPiYmLCBjb25zdCBWZWN0b3I8UmVmUHRyPFN0YXRpY1JhbmdlPj4mIHRh
cmdldFJhbmdlcywgaW50IGRldGFpbCk7CiAKLSAgICBzdGF0aWMgUmVmPElucHV0RXZlbnQ+IGNy
ZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IEluaXQmIGluaXRpYWxpemVyKQor
ICAgIHN0YXRpYyBSZWY8SW5wdXRFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUs
IGNvbnN0IEluaXQmIGluaXRpYWxpemVyKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgSW5wdXRFdmVudCh0eXBlLCBpbml0aWFsaXplcikpOwogICAgIH0KQEAgLTU1LDggKzU1
LDggQEAgcHVibGljOgogICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RhdGljUmFuZ2U+PiYgZ2V0
VGFyZ2V0UmFuZ2VzKCkgeyByZXR1cm4gbV90YXJnZXRSYW5nZXM7IH0KIAogcHJpdmF0ZToKLSAg
ICBJbnB1dEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBTdHJpbmcm
IGlucHV0VHlwZSwgSXNDYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGNvbnN0IFN0
cmluZyYgZGF0YSwgUmVmUHRyPERhdGFUcmFuc2Zlcj4mJiwgY29uc3QgVmVjdG9yPFJlZlB0cjxT
dGF0aWNSYW5nZT4+JiB0YXJnZXRSYW5nZXMsIGludCBkZXRhaWwpOwotICAgIElucHV0RXZlbnQo
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IEluaXQmKTsKKyAgICBJbnB1dEV2
ZW50KGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBpbnB1dFR5cGUs
IElzQ2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmLCBjb25zdCBTdHJpbmcmIGRhdGEs
IFJlZlB0cjxEYXRhVHJhbnNmZXI+JiYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RhdGljUmFuZ2U+
PiYgdGFyZ2V0UmFuZ2VzLCBpbnQgZGV0YWlsKTsKKyAgICBJbnB1dEV2ZW50KGNvbnN0IEF0b21T
dHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgSW5pdCYpOwogCiAgICAgU3RyaW5nIG1faW5wdXRUeXBl
OwogICAgIFN0cmluZyBtX2RhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5
Ym9hcmRFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5jcHAKaW5k
ZXggNGVjNmM5ZTkyNTFlMTk4MzE3YzMwNWQ2NzhjM2E0ODJjNmJjZmI1ZC4uN2U3YTM0Nzk3Yjg2
MjlmNjJmN2Y3ODZhYjE0YzVjNmY1YmQ5MGIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0tleWJvYXJkRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2
ZW50LmNwcApAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRp
YyBpbmxpbmUgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGVGb3JLZXlib2FyZEV2ZW50VHlw
ZShQbGF0Zm9ybUV2ZW50OjpUeXBlIHR5cGUpCitzdGF0aWMgaW5saW5lIGNvbnN0IEF0b21TdHJp
bmcmIGV2ZW50VHlwZUZvcktleWJvYXJkRXZlbnRUeXBlKFBsYXRmb3JtRXZlbnQ6OlR5cGUgdHlw
ZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpL
ZXlVcDoKQEAgLTExNiw3ICsxMTYsNyBAQCBpbmxpbmUgS2V5Ym9hcmRFdmVudDo6S2V5Ym9hcmRF
dmVudChjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmIGtleSwgUmVmUHRyPFdpbgogewogfQog
Ci1pbmxpbmUgS2V5Ym9hcmRFdmVudDo6S2V5Ym9hcmRFdmVudChjb25zdCBBdG9taWNTdHJpbmcm
IGV2ZW50VHlwZSwgY29uc3QgSW5pdCYgaW5pdGlhbGl6ZXIpCitpbmxpbmUgS2V5Ym9hcmRFdmVu
dDo6S2V5Ym9hcmRFdmVudChjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IEluaXQm
IGluaXRpYWxpemVyKQogICAgIDogVUlFdmVudFdpdGhLZXlTdGF0ZShldmVudFR5cGUsIGluaXRp
YWxpemVyKQogI2lmIEVOQUJMRShLRVlCT0FSRF9LRVlfQVRUUklCVVRFKQogICAgICwgbV9rZXko
aW5pdGlhbGl6ZXIua2V5KQpAQCAtMTQ2LDEyICsxNDYsMTIgQEAgUmVmPEtleWJvYXJkRXZlbnQ+
IEtleWJvYXJkRXZlbnQ6OmNyZWF0ZUZvckJpbmRpbmdzKCkKICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBLZXlib2FyZEV2ZW50KTsKIH0KIAotUmVmPEtleWJvYXJkRXZlbnQ+IEtleWJvYXJkRXZl
bnQ6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IEluaXQmIGluaXRpYWxp
emVyKQorUmVmPEtleWJvYXJkRXZlbnQ+IEtleWJvYXJkRXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9t
U3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiBpbml0aWFsaXplcikKIHsKICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBLZXlib2FyZEV2ZW50KHR5cGUsIGluaXRpYWxpemVyKSk7CiB9CiAKLXZvaWQg
S2V5Ym9hcmRFdmVudDo6aW5pdEtleWJvYXJkRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBl
LCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYg
dmlldywKK3ZvaWQgS2V5Ym9hcmRFdmVudDo6aW5pdEtleWJvYXJkRXZlbnQoY29uc3QgQXRvbVN0
cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRv
d1Byb3h5PiYmIHZpZXcsCiAgICAgY29uc3QgU3RyaW5nJiBrZXlJZGVudGlmaWVyLCB1bnNpZ25l
ZCBsb2NhdGlvbiwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9v
bCBtZXRhS2V5LCBib29sIGFsdEdyYXBoS2V5KQogewogICAgIGlmIChpc0JlaW5nRGlzcGF0Y2hl
ZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmgKaW5kZXggYjczNDBiMzA0ZmI4Nzg1ZjA5
YzM4NWMyNzI0MTY1ODIyYTU2Y2U4NC4uZTI1NmU4YjBmZDg0NDY4ZTI0NDMwNjYwZmE0ODM2NDJm
NzRjM2NmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5oCkBAIC02MSwxMSArNjEsMTEg
QEAgcHVibGljOgogICAgICAgICB1bnNpZ25lZCB3aGljaDsKICAgICB9OwogCi0gICAgc3RhdGlj
IFJlZjxLZXlib2FyZEV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25z
dCBJbml0Jik7CisgICAgc3RhdGljIFJlZjxLZXlib2FyZEV2ZW50PiBjcmVhdGUoY29uc3QgQXRv
bVN0cmluZyYgdHlwZSwgY29uc3QgSW5pdCYpOwogCiAgICAgdmlydHVhbCB+S2V5Ym9hcmRFdmVu
dCgpOwogICAgIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5pdEtleWJvYXJkRXZlbnQoY29u
c3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBS
ZWZQdHI8V2luZG93UHJveHk+JiYsCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbml0S2V5Ym9h
cmRFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5j
ZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYsCiAgICAgICAgIGNvbnN0IFN0cmluZyYga2V5
SWRlbnRpZmllciwgdW5zaWduZWQgbG9jYXRpb24sCiAgICAgICAgIGJvb2wgY3RybEtleSwgYm9v
bCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgYm9vbCBhbHRHcmFwaEtleSA9
IGZhbHNlKTsKICAgICAKQEAgLTEwMSw3ICsxMDEsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAg
IEtleWJvYXJkRXZlbnQoKTsKICAgICBLZXlib2FyZEV2ZW50KGNvbnN0IFBsYXRmb3JtS2V5Ym9h
cmRFdmVudCYsIFJlZlB0cjxXaW5kb3dQcm94eT4mJik7Ci0gICAgS2V5Ym9hcmRFdmVudChjb25z
dCBBdG9taWNTdHJpbmcmLCBjb25zdCBJbml0Jik7CisgICAgS2V5Ym9hcmRFdmVudChjb25zdCBB
dG9tU3RyaW5nJiwgY29uc3QgSW5pdCYpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudD4gbV91bmRlcmx5aW5nUGxhdGZvcm1FdmVudDsKICNpZiBFTkFCTEUoS0VZ
Qk9BUkRfS0VZX0FUVFJJQlVURSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2Fk
YWJsZUNsYXNzaWNTY3JpcHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlQ2xhc3Np
Y1NjcmlwdC5jcHAKaW5kZXggZDkyN2U5NWJlMjY5YTI1YWU0MzM2YTc0YjAwMDI3YzE3NThmZTQ4
YS4uNzM5ZGJmNGQ5YTJjNTI5M2ZlOTc3MjhmNjU0ZmU4Yzc0YjYyZWM1OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlQ2xhc3NpY1NjcmlwdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0xvYWRhYmxlQ2xhc3NpY1NjcmlwdC5jcHAKQEAgLTM1LDcgKzM1LDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8TG9hZGFibGVDbGFzc2ljU2NyaXB0PiBMb2Fk
YWJsZUNsYXNzaWNTY3JpcHQ6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG5vbmNlLCBjb25zdCBTdHJp
bmcmIGludGVncml0eU1ldGFkYXRhLCBjb25zdCBTdHJpbmcmIGNyb3NzT3JpZ2luTW9kZSwgY29u
c3QgU3RyaW5nJiBjaGFyc2V0LCBjb25zdCBBdG9taWNTdHJpbmcmIGluaXRpYXRvck5hbWUsIGJv
b2wgaXNJblVzZXJBZ2VudFNoYWRvd1RyZWUpCitSZWY8TG9hZGFibGVDbGFzc2ljU2NyaXB0PiBM
b2FkYWJsZUNsYXNzaWNTY3JpcHQ6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG5vbmNlLCBjb25zdCBT
dHJpbmcmIGludGVncml0eU1ldGFkYXRhLCBjb25zdCBTdHJpbmcmIGNyb3NzT3JpZ2luTW9kZSwg
Y29uc3QgU3RyaW5nJiBjaGFyc2V0LCBjb25zdCBBdG9tU3RyaW5nJiBpbml0aWF0b3JOYW1lLCBi
b29sIGlzSW5Vc2VyQWdlbnRTaGFkb3dUcmVlKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IExvYWRhYmxlQ2xhc3NpY1NjcmlwdChub25jZSwgaW50ZWdyaXR5TWV0YWRhdGEsIGNyb3NzT3Jp
Z2luTW9kZSwgY2hhcnNldCwgaW5pdGlhdG9yTmFtZSwgaXNJblVzZXJBZ2VudFNoYWRvd1RyZWUp
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZUNsYXNzaWNTY3Jp
cHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZUNsYXNzaWNTY3JpcHQuaAppbmRleCAw
Njc2NDRhNDdkMWY5ZDkwMmI0ZTE5NmFhZWZmYThhNmY5NWQ0ZjBmLi4zODFiNWExOGJkMTVlMGE4
OTI2NTE2ODA0MGZiZmRkMDQ1OTYyZGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
TG9hZGFibGVDbGFzc2ljU2NyaXB0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxl
Q2xhc3NpY1NjcmlwdC5oCkBAIC00MCw3ICs0MCw3IEBAIGNsYXNzIExvYWRhYmxlQ2xhc3NpY1Nj
cmlwdCBmaW5hbCA6IHB1YmxpYyBMb2FkYWJsZVNjcmlwdCwgcHJpdmF0ZSBDYWNoZWRSZXNvdXJj
CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+TG9hZGFibGVDbGFzc2ljU2NyaXB0KCk7CiAKLSAgICBz
dGF0aWMgUmVmPExvYWRhYmxlQ2xhc3NpY1NjcmlwdD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbm9u
Y2UsIGNvbnN0IFN0cmluZyYgaW50ZWdyaXR5LCBjb25zdCBTdHJpbmcmIGNyb3NzT3JpZ2luTW9k
ZSwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBjb25zdCBBdG9taWNTdHJpbmcmIGluaXRpYXRvck5h
bWUsIGJvb2wgaXNJblVzZXJBZ2VudFNoYWRvd1RyZWUpOworICAgIHN0YXRpYyBSZWY8TG9hZGFi
bGVDbGFzc2ljU2NyaXB0PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBub25jZSwgY29uc3QgU3RyaW5n
JiBpbnRlZ3JpdHksIGNvbnN0IFN0cmluZyYgY3Jvc3NPcmlnaW5Nb2RlLCBjb25zdCBTdHJpbmcm
IGNoYXJzZXQsIGNvbnN0IEF0b21TdHJpbmcmIGluaXRpYXRvck5hbWUsIGJvb2wgaXNJblVzZXJB
Z2VudFNoYWRvd1RyZWUpOwogICAgIGJvb2wgaXNMb2FkZWQoKSBjb25zdCBmaW5hbDsKICAgICBP
cHRpb25hbDxFcnJvcj4gZXJyb3IoKSBjb25zdCBmaW5hbDsKICAgICBib29sIHdhc0NhbmNlbGVk
KCkgY29uc3QgZmluYWw7CkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICBib29sIGxvYWQo
RG9jdW1lbnQmLCBjb25zdCBVUkwmKTsKIAogcHJpdmF0ZToKLSAgICBMb2FkYWJsZUNsYXNzaWNT
Y3JpcHQoY29uc3QgU3RyaW5nJiBub25jZSwgY29uc3QgU3RyaW5nJiBpbnRlZ3JpdHksIGNvbnN0
IFN0cmluZyYgY3Jvc3NPcmlnaW5Nb2RlLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIGNvbnN0IEF0
b21pY1N0cmluZyYgaW5pdGlhdG9yTmFtZSwgYm9vbCBpc0luVXNlckFnZW50U2hhZG93VHJlZSkK
KyAgICBMb2FkYWJsZUNsYXNzaWNTY3JpcHQoY29uc3QgU3RyaW5nJiBub25jZSwgY29uc3QgU3Ry
aW5nJiBpbnRlZ3JpdHksIGNvbnN0IFN0cmluZyYgY3Jvc3NPcmlnaW5Nb2RlLCBjb25zdCBTdHJp
bmcmIGNoYXJzZXQsIGNvbnN0IEF0b21TdHJpbmcmIGluaXRpYXRvck5hbWUsIGJvb2wgaXNJblVz
ZXJBZ2VudFNoYWRvd1RyZWUpCiAgICAgICAgIDogTG9hZGFibGVTY3JpcHQobm9uY2UsIGNyb3Nz
T3JpZ2luTW9kZSwgY2hhcnNldCwgaW5pdGlhdG9yTmFtZSwgaXNJblVzZXJBZ2VudFNoYWRvd1Ry
ZWUpCiAgICAgICAgICwgbV9pbnRlZ3JpdHkoaW50ZWdyaXR5KQogICAgIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZU1vZHVsZVNjcmlwdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTG9hZGFibGVNb2R1bGVTY3JpcHQuY3BwCmluZGV4IDMyMmNkM2E3MzkyYzliZjBl
NDU3MGQ1NzEyNzVkYWEzNjc3NDhlMjEuLmRiOTRmZTRlZTVkNTI1Y2UxNWVkMWZjNzEwMzk0YzJj
ZjI1MjIzYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZU1vZHVsZVNj
cmlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlTW9kdWxlU2NyaXB0LmNw
cApAQCAtMzQsMTIgKzM0LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPExvYWRh
YmxlTW9kdWxlU2NyaXB0PiBMb2FkYWJsZU1vZHVsZVNjcmlwdDo6Y3JlYXRlKGNvbnN0IFN0cmlu
ZyYgbm9uY2UsIGNvbnN0IFN0cmluZyYgaW50ZWdyaXR5LCBjb25zdCBTdHJpbmcmIGNyb3NzT3Jp
Z2luTW9kZSwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBjb25zdCBBdG9taWNTdHJpbmcmIGluaXRp
YXRvck5hbWUsIGJvb2wgaXNJblVzZXJBZ2VudFNoYWRvd1RyZWUpCitSZWY8TG9hZGFibGVNb2R1
bGVTY3JpcHQ+IExvYWRhYmxlTW9kdWxlU2NyaXB0OjpjcmVhdGUoY29uc3QgU3RyaW5nJiBub25j
ZSwgY29uc3QgU3RyaW5nJiBpbnRlZ3JpdHksIGNvbnN0IFN0cmluZyYgY3Jvc3NPcmlnaW5Nb2Rl
LCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIGNvbnN0IEF0b21TdHJpbmcmIGluaXRpYXRvck5hbWUs
IGJvb2wgaXNJblVzZXJBZ2VudFNoYWRvd1RyZWUpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgTG9hZGFibGVNb2R1bGVTY3JpcHQobm9uY2UsIGludGVncml0eSwgY3Jvc3NPcmlnaW5Nb2Rl
LCBjaGFyc2V0LCBpbml0aWF0b3JOYW1lLCBpc0luVXNlckFnZW50U2hhZG93VHJlZSkpOwogfQog
Ci1Mb2FkYWJsZU1vZHVsZVNjcmlwdDo6TG9hZGFibGVNb2R1bGVTY3JpcHQoY29uc3QgU3RyaW5n
JiBub25jZSwgY29uc3QgU3RyaW5nJiBpbnRlZ3JpdHksIGNvbnN0IFN0cmluZyYgY3Jvc3NPcmln
aW5Nb2RlLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIGNvbnN0IEF0b21pY1N0cmluZyYgaW5pdGlh
dG9yTmFtZSwgYm9vbCBpc0luVXNlckFnZW50U2hhZG93VHJlZSkKK0xvYWRhYmxlTW9kdWxlU2Ny
aXB0OjpMb2FkYWJsZU1vZHVsZVNjcmlwdChjb25zdCBTdHJpbmcmIG5vbmNlLCBjb25zdCBTdHJp
bmcmIGludGVncml0eSwgY29uc3QgU3RyaW5nJiBjcm9zc09yaWdpbk1vZGUsIGNvbnN0IFN0cmlu
ZyYgY2hhcnNldCwgY29uc3QgQXRvbVN0cmluZyYgaW5pdGlhdG9yTmFtZSwgYm9vbCBpc0luVXNl
ckFnZW50U2hhZG93VHJlZSkKICAgICA6IExvYWRhYmxlU2NyaXB0KG5vbmNlLCBjcm9zc09yaWdp
bk1vZGUsIGNoYXJzZXQsIGluaXRpYXRvck5hbWUsIGlzSW5Vc2VyQWdlbnRTaGFkb3dUcmVlKQog
ICAgICwgbV9wYXJhbWV0ZXJzKE1vZHVsZUZldGNoUGFyYW1ldGVyczo6Y3JlYXRlKGludGVncml0
eSkpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVNb2R1bGVTY3Jp
cHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZU1vZHVsZVNjcmlwdC5oCmluZGV4IDE3
M2RjYTM2YWExNzRjMzgxMzE4MjQ5MGQxYWVjNmY2ZjdhZjY0ZDUuLjkwYWEzNjcwOWFlN2E1ZmUy
NDUwNDI2YmEyYjY5OTM0ZTFmZTEzYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9M
b2FkYWJsZU1vZHVsZVNjcmlwdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZU1v
ZHVsZVNjcmlwdC5oCkBAIC0zNyw3ICszNyw3IEBAIGNsYXNzIExvYWRhYmxlTW9kdWxlU2NyaXB0
IGZpbmFsIDogcHVibGljIExvYWRhYmxlU2NyaXB0IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5M
b2FkYWJsZU1vZHVsZVNjcmlwdCgpOwogCi0gICAgc3RhdGljIFJlZjxMb2FkYWJsZU1vZHVsZVNj
cmlwdD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbm9uY2UsIGNvbnN0IFN0cmluZyYgaW50ZWdyaXR5
LCBjb25zdCBTdHJpbmcmIGNyb3NzT3JpZ2luTW9kZSwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBj
b25zdCBBdG9taWNTdHJpbmcmIGluaXRpYXRvck5hbWUsIGJvb2wgaXNJblVzZXJBZ2VudFNoYWRv
d1RyZWUpOworICAgIHN0YXRpYyBSZWY8TG9hZGFibGVNb2R1bGVTY3JpcHQ+IGNyZWF0ZShjb25z
dCBTdHJpbmcmIG5vbmNlLCBjb25zdCBTdHJpbmcmIGludGVncml0eSwgY29uc3QgU3RyaW5nJiBj
cm9zc09yaWdpbk1vZGUsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgY29uc3QgQXRvbVN0cmluZyYg
aW5pdGlhdG9yTmFtZSwgYm9vbCBpc0luVXNlckFnZW50U2hhZG93VHJlZSk7CiAKICAgICBib29s
IGlzTG9hZGVkKCkgY29uc3QgZmluYWw7CiAgICAgT3B0aW9uYWw8RXJyb3I+IGVycm9yKCkgY29u
c3QgZmluYWw7CkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICBVbmlxdWVkU3RyaW5nSW1w
bCogbW9kdWxlS2V5KCkgY29uc3QgeyByZXR1cm4gbV9tb2R1bGVLZXkuZ2V0KCk7IH0KIAogcHJp
dmF0ZToKLSAgICBMb2FkYWJsZU1vZHVsZVNjcmlwdChjb25zdCBTdHJpbmcmIG5vbmNlLCBjb25z
dCBTdHJpbmcmIGludGVncml0eSwgY29uc3QgU3RyaW5nJiBjcm9zc09yaWdpbk1vZGUsIGNvbnN0
IFN0cmluZyYgY2hhcnNldCwgY29uc3QgQXRvbWljU3RyaW5nJiBpbml0aWF0b3JOYW1lLCBib29s
IGlzSW5Vc2VyQWdlbnRTaGFkb3dUcmVlKTsKKyAgICBMb2FkYWJsZU1vZHVsZVNjcmlwdChjb25z
dCBTdHJpbmcmIG5vbmNlLCBjb25zdCBTdHJpbmcmIGludGVncml0eSwgY29uc3QgU3RyaW5nJiBj
cm9zc09yaWdpbk1vZGUsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgY29uc3QgQXRvbVN0cmluZyYg
aW5pdGlhdG9yTmFtZSwgYm9vbCBpc0luVXNlckFnZW50U2hhZG93VHJlZSk7CiAKICAgICBSZWY8
TW9kdWxlRmV0Y2hQYXJhbWV0ZXJzPiBtX3BhcmFtZXRlcnM7CiAgICAgUmVmUHRyPFVuaXF1ZWRT
dHJpbmdJbXBsPiBtX21vZHVsZUtleTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9M
b2FkYWJsZVNjcmlwdC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlU2NyaXB0LmgKaW5k
ZXggNjcwYmFkZjM0ZDhjYWRkZDNlNWE4YWIxMDZhMWJjMzVjNDgyNjAyNy4uYmZlYTI5MzAyZGFj
Yjk2Yjg4ZTZlYTYyYzU4M2E3ODA3MWJhNTdmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0xvYWRhYmxlU2NyaXB0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlU2Ny
aXB0LmgKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlQ2xpZW50KExv
YWRhYmxlU2NyaXB0Q2xpZW50Jik7CiAKIHByb3RlY3RlZDoKLSAgICBMb2FkYWJsZVNjcmlwdChj
b25zdCBTdHJpbmcmIG5vbmNlLCBjb25zdCBTdHJpbmcmIGNyb3NzT3JpZ2luTW9kZSwgY29uc3Qg
U3RyaW5nJiBjaGFyc2V0LCBjb25zdCBBdG9taWNTdHJpbmcmIGluaXRpYXRvck5hbWUsIGJvb2wg
aXNJblVzZXJBZ2VudFNoYWRvd1RyZWUpCisgICAgTG9hZGFibGVTY3JpcHQoY29uc3QgU3RyaW5n
JiBub25jZSwgY29uc3QgU3RyaW5nJiBjcm9zc09yaWdpbk1vZGUsIGNvbnN0IFN0cmluZyYgY2hh
cnNldCwgY29uc3QgQXRvbVN0cmluZyYgaW5pdGlhdG9yTmFtZSwgYm9vbCBpc0luVXNlckFnZW50
U2hhZG93VHJlZSkKICAgICAgICAgOiBTY3JpcHRFbGVtZW50Q2FjaGVkU2NyaXB0RmV0Y2hlcihu
b25jZSwgY3Jvc3NPcmlnaW5Nb2RlLCBjaGFyc2V0LCBpbml0aWF0b3JOYW1lLCBpc0luVXNlckFn
ZW50U2hhZG93VHJlZSkKICAgICB7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL01lc3NhZ2VFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmNw
cAppbmRleCBhZmIyNGU1Yjc2YmVjOGJhZWFkMTc1Zjc5ZDA4MTExMWNjYWIwODgxLi4zZTQ3ODZk
ODg5YjNhYzY3MTY2YWI4Njk3ODk4ZTcwYWZjMjRmYmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTWVzc2FnZUV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2Fn
ZUV2ZW50LmNwcApAQCAtMzgsNyArMzgsNyBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBNZXNz
YWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudCgpID0gZGVmYXVsdDsKIAotaW5saW5lIE1lc3NhZ2VFdmVu
dDo6TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgSW5pdCYmIGluaXRpYWxp
emVyLCBJc1RydXN0ZWQgaXNUcnVzdGVkKQoraW5saW5lIE1lc3NhZ2VFdmVudDo6TWVzc2FnZUV2
ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIEluaXQmJiBpbml0aWFsaXplciwgSXNUcnVzdGVk
IGlzVHJ1c3RlZCkKICAgICA6IEV2ZW50KHR5cGUsIGluaXRpYWxpemVyLCBpc1RydXN0ZWQpCiAg
ICAgLCBtX2RhdGEoSlNWYWx1ZUluV3JhcHBlZE9iamVjdCB7IGluaXRpYWxpemVyLmRhdGEgfSkK
ICAgICAsIG1fb3JpZ2luKGluaXRpYWxpemVyLm9yaWdpbikKQEAgLTU4LDcgKzU4LDcgQEAgaW5s
aW5lIE1lc3NhZ2VFdmVudDo6TWVzc2FnZUV2ZW50KERhdGFUeXBlJiYgZGF0YSwgY29uc3QgU3Ry
aW5nJiBvcmlnaW4sIGNvbnN0IFMKIHsKIH0KIAotaW5saW5lIE1lc3NhZ2VFdmVudDo6TWVzc2Fn
ZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJ
ZCkKK2lubGluZSBNZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0
eXBlLCBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3Jp
Z2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkKQogICAgIDogRXZlbnQodHlwZSwgQ2FuQnVi
YmxlOjpObywgSXNDYW5jZWxhYmxlOjpObykKICAgICAsIG1fZGF0YShXVEZNb3ZlKGRhdGEpKQog
ICAgICwgbV9vcmlnaW4ob3JpZ2luKQpAQCAtNzEsNyArNzEsNyBAQCBSZWY8TWVzc2FnZUV2ZW50
PiBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mJiBwb3J0
cywgUmVmPAogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lc3NhZ2VFdmVudChXVEZNb3ZlKGRh
dGEpLCBvcmlnaW4sIGxhc3RFdmVudElkLCBXVEZNb3ZlKHNvdXJjZSksIFdURk1vdmUocG9ydHMp
KSk7CiB9CiAKLVJlZjxNZXNzYWdlRXZlbnQ+IE1lc3NhZ2VFdmVudDo6Y3JlYXRlKGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSwgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBkYXRhLCBjb25z
dCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCkKK1JlZjxNZXNzYWdl
RXZlbnQ+IE1lc3NhZ2VFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIFJlZjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0
IFN0cmluZyYgbGFzdEV2ZW50SWQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVzc2Fn
ZUV2ZW50KHR5cGUsIFdURk1vdmUoZGF0YSksIG9yaWdpbiwgbGFzdEV2ZW50SWQpKTsKIH0KQEAg
LTk2LDE0ICs5NiwxNCBAQCBSZWY8TWVzc2FnZUV2ZW50PiBNZXNzYWdlRXZlbnQ6OmNyZWF0ZUZv
ckJpbmRpbmdzKCkKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZXNzYWdlRXZlbnQpOwogfQog
Ci1SZWY8TWVzc2FnZUV2ZW50PiBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUsIEluaXQmJiBpbml0aWFsaXplciwgSXNUcnVzdGVkIGlzVHJ1c3RlZCkKK1JlZjxN
ZXNzYWdlRXZlbnQ+IE1lc3NhZ2VFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUs
IEluaXQmJiBpbml0aWFsaXplciwgSXNUcnVzdGVkIGlzVHJ1c3RlZCkKIHsKICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBNZXNzYWdlRXZlbnQodHlwZSwgV1RGTW92ZShpbml0aWFsaXplciksIGlz
VHJ1c3RlZCkpOwogfQogCiBNZXNzYWdlRXZlbnQ6On5NZXNzYWdlRXZlbnQoKSA9IGRlZmF1bHQ7
CiAKLXZvaWQgTWVzc2FnZUV2ZW50Ojppbml0TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmlu
ZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgSlNWYWx1ZSBkYXRhLCBj
b25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgT3B0aW9uYWw8
TWVzc2FnZUV2ZW50U291cmNlPiYmIHNvdXJjZSwgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+
JiYgcG9ydHMpCit2b2lkIE1lc3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVudChjb25zdCBBdG9t
U3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBKU1ZhbHVlIGRh
dGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBPcHRp
b25hbDxNZXNzYWdlRXZlbnRTb3VyY2U+JiYgc291cmNlLCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQ
b3J0Pj4mJiBwb3J0cykKIHsKICAgICBpZiAoaXNCZWluZ0Rpc3BhdGNoZWQoKSkKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5oCmluZGV4IDkyMTY5NjgyNjMyNjBkNTEw
NDdmY2Y2MjY4M2FiYWQyNDU0NzE4N2QuLjE0ODgzMWE2MDFjNDcyOWIwNmIxZGM0OTQzMDJlODVj
NTAxMGY3ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmgKQEAgLTQ4LDcgKzQ4LDcgQEAg
dXNpbmcgTWVzc2FnZUV2ZW50U291cmNlID0gVmFyaWFudDxSZWZQdHI8V2luZG93UHJveHk+LCBS
ZWZQdHI8TWVzc2FnZVBvcnQ+PjsKIGNsYXNzIE1lc3NhZ2VFdmVudCBmaW5hbCA6IHB1YmxpYyBF
dmVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxNZXNzYWdlRXZlbnQ+IGNyZWF0ZShWZWN0
b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mJiwgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiwg
Y29uc3QgU3RyaW5nJiBvcmlnaW4gPSB7IH0sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQgPSB7
IH0sIE9wdGlvbmFsPE1lc3NhZ2VFdmVudFNvdXJjZT4mJiBzb3VyY2UgPSBXVEY6Om51bGxvcHQp
OwotICAgIHN0YXRpYyBSZWY8TWVzc2FnZUV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5n
JiB0eXBlLCBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmLCBjb25zdCBTdHJpbmcmIG9yaWdp
biwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCk7CisgICAgc3RhdGljIFJlZjxNZXNzYWdlRXZl
bnQ+IGNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBSZWY8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiYmLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCk7
CiAgICAgc3RhdGljIFJlZjxNZXNzYWdlRXZlbnQ+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGRhdGEs
IGNvbnN0IFN0cmluZyYgb3JpZ2luID0geyB9KTsKICAgICBzdGF0aWMgUmVmPE1lc3NhZ2VFdmVu
dD4gY3JlYXRlKFJlZjxCbG9iPiYmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luKTsKICAgICBz
dGF0aWMgUmVmPE1lc3NhZ2VFdmVudD4gY3JlYXRlKFJlZjxBcnJheUJ1ZmZlcj4mJiBkYXRhLCBj
b25zdCBTdHJpbmcmIG9yaWdpbiA9IHsgfSk7CkBAIC02MSwxMSArNjEsMTEgQEAgcHVibGljOgog
ICAgICAgICBPcHRpb25hbDxNZXNzYWdlRXZlbnRTb3VyY2U+IHNvdXJjZTsKICAgICAgICAgVmVj
dG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+IHBvcnRzOwogICAgIH07Ci0gICAgc3RhdGljIFJlZjxN
ZXNzYWdlRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIEluaXQmJiwgSXNU
cnVzdGVkID0gSXNUcnVzdGVkOjpObyk7CisgICAgc3RhdGljIFJlZjxNZXNzYWdlRXZlbnQ+IGNy
ZWF0ZShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBJbml0JiYsIElzVHJ1c3RlZCA9IElzVHJ1c3Rl
ZDo6Tm8pOwogCiAgICAgdmlydHVhbCB+TWVzc2FnZUV2ZW50KCk7CiAKLSAgICB2b2lkIGluaXRN
ZXNzYWdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9v
bCBjYW5jZWxhYmxlLCBKU0M6OkpTVmFsdWUgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNv
bnN0IFN0cmluZyYgbGFzdEV2ZW50SWQsIE9wdGlvbmFsPE1lc3NhZ2VFdmVudFNvdXJjZT4mJiwg
VmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiYpOworICAgIHZvaWQgaW5pdE1lc3NhZ2VFdmVu
dChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxl
LCBKU0M6OkpTVmFsdWUgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYg
bGFzdEV2ZW50SWQsIE9wdGlvbmFsPE1lc3NhZ2VFdmVudFNvdXJjZT4mJiwgVmVjdG9yPFJlZlB0
cjxNZXNzYWdlUG9ydD4+JiYpOwogCiAgICAgY29uc3QgU3RyaW5nJiBvcmlnaW4oKSBjb25zdCB7
IHJldHVybiBtX29yaWdpbjsgfQogICAgIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQoKSBjb25z
dCB7IHJldHVybiBtX2xhc3RFdmVudElkOyB9CkBAIC04MCw4ICs4MCw4IEBAIHB1YmxpYzoKIAog
cHJpdmF0ZToKICAgICBNZXNzYWdlRXZlbnQoKTsKLSAgICBNZXNzYWdlRXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlLCBJbml0JiYsIElzVHJ1c3RlZCk7Ci0gICAgTWVzc2FnZUV2ZW50KGNv
bnN0IEF0b21pY1N0cmluZyYgdHlwZSwgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBkYXRh
LCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCk7CisgICAg
TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIEluaXQmJiwgSXNUcnVzdGVkKTsK
KyAgICBNZXNzYWdlRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgUmVmPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBs
YXN0RXZlbnRJZCk7CiAgICAgTWVzc2FnZUV2ZW50KERhdGFUeXBlJiYsIGNvbnN0IFN0cmluZyYg
b3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkID0geyB9LCBPcHRpb25hbDxNZXNzYWdl
RXZlbnRTb3VyY2U+JiYgPSBXVEY6Om51bGxvcHQsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+
PiYmID0geyB9KTsKIAogICAgIEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNlKCkgY29uc3Qg
ZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcAppbmRleCBhMDI5YjNkNzFlN2U5NDYw
NGQ4MTkzYzA5MTU0MGMzYTQxYTI3ZTAzLi5hZGYxMzM3ZDk5YmZlZjIzNmRhODM3MmZkYjUyYzdh
MzRiNWRlYzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAKQEAgLTQwMSw3ICs0MDEs
NyBAQCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4gTWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9y
dHMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgYwogICAgIHJldHVybiBwb3J0czsKIH0KIAotYm9v
bCBNZXNzYWdlUG9ydDo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
VHlwZSwgUmVmPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIsIGNvbnN0IEFkZEV2ZW50TGlzdGVu
ZXJPcHRpb25zJiBvcHRpb25zKQorYm9vbCBNZXNzYWdlUG9ydDo6YWRkRXZlbnRMaXN0ZW5lcihj
b25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIFJlZjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVy
LCBjb25zdCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAoZXZl
bnRUeXBlID09IGV2ZW50TmFtZXMoKS5tZXNzYWdlRXZlbnQpIHsKICAgICAgICAgaWYgKGxpc3Rl
bmVyLT5pc0F0dHJpYnV0ZSgpKQpAQCAtNDEzLDcgKzQxMyw3IEBAIGJvb2wgTWVzc2FnZVBvcnQ6
OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZjxFdmVu
dExpc3RlCiAgICAgcmV0dXJuIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGE6OmFkZEV2ZW50TGlz
dGVuZXIoZXZlbnRUeXBlLCBXVEZNb3ZlKGxpc3RlbmVyKSwgb3B0aW9ucyk7CiB9CiAKLWJvb2wg
TWVzc2FnZVBvcnQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVu
dFR5cGUsIEV2ZW50TGlzdGVuZXImIGxpc3RlbmVyLCBjb25zdCBMaXN0ZW5lck9wdGlvbnMmIG9w
dGlvbnMpCitib29sIE1lc3NhZ2VQb3J0OjpyZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21T
dHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIsIGNvbnN0IExpc3RlbmVy
T3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBhdXRvIHJlc3VsdCA9IEV2ZW50VGFyZ2V0V2l0aElu
bGluZURhdGE6OnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lciwgb3B0aW9u
cyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmgKaW5kZXggZWYyNzJkM2U1YmQxNTlkYjVlZGEz
ZGIwYmUxZjIwYTE3MjFmMTQ0Yi4uOGNmYjYyZGIwZTYzZTU3Y2EwMzZhYzQ4OTZlMmQzYWU5ZDQz
ZjBhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmgKQEAgLTk5LDggKzk5LDggQEAgcHVibGlj
OgogcHJpdmF0ZToKICAgICBleHBsaWNpdCBNZXNzYWdlUG9ydChTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiwgY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiBsb2NhbCwgY29uc3QgTWVzc2FnZVBv
cnRJZGVudGlmaWVyJiByZW1vdGUpOwogCi0gICAgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiwgY29uc3QgQWRk
RXZlbnRMaXN0ZW5lck9wdGlvbnMmKSBmaW5hbDsKLSAgICBib29sIHJlbW92ZUV2ZW50TGlzdGVu
ZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXImLCBjb25zdCBM
aXN0ZW5lck9wdGlvbnMmKSBmaW5hbDsKKyAgICBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3Qg
QXRvbVN0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiwgY29uc3QgQWRkRXZl
bnRMaXN0ZW5lck9wdGlvbnMmKSBmaW5hbDsKKyAgICBib29sIHJlbW92ZUV2ZW50TGlzdGVuZXIo
Y29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiwgY29uc3QgTGlzdGVu
ZXJPcHRpb25zJikgZmluYWw7CiAKICAgICB2b2lkIGRpc2VudGFuZ2xlKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Nb3VzZUV2ZW50LmNwcAppbmRleCBmMjUxNmY3NWVjZGFiZjY3MjAyNWJiMTkwOTA0ZmRlZjI0
N2FiODQ0Li41Y2ZhZmE0MTEzMTgzYTUyOTEzYmUxNWJjY2FkMzE5M2Y1OGE0MGQzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL01vdXNlRXZlbnQuY3BwCkBAIC0zOSwxMiArMzksMTIgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCi1SZWY8TW91c2VFdmVudD4gTW91c2VFdmVu
dDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgTW91c2VFdmVudEluaXQm
IGluaXRpYWxpemVyKQorUmVmPE1vdXNlRXZlbnQ+IE1vdXNlRXZlbnQ6OmNyZWF0ZShjb25zdCBB
dG9tU3RyaW5nJiB0eXBlLCBjb25zdCBNb3VzZUV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIpCiB7CiAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTW91c2VFdmVudCh0eXBlLCBpbml0aWFsaXplcikpOwog
fQogCi1SZWY8TW91c2VFdmVudD4gTW91c2VFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmlu
ZyYgZXZlbnRUeXBlLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgY29uc3QgUGxhdGZvcm1N
b3VzZUV2ZW50JiBldmVudCwgaW50IGRldGFpbCwgTm9kZSogcmVsYXRlZFRhcmdldCkKK1JlZjxN
b3VzZUV2ZW50PiBNb3VzZUV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBl
LCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBl
dmVudCwgaW50IGRldGFpbCwgTm9kZSogcmVsYXRlZFRhcmdldCkKIHsKICAgICBib29sIGlzTW91
c2VFbnRlck9yTGVhdmUgPSBldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLm1vdXNlZW50ZXJFdmVu
dCB8fCBldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLm1vdXNlbGVhdmVFdmVudDsKICAgICBhdXRv
IGlzQ2FuY2VsYWJsZSA9IGV2ZW50VHlwZSAhPSBldmVudE5hbWVzKCkubW91c2Vtb3ZlRXZlbnQg
JiYgIWlzTW91c2VFbnRlck9yTGVhdmUgPyBJc0NhbmNlbGFibGU6OlllcyA6IElzQ2FuY2VsYWJs
ZTo6Tm87CkBAIC02MSw3ICs2MSw3IEBAIFJlZjxNb3VzZUV2ZW50PiBNb3VzZUV2ZW50OjpjcmVh
dGUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxXaW5kb3dQCiAgICAgICAg
IGV2ZW50Lm1vZGlmaWVycygpLCBldmVudC5idXR0b24oKSwgZXZlbnQuYnV0dG9ucygpLCByZWxh
dGVkVGFyZ2V0LCBldmVudC5mb3JjZSgpLCBldmVudC5zeW50aGV0aWNDbGlja1R5cGUoKSk7CiB9
CiAKLVJlZjxNb3VzZUV2ZW50PiBNb3VzZUV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5n
JiB0eXBlLCBDYW5CdWJibGUgY2FuQnViYmxlLCBJc0NhbmNlbGFibGUgaXNDYW5jZWxhYmxlLCBJ
c0NvbXBvc2VkIGlzQ29tcG9zZWQsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBSZWZQdHI8V2lu
ZG93UHJveHk+JiYgdmlldywgaW50IGRldGFpbCwKK1JlZjxNb3VzZUV2ZW50PiBNb3VzZUV2ZW50
OjpjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgQ2FuQnViYmxlIGNhbkJ1YmJsZSwgSXND
YW5jZWxhYmxlIGlzQ2FuY2VsYWJsZSwgSXNDb21wb3NlZCBpc0NvbXBvc2VkLCBNb25vdG9uaWNU
aW1lIHRpbWVzdGFtcCwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGludCBkZXRhaWwsCiAg
ICAgY29uc3QgSW50UG9pbnQmIHNjcmVlbkxvY2F0aW9uLCBjb25zdCBJbnRQb2ludCYgd2luZG93
TG9jYXRpb24sIGNvbnN0IEludFBvaW50JiBtb3ZlbWVudERlbHRhLCBPcHRpb25TZXQ8TW9kaWZp
ZXI+IG1vZGlmaWVycywgc2hvcnQgYnV0dG9uLCB1bnNpZ25lZCBzaG9ydCBidXR0b25zLAogICAg
IEV2ZW50VGFyZ2V0KiByZWxhdGVkVGFyZ2V0LCBkb3VibGUgZm9yY2UsIHVuc2lnbmVkIHNob3J0
IHN5bnRoZXRpY0NsaWNrVHlwZSwgRGF0YVRyYW5zZmVyKiBkYXRhVHJhbnNmZXIsIElzU2ltdWxh
dGVkIGlzU2ltdWxhdGVkLCBJc1RydXN0ZWQgaXNUcnVzdGVkKQogewpAQCAtNjksNyArNjksNyBA
QCBSZWY8TW91c2VFdmVudD4gTW91c2VFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYg
dHlwZSwgQ2FuQnViYmxlIGNhbkJ1YmJsZQogICAgICAgICBzY3JlZW5Mb2NhdGlvbiwgd2luZG93
TG9jYXRpb24sIG1vdmVtZW50RGVsdGEsIG1vZGlmaWVycywgYnV0dG9uLCBidXR0b25zLCByZWxh
dGVkVGFyZ2V0LCBmb3JjZSwgc3ludGhldGljQ2xpY2tUeXBlLCBkYXRhVHJhbnNmZXIsIGlzU2lt
dWxhdGVkLCBpc1RydXN0ZWQpKTsKIH0KIAotUmVmPE1vdXNlRXZlbnQ+IE1vdXNlRXZlbnQ6OmNy
ZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgQ2FuQnViYmxlIGNhbkJ1YmJsZSwg
SXNDYW5jZWxhYmxlIGlzQ2FuY2VsYWJsZSwgSXNDb21wb3NlZCBpc0NvbXBvc2VkLCBSZWZQdHI8
V2luZG93UHJveHk+JiYgdmlldywgaW50IGRldGFpbCwKK1JlZjxNb3VzZUV2ZW50PiBNb3VzZUV2
ZW50OjpjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBDYW5CdWJibGUgY2FuQnVi
YmxlLCBJc0NhbmNlbGFibGUgaXNDYW5jZWxhYmxlLCBJc0NvbXBvc2VkIGlzQ29tcG9zZWQsIFJl
ZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBpbnQgZGV0YWlsLAogICAgIGludCBzY3JlZW5YLCBp
bnQgc2NyZWVuWSwgaW50IGNsaWVudFgsIGludCBjbGllbnRZLCBPcHRpb25TZXQ8TW9kaWZpZXI+
IG1vZGlmaWVycywgc2hvcnQgYnV0dG9uLCB1bnNpZ25lZCBzaG9ydCBidXR0b25zLAogICAgIHVu
c2lnbmVkIHNob3J0IHN5bnRoZXRpY0NsaWNrVHlwZSwgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJn
ZXQpCiB7CkBAIC03OCw3ICs3OCw3IEBAIFJlZjxNb3VzZUV2ZW50PiBNb3VzZUV2ZW50OjpjcmVh
dGUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIENhbkJ1YmJsZSBjYW5CCiAKIE1vdXNl
RXZlbnQ6Ok1vdXNlRXZlbnQoKSA9IGRlZmF1bHQ7CiAKLU1vdXNlRXZlbnQ6Ok1vdXNlRXZlbnQo
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIENhbkJ1YmJsZSBjYW5CdWJibGUsIElzQ2Fu
Y2VsYWJsZSBpc0NhbmNlbGFibGUsIElzQ29tcG9zZWQgaXNDb21wb3NlZCwKK01vdXNlRXZlbnQ6
Ok1vdXNlRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBDYW5CdWJibGUgY2FuQnVi
YmxlLCBJc0NhbmNlbGFibGUgaXNDYW5jZWxhYmxlLCBJc0NvbXBvc2VkIGlzQ29tcG9zZWQsCiAg
ICAgTW9ub3RvbmljVGltZSB0aW1lc3RhbXAsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBp
bnQgZGV0YWlsLAogICAgIGNvbnN0IEludFBvaW50JiBzY3JlZW5Mb2NhdGlvbiwgY29uc3QgSW50
UG9pbnQmIHdpbmRvd0xvY2F0aW9uLCBjb25zdCBJbnRQb2ludCYgbW92ZW1lbnREZWx0YSwgT3B0
aW9uU2V0PE1vZGlmaWVyPiBtb2RpZmllcnMsIHNob3J0IGJ1dHRvbiwgdW5zaWduZWQgc2hvcnQg
YnV0dG9ucywKICAgICBFdmVudFRhcmdldCogcmVsYXRlZFRhcmdldCwgZG91YmxlIGZvcmNlLCB1
bnNpZ25lZCBzaG9ydCBzeW50aGV0aWNDbGlja1R5cGUsIERhdGFUcmFuc2ZlciogZGF0YVRyYW5z
ZmVyLCBJc1NpbXVsYXRlZCBpc1NpbXVsYXRlZCwgSXNUcnVzdGVkIGlzVHJ1c3RlZCkKQEAgLTkz
LDcgKzkzLDcgQEAgTW91c2VFdmVudDo6TW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2
ZW50VHlwZSwgQ2FuQnViYmxlIGNhbkJ1YmJsZSwgSXNDYW4KIHsKIH0KIAotTW91c2VFdmVudDo6
TW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgQ2FuQnViYmxlIGNhbkJ1
YmJsZSwgSXNDYW5jZWxhYmxlIGlzQ2FuY2VsYWJsZSwgSXNDb21wb3NlZCBpc0NvbXBvc2VkLAor
TW91c2VFdmVudDo6TW91c2VFdmVudChjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIENhbkJ1
YmJsZSBjYW5CdWJibGUsIElzQ2FuY2VsYWJsZSBpc0NhbmNlbGFibGUsIElzQ29tcG9zZWQgaXND
b21wb3NlZCwKICAgICBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgaW50IGRldGFpbCwgY29u
c3QgSW50UG9pbnQmIHNjcmVlbkxvY2F0aW9uLCBjb25zdCBJbnRQb2ludCYgY2xpZW50TG9jYXRp
b24sCiAgICAgT3B0aW9uU2V0PE1vZGlmaWVyPiBtb2RpZmllcnMsIHNob3J0IGJ1dHRvbiwgdW5z
aWduZWQgc2hvcnQgYnV0dG9ucywgdW5zaWduZWQgc2hvcnQgc3ludGhldGljQ2xpY2tUeXBlLCBF
dmVudFRhcmdldCogcmVsYXRlZFRhcmdldCkKICAgICA6IE1vdXNlUmVsYXRlZEV2ZW50KGV2ZW50
VHlwZSwgY2FuQnViYmxlLCBpc0NhbmNlbGFibGUsIGlzQ29tcG9zZWQsIE1vbm90b25pY1RpbWU6
Om5vdygpLCBXVEZNb3ZlKHZpZXcpLCBkZXRhaWwsIHNjcmVlbkxvY2F0aW9uLCB7IH0sIHsgfSwg
bW9kaWZpZXJzLCBJc1NpbXVsYXRlZDo6Tm8pCkBAIC0xMDYsNyArMTA2LDcgQEAgTW91c2VFdmVu
dDo6TW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgQ2FuQnViYmxlIGNh
bkJ1YmJsZSwgSXNDYW4KICAgICBpbml0Q29vcmRpbmF0ZXMoY2xpZW50TG9jYXRpb24pOwogfQog
Ci1Nb3VzZUV2ZW50OjpNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBj
b25zdCBNb3VzZUV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIpCitNb3VzZUV2ZW50OjpNb3VzZUV2ZW50
KGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgTW91c2VFdmVudEluaXQmIGluaXRp
YWxpemVyKQogICAgIDogTW91c2VSZWxhdGVkRXZlbnQoZXZlbnRUeXBlLCBpbml0aWFsaXplcikK
ICAgICAsIG1fYnV0dG9uKGluaXRpYWxpemVyLmJ1dHRvbiA9PSAtMiA/IDAgOiBpbml0aWFsaXpl
ci5idXR0b24pCiAgICAgLCBtX2J1dHRvbnMoaW5pdGlhbGl6ZXIuYnV0dG9ucykKQEAgLTExOCw3
ICsxMTgsNyBAQCBNb3VzZUV2ZW50OjpNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlLCBjb25zdCBNb3VzZUV2ZW50SW5pdCYgaW5pdAogCiBNb3VzZUV2ZW50Ojp+TW91c2VF
dmVudCgpID0gZGVmYXVsdDsKIAotdm9pZCBNb3VzZUV2ZW50Ojppbml0TW91c2VFdmVudChjb25z
dCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJl
ZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBpbnQgZGV0YWlsLAordm9pZCBNb3VzZUV2ZW50Ojpp
bml0TW91c2VFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9v
bCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgaW50IGRldGFpbCwKICAg
ICBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBjbGllbnRYLCBpbnQgY2xpZW50WSwgYm9v
bCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5LCBzaG9y
dCBidXR0b24sIEV2ZW50VGFyZ2V0KiByZWxhdGVkVGFyZ2V0KQogewogICAgIGlmIChpc0JlaW5n
RGlzcGF0Y2hlZCgpKQpAQCAtMTQxLDcgKzE0MSw3IEBAIHZvaWQgTW91c2VFdmVudDo6aW5pdE1v
dXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBj
CiAKIC8vIEZJWE1FOiBXZSBuZWVkIHRoaXMgcXVpcmsgYmVjYXVzZSBpQWQgUHJvZHVjZXIgaXMg
Y2FsbGluZyB0aGlzIGZ1bmN0aW9uIHdpdGggYSByZWxhdGVkVGFyZ2V0IHRoYXQgaXMgbm90IGFu
IEV2ZW50VGFyZ2V0IChyZGFyOi8vcHJvYmxlbS8zMDY0MDEwMSkuCiAvLyBXZSBzaG91bGQgcmVt
b3ZlIHRoaXMgcXVpcmsgd2hlbiBwb3NzaWJsZS4KLXZvaWQgTW91c2VFdmVudDo6aW5pdE1vdXNl
RXZlbnRRdWlyayhFeGVjU3RhdGUmIHN0YXRlLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0LCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnVi
YmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBpbnQgZGV0
YWlsLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBjbGllbnRYLCBpbnQgY2xpZW50WSwg
Ym9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5LCBz
aG9ydCBidXR0b24sIEpTVmFsdWUgcmVsYXRlZFRhcmdldFZhbHVlKQordm9pZCBNb3VzZUV2ZW50
Ojppbml0TW91c2VFdmVudFF1aXJrKEV4ZWNTdGF0ZSYgc3RhdGUsIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGJv
b2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3
LCBpbnQgZGV0YWlsLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBjbGllbnRYLCBpbnQg
Y2xpZW50WSwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBt
ZXRhS2V5LCBzaG9ydCBidXR0b24sIEpTVmFsdWUgcmVsYXRlZFRhcmdldFZhbHVlKQogewogICAg
IEV2ZW50VGFyZ2V0KiByZWxhdGVkVGFyZ2V0ID0gbnVsbHB0cjsKICNpZiBQTEFURk9STShNQUMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL01vdXNlRXZlbnQuaAppbmRleCBjZjgyMDBkNzJlM2Q4MTM5NjBjNTQ5MzlkOTMy
YWQ2MjNlODVhZTVmLi5mNDYwZDAxMmNkMDVhYTliNmJkMmQxMTQwYjc2MGQ2ODhiZWI0MjA4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmgKQEAgLTM5LDE5ICszOSwxOSBAQCBjbGFzcyBQbGF0Zm9y
bU1vdXNlRXZlbnQ7CiAKIGNsYXNzIE1vdXNlRXZlbnQgOiBwdWJsaWMgTW91c2VSZWxhdGVkRXZl
bnQgewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TW91c2VFdmVudD4g
Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgQ2FuQnViYmxlLCBJc0NhbmNlbGFibGUs
IElzQ29tcG9zZWQsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBSZWZQdHI8V2luZG93UHJveHk+
JiYsIGludCBkZXRhaWwsCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxNb3VzZUV2ZW50
PiBjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgQ2FuQnViYmxlLCBJc0NhbmNlbGFibGUs
IElzQ29tcG9zZWQsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBSZWZQdHI8V2luZG93UHJveHk+
JiYsIGludCBkZXRhaWwsCiAgICAgICAgIGNvbnN0IEludFBvaW50JiBzY3JlZW5Mb2NhdGlvbiwg
Y29uc3QgSW50UG9pbnQmIHdpbmRvd0xvY2F0aW9uLCBjb25zdCBJbnRQb2ludCYgbW92ZW1lbnRE
ZWx0YSwgT3B0aW9uU2V0PE1vZGlmaWVyPiwgc2hvcnQgYnV0dG9uLCB1bnNpZ25lZCBzaG9ydCBi
dXR0b25zLAogICAgICAgICBFdmVudFRhcmdldCogcmVsYXRlZFRhcmdldCwgZG91YmxlIGZvcmNl
LCB1bnNpZ25lZCBzaG9ydCBzeW50aGV0aWNDbGlja1R5cGUsIERhdGFUcmFuc2ZlciogPSBudWxs
cHRyLCBJc1NpbXVsYXRlZCA9IElzU2ltdWxhdGVkOjpObywgSXNUcnVzdGVkID0gSXNUcnVzdGVk
OjpZZXMpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxNb3VzZUV2ZW50PiBjcmVh
dGUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwg
Y29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiwgaW50IGRldGFpbCwgTm9kZSogcmVsYXRlZFRhcmdl
dCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxNb3VzZUV2ZW50PiBjcmVhdGUoY29u
c3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGNvbnN0IFBs
YXRmb3JtTW91c2VFdmVudCYsIGludCBkZXRhaWwsIE5vZGUqIHJlbGF0ZWRUYXJnZXQpOwogCi0g
ICAgc3RhdGljIFJlZjxNb3VzZUV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVu
dFR5cGUsIENhbkJ1YmJsZSwgSXNDYW5jZWxhYmxlLCBJc0NvbXBvc2VkLCBSZWZQdHI8V2luZG93
UHJveHk+JiYsIGludCBkZXRhaWwsCisgICAgc3RhdGljIFJlZjxNb3VzZUV2ZW50PiBjcmVhdGUo
Y29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBDYW5CdWJibGUsIElzQ2FuY2VsYWJsZSwgSXND
b21wb3NlZCwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmLCBpbnQgZGV0YWlsLAogICAgICAgICBpbnQg
c2NyZWVuWCwgaW50IHNjcmVlblksIGludCBjbGllbnRYLCBpbnQgY2xpZW50WSwgT3B0aW9uU2V0
PE1vZGlmaWVyPiwgc2hvcnQgYnV0dG9uLCB1bnNpZ25lZCBzaG9ydCBidXR0b25zLAogICAgICAg
ICB1bnNpZ25lZCBzaG9ydCBzeW50aGV0aWNDbGlja1R5cGUsIEV2ZW50VGFyZ2V0KiByZWxhdGVk
VGFyZ2V0KTsKIAogICAgIHN0YXRpYyBSZWY8TW91c2VFdmVudD4gY3JlYXRlRm9yQmluZGluZ3Mo
KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE1vdXNlRXZlbnQpOyB9CiAKLSAgICBzdGF0aWMgUmVm
PE1vdXNlRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3Qg
TW91c2VFdmVudEluaXQmKTsKKyAgICBzdGF0aWMgUmVmPE1vdXNlRXZlbnQ+IGNyZWF0ZShjb25z
dCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IE1vdXNlRXZlbnRJbml0Jik7CiAKICNpZiBF
TkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHN0YXRpYyBS
ZWY8TW91c2VFdmVudD4gY3JlYXRlKGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYsIHVuc2lnbmVk
IHRvdWNoSW5kZXgsIFJlZjxXaW5kb3dQcm94eT4mJik7CkBAIC01OSwxMSArNTksMTEgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCB+TW91c2VFdmVudCgpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBpbml0TW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnVi
YmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGluaXRNb3VzZUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGJvb2wg
Y2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwKICAgICAg
ICAgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgY2xpZW50WCwgaW50
IGNsaWVudFksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wg
bWV0YUtleSwKICAgICAgICAgc2hvcnQgYnV0dG9uLCBFdmVudFRhcmdldCogcmVsYXRlZFRhcmdl
dCk7CiAKLSAgICB2b2lkIGluaXRNb3VzZUV2ZW50UXVpcmsoSlNDOjpFeGVjU3RhdGUmLCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1
YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYsCisgICAgdm9pZCBp
bml0TW91c2VFdmVudFF1aXJrKEpTQzo6RXhlY1N0YXRlJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYsIGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFi
bGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwKICAgICAgICAgaW50IGRldGFpbCwgaW50IHNjcmVl
blgsIGludCBzY3JlZW5ZLCBpbnQgY2xpZW50WCwgaW50IGNsaWVudFksIGJvb2wgY3RybEtleSwg
Ym9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwKICAgICAgICAgc2hvcnQg
YnV0dG9uLCBKU0M6OkpTVmFsdWUgcmVsYXRlZFRhcmdldCk7CiAKQEAgLTg1LDE1ICs4NSwxNSBA
QCBwdWJsaWM6CiAgICAgaW50IHdoaWNoKCkgY29uc3QgZmluYWw7CiAKIHByb3RlY3RlZDoKLSAg
ICBNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgQ2FuQnViYmxlLCBJc0NhbmNl
bGFibGUsIElzQ29tcG9zZWQsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBSZWZQdHI8V2luZG93
UHJveHk+JiYsIGludCBkZXRhaWwsCisgICAgTW91c2VFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0
eXBlLCBDYW5CdWJibGUsIElzQ2FuY2VsYWJsZSwgSXNDb21wb3NlZCwgTW9ub3RvbmljVGltZSB0
aW1lc3RhbXAsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgaW50IGRldGFpbCwKICAgICAgICAgY29u
c3QgSW50UG9pbnQmIHNjcmVlbkxvY2F0aW9uLCBjb25zdCBJbnRQb2ludCYgd2luZG93TG9jYXRp
b24sIGNvbnN0IEludFBvaW50JiBtb3ZlbWVudERlbHRhLCBPcHRpb25TZXQ8TW9kaWZpZXI+LCBz
aG9ydCBidXR0b24sIHVuc2lnbmVkIHNob3J0IGJ1dHRvbnMsCiAgICAgICAgIEV2ZW50VGFyZ2V0
KiByZWxhdGVkVGFyZ2V0LCBkb3VibGUgZm9yY2UsIHVuc2lnbmVkIHNob3J0IHN5bnRoZXRpY0Ns
aWNrVHlwZSwgRGF0YVRyYW5zZmVyKiwgSXNTaW11bGF0ZWQsIElzVHJ1c3RlZCk7CiAKLSAgICBN
b3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgQ2FuQnViYmxlLCBJc0NhbmNlbGFi
bGUsIElzQ29tcG9zZWQsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgaW50IGRldGFpbCwKKyAgICBN
b3VzZUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIENhbkJ1YmJsZSwgSXNDYW5jZWxhYmxl
LCBJc0NvbXBvc2VkLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGludCBkZXRhaWwsCiAgICAgICAg
IGNvbnN0IEludFBvaW50JiBzY3JlZW5Mb2NhdGlvbiwgY29uc3QgSW50UG9pbnQmIGNsaWVudExv
Y2F0aW9uLCBPcHRpb25TZXQ8TW9kaWZpZXI+LCBzaG9ydCBidXR0b24sIHVuc2lnbmVkIHNob3J0
IGJ1dHRvbnMsCiAgICAgICAgIHVuc2lnbmVkIHNob3J0IHN5bnRoZXRpY0NsaWNrVHlwZSwgRXZl
bnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQpOwogCi0gICAgTW91c2VFdmVudChjb25zdCBBdG9taWNT
dHJpbmcmIHR5cGUsIGNvbnN0IE1vdXNlRXZlbnRJbml0Jik7CisgICAgTW91c2VFdmVudChjb25z
dCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBNb3VzZUV2ZW50SW5pdCYpOwogCiAgICAgTW91c2VF
dmVudCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VSZWxhdGVkRXZl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNwcAppbmRleCA3
M2ZlZDQ1NzFhY2RiNDQzNzY2YmNkNjg4MWZlMzBiZDBjZDljMWU0Li45NGM3ZTY1YzQxNThkM2E5
NjEwNThlZDJjMTEyOThhMmExN2FkOWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
TW91c2VSZWxhdGVkRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZVJlbGF0
ZWRFdmVudC5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1N
b3VzZVJlbGF0ZWRFdmVudDo6TW91c2VSZWxhdGVkRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGUsIENhbkJ1YmJsZSBjYW5CdWJibGUsIElzQ2FuY2VsYWJsZSBpc0NhbmNlbGFibGUs
IElzQ29tcG9zZWQgaXNDb21wb3NlZCwKK01vdXNlUmVsYXRlZEV2ZW50OjpNb3VzZVJlbGF0ZWRF
dmVudChjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIENhbkJ1YmJsZSBjYW5CdWJibGUsIElz
Q2FuY2VsYWJsZSBpc0NhbmNlbGFibGUsIElzQ29tcG9zZWQgaXNDb21wb3NlZCwKICAgICBNb25v
dG9uaWNUaW1lIHRpbWVzdGFtcCwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGludCBkZXRh
aWwsCiAgICAgY29uc3QgSW50UG9pbnQmIHNjcmVlbkxvY2F0aW9uLCBjb25zdCBJbnRQb2ludCYg
d2luZG93TG9jYXRpb24sIGNvbnN0IEludFBvaW50JiBtb3ZlbWVudERlbHRhLCBPcHRpb25TZXQ8
TW9kaWZpZXI+IG1vZGlmaWVycywgSXNTaW11bGF0ZWQgaXNTaW11bGF0ZWQsIElzVHJ1c3RlZCBp
c1RydXN0ZWQpCiAgICAgOiBVSUV2ZW50V2l0aEtleVN0YXRlKGV2ZW50VHlwZSwgY2FuQnViYmxl
LCBpc0NhbmNlbGFibGUsIGlzQ29tcG9zZWQsIHRpbWVzdGFtcCwgV1RGTW92ZSh2aWV3KSwgZGV0
YWlsLCBtb2RpZmllcnMsIGlzVHJ1c3RlZCkKQEAgLTQ5LDEzICs0OSwxMyBAQCBNb3VzZVJlbGF0
ZWRFdmVudDo6TW91c2VSZWxhdGVkRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUs
IENhbkJ1YmJsZSBjYQogICAgIGluaXQobV9pc1NpbXVsYXRlZCwgd2luZG93TG9jYXRpb24pOwog
fQogCi1Nb3VzZVJlbGF0ZWRFdmVudDo6TW91c2VSZWxhdGVkRXZlbnQoY29uc3QgQXRvbWljU3Ry
aW5nJiB0eXBlLCBJc0NhbmNlbGFibGUgaXNDYW5jZWxhYmxlLCBNb25vdG9uaWNUaW1lIHRpbWVz
dGFtcCwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGNvbnN0IEludFBvaW50JiBnbG9iYWxM
b2NhdGlvbiwgT3B0aW9uU2V0PE1vZGlmaWVyPiBtb2RpZmllcnMpCitNb3VzZVJlbGF0ZWRFdmVu
dDo6TW91c2VSZWxhdGVkRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgSXNDYW5jZWxhYmxl
IGlzQ2FuY2VsYWJsZSwgTW9ub3RvbmljVGltZSB0aW1lc3RhbXAsIFJlZlB0cjxXaW5kb3dQcm94
eT4mJiB2aWV3LCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsTG9jYXRpb24sIE9wdGlvblNldDxNb2Rp
Zmllcj4gbW9kaWZpZXJzKQogICAgIDogTW91c2VSZWxhdGVkRXZlbnQodHlwZSwgQ2FuQnViYmxl
OjpZZXMsIGlzQ2FuY2VsYWJsZSwgSXNDb21wb3NlZDo6WWVzLCB0aW1lc3RhbXAsCiAgICAgICAg
IFdURk1vdmUodmlldyksIDAsIGdsb2JhbExvY2F0aW9uLCBnbG9iYWxMb2NhdGlvbiAvKiBDb252
ZXJ0ZWQgaW4gaW5pdCAqLywgeyB9LCBtb2RpZmllcnMsIElzU2ltdWxhdGVkOjpObykKIHsKIH0K
IAotTW91c2VSZWxhdGVkRXZlbnQ6Ok1vdXNlUmVsYXRlZEV2ZW50KGNvbnN0IEF0b21pY1N0cmlu
ZyYgZXZlbnRUeXBlLCBjb25zdCBNb3VzZVJlbGF0ZWRFdmVudEluaXQmIGluaXRpYWxpemVyLCBJ
c1RydXN0ZWQgaXNUcnVzdGVkKQorTW91c2VSZWxhdGVkRXZlbnQ6Ok1vdXNlUmVsYXRlZEV2ZW50
KGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgTW91c2VSZWxhdGVkRXZlbnRJbml0
JiBpbml0aWFsaXplciwgSXNUcnVzdGVkIGlzVHJ1c3RlZCkKICAgICA6IFVJRXZlbnRXaXRoS2V5
U3RhdGUoZXZlbnRUeXBlLCBpbml0aWFsaXplcikKICAgICAsIG1fc2NyZWVuTG9jYXRpb24oSW50
UG9pbnQoaW5pdGlhbGl6ZXIuc2NyZWVuWCwgaW5pdGlhbGl6ZXIuc2NyZWVuWSkpCiAjaWYgRU5B
QkxFKFBPSU5URVJfTE9DSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZVJl
bGF0ZWRFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmgKaW5k
ZXggOTMwZDkwZDcxNGIzNTY3YTc3NjZlMmFlY2IyZTYxNGQ3OTU2NzU2MC4uMjA5MjE0Y2Q5ZGU0
YWRmNzBmYjIzNzY5NTk4YWZjZjQ4ZDZiM2E2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL01vdXNlUmVsYXRlZEV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVs
YXRlZEV2ZW50LmgKQEAgLTc2LDExICs3NiwxMSBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAg
ICBNb3VzZVJlbGF0ZWRFdmVudCgpID0gZGVmYXVsdDsKLSAgICBNb3VzZVJlbGF0ZWRFdmVudChj
b25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIENhbkJ1YmJsZSwgSXNDYW5jZWxhYmxlLCBJc0NvbXBv
c2VkLCBNb25vdG9uaWNUaW1lLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGludCBkZXRhaWwsCisg
ICAgTW91c2VSZWxhdGVkRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgQ2FuQnViYmxlLCBJ
c0NhbmNlbGFibGUsIElzQ29tcG9zZWQsIE1vbm90b25pY1RpbWUsIFJlZlB0cjxXaW5kb3dQcm94
eT4mJiwgaW50IGRldGFpbCwKICAgICAgICAgY29uc3QgSW50UG9pbnQmIHNjcmVlbkxvY2F0aW9u
LCBjb25zdCBJbnRQb2ludCYgd2luZG93TG9jYXRpb24sIGNvbnN0IEludFBvaW50JiBtb3ZlbWVu
dERlbHRhLCBPcHRpb25TZXQ8TW9kaWZpZXI+IG1vZGlmaWVycywKICAgICAgICAgSXNTaW11bGF0
ZWQgPSBJc1NpbXVsYXRlZDo6Tm8sIElzVHJ1c3RlZCA9IElzVHJ1c3RlZDo6WWVzKTsKLSAgICBN
b3VzZVJlbGF0ZWRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIElzQ2FuY2VsYWJsZSwg
TW9ub3RvbmljVGltZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmLCBjb25zdCBJbnRQb2ludCYgZ2xv
YmFsTG9jYXRpb24sIE9wdGlvblNldDxNb2RpZmllcj4pOwotICAgIE1vdXNlUmVsYXRlZEV2ZW50
KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgTW91c2VSZWxhdGVkRXZlbnRJbml0Jiwg
SXNUcnVzdGVkID0gSXNUcnVzdGVkOjpObyk7CisgICAgTW91c2VSZWxhdGVkRXZlbnQoY29uc3Qg
QXRvbVN0cmluZyYgdHlwZSwgSXNDYW5jZWxhYmxlLCBNb25vdG9uaWNUaW1lLCBSZWZQdHI8V2lu
ZG93UHJveHk+JiYsIGNvbnN0IEludFBvaW50JiBnbG9iYWxMb2NhdGlvbiwgT3B0aW9uU2V0PE1v
ZGlmaWVyPik7CisgICAgTW91c2VSZWxhdGVkRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwg
Y29uc3QgTW91c2VSZWxhdGVkRXZlbnRJbml0JiwgSXNUcnVzdGVkID0gSXNUcnVzdGVkOjpObyk7
CiAKICAgICB2b2lkIGluaXRDb29yZGluYXRlcygpOwogICAgIHZvaWQgaW5pdENvb3JkaW5hdGVz
KGNvbnN0IExheW91dFBvaW50JiBjbGllbnRMb2NhdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTXV0YXRpb25FdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRp
b25FdmVudC5jcHAKaW5kZXggMTNhN2MyMjU2NjMyNTgwMjEwNDAwNTM0YWM4MTU2ZjMwZmM0ZTc2
YS4uZDZjYWZlYzE0NWJhNWRlYTkyMDU3NGE1NGI0ODVlNzhlZWIyN2UyNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9NdXRhdGlvbkV2ZW50LmNwcApAQCAtMjUsNyArMjUsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLU11dGF0aW9uRXZlbnQ6Ok11dGF0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5n
JiB0eXBlLCBDYW5CdWJibGUgY2FuQnViYmxlLCBJc0NhbmNlbGFibGUgY2FuY2VsYWJsZSwgTm9k
ZSogcmVsYXRlZE5vZGUsIGNvbnN0IFN0cmluZyYgcHJldlZhbHVlLCBjb25zdCBTdHJpbmcmIG5l
d1ZhbHVlKQorTXV0YXRpb25FdmVudDo6TXV0YXRpb25FdmVudChjb25zdCBBdG9tU3RyaW5nJiB0
eXBlLCBDYW5CdWJibGUgY2FuQnViYmxlLCBJc0NhbmNlbGFibGUgY2FuY2VsYWJsZSwgTm9kZSog
cmVsYXRlZE5vZGUsIGNvbnN0IFN0cmluZyYgcHJldlZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1Zh
bHVlKQogICAgIDogRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlKQogICAgICwgbV9y
ZWxhdGVkTm9kZShyZWxhdGVkTm9kZSkKICAgICAsIG1fcHJldlZhbHVlKHByZXZWYWx1ZSkKQEAg
LTMzLDcgKzMzLDcgQEAgTXV0YXRpb25FdmVudDo6TXV0YXRpb25FdmVudChjb25zdCBBdG9taWNT
dHJpbmcmIHR5cGUsIENhbkJ1YmJsZSBjYW5CdWJibGUsIElzQ2EKIHsKIH0KIAotdm9pZCBNdXRh
dGlvbkV2ZW50Ojppbml0TXV0YXRpb25FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJv
b2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIE5vZGUqIHJlbGF0ZWROb2RlLCBjb25zdCBT
dHJpbmcmIHByZXZWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgU3RyaW5nJiBh
dHRyTmFtZSwgdW5zaWduZWQgc2hvcnQgYXR0ckNoYW5nZSkKK3ZvaWQgTXV0YXRpb25FdmVudDo6
aW5pdE11dGF0aW9uRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUs
IGJvb2wgY2FuY2VsYWJsZSwgTm9kZSogcmVsYXRlZE5vZGUsIGNvbnN0IFN0cmluZyYgcHJldlZh
bHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBjb25zdCBTdHJpbmcmIGF0dHJOYW1lLCB1bnNp
Z25lZCBzaG9ydCBhdHRyQ2hhbmdlKQogewogICAgIGlmIChpc0JlaW5nRGlzcGF0Y2hlZCgpKQog
ICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25F
dmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uRXZlbnQuaAppbmRleCBlNThlZDE4
N2FjYjFjMmI4NzE4NmQxOTI5ZmRiMjkwNWEzZmYxYTNiLi4zYmE2Y2VlMDcxZDcyMmZjMzMxODhk
ZWZkMmQxOGMwM2MzZDliMTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRp
b25FdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbkV2ZW50LmgKQEAgLTM2
LDcgKzM2LDcgQEAgcHVibGljOgogICAgICAgICBSRU1PVkFMID0gMwogICAgIH07CiAKLSAgICBz
dGF0aWMgUmVmPE11dGF0aW9uRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUs
IENhbkJ1YmJsZSBjYW5CdWJibGUsIE5vZGUqIHJlbGF0ZWROb2RlID0gbnVsbHB0ciwgY29uc3Qg
U3RyaW5nJiBwcmV2VmFsdWUgPSBTdHJpbmcoKSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSA9IFN0
cmluZygpKQorICAgIHN0YXRpYyBSZWY8TXV0YXRpb25FdmVudD4gY3JlYXRlKGNvbnN0IEF0b21T
dHJpbmcmIHR5cGUsIENhbkJ1YmJsZSBjYW5CdWJibGUsIE5vZGUqIHJlbGF0ZWROb2RlID0gbnVs
bHB0ciwgY29uc3QgU3RyaW5nJiBwcmV2VmFsdWUgPSBTdHJpbmcoKSwgY29uc3QgU3RyaW5nJiBu
ZXdWYWx1ZSA9IFN0cmluZygpKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
TXV0YXRpb25FdmVudCh0eXBlLCBjYW5CdWJibGUsIElzQ2FuY2VsYWJsZTo6Tm8sIHJlbGF0ZWRO
b2RlLCBwcmV2VmFsdWUsIG5ld1ZhbHVlKSk7CiAgICAgfQpAQCAtNDYsNyArNDYsNyBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE11dGF0aW9uRXZlbnQpOwogICAgIH0K
IAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5pdE11dGF0aW9uRXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBOb2RlKiByZWxh
dGVkTm9kZSwgY29uc3QgU3RyaW5nJiBwcmV2VmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUs
IGNvbnN0IFN0cmluZyYgYXR0ck5hbWUsIHVuc2lnbmVkIHNob3J0IGF0dHJDaGFuZ2UpOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5pdE11dGF0aW9uRXZlbnQoY29uc3QgQXRvbVN0cmluZyYg
dHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgTm9kZSogcmVsYXRlZE5vZGUs
IGNvbnN0IFN0cmluZyYgcHJldlZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBjb25zdCBT
dHJpbmcmIGF0dHJOYW1lLCB1bnNpZ25lZCBzaG9ydCBhdHRyQ2hhbmdlKTsKIAogICAgIE5vZGUq
IHJlbGF0ZWROb2RlKCkgY29uc3QgeyByZXR1cm4gbV9yZWxhdGVkTm9kZS5nZXQoKTsgfQogICAg
IFN0cmluZyBwcmV2VmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ByZXZWYWx1ZTsgfQpAQCAtNTYs
NyArNTYsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgTXV0YXRpb25FdmVudCgpID0gZGVm
YXVsdDsKLSAgICBNdXRhdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgQ2FuQnVi
YmxlLCBJc0NhbmNlbGFibGUsIE5vZGUqIHJlbGF0ZWROb2RlLCBjb25zdCBTdHJpbmcmIHByZXZW
YWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSk7CisgICAgTXV0YXRpb25FdmVudChjb25zdCBB
dG9tU3RyaW5nJiB0eXBlLCBDYW5CdWJibGUsIElzQ2FuY2VsYWJsZSwgTm9kZSogcmVsYXRlZE5v
ZGUsIGNvbnN0IFN0cmluZyYgcHJldlZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlKTsKIAog
ICAgIEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNlKCkgY29uc3QgZmluYWw7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmNwcAppbmRleCA2Zjc5YTc0NDAxZjBkOTJiNWRh
OGYzOTdiMjQ4M2UyY2UwNmFjOWEzLi42NmM1ZWEwYjlkNjM0NTQ0MzgxMmZiMTMxZmZlNWRiZTZj
YTFkZGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwCkBAIC05MCw3
ICs5MCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IE11dGF0aW9uT2JzZXJ2ZXI6Om9ic2VydmUoTm9k
ZSYgbm9kZSwgY29uc3QgSW5pdCYgaW5pdCkKICAgICBpZiAoaW5pdC5jaGFyYWN0ZXJEYXRhT2xk
VmFsdWUudmFsdWVPcihmYWxzZSkpCiAgICAgICAgIG9wdGlvbnMgfD0gQ2hhcmFjdGVyRGF0YU9s
ZFZhbHVlOwogCi0gICAgSGFzaFNldDxBdG9taWNTdHJpbmc+IGF0dHJpYnV0ZUZpbHRlcjsKKyAg
ICBIYXNoU2V0PEF0b21TdHJpbmc+IGF0dHJpYnV0ZUZpbHRlcjsKICAgICBpZiAoaW5pdC5hdHRy
aWJ1dGVGaWx0ZXIpIHsKICAgICAgICAgZm9yIChhdXRvJiB2YWx1ZSA6IGluaXQuYXR0cmlidXRl
RmlsdGVyLnZhbHVlKCkpCiAgICAgICAgICAgICBhdHRyaWJ1dGVGaWx0ZXIuYWRkKHZhbHVlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9u
LmNwcAppbmRleCA0NDJjMzBhN2JkZDFmOTI3Y2Y0NzNiOTkwZTJkNDRlYjkxMWUxNzkyLi5jOGZj
MDEwNjcyNDVlNGUzNjE5N2EyZjZkNGQxZTQ1NzU0N2JiYzhhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCkBAIC0zNyw3ICsz
Nyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJh
dGlvbjo6TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbihNdXRhdGlvbk9ic2VydmVyJiBvYnNl
cnZlciwgTm9kZSYgbm9kZSwgTXV0YXRpb25PYnNlcnZlck9wdGlvbnMgb3B0aW9ucywgY29uc3Qg
SGFzaFNldDxBdG9taWNTdHJpbmc+JiBhdHRyaWJ1dGVGaWx0ZXIpCitNdXRhdGlvbk9ic2VydmVy
UmVnaXN0cmF0aW9uOjpNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uKE11dGF0aW9uT2JzZXJ2
ZXImIG9ic2VydmVyLCBOb2RlJiBub2RlLCBNdXRhdGlvbk9ic2VydmVyT3B0aW9ucyBvcHRpb25z
LCBjb25zdCBIYXNoU2V0PEF0b21TdHJpbmc+JiBhdHRyaWJ1dGVGaWx0ZXIpCiAgICAgOiBtX29i
c2VydmVyKG9ic2VydmVyKQogICAgICwgbV9ub2RlKG5vZGUpCiAgICAgLCBtX29wdGlvbnMob3B0
aW9ucykKQEAgLTUyLDcgKzUyLDcgQEAgTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbjo6fk11
dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24oKQogICAgIG1fb2JzZXJ2ZXItPm9ic2VydmF0aW9u
RW5kZWQoKnRoaXMpOwogfQogCi12b2lkIE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb246OnJl
c2V0T2JzZXJ2YXRpb24oTXV0YXRpb25PYnNlcnZlck9wdGlvbnMgb3B0aW9ucywgY29uc3QgSGFz
aFNldDxBdG9taWNTdHJpbmc+JiBhdHRyaWJ1dGVGaWx0ZXIpCit2b2lkIE11dGF0aW9uT2JzZXJ2
ZXJSZWdpc3RyYXRpb246OnJlc2V0T2JzZXJ2YXRpb24oTXV0YXRpb25PYnNlcnZlck9wdGlvbnMg
b3B0aW9ucywgY29uc3QgSGFzaFNldDxBdG9tU3RyaW5nPiYgYXR0cmlidXRlRmlsdGVyKQogewog
ICAgIHRha2VUcmFuc2llbnRSZWdpc3RyYXRpb25zKCk7CiAgICAgbV9vcHRpb25zID0gb3B0aW9u
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0
cmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlv
bi5oCmluZGV4IDU5ZDQzZDI2OGJkNGZhODY2YjllMzM3YzUxYzJmZTk5ODc4MTNlODUuLmU2OTQw
NDgzYTMxM2M4ZmQxYmQxNmRjMTdjYjk2YjEzYWNkMjJhM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uaApAQCAtMzMsOCArMzMsOCBA
QAogI2luY2x1ZGUgIkdDUmVhY2hhYmxlUmVmLmgiCiAjaW5jbHVkZSAiTXV0YXRpb25PYnNlcnZl
ci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQXRvbWlj
U3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nSGFzaC5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5n
SGFzaC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQzLDEwICs0MywxMCBAQCBjbGFz
cyBRdWFsaWZpZWROYW1lOwogY2xhc3MgTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbiB7CiAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgTXV0YXRpb25PYnNlcnZl
clJlZ2lzdHJhdGlvbihNdXRhdGlvbk9ic2VydmVyJiwgTm9kZSYsIE11dGF0aW9uT2JzZXJ2ZXJP
cHRpb25zLCBjb25zdCBIYXNoU2V0PEF0b21pY1N0cmluZz4mIGF0dHJpYnV0ZUZpbHRlcik7Cisg
ICAgTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbihNdXRhdGlvbk9ic2VydmVyJiwgTm9kZSYs
IE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zLCBjb25zdCBIYXNoU2V0PEF0b21TdHJpbmc+JiBhdHRy
aWJ1dGVGaWx0ZXIpOwogICAgIH5NdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uKCk7CiAKLSAg
ICB2b2lkIHJlc2V0T2JzZXJ2YXRpb24oTXV0YXRpb25PYnNlcnZlck9wdGlvbnMsIGNvbnN0IEhh
c2hTZXQ8QXRvbWljU3RyaW5nPiYgYXR0cmlidXRlRmlsdGVyKTsKKyAgICB2b2lkIHJlc2V0T2Jz
ZXJ2YXRpb24oTXV0YXRpb25PYnNlcnZlck9wdGlvbnMsIGNvbnN0IEhhc2hTZXQ8QXRvbVN0cmlu
Zz4mIGF0dHJpYnV0ZUZpbHRlcik7CiAgICAgdm9pZCBvYnNlcnZlZFN1YnRyZWVOb2RlV2lsbERl
dGFjaChOb2RlJik7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEhhc2hTZXQ8R0NSZWFjaGFibGVSZWY8
Tm9kZT4+PiB0YWtlVHJhbnNpZW50UmVnaXN0cmF0aW9ucygpOwogICAgIGJvb2wgaGFzVHJhbnNp
ZW50UmVnaXN0cmF0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNpZW50UmVnaXN0cmF0aW9u
Tm9kZXMgJiYgIW1fdHJhbnNpZW50UmVnaXN0cmF0aW9uTm9kZXMtPmlzRW1wdHkoKTsgfQpAQCAt
NjcsNyArNjcsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxOb2RlPiBtX25vZGVLZXB0QWxpdmU7
CiAgICAgc3RkOjp1bmlxdWVfcHRyPEhhc2hTZXQ8R0NSZWFjaGFibGVSZWY8Tm9kZT4+PiBtX3Ry
YW5zaWVudFJlZ2lzdHJhdGlvbk5vZGVzOwogICAgIE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zIG1f
b3B0aW9uczsKLSAgICBIYXNoU2V0PEF0b21pY1N0cmluZz4gbV9hdHRyaWJ1dGVGaWx0ZXI7Cisg
ICAgSGFzaFNldDxBdG9tU3RyaW5nPiBtX2F0dHJpYnV0ZUZpbHRlcjsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblJl
Y29yZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25SZWNvcmQuY3BwCmluZGV4IDI1
N2I1ZWEyNTY5NjgxNzFmNmMxNzEzNTlhYWNkZjRmMDQwZWFmZDYuLjUxOTMyMGQ0Njk5MWMxNGIz
NzI3ODFhY2NlYWM3NDkwM2MwODJhMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9N
dXRhdGlvblJlY29yZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uUmVjb3Jk
LmNwcApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIGNv
bnN0IEF0b21pY1N0cmluZyYgdHlwZSgpIG92ZXJyaWRlOworICAgIGNvbnN0IEF0b21TdHJpbmcm
IHR5cGUoKSBvdmVycmlkZTsKICAgICBOb2RlKiB0YXJnZXQoKSBvdmVycmlkZSB7IHJldHVybiBt
X3RhcmdldC5wdHIoKTsgfQogICAgIE5vZGVMaXN0KiBhZGRlZE5vZGVzKCkgb3ZlcnJpZGUgeyBy
ZXR1cm4gbV9hZGRlZE5vZGVzLmdldCgpOyB9CiAgICAgTm9kZUxpc3QqIHJlbW92ZWROb2Rlcygp
IG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVtb3ZlZE5vZGVzLmdldCgpOyB9CkBAIC0xMTgsNyArMTE4
LDcgQEAgcHJpdmF0ZToKIAogY2xhc3MgQXR0cmlidXRlc1JlY29yZCBmaW5hbCA6IHB1YmxpYyBS
ZWNvcmRXaXRoRW1wdHlOb2RlTGlzdHMgewogcHVibGljOgotICAgIEF0dHJpYnV0ZXNSZWNvcmQo
RWxlbWVudCYgdGFyZ2V0LCBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNT
dHJpbmcmIG9sZFZhbHVlKQorICAgIEF0dHJpYnV0ZXNSZWNvcmQoRWxlbWVudCYgdGFyZ2V0LCBj
b25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiBvbGRWYWx1ZSkKICAg
ICAgICAgOiBSZWNvcmRXaXRoRW1wdHlOb2RlTGlzdHModGFyZ2V0LCBvbGRWYWx1ZSkKICAgICAg
ICAgLCBtX2F0dHJpYnV0ZU5hbWUobmFtZS5sb2NhbE5hbWUoKSkKICAgICAgICAgLCBtX2F0dHJp
YnV0ZU5hbWVzcGFjZShuYW1lLm5hbWVzcGFjZVVSSSgpKQpAQCAtMTI2LDEyICsxMjYsMTIgQEAg
cHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUo
KSBvdmVycmlkZTsKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZU5hbWUoKSBvdmVy
cmlkZSB7IHJldHVybiBtX2F0dHJpYnV0ZU5hbWU7IH0KLSAgICBjb25zdCBBdG9taWNTdHJpbmcm
IGF0dHJpYnV0ZU5hbWVzcGFjZSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1fYXR0cmlidXRlTmFtZXNw
YWNlOyB9CisgICAgY29uc3QgQXRvbVN0cmluZyYgdHlwZSgpIG92ZXJyaWRlOworICAgIGNvbnN0
IEF0b21TdHJpbmcmIGF0dHJpYnV0ZU5hbWUoKSBvdmVycmlkZSB7IHJldHVybiBtX2F0dHJpYnV0
ZU5hbWU7IH0KKyAgICBjb25zdCBBdG9tU3RyaW5nJiBhdHRyaWJ1dGVOYW1lc3BhY2UoKSBvdmVy
cmlkZSB7IHJldHVybiBtX2F0dHJpYnV0ZU5hbWVzcGFjZTsgfQogCi0gICAgQXRvbWljU3RyaW5n
IG1fYXR0cmlidXRlTmFtZTsKLSAgICBBdG9taWNTdHJpbmcgbV9hdHRyaWJ1dGVOYW1lc3BhY2U7
CisgICAgQXRvbVN0cmluZyBtX2F0dHJpYnV0ZU5hbWU7CisgICAgQXRvbVN0cmluZyBtX2F0dHJp
YnV0ZU5hbWVzcGFjZTsKIH07CiAKIGNsYXNzIENoYXJhY3RlckRhdGFSZWNvcmQgOiBwdWJsaWMg
UmVjb3JkV2l0aEVtcHR5Tm9kZUxpc3RzIHsKQEAgLTE0Miw3ICsxNDIsNyBAQCBwdWJsaWM6CiAg
ICAgfQogCiBwcml2YXRlOgotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSgpIG92ZXJyaWRl
OworICAgIGNvbnN0IEF0b21TdHJpbmcmIHR5cGUoKSBvdmVycmlkZTsKIH07CiAKIGNsYXNzIE11
dGF0aW9uUmVjb3JkV2l0aE51bGxPbGRWYWx1ZSBmaW5hbCA6IHB1YmxpYyBNdXRhdGlvblJlY29y
ZCB7CkBAIC0xNTMsMTQgKzE1MywxNCBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAg
IGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVjb3JkLT50
eXBlKCk7IH0KKyAgICBjb25zdCBBdG9tU3RyaW5nJiB0eXBlKCkgb3ZlcnJpZGUgeyByZXR1cm4g
bV9yZWNvcmQtPnR5cGUoKTsgfQogICAgIE5vZGUqIHRhcmdldCgpIG92ZXJyaWRlIHsgcmV0dXJu
IG1fcmVjb3JkLT50YXJnZXQoKTsgfQogICAgIE5vZGVMaXN0KiBhZGRlZE5vZGVzKCkgb3ZlcnJp
ZGUgeyByZXR1cm4gbV9yZWNvcmQtPmFkZGVkTm9kZXMoKTsgfQogICAgIE5vZGVMaXN0KiByZW1v
dmVkTm9kZXMoKSBvdmVycmlkZSB7IHJldHVybiBtX3JlY29yZC0+cmVtb3ZlZE5vZGVzKCk7IH0K
ICAgICBOb2RlKiBwcmV2aW91c1NpYmxpbmcoKSBvdmVycmlkZSB7IHJldHVybiBtX3JlY29yZC0+
cHJldmlvdXNTaWJsaW5nKCk7IH0KICAgICBOb2RlKiBuZXh0U2libGluZygpIG92ZXJyaWRlIHsg
cmV0dXJuIG1fcmVjb3JkLT5uZXh0U2libGluZygpOyB9Ci0gICAgY29uc3QgQXRvbWljU3RyaW5n
JiBhdHRyaWJ1dGVOYW1lKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZWNvcmQtPmF0dHJpYnV0ZU5h
bWUoKTsgfQotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlTmFtZXNwYWNlKCkgb3Zl
cnJpZGUgeyByZXR1cm4gbV9yZWNvcmQtPmF0dHJpYnV0ZU5hbWVzcGFjZSgpOyB9CisgICAgY29u
c3QgQXRvbVN0cmluZyYgYXR0cmlidXRlTmFtZSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVjb3Jk
LT5hdHRyaWJ1dGVOYW1lKCk7IH0KKyAgICBjb25zdCBBdG9tU3RyaW5nJiBhdHRyaWJ1dGVOYW1l
c3BhY2UoKSBvdmVycmlkZSB7IHJldHVybiBtX3JlY29yZC0+YXR0cmlidXRlTmFtZXNwYWNlKCk7
IH0KIAogICAgIFN0cmluZyBvbGRWYWx1ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9
CiAKQEAgLTE3MiwyMSArMTcyLDIxIEBAIHByaXZhdGU6CiAgICAgUmVmPE11dGF0aW9uUmVjb3Jk
PiBtX3JlY29yZDsKIH07CiAKLWNvbnN0IEF0b21pY1N0cmluZyYgQ2hpbGRMaXN0UmVjb3JkOjp0
eXBlKCkKK2NvbnN0IEF0b21TdHJpbmcmIENoaWxkTGlzdFJlY29yZDo6dHlwZSgpCiB7Ci0gICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gY2hpbGRMaXN0KCJjaGlsZExpc3Qi
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8QXRvbVN0cmluZz4gY2hpbGRMaXN0KCJjaGlsZExpc3QiLCBBdG9tU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIGNoaWxkTGlzdDsKIH0KIAotY29uc3Qg
QXRvbWljU3RyaW5nJiBBdHRyaWJ1dGVzUmVjb3JkOjp0eXBlKCkKK2NvbnN0IEF0b21TdHJpbmcm
IEF0dHJpYnV0ZXNSZWNvcmQ6OnR5cGUoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxB
dG9taWNTdHJpbmc+IGF0dHJpYnV0ZXMoImF0dHJpYnV0ZXMiLCBBdG9taWNTdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbVN0cmluZz4g
YXR0cmlidXRlcygiYXR0cmlidXRlcyIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKICAgICByZXR1cm4gYXR0cmlidXRlczsKIH0KIAotY29uc3QgQXRvbWljU3RyaW5nJiBDaGFy
YWN0ZXJEYXRhUmVjb3JkOjp0eXBlKCkKK2NvbnN0IEF0b21TdHJpbmcmIENoYXJhY3RlckRhdGFS
ZWNvcmQ6OnR5cGUoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+
IGNoYXJhY3RlckRhdGEoImNoYXJhY3RlckRhdGEiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbVN0cmluZz4gY2hhcmFj
dGVyRGF0YSgiY2hhcmFjdGVyRGF0YSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKICAgICByZXR1cm4gY2hhcmFjdGVyRGF0YTsKIH0KIApAQCAtMTk3LDcgKzE5Nyw3IEBAIFJl
ZjxNdXRhdGlvblJlY29yZD4gTXV0YXRpb25SZWNvcmQ6OmNyZWF0ZUNoaWxkTGlzdChDb250YWlu
ZXJOb2RlJiB0YXJnZXQsIFJlZjxOCiAgICAgcmV0dXJuIGFkb3B0UmVmKHN0YXRpY19jYXN0PE11
dGF0aW9uUmVjb3JkJj4oKm5ldyBDaGlsZExpc3RSZWNvcmQodGFyZ2V0LCBXVEZNb3ZlKGFkZGVk
KSwgV1RGTW92ZShyZW1vdmVkKSwgV1RGTW92ZShwcmV2aW91c1NpYmxpbmcpLCBXVEZNb3ZlKG5l
eHRTaWJsaW5nKSkpKTsKIH0KIAotUmVmPE11dGF0aW9uUmVjb3JkPiBNdXRhdGlvblJlY29yZDo6
Y3JlYXRlQXR0cmlidXRlcyhFbGVtZW50JiB0YXJnZXQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5h
bWUsIGNvbnN0IEF0b21pY1N0cmluZyYgb2xkVmFsdWUpCitSZWY8TXV0YXRpb25SZWNvcmQ+IE11
dGF0aW9uUmVjb3JkOjpjcmVhdGVBdHRyaWJ1dGVzKEVsZW1lbnQmIHRhcmdldCwgY29uc3QgUXVh
bGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYgb2xkVmFsdWUpCiB7CiAgICAgcmV0
dXJuIGFkb3B0UmVmKHN0YXRpY19jYXN0PE11dGF0aW9uUmVjb3JkJj4oKm5ldyBBdHRyaWJ1dGVz
UmVjb3JkKHRhcmdldCwgbmFtZSwgb2xkVmFsdWUpKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTXV0YXRpb25SZWNvcmQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlv
blJlY29yZC5oCmluZGV4IDg4NzJiNDQ4MmU4YmJjODI5YzViYzVjZTUxMTcxMmUzOTYwNmE2ODIu
LjM3NTQyZjYzMGNhYWU5NmMxOTlmNzAyOTZjMmEyMjM3ZTUxMWJkYmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblJlY29yZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9NdXRhdGlvblJlY29yZC5oCkBAIC01MiwxNCArNTIsMTQgQEAgY2xhc3MgUXVhbGlmaWVkTmFt
ZTsKIGNsYXNzIE11dGF0aW9uUmVjb3JkIDogcHVibGljIFJlZkNvdW50ZWQ8TXV0YXRpb25SZWNv
cmQ+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPE11dGF0aW9uUmVjb3JkPiBjcmVhdGVDaGls
ZExpc3QoQ29udGFpbmVyTm9kZSYgdGFyZ2V0LCBSZWY8Tm9kZUxpc3Q+JiYgYWRkZWQsIFJlZjxO
b2RlTGlzdD4mJiByZW1vdmVkLCBSZWZQdHI8Tm9kZT4mJiBwcmV2aW91c1NpYmxpbmcsIFJlZlB0
cjxOb2RlPiYmIG5leHRTaWJsaW5nKTsKLSAgICBzdGF0aWMgUmVmPE11dGF0aW9uUmVjb3JkPiBj
cmVhdGVBdHRyaWJ1dGVzKEVsZW1lbnQmIHRhcmdldCwgY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNv
bnN0IEF0b21pY1N0cmluZyYgb2xkVmFsdWUpOworICAgIHN0YXRpYyBSZWY8TXV0YXRpb25SZWNv
cmQ+IGNyZWF0ZUF0dHJpYnV0ZXMoRWxlbWVudCYgdGFyZ2V0LCBjb25zdCBRdWFsaWZpZWROYW1l
JiwgY29uc3QgQXRvbVN0cmluZyYgb2xkVmFsdWUpOwogICAgIHN0YXRpYyBSZWY8TXV0YXRpb25S
ZWNvcmQ+IGNyZWF0ZUNoYXJhY3RlckRhdGEoQ2hhcmFjdGVyRGF0YSYgdGFyZ2V0LCBjb25zdCBT
dHJpbmcmIG9sZFZhbHVlKTsKIAogICAgIHN0YXRpYyBSZWY8TXV0YXRpb25SZWNvcmQ+IGNyZWF0
ZVdpdGhOdWxsT2xkVmFsdWUoTXV0YXRpb25SZWNvcmQmKTsKIAogICAgIHZpcnR1YWwgfk11dGF0
aW9uUmVjb3JkKCk7CiAKLSAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSgpID0g
MDsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21TdHJpbmcmIHR5cGUoKSA9IDA7CiAgICAgdmlydHVh
bCBOb2RlKiB0YXJnZXQoKSA9IDA7CiAKICAgICB2aXJ0dWFsIE5vZGVMaXN0KiBhZGRlZE5vZGVz
KCkgPSAwOwpAQCAtNjcsOCArNjcsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBOb2RlKiBwcmV2
aW91c1NpYmxpbmcoKSB7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCBOb2RlKiBuZXh0U2libGlu
ZygpIHsgcmV0dXJuIDA7IH0KIAotICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRy
aWJ1dGVOYW1lKCkgeyByZXR1cm4gbnVsbEF0b20oKTsgfQotICAgIHZpcnR1YWwgY29uc3QgQXRv
bWljU3RyaW5nJiBhdHRyaWJ1dGVOYW1lc3BhY2UoKSB7IHJldHVybiBudWxsQXRvbSgpOyB9Cisg
ICAgdmlydHVhbCBjb25zdCBBdG9tU3RyaW5nJiBhdHRyaWJ1dGVOYW1lKCkgeyByZXR1cm4gbnVs
bEF0b20oKTsgfQorICAgIHZpcnR1YWwgY29uc3QgQXRvbVN0cmluZyYgYXR0cmlidXRlTmFtZXNw
YWNlKCkgeyByZXR1cm4gbnVsbEF0b20oKTsgfQogCiAgICAgdmlydHVhbCBTdHJpbmcgb2xkVmFs
dWUoKSB7IHJldHVybiBTdHJpbmcoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTmFtZU5vZGVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lTm9kZUxpc3QuY3Bw
CmluZGV4IDBiYjgyMzgxMDI2ZGYzOTNmMGU4NDYwOGYwODA1NGZhNTg3ZmM5OTcuLjJhMGFmYjgw
MWVkZWFlZjVhOGIwMTc0OWE1MjM0NTI2OTU3YjllYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9OYW1lTm9kZUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lTm9k
ZUxpc3QuY3BwCkBAIC0zMiw3ICszMiw3IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAK
IFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChOYW1lTm9kZUxpc3QpOwogCi1OYW1lTm9kZUxp
c3Q6Ok5hbWVOb2RlTGlzdChDb250YWluZXJOb2RlJiByb290Tm9kZSwgY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lKQorTmFtZU5vZGVMaXN0OjpOYW1lTm9kZUxpc3QoQ29udGFpbmVyTm9kZSYgcm9v
dE5vZGUsIGNvbnN0IEF0b21TdHJpbmcmIG5hbWUpCiAgICAgOiBDYWNoZWRMaXZlTm9kZUxpc3Qo
cm9vdE5vZGUsIEludmFsaWRhdGVPbk5hbWVBdHRyQ2hhbmdlKQogICAgICwgbV9uYW1lKG5hbWUp
CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZU5vZGVMaXN0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTmFtZU5vZGVMaXN0LmgKaW5kZXggODVlZWNlMjQ4NDdiODNjYzcwNTU3
NTFhNGMzMzFmOGMzNWQ0OGE5NS4uNzBjNWM3MDBlOTUwZTUzMTQzN2YwZmRlNTFjY2MzOGQ2ZGNi
M2FhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05hbWVOb2RlTGlzdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lTm9kZUxpc3QuaApAQCAtMjUsNyArMjUsNyBAQAogCiAj
aW5jbHVkZSAiTGl2ZU5vZGVMaXN0LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNs
dWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3Ry
aW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBOYW1lTm9kZUxpc3QgZmluYWwgOiBwdWJsaWMgQ2FjaGVkTGl2
ZU5vZGVMaXN0PE5hbWVOb2RlTGlzdD4gewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoTmFt
ZU5vZGVMaXN0KTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPE5hbWVOb2RlTGlzdD4gY3JlYXRl
KENvbnRhaW5lck5vZGUmIHJvb3ROb2RlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCisgICAg
c3RhdGljIFJlZjxOYW1lTm9kZUxpc3Q+IGNyZWF0ZShDb250YWluZXJOb2RlJiByb290Tm9kZSwg
Y29uc3QgQXRvbVN0cmluZyYgbmFtZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IE5hbWVOb2RlTGlzdChyb290Tm9kZSwgbmFtZSkpOwogICAgIH0KQEAgLTQ0LDkgKzQ0LDkg
QEAgcHVibGljOgogICAgIGJvb2wgaXNSb290ZWRBdERvY3VtZW50KCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KIAogcHJpdmF0ZToKLSAgICBOYW1lTm9kZUxpc3QoQ29udGFpbmVy
Tm9kZSYgcm9vdE5vZGUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSk7CisgICAgTmFtZU5vZGVM
aXN0KENvbnRhaW5lck5vZGUmIHJvb3ROb2RlLCBjb25zdCBBdG9tU3RyaW5nJiBuYW1lKTsKIAot
ICAgIEF0b21pY1N0cmluZyBtX25hbWU7CisgICAgQXRvbVN0cmluZyBtX25hbWU7CiB9OwogCiBp
bmxpbmUgYm9vbCBOYW1lTm9kZUxpc3Q6OmVsZW1lbnRNYXRjaGVzKEVsZW1lbnQmIGVsZW1lbnQp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZWROb2RlTWFwLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZE5vZGVNYXAuY3BwCmluZGV4IDc1YmE2NmQ0ZjBiMjYx
MDNjYjI4NTFiYmE3ZjNkZTQ0ODM0ODgyNWYuLjI3NzE5MDJjYTQwMjU5MGNjNzM1YTg5ZTAwYzg2
ZjVkNmM5YTljZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZE5vZGVNYXAu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZE5vZGVNYXAuY3BwCkBAIC00NSwxNyAr
NDUsMTcgQEAgdm9pZCBOYW1lZE5vZGVNYXA6OmRlcmVmKCkKICAgICBtX2VsZW1lbnQuZGVyZWYo
KTsKIH0KIAotUmVmUHRyPEF0dHI+IE5hbWVkTm9kZU1hcDo6Z2V0TmFtZWRJdGVtKGNvbnN0IEF0
b21pY1N0cmluZyYgbmFtZSkgY29uc3QKK1JlZlB0cjxBdHRyPiBOYW1lZE5vZGVNYXA6OmdldE5h
bWVkSXRlbShjb25zdCBBdG9tU3RyaW5nJiBuYW1lKSBjb25zdAogewogICAgIHJldHVybiBtX2Vs
ZW1lbnQuZ2V0QXR0cmlidXRlTm9kZShuYW1lKTsKIH0KIAotUmVmUHRyPEF0dHI+IE5hbWVkTm9k
ZU1hcDo6Z2V0TmFtZWRJdGVtTlMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNv
bnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lKSBjb25zdAorUmVmUHRyPEF0dHI+IE5hbWVkTm9k
ZU1hcDo6Z2V0TmFtZWRJdGVtTlMoY29uc3QgQXRvbVN0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25z
dCBBdG9tU3RyaW5nJiBsb2NhbE5hbWUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fZWxlbWVudC5n
ZXRBdHRyaWJ1dGVOb2RlTlMobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpOwogfQogCi1FeGNlcHRp
b25PcjxSZWY8QXR0cj4+IE5hbWVkTm9kZU1hcDo6cmVtb3ZlTmFtZWRJdGVtKGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZSkKK0V4Y2VwdGlvbk9yPFJlZjxBdHRyPj4gTmFtZWROb2RlTWFwOjpyZW1v
dmVOYW1lZEl0ZW0oY29uc3QgQXRvbVN0cmluZyYgbmFtZSkKIHsKICAgICBpZiAoIW1fZWxlbWVu
dC5oYXNBdHRyaWJ1dGVzKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RGb3VuZEVy
cm9yIH07CkBAIC04MCw3ICs4MCw3IEBAIFZlY3RvcjxTdHJpbmc+IE5hbWVkTm9kZU1hcDo6c3Vw
cG9ydGVkUHJvcGVydHlOYW1lcygpIGNvbnN0CiAgICAgcmV0dXJuIG5hbWVzOwogfQogCi1FeGNl
cHRpb25PcjxSZWY8QXR0cj4+IE5hbWVkTm9kZU1hcDo6cmVtb3ZlTmFtZWRJdGVtTlMoY29uc3Qg
QXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1l
KQorRXhjZXB0aW9uT3I8UmVmPEF0dHI+PiBOYW1lZE5vZGVNYXA6OnJlbW92ZU5hbWVkSXRlbU5T
KGNvbnN0IEF0b21TdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgQXRvbVN0cmluZyYgbG9jYWxO
YW1lKQogewogICAgIGlmICghbV9lbGVtZW50Lmhhc0F0dHJpYnV0ZXMoKSkKICAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IE5vdEZvdW5kRXJyb3IgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9OYW1lZE5vZGVNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZE5vZGVNYXAu
aAppbmRleCBkMzBkMjNhYTViYWZlZmI0MjBlMmQxODUzNjVmYmMyNDJkNmQwNmFhLi4xY2U3Njgx
MTlkYjcwNzlmMThkZjUyZGQ3NzIzYzYwZGMyNzJkNjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTmFtZWROb2RlTWFwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05hbWVkTm9k
ZU1hcC5oCkBAIC00NSwxMSArNDUsMTEgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQg
dW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEF0dHI+
IGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxB
dHRyPiBnZXROYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3Q7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgUmVmUHRyPEF0dHI+IGdldE5hbWVkSXRlbU5TKGNvbnN0IEF0b21pY1N0cmluZyYg
bmFtZXNwYWNlVVJJLCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSkgY29uc3Q7CisgICAg
V0VCQ09SRV9FWFBPUlQgUmVmUHRyPEF0dHI+IGdldE5hbWVkSXRlbShjb25zdCBBdG9tU3RyaW5n
JikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEF0dHI+IGdldE5hbWVkSXRlbU5T
KGNvbnN0IEF0b21TdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgQXRvbVN0cmluZyYgbG9jYWxO
YW1lKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25PcjxSZWZQdHI8QXR0cj4+
IHNldE5hbWVkSXRlbShBdHRyJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8UmVm
PEF0dHI+PiByZW1vdmVOYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKTsKLSAgICBX
RUJDT1JFX0VYUE9SVCBFeGNlcHRpb25PcjxSZWY8QXR0cj4+IHJlbW92ZU5hbWVkSXRlbU5TKGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2Fs
TmFtZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8UmVmPEF0dHI+PiByZW1vdmVO
YW1lZEl0ZW0oY29uc3QgQXRvbVN0cmluZyYgbmFtZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgRXhj
ZXB0aW9uT3I8UmVmPEF0dHI+PiByZW1vdmVOYW1lZEl0ZW1OUyhjb25zdCBBdG9tU3RyaW5nJiBu
YW1lc3BhY2VVUkksIGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsTmFtZSk7CiAKICAgICBWZWN0b3I8
U3RyaW5nPiBzdXBwb3J0ZWRQcm9wZXJ0eU5hbWVzKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApp
bmRleCAxNTA0MWU5MjI3NTNmMTA4ZmRiMTkyZTI4YTM1ODUxYjdmNjc0N2Y3Li5mYWUxOGE5NWQ4
YmExYWMyZjU3YTJkMjJhNDdkZWI4YzBhZTNjY2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC02ODcs
MTMgKzY4NywxMyBAQCBFeGNlcHRpb25PcjxSZWY8Tm9kZT4+IE5vZGU6OmNsb25lTm9kZUZvckJp
bmRpbmdzKGJvb2wgZGVlcCkKICAgICByZXR1cm4gY2xvbmVOb2RlKGRlZXApOwogfQogCi1jb25z
dCBBdG9taWNTdHJpbmcmIE5vZGU6OnByZWZpeCgpIGNvbnN0Citjb25zdCBBdG9tU3RyaW5nJiBO
b2RlOjpwcmVmaXgoKSBjb25zdAogewogICAgIC8vIEZvciBub2RlcyBvdGhlciB0aGFuIGVsZW1l
bnRzIGFuZCBhdHRyaWJ1dGVzLCB0aGUgcHJlZml4IGlzIGFsd2F5cyBudWxsCiAgICAgcmV0dXJu
IG51bGxBdG9tKCk7CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IE5vZGU6OnNldFByZWZpeChjb25z
dCBBdG9taWNTdHJpbmcmKQorRXhjZXB0aW9uT3I8dm9pZD4gTm9kZTo6c2V0UHJlZml4KGNvbnN0
IEF0b21TdHJpbmcmKQogewogICAgIC8vIFRoZSBzcGVjIHNheXMgdGhhdCBmb3Igbm9kZXMgb3Ro
ZXIgdGhhbiBlbGVtZW50cyBhbmQgYXR0cmlidXRlcywgcHJlZml4IGlzIGFsd2F5cyBudWxsLgog
ICAgIC8vIEl0IGRvZXMgbm90IHNheSB3aGF0IHRvIGRvIHdoZW4gdGhlIHVzZXIgdHJpZXMgdG8g
c2V0IHRoZSBwcmVmaXggb24gYW5vdGhlciB0eXBlIG9mCkBAIC03MDEsMTIgKzcwMSwxMiBAQCBF
eGNlcHRpb25Pcjx2b2lkPiBOb2RlOjpzZXRQcmVmaXgoY29uc3QgQXRvbWljU3RyaW5nJikKICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgTmFtZXNwYWNlRXJyb3IgfTsKIH0KIAotY29uc3QgQXRvbWlj
U3RyaW5nJiBOb2RlOjpsb2NhbE5hbWUoKSBjb25zdAorY29uc3QgQXRvbVN0cmluZyYgTm9kZTo6
bG9jYWxOYW1lKCkgY29uc3QKIHsKICAgICByZXR1cm4gbnVsbEF0b20oKTsKIH0KIAotY29uc3Qg
QXRvbWljU3RyaW5nJiBOb2RlOjpuYW1lc3BhY2VVUkkoKSBjb25zdAorY29uc3QgQXRvbVN0cmlu
ZyYgTm9kZTo6bmFtZXNwYWNlVVJJKCkgY29uc3QKIHsKICAgICByZXR1cm4gbnVsbEF0b20oKTsK
IH0KQEAgLTk3Niw3ICs5NzYsNyBAQCB2b2lkIE5vZGU6OmNsZWFyTm9kZUxpc3RzKCkKICAgICBy
YXJlRGF0YSgpLT5jbGVhck5vZGVMaXN0cygpOwogfQogCi1FeGNlcHRpb25Pcjx2b2lkPiBOb2Rl
OjpjaGVja1NldFByZWZpeChjb25zdCBBdG9taWNTdHJpbmcmIHByZWZpeCkKK0V4Y2VwdGlvbk9y
PHZvaWQ+IE5vZGU6OmNoZWNrU2V0UHJlZml4KGNvbnN0IEF0b21TdHJpbmcmIHByZWZpeCkKIHsK
ICAgICAvLyBQZXJmb3JtIGVycm9yIGNoZWNraW5nIGFzIHJlcXVpcmVkIGJ5IHNwZWMgZm9yIHNl
dHRpbmcgTm9kZS5wcmVmaXguIFVzZWQgYnkKICAgICAvLyBFbGVtZW50OjpzZXRQcmVmaXgoKSBh
bmQgQXR0cjo6c2V0UHJlZml4KCkKQEAgLTE0MTEsNyArMTQxMSw3IEBAIGJvb2wgTm9kZTo6aXNF
cXVhbE5vZGUoTm9kZSogb3RoZXIpIGNvbnN0CiB9CiAKIC8vIGh0dHBzOi8vZG9tLnNwZWMud2hh
dHdnLm9yZy8jbG9jYXRlLWEtbmFtZXNwYWNlCi1zdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBs
b2NhdGVEZWZhdWx0TmFtZXNwYWNlKGNvbnN0IE5vZGUmIG5vZGUsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgcHJlZml4KQorc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGxvY2F0ZURlZmF1bHROYW1lc3Bh
Y2UoY29uc3QgTm9kZSYgbm9kZSwgY29uc3QgQXRvbVN0cmluZyYgcHJlZml4KQogewogICAgIHN3
aXRjaCAobm9kZS5ub2RlVHlwZSgpKSB7CiAgICAgY2FzZSBOb2RlOjpFTEVNRU5UX05PREU6IHsK
QEAgLTE0NTMsMjEgKzE0NTMsMjEgQEAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYXRl
RGVmYXVsdE5hbWVzcGFjZShjb25zdCBOb2RlJiBub2RlLCBjb25zdCBBdG9taWMKIH0KIAogLy8g
aHR0cHM6Ly9kb20uc3BlYy53aGF0d2cub3JnLyNkb20tbm9kZS1pc2RlZmF1bHRuYW1lc3BhY2UK
LWJvb2wgTm9kZTo6aXNEZWZhdWx0TmFtZXNwYWNlKGNvbnN0IEF0b21pY1N0cmluZyYgcG90ZW50
aWFsbHlFbXB0eU5hbWVzcGFjZSkgY29uc3QKK2Jvb2wgTm9kZTo6aXNEZWZhdWx0TmFtZXNwYWNl
KGNvbnN0IEF0b21TdHJpbmcmIHBvdGVudGlhbGx5RW1wdHlOYW1lc3BhY2UpIGNvbnN0CiB7Ci0g
ICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkkgPSBwb3RlbnRpYWxseUVtcHR5TmFt
ZXNwYWNlLmlzRW1wdHkoKSA/IG51bGxBdG9tKCkgOiBwb3RlbnRpYWxseUVtcHR5TmFtZXNwYWNl
OworICAgIGNvbnN0IEF0b21TdHJpbmcmIG5hbWVzcGFjZVVSSSA9IHBvdGVudGlhbGx5RW1wdHlO
YW1lc3BhY2UuaXNFbXB0eSgpID8gbnVsbEF0b20oKSA6IHBvdGVudGlhbGx5RW1wdHlOYW1lc3Bh
Y2U7CiAgICAgcmV0dXJuIGxvY2F0ZURlZmF1bHROYW1lc3BhY2UoKnRoaXMsIG51bGxBdG9tKCkp
ID09IG5hbWVzcGFjZVVSSTsKIH0KIAogLy8gaHR0cHM6Ly9kb20uc3BlYy53aGF0d2cub3JnLyNk
b20tbm9kZS1sb29rdXBuYW1lc3BhY2V1cmkKLWNvbnN0IEF0b21pY1N0cmluZyYgTm9kZTo6bG9v
a3VwTmFtZXNwYWNlVVJJKGNvbnN0IEF0b21pY1N0cmluZyYgcG90ZW50aWFsbHlFbXB0eVByZWZp
eCkgY29uc3QKK2NvbnN0IEF0b21TdHJpbmcmIE5vZGU6Omxvb2t1cE5hbWVzcGFjZVVSSShjb25z
dCBBdG9tU3RyaW5nJiBwb3RlbnRpYWxseUVtcHR5UHJlZml4KSBjb25zdAogewotICAgIGNvbnN0
IEF0b21pY1N0cmluZyYgcHJlZml4ID0gcG90ZW50aWFsbHlFbXB0eVByZWZpeC5pc0VtcHR5KCkg
PyBudWxsQXRvbSgpIDogcG90ZW50aWFsbHlFbXB0eVByZWZpeDsKKyAgICBjb25zdCBBdG9tU3Ry
aW5nJiBwcmVmaXggPSBwb3RlbnRpYWxseUVtcHR5UHJlZml4LmlzRW1wdHkoKSA/IG51bGxBdG9t
KCkgOiBwb3RlbnRpYWxseUVtcHR5UHJlZml4OwogICAgIHJldHVybiBsb2NhdGVEZWZhdWx0TmFt
ZXNwYWNlKCp0aGlzLCBwcmVmaXgpOwogfQogCiAvLyBodHRwczovL2RvbS5zcGVjLndoYXR3Zy5v
cmcvI2xvY2F0ZS1hLW5hbWVzcGFjZS1wcmVmaXgKLXN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcm
IGxvY2F0ZU5hbWVzcGFjZVByZWZpeChjb25zdCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBBdG9t
aWNTdHJpbmcmIG5hbWVzcGFjZVVSSSkKK3N0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBsb2NhdGVO
YW1lc3BhY2VQcmVmaXgoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgQXRvbVN0cmluZyYg
bmFtZXNwYWNlVVJJKQogewogICAgIGlmIChlbGVtZW50Lm5hbWVzcGFjZVVSSSgpID09IG5hbWVz
cGFjZVVSSSkKICAgICAgICAgcmV0dXJuIGVsZW1lbnQucHJlZml4KCk7CkBAIC0xNDgzLDcgKzE0
ODMsNyBAQCBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhdGVOYW1lc3BhY2VQcmVmaXgo
Y29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgQQogfQogCiAvLyBodHRwczovL2RvbS5zcGVj
LndoYXR3Zy5vcmcvI2RvbS1ub2RlLWxvb2t1cHByZWZpeAotY29uc3QgQXRvbWljU3RyaW5nJiBO
b2RlOjpsb29rdXBQcmVmaXgoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkkpIGNvbnN0
Citjb25zdCBBdG9tU3RyaW5nJiBOb2RlOjpsb29rdXBQcmVmaXgoY29uc3QgQXRvbVN0cmluZyYg
bmFtZXNwYWNlVVJJKSBjb25zdAogewogICAgIGlmIChuYW1lc3BhY2VVUkkuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gbnVsbEF0b20oKTsKQEAgLTE3NDEsNyArMTc0MSw3IEBAIHN0YXRpYyB2
b2lkIGFwcGVuZEF0dHJpYnV0ZURlc2MoY29uc3QgTm9kZSogbm9kZSwgU3RyaW5nQnVpbGRlciYg
c3RyaW5nQnVpbGRlciwKICAgICBpZiAoIWlzPEVsZW1lbnQ+KCpub2RlKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyID0gZG93bmNhc3Q8RWxlbWVudD4o
Km5vZGUpLmdldEF0dHJpYnV0ZShuYW1lKTsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBhdHRyID0g
ZG93bmNhc3Q8RWxlbWVudD4oKm5vZGUpLmdldEF0dHJpYnV0ZShuYW1lKTsKICAgICBpZiAoYXR0
ci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTc5NCw3ICsxNzk0LDcgQEAgdm9p
ZCBOb2RlOjpzaG93Tm9kZVBhdGhGb3JUaGlzKCkgY29uc3QKICAgICAgICAgICAgIGZwcmludGYo
c3RkZXJyLCAiLyVzIiwgbm9kZS0+bm9kZU5hbWUoKS51dGY4KCkuZGF0YSgpKTsKIAogICAgICAg
ICAgICAgY29uc3QgRWxlbWVudCYgZWxlbWVudCA9IGRvd25jYXN0PEVsZW1lbnQ+KCpub2RlKTsK
LSAgICAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgaWRhdHRyID0gZWxlbWVudC5nZXRJZEF0
dHJpYnV0ZSgpOworICAgICAgICAgICAgY29uc3QgQXRvbVN0cmluZyYgaWRhdHRyID0gZWxlbWVu
dC5nZXRJZEF0dHJpYnV0ZSgpOwogICAgICAgICAgICAgYm9vbCBoYXNJZEF0dHIgPSAhaWRhdHRy
LmlzTnVsbCgpICYmICFpZGF0dHIuaXNFbXB0eSgpOwogICAgICAgICAgICAgaWYgKG5vZGUtPnBy
ZXZpb3VzU2libGluZygpIHx8IG5vZGUtPm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAgICAgICAg
ICBpbnQgY291bnQgPSAwOwpAQCAtMjEwNCw3ICsyMTA0LDcgQEAgdm9pZCBOb2RlOjptb3ZlTm9k
ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQmIG9sZERvY3VtZW50LCBEb2N1bWVudCYgbmV3RG9jdW1l
bnQpCiAgICAgICAgIGRvd25jYXN0PEVsZW1lbnQ+KCp0aGlzKS5kaWRNb3ZlVG9OZXdEb2N1bWVu
dChvbGREb2N1bWVudCwgbmV3RG9jdW1lbnQpOwogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wgdHJ5
QWRkRXZlbnRMaXN0ZW5lcihOb2RlKiB0YXJnZXROb2RlLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2
ZW50VHlwZSwgUmVmPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIsIGNvbnN0IEV2ZW50VGFyZ2V0
OjpBZGRFdmVudExpc3RlbmVyT3B0aW9ucyYgb3B0aW9ucykKK3N0YXRpYyBpbmxpbmUgYm9vbCB0
cnlBZGRFdmVudExpc3RlbmVyKE5vZGUqIHRhcmdldE5vZGUsIGNvbnN0IEF0b21TdHJpbmcmIGV2
ZW50VHlwZSwgUmVmPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIsIGNvbnN0IEV2ZW50VGFyZ2V0
OjpBZGRFdmVudExpc3RlbmVyT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAoIXRhcmdldE5v
ZGUtPkV2ZW50VGFyZ2V0OjphZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIuY29w
eVJlZigpLCBvcHRpb25zKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjEzMywxMiArMjEz
MywxMiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgdHJ5QWRkRXZlbnRMaXN0ZW5lcihOb2RlKiB0YXJn
ZXROb2RlLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZQogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIE5vZGU6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUs
IFJlZjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBjb25zdCBBZGRFdmVudExpc3RlbmVyT3B0
aW9ucyYgb3B0aW9ucykKK2Jvb2wgTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9tU3Ry
aW5nJiBldmVudFR5cGUsIFJlZjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBjb25zdCBBZGRF
dmVudExpc3RlbmVyT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICByZXR1cm4gdHJ5QWRkRXZlbnRM
aXN0ZW5lcih0aGlzLCBldmVudFR5cGUsIFdURk1vdmUobGlzdGVuZXIpLCBvcHRpb25zKTsKIH0K
IAotc3RhdGljIGlubGluZSBib29sIHRyeVJlbW92ZUV2ZW50TGlzdGVuZXIoTm9kZSogdGFyZ2V0
Tm9kZSwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXImIGxpc3Rl
bmVyLCBjb25zdCBFdmVudFRhcmdldDo6TGlzdGVuZXJPcHRpb25zJiBvcHRpb25zKQorc3RhdGlj
IGlubGluZSBib29sIHRyeVJlbW92ZUV2ZW50TGlzdGVuZXIoTm9kZSogdGFyZ2V0Tm9kZSwgY29u
c3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lciwgY29uc3Qg
RXZlbnRUYXJnZXQ6Okxpc3RlbmVyT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAoIXRhcmdl
dE5vZGUtPkV2ZW50VGFyZ2V0OjpyZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVu
ZXIsIG9wdGlvbnMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMTY4LDcgKzIxNjgsNyBA
QCBzdGF0aWMgaW5saW5lIGJvb2wgdHJ5UmVtb3ZlRXZlbnRMaXN0ZW5lcihOb2RlKiB0YXJnZXRO
b2RlLCBjb25zdCBBdG9taWNTdHJpbmcmCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgTm9k
ZTo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZl
bnRMaXN0ZW5lciYgbGlzdGVuZXIsIGNvbnN0IExpc3RlbmVyT3B0aW9ucyYgb3B0aW9ucykKK2Jv
b2wgTm9kZTo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUs
IEV2ZW50TGlzdGVuZXImIGxpc3RlbmVyLCBjb25zdCBMaXN0ZW5lck9wdGlvbnMmIG9wdGlvbnMp
CiB7CiAgICAgcmV0dXJuIHRyeVJlbW92ZUV2ZW50TGlzdGVuZXIodGhpcywgZXZlbnRUeXBlLCBs
aXN0ZW5lciwgb3B0aW9ucyk7CiB9CkBAIC0yMjcxLDcgKzIyNzEsNyBAQCBIYXNoTWFwPFJlZjxN
dXRhdGlvbk9ic2VydmVyPiwgTXV0YXRpb25SZWNvcmREZWxpdmVyeU9wdGlvbnM+IE5vZGU6OnJl
Z2lzdGVyZWRNdQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgTm9kZTo6cmVnaXN0ZXJN
dXRhdGlvbk9ic2VydmVyKE11dGF0aW9uT2JzZXJ2ZXImIG9ic2VydmVyLCBNdXRhdGlvbk9ic2Vy
dmVyT3B0aW9ucyBvcHRpb25zLCBjb25zdCBIYXNoU2V0PEF0b21pY1N0cmluZz4mIGF0dHJpYnV0
ZUZpbHRlcikKK3ZvaWQgTm9kZTo6cmVnaXN0ZXJNdXRhdGlvbk9ic2VydmVyKE11dGF0aW9uT2Jz
ZXJ2ZXImIG9ic2VydmVyLCBNdXRhdGlvbk9ic2VydmVyT3B0aW9ucyBvcHRpb25zLCBjb25zdCBI
YXNoU2V0PEF0b21TdHJpbmc+JiBhdHRyaWJ1dGVGaWx0ZXIpCiB7CiAgICAgTXV0YXRpb25PYnNl
cnZlclJlZ2lzdHJhdGlvbiogcmVnaXN0cmF0aW9uID0gbnVsbHB0cjsKICAgICBhdXRvJiByZWdp
c3RyeSA9IGVuc3VyZVJhcmVEYXRhKCkuZW5zdXJlTXV0YXRpb25PYnNlcnZlckRhdGEoKS5yZWdp
c3RyeTsKQEAgLTIzNjcsNyArMjM2Nyw3IEBAIHZvaWQgTm9kZTo6ZGlzcGF0Y2hTdWJ0cmVlTW9k
aWZpZWRFdmVudCgpCiAKICAgICBpZiAoIWRvY3VtZW50KCkuaGFzTGlzdGVuZXJUeXBlKERvY3Vt
ZW50OjpET01TVUJUUkVFTU9ESUZJRURfTElTVEVORVIpKQogICAgICAgICByZXR1cm47Ci0gICAg
Y29uc3QgQXRvbWljU3RyaW5nJiBzdWJ0cmVlTW9kaWZpZWRFdmVudE5hbWUgPSBldmVudE5hbWVz
KCkuRE9NU3VidHJlZU1vZGlmaWVkRXZlbnQ7CisgICAgY29uc3QgQXRvbVN0cmluZyYgc3VidHJl
ZU1vZGlmaWVkRXZlbnROYW1lID0gZXZlbnROYW1lcygpLkRPTVN1YnRyZWVNb2RpZmllZEV2ZW50
OwogICAgIGlmICghcGFyZW50Tm9kZSgpICYmICFoYXNFdmVudExpc3RlbmVycyhzdWJ0cmVlTW9k
aWZpZWRFdmVudE5hbWUpKQogICAgICAgICByZXR1cm47CiAKQEAgLTI0MDUsNyArMjQwNSw3IEBA
IHZvaWQgTm9kZTo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCYgZXZlbnQpCiB7CiAgICAgaWYg
KGV2ZW50LnRhcmdldCgpICE9IHRoaXMpCiAgICAgICAgIHJldHVybjsKLSAgICBjb25zdCBBdG9t
aWNTdHJpbmcmIGV2ZW50VHlwZSA9IGV2ZW50LnR5cGUoKTsKKyAgICBjb25zdCBBdG9tU3RyaW5n
JiBldmVudFR5cGUgPSBldmVudC50eXBlKCk7CiAgICAgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5h
bWVzKCkua2V5ZG93bkV2ZW50IHx8IGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkua2V5cHJlc3NF
dmVudCkgewogICAgICAgICBpZiAoaXM8S2V5Ym9hcmRFdmVudD4oZXZlbnQpKSB7CiAgICAgICAg
ICAgICBpZiAoRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS5mcmFtZSgpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKaW5k
ZXggZmNjZGQ3ZGY2ZmNlNzc0MDFhMWQ0MzBiZDI0YzIzMmNhNmM5ODdhNC4uNWY4NTIyM2JhNmMx
MWVjOTIyN2U1YTJiYTBhZDhhNDkwZTg0NTg4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBAIC0xNjUsMTcgKzE2
NSwxNyBAQCBwdWJsaWM6CiAgICAgUmVmPE5vZGU+IGNsb25lTm9kZShib29sIGRlZXApIHsgcmV0
dXJuIGNsb25lTm9kZUludGVybmFsKGRvY3VtZW50KCksIGRlZXAgPyBDbG9uaW5nT3BlcmF0aW9u
OjpFdmVyeXRoaW5nIDogQ2xvbmluZ09wZXJhdGlvbjo6T25seVNlbGYpOyB9CiAgICAgV0VCQ09S
RV9FWFBPUlQgRXhjZXB0aW9uT3I8UmVmPE5vZGU+PiBjbG9uZU5vZGVGb3JCaW5kaW5ncyhib29s
IGRlZXApOwogCi0gICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSgpIGNv
bnN0OwotICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkkoKSBjb25z
dDsKLSAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4KCkgY29uc3Q7Ci0gICAg
dmlydHVhbCBFeGNlcHRpb25Pcjx2b2lkPiBzZXRQcmVmaXgoY29uc3QgQXRvbWljU3RyaW5nJik7
CisgICAgdmlydHVhbCBjb25zdCBBdG9tU3RyaW5nJiBsb2NhbE5hbWUoKSBjb25zdDsKKyAgICB2
aXJ0dWFsIGNvbnN0IEF0b21TdHJpbmcmIG5hbWVzcGFjZVVSSSgpIGNvbnN0OworICAgIHZpcnR1
YWwgY29uc3QgQXRvbVN0cmluZyYgcHJlZml4KCkgY29uc3Q7CisgICAgdmlydHVhbCBFeGNlcHRp
b25Pcjx2b2lkPiBzZXRQcmVmaXgoY29uc3QgQXRvbVN0cmluZyYpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgbm9ybWFsaXplKCk7CiAKICAgICBib29sIGlzU2FtZU5vZGUoTm9kZSogb3RoZXIp
IGNvbnN0IHsgcmV0dXJuIHRoaXMgPT0gb3RoZXI7IH0KICAgICBXRUJDT1JFX0VYUE9SVCBib29s
IGlzRXF1YWxOb2RlKE5vZGUqKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzRGVm
YXVsdE5hbWVzcGFjZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSkgY29uc3Q7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgQXRvbWljU3RyaW5nJiBsb29rdXBQcmVmaXgoY29uc3Qg
QXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkkpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIGNv
bnN0IEF0b21pY1N0cmluZyYgbG9va3VwTmFtZXNwYWNlVVJJKGNvbnN0IEF0b21pY1N0cmluZyYg
cHJlZml4KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzRGVmYXVsdE5hbWVzcGFj
ZShjb25zdCBBdG9tU3RyaW5nJiBuYW1lc3BhY2VVUkkpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQ
T1JUIGNvbnN0IEF0b21TdHJpbmcmIGxvb2t1cFByZWZpeChjb25zdCBBdG9tU3RyaW5nJiBuYW1l
c3BhY2VVUkkpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IEF0b21TdHJpbmcmIGxv
b2t1cE5hbWVzcGFjZVVSSShjb25zdCBBdG9tU3RyaW5nJiBwcmVmaXgpIGNvbnN0OwogCiAgICAg
V0VCQ09SRV9FWFBPUlQgU3RyaW5nIHRleHRDb250ZW50KGJvb2wgY29udmVydEJSc1RvTmV3bGlu
ZXMgPSBmYWxzZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8dm9pZD4g
c2V0VGV4dENvbnRlbnQoY29uc3QgU3RyaW5nJik7CkBAIC0zODQsNyArMzg0LDcgQEAgcHVibGlj
OgogICAgIHVuc2lnbmVkIGNvdW50Q2hpbGROb2RlcygpIGNvbnN0OwogICAgIE5vZGUqIHRyYXZl
cnNlVG9DaGlsZEF0KHVuc2lnbmVkKSBjb25zdDsKIAotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGNo
ZWNrU2V0UHJlZml4KGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4KTsKKyAgICBFeGNlcHRpb25P
cjx2b2lkPiBjaGVja1NldFByZWZpeChjb25zdCBBdG9tU3RyaW5nJiBwcmVmaXgpOwogCiAgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBpc0Rlc2NlbmRhbnRPZihjb25zdCBOb2RlJikgY29uc3Q7CiAg
ICAgYm9vbCBpc0Rlc2NlbmRhbnRPZihjb25zdCBOb2RlKiBvdGhlcikgY29uc3QgeyByZXR1cm4g
b3RoZXIgJiYgaXNEZXNjZW5kYW50T2YoKm90aGVyKTsgfQpAQCAtNDcyLDggKzQ3Miw4IEBAIHB1
YmxpYzoKICAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNv
bnN0IG92ZXJyaWRlOwogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSBjb25zdCBmaW5hbDsgLy8gSW1wbGVtZW50ZWQgaW4gRG9jdW1lbnQuaAogCi0g
ICAgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBS
ZWY8RXZlbnRMaXN0ZW5lcj4mJiwgY29uc3QgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMmKSBvdmVy
cmlkZTsKLSAgICBib29sIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGUsIEV2ZW50TGlzdGVuZXImLCBjb25zdCBMaXN0ZW5lck9wdGlvbnMmKSBvdmVycmlk
ZTsKKyAgICBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBl
LCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiwgY29uc3QgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMmKSBv
dmVycmlkZTsKKyAgICBib29sIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbVN0cmluZyYg
ZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiwgY29uc3QgTGlzdGVuZXJPcHRpb25zJikgb3ZlcnJp
ZGU7CiAKICAgICB1c2luZyBFdmVudFRhcmdldDo6ZGlzcGF0Y2hFdmVudDsKICAgICB2b2lkIGRp
c3BhdGNoRXZlbnQoRXZlbnQmKSBvdmVycmlkZTsKQEAgLTUxMiw3ICs1MTIsNyBAQCBwdWJsaWM6
CiAgICAgRXZlbnRUYXJnZXREYXRhJiBlbnN1cmVFdmVudFRhcmdldERhdGEoKSBmaW5hbDsKIAog
ICAgIEhhc2hNYXA8UmVmPE11dGF0aW9uT2JzZXJ2ZXI+LCBNdXRhdGlvblJlY29yZERlbGl2ZXJ5
T3B0aW9ucz4gcmVnaXN0ZXJlZE11dGF0aW9uT2JzZXJ2ZXJzKE11dGF0aW9uT2JzZXJ2ZXI6Ok11
dGF0aW9uVHlwZSwgY29uc3QgUXVhbGlmaWVkTmFtZSogYXR0cmlidXRlTmFtZSk7Ci0gICAgdm9p
ZCByZWdpc3Rlck11dGF0aW9uT2JzZXJ2ZXIoTXV0YXRpb25PYnNlcnZlciYsIE11dGF0aW9uT2Jz
ZXJ2ZXJPcHRpb25zLCBjb25zdCBIYXNoU2V0PEF0b21pY1N0cmluZz4mIGF0dHJpYnV0ZUZpbHRl
cik7CisgICAgdm9pZCByZWdpc3Rlck11dGF0aW9uT2JzZXJ2ZXIoTXV0YXRpb25PYnNlcnZlciYs
IE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zLCBjb25zdCBIYXNoU2V0PEF0b21TdHJpbmc+JiBhdHRy
aWJ1dGVGaWx0ZXIpOwogICAgIHZvaWQgdW5yZWdpc3Rlck11dGF0aW9uT2JzZXJ2ZXIoTXV0YXRp
b25PYnNlcnZlclJlZ2lzdHJhdGlvbiYpOwogICAgIHZvaWQgcmVnaXN0ZXJUcmFuc2llbnRNdXRh
dGlvbk9ic2VydmVyKE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24mKTsKICAgICB2b2lkIHVu
cmVnaXN0ZXJUcmFuc2llbnRNdXRhdGlvbk9ic2VydmVyKE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3Ry
YXRpb24mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAppbmRleCA0Zjg1MDJiZjhmNWYyZTQ3
ODdkNDUxMTYzNTEwN2I0OWNkNTk3ZWU1Li42ODIyZjY2Y2FlMzcxNzAyNzk5NjU5NDA1NjgzZGIw
ODE5OTAxZjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCkBAIC0yOSw3ICsyOSw3IEBA
CiAjaW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgogI2luY2x1ZGUgIlRhZ0NvbGxlY3Rpb24uaCIK
ICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmlu
Zy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC05NSwyMCArOTUsMjAgQEAgcHVibGljOgogICAgIH0KIAogICAgIHN0cnVjdCBO
b2RlTGlzdENhY2hlTWFwRW50cnlIYXNoIHsKLSAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2go
Y29uc3Qgc3RkOjpwYWlyPHVuc2lnbmVkIGNoYXIsIEF0b21pY1N0cmluZz4mIGVudHJ5KQorICAg
ICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBzdGQ6OnBhaXI8dW5zaWduZWQgY2hhciwg
QXRvbVN0cmluZz4mIGVudHJ5KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gRGVmYXVs
dEhhc2g8QXRvbWljU3RyaW5nPjo6SGFzaDo6aGFzaChlbnRyeS5zZWNvbmQpICsgZW50cnkuZmly
c3Q7CisgICAgICAgICAgICByZXR1cm4gRGVmYXVsdEhhc2g8QXRvbVN0cmluZz46Okhhc2g6Omhh
c2goZW50cnkuc2Vjb25kKSArIGVudHJ5LmZpcnN0OwogICAgICAgICB9Ci0gICAgICAgIHN0YXRp
YyBib29sIGVxdWFsKGNvbnN0IHN0ZDo6cGFpcjx1bnNpZ25lZCBjaGFyLCBBdG9taWNTdHJpbmc+
JiBhLCBjb25zdCBzdGQ6OnBhaXI8dW5zaWduZWQgY2hhciwgQXRvbWljU3RyaW5nPiYgYikgeyBy
ZXR1cm4gYS5maXJzdCA9PSBiLmZpcnN0ICYmIERlZmF1bHRIYXNoPEF0b21pY1N0cmluZz46Okhh
c2g6OmVxdWFsKGEuc2Vjb25kLCBiLnNlY29uZCk7IH0KLSAgICAgICAgc3RhdGljIGNvbnN0IGJv
b2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBEZWZhdWx0SGFzaDxBdG9taWNTdHJp
bmc+OjpIYXNoOjpzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZDsKKyAgICAgICAgc3RhdGlj
IGJvb2wgZXF1YWwoY29uc3Qgc3RkOjpwYWlyPHVuc2lnbmVkIGNoYXIsIEF0b21TdHJpbmc+JiBh
LCBjb25zdCBzdGQ6OnBhaXI8dW5zaWduZWQgY2hhciwgQXRvbVN0cmluZz4mIGIpIHsgcmV0dXJu
IGEuZmlyc3QgPT0gYi5maXJzdCAmJiBEZWZhdWx0SGFzaDxBdG9tU3RyaW5nPjo6SGFzaDo6ZXF1
YWwoYS5zZWNvbmQsIGIuc2Vjb25kKTsgfQorICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZl
VG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IERlZmF1bHRIYXNoPEF0b21TdHJpbmc+OjpIYXNo
OjpzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZDsKICAgICB9OwogCi0gICAgdHlwZWRlZiBI
YXNoTWFwPHN0ZDo6cGFpcjx1bnNpZ25lZCBjaGFyLCBBdG9taWNTdHJpbmc+LCBMaXZlTm9kZUxp
c3QqLCBOb2RlTGlzdENhY2hlTWFwRW50cnlIYXNoPiBOb2RlTGlzdEF0b21pY05hbWVDYWNoZU1h
cDsKLSAgICB0eXBlZGVmIEhhc2hNYXA8c3RkOjpwYWlyPHVuc2lnbmVkIGNoYXIsIEF0b21pY1N0
cmluZz4sIEhUTUxDb2xsZWN0aW9uKiwgTm9kZUxpc3RDYWNoZU1hcEVudHJ5SGFzaD4gQ29sbGVj
dGlvbkNhY2hlTWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxzdGQ6OnBhaXI8dW5zaWduZWQgY2hh
ciwgQXRvbVN0cmluZz4sIExpdmVOb2RlTGlzdCosIE5vZGVMaXN0Q2FjaGVNYXBFbnRyeUhhc2g+
IE5vZGVMaXN0QXRvbWljTmFtZUNhY2hlTWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxzdGQ6OnBh
aXI8dW5zaWduZWQgY2hhciwgQXRvbVN0cmluZz4sIEhUTUxDb2xsZWN0aW9uKiwgTm9kZUxpc3RD
YWNoZU1hcEVudHJ5SGFzaD4gQ29sbGVjdGlvbkNhY2hlTWFwOwogICAgIHR5cGVkZWYgSGFzaE1h
cDxRdWFsaWZpZWROYW1lLCBUYWdDb2xsZWN0aW9uTlMqPiBUYWdDb2xsZWN0aW9uTlNDYWNoZTsK
IAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIENvbnRhaW5lclR5cGU+Ci0gICAg
QUxXQVlTX0lOTElORSBSZWY8VD4gYWRkQ2FjaGVXaXRoQXRvbWljTmFtZShDb250YWluZXJUeXBl
JiBjb250YWluZXIsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKKyAgICBBTFdBWVNfSU5MSU5F
IFJlZjxUPiBhZGRDYWNoZVdpdGhBdG9taWNOYW1lKENvbnRhaW5lclR5cGUmIGNvbnRhaW5lciwg
Y29uc3QgQXRvbVN0cmluZyYgbmFtZSkKICAgICB7CiAgICAgICAgIE5vZGVMaXN0QXRvbWljTmFt
ZUNhY2hlTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9hdG9taWNOYW1lQ2FjaGVzLmZhc3RBZGQo
bmFtZWROb2RlTGlzdEtleTxUPihuYW1lKSwgbnVsbHB0cik7CiAgICAgICAgIGlmICghcmVzdWx0
LmlzTmV3RW50cnkpCkBAIC0xMTksNyArMTE5LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
bGlzdDsKICAgICB9CiAKLSAgICBBTFdBWVNfSU5MSU5FIFJlZjxUYWdDb2xsZWN0aW9uTlM+IGFk
ZENhY2hlZFRhZ0NvbGxlY3Rpb25OUyhDb250YWluZXJOb2RlJiBub2RlLCBjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUpCisgICAg
QUxXQVlTX0lOTElORSBSZWY8VGFnQ29sbGVjdGlvbk5TPiBhZGRDYWNoZWRUYWdDb2xsZWN0aW9u
TlMoQ29udGFpbmVyTm9kZSYgbm9kZSwgY29uc3QgQXRvbVN0cmluZyYgbmFtZXNwYWNlVVJJLCBj
b25zdCBBdG9tU3RyaW5nJiBsb2NhbE5hbWUpCiAgICAgewogICAgICAgICBRdWFsaWZpZWROYW1l
IG5hbWUobnVsbEF0b20oKSwgbG9jYWxOYW1lLCBuYW1lc3BhY2VVUkkpOwogICAgICAgICBUYWdD
b2xsZWN0aW9uTlNDYWNoZTo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fdGFnQ29sbGVjdGlvbk5TQ2Fj
aGUuZmFzdEFkZChuYW1lLCBudWxscHRyKTsKQEAgLTEzMiw3ICsxMzIsNyBAQCBwdWJsaWM6CiAg
ICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQ29udGFpbmVyVHlwZT4K
LSAgICBBTFdBWVNfSU5MSU5FIFJlZjxUPiBhZGRDYWNoZWRDb2xsZWN0aW9uKENvbnRhaW5lclR5
cGUmIGNvbnRhaW5lciwgQ29sbGVjdGlvblR5cGUgY29sbGVjdGlvblR5cGUsIGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZSkKKyAgICBBTFdBWVNfSU5MSU5FIFJlZjxUPiBhZGRDYWNoZWRDb2xsZWN0
aW9uKENvbnRhaW5lclR5cGUmIGNvbnRhaW5lciwgQ29sbGVjdGlvblR5cGUgY29sbGVjdGlvblR5
cGUsIGNvbnN0IEF0b21TdHJpbmcmIG5hbWUpCiAgICAgewogICAgICAgICBDb2xsZWN0aW9uQ2Fj
aGVNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBtX2NhY2hlZENvbGxlY3Rpb25zLmZhc3RBZGQobmFt
ZWRDb2xsZWN0aW9uS2V5KGNvbGxlY3Rpb25UeXBlLCBuYW1lKSwgbnVsbHB0cik7CiAgICAgICAg
IGlmICghcmVzdWx0LmlzTmV3RW50cnkpCkBAIC0xNjIsNyArMTYyLDcgQEAgcHVibGljOgogICAg
IH0KIAogICAgIHRlbXBsYXRlIDxjbGFzcyBOb2RlTGlzdFR5cGU+Ci0gICAgdm9pZCByZW1vdmVD
YWNoZVdpdGhBdG9taWNOYW1lKE5vZGVMaXN0VHlwZSogbGlzdCwgY29uc3QgQXRvbWljU3RyaW5n
JiBuYW1lID0gc3RhckF0b20oKSkKKyAgICB2b2lkIHJlbW92ZUNhY2hlV2l0aEF0b21pY05hbWUo
Tm9kZUxpc3RUeXBlKiBsaXN0LCBjb25zdCBBdG9tU3RyaW5nJiBuYW1lID0gc3RhckF0b20oKSkK
ICAgICB7CiAgICAgICAgIEFTU0VSVChsaXN0ID09IG1fYXRvbWljTmFtZUNhY2hlcy5nZXQobmFt
ZWROb2RlTGlzdEtleTxOb2RlTGlzdFR5cGU+KG5hbWUpKSk7CiAgICAgICAgIGlmIChkZWxldGVU
aGlzQW5kVXBkYXRlTm9kZVJhcmVEYXRhSWZBYm91dFRvUmVtb3ZlTGFzdExpc3QobGlzdC0+b3du
ZXJOb2RlKCkpKQpAQCAtMTcwLDcgKzE3MCw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9hdG9taWNO
YW1lQ2FjaGVzLnJlbW92ZShuYW1lZE5vZGVMaXN0S2V5PE5vZGVMaXN0VHlwZT4obmFtZSkpOwog
ICAgIH0KIAotICAgIHZvaWQgcmVtb3ZlQ2FjaGVkVGFnQ29sbGVjdGlvbk5TKEhUTUxDb2xsZWN0
aW9uJiBjb2xsZWN0aW9uLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3Qg
QXRvbWljU3RyaW5nJiBsb2NhbE5hbWUpCisgICAgdm9pZCByZW1vdmVDYWNoZWRUYWdDb2xsZWN0
aW9uTlMoSFRNTENvbGxlY3Rpb24mIGNvbGxlY3Rpb24sIGNvbnN0IEF0b21TdHJpbmcmIG5hbWVz
cGFjZVVSSSwgY29uc3QgQXRvbVN0cmluZyYgbG9jYWxOYW1lKQogICAgIHsKICAgICAgICAgUXVh
bGlmaWVkTmFtZSBuYW1lKG51bGxBdG9tKCksIGxvY2FsTmFtZSwgbmFtZXNwYWNlVVJJKTsKICAg
ICAgICAgQVNTRVJUKCZjb2xsZWN0aW9uID09IG1fdGFnQ29sbGVjdGlvbk5TQ2FjaGUuZ2V0KG5h
bWUpKTsKQEAgLTE3OSw3ICsxNzksNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fdGFnQ29sbGVjdGlv
bk5TQ2FjaGUucmVtb3ZlKG5hbWUpOwogICAgIH0KIAotICAgIHZvaWQgcmVtb3ZlQ2FjaGVkQ29s
bGVjdGlvbihIVE1MQ29sbGVjdGlvbiogY29sbGVjdGlvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lID0gc3RhckF0b20oKSkKKyAgICB2b2lkIHJlbW92ZUNhY2hlZENvbGxlY3Rpb24oSFRNTENv
bGxlY3Rpb24qIGNvbGxlY3Rpb24sIGNvbnN0IEF0b21TdHJpbmcmIG5hbWUgPSBzdGFyQXRvbSgp
KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbGxlY3Rpb24gPT0gbV9jYWNoZWRDb2xsZWN0aW9u
cy5nZXQobmFtZWRDb2xsZWN0aW9uS2V5KGNvbGxlY3Rpb24tPnR5cGUoKSwgbmFtZSkpKTsKICAg
ICAgICAgaWYgKGRlbGV0ZVRoaXNBbmRVcGRhdGVOb2RlUmFyZURhdGFJZkFib3V0VG9SZW1vdmVM
YXN0TGlzdChjb2xsZWN0aW9uLT5vd25lck5vZGUoKSkpCkBAIC0yMTUsMTUgKzIxNSwxNSBAQCBw
dWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCBjaGFyLCBB
dG9taWNTdHJpbmc+IG5hbWVkQ29sbGVjdGlvbktleShDb2xsZWN0aW9uVHlwZSB0eXBlLCBjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWUpCisgICAgc3RkOjpwYWlyPHVuc2lnbmVkIGNoYXIsIEF0b21T
dHJpbmc+IG5hbWVkQ29sbGVjdGlvbktleShDb2xsZWN0aW9uVHlwZSB0eXBlLCBjb25zdCBBdG9t
U3RyaW5nJiBuYW1lKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6cGFpcjx1bnNpZ25lZCBj
aGFyLCBBdG9taWNTdHJpbmc+KHR5cGUsIG5hbWUpOworICAgICAgICByZXR1cm4gc3RkOjpwYWly
PHVuc2lnbmVkIGNoYXIsIEF0b21TdHJpbmc+KHR5cGUsIG5hbWUpOwogICAgIH0KIAogICAgIHRl
bXBsYXRlIDxjbGFzcyBOb2RlTGlzdFR5cGU+Ci0gICAgc3RkOjpwYWlyPHVuc2lnbmVkIGNoYXIs
IEF0b21pY1N0cmluZz4gbmFtZWROb2RlTGlzdEtleShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUp
CisgICAgc3RkOjpwYWlyPHVuc2lnbmVkIGNoYXIsIEF0b21TdHJpbmc+IG5hbWVkTm9kZUxpc3RL
ZXkoY29uc3QgQXRvbVN0cmluZyYgbmFtZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6OnBh
aXI8dW5zaWduZWQgY2hhciwgQXRvbWljU3RyaW5nPihOb2RlTGlzdFR5cGVJZGVudGlmaWVyPE5v
ZGVMaXN0VHlwZT46OnZhbHVlKCksIG5hbWUpOworICAgICAgICByZXR1cm4gc3RkOjpwYWlyPHVu
c2lnbmVkIGNoYXIsIEF0b21TdHJpbmc+KE5vZGVMaXN0VHlwZUlkZW50aWZpZXI8Tm9kZUxpc3RU
eXBlPjo6dmFsdWUoKSwgbmFtZSk7CiAgICAgfQogCiAgICAgYm9vbCBkZWxldGVUaGlzQW5kVXBk
YXRlTm9kZVJhcmVEYXRhSWZBYm91dFRvUmVtb3ZlTGFzdExpc3QoTm9kZSYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL05vbkVsZW1lbnRQYXJlbnROb2RlLmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob25FbGVtZW50UGFyZW50Tm9kZS5pZGwKaW5kZXggOTIyMzg3MDNmMmFkNzNm
Zjc0ODhhNDU1MzY1N2EzYjcwMmUxOTBiYy4uNzMyOWQzMWE5NzMxYTYwN2EwMjgwODJiYWQwNTRj
ZGFjODM1Y2ZkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vbkVsZW1lbnRQYXJl
bnROb2RlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9uRWxlbWVudFBhcmVudE5vZGUu
aWRsCkBAIC0yOCw1ICsyOCw1IEBACiBbCiAgICAgTm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVy
ZmFjZSBOb25FbGVtZW50UGFyZW50Tm9kZSB7Ci0gICAgW0RPTUpJVD1SZWFkRE9NXSBFbGVtZW50
PyBnZXRFbGVtZW50QnlJZChbUmVxdWlyZXNFeGlzdGluZ0F0b21pY1N0cmluZ10gRE9NU3RyaW5n
IGVsZW1lbnRJZCk7CisgICAgW0RPTUpJVD1SZWFkRE9NXSBFbGVtZW50PyBnZXRFbGVtZW50QnlJ
ZChbUmVxdWlyZXNFeGlzdGluZ0F0b21TdHJpbmddIERPTVN0cmluZyBlbGVtZW50SWQpOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9PdmVyZmxvd0V2ZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9PdmVyZmxvd0V2ZW50LmNwcAppbmRleCA4YzUzYWQ0YWNjNjA5MGY2MjIx
ZDk4ODQyZTliYjc5ZGQzNzE1ZDU3Li40OGY5NTZkYjFhNTYzM2ZlNGM5YzUzYzRiZjIyM2NhMzli
NDZmNTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vT3ZlcmZsb3dFdmVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL092ZXJmbG93RXZlbnQuY3BwCkBAIC01Miw3ICs1Miw3
IEBAIE92ZXJmbG93RXZlbnQ6Ok92ZXJmbG93RXZlbnQoYm9vbCBob3Jpem9udGFsT3ZlcmZsb3dD
aGFuZ2VkLCBib29sIGhvcml6b250YWxPdmVyCiAgICAgICAgIG1fb3JpZW50ID0gVkVSVElDQUw7
CiB9CiAKLU92ZXJmbG93RXZlbnQ6Ok92ZXJmbG93RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlLCBjb25zdCBJbml0JiBpbml0aWFsaXplciwgSXNUcnVzdGVkIGlzVHJ1c3RlZCkKK092ZXJm
bG93RXZlbnQ6Ok92ZXJmbG93RXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3QgSW5p
dCYgaW5pdGlhbGl6ZXIsIElzVHJ1c3RlZCBpc1RydXN0ZWQpCiAgICAgOiBFdmVudCh0eXBlLCBp
bml0aWFsaXplciwgaXNUcnVzdGVkKQogICAgICwgbV9vcmllbnQoaW5pdGlhbGl6ZXIub3JpZW50
KQogICAgICwgbV9ob3Jpem9udGFsT3ZlcmZsb3coaW5pdGlhbGl6ZXIuaG9yaXpvbnRhbE92ZXJm
bG93KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL092ZXJmbG93RXZlbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9PdmVyZmxvd0V2ZW50LmgKaW5kZXggZjJkYTk5NTc4ZTNiYzQ2YjVm
ZWJhMjc0NzgxNjVmZmFmYmQ0NWUzZS4uNjJjOGY5OGUwNzdlMTExZTUxNDA4ODQ1NzljOGM5ZmFm
OTMxZmE0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL092ZXJmbG93RXZlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vT3ZlcmZsb3dFdmVudC5oCkBAIC01Myw3ICs1Myw3IEBA
IHB1YmxpYzoKICAgICAgICAgYm9vbCB2ZXJ0aWNhbE92ZXJmbG93IHsgZmFsc2UgfTsKICAgICB9
OwogCi0gICAgc3RhdGljIFJlZjxPdmVyZmxvd0V2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3Ry
aW5nJiB0eXBlLCBjb25zdCBJbml0JiBpbml0aWFsaXplciwgSXNUcnVzdGVkIGlzVHJ1c3RlZCA9
IElzVHJ1c3RlZDo6Tm8pCisgICAgc3RhdGljIFJlZjxPdmVyZmxvd0V2ZW50PiBjcmVhdGUoY29u
c3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3QgSW5pdCYgaW5pdGlhbGl6ZXIsIElzVHJ1c3RlZCBp
c1RydXN0ZWQgPSBJc1RydXN0ZWQ6Ok5vKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgT3ZlcmZsb3dFdmVudCh0eXBlLCBpbml0aWFsaXplciwgaXNUcnVzdGVkKSk7CiAgICAg
fQpAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIE92ZXJmbG93RXZlbnQo
KTsKICAgICBPdmVyZmxvd0V2ZW50KGJvb2wgaG9yaXpvbnRhbE92ZXJmbG93Q2hhbmdlZCwgYm9v
bCBob3Jpem9udGFsT3ZlcmZsb3csIGJvb2wgdmVydGljYWxPdmVyZmxvd0NoYW5nZWQsIGJvb2wg
dmVydGljYWxPdmVyZmxvdyk7Ci0gICAgT3ZlcmZsb3dFdmVudChjb25zdCBBdG9taWNTdHJpbmcm
LCBjb25zdCBJbml0JiwgSXNUcnVzdGVkKTsKKyAgICBPdmVyZmxvd0V2ZW50KGNvbnN0IEF0b21T
dHJpbmcmLCBjb25zdCBJbml0JiwgSXNUcnVzdGVkKTsKIAogICAgIHVuc2lnbmVkIHNob3J0IG1f
b3JpZW50OwogICAgIGJvb2wgbV9ob3Jpem9udGFsT3ZlcmZsb3c7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vUGFnZVRyYW5zaXRpb25FdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vUGFnZVRyYW5zaXRpb25FdmVudC5jcHAKaW5kZXggMDgwODlkNGVmODkwZDFiYWE5OGE4NTg5
OGI0MWRmYTVlZTg4M2MwMy4uMDYwMmMxZjRjYjU5ZjQ0MDU5N2I4NmQ0NzlkM2JiMzg1NjYwNzE2
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1BhZ2VUcmFuc2l0aW9uRXZlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9QYWdlVHJhbnNpdGlvbkV2ZW50LmNwcApAQCAtMjgs
MTMgKzI4LDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFnZVRyYW5zaXRpb25FdmVu
dDo6UGFnZVRyYW5zaXRpb25FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgcGVy
c2lzdGVkKQorUGFnZVRyYW5zaXRpb25FdmVudDo6UGFnZVRyYW5zaXRpb25FdmVudChjb25zdCBB
dG9tU3RyaW5nJiB0eXBlLCBib29sIHBlcnNpc3RlZCkKICAgICA6IEV2ZW50KHR5cGUsIENhbkJ1
YmJsZTo6WWVzLCBJc0NhbmNlbGFibGU6OlllcykKICAgICAsIG1fcGVyc2lzdGVkKHBlcnNpc3Rl
ZCkKIHsKIH0KIAotUGFnZVRyYW5zaXRpb25FdmVudDo6UGFnZVRyYW5zaXRpb25FdmVudChjb25z
dCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IEluaXQmIGluaXRpYWxpemVyLCBJc1RydXN0ZWQg
aXNUcnVzdGVkKQorUGFnZVRyYW5zaXRpb25FdmVudDo6UGFnZVRyYW5zaXRpb25FdmVudChjb25z
dCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiBpbml0aWFsaXplciwgSXNUcnVzdGVkIGlz
VHJ1c3RlZCkKICAgICA6IEV2ZW50KHR5cGUsIGluaXRpYWxpemVyLCBpc1RydXN0ZWQpCiAgICAg
LCBtX3BlcnNpc3RlZChpbml0aWFsaXplci5wZXJzaXN0ZWQpCiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vUGFnZVRyYW5zaXRpb25FdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L1BhZ2VUcmFuc2l0aW9uRXZlbnQuaAppbmRleCA4NDQyZmE2MTNlZjA5NThmZTM5ZGEwMmEzNDQ3
NjA3NTVjMDg2MTY4Li4zMzMwODNlMjZlNGMyZWQ0OTI5ZGM2MTZhZDA2MzA4ODU3MWQzZjhkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUGFnZVRyYW5zaXRpb25FdmVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9QYWdlVHJhbnNpdGlvbkV2ZW50LmgKQEAgLTMxLDcgKzMxLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBQYWdlVHJhbnNpdGlvbkV2ZW50IGZpbmFs
IDogcHVibGljIEV2ZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFBhZ2VUcmFuc2l0aW9u
RXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgcGVyc2lzdGVkKQor
ICAgIHN0YXRpYyBSZWY8UGFnZVRyYW5zaXRpb25FdmVudD4gY3JlYXRlKGNvbnN0IEF0b21TdHJp
bmcmIHR5cGUsIGJvb2wgcGVyc2lzdGVkKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgUGFnZVRyYW5zaXRpb25FdmVudCh0eXBlLCBwZXJzaXN0ZWQpKTsKICAgICB9CkBAIC00
MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBwZXJzaXN0ZWQgeyBmYWxzZSB9Owog
ICAgIH07CiAKLSAgICBzdGF0aWMgUmVmPFBhZ2VUcmFuc2l0aW9uRXZlbnQ+IGNyZWF0ZShjb25z
dCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IEluaXQmIGluaXRpYWxpemVyLCBJc1RydXN0ZWQg
aXNUcnVzdGVkID0gSXNUcnVzdGVkOjpObykKKyAgICBzdGF0aWMgUmVmPFBhZ2VUcmFuc2l0aW9u
RXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiBpbml0aWFs
aXplciwgSXNUcnVzdGVkIGlzVHJ1c3RlZCA9IElzVHJ1c3RlZDo6Tm8pCiAgICAgewogICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQYWdlVHJhbnNpdGlvbkV2ZW50KHR5cGUsIGluaXRpYWxp
emVyLCBpc1RydXN0ZWQpKTsKICAgICB9CkBAIC01Miw4ICs1Miw4IEBAIHB1YmxpYzoKICAgICBi
b29sIHBlcnNpc3RlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGVyc2lzdGVkOyB9CiAKIHByaXZhdGU6
Ci0gICAgUGFnZVRyYW5zaXRpb25FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wg
cGVyc2lzdGVkKTsKLSAgICBQYWdlVHJhbnNpdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYs
IGNvbnN0IEluaXQmLCBJc1RydXN0ZWQpOworICAgIFBhZ2VUcmFuc2l0aW9uRXZlbnQoY29uc3Qg
QXRvbVN0cmluZyYgdHlwZSwgYm9vbCBwZXJzaXN0ZWQpOworICAgIFBhZ2VUcmFuc2l0aW9uRXZl
bnQoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IEluaXQmLCBJc1RydXN0ZWQpOwogCiAgICAgYm9v
bCBtX3BlcnNpc3RlZDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9pbnRl
ckV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb2ludGVyRXZlbnQuY3BwCmluZGV4IDAx
MTUwOTgzYmM1NTkyZWJjMDBiNmVmZjIwNDlkMmQxMjg3NjNlZDYuLjNkMjE4YWYwMWIzOWZkZTZl
NjlhOTg0NjZhZWQ5OTcyMzczYmQ5MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Q
b2ludGVyRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb2ludGVyRXZlbnQuY3Bw
CkBAIC01MCw3ICs1MCw3IEBAIGNvbnN0IFN0cmluZyYgUG9pbnRlckV2ZW50Ojp0b3VjaFBvaW50
ZXJUeXBlKCkKICAgICByZXR1cm4gdG91Y2hUeXBlOwogfQogCi1zdGF0aWMgQXRvbWljU3RyaW5n
IHBvaW50ZXJFdmVudFR5cGUoY29uc3QgQXRvbWljU3RyaW5nJiBtb3VzZUV2ZW50VHlwZSkKK3N0
YXRpYyBBdG9tU3RyaW5nIHBvaW50ZXJFdmVudFR5cGUoY29uc3QgQXRvbVN0cmluZyYgbW91c2VF
dmVudFR5cGUpCiB7CiAgICAgYXV0byYgbmFtZXMgPSBldmVudE5hbWVzKCk7CiAgICAgaWYgKG1v
dXNlRXZlbnRUeXBlID09IG5hbWVzLm1vdXNlZG93bkV2ZW50KQpAQCAtOTIsNyArOTIsNyBAQCBS
ZWY8UG9pbnRlckV2ZW50PiBQb2ludGVyRXZlbnQ6OmNyZWF0ZShjb25zdCBTdHJpbmcmIHR5cGUs
IFBvaW50ZXJJRCBwb2ludGVySWQsCiAKIFBvaW50ZXJFdmVudDo6UG9pbnRlckV2ZW50KCkgPSBk
ZWZhdWx0OwogCi1Qb2ludGVyRXZlbnQ6OlBvaW50ZXJFdmVudChjb25zdCBBdG9taWNTdHJpbmcm
IHR5cGUsIEluaXQmJiBpbml0aWFsaXplcikKK1BvaW50ZXJFdmVudDo6UG9pbnRlckV2ZW50KGNv
bnN0IEF0b21TdHJpbmcmIHR5cGUsIEluaXQmJiBpbml0aWFsaXplcikKICAgICA6IE1vdXNlRXZl
bnQodHlwZSwgaW5pdGlhbGl6ZXIpCiAgICAgLCBtX3BvaW50ZXJJZChpbml0aWFsaXplci5wb2lu
dGVySWQpCiAgICAgLCBtX3dpZHRoKGluaXRpYWxpemVyLndpZHRoKQpAQCAtMTA3LDEzICsxMDcs
MTMgQEAgUG9pbnRlckV2ZW50OjpQb2ludGVyRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBl
LCBJbml0JiYgaW5pdGlhbGl6ZXIpCiB7CiB9CiAKLVBvaW50ZXJFdmVudDo6UG9pbnRlckV2ZW50
KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgc2hvcnQgYnV0dG9uLCBjb25zdCBNb3VzZUV2ZW50
JiBtb3VzZUV2ZW50KQorUG9pbnRlckV2ZW50OjpQb2ludGVyRXZlbnQoY29uc3QgQXRvbVN0cmlu
ZyYgdHlwZSwgc2hvcnQgYnV0dG9uLCBjb25zdCBNb3VzZUV2ZW50JiBtb3VzZUV2ZW50KQogICAg
IDogTW91c2VFdmVudCh0eXBlLCB0eXBlQ2FuQnViYmxlKHR5cGUpLCB0eXBlSXNDYW5jZWxhYmxl
KHR5cGUpLCB0eXBlSXNDb21wb3NlZCh0eXBlKSwgbW91c2VFdmVudC52aWV3KCksIG1vdXNlRXZl
bnQuZGV0YWlsKCksIG1vdXNlRXZlbnQuc2NyZWVuTG9jYXRpb24oKSwgeyBtb3VzZUV2ZW50LmNs
aWVudFgoKSwgbW91c2VFdmVudC5jbGllbnRZKCkgfSwgbW91c2VFdmVudC5tb2RpZmllcktleXMo
KSwgYnV0dG9uLCBtb3VzZUV2ZW50LmJ1dHRvbnMoKSwgbW91c2VFdmVudC5zeW50aGV0aWNDbGlj
a1R5cGUoKSwgbW91c2VFdmVudC5yZWxhdGVkVGFyZ2V0KCkpCiAgICAgLCBtX2lzUHJpbWFyeSh0
cnVlKQogewogfQogCi1Qb2ludGVyRXZlbnQ6OlBvaW50ZXJFdmVudChjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUsIFBvaW50ZXJJRCBwb2ludGVySWQsIGNvbnN0IFN0cmluZyYgcG9pbnRlclR5cGUs
IElzUHJpbWFyeSBpc1ByaW1hcnkpCitQb2ludGVyRXZlbnQ6OlBvaW50ZXJFdmVudChjb25zdCBB
dG9tU3RyaW5nJiB0eXBlLCBQb2ludGVySUQgcG9pbnRlcklkLCBjb25zdCBTdHJpbmcmIHBvaW50
ZXJUeXBlLCBJc1ByaW1hcnkgaXNQcmltYXJ5KQogICAgIDogTW91c2VFdmVudCh0eXBlLCB0eXBl
Q2FuQnViYmxlKHR5cGUpLCB0eXBlSXNDYW5jZWxhYmxlKHR5cGUpLCB0eXBlSXNDb21wb3NlZCh0
eXBlKSwgbnVsbHB0ciwgMCwgeyB9LCB7IH0sIHsgfSwgMCwgMCwgMCwgbnVsbHB0cikKICAgICAs
IG1fcG9pbnRlcklkKHBvaW50ZXJJZCkKICAgICAsIG1fcG9pbnRlclR5cGUocG9pbnRlclR5cGUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9pbnRlckV2ZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vUG9pbnRlckV2ZW50LmgKaW5kZXggMWVjNzM2Nzk5Y2NiMGM0Zjc0MTNjYThl
NmFiNjNiZDdlZjQ3ZWEwZC4uZjk1ODdmY2ExNTQzYjE3ZTI2MzU1ZTY2N2FiOTc2MThjNWNlNjhj
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1BvaW50ZXJFdmVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Qb2ludGVyRXZlbnQuaApAQCAtNTYsMTIgKzU2LDEyIEBAIHB1Ymxp
YzoKIAogICAgIGVudW0gY2xhc3MgSXNQcmltYXJ5IDogdWludDhfdCB7IE5vLCBZZXMgfTsKIAot
ICAgIHN0YXRpYyBSZWY8UG9pbnRlckV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlLCBJbml0JiYgaW5pdGlhbGl6ZXIpCisgICAgc3RhdGljIFJlZjxQb2ludGVyRXZlbnQ+IGNy
ZWF0ZShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBJbml0JiYgaW5pdGlhbGl6ZXIpCiAgICAgewog
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQb2ludGVyRXZlbnQodHlwZSwgV1RGTW92ZShp
bml0aWFsaXplcikpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmPFBvaW50ZXJFdmVudD4gY3Jl
YXRlRm9yUG9pbnRlckNhcHR1cmUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBQb2lu
dGVyRXZlbnQmIHBvaW50ZXJFdmVudCkKKyAgICBzdGF0aWMgUmVmPFBvaW50ZXJFdmVudD4gY3Jl
YXRlRm9yUG9pbnRlckNhcHR1cmUoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3QgUG9pbnRl
ckV2ZW50JiBwb2ludGVyRXZlbnQpCiAgICAgewogICAgICAgICBJbml0IGluaXRpYWxpemVyOwog
ICAgICAgICBpbml0aWFsaXplci5idWJibGVzID0gdHJ1ZTsKQEAgLTExNSwxNyArMTE1LDE3IEBA
IHB1YmxpYzoKICAgICBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0IG92ZXJy
aWRlOwogCiBwcml2YXRlOgotICAgIHN0YXRpYyBib29sIHR5cGVJc0VudGVyT3JMZWF2ZShjb25z
dCBBdG9taWNTdHJpbmcmIHR5cGUpIHsgcmV0dXJuIHR5cGUgPT0gZXZlbnROYW1lcygpLnBvaW50
ZXJlbnRlckV2ZW50IHx8IHR5cGUgPT0gZXZlbnROYW1lcygpLnBvaW50ZXJsZWF2ZUV2ZW50OyB9
Ci0gICAgc3RhdGljIENhbkJ1YmJsZSB0eXBlQ2FuQnViYmxlKGNvbnN0IEF0b21pY1N0cmluZyYg
dHlwZSkgeyByZXR1cm4gdHlwZUlzRW50ZXJPckxlYXZlKHR5cGUpID8gQ2FuQnViYmxlOjpObyA6
IENhbkJ1YmJsZTo6WWVzOyB9Ci0gICAgc3RhdGljIElzQ2FuY2VsYWJsZSB0eXBlSXNDYW5jZWxh
YmxlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSkgeyByZXR1cm4gdHlwZUlzRW50ZXJPckxlYXZl
KHR5cGUpID8gSXNDYW5jZWxhYmxlOjpObyA6IElzQ2FuY2VsYWJsZTo6WWVzOyB9Ci0gICAgc3Rh
dGljIElzQ29tcG9zZWQgdHlwZUlzQ29tcG9zZWQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlKSB7
IHJldHVybiB0eXBlSXNFbnRlck9yTGVhdmUodHlwZSkgPyBJc0NvbXBvc2VkOjpObyA6IElzQ29t
cG9zZWQ6OlllczsgfQorICAgIHN0YXRpYyBib29sIHR5cGVJc0VudGVyT3JMZWF2ZShjb25zdCBB
dG9tU3RyaW5nJiB0eXBlKSB7IHJldHVybiB0eXBlID09IGV2ZW50TmFtZXMoKS5wb2ludGVyZW50
ZXJFdmVudCB8fCB0eXBlID09IGV2ZW50TmFtZXMoKS5wb2ludGVybGVhdmVFdmVudDsgfQorICAg
IHN0YXRpYyBDYW5CdWJibGUgdHlwZUNhbkJ1YmJsZShjb25zdCBBdG9tU3RyaW5nJiB0eXBlKSB7
IHJldHVybiB0eXBlSXNFbnRlck9yTGVhdmUodHlwZSkgPyBDYW5CdWJibGU6Ok5vIDogQ2FuQnVi
YmxlOjpZZXM7IH0KKyAgICBzdGF0aWMgSXNDYW5jZWxhYmxlIHR5cGVJc0NhbmNlbGFibGUoY29u
c3QgQXRvbVN0cmluZyYgdHlwZSkgeyByZXR1cm4gdHlwZUlzRW50ZXJPckxlYXZlKHR5cGUpID8g
SXNDYW5jZWxhYmxlOjpObyA6IElzQ2FuY2VsYWJsZTo6WWVzOyB9CisgICAgc3RhdGljIElzQ29t
cG9zZWQgdHlwZUlzQ29tcG9zZWQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSkgeyByZXR1cm4gdHlw
ZUlzRW50ZXJPckxlYXZlKHR5cGUpID8gSXNDb21wb3NlZDo6Tm8gOiBJc0NvbXBvc2VkOjpZZXM7
IH0KIAogICAgIFBvaW50ZXJFdmVudCgpOwotICAgIFBvaW50ZXJFdmVudChjb25zdCBBdG9taWNT
dHJpbmcmLCBJbml0JiYpOwotICAgIFBvaW50ZXJFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5
cGUsIHNob3J0IGJ1dHRvbiwgY29uc3QgTW91c2VFdmVudCYpOwotICAgIFBvaW50ZXJFdmVudChj
b25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIFBvaW50ZXJJRCwgY29uc3QgU3RyaW5nJiBwb2ludGVy
VHlwZSwgSXNQcmltYXJ5KTsKKyAgICBQb2ludGVyRXZlbnQoY29uc3QgQXRvbVN0cmluZyYsIElu
aXQmJik7CisgICAgUG9pbnRlckV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIHNob3J0IGJ1
dHRvbiwgY29uc3QgTW91c2VFdmVudCYpOworICAgIFBvaW50ZXJFdmVudChjb25zdCBBdG9tU3Ry
aW5nJiB0eXBlLCBQb2ludGVySUQsIGNvbnN0IFN0cmluZyYgcG9pbnRlclR5cGUsIElzUHJpbWFy
eSk7CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAg
ICBQb2ludGVyRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBQbGF0Zm9ybVRv
dWNoRXZlbnQmLCBJc0NhbmNlbGFibGUgaXNDYW5jZWxhYmxlLCB1bnNpZ25lZCB0b3VjaEluZGV4
LCBib29sIGlzUHJpbWFyeSwgUmVmPFdpbmRvd1Byb3h5PiYmKTsKKyAgICBQb2ludGVyRXZlbnQo
Y29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50JiwgSXNDYW5j
ZWxhYmxlIGlzQ2FuY2VsYWJsZSwgdW5zaWduZWQgdG91Y2hJbmRleCwgYm9vbCBpc1ByaW1hcnks
IFJlZjxXaW5kb3dQcm94eT4mJik7CiAjZW5kaWYKIAogICAgIFBvaW50ZXJJRCBtX3BvaW50ZXJJ
ZCB7IG1vdXNlUG9pbnRlcklEIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9w
U3RhdGVFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9wU3RhdGVFdmVudC5jcHAKaW5k
ZXggM2FkMGM0Zjc5Yzc5OTY2ZmZhOGZkY2JhNTI2NjA2ZTFlODU2NGY0MC4uZDFkYWZkMDc5NDhk
YmNlMzY0YjU2MGFjZmEyZmQ0Y2VmYWZlNDFhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1BvcFN0YXRlRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3BTdGF0ZUV2
ZW50LmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBvcFN0
YXRlRXZlbnQ6OlBvcFN0YXRlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBJ
bml0JiBpbml0aWFsaXplciwgSXNUcnVzdGVkIGlzVHJ1c3RlZCkKK1BvcFN0YXRlRXZlbnQ6OlBv
cFN0YXRlRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3QgSW5pdCYgaW5pdGlhbGl6
ZXIsIElzVHJ1c3RlZCBpc1RydXN0ZWQpCiAgICAgOiBFdmVudCh0eXBlLCBpbml0aWFsaXplciwg
aXNUcnVzdGVkKQogICAgICwgbV9zdGF0ZShpbml0aWFsaXplci5zdGF0ZSkKIHsKQEAgLTUzLDcg
KzUzLDcgQEAgUmVmPFBvcFN0YXRlRXZlbnQ+IFBvcFN0YXRlRXZlbnQ6OmNyZWF0ZShSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIHNlcmlhbGkKICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBQb3BTdGF0ZUV2ZW50KFdURk1vdmUoc2VyaWFsaXplZFN0YXRlKSwgaGlzdG9yeSkpOwogfQog
Ci1SZWY8UG9wU3RhdGVFdmVudD4gUG9wU3RhdGVFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0
cmluZyYgdHlwZSwgY29uc3QgSW5pdCYgaW5pdGlhbGl6ZXIsIElzVHJ1c3RlZCBpc1RydXN0ZWQp
CitSZWY8UG9wU3RhdGVFdmVudD4gUG9wU3RhdGVFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21TdHJp
bmcmIHR5cGUsIGNvbnN0IEluaXQmIGluaXRpYWxpemVyLCBJc1RydXN0ZWQgaXNUcnVzdGVkKQog
ewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBvcFN0YXRlRXZlbnQodHlwZSwgaW5pdGlhbGl6
ZXIsIGlzVHJ1c3RlZCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1BvcFN0
YXRlRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3BTdGF0ZUV2ZW50LmgKaW5kZXggZDdk
MWU0OGM5NzU2ZWZmMWM3OGFlMjE5MTViODE4OTNkYmZkZDM2OS4uNTY3ZTQ1NmFjZDVhYjA2YTIx
N2FlMjBlZGM0ZjQ5ZTA3MTMyM2I4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Bv
cFN0YXRlRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9wU3RhdGVFdmVudC5oCkBA
IC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICAgICAgSlNDOjpKU1ZhbHVlIHN0YXRlOwogICAg
IH07CiAKLSAgICBzdGF0aWMgUmVmPFBvcFN0YXRlRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNT
dHJpbmcmLCBjb25zdCBJbml0JiwgSXNUcnVzdGVkID0gSXNUcnVzdGVkOjpObyk7CisgICAgc3Rh
dGljIFJlZjxQb3BTdGF0ZUV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IElu
aXQmLCBJc1RydXN0ZWQgPSBJc1RydXN0ZWQ6Ok5vKTsKICAgICBzdGF0aWMgUmVmPFBvcFN0YXRl
RXZlbnQ+IGNyZWF0ZUZvckJpbmRpbmdzKCk7CiAKICAgICBjb25zdCBKU1ZhbHVlSW5XcmFwcGVk
T2JqZWN0JiBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KQEAgLTU1LDcgKzU1LDcg
QEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFBvcFN0YXRlRXZlbnQoKSA9IGRlZmF1bHQ7Ci0g
ICAgUG9wU3RhdGVFdmVudChjb25zdCBBdG9taWNTdHJpbmcmLCBjb25zdCBJbml0JiwgSXNUcnVz
dGVkKTsKKyAgICBQb3BTdGF0ZUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBJbml0Jiwg
SXNUcnVzdGVkKTsKICAgICBQb3BTdGF0ZUV2ZW50KFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+JiYsIEhpc3RvcnkqKTsKIAogICAgIEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNlKCkg
Y29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvZ3Jlc3NFdmVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvZ3Jlc3NFdmVudC5jcHAKaW5kZXggYTEzNzA4
YjgwNDYzNjAzZjExZjdlYzFjOTBhMDdiZGRkMDU5YTIwMi4uODIyM2FiNGNiZTI3Zjg5OGJmMzcz
NGViZDI1MzM3MjkwNGNlNTA0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Byb2dy
ZXNzRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9ncmVzc0V2ZW50LmNwcApA
QCAtMjgsNyArMjgsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVByb2dyZXNzRXZlbnQ6
OlByb2dyZXNzRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiBpbml0
aWFsaXplciwgSXNUcnVzdGVkIGlzVHJ1c3RlZCkKK1Byb2dyZXNzRXZlbnQ6OlByb2dyZXNzRXZl
bnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3QgSW5pdCYgaW5pdGlhbGl6ZXIsIElzVHJ1
c3RlZCBpc1RydXN0ZWQpCiAgICAgOiBFdmVudCh0eXBlLCBpbml0aWFsaXplciwgaXNUcnVzdGVk
KQogICAgICwgbV9sZW5ndGhDb21wdXRhYmxlKGluaXRpYWxpemVyLmxlbmd0aENvbXB1dGFibGUp
CiAgICAgLCBtX2xvYWRlZChpbml0aWFsaXplci5sb2FkZWQpCkBAIC0zNiw3ICszNiw3IEBAIFBy
b2dyZXNzRXZlbnQ6OlByb2dyZXNzRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25z
dCBJbml0JiBpbml0aWFsaXplciwKIHsKIH0KIAotUHJvZ3Jlc3NFdmVudDo6UHJvZ3Jlc3NFdmVu
dChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgbGVuZ3RoQ29tcHV0YWJsZSwgdW5zaWdu
ZWQgbG9uZyBsb25nIGxvYWRlZCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsKQorUHJvZ3Jlc3NF
dmVudDo6UHJvZ3Jlc3NFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBib29sIGxlbmd0aENv
bXB1dGFibGUsIHVuc2lnbmVkIGxvbmcgbG9uZyBsb2FkZWQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0
b3RhbCkKICAgICA6IEV2ZW50KHR5cGUsIENhbkJ1YmJsZTo6Tm8sIElzQ2FuY2VsYWJsZTo6Tm8p
CiAgICAgLCBtX2xlbmd0aENvbXB1dGFibGUobGVuZ3RoQ29tcHV0YWJsZSkKICAgICAsIG1fbG9h
ZGVkKGxvYWRlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9ncmVzc0V2ZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvZ3Jlc3NFdmVudC5oCmluZGV4IGZmYWJjYjhiMWQw
ZDc2NDI5Njk2MGQzYTE3NzA0YjFkNTdmNzdkNmYuLmI2OTZlYmY4NWIxZjNkOGQ0M2NlNWY5MzJl
NzM1Zjc1ODI5NDEwNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9ncmVzc0V2
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Byb2dyZXNzRXZlbnQuaApAQCAtMzEsNyAr
MzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFByb2dyZXNzRXZlbnQgOiBwdWJs
aWMgRXZlbnQgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UHJvZ3Jlc3NFdmVudD4gY3JlYXRl
KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBsZW5ndGhDb21wdXRhYmxlLCB1bnNpZ25l
ZCBsb25nIGxvbmcgbG9hZGVkLCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWwpCisgICAgc3RhdGlj
IFJlZjxQcm9ncmVzc0V2ZW50PiBjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgYm9vbCBs
ZW5ndGhDb21wdXRhYmxlLCB1bnNpZ25lZCBsb25nIGxvbmcgbG9hZGVkLCB1bnNpZ25lZCBsb25n
IGxvbmcgdG90YWwpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQcm9ncmVz
c0V2ZW50KHR5cGUsIGxlbmd0aENvbXB1dGFibGUsIGxvYWRlZCwgdG90YWwpKTsKICAgICB9CkBA
IC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFs
IHsgMCB9OwogICAgIH07CiAKLSAgICBzdGF0aWMgUmVmPFByb2dyZXNzRXZlbnQ+IGNyZWF0ZShj
b25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IEluaXQmIGluaXRpYWxpemVyLCBJc1RydXN0
ZWQgaXNUcnVzdGVkID0gSXNUcnVzdGVkOjpObykKKyAgICBzdGF0aWMgUmVmPFByb2dyZXNzRXZl
bnQ+IGNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiBpbml0aWFsaXpl
ciwgSXNUcnVzdGVkIGlzVHJ1c3RlZCA9IElzVHJ1c3RlZDo6Tm8pCiAgICAgewogICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBQcm9ncmVzc0V2ZW50KHR5cGUsIGluaXRpYWxpemVyLCBpc1Ry
dXN0ZWQpKTsKICAgICB9CkBAIC01NCw4ICs1NCw4IEBAIHB1YmxpYzoKICAgICBFdmVudEludGVy
ZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlOwogCiBwcm90ZWN0ZWQ6Ci0gICAg
UHJvZ3Jlc3NFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgbGVuZ3RoQ29tcHV0
YWJsZSwgdW5zaWduZWQgbG9uZyBsb25nIGxvYWRlZCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFs
KTsKLSAgICBQcm9ncmVzc0V2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IEluaXQmLCBJ
c1RydXN0ZWQpOworICAgIFByb2dyZXNzRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgYm9v
bCBsZW5ndGhDb21wdXRhYmxlLCB1bnNpZ25lZCBsb25nIGxvbmcgbG9hZGVkLCB1bnNpZ25lZCBs
b25nIGxvbmcgdG90YWwpOworICAgIFByb2dyZXNzRXZlbnQoY29uc3QgQXRvbVN0cmluZyYsIGNv
bnN0IEluaXQmLCBJc1RydXN0ZWQpOwogCiBwcml2YXRlOgogICAgIGJvb2wgbV9sZW5ndGhDb21w
dXRhYmxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Byb21pc2VSZWplY3Rpb25F
dmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcApp
bmRleCA0NTFkNjI4OGI0NDExMGY1NDQ4OGI3MGYxMDQ3NjgzNWE4MjIzYmUzLi43Y2QwYWIxN2Fm
ODg3MThjNWI0NjJkYWI1NTM1OTM3NGE3MzhmMjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vUHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
UHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcApAQCAtMzQsNyArMzQsNyBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAotUHJvbWlzZVJlamVjdGlvbkV2ZW50OjpQ
cm9taXNlUmVqZWN0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0
JiBpbml0aWFsaXplciwgSXNUcnVzdGVkIGlzVHJ1c3RlZCkKK1Byb21pc2VSZWplY3Rpb25FdmVu
dDo6UHJvbWlzZVJlamVjdGlvbkV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IElu
aXQmIGluaXRpYWxpemVyLCBJc1RydXN0ZWQgaXNUcnVzdGVkKQogICAgIDogRXZlbnQodHlwZSwg
aW5pdGlhbGl6ZXIsIGlzVHJ1c3RlZCkKICAgICAsIG1fcHJvbWlzZSgqKGluaXRpYWxpemVyLnBy
b21pc2UpKQogICAgICwgbV9yZWFzb24oaW5pdGlhbGl6ZXIucmVhc29uKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1Byb21pc2VSZWplY3Rpb25FdmVudC5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL1Byb21pc2VSZWplY3Rpb25FdmVudC5oCmluZGV4IDJkYzdkODU1NWRiZmNlMTJlZmZj
NmI5ZmQ3MjI4YzM1ZWNlNzU4YjMuLjZmNGNhNTA3YmQ2ZTUzNWUyNWFkNWQxNzMzZTAwNWZjZmY2
ODU5ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9taXNlUmVqZWN0aW9uRXZl
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvbWlzZVJlamVjdGlvbkV2ZW50LmgKQEAg
LTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgICAgICBKU0M6OkpTVmFsdWUgcmVhc29uOwogICAg
IH07CiAKLSAgICBzdGF0aWMgUmVmPFByb21pc2VSZWplY3Rpb25FdmVudD4gY3JlYXRlKGNvbnN0
IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgSW5pdCYgaW5pdGlhbGl6ZXIsIElzVHJ1c3RlZCBp
c1RydXN0ZWQgPSBJc1RydXN0ZWQ6Ok5vKQorICAgIHN0YXRpYyBSZWY8UHJvbWlzZVJlamVjdGlv
bkV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3QgSW5pdCYgaW5pdGlh
bGl6ZXIsIElzVHJ1c3RlZCBpc1RydXN0ZWQgPSBJc1RydXN0ZWQ6Ok5vKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUHJvbWlzZVJlamVjdGlvbkV2ZW50KHR5cGUsIGluaXRp
YWxpemVyLCBpc1RydXN0ZWQpKTsKICAgICB9CkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAg
ICBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IFByb21pc2VSZWplY3Rpb25FdmVudEludGVyZmFjZVR5cGU7IH0KIAogcHJpdmF0ZToKLSAgICBQ
cm9taXNlUmVqZWN0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgSW5pdCYsIElz
VHJ1c3RlZCk7CisgICAgUHJvbWlzZVJlamVjdGlvbkV2ZW50KGNvbnN0IEF0b21TdHJpbmcmLCBj
b25zdCBJbml0JiwgSXNUcnVzdGVkKTsKIAogICAgIFJlZjxET01Qcm9taXNlPiBtX3Byb21pc2U7
CiAgICAgSlNWYWx1ZUluV3JhcHBlZE9iamVjdCBtX3JlYXNvbjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9RdWFs
aWZpZWROYW1lLmNwcAppbmRleCA5ODYyOTJmZjk1MWNiNGZmYWMxYWRhNmE1Nzk4NjAxNjgyYjVj
ZDNlLi40NmE5NTY2NmJjYTY2ZWVhYzQ3OWE1YzFmMTdjM2I3YTMyNzI3YmJkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1F1YWxpZmllZE5hbWUuY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotUXVhbGlmaWVkTmFtZTo6UXVhbGlmaWVkTmFtZShjb25zdCBBdG9taWNTdHJp
bmcmIHAsIGNvbnN0IEF0b21pY1N0cmluZyYgbCwgY29uc3QgQXRvbWljU3RyaW5nJiBuKQorUXVh
bGlmaWVkTmFtZTo6UXVhbGlmaWVkTmFtZShjb25zdCBBdG9tU3RyaW5nJiBwLCBjb25zdCBBdG9t
U3RyaW5nJiBsLCBjb25zdCBBdG9tU3RyaW5nJiBuKQogICAgIDogbV9pbXBsKHRocmVhZEdsb2Jh
bERhdGEoKS5xdWFsaWZpZWROYW1lQ2FjaGUoKS5nZXRPckNyZWF0ZShRdWFsaWZpZWROYW1lQ29t
cG9uZW50cyB7IHAuaW1wbCgpLCBsLmltcGwoKSwgbi5pc0VtcHR5KCkgPyBudWxscHRyIDogbi5p
bXBsKCkgfSkpCiB7CiB9CkBAIC00NSw3ICs0NSw3IEBAIHZvaWQgUXVhbGlmaWVkTmFtZTo6aW5p
dCgpCiAgICAgaWYgKGluaXRpYWxpemVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBBU1NFUlRf
V0lUSF9NRVNTQUdFKFdURjo6bnVsbEF0b21EYXRhLmlzQ29uc3RydWN0ZWQoKSwgIkF0b21pY1N0
cmluZzo6aW5pdCBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCIpOworICAgIEFTU0VSVF9XSVRIX01F
U1NBR0UoV1RGOjpudWxsQXRvbURhdGEuaXNDb25zdHJ1Y3RlZCgpLCAiQXRvbVN0cmluZzo6aW5p
dCBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCIpOwogICAgIGFueU5hbWUuY29uc3RydWN0KG51bGxB
dG9tKCksIHN0YXJBdG9tKCksIHN0YXJBdG9tKCkpOwogICAgIGluaXRpYWxpemVkID0gdHJ1ZTsK
IH0KQEAgLTU2LDcgKzU2LDcgQEAgY29uc3QgUXVhbGlmaWVkTmFtZSYgbnVsbFFOYW1lKCkKICAg
ICByZXR1cm4gbnVsbE5hbWU7CiB9CiAKLWNvbnN0IEF0b21pY1N0cmluZyYgUXVhbGlmaWVkTmFt
ZTo6bG9jYWxOYW1lVXBwZXIoKSBjb25zdAorY29uc3QgQXRvbVN0cmluZyYgUXVhbGlmaWVkTmFt
ZTo6bG9jYWxOYW1lVXBwZXIoKSBjb25zdAogewogICAgIGlmICghbV9pbXBsLT5tX2xvY2FsTmFt
ZVVwcGVyKQogICAgICAgICBtX2ltcGwtPm1fbG9jYWxOYW1lVXBwZXIgPSBtX2ltcGwtPm1fbG9j
YWxOYW1lLmNvbnZlcnRUb0FTQ0lJVXBwZXJjYXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vUXVhbGlmaWVkTmFtZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5h
bWUuaAppbmRleCA4Yjc2MmU1ZTg5Zjc4ZDI0ZjE3ZThmODA0OTEwNmQyN2IxOTg1ZDdlLi4yMGYx
MjQ0MTU4YmFjZmViOWViZWJiODFmOTg2MjRmNjUwMjJlZjRkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9RdWFs
aWZpZWROYW1lLmgKQEAgLTIyLDcgKzIyLDcgQEAKIAogI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRz
Lmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQv
QXRvbWljU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZy5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM3LDcgKzM3LDcgQEAgY2xhc3MgUXVhbGlmaWVkTmFtZSB7
CiBwdWJsaWM6CiAgICAgY2xhc3MgUXVhbGlmaWVkTmFtZUltcGwgOiBwdWJsaWMgUmVmQ291bnRl
ZDxRdWFsaWZpZWROYW1lSW1wbD4gewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFJlZjxR
dWFsaWZpZWROYW1lSW1wbD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4LCBjb25z
dCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VV
UkkpCisgICAgICAgIHN0YXRpYyBSZWY8UXVhbGlmaWVkTmFtZUltcGw+IGNyZWF0ZShjb25zdCBB
dG9tU3RyaW5nJiBwcmVmaXgsIGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsTmFtZSwgY29uc3QgQXRv
bVN0cmluZyYgbmFtZXNwYWNlVVJJKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBRdWFsaWZpZWROYW1lSW1wbChwcmVmaXgsIGxvY2FsTmFtZSwgbmFtZXNwYWNl
VVJJKSk7CiAgICAgICAgIH0KQEAgLTQ3LDEwICs0NywxMCBAQCBwdWJsaWM6CiAgICAgICAgIHVu
c2lnbmVkIGNvbXB1dGVIYXNoKCkgY29uc3Q7CiAKICAgICAgICAgbXV0YWJsZSB1bnNpZ25lZCBt
X2V4aXN0aW5nSGFzaCB7IDAgfTsKLSAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nIG1fcHJlZml4
OwotICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcgbV9sb2NhbE5hbWU7Ci0gICAgICAgIGNvbnN0
IEF0b21pY1N0cmluZyBtX25hbWVzcGFjZTsKLSAgICAgICAgbXV0YWJsZSBBdG9taWNTdHJpbmcg
bV9sb2NhbE5hbWVVcHBlcjsKKyAgICAgICAgY29uc3QgQXRvbVN0cmluZyBtX3ByZWZpeDsKKyAg
ICAgICAgY29uc3QgQXRvbVN0cmluZyBtX2xvY2FsTmFtZTsKKyAgICAgICAgY29uc3QgQXRvbVN0
cmluZyBtX25hbWVzcGFjZTsKKyAgICAgICAgbXV0YWJsZSBBdG9tU3RyaW5nIG1fbG9jYWxOYW1l
VXBwZXI7CiAKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBzdGF0aWMgcHRyZGlmZl90IGxvY2Fs
TmFtZU1lbW9yeU9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihRdWFsaWZpZWROYW1l
SW1wbCwgbV9sb2NhbE5hbWUpOyB9CkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICNlbmRpZgog
CiAgICAgcHJpdmF0ZToKLSAgICAgICAgUXVhbGlmaWVkTmFtZUltcGwoY29uc3QgQXRvbWljU3Ry
aW5nJiBwcmVmaXgsIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lLCBjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWVzcGFjZVVSSSkKKyAgICAgICAgUXVhbGlmaWVkTmFtZUltcGwoY29uc3QgQXRv
bVN0cmluZyYgcHJlZml4LCBjb25zdCBBdG9tU3RyaW5nJiBsb2NhbE5hbWUsIGNvbnN0IEF0b21T
dHJpbmcmIG5hbWVzcGFjZVVSSSkKICAgICAgICAgICAgIDogbV9wcmVmaXgocHJlZml4KQogICAg
ICAgICAgICAgLCBtX2xvY2FsTmFtZShsb2NhbE5hbWUpCiAgICAgICAgICAgICAsIG1fbmFtZXNw
YWNlKG5hbWVzcGFjZVVSSSkKQEAgLTY3LDcgKzY3LDcgQEAgcHVibGljOgogICAgICAgICB9ICAg
ICAgICAKICAgICB9OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgUXVhbGlmaWVkTmFtZShjb25zdCBB
dG9taWNTdHJpbmcmIHByZWZpeCwgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUsIGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBRdWFsaWZp
ZWROYW1lKGNvbnN0IEF0b21TdHJpbmcmIHByZWZpeCwgY29uc3QgQXRvbVN0cmluZyYgbG9jYWxO
YW1lLCBjb25zdCBBdG9tU3RyaW5nJiBuYW1lc3BhY2VVUkkpOwogICAgIGV4cGxpY2l0IFF1YWxp
ZmllZE5hbWUoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKSA6IG1faW1wbChXVEY6Okhh
c2hUYWJsZURlbGV0ZWRWYWx1ZSkgeyB9CiAgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1
ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1wbC5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9CiAj
aWZkZWYgUU5BTUVfREVGQVVMVF9DT05TVFJVQ1RPUgpAQCAtODAsMTQgKzgwLDE0IEBAIHB1Ymxp
YzoKICAgICBib29sIG1hdGNoZXMoY29uc3QgUXVhbGlmaWVkTmFtZSYgb3RoZXIpIGNvbnN0IHsg
cmV0dXJuIG1faW1wbCA9PSBvdGhlci5tX2ltcGwgfHwgKGxvY2FsTmFtZSgpID09IG90aGVyLmxv
Y2FsTmFtZSgpICYmIG5hbWVzcGFjZVVSSSgpID09IG90aGVyLm5hbWVzcGFjZVVSSSgpKTsgfQog
CiAgICAgYm9vbCBoYXNQcmVmaXgoKSBjb25zdCB7IHJldHVybiAhbV9pbXBsLT5tX3ByZWZpeC5p
c051bGwoKTsgfQotICAgIHZvaWQgc2V0UHJlZml4KGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4
KSB7ICp0aGlzID0gUXVhbGlmaWVkTmFtZShwcmVmaXgsIGxvY2FsTmFtZSgpLCBuYW1lc3BhY2VV
UkkoKSk7IH0KKyAgICB2b2lkIHNldFByZWZpeChjb25zdCBBdG9tU3RyaW5nJiBwcmVmaXgpIHsg
KnRoaXMgPSBRdWFsaWZpZWROYW1lKHByZWZpeCwgbG9jYWxOYW1lKCksIG5hbWVzcGFjZVVSSSgp
KTsgfQogCi0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBwcmVmaXgoKSBjb25zdCB7IHJldHVybiBt
X2ltcGwtPm1fcHJlZml4OyB9Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUoKSBj
b25zdCB7IHJldHVybiBtX2ltcGwtPm1fbG9jYWxOYW1lOyB9Ci0gICAgY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lc3BhY2VVUkkoKSBjb25zdCB7IHJldHVybiBtX2ltcGwtPm1fbmFtZXNwYWNlOyB9
CisgICAgY29uc3QgQXRvbVN0cmluZyYgcHJlZml4KCkgY29uc3QgeyByZXR1cm4gbV9pbXBsLT5t
X3ByZWZpeDsgfQorICAgIGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsTmFtZSgpIGNvbnN0IHsgcmV0
dXJuIG1faW1wbC0+bV9sb2NhbE5hbWU7IH0KKyAgICBjb25zdCBBdG9tU3RyaW5nJiBuYW1lc3Bh
Y2VVUkkoKSBjb25zdCB7IHJldHVybiBtX2ltcGwtPm1fbmFtZXNwYWNlOyB9CiAKICAgICAvLyBV
cHBlcmNhc2VkIGxvY2FsTmFtZSwgY2FjaGVkIGZvciBlZmZpY2llbmN5Ci0gICAgY29uc3QgQXRv
bWljU3RyaW5nJiBsb2NhbE5hbWVVcHBlcigpIGNvbnN0OworICAgIGNvbnN0IEF0b21TdHJpbmcm
IGxvY2FsTmFtZVVwcGVyKCkgY29uc3Q7CiAKICAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsK
IApAQCAtMTEwLDEwICsxMTAsMTAgQEAgaW5saW5lIGNvbnN0IFF1YWxpZmllZE5hbWUmIGFueVFO
YW1lKCkgeyByZXR1cm4gYW55TmFtZTsgfQogCiBjb25zdCBRdWFsaWZpZWROYW1lJiBudWxsUU5h
bWUoKTsKIAotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBdG9taWNTdHJpbmcmIGEsIGNv
bnN0IFF1YWxpZmllZE5hbWUmIHEpIHsgcmV0dXJuIGEgPT0gcS5sb2NhbE5hbWUoKTsgfQotaW5s
aW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBBdG9taWNTdHJpbmcmIGEsIGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHEpIHsgcmV0dXJuIGEgIT0gcS5sb2NhbE5hbWUoKTsgfQotaW5saW5lIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBRdWFsaWZpZWROYW1lJiBxLCBjb25zdCBBdG9taWNTdHJpbmcmIGEpIHsg
cmV0dXJuIGEgPT0gcS5sb2NhbE5hbWUoKTsgfQotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBRdWFsaWZpZWROYW1lJiBxLCBjb25zdCBBdG9taWNTdHJpbmcmIGEpIHsgcmV0dXJuIGEgIT0g
cS5sb2NhbE5hbWUoKTsgfQoraW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBdG9tU3RyaW5n
JiBhLCBjb25zdCBRdWFsaWZpZWROYW1lJiBxKSB7IHJldHVybiBhID09IHEubG9jYWxOYW1lKCk7
IH0KK2lubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgQXRvbVN0cmluZyYgYSwgY29uc3QgUXVh
bGlmaWVkTmFtZSYgcSkgeyByZXR1cm4gYSAhPSBxLmxvY2FsTmFtZSgpOyB9CitpbmxpbmUgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFF1YWxpZmllZE5hbWUmIHEsIGNvbnN0IEF0b21TdHJpbmcmIGEp
IHsgcmV0dXJuIGEgPT0gcS5sb2NhbE5hbWUoKTsgfQoraW5saW5lIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBRdWFsaWZpZWROYW1lJiBxLCBjb25zdCBBdG9tU3RyaW5nJiBhKSB7IHJldHVybiBhICE9
IHEubG9jYWxOYW1lKCk7IH0KIAogaW5saW5lIHVuc2lnbmVkIGhhc2hDb21wb25lbnRzKGNvbnN0
IFF1YWxpZmllZE5hbWVDb21wb25lbnRzJiBidWYpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vUmFkaW9CdXR0b25Hcm91cHMuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1JhZGlv
QnV0dG9uR3JvdXBzLmNwcAppbmRleCAyZjMwNWVmNjgxZDIwYjQ4ZGE1NzE1YmViMjg1ZTIyNzYw
NDQ5NmYzLi41MzM3YzU4Y2RmYmJhYWIyMzAxODQ1MDI2MzhkYzYzNDQ5Zjc5NmFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFkaW9CdXR0b25Hcm91cHMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9SYWRpb0J1dHRvbkdyb3Vwcy5jcHAKQEAgLTI0OSw3ICsyNDksNyBAQCB2
b2lkIFJhZGlvQnV0dG9uR3JvdXBzOjpyZXF1aXJlZFN0YXRlQ2hhbmdlZChIVE1MSW5wdXRFbGVt
ZW50JiBlbGVtZW50KQogICAgIGdyb3VwLT5yZXF1aXJlZFN0YXRlQ2hhbmdlZChlbGVtZW50KTsK
IH0KIAotSFRNTElucHV0RWxlbWVudCogUmFkaW9CdXR0b25Hcm91cHM6OmNoZWNrZWRCdXR0b25G
b3JHcm91cChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0CitIVE1MSW5wdXRFbGVtZW50
KiBSYWRpb0J1dHRvbkdyb3Vwczo6Y2hlY2tlZEJ1dHRvbkZvckdyb3VwKGNvbnN0IEF0b21TdHJp
bmcmIG5hbWUpIGNvbnN0CiB7CiAgICAgaWYgKCFtX25hbWVUb0dyb3VwTWFwKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKQEAgLTI2MSw3ICsyNjEsNyBAQCBIVE1MSW5wdXRFbGVtZW50KiBSYWRp
b0J1dHRvbkdyb3Vwczo6Y2hlY2tlZEJ1dHRvbkZvckdyb3VwKGNvbnN0IEF0b21pY1N0cmluZyYg
bgogYm9vbCBSYWRpb0J1dHRvbkdyb3Vwczo6aGFzQ2hlY2tlZEJ1dHRvbihjb25zdCBIVE1MSW5w
dXRFbGVtZW50JiBlbGVtZW50KSBjb25zdAogewogICAgIEFTU0VSVChlbGVtZW50LmlzUmFkaW9C
dXR0b24oKSk7Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lID0gZWxlbWVudC5uYW1lKCk7
CisgICAgY29uc3QgQXRvbVN0cmluZyYgbmFtZSA9IGVsZW1lbnQubmFtZSgpOwogICAgIGlmIChu
YW1lLmlzRW1wdHkoKSB8fCAhbV9uYW1lVG9Hcm91cE1hcCkKICAgICAgICAgcmV0dXJuIGVsZW1l
bnQuY2hlY2tlZCgpOwogICAgIHJldHVybiBtX25hbWVUb0dyb3VwTWFwLT5nZXQobmFtZS5pbXBs
KCkpLT5jaGVja2VkQnV0dG9uKCk7CkBAIC0yOTQsNyArMjk0LDcgQEAgdm9pZCBSYWRpb0J1dHRv
bkdyb3Vwczo6cmVtb3ZlQnV0dG9uKEhUTUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgaWYg
KGl0LT52YWx1ZS0+aXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBXZSBtYXkgc2tpcCBk
ZWFsbG9jYXRpbmcgdGhlIGVtcHR5IFJhZGlvQnV0dG9uR3JvdXAgZm9yCiAgICAgICAgIC8vIHBl
cmZvcm1hbmNlIGltcHJvdmVtZW50LiBJZiB3ZSBkbyBzbywgd2UgbmVlZCB0byBjaGFuZ2UgdGhl
IGtleSB0eXBlCi0gICAgICAgIC8vIG9mIG1fbmFtZVRvR3JvdXBNYXAgZnJvbSBBdG9taWNTdHJp
bmdJbXBsKiB0byBSZWZQdHI8QXRvbWljU3RyaW5nSW1wbD4uCisgICAgICAgIC8vIG9mIG1fbmFt
ZVRvR3JvdXBNYXAgZnJvbSBBdG9tU3RyaW5nSW1wbCogdG8gUmVmUHRyPEF0b21TdHJpbmdJbXBs
Pi4KICAgICAgICAgbV9uYW1lVG9Hcm91cE1hcC0+cmVtb3ZlKGl0KTsKICAgICAgICAgaWYgKG1f
bmFtZVRvR3JvdXBNYXAtPmlzRW1wdHkoKSkKICAgICAgICAgICAgIG1fbmFtZVRvR3JvdXBNYXAg
PSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1JhZGlvQnV0dG9uR3Jv
dXBzLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFkaW9CdXR0b25Hcm91cHMuaAppbmRleCA0YjI4
NDUwOTE0MmZjMjNkMDA2YzY4ZWFkNTY0YmU0ZTE4NjgzNjY0Li4yNmYxZjcxMzdmNTM5MjllYjg0
YjcwNjRlNWZlYjg2ZjE3NDFmYTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFk
aW9CdXR0b25Hcm91cHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFkaW9CdXR0b25Hcm91
cHMuaApAQCAtMzgsMTMgKzM4LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZUNoZWNrZWRT
dGF0ZShIVE1MSW5wdXRFbGVtZW50Jik7CiAgICAgdm9pZCByZXF1aXJlZFN0YXRlQ2hhbmdlZChI
VE1MSW5wdXRFbGVtZW50Jik7CiAgICAgdm9pZCByZW1vdmVCdXR0b24oSFRNTElucHV0RWxlbWVu
dCYpOwotICAgIEhUTUxJbnB1dEVsZW1lbnQqIGNoZWNrZWRCdXR0b25Gb3JHcm91cChjb25zdCBB
dG9taWNTdHJpbmcmIGdyb3VwTmFtZSkgY29uc3Q7CisgICAgSFRNTElucHV0RWxlbWVudCogY2hl
Y2tlZEJ1dHRvbkZvckdyb3VwKGNvbnN0IEF0b21TdHJpbmcmIGdyb3VwTmFtZSkgY29uc3Q7CiAg
ICAgYm9vbCBoYXNDaGVja2VkQnV0dG9uKGNvbnN0IEhUTUxJbnB1dEVsZW1lbnQmKSBjb25zdDsK
ICAgICBib29sIGlzSW5SZXF1aXJlZEdyb3VwKEhUTUxJbnB1dEVsZW1lbnQmKSBjb25zdDsKICAg
ICBWZWN0b3I8SFRNTElucHV0RWxlbWVudCo+IGdyb3VwTWVtYmVycyhjb25zdCBIVE1MSW5wdXRF
bGVtZW50JikgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgdHlwZWRlZiBIYXNoTWFwPEF0b21pY1N0
cmluZ0ltcGwqLCBzdGQ6OnVuaXF1ZV9wdHI8UmFkaW9CdXR0b25Hcm91cD4+IE5hbWVUb0dyb3Vw
TWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxBdG9tU3RyaW5nSW1wbCosIHN0ZDo6dW5pcXVlX3B0
cjxSYWRpb0J1dHRvbkdyb3VwPj4gTmFtZVRvR3JvdXBNYXA7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PE5hbWVUb0dyb3VwTWFwPiBtX25hbWVUb0dyb3VwTWFwOwogfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnRDYWNoZWRTY3JpcHRGZXRjaGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudENhY2hlZFNjcmlwdEZldGNoZXIuaAppbmRleCAw
M2MzODk2ZGJlZDhlNDYyYWE5OTE2ZDhhYzdiYTY4ZjkwZWYzZmQ2Li4xNzA4MDRlOWQ4N2NmY2Jl
ZTU0NWY0MGEwMDBlN2UzMTBhMmU3ZDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
U2NyaXB0RWxlbWVudENhY2hlZFNjcmlwdEZldGNoZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vU2NyaXB0RWxlbWVudENhY2hlZFNjcmlwdEZldGNoZXIuaApAQCAtMzksNyArMzksNyBAQCBw
dWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBjcm9zc09yaWdpbk1vZGUoKSBjb25zdCB7IHJldHVy
biBtX2Nyb3NzT3JpZ2luTW9kZTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgU2NyaXB0RWxlbWVudENh
Y2hlZFNjcmlwdEZldGNoZXIoY29uc3QgU3RyaW5nJiBub25jZSwgY29uc3QgU3RyaW5nJiBjcm9z
c09yaWdpbk1vZGUsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgY29uc3QgQXRvbWljU3RyaW5nJiBp
bml0aWF0b3JOYW1lLCBib29sIGlzSW5Vc2VyQWdlbnRTaGFkb3dUcmVlKQorICAgIFNjcmlwdEVs
ZW1lbnRDYWNoZWRTY3JpcHRGZXRjaGVyKGNvbnN0IFN0cmluZyYgbm9uY2UsIGNvbnN0IFN0cmlu
ZyYgY3Jvc3NPcmlnaW5Nb2RlLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIGNvbnN0IEF0b21TdHJp
bmcmIGluaXRpYXRvck5hbWUsIGJvb2wgaXNJblVzZXJBZ2VudFNoYWRvd1RyZWUpCiAgICAgICAg
IDogQ2FjaGVkU2NyaXB0RmV0Y2hlcihub25jZSwgY2hhcnNldCwgaW5pdGlhdG9yTmFtZSwgaXNJ
blVzZXJBZ2VudFNoYWRvd1RyZWUpCiAgICAgICAgICwgbV9jcm9zc09yaWdpbk1vZGUoY3Jvc3NP
cmlnaW5Nb2RlKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWN1cml0
eVBvbGljeVZpb2xhdGlvbkV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2VjdXJpdHlQb2xp
Y3lWaW9sYXRpb25FdmVudC5oCmluZGV4IGFiZGQ1YzU1MDA3MTFkMzBkMzUzN2Y0NzJiNDFhNGZk
MzkyZWI1YjYuLjNjNDBiNzFlYjkwNzVjMWEwMGZkODdkODEwYTRiNzQ1NTVhYmRkZDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQuaApA
QCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNlY3VyaXR5UG9s
aWN5VmlvbGF0aW9uRXZlbnQgZmluYWwgOiBwdWJsaWMgRXZlbnQgewogcHVibGljOgotICAgIHN0
YXRpYyBSZWY8U2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudD4gY3JlYXRlKGNvbnN0IEF0b21p
Y1N0cmluZyYgdHlwZSwgQ2FuQnViYmxlIGNhbkJ1YmJsZSwgSXNDYW5jZWxhYmxlIGNhbmNlbGFi
bGUsIGNvbnN0IFN0cmluZyYgZG9jdW1lbnRVUkksIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGNv
bnN0IFN0cmluZyYgYmxvY2tlZFVSSSwgY29uc3QgU3RyaW5nJiB2aW9sYXRlZERpcmVjdGl2ZSwg
Y29uc3QgU3RyaW5nJiBlZmZlY3RpdmVEaXJlY3RpdmUsIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxQ
b2xpY3ksIGNvbnN0IFN0cmluZyYgc291cmNlRmlsZSwgdW5zaWduZWQgc2hvcnQgc3RhdHVzQ29k
ZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpCisgICAgc3RhdGljIFJlZjxTZWN1
cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwg
Q2FuQnViYmxlIGNhbkJ1YmJsZSwgSXNDYW5jZWxhYmxlIGNhbmNlbGFibGUsIGNvbnN0IFN0cmlu
ZyYgZG9jdW1lbnRVUkksIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGNvbnN0IFN0cmluZyYgYmxv
Y2tlZFVSSSwgY29uc3QgU3RyaW5nJiB2aW9sYXRlZERpcmVjdGl2ZSwgY29uc3QgU3RyaW5nJiBl
ZmZlY3RpdmVEaXJlY3RpdmUsIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxQb2xpY3ksIGNvbnN0IFN0
cmluZyYgc291cmNlRmlsZSwgdW5zaWduZWQgc2hvcnQgc3RhdHVzQ29kZSwgaW50IGxpbmVOdW1i
ZXIsIGludCBjb2x1bW5OdW1iZXIpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJs
ZSwgZG9jdW1lbnRVUkksIHJlZmVycmVyLCBibG9ja2VkVVJJLCB2aW9sYXRlZERpcmVjdGl2ZSwg
ZWZmZWN0aXZlRGlyZWN0aXZlLCBvcmlnaW5hbFBvbGljeSwgc291cmNlRmlsZSwgc3RhdHVzQ29k
ZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKSk7CiAgICAgfQpAQCAtNTcsNyArNTcsNyBAQCBw
dWJsaWM6CiAgICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBib29sIGRlY29k
ZShEZWNvZGVyJiwgSW5pdCYpOwogICAgIH07CiAKLSAgICBzdGF0aWMgUmVmPFNlY3VyaXR5UG9s
aWN5VmlvbGF0aW9uRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0
IEluaXQmIGluaXRpYWxpemVyLCBJc1RydXN0ZWQgaXNUcnVzdGVkID0gSXNUcnVzdGVkOjpObykK
KyAgICBzdGF0aWMgUmVmPFNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQ+IGNyZWF0ZShjb25z
dCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiBpbml0aWFsaXplciwgSXNUcnVzdGVkIGlz
VHJ1c3RlZCA9IElzVHJ1c3RlZDo6Tm8pCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50KHR5cGUsIGluaXRpYWxpemVyLCBpc1Ry
dXN0ZWQpKTsKICAgICB9CkBAIC04MCw3ICs4MCw3IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0K
IAotICAgIFNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlLCBDYW5CdWJibGUgY2FuQnViYmxlLCBJc0NhbmNlbGFibGUgY2FuY2VsYWJsZSwgY29uc3Qg
U3RyaW5nJiBkb2N1bWVudFVSSSwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgY29uc3QgU3RyaW5n
JiBibG9ja2VkVVJJLCBjb25zdCBTdHJpbmcmIHZpb2xhdGVkRGlyZWN0aXZlLCBjb25zdCBTdHJp
bmcmIGVmZmVjdGl2ZURpcmVjdGl2ZSwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbFBvbGljeSwgY29u
c3QgU3RyaW5nJiBzb3VyY2VGaWxlLCB1bnNpZ25lZCBzaG9ydCBzdGF0dXNDb2RlLCBpbnQgbGlu
ZU51bWJlciwgaW50IGNvbHVtbk51bWJlcikKKyAgICBTZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2
ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIENhbkJ1YmJsZSBjYW5CdWJibGUsIElzQ2FuY2Vs
YWJsZSBjYW5jZWxhYmxlLCBjb25zdCBTdHJpbmcmIGRvY3VtZW50VVJJLCBjb25zdCBTdHJpbmcm
IHJlZmVycmVyLCBjb25zdCBTdHJpbmcmIGJsb2NrZWRVUkksIGNvbnN0IFN0cmluZyYgdmlvbGF0
ZWREaXJlY3RpdmUsIGNvbnN0IFN0cmluZyYgZWZmZWN0aXZlRGlyZWN0aXZlLCBjb25zdCBTdHJp
bmcmIG9yaWdpbmFsUG9saWN5LCBjb25zdCBTdHJpbmcmIHNvdXJjZUZpbGUsIHVuc2lnbmVkIHNo
b3J0IHN0YXR1c0NvZGUsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKQogICAgICAg
ICA6IEV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSkKICAgICAgICAgLCBtX2RvY3Vt
ZW50VVJJKGRvY3VtZW50VVJJKQogICAgICAgICAsIG1fcmVmZXJyZXIocmVmZXJyZXIpCkBAIC05
NSw3ICs5NSw3IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIFNlY3VyaXR5UG9saWN5
VmlvbGF0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiBpbml0
aWFsaXplciwgSXNUcnVzdGVkIGlzVHJ1c3RlZCkKKyAgICBTZWN1cml0eVBvbGljeVZpb2xhdGlv
bkV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IEluaXQmIGluaXRpYWxpemVyLCBJ
c1RydXN0ZWQgaXNUcnVzdGVkKQogICAgICAgICA6IEV2ZW50KHR5cGUsIGluaXRpYWxpemVyLCBp
c1RydXN0ZWQpCiAgICAgICAgICwgbV9kb2N1bWVudFVSSShpbml0aWFsaXplci5kb2N1bWVudFVS
SSkKICAgICAgICAgLCBtX3JlZmVycmVyKGluaXRpYWxpemVyLnJlZmVycmVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yUXVlcnkuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NlbGVjdG9yUXVlcnkuY3BwCmluZGV4IGFjZWMxYzIwNjExMWUzZmRkNmJjYmEzOGE4MzI4
OGVkMjAyZGEzYTcuLjU1ZGMyYzg3YTRhYzIwMmQ3MWFkZGE2NmQ1OTZiNWZlYTBiYzg4NTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5jcHAKQEAgLTIyMSw3ICsyMjEsNyBAQCBBTFdB
WVNfSU5MSU5FIHZvaWQgU2VsZWN0b3JEYXRhTGlzdDo6ZXhlY3V0ZUZhc3RQYXRoRm9ySWRTZWxl
Y3Rvcihjb25zdCBDb250YWluZQogICAgIEFTU0VSVChtX3NlbGVjdG9ycy5zaXplKCkgPT0gMSk7
CiAgICAgQVNTRVJUKGlkU2VsZWN0b3IpOwogCi0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBpZFRv
TWF0Y2ggPSBpZFNlbGVjdG9yLT52YWx1ZSgpOworICAgIGNvbnN0IEF0b21TdHJpbmcmIGlkVG9N
YXRjaCA9IGlkU2VsZWN0b3ItPnZhbHVlKCk7CiAgICAgaWYgKFVOTElLRUxZKHJvb3ROb2RlLnRy
ZWVTY29wZSgpLmNvbnRhaW5zTXVsdGlwbGVFbGVtZW50c1dpdGhJZChpZFRvTWF0Y2gpKSkgewog
ICAgICAgICBjb25zdCBWZWN0b3I8RWxlbWVudCo+KiBlbGVtZW50cyA9IHJvb3ROb2RlLnRyZWVT
Y29wZSgpLmdldEFsbEVsZW1lbnRzQnlJZChpZFRvTWF0Y2gpOwogICAgICAgICBBU1NFUlQoZWxl
bWVudHMpOwpAQCAtMjYzLDcgKzI2Myw3IEBAIHN0YXRpYyBDb250YWluZXJOb2RlJiBmaWx0ZXJS
b290QnlJZChDb250YWluZXJOb2RlJiByb290Tm9kZSwgY29uc3QgQ1NTU2VsZWN0b3ImCiAgICAg
Ym9vbCBpbkFkamFjZW50Q2hhaW4gPSBmYWxzZTsKICAgICBmb3IgKDsgc2VsZWN0b3I7IHNlbGVj
dG9yID0gc2VsZWN0b3ItPnRhZ0hpc3RvcnkoKSkgewogICAgICAgICBpZiAoY2FuQmVVc2VkRm9y
SWRGYXN0UGF0aCgqc2VsZWN0b3IpKSB7Ci0gICAgICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcm
IGlkVG9NYXRjaCA9IHNlbGVjdG9yLT52YWx1ZSgpOworICAgICAgICAgICAgY29uc3QgQXRvbVN0
cmluZyYgaWRUb01hdGNoID0gc2VsZWN0b3ItPnZhbHVlKCk7CiAgICAgICAgICAgICBpZiAoQ29u
dGFpbmVyTm9kZSogc2VhcmNoUm9vdCA9IHJvb3ROb2RlLnRyZWVTY29wZSgpLmdldEVsZW1lbnRC
eUlkKGlkVG9NYXRjaCkpIHsKICAgICAgICAgICAgICAgICBpZiAoTElLRUxZKCFyb290Tm9kZS50
cmVlU2NvcGUoKS5jb250YWluc011bHRpcGxlRWxlbWVudHNXaXRoSWQoaWRUb01hdGNoKSkpIHsK
ICAgICAgICAgICAgICAgICAgICAgaWYgKGluQWRqYWNlbnRDaGFpbikKQEAgLTI4Myw3ICsyODMs
NyBAQCBzdGF0aWMgQ29udGFpbmVyTm9kZSYgZmlsdGVyUm9vdEJ5SWQoQ29udGFpbmVyTm9kZSYg
cm9vdE5vZGUsIGNvbnN0IENTU1NlbGVjdG9yJgogICAgIHJldHVybiByb290Tm9kZTsKIH0KIAot
c3RhdGljIEFMV0FZU19JTkxJTkUgYm9vbCBsb2NhbE5hbWVNYXRjaGVzKGNvbnN0IEVsZW1lbnQm
IGVsZW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lLCBjb25zdCBBdG9taWNTdHJp
bmcmIGxvd2VyY2FzZUxvY2FsTmFtZSkKK3N0YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wgbG9jYWxO
YW1lTWF0Y2hlcyhjb25zdCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBBdG9tU3RyaW5nJiBsb2Nh
bE5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIGxvd2VyY2FzZUxvY2FsTmFtZSkKIHsKICAgICBpZiAo
ZWxlbWVudC5pc0hUTUxFbGVtZW50KCkgJiYgZWxlbWVudC5kb2N1bWVudCgpLmlzSFRNTERvY3Vt
ZW50KCkpCiAgICAgICAgIHJldHVybiBlbGVtZW50LmxvY2FsTmFtZSgpID09IGxvd2VyY2FzZUxv
Y2FsTmFtZTsKQEAgLTI5Miw3ICsyOTIsNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBib29sIGxv
Y2FsTmFtZU1hdGNoZXMoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgQXRvbWljUwogfQog
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgU2VsZWN0b3JRdWVyeVRyYWl0Pgotc3RhdGljIGlubGluZSB2
b2lkIGVsZW1lbnRzRm9yTG9jYWxOYW1lKGNvbnN0IENvbnRhaW5lck5vZGUmIHJvb3ROb2RlLCBj
b25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBsb3dlcmNh
c2VMb2NhbE5hbWUsIHR5cGVuYW1lIFNlbGVjdG9yUXVlcnlUcmFpdDo6T3V0cHV0VHlwZSYgb3V0
cHV0KQorc3RhdGljIGlubGluZSB2b2lkIGVsZW1lbnRzRm9yTG9jYWxOYW1lKGNvbnN0IENvbnRh
aW5lck5vZGUmIHJvb3ROb2RlLCBjb25zdCBBdG9tU3RyaW5nJiBsb2NhbE5hbWUsIGNvbnN0IEF0
b21TdHJpbmcmIGxvd2VyY2FzZUxvY2FsTmFtZSwgdHlwZW5hbWUgU2VsZWN0b3JRdWVyeVRyYWl0
OjpPdXRwdXRUeXBlJiBvdXRwdXQpCiB7CiAgICAgaWYgKGxvY2FsTmFtZSA9PSBsb3dlcmNhc2VM
b2NhbE5hbWUpIHsKICAgICAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogZWxlbWVudERlc2NlbmRh
bnRzKGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9kZSY+KHJvb3ROb2RlKSkpIHsKQEAgLTMzMSw5ICsz
MzEsOSBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgU2VsZWN0b3JEYXRhTGlzdDo6ZXhlY3V0ZVNpbmds
ZVRhZ05hbWVTZWxlY3RvckRhdGEoY29uc3QgQ29udAogICAgIEFTU0VSVChpc1NpbmdsZVRhZ05h
bWVTZWxlY3Rvcigqc2VsZWN0b3JEYXRhLnNlbGVjdG9yKSk7CiAKICAgICBjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdRdWFsaWZpZWROYW1lID0gc2VsZWN0b3JEYXRhLnNlbGVjdG9yLT50YWdRTmFt
ZSgpOwotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgc2VsZWN0b3JMb2NhbE5hbWUgPSB0YWdRdWFs
aWZpZWROYW1lLmxvY2FsTmFtZSgpOwotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgc2VsZWN0b3JM
b3dlcmNhc2VMb2NhbE5hbWUgPSBzZWxlY3RvckRhdGEuc2VsZWN0b3ItPnRhZ0xvd2VyY2FzZUxv
Y2FsTmFtZSgpOwotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgc2VsZWN0b3JOYW1lc3BhY2VVUkkg
PSB0YWdRdWFsaWZpZWROYW1lLm5hbWVzcGFjZVVSSSgpOworICAgIGNvbnN0IEF0b21TdHJpbmcm
IHNlbGVjdG9yTG9jYWxOYW1lID0gdGFnUXVhbGlmaWVkTmFtZS5sb2NhbE5hbWUoKTsKKyAgICBj
b25zdCBBdG9tU3RyaW5nJiBzZWxlY3Rvckxvd2VyY2FzZUxvY2FsTmFtZSA9IHNlbGVjdG9yRGF0
YS5zZWxlY3Rvci0+dGFnTG93ZXJjYXNlTG9jYWxOYW1lKCk7CisgICAgY29uc3QgQXRvbVN0cmlu
ZyYgc2VsZWN0b3JOYW1lc3BhY2VVUkkgPSB0YWdRdWFsaWZpZWROYW1lLm5hbWVzcGFjZVVSSSgp
OwogCiAgICAgaWYgKHNlbGVjdG9yTmFtZXNwYWNlVVJJID09IHN0YXJBdG9tKCkpIHsKICAgICAg
ICAgaWYgKHNlbGVjdG9yTG9jYWxOYW1lICE9IHN0YXJBdG9tKCkpIHsKQEAgLTM2MSw3ICszNjEs
NyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgU2VsZWN0b3JEYXRhTGlzdDo6ZXhlY3V0ZVNpbmdsZUNs
YXNzTmFtZVNlbGVjdG9yRGF0YShjb25zdCBDbwogICAgIEFTU0VSVChtX3NlbGVjdG9ycy5zaXpl
KCkgPT0gMSk7CiAgICAgQVNTRVJUKGlzU2luZ2xlQ2xhc3NOYW1lU2VsZWN0b3IoKnNlbGVjdG9y
RGF0YS5zZWxlY3RvcikpOwogCi0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBjbGFzc05hbWUgPSBz
ZWxlY3RvckRhdGEuc2VsZWN0b3ItPnZhbHVlKCk7CisgICAgY29uc3QgQXRvbVN0cmluZyYgY2xh
c3NOYW1lID0gc2VsZWN0b3JEYXRhLnNlbGVjdG9yLT52YWx1ZSgpOwogICAgIGZvciAoYXV0byYg
ZWxlbWVudCA6IGVsZW1lbnREZXNjZW5kYW50cyhjb25zdF9jYXN0PENvbnRhaW5lck5vZGUmPihy
b290Tm9kZSkpKSB7CiAgICAgICAgIGlmIChlbGVtZW50Lmhhc0NsYXNzKCkgJiYgZWxlbWVudC5j
bGFzc05hbWVzKCkuY29udGFpbnMoY2xhc3NOYW1lKSkgewogICAgICAgICAgICAgU2VsZWN0b3JR
dWVyeVRyYWl0OjphcHBlbmRPdXRwdXRGb3JFbGVtZW50KG91dHB1dCwgJmVsZW1lbnQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yUXVlcnkuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmgKaW5kZXggYzZhNDQwOTVhZDQxNTIyYWE3YzYzMjNkMDI2
MzBmYjcwMjg0NWFlOC4uMGRiZjgyNjY0ODAzYzA1NmMyMTg4NGEzMDY4ZDAwNmEyMjdmM2ViMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yUXVlcnkuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5oCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVk
ZSAiU2VsZWN0b3JDb21waWxlci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2guaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nSGFzaC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAppbmRleCA2ZTg4NTFlNWI4MGZjY2I5YTFj
MDVjMmE5Y2IxYjgyZDc2MDEwNzM5Li42OTYzYjY4Mzc5ZDg4ZjI3YTg0ZTJmMWRhNjUxNTM4MTgw
NWIyOTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCkBAIC0yMTgsMTMgKzIxOCwxMyBA
QCBIVE1MU2xvdEVsZW1lbnQqIFNoYWRvd1Jvb3Q6OmZpbmRBc3NpZ25lZFNsb3QoY29uc3QgTm9k
ZSYgbm9kZSkKICAgICByZXR1cm4gbV9zbG90QXNzaWdubWVudC0+ZmluZEFzc2lnbmVkU2xvdChu
b2RlLCAqdGhpcyk7CiB9CiAKLXZvaWQgU2hhZG93Um9vdDo6cmVuYW1lU2xvdEVsZW1lbnQoSFRN
TFNsb3RFbGVtZW50JiBzbG90LCBjb25zdCBBdG9taWNTdHJpbmcmIG9sZE5hbWUsIGNvbnN0IEF0
b21pY1N0cmluZyYgbmV3TmFtZSkKK3ZvaWQgU2hhZG93Um9vdDo6cmVuYW1lU2xvdEVsZW1lbnQo
SFRNTFNsb3RFbGVtZW50JiBzbG90LCBjb25zdCBBdG9tU3RyaW5nJiBvbGROYW1lLCBjb25zdCBB
dG9tU3RyaW5nJiBuZXdOYW1lKQogewogICAgIEFTU0VSVChtX3Nsb3RBc3NpZ25tZW50KTsKICAg
ICByZXR1cm4gbV9zbG90QXNzaWdubWVudC0+cmVuYW1lU2xvdEVsZW1lbnQoc2xvdCwgb2xkTmFt
ZSwgbmV3TmFtZSwgKnRoaXMpOwogfQogCi12b2lkIFNoYWRvd1Jvb3Q6OmFkZFNsb3RFbGVtZW50
QnlOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgSFRNTFNsb3RFbGVtZW50JiBzbG90KQor
dm9pZCBTaGFkb3dSb290OjphZGRTbG90RWxlbWVudEJ5TmFtZShjb25zdCBBdG9tU3RyaW5nJiBu
YW1lLCBIVE1MU2xvdEVsZW1lbnQmIHNsb3QpCiB7CiAgICAgQVNTRVJUKCZzbG90LnJvb3ROb2Rl
KCkgPT0gdGhpcyk7CiAgICAgaWYgKCFtX3Nsb3RBc3NpZ25tZW50KQpAQCAtMjMzLDcgKzIzMyw3
IEBAIHZvaWQgU2hhZG93Um9vdDo6YWRkU2xvdEVsZW1lbnRCeU5hbWUoY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lLCBIVE1MU2xvdEVsZW1lbnQmCiAgICAgcmV0dXJuIG1fc2xvdEFzc2lnbm1lbnQt
PmFkZFNsb3RFbGVtZW50QnlOYW1lKG5hbWUsIHNsb3QsICp0aGlzKTsKIH0KIAotdm9pZCBTaGFk
b3dSb290OjpyZW1vdmVTbG90RWxlbWVudEJ5TmFtZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUs
IEhUTUxTbG90RWxlbWVudCYgc2xvdCwgQ29udGFpbmVyTm9kZSYgb2xkUGFyZW50T2ZSZW1vdmVk
VHJlZSkKK3ZvaWQgU2hhZG93Um9vdDo6cmVtb3ZlU2xvdEVsZW1lbnRCeU5hbWUoY29uc3QgQXRv
bVN0cmluZyYgbmFtZSwgSFRNTFNsb3RFbGVtZW50JiBzbG90LCBDb250YWluZXJOb2RlJiBvbGRQ
YXJlbnRPZlJlbW92ZWRUcmVlKQogewogICAgIEFTU0VSVChtX3Nsb3RBc3NpZ25tZW50KTsKICAg
ICByZXR1cm4gbV9zbG90QXNzaWdubWVudC0+cmVtb3ZlU2xvdEVsZW1lbnRCeU5hbWUobmFtZSwg
c2xvdCwgJm9sZFBhcmVudE9mUmVtb3ZlZFRyZWUsICp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9v
dC5oCmluZGV4IDM2ZWY2MTRhMGQwMmIzZDg1M2Y0MGVhYTQ3NTBiYTU4NmUxODRkZWUuLjljYmVl
NWE3NTU2MmUyMTEzY2QzZThjZWFlN2E5ZjkyNzU0NjU3NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jv
b3QuaApAQCAtNzUsOSArNzUsOSBAQCBwdWJsaWM6CiAKICAgICBIVE1MU2xvdEVsZW1lbnQqIGZp
bmRBc3NpZ25lZFNsb3QoY29uc3QgTm9kZSYpOwogCi0gICAgdm9pZCByZW5hbWVTbG90RWxlbWVu
dChIVE1MU2xvdEVsZW1lbnQmLCBjb25zdCBBdG9taWNTdHJpbmcmIG9sZE5hbWUsIGNvbnN0IEF0
b21pY1N0cmluZyYgbmV3TmFtZSk7Ci0gICAgdm9pZCBhZGRTbG90RWxlbWVudEJ5TmFtZShjb25z
dCBBdG9taWNTdHJpbmcmLCBIVE1MU2xvdEVsZW1lbnQmKTsKLSAgICB2b2lkIHJlbW92ZVNsb3RF
bGVtZW50QnlOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYsIEhUTUxTbG90RWxlbWVudCYsIENvbnRh
aW5lck5vZGUmIG9sZFBhcmVudE9mUmVtb3ZlZFRyZWUpOworICAgIHZvaWQgcmVuYW1lU2xvdEVs
ZW1lbnQoSFRNTFNsb3RFbGVtZW50JiwgY29uc3QgQXRvbVN0cmluZyYgb2xkTmFtZSwgY29uc3Qg
QXRvbVN0cmluZyYgbmV3TmFtZSk7CisgICAgdm9pZCBhZGRTbG90RWxlbWVudEJ5TmFtZShjb25z
dCBBdG9tU3RyaW5nJiwgSFRNTFNsb3RFbGVtZW50Jik7CisgICAgdm9pZCByZW1vdmVTbG90RWxl
bWVudEJ5TmFtZShjb25zdCBBdG9tU3RyaW5nJiwgSFRNTFNsb3RFbGVtZW50JiwgQ29udGFpbmVy
Tm9kZSYgb2xkUGFyZW50T2ZSZW1vdmVkVHJlZSk7CiAgICAgdm9pZCBzbG90RmFsbGJhY2tEaWRD
aGFuZ2UoSFRNTFNsb3RFbGVtZW50Jik7CiAgICAgdm9pZCByZXNvbHZlU2xvdHNCZWZvcmVOb2Rl
SW5zZXJ0aW9uT3JSZW1vdmFsKCk7CiAgICAgdm9pZCB3aWxsUmVtb3ZlQWxsQ2hpbGRyZW4oQ29u
dGFpbmVyTm9kZSYpOwpAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRSZW1v
dmVBbGxDaGlsZHJlbk9mU2hhZG93SG9zdCgpOwogICAgIHZvaWQgZGlkQ2hhbmdlRGVmYXVsdFNs
b3QoKTsKICAgICB2b2lkIGhvc3RDaGlsZEVsZW1lbnREaWRDaGFuZ2UoY29uc3QgRWxlbWVudCYp
OwotICAgIHZvaWQgaG9zdENoaWxkRWxlbWVudERpZENoYW5nZVNsb3RBdHRyaWJ1dGUoRWxlbWVu
dCYsIGNvbnN0IEF0b21pY1N0cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3
VmFsdWUpOworICAgIHZvaWQgaG9zdENoaWxkRWxlbWVudERpZENoYW5nZVNsb3RBdHRyaWJ1dGUo
RWxlbWVudCYsIGNvbnN0IEF0b21TdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBBdG9tU3RyaW5nJiBu
ZXdWYWx1ZSk7CiAKICAgICBjb25zdCBWZWN0b3I8Tm9kZSo+KiBhc3NpZ25lZE5vZGVzRm9yU2xv
dChjb25zdCBIVE1MU2xvdEVsZW1lbnQmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL1NpbXVsYXRlZENsaWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW11bGF0ZWRDbGlj
ay5jcHAKaW5kZXggMjQxOTljMDIwZmNkNzkwNzg4YjFkOGJlNzZkNGMzZTczMTZlYzMzNy4uMDVl
M2FiZGZhNjg5OWZhMDdhODc0ZTUwOWYwYjU4MDU4YTgyMTIwMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL1NpbXVsYXRlZENsaWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
U2ltdWxhdGVkQ2xpY2suY3BwCkBAIC0zOSwxMyArMzksMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgU2ltdWxhdGVkTW91c2VFdmVudCBmaW5hbCA6IHB1YmxpYyBNb3VzZUV2ZW50IHsK
ICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lOTElORShTaW11bGF0ZWRNb3VzZUV2ZW50KTsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNpbXVsYXRlZE1vdXNlRXZlbnQ+IGNyZWF0ZShjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIFJl
ZlB0cjxFdmVudD4mJiB1bmRlcmx5aW5nRXZlbnQsIEVsZW1lbnQmIHRhcmdldCwgU2ltdWxhdGVk
Q2xpY2tTb3VyY2Ugc291cmNlKQorICAgIHN0YXRpYyBSZWY8U2ltdWxhdGVkTW91c2VFdmVudD4g
Y3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYm
IHZpZXcsIFJlZlB0cjxFdmVudD4mJiB1bmRlcmx5aW5nRXZlbnQsIEVsZW1lbnQmIHRhcmdldCwg
U2ltdWxhdGVkQ2xpY2tTb3VyY2Ugc291cmNlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU2ltdWxhdGVkTW91c2VFdmVudChldmVudFR5cGUsIFdURk1vdmUodmlldyksIFdU
Rk1vdmUodW5kZXJseWluZ0V2ZW50KSwgdGFyZ2V0LCBzb3VyY2UpKTsKICAgICB9CiAKIHByaXZh
dGU6Ci0gICAgU2ltdWxhdGVkTW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIFJlZlB0cjxFdmVudD4mJiB1bmRlcmx5aW5n
RXZlbnQsIEVsZW1lbnQmIHRhcmdldCwgU2ltdWxhdGVkQ2xpY2tTb3VyY2Ugc291cmNlKQorICAg
IFNpbXVsYXRlZE1vdXNlRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8
V2luZG93UHJveHk+JiYgdmlldywgUmVmUHRyPEV2ZW50PiYmIHVuZGVybHlpbmdFdmVudCwgRWxl
bWVudCYgdGFyZ2V0LCBTaW11bGF0ZWRDbGlja1NvdXJjZSBzb3VyY2UpCiAgICAgICAgIDogTW91
c2VFdmVudChldmVudFR5cGUsIENhbkJ1YmJsZTo6WWVzLCBJc0NhbmNlbGFibGU6OlllcywgSXND
b21wb3NlZDo6WWVzLAogICAgICAgICAgICAgdW5kZXJseWluZ0V2ZW50ID8gdW5kZXJseWluZ0V2
ZW50LT50aW1lU3RhbXAoKSA6IE1vbm90b25pY1RpbWU6Om5vdygpLCBXVEZNb3ZlKHZpZXcpLCAv
KiBkZXRhaWwgKi8gMCwKICAgICAgICAgICAgIHsgfSwgeyB9LCB7IH0sIG1vZGlmaWVyc0Zyb21V
bmRlcmx5aW5nRXZlbnQodW5kZXJseWluZ0V2ZW50KSwgMCwgMCwgbnVsbHB0ciwgMCwgMCwgbnVs
bHB0ciwgSXNTaW11bGF0ZWQ6OlllcywKQEAgLTc2LDcgKzc2LDcgQEAgcHJpdmF0ZToKICAgICB9
CiB9OwogCi1zdGF0aWMgdm9pZCBzaW11bGF0ZU1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUsIEVsZW1lbnQmIGVsZW1lbnQsIEV2ZW50KiB1bmRlcmx5aW5nRXZlbnQsIFNp
bXVsYXRlZENsaWNrU291cmNlIHNvdXJjZSkKK3N0YXRpYyB2b2lkIHNpbXVsYXRlTW91c2VFdmVu
dChjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIEVsZW1lbnQmIGVsZW1lbnQsIEV2ZW50KiB1
bmRlcmx5aW5nRXZlbnQsIFNpbXVsYXRlZENsaWNrU291cmNlIHNvdXJjZSkKIHsKICAgICBlbGVt
ZW50LmRpc3BhdGNoRXZlbnQoU2ltdWxhdGVkTW91c2VFdmVudDo6Y3JlYXRlKGV2ZW50VHlwZSwg
ZWxlbWVudC5kb2N1bWVudCgpLndpbmRvd1Byb3h5KCksIHVuZGVybHlpbmdFdmVudCwgZWxlbWVu
dCwgc291cmNlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2xvdEFzc2ln
bm1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50LmNwcAppbmRleCBl
MzljZmQ0OWNkZmRiOWRmMjA5ODlhNjU3NjQyMjI3YTA3M2JjM2MxLi5hNDE5ZGRhNTI4YWNjYmRh
NmRlOWRkZjFhNTQ4NjRjZmRmOTE2MGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
U2xvdEFzc2lnbm1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TbG90QXNzaWdubWVu
dC5jcHAKQEAgLTM1LDEyICszNSwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5h
bWVzcGFjZSBIVE1MTmFtZXM7CiAKLXN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHNsb3ROYW1l
RnJvbUF0dHJpYnV0ZVZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCitzdGF0aWMgY29u
c3QgQXRvbVN0cmluZyYgc2xvdE5hbWVGcm9tQXR0cmlidXRlVmFsdWUoY29uc3QgQXRvbVN0cmlu
ZyYgdmFsdWUpCiB7CiAgICAgcmV0dXJuIHZhbHVlID09IG51bGxBdG9tKCkgPyBTbG90QXNzaWdu
bWVudDo6ZGVmYXVsdFNsb3ROYW1lKCkgOiB2YWx1ZTsKIH0KIAotc3RhdGljIGNvbnN0IEF0b21p
Y1N0cmluZyYgc2xvdE5hbWVGcm9tU2xvdEF0dHJpYnV0ZShjb25zdCBOb2RlJiBjaGlsZCkKK3N0
YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBzbG90TmFtZUZyb21TbG90QXR0cmlidXRlKGNvbnN0IE5v
ZGUmIGNoaWxkKQogewogICAgIGlmIChpczxUZXh0PihjaGlsZCkpCiAgICAgICAgIHJldHVybiBT
bG90QXNzaWdubWVudDo6ZGVmYXVsdFNsb3ROYW1lKCk7CkBAIC00OSw3ICs0OSw3IEBAIHN0YXRp
YyBjb25zdCBBdG9taWNTdHJpbmcmIHNsb3ROYW1lRnJvbVNsb3RBdHRyaWJ1dGUoY29uc3QgTm9k
ZSYgY2hpbGQpCiB9CiAKICNpZiAhQVNTRVJUX0RJU0FCTEVECi1zdGF0aWMgSFRNTFNsb3RFbGVt
ZW50KiBmaW5kU2xvdEVsZW1lbnQoU2hhZG93Um9vdCYgc2hhZG93Um9vdCwgY29uc3QgQXRvbWlj
U3RyaW5nJiBzbG90TmFtZSkKK3N0YXRpYyBIVE1MU2xvdEVsZW1lbnQqIGZpbmRTbG90RWxlbWVu
dChTaGFkb3dSb290JiBzaGFkb3dSb290LCBjb25zdCBBdG9tU3RyaW5nJiBzbG90TmFtZSkKIHsK
ICAgICBmb3IgKGF1dG8mIHNsb3RFbGVtZW50IDogZGVzY2VuZGFudHNPZlR5cGU8SFRNTFNsb3RF
bGVtZW50PihzaGFkb3dSb290KSkgewogICAgICAgICBpZiAoc2xvdE5hbWVGcm9tQXR0cmlidXRl
VmFsdWUoc2xvdEVsZW1lbnQuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihuYW1lQXR0
cikpID09IHNsb3ROYW1lKQpAQCAtOTQsNyArOTQsNyBAQCBpbmxpbmUgYm9vbCBTbG90QXNzaWdu
bWVudDo6aGFzQXNzaWduZWROb2RlcyhTaGFkb3dSb290JiBzaGFkb3dSb290LCBTbG90JiBzbG90
KQogICAgIHJldHVybiAhc2xvdC5hc3NpZ25lZE5vZGVzLmlzRW1wdHkoKTsKIH0KIAotdm9pZCBT
bG90QXNzaWdubWVudDo6cmVuYW1lU2xvdEVsZW1lbnQoSFRNTFNsb3RFbGVtZW50JiBzbG90RWxl
bWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBvbGROYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIG5l
d05hbWUsIFNoYWRvd1Jvb3QmIHNoYWRvd1Jvb3QpCit2b2lkIFNsb3RBc3NpZ25tZW50OjpyZW5h
bWVTbG90RWxlbWVudChIVE1MU2xvdEVsZW1lbnQmIHNsb3RFbGVtZW50LCBjb25zdCBBdG9tU3Ry
aW5nJiBvbGROYW1lLCBjb25zdCBBdG9tU3RyaW5nJiBuZXdOYW1lLCBTaGFkb3dSb290JiBzaGFk
b3dSb290KQogewogICAgIEFTU0VSVChtX3Nsb3RFbGVtZW50c0ZvckNvbnNpc3RlbmN5Q2hlY2su
Y29udGFpbnMoJnNsb3RFbGVtZW50KSk7CiAKQEAgLTEwNCw3ICsxMDQsNyBAQCB2b2lkIFNsb3RB
c3NpZ25tZW50OjpyZW5hbWVTbG90RWxlbWVudChIVE1MU2xvdEVsZW1lbnQmIHNsb3RFbGVtZW50
LCBjb25zdCBBdG9taQogICAgIGFkZFNsb3RFbGVtZW50QnlOYW1lKG5ld05hbWUsIHNsb3RFbGVt
ZW50LCBzaGFkb3dSb290KTsKIH0KIAotdm9pZCBTbG90QXNzaWdubWVudDo6YWRkU2xvdEVsZW1l
bnRCeU5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBIVE1MU2xvdEVsZW1lbnQmIHNsb3RF
bGVtZW50LCBTaGFkb3dSb290JiBzaGFkb3dSb290KQordm9pZCBTbG90QXNzaWdubWVudDo6YWRk
U2xvdEVsZW1lbnRCeU5hbWUoY29uc3QgQXRvbVN0cmluZyYgbmFtZSwgSFRNTFNsb3RFbGVtZW50
JiBzbG90RWxlbWVudCwgU2hhZG93Um9vdCYgc2hhZG93Um9vdCkKIHsKICNpZm5kZWYgTkRFQlVH
CiAgICAgQVNTRVJUKCFtX3Nsb3RFbGVtZW50c0ZvckNvbnNpc3RlbmN5Q2hlY2suY29udGFpbnMo
JnNsb3RFbGVtZW50KSk7CkBAIC0xNDMsNyArMTQzLDcgQEAgdm9pZCBTbG90QXNzaWdubWVudDo6
YWRkU2xvdEVsZW1lbnRCeU5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBIVE1MU2xvdEVs
ZW0KICAgICByZXNvbHZlU2xvdHNBZnRlclNsb3RNdXRhdGlvbihzaGFkb3dSb290LCBTbG90TXV0
YXRpb25UeXBlOjpJbnNlcnRpb24pOwogfQogCi12b2lkIFNsb3RBc3NpZ25tZW50OjpyZW1vdmVT
bG90RWxlbWVudEJ5TmFtZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIEhUTUxTbG90RWxlbWVu
dCYgc2xvdEVsZW1lbnQsIENvbnRhaW5lck5vZGUqIG9sZFBhcmVudE9mUmVtb3ZlZFRyZWVGb3JS
ZW1vdmFsLCBTaGFkb3dSb290JiBzaGFkb3dSb290KQordm9pZCBTbG90QXNzaWdubWVudDo6cmVt
b3ZlU2xvdEVsZW1lbnRCeU5hbWUoY29uc3QgQXRvbVN0cmluZyYgbmFtZSwgSFRNTFNsb3RFbGVt
ZW50JiBzbG90RWxlbWVudCwgQ29udGFpbmVyTm9kZSogb2xkUGFyZW50T2ZSZW1vdmVkVHJlZUZv
clJlbW92YWwsIFNoYWRvd1Jvb3QmIHNoYWRvd1Jvb3QpCiB7CiAjaWZuZGVmIE5ERUJVRwogICAg
IEFTU0VSVChtX3Nsb3RFbGVtZW50c0ZvckNvbnNpc3RlbmN5Q2hlY2suY29udGFpbnMoJnNsb3RF
bGVtZW50KSk7CkBAIC0yODksNyArMjg5LDcgQEAgdm9pZCBTbG90QXNzaWdubWVudDo6d2lsbFJl
bW92ZUFsbENoaWxkcmVuKFNoYWRvd1Jvb3QmIHNoYWRvd1Jvb3QpCiAgICAgICAgIHJlc29sdmVB
bGxTbG90RWxlbWVudHMoc2hhZG93Um9vdCk7CiB9CiAKLXZvaWQgU2xvdEFzc2lnbm1lbnQ6OmRp
ZENoYW5nZVNsb3QoY29uc3QgQXRvbWljU3RyaW5nJiBzbG90QXR0clZhbHVlLCBTaGFkb3dSb290
JiBzaGFkb3dSb290KQordm9pZCBTbG90QXNzaWdubWVudDo6ZGlkQ2hhbmdlU2xvdChjb25zdCBB
dG9tU3RyaW5nJiBzbG90QXR0clZhbHVlLCBTaGFkb3dSb290JiBzaGFkb3dSb290KQogewogICAg
IGF1dG8mIHNsb3ROYW1lID0gc2xvdE5hbWVGcm9tQXR0cmlidXRlVmFsdWUoc2xvdEF0dHJWYWx1
ZSk7CiAgICAgYXV0byogc2xvdCA9IG1fc2xvdHMuZ2V0KHNsb3ROYW1lKTsKQEAgLTMxNyw3ICsz
MTcsNyBAQCB2b2lkIFNsb3RBc3NpZ25tZW50Ojpob3N0Q2hpbGRFbGVtZW50RGlkQ2hhbmdlKGNv
bnN0IEVsZW1lbnQmIGNoaWxkRWxlbWVudCwgU2hhZAogY29uc3QgVmVjdG9yPE5vZGUqPiogU2xv
dEFzc2lnbm1lbnQ6OmFzc2lnbmVkTm9kZXNGb3JTbG90KGNvbnN0IEhUTUxTbG90RWxlbWVudCYg
c2xvdEVsZW1lbnQsIFNoYWRvd1Jvb3QmIHNoYWRvd1Jvb3QpCiB7CiAgICAgQVNTRVJUKHNsb3RF
bGVtZW50LmNvbnRhaW5pbmdTaGFkb3dSb290KCkgPT0gJnNoYWRvd1Jvb3QpOwotICAgIGNvbnN0
IEF0b21pY1N0cmluZyYgc2xvdE5hbWUgPSBzbG90TmFtZUZyb21BdHRyaWJ1dGVWYWx1ZShzbG90
RWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKG5hbWVBdHRyKSk7CisgICAg
Y29uc3QgQXRvbVN0cmluZyYgc2xvdE5hbWUgPSBzbG90TmFtZUZyb21BdHRyaWJ1dGVWYWx1ZShz
bG90RWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKG5hbWVBdHRyKSk7CiAg
ICAgYXV0byogc2xvdCA9IG1fc2xvdHMuZ2V0KHNsb3ROYW1lKTsKICAgICBSRUxFQVNFX0FTU0VS
VChzbG90KTsKIApAQCAtMzM0LDcgKzMzNCw3IEBAIGNvbnN0IFZlY3RvcjxOb2RlKj4qIFNsb3RB
c3NpZ25tZW50Ojphc3NpZ25lZE5vZGVzRm9yU2xvdChjb25zdCBIVE1MU2xvdEVsZW1lbnQmCiAg
ICAgcmV0dXJuICZzbG90LT5hc3NpZ25lZE5vZGVzOwogfQogCi1jb25zdCBBdG9taWNTdHJpbmcm
IFNsb3RBc3NpZ25tZW50OjpzbG90TmFtZUZvckhvc3RDaGlsZChjb25zdCBOb2RlJiBjaGlsZCkg
Y29uc3QKK2NvbnN0IEF0b21TdHJpbmcmIFNsb3RBc3NpZ25tZW50OjpzbG90TmFtZUZvckhvc3RD
aGlsZChjb25zdCBOb2RlJiBjaGlsZCkgY29uc3QKIHsKICAgICByZXR1cm4gc2xvdE5hbWVGcm9t
U2xvdEF0dHJpYnV0ZShjaGlsZCk7CiB9CkBAIC0zOTksNyArMzk5LDcgQEAgdm9pZCBTbG90QXNz
aWdubWVudDo6YXNzaWduU2xvdHMoU2hhZG93Um9vdCYgc2hhZG93Um9vdCkKICAgICAgICAgZW50
cnkudmFsdWUtPmFzc2lnbmVkTm9kZXMuc2hyaW5rVG9GaXQoKTsKIH0KIAotdm9pZCBTbG90QXNz
aWdubWVudDo6YXNzaWduVG9TbG90KE5vZGUmIGNoaWxkLCBjb25zdCBBdG9taWNTdHJpbmcmIHNs
b3ROYW1lKQordm9pZCBTbG90QXNzaWdubWVudDo6YXNzaWduVG9TbG90KE5vZGUmIGNoaWxkLCBj
b25zdCBBdG9tU3RyaW5nJiBzbG90TmFtZSkKIHsKICAgICBBU1NFUlQoIXNsb3ROYW1lLmlzTnVs
bCgpKTsKICAgICBpZiAoc2xvdE5hbWUgPT0gZGVmYXVsdFNsb3ROYW1lKCkpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TbG90QXNzaWdubWVudC5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1Nsb3RBc3NpZ25tZW50LmgKaW5kZXggNDYzNjczY2E1OTA3ZDk2MjdjZjc5YTYyNTkxYWE4
NzNkZjNkYzZlYS4uZjI0NjRhNjA5ZWU0MGM5NWE0ZDg4MWViZDhlMWE4YjYyZTc2YTJkOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50LmgKQEAgLTMxLDggKzMxLDggQEAKICNpbmNsdWRl
IDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYv
V2Vha1B0ci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgotI2luY2x1ZGUg
PHd0Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2guaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3Ry
aW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC00NiwxOSArNDYsMTkgQEAgcHVibGljOgogICAgIFNsb3RBc3NpZ25t
ZW50KCk7CiAgICAgdmlydHVhbCB+U2xvdEFzc2lnbm1lbnQoKTsKIAotICAgIHN0YXRpYyBjb25z
dCBBdG9taWNTdHJpbmcmIGRlZmF1bHRTbG90TmFtZSgpIHsgcmV0dXJuIGVtcHR5QXRvbSgpOyB9
CisgICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGRlZmF1bHRTbG90TmFtZSgpIHsgcmV0dXJu
IGVtcHR5QXRvbSgpOyB9CiAKICAgICBIVE1MU2xvdEVsZW1lbnQqIGZpbmRBc3NpZ25lZFNsb3Qo
Y29uc3QgTm9kZSYsIFNoYWRvd1Jvb3QmKTsKIAotICAgIHZvaWQgcmVuYW1lU2xvdEVsZW1lbnQo
SFRNTFNsb3RFbGVtZW50JiwgY29uc3QgQXRvbWljU3RyaW5nJiBvbGROYW1lLCBjb25zdCBBdG9t
aWNTdHJpbmcmIG5ld05hbWUsIFNoYWRvd1Jvb3QmKTsKLSAgICB2b2lkIGFkZFNsb3RFbGVtZW50
QnlOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYsIEhUTUxTbG90RWxlbWVudCYsIFNoYWRvd1Jvb3Qm
KTsKLSAgICB2b2lkIHJlbW92ZVNsb3RFbGVtZW50QnlOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYs
IEhUTUxTbG90RWxlbWVudCYsIENvbnRhaW5lck5vZGUqIG9sZFBhcmVudE9mUmVtb3ZlZFRyZWVG
b3JSZW1vdmFsLCBTaGFkb3dSb290Jik7CisgICAgdm9pZCByZW5hbWVTbG90RWxlbWVudChIVE1M
U2xvdEVsZW1lbnQmLCBjb25zdCBBdG9tU3RyaW5nJiBvbGROYW1lLCBjb25zdCBBdG9tU3RyaW5n
JiBuZXdOYW1lLCBTaGFkb3dSb290Jik7CisgICAgdm9pZCBhZGRTbG90RWxlbWVudEJ5TmFtZShj
b25zdCBBdG9tU3RyaW5nJiwgSFRNTFNsb3RFbGVtZW50JiwgU2hhZG93Um9vdCYpOworICAgIHZv
aWQgcmVtb3ZlU2xvdEVsZW1lbnRCeU5hbWUoY29uc3QgQXRvbVN0cmluZyYsIEhUTUxTbG90RWxl
bWVudCYsIENvbnRhaW5lck5vZGUqIG9sZFBhcmVudE9mUmVtb3ZlZFRyZWVGb3JSZW1vdmFsLCBT
aGFkb3dSb290Jik7CiAgICAgdm9pZCBzbG90RmFsbGJhY2tEaWRDaGFuZ2UoSFRNTFNsb3RFbGVt
ZW50JiwgU2hhZG93Um9vdCYpOwogICAgIHZvaWQgcmVzb2x2ZVNsb3RzQmVmb3JlTm9kZUluc2Vy
dGlvbk9yUmVtb3ZhbChTaGFkb3dSb290Jik7CiAgICAgdm9pZCB3aWxsUmVtb3ZlQWxsQ2hpbGRy
ZW4oU2hhZG93Um9vdCYpOwogCi0gICAgdm9pZCBkaWRDaGFuZ2VTbG90KGNvbnN0IEF0b21pY1N0
cmluZyYsIFNoYWRvd1Jvb3QmKTsKLSAgICB2b2lkIGVucXVldWVTbG90Q2hhbmdlRXZlbnQoY29u
c3QgQXRvbWljU3RyaW5nJiwgU2hhZG93Um9vdCYpOworICAgIHZvaWQgZGlkQ2hhbmdlU2xvdChj
b25zdCBBdG9tU3RyaW5nJiwgU2hhZG93Um9vdCYpOworICAgIHZvaWQgZW5xdWV1ZVNsb3RDaGFu
Z2VFdmVudChjb25zdCBBdG9tU3RyaW5nJiwgU2hhZG93Um9vdCYpOwogCiAgICAgY29uc3QgVmVj
dG9yPE5vZGUqPiogYXNzaWduZWROb2Rlc0ZvclNsb3QoY29uc3QgSFRNTFNsb3RFbGVtZW50Jiwg
U2hhZG93Um9vdCYpOwogCkBAIC04NSwxNSArODUsMTUgQEAgcHJpdmF0ZToKICAgICBlbnVtIGNs
YXNzIFNsb3RNdXRhdGlvblR5cGUgeyBJbnNlcnRpb24sIFJlbW92YWwgfTsKICAgICB2b2lkIHJl
c29sdmVTbG90c0FmdGVyU2xvdE11dGF0aW9uKFNoYWRvd1Jvb3QmLCBTbG90TXV0YXRpb25UeXBl
LCBDb250YWluZXJOb2RlKiBvbGRQYXJlbnRPZlJlbW92ZWRUcmVlID0gbnVsbHB0cik7CiAKLSAg
ICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2xvdE5hbWVGb3JIb3N0Q2hpbGQoY29uc3Qg
Tm9kZSYpIGNvbnN0OworICAgIHZpcnR1YWwgY29uc3QgQXRvbVN0cmluZyYgc2xvdE5hbWVGb3JI
b3N0Q2hpbGQoY29uc3QgTm9kZSYpIGNvbnN0OwogCiAgICAgSFRNTFNsb3RFbGVtZW50KiBmaW5k
Rmlyc3RTbG90RWxlbWVudChTbG90JiwgU2hhZG93Um9vdCYpOwogICAgIHZvaWQgcmVzb2x2ZUFs
bFNsb3RFbGVtZW50cyhTaGFkb3dSb290Jik7CiAKICAgICB2b2lkIGFzc2lnblNsb3RzKFNoYWRv
d1Jvb3QmKTsKLSAgICB2b2lkIGFzc2lnblRvU2xvdChOb2RlJiBjaGlsZCwgY29uc3QgQXRvbWlj
U3RyaW5nJiBzbG90TmFtZSk7CisgICAgdm9pZCBhc3NpZ25Ub1Nsb3QoTm9kZSYgY2hpbGQsIGNv
bnN0IEF0b21TdHJpbmcmIHNsb3ROYW1lKTsKIAotICAgIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBz
dGQ6OnVuaXF1ZV9wdHI8U2xvdD4+IG1fc2xvdHM7CisgICAgSGFzaE1hcDxBdG9tU3RyaW5nLCBz
dGQ6OnVuaXF1ZV9wdHI8U2xvdD4+IG1fc2xvdHM7CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgSGFz
aFNldDxIVE1MU2xvdEVsZW1lbnQqPiBtX3Nsb3RFbGVtZW50c0ZvckNvbnNpc3RlbmN5Q2hlY2s7
CkBAIC0xMzYsNyArMTM2LDcgQEAgaW5saW5lIHZvaWQgU2hhZG93Um9vdDo6aG9zdENoaWxkRWxl
bWVudERpZENoYW5nZShjb25zdCBFbGVtZW50JiBjaGlsZEVsZW1lbnQpCiAgICAgICAgIG1fc2xv
dEFzc2lnbm1lbnQtPmhvc3RDaGlsZEVsZW1lbnREaWRDaGFuZ2UoY2hpbGRFbGVtZW50LCAqdGhp
cyk7CiB9CiAKLWlubGluZSB2b2lkIFNoYWRvd1Jvb3Q6Omhvc3RDaGlsZEVsZW1lbnREaWRDaGFu
Z2VTbG90QXR0cmlidXRlKEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgb2xk
VmFsdWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUpCitpbmxpbmUgdm9pZCBTaGFkb3dS
b290Ojpob3N0Q2hpbGRFbGVtZW50RGlkQ2hhbmdlU2xvdEF0dHJpYnV0ZShFbGVtZW50JiBlbGVt
ZW50LCBjb25zdCBBdG9tU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbVN0cmluZyYgbmV3VmFs
dWUpCiB7CiAgICAgaWYgKCFtX3Nsb3RBc3NpZ25tZW50KQogICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3BhY2VTcGxpdFN0cmluZy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU3BhY2VTcGxpdFN0cmluZy5jcHAKaW5kZXggMTBjNjlhYmU2MmE1ZTI1ODg1
YzMzOTg2ZGFhOWNmYzlhNDcwYWNlYS4uMThlMzg1ZTJhMjk5ZDBkYzM5YTMwNDBkMTkwYjdjYTMw
YjA4ZWUzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NwYWNlU3BsaXRTdHJpbmcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TcGFjZVNwbGl0U3RyaW5nLmNwcApAQCAtMjQs
NyArMjQsNyBAQAogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotI2luY2x1ZGUgPHd0
Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2guaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5n
SGFzaC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTc2LDcgKzc2LDcgQEAgYm9vbCBT
cGFjZVNwbGl0U3RyaW5nRGF0YTo6Y29udGFpbnNBbGwoU3BhY2VTcGxpdFN0cmluZ0RhdGEmIG90
aGVyKQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdHJ1Y3QgU3BhY2VTcGxpdFN0cmluZ1RhYmxl
S2V5VHJhaXRzIDogcHVibGljIEhhc2hUcmFpdHM8QXRvbWljU3RyaW5nPgorc3RydWN0IFNwYWNl
U3BsaXRTdHJpbmdUYWJsZUtleVRyYWl0cyA6IHB1YmxpYyBIYXNoVHJhaXRzPEF0b21TdHJpbmc+
CiB7CiAgICAgLy8gVGhlIG51bWJlciAyMDAgZm9yIHR5cGljYWxOdW1iZXJPZlNwYWNlU3BsaXRT
dHJpbmcgd2FzIGJhc2VkIG9uIHRoZSB0eXBpY2FsIG51bWJlciBvZiB1bmlxdWUgY2xhc3MgbmFt
ZXMKICAgICAvLyBvbiB0eXBpY2FsIHdlYnNpdGVzIG9uIEF1Z3VzdCAyMDEzLgpAQCAtODQsNyAr
ODQsNyBAQCBzdHJ1Y3QgU3BhY2VTcGxpdFN0cmluZ1RhYmxlS2V5VHJhaXRzIDogcHVibGljIEhh
c2hUcmFpdHM8QXRvbWljU3RyaW5nPgogICAgIHN0YXRpYyBjb25zdCBpbnQgbWluaW11bVRhYmxl
U2l6ZSA9IFdURjo6SGFzaFRhYmxlQ2FwYWNpdHlGb3JTaXplPHR5cGljYWxOdW1iZXJPZlNwYWNl
U3BsaXRTdHJpbmc+Ojp2YWx1ZTsKIH07CiAKLXR5cGVkZWYgSGFzaE1hcDxBdG9taWNTdHJpbmcs
IFNwYWNlU3BsaXRTdHJpbmdEYXRhKiwgQXRvbWljU3RyaW5nSGFzaCwgU3BhY2VTcGxpdFN0cmlu
Z1RhYmxlS2V5VHJhaXRzPiBTcGFjZVNwbGl0U3RyaW5nVGFibGU7Cit0eXBlZGVmIEhhc2hNYXA8
QXRvbVN0cmluZywgU3BhY2VTcGxpdFN0cmluZ0RhdGEqLCBBdG9tU3RyaW5nSGFzaCwgU3BhY2VT
cGxpdFN0cmluZ1RhYmxlS2V5VHJhaXRzPiBTcGFjZVNwbGl0U3RyaW5nVGFibGU7CiAKIHN0YXRp
YyBTcGFjZVNwbGl0U3RyaW5nVGFibGUmIHNwYWNlU3BsaXRTdHJpbmdUYWJsZSgpCiB7CkBAIC05
Miw3ICs5Miw3IEBAIHN0YXRpYyBTcGFjZVNwbGl0U3RyaW5nVGFibGUmIHNwYWNlU3BsaXRTdHJp
bmdUYWJsZSgpCiAgICAgcmV0dXJuIHRhYmxlOwogfQogCi12b2lkIFNwYWNlU3BsaXRTdHJpbmc6
OnNldChjb25zdCBBdG9taWNTdHJpbmcmIGlucHV0U3RyaW5nLCBib29sIHNob3VsZEZvbGRDYXNl
KQordm9pZCBTcGFjZVNwbGl0U3RyaW5nOjpzZXQoY29uc3QgQXRvbVN0cmluZyYgaW5wdXRTdHJp
bmcsIGJvb2wgc2hvdWxkRm9sZENhc2UpCiB7CiAgICAgaWYgKGlucHV0U3RyaW5nLmlzTnVsbCgp
KSB7CiAgICAgICAgIGNsZWFyKCk7CkBAIC0xNTUsMzUgKzE1NSwzNSBAQCBwcml2YXRlOgogICAg
IHVuc2lnbmVkIG1fdG9rZW5Db3VudDsKIH07CiAKLWNsYXNzIFRva2VuQXRvbWljU3RyaW5nSW5p
dGlhbGl6ZXIgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRva2VuQXRvbWljU3RyaW5nSW5p
dGlhbGl6ZXIpOworY2xhc3MgVG9rZW5BdG9tU3RyaW5nSW5pdGlhbGl6ZXIgeworICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKFRva2VuQXRvbVN0cmluZ0luaXRpYWxpemVyKTsKIHB1YmxpYzoKLSAg
ICBUb2tlbkF0b21pY1N0cmluZ0luaXRpYWxpemVyKEF0b21pY1N0cmluZyogbWVtb3J5KSA6IG1f
bWVtb3J5QnVja2V0KG1lbW9yeSkgeyB9CisgICAgVG9rZW5BdG9tU3RyaW5nSW5pdGlhbGl6ZXIo
QXRvbVN0cmluZyogbWVtb3J5KSA6IG1fbWVtb3J5QnVja2V0KG1lbW9yeSkgeyB9CiAKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBib29sIHByb2Nlc3NUb2tlbihjb25zdCBD
aGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgewotICAgICAg
ICBuZXcgKE5vdE51bGwsIG1fbWVtb3J5QnVja2V0KSBBdG9taWNTdHJpbmcoY2hhcmFjdGVycywg
bGVuZ3RoKTsKKyAgICAgICAgbmV3IChOb3ROdWxsLCBtX21lbW9yeUJ1Y2tldCkgQXRvbVN0cmlu
ZyhjaGFyYWN0ZXJzLCBsZW5ndGgpOwogICAgICAgICArK21fbWVtb3J5QnVja2V0OwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBjb25zdCBBdG9taWNTdHJpbmcqIG5leHRNZW1v
cnlCdWNrZXQoKSBjb25zdCB7IHJldHVybiBtX21lbW9yeUJ1Y2tldDsgfQorICAgIGNvbnN0IEF0
b21TdHJpbmcqIG5leHRNZW1vcnlCdWNrZXQoKSBjb25zdCB7IHJldHVybiBtX21lbW9yeUJ1Y2tl
dDsgfQogCiBwcml2YXRlOgotICAgIEF0b21pY1N0cmluZyogbV9tZW1vcnlCdWNrZXQ7CisgICAg
QXRvbVN0cmluZyogbV9tZW1vcnlCdWNrZXQ7CiB9OwogCi1pbmxpbmUgUmVmPFNwYWNlU3BsaXRT
dHJpbmdEYXRhPiBTcGFjZVNwbGl0U3RyaW5nRGF0YTo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmlu
ZyYga2V5U3RyaW5nLCB1bnNpZ25lZCB0b2tlbkNvdW50KQoraW5saW5lIFJlZjxTcGFjZVNwbGl0
U3RyaW5nRGF0YT4gU3BhY2VTcGxpdFN0cmluZ0RhdGE6OmNyZWF0ZShjb25zdCBBdG9tU3RyaW5n
JiBrZXlTdHJpbmcsIHVuc2lnbmVkIHRva2VuQ291bnQpCiB7CiAgICAgQVNTRVJUKHRva2VuQ291
bnQpOwogCi0gICAgUkVMRUFTRV9BU1NFUlQodG9rZW5Db3VudCA8IChzdGQ6Om51bWVyaWNfbGlt
aXRzPHVuc2lnbmVkPjo6bWF4KCkgLSBzaXplb2YoU3BhY2VTcGxpdFN0cmluZ0RhdGEpKSAvIHNp
emVvZihBdG9taWNTdHJpbmcpKTsKLSAgICB1bnNpZ25lZCBzaXplVG9BbGxvY2F0ZSA9IHNpemVv
ZihTcGFjZVNwbGl0U3RyaW5nRGF0YSkgKyB0b2tlbkNvdW50ICogc2l6ZW9mKEF0b21pY1N0cmlu
Zyk7CisgICAgUkVMRUFTRV9BU1NFUlQodG9rZW5Db3VudCA8IChzdGQ6Om51bWVyaWNfbGltaXRz
PHVuc2lnbmVkPjo6bWF4KCkgLSBzaXplb2YoU3BhY2VTcGxpdFN0cmluZ0RhdGEpKSAvIHNpemVv
ZihBdG9tU3RyaW5nKSk7CisgICAgdW5zaWduZWQgc2l6ZVRvQWxsb2NhdGUgPSBzaXplb2YoU3Bh
Y2VTcGxpdFN0cmluZ0RhdGEpICsgdG9rZW5Db3VudCAqIHNpemVvZihBdG9tU3RyaW5nKTsKICAg
ICBTcGFjZVNwbGl0U3RyaW5nRGF0YSogc3BhY2VTcGxpdFN0cmluZ0RhdGEgPSBzdGF0aWNfY2Fz
dDxTcGFjZVNwbGl0U3RyaW5nRGF0YSo+KGZhc3RNYWxsb2Moc2l6ZVRvQWxsb2NhdGUpKTsKIAog
ICAgIG5ldyAoTm90TnVsbCwgc3BhY2VTcGxpdFN0cmluZ0RhdGEpIFNwYWNlU3BsaXRTdHJpbmdE
YXRhKGtleVN0cmluZywgdG9rZW5Db3VudCk7Ci0gICAgQXRvbWljU3RyaW5nKiB0b2tlbkFycmF5
U3RhcnQgPSBzcGFjZVNwbGl0U3RyaW5nRGF0YS0+dG9rZW5BcnJheVN0YXJ0KCk7Ci0gICAgVG9r
ZW5BdG9taWNTdHJpbmdJbml0aWFsaXplciB0b2tlbkluaXRpYWxpemVyKHRva2VuQXJyYXlTdGFy
dCk7CisgICAgQXRvbVN0cmluZyogdG9rZW5BcnJheVN0YXJ0ID0gc3BhY2VTcGxpdFN0cmluZ0Rh
dGEtPnRva2VuQXJyYXlTdGFydCgpOworICAgIFRva2VuQXRvbVN0cmluZ0luaXRpYWxpemVyIHRv
a2VuSW5pdGlhbGl6ZXIodG9rZW5BcnJheVN0YXJ0KTsKICAgICB0b2tlbml6ZVNwYWNlU3BsaXRT
dHJpbmcodG9rZW5Jbml0aWFsaXplciwga2V5U3RyaW5nKTsKICAgICBBU1NFUlQoc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KHRva2VuSW5pdGlhbGl6ZXIubmV4dE1lbW9yeUJ1Y2tldCgpIC0gdG9rZW5B
cnJheVN0YXJ0KSA9PSB0b2tlbkNvdW50KTsKICAgICBBU1NFUlQocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBjaGFyKj4odG9rZW5Jbml0aWFsaXplci5uZXh0TWVtb3J5QnVja2V0KCkpID09IHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHNwYWNlU3BsaXRTdHJpbmdEYXRhKSArIHNpemVUb0Fs
bG9jYXRlKTsKQEAgLTE5MSw3ICsxOTEsNyBAQCBpbmxpbmUgUmVmPFNwYWNlU3BsaXRTdHJpbmdE
YXRhPiBTcGFjZVNwbGl0U3RyaW5nRGF0YTo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZwogICAg
IHJldHVybiBhZG9wdFJlZigqc3BhY2VTcGxpdFN0cmluZ0RhdGEpOwogfQogCi1SZWZQdHI8U3Bh
Y2VTcGxpdFN0cmluZ0RhdGE+IFNwYWNlU3BsaXRTdHJpbmdEYXRhOjpjcmVhdGUoY29uc3QgQXRv
bWljU3RyaW5nJiBrZXlTdHJpbmcpCitSZWZQdHI8U3BhY2VTcGxpdFN0cmluZ0RhdGE+IFNwYWNl
U3BsaXRTdHJpbmdEYXRhOjpjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYga2V5U3RyaW5nKQogewog
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKCFrZXlTdHJpbmcuaXNOdWxs
KCkpOwpAQCAtMjIzLDkgKzIyMyw5IEBAIHZvaWQgU3BhY2VTcGxpdFN0cmluZ0RhdGE6OmRlc3Ry
b3koU3BhY2VTcGxpdFN0cmluZ0RhdGEqIHNwYWNlU3BsaXRTdHJpbmcpCiAKICAgICB1bnNpZ25l
ZCBpID0gMDsKICAgICB1bnNpZ25lZCBzaXplID0gc3BhY2VTcGxpdFN0cmluZy0+c2l6ZSgpOwot
ICAgIGNvbnN0IEF0b21pY1N0cmluZyogZGF0YSA9IHNwYWNlU3BsaXRTdHJpbmctPnRva2VuQXJy
YXlTdGFydCgpOworICAgIGNvbnN0IEF0b21TdHJpbmcqIGRhdGEgPSBzcGFjZVNwbGl0U3RyaW5n
LT50b2tlbkFycmF5U3RhcnQoKTsKICAgICBkbyB7Ci0gICAgICAgIGRhdGFbaV0ufkF0b21pY1N0
cmluZygpOworICAgICAgICBkYXRhW2ldLn5BdG9tU3RyaW5nKCk7CiAgICAgICAgICsraTsKICAg
ICB9IHdoaWxlIChpIDwgc2l6ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9T
cGFjZVNwbGl0U3RyaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3BhY2VTcGxpdFN0cmluZy5o
CmluZGV4IDA1N2ZiZmM0N2U4ZWJhYWUwYzNhODBmZDIwMjZmZDdiMzEyYjA1OTAuLjZhMTg1NjRi
NDllN2VkYTY5YjVhNTg2NDc3ZGU0MjY5OGQ0YjgxZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9TcGFjZVNwbGl0U3RyaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NwYWNl
U3BsaXRTdHJpbmcuaApAQCAtMjEsNyArMjEsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
IDx3dGYvTWFpblRocmVhZC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC0yOSwxMSArMjksMTEgQEAgY2xhc3MgU3BhY2VTcGxpdFN0cmluZ0RhdGEgewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFNwYWNlU3BsaXRTdHJpbmdEYXRhKTsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFNwYWNlU3BsaXRTdHJp
bmdEYXRhPiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJik7CisgICAgc3RhdGljIFJlZlB0cjxT
cGFjZVNwbGl0U3RyaW5nRGF0YT4gY3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmKTsKIAotICAgIGJv
b2wgY29udGFpbnMoY29uc3QgQXRvbWljU3RyaW5nJiBzdHJpbmcpCisgICAgYm9vbCBjb250YWlu
cyhjb25zdCBBdG9tU3RyaW5nJiBzdHJpbmcpCiAgICAgewotICAgICAgICBjb25zdCBBdG9taWNT
dHJpbmcqIGRhdGEgPSB0b2tlbkFycmF5U3RhcnQoKTsKKyAgICAgICAgY29uc3QgQXRvbVN0cmlu
ZyogZGF0YSA9IHRva2VuQXJyYXlTdGFydCgpOwogICAgICAgICB1bnNpZ25lZCBpID0gMDsKICAg
ICAgICAgZG8gewogICAgICAgICAgICAgaWYgKGRhdGFbaV0gPT0gc3RyaW5nKQpAQCAtNDgsNyAr
NDgsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6
ZTsgfQogICAgIHN0YXRpYyBwdHJkaWZmX3Qgc2l6ZU1lbW9yeU9mZnNldCgpIHsgcmV0dXJuIE9C
SkVDVF9PRkZTRVRPRihTcGFjZVNwbGl0U3RyaW5nRGF0YSwgbV9zaXplKTsgfQogCi0gICAgY29u
c3QgQXRvbWljU3RyaW5nJiBvcGVyYXRvcltdKHVuc2lnbmVkIGkpCisgICAgY29uc3QgQXRvbVN0
cmluZyYgb3BlcmF0b3JbXSh1bnNpZ25lZCBpKQogICAgIHsKICAgICAgICAgUkVMRUFTRV9BU1NF
UlQoaSA8IG1fc2l6ZSk7CiAgICAgICAgIHJldHVybiB0b2tlbkFycmF5U3RhcnQoKVtpXTsKQEAg
LTc2LDggKzc2LDggQEAgcHVibGljOgogICAgIHN0YXRpYyBwdHJkaWZmX3QgdG9rZW5zTWVtb3J5
T2Zmc2V0KCkgeyByZXR1cm4gc2l6ZW9mKFNwYWNlU3BsaXRTdHJpbmdEYXRhKTsgfQogCiBwcml2
YXRlOgotICAgIHN0YXRpYyBSZWY8U3BhY2VTcGxpdFN0cmluZ0RhdGE+IGNyZWF0ZShjb25zdCBB
dG9taWNTdHJpbmcmLCB1bnNpZ25lZCB0b2tlbkNvdW50KTsKLSAgICBTcGFjZVNwbGl0U3RyaW5n
RGF0YShjb25zdCBBdG9taWNTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgc2l6ZSkKKyAgICBzdGF0
aWMgUmVmPFNwYWNlU3BsaXRTdHJpbmdEYXRhPiBjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYsIHVu
c2lnbmVkIHRva2VuQ291bnQpOworICAgIFNwYWNlU3BsaXRTdHJpbmdEYXRhKGNvbnN0IEF0b21T
dHJpbmcmIHN0cmluZywgdW5zaWduZWQgc2l6ZSkKICAgICAgICAgOiBtX2tleVN0cmluZyhzdHJp
bmcpCiAgICAgICAgICwgbV9yZWZDb3VudCgxKQogICAgICAgICAsIG1fc2l6ZShzaXplKQpAQCAt
ODksOSArODksOSBAQCBwcml2YXRlOgogICAgIH5TcGFjZVNwbGl0U3RyaW5nRGF0YSgpID0gZGVm
YXVsdDsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KFNwYWNlU3BsaXRTdHJpbmdEYXRhKik7CiAK
LSAgICBBdG9taWNTdHJpbmcqIHRva2VuQXJyYXlTdGFydCgpIHsgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8QXRvbWljU3RyaW5nKj4odGhpcyArIDEpOyB9CisgICAgQXRvbVN0cmluZyogdG9rZW5B
cnJheVN0YXJ0KCkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxBdG9tU3RyaW5nKj4odGhpcyAr
IDEpOyB9CiAKLSAgICBBdG9taWNTdHJpbmcgbV9rZXlTdHJpbmc7CisgICAgQXRvbVN0cmluZyBt
X2tleVN0cmluZzsKICAgICB1bnNpZ25lZCBtX3JlZkNvdW50OwogICAgIHVuc2lnbmVkIG1fc2l6
ZTsKIH07CkBAIC05OSwxOSArOTksMTkgQEAgcHJpdmF0ZToKIGNsYXNzIFNwYWNlU3BsaXRTdHJp
bmcgewogcHVibGljOgogICAgIFNwYWNlU3BsaXRTdHJpbmcoKSA9IGRlZmF1bHQ7Ci0gICAgU3Bh
Y2VTcGxpdFN0cmluZyhjb25zdCBBdG9taWNTdHJpbmcmIHN0cmluZywgYm9vbCBzaG91bGRGb2xk
Q2FzZSkgeyBzZXQoc3RyaW5nLCBzaG91bGRGb2xkQ2FzZSk7IH0KKyAgICBTcGFjZVNwbGl0U3Ry
aW5nKGNvbnN0IEF0b21TdHJpbmcmIHN0cmluZywgYm9vbCBzaG91bGRGb2xkQ2FzZSkgeyBzZXQo
c3RyaW5nLCBzaG91bGRGb2xkQ2FzZSk7IH0KIAogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBT
cGFjZVNwbGl0U3RyaW5nJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9kYXRhICE9IG90aGVyLm1f
ZGF0YTsgfQogCi0gICAgdm9pZCBzZXQoY29uc3QgQXRvbWljU3RyaW5nJiwgYm9vbCBzaG91bGRG
b2xkQ2FzZSk7CisgICAgdm9pZCBzZXQoY29uc3QgQXRvbVN0cmluZyYsIGJvb2wgc2hvdWxkRm9s
ZENhc2UpOwogICAgIHZvaWQgY2xlYXIoKSB7IG1fZGF0YSA9IG51bGxwdHI7IH0KIAotICAgIGJv
b2wgY29udGFpbnMoY29uc3QgQXRvbWljU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1f
ZGF0YSAmJiBtX2RhdGEtPmNvbnRhaW5zKHN0cmluZyk7IH0KKyAgICBib29sIGNvbnRhaW5zKGNv
bnN0IEF0b21TdHJpbmcmIHN0cmluZykgY29uc3QgeyByZXR1cm4gbV9kYXRhICYmIG1fZGF0YS0+
Y29udGFpbnMoc3RyaW5nKTsgfQogICAgIGJvb2wgY29udGFpbnNBbGwoY29uc3QgU3BhY2VTcGxp
dFN0cmluZyYgbmFtZXMpIGNvbnN0IHsgcmV0dXJuICFuYW1lcy5tX2RhdGEgfHwgKG1fZGF0YSAm
JiBtX2RhdGEtPmNvbnRhaW5zQWxsKCpuYW1lcy5tX2RhdGEpKTsgfQogCiAgICAgdW5zaWduZWQg
c2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YSA/IG1fZGF0YS0+c2l6ZSgpIDogMDsgfQogICAg
IGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX2RhdGE7IH0KLSAgICBjb25zdCBBdG9t
aWNTdHJpbmcmIG9wZXJhdG9yW10odW5zaWduZWQgaSkgY29uc3QKKyAgICBjb25zdCBBdG9tU3Ry
aW5nJiBvcGVyYXRvcltdKHVuc2lnbmVkIGkpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlRf
V0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihtX2RhdGEpOwogICAgICAgICByZXR1cm4gKCptX2Rh
dGEpW2ldOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwCmluZGV4IDgwYzgxZjg1YWU0
NmM2OThkZGI5NGExYzdkZjQ2YjM4ODM4NmQ0OGIuLjNhYjJmZWRhMzc4M2FhOWEwZDI0YzA3Yzg1
MWE2MTlhYjQ2YTk3OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAKQEAgLTE0
MCw3ICsxNDAsNyBAQCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJiBTdHlsZWRFbGVtZW50OjplbnN1
cmVNdXRhYmxlSW5saW5lU3R5bGUoKQogICAgIHJldHVybiBkb3duY2FzdDxNdXRhYmxlU3R5bGVQ
cm9wZXJ0aWVzPigqaW5saW5lU3R5bGUpOwogfQogCi12b2lkIFN0eWxlZEVsZW1lbnQ6OmF0dHJp
YnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5n
JiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSwgQXR0cmlidXRlTW9kaWZp
Y2F0aW9uUmVhc29uIHJlYXNvbikKK3ZvaWQgU3R5bGVkRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdl
ZChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiBvbGRWYWx1ZSwg
Y29uc3QgQXRvbVN0cmluZyYgbmV3VmFsdWUsIEF0dHJpYnV0ZU1vZGlmaWNhdGlvblJlYXNvbiBy
ZWFzb24pCiB7CiAgICAgaWYgKG9sZFZhbHVlICE9IG5ld1ZhbHVlKSB7CiAgICAgICAgIGlmIChu
YW1lID09IHN0eWxlQXR0cikKQEAgLTE2OCw3ICsxNjgsNyBAQCBzdGF0aWMgYm9vbCB1c2VzU3R5
bGVCYXNlZEVkaXRhYmlsaXR5KGNvbnN0IFN0eWxlUHJvcGVydGllcyYgcHJvcGVydGllcykKICAg
ICByZXR1cm4gcHJvcGVydGllcy5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5V2Via2l0
VXNlck1vZGlmeSk7CiB9CiAKLXZvaWQgU3R5bGVkRWxlbWVudDo6c2V0SW5saW5lU3R5bGVGcm9t
U3RyaW5nKGNvbnN0IEF0b21pY1N0cmluZyYgbmV3U3R5bGVTdHJpbmcpCit2b2lkIFN0eWxlZEVs
ZW1lbnQ6OnNldElubGluZVN0eWxlRnJvbVN0cmluZyhjb25zdCBBdG9tU3RyaW5nJiBuZXdTdHls
ZVN0cmluZykKIHsKICAgICBSZWZQdHI8U3R5bGVQcm9wZXJ0aWVzPiYgaW5saW5lU3R5bGUgPSBl
bGVtZW50RGF0YSgpLT5tX2lubGluZVN0eWxlOwogCkBAIC0xOTAsNyArMTkwLDcgQEAgdm9pZCBT
dHlsZWRFbGVtZW50OjpzZXRJbmxpbmVTdHlsZUZyb21TdHJpbmcoY29uc3QgQXRvbWljU3RyaW5n
JiBuZXdTdHlsZVN0cmluZykKICAgICAgICAgZG9jdW1lbnQoKS5zZXRIYXNFbGVtZW50VXNpbmdT
dHlsZUJhc2VkRWRpdGFiaWxpdHkoKTsKIH0KIAotdm9pZCBTdHlsZWRFbGVtZW50OjpzdHlsZUF0
dHJpYnV0ZUNoYW5nZWQoY29uc3QgQXRvbWljU3RyaW5nJiBuZXdTdHlsZVN0cmluZywgQXR0cmli
dXRlTW9kaWZpY2F0aW9uUmVhc29uIHJlYXNvbikKK3ZvaWQgU3R5bGVkRWxlbWVudDo6c3R5bGVB
dHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IEF0b21TdHJpbmcmIG5ld1N0eWxlU3RyaW5nLCBBdHRyaWJ1
dGVNb2RpZmljYXRpb25SZWFzb24gcmVhc29uKQogewogICAgIFdURjo6T3JkaW5hbE51bWJlciBz
dGFydExpbmVOdW1iZXIgPSBXVEY6Ok9yZGluYWxOdW1iZXI6OmJlZm9yZUZpcnN0KCk7CiAgICAg
aWYgKGRvY3VtZW50KCkuc2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKCkgJiYgIWRvY3VtZW50KCku
aXNJbkRvY3VtZW50V3JpdGUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHls
ZWRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5oCmluZGV4IGM1
M2Q4ZTYxNTdhYTlkMjc1MGI4Zjg5ZDA4NDU2MWFhYjEwYTI3MzguLjU2ZjZmNDQxMjczMWE1Y2Y1
NTRmOTY1YzcxMzhhNzUzNmMzOTk3YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9T
dHlsZWRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuaApA
QCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIGNvbnN0IFN0eWxlUHJvcGVy
dGllcyogcHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZv
aWQgY29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBjb25zdCBBdG9taWNTdHJpbmcmLCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJikgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIGNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbVN0cmluZyYsIE11dGFibGVTdHlsZVByb3BlcnRp
ZXMmKSB7IH0KIAogcHJvdGVjdGVkOgogICAgIFN0eWxlZEVsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYgbmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50LCBDb25zdHJ1Y3Rpb25UeXBlIHR5cGUpCkBA
IC03MSw3ICs3MSw3IEBAIHByb3RlY3RlZDoKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBhdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmIG9s
ZFZhbHVlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlLCBBdHRyaWJ1dGVNb2RpZmljYXRp
b25SZWFzb24gPSBNb2RpZmllZERpcmVjdGx5KSBvdmVycmlkZTsKKyAgICB2b2lkIGF0dHJpYnV0
ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmIG9sZFZhbHVl
LCBjb25zdCBBdG9tU3RyaW5nJiBuZXdWYWx1ZSwgQXR0cmlidXRlTW9kaWZpY2F0aW9uUmVhc29u
ID0gTW9kaWZpZWREaXJlY3RseSkgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNQcmVz
ZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiAKQEAgLTgyLDExICs4MiwxMSBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBhZGRTdWJy
ZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYpIGNvbnN0IG92ZXJyaWRlOwog
CiBwcml2YXRlOgotICAgIHZvaWQgc3R5bGVBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IEF0b21pY1N0
cmluZyYgbmV3U3R5bGVTdHJpbmcsIEF0dHJpYnV0ZU1vZGlmaWNhdGlvblJlYXNvbik7CisgICAg
dm9pZCBzdHlsZUF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgQXRvbVN0cmluZyYgbmV3U3R5bGVTdHJp
bmcsIEF0dHJpYnV0ZU1vZGlmaWNhdGlvblJlYXNvbik7CiAKICAgICB2b2lkIGlubGluZVN0eWxl
Q2hhbmdlZCgpOwogICAgIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbiogaW5saW5lU3R5
bGVDU1NPTVdyYXBwZXIoKTsKLSAgICB2b2lkIHNldElubGluZVN0eWxlRnJvbVN0cmluZyhjb25z
dCBBdG9taWNTdHJpbmcmKTsKKyAgICB2b2lkIHNldElubGluZVN0eWxlRnJvbVN0cmluZyhjb25z
dCBBdG9tU3RyaW5nJik7CiAgICAgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYgZW5zdXJlTXV0YWJs
ZUlubGluZVN0eWxlKCk7CiAKICAgICB2b2lkIHJlYnVpbGRQcmVzZW50YXRpb25BdHRyaWJ1dGVT
dHlsZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RhZ0NvbGxlY3Rpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL1RhZ0NvbGxlY3Rpb24uY3BwCmluZGV4IDQyOTFmY2RhYjQ5
NDVhZThlNjlhOWY3ODFkMzM5NjY2NWI0YzE4MTMuLmUwNjdmMmYxZDI5ODRjYjc4N2ZlZTlhMzA0
OTEyMTU1ZGM5YzM3NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UYWdDb2xsZWN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGFnQ29sbGVjdGlvbi5jcHAKQEAgLTMz
LDcgKzMzLDcgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFRhZ0NvbGxlY3Rpb24pOwog
V1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFRhZ0NvbGxlY3Rpb25OUyk7CiBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEX0lNUEwoSFRNTFRhZ0NvbGxlY3Rpb24pOwogCi1UYWdDb2xsZWN0aW9uTlM6
OlRhZ0NvbGxlY3Rpb25OUyhDb250YWluZXJOb2RlJiByb290Tm9kZSwgY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lKQorVGFnQ29s
bGVjdGlvbk5TOjpUYWdDb2xsZWN0aW9uTlMoQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUsIGNvbnN0
IEF0b21TdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgQXRvbVN0cmluZyYgbG9jYWxOYW1lKQog
ICAgIDogQ2FjaGVkSFRNTENvbGxlY3Rpb248VGFnQ29sbGVjdGlvbk5TLCBDb2xsZWN0aW9uVHlw
ZVRyYWl0czxCeVRhZz46OnRyYXZlcnNhbFR5cGU+KHJvb3ROb2RlLCBCeVRhZykKICAgICAsIG1f
bmFtZXNwYWNlVVJJKG5hbWVzcGFjZVVSSSkKICAgICAsIG1fbG9jYWxOYW1lKGxvY2FsTmFtZSkK
QEAgLTQ2LDcgKzQ2LDcgQEAgVGFnQ29sbGVjdGlvbk5TOjp+VGFnQ29sbGVjdGlvbk5TKCkKICAg
ICBvd25lck5vZGUoKS5ub2RlTGlzdHMoKS0+cmVtb3ZlQ2FjaGVkVGFnQ29sbGVjdGlvbk5TKCp0
aGlzLCBtX25hbWVzcGFjZVVSSSwgbV9sb2NhbE5hbWUpOwogfQogCi1UYWdDb2xsZWN0aW9uOjpU
YWdDb2xsZWN0aW9uKENvbnRhaW5lck5vZGUmIHJvb3ROb2RlLCBjb25zdCBBdG9taWNTdHJpbmcm
IHF1YWxpZmllZE5hbWUpCitUYWdDb2xsZWN0aW9uOjpUYWdDb2xsZWN0aW9uKENvbnRhaW5lck5v
ZGUmIHJvb3ROb2RlLCBjb25zdCBBdG9tU3RyaW5nJiBxdWFsaWZpZWROYW1lKQogICAgIDogQ2Fj
aGVkSFRNTENvbGxlY3Rpb248VGFnQ29sbGVjdGlvbiwgQ29sbGVjdGlvblR5cGVUcmFpdHM8QnlU
YWc+Ojp0cmF2ZXJzYWxUeXBlPihyb290Tm9kZSwgQnlUYWcpCiAgICAgLCBtX3F1YWxpZmllZE5h
bWUocXVhbGlmaWVkTmFtZSkKIHsKQEAgLTU4LDcgKzU4LDcgQEAgVGFnQ29sbGVjdGlvbjo6flRh
Z0NvbGxlY3Rpb24oKQogICAgIG93bmVyTm9kZSgpLm5vZGVMaXN0cygpLT5yZW1vdmVDYWNoZWRD
b2xsZWN0aW9uKHRoaXMsIG1fcXVhbGlmaWVkTmFtZSk7CiB9CiAKLUhUTUxUYWdDb2xsZWN0aW9u
OjpIVE1MVGFnQ29sbGVjdGlvbihDb250YWluZXJOb2RlJiByb290Tm9kZSwgY29uc3QgQXRvbWlj
U3RyaW5nJiBxdWFsaWZpZWROYW1lKQorSFRNTFRhZ0NvbGxlY3Rpb246OkhUTUxUYWdDb2xsZWN0
aW9uKENvbnRhaW5lck5vZGUmIHJvb3ROb2RlLCBjb25zdCBBdG9tU3RyaW5nJiBxdWFsaWZpZWRO
YW1lKQogICAgIDogQ2FjaGVkSFRNTENvbGxlY3Rpb248SFRNTFRhZ0NvbGxlY3Rpb24sIENvbGxl
Y3Rpb25UeXBlVHJhaXRzPEJ5SFRNTFRhZz46OnRyYXZlcnNhbFR5cGU+KHJvb3ROb2RlLCBCeUhU
TUxUYWcpCiAgICAgLCBtX3F1YWxpZmllZE5hbWUocXVhbGlmaWVkTmFtZSkKICAgICAsIG1fbG93
ZXJlZFF1YWxpZmllZE5hbWUocXVhbGlmaWVkTmFtZS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RhZ0NvbGxlY3Rpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9UYWdDb2xsZWN0aW9uLmgKaW5kZXggNDgyZTBkYjRmODY4MjBhNGY0OGQx
NGU3ZTE3YjZkMDYzODFjYzQzZC4uODFkZDNhNTkyMjg2NDBiNGJhOTU5NjY5YmZhZDNmMjBlNjU5
MTQxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RhZ0NvbGxlY3Rpb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vVGFnQ29sbGVjdGlvbi5oCkBAIC0yNCw3ICsyNCw3IEBACiAj
cHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNhY2hlZEhUTUxDb2xsZWN0aW9uLmgiCi0jaW5jbHVk
ZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmlu
Zy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgVGFnQ29sbGVjdGlvbiBmaW5hbCA6IHB1YmxpYyBDYWNoZWRIVE1M
Q29sbGVjdGlvbjxUYWdDb2xsZWN0aW9uLCBDb2xsZWN0aW9uVHlwZVRyYWl0czxCeVRhZz46OnRy
YXZlcnNhbFR5cGU+IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFRhZ0NvbGxlY3Rpb24p
OwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8VGFnQ29sbGVjdGlvbj4gY3JlYXRlKENvbnRhaW5l
ck5vZGUmIHJvb3ROb2RlLCBDb2xsZWN0aW9uVHlwZSB0eXBlLCBjb25zdCBBdG9taWNTdHJpbmcm
IHF1YWxpZmllZE5hbWUpCisgICAgc3RhdGljIFJlZjxUYWdDb2xsZWN0aW9uPiBjcmVhdGUoQ29u
dGFpbmVyTm9kZSYgcm9vdE5vZGUsIENvbGxlY3Rpb25UeXBlIHR5cGUsIGNvbnN0IEF0b21TdHJp
bmcmIHF1YWxpZmllZE5hbWUpCiAgICAgewogICAgICAgICBBU1NFUlRfVU5VU0VEKHR5cGUsIHR5
cGUgPT0gQnlUYWcpOwogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUYWdDb2xsZWN0aW9u
KHJvb3ROb2RlLCBxdWFsaWZpZWROYW1lKSk7CkBAIC00MiwxNSArNDIsMTUgQEAgcHVibGljOgog
ICAgIGJvb2wgZWxlbWVudE1hdGNoZXMoRWxlbWVudCYpIGNvbnN0OwogCiBwcml2YXRlOgotICAg
IFRhZ0NvbGxlY3Rpb24oQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgcXVhbGlmaWVkTmFtZSk7CisgICAgVGFnQ29sbGVjdGlvbihDb250YWluZXJOb2RlJiByb290
Tm9kZSwgY29uc3QgQXRvbVN0cmluZyYgcXVhbGlmaWVkTmFtZSk7CiAKLSAgICBBdG9taWNTdHJp
bmcgbV9xdWFsaWZpZWROYW1lOworICAgIEF0b21TdHJpbmcgbV9xdWFsaWZpZWROYW1lOwogfTsK
IAogY2xhc3MgVGFnQ29sbGVjdGlvbk5TIGZpbmFsIDogcHVibGljIENhY2hlZEhUTUxDb2xsZWN0
aW9uPFRhZ0NvbGxlY3Rpb25OUywgQ29sbGVjdGlvblR5cGVUcmFpdHM8QnlUYWc+Ojp0cmF2ZXJz
YWxUeXBlPiB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChUYWdDb2xsZWN0aW9uTlMpOwog
cHVibGljOgotICAgIHN0YXRpYyBSZWY8VGFnQ29sbGVjdGlvbk5TPiBjcmVhdGUoQ29udGFpbmVy
Tm9kZSYgcm9vdE5vZGUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBB
dG9taWNTdHJpbmcmIGxvY2FsTmFtZSkKKyAgICBzdGF0aWMgUmVmPFRhZ0NvbGxlY3Rpb25OUz4g
Y3JlYXRlKENvbnRhaW5lck5vZGUmIHJvb3ROb2RlLCBjb25zdCBBdG9tU3RyaW5nJiBuYW1lc3Bh
Y2VVUkksIGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsTmFtZSkKICAgICB7CiAgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFRhZ0NvbGxlY3Rpb25OUyhyb290Tm9kZSwgbmFtZXNwYWNlVVJJLCBs
b2NhbE5hbWUpKTsKICAgICB9CkBAIC01OSwxNiArNTksMTYgQEAgcHVibGljOgogICAgIGJvb2wg
ZWxlbWVudE1hdGNoZXMoRWxlbWVudCYpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIFRhZ0NvbGxl
Y3Rpb25OUyhDb250YWluZXJOb2RlJiByb290Tm9kZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
c3BhY2VVUkksIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lKTsKKyAgICBUYWdDb2xsZWN0
aW9uTlMoQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUsIGNvbnN0IEF0b21TdHJpbmcmIG5hbWVzcGFj
ZVVSSSwgY29uc3QgQXRvbVN0cmluZyYgbG9jYWxOYW1lKTsKIAotICAgIEF0b21pY1N0cmluZyBt
X25hbWVzcGFjZVVSSTsKLSAgICBBdG9taWNTdHJpbmcgbV9sb2NhbE5hbWU7CisgICAgQXRvbVN0
cmluZyBtX25hbWVzcGFjZVVSSTsKKyAgICBBdG9tU3RyaW5nIG1fbG9jYWxOYW1lOwogfTsKIAog
Y2xhc3MgSFRNTFRhZ0NvbGxlY3Rpb24gZmluYWwgOiBwdWJsaWMgQ2FjaGVkSFRNTENvbGxlY3Rp
b248SFRNTFRhZ0NvbGxlY3Rpb24sIENvbGxlY3Rpb25UeXBlVHJhaXRzPEJ5SFRNTFRhZz46OnRy
YXZlcnNhbFR5cGU+IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEhUTUxUYWdDb2xsZWN0
aW9uKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEhUTUxUYWdDb2xsZWN0aW9uPiBjcmVhdGUo
Q29udGFpbmVyTm9kZSYgcm9vdE5vZGUsIENvbGxlY3Rpb25UeXBlIHR5cGUsIGNvbnN0IEF0b21p
Y1N0cmluZyYgcXVhbGlmaWVkTmFtZSkKKyAgICBzdGF0aWMgUmVmPEhUTUxUYWdDb2xsZWN0aW9u
PiBjcmVhdGUoQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUsIENvbGxlY3Rpb25UeXBlIHR5cGUsIGNv
bnN0IEF0b21TdHJpbmcmIHF1YWxpZmllZE5hbWUpCiAgICAgewogICAgICAgICBBU1NFUlRfVU5V
U0VEKHR5cGUsIHR5cGUgPT0gQnlIVE1MVGFnKTsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgSFRNTFRhZ0NvbGxlY3Rpb24ocm9vdE5vZGUsIHF1YWxpZmllZE5hbWUpKTsKQEAgLTc4LDEw
ICs3OCwxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBlbGVtZW50TWF0Y2hlcyhFbGVtZW50JikgY29u
c3Q7CiAKIHByaXZhdGU6Ci0gICAgSFRNTFRhZ0NvbGxlY3Rpb24oQ29udGFpbmVyTm9kZSYgcm9v
dE5vZGUsIGNvbnN0IEF0b21pY1N0cmluZyYgcXVhbGlmaWVkTmFtZSk7CisgICAgSFRNTFRhZ0Nv
bGxlY3Rpb24oQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUsIGNvbnN0IEF0b21TdHJpbmcmIHF1YWxp
ZmllZE5hbWUpOwogCi0gICAgQXRvbWljU3RyaW5nIG1fcXVhbGlmaWVkTmFtZTsKLSAgICBBdG9t
aWNTdHJpbmcgbV9sb3dlcmVkUXVhbGlmaWVkTmFtZTsKKyAgICBBdG9tU3RyaW5nIG1fcXVhbGlm
aWVkTmFtZTsKKyAgICBBdG9tU3RyaW5nIG1fbG93ZXJlZFF1YWxpZmllZE5hbWU7CiB9OwogCiBp
bmxpbmUgYm9vbCBUYWdDb2xsZWN0aW9uOjplbGVtZW50TWF0Y2hlcyhFbGVtZW50JiBlbGVtZW50
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFdmVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmNwcAppbmRleCA2YTA0MWU4MjQ0YmZhZmFlYWQ4
YWQxNWUyNGQ0MWQ5OWMyOWY2M2U2Li5lYjQ2YjdkZjY1YzgyOTFiYzA2MGEwNzBlZTY4MzI5YTYx
N2NiZDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmNwcApAQCAtMTA1LDcgKzEwNSw3IEBAIFRl
eHRFdmVudDo6VGV4dEV2ZW50KFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBjb25zdCBTdHJp
bmcmIGRhdGEsIGNvbnN0IFZlY3RvCiAKIFRleHRFdmVudDo6flRleHRFdmVudCgpID0gZGVmYXVs
dDsKIAotdm9pZCBUZXh0RXZlbnQ6OmluaXRUZXh0RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+
JiYgdmlldywgY29uc3QgU3RyaW5nJiBkYXRhKQordm9pZCBUZXh0RXZlbnQ6OmluaXRUZXh0RXZl
bnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJs
ZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSkKIHsKICAg
ICBpZiAoaXNCZWluZ0Rpc3BhdGNoZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1RleHRFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHRF
dmVudC5oCmluZGV4IDBhZTJhYzg2M2ZiODFiYmIyODYzODUxNjViNmIxMjUxZDJkZmIxYjguLjkx
NmRlYjUwMmI1YTAwNDQzMWQ4MjkxMjYzYjdhNDIwMjAxZWMxOTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2
ZW50LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZp
cnR1YWwgflRleHRFdmVudCgpOwogICAgIAotICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGlu
aXRUZXh0RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9v
bCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGNvbnN0IFN0cmluZyYgZGF0YSk7
CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5pdFRleHRFdmVudChjb25zdCBBdG9tU3Ry
aW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93
UHJveHk+JiYsIGNvbnN0IFN0cmluZyYgZGF0YSk7CiAgICAgCiAgICAgICAgIFN0cmluZyBkYXRh
KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ub3VjaEV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmNwcApp
bmRleCA1MzI2N2U0NDIxYWEzMTZmMjdjMmUzMWE1NWI0ZTM5MjBjOGVmZjg4Li5lYjBlODQ5MTNk
NWNmOGU3NmRhNjc3YzljNWEzMTUwMGYxNzNhMGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vVG91Y2hFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoRXZlbnQu
Y3BwCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogVG91Y2hFdmVudDo6
VG91Y2hFdmVudCgpID0gZGVmYXVsdDsKIAotVG91Y2hFdmVudDo6VG91Y2hFdmVudChUb3VjaExp
c3QqIHRvdWNoZXMsIFRvdWNoTGlzdCogdGFyZ2V0VG91Y2hlcywgVG91Y2hMaXN0KiBjaGFuZ2Vk
VG91Y2hlcywgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLAorVG91Y2hFdmVudDo6VG91Y2hFdmVu
dChUb3VjaExpc3QqIHRvdWNoZXMsIFRvdWNoTGlzdCogdGFyZ2V0VG91Y2hlcywgVG91Y2hMaXN0
KiBjaGFuZ2VkVG91Y2hlcywgY29uc3QgQXRvbVN0cmluZyYgdHlwZSwKICAgICBSZWZQdHI8V2lu
ZG93UHJveHk+JiYgdmlldywgY29uc3QgSW50UG9pbnQmIGdsb2JhbExvY2F0aW9uLCBPcHRpb25T
ZXQ8TW9kaWZpZXI+IG1vZGlmaWVycykKICAgICA6IE1vdXNlUmVsYXRlZEV2ZW50KHR5cGUsIElz
Q2FuY2VsYWJsZTo6WWVzLCBNb25vdG9uaWNUaW1lOjpub3coKSwgV1RGTW92ZSh2aWV3KSwgZ2xv
YmFsTG9jYXRpb24sIG1vZGlmaWVycykKICAgICAsIG1fdG91Y2hlcyh0b3VjaGVzKQpAQCAtNDUs
NyArNDUsNyBAQCBUb3VjaEV2ZW50OjpUb3VjaEV2ZW50KFRvdWNoTGlzdCogdG91Y2hlcywgVG91
Y2hMaXN0KiB0YXJnZXRUb3VjaGVzLCBUb3VjaExpc3QqCiB7CiB9CiAKLVRvdWNoRXZlbnQ6OlRv
dWNoRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiBpbml0aWFsaXpl
ciwgSXNUcnVzdGVkIGlzVHJ1c3RlZCkKK1RvdWNoRXZlbnQ6OlRvdWNoRXZlbnQoY29uc3QgQXRv
bVN0cmluZyYgdHlwZSwgY29uc3QgSW5pdCYgaW5pdGlhbGl6ZXIsIElzVHJ1c3RlZCBpc1RydXN0
ZWQpCiAgICAgOiBNb3VzZVJlbGF0ZWRFdmVudCh0eXBlLCBpbml0aWFsaXplciwgaXNUcnVzdGVk
KQogICAgICwgbV90b3VjaGVzKGluaXRpYWxpemVyLnRvdWNoZXMgPyBpbml0aWFsaXplci50b3Vj
aGVzIDogVG91Y2hMaXN0OjpjcmVhdGUoKSkKICAgICAsIG1fdGFyZ2V0VG91Y2hlcyhpbml0aWFs
aXplci50YXJnZXRUb3VjaGVzID8gaW5pdGlhbGl6ZXIudGFyZ2V0VG91Y2hlcyA6IFRvdWNoTGlz
dDo6Y3JlYXRlKCkpCkBAIC01Niw3ICs1Niw3IEBAIFRvdWNoRXZlbnQ6OlRvdWNoRXZlbnQoY29u
c3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiBpbml0aWFsaXplciwgSXNUcnVzCiBU
b3VjaEV2ZW50Ojp+VG91Y2hFdmVudCgpID0gZGVmYXVsdDsKIAogdm9pZCBUb3VjaEV2ZW50Ojpp
bml0VG91Y2hFdmVudChUb3VjaExpc3QqIHRvdWNoZXMsIFRvdWNoTGlzdCogdGFyZ2V0VG91Y2hl
cywKLSAgICAgICAgVG91Y2hMaXN0KiBjaGFuZ2VkVG91Y2hlcywgY29uc3QgQXRvbWljU3RyaW5n
JiB0eXBlLCAKKyAgICAgICAgVG91Y2hMaXN0KiBjaGFuZ2VkVG91Y2hlcywgY29uc3QgQXRvbVN0
cmluZyYgdHlwZSwgCiAgICAgICAgIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBpbnQgc2Ny
ZWVuWCwgaW50IHNjcmVlblksIGludCBjbGllbnRYLCBpbnQgY2xpZW50WSwKICAgICAgICAgYm9v
bCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5KQogewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoRXZlbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ub3VjaEV2ZW50LmgKaW5kZXggMTNkZTBjMjk4NjUxY2U0MTEwZTQ2YTc3NWNkMzFj
YWMzM2I4NGViNS4uODMzZmUyYTUwOGZlMWJhOTJiYjU4ODk0ODIzYmMxZWY2NWY3N2IzNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoRXZlbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vVG91Y2hFdmVudC5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIH5Ub3VjaEV2ZW50KCk7CiAKICAgICBzdGF0aWMgUmVmPFRvdWNoRXZlbnQ+IGNyZWF0ZShU
b3VjaExpc3QqIHRvdWNoZXMsIFRvdWNoTGlzdCogdGFyZ2V0VG91Y2hlcywgVG91Y2hMaXN0KiBj
aGFuZ2VkVG91Y2hlcywKLSAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBSZWZQdHI8
V2luZG93UHJveHk+JiYgdmlldywgY29uc3QgSW50UG9pbnQmIGdsb2JhbExvY2F0aW9uLCBPcHRp
b25TZXQ8TW9kaWZpZXI+IG1vZGlmaWVycykKKyAgICAgICAgY29uc3QgQXRvbVN0cmluZyYgdHlw
ZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGNvbnN0IEludFBvaW50JiBnbG9iYWxMb2Nh
dGlvbiwgT3B0aW9uU2V0PE1vZGlmaWVyPiBtb2RpZmllcnMpCiAgICAgewogICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBUb3VjaEV2ZW50KHRvdWNoZXMsIHRhcmdldFRvdWNoZXMsIGNoYW5n
ZWRUb3VjaGVzLCB0eXBlLCBXVEZNb3ZlKHZpZXcpLCBnbG9iYWxMb2NhdGlvbiwgbW9kaWZpZXJz
KSk7CiAgICAgfQpAQCAtNTUsMTIgKzU1LDEyIEBAIHB1YmxpYzoKICAgICAgICAgUmVmUHRyPFRv
dWNoTGlzdD4gY2hhbmdlZFRvdWNoZXM7CiAgICAgfTsKIAotICAgIHN0YXRpYyBSZWY8VG91Y2hF
dmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgSW5pdCYgaW5pdGlh
bGl6ZXIsIElzVHJ1c3RlZCBpc1RydXN0ZWQgPSBJc1RydXN0ZWQ6Ok5vKQorICAgIHN0YXRpYyBS
ZWY8VG91Y2hFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IEluaXQm
IGluaXRpYWxpemVyLCBJc1RydXN0ZWQgaXNUcnVzdGVkID0gSXNUcnVzdGVkOjpObykKICAgICB7
CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRvdWNoRXZlbnQodHlwZSwgaW5pdGlhbGl6
ZXIsIGlzVHJ1c3RlZCkpOwogICAgIH0KIAotICAgIHZvaWQgaW5pdFRvdWNoRXZlbnQoVG91Y2hM
aXN0KiB0b3VjaGVzLCBUb3VjaExpc3QqIHRhcmdldFRvdWNoZXMsIFRvdWNoTGlzdCogY2hhbmdl
ZFRvdWNoZXMsIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwKKyAgICB2b2lkIGluaXRUb3VjaEV2
ZW50KFRvdWNoTGlzdCogdG91Y2hlcywgVG91Y2hMaXN0KiB0YXJnZXRUb3VjaGVzLCBUb3VjaExp
c3QqIGNoYW5nZWRUb3VjaGVzLCBjb25zdCBBdG9tU3RyaW5nJiB0eXBlLAogICAgICAgICBSZWZQ
dHI8V2luZG93UHJveHk+JiYsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IGNsaWVudFgs
IGludCBjbGllbnRZLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBi
b29sIG1ldGFLZXkpOwogCiAgICAgVG91Y2hMaXN0KiB0b3VjaGVzKCkgY29uc3QgeyByZXR1cm4g
bV90b3VjaGVzLmdldCgpOyB9CkBAIC03Nyw5ICs3Nyw5IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToK
ICAgICBUb3VjaEV2ZW50KCk7Ci0gICAgVG91Y2hFdmVudChUb3VjaExpc3QqIHRvdWNoZXMsIFRv
dWNoTGlzdCogdGFyZ2V0VG91Y2hlcywgVG91Y2hMaXN0KiBjaGFuZ2VkVG91Y2hlcywgY29uc3Qg
QXRvbWljU3RyaW5nJiB0eXBlLAorICAgIFRvdWNoRXZlbnQoVG91Y2hMaXN0KiB0b3VjaGVzLCBU
b3VjaExpc3QqIHRhcmdldFRvdWNoZXMsIFRvdWNoTGlzdCogY2hhbmdlZFRvdWNoZXMsIGNvbnN0
IEF0b21TdHJpbmcmIHR5cGUsCiAgICAgICAgIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgY29uc3Qg
SW50UG9pbnQmIGdsb2JhbExvY2F0aW9uLCBPcHRpb25TZXQ8TW9kaWZpZXI+KTsKLSAgICBUb3Vj
aEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IEluaXQmLCBJc1RydXN0ZWQpOworICAg
IFRvdWNoRXZlbnQoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IEluaXQmLCBJc1RydXN0ZWQpOwog
CiAgICAgUmVmUHRyPFRvdWNoTGlzdD4gbV90b3VjaGVzOwogICAgIFJlZlB0cjxUb3VjaExpc3Q+
IG1fdGFyZ2V0VG91Y2hlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmFuc2l0
aW9uRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyYW5zaXRpb25FdmVudC5jcHAKaW5k
ZXggNWRiMDliOTkzOWMwNGMzYmZlMTBmYTA2MzFlN2MxNzAwMTMzNDY0My4uMTFjYjE3NDE1N2Nl
NzgzOTAyYmM3MDkwZmJlYjU4M2ZhOTI2NTk0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1RyYW5zaXRpb25FdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyYW5zaXRp
b25FdmVudC5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1U
cmFuc2l0aW9uRXZlbnQ6OlRyYW5zaXRpb25FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUs
IGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBkb3VibGUgZWxhcHNlZFRpbWUsIGNvbnN0IFN0
cmluZyYgcHNldWRvRWxlbWVudCkKK1RyYW5zaXRpb25FdmVudDo6VHJhbnNpdGlvbkV2ZW50KGNv
bnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBkb3VibGUg
ZWxhcHNlZFRpbWUsIGNvbnN0IFN0cmluZyYgcHNldWRvRWxlbWVudCkKICAgICA6IEV2ZW50KHR5
cGUsIENhbkJ1YmJsZTo6WWVzLCBJc0NhbmNlbGFibGU6OlllcykKICAgICAsIG1fcHJvcGVydHlO
YW1lKHByb3BlcnR5TmFtZSkKICAgICAsIG1fZWxhcHNlZFRpbWUoZWxhcHNlZFRpbWUpCkBAIC0z
Nyw3ICszNyw3IEBAIFRyYW5zaXRpb25FdmVudDo6VHJhbnNpdGlvbkV2ZW50KGNvbnN0IEF0b21p
Y1N0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBwcm9wZXJ0CiB7CiB9CiAKLVRyYW5zaXRpb25F
dmVudDo6VHJhbnNpdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgSW5p
dCYgaW5pdGlhbGl6ZXIsIElzVHJ1c3RlZCBpc1RydXN0ZWQpCitUcmFuc2l0aW9uRXZlbnQ6OlRy
YW5zaXRpb25FdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiBpbml0aWFs
aXplciwgSXNUcnVzdGVkIGlzVHJ1c3RlZCkKICAgICA6IEV2ZW50KHR5cGUsIGluaXRpYWxpemVy
LCBpc1RydXN0ZWQpCiAgICAgLCBtX3Byb3BlcnR5TmFtZShpbml0aWFsaXplci5wcm9wZXJ0eU5h
bWUpCiAgICAgLCBtX2VsYXBzZWRUaW1lKGluaXRpYWxpemVyLmVsYXBzZWRUaW1lKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RyYW5zaXRpb25FdmVudC5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL1RyYW5zaXRpb25FdmVudC5oCmluZGV4IDA2ZDFkMDRmMjg4MGM4ZTM4ODU5MTVhODRm
NTAxYjI4OWM2MGVhMTEuLmI1MGVlMjQ3ZTZiZjQwNzBlNGZkMWZkNTNiNGQ3NGVmNmRhMWZiMjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmFuc2l0aW9uRXZlbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vVHJhbnNpdGlvbkV2ZW50LmgKQEAgLTMyLDcgKzMyLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBUcmFuc2l0aW9uRXZlbnQgZmluYWwgOiBwdWJsaWMg
RXZlbnQgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8VHJhbnNpdGlvbkV2ZW50PiBjcmVhdGUo
Y29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgZG91
YmxlIGVsYXBzZWRUaW1lLCBjb25zdCBTdHJpbmcmIHBzZXVkb0VsZW1lbnQpCisgICAgc3RhdGlj
IFJlZjxUcmFuc2l0aW9uRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25z
dCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgZG91YmxlIGVsYXBzZWRUaW1lLCBjb25zdCBTdHJpbmcm
IHBzZXVkb0VsZW1lbnQpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUcmFu
c2l0aW9uRXZlbnQodHlwZSwgcHJvcGVydHlOYW1lLCBlbGFwc2VkVGltZSwgcHNldWRvRWxlbWVu
dCkpOwogICAgIH0KQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgICAgICBTdHJpbmcgcHNl
dWRvRWxlbWVudDsKICAgICB9OwogCi0gICAgc3RhdGljIFJlZjxUcmFuc2l0aW9uRXZlbnQ+IGNy
ZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IEluaXQmIGluaXRpYWxpemVyLCBJ
c1RydXN0ZWQgaXNUcnVzdGVkID0gSXNUcnVzdGVkOjpObykKKyAgICBzdGF0aWMgUmVmPFRyYW5z
aXRpb25FdmVudD4gY3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IEluaXQmIGlu
aXRpYWxpemVyLCBJc1RydXN0ZWQgaXNUcnVzdGVkID0gSXNUcnVzdGVkOjpObykKICAgICB7CiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRyYW5zaXRpb25FdmVudCh0eXBlLCBpbml0aWFs
aXplciwgaXNUcnVzdGVkKSk7CiAgICAgfQpAQCAtNTcsOCArNTcsOCBAQCBwdWJsaWM6CiAgICAg
RXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0
ZToKLSAgICBUcmFuc2l0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBT
dHJpbmcmIHByb3BlcnR5TmFtZSwgZG91YmxlIGVsYXBzZWRUaW1lLCBjb25zdCBTdHJpbmcmIHBz
ZXVkb0VsZW1lbnQpOwotICAgIFRyYW5zaXRpb25FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5
cGUsIGNvbnN0IEluaXQmIGluaXRpYWxpemVyLCBJc1RydXN0ZWQpOworICAgIFRyYW5zaXRpb25F
dmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwg
ZG91YmxlIGVsYXBzZWRUaW1lLCBjb25zdCBTdHJpbmcmIHBzZXVkb0VsZW1lbnQpOworICAgIFRy
YW5zaXRpb25FdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiBpbml0aWFs
aXplciwgSXNUcnVzdGVkKTsKIAogICAgIFN0cmluZyBtX3Byb3BlcnR5TmFtZTsKICAgICBkb3Vi
bGUgbV9lbGFwc2VkVGltZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2Nv
cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAKaW5kZXggYzRkNTU4N2Q2
YmVjNzBlODQzYmQ5OTZhNjYzOTQ5ZGRmNzVmYTJkZi4uMmYyODcwZDE2NjlkNDRiYzYxODRhNzJl
YzYzZWIzMjNmNTI3ZDM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29w
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAKQEAgLTk4LDcgKzk4
LDcgQEAgdm9pZCBUcmVlU2NvcGU6OnNldFBhcmVudFRyZWVTY29wZShUcmVlU2NvcGUmIG5ld1Bh
cmVudFNjb3BlKQogICAgIHNldERvY3VtZW50U2NvcGUobmV3UGFyZW50U2NvcGUuZG9jdW1lbnRT
Y29wZSgpKTsKIH0KIAotRWxlbWVudCogVHJlZVNjb3BlOjpnZXRFbGVtZW50QnlJZChjb25zdCBB
dG9taWNTdHJpbmcmIGVsZW1lbnRJZCkgY29uc3QKK0VsZW1lbnQqIFRyZWVTY29wZTo6Z2V0RWxl
bWVudEJ5SWQoY29uc3QgQXRvbVN0cmluZyYgZWxlbWVudElkKSBjb25zdAogewogICAgIGlmIChl
bGVtZW50SWQuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTEyLDcgKzEx
Miw3IEBAIEVsZW1lbnQqIFRyZWVTY29wZTo6Z2V0RWxlbWVudEJ5SWQoY29uc3QgU3RyaW5nJiBl
bGVtZW50SWQpIGNvbnN0CiAgICAgaWYgKCFtX2VsZW1lbnRzQnlJZCkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICBpZiAoUmVmUHRyPEF0b21pY1N0cmluZ0ltcGw+IGF0b21pY0VsZW1l
bnRJZCA9IEF0b21pY1N0cmluZ0ltcGw6Omxvb2tVcChlbGVtZW50SWQuaW1wbCgpKSkKKyAgICBp
ZiAoUmVmUHRyPEF0b21TdHJpbmdJbXBsPiBhdG9taWNFbGVtZW50SWQgPSBBdG9tU3RyaW5nSW1w
bDo6bG9va1VwKGVsZW1lbnRJZC5pbXBsKCkpKQogICAgICAgICByZXR1cm4gbV9lbGVtZW50c0J5
SWQtPmdldEVsZW1lbnRCeUlkKCphdG9taWNFbGVtZW50SWQsICp0aGlzKTsKIAogICAgIHJldHVy
biBudWxscHRyOwpAQCAtMTIzLDEzICsxMjMsMTMgQEAgRWxlbWVudCogVHJlZVNjb3BlOjpnZXRF
bGVtZW50QnlJZChTdHJpbmdWaWV3IGVsZW1lbnRJZCkgY29uc3QKICAgICBpZiAoIW1fZWxlbWVu
dHNCeUlkKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGlmIChhdXRvIGF0b21pY0Vs
ZW1lbnRJZCA9IGVsZW1lbnRJZC50b0V4aXN0aW5nQXRvbWljU3RyaW5nKCkpCisgICAgaWYgKGF1
dG8gYXRvbWljRWxlbWVudElkID0gZWxlbWVudElkLnRvRXhpc3RpbmdBdG9tU3RyaW5nKCkpCiAg
ICAgICAgIHJldHVybiBtX2VsZW1lbnRzQnlJZC0+Z2V0RWxlbWVudEJ5SWQoKmF0b21pY0VsZW1l
bnRJZCwgKnRoaXMpOwogCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLWNvbnN0IFZlY3RvcjxF
bGVtZW50Kj4qIFRyZWVTY29wZTo6Z2V0QWxsRWxlbWVudHNCeUlkKGNvbnN0IEF0b21pY1N0cmlu
ZyYgZWxlbWVudElkKSBjb25zdAorY29uc3QgVmVjdG9yPEVsZW1lbnQqPiogVHJlZVNjb3BlOjpn
ZXRBbGxFbGVtZW50c0J5SWQoY29uc3QgQXRvbVN0cmluZyYgZWxlbWVudElkKSBjb25zdAogewog
ICAgIGlmIChlbGVtZW50SWQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAg
LTEzOCw3ICsxMzgsNyBAQCBjb25zdCBWZWN0b3I8RWxlbWVudCo+KiBUcmVlU2NvcGU6OmdldEFs
bEVsZW1lbnRzQnlJZChjb25zdCBBdG9taWNTdHJpbmcmIGVsZW1lbgogICAgIHJldHVybiBtX2Vs
ZW1lbnRzQnlJZC0+Z2V0QWxsRWxlbWVudHNCeUlkKCplbGVtZW50SWQuaW1wbCgpLCAqdGhpcyk7
CiB9CiAKLXZvaWQgVHJlZVNjb3BlOjphZGRFbGVtZW50QnlJZChjb25zdCBBdG9taWNTdHJpbmdJ
bXBsJiBlbGVtZW50SWQsIEVsZW1lbnQmIGVsZW1lbnQsIGJvb2wgbm90aWZ5T2JzZXJ2ZXJzKQor
dm9pZCBUcmVlU2NvcGU6OmFkZEVsZW1lbnRCeUlkKGNvbnN0IEF0b21TdHJpbmdJbXBsJiBlbGVt
ZW50SWQsIEVsZW1lbnQmIGVsZW1lbnQsIGJvb2wgbm90aWZ5T2JzZXJ2ZXJzKQogewogICAgIGlm
ICghbV9lbGVtZW50c0J5SWQpCiAgICAgICAgIG1fZWxlbWVudHNCeUlkID0gc3RkOjptYWtlX3Vu
aXF1ZTxUcmVlU2NvcGVPcmRlcmVkTWFwPigpOwpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQgVHJl
ZVNjb3BlOjphZGRFbGVtZW50QnlJZChjb25zdCBBdG9taWNTdHJpbmdJbXBsJiBlbGVtZW50SWQs
IEVsZW1lbnQmIGVsZW1lCiAgICAgICAgIG1faWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LT5ub3Rp
ZnlPYnNlcnZlcnMoZWxlbWVudElkKTsKIH0KIAotdm9pZCBUcmVlU2NvcGU6OnJlbW92ZUVsZW1l
bnRCeUlkKGNvbnN0IEF0b21pY1N0cmluZ0ltcGwmIGVsZW1lbnRJZCwgRWxlbWVudCYgZWxlbWVu
dCwgYm9vbCBub3RpZnlPYnNlcnZlcnMpCit2b2lkIFRyZWVTY29wZTo6cmVtb3ZlRWxlbWVudEJ5
SWQoY29uc3QgQXRvbVN0cmluZ0ltcGwmIGVsZW1lbnRJZCwgRWxlbWVudCYgZWxlbWVudCwgYm9v
bCBub3RpZnlPYnNlcnZlcnMpCiB7CiAgICAgaWYgKCFtX2VsZW1lbnRzQnlJZCkKICAgICAgICAg
cmV0dXJuOwpAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgVHJlZVNjb3BlOjpyZW1vdmVFbGVtZW50
QnlJZChjb25zdCBBdG9taWNTdHJpbmdJbXBsJiBlbGVtZW50SWQsIEVsZW1lbnQmIGVsCiAgICAg
ICAgIG1faWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LT5ub3RpZnlPYnNlcnZlcnMoZWxlbWVudElk
KTsKIH0KIAotRWxlbWVudCogVHJlZVNjb3BlOjpnZXRFbGVtZW50QnlOYW1lKGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZSkgY29uc3QKK0VsZW1lbnQqIFRyZWVTY29wZTo6Z2V0RWxlbWVudEJ5TmFt
ZShjb25zdCBBdG9tU3RyaW5nJiBuYW1lKSBjb25zdAogewogICAgIGlmIChuYW1lLmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xNjUsMTQgKzE2NSwxNCBAQCBFbGVtZW50
KiBUcmVlU2NvcGU6OmdldEVsZW1lbnRCeU5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBj
b25zdAogICAgIHJldHVybiBtX2VsZW1lbnRzQnlOYW1lLT5nZXRFbGVtZW50QnlOYW1lKCpuYW1l
LmltcGwoKSwgKnRoaXMpOwogfQogCi12b2lkIFRyZWVTY29wZTo6YWRkRWxlbWVudEJ5TmFtZShj
b25zdCBBdG9taWNTdHJpbmdJbXBsJiBuYW1lLCBFbGVtZW50JiBlbGVtZW50KQordm9pZCBUcmVl
U2NvcGU6OmFkZEVsZW1lbnRCeU5hbWUoY29uc3QgQXRvbVN0cmluZ0ltcGwmIG5hbWUsIEVsZW1l
bnQmIGVsZW1lbnQpCiB7CiAgICAgaWYgKCFtX2VsZW1lbnRzQnlOYW1lKQogICAgICAgICBtX2Vs
ZW1lbnRzQnlOYW1lID0gc3RkOjptYWtlX3VuaXF1ZTxUcmVlU2NvcGVPcmRlcmVkTWFwPigpOwog
ICAgIG1fZWxlbWVudHNCeU5hbWUtPmFkZChuYW1lLCBlbGVtZW50LCAqdGhpcyk7CiB9CiAKLXZv
aWQgVHJlZVNjb3BlOjpyZW1vdmVFbGVtZW50QnlOYW1lKGNvbnN0IEF0b21pY1N0cmluZ0ltcGwm
IG5hbWUsIEVsZW1lbnQmIGVsZW1lbnQpCit2b2lkIFRyZWVTY29wZTo6cmVtb3ZlRWxlbWVudEJ5
TmFtZShjb25zdCBBdG9tU3RyaW5nSW1wbCYgbmFtZSwgRWxlbWVudCYgZWxlbWVudCkKIHsKICAg
ICBpZiAoIW1fZWxlbWVudHNCeU5hbWUpCiAgICAgICAgIHJldHVybjsKQEAgLTIzNSw3ICsyMzUs
NyBAQCBFbGVtZW50KiBUcmVlU2NvcGU6OmFuY2VzdG9yRWxlbWVudEluVGhpc1Njb3BlKEVsZW1l
bnQqIGVsZW1lbnQpIGNvbnN0CiAKIHZvaWQgVHJlZVNjb3BlOjphZGRJbWFnZU1hcChIVE1MTWFw
RWxlbWVudCYgaW1hZ2VNYXApCiB7Ci0gICAgQXRvbWljU3RyaW5nSW1wbCogbmFtZSA9IGltYWdl
TWFwLmdldE5hbWUoKS5pbXBsKCk7CisgICAgQXRvbVN0cmluZ0ltcGwqIG5hbWUgPSBpbWFnZU1h
cC5nZXROYW1lKCkuaW1wbCgpOwogICAgIGlmICghbmFtZSkKICAgICAgICAgcmV0dXJuOwogICAg
IGlmICghbV9pbWFnZU1hcHNCeU5hbWUpCkBAIC0yNDcsNTMgKzI0Nyw1MyBAQCB2b2lkIFRyZWVT
Y29wZTo6cmVtb3ZlSW1hZ2VNYXAoSFRNTE1hcEVsZW1lbnQmIGltYWdlTWFwKQogewogICAgIGlm
ICghbV9pbWFnZU1hcHNCeU5hbWUpCiAgICAgICAgIHJldHVybjsKLSAgICBBdG9taWNTdHJpbmdJ
bXBsKiBuYW1lID0gaW1hZ2VNYXAuZ2V0TmFtZSgpLmltcGwoKTsKKyAgICBBdG9tU3RyaW5nSW1w
bCogbmFtZSA9IGltYWdlTWFwLmdldE5hbWUoKS5pbXBsKCk7CiAgICAgaWYgKCFuYW1lKQogICAg
ICAgICByZXR1cm47CiAgICAgbV9pbWFnZU1hcHNCeU5hbWUtPnJlbW92ZSgqbmFtZSwgaW1hZ2VN
YXApOwogfQogCi1IVE1MTWFwRWxlbWVudCogVHJlZVNjb3BlOjpnZXRJbWFnZU1hcChjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0CitIVE1MTWFwRWxlbWVudCogVHJlZVNjb3BlOjpnZXRJ
bWFnZU1hcChjb25zdCBBdG9tU3RyaW5nJiBuYW1lKSBjb25zdAogewogICAgIGlmICghbV9pbWFn
ZU1hcHNCeU5hbWUgfHwgIW5hbWUuaW1wbCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICByZXR1cm4gbV9pbWFnZU1hcHNCeU5hbWUtPmdldEVsZW1lbnRCeU1hcE5hbWUoKm5hbWUuaW1w
bCgpLCAqdGhpcyk7CiB9CiAKLXZvaWQgVHJlZVNjb3BlOjphZGRJbWFnZUVsZW1lbnRCeVVzZW1h
cChjb25zdCBBdG9taWNTdHJpbmdJbXBsJiBuYW1lLCBIVE1MSW1hZ2VFbGVtZW50JiBlbGVtZW50
KQordm9pZCBUcmVlU2NvcGU6OmFkZEltYWdlRWxlbWVudEJ5VXNlbWFwKGNvbnN0IEF0b21TdHJp
bmdJbXBsJiBuYW1lLCBIVE1MSW1hZ2VFbGVtZW50JiBlbGVtZW50KQogewogICAgIGlmICghbV9p
bWFnZXNCeVVzZW1hcCkKICAgICAgICAgbV9pbWFnZXNCeVVzZW1hcCA9IHN0ZDo6bWFrZV91bmlx
dWU8VHJlZVNjb3BlT3JkZXJlZE1hcD4oKTsKICAgICByZXR1cm4gbV9pbWFnZXNCeVVzZW1hcC0+
YWRkKG5hbWUsIGVsZW1lbnQsICp0aGlzKTsKIH0KIAotdm9pZCBUcmVlU2NvcGU6OnJlbW92ZUlt
YWdlRWxlbWVudEJ5VXNlbWFwKGNvbnN0IEF0b21pY1N0cmluZ0ltcGwmIG5hbWUsIEhUTUxJbWFn
ZUVsZW1lbnQmIGVsZW1lbnQpCit2b2lkIFRyZWVTY29wZTo6cmVtb3ZlSW1hZ2VFbGVtZW50QnlV
c2VtYXAoY29uc3QgQXRvbVN0cmluZ0ltcGwmIG5hbWUsIEhUTUxJbWFnZUVsZW1lbnQmIGVsZW1l
bnQpCiB7CiAgICAgaWYgKCFtX2ltYWdlc0J5VXNlbWFwKQogICAgICAgICByZXR1cm47CiAgICAg
bV9pbWFnZXNCeVVzZW1hcC0+cmVtb3ZlKG5hbWUsIGVsZW1lbnQpOwogfQogCi1IVE1MSW1hZ2VF
bGVtZW50KiBUcmVlU2NvcGU6OmltYWdlRWxlbWVudEJ5VXNlbWFwKGNvbnN0IEF0b21pY1N0cmlu
Z0ltcGwmIG5hbWUpIGNvbnN0CitIVE1MSW1hZ2VFbGVtZW50KiBUcmVlU2NvcGU6OmltYWdlRWxl
bWVudEJ5VXNlbWFwKGNvbnN0IEF0b21TdHJpbmdJbXBsJiBuYW1lKSBjb25zdAogewogICAgIGlm
ICghbV9pbWFnZXNCeVVzZW1hcCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJu
IG1faW1hZ2VzQnlVc2VtYXAtPmdldEVsZW1lbnRCeVVzZW1hcChuYW1lLCAqdGhpcyk7CiB9CiAK
LXZvaWQgVHJlZVNjb3BlOjphZGRMYWJlbChjb25zdCBBdG9taWNTdHJpbmdJbXBsJiBmb3JBdHRy
aWJ1dGVWYWx1ZSwgSFRNTExhYmVsRWxlbWVudCYgZWxlbWVudCkKK3ZvaWQgVHJlZVNjb3BlOjph
ZGRMYWJlbChjb25zdCBBdG9tU3RyaW5nSW1wbCYgZm9yQXR0cmlidXRlVmFsdWUsIEhUTUxMYWJl
bEVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgQVNTRVJUKG1fbGFiZWxzQnlGb3JBdHRyaWJ1dGUp
OwogICAgIG1fbGFiZWxzQnlGb3JBdHRyaWJ1dGUtPmFkZChmb3JBdHRyaWJ1dGVWYWx1ZSwgZWxl
bWVudCwgKnRoaXMpOwogfQogCi12b2lkIFRyZWVTY29wZTo6cmVtb3ZlTGFiZWwoY29uc3QgQXRv
bWljU3RyaW5nSW1wbCYgZm9yQXR0cmlidXRlVmFsdWUsIEhUTUxMYWJlbEVsZW1lbnQmIGVsZW1l
bnQpCit2b2lkIFRyZWVTY29wZTo6cmVtb3ZlTGFiZWwoY29uc3QgQXRvbVN0cmluZ0ltcGwmIGZv
ckF0dHJpYnV0ZVZhbHVlLCBIVE1MTGFiZWxFbGVtZW50JiBlbGVtZW50KQogewogICAgIEFTU0VS
VChtX2xhYmVsc0J5Rm9yQXR0cmlidXRlKTsKICAgICBtX2xhYmVsc0J5Rm9yQXR0cmlidXRlLT5y
ZW1vdmUoZm9yQXR0cmlidXRlVmFsdWUsIGVsZW1lbnQpOwogfQogCi1IVE1MTGFiZWxFbGVtZW50
KiBUcmVlU2NvcGU6OmxhYmVsRWxlbWVudEZvcklkKGNvbnN0IEF0b21pY1N0cmluZyYgZm9yQXR0
cmlidXRlVmFsdWUpCitIVE1MTGFiZWxFbGVtZW50KiBUcmVlU2NvcGU6OmxhYmVsRWxlbWVudEZv
cklkKGNvbnN0IEF0b21TdHJpbmcmIGZvckF0dHJpYnV0ZVZhbHVlKQogewogICAgIGlmIChmb3JB
dHRyaWJ1dGVWYWx1ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMzAz
LDcgKzMwMyw3IEBAIEhUTUxMYWJlbEVsZW1lbnQqIFRyZWVTY29wZTo6bGFiZWxFbGVtZW50Rm9y
SWQoY29uc3QgQXRvbWljU3RyaW5nJiBmb3JBdHRyaWJ1dGVWCiAgICAgICAgIG1fbGFiZWxzQnlG
b3JBdHRyaWJ1dGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFRyZWVTY29wZU9yZGVyZWRNYXA+KCk7CiAK
ICAgICAgICAgZm9yIChhdXRvJiBsYWJlbCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEhUTUxMYWJlbEVs
ZW1lbnQ+KG1fcm9vdE5vZGUpKSB7Ci0gICAgICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGZv
clZhbHVlID0gbGFiZWwuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihmb3JBdHRyKTsK
KyAgICAgICAgICAgIGNvbnN0IEF0b21TdHJpbmcmIGZvclZhbHVlID0gbGFiZWwuYXR0cmlidXRl
V2l0aG91dFN5bmNocm9uaXphdGlvbihmb3JBdHRyKTsKICAgICAgICAgICAgIGlmICghZm9yVmFs
dWUuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIGFkZExhYmVsKCpmb3JWYWx1ZS5pbXBsKCks
IGxhYmVsKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVT
Y29wZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5oCmluZGV4IGVmYjQ0MjVmYmVl
M2U5OTdiNDc0N2ZiMjA0N2M3NDkzYTE2MDEzZGIuLjJmMjU3ZjBmZTFjN2YxMThjNzlhNDVmNGQw
N2M2OTQ5MzMxN2VkZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmgKQEAgLTMwLDcgKzMwLDcgQEAK
ICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvQXRvbVN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTU2
LDIwICs1NiwyMCBAQCBwdWJsaWM6CiAgICAgRWxlbWVudCogZm9jdXNlZEVsZW1lbnRJblNjb3Bl
KCk7CiAgICAgRWxlbWVudCogcG9pbnRlckxvY2tFbGVtZW50KCkgY29uc3Q7CiAKLSAgICBXRUJD
T1JFX0VYUE9SVCBFbGVtZW50KiBnZXRFbGVtZW50QnlJZChjb25zdCBBdG9taWNTdHJpbmcmKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBFbGVtZW50KiBnZXRFbGVtZW50QnlJZChjb25zdCBB
dG9tU3RyaW5nJikgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgRWxlbWVudCogZ2V0RWxlbWVu
dEJ5SWQoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAgRWxlbWVudCogZ2V0RWxlbWVudEJ5SWQo
U3RyaW5nVmlldykgY29uc3Q7Ci0gICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiogZ2V0QWxsRWxl
bWVudHNCeUlkKGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0OwotICAgIGJvb2wgaGFzRWxlbWVu
dFdpdGhJZChjb25zdCBBdG9taWNTdHJpbmdJbXBsJikgY29uc3Q7Ci0gICAgYm9vbCBjb250YWlu
c011bHRpcGxlRWxlbWVudHNXaXRoSWQoY29uc3QgQXRvbWljU3RyaW5nJiBpZCkgY29uc3Q7Ci0g
ICAgdm9pZCBhZGRFbGVtZW50QnlJZChjb25zdCBBdG9taWNTdHJpbmdJbXBsJiBlbGVtZW50SWQs
IEVsZW1lbnQmLCBib29sIG5vdGlmeU9ic2VydmVycyA9IHRydWUpOwotICAgIHZvaWQgcmVtb3Zl
RWxlbWVudEJ5SWQoY29uc3QgQXRvbWljU3RyaW5nSW1wbCYgZWxlbWVudElkLCBFbGVtZW50Jiwg
Ym9vbCBub3RpZnlPYnNlcnZlcnMgPSB0cnVlKTsKLQotICAgIFdFQkNPUkVfRVhQT1JUIEVsZW1l
bnQqIGdldEVsZW1lbnRCeU5hbWUoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3Q7Ci0gICAgYm9v
bCBoYXNFbGVtZW50V2l0aE5hbWUoY29uc3QgQXRvbWljU3RyaW5nSW1wbCYpIGNvbnN0OwotICAg
IGJvb2wgY29udGFpbnNNdWx0aXBsZUVsZW1lbnRzV2l0aE5hbWUoY29uc3QgQXRvbWljU3RyaW5n
JikgY29uc3Q7Ci0gICAgdm9pZCBhZGRFbGVtZW50QnlOYW1lKGNvbnN0IEF0b21pY1N0cmluZ0lt
cGwmLCBFbGVtZW50Jik7Ci0gICAgdm9pZCByZW1vdmVFbGVtZW50QnlOYW1lKGNvbnN0IEF0b21p
Y1N0cmluZ0ltcGwmLCBFbGVtZW50Jik7CisgICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiogZ2V0
QWxsRWxlbWVudHNCeUlkKGNvbnN0IEF0b21TdHJpbmcmKSBjb25zdDsKKyAgICBib29sIGhhc0Vs
ZW1lbnRXaXRoSWQoY29uc3QgQXRvbVN0cmluZ0ltcGwmKSBjb25zdDsKKyAgICBib29sIGNvbnRh
aW5zTXVsdGlwbGVFbGVtZW50c1dpdGhJZChjb25zdCBBdG9tU3RyaW5nJiBpZCkgY29uc3Q7Cisg
ICAgdm9pZCBhZGRFbGVtZW50QnlJZChjb25zdCBBdG9tU3RyaW5nSW1wbCYgZWxlbWVudElkLCBF
bGVtZW50JiwgYm9vbCBub3RpZnlPYnNlcnZlcnMgPSB0cnVlKTsKKyAgICB2b2lkIHJlbW92ZUVs
ZW1lbnRCeUlkKGNvbnN0IEF0b21TdHJpbmdJbXBsJiBlbGVtZW50SWQsIEVsZW1lbnQmLCBib29s
IG5vdGlmeU9ic2VydmVycyA9IHRydWUpOworCisgICAgV0VCQ09SRV9FWFBPUlQgRWxlbWVudCog
Z2V0RWxlbWVudEJ5TmFtZShjb25zdCBBdG9tU3RyaW5nJikgY29uc3Q7CisgICAgYm9vbCBoYXNF
bGVtZW50V2l0aE5hbWUoY29uc3QgQXRvbVN0cmluZ0ltcGwmKSBjb25zdDsKKyAgICBib29sIGNv
bnRhaW5zTXVsdGlwbGVFbGVtZW50c1dpdGhOYW1lKGNvbnN0IEF0b21TdHJpbmcmKSBjb25zdDsK
KyAgICB2b2lkIGFkZEVsZW1lbnRCeU5hbWUoY29uc3QgQXRvbVN0cmluZ0ltcGwmLCBFbGVtZW50
Jik7CisgICAgdm9pZCByZW1vdmVFbGVtZW50QnlOYW1lKGNvbnN0IEF0b21TdHJpbmdJbXBsJiwg
RWxlbWVudCYpOwogCiAgICAgRG9jdW1lbnQmIGRvY3VtZW50U2NvcGUoKSBjb25zdCB7IHJldHVy
biBtX2RvY3VtZW50U2NvcGUuZ2V0KCk7IH0KICAgICBzdGF0aWMgcHRyZGlmZl90IGRvY3VtZW50
U2NvcGVNZW1vcnlPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoVHJlZVNjb3BlLCBt
X2RvY3VtZW50U2NvcGUpOyB9CkBAIC04MiwxNyArODIsMTcgQEAgcHVibGljOgogCiAgICAgdm9p
ZCBhZGRJbWFnZU1hcChIVE1MTWFwRWxlbWVudCYpOwogICAgIHZvaWQgcmVtb3ZlSW1hZ2VNYXAo
SFRNTE1hcEVsZW1lbnQmKTsKLSAgICBIVE1MTWFwRWxlbWVudCogZ2V0SW1hZ2VNYXAoY29uc3Qg
QXRvbWljU3RyaW5nJikgY29uc3Q7CisgICAgSFRNTE1hcEVsZW1lbnQqIGdldEltYWdlTWFwKGNv
bnN0IEF0b21TdHJpbmcmKSBjb25zdDsKIAotICAgIHZvaWQgYWRkSW1hZ2VFbGVtZW50QnlVc2Vt
YXAoY29uc3QgQXRvbWljU3RyaW5nSW1wbCYsIEhUTUxJbWFnZUVsZW1lbnQmKTsKLSAgICB2b2lk
IHJlbW92ZUltYWdlRWxlbWVudEJ5VXNlbWFwKGNvbnN0IEF0b21pY1N0cmluZ0ltcGwmLCBIVE1M
SW1hZ2VFbGVtZW50Jik7Ci0gICAgSFRNTEltYWdlRWxlbWVudCogaW1hZ2VFbGVtZW50QnlVc2Vt
YXAoY29uc3QgQXRvbWljU3RyaW5nSW1wbCYpIGNvbnN0OworICAgIHZvaWQgYWRkSW1hZ2VFbGVt
ZW50QnlVc2VtYXAoY29uc3QgQXRvbVN0cmluZ0ltcGwmLCBIVE1MSW1hZ2VFbGVtZW50Jik7Cisg
ICAgdm9pZCByZW1vdmVJbWFnZUVsZW1lbnRCeVVzZW1hcChjb25zdCBBdG9tU3RyaW5nSW1wbCYs
IEhUTUxJbWFnZUVsZW1lbnQmKTsKKyAgICBIVE1MSW1hZ2VFbGVtZW50KiBpbWFnZUVsZW1lbnRC
eVVzZW1hcChjb25zdCBBdG9tU3RyaW5nSW1wbCYpIGNvbnN0OwogCiAgICAgLy8gRm9yIGFjY2Vz
c2liaWxpdHkuCiAgICAgYm9vbCBzaG91bGRDYWNoZUxhYmVsc0J5Rm9yQXR0cmlidXRlKCkgY29u
c3QgeyByZXR1cm4gISFtX2xhYmVsc0J5Rm9yQXR0cmlidXRlOyB9Ci0gICAgdm9pZCBhZGRMYWJl
bChjb25zdCBBdG9taWNTdHJpbmdJbXBsJiBmb3JBdHRyaWJ1dGVWYWx1ZSwgSFRNTExhYmVsRWxl
bWVudCYpOwotICAgIHZvaWQgcmVtb3ZlTGFiZWwoY29uc3QgQXRvbWljU3RyaW5nSW1wbCYgZm9y
QXR0cmlidXRlVmFsdWUsIEhUTUxMYWJlbEVsZW1lbnQmKTsKLSAgICBIVE1MTGFiZWxFbGVtZW50
KiBsYWJlbEVsZW1lbnRGb3JJZChjb25zdCBBdG9taWNTdHJpbmcmIGZvckF0dHJpYnV0ZVZhbHVl
KTsKKyAgICB2b2lkIGFkZExhYmVsKGNvbnN0IEF0b21TdHJpbmdJbXBsJiBmb3JBdHRyaWJ1dGVW
YWx1ZSwgSFRNTExhYmVsRWxlbWVudCYpOworICAgIHZvaWQgcmVtb3ZlTGFiZWwoY29uc3QgQXRv
bVN0cmluZ0ltcGwmIGZvckF0dHJpYnV0ZVZhbHVlLCBIVE1MTGFiZWxFbGVtZW50Jik7CisgICAg
SFRNTExhYmVsRWxlbWVudCogbGFiZWxFbGVtZW50Rm9ySWQoY29uc3QgQXRvbVN0cmluZyYgZm9y
QXR0cmlidXRlVmFsdWUpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEVsZW1lbnQ+IGVs
ZW1lbnRGcm9tUG9pbnQoZG91YmxlIGNsaWVudFgsIGRvdWJsZSBjbGllbnRZKTsKICAgICBXRUJD
T1JFX0VYUE9SVCBWZWN0b3I8UmVmUHRyPEVsZW1lbnQ+PiBlbGVtZW50c0Zyb21Qb2ludChkb3Vi
bGUgY2xpZW50WCwgZG91YmxlIGNsaWVudFkpOwpAQCAtMTM3LDIyICsxMzcsMjIgQEAgcHJpdmF0
ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5PiBtX2lkVGFy
Z2V0T2JzZXJ2ZXJSZWdpc3RyeTsKIH07CiAKLWlubGluZSBib29sIFRyZWVTY29wZTo6aGFzRWxl
bWVudFdpdGhJZChjb25zdCBBdG9taWNTdHJpbmdJbXBsJiBpZCkgY29uc3QKK2lubGluZSBib29s
IFRyZWVTY29wZTo6aGFzRWxlbWVudFdpdGhJZChjb25zdCBBdG9tU3RyaW5nSW1wbCYgaWQpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIG1fZWxlbWVudHNCeUlkICYmIG1fZWxlbWVudHNCeUlkLT5jb250
YWlucyhpZCk7CiB9CiAKLWlubGluZSBib29sIFRyZWVTY29wZTo6Y29udGFpbnNNdWx0aXBsZUVs
ZW1lbnRzV2l0aElkKGNvbnN0IEF0b21pY1N0cmluZyYgaWQpIGNvbnN0CitpbmxpbmUgYm9vbCBU
cmVlU2NvcGU6OmNvbnRhaW5zTXVsdGlwbGVFbGVtZW50c1dpdGhJZChjb25zdCBBdG9tU3RyaW5n
JiBpZCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9lbGVtZW50c0J5SWQgJiYgaWQuaW1wbCgpICYm
IG1fZWxlbWVudHNCeUlkLT5jb250YWluc011bHRpcGxlKCppZC5pbXBsKCkpOwogfQogCi1pbmxp
bmUgYm9vbCBUcmVlU2NvcGU6Omhhc0VsZW1lbnRXaXRoTmFtZShjb25zdCBBdG9taWNTdHJpbmdJ
bXBsJiBpZCkgY29uc3QKK2lubGluZSBib29sIFRyZWVTY29wZTo6aGFzRWxlbWVudFdpdGhOYW1l
KGNvbnN0IEF0b21TdHJpbmdJbXBsJiBpZCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9lbGVtZW50
c0J5TmFtZSAmJiBtX2VsZW1lbnRzQnlOYW1lLT5jb250YWlucyhpZCk7CiB9CiAKLWlubGluZSBi
b29sIFRyZWVTY29wZTo6Y29udGFpbnNNdWx0aXBsZUVsZW1lbnRzV2l0aE5hbWUoY29uc3QgQXRv
bWljU3RyaW5nJiBuYW1lKSBjb25zdAoraW5saW5lIGJvb2wgVHJlZVNjb3BlOjpjb250YWluc011
bHRpcGxlRWxlbWVudHNXaXRoTmFtZShjb25zdCBBdG9tU3RyaW5nJiBuYW1lKSBjb25zdAogewog
ICAgIHJldHVybiBtX2VsZW1lbnRzQnlOYW1lICYmIG5hbWUuaW1wbCgpICYmIG1fZWxlbWVudHNC
eU5hbWUtPmNvbnRhaW5zTXVsdGlwbGUoKm5hbWUuaW1wbCgpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGVPcmRlcmVkTWFwLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9UcmVlU2NvcGVPcmRlcmVkTWFwLmNwcAppbmRleCA2OTA2Mzg3YTNlZmQ3NDdiNWJjODRk
ZTBlMmJiZDhlYWY2Y2U3NGZlLi41N2RjZTViMjVmYTQzMjlhODY4Y2FiZDE0N2E4NDgxMGQzNzRk
MTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlT3JkZXJlZE1hcC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZU9yZGVyZWRNYXAuY3BwCkBAIC00
Nyw3ICs0Nyw3IEBAIHZvaWQgVHJlZVNjb3BlT3JkZXJlZE1hcDo6Y2xlYXIoKQogICAgIG1fbWFw
LmNsZWFyKCk7CiB9CiAKLXZvaWQgVHJlZVNjb3BlT3JkZXJlZE1hcDo6YWRkKGNvbnN0IEF0b21p
Y1N0cmluZ0ltcGwmIGtleSwgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgVHJlZVNjb3BlJiB0cmVl
U2NvcGUpCit2b2lkIFRyZWVTY29wZU9yZGVyZWRNYXA6OmFkZChjb25zdCBBdG9tU3RyaW5nSW1w
bCYga2V5LCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBUcmVlU2NvcGUmIHRyZWVTY29wZSkKIHsK
ICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCZlbGVtZW50LnRy
ZWVTY29wZSgpID09ICZ0cmVlU2NvcGUpOwogICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJ
Q0FUSU9OKHRyZWVTY29wZS5yb290Tm9kZSgpLmNvbnRhaW5zSW5jbHVkaW5nU2hhZG93RE9NKCZl
bGVtZW50KSk7CkBAIC03Myw3ICs3Myw3IEBAIHZvaWQgVHJlZVNjb3BlT3JkZXJlZE1hcDo6YWRk
KGNvbnN0IEF0b21pY1N0cmluZ0ltcGwmIGtleSwgRWxlbWVudCYgZWxlbWVudCwgY29uCiAgICAg
ZW50cnkub3JkZXJlZExpc3QuY2xlYXIoKTsKIH0KIAotdm9pZCBUcmVlU2NvcGVPcmRlcmVkTWFw
OjpyZW1vdmUoY29uc3QgQXRvbWljU3RyaW5nSW1wbCYga2V5LCBFbGVtZW50JiBlbGVtZW50KQor
dm9pZCBUcmVlU2NvcGVPcmRlcmVkTWFwOjpyZW1vdmUoY29uc3QgQXRvbVN0cmluZ0ltcGwmIGtl
eSwgRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBtX21hcC5jaGVja0NvbnNpc3RlbmN5KCk7CiAg
ICAgYXV0byBpdCA9IG1fbWFwLmZpbmQoJmtleSk7CkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgVHJl
ZVNjb3BlT3JkZXJlZE1hcDo6cmVtb3ZlKGNvbnN0IEF0b21pY1N0cmluZ0ltcGwmIGtleSwgRWxl
bWVudCYgZWxlbWVudCkKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEtleU1hdGNoaW5nRnVuY3Rp
b24+Ci1pbmxpbmUgRWxlbWVudCogVHJlZVNjb3BlT3JkZXJlZE1hcDo6Z2V0KGNvbnN0IEF0b21p
Y1N0cmluZ0ltcGwmIGtleSwgY29uc3QgVHJlZVNjb3BlJiBzY29wZSwgY29uc3QgS2V5TWF0Y2hp
bmdGdW5jdGlvbiYga2V5TWF0Y2hlcykgY29uc3QKK2lubGluZSBFbGVtZW50KiBUcmVlU2NvcGVP
cmRlcmVkTWFwOjpnZXQoY29uc3QgQXRvbVN0cmluZ0ltcGwmIGtleSwgY29uc3QgVHJlZVNjb3Bl
JiBzY29wZSwgY29uc3QgS2V5TWF0Y2hpbmdGdW5jdGlvbiYga2V5TWF0Y2hlcykgY29uc3QKIHsK
ICAgICBtX21hcC5jaGVja0NvbnNpc3RlbmN5KCk7CiAKQEAgLTE0Miw1NyArMTQyLDU3IEBAIGlu
bGluZSBFbGVtZW50KiBUcmVlU2NvcGVPcmRlcmVkTWFwOjpnZXQoY29uc3QgQXRvbWljU3RyaW5n
SW1wbCYga2V5LCBjb25zdCBUcmVlCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUVsZW1lbnQq
IFRyZWVTY29wZU9yZGVyZWRNYXA6OmdldEVsZW1lbnRCeUlkKGNvbnN0IEF0b21pY1N0cmluZ0lt
cGwmIGtleSwgY29uc3QgVHJlZVNjb3BlJiBzY29wZSkgY29uc3QKK0VsZW1lbnQqIFRyZWVTY29w
ZU9yZGVyZWRNYXA6OmdldEVsZW1lbnRCeUlkKGNvbnN0IEF0b21TdHJpbmdJbXBsJiBrZXksIGNv
bnN0IFRyZWVTY29wZSYgc2NvcGUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGdldChrZXksIHNjb3Bl
LCBbXSAoY29uc3QgQXRvbWljU3RyaW5nSW1wbCYga2V5LCBjb25zdCBFbGVtZW50JiBlbGVtZW50
KSB7CisgICAgcmV0dXJuIGdldChrZXksIHNjb3BlLCBbXSAoY29uc3QgQXRvbVN0cmluZ0ltcGwm
IGtleSwgY29uc3QgRWxlbWVudCYgZWxlbWVudCkgewogICAgICAgICByZXR1cm4gZWxlbWVudC5n
ZXRJZEF0dHJpYnV0ZSgpLmltcGwoKSA9PSAma2V5OwogICAgIH0pOwogfQogCi1FbGVtZW50KiBU
cmVlU2NvcGVPcmRlcmVkTWFwOjpnZXRFbGVtZW50QnlOYW1lKGNvbnN0IEF0b21pY1N0cmluZ0lt
cGwmIGtleSwgY29uc3QgVHJlZVNjb3BlJiBzY29wZSkgY29uc3QKK0VsZW1lbnQqIFRyZWVTY29w
ZU9yZGVyZWRNYXA6OmdldEVsZW1lbnRCeU5hbWUoY29uc3QgQXRvbVN0cmluZ0ltcGwmIGtleSwg
Y29uc3QgVHJlZVNjb3BlJiBzY29wZSkgY29uc3QKIHsKLSAgICByZXR1cm4gZ2V0KGtleSwgc2Nv
cGUsIFtdIChjb25zdCBBdG9taWNTdHJpbmdJbXBsJiBrZXksIGNvbnN0IEVsZW1lbnQmIGVsZW1l
bnQpIHsKKyAgICByZXR1cm4gZ2V0KGtleSwgc2NvcGUsIFtdIChjb25zdCBBdG9tU3RyaW5nSW1w
bCYga2V5LCBjb25zdCBFbGVtZW50JiBlbGVtZW50KSB7CiAgICAgICAgIHJldHVybiBlbGVtZW50
LmdldE5hbWVBdHRyaWJ1dGUoKS5pbXBsKCkgPT0gJmtleTsKICAgICB9KTsKIH0KIAotSFRNTE1h
cEVsZW1lbnQqIFRyZWVTY29wZU9yZGVyZWRNYXA6OmdldEVsZW1lbnRCeU1hcE5hbWUoY29uc3Qg
QXRvbWljU3RyaW5nSW1wbCYga2V5LCBjb25zdCBUcmVlU2NvcGUmIHNjb3BlKSBjb25zdAorSFRN
TE1hcEVsZW1lbnQqIFRyZWVTY29wZU9yZGVyZWRNYXA6OmdldEVsZW1lbnRCeU1hcE5hbWUoY29u
c3QgQXRvbVN0cmluZ0ltcGwmIGtleSwgY29uc3QgVHJlZVNjb3BlJiBzY29wZSkgY29uc3QKIHsK
LSAgICByZXR1cm4gZG93bmNhc3Q8SFRNTE1hcEVsZW1lbnQ+KGdldChrZXksIHNjb3BlLCBbXSAo
Y29uc3QgQXRvbWljU3RyaW5nSW1wbCYga2V5LCBjb25zdCBFbGVtZW50JiBlbGVtZW50KSB7Cisg
ICAgcmV0dXJuIGRvd25jYXN0PEhUTUxNYXBFbGVtZW50PihnZXQoa2V5LCBzY29wZSwgW10gKGNv
bnN0IEF0b21TdHJpbmdJbXBsJiBrZXksIGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpIHsKICAgICAg
ICAgcmV0dXJuIGlzPEhUTUxNYXBFbGVtZW50PihlbGVtZW50KSAmJiBkb3duY2FzdDxIVE1MTWFw
RWxlbWVudD4oZWxlbWVudCkuZ2V0TmFtZSgpLmltcGwoKSA9PSAma2V5OwogICAgIH0pKTsKIH0K
IAotSFRNTEltYWdlRWxlbWVudCogVHJlZVNjb3BlT3JkZXJlZE1hcDo6Z2V0RWxlbWVudEJ5VXNl
bWFwKGNvbnN0IEF0b21pY1N0cmluZ0ltcGwmIGtleSwgY29uc3QgVHJlZVNjb3BlJiBzY29wZSkg
Y29uc3QKK0hUTUxJbWFnZUVsZW1lbnQqIFRyZWVTY29wZU9yZGVyZWRNYXA6OmdldEVsZW1lbnRC
eVVzZW1hcChjb25zdCBBdG9tU3RyaW5nSW1wbCYga2V5LCBjb25zdCBUcmVlU2NvcGUmIHNjb3Bl
KSBjb25zdAogewotICAgIHJldHVybiBkb3duY2FzdDxIVE1MSW1hZ2VFbGVtZW50PihnZXQoa2V5
LCBzY29wZSwgW10gKGNvbnN0IEF0b21pY1N0cmluZ0ltcGwmIGtleSwgY29uc3QgRWxlbWVudCYg
ZWxlbWVudCkgeworICAgIHJldHVybiBkb3duY2FzdDxIVE1MSW1hZ2VFbGVtZW50PihnZXQoa2V5
LCBzY29wZSwgW10gKGNvbnN0IEF0b21TdHJpbmdJbXBsJiBrZXksIGNvbnN0IEVsZW1lbnQmIGVs
ZW1lbnQpIHsKICAgICAgICAgLy8gRklYTUU6IEhUTUw1IHNwZWNpZmljYXRpb24gc2F5cyB3ZSBz
aG91bGQgbWF0Y2ggYm90aCBpbWFnZSBhbmQgb2JqZWN0IGVsZW1lbnRzLgogICAgICAgICByZXR1
cm4gaXM8SFRNTEltYWdlRWxlbWVudD4oZWxlbWVudCkgJiYgZG93bmNhc3Q8SFRNTEltYWdlRWxl
bWVudD4oZWxlbWVudCkubWF0Y2hlc1VzZW1hcChrZXkpOwogICAgIH0pKTsKIH0KIAotSFRNTExh
YmVsRWxlbWVudCogVHJlZVNjb3BlT3JkZXJlZE1hcDo6Z2V0RWxlbWVudEJ5TGFiZWxGb3JBdHRy
aWJ1dGUoY29uc3QgQXRvbWljU3RyaW5nSW1wbCYga2V5LCBjb25zdCBUcmVlU2NvcGUmIHNjb3Bl
KSBjb25zdAorSFRNTExhYmVsRWxlbWVudCogVHJlZVNjb3BlT3JkZXJlZE1hcDo6Z2V0RWxlbWVu
dEJ5TGFiZWxGb3JBdHRyaWJ1dGUoY29uc3QgQXRvbVN0cmluZ0ltcGwmIGtleSwgY29uc3QgVHJl
ZVNjb3BlJiBzY29wZSkgY29uc3QKIHsKLSAgICByZXR1cm4gZG93bmNhc3Q8SFRNTExhYmVsRWxl
bWVudD4oZ2V0KGtleSwgc2NvcGUsIFtdIChjb25zdCBBdG9taWNTdHJpbmdJbXBsJiBrZXksIGNv
bnN0IEVsZW1lbnQmIGVsZW1lbnQpIHsKKyAgICByZXR1cm4gZG93bmNhc3Q8SFRNTExhYmVsRWxl
bWVudD4oZ2V0KGtleSwgc2NvcGUsIFtdIChjb25zdCBBdG9tU3RyaW5nSW1wbCYga2V5LCBjb25z
dCBFbGVtZW50JiBlbGVtZW50KSB7CiAgICAgICAgIHJldHVybiBpczxIVE1MTGFiZWxFbGVtZW50
PihlbGVtZW50KSAmJiBlbGVtZW50LmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oZm9y
QXR0cikuaW1wbCgpID09ICZrZXk7CiAgICAgfSkpOwogfQogCi1FbGVtZW50KiBUcmVlU2NvcGVP
cmRlcmVkTWFwOjpnZXRFbGVtZW50QnlXaW5kb3dOYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5n
SW1wbCYga2V5LCBjb25zdCBUcmVlU2NvcGUmIHNjb3BlKSBjb25zdAorRWxlbWVudCogVHJlZVNj
b3BlT3JkZXJlZE1hcDo6Z2V0RWxlbWVudEJ5V2luZG93TmFtZWRJdGVtKGNvbnN0IEF0b21TdHJp
bmdJbXBsJiBrZXksIGNvbnN0IFRyZWVTY29wZSYgc2NvcGUpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IGdldChrZXksIHNjb3BlLCBbXSAoY29uc3QgQXRvbWljU3RyaW5nSW1wbCYga2V5LCBjb25zdCBF
bGVtZW50JiBlbGVtZW50KSB7CisgICAgcmV0dXJuIGdldChrZXksIHNjb3BlLCBbXSAoY29uc3Qg
QXRvbVN0cmluZ0ltcGwmIGtleSwgY29uc3QgRWxlbWVudCYgZWxlbWVudCkgewogICAgICAgICBy
ZXR1cm4gV2luZG93TmFtZUNvbGxlY3Rpb246OmVsZW1lbnRNYXRjaGVzKGVsZW1lbnQsICZrZXkp
OwogICAgIH0pOwogfQogCi1FbGVtZW50KiBUcmVlU2NvcGVPcmRlcmVkTWFwOjpnZXRFbGVtZW50
QnlEb2N1bWVudE5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmdJbXBsJiBrZXksIGNvbnN0IFRy
ZWVTY29wZSYgc2NvcGUpIGNvbnN0CitFbGVtZW50KiBUcmVlU2NvcGVPcmRlcmVkTWFwOjpnZXRF
bGVtZW50QnlEb2N1bWVudE5hbWVkSXRlbShjb25zdCBBdG9tU3RyaW5nSW1wbCYga2V5LCBjb25z
dCBUcmVlU2NvcGUmIHNjb3BlKSBjb25zdAogewotICAgIHJldHVybiBnZXQoa2V5LCBzY29wZSwg
W10gKGNvbnN0IEF0b21pY1N0cmluZ0ltcGwmIGtleSwgY29uc3QgRWxlbWVudCYgZWxlbWVudCkg
eworICAgIHJldHVybiBnZXQoa2V5LCBzY29wZSwgW10gKGNvbnN0IEF0b21TdHJpbmdJbXBsJiBr
ZXksIGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpIHsKICAgICAgICAgcmV0dXJuIERvY3VtZW50TmFt
ZUNvbGxlY3Rpb246OmVsZW1lbnRNYXRjaGVzKGVsZW1lbnQsICZrZXkpOwogICAgIH0pOwogfQog
Ci1jb25zdCBWZWN0b3I8RWxlbWVudCo+KiBUcmVlU2NvcGVPcmRlcmVkTWFwOjpnZXRBbGxFbGVt
ZW50c0J5SWQoY29uc3QgQXRvbWljU3RyaW5nSW1wbCYga2V5LCBjb25zdCBUcmVlU2NvcGUmIHNj
b3BlKSBjb25zdAorY29uc3QgVmVjdG9yPEVsZW1lbnQqPiogVHJlZVNjb3BlT3JkZXJlZE1hcDo6
Z2V0QWxsRWxlbWVudHNCeUlkKGNvbnN0IEF0b21TdHJpbmdJbXBsJiBrZXksIGNvbnN0IFRyZWVT
Y29wZSYgc2NvcGUpIGNvbnN0CiB7CiAgICAgbV9tYXAuY2hlY2tDb25zaXN0ZW5jeSgpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlT3JkZXJlZE1hcC5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZU9yZGVyZWRNYXAuaAppbmRleCBkMmU1MmNjZmI4NjQ4
OWYxMjk3ZTM1YWE2NjY0Yzk5NTRmNGJmYWM1Li41OTc1Mjc5MWU3NmVmOWZiNjJlYThjNmZiZTJh
MGFjOGQxMmY1NmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlT3Jk
ZXJlZE1hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGVPcmRlcmVkTWFwLmgK
QEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0
Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0
L0F0b21pY1N0cmluZ0ltcGwuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nSW1wbC5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ2LDI4ICs0NiwyOCBAQCBjbGFzcyBUcmVl
U2NvcGU7CiBjbGFzcyBUcmVlU2NvcGVPcmRlcmVkTWFwIHsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKLSAgICB2b2lkIGFkZChjb25zdCBBdG9taWNTdHJpbmdJbXBsJiwg
RWxlbWVudCYsIGNvbnN0IFRyZWVTY29wZSYpOwotICAgIHZvaWQgcmVtb3ZlKGNvbnN0IEF0b21p
Y1N0cmluZ0ltcGwmLCBFbGVtZW50Jik7CisgICAgdm9pZCBhZGQoY29uc3QgQXRvbVN0cmluZ0lt
cGwmLCBFbGVtZW50JiwgY29uc3QgVHJlZVNjb3BlJik7CisgICAgdm9pZCByZW1vdmUoY29uc3Qg
QXRvbVN0cmluZ0ltcGwmLCBFbGVtZW50Jik7CiAgICAgdm9pZCBjbGVhcigpOwogCi0gICAgYm9v
bCBjb250YWlucyhjb25zdCBBdG9taWNTdHJpbmdJbXBsJikgY29uc3Q7Ci0gICAgYm9vbCBjb250
YWluc1NpbmdsZShjb25zdCBBdG9taWNTdHJpbmdJbXBsJikgY29uc3Q7Ci0gICAgYm9vbCBjb250
YWluc011bHRpcGxlKGNvbnN0IEF0b21pY1N0cmluZ0ltcGwmKSBjb25zdDsKKyAgICBib29sIGNv
bnRhaW5zKGNvbnN0IEF0b21TdHJpbmdJbXBsJikgY29uc3Q7CisgICAgYm9vbCBjb250YWluc1Np
bmdsZShjb25zdCBBdG9tU3RyaW5nSW1wbCYpIGNvbnN0OworICAgIGJvb2wgY29udGFpbnNNdWx0
aXBsZShjb25zdCBBdG9tU3RyaW5nSW1wbCYpIGNvbnN0OwogCiAgICAgLy8gY29uY3JldGUgaW5z
dGFudGlhdGlvbnMgb2YgdGhlIGdldDw+KCkgbWV0aG9kIHRlbXBsYXRlCi0gICAgRWxlbWVudCog
Z2V0RWxlbWVudEJ5SWQoY29uc3QgQXRvbWljU3RyaW5nSW1wbCYsIGNvbnN0IFRyZWVTY29wZSYp
IGNvbnN0OwotICAgIEVsZW1lbnQqIGdldEVsZW1lbnRCeU5hbWUoY29uc3QgQXRvbWljU3RyaW5n
SW1wbCYsIGNvbnN0IFRyZWVTY29wZSYpIGNvbnN0OwotICAgIEhUTUxNYXBFbGVtZW50KiBnZXRF
bGVtZW50QnlNYXBOYW1lKGNvbnN0IEF0b21pY1N0cmluZ0ltcGwmLCBjb25zdCBUcmVlU2NvcGUm
KSBjb25zdDsKLSAgICBIVE1MSW1hZ2VFbGVtZW50KiBnZXRFbGVtZW50QnlVc2VtYXAoY29uc3Qg
QXRvbWljU3RyaW5nSW1wbCYsIGNvbnN0IFRyZWVTY29wZSYpIGNvbnN0OwotICAgIEhUTUxMYWJl
bEVsZW1lbnQqIGdldEVsZW1lbnRCeUxhYmVsRm9yQXR0cmlidXRlKGNvbnN0IEF0b21pY1N0cmlu
Z0ltcGwmLCBjb25zdCBUcmVlU2NvcGUmKSBjb25zdDsKLSAgICBFbGVtZW50KiBnZXRFbGVtZW50
QnlXaW5kb3dOYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nSW1wbCYsIGNvbnN0IFRyZWVTY29w
ZSYpIGNvbnN0OwotICAgIEVsZW1lbnQqIGdldEVsZW1lbnRCeURvY3VtZW50TmFtZWRJdGVtKGNv
bnN0IEF0b21pY1N0cmluZ0ltcGwmLCBjb25zdCBUcmVlU2NvcGUmKSBjb25zdDsKKyAgICBFbGVt
ZW50KiBnZXRFbGVtZW50QnlJZChjb25zdCBBdG9tU3RyaW5nSW1wbCYsIGNvbnN0IFRyZWVTY29w
ZSYpIGNvbnN0OworICAgIEVsZW1lbnQqIGdldEVsZW1lbnRCeU5hbWUoY29uc3QgQXRvbVN0cmlu
Z0ltcGwmLCBjb25zdCBUcmVlU2NvcGUmKSBjb25zdDsKKyAgICBIVE1MTWFwRWxlbWVudCogZ2V0
RWxlbWVudEJ5TWFwTmFtZShjb25zdCBBdG9tU3RyaW5nSW1wbCYsIGNvbnN0IFRyZWVTY29wZSYp
IGNvbnN0OworICAgIEhUTUxJbWFnZUVsZW1lbnQqIGdldEVsZW1lbnRCeVVzZW1hcChjb25zdCBB
dG9tU3RyaW5nSW1wbCYsIGNvbnN0IFRyZWVTY29wZSYpIGNvbnN0OworICAgIEhUTUxMYWJlbEVs
ZW1lbnQqIGdldEVsZW1lbnRCeUxhYmVsRm9yQXR0cmlidXRlKGNvbnN0IEF0b21TdHJpbmdJbXBs
JiwgY29uc3QgVHJlZVNjb3BlJikgY29uc3Q7CisgICAgRWxlbWVudCogZ2V0RWxlbWVudEJ5V2lu
ZG93TmFtZWRJdGVtKGNvbnN0IEF0b21TdHJpbmdJbXBsJiwgY29uc3QgVHJlZVNjb3BlJikgY29u
c3Q7CisgICAgRWxlbWVudCogZ2V0RWxlbWVudEJ5RG9jdW1lbnROYW1lZEl0ZW0oY29uc3QgQXRv
bVN0cmluZ0ltcGwmLCBjb25zdCBUcmVlU2NvcGUmKSBjb25zdDsKIAotICAgIGNvbnN0IFZlY3Rv
cjxFbGVtZW50Kj4qIGdldEFsbEVsZW1lbnRzQnlJZChjb25zdCBBdG9taWNTdHJpbmdJbXBsJiwg
Y29uc3QgVHJlZVNjb3BlJikgY29uc3Q7CisgICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiogZ2V0
QWxsRWxlbWVudHNCeUlkKGNvbnN0IEF0b21TdHJpbmdJbXBsJiwgY29uc3QgVHJlZVNjb3BlJikg
Y29uc3Q7CiAKIHByaXZhdGU6CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEtleU1hdGNoaW5nRnVu
Y3Rpb24+Ci0gICAgRWxlbWVudCogZ2V0KGNvbnN0IEF0b21pY1N0cmluZ0ltcGwmLCBjb25zdCBU
cmVlU2NvcGUmLCBjb25zdCBLZXlNYXRjaGluZ0Z1bmN0aW9uJikgY29uc3Q7CisgICAgRWxlbWVu
dCogZ2V0KGNvbnN0IEF0b21TdHJpbmdJbXBsJiwgY29uc3QgVHJlZVNjb3BlJiwgY29uc3QgS2V5
TWF0Y2hpbmdGdW5jdGlvbiYpIGNvbnN0OwogCiAgICAgc3RydWN0IE1hcEVudHJ5IHsKICAgICAg
ICAgTWFwRW50cnkoKSB7IH0KQEAgLTg0LDIzICs4NCwyMyBAQCBwcml2YXRlOgogI2VuZGlmCiAg
ICAgfTsKIAotICAgIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBBdG9taWNTdHJpbmdJbXBsKiwgTWFw
RW50cnk+IE1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgQXRvbVN0cmluZ0ltcGwqLCBN
YXBFbnRyeT4gTWFwOwogCiAgICAgbXV0YWJsZSBNYXAgbV9tYXA7CiB9OwogCi1pbmxpbmUgYm9v
bCBUcmVlU2NvcGVPcmRlcmVkTWFwOjpjb250YWluc1NpbmdsZShjb25zdCBBdG9taWNTdHJpbmdJ
bXBsJiBpZCkgY29uc3QKK2lubGluZSBib29sIFRyZWVTY29wZU9yZGVyZWRNYXA6OmNvbnRhaW5z
U2luZ2xlKGNvbnN0IEF0b21TdHJpbmdJbXBsJiBpZCkgY29uc3QKIHsKICAgICBhdXRvIGl0ID0g
bV9tYXAuZmluZCgmaWQpOwogICAgIHJldHVybiBpdCAhPSBtX21hcC5lbmQoKSAmJiBpdC0+dmFs
dWUuY291bnQgPT0gMTsKIH0KIAotaW5saW5lIGJvb2wgVHJlZVNjb3BlT3JkZXJlZE1hcDo6Y29u
dGFpbnMoY29uc3QgQXRvbWljU3RyaW5nSW1wbCYgaWQpIGNvbnN0CitpbmxpbmUgYm9vbCBUcmVl
U2NvcGVPcmRlcmVkTWFwOjpjb250YWlucyhjb25zdCBBdG9tU3RyaW5nSW1wbCYgaWQpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIG1fbWFwLmNvbnRhaW5zKCZpZCk7CiB9CiAKLWlubGluZSBib29sIFRy
ZWVTY29wZU9yZGVyZWRNYXA6OmNvbnRhaW5zTXVsdGlwbGUoY29uc3QgQXRvbWljU3RyaW5nSW1w
bCYgaWQpIGNvbnN0CitpbmxpbmUgYm9vbCBUcmVlU2NvcGVPcmRlcmVkTWFwOjpjb250YWluc011
bHRpcGxlKGNvbnN0IEF0b21TdHJpbmdJbXBsJiBpZCkgY29uc3QKIHsKICAgICBhdXRvIGl0ID0g
bV9tYXAuZmluZCgmaWQpOwogICAgIHJldHVybiBpdCAhPSBtX21hcC5lbmQoKSAmJiBpdC0+dmFs
dWUuY291bnQgPiAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnQuY3BwCmluZGV4IDQyZjEyZTk3NzMzMTgxOGJm
YWVjYThkNDlhMGMyMzMxNDA1NDdlYWQuLjg3ZjhkMDQ0ZTU5NzA2ZWViMDgxOWE2YTc5YzMyNDE3
YWI1ZjcxYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudC5jcHAKQEAgLTMyLDIxICszMiwyMSBAQCBVSUV2
ZW50OjpVSUV2ZW50KCkKIHsKIH0KIAotVUlFdmVudDo6VUlFdmVudChjb25zdCBBdG9taWNTdHJp
bmcmIGV2ZW50VHlwZSwgQ2FuQnViYmxlIGNhbkJ1YmJsZSwgSXNDYW5jZWxhYmxlIGlzQ2FuY2Vs
YWJsZSwgSXNDb21wb3NlZCBpc0NvbXBvc2VkLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlld0Fy
ZywgaW50IGRldGFpbEFyZykKK1VJRXZlbnQ6OlVJRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgZXZl
bnRUeXBlLCBDYW5CdWJibGUgY2FuQnViYmxlLCBJc0NhbmNlbGFibGUgaXNDYW5jZWxhYmxlLCBJ
c0NvbXBvc2VkIGlzQ29tcG9zZWQsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3QXJnLCBpbnQg
ZGV0YWlsQXJnKQogICAgIDogRXZlbnQoZXZlbnRUeXBlLCBjYW5CdWJibGUsIGlzQ2FuY2VsYWJs
ZSwgaXNDb21wb3NlZCkKICAgICAsIG1fdmlldyhXVEZNb3ZlKHZpZXdBcmcpKQogICAgICwgbV9k
ZXRhaWwoZGV0YWlsQXJnKQogewogfQogCi1VSUV2ZW50OjpVSUV2ZW50KGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBDYW5CdWJibGUgY2FuQnViYmxlLCBJc0NhbmNlbGFibGUgaXNDYW5j
ZWxhYmxlLCBJc0NvbXBvc2VkIGlzQ29tcG9zZWQsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBS
ZWZQdHI8V2luZG93UHJveHk+JiYgdmlld0FyZywgaW50IGRldGFpbEFyZywgSXNUcnVzdGVkIGlz
VHJ1c3RlZCkKK1VJRXZlbnQ6OlVJRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBD
YW5CdWJibGUgY2FuQnViYmxlLCBJc0NhbmNlbGFibGUgaXNDYW5jZWxhYmxlLCBJc0NvbXBvc2Vk
IGlzQ29tcG9zZWQsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBSZWZQdHI8V2luZG93UHJveHk+
JiYgdmlld0FyZywgaW50IGRldGFpbEFyZywgSXNUcnVzdGVkIGlzVHJ1c3RlZCkKICAgICA6IEV2
ZW50KGV2ZW50VHlwZSwgY2FuQnViYmxlLCBpc0NhbmNlbGFibGUsIGlzQ29tcG9zZWQsIHRpbWVz
dGFtcCwgaXNUcnVzdGVkKQogICAgICwgbV92aWV3KFdURk1vdmUodmlld0FyZykpCiAgICAgLCBt
X2RldGFpbChkZXRhaWxBcmcpCiB7CiB9CiAKLVVJRXZlbnQ6OlVJRXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IFVJRXZlbnRJbml0JiBpbml0aWFsaXplcikKK1VJRXZl
bnQ6OlVJRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBVSUV2ZW50SW5p
dCYgaW5pdGlhbGl6ZXIpCiAgICAgOiBFdmVudChldmVudFR5cGUsIGluaXRpYWxpemVyLCBJc1Ry
dXN0ZWQ6Ok5vKQogICAgICwgbV92aWV3KGluaXRpYWxpemVyLnZpZXcuZ2V0KCkpCiAgICAgLCBt
X2RldGFpbChpbml0aWFsaXplci5kZXRhaWwpCkBAIC01NSw3ICs1NSw3IEBAIFVJRXZlbnQ6OlVJ
RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IFVJRXZlbnRJbml0JiBp
bml0aWFsaXplcikKIAogVUlFdmVudDo6flVJRXZlbnQoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgVUlF
dmVudDo6aW5pdFVJRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlQXJnLCBib29sIGNhbkJ1
YmJsZUFyZywgYm9vbCBjYW5jZWxhYmxlQXJnLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlld0Fy
ZywgaW50IGRldGFpbEFyZykKK3ZvaWQgVUlFdmVudDo6aW5pdFVJRXZlbnQoY29uc3QgQXRvbVN0
cmluZyYgdHlwZUFyZywgYm9vbCBjYW5CdWJibGVBcmcsIGJvb2wgY2FuY2VsYWJsZUFyZywgUmVm
UHRyPFdpbmRvd1Byb3h5PiYmIHZpZXdBcmcsIGludCBkZXRhaWxBcmcpCiB7CiAgICAgaWYgKGlz
QmVpbmdEaXNwYXRjaGVkKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9VSUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudC5oCmluZGV4
IDkzMzNmMDM5YTdiNDdjMmNkZTk2MzQ2ZmM5ZTI1OTgyZDAzYjE2ZGEuLmVjMmVlZTc4ZGY4OTQz
ZmJjNWM4MTg3MDVhN2NiYzJiZGU3NDZmZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9VSUV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnQuaApAQCAtMzQsNyAr
MzQsNyBAQCB0eXBlZGVmIFdpbmRvd1Byb3h5IEFic3RyYWN0VmlldzsKIAogY2xhc3MgVUlFdmVu
dCA6IHB1YmxpYyBFdmVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxVSUV2ZW50PiBjcmVh
dGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBDYW5CdWJibGUgY2FuQnViYmxlLCBJc0NhbmNl
bGFibGUgaXNDYW5jZWxhYmxlLCBJc0NvbXBvc2VkIGlzQ29tcG9zZWQsIFJlZlB0cjxXaW5kb3dQ
cm94eT4mJiB2aWV3LCBpbnQgZGV0YWlsKQorICAgIHN0YXRpYyBSZWY8VUlFdmVudD4gY3JlYXRl
KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIENhbkJ1YmJsZSBjYW5CdWJibGUsIElzQ2FuY2VsYWJs
ZSBpc0NhbmNlbGFibGUsIElzQ29tcG9zZWQgaXNDb21wb3NlZCwgUmVmUHRyPFdpbmRvd1Byb3h5
PiYmIHZpZXcsIGludCBkZXRhaWwpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBVSUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgaXNDYW5jZWxhYmxlLCBpc0NvbXBvc2VkLCBXVEZN
b3ZlKHZpZXcpLCBkZXRhaWwpKTsKICAgICB9CkBAIC00MiwxMyArNDIsMTMgQEAgcHVibGljOgog
ICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVUlFdmVudCk7CiAgICAgfQotICAg
IHN0YXRpYyBSZWY8VUlFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29u
c3QgVUlFdmVudEluaXQmIGluaXRpYWxpemVyKQorICAgIHN0YXRpYyBSZWY8VUlFdmVudD4gY3Jl
YXRlKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IFVJRXZlbnRJbml0JiBpbml0aWFsaXpl
cikKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFVJRXZlbnQodHlwZSwgaW5p
dGlhbGl6ZXIpKTsKICAgICB9CiAgICAgdmlydHVhbCB+VUlFdmVudCgpOwogCi0gICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBpbml0VUlFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wg
Y2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgaW50IGRl
dGFpbCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbml0VUlFdmVudChjb25zdCBBdG9tU3Ry
aW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93
UHJveHk+JiYsIGludCBkZXRhaWwpOwogCiAgICAgV2luZG93UHJveHkqIHZpZXcoKSBjb25zdCB7
IHJldHVybiBtX3ZpZXcuZ2V0KCk7IH0KICAgICBpbnQgZGV0YWlsKCkgY29uc3QgeyByZXR1cm4g
bV9kZXRhaWw7IH0KQEAgLTY2LDkgKzY2LDkgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIFVJ
RXZlbnQoKTsKIAotICAgIFVJRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBDYW5CdWJi
bGUsIElzQ2FuY2VsYWJsZSwgSXNDb21wb3NlZCwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmLCBpbnQg
ZGV0YWlsKTsKLSAgICBVSUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgQ2FuQnViYmxl
LCBJc0NhbmNlbGFibGUsIElzQ29tcG9zZWQsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBSZWZQ
dHI8V2luZG93UHJveHk+JiYsIGludCBkZXRhaWwsIElzVHJ1c3RlZCA9IElzVHJ1c3RlZDo6WWVz
KTsKLSAgICBVSUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IFVJRXZlbnRJbml0Jik7
CisgICAgVUlFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBDYW5CdWJibGUsIElzQ2FuY2Vs
YWJsZSwgSXNDb21wb3NlZCwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmLCBpbnQgZGV0YWlsKTsKKyAg
ICBVSUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIENhbkJ1YmJsZSwgSXNDYW5jZWxhYmxl
LCBJc0NvbXBvc2VkLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgUmVmUHRyPFdpbmRvd1Byb3h5
PiYmLCBpbnQgZGV0YWlsLCBJc1RydXN0ZWQgPSBJc1RydXN0ZWQ6Olllcyk7CisgICAgVUlFdmVu
dChjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgVUlFdmVudEluaXQmKTsKIAogcHJpdmF0ZToKICAg
ICBib29sIGlzVUlFdmVudCgpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL1VJRXZlbnRXaXRoS2V5U3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50
V2l0aEtleVN0YXRlLmgKaW5kZXggMWI1YWJkNWIwNmI2NmJmNzY0ZWM2ZmI2OWEwMmIyNGU5ODc2
NDE1Zi4uYThmYzE0MzM1MjU4MzJhZDczY2FiNzgxM2NhN2UxNjI0MzNlMmYwYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnRXaXRoS2V5U3RhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vVUlFdmVudFdpdGhLZXlTdGF0ZS5oCkBAIC00NywyMSArNDcsMjEgQEAgcHVi
bGljOgogcHJvdGVjdGVkOgogICAgIFVJRXZlbnRXaXRoS2V5U3RhdGUoKSA9IGRlZmF1bHQ7CiAK
LSAgICBVSUV2ZW50V2l0aEtleVN0YXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgQ2FuQnVi
YmxlIGNhbkJ1YmJsZSwgSXNDYW5jZWxhYmxlIGNhbmNlbGFibGUsIElzQ29tcG9zZWQgaXNDb21w
b3NlZCwKKyAgICBVSUV2ZW50V2l0aEtleVN0YXRlKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIENh
bkJ1YmJsZSBjYW5CdWJibGUsIElzQ2FuY2VsYWJsZSBjYW5jZWxhYmxlLCBJc0NvbXBvc2VkIGlz
Q29tcG9zZWQsCiAgICAgICAgIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBpbnQgZGV0YWls
LCBPcHRpb25TZXQ8TW9kaWZpZXI+IG1vZGlmaWVycykKICAgICAgICAgOiBVSUV2ZW50KHR5cGUs
IGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgaXNDb21wb3NlZCwgV1RGTW92ZSh2aWV3KSwgZGV0YWls
KQogICAgICAgICAsIG1fbW9kaWZpZXJzKG1vZGlmaWVycykKICAgICB7CiAgICAgfQogCi0gICAg
VUlFdmVudFdpdGhLZXlTdGF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIENhbkJ1YmJsZSBj
YW5CdWJibGUsIElzQ2FuY2VsYWJsZSBjYW5jZWxhYmxlLCBJc0NvbXBvc2VkIGlzQ29tcG9zZWQs
CisgICAgVUlFdmVudFdpdGhLZXlTdGF0ZShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBDYW5CdWJi
bGUgY2FuQnViYmxlLCBJc0NhbmNlbGFibGUgY2FuY2VsYWJsZSwgSXNDb21wb3NlZCBpc0NvbXBv
c2VkLAogICAgICAgICBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgUmVmUHRyPFdpbmRvd1Byb3h5
PiYmIHZpZXcsIGludCBkZXRhaWwsIE9wdGlvblNldDxNb2RpZmllcj4gbW9kaWZpZXJzLCBJc1Ry
dXN0ZWQgaXNUcnVzdGVkKQogICAgICAgICA6IFVJRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5j
ZWxhYmxlLCBpc0NvbXBvc2VkLCB0aW1lc3RhbXAsIFdURk1vdmUodmlldyksIGRldGFpbCwgaXNU
cnVzdGVkKQogICAgICAgICAsIG1fbW9kaWZpZXJzKG1vZGlmaWVycykKICAgICB7CiAgICAgfQog
Ci0gICAgVUlFdmVudFdpdGhLZXlTdGF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0
IEV2ZW50TW9kaWZpZXJJbml0JiBpbml0aWFsaXplcikKKyAgICBVSUV2ZW50V2l0aEtleVN0YXRl
KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IEV2ZW50TW9kaWZpZXJJbml0JiBpbml0aWFs
aXplcikKICAgICAgICAgOiBVSUV2ZW50KHR5cGUsIGluaXRpYWxpemVyKQogICAgICAgICAsIG1f
bW9kaWZpZXJzKG1vZGlmaWVyc0Zyb21Jbml0aWFsaXplcihpbml0aWFsaXplcikpCiAgICAgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Zpc2l0ZWRMaW5rU3RhdGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL1Zpc2l0ZWRMaW5rU3RhdGUuY3BwCmluZGV4IDYxMjk3YjJiYjliZjBh
ZDNlMGI5NTM4Mjk3NjQyN2E2ZDMzNDMyZmMuLmEwM2FmMTQ3ZjM5YzIxZTRlZjc3N2JmY2JmNDQx
MWQxNGFhYjBjODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9WaXNpdGVkTGlua1N0
YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVmlzaXRlZExpbmtTdGF0ZS5jcHAKQEAg
LTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRN
TE5hbWVzOwogCi1pbmxpbmUgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyogbGlua0F0dHJpYnV0
ZShjb25zdCBFbGVtZW50JiBlbGVtZW50KQoraW5saW5lIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5n
KiBsaW5rQXR0cmlidXRlKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgaWYgKCFlbGVt
ZW50LmlzTGluaygpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTkxLDcgKzkxLDcgQEAg
SW5zaWRlTGluayBWaXNpdGVkTGlua1N0YXRlOjpkZXRlcm1pbmVMaW5rU3RhdGVTbG93Q2FzZShj
b25zdCBFbGVtZW50JiBlbGVtZW50KQogewogICAgIEFTU0VSVChlbGVtZW50LmlzTGluaygpKTsK
IAotICAgIGNvbnN0IEF0b21pY1N0cmluZyogYXR0cmlidXRlID0gbGlua0F0dHJpYnV0ZShlbGVt
ZW50KTsKKyAgICBjb25zdCBBdG9tU3RyaW5nKiBhdHRyaWJ1dGUgPSBsaW5rQXR0cmlidXRlKGVs
ZW1lbnQpOwogICAgIGlmICghYXR0cmlidXRlIHx8IGF0dHJpYnV0ZS0+aXNOdWxsKCkpCiAgICAg
ICAgIHJldHVybiBJbnNpZGVMaW5rOjpOb3RJbnNpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9XZWJLaXRBbmltYXRpb25FdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
V2ViS2l0QW5pbWF0aW9uRXZlbnQuY3BwCmluZGV4IDM4NzMzZjliZmJmNzg1NTA4NWNiODk1NDI4
ZDgyNmE1MTYxMTIwODQuLmYwNGM5MDk1ODc4YjkyMmQyNjkzY2JjY2I5NGI3OWQ2MjIxNjczZjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXRBbmltYXRpb25FdmVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1dlYktpdEFuaW1hdGlvbkV2ZW50LmNwcApAQCAtMjgs
MTQgKzI4LDE0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotV2ViS2l0QW5pbWF0aW9uRXZl
bnQ6OldlYktpdEFuaW1hdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3Qg
SW5pdCYgaW5pdGlhbGl6ZXIsIElzVHJ1c3RlZCBpc1RydXN0ZWQpCitXZWJLaXRBbmltYXRpb25F
dmVudDo6V2ViS2l0QW5pbWF0aW9uRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3Qg
SW5pdCYgaW5pdGlhbGl6ZXIsIElzVHJ1c3RlZCBpc1RydXN0ZWQpCiAgICAgOiBFdmVudCh0eXBl
LCBpbml0aWFsaXplciwgaXNUcnVzdGVkKQogICAgICwgbV9hbmltYXRpb25OYW1lKGluaXRpYWxp
emVyLmFuaW1hdGlvbk5hbWUpCiAgICAgLCBtX2VsYXBzZWRUaW1lKGluaXRpYWxpemVyLmVsYXBz
ZWRUaW1lKQogewogfQogCi1XZWJLaXRBbmltYXRpb25FdmVudDo6V2ViS2l0QW5pbWF0aW9uRXZl
bnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUs
IGRvdWJsZSBlbGFwc2VkVGltZSkKK1dlYktpdEFuaW1hdGlvbkV2ZW50OjpXZWJLaXRBbmltYXRp
b25FdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5h
bWUsIGRvdWJsZSBlbGFwc2VkVGltZSkKICAgICA6IEV2ZW50KHR5cGUsIENhbkJ1YmJsZTo6WWVz
LCBJc0NhbmNlbGFibGU6OlllcykKICAgICAsIG1fYW5pbWF0aW9uTmFtZShhbmltYXRpb25OYW1l
KQogICAgICwgbV9lbGFwc2VkVGltZShlbGFwc2VkVGltZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9XZWJLaXRBbmltYXRpb25FdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1dl
YktpdEFuaW1hdGlvbkV2ZW50LmgKaW5kZXggNTUwNmI2MTk3NDVhMjUxNWJjMDA5NDFjZTliMTc2
NzU3MzRjYWRmOC4uOWM3YTUxYTE4YWVlZGEzNWViMDRmNzNiNGU2ZTk1OTk0ZmFkMDY3YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1dlYktpdEFuaW1hdGlvbkV2ZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1dlYktpdEFuaW1hdGlvbkV2ZW50LmgKQEAgLTMxLDcgKzMxLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBXZWJLaXRBbmltYXRpb25FdmVudCBmaW5h
bCA6IHB1YmxpYyBFdmVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJLaXRBbmltYXRp
b25FdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBh
bmltYXRpb25OYW1lLCBkb3VibGUgZWxhcHNlZFRpbWUpCisgICAgc3RhdGljIFJlZjxXZWJLaXRB
bmltYXRpb25FdmVudD4gY3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmlu
ZyYgYW5pbWF0aW9uTmFtZSwgZG91YmxlIGVsYXBzZWRUaW1lKQogICAgIHsKICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgV2ViS2l0QW5pbWF0aW9uRXZlbnQodHlwZSwgYW5pbWF0aW9uTmFt
ZSwgZWxhcHNlZFRpbWUpKTsKICAgICB9CkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICAg
ICAgZG91YmxlIGVsYXBzZWRUaW1lIHsgMC4wIH07CiAgICAgfTsKIAotICAgIHN0YXRpYyBSZWY8
V2ViS2l0QW5pbWF0aW9uRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNv
bnN0IEluaXQmIGluaXRpYWxpemVyLCBJc1RydXN0ZWQgaXNUcnVzdGVkID0gSXNUcnVzdGVkOjpO
bykKKyAgICBzdGF0aWMgUmVmPFdlYktpdEFuaW1hdGlvbkV2ZW50PiBjcmVhdGUoY29uc3QgQXRv
bVN0cmluZyYgdHlwZSwgY29uc3QgSW5pdCYgaW5pdGlhbGl6ZXIsIElzVHJ1c3RlZCBpc1RydXN0
ZWQgPSBJc1RydXN0ZWQ6Ok5vKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
V2ViS2l0QW5pbWF0aW9uRXZlbnQodHlwZSwgaW5pdGlhbGl6ZXIsIGlzVHJ1c3RlZCkpOwogICAg
IH0KQEAgLTU0LDggKzU0LDggQEAgcHVibGljOgogICAgIEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50
ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgV2ViS2l0QW5pbWF0aW9u
RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5h
bWUsIGRvdWJsZSBlbGFwc2VkVGltZSk7Ci0gICAgV2ViS2l0QW5pbWF0aW9uRXZlbnQoY29uc3Qg
QXRvbWljU3RyaW5nJiwgY29uc3QgSW5pdCYsIElzVHJ1c3RlZCk7CisgICAgV2ViS2l0QW5pbWF0
aW9uRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25O
YW1lLCBkb3VibGUgZWxhcHNlZFRpbWUpOworICAgIFdlYktpdEFuaW1hdGlvbkV2ZW50KGNvbnN0
IEF0b21TdHJpbmcmLCBjb25zdCBJbml0JiwgSXNUcnVzdGVkKTsKIAogICAgIFN0cmluZyBtX2Fu
aW1hdGlvbk5hbWU7CiAgICAgZG91YmxlIG1fZWxhcHNlZFRpbWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9XZWJLaXRUcmFuc2l0aW9uRXZlbnQuY3BwCmluZGV4IGRhYjliZDFmMDRlNTdjNTk2ZDdh
NWJhYzYyZGQ4NDUxNTk2YjI2ZjcuLmY0ZWU0NjU5ODFhNTVhYThiZmFkYzg4YzdhNzYyZDgyODhh
NGU3YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXRUcmFuc2l0aW9uRXZl
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXRUcmFuc2l0aW9uRXZlbnQuY3Bw
CkBAIC0yOCw3ICsyOCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotV2ViS2l0VHJhbnNp
dGlvbkV2ZW50OjpXZWJLaXRUcmFuc2l0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBl
LCBjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgZG91YmxlIGVsYXBzZWRUaW1lLCBjb25zdCBT
dHJpbmcmIHBzZXVkb0VsZW1lbnQpCitXZWJLaXRUcmFuc2l0aW9uRXZlbnQ6OldlYktpdFRyYW5z
aXRpb25FdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHByb3BlcnR5
TmFtZSwgZG91YmxlIGVsYXBzZWRUaW1lLCBjb25zdCBTdHJpbmcmIHBzZXVkb0VsZW1lbnQpCiAg
ICAgOiBFdmVudCh0eXBlLCBDYW5CdWJibGU6OlllcywgSXNDYW5jZWxhYmxlOjpZZXMpCiAgICAg
LCBtX3Byb3BlcnR5TmFtZShwcm9wZXJ0eU5hbWUpCiAgICAgLCBtX2VsYXBzZWRUaW1lKGVsYXBz
ZWRUaW1lKQpAQCAtMzYsNyArMzYsNyBAQCBXZWJLaXRUcmFuc2l0aW9uRXZlbnQ6OldlYktpdFRy
YW5zaXRpb25FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cgogewogfQog
Ci1XZWJLaXRUcmFuc2l0aW9uRXZlbnQ6OldlYktpdFRyYW5zaXRpb25FdmVudChjb25zdCBBdG9t
aWNTdHJpbmcmIHR5cGUsIGNvbnN0IEluaXQmIGluaXRpYWxpemVyLCBJc1RydXN0ZWQgaXNUcnVz
dGVkKQorV2ViS2l0VHJhbnNpdGlvbkV2ZW50OjpXZWJLaXRUcmFuc2l0aW9uRXZlbnQoY29uc3Qg
QXRvbVN0cmluZyYgdHlwZSwgY29uc3QgSW5pdCYgaW5pdGlhbGl6ZXIsIElzVHJ1c3RlZCBpc1Ry
dXN0ZWQpCiAgICAgOiBFdmVudCh0eXBlLCBpbml0aWFsaXplciwgaXNUcnVzdGVkKQogICAgICwg
bV9wcm9wZXJ0eU5hbWUoaW5pdGlhbGl6ZXIucHJvcGVydHlOYW1lKQogICAgICwgbV9lbGFwc2Vk
VGltZShpbml0aWFsaXplci5lbGFwc2VkVGltZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9XZWJLaXRUcmFuc2l0aW9uRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXRU
cmFuc2l0aW9uRXZlbnQuaAppbmRleCA3NjY0M2ZmNjJlNTlhODkyMDdmMTdkNjAwNTNkNzMxMzJk
M2FiOTRmLi44NDMzNzQ3MWNiMDkxMTUzMGY3NmIyNmNiZDFhZmUzMmM1ZGQ1ZWFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1dlYktpdFRyYW5zaXRpb25FdmVudC5oCkBAIC0zMSw3ICszMSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV2ViS2l0VHJhbnNpdGlvbkV2ZW50IGZpbmFs
IDogcHVibGljIEV2ZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYktpdFRyYW5zaXRp
b25FdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBw
cm9wZXJ0eU5hbWUsIGRvdWJsZSBlbGFwc2VkVGltZSwgY29uc3QgU3RyaW5nJiBwc2V1ZG9FbGVt
ZW50KQorICAgIHN0YXRpYyBSZWY8V2ViS2l0VHJhbnNpdGlvbkV2ZW50PiBjcmVhdGUoY29uc3Qg
QXRvbVN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIGRvdWJsZSBlbGFw
c2VkVGltZSwgY29uc3QgU3RyaW5nJiBwc2V1ZG9FbGVtZW50KQogICAgIHsKICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgV2ViS2l0VHJhbnNpdGlvbkV2ZW50KHR5cGUsIHByb3BlcnR5TmFt
ZSwgZWxhcHNlZFRpbWUsIHBzZXVkb0VsZW1lbnQpKTsKICAgICB9CkBAIC00Miw3ICs0Miw3IEBA
IHB1YmxpYzoKICAgICAgICAgU3RyaW5nIHBzZXVkb0VsZW1lbnQ7CiAgICAgfTsKIAotICAgIHN0
YXRpYyBSZWY8V2ViS2l0VHJhbnNpdGlvbkV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5n
JiB0eXBlLCBjb25zdCBJbml0JiBpbml0aWFsaXplciwgSXNUcnVzdGVkIGlzVHJ1c3RlZCA9IElz
VHJ1c3RlZDo6Tm8pCisgICAgc3RhdGljIFJlZjxXZWJLaXRUcmFuc2l0aW9uRXZlbnQ+IGNyZWF0
ZShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiBpbml0aWFsaXplciwgSXNUcnVz
dGVkIGlzVHJ1c3RlZCA9IElzVHJ1c3RlZDo6Tm8pCiAgICAgewogICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBXZWJLaXRUcmFuc2l0aW9uRXZlbnQodHlwZSwgaW5pdGlhbGl6ZXIsIGlzVHJ1
c3RlZCkpOwogICAgIH0KQEAgLTU2LDggKzU2LDggQEAgcHVibGljOgogICAgIEV2ZW50SW50ZXJm
YWNlIGV2ZW50SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgV2Vi
S2l0VHJhbnNpdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5n
JiBwcm9wZXJ0eU5hbWUsIGRvdWJsZSBlbGFwc2VkVGltZSwgY29uc3QgU3RyaW5nJiBwc2V1ZG9F
bGVtZW50KTsKLSAgICBXZWJLaXRUcmFuc2l0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlLCBjb25zdCBJbml0JiBpbml0aWFsaXplciwgSXNUcnVzdGVkKTsKKyAgICBXZWJLaXRUcmFu
c2l0aW9uRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBwcm9wZXJ0
eU5hbWUsIGRvdWJsZSBlbGFwc2VkVGltZSwgY29uc3QgU3RyaW5nJiBwc2V1ZG9FbGVtZW50KTsK
KyAgICBXZWJLaXRUcmFuc2l0aW9uRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3Qg
SW5pdCYgaW5pdGlhbGl6ZXIsIElzVHJ1c3RlZCk7CiAKICAgICBTdHJpbmcgbV9wcm9wZXJ0eU5h
bWU7CiAgICAgZG91YmxlIG1fZWxhcHNlZFRpbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vV2hlZWxFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5jcHAK
aW5kZXggMzdlMDcxMDQ0NjNhNGQzNzY2YzM0OTgwYzc5YTNkYTkyMmRiN2MxZi4uNGQ0NTE5NWUw
ZWM4NGY0NjNkY2Y5MTY0MjJlM2E2MjVhOWQ2YjhiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL1doZWVsRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50
LmNwcApAQCAtMzcsNyArMzcsNyBAQCBpbmxpbmUgc3RhdGljIHVuc2lnbmVkIGRldGVybWluZURl
bHRhTW9kZShjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50KQogCiBpbmxpbmUgV2hlZWxF
dmVudDo6V2hlZWxFdmVudCgpID0gZGVmYXVsdDsKIAotaW5saW5lIFdoZWVsRXZlbnQ6OldoZWVs
RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiBpbml0aWFsaXplcikK
K2lubGluZSBXaGVlbEV2ZW50OjpXaGVlbEV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNv
bnN0IEluaXQmIGluaXRpYWxpemVyKQogICAgIDogTW91c2VFdmVudCh0eXBlLCBpbml0aWFsaXpl
cikKICAgICAsIG1fd2hlZWxEZWx0YShpbml0aWFsaXplci53aGVlbERlbHRhWCA/IGluaXRpYWxp
emVyLndoZWVsRGVsdGFYIDogLWluaXRpYWxpemVyLmRlbHRhWCwgaW5pdGlhbGl6ZXIud2hlZWxE
ZWx0YVkgPyBpbml0aWFsaXplci53aGVlbERlbHRhWSA6IC1pbml0aWFsaXplci5kZWx0YVkpCiAg
ICAgLCBtX2RlbHRhWChpbml0aWFsaXplci5kZWx0YVggPyBpbml0aWFsaXplci5kZWx0YVggOiAt
aW5pdGlhbGl6ZXIud2hlZWxEZWx0YVgpCkBAIC02OCw3ICs2OCw3IEBAIFJlZjxXaGVlbEV2ZW50
PiBXaGVlbEV2ZW50OjpjcmVhdGVGb3JCaW5kaW5ncygpCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgV2hlZWxFdmVudCk7CiB9CiAKLVJlZjxXaGVlbEV2ZW50PiBXaGVlbEV2ZW50OjpjcmVhdGUo
Y29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiBpbml0aWFsaXplcikKK1JlZjxX
aGVlbEV2ZW50PiBXaGVlbEV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29u
c3QgSW5pdCYgaW5pdGlhbGl6ZXIpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2hlZWxF
dmVudCh0eXBlLCBpbml0aWFsaXplcikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL1doZWVsRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmgKaW5kZXgg
MzY2MTU3ZTlkMzI4NDVhODJjZjU0Y2M3Njc4NjIxMWY2MGIzYzQyMi4uNDUwNDM2YmZkZjlhYzk3
YjU1ODZmMTg1MmI0YzJiNGZkMTI5MTAwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L1doZWVsRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5oCkBAIC01
MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICAgICAgaW50IHdoZWVsRGVsdGFZIHsgMCB9OyAvLyBE
ZXByZWNhdGVkLgogICAgIH07CiAKLSAgICBzdGF0aWMgUmVmPFdoZWVsRXZlbnQ+IGNyZWF0ZShj
b25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IEluaXQmKTsKKyAgICBzdGF0aWMgUmVmPFdo
ZWVsRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0Jik7CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRXZWJLaXRXaGVlbEV2ZW50KGludCByYXdEZWx0
YVgsIGludCByYXdEZWx0YVksIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgaW50IHNjcmVlblgsIGlu
dCBzY3JlZW5ZLCBpbnQgcGFnZVgsIGludCBwYWdlWSwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtl
eSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5KTsKIApAQCAtNzQsNyArNzQsNyBAQCBwdWJs
aWM6CiAKIHByaXZhdGU6CiAgICAgV2hlZWxFdmVudCgpOwotICAgIFdoZWVsRXZlbnQoY29uc3Qg
QXRvbWljU3RyaW5nJiwgY29uc3QgSW5pdCYpOworICAgIFdoZWVsRXZlbnQoY29uc3QgQXRvbVN0
cmluZyYsIGNvbnN0IEluaXQmKTsKICAgICBXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxF
dmVudCYsIFJlZlB0cjxXaW5kb3dQcm94eT4mJik7CiAKICAgICBFdmVudEludGVyZmFjZSBldmVu
dEludGVyZmFjZSgpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L2lvcy9Nb3VzZUV2ZW50SU9TLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9pb3MvTW91c2VFdmVu
dElPUy5jcHAKaW5kZXggMzAyZTFmZWUxZmRiZjYxNTBhNDkzN2U2ODlmZDA1MDI1OGJjM2I2MS4u
ZDI0NDU4ODQwYzZhMGM3ODQ0ZmUzNmRlZDU4OGE2NzgwZWQ1YTBmMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL2lvcy9Nb3VzZUV2ZW50SU9TLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vaW9zL01vdXNlRXZlbnRJT1MuY3BwCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotc3RhdGljIEF0b21pY1N0cmluZyBtb3VzZUV2ZW50VHlwZShQbGF0Zm9y
bVRvdWNoUG9pbnQ6OlRvdWNoUGhhc2VUeXBlIHBoYXNlKQorc3RhdGljIEF0b21TdHJpbmcgbW91
c2VFdmVudFR5cGUoUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFBoYXNlVHlwZSBwaGFzZSkKIHsK
ICAgICBzd2l0Y2ggKHBoYXNlKSB7CiAgICAgY2FzZSBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNo
UGhhc2VCZWdhbjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9pb3MvUG9pbnRlckV2
ZW50SU9TLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9pb3MvUG9pbnRlckV2ZW50SU9TLmNwcApp
bmRleCAwZTNjMDc2NzE5ZDEzNmNlNzVmYTA2Yzc5OGFlYWVmNDAwYmQ0ODM4Li4xMWY4MmZlZDY3
MmJlZDZlMDM0Y2M2MGE4ODIzMmI4NWM1MTViYjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vaW9zL1BvaW50ZXJFdmVudElPUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL2lv
cy9Qb2ludGVyRXZlbnRJT1MuY3BwCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgcG9pbnRlckV2ZW50VHlwZShQbGF0
Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUGhhc2VUeXBlIHBoYXNlKQorc3RhdGljIGNvbnN0IEF0b21T
dHJpbmcmIHBvaW50ZXJFdmVudFR5cGUoUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFBoYXNlVHlw
ZSBwaGFzZSkKIHsKICAgICBzd2l0Y2ggKHBoYXNlKSB7CiAgICAgY2FzZSBQbGF0Zm9ybVRvdWNo
UG9pbnQ6OlRvdWNoUGhhc2VCZWdhbjoKQEAgLTYxLDcgKzYxLDcgQEAgUmVmPFBvaW50ZXJFdmVu
dD4gUG9pbnRlckV2ZW50OjpjcmVhdGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBQbGF0Zm9y
bVRvdWNoRXYKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQb2ludGVyRXZlbnQodHlwZSwgZXZl
bnQsIHR5cGVJc0NhbmNlbGFibGUodHlwZSksIGluZGV4LCBpc1ByaW1hcnksIFdURk1vdmUodmll
dykpKTsKIH0KIAotUG9pbnRlckV2ZW50OjpQb2ludGVyRXZlbnQoY29uc3QgQXRvbWljU3RyaW5n
JiB0eXBlLCBjb25zdCBQbGF0Zm9ybVRvdWNoRXZlbnQmIGV2ZW50LCBJc0NhbmNlbGFibGUgaXND
YW5jZWxhYmxlLCB1bnNpZ25lZCBpbmRleCwgYm9vbCBpc1ByaW1hcnksIFJlZjxXaW5kb3dQcm94
eT4mJiB2aWV3KQorUG9pbnRlckV2ZW50OjpQb2ludGVyRXZlbnQoY29uc3QgQXRvbVN0cmluZyYg
dHlwZSwgY29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50JiBldmVudCwgSXNDYW5jZWxhYmxlIGlzQ2Fu
Y2VsYWJsZSwgdW5zaWduZWQgaW5kZXgsIGJvb2wgaXNQcmltYXJ5LCBSZWY8V2luZG93UHJveHk+
JiYgdmlldykKICAgICA6IE1vdXNlRXZlbnQodHlwZSwgdHlwZUNhbkJ1YmJsZSh0eXBlKSwgaXND
YW5jZWxhYmxlLCB0eXBlSXNDb21wb3NlZCh0eXBlKSwgZXZlbnQudGltZXN0YW1wKCkuYXBwcm94
aW1hdGVNb25vdG9uaWNUaW1lKCksIFdURk1vdmUodmlldyksIDAsIGV2ZW50LnRvdWNoTG9jYXRp
b25BdEluZGV4KGluZGV4KSwgZXZlbnQudG91Y2hMb2NhdGlvbkF0SW5kZXgoaW5kZXgpLCB7IH0s
IGV2ZW50Lm1vZGlmaWVycygpLCAwLCAwLCBudWxscHRyLCAwLCAwLCBudWxscHRyLCBJc1NpbXVs
YXRlZDo6Tm8sIElzVHJ1c3RlZDo6WWVzKQogICAgICwgbV9wb2ludGVySWQoZXZlbnQudG91Y2hJ
ZGVudGlmaWVyQXRJbmRleChpbmRleCkpCiAgICAgLCBtX3dpZHRoKDIgKiBldmVudC5yYWRpdXNY
QXRJbmRleChpbmRleCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9uYW1l
cy5wbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCmluZGV4IDNiYWU0OTFkNzJi
ZWJkNTMzMTk3NDczYTM4N2MxZDY1MDY2NWFhNjUuLmQ5NTFmZjA2NTE3Nzk3ODRjNTlhODdkMWU4
ZGY4MmQxMzkwYWE2ODAgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVz
LnBsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCkBAIC0xMTIsMTAgKzEx
MiwxMCBAQCBpZiAobGVuZ3RoKCRmb250TmFtZXNJbikpIHsKICAgICBwcmludExpY2Vuc2VIZWFk
ZXIoJEYpOwogICAgIHByaW50SGVhZGVySGVhZCgkRiwgIkNTUyIsICRmYW1pbHlOYW1lc0ZpbGVC
YXNlLCA8PEVORCwgIiIpOwogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotI2luY2x1
ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJp
bmcuaD4KIEVORAogCi0gICAgcHJpbnRNYWNyb3MoJEYsICJleHRlcm4gTGF6eU5ldmVyRGVzdHJv
eWVkPGNvbnN0IFdURjo6QXRvbWljU3RyaW5nPiIsICIiLCBcJXBhcmFtZXRlcnMpOworICAgIHBy
aW50TWFjcm9zKCRGLCAiZXh0ZXJuIExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBXVEY6OkF0b21T
dHJpbmc+IiwgIiIsIFwlcGFyYW1ldGVycyk7CiAgICAgcHJpbnQgRiAiI2VuZGlmXG5cbiI7CiAK
ICAgICBwcmludEluaXQoJEYsIDEpOwpAQCAtMTI5LDcgKzEyOSw3IEBAIEVORAogCiAgICAgcHJp
bnQgRiBTdGF0aWNTdHJpbmc6OkdlbmVyYXRlU3RyaW5ncyhcJXBhcmFtZXRlcnMpOwogCi0gICAg
cHJpbnRNYWNyb3MoJEYsICJMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgV1RGOjpBdG9taWNTdHJp
bmc+IiwgIiIsIFwlcGFyYW1ldGVycyk7CisgICAgcHJpbnRNYWNyb3MoJEYsICJMYXp5TmV2ZXJE
ZXN0cm95ZWQ8Y29uc3QgV1RGOjpBdG9tU3RyaW5nPiIsICIiLCBcJXBhcmFtZXRlcnMpOwogCiAg
ICAgcHJpbnRJbml0KCRGLCAwKTsKIApAQCAtNTk2LDcgKzU5Niw3IEBAIHByaW50IEYgIlxudm9p
ZCBpbml0KCkKIAogICAgIC8vIFVzZSBwbGFjZW1lbnQgbmV3IHRvIGluaXRpYWxpemUgdGhlIGds
b2JhbHMuCiAKLSAgICBBdG9taWNTdHJpbmc6OmluaXQoKTsKKyAgICBBdG9tU3RyaW5nOjppbml0
KCk7CiAiOwogfQogCkBAIC03MTUsMTQgKzcxNSwxNCBAQCBzdWIgcHJpbnROYW1lc0hlYWRlckZp
bGUKICAgICBwcmludExpY2Vuc2VIZWFkZXIoJEYpOwogICAgIHByaW50SGVhZGVySGVhZCgkRiwg
IkRPTSIsICRwYXJhbWV0ZXJze25hbWVzcGFjZX0sIDw8RU5ELCAiY2xhc3MgJHBhcmFtZXRlcnN7
bmFtZXNwYWNlfVF1YWxpZmllZE5hbWUgOiBwdWJsaWMgUXVhbGlmaWVkTmFtZSB7IH07XG5cbiIp
OwogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0F0
b21pY1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4KICNpbmNsdWRl
ICJRdWFsaWZpZWROYW1lLmgiCiBFTkQKIAogICAgIG15ICRsb3dlcmNhc2VOYW1lc3BhY2VQcmVm
aXggPSBsYygkcGFyYW1ldGVyc3tuYW1lc3BhY2VQcmVmaXh9KTsKIAogICAgIHByaW50IEYgIi8v
IE5hbWVzcGFjZVxuIjsKLSAgICBwcmludCBGICJXRUJDT1JFX0VYUE9SVCBleHRlcm4gTGF6eU5l
dmVyRGVzdHJveWVkPGNvbnN0IFdURjo6QXRvbWljU3RyaW5nPiAke2xvd2VyY2FzZU5hbWVzcGFj
ZVByZWZpeH1OYW1lc3BhY2VVUkk7XG5cbiI7CisgICAgcHJpbnQgRiAiV0VCQ09SRV9FWFBPUlQg
ZXh0ZXJuIExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBXVEY6OkF0b21TdHJpbmc+ICR7bG93ZXJj
YXNlTmFtZXNwYWNlUHJlZml4fU5hbWVzcGFjZVVSSTtcblxuIjsKIAogICAgIGlmIChrZXlzICVh
bGxUYWdzKSB7CiAgICAgICAgIHByaW50IEYgIi8vIFRhZ3NcbiI7CkBAIC03NjAsNyArNzYwLDcg
QEAgc3ViIHByaW50TmFtZXNDcHBGaWxlCiAgICAgCiAgICAgbXkgJGxvd2VyY2FzZU5hbWVzcGFj
ZVByZWZpeCA9IGxjKCRwYXJhbWV0ZXJze25hbWVzcGFjZVByZWZpeH0pOwogCi0gICAgcHJpbnQg
RiAiTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gJHtsb3dlcmNhc2VOYW1l
c3BhY2VQcmVmaXh9TmFtZXNwYWNlVVJJO1xuXG4iOworICAgIHByaW50IEYgIkxhenlOZXZlckRl
c3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiAke2xvd2VyY2FzZU5hbWVzcGFjZVByZWZpeH1OYW1l
c3BhY2VVUkk7XG5cbiI7CiAKICAgICBwcmludCBGIFN0YXRpY1N0cmluZzo6R2VuZXJhdGVTdHJp
bmdzKFwlYWxsU3RyaW5ncyk7CiAKQEAgLTc5Nyw3ICs3OTcsNyBAQCBzdWIgcHJpbnROYW1lc0Nw
cEZpbGUKIAogICAgIHByaW50SW5pdCgkRiwgMCk7CiAKLSAgICBwcmludChGICIgICAgQXRvbWlj
U3RyaW5nICR7bG93ZXJjYXNlTmFtZXNwYWNlUHJlZml4fU5TKFwiJHBhcmFtZXRlcnN7bmFtZXNw
YWNlVVJJfVwiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTtcblxuIik7Cisg
ICAgcHJpbnQoRiAiICAgIEF0b21TdHJpbmcgJHtsb3dlcmNhc2VOYW1lc3BhY2VQcmVmaXh9TlMo
XCIkcGFyYW1ldGVyc3tuYW1lc3BhY2VVUkl9XCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKTtcblxuIik7CiAKICAgICBwcmludChGICIgICAgLy8gTmFtZXNwYWNlXG4iKTsKICAg
ICBwcmludChGICIgICAgJHtsb3dlcmNhc2VOYW1lc3BhY2VQcmVmaXh9TmFtZXNwYWNlVVJJLmNv
bnN0cnVjdCgke2xvd2VyY2FzZU5hbWVzcGFjZVByZWZpeH1OUyk7XG4iKTsKQEAgLTkxOSw3ICs5
MTksNyBAQCBwcmludCBGIDw8RU5EOwogICAgIH07CiAKICAgICBmb3IgKGF1dG8mIGVudHJ5IDog
JHt0eXBlfVRhYmxlKQotICAgICAgICBlbnRyeS50YXJnZXRBZGRyZXNzLT5jb25zdHJ1Y3QobnVs
bEF0b20oKSwgQXRvbWljU3RyaW5nKCZlbnRyeS5uYW1lKSwgJG5hbWVzcGFjZVVSSSk7CisgICAg
ICAgIGVudHJ5LnRhcmdldEFkZHJlc3MtPmNvbnN0cnVjdChudWxsQXRvbSgpLCBBdG9tU3RyaW5n
KCZlbnRyeS5uYW1lKSwgJG5hbWVzcGFjZVVSSSk7CiBFTkQKIAogfQpAQCAtMTAwNCw3ICsxMDA0
LDcgQEAgc3RydWN0ICRwYXJhbWV0ZXJze25hbWVzcGFjZX1Db25zdHJ1Y3RvckZ1bmN0aW9uTWFw
RW50cnkgewogICAgIGNvbnN0IFF1YWxpZmllZE5hbWUqIHF1YWxpZmllZE5hbWU7IC8vIFVzZSBw
b2ludGVyIGluc3RlYWQgb2YgcmVmZXJlbmNlIHNvIHRoYXQgZW1wdHlWYWx1ZSgpIGluIEhhc2hN
YXAgaXMgY2hlYXAgdG8gY3JlYXRlLgogfTsKIAotc3RhdGljIE5FVkVSX0lOTElORSBIYXNoTWFw
PEF0b21pY1N0cmluZ0ltcGwqLCAkcGFyYW1ldGVyc3tuYW1lc3BhY2V9Q29uc3RydWN0b3JGdW5j
dGlvbk1hcEVudHJ5PiBjcmVhdGUkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RmFjdG9yeU1hcCgpCitz
dGF0aWMgTkVWRVJfSU5MSU5FIEhhc2hNYXA8QXRvbVN0cmluZ0ltcGwqLCAkcGFyYW1ldGVyc3tu
YW1lc3BhY2V9Q29uc3RydWN0b3JGdW5jdGlvbk1hcEVudHJ5PiBjcmVhdGUkcGFyYW1ldGVyc3tu
YW1lc3BhY2V9RmFjdG9yeU1hcCgpCiB7CiAgICAgc3RydWN0IFRhYmxlRW50cnkgewogICAgICAg
ICBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lOwpAQCAtMTAyMCwxOSArMTAyMCwxOSBAQCBFTkQK
ICAgICBwcmludCBGIDw8RU5ECiAgICAgfTsKIAotICAgIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1w
bCosICRwYXJhbWV0ZXJze25hbWVzcGFjZX1Db25zdHJ1Y3RvckZ1bmN0aW9uTWFwRW50cnk+IG1h
cDsKKyAgICBIYXNoTWFwPEF0b21TdHJpbmdJbXBsKiwgJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUNv
bnN0cnVjdG9yRnVuY3Rpb25NYXBFbnRyeT4gbWFwOwogICAgIGZvciAoYXV0byYgZW50cnkgOiB0
YWJsZSkKICAgICAgICAgbWFwLmFkZChlbnRyeS5uYW1lLmxvY2FsTmFtZSgpLmltcGwoKSwgJHBh
cmFtZXRlcnN7bmFtZXNwYWNlfUNvbnN0cnVjdG9yRnVuY3Rpb25NYXBFbnRyeShlbnRyeS5mdW5j
dGlvbiwgZW50cnkubmFtZSkpOwogICAgIHJldHVybiBtYXA7CiB9CiAKLXN0YXRpYyAkcGFyYW1l
dGVyc3tuYW1lc3BhY2V9Q29uc3RydWN0b3JGdW5jdGlvbk1hcEVudHJ5IGZpbmQkcGFyYW1ldGVy
c3tuYW1lc3BhY2V9RWxlbWVudENvbnN0cnVjdG9yRnVuY3Rpb24oY29uc3QgQXRvbWljU3RyaW5n
JiBsb2NhbE5hbWUpCitzdGF0aWMgJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUNvbnN0cnVjdG9yRnVu
Y3Rpb25NYXBFbnRyeSBmaW5kJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnRDb25zdHJ1Y3Rv
ckZ1bmN0aW9uKGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsTmFtZSkKIHsKICAgICBzdGF0aWMgY29u
c3QgYXV0byBtYXAgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoY3JlYXRlJHBhcmFtZXRlcnN7bmFtZXNw
YWNlfUZhY3RvcnlNYXAoKSk7CiAgICAgcmV0dXJuIG1hcC5nZXQoKS5nZXQobG9jYWxOYW1lLmlt
cGwoKSk7CiB9CiAKLVJlZlB0cjwkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudD4gJHBhcmFt
ZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnRGYWN0b3J5OjpjcmVhdGVLbm93bkVsZW1lbnQoY29uc3Qg
QXRvbWljU3RyaW5nJiBsb2NhbE5hbWUsIERvY3VtZW50JiBkb2N1bWVudCRmb3JtRWxlbWVudEFy
Z3VtZW50Rm9yRGVmaW5pdGlvbiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpCitSZWZQdHI8JHBhcmFt
ZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQ+ICRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50RmFj
dG9yeTo6Y3JlYXRlS25vd25FbGVtZW50KGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsTmFtZSwgRG9j
dW1lbnQmIGRvY3VtZW50JGZvcm1FbGVtZW50QXJndW1lbnRGb3JEZWZpbml0aW9uLCBib29sIGNy
ZWF0ZWRCeVBhcnNlcikKIHsKICAgICBjb25zdCAkcGFyYW1ldGVyc3tuYW1lc3BhY2V9Q29uc3Ry
dWN0b3JGdW5jdGlvbk1hcEVudHJ5JiBlbnRyeSA9IGZpbmQkcGFyYW1ldGVyc3tuYW1lc3BhY2V9
RWxlbWVudENvbnN0cnVjdG9yRnVuY3Rpb24obG9jYWxOYW1lKTsKICAgICBpZiAoTElLRUxZKGVu
dHJ5LmZ1bmN0aW9uKSkgewpAQCAtMTA1MSw3ICsxMDUxLDcgQEAgUmVmUHRyPCRwYXJhbWV0ZXJz
e25hbWVzcGFjZX1FbGVtZW50PiAkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudEZhY3Rvcnk6
OmNyZWEKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUmVmPCRwYXJhbWV0ZXJze25hbWVzcGFj
ZX1FbGVtZW50PiAkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudEZhY3Rvcnk6OmNyZWF0ZUVs
ZW1lbnQoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUsIERvY3VtZW50JiBkb2N1bWVudCRm
b3JtRWxlbWVudEFyZ3VtZW50Rm9yRGVmaW5pdGlvbiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpCitS
ZWY8JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQ+ICRwYXJhbWV0ZXJze25hbWVzcGFjZX1F
bGVtZW50RmFjdG9yeTo6Y3JlYXRlRWxlbWVudChjb25zdCBBdG9tU3RyaW5nJiBsb2NhbE5hbWUs
IERvY3VtZW50JiBkb2N1bWVudCRmb3JtRWxlbWVudEFyZ3VtZW50Rm9yRGVmaW5pdGlvbiwgYm9v
bCBjcmVhdGVkQnlQYXJzZXIpCiB7CiAgICAgY29uc3QgJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUNv
bnN0cnVjdG9yRnVuY3Rpb25NYXBFbnRyeSYgZW50cnkgPSBmaW5kJHBhcmFtZXRlcnN7bmFtZXNw
YWNlfUVsZW1lbnRDb25zdHJ1Y3RvckZ1bmN0aW9uKGxvY2FsTmFtZSk7CiAgICAgaWYgKExJS0VM
WShlbnRyeS5mdW5jdGlvbikpIHsKQEAgLTExMDcsNyArMTEwNyw3IEBAIHB1YmxpYzoKIEVORAog
OwogCi1wcmludCBGICJzdGF0aWMgUmVmUHRyPCRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50
PiBjcmVhdGVLbm93bkVsZW1lbnQoY29uc3QgQXRvbWljU3RyaW5nJiwgRG9jdW1lbnQmIjsKK3By
aW50IEYgInN0YXRpYyBSZWZQdHI8JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQ+IGNyZWF0
ZUtub3duRWxlbWVudChjb25zdCBBdG9tU3RyaW5nJiwgRG9jdW1lbnQmIjsKIHByaW50IEYgIiwg
SFRNTEZvcm1FbGVtZW50KiA9IG51bGxwdHIiIGlmICRwYXJhbWV0ZXJze25hbWVzcGFjZX0gZXEg
IkhUTUwiOwogcHJpbnQgRiAiLCBib29sIGNyZWF0ZWRCeVBhcnNlciA9IGZhbHNlKTtcbiI7CiAK
QEAgLTExMTUsNyArMTExNSw3IEBAIHByaW50IEYgInN0YXRpYyBSZWZQdHI8JHBhcmFtZXRlcnN7
bmFtZXNwYWNlfUVsZW1lbnQ+IGNyZWF0ZUtub3duRWxlbWVudChjb25zdCBRCiBwcmludCBGICIs
IEhUTUxGb3JtRWxlbWVudCogPSBudWxscHRyIiBpZiAkcGFyYW1ldGVyc3tuYW1lc3BhY2V9IGVx
ICJIVE1MIjsKIHByaW50IEYgIiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIgPSBmYWxzZSk7XG4iOwog
Ci1wcmludCBGICJzdGF0aWMgUmVmPCRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50PiBjcmVh
dGVFbGVtZW50KGNvbnN0IEF0b21pY1N0cmluZyYsIERvY3VtZW50JiI7CitwcmludCBGICJzdGF0
aWMgUmVmPCRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50PiBjcmVhdGVFbGVtZW50KGNvbnN0
IEF0b21TdHJpbmcmLCBEb2N1bWVudCYiOwogcHJpbnQgRiAiLCBIVE1MRm9ybUVsZW1lbnQqID0g
bnVsbHB0ciIgaWYgJHBhcmFtZXRlcnN7bmFtZXNwYWNlfSBlcSAiSFRNTCI7CiBwcmludCBGICIs
IGJvb2wgY3JlYXRlZEJ5UGFyc2VyID0gZmFsc2UpO1xuIjsKIApAQCAtMTI2MCw3ICsxMjYwLDcg
QEAgRU5ECiAKIHByaW50IEYgPDxFTkQKIAotc3RhdGljIE5FVkVSX0lOTElORSBIYXNoTWFwPEF0
b21pY1N0cmluZ0ltcGwqLCBDcmVhdGUkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudFdyYXBw
ZXJGdW5jdGlvbj4gY3JlYXRlJHBhcmFtZXRlcnN7bmFtZXNwYWNlfVdyYXBwZXJNYXAoKQorc3Rh
dGljIE5FVkVSX0lOTElORSBIYXNoTWFwPEF0b21TdHJpbmdJbXBsKiwgQ3JlYXRlJHBhcmFtZXRl
cnN7bmFtZXNwYWNlfUVsZW1lbnRXcmFwcGVyRnVuY3Rpb24+IGNyZWF0ZSRwYXJhbWV0ZXJze25h
bWVzcGFjZX1XcmFwcGVyTWFwKCkKIHsKICAgICBzdHJ1Y3QgVGFibGVFbnRyeSB7CiAgICAgICAg
IGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWU7CkBAIC0xMjk4LDcgKzEyOTgsNyBAQCBFTkQKICAg
ICBwcmludCBGIDw8RU5ECiAgICAgfTsKIAotICAgIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCos
IENyZWF0ZSRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50V3JhcHBlckZ1bmN0aW9uPiBtYXA7
CisgICAgSGFzaE1hcDxBdG9tU3RyaW5nSW1wbCosIENyZWF0ZSRwYXJhbWV0ZXJze25hbWVzcGFj
ZX1FbGVtZW50V3JhcHBlckZ1bmN0aW9uPiBtYXA7CiAgICAgZm9yIChhdXRvJiBlbnRyeSA6IHRh
YmxlKQogICAgICAgICBtYXAuYWRkKGVudHJ5Lm5hbWUubG9jYWxOYW1lKCkuaW1wbCgpLCBlbnRy
eS5mdW5jdGlvbik7CiAgICAgcmV0dXJuIG1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbWppdC9ET01KSVRJRExDb252ZXJ0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklU
SURMQ29udmVydC5oCmluZGV4IDAxZjljNWM4OTc5NjJiY2VmNTE4YzdjODQzNmI4ZDQ4ZTlhNjk4
ZTQuLmM5ZmNmNTAyMTU2YTlmOTg3NThjNDUwNjhlYjg2ZmU1MWM4MWVkZjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRJRExDb252ZXJ0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9taml0L0RPTUpJVElETENvbnZlcnQuaApAQCAtNDEsMTggKzQxLDE4IEBAIHN0cnVj
dCBEaXJlY3RDb252ZXJ0ZXI8SURMRE9NU3RyaW5nPiB7CiB9OwogCiB0ZW1wbGF0ZTw+Ci1zdHJ1
Y3QgRGlyZWN0Q29udmVydGVyPElETEF0b21pY1N0cmluZ0FkYXB0b3I8SURMRE9NU3RyaW5nPj4g
eworc3RydWN0IERpcmVjdENvbnZlcnRlcjxJRExBdG9tU3RyaW5nQWRhcHRvcjxJRExET01TdHJp
bmc+PiB7CiAgICAgc3RhdGljIFN0cmluZyBkaXJlY3RDb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiBz
dGF0ZSwgSlNDOjpKU1N0cmluZyogc3RyaW5nKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0cmlu
Zy0+dG9BdG9taWNTdHJpbmcoJnN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHN0cmluZy0+dG9BdG9t
U3RyaW5nKCZzdGF0ZSk7CiAgICAgfQogfTsKIAogdGVtcGxhdGU8Pgotc3RydWN0IERpcmVjdENv
bnZlcnRlcjxJRExSZXF1aXJlc0V4aXN0aW5nQXRvbWljU3RyaW5nQWRhcHRvcjxJRExET01TdHJp
bmc+PiB7CitzdHJ1Y3QgRGlyZWN0Q29udmVydGVyPElETFJlcXVpcmVzRXhpc3RpbmdBdG9tU3Ry
aW5nQWRhcHRvcjxJRExET01TdHJpbmc+PiB7CiAgICAgc3RhdGljIFN0cmluZyBkaXJlY3RDb252
ZXJ0KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1N0cmluZyogc3RyaW5nKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIHN0cmluZy0+dG9FeGlzdGluZ0F0b21pY1N0cmluZygmc3RhdGUpOwor
ICAgICAgICByZXR1cm4gc3RyaW5nLT50b0V4aXN0aW5nQXRvbVN0cmluZygmc3RhdGUpOwogICAg
IH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRJRExUeXBl
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUSURMVHlwZS5oCmluZGV4IGUwYTVkMjg2
OGNiYWEwOTA5YTdjNTJhZTMwMzg0ZTRiZjVhODQwNDAuLjliMTA4ZWEzZTQxZmNiZWRkNDc5YWZm
ZTU2OGM5ZDFlMjk2Y2NlYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01K
SVRJRExUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVElETFR5cGUuaApA
QCAtMzksOCArMzksOCBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBJRExKU0FyZ3VtZW50VHlwZVNlbGVj
dDxJRExTaG9ydD4geyB0eXBlZGVmIGludDMyX3QgdHlwZTsgfTsKIHRlbXBsYXRlPD4gc3RydWN0
IElETEpTQXJndW1lbnRUeXBlU2VsZWN0PElETFVuc2lnbmVkU2hvcnQ+IHsgdHlwZWRlZiBpbnQz
Ml90IHR5cGU7IH07CiB0ZW1wbGF0ZTw+IHN0cnVjdCBJRExKU0FyZ3VtZW50VHlwZVNlbGVjdDxJ
RExMb25nPiB7IHR5cGVkZWYgaW50MzJfdCB0eXBlOyB9OwogdGVtcGxhdGU8PiBzdHJ1Y3QgSURM
SlNBcmd1bWVudFR5cGVTZWxlY3Q8SURMRE9NU3RyaW5nPiB7IHR5cGVkZWYgSlNDOjpKU1N0cmlu
ZyogdHlwZTsgfTsKLXRlbXBsYXRlPD4gc3RydWN0IElETEpTQXJndW1lbnRUeXBlU2VsZWN0PElE
TEF0b21pY1N0cmluZ0FkYXB0b3I8SURMRE9NU3RyaW5nPj4geyB0eXBlZGVmIEpTQzo6SlNTdHJp
bmcqIHR5cGU7IH07Ci10ZW1wbGF0ZTw+IHN0cnVjdCBJRExKU0FyZ3VtZW50VHlwZVNlbGVjdDxJ
RExSZXF1aXJlc0V4aXN0aW5nQXRvbWljU3RyaW5nQWRhcHRvcjxJRExET01TdHJpbmc+PiB7IHR5
cGVkZWYgSlNDOjpKU1N0cmluZyogdHlwZTsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IElETEpTQXJn
dW1lbnRUeXBlU2VsZWN0PElETEF0b21TdHJpbmdBZGFwdG9yPElETERPTVN0cmluZz4+IHsgdHlw
ZWRlZiBKU0M6OkpTU3RyaW5nKiB0eXBlOyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMSlNBcmd1
bWVudFR5cGVTZWxlY3Q8SURMUmVxdWlyZXNFeGlzdGluZ0F0b21TdHJpbmdBZGFwdG9yPElETERP
TVN0cmluZz4+IHsgdHlwZWRlZiBKU0M6OkpTU3RyaW5nKiB0eXBlOyB9OwogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBJRExUeXBlPgogdXNpbmcgSURMSlNBcmd1bWVudFR5cGUgPSB0eXBlbmFtZSBJRExK
U0FyZ3VtZW50VHlwZVNlbGVjdDxJRExUeXBlPjo6dHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbWppdC9ET01KSVRJRExUeXBlRmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb21q
aXQvRE9NSklUSURMVHlwZUZpbHRlci5oCmluZGV4IGZhMjU1ZWU0NWY0ZmM2NWZhOGRjZTE4MmFk
N2ZhZjZhZmY3OWI0ZGIuLmMwMzI5ZDgyNzJiMWEzNTE4OGQ1ODM5OWJjMzdiYWM0MDU4ZGQ0NTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRJRExUeXBlRmlsdGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVElETFR5cGVGaWx0ZXIuaApAQCAtNDAs
OCArNDAsOCBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBJRExBcmd1bWVudFR5cGVGaWx0ZXI8SURMU2hv
cnQ+IHsgc3RhdGljIGNvbnN0IGNvbnN0ZXhwciBKU0M6OgogdGVtcGxhdGU8PiBzdHJ1Y3QgSURM
QXJndW1lbnRUeXBlRmlsdGVyPElETFVuc2lnbmVkU2hvcnQ+IHsgc3RhdGljIGNvbnN0IGNvbnN0
ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIHZhbHVlID0gSlNDOjpTcGVjSW50MzJPbmx5OyB9Owog
dGVtcGxhdGU8PiBzdHJ1Y3QgSURMQXJndW1lbnRUeXBlRmlsdGVyPElETExvbmc+IHsgc3RhdGlj
IGNvbnN0IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIHZhbHVlID0gSlNDOjpTcGVjSW50
MzJPbmx5OyB9OwogdGVtcGxhdGU8PiBzdHJ1Y3QgSURMQXJndW1lbnRUeXBlRmlsdGVyPElETERP
TVN0cmluZz4geyBzdGF0aWMgY29uc3QgY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgdmFs
dWUgPSBKU0M6OlNwZWNTdHJpbmc7IH07Ci10ZW1wbGF0ZTw+IHN0cnVjdCBJRExBcmd1bWVudFR5
cGVGaWx0ZXI8SURMQXRvbWljU3RyaW5nQWRhcHRvcjxJRExET01TdHJpbmc+PiB7IHN0YXRpYyBj
b25zdCBjb25zdGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSB2YWx1ZSA9IEpTQzo6U3BlY1N0cmlu
ZzsgfTsKLXRlbXBsYXRlPD4gc3RydWN0IElETEFyZ3VtZW50VHlwZUZpbHRlcjxJRExSZXF1aXJl
c0V4aXN0aW5nQXRvbWljU3RyaW5nQWRhcHRvcjxJRExET01TdHJpbmc+PiB7IHN0YXRpYyBjb25z
dCBjb25zdGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSB2YWx1ZSA9IEpTQzo6U3BlY1N0cmluZzsg
fTsKK3RlbXBsYXRlPD4gc3RydWN0IElETEFyZ3VtZW50VHlwZUZpbHRlcjxJRExBdG9tU3RyaW5n
QWRhcHRvcjxJRExET01TdHJpbmc+PiB7IHN0YXRpYyBjb25zdCBjb25zdGV4cHIgSlNDOjpTcGVj
dWxhdGVkVHlwZSB2YWx1ZSA9IEpTQzo6U3BlY1N0cmluZzsgfTsKK3RlbXBsYXRlPD4gc3RydWN0
IElETEFyZ3VtZW50VHlwZUZpbHRlcjxJRExSZXF1aXJlc0V4aXN0aW5nQXRvbVN0cmluZ0FkYXB0
b3I8SURMRE9NU3RyaW5nPj4geyBzdGF0aWMgY29uc3QgY29uc3RleHByIEpTQzo6U3BlY3VsYXRl
ZFR5cGUgdmFsdWUgPSBKU0M6OlNwZWNTdHJpbmc7IH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIElE
TFR5cGU+CiBzdHJ1Y3QgSURMUmVzdWx0VHlwZUZpbHRlciB7CkBAIC02NSw4ICs2NSw4IEBAIHRl
bXBsYXRlPD4gc3RydWN0IElETFJlc3VsdFR5cGVGaWx0ZXI8SURMVW5yZXN0cmljdGVkRG91Ymxl
PiB7IHN0YXRpYyBjb25zdCBjb25zCiB0ZW1wbGF0ZTw+IHN0cnVjdCBJRExSZXN1bHRUeXBlRmls
dGVyPElETERPTVN0cmluZz4geyBzdGF0aWMgY29uc3QgY29uc3RleHByIEpTQzo6U3BlY3VsYXRl
ZFR5cGUgdmFsdWUgPSBKU0M6OlNwZWNTdHJpbmc7IH07CiB0ZW1wbGF0ZTw+IHN0cnVjdCBJRExS
ZXN1bHRUeXBlRmlsdGVyPElETEJ5dGVTdHJpbmc+IHsgc3RhdGljIGNvbnN0IGNvbnN0ZXhwciBK
U0M6OlNwZWN1bGF0ZWRUeXBlIHZhbHVlID0gSlNDOjpTcGVjU3RyaW5nOyB9OwogdGVtcGxhdGU8
PiBzdHJ1Y3QgSURMUmVzdWx0VHlwZUZpbHRlcjxJRExVU1ZTdHJpbmc+IHsgc3RhdGljIGNvbnN0
IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIHZhbHVlID0gSlNDOjpTcGVjU3RyaW5nOyB9
OwotdGVtcGxhdGU8PiBzdHJ1Y3QgSURMUmVzdWx0VHlwZUZpbHRlcjxJRExBdG9taWNTdHJpbmdB
ZGFwdG9yPElETERPTVN0cmluZz4+IHsgc3RhdGljIGNvbnN0IGNvbnN0ZXhwciBKU0M6OlNwZWN1
bGF0ZWRUeXBlIHZhbHVlID0gSlNDOjpTcGVjU3RyaW5nOyB9OwotdGVtcGxhdGU8PiBzdHJ1Y3Qg
SURMUmVzdWx0VHlwZUZpbHRlcjxJRExSZXF1aXJlc0V4aXN0aW5nQXRvbWljU3RyaW5nQWRhcHRv
cjxJRExET01TdHJpbmc+PiB7IHN0YXRpYyBjb25zdCBjb25zdGV4cHIgSlNDOjpTcGVjdWxhdGVk
VHlwZSB2YWx1ZSA9IEpTQzo6U3BlY1N0cmluZzsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IElETFJl
c3VsdFR5cGVGaWx0ZXI8SURMQXRvbVN0cmluZ0FkYXB0b3I8SURMRE9NU3RyaW5nPj4geyBzdGF0
aWMgY29uc3QgY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgdmFsdWUgPSBKU0M6OlNwZWNT
dHJpbmc7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBJRExSZXN1bHRUeXBlRmlsdGVyPElETFJlcXVp
cmVzRXhpc3RpbmdBdG9tU3RyaW5nQWRhcHRvcjxJRExET01TdHJpbmc+PiB7IHN0YXRpYyBjb25z
dCBjb25zdGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSB2YWx1ZSA9IEpTQzo6U3BlY1N0cmluZzsg
fTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIHN0cnVjdCBJRExSZXN1bHRUeXBlRmlsdGVyPElE
TE51bGxhYmxlPFQ+PiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5
QmxvY2tFbGVtZW50Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5Qmxv
Y2tFbGVtZW50Q29tbWFuZC5jcHAKaW5kZXggZDcyZDBjYWZjMjk0YWJlZTQ0M2U5MDczNzdmYTYy
YWY1ZTA0NWZjNS4uZGJiNWEyYTFhMWJhMWUwZTA3ZWQwMmZlNmEyM2VlNzkwYmFiNjgyMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseUJsb2NrRWxlbWVudENvbW1hbmQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlCbG9ja0VsZW1lbnRDb21tYW5k
LmNwcApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVz
cGFjZSBIVE1MTmFtZXM7CiAKLUFwcGx5QmxvY2tFbGVtZW50Q29tbWFuZDo6QXBwbHlCbG9ja0Vs
ZW1lbnRDb21tYW5kKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBpbmxpbmVTdHlsZSkKK0FwcGx5QmxvY2tFbGVtZW50
Q29tbWFuZDo6QXBwbHlCbG9ja0VsZW1lbnRDb21tYW5kKERvY3VtZW50JiBkb2N1bWVudCwgY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgY29uc3QgQXRvbVN0cmluZyYgaW5saW5lU3R5bGUp
CiAgICAgOiBDb21wb3NpdGVFZGl0Q29tbWFuZChkb2N1bWVudCkKICAgICAsIG1fdGFnTmFtZSh0
YWdOYW1lKQogICAgICwgbV9pbmxpbmVTdHlsZShpbmxpbmVTdHlsZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlCbG9ja0VsZW1lbnRDb21tYW5kLmggYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0FwcGx5QmxvY2tFbGVtZW50Q29tbWFuZC5oCmluZGV4IDZjYzZkZjQ5
N2Y2YTFhODc1NGViZjZlY2Q2MzY1NWVlZGEyOTJkMTQuLjg0MmIzZTJkOWJmY2JjMDYxYzZjZTZj
MjcyNTQwNGQ4Y2JlZjY1YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBw
bHlCbG9ja0VsZW1lbnRDb21tYW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBs
eUJsb2NrRWxlbWVudENvbW1hbmQuaApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEFwcGx5QmxvY2tFbGVtZW50Q29tbWFuZCA6IHB1YmxpYyBDb21wb3NpdGVF
ZGl0Q29tbWFuZCB7CiBwcm90ZWN0ZWQ6Ci0gICAgQXBwbHlCbG9ja0VsZW1lbnRDb21tYW5kKERv
Y3VtZW50JiwgY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgY29uc3QgQXRvbWljU3RyaW5n
JiBpbmxpbmVTdHlsZSk7CisgICAgQXBwbHlCbG9ja0VsZW1lbnRDb21tYW5kKERvY3VtZW50Jiwg
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgY29uc3QgQXRvbVN0cmluZyYgaW5saW5lU3R5
bGUpOwogICAgIEFwcGx5QmxvY2tFbGVtZW50Q29tbWFuZChEb2N1bWVudCYsIGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUpOwogCiAgICAgdmlydHVhbCB2b2lkIGZvcm1hdFNlbGVjdGlvbihj
b25zdCBWaXNpYmxlUG9zaXRpb24mIHN0YXJ0T2ZTZWxlY3Rpb24sIGNvbnN0IFZpc2libGVQb3Np
dGlvbiYgZW5kT2ZTZWxlY3Rpb24pOwpAQCAtNTIsNyArNTIsNyBAQCBwcml2YXRlOgogICAgIFZp
c2libGVQb3NpdGlvbiBlbmRPZk5leHRQYXJhZ3JhcGhTcGxpdHRpbmdUZXh0Tm9kZXNJZk5lZWRl
ZChWaXNpYmxlUG9zaXRpb24mLCBQb3NpdGlvbiYsIFBvc2l0aW9uJik7CiAKICAgICBRdWFsaWZp
ZWROYW1lIG1fdGFnTmFtZTsKLSAgICBBdG9taWNTdHJpbmcgbV9pbmxpbmVTdHlsZTsKKyAgICBB
dG9tU3RyaW5nIG1faW5saW5lU3R5bGU7CiAgICAgUG9zaXRpb24gbV9lbmRPZkxhc3RQYXJhZ3Jh
cGg7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0JyZWFrQmxvY2tx
dW90ZUNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9CcmVha0Jsb2NrcXVvdGVD
b21tYW5kLmNwcAppbmRleCBhY2JiNWQ2YWI0NmUwZGEzNjZlMWQwYWU2NWI2NTRjM2Y4ZTdiYzJl
Li5mZGYxMThjNWIzNGI1NGQ3ZDU2OGJkODc1YzVhZDIzZGY0OWY3MWI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0JyZWFrQmxvY2txdW90ZUNvbW1hbmQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvQnJlYWtCbG9ja3F1b3RlQ29tbWFuZC5jcHAKQEAgLTE0OSw3
ICsxNDksNyBAQCB2b2lkIEJyZWFrQmxvY2txdW90ZUNvbW1hbmQ6OmRvQXBwbHkoKQogICAgICAg
ICAgICAgd2hpbGUgKGxpc3RDaGlsZE5vZGUgJiYgIWxpc3RDaGlsZE5vZGUtPmhhc1RhZ05hbWUo
bGlUYWcpKQogICAgICAgICAgICAgICAgIGxpc3RDaGlsZE5vZGUgPSBsaXN0Q2hpbGROb2RlLT5u
ZXh0U2libGluZygpOwogICAgICAgICAgICAgaWYgKGxpc3RDaGlsZE5vZGUgJiYgaXM8UmVuZGVy
TGlzdEl0ZW0+KGxpc3RDaGlsZE5vZGUtPnJlbmRlcmVyKCkpKQotICAgICAgICAgICAgICAgIHNl
dE5vZGVBdHRyaWJ1dGUoY2xvbmVkQ2hpbGQsIHN0YXJ0QXR0ciwgQXRvbWljU3RyaW5nOjpudW1i
ZXIoZG93bmNhc3Q8UmVuZGVyTGlzdEl0ZW0+KCpsaXN0Q2hpbGROb2RlLT5yZW5kZXJlcigpKS52
YWx1ZSgpKSk7CisgICAgICAgICAgICAgICAgc2V0Tm9kZUF0dHJpYnV0ZShjbG9uZWRDaGlsZCwg
c3RhcnRBdHRyLCBBdG9tU3RyaW5nOjpudW1iZXIoZG93bmNhc3Q8UmVuZGVyTGlzdEl0ZW0+KCps
aXN0Q2hpbGROb2RlLT5yZW5kZXJlcigpKS52YWx1ZSgpKSk7CiAgICAgICAgIH0KICAgICAgICAg
ICAgIAogICAgICAgICBhcHBlbmROb2RlKGNsb25lZENoaWxkLmNvcHlSZWYoKSwgY2xvbmVkQW5j
ZXN0b3IucmVsZWFzZU5vbk51bGwoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29t
cG9zaXRlRWRpdENvbW1hbmQuY3BwCmluZGV4IDMzYmQzMGVhYzA3MTJjY2NkZGUxYzk5MmM5MmU3
YWQzN2M0MjhjMzUuLjk4YTQ5NjY2MDY2N2I4YTVlYzMzYjY0ZGMyOGY3NzI4NmRiYTAzMzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCkBA
IC04NjAsNyArODYwLDcgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6cmVtb3ZlTm9kZUF0
dHJpYnV0ZShFbGVtZW50JiBlbGVtZW50LCBjb25zdCBRdWFsaWZpZWQKICAgICBzZXROb2RlQXR0
cmlidXRlKGVsZW1lbnQsIGF0dHJpYnV0ZSwgbnVsbEF0b20oKSk7CiB9CiAKLXZvaWQgQ29tcG9z
aXRlRWRpdENvbW1hbmQ6OnNldE5vZGVBdHRyaWJ1dGUoRWxlbWVudCYgZWxlbWVudCwgY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQordm9p
ZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6c2V0Tm9kZUF0dHJpYnV0ZShFbGVtZW50JiBlbGVtZW50
LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGUsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVl
KQogewogICAgIGFwcGx5Q29tbWFuZFRvQ29tcG9zaXRlKFNldE5vZGVBdHRyaWJ1dGVDb21tYW5k
OjpjcmVhdGUoZWxlbWVudCwgYXR0cmlidXRlLCB2YWx1ZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oCmluZGV4IDEyODE5ZjIwZjkwMjhhNmQ2
ZmIwMDk4YWFiODc3ZTA3M2Y1ZGEwMjkuLmRkYTQ5MGIxM2NkYzJkZGI4M2ZiMWZjOGZmYWIwOWRm
MDA4OGQ4MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRp
dENvbW1hbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21t
YW5kLmgKQEAgLTE3Niw3ICsxNzYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgUG9zaXRpb24gcmVwbGFj
ZVNlbGVjdGVkVGV4dEluTm9kZShjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHJlcGxhY2VUZXh0
SW5Ob2RlUHJlc2VydmluZ01hcmtlcnMoVGV4dCYsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQg
Y291bnQsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRUZXh0KTsKICAgICBQb3NpdGlvbiBwb3Np
dGlvbk91dHNpZGVUYWJTcGFuKGNvbnN0IFBvc2l0aW9uJik7Ci0gICAgdm9pZCBzZXROb2RlQXR0
cmlidXRlKEVsZW1lbnQmLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGUsIGNvbnN0IEF0
b21pY1N0cmluZyYgdmFsdWUpOworICAgIHZvaWQgc2V0Tm9kZUF0dHJpYnV0ZShFbGVtZW50Jiwg
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSk7
CiAgICAgdm9pZCBzcGxpdEVsZW1lbnQoRWxlbWVudCYsIE5vZGUmIGF0Q2hpbGQpOwogICAgIHZv
aWQgc3BsaXRUZXh0Tm9kZShUZXh0JiwgdW5zaWduZWQgb2Zmc2V0KTsKICAgICB2b2lkIHNwbGl0
VGV4dE5vZGVDb250YWluaW5nRWxlbWVudChUZXh0JiwgdW5zaWduZWQgb2Zmc2V0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRpbmcuY3BwCmluZGV4IDg5NDQwZmUxYWJiN2Y4MmE4ZTk5YjA1YTg5YTVi
NmZjMDBhY2ZiY2IuLjVmMmRjZjQ5YzU2YjU0ZWVjNDA1ZDFiOWQzY2M5NzRmNzA4N2FlNTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcApAQCAtODg4LDcgKzg4OCw3IEBAIFJlZjxIVE1M
RWxlbWVudD4gY3JlYXRlSFRNTEVsZW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBRdWFs
aWZpZWROYW1lJiBuYW1lCiAgICAgcmV0dXJuIEhUTUxFbGVtZW50RmFjdG9yeTo6Y3JlYXRlRWxl
bWVudChuYW1lLCBkb2N1bWVudCk7CiB9CiAKLVJlZjxIVE1MRWxlbWVudD4gY3JlYXRlSFRNTEVs
ZW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIHRhZ05hbWUpCitS
ZWY8SFRNTEVsZW1lbnQ+IGNyZWF0ZUhUTUxFbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCwgY29u
c3QgQXRvbVN0cmluZyYgdGFnTmFtZSkKIHsKICAgICByZXR1cm4gY3JlYXRlSFRNTEVsZW1lbnQo
ZG9jdW1lbnQsIFF1YWxpZmllZE5hbWUobnVsbEF0b20oKSwgdGFnTmFtZSwgeGh0bWxOYW1lc3Bh
Y2VVUkkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5o
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmgKaW5kZXggNWZiZjFlOTZmOGQ1MWFk
NDhlMzRkMjIwODgxYTdhM2ExMTI1ZDI0My4uMGI1ODIwMzNmYThiZjcxMjhlOTFlZjA0ZTcxMzZk
MDNlZDQ2Y2M3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmgKQEAgLTE1Niw3ICsxNTYsNyBA
QCBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9ySW5kZXhVc2luZ0NoYXJhY3Rlckl0
ZXJhdG9yKE5vZGUmLCBpbnQgaW5kZXgpOwogCiBXRUJDT1JFX0VYUE9SVCBSZWY8SFRNTEVsZW1l
bnQ+IGNyZWF0ZURlZmF1bHRQYXJhZ3JhcGhFbGVtZW50KERvY3VtZW50Jik7CiBSZWY8SFRNTEVs
ZW1lbnQ+IGNyZWF0ZUhUTUxFbGVtZW50KERvY3VtZW50JiwgY29uc3QgUXVhbGlmaWVkTmFtZSYp
OwotUmVmPEhUTUxFbGVtZW50PiBjcmVhdGVIVE1MRWxlbWVudChEb2N1bWVudCYsIGNvbnN0IEF0
b21pY1N0cmluZyYpOworUmVmPEhUTUxFbGVtZW50PiBjcmVhdGVIVE1MRWxlbWVudChEb2N1bWVu
dCYsIGNvbnN0IEF0b21TdHJpbmcmKTsKIAogV0VCQ09SRV9FWFBPUlQgSFRNTEVsZW1lbnQqIGVu
Y2xvc2luZ0xpc3QoTm9kZSopOwogSFRNTEVsZW1lbnQqIG91dGVybW9zdEVuY2xvc2luZ0xpc3Qo
Tm9kZSosIE5vZGUqIHJvb3RMaXN0ID0gbnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRpbmdTdHlsZS5jcHAKaW5kZXggNjkyZWU0MmVlNThkZmFkNjc4MjllOWRhNjdiYTVkOWY3YmVl
NjBkZS4uMDZjM2M4ZmRhNWUxZTU1Mjk2MTQ3YTBiMTVlNjRjNjZlMzIzZTEwYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcApAQCAtMjk2LDcgKzI5Niw3IEBAIHZvaWQg
SFRNTEF0dHJpYnV0ZUVxdWl2YWxlbnQ6OmFkZFRvU3R5bGUoRWxlbWVudCogZWxlbWVudCwgRWRp
dGluZ1N0eWxlKiBzdHlsZSkKIFJlZlB0cjxDU1NWYWx1ZT4gSFRNTEF0dHJpYnV0ZUVxdWl2YWxl
bnQ6OmF0dHJpYnV0ZVZhbHVlQXNDU1NWYWx1ZShFbGVtZW50KiBlbGVtZW50KSBjb25zdAogewog
ICAgIEFTU0VSVChlbGVtZW50KTsKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0gZWxl
bWVudC0+Z2V0QXR0cmlidXRlKG1fYXR0ck5hbWUpOworICAgIGNvbnN0IEF0b21TdHJpbmcmIHZh
bHVlID0gZWxlbWVudC0+Z2V0QXR0cmlidXRlKG1fYXR0ck5hbWUpOwogICAgIGlmICh2YWx1ZS5p
c051bGwoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCkBAIC0zMjEsNyArMzIxLDcg
QEAgSFRNTEZvbnRTaXplRXF1aXZhbGVudDo6SFRNTEZvbnRTaXplRXF1aXZhbGVudCgpCiBSZWZQ
dHI8Q1NTVmFsdWU+IEhUTUxGb250U2l6ZUVxdWl2YWxlbnQ6OmF0dHJpYnV0ZVZhbHVlQXNDU1NW
YWx1ZShFbGVtZW50KiBlbGVtZW50KSBjb25zdAogewogICAgIEFTU0VSVChlbGVtZW50KTsKLSAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0gZWxlbWVudC0+Z2V0QXR0cmlidXRlKG1fYXR0
ck5hbWUpOworICAgIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlID0gZWxlbWVudC0+Z2V0QXR0cmli
dXRlKG1fYXR0ck5hbWUpOwogICAgIGlmICh2YWx1ZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgQ1NTVmFsdWVJRCBzaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3Bw
CmluZGV4IGRjNTBiNmMyMjNlODAzY2M1YTYyMWRhYjE0ZDUzZDdmMzYwMjE5MDIuLjA1OWUxY2Jm
OTFmM2ZkNjhmMjUxYTc1MjQyZjA4NzVkNDM0ZGQ3OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5jcHAKQEAgLTEyMiw3ICsxMjIsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRp
YyBib29sIGRpc3BhdGNoQmVmb3JlSW5wdXRFdmVudChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBB
dG9taWNTdHJpbmcmIGlucHV0VHlwZSwgY29uc3QgU3RyaW5nJiBkYXRhID0geyB9LCBSZWZQdHI8
RGF0YVRyYW5zZmVyPiYmIGRhdGFUcmFuc2ZlciA9IG51bGxwdHIsIGNvbnN0IFZlY3RvcjxSZWZQ
dHI8U3RhdGljUmFuZ2U+PiYgdGFyZ2V0UmFuZ2VzID0geyB9LCBFdmVudDo6SXNDYW5jZWxhYmxl
IGNhbmNlbGFibGUgPSBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXMpCitzdGF0aWMgYm9vbCBkaXNw
YXRjaEJlZm9yZUlucHV0RXZlbnQoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgQXRvbVN0cmluZyYg
aW5wdXRUeXBlLCBjb25zdCBTdHJpbmcmIGRhdGEgPSB7IH0sIFJlZlB0cjxEYXRhVHJhbnNmZXI+
JiYgZGF0YVRyYW5zZmVyID0gbnVsbHB0ciwgY29uc3QgVmVjdG9yPFJlZlB0cjxTdGF0aWNSYW5n
ZT4+JiB0YXJnZXRSYW5nZXMgPSB7IH0sIEV2ZW50OjpJc0NhbmNlbGFibGUgY2FuY2VsYWJsZSA9
IEV2ZW50OjpJc0NhbmNlbGFibGU6OlllcykKIHsKICAgICBpZiAoIWVsZW1lbnQuZG9jdW1lbnQo
KS5zZXR0aW5ncygpLmlucHV0RXZlbnRzRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
QEAgLTEzMiw3ICsxMzIsNyBAQCBzdGF0aWMgYm9vbCBkaXNwYXRjaEJlZm9yZUlucHV0RXZlbnQo
RWxlbWVudCYgZWxlbWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnB1dAogICAgIHJldHVybiAh
ZXZlbnQtPmRlZmF1bHRQcmV2ZW50ZWQoKTsKIH0KIAotc3RhdGljIHZvaWQgZGlzcGF0Y2hJbnB1
dEV2ZW50KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgaW5wdXRUeXBlLCBj
b25zdCBTdHJpbmcmIGRhdGEgPSB7IH0sIFJlZlB0cjxEYXRhVHJhbnNmZXI+JiYgZGF0YVRyYW5z
ZmVyID0gbnVsbHB0ciwgY29uc3QgVmVjdG9yPFJlZlB0cjxTdGF0aWNSYW5nZT4+JiB0YXJnZXRS
YW5nZXMgPSB7IH0pCitzdGF0aWMgdm9pZCBkaXNwYXRjaElucHV0RXZlbnQoRWxlbWVudCYgZWxl
bWVudCwgY29uc3QgQXRvbVN0cmluZyYgaW5wdXRUeXBlLCBjb25zdCBTdHJpbmcmIGRhdGEgPSB7
IH0sIFJlZlB0cjxEYXRhVHJhbnNmZXI+JiYgZGF0YVRyYW5zZmVyID0gbnVsbHB0ciwgY29uc3Qg
VmVjdG9yPFJlZlB0cjxTdGF0aWNSYW5nZT4+JiB0YXJnZXRSYW5nZXMgPSB7IH0pCiB7CiAgICAg
aWYgKGVsZW1lbnQuZG9jdW1lbnQoKS5zZXR0aW5ncygpLmlucHV0RXZlbnRzRW5hYmxlZCgpKSB7
CiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbm90IGJlIGRpc3BhdGNoaW5nIHRvIHRoZSBz
Y29wZWQgcXVldWUgaGVyZS4gTm9ybWFsbHksIGlucHV0IGV2ZW50cyBhcmUgZGlzcGF0Y2hlZCBp
biBDb21wb3NpdGVFZGl0Q29tbWFuZDo6YXBwbHkgYWZ0ZXIgdGhlIGVuZCBvZiB0aGUgc2NvcGUs
CkBAIC0zNTMsNyArMzUzLDcgQEAgZW51bSBjbGFzcyBDbGlwYm9hcmRFdmVudEtpbmQgewogICAg
IEJlZm9yZVBhc3RlLAogfTsKIAotc3RhdGljIEF0b21pY1N0cmluZyBldmVudE5hbWVGb3JDbGlw
Ym9hcmRFdmVudChDbGlwYm9hcmRFdmVudEtpbmQga2luZCkKK3N0YXRpYyBBdG9tU3RyaW5nIGV2
ZW50TmFtZUZvckNsaXBib2FyZEV2ZW50KENsaXBib2FyZEV2ZW50S2luZCBraW5kKQogewogICAg
IHN3aXRjaCAoa2luZCkgewogICAgIGNhc2UgQ2xpcGJvYXJkRXZlbnRLaW5kOjpDb3B5OgpAQCAt
MTA1Niw3ICsxMDU2LDcgQEAgc3RhdGljIHZvaWQgbm90aWZ5VGV4dEZyb21Db250cm9scyhFbGVt
ZW50KiBzdGFydFJvb3QsIEVsZW1lbnQqIGVuZFJvb3QpCiAgICAgICAgIGVuZGluZ1RleHRDb250
cm9sLT5kaWRFZGl0SW5uZXJUZXh0VmFsdWUoKTsKIH0KIAotc3RhdGljIGJvb2wgZGlzcGF0Y2hC
ZWZvcmVJbnB1dEV2ZW50cyhSZWZQdHI8RWxlbWVudD4gc3RhcnRSb290LCBSZWZQdHI8RWxlbWVu
dD4gZW5kUm9vdCwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnB1dFR5cGVOYW1lLCBjb25zdCBTdHJp
bmcmIGRhdGEgPSB7IH0sIFJlZlB0cjxEYXRhVHJhbnNmZXI+JiYgZGF0YVRyYW5zZmVyID0gbnVs
bHB0ciwgY29uc3QgVmVjdG9yPFJlZlB0cjxTdGF0aWNSYW5nZT4+JiB0YXJnZXRSYW5nZXMgPSB7
IH0sIEV2ZW50OjpJc0NhbmNlbGFibGUgY2FuY2VsYWJsZSA9IEV2ZW50OjpJc0NhbmNlbGFibGU6
OlllcykKK3N0YXRpYyBib29sIGRpc3BhdGNoQmVmb3JlSW5wdXRFdmVudHMoUmVmUHRyPEVsZW1l
bnQ+IHN0YXJ0Um9vdCwgUmVmUHRyPEVsZW1lbnQ+IGVuZFJvb3QsIGNvbnN0IEF0b21TdHJpbmcm
IGlucHV0VHlwZU5hbWUsIGNvbnN0IFN0cmluZyYgZGF0YSA9IHsgfSwgUmVmUHRyPERhdGFUcmFu
c2Zlcj4mJiBkYXRhVHJhbnNmZXIgPSBudWxscHRyLCBjb25zdCBWZWN0b3I8UmVmUHRyPFN0YXRp
Y1JhbmdlPj4mIHRhcmdldFJhbmdlcyA9IHsgfSwgRXZlbnQ6OklzQ2FuY2VsYWJsZSBjYW5jZWxh
YmxlID0gRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzKQogewogICAgIGJvb2wgY29udGludWVXaXRo
RGVmYXVsdEJlaGF2aW9yID0gdHJ1ZTsKICAgICBpZiAoc3RhcnRSb290KQpAQCAtMTA2Niw3ICsx
MDY2LDcgQEAgc3RhdGljIGJvb2wgZGlzcGF0Y2hCZWZvcmVJbnB1dEV2ZW50cyhSZWZQdHI8RWxl
bWVudD4gc3RhcnRSb290LCBSZWZQdHI8RWxlbWVudD4KICAgICByZXR1cm4gY29udGludWVXaXRo
RGVmYXVsdEJlaGF2aW9yOwogfQogCi1zdGF0aWMgdm9pZCBkaXNwYXRjaElucHV0RXZlbnRzKFJl
ZlB0cjxFbGVtZW50PiBzdGFydFJvb3QsIFJlZlB0cjxFbGVtZW50PiBlbmRSb290LCBjb25zdCBB
dG9taWNTdHJpbmcmIGlucHV0VHlwZU5hbWUsIGNvbnN0IFN0cmluZyYgZGF0YSA9IHsgfSwgUmVm
UHRyPERhdGFUcmFuc2Zlcj4mJiBkYXRhVHJhbnNmZXIgPSBudWxscHRyLCBjb25zdCBWZWN0b3I8
UmVmUHRyPFN0YXRpY1JhbmdlPj4mIHRhcmdldFJhbmdlcyA9IHsgfSkKK3N0YXRpYyB2b2lkIGRp
c3BhdGNoSW5wdXRFdmVudHMoUmVmUHRyPEVsZW1lbnQ+IHN0YXJ0Um9vdCwgUmVmUHRyPEVsZW1l
bnQ+IGVuZFJvb3QsIGNvbnN0IEF0b21TdHJpbmcmIGlucHV0VHlwZU5hbWUsIGNvbnN0IFN0cmlu
ZyYgZGF0YSA9IHsgfSwgUmVmUHRyPERhdGFUcmFuc2Zlcj4mJiBkYXRhVHJhbnNmZXIgPSBudWxs
cHRyLCBjb25zdCBWZWN0b3I8UmVmUHRyPFN0YXRpY1JhbmdlPj4mIHRhcmdldFJhbmdlcyA9IHsg
fSkKIHsKICAgICBpZiAoc3RhcnRSb290KQogICAgICAgICBkaXNwYXRjaElucHV0RXZlbnQoKnN0
YXJ0Um9vdCwgaW5wdXRUeXBlTmFtZSwgZGF0YSwgV1RGTW92ZShkYXRhVHJhbnNmZXIpLCB0YXJn
ZXRSYW5nZXMpOwpAQCAtMTQ2Myw4ICsxNDYzLDggQEAgdm9pZCBFZGl0b3I6OnBhc3RlQXNRdW90
YXRpb24oKQogdm9pZCBFZGl0b3I6OnF1b3RlRnJhZ21lbnRGb3JQYXN0aW5nKERvY3VtZW50RnJh
Z21lbnQmIGZyYWdtZW50KQogewogICAgIGF1dG8gYmxvY2tRdW90ZSA9IEhUTUxRdW90ZUVsZW1l
bnQ6OmNyZWF0ZShibG9ja3F1b3RlVGFnLCBkb2N1bWVudCgpKTsKLSAgICBibG9ja1F1b3RlLT5z
ZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHR5cGVBdHRyLCBBdG9taWNTdHJpbmco
ImNpdGUiKSk7Ci0gICAgYmxvY2tRdW90ZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXph
dGlvbihjbGFzc0F0dHIsIEF0b21pY1N0cmluZyhBcHBsZVBhc3RlQXNRdW90YXRpb24pKTsKKyAg
ICBibG9ja1F1b3RlLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHR5cGVBdHRy
LCBBdG9tU3RyaW5nKCJjaXRlIikpOworICAgIGJsb2NrUXVvdGUtPnNldEF0dHJpYnV0ZVdpdGhv
dXRTeW5jaHJvbml6YXRpb24oY2xhc3NBdHRyLCBBdG9tU3RyaW5nKEFwcGxlUGFzdGVBc1F1b3Rh
dGlvbikpOwogCiAgICAgYXV0byBjaGlsZE5vZGUgPSBmcmFnbWVudC5maXJzdENoaWxkKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCmluZGV4IDgyMTYzZTY3ODIw
Mjc4MmQyYzEyMGNhZmEzYzc4YjJkNWJiMDgzNzUuLjRlNWFhNjE4Njg4NjE2OTYyMDE3ZjNjZjNm
ZjRkMWZiNWZiZDFjMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNw
cApAQCAtNjMsNyArNjMsNyBAQAogI2luY2x1ZGUgIm1hcmt1cC5oIgogI2luY2x1ZGUgPHBhbC9z
eXN0ZW0vU291bmQuaD4KICNpbmNsdWRlIDxwYWwvdGV4dC9LaWxsUmluZy5oPgotI2luY2x1ZGUg
PHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0luc2VydEVkaXRhYmxlSW1hZ2VDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvSW5zZXJ0RWRpdGFibGVJbWFnZUNvbW1hbmQuY3BwCmluZGV4IGQ5YWZhNTZlNmNjY2Fm
MDkyYmIzZGE1MjI4NmZhZGUxOTJiNjliZjAuLjIyZDRkNmZmNzRjMjA1ZGFhNWFiOTg1NmZmNGE2
MjJiYWI4MDI1ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0RWRp
dGFibGVJbWFnZUNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0
RWRpdGFibGVJbWFnZUNvbW1hbmQuY3BwCkBAIC01MCw5ICs1MCw5IEBAIHZvaWQgSW5zZXJ0RWRp
dGFibGVJbWFnZUNvbW1hbmQ6OmRvQXBwbHkoKQogCiAgICAgbV9pbWFnZUVsZW1lbnQgPSBIVE1M
SW1hZ2VFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSk7CiAgICAgbV9pbWFnZUVsZW1lbnQtPnNl
dEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjp4X2FwcGxlX2VkaXRh
YmxlX2ltYWdlQXR0ciwgZW1wdHlBdG9tKCkpOwotICAgIG1faW1hZ2VFbGVtZW50LT5zZXRBdHRy
aWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6d2lkdGhBdHRyLCBBdG9taWNT
dHJpbmcoIjEwMCUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAg
bV9pbWFnZUVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5h
bWVzOjpoZWlnaHRBdHRyLCBBdG9taWNTdHJpbmcoIjMwMHB4IiwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIG1faW1hZ2VFbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRo
b3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6c3R5bGVBdHRyLCBBdG9taWNTdHJpbmcoImRp
c3BsYXk6IGJsb2NrIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAg
IG1faW1hZ2VFbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxO
YW1lczo6d2lkdGhBdHRyLCBBdG9tU3RyaW5nKCIxMDAlIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpKTsKKyAgICBtX2ltYWdlRWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5
bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OmhlaWdodEF0dHIsIEF0b21TdHJpbmcoIjMwMHB4Iiwg
QXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBtX2ltYWdlRWxlbWVudC0+
c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OnN0eWxlQXR0ciwg
QXRvbVN0cmluZygiZGlzcGxheTogYmxvY2siLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCkpOwogCiAgICAgaW5zZXJ0Tm9kZUF0KCptX2ltYWdlRWxlbWVudCwgZW5kaW5nU2VsZWN0
aW9uKCkuc3RhcnQoKSk7CiAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKHZpc2libGVQb3NpdGlvbkFm
dGVyTm9kZSgqbV9pbWFnZUVsZW1lbnQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9NYXJr
dXBBY2N1bXVsYXRvci5jcHAKaW5kZXggNTI1MDA2MzdhOWQwNGJlNjVmZjU3NjQzYTk4NzY5MzE4
NWE5ODY2NC4uN2U5YjQ3ZmY2ZDY1N2YwOGZkMGE5NDA1YmU4ODI1OGRiM2RjNDczZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5jcHAKQEAgLTk0LDcgKzk0
LDcgQEAgc3RhdGljIGJvb2wgZWxlbWVudENhbm5vdEhhdmVFbmRUYWcoY29uc3QgTm9kZSYgbm9k
ZSkKICAgICAvLyBJZiBjdXJyZW50IG5vZGUgaXMgYW4gYXJlYSwgYmFzZSwgYmFzZWZvbnQsIGJn
c291bmQsIGJyLCBjb2wsIGVtYmVkLCBmcmFtZSwgaHIsIGltZywKICAgICAvLyBpbnB1dCwga2V5
Z2VuLCBsaW5rLCBtZXRhLCBwYXJhbSwgc291cmNlLCB0cmFjayBvciB3YnIgZWxlbWVudCwgdGhl
biBjb250aW51ZSBvbiB0bwogICAgIC8vIHRoZSBuZXh0IGNoaWxkIG5vZGUgYXQgdGhpcyBwb2lu
dC4KLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nSW1wbCogY29uc3QgbG9jYWxOYW1lc1td
ID0geworICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nSW1wbCogY29uc3QgbG9jYWxOYW1lc1td
ID0gewogICAgICAgICBhcmVhVGFnLT5sb2NhbE5hbWUoKS5pbXBsKCksCiAgICAgICAgIGJhc2VU
YWctPmxvY2FsTmFtZSgpLmltcGwoKSwKICAgICAgICAgYmFzZWZvbnRUYWctPmxvY2FsTmFtZSgp
LmltcGwoKSwKQEAgLTMxNyw3ICszMTcsNyBAQCB2b2lkIE1hcmt1cEFjY3VtdWxhdG9yOjphcHBl
bmRRdW90ZWRVUkxBdHRyaWJ1dGVWYWx1ZShTdHJpbmdCdWlsZGVyJiByZXN1bHQsIGNvbgogYm9v
bCBNYXJrdXBBY2N1bXVsYXRvcjo6c2hvdWxkQWRkTmFtZXNwYWNlRWxlbWVudChjb25zdCBFbGVt
ZW50JiBlbGVtZW50KQogewogICAgIC8vIERvbid0IGFkZCBuYW1lc3BhY2UgYXR0cmlidXRlIGlm
IGl0IGlzIGFscmVhZHkgZGVmaW5lZCBmb3IgdGhpcyBlbGVtLgotICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgcHJlZml4ID0gZWxlbWVudC5wcmVmaXgoKTsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBw
cmVmaXggPSBlbGVtZW50LnByZWZpeCgpOwogICAgIGlmIChwcmVmaXguaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm4gIWVsZW1lbnQuaGFzQXR0cmlidXRlKHhtbG5zQXRvbSgpKTsKIApAQCAtMzQ2
LDcgKzM0Niw3IEBAIGJvb2wgTWFya3VwQWNjdW11bGF0b3I6OnNob3VsZEFkZE5hbWVzcGFjZUF0
dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSwKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotdm9pZCBNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kTmFtZXNwYWNlKFN0cmluZ0J1aWxkZXIm
IHJlc3VsdCwgY29uc3QgQXRvbWljU3RyaW5nJiBwcmVmaXgsIGNvbnN0IEF0b21pY1N0cmluZyYg
bmFtZXNwYWNlVVJJLCBOYW1lc3BhY2VzJiBuYW1lc3BhY2VzLCBib29sIGFsbG93RW1wdHlEZWZh
dWx0TlMpCit2b2lkIE1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmROYW1lc3BhY2UoU3RyaW5nQnVp
bGRlciYgcmVzdWx0LCBjb25zdCBBdG9tU3RyaW5nJiBwcmVmaXgsIGNvbnN0IEF0b21TdHJpbmcm
IG5hbWVzcGFjZVVSSSwgTmFtZXNwYWNlcyYgbmFtZXNwYWNlcywgYm9vbCBhbGxvd0VtcHR5RGVm
YXVsdE5TKQogewogICAgIG5hbWVzcGFjZXMuY2hlY2tDb25zaXN0ZW5jeSgpOwogICAgIGlmIChu
YW1lc3BhY2VVUkkuaXNFbXB0eSgpKSB7CkBAIC0zNjAsOCArMzYwLDggQEAgdm9pZCBNYXJrdXBB
Y2N1bXVsYXRvcjo6YXBwZW5kTmFtZXNwYWNlKFN0cmluZ0J1aWxkZXImIHJlc3VsdCwgY29uc3Qg
QXRvbWljU3RyaW4KICAgICB9CiAKICAgICAvLyBVc2UgZW1wdHlBdG9tKClzJ3MgaW1wbCgpIGZv
ciBib3RoIG51bGwgYW5kIGVtcHR5IHN0cmluZ3Mgc2luY2UgdGhlIEhhc2hNYXAgY2FuJ3QgaGFu
ZGxlIDAgYXMgYSBrZXkKLSAgICBBdG9taWNTdHJpbmdJbXBsKiBwcmUgPSBwcmVmaXguaXNFbXB0
eSgpID8gZW1wdHlBdG9tKCkuaW1wbCgpIDogcHJlZml4LmltcGwoKTsKLSAgICBBdG9taWNTdHJp
bmdJbXBsKiBmb3VuZE5TID0gbmFtZXNwYWNlcy5nZXQocHJlKTsKKyAgICBBdG9tU3RyaW5nSW1w
bCogcHJlID0gcHJlZml4LmlzRW1wdHkoKSA/IGVtcHR5QXRvbSgpLmltcGwoKSA6IHByZWZpeC5p
bXBsKCk7CisgICAgQXRvbVN0cmluZ0ltcGwqIGZvdW5kTlMgPSBuYW1lc3BhY2VzLmdldChwcmUp
OwogICAgIGlmIChmb3VuZE5TICE9IG5hbWVzcGFjZVVSSS5pbXBsKCkpIHsKICAgICAgICAgbmFt
ZXNwYWNlcy5zZXQocHJlLCBuYW1lc3BhY2VVUkkuaW1wbCgpKTsKICAgICAgICAgLy8gQWRkIG5h
bWVzcGFjZSB0byBwcmVmaXggcGFpciBzbyB3ZSBjYW4gZG8gY29uc3RyYWludCBjaGVja2luZyBs
YXRlci4KQEAgLTUzMSw3ICs1MzEsNyBAQCB2b2lkIE1hcmt1cEFjY3VtdWxhdG9yOjpnZW5lcmF0
ZVVuaXF1ZVByZWZpeChRdWFsaWZpZWROYW1lJiBwcmVmaXhlZE5hbWUsIGNvbnN0CiAgICAgICAg
IGJ1aWxkZXIuY2xlYXIoKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJOUyIpOwog
ICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcigrK21fcHJlZml4TGV2ZWwpOwotICAgICAgICBj
b25zdCBBdG9taWNTdHJpbmcmIG5hbWUgPSBidWlsZGVyLnRvQXRvbWljU3RyaW5nKCk7CisgICAg
ICAgIGNvbnN0IEF0b21TdHJpbmcmIG5hbWUgPSBidWlsZGVyLnRvQXRvbVN0cmluZygpOwogICAg
ICAgICBpZiAoIW5hbWVzcGFjZXMuZ2V0KG5hbWUuaW1wbCgpKSkgewogICAgICAgICAgICAgcHJl
Zml4ZWROYW1lLnNldFByZWZpeChuYW1lKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTU1NCwx
MSArNTU0LDExIEBAIHZvaWQgTWFya3VwQWNjdW11bGF0b3I6OmFwcGVuZEF0dHJpYnV0ZShTdHJp
bmdCdWlsZGVyJiByZXN1bHQsIGNvbnN0IEVsZW1lbnQmIGVsCiAgICAgICAgICAgICAgICAgLy8g
QWx3YXlzIHVzZSB4bWwgYXMgcHJlZml4IGlmIHRoZSBuYW1lc3BhY2UgaXMgdGhlIFhNTCBuYW1l
c3BhY2UuCiAgICAgICAgICAgICAgICAgcHJlZml4ZWROYW1lLnNldFByZWZpeCh4bWxBdG9tKCkp
OwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBBdG9taWNTdHJpbmdJbXBs
KiBmb3VuZE5TID0gbmFtZXNwYWNlcyAmJiBhdHRyaWJ1dGUucHJlZml4KCkuaW1wbCgpID8gbmFt
ZXNwYWNlcy0+Z2V0KGF0dHJpYnV0ZS5wcmVmaXgoKS5pbXBsKCkpIDogMDsKKyAgICAgICAgICAg
ICAgICBBdG9tU3RyaW5nSW1wbCogZm91bmROUyA9IG5hbWVzcGFjZXMgJiYgYXR0cmlidXRlLnBy
ZWZpeCgpLmltcGwoKSA/IG5hbWVzcGFjZXMtPmdldChhdHRyaWJ1dGUucHJlZml4KCkuaW1wbCgp
KSA6IDA7CiAgICAgICAgICAgICAgICAgYm9vbCBwcmVmaXhJc0FscmVhZHlNYXBwZWRUb090aGVy
TlMgPSBmb3VuZE5TICYmIGZvdW5kTlMgIT0gYXR0cmlidXRlLm5hbWVzcGFjZVVSSSgpLmltcGwo
KTsKICAgICAgICAgICAgICAgICBpZiAoYXR0cmlidXRlLnByZWZpeCgpLmlzRW1wdHkoKSB8fCAh
Zm91bmROUyB8fCBwcmVmaXhJc0FscmVhZHlNYXBwZWRUb090aGVyTlMpIHsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKEF0b21pY1N0cmluZ0ltcGwqIHByZWZpeCA9IG5hbWVzcGFjZXMgPyBuYW1l
c3BhY2VzLT5nZXQoYXR0cmlidXRlLm5hbWVzcGFjZVVSSSgpLmltcGwoKSkgOiAwKQotICAgICAg
ICAgICAgICAgICAgICAgICAgcHJlZml4ZWROYW1lLnNldFByZWZpeChBdG9taWNTdHJpbmcocHJl
Zml4KSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChBdG9tU3RyaW5nSW1wbCogcHJlZml4ID0g
bmFtZXNwYWNlcyA/IG5hbWVzcGFjZXMtPmdldChhdHRyaWJ1dGUubmFtZXNwYWNlVVJJKCkuaW1w
bCgpKSA6IDApCisgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXhlZE5hbWUuc2V0UHJlZml4
KEF0b21TdHJpbmcocHJlZml4KSk7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAg
ICAgICAgICAgICAgICAgICAgYm9vbCBzaG91bGRCZURlY2xhcmVkVXNpbmdBcHBlbmROYW1lc3Bh
Y2UgPSAhYXR0cmlidXRlLnByZWZpeCgpLmlzRW1wdHkoKSAmJiAhZm91bmROUzsKICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICghc2hvdWxkQmVEZWNsYXJlZFVzaW5nQXBwZW5kTmFtZXNwYWNl
ICYmIGF0dHJpYnV0ZS5sb2NhbE5hbWUoKSAhPSB4bWxuc0F0b20oKSAmJiBuYW1lc3BhY2VzKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5oIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5oCmluZGV4IGFhYWNiMjc2
MWZiNjIwYmY1MmE3ODQ0OGRkMjBiNDYxZmY1NjY4ODYuLjdjN2JiZjMxZmRiZWMzYzkyZDY0MmM5
NTdkNWM4ODJmNWMxNTI2MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFy
a3VwQWNjdW11bGF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3Vt
dWxhdG9yLmgKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgRWxlbWVudDsKIGNsYXNzIE5vZGU7CiBj
bGFzcyBSYW5nZTsKIAotdHlwZWRlZiBIYXNoTWFwPEF0b21pY1N0cmluZywgQXRvbWljU3RyaW5n
SW1wbCo+IE5hbWVzcGFjZXM7Cit0eXBlZGVmIEhhc2hNYXA8QXRvbVN0cmluZywgQXRvbVN0cmlu
Z0ltcGwqPiBOYW1lc3BhY2VzOwogCiBlbnVtIEVudGl0eU1hc2sgewogICAgIEVudGl0eUFtcCA9
IDB4MDAwMSwKQEAgLTk0LDcgKzk0LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgYXBwZW5kRW5k
TWFya3VwKFN0cmluZ0J1aWxkZXImLCBjb25zdCBFbGVtZW50Jik7CiAKICAgICB2b2lkIGFwcGVu
ZEF0dHJpYnV0ZVZhbHVlKFN0cmluZ0J1aWxkZXImLCBjb25zdCBTdHJpbmcmLCBib29sIGlzU2Vy
aWFsaXppbmdIVE1MKTsKLSAgICB2b2lkIGFwcGVuZE5hbWVzcGFjZShTdHJpbmdCdWlsZGVyJiwg
Y29uc3QgQXRvbWljU3RyaW5nJiBwcmVmaXgsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNl
VVJJLCBOYW1lc3BhY2VzJiwgYm9vbCBhbGxvd0VtcHR5RGVmYXVsdE5TID0gZmFsc2UpOworICAg
IHZvaWQgYXBwZW5kTmFtZXNwYWNlKFN0cmluZ0J1aWxkZXImLCBjb25zdCBBdG9tU3RyaW5nJiBw
cmVmaXgsIGNvbnN0IEF0b21TdHJpbmcmIG5hbWVzcGFjZVVSSSwgTmFtZXNwYWNlcyYsIGJvb2wg
YWxsb3dFbXB0eURlZmF1bHROUyA9IGZhbHNlKTsKICAgICB2b2lkIGFwcGVuZFhNTERlY2xhcmF0
aW9uKFN0cmluZ0J1aWxkZXImLCBjb25zdCBEb2N1bWVudCYpOwogICAgIHZvaWQgYXBwZW5kRG9j
dW1lbnRUeXBlKFN0cmluZ0J1aWxkZXImLCBjb25zdCBEb2N1bWVudFR5cGUmKTsKICAgICB2b2lk
IGFwcGVuZFByb2Nlc3NpbmdJbnN0cnVjdGlvbihTdHJpbmdCdWlsZGVyJiwgY29uc3QgU3RyaW5n
JiB0YXJnZXQsIGNvbnN0IFN0cmluZyYgZGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IGNhOTZkYmYwYmIwNTYyYzIz
YzI5ZWRjYjk5YmE1YzZiNGI0OGVkNTQuLjk1NzJiMTBkZTQ1ZmVjZmRiY2IyZGJkNzc2ZGQ3MGFh
MmZjOTE2ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVj
dGlvbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVj
dGlvbkNvbW1hbmQuY3BwCkBAIC01NzIsNyArNTcyLDcgQEAgdm9pZCBSZXBsYWNlU2VsZWN0aW9u
Q29tbWFuZDo6cmVtb3ZlUmVkdW5kYW50U3R5bGVzQW5kS2VlcFN0eWxlU3BhbklubGluZShJbnNl
cnQKICAgICB9CiB9CiAKLXN0YXRpYyBib29sIGlzUHJvaGliaXRlZFBhcmFncmFwaENoaWxkKGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZSkKK3N0YXRpYyBib29sIGlzUHJvaGliaXRlZFBhcmFncmFw
aENoaWxkKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUpCiB7CiAgICAgLy8gaHR0cHM6Ly9kdmNzLncz
Lm9yZy9oZy9lZGl0aW5nL3Jhdy1maWxlLzU3YWJlNmQzY2I2MC9lZGl0aW5nLmh0bWwjcHJvaGli
aXRlZC1wYXJhZ3JhcGgtY2hpbGQKICAgICBzdGF0aWMgY29uc3QgYXV0byBsb2NhbE5hbWVzID0g
bWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKQEAgLTYyNiw3ICs2MjYsNyBAQCBzdGF0aWMgYm9vbCBp
c1Byb2hpYml0ZWRQYXJhZ3JhcGhDaGlsZChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCiAgICAg
ICAgICAgICAmdWxUYWcuZ2V0KCksCiAgICAgICAgICAgICAmeG1wVGFnLmdldCgpLAogICAgICAg
ICB9OwotICAgICAgICBIYXNoU2V0PEF0b21pY1N0cmluZz4gc2V0OworICAgICAgICBIYXNoU2V0
PEF0b21TdHJpbmc+IHNldDsKICAgICAgICAgZm9yIChhdXRvJiB0YWcgOiB0YWdzKQogICAgICAg
ICAgICAgc2V0LmFkZCh0YWctPmxvY2FsTmFtZSgpKTsKICAgICAgICAgcmV0dXJuIHNldDsKQEAg
LTkwMyw3ICs5MDMsNyBAQCBzdGF0aWMgYm9vbCBpc0lubGluZU5vZGVXaXRoU3R5bGUoY29uc3Qg
Tm9kZSogbm9kZSkKICAgICAvLyBXZSBjYW4gc2tpcCBvdmVyIGVsZW1lbnRzIHdob3NlIGNsYXNz
IGF0dHJpYnV0ZSBpcwogICAgIC8vIG9uZSBvZiBvdXIgaW50ZXJuYWwgY2xhc3Nlcy4KICAgICBj
b25zdCBIVE1MRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PGNvbnN0IEhUTUxFbGVtZW50
Kj4obm9kZSk7Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBjbGFzc0F0dHJpYnV0ZVZhbHVlID0g
ZWxlbWVudC0+YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihjbGFzc0F0dHIpOworICAg
IGNvbnN0IEF0b21TdHJpbmcmIGNsYXNzQXR0cmlidXRlVmFsdWUgPSBlbGVtZW50LT5hdHRyaWJ1
dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGNsYXNzQXR0cik7CiAgICAgaWYgKGNsYXNzQXR0cmli
dXRlVmFsdWUgPT0gQXBwbGVUYWJTcGFuQ2xhc3MKICAgICAgICAgfHwgY2xhc3NBdHRyaWJ1dGVW
YWx1ZSA9PSBBcHBsZUNvbnZlcnRlZFNwYWNlCiAgICAgICAgIHx8IGNsYXNzQXR0cmlidXRlVmFs
dWUgPT0gQXBwbGVQYXN0ZUFzUXVvdGF0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9TZXROb2RlQXR0cmlidXRlQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1NldE5vZGVBdHRyaWJ1dGVDb21tYW5kLmNwcAppbmRleCBmODM4ZTU0NmMxOTgyNWJhODRk
NmY2MTQwMjI1M2Y0MzI4NDY2NGQ3Li44MGMxNDZhMTg0MGU4ZTRmODk0Yzg2ZmJmYjY0YTY1ZjIx
YjliODBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NldE5vZGVBdHRyaWJ1
dGVDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NldE5vZGVBdHRyaWJ1
dGVDb21tYW5kLmNwcApAQCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVNldE5vZGVBdHRyaWJ1dGVDb21tYW5kOjpTZXROb2RlQXR0cmlidXRlQ29tbWFuZChSZWY8RWxl
bWVudD4mJiBlbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGUsIGNvbnN0IEF0
b21pY1N0cmluZyYgdmFsdWUpCitTZXROb2RlQXR0cmlidXRlQ29tbWFuZDo6U2V0Tm9kZUF0dHJp
YnV0ZUNvbW1hbmQoUmVmPEVsZW1lbnQ+JiYgZWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0cmlidXRlLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKICAgICA6IFNpbXBsZUVkaXRDb21t
YW5kKGVsZW1lbnQtPmRvY3VtZW50KCkpCiAgICAgLCBtX2VsZW1lbnQoV1RGTW92ZShlbGVtZW50
KSkKICAgICAsIG1fYXR0cmlidXRlKGF0dHJpYnV0ZSkKQEAgLTQ4LDcgKzQ4LDcgQEAgdm9pZCBT
ZXROb2RlQXR0cmlidXRlQ29tbWFuZDo6ZG9BcHBseSgpCiB2b2lkIFNldE5vZGVBdHRyaWJ1dGVD
b21tYW5kOjpkb1VuYXBwbHkoKQogewogICAgIG1fZWxlbWVudC0+c2V0QXR0cmlidXRlKG1fYXR0
cmlidXRlLCBtX29sZFZhbHVlKTsKLSAgICBBdG9taWNTdHJpbmdJbXBsKiBudWxsU3RyaW5nID0g
bnVsbHB0cjsKKyAgICBBdG9tU3RyaW5nSW1wbCogbnVsbFN0cmluZyA9IG51bGxwdHI7CiAgICAg
bV9vbGRWYWx1ZSA9IG51bGxTdHJpbmc7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvU2V0Tm9kZUF0dHJpYnV0ZUNvbW1hbmQuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvU2V0Tm9kZUF0dHJpYnV0ZUNvbW1hbmQuaAppbmRleCA4ODQ0OWRlZTZiNzZhM2M1NmJlMzM1
M2EwYWQ0Y2YyNjZhNjEwZDE1Li5kZTUxMmM1MGU3MjcwZTA0OWM0OGFlY2QxY2Y3N2Q5YTViODcz
ZWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NldE5vZGVBdHRyaWJ1dGVD
b21tYW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXROb2RlQXR0cmlidXRlQ29t
bWFuZC5oCkBAIC0zMiwxMyArMzIsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBT
ZXROb2RlQXR0cmlidXRlQ29tbWFuZCA6IHB1YmxpYyBTaW1wbGVFZGl0Q29tbWFuZCB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxTZXROb2RlQXR0cmlidXRlQ29tbWFuZD4gY3JlYXRlKFJlZjxF
bGVtZW50PiYmIGVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZSwgY29uc3Qg
QXRvbWljU3RyaW5nJiB2YWx1ZSkKKyAgICBzdGF0aWMgUmVmPFNldE5vZGVBdHRyaWJ1dGVDb21t
YW5kPiBjcmVhdGUoUmVmPEVsZW1lbnQ+JiYgZWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0cmlidXRlLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKICAgICB7CiAgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFNldE5vZGVBdHRyaWJ1dGVDb21tYW5kKFdURk1vdmUoZWxlbWVudCks
IGF0dHJpYnV0ZSwgdmFsdWUpKTsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgU2V0Tm9kZUF0dHJp
YnV0ZUNvbW1hbmQoUmVmPEVsZW1lbnQ+JiYsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0
ZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSk7CisgICAgU2V0Tm9kZUF0dHJpYnV0ZUNvbW1h
bmQoUmVmPEVsZW1lbnQ+JiYsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZSwgY29uc3Qg
QXRvbVN0cmluZyYgdmFsdWUpOwogCiAgICAgdm9pZCBkb0FwcGx5KCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkb1VuYXBwbHkoKSBvdmVycmlkZTsKQEAgLTQ5LDggKzQ5LDggQEAgcHJpdmF0ZToKIAog
ICAgIFJlZjxFbGVtZW50PiBtX2VsZW1lbnQ7CiAgICAgUXVhbGlmaWVkTmFtZSBtX2F0dHJpYnV0
ZTsKLSAgICBBdG9taWNTdHJpbmcgbV92YWx1ZTsKLSAgICBBdG9taWNTdHJpbmcgbV9vbGRWYWx1
ZTsKKyAgICBBdG9tU3RyaW5nIG1fdmFsdWU7CisgICAgQXRvbVN0cmluZyBtX29sZFZhbHVlOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9TcGxpdEVsZW1lbnRDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
U3BsaXRFbGVtZW50Q29tbWFuZC5jcHAKaW5kZXggYmEzMmFiNWNlNmI0YmU2OWU2MzJiMzg5NzYz
Zjg1ZDc5NTljNWZhYy4uZDIxYmNmMDlkZWVlNjVhMTY4MzUzMWYzNDhhZjRkZDNmOWQ5NmE4NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGxpdEVsZW1lbnRDb21tYW5kLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwbGl0RWxlbWVudENvbW1hbmQuY3BwCkBA
IC04NCw3ICs4NCw3IEBAIHZvaWQgU3BsaXRFbGVtZW50Q29tbWFuZDo6ZG9VbmFwcGx5KCkKICAg
ICAgICAgbV9lbGVtZW50Mi0+aW5zZXJ0QmVmb3JlKGNoaWxkLCByZWZDaGlsZC5nZXQoKSk7CiAK
ICAgICAvLyBSZWNvdmVyIHRoZSBpZCBhdHRyaWJ1dGUgb2YgdGhlIG9yaWdpbmFsIGVsZW1lbnQu
Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBpZCA9IG1fZWxlbWVudDEtPmdldElkQXR0cmlidXRl
KCk7CisgICAgY29uc3QgQXRvbVN0cmluZyYgaWQgPSBtX2VsZW1lbnQxLT5nZXRJZEF0dHJpYnV0
ZSgpOwogICAgIGlmICghaWQuaXNOdWxsKCkpCiAgICAgICAgIG1fZWxlbWVudDItPnNldElkQXR0
cmlidXRlKGlkKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9E
YXRhRGV0ZWN0aW9uLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0
aW9uLm1tCmluZGV4IGJjYjIzOGUxMDZkNzc3ODgzZWRlMGYzNDNhZDQ2Y2Y0YzI5NWE4ZGQuLjY4
MWY1ZjU2NTNhZjIxYjI2ZGNmOTU4ZGYzMTk5ZWQ4MTBlZTBhZGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0KQEAgLTE5Niw3ICsxOTYsNyBAQCBi
b29sIERhdGFEZXRlY3Rpb246OnNob3VsZENhbmNlbERlZmF1bHRBY3Rpb24oRWxlbWVudCYgZWxl
bWVudCkKICAgICBpZiAoc29mdExpbmtfRGF0YURldGVjdG9yc0NvcmVfRERTaG91bGRJbW1lZGlh
dGVseVNob3dBY3Rpb25TaGVldEZvclVSTChkb3duY2FzdDxIVE1MQW5jaG9yRWxlbWVudD4oZWxl
bWVudCkuaHJlZigpKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCi0gICAgY29uc3QgQXRv
bWljU3RyaW5nJiByZXN1bHRBdHRyaWJ1dGUgPSBlbGVtZW50LmF0dHJpYnV0ZVdpdGhvdXRTeW5j
aHJvbml6YXRpb24oeF9hcHBsZV9kYXRhX2RldGVjdG9yc19yZXN1bHRBdHRyKTsKKyAgICBjb25z
dCBBdG9tU3RyaW5nJiByZXN1bHRBdHRyaWJ1dGUgPSBlbGVtZW50LmF0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24oeF9hcHBsZV9kYXRhX2RldGVjdG9yc19yZXN1bHRBdHRyKTsKICAgICBp
ZiAocmVzdWx0QXR0cmlidXRlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IE5TQXJyYXkgKnJlc3VsdHMgPSBlbGVtZW50LmRvY3VtZW50KCkuZnJhbWUoKS0+ZGF0YURldGVj
dGlvblJlc3VsdHMoKTsKQEAgLTYzNiw3ICs2MzYsNyBAQCBOU0FycmF5ICpEYXRhRGV0ZWN0aW9u
OjpkZXRlY3RDb250ZW50SW5SYW5nZShSZWZQdHI8UmFuZ2U+JiBjb250ZXh0UmFuZ2UsIERhdGFE
ZQogICAgICAgICAgICAgYW5jaG9yRWxlbWVudC0+YXBwZW5kQ2hpbGQoV1RGTW92ZShuZXdUZXh0
Tm9kZSkpOwogCiAgICAgICAgICAgICAvLyBBZGQgYSBzcGVjaWFsIGF0dHJpYnV0ZSB0byBtYXJr
IHRoaXMgVVJMaWZpY2F0aW9uIGFzIHRoZSByZXN1bHQgb2YgZGF0YSBkZXRlY3RvcnMuCi0gICAg
ICAgICAgICBhbmNob3JFbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9u
KHhfYXBwbGVfZGF0YV9kZXRlY3RvcnNBdHRyLCBBdG9taWNTdHJpbmcoInRydWUiLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgICAgICAgICBhbmNob3JFbGVtZW50
LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHhfYXBwbGVfZGF0YV9kZXRlY3Rv
cnNBdHRyLCBBdG9tU3RyaW5nKCJ0cnVlIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpKTsKICAgICAgICAgICAgIGFuY2hvckVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5j
aHJvbml6YXRpb24oeF9hcHBsZV9kYXRhX2RldGVjdG9yc190eXBlQXR0ciwgZGF0YURldGVjdG9y
VHlwZUZvckNhdGVnb3J5KHNvZnRMaW5rX0RhdGFEZXRlY3RvcnNDb3JlX0REUmVzdWx0R2V0Q2F0
ZWdvcnkoY29yZVJlc3VsdCkpKTsKICAgICAgICAgICAgIGFuY2hvckVsZW1lbnQtPnNldEF0dHJp
YnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oeF9hcHBsZV9kYXRhX2RldGVjdG9yc19yZXN1bHRB
dHRyLCBpZGVudGlmaWVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9j
b2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQppbmRleCBiZjI5YTg2YzQ5MWVmMzlhYzQ1ZmMy
OGQ4OTJmYjdmZTQ4M2RmNDk5Li4yNjEyZTczZjM1MWE5OTgyZjdmNzdjMWQ3YTU3ZGM0NjljYTBl
OWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRS
ZWFkZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRl
bnRSZWFkZXJDb2NvYS5tbQpAQCAtMjYyLDkgKzI2Miw5IEBAIHN0YXRpYyBSZWY8RG9jdW1lbnRG
cmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGb3JJbWFnZUF0dGFjaG1lbnQoRnJhbWUmIGZyYW1lLCBE
b2N1CiAgICAgICAgICAgICBpbWFnZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlv
bihIVE1MTmFtZXM6OnNyY0F0dHIsIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50LCBC
bG9iOjpjcmVhdGUoYnVmZmVyLmdldCgpLCBjb250ZW50VHlwZSkpKTsKICAgICAgICAgICAgIGlt
YWdlLT5zZXRBdHRhY2htZW50RWxlbWVudChXVEZNb3ZlKGF0dGFjaG1lbnQpKTsKICAgICAgICAg
ICAgIGlmIChwcmVmZXJyZWRTaXplLndpZHRoKQotICAgICAgICAgICAgICAgIGltYWdlLT5zZXRB
dHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6d2lkdGhBdHRyLCBBdG9t
aWNTdHJpbmc6Om51bWJlcigqcHJlZmVycmVkU2l6ZS53aWR0aCkpOworICAgICAgICAgICAgICAg
IGltYWdlLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6d2lk
dGhBdHRyLCBBdG9tU3RyaW5nOjpudW1iZXIoKnByZWZlcnJlZFNpemUud2lkdGgpKTsKICAgICAg
ICAgICAgIGlmIChwcmVmZXJyZWRTaXplLmhlaWdodCkKLSAgICAgICAgICAgICAgICBpbWFnZS0+
c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OmhlaWdodEF0dHIs
IEF0b21pY1N0cmluZzo6bnVtYmVyKCpwcmVmZXJyZWRTaXplLmhlaWdodCkpOworICAgICAgICAg
ICAgICAgIGltYWdlLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1l
czo6aGVpZ2h0QXR0ciwgQXRvbVN0cmluZzo6bnVtYmVyKCpwcmVmZXJyZWRTaXplLmhlaWdodCkp
OwogICAgICAgICAgICAgZnJhZ21lbnQtPmFwcGVuZENoaWxkKFdURk1vdmUoaW1hZ2UpKTsKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGF0dGFjaG1lbnQtPnVwZGF0ZUF0dHJpYnV0ZXMo
YnVmZmVyLT5zaXplKCksIGNvbnRlbnRUeXBlLCBkZWZhdWx0SW1hZ2VBdHRhY2htZW50TmFtZSk7
CkBAIC0yOTYsNyArMjk2LDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0
dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICAgICAgcmV0
dXJuOwogCiAgICAgLy8gRklYTUU6IEhhbmRsZSByZXNvdXJjZXMgaW4gc3ViZnJhbWUgYXJjaGl2
ZXMuCi0gICAgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFJlZjxBcmNoaXZlUmVzb3VyY2U+PiB1cmxU
b1Jlc291cmNlTWFwOworICAgIEhhc2hNYXA8QXRvbVN0cmluZywgUmVmPEFyY2hpdmVSZXNvdXJj
ZT4+IHVybFRvUmVzb3VyY2VNYXA7CiAgICAgZm9yIChhdXRvJiBzdWJyZXNvdXJjZSA6IHN1YnJl
c291cmNlcykgewogICAgICAgICBhdXRvJiB1cmwgPSBzdWJyZXNvdXJjZS0+dXJsKCk7CiAgICAg
ICAgIGlmIChzaG91bGRSZXBsYWNlU3VicmVzb3VyY2VVUkwodXJsKSkKQEAgLTMzMiw3ICszMzIs
NyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUm
IGZyYW1lLCBEb2N1bWVudEZyYWdtZW50JiBmcgogICAgICAgICBpZiAobmFtZS5pc0VtcHR5KCkp
CiAgICAgICAgICAgICBuYW1lID0gVVJMKHsgfSwgcmVzb3VyY2VVUkxTdHJpbmcpLmxhc3RQYXRo
Q29tcG9uZW50KCk7CiAgICAgICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIG5h
bWUgPSBBdG9taWNTdHJpbmcoIm1lZGlhIik7CisgICAgICAgICAgICBuYW1lID0gQXRvbVN0cmlu
ZygibWVkaWEiKTsKIAogICAgICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQoeyBu
YW1lLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291cmNlLT52YWx1ZS0+ZGF0YSgp
LCBpbWFnZSB9KTsKICAgICB9CkBAIC0zNTAsNyArMzUwLDcgQEAgc3RhdGljIHZvaWQgcmVwbGFj
ZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVu
dCYgZnIKIAogICAgICAgICBhdXRvIG5hbWUgPSBVUkwoeyB9LCByZXNvdXJjZVVSTFN0cmluZyku
bGFzdFBhdGhDb21wb25lbnQoKTsKICAgICAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQotICAgICAg
ICAgICAgbmFtZSA9IEF0b21pY1N0cmluZygiZmlsZSIpOworICAgICAgICAgICAgbmFtZSA9IEF0
b21TdHJpbmcoImZpbGUiKTsKIAogICAgICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5hcHBl
bmQoeyBuYW1lLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291cmNlLT52YWx1ZS0+
ZGF0YSgpLCBvYmplY3QgfSk7CiAgICAgfQpAQCAtNDEzLDcgKzQxMyw3IEBAIFJlZlB0cjxEb2N1
bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhGcmFtZSYgZnJhbWUs
IE5TQXR0cmlidXRlCiAgICAgICAgIHJldHVybiBXVEZNb3ZlKGZyYWdtZW50QW5kUmVzb3VyY2Vz
LmZyYWdtZW50KTsKICAgICB9CiAKLSAgICBIYXNoTWFwPEF0b21pY1N0cmluZywgQXRvbWljU3Ry
aW5nPiBibG9iVVJMTWFwOworICAgIEhhc2hNYXA8QXRvbVN0cmluZywgQXRvbVN0cmluZz4gYmxv
YlVSTE1hcDsKICAgICBmb3IgKGNvbnN0IFJlZjxBcmNoaXZlUmVzb3VyY2U+JiBzdWJyZXNvdXJj
ZSA6IGZyYWdtZW50QW5kUmVzb3VyY2VzLnJlc291cmNlcykgewogICAgICAgICBhdXRvIGJsb2Ig
PSBCbG9iOjpjcmVhdGUoc3VicmVzb3VyY2UtPmRhdGEoKSwgc3VicmVzb3VyY2UtPm1pbWVUeXBl
KCkpOwogICAgICAgICBTdHJpbmcgYmxvYlVSTCA9IERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRv
Y3VtZW50LCBibG9iKTsKQEAgLTQ1OSw3ICs0NTksNyBAQCBzdGF0aWMgU3RyaW5nIHNhbml0aXpl
TWFya3VwV2l0aEFyY2hpdmUoRnJhbWUmIGZyYW1lLCBEb2N1bWVudCYgZGVzdGluYXRpb25Eb2N1
bQogICAgICAgICByZXR1cm4gc2FuaXRpemVkTWFya3VwRm9yRnJhZ21lbnRJbkRvY3VtZW50KFdU
Rk1vdmUoZnJhZ21lbnQpLCAqc3RhZ2luZ0RvY3VtZW50LCBtc29MaXN0UXVpcmtzLCBtYXJrdXBB
bmRBcmNoaXZlLm1hcmt1cCk7CiAgICAgfQogCi0gICAgSGFzaE1hcDxBdG9taWNTdHJpbmcsIEF0
b21pY1N0cmluZz4gYmxvYlVSTE1hcDsKKyAgICBIYXNoTWFwPEF0b21TdHJpbmcsIEF0b21TdHJp
bmc+IGJsb2JVUkxNYXA7CiAgICAgZm9yIChjb25zdCBSZWY8QXJjaGl2ZVJlc291cmNlPiYgc3Vi
cmVzb3VyY2UgOiBtYXJrdXBBbmRBcmNoaXZlLmFyY2hpdmUtPnN1YnJlc291cmNlcygpKSB7CiAg
ICAgICAgIGF1dG8mIHN1YnJlc291cmNlVVJMID0gc3VicmVzb3VyY2UtPnVybCgpOwogICAgICAg
ICBpZiAoIXNob3VsZFJlcGxhY2VTdWJyZXNvdXJjZVVSTChzdWJyZXNvdXJjZVVSTCkpCkBAIC03
MzksOSArNzM5LDkgQEAgc3RhdGljIFJlZjxIVE1MRWxlbWVudD4gYXR0YWNobWVudEZvckZpbGVQ
YXRoKEZyYW1lJiBmcmFtZSwgY29uc3QgU3RyaW5nJiBwYXRoLAogICAgICAgICBpbWFnZS0+c2V0
QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OnNyY0F0dHIsIERPTVVS
TDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50LCBGaWxlOjpjcmVhdGUocGF0aCkpKTsKICAgICAg
ICAgaW1hZ2UtPnNldEF0dGFjaG1lbnRFbGVtZW50KFdURk1vdmUoYXR0YWNobWVudCkpOwogICAg
ICAgICBpZiAocHJlZmVycmVkU2l6ZS53aWR0aCkKLSAgICAgICAgICAgIGltYWdlLT5zZXRBdHRy
aWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6d2lkdGhBdHRyLCBBdG9taWNT
dHJpbmc6Om51bWJlcigqcHJlZmVycmVkU2l6ZS53aWR0aCkpOworICAgICAgICAgICAgaW1hZ2Ut
PnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjp3aWR0aEF0dHIs
IEF0b21TdHJpbmc6Om51bWJlcigqcHJlZmVycmVkU2l6ZS53aWR0aCkpOwogICAgICAgICBpZiAo
cHJlZmVycmVkU2l6ZS5oZWlnaHQpCi0gICAgICAgICAgICBpbWFnZS0+c2V0QXR0cmlidXRlV2l0
aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OmhlaWdodEF0dHIsIEF0b21pY1N0cmluZzo6
bnVtYmVyKCpwcmVmZXJyZWRTaXplLmhlaWdodCkpOworICAgICAgICAgICAgaW1hZ2UtPnNldEF0
dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpoZWlnaHRBdHRyLCBBdG9t
U3RyaW5nOjpudW1iZXIoKnByZWZlcnJlZFNpemUuaGVpZ2h0KSk7CiAgICAgICAgIHJldHVybiBp
bWFnZTsKICAgICB9CiAKQEAgLTc3Niw5ICs3NzYsOSBAQCBzdGF0aWMgUmVmPEhUTUxFbGVtZW50
PiBhdHRhY2htZW50Rm9yRGF0YShGcmFtZSYgZnJhbWUsIFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBj
bwogICAgICAgICBpbWFnZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1M
TmFtZXM6OnNyY0F0dHIsIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50LCBGaWxlOjpj
cmVhdGUoQmxvYjo6Y3JlYXRlKGJ1ZmZlciwgV1RGTW92ZShhdHRhY2htZW50VHlwZSkpLCBXVEZN
b3ZlKGZpbGVOYW1lKSkpKTsKICAgICAgICAgaW1hZ2UtPnNldEF0dGFjaG1lbnRFbGVtZW50KFdU
Rk1vdmUoYXR0YWNobWVudCkpOwogICAgICAgICBpZiAocHJlZmVycmVkU2l6ZS53aWR0aCkKLSAg
ICAgICAgICAgIGltYWdlLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxO
YW1lczo6d2lkdGhBdHRyLCBBdG9taWNTdHJpbmc6Om51bWJlcigqcHJlZmVycmVkU2l6ZS53aWR0
aCkpOworICAgICAgICAgICAgaW1hZ2UtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRp
b24oSFRNTE5hbWVzOjp3aWR0aEF0dHIsIEF0b21TdHJpbmc6Om51bWJlcigqcHJlZmVycmVkU2l6
ZS53aWR0aCkpOwogICAgICAgICBpZiAocHJlZmVycmVkU2l6ZS5oZWlnaHQpCi0gICAgICAgICAg
ICBpbWFnZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6Omhl
aWdodEF0dHIsIEF0b21pY1N0cmluZzo6bnVtYmVyKCpwcmVmZXJyZWRTaXplLmhlaWdodCkpOwor
ICAgICAgICAgICAgaW1hZ2UtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRN
TE5hbWVzOjpoZWlnaHRBdHRyLCBBdG9tU3RyaW5nOjpudW1iZXIoKnByZWZlcnJlZFNpemUuaGVp
Z2h0KSk7CiAgICAgICAgIHJldHVybiBpbWFnZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL0VkaXRvckd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2d0ay9FZGl0b3JHdGsuY3BwCmluZGV4IDhjNGVhMjkwZmM1YjhjM2Q0YzNkMDljZTMwNTQx
MmQ4MjZhNWRjYTcuLjcwNmU4MjY3M2YwODEzMzM3MzVlNTg3MTI3OGM4ZDQ1MGQwYjY5YmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL0VkaXRvckd0ay5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvRWRpdG9yR3RrLmNwcApAQCAtMTAzLDcgKzEwMyw3
IEBAIHZvaWQgRWRpdG9yOjpwYXN0ZVdpdGhQYXN0ZWJvYXJkKFBhc3RlYm9hcmQqIHBhc3RlYm9h
cmQsIE9wdGlvblNldDxQYXN0ZU9wdGlvbj4KICAgICAgICAgcGFzdGVBc0ZyYWdtZW50KGZyYWdt
ZW50LnJlbGVhc2VOb25OdWxsKCksIGNhblNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkKCpwYXN0
ZWJvYXJkKSwgY2hvc2VQbGFpblRleHQsIG9wdGlvbnMuY29udGFpbnMoUGFzdGVPcHRpb246Okln
bm9yZU1haWxCbG9ja3F1b3RlKSA/IE1haWxCbG9ja3F1b3RlSGFuZGxpbmc6Oklnbm9yZUJsb2Nr
cXVvdGUgOiBNYWlsQmxvY2txdW90ZUhhbmRsaW5nOjpSZXNwZWN0QmxvY2txdW90ZSk7CiB9CiAK
LXN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGVsZW1lbnRVUkwoRWxlbWVudCYgZWxlbWVudCkK
K3N0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBlbGVtZW50VVJMKEVsZW1lbnQmIGVsZW1lbnQpCiB7
CiAgICAgaWYgKGlzPEhUTUxJbWFnZUVsZW1lbnQ+KGVsZW1lbnQpIHx8IGlzPEhUTUxJbnB1dEVs
ZW1lbnQ+KGVsZW1lbnQpKQogICAgICAgICByZXR1cm4gZWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0
U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6c3JjQXR0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1
cC5jcHAKaW5kZXggY2FjMDA5NzMyMTI1Y2M4OTk1OTBlNGI0NGE2NDVlYzRlZmYxNzkwNS4uZDRl
YTM2ZGQwMWZkM2MyZGE1N2I4OTQ4YTY3YjQyNmZkZTNiMDMwMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bWFya3VwLmNwcApAQCAtMTMwLDcgKzEzMCw3IEBAIHN0YXRpYyB2b2lkIGNvbXBsZXRlVVJMcyhE
b2N1bWVudEZyYWdtZW50KiBmcmFnbWVudCwgY29uc3QgU3RyaW5nJiBiYXNlVVJMKQogICAgICAg
ICBjaGFuZ2UuYXBwbHkoKTsKIH0KIAotdm9pZCByZXBsYWNlU3VicmVzb3VyY2VVUkxzKFJlZjxE
b2N1bWVudEZyYWdtZW50PiYmIGZyYWdtZW50LCBIYXNoTWFwPEF0b21pY1N0cmluZywgQXRvbWlj
U3RyaW5nPiYmIHJlcGxhY2VtZW50TWFwKQordm9pZCByZXBsYWNlU3VicmVzb3VyY2VVUkxzKFJl
ZjxEb2N1bWVudEZyYWdtZW50PiYmIGZyYWdtZW50LCBIYXNoTWFwPEF0b21TdHJpbmcsIEF0b21T
dHJpbmc+JiYgcmVwbGFjZW1lbnRNYXApCiB7CiAgICAgVmVjdG9yPEF0dHJpYnV0ZUNoYW5nZT4g
Y2hhbmdlczsKICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBkZXNjZW5kYW50c09mVHlwZTxFbGVt
ZW50PihmcmFnbWVudCkpIHsKQEAgLTEyNDEsOSArMTI0MSw5IEBAIFJlZjxEb2N1bWVudEZyYWdt
ZW50PiBjcmVhdGVGcmFnbWVudEZvckltYWdlQW5kVVJMKERvY3VtZW50JiBkb2N1bWVudCwgY29u
c3QgU3RyCiAgICAgYXV0byBpbWFnZUVsZW1lbnQgPSBIVE1MSW1hZ2VFbGVtZW50OjpjcmVhdGUo
ZG9jdW1lbnQpOwogICAgIGltYWdlRWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9u
aXphdGlvbihIVE1MTmFtZXM6OnNyY0F0dHIsIHVybCk7CiAgICAgaWYgKHByZWZlcnJlZFNpemUu
d2lkdGgpCi0gICAgICAgIGltYWdlRWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9u
aXphdGlvbihIVE1MTmFtZXM6OndpZHRoQXR0ciwgQXRvbWljU3RyaW5nOjpudW1iZXIoKnByZWZl
cnJlZFNpemUud2lkdGgpKTsKKyAgICAgICAgaW1hZ2VFbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRo
b3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6d2lkdGhBdHRyLCBBdG9tU3RyaW5nOjpudW1i
ZXIoKnByZWZlcnJlZFNpemUud2lkdGgpKTsKICAgICBpZiAocHJlZmVycmVkU2l6ZS5oZWlnaHQp
Ci0gICAgICAgIGltYWdlRWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlv
bihIVE1MTmFtZXM6OmhlaWdodEF0dHIsIEF0b21pY1N0cmluZzo6bnVtYmVyKCpwcmVmZXJyZWRT
aXplLmhlaWdodCkpOworICAgICAgICBpbWFnZUVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpoZWlnaHRBdHRyLCBBdG9tU3RyaW5nOjpudW1iZXIo
KnByZWZlcnJlZFNpemUuaGVpZ2h0KSk7CiAgICAgYXV0byBmcmFnbWVudCA9IGRvY3VtZW50LmNy
ZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKICAgICBmcmFnbWVudC0+YXBwZW5kQ2hpbGQoaW1hZ2VF
bGVtZW50KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuaCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmgKaW5kZXggYTVlYjgyNDRmZTQ5ZDQxNGM0
Mzg1ZGY1MjcwM2U4NTc4MjdmZjQ1Zi4uMTAwZmJmMzViNGNmMjE0MWQ4NDQ0Yzc0OTM5ZWFkZGU5
NmU1YjU4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oCkBAIC00OSw3ICs0OSw3IEBAIGNsYXNz
IFF1YWxpZmllZE5hbWU7CiBjbGFzcyBSYW5nZTsKIGNsYXNzIFZpc2libGVTZWxlY3Rpb247CiAK
LXZvaWQgcmVwbGFjZVN1YnJlc291cmNlVVJMcyhSZWY8RG9jdW1lbnRGcmFnbWVudD4mJiwgSGFz
aE1hcDxBdG9taWNTdHJpbmcsIEF0b21pY1N0cmluZz4mJik7Cit2b2lkIHJlcGxhY2VTdWJyZXNv
dXJjZVVSTHMoUmVmPERvY3VtZW50RnJhZ21lbnQ+JiYsIEhhc2hNYXA8QXRvbVN0cmluZywgQXRv
bVN0cmluZz4mJik7CiB2b2lkIHJlbW92ZVN1YnJlc291cmNlVVJMQXR0cmlidXRlcyhSZWY8RG9j
dW1lbnRGcmFnbWVudD4mJiwgV1RGOjpGdW5jdGlvbjxib29sKGNvbnN0IFVSTCYpPiBzaG91bGRS
ZW1vdmVVUkwpOwogCiBlbnVtIGNsYXNzIE1TT0xpc3RRdWlya3MgeyBDaGVja0lmTmVlZGVkLCBE
aXNhYmxlZCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5jcHAKaW5kZXggODg4NTI0
NzVlOTk4YTNmMTBkMTNlOTNmZmJhMTc1MjU2ODY0YTYwYi4uOWFkM2RhOWVmZmYwZjNhNzA3YTA2
MDFmNzg2MDFkNWQ4NjgyNThmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9G
aWxlUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuY3Bw
CkBAIC0yMjIsNyArMjIyLDcgQEAgdm9pZCBGaWxlUmVhZGVyOjpkaWRGYWlsKGludCBlcnJvckNv
ZGUpCiAgICAgbV9sb2FkaW5nQWN0aXZpdHkgPSBudWxscHRyOwogfQogCi12b2lkIEZpbGVSZWFk
ZXI6OmZpcmVFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUpCit2b2lkIEZpbGVSZWFkZXI6
OmZpcmVFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlKQogewogICAgIGRpc3BhdGNoRXZlbnQo
UHJvZ3Jlc3NFdmVudDo6Y3JlYXRlKHR5cGUsIHRydWUsIG1fbG9hZGVyID8gbV9sb2FkZXItPmJ5
dGVzTG9hZGVkKCkgOiAwLCBtX2xvYWRlciA/IG1fbG9hZGVyLT50b3RhbEJ5dGVzKCkgOiAwKSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5oCmluZGV4IDkwZjFlYWQwMDYyNzYyMTAz
YzBkNmRmNDIyZTY1NDE0ZDg4MjU1NTYuLmVmZmRiMjkwZjNmMDQzZWU3ZjY4ODhiZTg0ZmM2MjEy
OTg4YjM2N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5oCkBAIC05Myw3ICs5Myw3
IEBAIHByaXZhdGU6CiAKICAgICBFeGNlcHRpb25Pcjx2b2lkPiByZWFkSW50ZXJuYWwoQmxvYiYs
IEZpbGVSZWFkZXJMb2FkZXI6OlJlYWRUeXBlKTsKICAgICB2b2lkIGZpcmVFcnJvckV2ZW50KGlu
dCBodHRwU3RhdHVzQ29kZSk7Ci0gICAgdm9pZCBmaXJlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5n
JiB0eXBlKTsKKyAgICB2b2lkIGZpcmVFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlKTsKIAog
ICAgIFJlYWR5U3RhdGUgbV9zdGF0ZSB7IEVNUFRZIH07CiAgICAgYm9vbCBtX2Fib3J0aW5nIHsg
ZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQXV0b2NhcGl0YWxpemUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9BdXRvY2FwaXRhbGl6ZS5jcHAKaW5kZXggMmY4N2Ez
NTIyMDhjNDhjZmFkZWFjM2IxYWI3NzU0ZWQ5MGQzYjgzMi4uMjE4ZjNkYjJmNjExMWQ0OTZmZWZh
MWRkNzg5OGM4NmNkZDg1MTFlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9BdXRv
Y2FwaXRhbGl6ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9BdXRvY2FwaXRhbGl6ZS5j
cHAKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1BdXRvY2FwaXRh
bGl6ZVR5cGUgYXV0b2NhcGl0YWxpemVUeXBlRm9yQXR0cmlidXRlVmFsdWUoY29uc3QgQXRvbWlj
U3RyaW5nJiBhdHRyaWJ1dGVWYWx1ZSkKK0F1dG9jYXBpdGFsaXplVHlwZSBhdXRvY2FwaXRhbGl6
ZVR5cGVGb3JBdHRyaWJ1dGVWYWx1ZShjb25zdCBBdG9tU3RyaW5nJiBhdHRyaWJ1dGVWYWx1ZSkK
IHsKICAgICAvLyBPbWl0dGVkIC8gbWlzc2luZyB2YWx1ZXMgYXJlIHRoZSBEZWZhdWx0IHN0YXRl
LgogICAgIGlmIChhdHRyaWJ1dGVWYWx1ZS5pc0VtcHR5KCkpCkBAIC00OSwyNSArNDksMjUgQEAg
QXV0b2NhcGl0YWxpemVUeXBlIGF1dG9jYXBpdGFsaXplVHlwZUZvckF0dHJpYnV0ZVZhbHVlKGNv
bnN0IEF0b21pY1N0cmluZyYgYXR0cmkKICAgICByZXR1cm4gQXV0b2NhcGl0YWxpemVUeXBlU2Vu
dGVuY2VzOwogfQogCi1jb25zdCBBdG9taWNTdHJpbmcmIHN0cmluZ0ZvckF1dG9jYXBpdGFsaXpl
VHlwZShBdXRvY2FwaXRhbGl6ZVR5cGUgdHlwZSkKK2NvbnN0IEF0b21TdHJpbmcmIHN0cmluZ0Zv
ckF1dG9jYXBpdGFsaXplVHlwZShBdXRvY2FwaXRhbGl6ZVR5cGUgdHlwZSkKIHsKICAgICBzd2l0
Y2ggKHR5cGUpIHsKICAgICBjYXNlIEF1dG9jYXBpdGFsaXplVHlwZURlZmF1bHQ6CiAgICAgICAg
IHJldHVybiBudWxsQXRvbSgpOwogICAgIGNhc2UgQXV0b2NhcGl0YWxpemVUeXBlTm9uZTogewot
ICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiB2YWx1ZU5v
bmUoIm5vbmUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICAgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHZhbHVlTm9uZSgibm9uZSIs
IEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICAgICAgcmV0dXJuIHZhbHVl
Tm9uZTsKICAgICB9CiAgICAgY2FzZSBBdXRvY2FwaXRhbGl6ZVR5cGVTZW50ZW5jZXM6IHsKLSAg
ICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gdmFsdWVTZW50
ZW5jZXMoInNlbnRlbmNlcyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwor
ICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gdmFsdWVTZW50
ZW5jZXMoInNlbnRlbmNlcyIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAg
ICAgICAgcmV0dXJuIHZhbHVlU2VudGVuY2VzOwogICAgIH0KICAgICBjYXNlIEF1dG9jYXBpdGFs
aXplVHlwZVdvcmRzOiB7Ci0gICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9t
aWNTdHJpbmc+IHZhbHVlV29yZHMoIndvcmRzIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5n
PiB2YWx1ZVdvcmRzKCJ3b3JkcyIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsK
ICAgICAgICAgcmV0dXJuIHZhbHVlV29yZHM7CiAgICAgfQogICAgIGNhc2UgQXV0b2NhcGl0YWxp
emVUeXBlQWxsQ2hhcmFjdGVyczogewotICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29u
c3QgQXRvbWljU3RyaW5nPiB2YWx1ZUFsbENoYXJhY3RlcnMoImNoYXJhY3RlcnMiLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPGNvbnN0IEF0b21TdHJpbmc+IHZhbHVlQWxsQ2hhcmFjdGVycygiY2hhcmFjdGVycyIsIEF0
b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICAgICAgcmV0dXJuIHZhbHVlQWxs
Q2hhcmFjdGVyczsKICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9BdXRvY2FwaXRhbGl6ZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9BdXRvY2FwaXRhbGl6ZS5o
CmluZGV4IDFjMzI1NzllNmJlZjBiOWQzN2M2NDY4Yjg0YTg4ZGQyYTIwYmMxOTAuLjkxNTFiYzFh
MmYwN2I1NTcxYjQyM2M3MjM5ZTg3MjFiZWFjNTNjNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvQXV0b2NhcGl0YWxpemUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0F1dG9j
YXBpdGFsaXplLmgKQEAgLTI2LDExICsyNiwxMSBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
ICJBdXRvY2FwaXRhbGl6ZVR5cGVzLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5n
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLUF1dG9jYXBpdGFsaXplVHlwZSBhdXRvY2FwaXRhbGl6ZVR5cGVGb3JBdHRyaWJ1dGVW
YWx1ZShjb25zdCBBdG9taWNTdHJpbmcmKTsKLWNvbnN0IEF0b21pY1N0cmluZyYgc3RyaW5nRm9y
QXV0b2NhcGl0YWxpemVUeXBlKEF1dG9jYXBpdGFsaXplVHlwZSk7CitBdXRvY2FwaXRhbGl6ZVR5
cGUgYXV0b2NhcGl0YWxpemVUeXBlRm9yQXR0cmlidXRlVmFsdWUoY29uc3QgQXRvbVN0cmluZyYp
OworY29uc3QgQXRvbVN0cmluZyYgc3RyaW5nRm9yQXV0b2NhcGl0YWxpemVUeXBlKEF1dG9jYXBp
dGFsaXplVHlwZSk7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvQXV0b2ZpbGwuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9BdXRvZmls
bC5jcHAKaW5kZXggMmYxZGU5YmNlY2VmNTIwY2ExMWU4MGQzNjM4ZjcwMDFjN2I4NjNhMy4uNTBk
YTgxMjhlYmRkMzc1YTM2N2ZhNWYxZTdmOWU1OTIxNGEwMzY0YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9BdXRvZmlsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9BdXRv
ZmlsbC5jcHAKQEAgLTMxLDggKzMxLDggQEAKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21p
Y1N0cmluZ0hhc2guaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvQXRvbVN0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC00OCw3ICs0OCw3IEBAIHN0cnVjdCBBdXRvZmlsbEluZm8gewogICAgIEF1dG9maWxsQ2F0ZWdv
cnkgY2F0ZWdvcnk7CiB9OwogCi1zdGF0aWMgY29uc3QgSGFzaE1hcDxBdG9taWNTdHJpbmcsIEF1
dG9maWxsSW5mbz4mIGZpZWxkTmFtZU1hcCgpCitzdGF0aWMgY29uc3QgSGFzaE1hcDxBdG9tU3Ry
aW5nLCBBdXRvZmlsbEluZm8+JiBmaWVsZE5hbWVNYXAoKQogewogICAgIHN0YXRpYyBjb25zdCBh
dXRvIG1hcCA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CiAgICAgICAgIHN0cnVjdCBNYXBFbnRy
eSB7CkBAIC0xMTMsNyArMTEzLDcgQEAgc3RhdGljIGNvbnN0IEhhc2hNYXA8QXRvbWljU3RyaW5n
LCBBdXRvZmlsbEluZm8+JiBmaWVsZE5hbWVNYXAoKQogICAgICAgICAgICAgeyAiZW1haWwiLCB7
IEF1dG9maWxsRmllbGROYW1lOjpFbWFpbCwgQXV0b2ZpbGxDYXRlZ29yeTo6Q29udGFjdCB9IH0s
CiAgICAgICAgICAgICB7ICJpbXBwIiwgeyBBdXRvZmlsbEZpZWxkTmFtZTo6SW1wcCwgQXV0b2Zp
bGxDYXRlZ29yeTo6Q29udGFjdCB9IH0sCiAgICAgICAgIH07Ci0gICAgICAgIEhhc2hNYXA8QXRv
bWljU3RyaW5nLCBBdXRvZmlsbEluZm8+IG1hcDsKKyAgICAgICAgSGFzaE1hcDxBdG9tU3RyaW5n
LCBBdXRvZmlsbEluZm8+IG1hcDsKICAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IGVudHJpZXMp
CiAgICAgICAgICAgICBtYXAuYWRkKGVudHJ5Lm5hbWUsIGVudHJ5LnZhbHVlKTsKICAgICAgICAg
cmV0dXJuIG1hcDsKQEAgLTEyMSw3ICsxMjEsNyBAQCBzdGF0aWMgY29uc3QgSGFzaE1hcDxBdG9t
aWNTdHJpbmcsIEF1dG9maWxsSW5mbz4mIGZpZWxkTmFtZU1hcCgpCiAgICAgcmV0dXJuIG1hcDsK
IH0KIAotQXV0b2ZpbGxGaWVsZE5hbWUgdG9BdXRvZmlsbEZpZWxkTmFtZShjb25zdCBBdG9taWNT
dHJpbmcmIHZhbHVlKQorQXV0b2ZpbGxGaWVsZE5hbWUgdG9BdXRvZmlsbEZpZWxkTmFtZShjb25z
dCBBdG9tU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBhdXRvIG1hcCA9IGZpZWxkTmFtZU1hcCgpOwog
ICAgIGF1dG8gaXQgPSBtYXAuZmluZCh2YWx1ZSk7CkBAIC0xMzAsMTMgKzEzMCwxMyBAQCBBdXRv
ZmlsbEZpZWxkTmFtZSB0b0F1dG9maWxsRmllbGROYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgdmFs
dWUpCiAgICAgcmV0dXJuIGl0LT52YWx1ZS5maWVsZE5hbWU7CiB9CiAKLXN0YXRpYyBpbmxpbmUg
Ym9vbCBpc0NvbnRhY3RUb2tlbihjb25zdCBBdG9taWNTdHJpbmcmIHRva2VuKQorc3RhdGljIGlu
bGluZSBib29sIGlzQ29udGFjdFRva2VuKGNvbnN0IEF0b21TdHJpbmcmIHRva2VuKQogewotICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGhvbWUoImhvbWUiLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
QXRvbWljU3RyaW5nPiB3b3JrKCJ3b3JrIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCk7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gbW9iaWxlKCJt
b2JpbGUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBmYXgoImZheCIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJp
bmc+IHBhZ2VyKCJwYWdlciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9tU3RyaW5nPiBob21lKCJob21lIiwgQXRvbVN0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxB
dG9tU3RyaW5nPiB3b3JrKCJ3b3JrIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9tU3RyaW5nPiBtb2JpbGUoIm1vYmlsZSIs
IEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8QXRvbVN0cmluZz4gZmF4KCJmYXgiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21TdHJpbmc+IHBhZ2VyKCJwYWdl
ciIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKIAogICAgIHJldHVybiB0b2tl
biA9PSBob21lIHx8IHRva2VuID09IHdvcmsgfHwgdG9rZW4gPT0gbW9iaWxlIHx8IHRva2VuID09
IGZheCB8fCB0b2tlbiA9PSBwYWdlcjsKIH0KQEAgLTE2MSw4ICsxNjEsOCBAQCBzdGF0aWMgdW5z
aWduZWQgbWF4VG9rZW5zRm9yQXV0b2ZpbGxGaWVsZENhdGVnb3J5KEF1dG9maWxsQ2F0ZWdvcnkg
Y2F0ZWdvcnkpCiAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9mb3Jt
cy5odG1sI3Byb2Nlc3NpbmctbW9kZWwtMwogQXV0b2ZpbGxEYXRhIEF1dG9maWxsRGF0YTo6Y3Jl
YXRlRnJvbUhUTUxGb3JtQ29udHJvbEVsZW1lbnQoY29uc3QgSFRNTEZvcm1Db250cm9sRWxlbWVu
dCYgZWxlbWVudCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBv
bigib24iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBvZmYoIm9mZiIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9tU3RyaW5n
PiBvbigib24iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPEF0b21TdHJpbmc+IG9mZigib2ZmIiwgQXRvbVN0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOwogCiAgICAgLy8gTGFiZWw6IERlZmF1bHQKICAgICAvLyAyNi4gTGV0
IHRoZSBlbGVtZW50J3MgSURMLWV4cG9zZWQgYXV0b2ZpbGwgdmFsdWUgYmUgdGhlIGVtcHR5IHN0
cmluZywgYW5kIGl0cyBhdXRvZmlsbCBoaW50IHNldCBhbmQgYXV0b2ZpbGwgc2NvcGUgYmUgZW1w
dHkuCkBAIC0xODAsNyArMTgwLDcgQEAgQXV0b2ZpbGxEYXRhIEF1dG9maWxsRGF0YTo6Y3JlYXRl
RnJvbUhUTUxGb3JtQ29udHJvbEVsZW1lbnQoY29uc3QgSFRNTEZvcm1Db250cm8KICAgICB9Owog
CiAKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVZhbHVlID0gZWxlbWVudC5hdHRy
aWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6YXV0b2NvbXBsZXRlQXR0cik7
CisgICAgY29uc3QgQXRvbVN0cmluZyYgYXR0cmlidXRlVmFsdWUgPSBlbGVtZW50LmF0dHJpYnV0
ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjphdXRvY29tcGxldGVBdHRyKTsKIAog
ICAgIC8vIDEuIElmIHRoZSBlbGVtZW50IGhhcyBubyBhdXRvY29tcGxldGUgYXR0cmlidXRlLCB0
aGVuIGp1bXAgdG8gdGhlIHN0ZXAgbGFiZWxlZCBkZWZhdWx0LgogICAgIGlmIChhdHRyaWJ1dGVW
YWx1ZS5pc051bGwoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQXV0b2ZpbGwu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQXV0b2ZpbGwuaAppbmRleCAzYTUzOWJhYzc5ZGM2NmY3
OTgyYWJhZjEzMTVmYzE0OGUwMTg0ZTE1Li5hNGFiYWY5MzEyMzdjZjZiZGIxOTAzODMzYmJhMWU1
OGJkMzM4NTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0F1dG9maWxsLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9BdXRvZmlsbC5oCkBAIC0yNSw3ICsyNSw3IEBACiAKICNw
cmFnbWEgb25jZQogCi0jaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvQXRvbVN0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC05Miw3ICs5Miw3IEBAIGVudW0gY2xhc3MgQXV0
b2ZpbGxGaWVsZE5hbWUgewogICAgIEltcHAKIH07CiAKLVdFQkNPUkVfRVhQT1JUIEF1dG9maWxs
RmllbGROYW1lIHRvQXV0b2ZpbGxGaWVsZE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJik7CitXRUJD
T1JFX0VYUE9SVCBBdXRvZmlsbEZpZWxkTmFtZSB0b0F1dG9maWxsRmllbGROYW1lKGNvbnN0IEF0
b21TdHJpbmcmKTsKIAogY2xhc3MgSFRNTEZvcm1Db250cm9sRWxlbWVudDsKIApAQCAtMTAwLDcg
KzEwMCw3IEBAIGNsYXNzIEF1dG9maWxsRGF0YSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEF1dG9m
aWxsRGF0YSBjcmVhdGVGcm9tSFRNTEZvcm1Db250cm9sRWxlbWVudChjb25zdCBIVE1MRm9ybUNv
bnRyb2xFbGVtZW50Jik7CiAKLSAgICBBdXRvZmlsbERhdGEoY29uc3QgQXRvbWljU3RyaW5nJiBm
aWVsZE5hbWUsIGNvbnN0IFN0cmluZyYgaWRsRXhwb3NlZFZhbHVlKQorICAgIEF1dG9maWxsRGF0
YShjb25zdCBBdG9tU3RyaW5nJiBmaWVsZE5hbWUsIGNvbnN0IFN0cmluZyYgaWRsRXhwb3NlZFZh
bHVlKQogICAgICAgICA6IGZpZWxkTmFtZShmaWVsZE5hbWUpCiAgICAgICAgICwgaWRsRXhwb3Nl
ZFZhbHVlKGlkbEV4cG9zZWRWYWx1ZSkKICAgICB7CkBAIC0xMDgsNyArMTA4LDcgQEAgcHVibGlj
OgogCiAgICAgLy8gV2UgY291bGQgYWRkIHN1cHBvcnQgZm9yIGhpbnQgdG9rZW5zIGFuZCBzY29w
ZSB0b2tlbnMgaWYgdGhvc2UgZXZlciBiZWNhbWUgdXNlZnVsIHRvIGFueW9uZS4KIAotICAgIEF0
b21pY1N0cmluZyBmaWVsZE5hbWU7CisgICAgQXRvbVN0cmluZyBmaWVsZE5hbWU7CiAgICAgU3Ry
aW5nIGlkbEV4cG9zZWRWYWx1ZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvQmFzZUNoZWNrYWJsZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VD
aGVja2FibGVJbnB1dFR5cGUuY3BwCmluZGV4IDRmZGFlNDQ0ZDhjNWRiNWZlNWZkNzNhODE4ZjM3
ODBiNDhkYzVjMjQuLmViOTc0NGJlMjVmZTBhOWQ3YjE3MGQyMGVkOWIyODY1ZjgxMWQ1MWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZUNoZWNrYWJsZUlucHV0VHlwZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlQ2hlY2thYmxlSW5wdXRUeXBlLmNwcApAQCAt
MTAxLDcgKzEwMSw3IEBAIHZvaWQgQmFzZUNoZWNrYWJsZUlucHV0VHlwZTo6YWNjZXNzS2V5QWN0
aW9uKGJvb2wgc2VuZE1vdXNlRXZlbnRzKQogCiBTdHJpbmcgQmFzZUNoZWNrYWJsZUlucHV0VHlw
ZTo6ZmFsbGJhY2tWYWx1ZSgpIGNvbnN0CiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNv
bnN0IEF0b21pY1N0cmluZz4gb24oIm9uIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IG9uKCJv
biIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gb24uZ2V0
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZUNob29zZXJPbmx5
RGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlQ2hvb3Nl
ck9ubHlEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAKaW5kZXggNzgyOGVhMWE5MzZiODNjZTQwZDMy
ZjVlZmFlMjI2OTU3MGFlYmI3MC4uYWI0MTk3NmQzMmY1YmRmYmJmNWI3MGYwOGI5Y2I2OWJkMDQy
NzQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlQ2hvb3Nlck9ubHlEYXRl
QW5kVGltZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlQ2hvb3Nl
ck9ubHlEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgdm9pZCBCYXNl
Q2hvb3Nlck9ubHlEYXRlQW5kVGltZUlucHV0VHlwZTo6aGFuZGxlRE9NQWN0aXZhdGVFdmVudChF
dmVudCYpCiAKIHZvaWQgQmFzZUNob29zZXJPbmx5RGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmNyZWF0
ZVNoYWRvd1N1YnRyZWUoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJp
bmc+IHZhbHVlQ29udGFpbmVyUHNldWRvKCItd2Via2l0LWRhdGUtYW5kLXRpbWUtdmFsdWUiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8QXRvbVN0cmluZz4gdmFsdWVDb250YWluZXJQc2V1ZG8oIi13ZWJraXQtZGF0ZS1hbmQt
dGltZS12YWx1ZSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKIAogICAgIEFT
U0VSVChlbGVtZW50KCkpOwogICAgIGF1dG8gdmFsdWVDb250YWluZXIgPSBIVE1MRGl2RWxlbWVu
dDo6Y3JlYXRlKGVsZW1lbnQoKS0+ZG9jdW1lbnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0Jhc2VUZXh0SW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFz
ZVRleHRJbnB1dFR5cGUuY3BwCmluZGV4IGIzNjg1YjkxYTk5NzNiODMxMWIxY2E5Y2M4MDAzNWY1
ZmNmZTUxZTguLjAxMTg5YWJlM2JmMWRhMzc1MWZiZDMyM2ZiNWFlNzhlYTMzOGU3NzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZVRleHRJbnB1dFR5cGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvQmFzZVRleHRJbnB1dFR5cGUuY3BwCkBAIC00Myw3ICs0Myw3IEBA
IGJvb2wgQmFzZVRleHRJbnB1dFR5cGU6OnBhdHRlcm5NaXNtYXRjaChjb25zdCBTdHJpbmcmIHZh
bHVlKSBjb25zdAogICAgIEFTU0VSVChlbGVtZW50KCkpOwogICAgIC8vIEZJWE1FOiBXZSBzaG91
bGQgZXhlY3V0ZSBSZWdFeHAgcGFyc2VyIGZpcnN0IHRvIGNoZWNrIHZhbGlkaXR5IGluc3RlYWQg
b2YgY3JlYXRpbmcgYW4gYWN0dWFsIFJlZ3VsYXJFeHByZXNzaW9uLgogICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODMzNjEKLSAgICBjb25zdCBBdG9taWNT
dHJpbmcmIHJhd1BhdHRlcm4gPSBlbGVtZW50KCktPmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6
YXRpb24ocGF0dGVybkF0dHIpOworICAgIGNvbnN0IEF0b21TdHJpbmcmIHJhd1BhdHRlcm4gPSBl
bGVtZW50KCktPmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24ocGF0dGVybkF0dHIpOwog
ICAgIGlmIChyYXdQYXR0ZXJuLmlzTnVsbCgpIHx8IHZhbHVlLmlzRW1wdHkoKSB8fCAhSlNDOjpZ
YXJyOjpSZWd1bGFyRXhwcmVzc2lvbihyYXdQYXR0ZXJuLCBKU0M6OllhcnI6OlRleHRDYXNlU2Vu
c2l0aXZlLCBKU0M6OllhcnI6Ok11bHRpbGluZURpc2FibGVkLCBKU0M6OllhcnI6OlVuaWNvZGVB
d2FyZU1vZGUpLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIFN0cmluZyBw
YXR0ZXJuID0gIl4oPzoiICsgcmF3UGF0dGVybiArICIpJCI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0J1dHRvbklucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0J1
dHRvbklucHV0VHlwZS5jcHAKaW5kZXggY2I0NTJlNjQzZjUxZTViMzY2OTdjZmUxMTEyYzIxY2Iw
M2ZiNjYzYy4uZTk1MTg2NTJiMzE0OWQ1NmNhZTUyMDVjNzJmNDViNWZjZDhkYzcyYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9CdXR0b25JbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvQnV0dG9uSW5wdXRUeXBlLmNwcApAQCAtMzUsNyArMzUsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNvbnN0IEF0b21pY1N0cmluZyYgQnV0dG9uSW5wdXRUeXBl
Ojpmb3JtQ29udHJvbFR5cGUoKSBjb25zdAorY29uc3QgQXRvbVN0cmluZyYgQnV0dG9uSW5wdXRU
eXBlOjpmb3JtQ29udHJvbFR5cGUoKSBjb25zdAogewogICAgIHJldHVybiBJbnB1dFR5cGVOYW1l
czo6YnV0dG9uKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0J1dHRvbklu
cHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CdXR0b25JbnB1dFR5cGUuaAppbmRleCBj
YzJmZDYyZmM3OThkNTM5NTU2OWNhNjdhYjNjMGEyMDc2ZmZhZDdkLi44NjFmOTVhNjljODBhODE4
Y2M0MGE5MWIxNThmZDAwMWE3N2QzMDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0J1dHRvbklucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQnV0dG9uSW5wdXRU
eXBlLmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IEJ1dHRvbklucHV0
VHlwZShIVE1MSW5wdXRFbGVtZW50JiBlbGVtZW50KSA6IEJhc2VCdXR0b25JbnB1dFR5cGUoZWxl
bWVudCkgeyB9CiAKIHByaXZhdGU6Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBmb3JtQ29udHJv
bFR5cGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBmb3JtQ29udHJv
bFR5cGUoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIHN1cHBvcnRzVmFsaWRhdGlvbigpIGNv
bnN0IG92ZXJyaWRlOwogICAgIGJvb2wgaXNUZXh0QnV0dG9uKCkgY29uc3Qgb3ZlcnJpZGU7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9DYWNoZWRIVE1MQ29sbGVjdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9DYWNoZWRIVE1MQ29sbGVjdGlvbi5oCmluZGV4IDJjMDUy
YTcxODA3M2NmZGUwOWJhOWM1MzQzOThkYmQ3MWQzMGU0YmMuLjc5ZjQ3N2Q3NGYyMjRlNzFiNDZh
YmE0NzdmNmNkYjBkYTg5ZGY0ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ2Fj
aGVkSFRNTENvbGxlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NhY2hlZEhUTUxD
b2xsZWN0aW9uLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogCiAgICAgdW5zaWduZWQgbGVu
Z3RoKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pbmRleENhY2hlLm5vZGVDb3VudChjb2xsZWN0
aW9uKCkpOyB9CiAgICAgRWxlbWVudCogaXRlbSh1bnNpZ25lZCBvZmZzZXQpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG1faW5kZXhDYWNoZS5ub2RlQXQoY29sbGVjdGlvbigpLCBvZmZzZXQpOyB9
Ci0gICAgRWxlbWVudCogbmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgRWxlbWVudCogbmFtZWRJdGVtKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUp
IGNvbnN0IG92ZXJyaWRlOwogICAgIHNpemVfdCBtZW1vcnlDb3N0KCkgY29uc3QgZmluYWwKICAg
ICB7CiAgICAgICAgIC8vIG1lbW9yeUNvc3QoKSBtYXkgYmUgaW52b2tlZCBjb25jdXJyZW50bHkg
ZnJvbSBhIEdDIHRocmVhZCwgYW5kIHdlIG5lZWQgdG8gYmUgY2FyZWZ1bCBhYm91dCB3aGF0IGRh
dGEgd2UgYWNjZXNzIGhlcmUgYW5kIGhvdy4KQEAgLTEyOSw3ICsxMjksNyBAQCBzdGF0aWMgaW5s
aW5lIGJvb2wgbmFtZVNob3VsZEJlVmlzaWJsZUluRG9jdW1lbnRBbGwoRWxlbWVudCYgZWxlbWVu
dCkKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEhUTUxDb2xsZWN0aW9uQ2xhc3MsIENvbGxlY3Rp
b25UcmF2ZXJzYWxUeXBlIHRyYXZlcnNhbFR5cGU+Ci1FbGVtZW50KiBDYWNoZWRIVE1MQ29sbGVj
dGlvbjxIVE1MQ29sbGVjdGlvbkNsYXNzLCB0cmF2ZXJzYWxUeXBlPjo6bmFtZWRJdGVtKGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3QKK0VsZW1lbnQqIENhY2hlZEhUTUxDb2xsZWN0aW9u
PEhUTUxDb2xsZWN0aW9uQ2xhc3MsIHRyYXZlcnNhbFR5cGU+OjpuYW1lZEl0ZW0oY29uc3QgQXRv
bVN0cmluZyYgbmFtZSkgY29uc3QKIHsKICAgICAvLyBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29t
L3dvcmtzaG9wL2F1dGhvci9kaHRtbC9yZWZlcmVuY2UvbWV0aG9kcy9uYW1lZGl0ZW0uYXNwCiAg
ICAgLy8gVGhpcyBtZXRob2QgZmlyc3Qgc2VhcmNoZXMgZm9yIGFuIG9iamVjdCB3aXRoIGEgbWF0
Y2hpbmcgaWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ2hlY2tib3hJbnB1dFR5
cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DaGVja2JveElucHV0VHlwZS5jcHAKaW5kZXgg
NDEwM2E3YTFmOTcxM2U2MWY2YTVhMzhlZGRmMzQ5ZTBjZWFkNTAxNC4uNDEzMjAxMWRmYzBhNTE4
ZDAxMDQ0OWVmOGNkNjIzZjA0ZWQ3YjRmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9DaGVja2JveElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DaGVja2Jv
eElucHV0VHlwZS5jcHAKQEAgLTM5LDcgKzM5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jb25zdCBBdG9taWNTdHJpbmcmIENoZWNrYm94SW5wdXRUeXBlOjpmb3JtQ29udHJvbFR5cGUo
KSBjb25zdAorY29uc3QgQXRvbVN0cmluZyYgQ2hlY2tib3hJbnB1dFR5cGU6OmZvcm1Db250cm9s
VHlwZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIElucHV0VHlwZU5hbWVzOjpjaGVja2JveCgpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9DaGVja2JveElucHV0VHlwZS5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9DaGVja2JveElucHV0VHlwZS5oCmluZGV4IDY5YTkwNzA5OWVh
ZmZjMjZlYzdjYzdiNDQzNjNkNDYzM2E5ODM4ZjcuLmViMTFiMWIxNzZlYmI1YzUzMDM1NzQ0YzU1
ZGVjNDAxMzA3M2YxODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ2hlY2tib3hJ
bnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NoZWNrYm94SW5wdXRUeXBlLmgK
QEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IENoZWNrYm94SW5wdXRUeXBl
KEhUTUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQpIDogQmFzZUNoZWNrYWJsZUlucHV0VHlwZShlbGVt
ZW50KSB7IH0KIAogcHJpdmF0ZToKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGZvcm1Db250cm9s
VHlwZSgpIGNvbnN0IGZpbmFsOworICAgIGNvbnN0IEF0b21TdHJpbmcmIGZvcm1Db250cm9sVHlw
ZSgpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgdmFsdWVNaXNzaW5nKGNvbnN0IFN0cmluZyYpIGNv
bnN0IGZpbmFsOwogICAgIFN0cmluZyB2YWx1ZU1pc3NpbmdUZXh0KCkgY29uc3QgZmluYWw7CiAg
ICAgdm9pZCBoYW5kbGVLZXl1cEV2ZW50KEtleWJvYXJkRXZlbnQmKSBmaW5hbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAKaW5kZXggOWMwN2JiZDQxNjg0MThkNzY5NWU4ZDVj
OTI5YTlhMzAzMmE1ZDgxMi4uYjk0OWE2OTFmNjBmZGM5OWMyZDdmNjdmZGY4Yjc3NTM4NThlMzky
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAKQEAgLTEwOSw3ICsxMDks
NyBAQCBib29sIENvbG9ySW5wdXRUeXBlOjppc1ByZXNlbnRpbmdBdHRhY2hlZFZpZXcoKSBjb25z
dAogICAgIHJldHVybiAhIW1fY2hvb3NlcjsKIH0KIAotY29uc3QgQXRvbWljU3RyaW5nJiBDb2xv
cklucHV0VHlwZTo6Zm9ybUNvbnRyb2xUeXBlKCkgY29uc3QKK2NvbnN0IEF0b21TdHJpbmcmIENv
bG9ySW5wdXRUeXBlOjpmb3JtQ29udHJvbFR5cGUoKSBjb25zdAogewogICAgIHJldHVybiBJbnB1
dFR5cGVOYW1lczo6Y29sb3IoKTsKIH0KQEAgLTE0NSw5ICsxNDUsOSBAQCB2b2lkIENvbG9ySW5w
dXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlKCkKIAogICAgIERvY3VtZW50JiBkb2N1bWVudCA9
IGVsZW1lbnQoKS0+ZG9jdW1lbnQoKTsKICAgICBhdXRvIHdyYXBwZXJFbGVtZW50ID0gSFRNTERp
dkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAgd3JhcHBlckVsZW1lbnQtPnNldFBzZXVk
byhBdG9taWNTdHJpbmcoIi13ZWJraXQtY29sb3Itc3dhdGNoLXdyYXBwZXIiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgd3JhcHBlckVsZW1lbnQtPnNldFBzZXVk
byhBdG9tU3RyaW5nKCItd2Via2l0LWNvbG9yLXN3YXRjaC13cmFwcGVyIiwgQXRvbVN0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKICAgICBhdXRvIGNvbG9yU3dhdGNoID0gSFRNTERpdkVs
ZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAgY29sb3JTd2F0Y2gtPnNldFBzZXVkbyhBdG9t
aWNTdHJpbmcoIi13ZWJraXQtY29sb3Itc3dhdGNoIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCkpOworICAgIGNvbG9yU3dhdGNoLT5zZXRQc2V1ZG8oQXRvbVN0cmluZygiLXdl
YmtpdC1jb2xvci1zd2F0Y2giLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwog
ICAgIHdyYXBwZXJFbGVtZW50LT5hcHBlbmRDaGlsZChjb2xvclN3YXRjaCk7CiAgICAgZWxlbWVu
dCgpLT51c2VyQWdlbnRTaGFkb3dSb290KCktPmFwcGVuZENoaWxkKHdyYXBwZXJFbGVtZW50KTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5oCmluZGV4IGQ4OTIzNmNmY2U1NTU4NzJi
NDAwMjJhMmZhYmJhOGE5YzA2NTRhZTUuLjlhM2M3YjcxNzM1MTA1OWU2NGZlNDE1ZTkxODBjNDUy
ZTNhOWIzYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmgKQEAgLTU1LDcgKzU1
LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzS2V5Ym9hcmRGb2N1c2FibGUoS2V5Ym9hcmRFdmVu
dCopIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgaXNDb2xvckNvbnRyb2woKSBjb25zdCBmaW5hbDsK
ICAgICBib29sIGlzUHJlc2VudGluZ0F0dGFjaGVkVmlldygpIGNvbnN0IGZpbmFsOwotICAgIGNv
bnN0IEF0b21pY1N0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3QgZmluYWw7CisgICAgY29u
c3QgQXRvbVN0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBz
dXBwb3J0c1JlcXVpcmVkKCkgY29uc3QgZmluYWw7CiAgICAgU3RyaW5nIGZhbGxiYWNrVmFsdWUo
KSBjb25zdCBmaW5hbDsKICAgICBTdHJpbmcgc2FuaXRpemVWYWx1ZShjb25zdCBTdHJpbmcmKSBj
b25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmNwcAppbmRleCBhZjAwOTEx
ZTA2ZWNjNTdlZDM4YTQ2ODMyMjI5MzUzMmMzNWE2ZGZhLi43YWYyMGEzZjRiYTk2YzI4YTE5MDZl
NTA5MmNiOGI5MWRhNGM2ODRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRv
a2VuTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9ET01Ub2tlbkxpc3QuY3BwCkBA
IC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiU3BhY2VTcGxpdFN0cmluZy5oIgogI2luY2x1ZGUg
PHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1NldEZvclNjb3BlLmg+Ci0jaW5jbHVkZSA8
d3RmL3RleHQvQXRvbWljU3RyaW5nSGFzaC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJp
bmdIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC02OCw3ICs2OCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IERPTVRva2Vu
TGlzdDo6dmFsaWRhdGVUb2tlbnMoY29uc3QgU3RyaW5nKiB0b2tlbnMsIHNpemVfdCBsZW5nCiAg
ICAgcmV0dXJuIHsgfTsKIH0KIAotYm9vbCBET01Ub2tlbkxpc3Q6OmNvbnRhaW5zKGNvbnN0IEF0
b21pY1N0cmluZyYgdG9rZW4pIGNvbnN0Citib29sIERPTVRva2VuTGlzdDo6Y29udGFpbnMoY29u
c3QgQXRvbVN0cmluZyYgdG9rZW4pIGNvbnN0CiB7CiAgICAgcmV0dXJuIHRva2VucygpLmNvbnRh
aW5zKHRva2VuKTsKIH0KQEAgLTc2LDcgKzc2LDcgQEAgYm9vbCBET01Ub2tlbkxpc3Q6OmNvbnRh
aW5zKGNvbnN0IEF0b21pY1N0cmluZyYgdG9rZW4pIGNvbnN0CiBpbmxpbmUgRXhjZXB0aW9uT3I8
dm9pZD4gRE9NVG9rZW5MaXN0OjphZGRJbnRlcm5hbChjb25zdCBTdHJpbmcqIG5ld1Rva2Vucywg
c2l6ZV90IGxlbmd0aCkKIHsKICAgICAvLyBUaGlzIGlzIHVzdWFsbHkgY2FsbGVkIHdpdGggYSBz
aW5nbGUgdG9rZW4uCi0gICAgVmVjdG9yPEF0b21pY1N0cmluZywgMT4gdW5pcXVlTmV3VG9rZW5z
OworICAgIFZlY3RvcjxBdG9tU3RyaW5nLCAxPiB1bmlxdWVOZXdUb2tlbnM7CiAgICAgdW5pcXVl
TmV3VG9rZW5zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGVuZ3RoKTsKIAogICAgIGF1dG8mIHRv
a2VucyA9IHRoaXMtPnRva2VucygpOwpAQCAtMTAyLDcgKzEwMiw3IEBAIEV4Y2VwdGlvbk9yPHZv
aWQ+IERPTVRva2VuTGlzdDo6YWRkKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0b2tlbnMpCiAgICAg
cmV0dXJuIGFkZEludGVybmFsKHRva2Vucy5kYXRhKCksIHRva2Vucy5zaXplKCkpOwogfQogCi1F
eGNlcHRpb25Pcjx2b2lkPiBET01Ub2tlbkxpc3Q6OmFkZChjb25zdCBBdG9taWNTdHJpbmcmIHRv
a2VuKQorRXhjZXB0aW9uT3I8dm9pZD4gRE9NVG9rZW5MaXN0OjphZGQoY29uc3QgQXRvbVN0cmlu
ZyYgdG9rZW4pCiB7CiAgICAgcmV0dXJuIGFkZEludGVybmFsKCZ0b2tlbi5zdHJpbmcoKSwgMSk7
CiB9CkBAIC0xMjcsMTIgKzEyNywxMiBAQCBFeGNlcHRpb25Pcjx2b2lkPiBET01Ub2tlbkxpc3Q6
OnJlbW92ZShjb25zdCBWZWN0b3I8U3RyaW5nPiYgdG9rZW5zKQogICAgIHJldHVybiByZW1vdmVJ
bnRlcm5hbCh0b2tlbnMuZGF0YSgpLCB0b2tlbnMuc2l6ZSgpKTsKIH0KIAotRXhjZXB0aW9uT3I8
dm9pZD4gRE9NVG9rZW5MaXN0OjpyZW1vdmUoY29uc3QgQXRvbWljU3RyaW5nJiB0b2tlbikKK0V4
Y2VwdGlvbk9yPHZvaWQ+IERPTVRva2VuTGlzdDo6cmVtb3ZlKGNvbnN0IEF0b21TdHJpbmcmIHRv
a2VuKQogewogICAgIHJldHVybiByZW1vdmVJbnRlcm5hbCgmdG9rZW4uc3RyaW5nKCksIDEpOwog
fQogCi1FeGNlcHRpb25Pcjxib29sPiBET01Ub2tlbkxpc3Q6OnRvZ2dsZShjb25zdCBBdG9taWNT
dHJpbmcmIHRva2VuLCBPcHRpb25hbDxib29sPiBmb3JjZSkKK0V4Y2VwdGlvbk9yPGJvb2w+IERP
TVRva2VuTGlzdDo6dG9nZ2xlKGNvbnN0IEF0b21TdHJpbmcmIHRva2VuLCBPcHRpb25hbDxib29s
PiBmb3JjZSkKIHsKICAgICBhdXRvIHJlc3VsdCA9IHZhbGlkYXRlVG9rZW4odG9rZW4pOwogICAg
IGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCkBAIC0xNTcsNyArMTU3LDcgQEAgRXhjZXB0aW9u
T3I8Ym9vbD4gRE9NVG9rZW5MaXN0Ojp0b2dnbGUoY29uc3QgQXRvbWljU3RyaW5nJiB0b2tlbiwg
T3B0aW9uYWw8Ym9vbD4KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lk
IHJlcGxhY2VJbk9yZGVyZWRTZXQoVmVjdG9yPEF0b21pY1N0cmluZz4mIHRva2Vucywgc2l6ZV90
IHRva2VuSW5kZXgsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VG9rZW4pCitzdGF0aWMgaW5saW5l
IHZvaWQgcmVwbGFjZUluT3JkZXJlZFNldChWZWN0b3I8QXRvbVN0cmluZz4mIHRva2Vucywgc2l6
ZV90IHRva2VuSW5kZXgsIGNvbnN0IEF0b21TdHJpbmcmIG5ld1Rva2VuKQogewogICAgIEFTU0VS
VCh0b2tlbkluZGV4ICE9IG5vdEZvdW5kKTsKICAgICBBU1NFUlQodG9rZW5JbmRleCA8IHRva2Vu
cy5zaXplKCkpOwpAQCAtMTc5LDcgKzE3OSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCByZXBsYWNl
SW5PcmRlcmVkU2V0KFZlY3RvcjxBdG9taWNTdHJpbmc+JiB0b2tlbnMsIHNpemVfdCB0b2tlCiB9
CiAKIC8vIGh0dHBzOi8vZG9tLnNwZWMud2hhdHdnLm9yZy8jZG9tLWRvbXRva2VubGlzdC1yZXBs
YWNlCi1FeGNlcHRpb25Pcjxib29sPiBET01Ub2tlbkxpc3Q6OnJlcGxhY2UoY29uc3QgQXRvbWlj
U3RyaW5nJiB0b2tlbiwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdUb2tlbikKK0V4Y2VwdGlvbk9y
PGJvb2w+IERPTVRva2VuTGlzdDo6cmVwbGFjZShjb25zdCBBdG9tU3RyaW5nJiB0b2tlbiwgY29u
c3QgQXRvbVN0cmluZyYgbmV3VG9rZW4pCiB7CiAgICAgaWYgKHRva2VuLmlzRW1wdHkoKSB8fCBu
ZXdUb2tlbi5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTeW50YXhFcnJv
ciB9OwpAQCAtMjEwLDcgKzIxMCw3IEBAIEV4Y2VwdGlvbk9yPGJvb2w+IERPTVRva2VuTGlzdDo6
c3VwcG9ydHMoU3RyaW5nVmlldyB0b2tlbikKIH0KIAogLy8gaHR0cHM6Ly9kb20uc3BlYy53aGF0
d2cub3JnLyNkb20tZG9tdG9rZW5saXN0LXZhbHVlCi1jb25zdCBBdG9taWNTdHJpbmcmIERPTVRv
a2VuTGlzdDo6dmFsdWUoKSBjb25zdAorY29uc3QgQXRvbVN0cmluZyYgRE9NVG9rZW5MaXN0Ojp2
YWx1ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fZWxlbWVudC5nZXRBdHRyaWJ1dGUobV9hdHRy
aWJ1dGVOYW1lKTsKIH0KQEAgLTIyNSw3ICsyMjUsNyBAQCB2b2lkIERPTVRva2VuTGlzdDo6dXBk
YXRlVG9rZW5zRnJvbUF0dHJpYnV0ZVZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgLy8g
Q2xlYXIgdG9rZW5zIGJ1dCBub3QgY2FwYWNpdHkuCiAgICAgbV90b2tlbnMuc2hyaW5rKDApOwog
Ci0gICAgSGFzaFNldDxBdG9taWNTdHJpbmc+IGFkZGVkVG9rZW5zOworICAgIEhhc2hTZXQ8QXRv
bVN0cmluZz4gYWRkZWRUb2tlbnM7CiAgICAgLy8gaHR0cHM6Ly9kb20uc3BlYy53aGF0d2cub3Jn
LyNvcmRlcmVkJTIwc2V0cwogICAgIGZvciAodW5zaWduZWQgc3RhcnQgPSAwOyA7ICkgewogICAg
ICAgICB3aGlsZSAoc3RhcnQgPCB2YWx1ZS5sZW5ndGgoKSAmJiBpc0hUTUxTcGFjZSh2YWx1ZVtz
dGFydF0pKQpAQCAtMjM2LDcgKzIzNiw3IEBAIHZvaWQgRE9NVG9rZW5MaXN0Ojp1cGRhdGVUb2tl
bnNGcm9tQXR0cmlidXRlVmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICAgICAgd2hpbGUg
KGVuZCA8IHZhbHVlLmxlbmd0aCgpICYmICFpc0hUTUxTcGFjZSh2YWx1ZVtlbmRdKSkKICAgICAg
ICAgICAgICsrZW5kOwogCi0gICAgICAgIEF0b21pY1N0cmluZyB0b2tlbiA9IHZhbHVlLnN1YnN0
cmluZyhzdGFydCwgZW5kIC0gc3RhcnQpOworICAgICAgICBBdG9tU3RyaW5nIHRva2VuID0gdmFs
dWUuc3Vic3RyaW5nKHN0YXJ0LCBlbmQgLSBzdGFydCk7CiAgICAgICAgIGlmICghYWRkZWRUb2tl
bnMuY29udGFpbnModG9rZW4pKSB7CiAgICAgICAgICAgICBtX3Rva2Vucy5hcHBlbmQodG9rZW4p
OwogICAgICAgICAgICAgYWRkZWRUb2tlbnMuYWRkKHRva2VuKTsKQEAgLTI0OSw3ICsyNDksNyBA
QCB2b2lkIERPTVRva2VuTGlzdDo6dXBkYXRlVG9rZW5zRnJvbUF0dHJpYnV0ZVZhbHVlKGNvbnN0
IFN0cmluZyYgdmFsdWUpCiAgICAgbV90b2tlbnNOZWVkVXBkYXRpbmcgPSBmYWxzZTsKIH0KIAot
dm9pZCBET01Ub2tlbkxpc3Q6OmFzc29jaWF0ZWRBdHRyaWJ1dGVWYWx1ZUNoYW5nZWQoY29uc3Qg
QXRvbWljU3RyaW5nJikKK3ZvaWQgRE9NVG9rZW5MaXN0Ojphc3NvY2lhdGVkQXR0cmlidXRlVmFs
dWVDaGFuZ2VkKGNvbnN0IEF0b21TdHJpbmcmKQogewogICAgIC8vIERvIG5vdCByZXNldCB0aGUg
RE9NVG9rZW5MaXN0IHZhbHVlIGlmIHRoZSBhdHRyaWJ1dGUgdmFsdWUgd2FzIGNoYW5nZWQgYnkg
dXMuCiAgICAgaWYgKG1faW5VcGRhdGVBc3NvY2lhdGVkQXR0cmlidXRlRnJvbVRva2VucykKQEAg
LTI3MywxMyArMjczLDEzIEBAIHZvaWQgRE9NVG9rZW5MaXN0Ojp1cGRhdGVBc3NvY2lhdGVkQXR0
cmlidXRlRnJvbVRva2VucygpCiAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwogICAg
ICAgICBidWlsZGVyLmFwcGVuZCh0b2tlbik7CiAgICAgfQotICAgIEF0b21pY1N0cmluZyBzZXJp
YWxpemVkVmFsdWUgPSBidWlsZGVyLnRvQXRvbWljU3RyaW5nKCk7CisgICAgQXRvbVN0cmluZyBz
ZXJpYWxpemVkVmFsdWUgPSBidWlsZGVyLnRvQXRvbVN0cmluZygpOwogCiAgICAgU2V0Rm9yU2Nv
cGU8Ym9vbD4gaW5BdHRyaWJ1dGVVcGRhdGUobV9pblVwZGF0ZUFzc29jaWF0ZWRBdHRyaWJ1dGVG
cm9tVG9rZW5zLCB0cnVlKTsKICAgICBtX2VsZW1lbnQuc2V0QXR0cmlidXRlKG1fYXR0cmlidXRl
TmFtZSwgc2VyaWFsaXplZFZhbHVlKTsKIH0KIAotVmVjdG9yPEF0b21pY1N0cmluZz4mIERPTVRv
a2VuTGlzdDo6dG9rZW5zKCkKK1ZlY3RvcjxBdG9tU3RyaW5nPiYgRE9NVG9rZW5MaXN0Ojp0b2tl
bnMoKQogewogICAgIGlmIChtX3Rva2Vuc05lZWRVcGRhdGluZykKICAgICAgICAgdXBkYXRlVG9r
ZW5zRnJvbUF0dHJpYnV0ZVZhbHVlKG1fZWxlbWVudC5nZXRBdHRyaWJ1dGUobV9hdHRyaWJ1dGVO
YW1lKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRva2VuTGlzdC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9ET01Ub2tlbkxpc3QuaAppbmRleCA4YzAyNjdlODRkNjM1MWY0
YjE2MjFhMWE1NWIyMmI3MzRlNjFmOGYwLi5iMzI0MDJkMDM3ZGE5MGQ4ZmVhMmZhYWQ0NmQ5N2Fm
NzNkNjI4MDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRva2VuTGlzdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmgKQEAgLTM1LDM0ICszNSwz
NCBAQCBwdWJsaWM6CiAgICAgdXNpbmcgSXNTdXBwb3J0ZWRUb2tlbkZ1bmN0aW9uID0gV1RGOjpG
dW5jdGlvbjxib29sKERvY3VtZW50JiwgU3RyaW5nVmlldyk+OwogICAgIERPTVRva2VuTGlzdChF
bGVtZW50JiwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgSXNTdXBwb3J0ZWRU
b2tlbkZ1bmN0aW9uJiYgaXNTdXBwb3J0ZWRUb2tlbiA9IHsgfSk7CiAKLSAgICB2b2lkIGFzc29j
aWF0ZWRBdHRyaWJ1dGVWYWx1ZUNoYW5nZWQoY29uc3QgQXRvbWljU3RyaW5nJik7CisgICAgdm9p
ZCBhc3NvY2lhdGVkQXR0cmlidXRlVmFsdWVDaGFuZ2VkKGNvbnN0IEF0b21TdHJpbmcmKTsKIAog
ICAgIHZvaWQgcmVmKCkgeyBtX2VsZW1lbnQucmVmKCk7IH0KICAgICB2b2lkIGRlcmVmKCkgeyBt
X2VsZW1lbnQuZGVyZWYoKTsgfQogCiAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7Ci0gICAg
Y29uc3QgQXRvbWljU3RyaW5nJiBpdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdDsKKyAgICBjb25z
dCBBdG9tU3RyaW5nJiBpdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdDsKIAotICAgIFdFQkNPUkVf
RVhQT1JUIGJvb2wgY29udGFpbnMoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3Q7CisgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBjb250YWlucyhjb25zdCBBdG9tU3RyaW5nJikgY29uc3Q7CiAgICAg
RXhjZXB0aW9uT3I8dm9pZD4gYWRkKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7Ci0gICAgRXhjZXB0
aW9uT3I8dm9pZD4gYWRkKGNvbnN0IEF0b21pY1N0cmluZyYpOworICAgIEV4Y2VwdGlvbk9yPHZv
aWQ+IGFkZChjb25zdCBBdG9tU3RyaW5nJik7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gcmVtb3Zl
KGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7Ci0gICAgRXhjZXB0aW9uT3I8dm9pZD4gcmVtb3ZlKGNv
bnN0IEF0b21pY1N0cmluZyYpOwotICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPGJvb2w+
IHRvZ2dsZShjb25zdCBBdG9taWNTdHJpbmcmLCBPcHRpb25hbDxib29sPiBmb3JjZSk7Ci0gICAg
RXhjZXB0aW9uT3I8Ym9vbD4gcmVwbGFjZShjb25zdCBBdG9taWNTdHJpbmcmIHRva2VuLCBjb25z
dCBBdG9taWNTdHJpbmcmIG5ld1Rva2VuKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiByZW1vdmUo
Y29uc3QgQXRvbVN0cmluZyYpOworICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPGJvb2w+
IHRvZ2dsZShjb25zdCBBdG9tU3RyaW5nJiwgT3B0aW9uYWw8Ym9vbD4gZm9yY2UpOworICAgIEV4
Y2VwdGlvbk9yPGJvb2w+IHJlcGxhY2UoY29uc3QgQXRvbVN0cmluZyYgdG9rZW4sIGNvbnN0IEF0
b21TdHJpbmcmIG5ld1Rva2VuKTsKICAgICBFeGNlcHRpb25Pcjxib29sPiBzdXBwb3J0cyhTdHJp
bmdWaWV3IHRva2VuKTsKIAogICAgIEVsZW1lbnQmIGVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBt
X2VsZW1lbnQ7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VmFsdWUoY29uc3QgU3Ry
aW5nJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSgpIGNv
bnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKCkgY29uc3Q7
CiAKIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVUb2tlbnNGcm9tQXR0cmlidXRlVmFsdWUoY29u
c3QgU3RyaW5nJik7CiAgICAgdm9pZCB1cGRhdGVBc3NvY2lhdGVkQXR0cmlidXRlRnJvbVRva2Vu
cygpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPEF0b21pY1N0cmluZz4mIHRva2Vucygp
OwotICAgIGNvbnN0IFZlY3RvcjxBdG9taWNTdHJpbmc+JiB0b2tlbnMoKSBjb25zdCB7IHJldHVy
biBjb25zdF9jYXN0PERPTVRva2VuTGlzdCY+KCp0aGlzKS50b2tlbnMoKTsgfQorICAgIFdFQkNP
UkVfRVhQT1JUIFZlY3RvcjxBdG9tU3RyaW5nPiYgdG9rZW5zKCk7CisgICAgY29uc3QgVmVjdG9y
PEF0b21TdHJpbmc+JiB0b2tlbnMoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PERPTVRva2Vu
TGlzdCY+KCp0aGlzKS50b2tlbnMoKTsgfQogCiAgICAgc3RhdGljIEV4Y2VwdGlvbk9yPHZvaWQ+
IHZhbGlkYXRlVG9rZW4oY29uc3QgU3RyaW5nJik7CiAgICAgc3RhdGljIEV4Y2VwdGlvbk9yPHZv
aWQ+IHZhbGlkYXRlVG9rZW5zKGNvbnN0IFN0cmluZyogdG9rZW5zLCBzaXplX3QgbGVuZ3RoKTsK
QEAgLTczLDcgKzczLDcgQEAgcHJpdmF0ZToKICAgICBjb25zdCBXZWJDb3JlOjpRdWFsaWZpZWRO
YW1lJiBtX2F0dHJpYnV0ZU5hbWU7CiAgICAgYm9vbCBtX2luVXBkYXRlQXNzb2NpYXRlZEF0dHJp
YnV0ZUZyb21Ub2tlbnMgeyBmYWxzZSB9OwogICAgIGJvb2wgbV90b2tlbnNOZWVkVXBkYXRpbmcg
eyB0cnVlIH07Ci0gICAgVmVjdG9yPEF0b21pY1N0cmluZz4gbV90b2tlbnM7CisgICAgVmVjdG9y
PEF0b21TdHJpbmc+IG1fdG9rZW5zOwogICAgIElzU3VwcG9ydGVkVG9rZW5GdW5jdGlvbiBtX2lz
U3VwcG9ydGVkVG9rZW47CiB9OwogCkBAIC04Miw3ICs4Miw3IEBAIGlubGluZSB1bnNpZ25lZCBE
T01Ub2tlbkxpc3Q6Omxlbmd0aCgpIGNvbnN0CiAgICAgcmV0dXJuIHRva2VucygpLnNpemUoKTsK
IH0KIAotaW5saW5lIGNvbnN0IEF0b21pY1N0cmluZyYgRE9NVG9rZW5MaXN0OjppdGVtKHVuc2ln
bmVkIGluZGV4KSBjb25zdAoraW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIERPTVRva2VuTGlzdDo6
aXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QKIHsKICAgICBhdXRvJiB0b2tlbnMgPSB0aGlzLT50
b2tlbnMoKTsKICAgICByZXR1cm4gaW5kZXggPCB0b2tlbnMuc2l6ZSgpID8gdG9rZW5zW2luZGV4
XSA6IG51bGxBdG9tKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVJbnB1
dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlSW5wdXRUeXBlLmNwcAppbmRleCBj
ODQ4YTg3ZGM2NzBhNzliYjlhNzg5MThkMDMyMDM2NzEyY2Q2NjljLi43OWRmNTJkNzZiMzdlN2Zl
ZTc4MDI5ZWU3ODg3MmVhZTJmMGY3ZmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0RhdGVJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZUlucHV0VHlw
ZS5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgRGF0ZUlucHV0VHlwZTo6RGF0ZUlucHV0VHlwZShIVE1M
SW5wdXRFbGVtZW50JiBlbGVtZW50KQogewogfQogCi1jb25zdCBBdG9taWNTdHJpbmcmIERhdGVJ
bnB1dFR5cGU6OmZvcm1Db250cm9sVHlwZSgpIGNvbnN0Citjb25zdCBBdG9tU3RyaW5nJiBEYXRl
SW5wdXRUeXBlOjpmb3JtQ29udHJvbFR5cGUoKSBjb25zdAogewogICAgIHJldHVybiBJbnB1dFR5
cGVOYW1lczo6ZGF0ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRl
SW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVJbnB1dFR5cGUuaAppbmRleCA1
YmUxZWMzZjNmMGRkOWU3MDFlOTgxNjZmYmRjMzNhNTFlZGRkOGI4Li4wZmY3MDJjODYyOWUwMjg5
NWU3ZTJlMmE3OTNkNDQyMDY2NzBmNDc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0RhdGVJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVJbnB1dFR5cGUu
aApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgRGF0ZUlucHV0VHlwZShI
VE1MSW5wdXRFbGVtZW50Jik7CiAKIHByaXZhdGU6Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBm
b3JtQ29udHJvbFR5cGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBm
b3JtQ29udHJvbFR5cGUoKSBjb25zdCBvdmVycmlkZTsKICAgICBEYXRlQ29tcG9uZW50czo6VHlw
ZSBkYXRlVHlwZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFN0ZXBSYW5nZSBjcmVhdGVTdGVwUmFu
Z2UoQW55U3RlcEhhbmRsaW5nKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIHBhcnNlVG9EYXRl
Q29tcG9uZW50c0ludGVybmFsKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoLCBEYXRlQ29t
cG9uZW50cyopIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9EYXRlVGltZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVUaW1lSW5w
dXRUeXBlLmNwcAppbmRleCBlY2ZkNjM4ZDY2OTVjMmI5ZWM2ZDM3NjQ3MGFiMmFjZTRhZTUxOGU3
Li41YmVlMzlmZWE3MDA3ZDI1Mjk3NGI4ZTU3NjQ2Njk2OTUzMTQxOTQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0RhdGVUaW1lSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0RhdGVUaW1lSW5wdXRUeXBlLmNwcApAQCAtNDUsNyArNDUsNyBAQCBzdGF0aWMg
Y29uc3QgaW50IGRhdGVUaW1lRGVmYXVsdFN0ZXBCYXNlID0gMDsKIHN0YXRpYyBjb25zdCBpbnQg
ZGF0ZVRpbWVTdGVwU2NhbGVGYWN0b3IgPSAxMDAwOwogc3RhdGljIGNvbnN0IFN0ZXBSYW5nZTo6
U3RlcERlc2NyaXB0aW9uIGRhdGVUaW1lU3RlcERlc2NyaXB0aW9uIHsgZGF0ZVRpbWVEZWZhdWx0
U3RlcCwgZGF0ZVRpbWVEZWZhdWx0U3RlcEJhc2UsIGRhdGVUaW1lU3RlcFNjYWxlRmFjdG9yLCBT
dGVwUmFuZ2U6OlNjYWxlZFN0ZXBWYWx1ZVNob3VsZEJlSW50ZWdlciB9OwogCi1jb25zdCBBdG9t
aWNTdHJpbmcmIERhdGVUaW1lSW5wdXRUeXBlOjpmb3JtQ29udHJvbFR5cGUoKSBjb25zdAorY29u
c3QgQXRvbVN0cmluZyYgRGF0ZVRpbWVJbnB1dFR5cGU6OmZvcm1Db250cm9sVHlwZSgpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIElucHV0VHlwZU5hbWVzOjpkYXRldGltZSgpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGltZUlucHV0VHlwZS5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9EYXRlVGltZUlucHV0VHlwZS5oCmluZGV4IGM4N2FjN2IwOGNmNDU1ODRhMGFmNDM0
OWI1ZGRkZmZlYTMxYzhhYjguLmFiNTUwZTY1ZTJiMzA4ZjcyYzU5Y2Y3NmIyNmFiZDNiMWU1Njk3
NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZVRpbWVJbnB1dFR5cGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVUaW1lSW5wdXRUeXBlLmgKQEAgLTQyLDcgKzQy
LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IERhdGVUaW1lSW5wdXRUeXBlKEhUTUxJbnB1dEVs
ZW1lbnQmIGVsZW1lbnQpIDogQmFzZURhdGVUaW1lSW5wdXRUeXBlKGVsZW1lbnQpIHsgfQogCiBw
cml2YXRlOgotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgY29uc3QgQXRvbVN0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgRGF0ZUNvbXBvbmVudHM6OlR5cGUgZGF0ZVR5cGUoKSBjb25zdCBvdmVy
cmlkZTsKICAgICBTdGVwUmFuZ2UgY3JlYXRlU3RlcFJhbmdlKEFueVN0ZXBIYW5kbGluZykgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgRGVjaW1hbCBkZWZhdWx0VmFsdWVGb3JTdGVwVXAoKSBjb25zdCBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZVRpbWVMb2NhbElu
cHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVUaW1lTG9jYWxJbnB1dFR5cGUu
Y3BwCmluZGV4IDdjYWMxZDljYmQ2MzNiOTU0MTliOGUxZmJmMjFiOWUyMTYxM2M5OGQuLmYxMDQy
ZjdiMGY3Y2Y4NzkxYWViNzg1ZDQwZWVkZWY4YzIxN2I1ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRGF0ZVRpbWVMb2NhbElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9EYXRlVGltZUxvY2FsSW5wdXRUeXBlLmNwcApAQCAtNDYsNyArNDYsNyBAQCBzdGF0
aWMgY29uc3QgaW50IGRhdGVUaW1lTG9jYWxEZWZhdWx0U3RlcEJhc2UgPSAwOwogc3RhdGljIGNv
bnN0IGludCBkYXRlVGltZUxvY2FsU3RlcFNjYWxlRmFjdG9yID0gMTAwMDsKIHN0YXRpYyBjb25z
dCBTdGVwUmFuZ2U6OlN0ZXBEZXNjcmlwdGlvbiBkYXRlVGltZUxvY2FsU3RlcERlc2NyaXB0aW9u
IHsgZGF0ZVRpbWVMb2NhbERlZmF1bHRTdGVwLCBkYXRlVGltZUxvY2FsRGVmYXVsdFN0ZXBCYXNl
LCBkYXRlVGltZUxvY2FsU3RlcFNjYWxlRmFjdG9yLCBTdGVwUmFuZ2U6OlNjYWxlZFN0ZXBWYWx1
ZVNob3VsZEJlSW50ZWdlciB9OwogCi1jb25zdCBBdG9taWNTdHJpbmcmIERhdGVUaW1lTG9jYWxJ
bnB1dFR5cGU6OmZvcm1Db250cm9sVHlwZSgpIGNvbnN0Citjb25zdCBBdG9tU3RyaW5nJiBEYXRl
VGltZUxvY2FsSW5wdXRUeXBlOjpmb3JtQ29udHJvbFR5cGUoKSBjb25zdAogewogICAgIHJldHVy
biBJbnB1dFR5cGVOYW1lczo6ZGF0ZXRpbWVsb2NhbCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9EYXRlVGltZUxvY2FsSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0RhdGVUaW1lTG9jYWxJbnB1dFR5cGUuaAppbmRleCA3YTA4NmJjOWFlZTdkYTllNDhiMjJk
NjFiODA2MjEzMjA2YzA5MTE0Li4zNDBhYTkyNTcxNzliZDk3NTk3MzJjNGJhZjc2OWY1NThiZDIz
ZDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVUaW1lTG9jYWxJbnB1dFR5
cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVUaW1lTG9jYWxJbnB1dFR5cGUuaApA
QCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgRGF0ZVRpbWVMb2NhbElucHV0
VHlwZShIVE1MSW5wdXRFbGVtZW50JiBlbGVtZW50KSA6IEJhc2VDaG9vc2VyT25seURhdGVBbmRU
aW1lSW5wdXRUeXBlKGVsZW1lbnQpIHsgfQogCiBwcml2YXRlOgotICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3QgZmluYWw7CisgICAgY29uc3QgQXRvbVN0cmlu
ZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3QgZmluYWw7CiAgICAgRGF0ZUNvbXBvbmVudHM6OlR5
cGUgZGF0ZVR5cGUoKSBjb25zdCBmaW5hbDsKICAgICBkb3VibGUgdmFsdWVBc0RhdGUoKSBjb25z
dCBmaW5hbDsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRWYWx1ZUFzRGF0ZShkb3VibGUpIGNv
bnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9FbWFpbElucHV0VHlw
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0VtYWlsSW5wdXRUeXBlLmNwcAppbmRleCA0MjU1
MzY5Mzk4OGI5M2RkMWI1OTAzZjMyMTE4MWRmOTkyMTI5M2FlLi5kZWU1Y2M0YmZhNDgxNzY4MjAw
NzEyNWExZGE5NTI0ZWM5OGI4ZTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Vt
YWlsSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0VtYWlsSW5wdXRUeXBl
LmNwcApAQCAtNTIsNyArNTIsNyBAQCBzdGF0aWMgYm9vbCBpc1ZhbGlkRW1haWxBZGRyZXNzKGNv
bnN0IFN0cmluZyYgYWRkcmVzcykKICAgICByZXR1cm4gIW1hdGNoT2Zmc2V0ICYmIG1hdGNoTGVu
Z3RoID09IGFkZHJlc3NMZW5ndGg7CiB9CiAKLWNvbnN0IEF0b21pY1N0cmluZyYgRW1haWxJbnB1
dFR5cGU6OmZvcm1Db250cm9sVHlwZSgpIGNvbnN0Citjb25zdCBBdG9tU3RyaW5nJiBFbWFpbElu
cHV0VHlwZTo6Zm9ybUNvbnRyb2xUeXBlKCkgY29uc3QKIHsKICAgICByZXR1cm4gSW5wdXRUeXBl
TmFtZXM6OmVtYWlsKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0VtYWls
SW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0VtYWlsSW5wdXRUeXBlLmgKaW5kZXgg
MGUyZmI5NzI1MmUwY2MwOWUxZjdhYWNkN2Q0NTYwNTRmNDdlYmY3Ny4uMDJhZDNkYjNhNWU2NTFk
N2ExNzlmMzk0YTc2MTI5OWFmMjkwMWNkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9FbWFpbElucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRW1haWxJbnB1dFR5
cGUuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgRW1haWxJbnB1dFR5
cGUoSFRNTElucHV0RWxlbWVudCYgZWxlbWVudCkgOiBCYXNlVGV4dElucHV0VHlwZShlbGVtZW50
KSB7IH0KIAogcHJpdmF0ZToKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGZvcm1Db250cm9sVHlw
ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGNvbnN0IEF0b21TdHJpbmcmIGZvcm1Db250cm9sVHlw
ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgdHlwZU1pc21hdGNoRm9yKGNvbnN0IFN0cmlu
ZyYpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgdHlwZU1pc21hdGNoKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgU3RyaW5nIHR5cGVNaXNtYXRjaFRleHQoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKaW5kZXggMDJjYzA4MDRm
ZmUyYzdkZmRkMzMyYzliMjMwMTgxZmU3MzFiODkxMS4uZjU2MzA3NDlmNGUyZmE4YmZmZmQzNzEz
YTVmNmYxMTljYjYwYjJmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJl
Y3RvcnlEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlE
b2N1bWVudC5jcHAKQEAgLTExMiwyOCArMTEyLDI4IEBAIHZvaWQgRlRQRGlyZWN0b3J5RG9jdW1l
bnRQYXJzZXI6OmFwcGVuZEVudHJ5KGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmlu
CiAgICAgYXV0byYgZG9jdW1lbnQgPSAqdGhpcy0+ZG9jdW1lbnQoKTsKIAogICAgIGF1dG8gcm93
RWxlbWVudCA9IG1fdGFibGVFbGVtZW50LT5pbnNlcnRSb3coLTEpLnJlbGVhc2VSZXR1cm5WYWx1
ZSgpOwotICAgIHJvd0VsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24o
SFRNTE5hbWVzOjpjbGFzc0F0dHIsIEF0b21pY1N0cmluZygiZnRwRGlyZWN0b3J5RW50cnlSb3ci
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgcm93RWxlbWVudC0+
c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OmNsYXNzQXR0ciwg
QXRvbVN0cmluZygiZnRwRGlyZWN0b3J5RW50cnlSb3ciLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCkpOwogCiAgICAgYXV0byB0eXBlRWxlbWVudCA9IEhUTUxUYWJsZUNlbGxFbGVt
ZW50OjpjcmVhdGUodGRUYWcsIGRvY3VtZW50KTsKICAgICB0eXBlRWxlbWVudC0+YXBwZW5kQ2hp
bGQoVGV4dDo6Y3JlYXRlKGRvY3VtZW50LCBTdHJpbmcoJm5vQnJlYWtTcGFjZSwgMSkpKTsKICAg
ICBpZiAoaXNEaXJlY3RvcnkpCi0gICAgICAgIHR5cGVFbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRo
b3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6Y2xhc3NBdHRyLCBBdG9taWNTdHJpbmcoImZ0
cERpcmVjdG9yeUljb24gZnRwRGlyZWN0b3J5VHlwZURpcmVjdG9yeSIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICAgICAgdHlwZUVsZW1lbnQtPnNldEF0dHJpYnV0
ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpjbGFzc0F0dHIsIEF0b21TdHJpbmco
ImZ0cERpcmVjdG9yeUljb24gZnRwRGlyZWN0b3J5VHlwZURpcmVjdG9yeSIsIEF0b21TdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CiAgICAgZWxzZQotICAgICAgICB0eXBlRWxlbWVudC0+
c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OmNsYXNzQXR0ciwg
QXRvbWljU3RyaW5nKCJmdHBEaXJlY3RvcnlJY29uIGZ0cERpcmVjdG9yeVR5cGVGaWxlIiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgICAgICB0eXBlRWxlbWVudC0+
c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OmNsYXNzQXR0ciwg
QXRvbVN0cmluZygiZnRwRGlyZWN0b3J5SWNvbiBmdHBEaXJlY3RvcnlUeXBlRmlsZSIsIEF0b21T
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CiAgICAgcm93RWxlbWVudC0+YXBwZW5kQ2hp
bGQodHlwZUVsZW1lbnQpOwogCiAgICAgYXV0byBuYW1lRWxlbWVudCA9IGNyZWF0ZVRERm9yRmls
ZW5hbWUoZmlsZW5hbWUpOwotICAgIG5hbWVFbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKEhUTUxOYW1lczo6Y2xhc3NBdHRyLCBBdG9taWNTdHJpbmcoImZ0cERpcmVj
dG9yeUZpbGVOYW1lIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAg
IG5hbWVFbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1l
czo6Y2xhc3NBdHRyLCBBdG9tU3RyaW5nKCJmdHBEaXJlY3RvcnlGaWxlTmFtZSIsIEF0b21TdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CiAgICAgcm93RWxlbWVudC0+YXBwZW5kQ2hpbGQo
bmFtZUVsZW1lbnQpOwogCiAgICAgYXV0byBkYXRlRWxlbWVudCA9IEhUTUxUYWJsZUNlbGxFbGVt
ZW50OjpjcmVhdGUodGRUYWcsIGRvY3VtZW50KTsKICAgICBkYXRlRWxlbWVudC0+YXBwZW5kQ2hp
bGQoVGV4dDo6Y3JlYXRlKGRvY3VtZW50LCBkYXRlKSk7Ci0gICAgZGF0ZUVsZW1lbnQtPnNldEF0
dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpjbGFzc0F0dHIsIEF0b21p
Y1N0cmluZygiZnRwRGlyZWN0b3J5RmlsZURhdGUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKSk7CisgICAgZGF0ZUVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24oSFRNTE5hbWVzOjpjbGFzc0F0dHIsIEF0b21TdHJpbmcoImZ0cERpcmVjdG9yeUZp
bGVEYXRlIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKICAgICByb3dFbGVt
ZW50LT5hcHBlbmRDaGlsZChkYXRlRWxlbWVudCk7CiAKICAgICBhdXRvIHNpemVFbGVtZW50ID0g
SFRNTFRhYmxlQ2VsbEVsZW1lbnQ6OmNyZWF0ZSh0ZFRhZywgZG9jdW1lbnQpOwogICAgIHNpemVF
bGVtZW50LT5hcHBlbmRDaGlsZChUZXh0OjpjcmVhdGUoZG9jdW1lbnQsIHNpemUpKTsKLSAgICBz
aXplRWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6
OmNsYXNzQXR0ciwgQXRvbWljU3RyaW5nKCJmdHBEaXJlY3RvcnlGaWxlU2l6ZSIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzaXplRWxlbWVudC0+c2V0QXR0cmli
dXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OmNsYXNzQXR0ciwgQXRvbVN0cmlu
ZygiZnRwRGlyZWN0b3J5RmlsZVNpemUiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCkpOwogICAgIHJvd0VsZW1lbnQtPmFwcGVuZENoaWxkKHNpemVFbGVtZW50KTsKIH0KIApAQCAt
MzE0LDcgKzMxNCw3IEBAIGJvb2wgRlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmxvYWREb2N1
bWVudFRlbXBsYXRlKCkKICAgICB9CiAKICAgICBtX3RhYmxlRWxlbWVudCA9IEhUTUxUYWJsZUVs
ZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAgbV90YWJsZUVsZW1lbnQtPnNldEF0dHJpYnV0
ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjppZEF0dHIsIEF0b21pY1N0cmluZygi
ZnRwRGlyZWN0b3J5VGFibGUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7
CisgICAgbV90YWJsZUVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24o
SFRNTE5hbWVzOjppZEF0dHIsIEF0b21TdHJpbmcoImZ0cERpcmVjdG9yeVRhYmxlIiwgQXRvbVN0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKIAogICAgIC8vIElmIHdlIGRpZG4ndCBmaW5k
IHRoZSB0YWJsZSBlbGVtZW50LCBsZXRzIHRyeSB0byBhcHBlbmQgb3VyIG93biB0byB0aGUgYm9k
eS4KICAgICAvLyBJZiB0aGF0IGZhaWxzIGZvciBzb21lIHJlYXNvbiwgY3JhbSBpdCBvbiB0aGUg
ZW5kIG9mIHRoZSBkb2N1bWVudCBhcyBhIGxhc3QgZGl0Y2ggZWZmb3J0LgpAQCAtMzM2LDggKzMz
Niw4IEBAIHZvaWQgRlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmNyZWF0ZUJhc2ljRG9jdW1l
bnQoKQogICAgIGRvY3VtZW50LmFwcGVuZENoaWxkKGJvZHlFbGVtZW50KTsKIAogICAgIG1fdGFi
bGVFbGVtZW50ID0gSFRNTFRhYmxlRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLSAgICBtX3Rh
YmxlRWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6
OmlkQXR0ciwgQXRvbWljU3RyaW5nKCJmdHBEaXJlY3RvcnlUYWJsZSIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLSAgICBtX3RhYmxlRWxlbWVudC0+c2V0QXR0cmlidXRl
KEhUTUxOYW1lczo6c3R5bGVBdHRyLCBBdG9taWNTdHJpbmcoIndpZHRoOjEwMCUiLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgbV90YWJsZUVsZW1lbnQtPnNldEF0
dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjppZEF0dHIsIEF0b21TdHJp
bmcoImZ0cERpcmVjdG9yeVRhYmxlIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
KTsKKyAgICBtX3RhYmxlRWxlbWVudC0+c2V0QXR0cmlidXRlKEhUTUxOYW1lczo6c3R5bGVBdHRy
LCBBdG9tU3RyaW5nKCJ3aWR0aDoxMDAlIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpKTsKIAogICAgIGJvZHlFbGVtZW50LT5hcHBlbmRDaGlsZCgqbV90YWJsZUVsZW1lbnQpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcAppbmRleCBjMzI0MDUwNTE3NmU2NjJi
YjQwMjM4ODk2NDUwYThlYzNiM2ExMDQ0Li5hZmMyNTg4MzkxMjI3MzhkNzZmMDRmNmI5MGFjY2E5
MTdmMWMzOTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKQEAgLTg5LDgg
Kzg5LDggQEAgUmVmPFVwbG9hZEJ1dHRvbkVsZW1lbnQ+IFVwbG9hZEJ1dHRvbkVsZW1lbnQ6OmNy
ZWF0ZUZvck11bHRpcGxlKERvY3VtZW50JiBkb2N1bWUKIFVwbG9hZEJ1dHRvbkVsZW1lbnQ6OlVw
bG9hZEJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIDogSFRNTElucHV0RWxl
bWVudChpbnB1dFRhZywgZG9jdW1lbnQsIDAsIGZhbHNlKQogewotICAgIHNldFR5cGUoQXRvbWlj
U3RyaW5nKCJidXR0b24iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0g
ICAgc2V0UHNldWRvKEF0b21pY1N0cmluZygiLXdlYmtpdC1maWxlLXVwbG9hZC1idXR0b24iLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc2V0VHlwZShBdG9tU3Ry
aW5nKCJidXR0b24iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHNl
dFBzZXVkbyhBdG9tU3RyaW5nKCItd2Via2l0LWZpbGUtdXBsb2FkLWJ1dHRvbiIsIEF0b21TdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CiB9CiAKIEZpbGVJbnB1dFR5cGU6OkZpbGVJbnB1
dFR5cGUoSFRNTElucHV0RWxlbWVudCYgZWxlbWVudCkKQEAgLTEyNSw3ICsxMjUsNyBAQCBWZWN0
b3I8RmlsZUNob29zZXJGaWxlSW5mbz4gRmlsZUlucHV0VHlwZTo6ZmlsZXNGcm9tRm9ybUNvbnRy
b2xTdGF0ZShjb25zdCBGb3JtQwogICAgIHJldHVybiBmaWxlczsKIH0KIAotY29uc3QgQXRvbWlj
U3RyaW5nJiBGaWxlSW5wdXRUeXBlOjpmb3JtQ29udHJvbFR5cGUoKSBjb25zdAorY29uc3QgQXRv
bVN0cmluZyYgRmlsZUlucHV0VHlwZTo6Zm9ybUNvbnRyb2xUeXBlKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gSW5wdXRUeXBlTmFtZXM6OmZpbGUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvRmlsZUlucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRU
eXBlLmgKaW5kZXggYzU4MmNhY2YxYjJlOTQ2NzA2ZGM5YjQ3NGVmMGVlMzhjNGRjODNiNi4uODI2
YWMyOGUzMWU4NmVkOWExY2M5OWExNTZkNDY3ZTk0YjAzMTU1YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9G
aWxlSW5wdXRUeXBlLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBWZWN0
b3I8RmlsZUNob29zZXJGaWxlSW5mbz4gZmlsZXNGcm9tRm9ybUNvbnRyb2xTdGF0ZShjb25zdCBG
b3JtQ29udHJvbFN0YXRlJik7CiAKIHByaXZhdGU6Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBm
b3JtQ29udHJvbFR5cGUoKSBjb25zdCBmaW5hbDsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBmb3Jt
Q29udHJvbFR5cGUoKSBjb25zdCBmaW5hbDsKICAgICBGb3JtQ29udHJvbFN0YXRlIHNhdmVGb3Jt
Q29udHJvbFN0YXRlKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCByZXN0b3JlRm9ybUNvbnRyb2xT
dGF0ZShjb25zdCBGb3JtQ29udHJvbFN0YXRlJikgZmluYWw7CiAgICAgYm9vbCBhcHBlbmRGb3Jt
RGF0YShET01Gb3JtRGF0YSYsIGJvb2wpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3BwCmluZGV4IGJkNDI2MjIwMTRkYjI0N2NiY2E1
NWIyN2FjZmFiMWY1MTBmOWMwZWEuLjgwNmU1ZjNkYWViZTI5NGUzMzAyMzBkZmE1ZWRlOGM5MmQ1
OGMzMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5j
cHAKQEAgLTQyLDcgKzQyLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIGNsYXNzIEZv
cm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlciBmaW5hbCA6IHByaXZhdGUgSWRUYXJnZXRPYnNlcnZl
ciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgRm9ybUF0dHJp
YnV0ZVRhcmdldE9ic2VydmVyKGNvbnN0IEF0b21pY1N0cmluZyYgaWQsIEZvcm1Bc3NvY2lhdGVk
RWxlbWVudCYpOworICAgIEZvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcihjb25zdCBBdG9tU3Ry
aW5nJiBpZCwgRm9ybUFzc29jaWF0ZWRFbGVtZW50Jik7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBp
ZFRhcmdldENoYW5nZWQoKSBvdmVycmlkZTsKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIEZvcm1B
c3NvY2lhdGVkRWxlbWVudDo6cmVtb3ZlZEZyb21BbmNlc3RvcihOb2RlOjpSZW1vdmFsVHlwZSwg
Q29udGFpbmVyTm9kZQogCiBIVE1MRm9ybUVsZW1lbnQqIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6
ZmluZEFzc29jaWF0ZWRGb3JtKGNvbnN0IEhUTUxFbGVtZW50KiBlbGVtZW50LCBIVE1MRm9ybUVs
ZW1lbnQqIGN1cnJlbnRBc3NvY2lhdGVkRm9ybSkKIHsKLSAgICBjb25zdCBBdG9taWNTdHJpbmcm
IGZvcm1JZChlbGVtZW50LT5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGZvcm1BdHRy
KSk7CisgICAgY29uc3QgQXRvbVN0cmluZyYgZm9ybUlkKGVsZW1lbnQtPmF0dHJpYnV0ZVdpdGhv
dXRTeW5jaHJvbml6YXRpb24oZm9ybUF0dHIpKTsKICAgICBpZiAoIWZvcm1JZC5pc051bGwoKSAm
JiBlbGVtZW50LT5pc0Nvbm5lY3RlZCgpKSB7CiAgICAgICAgIC8vIFRoZSBIVE1MNSBzcGVjIHNh
eXMgdGhhdCB0aGUgZWxlbWVudCBzaG91bGQgYmUgYXNzb2NpYXRlZCB3aXRoCiAgICAgICAgIC8v
IHRoZSBmaXJzdCBlbGVtZW50IGluIHRoZSBkb2N1bWVudCB0byBoYXZlIGFuIElEIHRoYXQgZXF1
YWwgdG8KQEAgLTI4Nyw5ICsyODcsOSBAQCB2b2lkIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6Zm9y
bUF0dHJpYnV0ZVRhcmdldENoYW5nZWQoKQogICAgIHJlc2V0Rm9ybU93bmVyKCk7CiB9CiAKLWNv
bnN0IEF0b21pY1N0cmluZyYgRm9ybUFzc29jaWF0ZWRFbGVtZW50OjpuYW1lKCkgY29uc3QKK2Nv
bnN0IEF0b21TdHJpbmcmIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6bmFtZSgpIGNvbnN0CiB7Ci0g
ICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lID0gYXNIVE1MRWxlbWVudCgpLmdldE5hbWVBdHRy
aWJ1dGUoKTsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBuYW1lID0gYXNIVE1MRWxlbWVudCgpLmdl
dE5hbWVBdHRyaWJ1dGUoKTsKICAgICByZXR1cm4gbmFtZS5pc051bGwoKSA/IGVtcHR5QXRvbSgp
IDogbmFtZTsKIH0KIApAQCAtMjk4LDcgKzI5OCw3IEBAIGJvb2wgRm9ybUFzc29jaWF0ZWRFbGVt
ZW50Ojppc0Zvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZSgpIGNvbnN0CiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi1Gb3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXI6OkZvcm1BdHRyaWJ1dGVUYXJn
ZXRPYnNlcnZlcihjb25zdCBBdG9taWNTdHJpbmcmIGlkLCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQm
IGVsZW1lbnQpCitGb3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXI6OkZvcm1BdHRyaWJ1dGVUYXJn
ZXRPYnNlcnZlcihjb25zdCBBdG9tU3RyaW5nJiBpZCwgRm9ybUFzc29jaWF0ZWRFbGVtZW50JiBl
bGVtZW50KQogICAgIDogSWRUYXJnZXRPYnNlcnZlcihlbGVtZW50LmFzSFRNTEVsZW1lbnQoKS50
cmVlU2NvcGUoKS5pZFRhcmdldE9ic2VydmVyUmVnaXN0cnkoKSwgaWQpCiAgICAgLCBtX2VsZW1l
bnQoZWxlbWVudCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29j
aWF0ZWRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVu
dC5oCmluZGV4IDg4NjM5ZGUxYzFlOTY4YjQ2NmEwMTkwMDNkMWNiOTUzYjZmMTNmZjEuLjkyMmVk
NTYxYjAyNzY2ZWFiZmVhYWQ1NWYxNDkyZTRkODA3N2UxMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuaApAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAg
ICAgLy8gUmV0dXJucyB0aGUgJ25hbWUnIGF0dHJpYnV0ZSB2YWx1ZS4gSWYgdGhpcyBlbGVtZW50
IGhhcyBubyBuYW1lCiAgICAgLy8gYXR0cmlidXRlLCBpdCByZXR1cm5zIGFuIGVtcHR5IHN0cmlu
ZyBpbnN0ZWFkIG9mIG51bGwgc3RyaW5nLgogICAgIC8vIE5vdGUgdGhhdCB0aGUgJ25hbWUnIElE
TCBhdHRyaWJ1dGUgZG9lc24ndCB1c2UgdGhpcyBmdW5jdGlvbi4KLSAgICB2aXJ0dWFsIGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZSgpIGNvbnN0OworICAgIHZpcnR1YWwgY29uc3QgQXRvbVN0cmlu
ZyYgbmFtZSgpIGNvbnN0OwogCiAgICAgLy8gT3ZlcnJpZGUgaW4gZGVyaXZlZCBjbGFzc2VzIHRv
IGdldCB0aGUgZW5jb2RlZCBuYW1lPXZhbHVlIHBhaXIgZm9yIHN1Ym1pdHRpbmcuCiAgICAgLy8g
UmV0dXJuIHRydWUgZm9yIGEgc3VjY2Vzc2Z1bCBjb250cm9sIChzZWUgSFRNTDQtMTcuMTMuMiku
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuY3BwCmluZGV4IDQwMDZkMTk2YWFlODMy
YmY1OTJlYzQ0YzM2OTI0OTQwZjM5MzYzZmIuLmI3ZDEwMzViNzU4OTQ2OWIxNTUwMTQ0MTA4MTJk
MWMxMTJhYTkzNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuY3BwCkBAIC03
OSwxMyArNzksMTMgQEAgc3RhdGljIGlubGluZSBPcHRpb25hbDxGb3JtQ29udHJvbFN0YXRlPiBk
ZXNlcmlhbGl6ZUZvcm1Db250cm9sU3RhdGUoY29uc3QgVmVjdG8KIAogY2xhc3MgRm9ybUVsZW1l
bnRLZXkgewogcHVibGljOgotICAgIEZvcm1FbGVtZW50S2V5KEF0b21pY1N0cmluZ0ltcGwqID0g
MCwgQXRvbWljU3RyaW5nSW1wbCogPSAwKTsKKyAgICBGb3JtRWxlbWVudEtleShBdG9tU3RyaW5n
SW1wbCogPSAwLCBBdG9tU3RyaW5nSW1wbCogPSAwKTsKICAgICB+Rm9ybUVsZW1lbnRLZXkoKTsK
ICAgICBGb3JtRWxlbWVudEtleShjb25zdCBGb3JtRWxlbWVudEtleSYpOwogICAgIEZvcm1FbGVt
ZW50S2V5JiBvcGVyYXRvcj0oY29uc3QgRm9ybUVsZW1lbnRLZXkmKTsKIAotICAgIEF0b21pY1N0
cmluZ0ltcGwqIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KLSAgICBBdG9taWNTdHJp
bmdJbXBsKiB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CisgICAgQXRvbVN0cmluZ0lt
cGwqIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KKyAgICBBdG9tU3RyaW5nSW1wbCog
dHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogCiAgICAgLy8gSGFzaCB0YWJsZSBkZWxl
dGVkIHZhbHVlcywgd2hpY2ggYXJlIG9ubHkgY29uc3RydWN0ZWQgYW5kIG5ldmVyIGNvcGllZCBv
ciBkZXN0cm95ZWQuCiAgICAgRm9ybUVsZW1lbnRLZXkoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFs
dWVUeXBlKSA6IG1fbmFtZShoYXNoVGFibGVEZWxldGVkVmFsdWUoKSkgeyB9CkBAIC05NSwxMyAr
OTUsMTMgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZigpIGNvbnN0OwogICAgIHZvaWQgZGVyZWYo
KSBjb25zdDsKIAotICAgIHN0YXRpYyBBdG9taWNTdHJpbmdJbXBsKiBoYXNoVGFibGVEZWxldGVk
VmFsdWUoKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PEF0b21pY1N0cmluZ0ltcGwqPigtMSk7
IH0KKyAgICBzdGF0aWMgQXRvbVN0cmluZ0ltcGwqIGhhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIHsg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8QXRvbVN0cmluZ0ltcGwqPigtMSk7IH0KIAotICAgIEF0
b21pY1N0cmluZ0ltcGwqIG1fbmFtZTsKLSAgICBBdG9taWNTdHJpbmdJbXBsKiBtX3R5cGU7Cisg
ICAgQXRvbVN0cmluZ0ltcGwqIG1fbmFtZTsKKyAgICBBdG9tU3RyaW5nSW1wbCogbV90eXBlOwog
fTsKIAotRm9ybUVsZW1lbnRLZXk6OkZvcm1FbGVtZW50S2V5KEF0b21pY1N0cmluZ0ltcGwqIG5h
bWUsIEF0b21pY1N0cmluZ0ltcGwqIHR5cGUpCitGb3JtRWxlbWVudEtleTo6Rm9ybUVsZW1lbnRL
ZXkoQXRvbVN0cmluZ0ltcGwqIG5hbWUsIEF0b21TdHJpbmdJbXBsKiB0eXBlKQogICAgIDogbV9u
YW1lKG5hbWUpCiAgICAgLCBtX3R5cGUodHlwZSkKIHsKQEAgLTE3Nyw4ICsxNzcsOCBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTYXZlZEZvcm1TdGF0ZT4gZGVzZXJpYWxp
emUoY29uc3QgVmVjdG9yPFN0cmluZz4mLCBzaXplX3QmIGluZGV4KTsKICAgICB2b2lkIHNlcmlh
bGl6ZVRvKFZlY3RvcjxTdHJpbmc+JikgY29uc3Q7CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Qg
eyByZXR1cm4gbV9zdGF0ZUZvck5ld0Zvcm1FbGVtZW50cy5pc0VtcHR5KCk7IH0KLSAgICB2b2lk
IGFwcGVuZENvbnRyb2xTdGF0ZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IEF0b21p
Y1N0cmluZyYgdHlwZSwgY29uc3QgRm9ybUNvbnRyb2xTdGF0ZSYpOwotICAgIEZvcm1Db250cm9s
U3RhdGUgdGFrZUNvbnRyb2xTdGF0ZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSk7CisgICAgdm9pZCBhcHBlbmRDb250cm9sU3RhdGUoY29uc3QgQXRv
bVN0cmluZyYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3QgRm9ybUNvbnRyb2xT
dGF0ZSYpOworICAgIEZvcm1Db250cm9sU3RhdGUgdGFrZUNvbnRyb2xTdGF0ZShjb25zdCBBdG9t
U3RyaW5nJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB0eXBlKTsKIAogICAgIFZlY3RvcjxTdHJp
bmc+IHJlZmVyZW5jZWRGaWxlUGF0aHMoKSBjb25zdDsKIApAQCAtMjI3LDEzICsyMjcsMTMgQEAg
dm9pZCBTYXZlZEZvcm1TdGF0ZTo6c2VyaWFsaXplVG8oVmVjdG9yPFN0cmluZz4mIHN0YXRlVmVj
dG9yKSBjb25zdAogICAgIH0KIH0KIAotdm9pZCBTYXZlZEZvcm1TdGF0ZTo6YXBwZW5kQ29udHJv
bFN0YXRlKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBl
LCBjb25zdCBGb3JtQ29udHJvbFN0YXRlJiBzdGF0ZSkKK3ZvaWQgU2F2ZWRGb3JtU3RhdGU6OmFw
cGVuZENvbnRyb2xTdGF0ZShjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5n
JiB0eXBlLCBjb25zdCBGb3JtQ29udHJvbFN0YXRlJiBzdGF0ZSkKIHsKICAgICBtX3N0YXRlRm9y
TmV3Rm9ybUVsZW1lbnRzLmFkZCh7IG5hbWUuaW1wbCgpLCB0eXBlLmltcGwoKSB9LCBEZXF1ZTxG
b3JtQ29udHJvbFN0YXRlPiB7IH0pLml0ZXJhdG9yLT52YWx1ZS5hcHBlbmQoc3RhdGUpOwogICAg
ICsrbV9jb250cm9sU3RhdGVDb3VudDsKIH0KIAotRm9ybUNvbnRyb2xTdGF0ZSBTYXZlZEZvcm1T
dGF0ZTo6dGFrZUNvbnRyb2xTdGF0ZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSkKK0Zvcm1Db250cm9sU3RhdGUgU2F2ZWRGb3JtU3RhdGU6OnRha2VD
b250cm9sU3RhdGUoY29uc3QgQXRvbVN0cmluZyYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYgdHlw
ZSkKIHsKICAgICBhdXRvIGl0ZXJhdG9yID0gbV9zdGF0ZUZvck5ld0Zvcm1FbGVtZW50cy5maW5k
KHsgbmFtZS5pbXBsKCksIHR5cGUuaW1wbCgpIH0pOwogICAgIGlmIChpdGVyYXRvciA9PSBtX3N0
YXRlRm9yTmV3Rm9ybUVsZW1lbnRzLmVuZCgpKQpAQCAtMjY4LDExICsyNjgsMTEgQEAgY2xhc3Mg
Rm9ybUtleUdlbmVyYXRvciB7CiAKIHB1YmxpYzoKICAgICBGb3JtS2V5R2VuZXJhdG9yKCkgPSBk
ZWZhdWx0OwotICAgIEF0b21pY1N0cmluZyBmb3JtS2V5KGNvbnN0IEhUTUxGb3JtQ29udHJvbEVs
ZW1lbnRXaXRoU3RhdGUmKTsKKyAgICBBdG9tU3RyaW5nIGZvcm1LZXkoY29uc3QgSFRNTEZvcm1D
b250cm9sRWxlbWVudFdpdGhTdGF0ZSYpOwogICAgIHZvaWQgd2lsbERlbGV0ZUZvcm0oSFRNTEZv
cm1FbGVtZW50Kik7CiAKIHByaXZhdGU6Ci0gICAgdHlwZWRlZiBIYXNoTWFwPEhUTUxGb3JtRWxl
bWVudCosIEF0b21pY1N0cmluZz4gRm9ybVRvS2V5TWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxI
VE1MRm9ybUVsZW1lbnQqLCBBdG9tU3RyaW5nPiBGb3JtVG9LZXlNYXA7CiAgICAgdHlwZWRlZiBI
YXNoTWFwPFN0cmluZywgdW5zaWduZWQ+IEZvcm1TaWduYXR1cmVUb05leHRJbmRleE1hcDsKICAg
ICBGb3JtVG9LZXlNYXAgbV9mb3JtVG9LZXlNYXA7CiAgICAgRm9ybVNpZ25hdHVyZVRvTmV4dElu
ZGV4TWFwIG1fZm9ybVNpZ25hdHVyZVRvTmV4dEluZGV4TWFwOwpAQCAtMjkxLDcgKzI5MSw3IEBA
IHN0YXRpYyBpbmxpbmUgdm9pZCByZWNvcmRGb3JtU3RydWN0dXJlKGNvbnN0IEhUTUxGb3JtRWxl
bWVudCYgZm9ybSwgU3RyaW5nQnVpbGRlCiAgICAgICAgIFJlZlB0cjxIVE1MRm9ybUNvbnRyb2xF
bGVtZW50V2l0aFN0YXRlPiBjb250cm9sID0gc3RhdGljX2Nhc3Q8SFRNTEZvcm1Db250cm9sRWxl
bWVudFdpdGhTdGF0ZSo+KGNvbnRyb2xzW2ldKTsKICAgICAgICAgaWYgKCFvd25lckZvcm1Gb3JT
dGF0ZSgqY29udHJvbCkpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgQXRvbWljU3Ry
aW5nIG5hbWUgPSBjb250cm9sLT5uYW1lKCk7CisgICAgICAgIEF0b21TdHJpbmcgbmFtZSA9IGNv
bnRyb2wtPm5hbWUoKTsKICAgICAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQogICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgIG5hbWVkQ29udHJvbHMrKzsKQEAgLTMxNSwxMSArMzE1LDExIEBA
IHN0YXRpYyBpbmxpbmUgU3RyaW5nIGZvcm1TaWduYXR1cmUoY29uc3QgSFRNTEZvcm1FbGVtZW50
JiBmb3JtKQogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKLUF0b21pY1N0cmlu
ZyBGb3JtS2V5R2VuZXJhdG9yOjpmb3JtS2V5KGNvbnN0IEhUTUxGb3JtQ29udHJvbEVsZW1lbnRX
aXRoU3RhdGUmIGNvbnRyb2wpCitBdG9tU3RyaW5nIEZvcm1LZXlHZW5lcmF0b3I6OmZvcm1LZXko
Y29uc3QgSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZSYgY29udHJvbCkKIHsKICAgICBh
dXRvIGZvcm0gPSBtYWtlUmVmUHRyKG93bmVyRm9ybUZvclN0YXRlKGNvbnRyb2wpKTsKICAgICBp
ZiAoIWZvcm0pIHsKLSAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4g
Zm9ybUtleUZvck5vT3duZXIoIk5vIG93bmVyIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9tU3RyaW5nPiBmb3Jt
S2V5Rm9yTm9Pd25lcigiTm8gb3duZXIiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCk7CiAgICAgICAgIHJldHVybiBmb3JtS2V5Rm9yTm9Pd25lcjsKICAgICB9CiAKQEAgLTQyMiw3
ICs0MjIsNyBAQCB2b2lkIEZvcm1Db250cm9sbGVyOjpmb3JtU3RhdGVzRnJvbVN0YXRlVmVjdG9y
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzdGF0ZVZlY3RvcgogICAgICAgICByZXR1cm47CiAKICAg
ICB3aGlsZSAoaSArIDEgPCBzdGF0ZVZlY3Rvci5zaXplKCkpIHsKLSAgICAgICAgQXRvbWljU3Ry
aW5nIGZvcm1LZXkgPSBzdGF0ZVZlY3RvcltpKytdOworICAgICAgICBBdG9tU3RyaW5nIGZvcm1L
ZXkgPSBzdGF0ZVZlY3RvcltpKytdOwogICAgICAgICBhdXRvIHN0YXRlID0gU2F2ZWRGb3JtU3Rh
dGU6OmRlc2VyaWFsaXplKHN0YXRlVmVjdG9yLCBpKTsKICAgICAgICAgaWYgKCFzdGF0ZSkgewog
ICAgICAgICAgICAgaSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1D
b250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmgKaW5kZXgg
NDVhYTQzZGQxOTQwNzY1MzU3YTgyOWI3ZDZmOWVmNWFhMzFlOTY4OS4uOWQ1MjY4ZThhMjQzZDJm
YzcwYWQ2Y2NiMWFlODZlNzBkM2MxOGVlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9Gb3JtQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xs
ZXIuaApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdHlwZWRlZiBM
aXN0SGFzaFNldDxSZWZQdHI8SFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZT4+IEZvcm1F
bGVtZW50TGlzdEhhc2hTZXQ7Ci0gICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxBdG9taWNTdHJp
bmdJbXBsPiwgc3RkOjp1bmlxdWVfcHRyPFNhdmVkRm9ybVN0YXRlPj4gU2F2ZWRGb3JtU3RhdGVN
YXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxBdG9tU3RyaW5nSW1wbD4sIHN0ZDo6dW5p
cXVlX3B0cjxTYXZlZEZvcm1TdGF0ZT4+IFNhdmVkRm9ybVN0YXRlTWFwOwogCiAgICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxTYXZlZEZvcm1TdGF0ZU1hcD4gY3JlYXRlU2F2ZWRGb3JtU3RhdGVN
YXAoY29uc3QgRm9ybUVsZW1lbnRMaXN0SGFzaFNldCYpOwogICAgIEZvcm1Db250cm9sU3RhdGUg
dGFrZVN0YXRlRm9yRm9ybUVsZW1lbnQoY29uc3QgSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhT
dGF0ZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQWxsQ29sbGVjdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbGxDb2xsZWN0aW9uLmNwcAppbmRleCBk
ZTkwMzY3YjE4MmZjMzdiOTBjNTVlN2UwZTNmMTRiODk0OWIxNDkwLi43NzdjNGU3ZjViZThiNDRm
NTJmMGQ0Mzg4OGFjNjI0NDRhOTdkMTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxBbGxDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbGxD
b2xsZWN0aW9uLmNwcApAQCAtNDgsNyArNDgsNyBAQCBpbmxpbmUgSFRNTEFsbENvbGxlY3Rpb246
OkhUTUxBbGxDb2xsZWN0aW9uKERvY3VtZW50JiBkb2N1bWVudCwgQ29sbGVjdGlvblR5cGUgdAog
fQogCiAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9pbmZyYXN0cnVj
dHVyZS5odG1sI2RvbS1odG1sYWxsY29sbGVjdGlvbi1pdGVtCi1PcHRpb25hbDxWYXJpYW50PFJl
ZlB0cjxIVE1MQ29sbGVjdGlvbj4sIFJlZlB0cjxFbGVtZW50Pj4+IEhUTUxBbGxDb2xsZWN0aW9u
OjpuYW1lZE9ySW5kZXhlZEl0ZW1Pckl0ZW1zKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZU9ySW5k
ZXgpIGNvbnN0CitPcHRpb25hbDxWYXJpYW50PFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4sIFJlZlB0
cjxFbGVtZW50Pj4+IEhUTUxBbGxDb2xsZWN0aW9uOjpuYW1lZE9ySW5kZXhlZEl0ZW1Pckl0ZW1z
KGNvbnN0IEF0b21TdHJpbmcmIG5hbWVPckluZGV4KSBjb25zdAogewogICAgIGlmIChuYW1lT3JJ
bmRleC5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKQEAgLTYwLDcgKzYw
LDcgQEAgT3B0aW9uYWw8VmFyaWFudDxSZWZQdHI8SFRNTENvbGxlY3Rpb24+LCBSZWZQdHI8RWxl
bWVudD4+PiBIVE1MQWxsQ29sbGVjdGlvbjo6bmEKIH0KIAogLy8gaHR0cHM6Ly9odG1sLnNwZWMu
d2hhdHdnLm9yZy9tdWx0aXBhZ2UvaW5mcmFzdHJ1Y3R1cmUuaHRtbCNjb25jZXB0LWdldC1hbGwt
bmFtZWQKLU9wdGlvbmFsPFZhcmlhbnQ8UmVmUHRyPEhUTUxDb2xsZWN0aW9uPiwgUmVmUHRyPEVs
ZW1lbnQ+Pj4gSFRNTEFsbENvbGxlY3Rpb246Om5hbWVkSXRlbU9ySXRlbXMoY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lKSBjb25zdAorT3B0aW9uYWw8VmFyaWFudDxSZWZQdHI8SFRNTENvbGxlY3Rp
b24+LCBSZWZQdHI8RWxlbWVudD4+PiBIVE1MQWxsQ29sbGVjdGlvbjo6bmFtZWRJdGVtT3JJdGVt
cyhjb25zdCBBdG9tU3RyaW5nJiBuYW1lKSBjb25zdAogewogICAgIGF1dG8gbmFtZWRJdGVtcyA9
IHRoaXMtPm5hbWVkSXRlbXMobmFtZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEFsbENvbGxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFsbENvbGxl
Y3Rpb24uaAppbmRleCAyNWZjNWE2MTIyMWVhNmFlM2M1Mzc2ZTMyN2M2OTcxZTVmMWM2MTFhLi4x
MzU4NDE2ZmUzODkyYTk5ODg1YTZmOWY0MDQ5Y2RlMWQ5ZDM3ZDBiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxBbGxDb2xsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5oCkBAIC0zMyw4ICszMyw4IEBAIGNsYXNzIEhUTUxBbGxD
b2xsZWN0aW9uIGZpbmFsIDogcHVibGljIEFsbERlc2NlbmRhbnRzQ29sbGVjdGlvbiB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFJlZjxIVE1MQWxsQ29sbGVjdGlvbj4gY3JlYXRlKERvY3VtZW50Jiwg
Q29sbGVjdGlvblR5cGUpOwogCi0gICAgT3B0aW9uYWw8VmFyaWFudDxSZWZQdHI8SFRNTENvbGxl
Y3Rpb24+LCBSZWZQdHI8RWxlbWVudD4+PiBuYW1lZE9ySW5kZXhlZEl0ZW1Pckl0ZW1zKGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZU9ySW5kZXgpIGNvbnN0OwotICAgIE9wdGlvbmFsPFZhcmlhbnQ8
UmVmUHRyPEhUTUxDb2xsZWN0aW9uPiwgUmVmUHRyPEVsZW1lbnQ+Pj4gbmFtZWRJdGVtT3JJdGVt
cyhjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdDsKKyAgICBPcHRpb25hbDxWYXJpYW50PFJlZlB0
cjxIVE1MQ29sbGVjdGlvbj4sIFJlZlB0cjxFbGVtZW50Pj4+IG5hbWVkT3JJbmRleGVkSXRlbU9y
SXRlbXMoY29uc3QgQXRvbVN0cmluZyYgbmFtZU9ySW5kZXgpIGNvbnN0OworICAgIE9wdGlvbmFs
PFZhcmlhbnQ8UmVmUHRyPEhUTUxDb2xsZWN0aW9uPiwgUmVmUHRyPEVsZW1lbnQ+Pj4gbmFtZWRJ
dGVtT3JJdGVtcyhjb25zdCBBdG9tU3RyaW5nJikgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgSFRN
TEFsbENvbGxlY3Rpb24oRG9jdW1lbnQmLCBDb2xsZWN0aW9uVHlwZSk7CkBAIC00NCw3ICs0NCw3
IEBAIHN0YXRpY19hc3NlcnQoc2l6ZW9mKEhUTUxBbGxDb2xsZWN0aW9uKSA9PSBzaXplb2YoQWxs
RGVzY2VuZGFudHNDb2xsZWN0aW9uKSwgIiIpCiBjbGFzcyBIVE1MQWxsTmFtZWRTdWJDb2xsZWN0
aW9uIGZpbmFsIDogcHVibGljIENhY2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxBbGxOYW1lZFN1YkNv
bGxlY3Rpb24sIENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpEZXNjZW5kYW50cz4gewogICAgIFdU
Rl9NQUtFX0lTT19BTExPQ0FURUQoSFRNTEFsbE5hbWVkU3ViQ29sbGVjdGlvbik7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZjxIVE1MQWxsTmFtZWRTdWJDb2xsZWN0aW9uPiBjcmVhdGUoRG9jdW1l
bnQmIGRvY3VtZW50LCBDb2xsZWN0aW9uVHlwZSB0eXBlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5h
bWUpCisgICAgc3RhdGljIFJlZjxIVE1MQWxsTmFtZWRTdWJDb2xsZWN0aW9uPiBjcmVhdGUoRG9j
dW1lbnQmIGRvY3VtZW50LCBDb2xsZWN0aW9uVHlwZSB0eXBlLCBjb25zdCBBdG9tU3RyaW5nJiBu
YW1lKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSFRNTEFsbE5hbWVkU3Vi
Q29sbGVjdGlvbihkb2N1bWVudCwgdHlwZSwgbmFtZSkpOwogICAgIH0KQEAgLTUzLDE0ICs1Mywx
NCBAQCBwdWJsaWM6CiAgICAgYm9vbCBlbGVtZW50TWF0Y2hlcyhFbGVtZW50JikgY29uc3Q7CiAK
IHByaXZhdGU6Ci0gICAgSFRNTEFsbE5hbWVkU3ViQ29sbGVjdGlvbihEb2N1bWVudCYgZG9jdW1l
bnQsIENvbGxlY3Rpb25UeXBlIHR5cGUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKKyAgICBI
VE1MQWxsTmFtZWRTdWJDb2xsZWN0aW9uKERvY3VtZW50JiBkb2N1bWVudCwgQ29sbGVjdGlvblR5
cGUgdHlwZSwgY29uc3QgQXRvbVN0cmluZyYgbmFtZSkKICAgICAgICAgOiBDYWNoZWRIVE1MQ29s
bGVjdGlvbjxIVE1MQWxsTmFtZWRTdWJDb2xsZWN0aW9uLCBDb2xsZWN0aW9uVHJhdmVyc2FsVHlw
ZTo6RGVzY2VuZGFudHM+KGRvY3VtZW50LCB0eXBlKQogICAgICAgICAsIG1fbmFtZShuYW1lKQog
ICAgIHsKICAgICAgICAgQVNTRVJUKHR5cGUgPT0gRG9jdW1lbnRBbGxOYW1lZEl0ZW1zKTsKICAg
ICB9CiAKLSAgICBBdG9taWNTdHJpbmcgbV9uYW1lOworICAgIEF0b21TdHJpbmcgbV9uYW1lOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNo
b3JFbGVtZW50LmNwcAppbmRleCA0MWFiZmUzYjdiODRiMTc5YjZkMTZkZjY2MmYyZTdhZTRiZjM3
ZDU1Li4xMDQ3YzU4ZWVjMzUzNmUzZDM5OTNhN2I2ZTU4NjI1YjAxNTk1MmYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcApAQCAtMjMzLDcgKzIzMyw3IEBAIHZv
aWQgSFRNTEFuY2hvckVsZW1lbnQ6OnNldEFjdGl2ZShib29sIGRvd24sIGJvb2wgcGF1c2UpCiAg
ICAgSFRNTEVsZW1lbnQ6OnNldEFjdGl2ZShkb3duLCBwYXVzZSk7CiB9CiAKLXZvaWQgSFRNTEFu
Y2hvckVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNv
bnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCit2b2lkIEhUTUxBbmNob3JFbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1
ZSkKIHsKICAgICBpZiAobmFtZSA9PSBocmVmQXR0cikgewogICAgICAgICBib29sIHdhc0xpbmsg
PSBpc0xpbmsoKTsKQEAgLTI1MSw5ICsyNTEsOSBAQCB2b2lkIEhUTUxBbmNob3JFbGVtZW50Ojpw
YXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdAog
ICAgICAgICAvLyBEbyBub3RoaW5nLgogICAgIH0gZWxzZSBpZiAobmFtZSA9PSByZWxBdHRyKSB7
CiAgICAgICAgIC8vIFVwZGF0ZSBIVE1MQW5jaG9yRWxlbWVudDo6cmVsTGlzdCgpIGlmIG1vcmUg
cmVsIGF0dHJpYnV0ZXMgdmFsdWVzIGFyZSBzdXBwb3J0ZWQuCi0gICAgICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5vUmVmZXJyZXIoIm5vcmVmZXJyZXIiLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPEF0b21pY1N0cmluZz4gbm9PcGVuZXIoIm5vb3BlbmVyIiwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNT
dHJpbmc+IG9wZW5lcigib3BlbmVyIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9tU3RyaW5nPiBub1JlZmVycmVy
KCJub3JlZmVycmVyIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgICAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbVN0cmluZz4gbm9PcGVuZXIoIm5vb3BlbmVyIiwg
QXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgICAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8QXRvbVN0cmluZz4gb3BlbmVyKCJvcGVuZXIiLCBBdG9tU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7CiAgICAgICAgIGNvbnN0IGJvb2wgc2hvdWxkRm9sZENhc2UgPSB0cnVl
OwogICAgICAgICBTcGFjZVNwbGl0U3RyaW5nIHJlbFZhbHVlKHZhbHVlLCBzaG91bGRGb2xkQ2Fz
ZSk7CiAgICAgICAgIGlmIChyZWxWYWx1ZS5jb250YWlucyhub1JlZmVycmVyKSkKQEAgLTI4OCw3
ICsyODgsNyBAQCBib29sIEhUTUxBbmNob3JFbGVtZW50OjpjYW5TdGFydFNlbGVjdGlvbigpIGNv
bnN0CiAKIGJvb2wgSFRNTEFuY2hvckVsZW1lbnQ6OmRyYWdnYWJsZSgpIGNvbnN0CiB7Ci0gICAg
Y29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSA9IGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRp
b24oZHJhZ2dhYmxlQXR0cik7CisgICAgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUgPSBhdHRyaWJ1
dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGRyYWdnYWJsZUF0dHIpOwogICAgIGlmIChlcXVhbExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh2YWx1ZSwgInRydWUiKSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHZhbHVlLCAiZmFsc2Ui
KSkKQEAgLTMwMSw3ICszMDEsNyBAQCBVUkwgSFRNTEFuY2hvckVsZW1lbnQ6OmhyZWYoKSBjb25z
dAogICAgIHJldHVybiBkb2N1bWVudCgpLmNvbXBsZXRlVVJMKHN0cmlwTGVhZGluZ0FuZFRyYWls
aW5nSFRNTFNwYWNlcyhhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGhyZWZBdHRyKSkp
OwogfQogCi12b2lkIEhUTUxBbmNob3JFbGVtZW50OjpzZXRIcmVmKGNvbnN0IEF0b21pY1N0cmlu
ZyYgdmFsdWUpCit2b2lkIEhUTUxBbmNob3JFbGVtZW50OjpzZXRIcmVmKGNvbnN0IEF0b21TdHJp
bmcmIHZhbHVlKQogewogICAgIHNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oaHJl
ZkF0dHIsIHZhbHVlKTsKIH0KQEAgLTMyNSw3ICszMjUsNyBAQCBET01Ub2tlbkxpc3QmIEhUTUxB
bmNob3JFbGVtZW50OjpyZWxMaXN0KCkgY29uc3QKICAgICByZXR1cm4gKm1fcmVsTGlzdDsKIH0K
IAotY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MQW5jaG9yRWxlbWVudDo6bmFtZSgpIGNvbnN0Citj
b25zdCBBdG9tU3RyaW5nJiBIVE1MQW5jaG9yRWxlbWVudDo6bmFtZSgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIGdldE5hbWVBdHRyaWJ1dGUoKTsKIH0KQEAgLTM4MCw3ICszODAsNyBAQCBib29sIEhU
TUxBbmNob3JFbGVtZW50Ojppc1N5c3RlbVByZXZpZXdMaW5rKCkgY29uc3QKICAgICBpZiAoIVJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc3lzdGVtUHJldmlld0VuYWJs
ZWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEF0b21pY1N0cmluZz4gc3lzdGVtUHJldmlld1JlbFZhbHVlKCJhciIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9tU3Ry
aW5nPiBzeXN0ZW1QcmV2aWV3UmVsVmFsdWUoImFyIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOwogCiAgICAgaWYgKCFyZWxMaXN0KCkuY29udGFpbnMoc3lzdGVtUHJldmlld1Jl
bFZhbHVlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5j
aG9yRWxlbWVudC5oCmluZGV4IDRiNGJjNzkwNDhmNjI4ZGE4OGM2ZTI1NTA5MDYzZDg2YmJmYmMz
YmIuLmU5ZDJkODgwYTE3ZWYyZTFmOGFlMTNhMzAwNmYzNmQyZmE0NDA4MjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmgKQEAgLTUwLDkgKzUwLDkgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgfkhUTUxBbmNob3JFbGVtZW50KCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBV
UkwgaHJlZigpIGNvbnN0OwotICAgIHZvaWQgc2V0SHJlZihjb25zdCBBdG9taWNTdHJpbmcmKTsK
KyAgICB2b2lkIHNldEhyZWYoY29uc3QgQXRvbVN0cmluZyYpOwogCi0gICAgY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lKCkgY29uc3Q7CisgICAgY29uc3QgQXRvbVN0cmluZyYgbmFtZSgpIGNvbnN0
OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIG9yaWdpbigpIGNvbnN0OwogCkBAIC03Niw3
ICs3Niw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBIVE1MQW5jaG9yRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAotICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOworICAg
IHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJp
bmcmKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBib29sIHN1cHBvcnRzRm9jdXMoKSBjb25z
dCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5jcHAKaW5k
ZXggOTE0MGNiMzkxYTA0NDg4ZGFmYTBjODBhNTI3M2JiYTIyMjYxZjIxNC4uYzhmNWY1ZGE4NmM4
YjIzZjA4ZGYwMDhhYmE0Njk0MGUyZjhkNWJiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQXBwbGV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QXBwbGV0RWxlbWVudC5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgUmVmPEhUTUxBcHBsZXRFbGVtZW50
PiBIVE1MQXBwbGV0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IEQKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIEhUTUxBcHBsZXRFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcm
IHZhbHVlKQordm9pZCBIVE1MQXBwbGV0RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKG5h
bWUgPT0gYWx0QXR0cgogICAgICAgICB8fCBuYW1lID09IGFyY2hpdmVBdHRyCkBAIC0xMzgsMTkg
KzEzOCwxOSBAQCB2b2lkIEhUTUxBcHBsZXRFbGVtZW50Ojp1cGRhdGVXaWRnZXQoQ3JlYXRlUGx1
Z2lucyBjcmVhdGVQbHVnaW5zKQogICAgIHBhcmFtTmFtZXMuYXBwZW5kKCJjb2RlIik7CiAgICAg
cGFyYW1WYWx1ZXMuYXBwZW5kKGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oY29kZUF0
dHIpLnN0cmluZygpKTsKIAotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgY29kZUJhc2UgPSBhdHRy
aWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGNvZGViYXNlQXR0cik7CisgICAgY29uc3QgQXRv
bVN0cmluZyYgY29kZUJhc2UgPSBhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGNvZGVi
YXNlQXR0cik7CiAgICAgaWYgKCFjb2RlQmFzZS5pc051bGwoKSkgewogICAgICAgICBwYXJhbU5h
bWVzLmFwcGVuZCgiY29kZUJhc2UiX3MpOwogICAgICAgICBwYXJhbVZhbHVlcy5hcHBlbmQoY29k
ZUJhc2Uuc3RyaW5nKCkpOwogICAgIH0KIAotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSA9
IGRvY3VtZW50KCkuaXNIVE1MRG9jdW1lbnQoKSA/IGdldE5hbWVBdHRyaWJ1dGUoKSA6IGdldElk
QXR0cmlidXRlKCk7CisgICAgY29uc3QgQXRvbVN0cmluZyYgbmFtZSA9IGRvY3VtZW50KCkuaXNI
VE1MRG9jdW1lbnQoKSA/IGdldE5hbWVBdHRyaWJ1dGUoKSA6IGdldElkQXR0cmlidXRlKCk7CiAg
ICAgaWYgKCFuYW1lLmlzTnVsbCgpKSB7CiAgICAgICAgIHBhcmFtTmFtZXMuYXBwZW5kKCJuYW1l
Iik7CiAgICAgICAgIHBhcmFtVmFsdWVzLmFwcGVuZChuYW1lLnN0cmluZygpKTsKICAgICB9CiAK
LSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGFyY2hpdmUgPSBhdHRyaWJ1dGVXaXRob3V0U3luY2hy
b25pemF0aW9uKGFyY2hpdmVBdHRyKTsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBhcmNoaXZlID0g
YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihhcmNoaXZlQXR0cik7CiAgICAgaWYgKCFh
cmNoaXZlLmlzTnVsbCgpKSB7CiAgICAgICAgIHBhcmFtTmFtZXMuYXBwZW5kKCJhcmNoaXZlIl9z
KTsKICAgICAgICAgcGFyYW1WYWx1ZXMuYXBwZW5kKGFyY2hpdmUuc3RyaW5nKCkpOwpAQCAtMTU5
LDcgKzE1OSw3IEBAIHZvaWQgSFRNTEFwcGxldEVsZW1lbnQ6OnVwZGF0ZVdpZGdldChDcmVhdGVQ
bHVnaW5zIGNyZWF0ZVBsdWdpbnMpCiAgICAgcGFyYW1OYW1lcy5hcHBlbmQoImJhc2VVUkwiX3Mp
OwogICAgIHBhcmFtVmFsdWVzLmFwcGVuZChkb2N1bWVudCgpLmJhc2VVUkwoKS5zdHJpbmcoKSk7
CiAKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIG1heVNjcmlwdCA9IGF0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24obWF5c2NyaXB0QXR0cik7CisgICAgY29uc3QgQXRvbVN0cmluZyYgbWF5
U2NyaXB0ID0gYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihtYXlzY3JpcHRBdHRyKTsK
ICAgICBpZiAoIW1heVNjcmlwdC5pc051bGwoKSkgewogICAgICAgICBwYXJhbU5hbWVzLmFwcGVu
ZCgibWF5U2NyaXB0Il9zKTsKICAgICAgICAgcGFyYW1WYWx1ZXMuYXBwZW5kKG1heVNjcmlwdC5z
dHJpbmcoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcHBsZXRFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50LmgKaW5kZXggNjBk
ZDU4MTEyZWM2ZjZjYTUwMDNhMTEwMmJlNDFhODA0MmFiYjQ5NC4uMGVkZGVkY2JmYWMyNzJmZTli
NTE4OGVhYjU2NGUzNWU4NTRkZmM4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQXBwbGV0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVs
ZW1lbnQuaApAQCAtMzQsNyArMzQsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEhUTUxBcHBs
ZXRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCi0gICAgdm9pZCBw
YXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikg
ZmluYWw7CisgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29u
c3QgQXRvbVN0cmluZyYpIGZpbmFsOwogICAgIGJvb2wgaXNVUkxBdHRyaWJ1dGUoY29uc3QgQXR0
cmlidXRlJikgY29uc3QgZmluYWw7CiAgICAgCiAgICAgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNv
bnN0IFJlbmRlclN0eWxlJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxBcmVhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVu
dC5jcHAKaW5kZXggYmFiMTM2ZThhMWMyMmIyYzk3NzU4NmFjODY0Yjg0MGZkYTEwMGY5Ny4uYWMw
NzU4ZGU4M2IwNDg4MmE1ZDg5MjJmZDQwNTU0OGVmOTU2ZGNhMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEFyZWFFbGVtZW50LmNwcApAQCAtNTIsNyArNTIsNyBAQCBSZWY8SFRNTEFyZWFFbGVt
ZW50PiBIVE1MQXJlYUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1l
LCBEb2N1bQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEhUTUxBcmVhRWxlbWVudCh0YWdOYW1l
LCBkb2N1bWVudCkpOwogfQogCi12b2lkIEhUTUxBcmVhRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKK3Zv
aWQgSFRNTEFyZWFFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBu
YW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAobmFtZSA9PSBzaGFwZUF0
dHIpIHsKICAgICAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHZhbHVlLCAi
ZGVmYXVsdCIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFyZWFFbGVtZW50LmgKaW5kZXggY2Q2ZmRi
Y2EzYjIyOTc1Y2ZlOGEzNmIzZDRmMjUxOTMzZjFhNjE2Ny4uOGVmNDY2YmI4NGY2NmM3Y2M0MjYw
ZmJmMjQxZDljM2Q1ZDdiNjVkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QXJlYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5o
CkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSFRNTEFyZWFFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCi0gICAgdm9pZCBwYXJzZUF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgZmluYWw7Cisg
ICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbVN0
cmluZyYpIGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNGb2N1cygpIGNvbnN0IGZpbmFsOwogICAg
IFN0cmluZyB0YXJnZXQoKSBjb25zdCBmaW5hbDsKICAgICBib29sIGlzS2V5Ym9hcmRGb2N1c2Fi
bGUoS2V5Ym9hcmRFdmVudCopIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCmluZGV4IGMwNDBjMTk4ZDlkMWI3MGQ3MGVjNTBlZjJh
NDk4MTRlYmZkM2IxMTAuLmZjZmE3ODRhMDVjZDUwNTViMThlMzZkYjU4OThiZTcwYWRmNzI2MTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAKQEAg
LTE1Niw3ICsxNTYsNyBAQCBib29sIEhUTUxBdHRhY2htZW50RWxlbWVudDo6aGFzRW5jbG9zaW5n
SW1hZ2UoKSBjb25zdAogICAgIHJldHVybiBpczxIVE1MSW1hZ2VFbGVtZW50PihzaGFkb3dIb3N0
KCkpOwogfQogCi12b2lkIEhUTUxBdHRhY2htZW50RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKK3ZvaWQg
SFRNTEF0dGFjaG1lbnRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAobmFtZSA9PSBwcm9n
cmVzc0F0dHIgfHwgbmFtZSA9PSBzdWJ0aXRsZUF0dHIgfHwgbmFtZSA9PSB0aXRsZUF0dHIgfHwg
bmFtZSA9PSB0eXBlQXR0cikgewogICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5y
ZW5kZXJlcigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVu
dEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgK
aW5kZXggYzg0YThiZjk1ZGYxZDQ5ODEwYzQ3NDZkOThlOGEwMDMyODg4N2I1Ny4uYTliYjI0NzU3
NTVhMjhhYzJkMzE3OTY0NmFiOGUzZDFhOTJmYmNlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxBdHRhY2htZW50RWxlbWVudC5oCkBAIC04Myw3ICs4Myw3IEBAIHByaXZhdGU6CiAjZW5k
aWYKICAgICB9CiAgICAgYm9vbCBjYW5Db250YWluUmFuZ2VFbmRQb2ludCgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgZmluYWw7CisgICAgdm9pZCBwYXJzZUF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbVN0cmluZyYpIGZpbmFsOwogICAg
IAogICAgIFJlZlB0cjxGaWxlPiBtX2ZpbGU7CiAgICAgU3RyaW5nIG1fdW5pcXVlSWRlbnRpZmll
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF1ZGlvRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdWRpb0VsZW1lbnQuY3BwCmluZGV4IGRkMTMzMWI5
MDJmZjFkZmNkZmFkMjZiODk1ZGIwMWI3ZGEyZmRlNzguLmNjOGQ1OTM3ZjMxNDc4ODc3NTg3OTE4
ZWFiMzEyOTQyNGZlZjhkYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF1
ZGlvRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXVkaW9FbGVtZW50
LmNwcApAQCAtNTIsNyArNTIsNyBAQCBSZWY8SFRNTEF1ZGlvRWxlbWVudD4gSFRNTEF1ZGlvRWxl
bWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvYwogICAgIHJldHVy
biBlbGVtZW50OwogfQogCi1SZWY8SFRNTEF1ZGlvRWxlbWVudD4gSFRNTEF1ZGlvRWxlbWVudDo6
Y3JlYXRlRm9ySlNDb25zdHJ1Y3RvcihEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IEF0b21pY1N0
cmluZyYgc3JjKQorUmVmPEhUTUxBdWRpb0VsZW1lbnQ+IEhUTUxBdWRpb0VsZW1lbnQ6OmNyZWF0
ZUZvckpTQ29uc3RydWN0b3IoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBBdG9tU3RyaW5nJiBz
cmMpCiB7CiAgICAgYXV0byBlbGVtZW50ID0gY3JlYXRlKGF1ZGlvVGFnLCBkb2N1bWVudCwgZmFs
c2UpOwogICAgIGVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24ocHJl
bG9hZEF0dHIsICJhdXRvIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxB
dWRpb0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF1ZGlvRWxlbWVudC5oCmlu
ZGV4IDI3MTNiZjI0OWE3ODFlYTdkYTBiNmY4NWZjMGYzNTJmZWIwYTNlYjAuLjc2Zjc5OWExYmJl
MjIxOGNlOTM2MWYyMTcyZDIzMDk1MDg5ZWU1OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEF1ZGlvRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF1
ZGlvRWxlbWVudC5oCkBAIC0zOCw3ICszOCw3IEBAIGNsYXNzIEhUTUxBdWRpb0VsZW1lbnQgZmlu
YWwgOiBwdWJsaWMgSFRNTE1lZGlhRWxlbWVudCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRF
RChIVE1MQXVkaW9FbGVtZW50KTsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEhUTUxBdWRpb0Vs
ZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmLCBib29sKTsKLSAg
ICBzdGF0aWMgUmVmPEhUTUxBdWRpb0VsZW1lbnQ+IGNyZWF0ZUZvckpTQ29uc3RydWN0b3IoRG9j
dW1lbnQmLCBjb25zdCBBdG9taWNTdHJpbmcmIHNyYyk7CisgICAgc3RhdGljIFJlZjxIVE1MQXVk
aW9FbGVtZW50PiBjcmVhdGVGb3JKU0NvbnN0cnVjdG9yKERvY3VtZW50JiwgY29uc3QgQXRvbVN0
cmluZyYgc3JjKTsKIAogcHJpdmF0ZToKICAgICBIVE1MQXVkaW9FbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBEb2N1bWVudCYsIGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQXVkaW9FbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF1ZGlv
RWxlbWVudC5pZGwKaW5kZXggZTExMmI2YWE0N2IzNmE3MGYzYjk0MGMyMzdhZjIwNmRmNmU2ODAx
YS4uOGRiMTAyMmQwNDcxMWM2MDI2YjRiZTE3MzRlZjg1YTc5NTk4YTA2NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXVkaW9FbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxBdWRpb0VsZW1lbnQuaWRsCkBAIC0yNiw2ICsyNiw2IEBACiBbCiAgICAg
Q29uZGl0aW9uYWw9VklERU8sCiAgICAgQ29uc3RydWN0b3JDYWxsV2l0aD1Eb2N1bWVudCwKLSAg
ICBOYW1lZENvbnN0cnVjdG9yPUF1ZGlvKG9wdGlvbmFsIFtBdG9taWNTdHJpbmddIERPTVN0cmlu
ZyBzcmMpCisgICAgTmFtZWRDb25zdHJ1Y3Rvcj1BdWRpbyhvcHRpb25hbCBbQXRvbVN0cmluZ10g
RE9NU3RyaW5nIHNyYykKIF0gaW50ZXJmYWNlIEhUTUxBdWRpb0VsZW1lbnQgOiBIVE1MTWVkaWFF
bGVtZW50IHsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCUkVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQlJFbGVtZW50LmNwcAppbmRleCA5OTU2
YzA2ZTNkYjg3ZjE5OTNhOTgwNWI1ODcyZTU0ZTk5ZmI1ZmZkLi43MjA3ZTdmYTg3YWE3NzE1ZDE1
OWQ4MzNlZjhmMTc2NmI5ZGFjOGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxCUkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJSRWxlbWVudC5j
cHAKQEAgLTU4LDcgKzU4LDcgQEAgYm9vbCBIVE1MQlJFbGVtZW50Ojppc1ByZXNlbnRhdGlvbkF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdAogICAgIHJldHVybiBIVE1M
RWxlbWVudDo6aXNQcmVzZW50YXRpb25BdHRyaWJ1dGUobmFtZSk7CiB9CiAKLXZvaWQgSFRNTEJS
RWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUsIE11dGFibGVTdHlsZVBy
b3BlcnRpZXMmIHN0eWxlKQordm9pZCBIVE1MQlJFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVz
ZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0
cmluZyYgdmFsdWUsIE11dGFibGVTdHlsZVByb3BlcnRpZXMmIHN0eWxlKQogewogICAgIGlmIChu
YW1lID09IGNsZWFyQXR0cikgewogICAgICAgICAvLyBJZiB0aGUgc3RyaW5nIGlzIGVtcHR5LCB0
aGVuIGRvbid0IGFkZCB0aGUgY2xlYXIgcHJvcGVydHkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxCUkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJSRWxl
bWVudC5oCmluZGV4IDZhZGMxMTZkMGQ3NTlmYWVlMzJkZjk5NDA3Y2ExZDJiZDllNDQ5MjkuLjBi
Yjc5NjhjNjI1M2MxZTI5MmVmODQwNDliNzlkOGVmZjI1ZTNjMjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEJSRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEJSRWxlbWVudC5oCkBAIC0zOSw3ICszOSw3IEBAIHByaXZhdGU6CiAgICAgSFRNTEJSRWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAogICAgIGJvb2wgaXNQcmVz
ZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IGZpbmFsOwotICAg
IHZvaWQgY29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmLCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJikgZmlu
YWw7CisgICAgdm9pZCBjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmLCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVz
JikgZmluYWw7CiAKICAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJl
bmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIGZpbmFsOwog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJhc2VFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJhc2VFbGVtZW50LmNwcAppbmRleCBmYTQxMWM0ZGFm
MjUxMDM1ZDA5OTNmMzkyMmNlMmYwMmQ0OWQ0ZWJhLi5hYTA2ODhjYWRmZWQ2ZjY1OWEzN2MzYmU4
MzgxZGM4Y2YxM2M1NzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCYXNl
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQmFzZUVsZW1lbnQuY3Bw
CkBAIC00Niw3ICs0Niw3IEBAIFJlZjxIVE1MQmFzZUVsZW1lbnQ+IEhUTUxCYXNlRWxlbWVudDo6
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtCiAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgSFRNTEJhc2VFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKLXZv
aWQgSFRNTEJhc2VFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBu
YW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQordm9pZCBIVE1MQmFzZUVsZW1lbnQ6OnBh
cnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcm
IHZhbHVlKQogewogICAgIGlmIChuYW1lID09IGhyZWZBdHRyIHx8IG5hbWUgPT0gdGFyZ2V0QXR0
cikKICAgICAgICAgZG9jdW1lbnQoKS5wcm9jZXNzQmFzZUVsZW1lbnQoKTsKQEAgLTg1LDcgKzg1
LDcgQEAgVVJMIEhUTUxCYXNlRWxlbWVudDo6aHJlZigpIGNvbnN0CiAgICAgLy8gYmFzZSBlbGVt
ZW50cyBsaWtlIHRoaXMgb25lIGNhbiBiZSB1c2VkIHRvIHNldCB0aGF0IGJhc2UgVVJMLiBUaHVz
IHdlIG5lZWQgdG8gcmVzb2x2ZSByZWxhdGl2ZSB0byB0aGUgZG9jdW1lbnQncwogICAgIC8vIFVS
TCBhbmQgaWdub3JlIHRoZSBiYXNlIFVSTC4KIAotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0
cmlidXRlVmFsdWUgPSBhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGhyZWZBdHRyKTsK
KyAgICBjb25zdCBBdG9tU3RyaW5nJiBhdHRyaWJ1dGVWYWx1ZSA9IGF0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24oaHJlZkF0dHIpOwogICAgIGlmIChhdHRyaWJ1dGVWYWx1ZS5pc051bGwo
KSkKICAgICAgICAgcmV0dXJuIGRvY3VtZW50KCkudXJsKCk7CiAKQEAgLTk4LDcgKzk4LDcgQEAg
VVJMIEhUTUxCYXNlRWxlbWVudDo6aHJlZigpIGNvbnN0CiAgICAgcmV0dXJuIHVybDsKIH0KIAot
dm9pZCBIVE1MQmFzZUVsZW1lbnQ6OnNldEhyZWYoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkK
K3ZvaWQgSFRNTEJhc2VFbGVtZW50OjpzZXRIcmVmKGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKQog
ewogICAgIHNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oaHJlZkF0dHIsIHZhbHVl
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJhc2VFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCYXNlRWxlbWVudC5oCmluZGV4IDdjYjY5ZDk4Y2Y5
MTljMmQyNWYxNGM5NmZlYmE4ZjM4ZTRmNWFjNzYuLmU4YmI5ZDAxZjU4NWEyNzVkNjQwNzQxMmZj
ZDg1MGU3MDA5NmY3ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJhc2VF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQmFzZUVsZW1lbnQuaApAQCAt
MzIsMTQgKzMyLDE0IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEhUTUxCYXNlRWxlbWVudD4g
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCiAgICAgV0VCQ09SRV9F
WFBPUlQgVVJMIGhyZWYoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEhyZWYo
Y29uc3QgQXRvbWljU3RyaW5nJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRIcmVmKGNv
bnN0IEF0b21TdHJpbmcmKTsKIAogcHJpdmF0ZToKICAgICBIVE1MQmFzZUVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKICAgICBTdHJpbmcgdGFyZ2V0KCkgY29uc3Qg
ZmluYWw7CiAgICAgYm9vbCBpc1VSTEF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBjb25zdCBm
aW5hbDsKLSAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25z
dCBBdG9taWNTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5nJikgZmluYWw7CiAgICAgSW5zZXJ0ZWRJbnRv
QW5jZXN0b3JSZXN1bHQgaW5zZXJ0ZWRJbnRvQW5jZXN0b3IoSW5zZXJ0aW9uVHlwZSwgQ29udGFp
bmVyTm9kZSYpIGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlZEZyb21BbmNlc3RvcihSZW1vdmFsVHlw
ZSwgQ29udGFpbmVyTm9kZSYpIGZpbmFsOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEJvZHlFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJvZHlF
bGVtZW50LmNwcAppbmRleCA5Njk5Y2E5NWZmNTIyYzc5MjI4ZGVmNDBlZThkYzY0Y2M4ODdhZmY5
Li40OWE2NjBkZWI1YmNiNWM1YzhkMWU0MjIyNzdhNWI3NGFiOGM0OTAxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQm9keUVsZW1lbnQuY3BwCkBAIC02OSw3ICs2OSw3IEBAIGJvb2wgSFRNTEJv
ZHlFbGVtZW50Ojppc1ByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBu
YW1lKSBjb25zdAogICAgIHJldHVybiBIVE1MRWxlbWVudDo6aXNQcmVzZW50YXRpb25BdHRyaWJ1
dGUobmFtZSk7CiB9CiAKLXZvaWQgSFRNTEJvZHlFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVz
ZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWlj
U3RyaW5nJiB2YWx1ZSwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYgc3R5bGUpCit2b2lkIEhUTUxC
b2R5RWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlLCBNdXRhYmxlU3R5bGVQ
cm9wZXJ0aWVzJiBzdHlsZSkKIHsKICAgICBpZiAobmFtZSA9PSBiYWNrZ3JvdW5kQXR0cikgewog
ICAgICAgICBTdHJpbmcgdXJsID0gc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKHZh
bHVlKTsKQEAgLTEzNSwxMyArMTM1LDEzIEBAIEhUTUxFbGVtZW50OjpFdmVudEhhbmRsZXJOYW1l
TWFwIEhUTUxCb2R5RWxlbWVudDo6Y3JlYXRlV2luZG93RXZlbnRIYW5kbGVyTmFtZU1hCiAgICAg
cmV0dXJuIG1hcDsKIH0KIAotY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MQm9keUVsZW1lbnQ6OmV2
ZW50TmFtZUZvcldpbmRvd0V2ZW50SGFuZGxlckF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyaWJ1dGVOYW1lKQorY29uc3QgQXRvbVN0cmluZyYgSFRNTEJvZHlFbGVtZW50OjpldmVu
dE5hbWVGb3JXaW5kb3dFdmVudEhhbmRsZXJBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0cmlidXRlTmFtZSkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RXZlbnRIYW5kbGVy
TmFtZU1hcD4gbWFwID0gY3JlYXRlV2luZG93RXZlbnRIYW5kbGVyTmFtZU1hcCgpOwogICAgIHJl
dHVybiBldmVudE5hbWVGb3JFdmVudEhhbmRsZXJBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSwgbWFw
LmdldCgpKTsKIH0KIAotdm9pZCBIVE1MQm9keUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCit2b2lkIEhU
TUxCb2R5RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwg
Y29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKG5hbWUgPT0gdmxpbmtBdHRyIHx8
IG5hbWUgPT0gYWxpbmtBdHRyIHx8IG5hbWUgPT0gbGlua0F0dHIpIHsKICAgICAgICAgaWYgKHZh
bHVlLmlzTnVsbCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCb2R5
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQm9keUVsZW1lbnQuaAppbmRleCA0
NWIwZmJjNTNjYjBjMWQ3ZTMyZTEzOWFkYWM2OTg2OTNkMTA0MDQ4Li5mNmE4MDFkYjQwNDA2ZGVi
MTZmOWQ3N2UzNTAzMmYyN2Y5MzU1ZDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxCb2R5RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVt
ZW50LmgKQEAgLTM0LDE0ICszNCwxNCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxIVE1MQm9k
eUVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKICAgICB2
aXJ0dWFsIH5IVE1MQm9keUVsZW1lbnQoKTsKIAotICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJp
bmcmIGV2ZW50TmFtZUZvcldpbmRvd0V2ZW50SGFuZGxlckF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyaWJ1dGVOYW1lKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgZXZl
bnROYW1lRm9yV2luZG93RXZlbnRIYW5kbGVyQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJpYnV0ZU5hbWUpOwogCiBwcml2YXRlOgogICAgIEhUTUxCb2R5RWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAotICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIGZpbmFsOworICAgIHZvaWQg
cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmKSBm
aW5hbDsKICAgICBib29sIGlzUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIGNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiwgTXV0YWJs
ZVN0eWxlUHJvcGVydGllcyYpIGZpbmFsOworICAgIHZvaWQgY29sbGVjdFN0eWxlRm9yUHJlc2Vu
dGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5nJiwg
TXV0YWJsZVN0eWxlUHJvcGVydGllcyYpIGZpbmFsOwogCiAgICAgSW5zZXJ0ZWRJbnRvQW5jZXN0
b3JSZXN1bHQgaW5zZXJ0ZWRJbnRvQW5jZXN0b3IoSW5zZXJ0aW9uVHlwZSwgQ29udGFpbmVyTm9k
ZSYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNoSW5zZXJ0aW5nTm9kZSgpIGZpbmFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVtZW50LmNwcAppbmRleCBlZDgyYjY5MmIyMzI3
NGVkMWE2YzE2MTQzMDMxOTAxZTFhZjUxMGQ4Li5kMjgyOTU3ZjIxZjA0NWU0MWRhYzQ2YWExNWM1
ZDAxYzM2ZmYzYTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCdXR0b25F
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVtZW50LmNw
cApAQCAtNTUsNyArNTUsNyBAQCBSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+IEhUTUxCdXR0b25FbGVt
ZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRAogICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEhUTUxCdXR0b25FbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBmb3JtKSk7
CiB9CiAKLXZvaWQgSFRNTEJ1dHRvbkVsZW1lbnQ6OnNldFR5cGUoY29uc3QgQXRvbWljU3RyaW5n
JiB0eXBlKQordm9pZCBIVE1MQnV0dG9uRWxlbWVudDo6c2V0VHlwZShjb25zdCBBdG9tU3RyaW5n
JiB0eXBlKQogewogICAgIHNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24odHlwZUF0
dHIsIHR5cGUpOwogfQpAQCAtNjUsMTkgKzY1LDE5IEBAIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBIVE1MQnV0dG9uRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYK
ICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyQnV0dG9uPigqdGhpcywgV1RGTW92ZShz
dHlsZSkpOwogfQogCi1jb25zdCBBdG9taWNTdHJpbmcmIEhUTUxCdXR0b25FbGVtZW50Ojpmb3Jt
Q29udHJvbFR5cGUoKSBjb25zdAorY29uc3QgQXRvbVN0cmluZyYgSFRNTEJ1dHRvbkVsZW1lbnQ6
OmZvcm1Db250cm9sVHlwZSgpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChtX3R5cGUpIHsKICAgICAg
ICAgY2FzZSBTVUJNSVQ6IHsKLSAgICAgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25z
dCBBdG9taWNTdHJpbmc+IHN1Ym1pdCgic3VibWl0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCk7CisgICAgICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRv
bVN0cmluZz4gc3VibWl0KCJzdWJtaXQiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCk7CiAgICAgICAgICAgICByZXR1cm4gc3VibWl0OwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
QlVUVE9OOiB7Ci0gICAgICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWlj
U3RyaW5nPiBidXR0b24oImJ1dHRvbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpOworICAgICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+
IGJ1dHRvbigiYnV0dG9uIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAg
ICAgICAgICAgcmV0dXJuIGJ1dHRvbjsKICAgICAgICAgfQogICAgICAgICBjYXNlIFJFU0VUOiB7
Ci0gICAgICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBy
ZXNldCgicmVzZXQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICAg
ICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiByZXNldCgicmVz
ZXQiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgICAgICAgICByZXR1
cm4gcmVzZXQ7CiAgICAgICAgIH0KICAgICB9CkBAIC05Nyw3ICs5Nyw3IEBAIGJvb2wgSFRNTEJ1
dHRvbkVsZW1lbnQ6OmlzUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IG5hbWUpIGNvbnN0CiAgICAgcmV0dXJuIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmlzUHJlc2Vu
dGF0aW9uQXR0cmlidXRlKG5hbWUpOwogfQogCi12b2lkIEhUTUxCdXR0b25FbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcm
IHZhbHVlKQordm9pZCBIVE1MQnV0dG9uRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKG5h
bWUgPT0gdHlwZUF0dHIpIHsKICAgICAgICAgVHlwZSBvbGRUeXBlID0gbV90eXBlOwpAQCAtMjE4
LDcgKzIxOCw3IEBAIGJvb2wgSFRNTEJ1dHRvbkVsZW1lbnQ6OmlzVVJMQXR0cmlidXRlKGNvbnN0
IEF0dHJpYnV0ZSYgYXR0cmlidXRlKSBjb25zdAogICAgIHJldHVybiBhdHRyaWJ1dGUubmFtZSgp
ID09IGZvcm1hY3Rpb25BdHRyIHx8IEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmlzVVJMQXR0cmli
dXRlKGF0dHJpYnV0ZSk7CiB9CiAKLWNvbnN0IEF0b21pY1N0cmluZyYgSFRNTEJ1dHRvbkVsZW1l
bnQ6OnZhbHVlKCkgY29uc3QKK2NvbnN0IEF0b21TdHJpbmcmIEhUTUxCdXR0b25FbGVtZW50Ojp2
YWx1ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRp
b24odmFsdWVBdHRyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJ1
dHRvbkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuaApp
bmRleCAxOWRmMjQ2Njc2YjNhYmUyM2NlYTAwMmZhYWQ0MDU0Y2ViMWNkMzg3Li42ZjAxM2Y3Y2M1
Y2Y2MzkwMGIwZTUxMTY2NzAxZGRmZTgzYWVlZTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxCdXR0b25FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QnV0dG9uRWxlbWVudC5oCkBAIC0zNCw5ICszNCw5IEBAIGNsYXNzIEhUTUxCdXR0b25FbGVtZW50
IGZpbmFsIDogcHVibGljIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQgewogcHVibGljOgogICAgIHN0
YXRpYyBSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwg
RG9jdW1lbnQmLCBIVE1MRm9ybUVsZW1lbnQqKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0VHlwZShjb25zdCBBdG9taWNTdHJpbmcmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dFR5cGUoY29uc3QgQXRvbVN0cmluZyYpOwogICAgIAotICAgIGNvbnN0IEF0b21pY1N0cmluZyYg
dmFsdWUoKSBjb25zdDsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSgpIGNvbnN0OwogCiAg
ICAgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpIGZpbmFsOwogCkBAIC00Nywx
MSArNDcsMTEgQEAgcHJpdmF0ZToKIAogICAgIGVudW0gVHlwZSB7IFNVQk1JVCwgUkVTRVQsIEJV
VFRPTiB9OwogCi0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25z
dCBmaW5hbDsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdCBm
aW5hbDsKIAogICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVy
ZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgZmluYWw7CiAKLSAg
ICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNT
dHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBjb25zdCBBdG9tU3RyaW5nJikgZmluYWw7CiAgICAgYm9vbCBpc1ByZXNlbnRhdGlvbkF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3QgZmluYWw7CiAgICAgdm9pZCBkZWZh
dWx0RXZlbnRIYW5kbGVyKEV2ZW50JikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Q2FudmFzRWxlbWVudC5jcHAKaW5kZXggMjMxYWNmZTJkM2IyZDBkOTU1MTNkZDhhMGVjOTBhZTAx
MTNlMGI0OS4uOWJjOTY3YTI1ZDBkMWFjOTM5MWI2YjE4NTBlOWJiZGY4YjdkMzM4MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKQEAgLTE1MSw3ICsxNTEsNyBA
QCBIVE1MQ2FudmFzRWxlbWVudDo6fkhUTUxDYW52YXNFbGVtZW50KCkKICAgICByZWxlYXNlSW1h
Z2VCdWZmZXJBbmRDb250ZXh0KCk7CiB9CiAKLXZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYg
dmFsdWUpCit2b2lkIEhUTUxDYW52YXNFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAobmFt
ZSA9PSB3aWR0aEF0dHIgfHwgbmFtZSA9PSBoZWlnaHRBdHRyKQogICAgICAgICByZXNldCgpOwpA
QCAtMTgwLDcgKzE4MCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEhUTUxDYW52YXNFbGVtZW50Ojpz
ZXRIZWlnaHQodW5zaWduZWQgdmFsdWUpCiB7CiAgICAgaWYgKG1fY29udGV4dCAmJiBtX2NvbnRl
eHQtPmlzUGxhY2Vob2xkZXIoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRT
dGF0ZUVycm9yIH07Ci0gICAgc2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihoZWln
aHRBdHRyLCBBdG9taWNTdHJpbmc6Om51bWJlcihsaW1pdFRvT25seUhUTUxOb25OZWdhdGl2ZSh2
YWx1ZSwgZGVmYXVsdEhlaWdodCkpKTsKKyAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25p
emF0aW9uKGhlaWdodEF0dHIsIEF0b21TdHJpbmc6Om51bWJlcihsaW1pdFRvT25seUhUTUxOb25O
ZWdhdGl2ZSh2YWx1ZSwgZGVmYXVsdEhlaWdodCkpKTsKICAgICByZXR1cm4geyB9OwogfQogCkBA
IC0xODgsNyArMTg4LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSFRNTENhbnZhc0VsZW1lbnQ6OnNl
dFdpZHRoKHVuc2lnbmVkIHZhbHVlKQogewogICAgIGlmIChtX2NvbnRleHQgJiYgbV9jb250ZXh0
LT5pc1BsYWNlaG9sZGVyKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3Rh
dGVFcnJvciB9OwotICAgIHNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24od2lkdGhB
dHRyLCBBdG9taWNTdHJpbmc6Om51bWJlcihsaW1pdFRvT25seUhUTUxOb25OZWdhdGl2ZSh2YWx1
ZSwgZGVmYXVsdFdpZHRoKSkpOworICAgIHNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRp
b24od2lkdGhBdHRyLCBBdG9tU3RyaW5nOjpudW1iZXIobGltaXRUb09ubHlIVE1MTm9uTmVnYXRp
dmUodmFsdWUsIGRlZmF1bHRXaWR0aCkpKTsKICAgICByZXR1cm4geyB9OwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgKaW5kZXggN2I1MmI4ZjNiNzI0MWNkZGMxNzU0
N2UyYjEzZDVmYzM1ODlmYTdmNi4uMDQxNDhiODM1ODMyMjY4NjFiNGIzMzJhMGYxOGI4MWQwZjFk
ZWE5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaApAQCAtMTU3LDcg
KzE1Nyw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIGlzSFRNTENhbnZhc0VsZW1lbnQoKSBjb25z
dCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIHBh
cnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5nJikgZmlu
YWw7CiAgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihS
ZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBmaW5hbDsKIAogICAgIGJv
b2wgY2FuQ29udGFpblJhbmdlRW5kUG9pbnQoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQ29sbGVjdGlvbi5jcHAKaW5kZXggM2FmOTVjYTM5MTEwM2IwNWUyZDViYzgzMDFiZmU0
YWMxMTRjMGRhNS4uOTc2YzhlMGE5YTA2YTliODNkNmNhOTQxYmQ1ZGQzN2I5ZjMzODVjNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAKQEAgLTE1OSw3ICsxNTksNyBAQCB2
b2lkIEhUTUxDb2xsZWN0aW9uOjppbnZhbGlkYXRlTmFtZWRFbGVtZW50Q2FjaGUoRG9jdW1lbnQm
IGRvY3VtZW50KSBjb25zdAogICAgIH0KIH0KIAotRWxlbWVudCogSFRNTENvbGxlY3Rpb246Om5h
bWVkSXRlbVNsb3coY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdAorRWxlbWVudCogSFRN
TENvbGxlY3Rpb246Om5hbWVkSXRlbVNsb3coY29uc3QgQXRvbVN0cmluZyYgbmFtZSkgY29uc3QK
IHsKICAgICAvLyBUaGUgcGF0aG9sb2dpY2FsIGNhc2UuIFdlIG5lZWQgdG8gd2FsayB0aGUgZW50
aXJlIHN1YnRyZWUuCiAgICAgdXBkYXRlTmFtZWRFbGVtZW50Q2FjaGUoKTsKQEAgLTE3OSw3ICsx
NzksNyBAQCBFbGVtZW50KiBIVE1MQ29sbGVjdGlvbjo6bmFtZWRJdGVtU2xvdyhjb25zdCBBdG9t
aWNTdHJpbmcmIG5hbWUpIGNvbnN0CiB9CiAKIC8vIERvY3VtZW50ZWQgaW4gaHR0cHM6Ly9kb20u
c3BlYy53aGF0d2cub3JnLyNpbnRlcmZhY2UtaHRtbGNvbGxlY3Rpb24uCi1jb25zdCBWZWN0b3I8
QXRvbWljU3RyaW5nPiYgSFRNTENvbGxlY3Rpb246OnN1cHBvcnRlZFByb3BlcnR5TmFtZXMoKQor
Y29uc3QgVmVjdG9yPEF0b21TdHJpbmc+JiBIVE1MQ29sbGVjdGlvbjo6c3VwcG9ydGVkUHJvcGVy
dHlOYW1lcygpCiB7CiAgICAgdXBkYXRlTmFtZWRFbGVtZW50Q2FjaGUoKTsKICAgICBBU1NFUlQo
bV9uYW1lZEVsZW1lbnRDYWNoZSk7CkBAIC0yMTAsMTIgKzIxMCwxMiBAQCB2b2lkIEhUTUxDb2xs
ZWN0aW9uOjp1cGRhdGVOYW1lZEVsZW1lbnRDYWNoZSgpIGNvbnN0CiAgICAgdW5zaWduZWQgc2l6
ZSA9IGxlbmd0aCgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsK
ICAgICAgICAgRWxlbWVudCYgZWxlbWVudCA9ICppdGVtKGkpOwotICAgICAgICBjb25zdCBBdG9t
aWNTdHJpbmcmIGlkID0gZWxlbWVudC5nZXRJZEF0dHJpYnV0ZSgpOworICAgICAgICBjb25zdCBB
dG9tU3RyaW5nJiBpZCA9IGVsZW1lbnQuZ2V0SWRBdHRyaWJ1dGUoKTsKICAgICAgICAgaWYgKCFp
ZC5pc0VtcHR5KCkpCiAgICAgICAgICAgICBjYWNoZS0+YXBwZW5kVG9JZENhY2hlKGlkLCBlbGVt
ZW50KTsKICAgICAgICAgaWYgKCFpczxIVE1MRWxlbWVudD4oZWxlbWVudCkpCiAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lID0gZWxlbWVudC5n
ZXROYW1lQXR0cmlidXRlKCk7CisgICAgICAgIGNvbnN0IEF0b21TdHJpbmcmIG5hbWUgPSBlbGVt
ZW50LmdldE5hbWVBdHRyaWJ1dGUoKTsKICAgICAgICAgaWYgKCFuYW1lLmlzRW1wdHkoKSAmJiBp
ZCAhPSBuYW1lICYmICh0eXBlKCkgIT0gRG9jQWxsIHx8IG5hbWVTaG91bGRCZVZpc2libGVJbkRv
Y3VtZW50QWxsKGRvd25jYXN0PEhUTUxFbGVtZW50PihlbGVtZW50KSkpKQogICAgICAgICAgICAg
Y2FjaGUtPmFwcGVuZFRvTmFtZUNhY2hlKG5hbWUsIGVsZW1lbnQpOwogICAgIH0KQEAgLTIyMyw3
ICsyMjMsNyBAQCB2b2lkIEhUTUxDb2xsZWN0aW9uOjp1cGRhdGVOYW1lZEVsZW1lbnRDYWNoZSgp
IGNvbnN0CiAgICAgc2V0TmFtZWRJdGVtQ2FjaGUoV1RGTW92ZShjYWNoZSkpOwogfQogCi1WZWN0
b3I8UmVmPEVsZW1lbnQ+PiBIVE1MQ29sbGVjdGlvbjo6bmFtZWRJdGVtcyhjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWUpIGNvbnN0CitWZWN0b3I8UmVmPEVsZW1lbnQ+PiBIVE1MQ29sbGVjdGlvbjo6
bmFtZWRJdGVtcyhjb25zdCBBdG9tU3RyaW5nJiBuYW1lKSBjb25zdAogewogICAgIC8vIEZJWE1F
OiBUaGlzIG5vbi12aXJ0dWFsIGZ1bmN0aW9uIGNhbid0IHBvc3NpYmx5IGJlIGRvaW5nIHRoZSBj
b3JyZWN0IHRoaW5nIGZvcgogICAgIC8vIGFueSBkZXJpdmVkIGNsYXNzIHRoYXQgb3ZlcnJpZGVz
IHRoZSB2aXJ0dWFsIG5hbWVkSXRlbSBmdW5jdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxl
Y3Rpb24uaAppbmRleCA0ZmVjNzZkMjk3M2FkY2RiMmM3MDdhYzVlMzcwMWU1ZjhmZjkzZmFjLi5m
MDA4ZjMzNzhkYWIzYTY4MWYzZTgyOWQ4MWNjYmJkYTllYWRiZDc0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQ29sbGVjdGlvbi5oCkBAIC0zNCwyNSArMzQsMjUgQEAgY2xhc3MgRWxlbWVudDsKIGNs
YXNzIENvbGxlY3Rpb25OYW1lZEVsZW1lbnRDYWNoZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6Ci0gICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiogZmluZEVsZW1lbnRz
V2l0aElkKGNvbnN0IEF0b21pY1N0cmluZyYgaWQpIGNvbnN0OwotICAgIGNvbnN0IFZlY3RvcjxF
bGVtZW50Kj4qIGZpbmRFbGVtZW50c1dpdGhOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkg
Y29uc3Q7Ci0gICAgY29uc3QgVmVjdG9yPEF0b21pY1N0cmluZz4mIHByb3BlcnR5TmFtZXMoKSBj
b25zdCB7IHJldHVybiBtX3Byb3BlcnR5TmFtZXM7IH0KKyAgICBjb25zdCBWZWN0b3I8RWxlbWVu
dCo+KiBmaW5kRWxlbWVudHNXaXRoSWQoY29uc3QgQXRvbVN0cmluZyYgaWQpIGNvbnN0OworICAg
IGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4qIGZpbmRFbGVtZW50c1dpdGhOYW1lKGNvbnN0IEF0b21T
dHJpbmcmIG5hbWUpIGNvbnN0OworICAgIGNvbnN0IFZlY3RvcjxBdG9tU3RyaW5nPiYgcHJvcGVy
dHlOYW1lcygpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydHlOYW1lczsgfQogICAgIAotICAgIHZv
aWQgYXBwZW5kVG9JZENhY2hlKGNvbnN0IEF0b21pY1N0cmluZyYgaWQsIEVsZW1lbnQmKTsKLSAg
ICB2b2lkIGFwcGVuZFRvTmFtZUNhY2hlKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgRWxlbWVu
dCYpOworICAgIHZvaWQgYXBwZW5kVG9JZENhY2hlKGNvbnN0IEF0b21TdHJpbmcmIGlkLCBFbGVt
ZW50Jik7CisgICAgdm9pZCBhcHBlbmRUb05hbWVDYWNoZShjb25zdCBBdG9tU3RyaW5nJiBuYW1l
LCBFbGVtZW50Jik7CiAgICAgdm9pZCBkaWRQb3B1bGF0ZSgpOwogCiAgICAgc2l6ZV90IG1lbW9y
eUNvc3QoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICB0eXBlZGVmIEhhc2hNYXA8QXRvbWljU3Ry
aW5nSW1wbCosIFZlY3RvcjxFbGVtZW50Kj4+IFN0cmluZ1RvRWxlbWVudHNNYXA7CisgICAgdHlw
ZWRlZiBIYXNoTWFwPEF0b21TdHJpbmdJbXBsKiwgVmVjdG9yPEVsZW1lbnQqPj4gU3RyaW5nVG9F
bGVtZW50c01hcDsKIAotICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4qIGZpbmQoY29uc3QgU3Ry
aW5nVG9FbGVtZW50c01hcCYsIGNvbnN0IEF0b21pY1N0cmluZyYga2V5KSBjb25zdDsKLSAgICB2
b2lkIGFwcGVuZChTdHJpbmdUb0VsZW1lbnRzTWFwJiwgY29uc3QgQXRvbWljU3RyaW5nJiBrZXks
IEVsZW1lbnQmKTsKKyAgICBjb25zdCBWZWN0b3I8RWxlbWVudCo+KiBmaW5kKGNvbnN0IFN0cmlu
Z1RvRWxlbWVudHNNYXAmLCBjb25zdCBBdG9tU3RyaW5nJiBrZXkpIGNvbnN0OworICAgIHZvaWQg
YXBwZW5kKFN0cmluZ1RvRWxlbWVudHNNYXAmLCBjb25zdCBBdG9tU3RyaW5nJiBrZXksIEVsZW1l
bnQmKTsKIAogICAgIFN0cmluZ1RvRWxlbWVudHNNYXAgbV9pZE1hcDsKICAgICBTdHJpbmdUb0Vs
ZW1lbnRzTWFwIG1fbmFtZU1hcDsKLSAgICBWZWN0b3I8QXRvbWljU3RyaW5nPiBtX3Byb3BlcnR5
TmFtZXM7CisgICAgVmVjdG9yPEF0b21TdHJpbmc+IG1fcHJvcGVydHlOYW1lczsKIAogI2lmICFB
U1NFUlRfRElTQUJMRUQKICAgICBib29sIG1fZGlkUG9wdWxhdGUgeyBmYWxzZSB9OwpAQCAtNjcs
MTIgKzY3LDEyIEBAIHB1YmxpYzoKIAogICAgIC8vIERPTSBBUEkKICAgICBFbGVtZW50KiBpdGVt
KHVuc2lnbmVkIGluZGV4KSBjb25zdCBvdmVycmlkZSA9IDA7IC8vIFRpZ2h0ZW4gcmV0dXJuIHR5
cGUgZnJvbSBOb2RlTGlzdDo6aXRlbSgpLgotICAgIHZpcnR1YWwgRWxlbWVudCogbmFtZWRJdGVt
KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3QgPSAwOwotICAgIGNvbnN0IFZlY3RvcjxB
dG9taWNTdHJpbmc+JiBzdXBwb3J0ZWRQcm9wZXJ0eU5hbWVzKCk7CisgICAgdmlydHVhbCBFbGVt
ZW50KiBuYW1lZEl0ZW0oY29uc3QgQXRvbVN0cmluZyYgbmFtZSkgY29uc3QgPSAwOworICAgIGNv
bnN0IFZlY3RvcjxBdG9tU3RyaW5nPiYgc3VwcG9ydGVkUHJvcGVydHlOYW1lcygpOwogICAgIGJv
b2wgaXNTdXBwb3J0ZWRQcm9wZXJ0eU5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKTsKIAogICAgIC8v
IE5vbi1ET00gQVBJCi0gICAgVmVjdG9yPFJlZjxFbGVtZW50Pj4gbmFtZWRJdGVtcyhjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0OworICAgIFZlY3RvcjxSZWY8RWxlbWVudD4+IG5hbWVk
SXRlbXMoY29uc3QgQXRvbVN0cmluZyYgbmFtZSkgY29uc3Q7CiAgICAgc2l6ZV90IG1lbW9yeUNv
c3QoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIGJvb2wgaXNSb290ZWRBdERvY3VtZW50KCkgY29u
c3Q7CkBAIC05MCw3ICs5MCw3IEBAIHByb3RlY3RlZDoKICAgICBIVE1MQ29sbGVjdGlvbihDb250
YWluZXJOb2RlJiBiYXNlLCBDb2xsZWN0aW9uVHlwZSk7CiAKICAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlTmFtZWRFbGVtZW50Q2FjaGUoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBFbGVtZW50
KiBuYW1lZEl0ZW1TbG93KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3Q7CisgICAgV0VC
Q09SRV9FWFBPUlQgRWxlbWVudCogbmFtZWRJdGVtU2xvdyhjb25zdCBBdG9tU3RyaW5nJiBuYW1l
KSBjb25zdDsKIAogICAgIHZvaWQgc2V0TmFtZWRJdGVtQ2FjaGUoc3RkOjp1bmlxdWVfcHRyPENv
bGxlY3Rpb25OYW1lZEVsZW1lbnRDYWNoZT4pIGNvbnN0OwogICAgIGNvbnN0IENvbGxlY3Rpb25O
YW1lZEVsZW1lbnRDYWNoZSYgbmFtZWRJdGVtQ2FjaGVzKCkgY29uc3Q7CkBAIC0xMjEsMjIgKzEy
MSwyMiBAQCBpbmxpbmUgQ29udGFpbmVyTm9kZSYgSFRNTENvbGxlY3Rpb246OnJvb3ROb2RlKCkg
Y29uc3QKICAgICByZXR1cm4gb3duZXJOb2RlKCk7CiB9CiAKLWlubGluZSBjb25zdCBWZWN0b3I8
RWxlbWVudCo+KiBDb2xsZWN0aW9uTmFtZWRFbGVtZW50Q2FjaGU6OmZpbmRFbGVtZW50c1dpdGhJ
ZChjb25zdCBBdG9taWNTdHJpbmcmIGlkKSBjb25zdAoraW5saW5lIGNvbnN0IFZlY3RvcjxFbGVt
ZW50Kj4qIENvbGxlY3Rpb25OYW1lZEVsZW1lbnRDYWNoZTo6ZmluZEVsZW1lbnRzV2l0aElkKGNv
bnN0IEF0b21TdHJpbmcmIGlkKSBjb25zdAogewogICAgIHJldHVybiBmaW5kKG1faWRNYXAsIGlk
KTsKIH0KIAotaW5saW5lIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4qIENvbGxlY3Rpb25OYW1lZEVs
ZW1lbnRDYWNoZTo6ZmluZEVsZW1lbnRzV2l0aE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
KSBjb25zdAoraW5saW5lIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4qIENvbGxlY3Rpb25OYW1lZEVs
ZW1lbnRDYWNoZTo6ZmluZEVsZW1lbnRzV2l0aE5hbWUoY29uc3QgQXRvbVN0cmluZyYgbmFtZSkg
Y29uc3QKIHsKICAgICByZXR1cm4gZmluZChtX25hbWVNYXAsIG5hbWUpOwogfQogCi1pbmxpbmUg
dm9pZCBDb2xsZWN0aW9uTmFtZWRFbGVtZW50Q2FjaGU6OmFwcGVuZFRvSWRDYWNoZShjb25zdCBB
dG9taWNTdHJpbmcmIGlkLCBFbGVtZW50JiBlbGVtZW50KQoraW5saW5lIHZvaWQgQ29sbGVjdGlv
bk5hbWVkRWxlbWVudENhY2hlOjphcHBlbmRUb0lkQ2FjaGUoY29uc3QgQXRvbVN0cmluZyYgaWQs
IEVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgYXBwZW5kKG1faWRNYXAsIGlkLCBlbGVtZW50KTsK
IH0KIAotaW5saW5lIHZvaWQgQ29sbGVjdGlvbk5hbWVkRWxlbWVudENhY2hlOjphcHBlbmRUb05h
bWVDYWNoZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIEVsZW1lbnQmIGVsZW1lbnQpCitpbmxp
bmUgdm9pZCBDb2xsZWN0aW9uTmFtZWRFbGVtZW50Q2FjaGU6OmFwcGVuZFRvTmFtZUNhY2hlKGNv
bnN0IEF0b21TdHJpbmcmIG5hbWUsIEVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgYXBwZW5kKG1f
bmFtZU1hcCwgbmFtZSwgZWxlbWVudCk7CiB9CkBAIC0xNDUsNyArMTQ1LDcgQEAgaW5saW5lIHNp
emVfdCBDb2xsZWN0aW9uTmFtZWRFbGVtZW50Q2FjaGU6Om1lbW9yeUNvc3QoKSBjb25zdAogewog
ICAgIC8vIG1lbW9yeUNvc3QoKSBtYXkgYmUgaW52b2tlZCBjb25jdXJyZW50bHkgZnJvbSBhIEdD
IHRocmVhZCwgYW5kIHdlIG5lZWQgdG8gYmUgY2FyZWZ1bCBhYm91dCB3aGF0IGRhdGEgd2UgYWNj
ZXNzIGhlcmUgYW5kIGhvdy4KICAgICAvLyBJdCBpcyBzYWZlIHRvIGFjY2VzcyBtX2lkTWFwLnNp
emUoKSwgbV9uYW1lTWFwLnNpemUoKSwgYW5kIG1fcHJvcGVydHlOYW1lcy5zaXplKCkgYmVjYXVz
ZSB0aGV5IGRvbid0IGNoYXNlIHBvaW50ZXJzLgotICAgIHJldHVybiAobV9pZE1hcC5zaXplKCkg
KyBtX25hbWVNYXAuc2l6ZSgpKSAqIHNpemVvZihFbGVtZW50KikgKyBtX3Byb3BlcnR5TmFtZXMu
c2l6ZSgpICogc2l6ZW9mKEF0b21pY1N0cmluZyk7CisgICAgcmV0dXJuIChtX2lkTWFwLnNpemUo
KSArIG1fbmFtZU1hcC5zaXplKCkpICogc2l6ZW9mKEVsZW1lbnQqKSArIG1fcHJvcGVydHlOYW1l
cy5zaXplKCkgKiBzaXplb2YoQXRvbVN0cmluZyk7CiB9CiAKIGlubGluZSB2b2lkIENvbGxlY3Rp
b25OYW1lZEVsZW1lbnRDYWNoZTo6ZGlkUG9wdWxhdGUoKQpAQCAtMTU3LDE0ICsxNTcsMTQgQEAg
aW5saW5lIHZvaWQgQ29sbGVjdGlvbk5hbWVkRWxlbWVudENhY2hlOjpkaWRQb3B1bGF0ZSgpCiAg
ICAgICAgIHJlcG9ydEV4dHJhTWVtb3J5QWxsb2NhdGVkRm9yQ29sbGVjdGlvbkluZGV4Q2FjaGUo
Y29zdCk7CiB9CiAKLWlubGluZSBjb25zdCBWZWN0b3I8RWxlbWVudCo+KiBDb2xsZWN0aW9uTmFt
ZWRFbGVtZW50Q2FjaGU6OmZpbmQoY29uc3QgU3RyaW5nVG9FbGVtZW50c01hcCYgbWFwLCBjb25z
dCBBdG9taWNTdHJpbmcmIGtleSkgY29uc3QKK2lubGluZSBjb25zdCBWZWN0b3I8RWxlbWVudCo+
KiBDb2xsZWN0aW9uTmFtZWRFbGVtZW50Q2FjaGU6OmZpbmQoY29uc3QgU3RyaW5nVG9FbGVtZW50
c01hcCYgbWFwLCBjb25zdCBBdG9tU3RyaW5nJiBrZXkpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1f
ZGlkUG9wdWxhdGUpOwogICAgIGF1dG8gaXQgPSBtYXAuZmluZChrZXkuaW1wbCgpKTsKICAgICBy
ZXR1cm4gaXQgIT0gbWFwLmVuZCgpID8gJml0LT52YWx1ZSA6IG51bGxwdHI7CiB9CiAKLWlubGlu
ZSB2b2lkIENvbGxlY3Rpb25OYW1lZEVsZW1lbnRDYWNoZTo6YXBwZW5kKFN0cmluZ1RvRWxlbWVu
dHNNYXAmIG1hcCwgY29uc3QgQXRvbWljU3RyaW5nJiBrZXksIEVsZW1lbnQmIGVsZW1lbnQpCitp
bmxpbmUgdm9pZCBDb2xsZWN0aW9uTmFtZWRFbGVtZW50Q2FjaGU6OmFwcGVuZChTdHJpbmdUb0Vs
ZW1lbnRzTWFwJiBtYXAsIGNvbnN0IEF0b21TdHJpbmcmIGtleSwgRWxlbWVudCYgZWxlbWVudCkK
IHsKICAgICBpZiAoIW1faWRNYXAuY29udGFpbnMoa2V5LmltcGwoKSkgJiYgIW1fbmFtZU1hcC5j
b250YWlucyhrZXkuaW1wbCgpKSkKICAgICAgICAgbV9wcm9wZXJ0eU5hbWVzLmFwcGVuZChrZXkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwCmluZGV4IDNhYWMx
OTQxMTA5OTA0ZDg5NGMwMGNhY2I1MzU5M2NmNjZkZjQyZmUuLmYxNTc4NzRlNmQ1MzRlM2Y2MTM0
ZTRhNWRmNGY1MWJlMmY2N2EzMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TERldGFpbHNFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxz
RWxlbWVudC5jcHAKQEAgLTQ5LDE2ICs0OSwxNiBAQCBzdGF0aWMgRGV0YWlsRXZlbnRTZW5kZXIm
IGRldGFpbFRvZ2dsZUV2ZW50U2VuZGVyKCkKICAgICByZXR1cm4gc2hhcmVkVG9nZ2xlRXZlbnRT
ZW5kZXI7CiB9CiAKLXN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHN1bW1hcnlTbG90TmFtZSgp
CitzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgc3VtbWFyeVNsb3ROYW1lKCkKIHsKLSAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBzdW1tYXJ5U2xvdCgic3VtbWFyeVNsb3Qi
KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbVN0cmluZz4gc3VtbWFyeVNsb3QoInN1
bW1hcnlTbG90Iik7CiAgICAgcmV0dXJuIHN1bW1hcnlTbG90OwogfQogCiBjbGFzcyBEZXRhaWxz
U2xvdEFzc2lnbm1lbnQgZmluYWwgOiBwdWJsaWMgU2xvdEFzc2lnbm1lbnQgewogcHJpdmF0ZToK
ICAgICB2b2lkIGhvc3RDaGlsZEVsZW1lbnREaWRDaGFuZ2UoY29uc3QgRWxlbWVudCYsIFNoYWRv
d1Jvb3QmKSBvdmVycmlkZTsKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIHNsb3ROYW1lRm9ySG9z
dENoaWxkKGNvbnN0IE5vZGUmKSBjb25zdCBvdmVycmlkZTsKKyAgICBjb25zdCBBdG9tU3RyaW5n
JiBzbG90TmFtZUZvckhvc3RDaGlsZChjb25zdCBOb2RlJikgY29uc3Qgb3ZlcnJpZGU7CiB9Owog
CiB2b2lkIERldGFpbHNTbG90QXNzaWdubWVudDo6aG9zdENoaWxkRWxlbWVudERpZENoYW5nZShj
b25zdCBFbGVtZW50JiBjaGlsZEVsZW1lbnQsIFNoYWRvd1Jvb3QmIHNoYWRvd1Jvb3QpCkBAIC03
MSw3ICs3MSw3IEBAIHZvaWQgRGV0YWlsc1Nsb3RBc3NpZ25tZW50Ojpob3N0Q2hpbGRFbGVtZW50
RGlkQ2hhbmdlKGNvbnN0IEVsZW1lbnQmIGNoaWxkRWxlbWVuCiAgICAgICAgIGRpZENoYW5nZVNs
b3QoU2xvdEFzc2lnbm1lbnQ6OmRlZmF1bHRTbG90TmFtZSgpLCBzaGFkb3dSb290KTsKIH0KIAot
Y29uc3QgQXRvbWljU3RyaW5nJiBEZXRhaWxzU2xvdEFzc2lnbm1lbnQ6OnNsb3ROYW1lRm9ySG9z
dENoaWxkKGNvbnN0IE5vZGUmIGNoaWxkKSBjb25zdAorY29uc3QgQXRvbVN0cmluZyYgRGV0YWls
c1Nsb3RBc3NpZ25tZW50OjpzbG90TmFtZUZvckhvc3RDaGlsZChjb25zdCBOb2RlJiBjaGlsZCkg
Y29uc3QKIHsKICAgICBhdXRvJiBwYXJlbnQgPSAqY2hpbGQucGFyZW50Tm9kZSgpOwogICAgIEFT
U0VSVChpczxIVE1MRGV0YWlsc0VsZW1lbnQ+KHBhcmVudCkpOwpAQCAtMTQ1LDcgKzE0NSw3IEBA
IHZvaWQgSFRNTERldGFpbHNFbGVtZW50OjpkaXNwYXRjaFBlbmRpbmdFdmVudChEZXRhaWxFdmVu
dFNlbmRlciogZXZlbnRTZW5kZXIpCiAgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2
ZW50TmFtZXMoKS50b2dnbGVFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0Nh
bmNlbGFibGU6Ok5vKSk7CiB9CiAKLXZvaWQgSFRNTERldGFpbHNFbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVl
KQordm9pZCBIVE1MRGV0YWlsc0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKQogewogICAgIGlmIChuYW1lID09
IG9wZW5BdHRyKSB7CiAgICAgICAgIGJvb2wgb2xkVmFsdWUgPSBtX2lzT3BlbjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5oCmluZGV4IGZkMTQ1MGUwODZmZGM3M2Y1ODk5
ODQ5YzFiYjU3Y2E3Njg4ZDg4ODUuLjdiNzhlYjE4YjJhZWQ5MTFlYjYxMGRiZGQzMThlNzRjNWUx
NWE4ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuaApAQCAtNDcs
NyArNDcsNyBAQCBwcml2YXRlOgogICAgIEhUTUxEZXRhaWxzRWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiwgRG9jdW1lbnQmKTsKIAogICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVh
dGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9u
JikgZmluYWw7Ci0gICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwg
Y29uc3QgQXRvbWljU3RyaW5nJikgZmluYWw7CisgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbVN0cmluZyYpIGZpbmFsOwogCiAgICAgdm9pZCBk
aWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KFNoYWRvd1Jvb3QmKSBmaW5hbDsKICAgICBib29sIGhh
c0N1c3RvbUZvY3VzTG9naWMoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEaXZFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTERpdkVsZW1lbnQuY3BwCmluZGV4IDgzNDUwOTlmOGIxMjYwZWZhN2JjY2U1
NzMzZjFiYjliM2IyY2UwYzkuLmQ4OWU3ODljMzhlYjUyMmU0YzZjMjYwMWEzNjU0NmQyNjgwZDE4
NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERpdkVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERpdkVsZW1lbnQuY3BwCkBAIC01MCw3ICs1MCw3
IEBAIFJlZjxIVE1MRGl2RWxlbWVudD4gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVuCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSFRN
TERpdkVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotdm9pZCBIVE1MRGl2RWxlbWVu
dDo6Y29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUsIE11dGFibGVTdHlsZVByb3BlcnRp
ZXMmIHN0eWxlKQordm9pZCBIVE1MRGl2RWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yUHJlc2VudGF0
aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcm
IHZhbHVlLCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJiBzdHlsZSkKIHsKICAgICBpZiAobmFtZSA9
PSBhbGlnbkF0dHIpIHsKICAgICAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KHZhbHVlLCAibWlkZGxlIikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFsdWUs
ICJjZW50ZXIiKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERpdkVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERpdkVsZW1lbnQuaAppbmRleCA1MTNhY2Zh
YjcxYTQ2ZmUzYmE1YzUwOWY4OTg0OTM1MTRhNDQwMTI0Li5hMjdjYjEwZmRjMjJkNWE5YmI3ODZm
MWZhMjBjNjkyNmZkNDliYzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxE
aXZFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGl2RWxlbWVudC5oCkBA
IC0zNiw3ICszNiw3IEBAIHByb3RlY3RlZDoKICAgICBIVE1MRGl2RWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGNvbGxlY3RTdHls
ZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRv
bWljU3RyaW5nJiwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYpIGZpbmFsOworICAgIHZvaWQgY29s
bGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBj
b25zdCBBdG9tU3RyaW5nJiwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYpIGZpbmFsOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuY3BwCmlu
ZGV4IDBjN2QzOTAwMzgzMWRhNGIyOWU3N2Y2NDE5MTBiNGQ4MWJkMWRjODAuLjA0MTE0MTBhNzRk
Y2E2OWVmNDljOGIxNmUyODY5NjY2OTVkNWUzMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTERvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1
bWVudC5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCBSZWY8RG9jdW1lbnRQYXJzZXI+IEhUTUxEb2N1
bWVudDo6Y3JlYXRlUGFyc2VyKCkKIH0KIAogLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9y
Zy9tdWx0aXBhZ2UvZG9tLmh0bWwjZG9tLWRvY3VtZW50LW5hbWVkaXRlbQotT3B0aW9uYWw8VmFy
aWFudDxSZWZQdHI8V2luZG93UHJveHk+LCBSZWZQdHI8RWxlbWVudD4sIFJlZlB0cjxIVE1MQ29s
bGVjdGlvbj4+PiBIVE1MRG9jdW1lbnQ6Om5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIG5h
bWUpCitPcHRpb25hbDxWYXJpYW50PFJlZlB0cjxXaW5kb3dQcm94eT4sIFJlZlB0cjxFbGVtZW50
PiwgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPj4+IEhUTUxEb2N1bWVudDo6bmFtZWRJdGVtKGNvbnN0
IEF0b21TdHJpbmcmIG5hbWUpCiB7CiAgICAgaWYgKG5hbWUuaXNOdWxsKCkgfHwgIWhhc0RvY3Vt
ZW50TmFtZWRJdGVtKCpuYW1lLmltcGwoKSkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CkBAIC0xMzUsNyArMTM1LDcgQEAgT3B0aW9uYWw8VmFyaWFudDxSZWZQdHI8V2luZG93UHJveHk+
LCBSZWZQdHI8RWxlbWVudD4sIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4+PgogICAgIHJldHVybiBW
YXJpYW50PFJlZlB0cjxXaW5kb3dQcm94eT4sIFJlZlB0cjxFbGVtZW50PiwgUmVmUHRyPEhUTUxD
b2xsZWN0aW9uPj4geyBSZWZQdHI8RWxlbWVudD4geyAmZWxlbWVudCB9IH07CiB9CiAKLVZlY3Rv
cjxBdG9taWNTdHJpbmc+IEhUTUxEb2N1bWVudDo6c3VwcG9ydGVkUHJvcGVydHlOYW1lcygpIGNv
bnN0CitWZWN0b3I8QXRvbVN0cmluZz4gSFRNTERvY3VtZW50OjpzdXBwb3J0ZWRQcm9wZXJ0eU5h
bWVzKCkgY29uc3QKIHsKICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRp
cGFnZS9kb20uaHRtbCNkb20tZG9jdW1lbnQtbmFtZWRJdGVtLXdoaWNoCiAgICAgLy8KQEAgLTE1
NSwyMyArMTU1LDIzIEBAIFZlY3RvcjxBdG9taWNTdHJpbmc+IEhUTUxEb2N1bWVudDo6c3VwcG9y
dGVkUHJvcGVydHlOYW1lcygpIGNvbnN0CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotdm9pZCBIVE1M
RG9jdW1lbnQ6OmFkZERvY3VtZW50TmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZ0ltcGwmIG5h
bWUsIEVsZW1lbnQmIGl0ZW0pCit2b2lkIEhUTUxEb2N1bWVudDo6YWRkRG9jdW1lbnROYW1lZEl0
ZW0oY29uc3QgQXRvbVN0cmluZ0ltcGwmIG5hbWUsIEVsZW1lbnQmIGl0ZW0pCiB7CiAgICAgbV9k
b2N1bWVudE5hbWVkSXRlbS5hZGQobmFtZSwgaXRlbSwgKnRoaXMpOwotICAgIGFkZEltcHVyZVBy
b3BlcnR5KEF0b21pY1N0cmluZyhjb25zdF9jYXN0PEF0b21pY1N0cmluZ0ltcGwqPigmbmFtZSkp
KTsKKyAgICBhZGRJbXB1cmVQcm9wZXJ0eShBdG9tU3RyaW5nKGNvbnN0X2Nhc3Q8QXRvbVN0cmlu
Z0ltcGwqPigmbmFtZSkpKTsKIH0KIAotdm9pZCBIVE1MRG9jdW1lbnQ6OnJlbW92ZURvY3VtZW50
TmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZ0ltcGwmIG5hbWUsIEVsZW1lbnQmIGl0ZW0pCit2
b2lkIEhUTUxEb2N1bWVudDo6cmVtb3ZlRG9jdW1lbnROYW1lZEl0ZW0oY29uc3QgQXRvbVN0cmlu
Z0ltcGwmIG5hbWUsIEVsZW1lbnQmIGl0ZW0pCiB7CiAgICAgbV9kb2N1bWVudE5hbWVkSXRlbS5y
ZW1vdmUobmFtZSwgaXRlbSk7CiB9CiAKLXZvaWQgSFRNTERvY3VtZW50OjphZGRXaW5kb3dOYW1l
ZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nSW1wbCYgbmFtZSwgRWxlbWVudCYgaXRlbSkKK3ZvaWQg
SFRNTERvY3VtZW50OjphZGRXaW5kb3dOYW1lZEl0ZW0oY29uc3QgQXRvbVN0cmluZ0ltcGwmIG5h
bWUsIEVsZW1lbnQmIGl0ZW0pCiB7CiAgICAgbV93aW5kb3dOYW1lZEl0ZW0uYWRkKG5hbWUsIGl0
ZW0sICp0aGlzKTsKIH0KIAotdm9pZCBIVE1MRG9jdW1lbnQ6OnJlbW92ZVdpbmRvd05hbWVkSXRl
bShjb25zdCBBdG9taWNTdHJpbmdJbXBsJiBuYW1lLCBFbGVtZW50JiBpdGVtKQordm9pZCBIVE1M
RG9jdW1lbnQ6OnJlbW92ZVdpbmRvd05hbWVkSXRlbShjb25zdCBBdG9tU3RyaW5nSW1wbCYgbmFt
ZSwgRWxlbWVudCYgaXRlbSkKIHsKICAgICBtX3dpbmRvd05hbWVkSXRlbS5yZW1vdmUobmFtZSwg
aXRlbSk7CiB9CkBAIC0yMjgsNyArMjI4LDcgQEAgYm9vbCBIVE1MRG9jdW1lbnQ6OmlzQ2FzZVNl
bnNpdGl2ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQogICAg
ICAgICAgICAgJnZhbHVldHlwZUF0dHIuZ2V0KCksCiAgICAgICAgICAgICAmdmxpbmtBdHRyLmdl
dCgpLAogICAgICAgICB9OwotICAgICAgICBIYXNoU2V0PEF0b21pY1N0cmluZz4gc2V0OworICAg
ICAgICBIYXNoU2V0PEF0b21TdHJpbmc+IHNldDsKICAgICAgICAgZm9yIChhdXRvKiBuYW1lIDog
bmFtZXMpCiAgICAgICAgICAgICBzZXQuYWRkKG5hbWUtPmxvY2FsTmFtZSgpKTsKICAgICAgICAg
cmV0dXJuIHNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5oCmluZGV4IDUwMmIyMjMzNjE2
Y2IzY2I3NTA3NzdiM2M5NTM0OGZlZjY5YzNiMWUuLmFiOTg3YmVhYzNlN2Y5MzRlMmU5ZjNjMjFh
ZmUzMDllMzIwODMyMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3Vt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuaApAQCAtMzYsMjAg
KzM2LDIwIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQgd2lkdGgoKTsKICAgICBX
RUJDT1JFX0VYUE9SVCBpbnQgaGVpZ2h0KCk7CiAgICAgCi0gICAgT3B0aW9uYWw8VmFyaWFudDxS
ZWZQdHI8V2luZG93UHJveHk+LCBSZWZQdHI8RWxlbWVudD4sIFJlZlB0cjxIVE1MQ29sbGVjdGlv
bj4+PiBuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJik7Ci0gICAgVmVjdG9yPEF0b21pY1N0
cmluZz4gc3VwcG9ydGVkUHJvcGVydHlOYW1lcygpIGNvbnN0OworICAgIE9wdGlvbmFsPFZhcmlh
bnQ8UmVmUHRyPFdpbmRvd1Byb3h5PiwgUmVmUHRyPEVsZW1lbnQ+LCBSZWZQdHI8SFRNTENvbGxl
Y3Rpb24+Pj4gbmFtZWRJdGVtKGNvbnN0IEF0b21TdHJpbmcmKTsKKyAgICBWZWN0b3I8QXRvbVN0
cmluZz4gc3VwcG9ydGVkUHJvcGVydHlOYW1lcygpIGNvbnN0OwogCi0gICAgRWxlbWVudCogZG9j
dW1lbnROYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nSW1wbCYgbmFtZSkgY29uc3QgeyByZXR1
cm4gbV9kb2N1bWVudE5hbWVkSXRlbS5nZXRFbGVtZW50QnlEb2N1bWVudE5hbWVkSXRlbShuYW1l
LCAqdGhpcyk7IH0KLSAgICBib29sIGhhc0RvY3VtZW50TmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0
cmluZ0ltcGwmIG5hbWUpIGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1lbnROYW1lZEl0ZW0uY29udGFp
bnMobmFtZSk7IH0KLSAgICBib29sIGRvY3VtZW50TmFtZWRJdGVtQ29udGFpbnNNdWx0aXBsZUVs
ZW1lbnRzKGNvbnN0IEF0b21pY1N0cmluZ0ltcGwmIG5hbWUpIGNvbnN0IHsgcmV0dXJuIG1fZG9j
dW1lbnROYW1lZEl0ZW0uY29udGFpbnNNdWx0aXBsZShuYW1lKTsgfQotICAgIHZvaWQgYWRkRG9j
dW1lbnROYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nSW1wbCYsIEVsZW1lbnQmKTsKLSAgICB2
b2lkIHJlbW92ZURvY3VtZW50TmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZ0ltcGwmLCBFbGVt
ZW50Jik7CisgICAgRWxlbWVudCogZG9jdW1lbnROYW1lZEl0ZW0oY29uc3QgQXRvbVN0cmluZ0lt
cGwmIG5hbWUpIGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1lbnROYW1lZEl0ZW0uZ2V0RWxlbWVudEJ5
RG9jdW1lbnROYW1lZEl0ZW0obmFtZSwgKnRoaXMpOyB9CisgICAgYm9vbCBoYXNEb2N1bWVudE5h
bWVkSXRlbShjb25zdCBBdG9tU3RyaW5nSW1wbCYgbmFtZSkgY29uc3QgeyByZXR1cm4gbV9kb2N1
bWVudE5hbWVkSXRlbS5jb250YWlucyhuYW1lKTsgfQorICAgIGJvb2wgZG9jdW1lbnROYW1lZEl0
ZW1Db250YWluc011bHRpcGxlRWxlbWVudHMoY29uc3QgQXRvbVN0cmluZ0ltcGwmIG5hbWUpIGNv
bnN0IHsgcmV0dXJuIG1fZG9jdW1lbnROYW1lZEl0ZW0uY29udGFpbnNNdWx0aXBsZShuYW1lKTsg
fQorICAgIHZvaWQgYWRkRG9jdW1lbnROYW1lZEl0ZW0oY29uc3QgQXRvbVN0cmluZ0ltcGwmLCBF
bGVtZW50Jik7CisgICAgdm9pZCByZW1vdmVEb2N1bWVudE5hbWVkSXRlbShjb25zdCBBdG9tU3Ry
aW5nSW1wbCYsIEVsZW1lbnQmKTsKIAotICAgIEVsZW1lbnQqIHdpbmRvd05hbWVkSXRlbShjb25z
dCBBdG9taWNTdHJpbmdJbXBsJiBuYW1lKSBjb25zdCB7IHJldHVybiBtX3dpbmRvd05hbWVkSXRl
bS5nZXRFbGVtZW50QnlXaW5kb3dOYW1lZEl0ZW0obmFtZSwgKnRoaXMpOyB9Ci0gICAgYm9vbCBo
YXNXaW5kb3dOYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nSW1wbCYgbmFtZSkgY29uc3QgeyBy
ZXR1cm4gbV93aW5kb3dOYW1lZEl0ZW0uY29udGFpbnMobmFtZSk7IH0KLSAgICBib29sIHdpbmRv
d05hbWVkSXRlbUNvbnRhaW5zTXVsdGlwbGVFbGVtZW50cyhjb25zdCBBdG9taWNTdHJpbmdJbXBs
JiBuYW1lKSBjb25zdCB7IHJldHVybiBtX3dpbmRvd05hbWVkSXRlbS5jb250YWluc011bHRpcGxl
KG5hbWUpOyB9Ci0gICAgdm9pZCBhZGRXaW5kb3dOYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5n
SW1wbCYsIEVsZW1lbnQmKTsKLSAgICB2b2lkIHJlbW92ZVdpbmRvd05hbWVkSXRlbShjb25zdCBB
dG9taWNTdHJpbmdJbXBsJiwgRWxlbWVudCYpOworICAgIEVsZW1lbnQqIHdpbmRvd05hbWVkSXRl
bShjb25zdCBBdG9tU3RyaW5nSW1wbCYgbmFtZSkgY29uc3QgeyByZXR1cm4gbV93aW5kb3dOYW1l
ZEl0ZW0uZ2V0RWxlbWVudEJ5V2luZG93TmFtZWRJdGVtKG5hbWUsICp0aGlzKTsgfQorICAgIGJv
b2wgaGFzV2luZG93TmFtZWRJdGVtKGNvbnN0IEF0b21TdHJpbmdJbXBsJiBuYW1lKSBjb25zdCB7
IHJldHVybiBtX3dpbmRvd05hbWVkSXRlbS5jb250YWlucyhuYW1lKTsgfQorICAgIGJvb2wgd2lu
ZG93TmFtZWRJdGVtQ29udGFpbnNNdWx0aXBsZUVsZW1lbnRzKGNvbnN0IEF0b21TdHJpbmdJbXBs
JiBuYW1lKSBjb25zdCB7IHJldHVybiBtX3dpbmRvd05hbWVkSXRlbS5jb250YWluc011bHRpcGxl
KG5hbWUpOyB9CisgICAgdm9pZCBhZGRXaW5kb3dOYW1lZEl0ZW0oY29uc3QgQXRvbVN0cmluZ0lt
cGwmLCBFbGVtZW50Jik7CisgICAgdm9pZCByZW1vdmVXaW5kb3dOYW1lZEl0ZW0oY29uc3QgQXRv
bVN0cmluZ0ltcGwmLCBFbGVtZW50Jik7CiAKICAgICBzdGF0aWMgYm9vbCBpc0Nhc2VTZW5zaXRp
dmVBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVs
ZW1lbnQuY3BwCmluZGV4IGUzZWU4MDhjZjNlZTBkMWVlMWVjZjBmNzcyM2U2NjIyMGNjMWUxNjMu
LjgyYzIyZDQxOWRkODc2ZmIwYzg4NDJhMzhkYzlhNDQ2ZjEzOTQ4NDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEVsZW1lbnQuY3BwCkBAIC04NCw3ICs4NCw3IEBAIFJlZjxIVE1MRWxlbWVudD4gSFRN
TEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYg
ZG9jCiAKIFN0cmluZyBIVE1MRWxlbWVudDo6bm9kZU5hbWUoKSBjb25zdAogewotICAgIC8vIEZJ
WE1FOiBXb3VsZCBiZSBuaWNlIHRvIGhhdmUgYW4gQXRvbWljU3RyaW5nIGxvb2t1cCBiYXNlZCBv
ZmYgdXBwZXJjYXNlCisgICAgLy8gRklYTUU6IFdvdWxkIGJlIG5pY2UgdG8gaGF2ZSBhbiBBdG9t
U3RyaW5nIGxvb2t1cCBiYXNlZCBvZmYgdXBwZXJjYXNlCiAgICAgLy8gQVNDSUkgY2hhcmFjdGVy
cyB0aGF0IGRvZXMgbm90IGhhdmUgdG8gY29weSB0aGUgc3RyaW5nIG9uIGEgaGl0IGluIHRoZSBo
YXNoLgogICAgIGlmIChkb2N1bWVudCgpLmlzSFRNTERvY3VtZW50KCkpIHsKICAgICAgICAgaWYg
KExJS0VMWSghdGFnUU5hbWUoKS5oYXNQcmVmaXgoKSkpCkBAIC0xMDMsNyArMTAzLDcgQEAgc3Rh
dGljIGlubGluZSBDU1NWYWx1ZUlEIHVuaWNvZGVCaWRpQXR0cmlidXRlRm9yRGlyQXV0byhIVE1M
RWxlbWVudCYgZWxlbWVudCkKICAgICByZXR1cm4gQ1NTVmFsdWVJc29sYXRlOwogfQogCi11bnNp
Z25lZCBIVE1MRWxlbWVudDo6cGFyc2VCb3JkZXJXaWR0aEF0dHJpYnV0ZShjb25zdCBBdG9taWNT
dHJpbmcmIHZhbHVlKSBjb25zdAordW5zaWduZWQgSFRNTEVsZW1lbnQ6OnBhcnNlQm9yZGVyV2lk
dGhBdHRyaWJ1dGUoY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpIGNvbnN0CiB7CiAgICAgaWYgKGF1
dG8gb3B0aW9uYWxCb3JkZXJXaWR0aCA9IHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcih2YWx1
ZSkpCiAgICAgICAgIHJldHVybiBvcHRpb25hbEJvcmRlcldpZHRoLnZhbHVlKCk7CkBAIC0xMTEs
MTMgKzExMSwxMyBAQCB1bnNpZ25lZCBIVE1MRWxlbWVudDo6cGFyc2VCb3JkZXJXaWR0aEF0dHJp
YnV0ZShjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKSBjb25zdAogICAgIHJldHVybiBoYXNUYWdO
YW1lKHRhYmxlVGFnKSA/IDEgOiAwOwogfQogCi12b2lkIEhUTUxFbGVtZW50OjphcHBseUJvcmRl
ckF0dHJpYnV0ZVRvU3R5bGUoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSwgTXV0YWJsZVN0eWxl
UHJvcGVydGllcyYgc3R5bGUpCit2b2lkIEhUTUxFbGVtZW50OjphcHBseUJvcmRlckF0dHJpYnV0
ZVRvU3R5bGUoY29uc3QgQXRvbVN0cmluZyYgdmFsdWUsIE11dGFibGVTdHlsZVByb3BlcnRpZXMm
IHN0eWxlKQogewogICAgIGFkZFByb3BlcnR5VG9QcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZShz
dHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJXaWR0aCwgcGFyc2VCb3JkZXJXaWR0aEF0dHJpYnV0ZSh2
YWx1ZSksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOwogICAgIGFkZFByb3BlcnR5VG9QcmVz
ZW50YXRpb25BdHRyaWJ1dGVTdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJTdHlsZSwgQ1NT
VmFsdWVTb2xpZCk7CiB9CiAKLXZvaWQgSFRNTEVsZW1lbnQ6Om1hcExhbmd1YWdlQXR0cmlidXRl
VG9Mb2NhbGUoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSwgTXV0YWJsZVN0eWxlUHJvcGVydGll
cyYgc3R5bGUpCit2b2lkIEhUTUxFbGVtZW50OjptYXBMYW5ndWFnZUF0dHJpYnV0ZVRvTG9jYWxl
KGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlLCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJiBzdHlsZSkK
IHsKICAgICBpZiAoIXZhbHVlLmlzRW1wdHkoKSkgewogICAgICAgICAvLyBIYXZlIHRvIHF1b3Rl
IHNvIHRoZSBsb2NhbGUgaWQgaXMgdHJlYXRlZCBhcyBhIHN0cmluZyBpbnN0ZWFkIG9mIGFzIGEg
Q1NTIGtleXdvcmQuCkBAIC0xMzUsNyArMTM1LDcgQEAgYm9vbCBIVE1MRWxlbWVudDo6aXNQcmVz
ZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKICAgICBy
ZXR1cm4gU3R5bGVkRWxlbWVudDo6aXNQcmVzZW50YXRpb25BdHRyaWJ1dGUobmFtZSk7CiB9CiAK
LXN0YXRpYyBib29sIGlzTFRST3JSVExJZ25vcmluZ0Nhc2UoY29uc3QgQXRvbWljU3RyaW5nJiBk
aXJBdHRyaWJ1dGVWYWx1ZSkKK3N0YXRpYyBib29sIGlzTFRST3JSVExJZ25vcmluZ0Nhc2UoY29u
c3QgQXRvbVN0cmluZyYgZGlyQXR0cmlidXRlVmFsdWUpCiB7CiAgICAgcmV0dXJuIGVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGRpckF0dHJpYnV0ZVZhbHVlLCAicnRsIikgfHwgZXF1YWxM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZGlyQXR0cmlidXRlVmFsdWUsICJsdHIiKTsKIH0KQEAg
LTE0Nyw3ICsxNDcsNyBAQCBlbnVtIGNsYXNzIENvbnRlbnRFZGl0YWJsZVR5cGUgewogICAgIFBs
YWludGV4dE9ubHkKIH07CiAKLXN0YXRpYyBpbmxpbmUgQ29udGVudEVkaXRhYmxlVHlwZSBjb250
ZW50RWRpdGFibGVUeXBlKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCitzdGF0aWMgaW5saW5l
IENvbnRlbnRFZGl0YWJsZVR5cGUgY29udGVudEVkaXRhYmxlVHlwZShjb25zdCBBdG9tU3RyaW5n
JiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBDb250
ZW50RWRpdGFibGVUeXBlOjpJbmhlcml0OwpAQCAtMTY2LDcgKzE2Niw3IEBAIHN0YXRpYyBDb250
ZW50RWRpdGFibGVUeXBlIGNvbnRlbnRFZGl0YWJsZVR5cGUoY29uc3QgSFRNTEVsZW1lbnQmIGVs
ZW1lbnQpCiAgICAgcmV0dXJuIGNvbnRlbnRFZGl0YWJsZVR5cGUoZWxlbWVudC5hdHRyaWJ1dGVX
aXRob3V0U3luY2hyb25pemF0aW9uKGNvbnRlbnRlZGl0YWJsZUF0dHIpKTsKIH0KIAotdm9pZCBI
VE1MRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUsIE11dGFibGVTdHls
ZVByb3BlcnRpZXMmIHN0eWxlKQordm9pZCBIVE1MRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yUHJl
c2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21T
dHJpbmcmIHZhbHVlLCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJiBzdHlsZSkKIHsKICAgICBpZiAo
bmFtZSA9PSBhbGlnbkF0dHIpIHsKICAgICAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKHZhbHVlLCAibWlkZGxlIikpCkBAIC0zNDcsNyArMzQ3LDcgQEAgSFRNTEVsZW1lbnQ6
OkV2ZW50SGFuZGxlck5hbWVNYXAgSFRNTEVsZW1lbnQ6OmNyZWF0ZUV2ZW50SGFuZGxlck5hbWVN
YXAoKQogCiAgICAgc3RydWN0IFVudXN1YWxNYXBwaW5nIHsKICAgICAgICAgY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0cmlidXRlTmFtZTsKLSAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBldmVu
dE5hbWU7CisgICAgICAgIGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50TmFtZTsKICAgICB9OwogCiAg
ICAgY29uc3QgVW51c3VhbE1hcHBpbmcgdW51c3VhbFBhaXJzVGFibGVbXSA9IHsKQEAgLTM3NCwx
MyArMzc0LDEzIEBAIHZvaWQgSFRNTEVsZW1lbnQ6OnBvcHVsYXRlRXZlbnRIYW5kbGVyTmFtZU1h
cChFdmVudEhhbmRsZXJOYW1lTWFwJiBtYXAsIGNvbnN0IFF1CiAKICAgICAgICAgLy8gUmVtb3Zl
IHRoZSAib24iIHByZWZpeC4gUmVxdWlyZXMgc29tZSBtZW1vcnkgYWxsb2NhdGlvbiBhbmQgY29t
cHV0aW5nIGEgaGFzaCwgYnV0IGJ5IG5vdAogICAgICAgICAvLyB1c2luZyBwb2ludGVycyBmcm9t
IGV2ZW50TmFtZXMoKSwgdGhlIHBhc3NlZC1pbiB0YWJsZSBjYW4gYmUgaW5pdGlhbGl6ZWQgYXQg
Y29tcGlsZSB0aW1lLgotICAgICAgICBBdG9taWNTdHJpbmcgZXZlbnROYW1lID0gYXR0cmlidXRl
TmFtZS5zdHJpbmcoKS5zdWJzdHJpbmcoMik7CisgICAgICAgIEF0b21TdHJpbmcgZXZlbnROYW1l
ID0gYXR0cmlidXRlTmFtZS5zdHJpbmcoKS5zdWJzdHJpbmcoMik7CiAKICAgICAgICAgbWFwLmFk
ZChhdHRyaWJ1dGVOYW1lLmltcGwoKSwgV1RGTW92ZShldmVudE5hbWUpKTsKICAgICB9CiB9CiAK
LWNvbnN0IEF0b21pY1N0cmluZyYgSFRNTEVsZW1lbnQ6OmV2ZW50TmFtZUZvckV2ZW50SGFuZGxl
ckF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBjb25zdCBFdmVu
dEhhbmRsZXJOYW1lTWFwJiBtYXApCitjb25zdCBBdG9tU3RyaW5nJiBIVE1MRWxlbWVudDo6ZXZl
bnROYW1lRm9yRXZlbnRIYW5kbGVyQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJp
YnV0ZU5hbWUsIGNvbnN0IEV2ZW50SGFuZGxlck5hbWVNYXAmIG1hcCkKIHsKICAgICBBU1NFUlQo
IWF0dHJpYnV0ZU5hbWUubG9jYWxOYW1lKCkuaXNOdWxsKCkpOwogCkBAIC0zODksNyArMzg5LDcg
QEAgY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MRWxlbWVudDo6ZXZlbnROYW1lRm9yRXZlbnRIYW5k
bGVyQXR0cmlidXRlKGNvbnN0IFF1YWxpZmkKICAgICAgICAgcmV0dXJuIG51bGxBdG9tKCk7CiAK
ICAgICAvLyBGYXN0IGVhcmx5IHJldHVybiBmb3IgbmFtZXMgdGhhdCBkb24ndCBzdGFydCB3aXRo
ICJvbiIuCi0gICAgQXRvbWljU3RyaW5nSW1wbCYgbG9jYWxOYW1lID0gKmF0dHJpYnV0ZU5hbWUu
bG9jYWxOYW1lKCkuaW1wbCgpOworICAgIEF0b21TdHJpbmdJbXBsJiBsb2NhbE5hbWUgPSAqYXR0
cmlidXRlTmFtZS5sb2NhbE5hbWUoKS5pbXBsKCk7CiAgICAgaWYgKGxvY2FsTmFtZS5sZW5ndGgo
KSA8IDMgfHwgbG9jYWxOYW1lWzBdICE9ICdvJyB8fCBsb2NhbE5hbWVbMV0gIT0gJ24nKQogICAg
ICAgICByZXR1cm4gbnVsbEF0b20oKTsKIApAQCAtMzk3LDcgKzM5Nyw3IEBAIGNvbnN0IEF0b21p
Y1N0cmluZyYgSFRNTEVsZW1lbnQ6OmV2ZW50TmFtZUZvckV2ZW50SGFuZGxlckF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpCiAgICAgcmV0dXJuIGl0ID09IG1hcC5lbmQoKSA/IG51bGxBdG9tKCkgOiBp
dC0+dmFsdWU7CiB9CiAKLWNvbnN0IEF0b21pY1N0cmluZyYgSFRNTEVsZW1lbnQ6OmV2ZW50TmFt
ZUZvckV2ZW50SGFuZGxlckF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVO
YW1lKQorY29uc3QgQXRvbVN0cmluZyYgSFRNTEVsZW1lbnQ6OmV2ZW50TmFtZUZvckV2ZW50SGFu
ZGxlckF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQogewogICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxFdmVudEhhbmRsZXJOYW1lTWFwPiBtYXAgPSBjcmVhdGVF
dmVudEhhbmRsZXJOYW1lTWFwKCk7CiAgICAgcmV0dXJuIGV2ZW50TmFtZUZvckV2ZW50SGFuZGxl
ckF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lLCBtYXAuZ2V0KCkpOwpAQCAtNDM2LDcgKzQzNiw3IEBA
IGJvb2wgSFRNTEVsZW1lbnQ6Om1hdGNoZXNSZWFkV3JpdGVQc2V1ZG9DbGFzcygpIGNvbnN0CiAg
ICAgcmV0dXJuIGVkaXRhYmlsaXR5RnJvbUNvbnRlbnRFZGl0YWJsZUF0dHIoKnRoaXMpICE9IEVk
aXRhYmlsaXR5OjpSZWFkT25seTsKIH0KIAotdm9pZCBIVE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkK
K3ZvaWQgSFRNTEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5h
bWUsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKQogewogICAgIGlmIChuYW1lID09IGRpckF0dHIp
IHsKICAgICAgICAgZGlyQXR0cmlidXRlQ2hhbmdlZCh2YWx1ZSk7CkBAIC01MDMsMTEgKzUwMywx
MSBAQCBzdGF0aWMgUmVmPERvY3VtZW50RnJhZ21lbnQ+IHRleHRUb0ZyYWdtZW50KERvY3VtZW50
JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB0ZQogLy8gb3IgdGhlIGVtcHR5IHN0cmluZyBpZiB0
aGUgYXR0cmlidXRlIGlzIGluIGEgc3RhdGUgdGhhdCBoYXMgbm8gYXNzb2NpYXRlZCBrZXl3b3Jk
IHZhbHVlIG9yIGlmIHRoZSBhdHRyaWJ1dGUgaXMKIC8vIG5vdCBpbiBhIGRlZmluZWQgc3RhdGUg
KGUuZy4gdGhlIGF0dHJpYnV0ZSBpcyBtaXNzaW5nIGFuZCB0aGVyZSBpcyBubyBtaXNzaW5nIHZh
bHVlIGRlZmF1bHQpLgogLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1
cnJlbnQtd29yay9tdWx0aXBhZ2UvY29tbW9uLWRvbS1pbnRlcmZhY2VzLmh0bWwjbGltaXRlZC10
by1vbmx5LWtub3duLXZhbHVlcwotc3RhdGljIGlubGluZSBjb25zdCBBdG9taWNTdHJpbmcmIHRv
VmFsaWREaXJWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQorc3RhdGljIGlubGluZSBj
b25zdCBBdG9tU3RyaW5nJiB0b1ZhbGlkRGlyVmFsdWUoY29uc3QgQXRvbVN0cmluZyYgdmFsdWUp
CiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gbHRyVmFsdWUoImx0
ciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHJ0bFZhbHVlKCJydGwiLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3Ry
aW5nPiBhdXRvVmFsdWUoImF1dG8iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbVN0cmluZz4gbHRyVmFsdWUoImx0ciIs
IEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8QXRvbVN0cmluZz4gcnRsVmFsdWUoInJ0bCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbVN0cmluZz4gYXV0b1Zh
bHVlKCJhdXRvIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIGlmIChl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh2YWx1ZSwgImx0ciIpKQogICAgICAgICByZXR1
cm4gbHRyVmFsdWU7CiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHZhbHVl
LCAicnRsIikpCkBAIC01MTcsMTIgKzUxNywxMiBAQCBzdGF0aWMgaW5saW5lIGNvbnN0IEF0b21p
Y1N0cmluZyYgdG9WYWxpZERpclZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiAgICAg
cmV0dXJuIG51bGxBdG9tKCk7CiB9CiAKLWNvbnN0IEF0b21pY1N0cmluZyYgSFRNTEVsZW1lbnQ6
OmRpcigpIGNvbnN0Citjb25zdCBBdG9tU3RyaW5nJiBIVE1MRWxlbWVudDo6ZGlyKCkgY29uc3QK
IHsKICAgICByZXR1cm4gdG9WYWxpZERpclZhbHVlKGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6
YXRpb24oZGlyQXR0cikpOwogfQogCi12b2lkIEhUTUxFbGVtZW50OjpzZXREaXIoY29uc3QgQXRv
bWljU3RyaW5nJiB2YWx1ZSkKK3ZvaWQgSFRNTEVsZW1lbnQ6OnNldERpcihjb25zdCBBdG9tU3Ry
aW5nJiB2YWx1ZSkKIHsKICAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGRp
ckF0dHIsIHZhbHVlKTsKIH0KQEAgLTYwMCw3ICs2MDAsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBI
VE1MRWxlbWVudDo6c2V0T3V0ZXJUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCkKICAgICByZXR1cm4g
eyB9OwogfQogCi12b2lkIEhUTUxFbGVtZW50OjphcHBseUFsaWdubWVudEF0dHJpYnV0ZVRvU3R5
bGUoY29uc3QgQXRvbWljU3RyaW5nJiBhbGlnbm1lbnQsIE11dGFibGVTdHlsZVByb3BlcnRpZXMm
IHN0eWxlKQordm9pZCBIVE1MRWxlbWVudDo6YXBwbHlBbGlnbm1lbnRBdHRyaWJ1dGVUb1N0eWxl
KGNvbnN0IEF0b21TdHJpbmcmIGFsaWdubWVudCwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYgc3R5
bGUpCiB7CiAgICAgLy8gVmVydGljYWwgYWxpZ25tZW50IHdpdGggcmVzcGVjdCB0byB0aGUgY3Vy
cmVudCBiYXNlbGluZSBvZiB0aGUgdGV4dAogICAgIC8vIHJpZ2h0IG9yIGxlZnQgbWVhbnMgZmxv
YXRpbmcgaW1hZ2VzLgpAQCAtNjYzLDExICs2NjMsMTEgQEAgU3RyaW5nIEhUTUxFbGVtZW50Ojpj
b250ZW50RWRpdGFibGUoKSBjb25zdAogRXhjZXB0aW9uT3I8dm9pZD4gSFRNTEVsZW1lbnQ6OnNl
dENvbnRlbnRFZGl0YWJsZShjb25zdCBTdHJpbmcmIGVuYWJsZWQpCiB7CiAgICAgaWYgKGVxdWFs
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGVuYWJsZWQsICJ0cnVlIikpCi0gICAgICAgIHNldEF0
dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oY29udGVudGVkaXRhYmxlQXR0ciwgQXRvbWlj
U3RyaW5nKCJ0cnVlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAg
ICAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGNvbnRlbnRlZGl0YWJsZUF0
dHIsIEF0b21TdHJpbmcoInRydWUiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkp
OwogICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGVuYWJsZWQsICJm
YWxzZSIpKQotICAgICAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGNvbnRl
bnRlZGl0YWJsZUF0dHIsIEF0b21pY1N0cmluZygiZmFsc2UiLCBBdG9taWNTdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKSk7CisgICAgICAgIHNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6
YXRpb24oY29udGVudGVkaXRhYmxlQXR0ciwgQXRvbVN0cmluZygiZmFsc2UiLCBBdG9tU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKGVuYWJsZWQsICJwbGFpbnRleHQtb25seSIpKQotICAgICAgICBzZXRBdHRy
aWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGNvbnRlbnRlZGl0YWJsZUF0dHIsIEF0b21pY1N0
cmluZygicGxhaW50ZXh0LW9ubHkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KSk7CisgICAgICAgIHNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oY29udGVudGVk
aXRhYmxlQXR0ciwgQXRvbVN0cmluZygicGxhaW50ZXh0LW9ubHkiLCBBdG9tU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCkpOwogICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKGVuYWJsZWQsICJpbmhlcml0IikpCiAgICAgICAgIHJlbW92ZUF0dHJpYnV0ZShjb250
ZW50ZWRpdGFibGVBdHRyKTsKICAgICBlbHNlCkBAIC02ODMsOCArNjgzLDggQEAgYm9vbCBIVE1M
RWxlbWVudDo6ZHJhZ2dhYmxlKCkgY29uc3QKIHZvaWQgSFRNTEVsZW1lbnQ6OnNldERyYWdnYWJs
ZShib29sIHZhbHVlKQogewogICAgIHNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24o
ZHJhZ2dhYmxlQXR0ciwgdmFsdWUKLSAgICAgICAgPyBBdG9taWNTdHJpbmcoInRydWUiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKQotICAgICAgICA6IEF0b21pY1N0cmluZygi
ZmFsc2UiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgICAgID8g
QXRvbVN0cmluZygidHJ1ZSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKQorICAg
ICAgICA6IEF0b21TdHJpbmcoImZhbHNlIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpKTsKIH0KIAogYm9vbCBIVE1MRWxlbWVudDo6c3BlbGxjaGVjaygpIGNvbnN0CkBAIC02OTUs
OCArNjk1LDggQEAgYm9vbCBIVE1MRWxlbWVudDo6c3BlbGxjaGVjaygpIGNvbnN0CiB2b2lkIEhU
TUxFbGVtZW50OjpzZXRTcGVsbGNoZWNrKGJvb2wgZW5hYmxlKQogewogICAgIHNldEF0dHJpYnV0
ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oc3BlbGxjaGVja0F0dHIsIGVuYWJsZQotICAgICAgICA/
IEF0b21pY1N0cmluZygidHJ1ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
Ci0gICAgICAgIDogQXRvbWljU3RyaW5nKCJmYWxzZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpKTsKKyAgICAgICAgPyBBdG9tU3RyaW5nKCJ0cnVlIiwgQXRvbVN0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpCisgICAgICAgIDogQXRvbVN0cmluZygiZmFsc2UiLCBBdG9t
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogfQogCiB2b2lkIEhUTUxFbGVtZW50Ojpj
bGljaygpCkBAIC03MjQsNyArNzI0LDcgQEAgaW50IEhUTUxFbGVtZW50Ojp0YWJJbmRleCgpIGNv
bnN0CiBib29sIEhUTUxFbGVtZW50Ojp0cmFuc2xhdGUoKSBjb25zdAogewogICAgIGZvciAoYXV0
byYgZWxlbWVudCA6IGxpbmVhZ2VPZlR5cGU8SFRNTEVsZW1lbnQ+KCp0aGlzKSkgewotICAgICAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0gZWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKHRyYW5zbGF0ZUF0dHIpOworICAgICAgICBjb25zdCBBdG9tU3RyaW5nJiB2
YWx1ZSA9IGVsZW1lbnQuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih0cmFuc2xhdGVB
dHRyKTsKICAgICAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHZhbHVlLCAi
eWVzIikgfHwgKHZhbHVlLmlzRW1wdHkoKSAmJiAhdmFsdWUuaXNOdWxsKCkpKQogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZSh2YWx1ZSwgIm5vIikpCkBAIC04MTIsNyArODEyLDcgQEAgdm9pZCBIVE1MRWxlbWVudDo6Y2hp
bGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2UpCiAKIGJvb2wgSFRNTEVsZW1l
bnQ6Omhhc0RpcmVjdGlvbkF1dG8oKSBjb25zdAogewotICAgIGNvbnN0IEF0b21pY1N0cmluZyYg
ZGlyZWN0aW9uID0gYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihkaXJBdHRyKTsKKyAg
ICBjb25zdCBBdG9tU3RyaW5nJiBkaXJlY3Rpb24gPSBhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25p
emF0aW9uKGRpckF0dHIpOwogICAgIHJldHVybiAoaGFzVGFnTmFtZShiZGlUYWcpICYmIGRpcmVj
dGlvbi5pc051bGwoKSkgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZGlyZWN0aW9u
LCAiYXV0byIpOwogfQogCkBAIC04NzIsNyArODcyLDcgQEAgVGV4dERpcmVjdGlvbiBIVE1MRWxl
bWVudDo6ZGlyZWN0aW9uYWxpdHkoTm9kZSoqIHN0cm9uZ0RpcmVjdGlvbmFsaXR5VGV4dE5vZGUp
IGMKICAgICByZXR1cm4gVGV4dERpcmVjdGlvbjo6TFRSOwogfQogCi12b2lkIEhUTUxFbGVtZW50
OjpkaXJBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCit2b2lkIEhU
TUxFbGVtZW50OjpkaXJBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKQog
ewogICAgIFJlZlB0cjxFbGVtZW50PiBwYXJlbnQgPSBwYXJlbnRFbGVtZW50KCk7CiAKQEAgLTEw
NzcsNyArMTA3Nyw3IEBAIGJvb2wgSFRNTEVsZW1lbnQ6OmlzQWN0dWFsbHlEaXNhYmxlZCgpIGNv
bnN0CiAKICNpZiBFTkFCTEUoSU9TX0FVVE9DT1JSRUNUX0FORF9BVVRPQ0FQSVRBTElaRSkKIAot
Y29uc3QgQXRvbWljU3RyaW5nJiBIVE1MRWxlbWVudDo6YXV0b2NhcGl0YWxpemUoKSBjb25zdAor
Y29uc3QgQXRvbVN0cmluZyYgSFRNTEVsZW1lbnQ6OmF1dG9jYXBpdGFsaXplKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gc3RyaW5nRm9yQXV0b2NhcGl0YWxpemVUeXBlKGF1dG9jYXBpdGFsaXplVHlw
ZSgpKTsKIH0KQEAgLTEwODcsNyArMTA4Nyw3IEBAIEF1dG9jYXBpdGFsaXplVHlwZSBIVE1MRWxl
bWVudDo6YXV0b2NhcGl0YWxpemVUeXBlKCkgY29uc3QKICAgICByZXR1cm4gYXV0b2NhcGl0YWxp
emVUeXBlRm9yQXR0cmlidXRlVmFsdWUoYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihI
VE1MTmFtZXM6OmF1dG9jYXBpdGFsaXplQXR0cikpOwogfQogCi12b2lkIEhUTUxFbGVtZW50Ojpz
ZXRBdXRvY2FwaXRhbGl6ZShjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQordm9pZCBIVE1MRWxl
bWVudDo6c2V0QXV0b2NhcGl0YWxpemUoY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCiB7CiAgICAg
c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihhdXRvY2FwaXRhbGl6ZUF0dHIsIHZh
bHVlKTsKIH0KQEAgLTExMDEsNyArMTEwMSw3IEBAIGJvb2wgSFRNTEVsZW1lbnQ6OnNob3VsZEF1
dG9jb3JyZWN0KCkgY29uc3QKIAogdm9pZCBIVE1MRWxlbWVudDo6c2V0QXV0b2NvcnJlY3QoYm9v
bCBhdXRvY29ycmVjdCkKIHsKLSAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9u
KGF1dG9jb3JyZWN0QXR0ciwgYXV0b2NvcnJlY3QgPyBBdG9taWNTdHJpbmcoIm9uIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkgOiBBdG9taWNTdHJpbmcoIm9mZiIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzZXRBdHRyaWJ1dGVXaXRob3V0
U3luY2hyb25pemF0aW9uKGF1dG9jb3JyZWN0QXR0ciwgYXV0b2NvcnJlY3QgPyBBdG9tU3RyaW5n
KCJvbiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSA6IEF0b21TdHJpbmcoIm9m
ZiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CiB9CiAKICNlbmRpZgpAQCAt
MTExNiwxMiArMTExNiwxMiBAQCBJbnB1dE1vZGUgSFRNTEVsZW1lbnQ6OmNhbm9uaWNhbElucHV0
TW9kZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1vZGU7CiB9CiAKLWNvbnN0IEF0b21pY1N0cmluZyYg
SFRNTEVsZW1lbnQ6OmlucHV0TW9kZSgpIGNvbnN0Citjb25zdCBBdG9tU3RyaW5nJiBIVE1MRWxl
bWVudDo6aW5wdXRNb2RlKCkgY29uc3QKIHsKICAgICByZXR1cm4gc3RyaW5nRm9ySW5wdXRNb2Rl
KGNhbm9uaWNhbElucHV0TW9kZSgpKTsKIH0KIAotdm9pZCBIVE1MRWxlbWVudDo6c2V0SW5wdXRN
b2RlKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCit2b2lkIEhUTUxFbGVtZW50OjpzZXRJbnB1
dE1vZGUoY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCiB7CiAgICAgc2V0QXR0cmlidXRlV2l0aG91
dFN5bmNocm9uaXphdGlvbihpbnB1dG1vZGVBdHRyLCB2YWx1ZSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxFbGVtZW50LmgKaW5kZXggYjNiOTIzZjU5YTk3ZDQ0OGFjMTNlNjM3ZTA1MWE0ZGJiMzVmMjNj
Yy4uNjdiZjZhNmFiZWUzNWE5ZmU1Y2QzNmE1YmZkYmUzNGU5ZGNmYTEwNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEVsZW1lbnQuaApAQCAtNzUsOCArNzUsOCBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JF
X0VYUE9SVCB2aXJ0dWFsIEhUTUxGb3JtRWxlbWVudCogZm9ybSgpIGNvbnN0OwogCi0gICAgV0VC
Q09SRV9FWFBPUlQgY29uc3QgQXRvbWljU3RyaW5nJiBkaXIoKSBjb25zdDsKLSAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldERpcihjb25zdCBBdG9taWNTdHJpbmcmKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBjb25zdCBBdG9tU3RyaW5nJiBkaXIoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldERpcihjb25zdCBBdG9tU3RyaW5nJik7CiAKICAgICBib29sIGhhc0RpcmVjdGlvbkF1
dG8oKSBjb25zdDsKICAgICBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbmFsaXR5SWZoYXNEaXJBdXRv
QXR0cmlidXRlKGJvb2wmIGlzQXV0bykgY29uc3Q7CkBAIC05NCw3ICs5NCw3IEBAIHB1YmxpYzoK
IAogICAgIGJvb2wgaGFzVGFnTmFtZShjb25zdCBIVE1MUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29u
c3QgeyByZXR1cm4gaGFzTG9jYWxOYW1lKG5hbWUubG9jYWxOYW1lKCkpOyB9CiAKLSAgICBzdGF0
aWMgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudE5hbWVGb3JFdmVudEhhbmRsZXJBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSk7CisgICAgc3RhdGljIGNvbnN0IEF0
b21TdHJpbmcmIGV2ZW50TmFtZUZvckV2ZW50SGFuZGxlckF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyaWJ1dGVOYW1lKTsKIAogICAgIC8vIE9ubHkgc29tZSBlbGVtZW50IHR5cGVz
IGNhbiBiZSBkaXNhYmxlZDogaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uv
c2NyaXB0aW5nLmh0bWwjY29uY2VwdC1lbGVtZW50LWRpc2FibGVkCiAgICAgYm9vbCBjYW5CZUFj
dHVhbGx5RGlzYWJsZWQoKSBjb25zdDsKQEAgLTEwMiw4ICsxMDIsOCBAQCBwdWJsaWM6CiAKICNp
ZiBFTkFCTEUoSU9TX0FVVE9DT1JSRUNUX0FORF9BVVRPQ0FQSVRBTElaRSkKICAgICBXRUJDT1JF
X0VYUE9SVCB2aXJ0dWFsIEF1dG9jYXBpdGFsaXplVHlwZSBhdXRvY2FwaXRhbGl6ZVR5cGUoKSBj
b25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBBdG9taWNTdHJpbmcmIGF1dG9jYXBpdGFs
aXplKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBdXRvY2FwaXRhbGl6ZShj
b25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBBdG9t
U3RyaW5nJiBhdXRvY2FwaXRhbGl6ZSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0QXV0b2NhcGl0YWxpemUoY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpOwogCiAgICAgYm9vbCBh
dXRvY29ycmVjdCgpIGNvbnN0IHsgcmV0dXJuIHNob3VsZEF1dG9jb3JyZWN0KCk7IH0KICAgICBX
RUJDT1JFX0VYUE9SVCB2aXJ0dWFsIGJvb2wgc2hvdWxkQXV0b2NvcnJlY3QoKSBjb25zdDsKQEAg
LTExMSw4ICsxMTEsOCBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIFdFQkNPUkVfRVhQT1JUIElu
cHV0TW9kZSBjYW5vbmljYWxJbnB1dE1vZGUoKSBjb25zdDsKLSAgICBjb25zdCBBdG9taWNTdHJp
bmcmIGlucHV0TW9kZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0SW5wdXRNb2RlKGNvbnN0IEF0b21p
Y1N0cmluZyYgdmFsdWUpOworICAgIGNvbnN0IEF0b21TdHJpbmcmIGlucHV0TW9kZSgpIGNvbnN0
OworICAgIHZvaWQgc2V0SW5wdXRNb2RlKGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKTsKIAogcHJv
dGVjdGVkOgogICAgIEhUTUxFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERv
Y3VtZW50JiwgQ29uc3RydWN0aW9uVHlwZSk7CkBAIC0xMjAsMjggKzEyMCwyOCBAQCBwcm90ZWN0
ZWQ6CiAgICAgdm9pZCBhZGRIVE1MTGVuZ3RoVG9TdHlsZShNdXRhYmxlU3R5bGVQcm9wZXJ0aWVz
JiwgQ1NTUHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAgICAgdm9pZCBhZGRIVE1M
Q29sb3JUb1N0eWxlKE11dGFibGVTdHlsZVByb3BlcnRpZXMmLCBDU1NQcm9wZXJ0eUlELCBjb25z
dCBTdHJpbmcmIGNvbG9yKTsKIAotICAgIHZvaWQgYXBwbHlBbGlnbm1lbnRBdHRyaWJ1dGVUb1N0
eWxlKGNvbnN0IEF0b21pY1N0cmluZyYsIE11dGFibGVTdHlsZVByb3BlcnRpZXMmKTsKLSAgICB2
b2lkIGFwcGx5Qm9yZGVyQXR0cmlidXRlVG9TdHlsZShjb25zdCBBdG9taWNTdHJpbmcmLCBNdXRh
YmxlU3R5bGVQcm9wZXJ0aWVzJik7CisgICAgdm9pZCBhcHBseUFsaWdubWVudEF0dHJpYnV0ZVRv
U3R5bGUoY29uc3QgQXRvbVN0cmluZyYsIE11dGFibGVTdHlsZVByb3BlcnRpZXMmKTsKKyAgICB2
b2lkIGFwcGx5Qm9yZGVyQXR0cmlidXRlVG9TdHlsZShjb25zdCBBdG9tU3RyaW5nJiwgTXV0YWJs
ZVN0eWxlUHJvcGVydGllcyYpOwogCiAgICAgYm9vbCBtYXRjaGVzUmVhZFdyaXRlUHNldWRvQ2xh
c3MoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKKyAgICB2b2lkIHBhcnNl
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5nJikgb3ZlcnJp
ZGU7CiAgICAgYm9vbCBpc1ByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25B
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYsIE11dGFi
bGVTdHlsZVByb3BlcnRpZXMmKSBvdmVycmlkZTsKLSAgICB1bnNpZ25lZCBwYXJzZUJvcmRlcldp
ZHRoQXR0cmlidXRlKGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0OworICAgIHZvaWQgY29sbGVj
dFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25z
dCBBdG9tU3RyaW5nJiwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYpIG92ZXJyaWRlOworICAgIHVu
c2lnbmVkIHBhcnNlQm9yZGVyV2lkdGhBdHRyaWJ1dGUoY29uc3QgQXRvbVN0cmluZyYpIGNvbnN0
OwogCiAgICAgdm9pZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKSBvdmVycmlk
ZTsKICAgICB2b2lkIGNhbGN1bGF0ZUFuZEFkanVzdERpcmVjdGlvbmFsaXR5KCk7CiAKLSAgICB0
eXBlZGVmIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIEF0b21pY1N0cmluZz4gRXZlbnRIYW5k
bGVyTmFtZU1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8QXRvbVN0cmluZ0ltcGwqLCBBdG9tU3Ry
aW5nPiBFdmVudEhhbmRsZXJOYW1lTWFwOwogICAgIHRlbXBsYXRlPHNpemVfdCB0YWJsZVNpemU+
IHN0YXRpYyB2b2lkIHBvcHVsYXRlRXZlbnRIYW5kbGVyTmFtZU1hcChFdmVudEhhbmRsZXJOYW1l
TWFwJiwgY29uc3QgUXVhbGlmaWVkTmFtZSogY29uc3QgKCZ0YWJsZSlbdGFibGVTaXplXSk7Ci0g
ICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lRm9yRXZlbnRIYW5kbGVyQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IEV2ZW50SGFu
ZGxlck5hbWVNYXAmKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgZXZlbnROYW1lRm9y
RXZlbnRIYW5kbGVyQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUs
IGNvbnN0IEV2ZW50SGFuZGxlck5hbWVNYXAmKTsKIAogcHJpdmF0ZToKICAgICBTdHJpbmcgbm9k
ZU5hbWUoKSBjb25zdCBmaW5hbDsKIAotICAgIHZvaWQgbWFwTGFuZ3VhZ2VBdHRyaWJ1dGVUb0xv
Y2FsZShjb25zdCBBdG9taWNTdHJpbmcmLCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJik7CisgICAg
dm9pZCBtYXBMYW5ndWFnZUF0dHJpYnV0ZVRvTG9jYWxlKGNvbnN0IEF0b21TdHJpbmcmLCBNdXRh
YmxlU3R5bGVQcm9wZXJ0aWVzJik7CiAKLSAgICB2b2lkIGRpckF0dHJpYnV0ZUNoYW5nZWQoY29u
c3QgQXRvbWljU3RyaW5nJik7CisgICAgdm9pZCBkaXJBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IEF0
b21TdHJpbmcmKTsKICAgICB2b2lkIGFkanVzdERpcmVjdGlvbmFsaXR5SWZOZWVkZWRBZnRlckNo
aWxkQXR0cmlidXRlQ2hhbmdlZChFbGVtZW50KiBjaGlsZCk7CiAgICAgdm9pZCBhZGp1c3REaXJl
Y3Rpb25hbGl0eUlmTmVlZGVkQWZ0ZXJDaGlsZHJlbkNoYW5nZWQoRWxlbWVudCogYmVmb3JlQ2hh
bmdlLCBDaGlsZENoYW5nZVR5cGUpOwogICAgIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uYWxpdHko
Tm9kZSoqIHN0cm9uZ0RpcmVjdGlvbmFsaXR5VGV4dE5vZGU9IDApIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAKaW5kZXggYzdkN2IwMGQxMjUwMmIxZmQ2Mzli
NTU2MGQ3ZmE0YjZkNzYxY2Y0NS4uYWFjNDA3YmUyYTI0MjZhMDhiZDI0N2U2ZTc1OWEwZjgyNmY5
Nzg1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwCkBAIC05MCw3
ICs5MCw3IEBAIFJlbmRlcldpZGdldCogSFRNTEVtYmVkRWxlbWVudDo6cmVuZGVyV2lkZ2V0TG9h
ZGluZ1BsdWdpbigpIGNvbnN0CiAgICAgcmV0dXJuIGZpbmRXaWRnZXRSZW5kZXJlcih0aGlzKTsK
IH0KIAotdm9pZCBIVE1MRW1iZWRFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25B
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2
YWx1ZSwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYgc3R5bGUpCit2b2lkIEhUTUxFbWJlZEVsZW1l
bnQ6OmNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSwgTXV0YWJsZVN0eWxlUHJvcGVydGll
cyYgc3R5bGUpCiB7CiAgICAgaWYgKG5hbWUgPT0gaGlkZGVuQXR0cikgewogICAgICAgICBpZiAo
ZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFsdWUsICJ5ZXMiKSB8fCBlcXVhbExldHRl
cnNJZ25vcmluZ0FTQ0lJQ2FzZSh2YWx1ZSwgInRydWUiKSkgewpAQCAtMTA2LDcgKzEwNiw3IEBA
IHN0YXRpYyBib29sIGhhc1R5cGVPclNyYyhjb25zdCBIVE1MRW1iZWRFbGVtZW50JiBlbWJlZCkK
ICAgICByZXR1cm4gZW1iZWQuaGFzQXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih0eXBl
QXR0cikgfHwgZW1iZWQuaGFzQXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihzcmNBdHRy
KTsKIH0KIAotdm9pZCBIVE1MRW1iZWRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQordm9pZCBIVE1MRW1i
ZWRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25z
dCBBdG9tU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAobmFtZSA9PSB0eXBlQXR0cikgewogICAg
ICAgICBtX3NlcnZpY2VUeXBlID0gdmFsdWUuc3RyaW5nKCkubGVmdCh2YWx1ZS5maW5kKCc7Jykp
LmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7CkBAIC0yMjIsNyArMjIyLDcgQEAgYm9vbCBIVE1M
RW1iZWRFbGVtZW50Ojppc1VSTEF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkg
Y29uc3QKICAgICByZXR1cm4gYXR0cmlidXRlLm5hbWUoKSA9PSBzcmNBdHRyIHx8IEhUTUxQbHVn
SW5JbWFnZUVsZW1lbnQ6OmlzVVJMQXR0cmlidXRlKGF0dHJpYnV0ZSk7CiB9CiAKLWNvbnN0IEF0
b21pY1N0cmluZyYgSFRNTEVtYmVkRWxlbWVudDo6aW1hZ2VTb3VyY2VVUkwoKSBjb25zdAorY29u
c3QgQXRvbVN0cmluZyYgSFRNTEVtYmVkRWxlbWVudDo6aW1hZ2VTb3VyY2VVUkwoKSBjb25zdAog
ewogICAgIHJldHVybiBhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHNyY0F0dHIpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuaAppbmRleCA4MTI0YWVmY2QwMWU2
OWRhZGYwMzdiMTk1Yzg5ODFjMjI1MTNjOGFlLi40NTE1NzA1ODk5YmUwMWE0YTE1YTNiOWQ2MzM5
NGFiNDQ2NGJlYTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuaApAQCAt
MzUsMTMgKzM1LDEzIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSFRNTEVtYmVkRWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAotICAgIHZvaWQgcGFyc2VBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIGZpbmFsOwotICAg
IHZvaWQgY29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmLCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJikgZmlu
YWw7CisgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3Qg
QXRvbVN0cmluZyYpIGZpbmFsOworICAgIHZvaWQgY29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9u
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5nJiwgTXV0YWJs
ZVN0eWxlUHJvcGVydGllcyYpIGZpbmFsOwogCiAgICAgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNv
bnN0IFJlbmRlclN0eWxlJikgZmluYWw7CiAKICAgICBib29sIGlzVVJMQXR0cmlidXRlKGNvbnN0
IEF0dHJpYnV0ZSYpIGNvbnN0IGZpbmFsOwotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgaW1hZ2VT
b3VyY2VVUkwoKSBjb25zdCBmaW5hbDsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBpbWFnZVNvdXJj
ZVVSTCgpIGNvbnN0IGZpbmFsOwogCiAgICAgUmVuZGVyV2lkZ2V0KiByZW5kZXJXaWRnZXRMb2Fk
aW5nUGx1Z2luKCkgY29uc3QgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVs
ZFNldEVsZW1lbnQuY3BwCmluZGV4IDQxMDE3MGFmODI1ZGY5OGRkODYwYTg4MTM4NWZmMWE5ZjUz
ZGU3OWIuLjUxYWIwMTg3OTgwNDg3YjNhZmQ0ZTUzNWU2YWZjNWNhZTBkMjdmZTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcApAQCAtMTUyLDkgKzE1Miw5
IEBAIGJvb2wgSFRNTEZpZWxkU2V0RWxlbWVudDo6c3VwcG9ydHNGb2N1cygpIGNvbnN0CiAgICAg
cmV0dXJuIEhUTUxFbGVtZW50OjpzdXBwb3J0c0ZvY3VzKCk7CiB9CiAKLWNvbnN0IEF0b21pY1N0
cmluZyYgSFRNTEZpZWxkU2V0RWxlbWVudDo6Zm9ybUNvbnRyb2xUeXBlKCkgY29uc3QKK2NvbnN0
IEF0b21TdHJpbmcmIEhUTUxGaWVsZFNldEVsZW1lbnQ6OmZvcm1Db250cm9sVHlwZSgpIGNvbnN0
CiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gZmllbGRz
ZXQoImZpZWxkc2V0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGZpZWxkc2V0KCJmaWVsZHNl
dCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gZmllbGRz
ZXQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmgKaW5kZXgg
ZDEwN2I5NzZiM2YyYTE4YWM0OGUyMzc0ODA4NGQ3Mzc3MGJiYTM2ZC4uYjA1OTRjZTk0YjQ4MTZj
N2Y0Mzg1MzcwMmFmZWY5ZTgzYTZkMDFlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRmllbGRTZXRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmll
bGRTZXRFbGVtZW50LmgKQEAgLTUwLDcgKzUwLDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzRW51
bWVyYXRhYmxlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIGJvb2wgc3VwcG9y
dHNGb2N1cygpIGNvbnN0IGZpbmFsOwogICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVh
dGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9u
JikgZmluYWw7Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25z
dCBmaW5hbDsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdCBm
aW5hbDsKICAgICBib29sIGNvbXB1dGVXaWxsVmFsaWRhdGUoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBmYWxzZTsgfQogICAgIHZvaWQgZGlzYWJsZWRBdHRyaWJ1dGVDaGFuZ2VkKCkgZmluYWw7CiAg
ICAgdm9pZCBkaXNhYmxlZFN0YXRlQ2hhbmdlZCgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRm9udEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRm9udEVsZW1lbnQuY3BwCmluZGV4IDNjYWI3MzRlMTM5M2EwZTRjNjYyYjJmNDg2MWUyNWQz
YWU5ZGRmZTQuLmIxYTZmZDc4MmQ3MWQ4ZDg1YmUzOWZlZjZhNzUwZThlMzJhNTMwODcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvbnRFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGb250RWxlbWVudC5jcHAKQEAgLTE4Niw3ICsxODYsNyBAQCBi
b29sIEhUTUxGb250RWxlbWVudDo6aXNQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgbmFtZSkgY29uc3QKICAgICByZXR1cm4gSFRNTEVsZW1lbnQ6OmlzUHJlc2VudGF0
aW9uQXR0cmlidXRlKG5hbWUpOwogfQogCi12b2lkIEhUTUxGb250RWxlbWVudDo6Y29sbGVjdFN0
eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNv
bnN0IEF0b21pY1N0cmluZyYgdmFsdWUsIE11dGFibGVTdHlsZVByb3BlcnRpZXMmIHN0eWxlKQor
dm9pZCBIVE1MRm9udEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSwgTXV0
YWJsZVN0eWxlUHJvcGVydGllcyYgc3R5bGUpCiB7CiAgICAgaWYgKG5hbWUgPT0gc2l6ZUF0dHIp
IHsKICAgICAgICAgQ1NTVmFsdWVJRCBzaXplID0gQ1NTVmFsdWVJbnZhbGlkOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9udEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZvbnRFbGVtZW50LmgKaW5kZXggYTIwNDg3MWFjZjEzYTEzODEyMzMyZDM1OGZm
YzAyMGFkMzZhYjA1OC4uYzk4MWFmYjc4N2RlZjc0ZTdhMWJhYTMwMmI1YmMxYTEzZGEzZmI3ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9udEVsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb250RWxlbWVudC5oCkBAIC0zOCw3ICszOCw3IEBAIHBy
aXZhdGU6CiAgICAgSFRNTEZvbnRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVu
dCYpOwogCiAgICAgYm9vbCBpc1ByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJikgY29uc3QgZmluYWw7Ci0gICAgdm9pZCBjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25B
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYsIE11dGFi
bGVTdHlsZVByb3BlcnRpZXMmKSBmaW5hbDsKKyAgICB2b2lkIGNvbGxlY3RTdHlsZUZvclByZXNl
bnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbVN0cmluZyYs
IE11dGFibGVTdHlsZVByb3BlcnRpZXMmKSBmaW5hbDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3Bw
CmluZGV4IDBmNzYyNzk4YmE4NmZiM2MwNDczZDgzMWRiZTM1NDk3MDhiM2Q1ODQuLjQzZjNmNDg0
NDBlZmUwZjA4ODM3NTYyNDQzMDZhNzhlNzVlMzE1OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcApAQCAtODIsNyArODIsNyBAQCBIVE1MRm9y
bUNvbnRyb2xFbGVtZW50Ojp+SFRNTEZvcm1Db250cm9sRWxlbWVudCgpCiAKIFN0cmluZyBIVE1M
Rm9ybUNvbnRyb2xFbGVtZW50Ojpmb3JtRW5jdHlwZSgpIGNvbnN0CiB7Ci0gICAgY29uc3QgQXRv
bWljU3RyaW5nJiBmb3JtRW5jdHlwZUF0dHIgPSBhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKGZvcm1lbmN0eXBlQXR0cik7CisgICAgY29uc3QgQXRvbVN0cmluZyYgZm9ybUVuY3R5cGVB
dHRyID0gYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihmb3JtZW5jdHlwZUF0dHIpOwog
ICAgIGlmIChmb3JtRW5jdHlwZUF0dHIuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBlbXB0eVN0
cmluZygpOwogICAgIHJldHVybiBGb3JtU3VibWlzc2lvbjo6QXR0cmlidXRlczo6cGFyc2VFbmNv
ZGluZ1R5cGUoZm9ybUVuY3R5cGVBdHRyKTsKQEAgLTExMywxMyArMTEzLDEzIEBAIGJvb2wgSFRN
TEZvcm1Db250cm9sRWxlbWVudDo6Zm9ybU5vVmFsaWRhdGUoKSBjb25zdAogCiBTdHJpbmcgSFRN
TEZvcm1Db250cm9sRWxlbWVudDo6Zm9ybUFjdGlvbigpIGNvbnN0CiB7Ci0gICAgY29uc3QgQXRv
bWljU3RyaW5nJiB2YWx1ZSA9IGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oZm9ybWFj
dGlvbkF0dHIpOworICAgIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlID0gYXR0cmlidXRlV2l0aG91
dFN5bmNocm9uaXphdGlvbihmb3JtYWN0aW9uQXR0cik7CiAgICAgaWYgKHZhbHVlLmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuIGRvY3VtZW50KCkudXJsKCk7CiAgICAgcmV0dXJuIGdldFVSTEF0
dHJpYnV0ZShmb3JtYWN0aW9uQXR0cik7CiB9CiAKLXZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVu
dDo6c2V0Rm9ybUFjdGlvbihjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQordm9pZCBIVE1MRm9y
bUNvbnRyb2xFbGVtZW50OjpzZXRGb3JtQWN0aW9uKGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKQog
ewogICAgIHNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oZm9ybWFjdGlvbkF0dHIs
IHZhbHVlKTsKIH0KQEAgLTE0Nyw3ICsxNDcsNyBAQCB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1l
bnQ6OnNldEFuY2VzdG9yRGlzYWJsZWQoYm9vbCBpc0Rpc2FibGVkKQogICAgICAgICBkaXNhYmxl
ZFN0YXRlQ2hhbmdlZCgpOwogfQogCi12b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYg
dmFsdWUpCit2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKQogewogICAgIGlm
IChuYW1lID09IGZvcm1BdHRyKQogICAgICAgICBmb3JtQXR0cmlidXRlQ2hhbmdlZCgpOwpAQCAt
NjIwLDcgKzYyMCw3IEBAIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6ZGlzcGF0Y2hCbHVy
RXZlbnQoUmVmUHRyPEVsZW1lbnQ+JiYgbmV3Rm9jdXNlZEVsZW1lCiAKIGJvb2wgSFRNTEZvcm1D
b250cm9sRWxlbWVudDo6c2hvdWxkQXV0b2NvcnJlY3QoKSBjb25zdAogewotICAgIGNvbnN0IEF0
b21pY1N0cmluZyYgYXV0b2NvcnJlY3RWYWx1ZSA9IGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6
YXRpb24oYXV0b2NvcnJlY3RBdHRyKTsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBhdXRvY29ycmVj
dFZhbHVlID0gYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihhdXRvY29ycmVjdEF0dHIp
OwogICAgIGlmICghYXV0b2NvcnJlY3RWYWx1ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAh
ZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoYXV0b2NvcnJlY3RWYWx1ZSwgIm9mZiIpOwog
ICAgIGlmIChSZWZQdHI8SFRNTEZvcm1FbGVtZW50PiBmb3JtID0gdGhpcy0+Zm9ybSgpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaAppbmRleCA0NWZkYWMy
MTc3OTRhOWE5NjU5ZGMwNjM4ZjhmNWNjYTIwOGE4ZDJjLi5hNThhZGUzYzYxNThhZjlmZDZjMTRh
MTI4OWUyMGUyMWJmMDMzNTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
b3JtQ29udHJvbEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29u
dHJvbEVsZW1lbnQuaApAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRGb3JtTWV0aG9kKGNvbnN0IFN0cmluZyYpOwogICAgIGJvb2wgZm9ybU5vVmFs
aWRhdGUoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgZm9ybUFjdGlvbigpIGNv
bnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Rm9ybUFjdGlvbihjb25zdCBBdG9taWNT
dHJpbmcmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEZvcm1BY3Rpb24oY29uc3QgQXRv
bVN0cmluZyYpOwogCiAgICAgdm9pZCBzZXRBbmNlc3RvckRpc2FibGVkKGJvb2wgaXNEaXNhYmxl
ZCk7CiAKQEAgLTc3LDkgKzc3LDkgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc1JlcXVpcmVkKCkg
Y29uc3Q7CiAKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUoKSBjb25zdCB7IHJldHVybiBm
b3JtQ29udHJvbFR5cGUoKTsgfQorICAgIGNvbnN0IEF0b21TdHJpbmcmIHR5cGUoKSBjb25zdCB7
IHJldHVybiBmb3JtQ29udHJvbFR5cGUoKTsgfQogCi0gICAgdmlydHVhbCBjb25zdCBBdG9taWNT
dHJpbmcmIGZvcm1Db250cm9sVHlwZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0
b21TdHJpbmcmIGZvcm1Db250cm9sVHlwZSgpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgYm9v
bCBjYW5UcmlnZ2VySW1wbGljaXRTdWJtaXNzaW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
IApAQCAtMTMwLDcgKzEzMCw3IEBAIHByb3RlY3RlZDoKIAogICAgIGJvb2wgZGlzYWJsZWRCeUFu
Y2VzdG9yRmllbGRzZXQoKSBjb25zdCB7IHJldHVybiBtX2Rpc2FibGVkQnlBbmNlc3RvckZpZWxk
c2V0OyB9CiAKLSAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBj
b25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKKyAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCB2b2lkIGRpc2FibGVkQXR0cmlidXRlQ2hhbmdlZCgpOwogICAgIHZpcnR1YWwgdm9pZCBk
aXNhYmxlZFN0YXRlQ2hhbmdlZCgpOwogICAgIHZpcnR1YWwgdm9pZCByZWFkT25seVN0YXRlQ2hh
bmdlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xz
Q29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xs
ZWN0aW9uLmNwcAppbmRleCBkYTAyMGM2MDdkMzllZGRkNDQzZjgzNjQ2MDk0NjExODNhNmFjOTli
Li42ZWMyMmQ3NzQ5ZjJmNzhiZDMxZWY3N2VhNjM2MDczYjcxYzU5ZmYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcApAQCAtMTIx
LDE5ICsxMjEsMTkgQEAgdm9pZCBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6dXBkYXRlTmFt
ZWRFbGVtZW50Q2FjaGUoKSBjb25zdAogCiAgICAgYXV0byBjYWNoZSA9IHN0ZDo6bWFrZV91bmlx
dWU8Q29sbGVjdGlvbk5hbWVkRWxlbWVudENhY2hlPigpOwogCi0gICAgSGFzaFNldDxBdG9taWNT
dHJpbmdJbXBsKj4gZm91bmRJbnB1dEVsZW1lbnRzOworICAgIEhhc2hTZXQ8QXRvbVN0cmluZ0lt
cGwqPiBmb3VuZElucHV0RWxlbWVudHM7CiAKICAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6Oklu
TWFpblRocmVhZCBzY3JpcHREaXNhbGxvd2VkU2NvcGU7CiAgICAgZm9yIChhdXRvJiBlbGVtZW50
UHRyIDogdW5zYWZlRm9ybUNvbnRyb2xFbGVtZW50cygpKSB7CiAgICAgICAgIEZvcm1Bc3NvY2lh
dGVkRWxlbWVudCYgYXNzb2NpYXRlZEVsZW1lbnQgPSAqZWxlbWVudFB0cjsKICAgICAgICAgaWYg
KGFzc29jaWF0ZWRFbGVtZW50LmlzRW51bWVyYXRhYmxlKCkpIHsKICAgICAgICAgICAgIEhUTUxF
bGVtZW50JiBlbGVtZW50ID0gYXNzb2NpYXRlZEVsZW1lbnQuYXNIVE1MRWxlbWVudCgpOwotICAg
ICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBpZCA9IGVsZW1lbnQuZ2V0SWRBdHRyaWJ1dGUo
KTsKKyAgICAgICAgICAgIGNvbnN0IEF0b21TdHJpbmcmIGlkID0gZWxlbWVudC5nZXRJZEF0dHJp
YnV0ZSgpOwogICAgICAgICAgICAgaWYgKCFpZC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAg
ICBjYWNoZS0+YXBwZW5kVG9JZENhY2hlKGlkLCBlbGVtZW50KTsKICAgICAgICAgICAgICAgICBm
b3VuZElucHV0RWxlbWVudHMuYWRkKGlkLmltcGwoKSk7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUgPSBlbGVtZW50LmdldE5hbWVBdHRyaWJ1dGUo
KTsKKyAgICAgICAgICAgIGNvbnN0IEF0b21TdHJpbmcmIG5hbWUgPSBlbGVtZW50LmdldE5hbWVB
dHRyaWJ1dGUoKTsKICAgICAgICAgICAgIGlmICghbmFtZS5pc0VtcHR5KCkgJiYgaWQgIT0gbmFt
ZSkgewogICAgICAgICAgICAgICAgIGNhY2hlLT5hcHBlbmRUb05hbWVDYWNoZShuYW1lLCBlbGVt
ZW50KTsKICAgICAgICAgICAgICAgICBmb3VuZElucHV0RWxlbWVudHMuYWRkKG5hbWUuaW1wbCgp
KTsKQEAgLTE0NSwxMCArMTQ1LDEwIEBAIHZvaWQgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246
OnVwZGF0ZU5hbWVkRWxlbWVudENhY2hlKCkgY29uc3QKICAgICAgICAgaWYgKCFlbGVtZW50UHRy
KQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIEhUTUxJbWFnZUVsZW1lbnQmIGVsZW1l
bnQgPSAqZWxlbWVudFB0cjsKLSAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBpZCA9IGVsZW1l
bnQuZ2V0SWRBdHRyaWJ1dGUoKTsKKyAgICAgICAgY29uc3QgQXRvbVN0cmluZyYgaWQgPSBlbGVt
ZW50LmdldElkQXR0cmlidXRlKCk7CiAgICAgICAgIGlmICghaWQuaXNFbXB0eSgpICYmICFmb3Vu
ZElucHV0RWxlbWVudHMuY29udGFpbnMoaWQuaW1wbCgpKSkKICAgICAgICAgICAgIGNhY2hlLT5h
cHBlbmRUb0lkQ2FjaGUoaWQsIGVsZW1lbnQpOwotICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUgPSBlbGVtZW50LmdldE5hbWVBdHRyaWJ1dGUoKTsKKyAgICAgICAgY29uc3QgQXRvbVN0
cmluZyYgbmFtZSA9IGVsZW1lbnQuZ2V0TmFtZUF0dHJpYnV0ZSgpOwogICAgICAgICBpZiAoIW5h
bWUuaXNFbXB0eSgpICYmIGlkICE9IG5hbWUgJiYgIWZvdW5kSW5wdXRFbGVtZW50cy5jb250YWlu
cyhuYW1lLmltcGwoKSkpCiAgICAgICAgICAgICBjYWNoZS0+YXBwZW5kVG9OYW1lQ2FjaGUobmFt
ZSwgZWxlbWVudCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Rm9ybUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3Bw
CmluZGV4IDQ4ZmM0ZWIzYzVjMzBiOTA2ZDNmZmZiNWQ2ZDdkYTRmNDNiYzNmNDguLjA5NjJkOTY4
ZDk3ODBkZGQ4Mzc4MjdhN2FmNWYzZjkyZDAzM2MxNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGb3JtRWxlbWVudC5jcHAKQEAgLTE2Niw3ICsxNjYsNyBAQCBIVE1MRWxlbWVudCogSFRNTEZv
cm1FbGVtZW50OjppdGVtKHVuc2lnbmVkIGluZGV4KQogICAgIHJldHVybiBlbGVtZW50cygpLT5p
dGVtKGluZGV4KTsKIH0KIAotT3B0aW9uYWw8VmFyaWFudDxSZWZQdHI8UmFkaW9Ob2RlTGlzdD4s
IFJlZlB0cjxFbGVtZW50Pj4+IEhUTUxGb3JtRWxlbWVudDo6bmFtZWRJdGVtKGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZSkKK09wdGlvbmFsPFZhcmlhbnQ8UmVmUHRyPFJhZGlvTm9kZUxpc3Q+LCBS
ZWZQdHI8RWxlbWVudD4+PiBIVE1MRm9ybUVsZW1lbnQ6Om5hbWVkSXRlbShjb25zdCBBdG9tU3Ry
aW5nJiBuYW1lKQogewogICAgIGF1dG8gbmFtZWRJdGVtcyA9IG5hbWVkRWxlbWVudHMobmFtZSk7
CiAKQEAgLTE3OCw3ICsxNzgsNyBAQCBPcHRpb25hbDxWYXJpYW50PFJlZlB0cjxSYWRpb05vZGVM
aXN0PiwgUmVmUHRyPEVsZW1lbnQ+Pj4gSFRNTEZvcm1FbGVtZW50OjpuYW1lZAogICAgIHJldHVy
biBWYXJpYW50PFJlZlB0cjxSYWRpb05vZGVMaXN0PiwgUmVmUHRyPEVsZW1lbnQ+PiB7IFJlZlB0
cjxSYWRpb05vZGVMaXN0PiB7IHJhZGlvTm9kZUxpc3QobmFtZSkgfSB9OwogfQogCi1WZWN0b3I8
QXRvbWljU3RyaW5nPiBIVE1MRm9ybUVsZW1lbnQ6OnN1cHBvcnRlZFByb3BlcnR5TmFtZXMoKSBj
b25zdAorVmVjdG9yPEF0b21TdHJpbmc+IEhUTUxGb3JtRWxlbWVudDo6c3VwcG9ydGVkUHJvcGVy
dHlOYW1lcygpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFNob3VsZCBiZSBpbXBsZW1lbnRlZCAo
b25seSBuZWVkZWQgZm9yIGVudW1lcmF0aW9uIHdpdGggaW5jbHVkZURvbnRFbnVtUHJvcGVydGll
cyBtb2RlCiAgICAgLy8gc2luY2UgdGhpcyBjbGFzcyBpcyBhbm5vdGF0ZWQgd2l0aCBMZWdhY3lV
bmVudW1lcmFibGVOYW1lZFByb3BlcnRpZXMpLgpAQCAtNDA4LDcgKzQwOCw3IEBAIHZvaWQgSFRN
TEZvcm1FbGVtZW50OjpyZXNldEFzc29jaWF0ZWRGb3JtQ29udHJvbEVsZW1lbnRzKCkKIAogYm9v
bCBIVE1MRm9ybUVsZW1lbnQ6OnNob3VsZEF1dG9jb3JyZWN0KCkgY29uc3QKIHsKLSAgICBjb25z
dCBBdG9taWNTdHJpbmcmIGF1dG9jb3JyZWN0VmFsdWUgPSBhdHRyaWJ1dGVXaXRob3V0U3luY2hy
b25pemF0aW9uKGF1dG9jb3JyZWN0QXR0cik7CisgICAgY29uc3QgQXRvbVN0cmluZyYgYXV0b2Nv
cnJlY3RWYWx1ZSA9IGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oYXV0b2NvcnJlY3RB
dHRyKTsKICAgICBpZiAoIWF1dG9jb3JyZWN0VmFsdWUuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGF1dG9jb3JyZWN0VmFsdWUsICJvZmYi
KTsKICAgICBpZiAoUmVmUHRyPEhUTUxGb3JtRWxlbWVudD4gZm9ybSA9IHRoaXMtPmZvcm0oKSkK
QEAgLTQxOCw3ICs0MTgsNyBAQCBib29sIEhUTUxGb3JtRWxlbWVudDo6c2hvdWxkQXV0b2NvcnJl
Y3QoKSBjb25zdAogCiAjZW5kaWYKIAotdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OnBhcnNlQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUp
Cit2b2lkIEhUTUxGb3JtRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKG5hbWUgPT0gYWN0
aW9uQXR0cikgewogICAgICAgICBtX2F0dHJpYnV0ZXMucGFyc2VBY3Rpb24odmFsdWUpOwpAQCAt
Nzc0LDcgKzc3NCw3IEBAIGlubGluZSB2b2lkIEhUTUxGb3JtRWxlbWVudDo6YXNzZXJ0SXRlbUNh
bkJlSW5QYXN0TmFtZXNNYXAoRm9ybU5hbWVkSXRlbSopIGNvbnN0CiB9CiAjZW5kaWYKIAotUmVm
UHRyPEhUTUxFbGVtZW50PiBIVE1MRm9ybUVsZW1lbnQ6OmVsZW1lbnRGcm9tUGFzdE5hbWVzTWFw
KGNvbnN0IEF0b21pY1N0cmluZyYgcGFzdE5hbWUpIGNvbnN0CitSZWZQdHI8SFRNTEVsZW1lbnQ+
IEhUTUxGb3JtRWxlbWVudDo6ZWxlbWVudEZyb21QYXN0TmFtZXNNYXAoY29uc3QgQXRvbVN0cmlu
ZyYgcGFzdE5hbWUpIGNvbnN0CiB7CiAgICAgaWYgKHBhc3ROYW1lLmlzRW1wdHkoKSB8fCAhbV9w
YXN0TmFtZXNNYXApCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNzg1LDcgKzc4NSw3IEBA
IFJlZlB0cjxIVE1MRWxlbWVudD4gSFRNTEZvcm1FbGVtZW50OjplbGVtZW50RnJvbVBhc3ROYW1l
c01hcChjb25zdCBBdG9taWNTdHJpbmcmCiAgICAgcmV0dXJuICZpdGVtLT5hc0hUTUxFbGVtZW50
KCk7CiB9CiAKLXZvaWQgSFRNTEZvcm1FbGVtZW50OjphZGRUb1Bhc3ROYW1lc01hcChGb3JtTmFt
ZWRJdGVtKiBpdGVtLCBjb25zdCBBdG9taWNTdHJpbmcmIHBhc3ROYW1lKQordm9pZCBIVE1MRm9y
bUVsZW1lbnQ6OmFkZFRvUGFzdE5hbWVzTWFwKEZvcm1OYW1lZEl0ZW0qIGl0ZW0sIGNvbnN0IEF0
b21TdHJpbmcmIHBhc3ROYW1lKQogewogICAgIGFzc2VydEl0ZW1DYW5CZUluUGFzdE5hbWVzTWFw
KGl0ZW0pOwogICAgIGlmIChwYXN0TmFtZS5pc0VtcHR5KCkpCkBAIC04MTgsNyArODE4LDcgQEAg
Ym9vbCBIVE1MRm9ybUVsZW1lbnQ6Om1hdGNoZXNJbnZhbGlkUHNldWRvQ2xhc3MoKSBjb25zdAog
fQogCiAvLyBGSVhNRTogVXNlIFJlZjxIVE1MRWxlbWVudD4gZm9yIHRoZSBmdW5jdGlvbiByZXN1
bHQgc2luY2UgdGhlcmUgYXJlIG5vIG5vbi1IVE1MIGVsZW1lbnRzIHJldHVybmVkIGhlcmUuCi1W
ZWN0b3I8UmVmPEVsZW1lbnQ+PiBIVE1MRm9ybUVsZW1lbnQ6Om5hbWVkRWxlbWVudHMoY29uc3Qg
QXRvbWljU3RyaW5nJiBuYW1lKQorVmVjdG9yPFJlZjxFbGVtZW50Pj4gSFRNTEZvcm1FbGVtZW50
OjpuYW1lZEVsZW1lbnRzKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUpCiB7CiAgICAgLy8gaHR0cDov
L3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvZm9y
bXMuaHRtbCNkb20tZm9ybS1uYW1lZGl0ZW0KICAgICBWZWN0b3I8UmVmPEVsZW1lbnQ+PiBuYW1l
ZEl0ZW1zID0gZWxlbWVudHMoKS0+bmFtZWRJdGVtcyhuYW1lKTsKQEAgLTg4NiwxNSArODg2LDE1
IEBAIEhUTUxGb3JtRWxlbWVudCogSFRNTEZvcm1FbGVtZW50OjpmaW5kQ2xvc2VzdEZvcm1BbmNl
c3Rvcihjb25zdCBFbGVtZW50JiBzdGFydEVsCiAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8SFRNTEZv
cm1FbGVtZW50Kj4oYW5jZXN0b3JzT2ZUeXBlPEhUTUxGb3JtRWxlbWVudD4oc3RhcnRFbGVtZW50
KS5maXJzdCgpKTsKIH0KIAotdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OnNldEF1dG9jb21wbGV0ZShj
b25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQordm9pZCBIVE1MRm9ybUVsZW1lbnQ6OnNldEF1dG9j
b21wbGV0ZShjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBzZXRBdHRyaWJ1dGVXaXRo
b3V0U3luY2hyb25pemF0aW9uKGF1dG9jb21wbGV0ZUF0dHIsIHZhbHVlKTsKIH0KIAotY29uc3Qg
QXRvbWljU3RyaW5nJiBIVE1MRm9ybUVsZW1lbnQ6OmF1dG9jb21wbGV0ZSgpIGNvbnN0Citjb25z
dCBBdG9tU3RyaW5nJiBIVE1MRm9ybUVsZW1lbnQ6OmF1dG9jb21wbGV0ZSgpIGNvbnN0CiB7Ci0g
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gb24oIm9uIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0
b21pY1N0cmluZz4gb2ZmKCJvZmYiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbVN0cmluZz4gb24oIm9uIiwgQXRvbVN0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxB
dG9tU3RyaW5nPiBvZmYoIm9mZiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsK
IAogICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGF0dHJpYnV0ZVdpdGhvdXRTeW5j
aHJvbml6YXRpb24oYXV0b2NvbXBsZXRlQXR0ciksICJvZmYiKSA/IG9mZiA6IG9uOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmgKaW5kZXggMTliMDM5YTYzZGE1NmY4NDNlZjAw
MjExZjdkNzk1NmJhOTM4MzAwNy4uZWJjZGMwYTY2MjMzZTRmZjZlYjRjNDM3MGNkZTdkN2FhMjE0
MmE2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oCkBAIC01MiwyMCArNTIs
MjAgQEAgcHVibGljOgogCiAgICAgUmVmPEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uPiBlbGVt
ZW50cygpOwogICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxIVE1MQ29sbGVjdGlvbj4gZWxlbWVudHNG
b3JOYXRpdmVCaW5kaW5ncygpOwotICAgIFZlY3RvcjxSZWY8RWxlbWVudD4+IG5hbWVkRWxlbWVu
dHMoY29uc3QgQXRvbWljU3RyaW5nJik7CisgICAgVmVjdG9yPFJlZjxFbGVtZW50Pj4gbmFtZWRF
bGVtZW50cyhjb25zdCBBdG9tU3RyaW5nJik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB1bnNpZ25l
ZCBsZW5ndGgoKSBjb25zdDsKICAgICBIVE1MRWxlbWVudCogaXRlbSh1bnNpZ25lZCBpbmRleCk7
Ci0gICAgT3B0aW9uYWw8VmFyaWFudDxSZWZQdHI8UmFkaW9Ob2RlTGlzdD4sIFJlZlB0cjxFbGVt
ZW50Pj4+IG5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmKTsKLSAgICBWZWN0b3I8QXRvbWlj
U3RyaW5nPiBzdXBwb3J0ZWRQcm9wZXJ0eU5hbWVzKCkgY29uc3Q7CisgICAgT3B0aW9uYWw8VmFy
aWFudDxSZWZQdHI8UmFkaW9Ob2RlTGlzdD4sIFJlZlB0cjxFbGVtZW50Pj4+IG5hbWVkSXRlbShj
b25zdCBBdG9tU3RyaW5nJik7CisgICAgVmVjdG9yPEF0b21TdHJpbmc+IHN1cHBvcnRlZFByb3Bl
cnR5TmFtZXMoKSBjb25zdDsKIAogICAgIFN0cmluZyBlbmN0eXBlKCkgY29uc3QgeyByZXR1cm4g
bV9hdHRyaWJ1dGVzLmVuY29kaW5nVHlwZSgpOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRFbmN0eXBlKGNvbnN0IFN0cmluZyYpOwogCiAgICAgYm9vbCBzaG91bGRBdXRvY29tcGxldGUo
KSBjb25zdDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QXV0b2NvbXBsZXRlKGNvbnN0
IEF0b21pY1N0cmluZyYpOwotICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IEF0b21pY1N0cmluZyYg
YXV0b2NvbXBsZXRlKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBdXRvY29t
cGxldGUoY29uc3QgQXRvbVN0cmluZyYpOworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IEF0b21T
dHJpbmcmIGF1dG9jb21wbGV0ZSgpIGNvbnN0OwogCiAjaWYgRU5BQkxFKElPU19BVVRPQ09SUkVD
VF9BTkRfQVVUT0NBUElUQUxJWkUpCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzaG91bGRBdXRv
Y29ycmVjdCgpIGNvbnN0IGZpbmFsOwpAQCAtMTM3LDcgKzEzNyw3IEBAIHByaXZhdGU6CiAKICAg
ICB2b2lkIGhhbmRsZUxvY2FsRXZlbnRzKEV2ZW50JiwgRXZlbnRJbnZva2VQaGFzZSkgZmluYWw7
CiAKLSAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBB
dG9taWNTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5nJikgZmluYWw7CiAgICAgYm9vbCBpc1VSTEF0dHJp
YnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBjb25zdCBmaW5hbDsKIAogICAgIHZvaWQgcmVzdW1lRnJv
bURvY3VtZW50U3VzcGVuc2lvbigpIGZpbmFsOwpAQCAtMTU4LDggKzE1OCw4IEBAIHByaXZhdGU6
CiAgICAgLy8gYXJlIGFueSBpbnZhbGlkIGNvbnRyb2xzIGluIHRoaXMgZm9ybS4KICAgICBib29s
IGNoZWNrSW52YWxpZENvbnRyb2xzQW5kQ29sbGVjdFVuaGFuZGxlZChWZWN0b3I8UmVmUHRyPEhU
TUxGb3JtQ29udHJvbEVsZW1lbnQ+PiYpOwogCi0gICAgUmVmUHRyPEhUTUxFbGVtZW50PiBlbGVt
ZW50RnJvbVBhc3ROYW1lc01hcChjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdDsKLSAgICB2b2lk
IGFkZFRvUGFzdE5hbWVzTWFwKEZvcm1OYW1lZEl0ZW0qLCBjb25zdCBBdG9taWNTdHJpbmcmIHBh
c3ROYW1lKTsKKyAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IGVsZW1lbnRGcm9tUGFzdE5hbWVzTWFw
KGNvbnN0IEF0b21TdHJpbmcmKSBjb25zdDsKKyAgICB2b2lkIGFkZFRvUGFzdE5hbWVzTWFwKEZv
cm1OYW1lZEl0ZW0qLCBjb25zdCBBdG9tU3RyaW5nJiBwYXN0TmFtZSk7CiAgICAgdm9pZCBhc3Nl
cnRJdGVtQ2FuQmVJblBhc3ROYW1lc01hcChGb3JtTmFtZWRJdGVtKikgY29uc3Q7CiAgICAgdm9p
ZCByZW1vdmVGcm9tUGFzdE5hbWVzTWFwKEZvcm1OYW1lZEl0ZW0qKTsKIApAQCAtMTY4LDcgKzE2
OCw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHJlc2V0QXNzb2NpYXRlZEZvcm1Db250cm9sRWxl
bWVudHMoKTsKIAotICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8QXRvbWljU3RyaW5nSW1wbD4s
IEZvcm1OYW1lZEl0ZW0qPiBQYXN0TmFtZXNNYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0
cjxBdG9tU3RyaW5nSW1wbD4sIEZvcm1OYW1lZEl0ZW0qPiBQYXN0TmFtZXNNYXA7CiAKICAgICBG
b3JtU3VibWlzc2lvbjo6QXR0cmlidXRlcyBtX2F0dHJpYnV0ZXM7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPFBhc3ROYW1lc01hcD4gbV9wYXN0TmFtZXNNYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RnJhbWVFbGVtZW50LmNwcAppbmRleCAzMTRlNzMzMjcxNTdjZGY5NWE2NDkyNDA0ZDNmNWRjNWNk
ZGI5ODIwLi5kY2Q5MmQwYWM3ZWFiZjUyM2Y2MzI3YzQzOGY5MWI5NThmZWM1NGE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgdm9p
ZCBIVE1MRnJhbWVFbGVtZW50OjpkaWRBdHRhY2hSZW5kZXJlcnMoKQogICAgICAgICBtX2ZyYW1l
Qm9yZGVyID0gY29udGFpbmluZ0ZyYW1lU2V0LT5oYXNGcmFtZUJvcmRlcigpOwogfQogCi12b2lk
IEhUTUxGcmFtZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5h
bWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCit2b2lkIEhUTUxGcmFtZUVsZW1lbnQ6OnBh
cnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcm
IHZhbHVlKQogewogICAgIGlmIChuYW1lID09IGZyYW1lYm9yZGVyQXR0cikgewogICAgICAgICBt
X2ZyYW1lQm9yZGVyID0gdmFsdWUudG9JbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZyYW1lRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVF
bGVtZW50LmgKaW5kZXggOTJiZjU5ODE5NDFjNWE5NjczNWQ0OWI3NGVhYzRkNjIxNmQzNzQ0Ny4u
ZTllMTI1ODE3YTI4YmRiNTBkZmEyODFjMmQ2MzFmZWFhYzNiZmE0NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRnJhbWVFbGVtZW50LmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGRpZEF0dGFjaFJlbmRlcmVycygpIGZpbmFsOwogICAgIGJvb2wgcmVuZGVyZXJJc05lZWRl
ZChjb25zdCBSZW5kZXJTdHlsZSYpIGZpbmFsOwogICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBv
c2l0aW9uJikgZmluYWw7Ci0gICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgZmluYWw7CisgICAgdm9pZCBwYXJzZUF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbVN0cmluZyYpIGZpbmFsOwogCiAgICAg
Ym9vbCBtX2ZyYW1lQm9yZGVyIHsgdHJ1ZSB9OwogICAgIGJvb2wgbV9mcmFtZUJvcmRlclNldCB7
IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1l
bnRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuY3Bw
CmluZGV4IDE1MjYzNjlhMmUzMWIzMDBjZWFiZDcwYjA3ZDIyM2U3MzMzNDM2NDAuLmI5MDMwMTEw
Yjc0ZTQ0MTIzOWZiZmU5OWU1M2EzNTZkNjk5NDQyYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBIVE1M
RnJhbWVFbGVtZW50QmFzZTo6b3BlblVSTChMb2NrSGlzdG9yeSBsb2NrSGlzdG9yeSwgTG9ja0Jh
Y2tGb3J3YXJkTGlzdAogICAgIHBhcmVudEZyYW1lLT5sb2FkZXIoKS5zdWJmcmFtZUxvYWRlcigp
LnJlcXVlc3RGcmFtZSgqdGhpcywgbV9VUkwsIGZyYW1lTmFtZSwgbG9ja0hpc3RvcnksIGxvY2tC
YWNrRm9yd2FyZExpc3QpOwogfQogCi12b2lkIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjpwYXJzZUF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZh
bHVlKQordm9pZCBIVE1MRnJhbWVFbGVtZW50QmFzZTo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKG5h
bWUgPT0gc3JjZG9jQXR0cikKICAgICAgICAgc2V0TG9jYXRpb24oImFib3V0OnNyY2RvYyIpOwpA
QCAtMTcxLDcgKzE3MSw3IEBAIHZvaWQgSFRNTEZyYW1lRWxlbWVudEJhc2U6OnNldExvY2F0aW9u
KGNvbnN0IFN0cmluZyYgc3RyKQogICAgIGlmIChkb2N1bWVudCgpLnNldHRpbmdzKCkubmVlZHNB
Y3JvYmF0RnJhbWVSZWxvYWRpbmdRdWlyaygpICYmIG1fVVJMID09IHN0cikKICAgICAgICAgcmV0
dXJuOwogCi0gICAgbV9VUkwgPSBBdG9taWNTdHJpbmcoc3RyKTsKKyAgICBtX1VSTCA9IEF0b21T
dHJpbmcoc3RyKTsKIAogICAgIGlmIChpc0Nvbm5lY3RlZCgpKQogICAgICAgICBvcGVuVVJMKExv
Y2tIaXN0b3J5OjpObywgTG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5oCmluZGV4IDE2NjllN2JiYmU1MTM3MWJhMjZmOTMx
MTc1ODRhNjkzZTUxYjFkYTcuLjUwMTZmOGY2Y2U1OTc4NTdiNGI2Yjk2MDIwZWE4NTNhNDE1YWJm
YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmgKQEAgLTU2
LDcgKzU2LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgYm9vbCBpc1VSTEFsbG93ZWQoKSBjb25zdDsK
IAotICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0
b21pY1N0cmluZyYpIG92ZXJyaWRlOworICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmKSBvdmVycmlkZTsKICAgICBJbnNlcnRlZElu
dG9BbmNlc3RvclJlc3VsdCBpbnNlcnRlZEludG9BbmNlc3RvcihJbnNlcnRpb25UeXBlLCBDb250
YWluZXJOb2RlJikgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hJbnNlcnRpbmdOb2RlKCkgZmlu
YWw7CiAgICAgdm9pZCBkaWRBdHRhY2hSZW5kZXJlcnMoKSBvdmVycmlkZTsKQEAgLTcyLDcgKzcy
LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgb3BlblVSTChMb2NrSGlzdG9yeSA9IExvY2tIaXN0
b3J5OjpZZXMsIExvY2tCYWNrRm9yd2FyZExpc3QgPSBMb2NrQmFja0ZvcndhcmRMaXN0OjpZZXMp
OwogCi0gICAgQXRvbWljU3RyaW5nIG1fVVJMOworICAgIEF0b21TdHJpbmcgbV9VUkw7CiAKICAg
ICBTY3JvbGxiYXJNb2RlIG1fc2Nyb2xsaW5nOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RnJhbWVTZXRFbGVtZW50LmNwcAppbmRleCA1ZDIzN2Q0ODI2YzcyZjg4N2I3ZGIyZmI1MWQ2ZTk3
ODY1Njc5YTk5Li44M2FjNjgwZDkwNDg3NTcxNTBiNWI2ZWIzNmI2NGQ3ODhmMGViYzcwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAKQEAgLTc1LDcgKzc1
LDcgQEAgYm9vbCBIVE1MRnJhbWVTZXRFbGVtZW50Ojppc1ByZXNlbnRhdGlvbkF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKSBjb24KICAgICByZXR1cm4gSFRNTEVsZW1lbnQ6Omlz
UHJlc2VudGF0aW9uQXR0cmlidXRlKG5hbWUpOwogfQogCi12b2lkIEhUTUxGcmFtZVNldEVsZW1l
bnQ6OmNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlLCBNdXRhYmxlU3R5bGVQcm9wZXJ0
aWVzJiBzdHlsZSkKK3ZvaWQgSFRNTEZyYW1lU2V0RWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yUHJl
c2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21T
dHJpbmcmIHZhbHVlLCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJiBzdHlsZSkKIHsKICAgICBpZiAo
bmFtZSA9PSBib3JkZXJjb2xvckF0dHIpCiAgICAgICAgIGFkZEhUTUxDb2xvclRvU3R5bGUoc3R5
bGUsIENTU1Byb3BlcnR5Qm9yZGVyQ29sb3IsIHZhbHVlKTsKQEAgLTgzLDcgKzgzLDcgQEAgdm9p
ZCBIVE1MRnJhbWVTZXRFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmEKICAgICAgICAgSFRNTEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZv
clByZXNlbnRhdGlvbkF0dHJpYnV0ZShuYW1lLCB2YWx1ZSwgc3R5bGUpOwogfQogCi12b2lkIEhU
TUxGcmFtZVNldEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5h
bWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCit2b2lkIEhUTUxGcmFtZVNldEVsZW1lbnQ6
OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJp
bmcmIHZhbHVlKQogewogICAgIGlmIChuYW1lID09IHJvd3NBdHRyKSB7CiAgICAgICAgIC8vIEZJ
WE1FOiBXaGF0IGlzIHRoZSByaWdodCB0aGluZyB0byBkbyB3aGVuIHJlbW92aW5nIHRoaXMgYXR0
cmlidXRlPwpAQCAtMjMxLDcgKzIzMSw3IEBAIHZvaWQgSFRNTEZyYW1lU2V0RWxlbWVudDo6cmVt
b3ZlZEZyb21BbmNlc3RvcihSZW1vdmFsVHlwZSByZW1vdmFsVHlwZSwgQ29udGFpbmVyCiAgICAg
fQogfQogCi1XaW5kb3dQcm94eSogSFRNTEZyYW1lU2V0RWxlbWVudDo6bmFtZWRJdGVtKGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZSkKK1dpbmRvd1Byb3h5KiBIVE1MRnJhbWVTZXRFbGVtZW50Ojpu
YW1lZEl0ZW0oY29uc3QgQXRvbVN0cmluZyYgbmFtZSkKIHsKICAgICBhdXRvIGZyYW1lRWxlbWVu
dCA9IG1ha2VSZWZQdHIoY2hpbGRyZW4oKS0+bmFtZWRJdGVtKG5hbWUpKTsKICAgICBpZiAoIWlz
PEhUTUxGcmFtZUVsZW1lbnQ+KGZyYW1lRWxlbWVudCkpCkBAIC0yNDAsNyArMjQwLDcgQEAgV2lu
ZG93UHJveHkqIEhUTUxGcmFtZVNldEVsZW1lbnQ6Om5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJp
bmcmIG5hbWUpCiAgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxGcmFtZUVsZW1lbnQ+KCpmcmFtZUVs
ZW1lbnQpLmNvbnRlbnRXaW5kb3coKTsKIH0KIAotVmVjdG9yPEF0b21pY1N0cmluZz4gSFRNTEZy
YW1lU2V0RWxlbWVudDo6c3VwcG9ydGVkUHJvcGVydHlOYW1lcygpIGNvbnN0CitWZWN0b3I8QXRv
bVN0cmluZz4gSFRNTEZyYW1lU2V0RWxlbWVudDo6c3VwcG9ydGVkUHJvcGVydHlOYW1lcygpIGNv
bnN0CiB7CiAgICAgLy8gTk9URTogTGVmdCBlbXB0eSBhcyBubyBzcGVjaWZpY2F0aW9uIGRlZmlu
ZXMgdGhpcyBuYW1lZCBnZXR0ZXIgYW5kIHdlCiAgICAgLy8gICAgICAgaGF2ZSBub3QgaGlzdG9y
aWNhbGx5IGV4cG9zZWQgdGhlc2UgbmFtZWQgaXRlbXMgZm9yIGVudW1lcmF0aW9uLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaAppbmRleCBjM2M2OGI1N2JmOTc3ZTdh
Y2VhOTJmZjNhZWMwOTY0OTZmNzEyMmIyLi45MTEzNWIwOGJjNmQ2MDRiM2Q3NjllOTczYWQyN2Q0
OGY4M2Q5ODRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaApA
QCAtNDcsMTUgKzQ3LDE1IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBSZWZQdHI8SFRNTEZyYW1l
U2V0RWxlbWVudD4gZmluZENvbnRhaW5pbmcoRWxlbWVudCogZGVzY2VuZGFudCk7CiAgICAgCi0g
ICAgVmVjdG9yPEF0b21pY1N0cmluZz4gc3VwcG9ydGVkUHJvcGVydHlOYW1lcygpIGNvbnN0Owot
ICAgIFdpbmRvd1Byb3h5KiBuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJik7CisgICAgVmVj
dG9yPEF0b21TdHJpbmc+IHN1cHBvcnRlZFByb3BlcnR5TmFtZXMoKSBjb25zdDsKKyAgICBXaW5k
b3dQcm94eSogbmFtZWRJdGVtKGNvbnN0IEF0b21TdHJpbmcmKTsKIAogcHJpdmF0ZToKICAgICBI
VE1MRnJhbWVTZXRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCi0g
ICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWlj
U3RyaW5nJikgZmluYWw7CisgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiwgY29uc3QgQXRvbVN0cmluZyYpIGZpbmFsOwogICAgIGJvb2wgaXNQcmVzZW50YXRpb25B
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IGZpbmFsOwotICAgIHZvaWQgY29s
bGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBj
b25zdCBBdG9taWNTdHJpbmcmLCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJikgZmluYWw7CisgICAg
dm9pZCBjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmLCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJikgZmluYWw7
CiAKICAgICB2b2lkIHdpbGxBdHRhY2hSZW5kZXJlcnMoKSBmaW5hbDsKICAgICBib29sIHJlbmRl
cmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEhSRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxIUkVsZW1lbnQuY3BwCmluZGV4IDNkMzUyNDlmN2M2MjU2MGFkODU0ZTg2ZWUyMzhmZjg4ZDhk
ODk5NjYuLjYzMDM0Yzg2NWEzMDUxYmY4ZDlhMjJhYWViODA1MTdiODFiMDljMDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEhSRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSFJFbGVtZW50LmNwcApAQCAtNTksNyArNTksNyBAQCBib29sIEhUTUxI
UkVsZW1lbnQ6OmlzUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5h
bWUpIGNvbnN0CiAgICAgcmV0dXJuIEhUTUxFbGVtZW50Ojppc1ByZXNlbnRhdGlvbkF0dHJpYnV0
ZShuYW1lKTsKIH0KIAotdm9pZCBIVE1MSFJFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50
YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3Ry
aW5nJiB2YWx1ZSwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYgc3R5bGUpCit2b2lkIEhUTUxIUkVs
ZW1lbnQ6OmNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSwgTXV0YWJsZVN0eWxlUHJvcGVy
dGllcyYgc3R5bGUpCiB7CiAgICAgaWYgKG5hbWUgPT0gYWxpZ25BdHRyKSB7CiAgICAgICAgIGlm
IChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh2YWx1ZSwgImxlZnQiKSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSFJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxIUkVsZW1lbnQuaAppbmRleCBlYmVjYmQyNmRmZjI2ZTI0YWFkNThmNzRjODg3
NDhkZTk2MmI4Y2M4Li5mODM2YmU1Nzg2YmZlNWQzZGI5MDQwMzhkMDAzZWVkMTVlN2MxZTYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxIUkVsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxIUkVsZW1lbnQuaApAQCAtMzYsNyArMzYsNyBAQCBwcml2YXRl
OgogICAgIEhUTUxIUkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAK
ICAgICBib29sIGlzUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBj
b25zdCBmaW5hbDsKLSAgICB2b2lkIGNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiwgTXV0YWJsZVN0eWxl
UHJvcGVydGllcyYpIGZpbmFsOworICAgIHZvaWQgY29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9u
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5nJiwgTXV0YWJs
ZVN0eWxlUHJvcGVydGllcyYpIGZpbmFsOwogICAgIGJvb2wgY2FuQ29udGFpblJhbmdlRW5kUG9p
bnQoKSBjb25zdCBmaW5hbDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTElGcmFtZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxl
bWVudC5jcHAKaW5kZXggZWUzZDFkZmIwN2VlYzdlZjE2ZDEzNDA0YjY3ZmVmY2MxMGE3ODNmYS4u
ZmEwN2Q3MTg1YzA3MzE0NzY0YmQ3NzFjMWIyNDFkZTU3YWYyNzUxNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgYm9vbCBIVE1M
SUZyYW1lRWxlbWVudDo6aXNQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgbmFtZSkgY29uc3QKICAgICByZXR1cm4gSFRNTEZyYW1lRWxlbWVudEJhc2U6OmlzUHJlc2Vu
dGF0aW9uQXR0cmlidXRlKG5hbWUpOwogfQogCi12b2lkIEhUTUxJRnJhbWVFbGVtZW50Ojpjb2xs
ZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFt
ZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYgc3R5
bGUpCit2b2lkIEhUTUxJRnJhbWVFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25B
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYgdmFs
dWUsIE11dGFibGVTdHlsZVByb3BlcnRpZXMmIHN0eWxlKQogewogICAgIGlmIChuYW1lID09IHdp
ZHRoQXR0cikKICAgICAgICAgYWRkSFRNTExlbmd0aFRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5
V2lkdGgsIHZhbHVlKTsKQEAgLTg2LDcgKzg2LDcgQEAgdm9pZCBIVE1MSUZyYW1lRWxlbWVudDo6
Y29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUK
ICAgICAgICAgSFRNTEZyYW1lRWxlbWVudEJhc2U6OmNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlv
bkF0dHJpYnV0ZShuYW1lLCB2YWx1ZSwgc3R5bGUpOwogfQogCi12b2lkIEhUTUxJRnJhbWVFbGVt
ZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9t
aWNTdHJpbmcmIHZhbHVlKQordm9pZCBIVE1MSUZyYW1lRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCiB7CiAg
ICAgaWYgKG5hbWUgPT0gc2FuZGJveEF0dHIpIHsKICAgICAgICAgaWYgKG1fc2FuZGJveCkKQEAg
LTExMiw3ICsxMTIsNyBAQCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTElGcmFtZUVsZW1l
bnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmCiAgICAgcmV0dXJuIGNyZWF0
ZVJlbmRlcmVyPFJlbmRlcklGcmFtZT4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIH0KIAotdm9p
ZCBIVE1MSUZyYW1lRWxlbWVudDo6c2V0UmVmZXJyZXJQb2xpY3lGb3JCaW5kaW5ncyhjb25zdCBB
dG9taWNTdHJpbmcmIHZhbHVlKQordm9pZCBIVE1MSUZyYW1lRWxlbWVudDo6c2V0UmVmZXJyZXJQ
b2xpY3lGb3JCaW5kaW5ncyhjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBzZXRBdHRy
aWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHJlZmVycmVycG9saWN5QXR0ciwgdmFsdWUpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5oCmluZGV4IDc3YWRkYjI3MTkw
YmZlM2IyY2QwNDEwYmYzNmExZTQxZTFmZTc1YjYuLjA4ZDkyYzgzNjI5NThjNmVhOTFjNzg4NzY4
M2RjZjM5MThjM2UxNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFt
ZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmgK
QEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIFJlbmRlcklGcmFtZSogcmVuZGVyZXIoKSBj
b25zdDsKICAgICBjb25zdCBTdHJpbmcmIGFsbG93KCkgY29uc3QgeyByZXR1cm4gbV9hbGxvdzsg
fQogCi0gICAgdm9pZCBzZXRSZWZlcnJlclBvbGljeUZvckJpbmRpbmdzKGNvbnN0IEF0b21pY1N0
cmluZyYpOworICAgIHZvaWQgc2V0UmVmZXJyZXJQb2xpY3lGb3JCaW5kaW5ncyhjb25zdCBBdG9t
U3RyaW5nJik7CiAgICAgU3RyaW5nIHJlZmVycmVyUG9saWN5Rm9yQmluZGluZ3MoKSBjb25zdDsK
ICAgICBSZWZlcnJlclBvbGljeSByZWZlcnJlclBvbGljeSgpIGNvbnN0IGZpbmFsOwogCkBAIC01
NCw5ICs1NCw5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0tleWJvYXJkRm9jdXNhYmxlKEtleWJv
YXJkRXZlbnQqKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlmCiAKLSAgICB2
b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJp
bmcmKSBmaW5hbDsKKyAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBjb25zdCBBdG9tU3RyaW5nJikgZmluYWw7CiAgICAgYm9vbCBpc1ByZXNlbnRhdGlvbkF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3QgZmluYWw7Ci0gICAgdm9pZCBjb2xsZWN0
U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0
IEF0b21pY1N0cmluZyYsIE11dGFibGVTdHlsZVByb3BlcnRpZXMmKSBmaW5hbDsKKyAgICB2b2lk
IGNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiwgY29uc3QgQXRvbVN0cmluZyYsIE11dGFibGVTdHlsZVByb3BlcnRpZXMmKSBmaW5hbDsKIAog
ICAgIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpIGZpbmFsOwogICAg
IFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5
bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW1hZ2VFbGVtZW50LmNwcAppbmRleCA1Y2RjNzA5Mzk5OTIwZDY5NjcyYTk3Y2U3ZmU1
ZTgzMWY1ODkyNzM2Li45M2VhZDVjY2NiMGQyNzg0NTUzNmY3YzdhNzNjZmNkMzQzZWZhYzQ1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKQEAgLTExNSw3ICsxMTUs
NyBAQCBib29sIEhUTUxJbWFnZUVsZW1lbnQ6OmlzUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0CiAgICAgcmV0dXJuIEhUTUxFbGVtZW50Ojppc1By
ZXNlbnRhdGlvbkF0dHJpYnV0ZShuYW1lKTsKIH0KIAotdm9pZCBIVE1MSW1hZ2VFbGVtZW50Ojpj
b2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
bmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYg
c3R5bGUpCit2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlv
bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2
YWx1ZSwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYgc3R5bGUpCiB7CiAgICAgaWYgKG5hbWUgPT0g
d2lkdGhBdHRyKQogICAgICAgICBhZGRIVE1MTGVuZ3RoVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVy
dHlXaWR0aCwgdmFsdWUpOwpAQCAtMTM3LDE1ICsxMzcsMTUgQEAgdm9pZCBIVE1MSW1hZ2VFbGVt
ZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYKICAgICAgICAgSFRNTEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0
dHJpYnV0ZShuYW1lLCB2YWx1ZSwgc3R5bGUpOwogfQogCi1jb25zdCBBdG9taWNTdHJpbmcmIEhU
TUxJbWFnZUVsZW1lbnQ6OmltYWdlU291cmNlVVJMKCkgY29uc3QKK2NvbnN0IEF0b21TdHJpbmcm
IEhUTUxJbWFnZUVsZW1lbnQ6OmltYWdlU291cmNlVVJMKCkgY29uc3QKIHsKICAgICByZXR1cm4g
bV9iZXN0Rml0SW1hZ2VVUkwuaXNFbXB0eSgpID8gYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXph
dGlvbihzcmNBdHRyKSA6IG1fYmVzdEZpdEltYWdlVVJMOwogfQogCiB2b2lkIEhUTUxJbWFnZUVs
ZW1lbnQ6OnNldEJlc3RGaXRVUkxBbmREUFJGcm9tSW1hZ2VDYW5kaWRhdGUoY29uc3QgSW1hZ2VD
YW5kaWRhdGUmIGNhbmRpZGF0ZSkKIHsKLSAgICBtX2Jlc3RGaXRJbWFnZVVSTCA9IGNhbmRpZGF0
ZS5zdHJpbmcudG9BdG9taWNTdHJpbmcoKTsKLSAgICBtX2N1cnJlbnRTcmMgPSBBdG9taWNTdHJp
bmcoZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChpbWFnZVNvdXJjZVVSTCgpKS5zdHJpbmcoKSk7Cisg
ICAgbV9iZXN0Rml0SW1hZ2VVUkwgPSBjYW5kaWRhdGUuc3RyaW5nLnRvQXRvbVN0cmluZygpOwor
ICAgIG1fY3VycmVudFNyYyA9IEF0b21TdHJpbmcoZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChpbWFn
ZVNvdXJjZVVSTCgpKS5zdHJpbmcoKSk7CiAgICAgaWYgKGNhbmRpZGF0ZS5kZW5zaXR5ID49IDAp
CiAgICAgICAgIG1faW1hZ2VEZXZpY2VQaXhlbFJhdGlvID0gMSAvIGNhbmRpZGF0ZS5kZW5zaXR5
OwogICAgIGlmIChpczxSZW5kZXJJbWFnZT4ocmVuZGVyZXIoKSkpCkBAIC0yMTUsNyArMjE1LDcg
QEAgdm9pZCBIVE1MSW1hZ2VFbGVtZW50OjpzZWxlY3RJbWFnZVNvdXJjZSgpCiAgICAgbV9pbWFn
ZUxvYWRlci51cGRhdGVGcm9tRWxlbWVudElnbm9yaW5nUHJldmlvdXNFcnJvcigpOwogfQogCi12
b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCit2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6
OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJp
bmcmIHZhbHVlKQogewogICAgIGlmIChuYW1lID09IGFsdEF0dHIpIHsKICAgICAgICAgaWYgKGlz
PFJlbmRlckltYWdlPihyZW5kZXJlcigpKSkKQEAgLTI0Nyw3ICsyNDcsNyBAQCB2b2lkIEhUTUxJ
bWFnZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNv
bnN0IEF0b21pY1N0cgogICAgICAgICAgICAgYm9vbCB3aWxsSGF2ZU5hbWUgPSAhdmFsdWUuaXNO
dWxsKCk7CiAgICAgICAgICAgICBpZiAobV9oYWROYW1lQmVmb3JlQXR0cmlidXRlQ2hhbmdlZCAh
PSB3aWxsSGF2ZU5hbWUgJiYgaXNDb25uZWN0ZWQoKSAmJiAhaXNJblNoYWRvd1RyZWUoKSAmJiBp
czxIVE1MRG9jdW1lbnQ+KGRvY3VtZW50KCkpKSB7CiAgICAgICAgICAgICAgICAgSFRNTERvY3Vt
ZW50JiBkb2N1bWVudCA9IGRvd25jYXN0PEhUTUxEb2N1bWVudD4odGhpcy0+ZG9jdW1lbnQoKSk7
Ci0gICAgICAgICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBpZCA9IGdldElkQXR0cmlidXRl
KCk7CisgICAgICAgICAgICAgICAgY29uc3QgQXRvbVN0cmluZyYgaWQgPSBnZXRJZEF0dHJpYnV0
ZSgpOwogICAgICAgICAgICAgICAgIGlmICghaWQuaXNFbXB0eSgpICYmIGlkICE9IGdldE5hbWVB
dHRyaWJ1dGUoKSkgewogICAgICAgICAgICAgICAgICAgICBpZiAod2lsbEhhdmVOYW1lKQogICAg
ICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYWRkRG9jdW1lbnROYW1lZEl0ZW0oKmlkLmlt
cGwoKSwgKnRoaXMpOwpAQCAtMjYxLDEyICsyNjEsMTIgQEAgdm9pZCBIVE1MSW1hZ2VFbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNT
dHIKICAgICB9CiB9CiAKLWNvbnN0IEF0b21pY1N0cmluZyYgSFRNTEltYWdlRWxlbWVudDo6YWx0
VGV4dCgpIGNvbnN0Citjb25zdCBBdG9tU3RyaW5nJiBIVE1MSW1hZ2VFbGVtZW50OjphbHRUZXh0
KCkgY29uc3QKIHsKICAgICAvLyBsZXRzIGZpZ3VyZSBvdXQgdGhlIGFsdCB0ZXh0Li4gbWFnaWMg
c3R1ZmYKICAgICAvLyBodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk4L1JFQy1odG1sNDAtMTk5ODA0
MjQvYXBwZW5kaXgvbm90ZXMuaHRtbCNhbHRnZW4KICAgICAvLyBhbHNvIGhlYXZpbHkgZGlzY3Vz
c2VkIGJ5IEhpeGllIG9uIGJ1Z3ppbGxhCi0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBhbHQgPSBh
dHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGFsdEF0dHIpOworICAgIGNvbnN0IEF0b21T
dHJpbmcmIGFsdCA9IGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oYWx0QXR0cik7CiAg
ICAgaWYgKCFhbHQuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBhbHQ7CiAgICAgLy8gZmFsbCBi
YWNrIHRvIHRpdGxlIGF0dHJpYnV0ZQpAQCAtNTY0LDcgKzU2NCw3IEBAIFN0cmluZyBIVE1MSW1h
Z2VFbGVtZW50Ojpjb21wbGV0ZVVSTHNJbkF0dHJpYnV0ZVZhbHVlKGNvbnN0IFVSTCYgYmFzZSwg
Y29uc3QgQXR0CiAgICAgcmV0dXJuIEhUTUxFbGVtZW50Ojpjb21wbGV0ZVVSTHNJbkF0dHJpYnV0
ZVZhbHVlKGJhc2UsIGF0dHJpYnV0ZSk7CiB9CiAKLWJvb2wgSFRNTEltYWdlRWxlbWVudDo6bWF0
Y2hlc1VzZW1hcChjb25zdCBBdG9taWNTdHJpbmdJbXBsJiBuYW1lKSBjb25zdAorYm9vbCBIVE1M
SW1hZ2VFbGVtZW50OjptYXRjaGVzVXNlbWFwKGNvbnN0IEF0b21TdHJpbmdJbXBsJiBuYW1lKSBj
b25zdAogewogICAgIHJldHVybiBtX3BhcnNlZFVzZW1hcC5pbXBsKCkgPT0gJm5hbWU7CiB9CkBA
IC01NzQsNyArNTc0LDcgQEAgSFRNTE1hcEVsZW1lbnQqIEhUTUxJbWFnZUVsZW1lbnQ6OmFzc29j
aWF0ZWRNYXBFbGVtZW50KCkgY29uc3QKICAgICByZXR1cm4gdHJlZVNjb3BlKCkuZ2V0SW1hZ2VN
YXAobV9wYXJzZWRVc2VtYXApOwogfQogCi1jb25zdCBBdG9taWNTdHJpbmcmIEhUTUxJbWFnZUVs
ZW1lbnQ6OmFsdCgpIGNvbnN0Citjb25zdCBBdG9tU3RyaW5nJiBIVE1MSW1hZ2VFbGVtZW50Ojph
bHQoKSBjb25zdAogewogICAgIHJldHVybiBhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9u
KGFsdEF0dHIpOwogfQpAQCAtNjM0LDcgKzYzNCw3IEBAIGJvb2wgSFRNTEltYWdlRWxlbWVudDo6
Y29tcGxldGUoKSBjb25zdAogCiBEZWNvZGluZ01vZGUgSFRNTEltYWdlRWxlbWVudDo6ZGVjb2Rp
bmdNb2RlKCkgY29uc3QKIHsKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGRlY29kaW5nTW9kZSA9
IGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oZGVjb2RpbmdBdHRyKTsKKyAgICBjb25z
dCBBdG9tU3RyaW5nJiBkZWNvZGluZ01vZGUgPSBhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKGRlY29kaW5nQXR0cik7CiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KGRlY29kaW5nTW9kZSwgInN5bmMiKSkKICAgICAgICAgcmV0dXJuIERlY29kaW5nTW9kZTo6U3lu
Y2hyb25vdXM7CiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGRlY29kaW5n
TW9kZSwgImFzeW5jIikpCkBAIC02NjcsNyArNjY3LDcgQEAgYm9vbCBIVE1MSW1hZ2VFbGVtZW50
Ojppc1NlcnZlck1hcCgpIGNvbnN0CiAgICAgaWYgKCFoYXNBdHRyaWJ1dGVXaXRob3V0U3luY2hy
b25pemF0aW9uKGlzbWFwQXR0cikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGNvbnN0
IEF0b21pY1N0cmluZyYgdXNlbWFwID0gYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih1
c2VtYXBBdHRyKTsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiB1c2VtYXAgPSBhdHRyaWJ1dGVXaXRo
b3V0U3luY2hyb25pemF0aW9uKHVzZW1hcEF0dHIpOwogCiAgICAgLy8gSWYgdGhlIHVzZW1hcCBh
dHRyaWJ1dGUgc3RhcnRzIHdpdGggJyMnLCBpdCByZWZlcnMgdG8gYSBtYXAgZWxlbWVudCBpbiB0
aGUgZG9jdW1lbnQuCiAgICAgaWYgKHVzZW1hcC5zdHJpbmcoKVswXSA9PSAnIycpCkBAIC02NzYs
NyArNjc2LDcgQEAgYm9vbCBIVE1MSW1hZ2VFbGVtZW50Ojppc1NlcnZlck1hcCgpIGNvbnN0CiAg
ICAgcmV0dXJuIGRvY3VtZW50KCkuY29tcGxldGVVUkwoc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdI
VE1MU3BhY2VzKHVzZW1hcCkpLmlzRW1wdHkoKTsKIH0KIAotdm9pZCBIVE1MSW1hZ2VFbGVtZW50
OjpzZXRDcm9zc09yaWdpbihjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQordm9pZCBIVE1MSW1h
Z2VFbGVtZW50OjpzZXRDcm9zc09yaWdpbihjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKIHsKICAg
ICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGNyb3Nzb3JpZ2luQXR0ciwgdmFs
dWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaAppbmRleCAxODY5ODgw
ZGYzYmY0NGExMjJhODgwZmVlYWQ2MmNmYWVmNDRlYjE1Li5kNGYyMTRkMzUxYmM2ZmExOGE3YTE2
YzgzODExZTFmOWJiNTdhMmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
bWFnZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQu
aApAQCAtNTQsMTQgKzU0LDE0IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIGludCBu
YXR1cmFsV2lkdGgoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQgbmF0dXJhbEhlaWdo
dCgpIGNvbnN0OwotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgY3VycmVudFNyYygpIGNvbnN0IHsg
cmV0dXJuIG1fY3VycmVudFNyYzsgfQorICAgIGNvbnN0IEF0b21TdHJpbmcmIGN1cnJlbnRTcmMo
KSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRTcmM7IH0KIAogICAgIGJvb2wgc3VwcG9ydHNGb2N1
cygpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgaXNGb2N1c2FibGUoKSBjb25zdCBvdmVycmlk
ZTsKIAogICAgIGJvb2wgaXNTZXJ2ZXJNYXAoKSBjb25zdDsKIAotICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgYWx0VGV4dCgpIGNvbnN0OworICAgIGNvbnN0IEF0b21TdHJpbmcmIGFsdFRleHQoKSBj
b25zdDsKIAogICAgIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yKCkgY29uc3Qg
eyByZXR1cm4gbV9jb21wb3NpdGVPcGVyYXRvcjsgfQogCkBAIC02OSwxNyArNjksMTcgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBzZXRMb2FkTWFudWFsbHkoYm9vbCBsb2FkTWFudWFsbHkpIHsgbV9p
bWFnZUxvYWRlci5zZXRMb2FkTWFudWFsbHkobG9hZE1hbnVhbGx5KTsgfQogCi0gICAgYm9vbCBt
YXRjaGVzVXNlbWFwKGNvbnN0IEF0b21pY1N0cmluZ0ltcGwmKSBjb25zdDsKKyAgICBib29sIG1h
dGNoZXNVc2VtYXAoY29uc3QgQXRvbVN0cmluZ0ltcGwmKSBjb25zdDsKICAgICBIVE1MTWFwRWxl
bWVudCogYXNzb2NpYXRlZE1hcEVsZW1lbnQoKSBjb25zdDsKIAotICAgIFdFQkNPUkVfRVhQT1JU
IGNvbnN0IEF0b21pY1N0cmluZyYgYWx0KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgY29u
c3QgQXRvbVN0cmluZyYgYWx0KCkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dEhlaWdodCh1bnNpZ25lZCk7CiAKICAgICBVUkwgc3JjKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRT
cmMoY29uc3QgU3RyaW5nJik7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENyb3NzT3Jp
Z2luKGNvbnN0IEF0b21pY1N0cmluZyYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q3Jv
c3NPcmlnaW4oY29uc3QgQXRvbVN0cmluZyYpOwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBj
cm9zc09yaWdpbigpIGNvbnN0OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRXaWR0aCh1
bnNpZ25lZCk7CkBAIC0xMDcsNyArMTA3LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBjYW5Db250
YWluUmFuZ2VFbmRQb2ludCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIGltYWdlU291cmNlVVJMKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgY29uc3QgQXRvbVN0cmluZyYgaW1hZ2VTb3VyY2VVUkwoKSBjb25zdCBvdmVycmlkZTsKIAog
ICAgIGJvb2wgaGFzU2hhZG93Q29udHJvbHMoKSBjb25zdCB7IHJldHVybiBtX2V4cGVyaW1lbnRh
bEltYWdlTWVudUVuYWJsZWQ7IH0KICAgICAKQEAgLTEyOSw5ICsxMjksOSBAQCBwcm90ZWN0ZWQ6
CiAgICAgdm9pZCBkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCYgb2xkRG9jdW1lbnQsIERv
Y3VtZW50JiBuZXdEb2N1bWVudCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBwYXJz
ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3Zl
cnJpZGU7CisgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29u
c3QgQXRvbVN0cmluZyYpIG92ZXJyaWRlOwogICAgIGJvb2wgaXNQcmVzZW50YXRpb25BdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZvaWQgY29sbGVj
dFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25z
dCBBdG9taWNTdHJpbmcmLCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJikgb3ZlcnJpZGU7CisgICAg
dm9pZCBjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmLCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJikgb3ZlcnJp
ZGU7CiAKICAgICB2b2lkIGRpZEF0dGFjaFJlbmRlcmVycygpIG92ZXJyaWRlOwogICAgIFJlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwg
Y29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CkBAIC0xNzcsOSArMTc3LDkgQEAg
cHJpdmF0ZToKICAgICBXZWFrUHRyPEhUTUxGb3JtRWxlbWVudD4gbV9mb3JtU2V0QnlQYXJzZXI7
CiAKICAgICBDb21wb3NpdGVPcGVyYXRvciBtX2NvbXBvc2l0ZU9wZXJhdG9yOwotICAgIEF0b21p
Y1N0cmluZyBtX2Jlc3RGaXRJbWFnZVVSTDsKLSAgICBBdG9taWNTdHJpbmcgbV9jdXJyZW50U3Jj
OwotICAgIEF0b21pY1N0cmluZyBtX3BhcnNlZFVzZW1hcDsKKyAgICBBdG9tU3RyaW5nIG1fYmVz
dEZpdEltYWdlVVJMOworICAgIEF0b21TdHJpbmcgbV9jdXJyZW50U3JjOworICAgIEF0b21TdHJp
bmcgbV9wYXJzZWRVc2VtYXA7CiAgICAgZmxvYXQgbV9pbWFnZURldmljZVBpeGVsUmF0aW87CiAg
ICAgYm9vbCBtX2V4cGVyaW1lbnRhbEltYWdlTWVudUVuYWJsZWQ7CiAgICAgYm9vbCBtX2hhZE5h
bWVCZWZvcmVBdHRyaWJ1dGVDaGFuZ2VkIHsgZmFsc2UgfTsgLy8gRklYTUU6IFdlIG9ubHkgbmVl
ZCB0aGlzIGJlY2F1c2UgcGFyc2VBdHRyaWJ1dGUoKSBjYW4ndCBzZWUgdGhlIG9sZCB2YWx1ZS4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlTG9hZGVyLmNwcAppbmRleCBlZTc4NmFlODVkZmRk
ZjU3YWJkMWQzYjNhNzMwYzkzMzQ3ZWVhNjYwLi5iNjY0OTQwYzNhMzIxYWMwZjJjMDJlNTE5ODUy
ODgwYTNhNWQ3NTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VMb2FkZXIuY3BwCkBA
IC02MSw3ICs2MSw3IEBAIHZvaWQgSFRNTEltYWdlTG9hZGVyOjpkaXNwYXRjaExvYWRFdmVudCgp
CiAgICAgZWxlbWVudCgpLmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShlcnJvck9jY3VycmVk
ID8gZXZlbnROYW1lcygpLmVycm9yRXZlbnQgOiBldmVudE5hbWVzKCkubG9hZEV2ZW50LCBFdmVu
dDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKIH0KIAotU3RyaW5n
IEhUTUxJbWFnZUxvYWRlcjo6c291cmNlVVJJKGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cikgY29u
c3QKK1N0cmluZyBIVE1MSW1hZ2VMb2FkZXI6OnNvdXJjZVVSSShjb25zdCBBdG9tU3RyaW5nJiBh
dHRyKSBjb25zdAogewogICAgIHJldHVybiBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFj
ZXMoYXR0cik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUxv
YWRlci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VMb2FkZXIuaAppbmRleCBhODE1
ODlhMGE4M2JiNjhiMTcxMzlhMTNkYjIwNTNhZGI3OThlM2VmLi5mMjI3NDJlNmUyOWNjMmI1NDAy
YjRiMGIxZDE0OWFhZmU0Yjg2YjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbWFnZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlTG9hZGVy
LmgKQEAgLTMyLDcgKzMyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkhUTUxJbWFnZUxvYWRl
cigpOwogCiAgICAgdm9pZCBkaXNwYXRjaExvYWRFdmVudCgpIG92ZXJyaWRlOwotICAgIFN0cmlu
ZyBzb3VyY2VVUkkoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgU3Ry
aW5nIHNvdXJjZVVSSShjb25zdCBBdG9tU3RyaW5nJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2
b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJikgZmluYWw7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggMDk2NDcwYjEwZmFlYzEwNDYxOTdm
MjM2MmNjMThlNjczOTZiZTllZC4uZDNlZTQ2MDI5MWM4NzdjMGZmYzM1YmQ1N2NhZTc0YjhmNTJk
NDNmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC04Myw3
ICs4Myw3IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiBjbGFzcyBMaXN0QXR0cmlidXRl
VGFyZ2V0T2JzZXJ2ZXIgOiBJZFRhcmdldE9ic2VydmVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKLSAgICBMaXN0QXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIoY29uc3Qg
QXRvbWljU3RyaW5nJiBpZCwgSFRNTElucHV0RWxlbWVudCopOworICAgIExpc3RBdHRyaWJ1dGVU
YXJnZXRPYnNlcnZlcihjb25zdCBBdG9tU3RyaW5nJiBpZCwgSFRNTElucHV0RWxlbWVudCopOwog
CiAgICAgdm9pZCBpZFRhcmdldENoYW5nZWQoKSBvdmVycmlkZTsKIApAQCAtMTgwLDcgKzE4MCw3
IEBAIEhUTUxJbnB1dEVsZW1lbnQ6On5IVE1MSW5wdXRFbGVtZW50KCkKICNlbmRpZgogfQogCi1j
b25zdCBBdG9taWNTdHJpbmcmIEhUTUxJbnB1dEVsZW1lbnQ6Om5hbWUoKSBjb25zdAorY29uc3Qg
QXRvbVN0cmluZyYgSFRNTElucHV0RWxlbWVudDo6bmFtZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IG1fbmFtZS5pc051bGwoKSA/IGVtcHR5QXRvbSgpIDogbV9uYW1lOwogfQpAQCAtNTA3LDcgKzUw
Nyw3IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6aGFuZGxlQmx1ckV2ZW50KCkKICAgICBtX2lu
cHV0VHlwZS0+aGFuZGxlQmx1ckV2ZW50KCk7CiB9CiAKLXZvaWQgSFRNTElucHV0RWxlbWVudDo6
c2V0VHlwZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUpCit2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6
OnNldFR5cGUoY29uc3QgQXRvbVN0cmluZyYgdHlwZSkKIHsKICAgICBzZXRBdHRyaWJ1dGVXaXRo
b3V0U3luY2hyb25pemF0aW9uKHR5cGVBdHRyLCB0eXBlKTsKIH0KQEAgLTYxOSw3ICs2MTksNyBA
QCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnN1YnRyZWVIYXNDaGFuZ2VkKCkKICAgICBjYWxjdWxh
dGVBbmRBZGp1c3REaXJlY3Rpb25hbGl0eSgpOwogfQogCi1jb25zdCBBdG9taWNTdHJpbmcmIEhU
TUxJbnB1dEVsZW1lbnQ6OmZvcm1Db250cm9sVHlwZSgpIGNvbnN0Citjb25zdCBBdG9tU3RyaW5n
JiBIVE1MSW5wdXRFbGVtZW50Ojpmb3JtQ29udHJvbFR5cGUoKSBjb25zdAogewogICAgIHJldHVy
biBtX2lucHV0VHlwZS0+Zm9ybUNvbnRyb2xUeXBlKCk7CiB9CkBAIC02NjcsNyArNjY3LDcgQEAg
Ym9vbCBIVE1MSW5wdXRFbGVtZW50Ojppc1ByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiBuYW1lKSBjb25zdAogICAgIHJldHVybiBIVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudDo6aXNQcmVzZW50YXRpb25BdHRyaWJ1dGUobmFtZSk7CiB9CiAKLXZvaWQgSFRNTElucHV0
RWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUsIE11dGFibGVTdHlsZVBy
b3BlcnRpZXMmIHN0eWxlKQordm9pZCBIVE1MSW5wdXRFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQ
cmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRv
bVN0cmluZyYgdmFsdWUsIE11dGFibGVTdHlsZVByb3BlcnRpZXMmIHN0eWxlKQogewogICAgIGlm
IChuYW1lID09IHZzcGFjZUF0dHIpIHsKICAgICAgICAgYWRkSFRNTExlbmd0aFRvU3R5bGUoc3R5
bGUsIENTU1Byb3BlcnR5TWFyZ2luVG9wLCB2YWx1ZSk7CkBAIC02OTUsNyArNjk1LDcgQEAgaW5s
aW5lIHZvaWQgSFRNTElucHV0RWxlbWVudDo6aW5pdGlhbGl6ZUlucHV0VHlwZSgpCiAgICAgQVNT
RVJUKG1fcGFyc2luZ0luUHJvZ3Jlc3MpOwogICAgIEFTU0VSVCghbV9pbnB1dFR5cGUpOwogCi0g
ICAgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlID0gYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXph
dGlvbih0eXBlQXR0cik7CisgICAgY29uc3QgQXRvbVN0cmluZyYgdHlwZSA9IGF0dHJpYnV0ZVdp
dGhvdXRTeW5jaHJvbml6YXRpb24odHlwZUF0dHIpOwogICAgIGlmICh0eXBlLmlzTnVsbCgpKSB7
CiAgICAgICAgIG1faW5wdXRUeXBlID0gSW5wdXRUeXBlOjpjcmVhdGVUZXh0KCp0aGlzKTsKICAg
ICAgICAgZW5zdXJlVXNlckFnZW50U2hhZG93Um9vdCgpOwpAQCAtNzExLDcgKzcxMSw3IEBAIGlu
bGluZSB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmluaXRpYWxpemVJbnB1dFR5cGUoKQogICAgIHJ1
blBvc3RUeXBlVXBkYXRlVGFza3MoKTsKIH0KIAotdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcm
IHZhbHVlKQordm9pZCBIVE1MSW5wdXRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBBU1NFUlQo
bV9pbnB1dFR5cGUpOwogICAgIFJlZjxJbnB1dFR5cGU+IHByb3RlY3RlZElucHV0VHlwZSgqbV9p
bnB1dFR5cGUpOwpAQCAtMTc5OCw3ICsxNzk4LDcgQEAgYm9vbCBIVE1MSW5wdXRFbGVtZW50Ojpp
c0VtcHR5VmFsdWUoKSBjb25zdAogICAgIHJldHVybiBtX2lucHV0VHlwZS0+aXNFbXB0eVZhbHVl
KCk7CiB9CiAKLXZvaWQgSFRNTElucHV0RWxlbWVudDo6bWF4TGVuZ3RoQXR0cmlidXRlQ2hhbmdl
ZChjb25zdCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlKQordm9pZCBIVE1MSW5wdXRFbGVtZW50Ojpt
YXhMZW5ndGhBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IEF0b21TdHJpbmcmIG5ld1ZhbHVlKQogewog
ICAgIHVuc2lnbmVkIG9sZEVmZmVjdGl2ZU1heExlbmd0aCA9IGVmZmVjdGl2ZU1heExlbmd0aCgp
OwogICAgIGludGVybmFsU2V0TWF4TGVuZ3RoKHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihu
ZXdWYWx1ZSkudmFsdWVfb3IoLTEpKTsKQEAgLTE4MTAsNyArMTgxMCw3IEBAIHZvaWQgSFRNTElu
cHV0RWxlbWVudDo6bWF4TGVuZ3RoQXR0cmlidXRlQ2hhbmdlZChjb25zdCBBdG9taWNTdHJpbmcm
IG5ld1ZhbHVlKQogICAgIHVwZGF0ZVZhbGlkaXR5KCk7CiB9CiAKLXZvaWQgSFRNTElucHV0RWxl
bWVudDo6bWluTGVuZ3RoQXR0cmlidXRlQ2hhbmdlZChjb25zdCBBdG9taWNTdHJpbmcmIG5ld1Zh
bHVlKQordm9pZCBIVE1MSW5wdXRFbGVtZW50OjptaW5MZW5ndGhBdHRyaWJ1dGVDaGFuZ2VkKGNv
bnN0IEF0b21TdHJpbmcmIG5ld1ZhbHVlKQogewogICAgIGludCBvbGRNaW5MZW5ndGggPSBtaW5M
ZW5ndGgoKTsKICAgICBpbnRlcm5hbFNldE1pbkxlbmd0aChwYXJzZUhUTUxOb25OZWdhdGl2ZUlu
dGVnZXIobmV3VmFsdWUpLnZhbHVlX29yKC0xKSk7CkBAIC0xOTM2LDcgKzE5MzYsNyBAQCB2b2lk
IEhUTUxJbnB1dEVsZW1lbnQ6OnNldFdpZHRoKHVuc2lnbmVkIHdpZHRoKQogfQogCiAjaWYgRU5B
QkxFKERBVEFMSVNUX0VMRU1FTlQpCi1MaXN0QXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXI6Okxpc3RB
dHRyaWJ1dGVUYXJnZXRPYnNlcnZlcihjb25zdCBBdG9taWNTdHJpbmcmIGlkLCBIVE1MSW5wdXRF
bGVtZW50KiBlbGVtZW50KQorTGlzdEF0dHJpYnV0ZVRhcmdldE9ic2VydmVyOjpMaXN0QXR0cmli
dXRlVGFyZ2V0T2JzZXJ2ZXIoY29uc3QgQXRvbVN0cmluZyYgaWQsIEhUTUxJbnB1dEVsZW1lbnQq
IGVsZW1lbnQpCiAgICAgOiBJZFRhcmdldE9ic2VydmVyKGVsZW1lbnQtPnRyZWVTY29wZSgpLmlk
VGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeSgpLCBpZCkKICAgICAsIG1fZWxlbWVudChlbGVtZW50KQog
ewpAQCAtMjA5NCw4ICsyMDk0LDggQEAgYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpzZXR1cERhdGVU
aW1lQ2hvb3NlclBhcmFtZXRlcnMoRGF0ZVRpbWVDaG9vc2VyUGFyYW1ldGVycyYKICAgICBpZiAo
IWRvY3VtZW50KCkuc2V0dGluZ3MoKS5sYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29udHJvbFVJRW5h
YmxlZCgpKQogICAgICAgICBwYXJhbWV0ZXJzLmxvY2FsZSA9IGRlZmF1bHRMYW5ndWFnZSgpOwog
ICAgIGVsc2UgewotICAgICAgICBBdG9taWNTdHJpbmcgY29tcHV0ZWRMb2NhbGUgPSBjb21wdXRl
SW5oZXJpdGVkTGFuZ3VhZ2UoKTsKLSAgICAgICAgcGFyYW1ldGVycy5sb2NhbGUgPSBjb21wdXRl
ZExvY2FsZS5pc0VtcHR5KCkgPyBBdG9taWNTdHJpbmcoZGVmYXVsdExhbmd1YWdlKCkpIDogY29t
cHV0ZWRMb2NhbGU7CisgICAgICAgIEF0b21TdHJpbmcgY29tcHV0ZWRMb2NhbGUgPSBjb21wdXRl
SW5oZXJpdGVkTGFuZ3VhZ2UoKTsKKyAgICAgICAgcGFyYW1ldGVycy5sb2NhbGUgPSBjb21wdXRl
ZExvY2FsZS5pc0VtcHR5KCkgPyBBdG9tU3RyaW5nKGRlZmF1bHRMYW5ndWFnZSgpKSA6IGNvbXB1
dGVkTG9jYWxlOwogICAgIH0KIAogICAgIFN0ZXBSYW5nZSBzdGVwUmFuZ2UgPSBjcmVhdGVTdGVw
UmFuZ2UoUmVqZWN0QW55KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKaW5k
ZXggMjc2ZGJjOTQzMGQ1ZjEyOTQwZDZiNjRhNWQ2OTNkMDYzMWJmMjdjYi4uMDgxMTRkZDdiYWJk
MTdhYjQ1NDAyNGVhZmUwMjczNjViNGJmOWU0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5w
dXRFbGVtZW50LmgKQEAgLTE2OCw3ICsxNjgsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzaXplU2hv
dWxkSW5jbHVkZURlY29yYXRpb24oaW50JiBwcmVmZXJyZWRTaXplKSBjb25zdDsKICAgICBmbG9h
dCBkZWNvcmF0aW9uV2lkdGgoKSBjb25zdDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
VHlwZShjb25zdCBBdG9taWNTdHJpbmcmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFR5
cGUoY29uc3QgQXRvbVN0cmluZyYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHZhbHVl
KCkgY29uc3QgZmluYWw7CiAgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8dm9pZD4gc2V0
VmFsdWUoY29uc3QgU3RyaW5nJiwgVGV4dEZpZWxkRXZlbnRCZWhhdmlvciA9IERpc3BhdGNoTm9F
dmVudCk7CkBAIC0zMTEsNyArMzExLDcgQEAgcHVibGljOgogICAgIHZvaWQgYmx1cigpIGZpbmFs
OwogICAgIHZvaWQgZGVmYXVsdEJsdXIoKTsKIAotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZSgpIGNvbnN0IGZpbmFsOworICAgIGNvbnN0IEF0b21TdHJpbmcmIG5hbWUoKSBjb25zdCBmaW5h
bDsKIAogICAgIHZvaWQgZW5kRWRpdGluZygpOwogCkBAIC0zNzUsNyArMzc1LDcgQEAgcHJpdmF0
ZToKIAogICAgIGJvb2wgY2FuVHJpZ2dlckltcGxpY2l0U3VibWlzc2lvbigpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIGlzVGV4dEZpZWxkKCk7IH0KIAotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZm9y
bUNvbnRyb2xUeXBlKCkgY29uc3QgZmluYWw7CisgICAgY29uc3QgQXRvbVN0cmluZyYgZm9ybUNv
bnRyb2xUeXBlKCkgY29uc3QgZmluYWw7CiAKICAgICBib29sIHNob3VsZFNhdmVBbmRSZXN0b3Jl
Rm9ybUNvbnRyb2xTdGF0ZSgpIGNvbnN0IGZpbmFsOwogICAgIEZvcm1Db250cm9sU3RhdGUgc2F2
ZUZvcm1Db250cm9sU3RhdGUoKSBjb25zdCBmaW5hbDsKQEAgLTM4Nyw5ICszODcsOSBAQCBwcml2
YXRlOgogCiAgICAgdm9pZCBhY2Nlc3NLZXlBY3Rpb24oYm9vbCBzZW5kTW91c2VFdmVudHMpIGZp
bmFsOwogCi0gICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29u
c3QgQXRvbWljU3RyaW5nJikgZmluYWw7CisgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbVN0cmluZyYpIGZpbmFsOwogICAgIGJvb2wgaXNQcmVz
ZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IGZpbmFsOwotICAg
IHZvaWQgY29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmLCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJikgZmlu
YWw7CisgICAgdm9pZCBjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmLCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVz
JikgZmluYWw7CiAgICAgdm9pZCBmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKSBmaW5hbDsKICAgICB2
b2lkIHBhcnNlckRpZFNldEF0dHJpYnV0ZXMoKSBmaW5hbDsKIApAQCAtNDQ1LDggKzQ0NSw4IEBA
IHByaXZhdGU6CiAjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCiAgICAgdm9pZCByZXNldExp
c3RBdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcigpOwogI2VuZGlmCi0gICAgdm9pZCBtYXhMZW5ndGhB
dHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUpOwotICAgIHZvaWQg
bWluTGVuZ3RoQXR0cmlidXRlQ2hhbmdlZChjb25zdCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlKTsK
KyAgICB2b2lkIG1heExlbmd0aEF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgQXRvbVN0cmluZyYgbmV3
VmFsdWUpOworICAgIHZvaWQgbWluTGVuZ3RoQXR0cmlidXRlQ2hhbmdlZChjb25zdCBBdG9tU3Ry
aW5nJiBuZXdWYWx1ZSk7CiAgICAgdm9pZCB1cGRhdGVWYWx1ZUlmTmVlZGVkKCk7CiAKICAgICB2
b2lkIGFkZFRvUmFkaW9CdXR0b25Hcm91cCgpOwpAQCAtNDU0LDcgKzQ1NCw3IEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIHNldERlZmF1bHRTZWxlY3Rpb25BZnRlckZvY3VzKFNlbGVjdGlvblJldmVh
bE1vZGUpOwogCi0gICAgQXRvbWljU3RyaW5nIG1fbmFtZTsKKyAgICBBdG9tU3RyaW5nIG1fbmFt
ZTsKICAgICBTdHJpbmcgbV92YWx1ZUlmRGlydHk7CiAgICAgdW5zaWduZWQgbV9zaXplOwogICAg
IHNob3J0IG1fbWF4UmVzdWx0cyB7IC0xIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxLZXlnZW5FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEtleWdl
bkVsZW1lbnQuY3BwCmluZGV4IGJjMzVmNTdiNDIxOGJmNGJmZmJjNzBmOTcxZDQxNWU1ZTM2YTlk
MDAuLjFmMmIwMGEwNGU4MGNjYzllZmQxOTYxMDUwOWVhMjAzY2Q2M2IxNzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEtleWdlbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEtleWdlbkVsZW1lbnQuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHByb3Rl
Y3RlZDoKICAgICBLZXlnZW5TZWxlY3RFbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCkKICAgICAg
ICAgOiBIVE1MU2VsZWN0RWxlbWVudChzZWxlY3RUYWcsIGRvY3VtZW50LCAwKQogICAgIHsKLSAg
ICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gcHNldWRvSWQoIi13ZWJr
aXQta2V5Z2VuLXNlbGVjdCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwor
ICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbVN0cmluZz4gcHNldWRvSWQoIi13ZWJr
aXQta2V5Z2VuLXNlbGVjdCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAg
ICAgICAgc2V0UHNldWRvKHBzZXVkb0lkKTsKICAgICB9CiAKQEAgLTkyLDcgKzkyLDcgQEAgUmVm
PEhUTUxLZXlnZW5FbGVtZW50PiBIVE1MS2V5Z2VuRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIEQKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBIVE1MS2V5Z2Vu
RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgZm9ybSkpOwogfQogCi12b2lkIEhUTUxLZXlnZW5F
bGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBB
dG9taWNTdHJpbmcmIHZhbHVlKQordm9pZCBIVE1MS2V5Z2VuRWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCiB7
CiAgICAgLy8gUmVmbGVjdCBkaXNhYmxlZCBhdHRyaWJ1dGUgb24gdGhlIHNoYWRvdyBzZWxlY3Qg
ZWxlbWVudAogICAgIGlmIChuYW1lID09IGRpc2FibGVkQXR0cikKQEAgLTEwNyw3ICsxMDcsNyBA
QCBib29sIEhUTUxLZXlnZW5FbGVtZW50Ojppc0tleXR5cGVSU0EoKSBjb25zdAogICAgIHJldHVy
biBrZXlUeXBlLmlzTnVsbCgpIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGtleVR5
cGUsICJyc2EiKTsKIH0KIAotdm9pZCBIVE1MS2V5Z2VuRWxlbWVudDo6c2V0S2V5dHlwZShjb25z
dCBBdG9taWNTdHJpbmcmIHZhbHVlKQordm9pZCBIVE1MS2V5Z2VuRWxlbWVudDo6c2V0S2V5dHlw
ZShjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKGtleXR5cGVBdHRyLCB2YWx1ZSk7CiB9CkBAIC0xMjksOSArMTI5LDkgQEAg
Ym9vbCBIVE1MS2V5Z2VuRWxlbWVudDo6YXBwZW5kRm9ybURhdGEoRE9NRm9ybURhdGEmIGZvcm1E
YXRhLCBib29sKQogICAgIHJldHVybiB0cnVlOwogfQogCi1jb25zdCBBdG9taWNTdHJpbmcmIEhU
TUxLZXlnZW5FbGVtZW50Ojpmb3JtQ29udHJvbFR5cGUoKSBjb25zdAorY29uc3QgQXRvbVN0cmlu
ZyYgSFRNTEtleWdlbkVsZW1lbnQ6OmZvcm1Db250cm9sVHlwZSgpIGNvbnN0CiB7Ci0gICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4ga2V5Z2VuKCJrZXlnZW4iLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4ga2V5Z2VuKCJrZXlnZW4iLCBBdG9tU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIGtleWdlbjsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MS2V5Z2VuRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MS2V5Z2VuRWxlbWVudC5oCmluZGV4IDljOWM5ZTc4M2M3ZDJiMjc3YTc5YzFjNjA4
ODQyZjM3N2Y5MGNjNjQuLjk2OTIyNzk5MWQ5MGJmOWMwYWE2MzkxMDBlNTUxNTcwOWU2ZjVjNTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEtleWdlbkVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxLZXlnZW5FbGVtZW50LmgKQEAgLTM0LDcgKzM0LDcg
QEAgY2xhc3MgSFRNTEtleWdlbkVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTEZvcm1Db250cm9s
RWxlbWVudFdpdGhTdGF0ZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxIVE1MS2V5Z2VuRWxl
bWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYsIEhUTUxGb3JtRWxl
bWVudCopOwogCi0gICAgdm9pZCBzZXRLZXl0eXBlKGNvbnN0IEF0b21pY1N0cmluZyYpOworICAg
IHZvaWQgc2V0S2V5dHlwZShjb25zdCBBdG9tU3RyaW5nJik7CiAgICAgU3RyaW5nIGtleXR5cGUo
KSBjb25zdDsKIAogcHJpdmF0ZToKQEAgLTQzLDEwICs0MywxMCBAQCBwcml2YXRlOgogICAgIGJv
b2wgY29tcHV0ZVdpbGxWYWxpZGF0ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgYm9vbCBjYW5TdGFydFNlbGVjdGlvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9
CiAKLSAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBB
dG9taWNTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5nJikgZmluYWw7CiAKICAgICBib29sIGFwcGVuZEZv
cm1EYXRhKERPTUZvcm1EYXRhJiwgYm9vbCkgZmluYWw7Ci0gICAgY29uc3QgQXRvbWljU3RyaW5n
JiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdCBmaW5hbDsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBm
b3JtQ29udHJvbFR5cGUoKSBjb25zdCBmaW5hbDsKICAgICBib29sIGlzT3B0aW9uYWxGb3JtQ29u
dHJvbCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBib29sIGlzRW51bWVy
YXRhYmxlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTElFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TExJRWxlbWVudC5jcHAKaW5kZXggZTkyODE1YjhmOTIwNDNlNWI3OGQ0Y2QzMzAwZWFhMmRkYjc2
M2ZkYi4uOGUyNmI2MTA4MjA4ZGM1OGRjOWViZDVjYWZmYjE4ZTU3NDM3Yzg5MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTElFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxMSUVsZW1lbnQuY3BwCkBAIC02Myw3ICs2Myw3IEBAIGJvb2wgSFRNTExJ
RWxlbWVudDo6aXNQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFt
ZSkgY29uc3QKICAgICByZXR1cm4gSFRNTEVsZW1lbnQ6OmlzUHJlc2VudGF0aW9uQXR0cmlidXRl
KG5hbWUpOwogfQogCi12b2lkIEhUTUxMSUVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvclByZXNlbnRh
dGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJp
bmcmIHZhbHVlLCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJiBzdHlsZSkKK3ZvaWQgSFRNTExJRWxl
bWVudDo6Y29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlLCBNdXRhYmxlU3R5bGVQcm9wZXJ0
aWVzJiBzdHlsZSkKIHsKICAgICBpZiAobmFtZSA9PSB0eXBlQXR0cikgewogICAgICAgICBpZiAo
dmFsdWUgPT0gImEiKQpAQCAtODIsNyArODIsNyBAQCB2b2lkIEhUTUxMSUVsZW1lbnQ6OmNvbGxl
Y3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYQog
ICAgICAgICBIVE1MRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRl
KG5hbWUsIHZhbHVlLCBzdHlsZSk7CiB9CiAKLXZvaWQgSFRNTExJRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1
ZSkKK3ZvaWQgSFRNTExJRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKG5hbWUgPT0gdmFs
dWVBdHRyKSB7CiAgICAgICAgIGlmIChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPmlzTGlzdEl0
ZW0oKSkKQEAgLTExNCw3ICsxMTQsNyBAQCB2b2lkIEhUTUxMSUVsZW1lbnQ6OmRpZEF0dGFjaFJl
bmRlcmVycygpCiAgICAgcGFyc2VWYWx1ZShhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9u
KHZhbHVlQXR0cikpOwogfQogCi1pbmxpbmUgdm9pZCBIVE1MTElFbGVtZW50OjpwYXJzZVZhbHVl
KGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCitpbmxpbmUgdm9pZCBIVE1MTElFbGVtZW50Ojpw
YXJzZVZhbHVlKGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKQogewogICAgIEFTU0VSVChyZW5kZXJl
cigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTElFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMSUVsZW1lbnQuaAppbmRleCA4MjEyMTVkZjA5ZGRm
ZjQ1Mzk4ZDdkN2RjNzA2ZmEzNmYyOGFhMDkwLi44YmY5YjcyYjJkZTM1NDg1ZDJhYjlmOGE0YTE1
NDFmYjM4OTVmOGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMSUVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMSUVsZW1lbnQuaApAQCAtMzUsMTMg
KzM1LDEzIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSFRNTExJRWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAotICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIGZpbmFsOworICAgIHZvaWQgcGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmKSBmaW5h
bDsKICAgICBib29sIGlzUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
KSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIGNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiwgTXV0YWJsZVN0
eWxlUHJvcGVydGllcyYpIGZpbmFsOworICAgIHZvaWQgY29sbGVjdFN0eWxlRm9yUHJlc2VudGF0
aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5nJiwgTXV0
YWJsZVN0eWxlUHJvcGVydGllcyYpIGZpbmFsOwogCiAgICAgdm9pZCBkaWRBdHRhY2hSZW5kZXJl
cnMoKSBmaW5hbDsKIAotICAgIHZvaWQgcGFyc2VWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmKTsK
KyAgICB2b2lkIHBhcnNlVmFsdWUoY29uc3QgQXRvbVN0cmluZyYpOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGFiZWxF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExhYmVsRWxlbWVudC5jcHAKaW5k
ZXggY2FlMmUxNzkwZmI5M2FjMTBlNDM3M2NmYmI0OWQ1ZjkzZDc3YjYzOS4uYmIzZjA4ZGI2Y2Jj
NzM2NTQ1NTFmMTJiNzMzZjc0OGFjZmE2YjkwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTGFiZWxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxM
YWJlbEVsZW1lbnQuY3BwCkBAIC00MCw3ICs0MCw3IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURf
SU1QTChIVE1MTGFiZWxFbGVtZW50KTsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAot
c3RhdGljIExhYmVsYWJsZUVsZW1lbnQqIGZpcnN0RWxlbWVudFdpdGhJZElmTGFiZWxhYmxlKFRy
ZWVTY29wZSYgdHJlZVNjb3BlLCBjb25zdCBBdG9taWNTdHJpbmcmIGlkKQorc3RhdGljIExhYmVs
YWJsZUVsZW1lbnQqIGZpcnN0RWxlbWVudFdpdGhJZElmTGFiZWxhYmxlKFRyZWVTY29wZSYgdHJl
ZVNjb3BlLCBjb25zdCBBdG9tU3RyaW5nJiBpZCkKIHsKICAgICBhdXRvIGVsZW1lbnQgPSBtYWtl
UmVmUHRyKHRyZWVTY29wZS5nZXRFbGVtZW50QnlJZChpZCkpOwogICAgIGlmICghaXM8TGFiZWxh
YmxlRWxlbWVudD4oZWxlbWVudCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxMaW5rRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5j
cHAKaW5kZXggYWRlYzllYTA4Mjc1MzQzNWY5MjNiZmQxNWYxYTJhN2VkMmEwNmUwZS4uNjNlMGY4
OTAxNWZmMjY5NjVmNzQ5YTAyNzljOGFjY2RjNWYwMDY2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTExpbmtFbGVtZW50LmNwcApAQCAtMTU4LDcgKzE1OCw3IEBAIHZvaWQgSFRNTExpbmtFbGVt
ZW50OjpzZXREaXNhYmxlZFN0YXRlKGJvb2wgZGlzYWJsZWQpCiAgICAgfQogfQogCi12b2lkIEhU
TUxMaW5rRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwg
Y29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKK3ZvaWQgSFRNTExpbmtFbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1
ZSkKIHsKICAgICBpZiAobmFtZSA9PSByZWxBdHRyKSB7CiAgICAgICAgIG1fcmVsQXR0cmlidXRl
ID0gTGlua1JlbEF0dHJpYnV0ZShkb2N1bWVudCgpLCB2YWx1ZSk7CkBAIC0yMTYsNyArMjE2LDcg
QEAgYm9vbCBIVE1MTGlua0VsZW1lbnQ6OnNob3VsZExvYWRMaW5rKCkKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnNldENyb3NzT3JpZ2luKGNvbnN0IEF0b21p
Y1N0cmluZyYgdmFsdWUpCit2b2lkIEhUTUxMaW5rRWxlbWVudDo6c2V0Q3Jvc3NPcmlnaW4oY29u
c3QgQXRvbVN0cmluZyYgdmFsdWUpCiB7CiAgICAgc2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9u
aXphdGlvbihjcm9zc29yaWdpbkF0dHIsIHZhbHVlKTsKIH0KQEAgLTIyNiw3ICsyMjYsNyBAQCBT
dHJpbmcgSFRNTExpbmtFbGVtZW50Ojpjcm9zc09yaWdpbigpIGNvbnN0CiAgICAgcmV0dXJuIHBh
cnNlQ09SU1NldHRpbmdzQXR0cmlidXRlKGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24o
Y3Jvc3NvcmlnaW5BdHRyKSk7CiB9CiAKLXZvaWQgSFRNTExpbmtFbGVtZW50OjpzZXRBcyhjb25z
dCBBdG9taWNTdHJpbmcmIHZhbHVlKQordm9pZCBIVE1MTGlua0VsZW1lbnQ6OnNldEFzKGNvbnN0
IEF0b21TdHJpbmcmIHZhbHVlKQogewogICAgIHNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6
YXRpb24oYXNBdHRyLCB2YWx1ZSk7CiB9CkBAIC01NjUsNyArNTY1LDcgQEAgVVJMIEhUTUxMaW5r
RWxlbWVudDo6aHJlZigpIGNvbnN0CiAgICAgcmV0dXJuIGRvY3VtZW50KCkuY29tcGxldGVVUkwo
YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihocmVmQXR0cikpOwogfQogCi1jb25zdCBB
dG9taWNTdHJpbmcmIEhUTUxMaW5rRWxlbWVudDo6cmVsKCkgY29uc3QKK2NvbnN0IEF0b21TdHJp
bmcmIEhUTUxMaW5rRWxlbWVudDo6cmVsKCkgY29uc3QKIHsKICAgICByZXR1cm4gYXR0cmlidXRl
V2l0aG91dFN5bmNocm9uaXphdGlvbihyZWxBdHRyKTsKIH0KQEAgLTU3NSw3ICs1NzUsNyBAQCBT
dHJpbmcgSFRNTExpbmtFbGVtZW50Ojp0YXJnZXQoKSBjb25zdAogICAgIHJldHVybiBhdHRyaWJ1
dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHRhcmdldEF0dHIpOwogfQogCi1jb25zdCBBdG9taWNT
dHJpbmcmIEhUTUxMaW5rRWxlbWVudDo6dHlwZSgpIGNvbnN0Citjb25zdCBBdG9tU3RyaW5nJiBI
VE1MTGlua0VsZW1lbnQ6OnR5cGUoKSBjb25zdAogewogICAgIHJldHVybiBhdHRyaWJ1dGVXaXRo
b3V0U3luY2hyb25pemF0aW9uKHR5cGVBdHRyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5r
RWxlbWVudC5oCmluZGV4IDYxYWI1YjM2N2MyNTA0YjBjNjJjN2VmYjY3M2FhYTNjMDdlNTBmMGIu
LmM4M2VhMzk3MDk1YjkxOWRhZjA3ZmQ0MDE5N2JmZWU3MWE5Yjg3MTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTGlua0VsZW1lbnQuaApAQCAtNDgsMTEgKzQ4LDExIEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIH5IVE1MTGlua0VsZW1lbnQoKTsKIAogICAgIFVSTCBocmVmKCkgY29uc3Q7Ci0gICAg
Y29uc3QgQXRvbWljU3RyaW5nJiByZWwoKSBjb25zdDsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBy
ZWwoKSBjb25zdDsKIAogICAgIFN0cmluZyB0YXJnZXQoKSBjb25zdCBmaW5hbDsKIAotICAgIGNv
bnN0IEF0b21pY1N0cmluZyYgdHlwZSgpIGNvbnN0OworICAgIGNvbnN0IEF0b21TdHJpbmcmIHR5
cGUoKSBjb25zdDsKIAogICAgIE9wdGlvbmFsPExpbmtJY29uVHlwZT4gaWNvblR5cGUoKSBjb25z
dDsKIApAQCAtNjQsOSArNjQsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0VuYWJsZWRWaWFTY3Jp
cHQoKSBjb25zdCB7IHJldHVybiBtX2Rpc2FibGVkU3RhdGUgPT0gRW5hYmxlZFZpYVNjcmlwdDsg
fQogICAgIERPTVRva2VuTGlzdCYgc2l6ZXMoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0Q3Jvc3NPcmlnaW4oY29uc3QgQXRvbWljU3RyaW5nJik7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRDcm9zc09yaWdpbihjb25zdCBBdG9tU3RyaW5nJik7CiAgICAgV0VCQ09SRV9FWFBP
UlQgU3RyaW5nIGNyb3NzT3JpZ2luKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRBcyhjb25zdCBBdG9taWNTdHJpbmcmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEFz
KGNvbnN0IEF0b21TdHJpbmcmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgYXMoKSBjb25z
dDsKIAogICAgIHZvaWQgZGlzcGF0Y2hQZW5kaW5nRXZlbnQoTGlua0V2ZW50U2VuZGVyKik7CkBA
IC03OSw3ICs3OSw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIHZvaWQgcGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIGZp
bmFsOworICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0
IEF0b21TdHJpbmcmKSBmaW5hbDsKIAogICAgIGJvb2wgc2hvdWxkTG9hZExpbmsoKSBmaW5hbDsK
ICAgICB2b2lkIHByb2Nlc3MoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1hcEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFwRWxlbWVudC5jcHAK
aW5kZXggNzMyNDJkNWYyZTU5MzQwNTgwNDJiYTE2MTAyMzU3ZmI3NmQzYmI0Yy4uZjAwOTE0N2Vh
MzNhNzkzMDBiZWM0YTk0ZjNhNmEyOTQwYTU0MmVmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWFwRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWFwRWxlbWVudC5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgSFRNTEltYWdlRWxlbWVudCogSFRNTE1h
cEVsZW1lbnQ6OmltYWdlRWxlbWVudCgpCiAgICAgcmV0dXJuIHRyZWVTY29wZSgpLmltYWdlRWxl
bWVudEJ5VXNlbWFwKCptX25hbWUuaW1wbCgpKTsKIH0KIAotdm9pZCBIVE1MTWFwRWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3Ry
aW5nJiB2YWx1ZSkKK3ZvaWQgSFRNTE1hcEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKQogewogICAgIC8vIEZJ
WE1FOiBUaGlzIGxvZ2ljIHNlZW1zIHdyb25nIGZvciBYTUwgZG9jdW1lbnRzLgogICAgIC8vIEVp
dGhlciB0aGUgaWQgb3IgbmFtZSB3aWxsIGJlIHVzZWQgZGVwZW5kaW5nIG9uIHRoZSBvcmRlciB0
aGUgYXR0cmlidXRlcyBhcmUgcGFyc2VkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWFwRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFwRWxlbWVudC5o
CmluZGV4IGJkZjJlNGU3M2FjZjU5M2ZmYjZhMmIyMWMyOTBlNzk2NGU2ZDE4NjkuLjdmN2VjZTVm
ZmRhMzBhNzA0ZTJkZGUyZjE5YmFlNDRmYTAxY2IxY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1hcEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
YXBFbGVtZW50LmgKQEAgLTM2LDcgKzM2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8SFRN
TE1hcEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKICAg
ICB2aXJ0dWFsIH5IVE1MTWFwRWxlbWVudCgpOwogCi0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBn
ZXROYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CisgICAgY29uc3QgQXRvbVN0cmluZyYg
Z2V0TmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQogCiAgICAgYm9vbCBtYXBNb3VzZUV2
ZW50KExheW91dFBvaW50IGxvY2F0aW9uLCBjb25zdCBMYXlvdXRTaXplJiwgSGl0VGVzdFJlc3Vs
dCYpOwogICAgIApAQCAtNDYsMTIgKzQ2LDEyIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSFRN
TE1hcEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKLSAgICB2b2lk
IHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcm
KSBmaW5hbDsKKyAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBj
b25zdCBBdG9tU3RyaW5nJikgZmluYWw7CiAKICAgICBJbnNlcnRlZEludG9BbmNlc3RvclJlc3Vs
dCBpbnNlcnRlZEludG9BbmNlc3RvcihJbnNlcnRpb25UeXBlLCBDb250YWluZXJOb2RlJikgZmlu
YWw7CiAgICAgdm9pZCByZW1vdmVkRnJvbUFuY2VzdG9yKFJlbW92YWxUeXBlLCBDb250YWluZXJO
b2RlJikgZmluYWw7CiAKLSAgICBBdG9taWNTdHJpbmcgbV9uYW1lOworICAgIEF0b21TdHJpbmcg
bV9uYW1lOwogfTsKIAogfSAvLyBuYW1lc3BhY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNYXJxdWVlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
YXJxdWVlRWxlbWVudC5jcHAKaW5kZXggYzQ0Mzk5MmMzNGQxNjc3YjNjYjFmMDdlY2IyNTUzMmIx
NjJjMWQ4My4uMTY3OWU5YjIyZDhmNTIxNjZlY2E5NGZkYWY3NjRjNDAwMmI2YzQ3NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFycXVlZUVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmNwcApAQCAtNjgsNyArNjgsNyBA
QCBib29sIEhUTUxNYXJxdWVlRWxlbWVudDo6aXNQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgbmFtZSkgY29ucwogICAgIHJldHVybiBIVE1MRWxlbWVudDo6aXNQcmVz
ZW50YXRpb25BdHRyaWJ1dGUobmFtZSk7CiB9CiAKLXZvaWQgSFRNTE1hcnF1ZWVFbGVtZW50Ojpj
b2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
bmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYg
c3R5bGUpCit2b2lkIEhUTUxNYXJxdWVlRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yUHJlc2VudGF0
aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcm
IHZhbHVlLCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJiBzdHlsZSkKIHsKICAgICBpZiAobmFtZSA9
PSB3aWR0aEF0dHIpIHsKICAgICAgICAgaWYgKCF2YWx1ZS5pc0VtcHR5KCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXJxdWVlRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWFycXVlZUVsZW1lbnQuaAppbmRleCA2ODQ5MGZkNDUyNjI5NTgzMGEyOWZi
NmE5YjY0MGU2NjgyZmQzYzVkLi4wNDBjYzk1NGEyYTBiMzgwMjk0N2I4NDEwNzFmYmUyMjg3OGEx
YmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXJxdWVlRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmgKQEAgLTU1LDcg
KzU1LDcgQEAgcHJpdmF0ZToKICAgICBIVE1MTWFycXVlZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIERvY3VtZW50Jik7CiAKICAgICBib29sIGlzUHJlc2VudGF0aW9uQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIGNvbGxlY3RTdHlsZUZv
clByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWlj
U3RyaW5nJiwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYpIGZpbmFsOworICAgIHZvaWQgY29sbGVj
dFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25z
dCBBdG9tU3RyaW5nJiwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYpIGZpbmFsOwogCiAgICAgYm9v
bCBjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3QgZmluYWw7CiAgICAgdm9p
ZCBzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24pIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggNzVmMTkzODNhZDYxNDU5MzZkNGQ3NTdmOGZiZDM1
ZmM5OTQ4YThlZC4uMjRjNjg3ZTViMjFjNzVhYzRjYjBhM2I3NzJhMThjNzJkZWRjMjJhMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC04MDQsNyArODA0LDcg
QEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojppc01vdXNlRm9jdXNhYmxlKCkgY29uc3QKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKK3Zv
aWQgSFRNTE1lZGlhRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
bmFtZSwgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKG5hbWUgPT0gc3JjQXR0
cikgewogICAgICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9l
bWJlZGRlZC1jb250ZW50Lmh0bWwjbG9jYXRpb24tb2YtdGhlLW1lZGlhLXJlc291cmNlCkBAIC0x
MDEwLDcgKzEwMTAsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyQWN0aXZl
U291cmNlQnVmZmVyc0NoYW5nZWQoY29uc3QgTWVkaWFQbGF5ZXIqKQogICAgIG1faGFzRXZlckhh
ZFZpZGVvIHw9IGhhc1ZpZGVvKCk7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1
bGVFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50TmFtZSkKK3ZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6c2NoZWR1bGVFdmVudChjb25zdCBBdG9tU3RyaW5nJiBldmVudE5hbWUpCiB7CiAgICAg
YXV0byBldmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lLCBFdmVudDo6Q2FuQnViYmxlOjpO
bywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzKTsKIApAQCAtMTEyMSw3ICsxMTIxLDcgQEAgdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRTcmNPYmplY3QoTWVkaWFQcm92aWRlciYmIG1lZGlhUHJv
dmlkZXIpCiAgICAgcHJlcGFyZUZvckxvYWQoKTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50
OjpzZXRDcm9zc09yaWdpbihjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQordm9pZCBIVE1MTWVk
aWFFbGVtZW50OjpzZXRDcm9zc09yaWdpbihjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKIHsKICAg
ICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGNyb3Nzb3JpZ2luQXR0ciwgdmFs
dWUpOwogfQpAQCAtNTkyMiw3ICs1OTIyLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpkaXNw
YXRjaEV2ZW50KEV2ZW50JiBldmVudCkKICAgICBIVE1MRWxlbWVudDo6ZGlzcGF0Y2hFdmVudChl
dmVudCk7CiB9CiAKLWJvb2wgSFRNTE1lZGlhRWxlbWVudDo6YWRkRXZlbnRMaXN0ZW5lcihjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIs
IGNvbnN0IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zJiBvcHRpb25zKQorYm9vbCBIVE1MTWVkaWFF
bGVtZW50OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgUmVm
PEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIsIGNvbnN0IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25z
JiBvcHRpb25zKQogewogICAgIGlmIChldmVudFR5cGUgIT0gZXZlbnROYW1lcygpLndlYmtpdHBs
YXliYWNrdGFyZ2V0YXZhaWxhYmlsaXR5Y2hhbmdlZEV2ZW50KQogICAgICAgICByZXR1cm4gTm9k
ZTo6YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIFdURk1vdmUobGlzdGVuZXIpLCBvcHRpb25z
KTsKQEAgLTU5NDIsNyArNTk0Miw3IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6YWRkRXZlbnRM
aXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgSFRNTE1lZGlhRWxlbWVudDo6cmVtb3ZlRXZlbnRMaXN0ZW5l
cihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIs
IGNvbnN0IExpc3RlbmVyT3B0aW9ucyYgb3B0aW9ucykKK2Jvb2wgSFRNTE1lZGlhRWxlbWVudDo6
cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlz
dGVuZXImIGxpc3RlbmVyLCBjb25zdCBMaXN0ZW5lck9wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAg
aWYgKGV2ZW50VHlwZSAhPSBldmVudE5hbWVzKCkud2Via2l0cGxheWJhY2t0YXJnZXRhdmFpbGFi
aWxpdHljaGFuZ2VkRXZlbnQpCiAgICAgICAgIHJldHVybiBOb2RlOjpyZW1vdmVFdmVudExpc3Rl
bmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIsIG9wdGlvbnMpOwpAQCAtNzg3NSw3ICs3ODc1LDcgQEAg
Ym9vbCBIVE1MTWVkaWFFbGVtZW50OjplZmZlY3RpdmVNdXRlZCgpIGNvbnN0CiAgICAgcmV0dXJu
IG11dGVkKCkgfHwgKGRvY3VtZW50KCkucGFnZSgpICYmIGRvY3VtZW50KCkucGFnZSgpLT5pc0F1
ZGlvTXV0ZWQoKSk7CiB9CiAKLWJvb2wgSFRNTE1lZGlhRWxlbWVudDo6ZG9lc0hhdmVBdHRyaWJ1
dGUoY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGUsIEF0b21pY1N0cmluZyogdmFsdWUpIGNv
bnN0Citib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmRvZXNIYXZlQXR0cmlidXRlKGNvbnN0IEF0b21T
dHJpbmcmIGF0dHJpYnV0ZSwgQXRvbVN0cmluZyogdmFsdWUpIGNvbnN0CiB7CiAgICAgUXVhbGlm
aWVkTmFtZSBhdHRyaWJ1dGVOYW1lKG51bGxBdG9tKCksIGF0dHJpYnV0ZSwgbnVsbEF0b20oKSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggYjZkMTgwOTM5MjI5
MDM3ODU1NmIzMTFlOTEyOTk4YzkwN2VlNTQyYi4uMmY3MDQ3ZWZhMzg3NDQ2NzA0MWFjODk4MDYw
OTA0MTdmMTc4MWI0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAg
LTE3NCw3ICsxNzQsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGNhblNhdmVNZWRpYURhdGEoKSBj
b25zdDsKIAotICAgIGJvb2wgZG9lc0hhdmVBdHRyaWJ1dGUoY29uc3QgQXRvbWljU3RyaW5nJiwg
QXRvbWljU3RyaW5nKiB2YWx1ZSA9IG51bGxwdHIpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wg
ZG9lc0hhdmVBdHRyaWJ1dGUoY29uc3QgQXRvbVN0cmluZyYsIEF0b21TdHJpbmcqIHZhbHVlID0g
bnVsbHB0cikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxh
eWVyKCkgY29uc3Q7CiAgICAgYm9vbCBpc1ZpZGVvTGF5ZXJJbmxpbmUoKTsKQEAgLTIxNSw3ICsy
MTUsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgTWVkaWFQcm92aWRlciYgc3JjT2JqZWN0KCkgY29u
c3QgeyByZXR1cm4gbV9tZWRpYVByb3ZpZGVyOyB9CiAgICAgdm9pZCBzZXRTcmNPYmplY3QoTWVk
aWFQcm92aWRlciYmKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q3Jvc3NPcmlnaW4o
Y29uc3QgQXRvbWljU3RyaW5nJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDcm9zc09y
aWdpbihjb25zdCBBdG9tU3RyaW5nJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGNyb3Nz
T3JpZ2luKCkgY29uc3Q7CiAKIC8vIG5ldHdvcmsgc3RhdGUKQEAgLTQwNyw4ICs0MDcsOCBAQCBw
dWJsaWM6CiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogICAgIHZvaWQg
d2Via2l0U2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKCk7Ci0gICAgYm9vbCBhZGRFdmVudExpc3Rl
bmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiwg
Y29uc3QgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMmKSBvdmVycmlkZTsKLSAgICBib29sIHJlbW92
ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVu
ZXImLCBjb25zdCBMaXN0ZW5lck9wdGlvbnMmKSBvdmVycmlkZTsKKyAgICBib29sIGFkZEV2ZW50
TGlzdGVuZXIoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4m
JiwgY29uc3QgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMmKSBvdmVycmlkZTsKKyAgICBib29sIHJl
bW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3Rl
bmVyJiwgY29uc3QgTGlzdGVuZXJPcHRpb25zJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHdpcmVs
ZXNzUm91dGVzQXZhaWxhYmxlRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRXaXJl
bGVzc1BsYXliYWNrVGFyZ2V0KFJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiYmKSBvdmVycmlkZTsK
QEAgLTU4Myw3ICs1ODMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaElu
aXRpYWxpemF0aW9uKCk7CiAgICAgdmlydHVhbCB+SFRNTE1lZGlhRWxlbWVudCgpOwogCi0gICAg
dm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3Ry
aW5nJikgb3ZlcnJpZGU7CisgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiwgY29uc3QgQXRvbVN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZmluaXNoUGFyc2lu
Z0NoaWxkcmVuKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc1VSTEF0dHJpYnV0ZShjb25zdCBBdHRy
aWJ1dGUmKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxBdHRhY2hSZW5kZXJlcnMoKSBv
dmVycmlkZTsKQEAgLTYxMyw3ICs2MTMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCB1cGRhdGVN
ZWRpYUNvbnRyb2xzQWZ0ZXJQcmVzZW50YXRpb25Nb2RlQ2hhbmdlKCk7CiAjZW5kaWYKIAotICAg
IHZvaWQgc2NoZWR1bGVFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50TmFtZSk7CisgICAg
dm9pZCBzY2hlZHVsZUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50TmFtZSk7CiAKIHByaXZh
dGU6CiAgICAgdm9pZCBjcmVhdGVNZWRpYVBsYXllcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVudUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVudUVsZW1lbnQuY3BwCmluZGV4IGJhMDViYjk0ZmM0NTI5MWI1NThhNjMyZjM5MDQzNjZiYzhh
YzRlMmEuLjg3MjIwZmYzMzgwYmZmNDg5OWJjODY4OTY0MWU4NzJiMjRlYzM0ZmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lbnVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZW51RWxlbWVudC5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBI
VE1MTWVudUVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IoUmVtb3ZhbFR5cGUgdHlwZSwgQ29u
dGFpbmVyTm9kZSYgYW5jZXMKICAgICB9CiB9CiAKLXZvaWQgSFRNTE1lbnVFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcm
IHZhbHVlKQordm9pZCBIVE1MTWVudUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKQogewogICAgIGlmIChuYW1l
ICE9IHR5cGVBdHRyIHx8ICFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygp
Lm1lbnVJdGVtRWxlbWVudEVuYWJsZWQoKSkgewogICAgICAgICBIVE1MRWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUobmFtZSwgdmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVudUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lbnVFbGVtZW50LmgK
aW5kZXggZTY1OWY3MDgwNTM3NmIxYmM1ZjJiMzFhOTY0ZGRhZDA5YTNhOGFhNS4uMjA1YjhmNTJj
NDk1Mzg4NjlhOWZlZDQ3N2RlMTJlYmZmY2ZkZTIzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVudUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZW51RWxlbWVudC5oCkBAIC0zOCw3ICszOCw3IEBAIHByaXZhdGU6CiAKICAgICBJbnNlcnRlZElu
dG9BbmNlc3RvclJlc3VsdCBpbnNlcnRlZEludG9BbmNlc3RvcihJbnNlcnRpb25UeXBlLCBDb250
YWluZXJOb2RlJikgZmluYWw7CiAgICAgdm9pZCByZW1vdmVkRnJvbUFuY2VzdG9yKFJlbW92YWxU
eXBlLCBDb250YWluZXJOb2RlJikgZmluYWw7Ci0gICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgZmluYWw7CisgICAgdm9pZCBw
YXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbVN0cmluZyYpIGZp
bmFsOwogCiAgICAgYm9vbCBtX2lzVG91Y2hCYXJNZW51OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1ldGFFbGVtZW50LmNwcAppbmRleCA2NDQ4MDQ5MDljM2MwMGViM2FhOTdkMzhmYTNjZjdl
MGMxZTc0MjA0Li5hZjZlNmMxMDMxMWM0MDkyOTliOThiNmY2MmZjOGI0ZmQ4NDBhNjQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRhRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0YUVsZW1lbnQuY3BwCkBAIC01Miw3ICs1Miw3IEBAIFJl
ZjxIVE1MTWV0YUVsZW1lbnQ+IEhUTUxNZXRhRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSFRNTE1ldGFF
bGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKLXZvaWQgSFRNTE1ldGFFbGVtZW50Ojpw
YXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJp
bmcmIHZhbHVlKQordm9pZCBIVE1MTWV0YUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKQogewogICAgIGlmIChu
YW1lID09IGh0dHBfZXF1aXZBdHRyKQogICAgICAgICBwcm9jZXNzKCk7CkBAIC04Myw3ICs4Myw3
IEBAIHZvaWQgSFRNTE1ldGFFbGVtZW50Ojpwcm9jZXNzKCkKICAgICBpZiAoIWlzQ29ubmVjdGVk
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgY29udGVudFZh
bHVlID0gYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihjb250ZW50QXR0cik7CisgICAg
Y29uc3QgQXRvbVN0cmluZyYgY29udGVudFZhbHVlID0gYXR0cmlidXRlV2l0aG91dFN5bmNocm9u
aXphdGlvbihjb250ZW50QXR0cik7CiAgICAgaWYgKGNvbnRlbnRWYWx1ZS5pc051bGwoKSkKICAg
ICAgICAgcmV0dXJuOwogCkBAIC0xMDQsMjIgKzEwNCwyMiBAQCB2b2lkIEhUTUxNZXRhRWxlbWVu
dDo6cHJvY2VzcygpCiAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uo
bmFtZSgpLCAicmVmZXJyZXIiKSkKICAgICAgICAgZG9jdW1lbnQoKS5wcm9jZXNzUmVmZXJyZXJQ
b2xpY3koY29udGVudFZhbHVlLCBSZWZlcnJlclBvbGljeVNvdXJjZTo6TWV0YVRhZyk7CiAKLSAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIGh0dHBFcXVpdlZhbHVlID0gYXR0cmlidXRlV2l0aG91dFN5
bmNocm9uaXphdGlvbihodHRwX2VxdWl2QXR0cik7CisgICAgY29uc3QgQXRvbVN0cmluZyYgaHR0
cEVxdWl2VmFsdWUgPSBhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGh0dHBfZXF1aXZB
dHRyKTsKICAgICBpZiAoIWh0dHBFcXVpdlZhbHVlLmlzTnVsbCgpKQogICAgICAgICBkb2N1bWVu
dCgpLnByb2Nlc3NIdHRwRXF1aXYoaHR0cEVxdWl2VmFsdWUsIGNvbnRlbnRWYWx1ZSwgaXNEZXNj
ZW5kYW50T2YoZG9jdW1lbnQoKS5oZWFkKCkpKTsKIH0KIAotY29uc3QgQXRvbWljU3RyaW5nJiBI
VE1MTWV0YUVsZW1lbnQ6OmNvbnRlbnQoKSBjb25zdAorY29uc3QgQXRvbVN0cmluZyYgSFRNTE1l
dGFFbGVtZW50Ojpjb250ZW50KCkgY29uc3QKIHsKICAgICByZXR1cm4gYXR0cmlidXRlV2l0aG91
dFN5bmNocm9uaXphdGlvbihjb250ZW50QXR0cik7CiB9CiAKLWNvbnN0IEF0b21pY1N0cmluZyYg
SFRNTE1ldGFFbGVtZW50OjpodHRwRXF1aXYoKSBjb25zdAorY29uc3QgQXRvbVN0cmluZyYgSFRN
TE1ldGFFbGVtZW50OjpodHRwRXF1aXYoKSBjb25zdAogewogICAgIHJldHVybiBhdHRyaWJ1dGVX
aXRob3V0U3luY2hyb25pemF0aW9uKGh0dHBfZXF1aXZBdHRyKTsKIH0KIAotY29uc3QgQXRvbWlj
U3RyaW5nJiBIVE1MTWV0YUVsZW1lbnQ6Om5hbWUoKSBjb25zdAorY29uc3QgQXRvbVN0cmluZyYg
SFRNTE1ldGFFbGVtZW50OjpuYW1lKCkgY29uc3QKIHsKICAgICByZXR1cm4gZ2V0TmFtZUF0dHJp
YnV0ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0YUVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGFFbGVtZW50LmgKaW5kZXggMTU2ZTE5
YzZiNDBiYTgzZWRmODk2Yjg3YmI5MTBkMTRiNGRkMTIzNC4uNDNlMDllZjg0MTU5OTNjNjYyNzJi
NzU0MjcwN2MwMjFiYWFlOGY2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWV0YUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRhRWxlbWVudC5o
CkBAIC0zMiwxNCArMzIsMTQgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8SFRNTE1ldGFFbGVt
ZW50PiBjcmVhdGUoRG9jdW1lbnQmKTsKICAgICBzdGF0aWMgUmVmPEhUTUxNZXRhRWxlbWVudD4g
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCi0gICAgY29uc3QgQXRv
bWljU3RyaW5nJiBjb250ZW50KCkgY29uc3Q7Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBodHRw
RXF1aXYoKSBjb25zdDsKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUoKSBjb25zdDsKKyAg
ICBjb25zdCBBdG9tU3RyaW5nJiBjb250ZW50KCkgY29uc3Q7CisgICAgY29uc3QgQXRvbVN0cmlu
ZyYgaHR0cEVxdWl2KCkgY29uc3Q7CisgICAgY29uc3QgQXRvbVN0cmluZyYgbmFtZSgpIGNvbnN0
OwogCiBwcml2YXRlOgogICAgIEhUTUxNZXRhRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwg
RG9jdW1lbnQmKTsKIAotICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIGZpbmFsOworICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmKSBmaW5hbDsKICAgICBJbnNl
cnRlZEludG9BbmNlc3RvclJlc3VsdCBpbnNlcnRlZEludG9BbmNlc3RvcihJbnNlcnRpb25UeXBl
LCBDb250YWluZXJOb2RlJikgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hJbnNlcnRpbmdOb2Rl
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGVyRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuY3BwCmluZGV4IGJkYzcx
ODM2MDczY2EzYTRhNjA4ZTBlMmY1NGExYjcwNmUwYjAzYWYuLmM1MmM0NzFlMThlNjdhYTM2MDA3
ZGY4NjJlYTMxZjk3OTM4ZTg4NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1ldGVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVt
ZW50LmNwcApAQCAtNzEsNyArNzEsNyBAQCBib29sIEhUTUxNZXRlckVsZW1lbnQ6OmNoaWxkU2hv
dWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZSYgY2hpbGQpIGNvbnN0CiAgICAgcmV0dXJuICFp
czxSZW5kZXJNZXRlcj4ocmVuZGVyZXIoKSkgJiYgSFRNTEVsZW1lbnQ6OmNoaWxkU2hvdWxkQ3Jl
YXRlUmVuZGVyZXIoY2hpbGQpOwogfQogCi12b2lkIEhUTUxNZXRlckVsZW1lbnQ6OnBhcnNlQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFs
dWUpCit2b2lkIEhUTUxNZXRlckVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKQogewogICAgIGlmIChuYW1lID09
IHZhbHVlQXR0ciB8fCBuYW1lID09IG1pbkF0dHIgfHwgbmFtZSA9PSBtYXhBdHRyIHx8IG5hbWUg
PT0gbG93QXR0ciB8fCBuYW1lID09IGhpZ2hBdHRyIHx8IG5hbWUgPT0gb3B0aW11bUF0dHIpCiAg
ICAgICAgIGRpZEVsZW1lbnRTdGF0ZUNoYW5nZSgpOwpAQCAtODYsNyArODYsNyBAQCBkb3VibGUg
SFRNTE1ldGVyRWxlbWVudDo6bWluKCkgY29uc3QKIAogdm9pZCBIVE1MTWV0ZXJFbGVtZW50Ojpz
ZXRNaW4oZG91YmxlIG1pbikKIHsKLSAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKG1pbkF0dHIsIEF0b21pY1N0cmluZzo6bnVtYmVyKG1pbikpOworICAgIHNldEF0dHJpYnV0
ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24obWluQXR0ciwgQXRvbVN0cmluZzo6bnVtYmVyKG1pbikp
OwogfQogCiBkb3VibGUgSFRNTE1ldGVyRWxlbWVudDo6bWF4KCkgY29uc3QKQEAgLTk2LDcgKzk2
LDcgQEAgZG91YmxlIEhUTUxNZXRlckVsZW1lbnQ6Om1heCgpIGNvbnN0CiAKIHZvaWQgSFRNTE1l
dGVyRWxlbWVudDo6c2V0TWF4KGRvdWJsZSBtYXgpCiB7Ci0gICAgc2V0QXR0cmlidXRlV2l0aG91
dFN5bmNocm9uaXphdGlvbihtYXhBdHRyLCBBdG9taWNTdHJpbmc6Om51bWJlcihtYXgpKTsKKyAg
ICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKG1heEF0dHIsIEF0b21TdHJpbmc6
Om51bWJlcihtYXgpKTsKIH0KIAogZG91YmxlIEhUTUxNZXRlckVsZW1lbnQ6OnZhbHVlKCkgY29u
c3QKQEAgLTEwNyw3ICsxMDcsNyBAQCBkb3VibGUgSFRNTE1ldGVyRWxlbWVudDo6dmFsdWUoKSBj
b25zdAogCiB2b2lkIEhUTUxNZXRlckVsZW1lbnQ6OnNldFZhbHVlKGRvdWJsZSB2YWx1ZSkKIHsK
LSAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHZhbHVlQXR0ciwgQXRvbWlj
U3RyaW5nOjpudW1iZXIodmFsdWUpKTsKKyAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25p
emF0aW9uKHZhbHVlQXR0ciwgQXRvbVN0cmluZzo6bnVtYmVyKHZhbHVlKSk7CiB9CiAKIGRvdWJs
ZSBIVE1MTWV0ZXJFbGVtZW50Ojpsb3coKSBjb25zdApAQCAtMTE4LDcgKzExOCw3IEBAIGRvdWJs
ZSBIVE1MTWV0ZXJFbGVtZW50Ojpsb3coKSBjb25zdAogCiB2b2lkIEhUTUxNZXRlckVsZW1lbnQ6
OnNldExvdyhkb3VibGUgbG93KQogewotICAgIHNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6
YXRpb24obG93QXR0ciwgQXRvbWljU3RyaW5nOjpudW1iZXIobG93KSk7CisgICAgc2V0QXR0cmli
dXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihsb3dBdHRyLCBBdG9tU3RyaW5nOjpudW1iZXIobG93
KSk7CiB9CiAKIGRvdWJsZSBIVE1MTWV0ZXJFbGVtZW50OjpoaWdoKCkgY29uc3QKQEAgLTEyOSw3
ICsxMjksNyBAQCBkb3VibGUgSFRNTE1ldGVyRWxlbWVudDo6aGlnaCgpIGNvbnN0CiAKIHZvaWQg
SFRNTE1ldGVyRWxlbWVudDo6c2V0SGlnaChkb3VibGUgaGlnaCkKIHsKLSAgICBzZXRBdHRyaWJ1
dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGhpZ2hBdHRyLCBBdG9taWNTdHJpbmc6Om51bWJlciho
aWdoKSk7CisgICAgc2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihoaWdoQXR0ciwg
QXRvbVN0cmluZzo6bnVtYmVyKGhpZ2gpKTsKIH0KIAogZG91YmxlIEhUTUxNZXRlckVsZW1lbnQ6
Om9wdGltdW0oKSBjb25zdApAQCAtMTQwLDcgKzE0MCw3IEBAIGRvdWJsZSBIVE1MTWV0ZXJFbGVt
ZW50OjpvcHRpbXVtKCkgY29uc3QKIAogdm9pZCBIVE1MTWV0ZXJFbGVtZW50OjpzZXRPcHRpbXVt
KGRvdWJsZSBvcHRpbXVtKQogewotICAgIHNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRp
b24ob3B0aW11bUF0dHIsIEF0b21pY1N0cmluZzo6bnVtYmVyKG9wdGltdW0pKTsKKyAgICBzZXRB
dHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKG9wdGltdW1BdHRyLCBBdG9tU3RyaW5nOjpu
dW1iZXIob3B0aW11bSkpOwogfQogCiBIVE1MTWV0ZXJFbGVtZW50OjpHYXVnZVJlZ2lvbiBIVE1M
TWV0ZXJFbGVtZW50OjpnYXVnZVJlZ2lvbigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
dGVyRWxlbWVudC5oCmluZGV4IGFlMTZmODI3YjU2MDIyMzhkYTIzNDRmZGM4NDVhYzU2NjExNTcy
MjguLmZlMmNlYWYzZTIxNGMwNzEyMTgyZWMxY2JlNzg0MjQ0MzhiMzdmZGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGVyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1ldGVyRWxlbWVudC5oCkBAIC03Myw3ICs3Myw3IEBAIHByaXZhdGU6CiAK
ICAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRl
clN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIGZpbmFsOwogICAgIGJvb2wgY2hp
bGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlJikgY29uc3QgZmluYWw7Ci0gICAgdm9p
ZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5n
JikgZmluYWw7CisgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwg
Y29uc3QgQXRvbVN0cmluZyYpIGZpbmFsOwogCiAgICAgdm9pZCBkaWRFbGVtZW50U3RhdGVDaGFu
Z2UoKTsKICAgICB2b2lkIGRpZEFkZFVzZXJBZ2VudFNoYWRvd1Jvb3QoU2hhZG93Um9vdCYpIGZp
bmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTmFtZUNvbGxlY3Rpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTmFtZUNvbGxlY3Rpb24uY3BwCmluZGV4IGNi
OGExNWMyYzlhOGY1NDc1ZjFhMDA2YTA3ZGI0ZWUxY2NmOTdhMWMuLmFjYzFkYWM3ZjFhOGNhYmFj
YTI5ZjdmMjRjZWMwNzAwZTIzOGFjMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE5hbWVDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxOYW1l
Q29sbGVjdGlvbi5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgYm9vbCBXaW5kb3dOYW1lQ29sbGVjdGlv
bjo6ZWxlbWVudE1hdGNoZXNJZk5hbWVBdHRyaWJ1dGVNYXRjaChjb25zdCBFbGVtZW50JiBlbGUK
ICAgICAgICAgfHwgaXM8SFRNTE9iamVjdEVsZW1lbnQ+KGVsZW1lbnQpOwogfQogCi1ib29sIFdp
bmRvd05hbWVDb2xsZWN0aW9uOjplbGVtZW50TWF0Y2hlcyhjb25zdCBFbGVtZW50JiBlbGVtZW50
LCBjb25zdCBBdG9taWNTdHJpbmdJbXBsKiBuYW1lKQorYm9vbCBXaW5kb3dOYW1lQ29sbGVjdGlv
bjo6ZWxlbWVudE1hdGNoZXMoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgQXRvbVN0cmlu
Z0ltcGwqIG5hbWUpCiB7CiAgICAgLy8gRmluZCBvbmx5IGltYWdlcywgZm9ybXMsIGFwcGxldHMs
IGVtYmVkcyBhbmQgb2JqZWN0cyBieSBuYW1lLCBidXQgYW55dGhpbmcgYnkgaWQuCiAgICAgcmV0
dXJuIChlbGVtZW50TWF0Y2hlc0lmTmFtZUF0dHJpYnV0ZU1hdGNoKGVsZW1lbnQpICYmIGVsZW1l
bnQuZ2V0TmFtZUF0dHJpYnV0ZSgpLmltcGwoKSA9PSBuYW1lKQpAQCAtODEsNyArODEsNyBAQCBi
b29sIERvY3VtZW50TmFtZUNvbGxlY3Rpb246OmVsZW1lbnRNYXRjaGVzSWZOYW1lQXR0cmlidXRl
TWF0Y2goY29uc3QgRWxlbWVudCYgZQogICAgICAgICB8fCBpczxIVE1MSW1hZ2VFbGVtZW50Pihl
bGVtZW50KTsKIH0KIAotYm9vbCBEb2N1bWVudE5hbWVDb2xsZWN0aW9uOjplbGVtZW50TWF0Y2hl
cyhjb25zdCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBBdG9taWNTdHJpbmdJbXBsKiBuYW1lKQor
Ym9vbCBEb2N1bWVudE5hbWVDb2xsZWN0aW9uOjplbGVtZW50TWF0Y2hlcyhjb25zdCBFbGVtZW50
JiBlbGVtZW50LCBjb25zdCBBdG9tU3RyaW5nSW1wbCogbmFtZSkKIHsKICAgICAvLyBGaW5kIGlt
YWdlcywgZm9ybXMsIGFwcGxldHMsIGVtYmVkcywgb2JqZWN0cyBhbmQgaWZyYW1lcyBieSBuYW1l
LCBhcHBsZXRzIGFuZCBvYmplY3QgYnkgaWQsIGFuZCBpbWFnZXMgYnkgaWQKICAgICAvLyBidXQg
b25seSBpZiB0aGV5IGhhdmUgYSBuYW1lIGF0dHJpYnV0ZSAodGhpcyB2ZXJ5IHN0cmFuZ2UgcnVs
ZSBtYXRjaGVzIElFKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE5hbWVD
b2xsZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxOYW1lQ29sbGVjdGlvbi5oCmlu
ZGV4IDQ1ODg4OTk0MDA1NTFiOTIyYTRiMzFhNTZlOTMzNzNmNDg3YzljZTUuLjliNWFjNWNlZjg3
ZWVkYTNkM2RhYzliNmIxNGUyN2E3MDcyMzBkZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE5hbWVDb2xsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TmFtZUNvbGxlY3Rpb24uaApAQCAtMjUsNyArMjUsNyBAQAogI2luY2x1ZGUgIkNhY2hlZEhUTUxD
b2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiTm9kZVJhcmVEYXRhLmgiCiAjaW5jbHVkZSA8d3RmL0lz
b01hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00MCwx
MyArNDAsMTMgQEAgcHVibGljOgogICAgIERvY3VtZW50JiBkb2N1bWVudCgpIHsgcmV0dXJuIGRv
d25jYXN0PERvY3VtZW50Pih0aGlzLT5vd25lck5vZGUoKSk7IH0KIAogcHJvdGVjdGVkOgotICAg
IEhUTUxOYW1lQ29sbGVjdGlvbihEb2N1bWVudCYsIENvbGxlY3Rpb25UeXBlLCBjb25zdCBBdG9t
aWNTdHJpbmcmIG5hbWUpOworICAgIEhUTUxOYW1lQ29sbGVjdGlvbihEb2N1bWVudCYsIENvbGxl
Y3Rpb25UeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBuYW1lKTsKIAotICAgIEF0b21pY1N0cmluZyBt
X25hbWU7CisgICAgQXRvbVN0cmluZyBtX25hbWU7CiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
SFRNTENvbGxlY3Rpb25DbGFzcywgQ29sbGVjdGlvblRyYXZlcnNhbFR5cGUgdHJhdmVyc2FsVHlw
ZT4KLUhUTUxOYW1lQ29sbGVjdGlvbjxIVE1MQ29sbGVjdGlvbkNsYXNzLCB0cmF2ZXJzYWxUeXBl
Pjo6SFRNTE5hbWVDb2xsZWN0aW9uKERvY3VtZW50JiBkb2N1bWVudCwgQ29sbGVjdGlvblR5cGUg
dHlwZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQorSFRNTE5hbWVDb2xsZWN0aW9uPEhUTUxD
b2xsZWN0aW9uQ2xhc3MsIHRyYXZlcnNhbFR5cGU+OjpIVE1MTmFtZUNvbGxlY3Rpb24oRG9jdW1l
bnQmIGRvY3VtZW50LCBDb2xsZWN0aW9uVHlwZSB0eXBlLCBjb25zdCBBdG9tU3RyaW5nJiBuYW1l
KQogICAgIDogQ2FjaGVkSFRNTENvbGxlY3Rpb248SFRNTENvbGxlY3Rpb25DbGFzcywgdHJhdmVy
c2FsVHlwZT4oZG9jdW1lbnQsIHR5cGUpCiAgICAgLCBtX25hbWUobmFtZSkKIHsKQEAgLTYzLDcg
KzYzLDcgQEAgSFRNTE5hbWVDb2xsZWN0aW9uPEhUTUxDb2xsZWN0aW9uQ2xhc3MsIHRyYXZlcnNh
bFR5cGU+Ojp+SFRNTE5hbWVDb2xsZWN0aW9uKCkKIGNsYXNzIFdpbmRvd05hbWVDb2xsZWN0aW9u
IGZpbmFsIDogcHVibGljIEhUTUxOYW1lQ29sbGVjdGlvbjxXaW5kb3dOYW1lQ29sbGVjdGlvbiwg
Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRzPiB7CiAgICAgV1RGX01BS0VfSVNP
X0FMTE9DQVRFRChXaW5kb3dOYW1lQ29sbGVjdGlvbik7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxXaW5kb3dOYW1lQ29sbGVjdGlvbj4gY3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgQ29sbGVj
dGlvblR5cGUgdHlwZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQorICAgIHN0YXRpYyBSZWY8
V2luZG93TmFtZUNvbGxlY3Rpb24+IGNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIENvbGxlY3Rp
b25UeXBlIHR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIG5hbWUpCiAgICAgewogICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBXaW5kb3dOYW1lQ29sbGVjdGlvbihkb2N1bWVudCwgdHlwZSwgbmFt
ZSkpOwogICAgIH0KQEAgLTczLDEwICs3MywxMCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgYm9v
bCBlbGVtZW50TWF0Y2hlc0lmSWRBdHRyaWJ1dGVNYXRjaChjb25zdCBFbGVtZW50JikgeyByZXR1
cm4gdHJ1ZTsgfQogICAgIHN0YXRpYyBib29sIGVsZW1lbnRNYXRjaGVzSWZOYW1lQXR0cmlidXRl
TWF0Y2goY29uc3QgRWxlbWVudCYpOwotICAgIHN0YXRpYyBib29sIGVsZW1lbnRNYXRjaGVzKGNv
bnN0IEVsZW1lbnQmLCBjb25zdCBBdG9taWNTdHJpbmdJbXBsKik7CisgICAgc3RhdGljIGJvb2wg
ZWxlbWVudE1hdGNoZXMoY29uc3QgRWxlbWVudCYsIGNvbnN0IEF0b21TdHJpbmdJbXBsKik7CiAK
IHByaXZhdGU6Ci0gICAgV2luZG93TmFtZUNvbGxlY3Rpb24oRG9jdW1lbnQmIGRvY3VtZW50LCBD
b2xsZWN0aW9uVHlwZSB0eXBlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCisgICAgV2luZG93
TmFtZUNvbGxlY3Rpb24oRG9jdW1lbnQmIGRvY3VtZW50LCBDb2xsZWN0aW9uVHlwZSB0eXBlLCBj
b25zdCBBdG9tU3RyaW5nJiBuYW1lKQogICAgICAgICA6IEhUTUxOYW1lQ29sbGVjdGlvbjxXaW5k
b3dOYW1lQ29sbGVjdGlvbiwgQ29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRzPihk
b2N1bWVudCwgdHlwZSwgbmFtZSkKICAgICB7CiAgICAgICAgIEFTU0VSVCh0eXBlID09IFdpbmRv
d05hbWVkSXRlbXMpOwpAQCAtODYsNyArODYsNyBAQCBwcml2YXRlOgogY2xhc3MgRG9jdW1lbnRO
YW1lQ29sbGVjdGlvbiBmaW5hbCA6IHB1YmxpYyBIVE1MTmFtZUNvbGxlY3Rpb248RG9jdW1lbnRO
YW1lQ29sbGVjdGlvbiwgQ29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRzPiB7CiAg
ICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChEb2N1bWVudE5hbWVDb2xsZWN0aW9uKTsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPERvY3VtZW50TmFtZUNvbGxlY3Rpb24+IGNyZWF0ZShEb2N1bWVu
dCYgZG9jdW1lbnQsIENvbGxlY3Rpb25UeXBlIHR5cGUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZSkKKyAgICBzdGF0aWMgUmVmPERvY3VtZW50TmFtZUNvbGxlY3Rpb24+IGNyZWF0ZShEb2N1bWVu
dCYgZG9jdW1lbnQsIENvbGxlY3Rpb25UeXBlIHR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIG5hbWUp
CiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEb2N1bWVudE5hbWVDb2xsZWN0
aW9uKGRvY3VtZW50LCB0eXBlLCBuYW1lKSk7CiAgICAgfQpAQCAtOTcsMTAgKzk3LDEwIEBAIHB1
YmxpYzoKICAgICAvLyBGb3IgQ2FjaGVkSFRNTENvbGxlY3Rpb24uCiAgICAgYm9vbCBlbGVtZW50
TWF0Y2hlcyhjb25zdCBFbGVtZW50JiBlbGVtZW50KSBjb25zdCB7IHJldHVybiBlbGVtZW50TWF0
Y2hlcyhlbGVtZW50LCBtX25hbWUuaW1wbCgpKTsgfQogCi0gICAgc3RhdGljIGJvb2wgZWxlbWVu
dE1hdGNoZXMoY29uc3QgRWxlbWVudCYsIGNvbnN0IEF0b21pY1N0cmluZ0ltcGwqKTsKKyAgICBz
dGF0aWMgYm9vbCBlbGVtZW50TWF0Y2hlcyhjb25zdCBFbGVtZW50JiwgY29uc3QgQXRvbVN0cmlu
Z0ltcGwqKTsKIAogcHJpdmF0ZToKLSAgICBEb2N1bWVudE5hbWVDb2xsZWN0aW9uKERvY3VtZW50
JiBkb2N1bWVudCwgQ29sbGVjdGlvblR5cGUgdHlwZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
KQorICAgIERvY3VtZW50TmFtZUNvbGxlY3Rpb24oRG9jdW1lbnQmIGRvY3VtZW50LCBDb2xsZWN0
aW9uVHlwZSB0eXBlLCBjb25zdCBBdG9tU3RyaW5nJiBuYW1lKQogICAgICAgICA6IEhUTUxOYW1l
Q29sbGVjdGlvbjxEb2N1bWVudE5hbWVDb2xsZWN0aW9uLCBDb2xsZWN0aW9uVHJhdmVyc2FsVHlw
ZTo6RGVzY2VuZGFudHM+KGRvY3VtZW50LCB0eXBlLCBuYW1lKQogICAgIHsKICAgICAgICAgQVNT
RVJUKHR5cGUgPT0gRG9jdW1lbnROYW1lZEl0ZW1zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE9MaXN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxP
TGlzdEVsZW1lbnQuY3BwCmluZGV4IDRjZDg2NTllNTljNGFlZDBhMDhmM2U1OTYxYzVhZGNjNjRi
N2NlYmQuLmJlOGNiNWE5OGY4N2JhMzFiODY2MjNiNmNkYjAyNjhlM2MwZWM4MmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9MaXN0RWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MT0xpc3RFbGVtZW50LmNwcApAQCAtNjYsNyArNjYsNyBAQCBib29s
IEhUTUxPTGlzdEVsZW1lbnQ6OmlzUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIG5hbWUpIGNvbnN0CiAgICAgcmV0dXJuIEhUTUxFbGVtZW50Ojppc1ByZXNlbnRhdGlv
bkF0dHJpYnV0ZShuYW1lKTsKIH0KIAotdm9pZCBIVE1MT0xpc3RFbGVtZW50Ojpjb2xsZWN0U3R5
bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29u
c3QgQXRvbWljU3RyaW5nJiB2YWx1ZSwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYgc3R5bGUpCit2
b2lkIEhUTUxPTGlzdEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSwgTXV0
YWJsZVN0eWxlUHJvcGVydGllcyYgc3R5bGUpCiB7CiAgICAgaWYgKG5hbWUgPT0gdHlwZUF0dHIp
IHsKICAgICAgICAgaWYgKHZhbHVlID09ICJhIikKQEAgLTgzLDcgKzgzLDcgQEAgdm9pZCBIVE1M
T0xpc3RFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYKICAgICAgICAgSFRNTEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvclByZXNl
bnRhdGlvbkF0dHJpYnV0ZShuYW1lLCB2YWx1ZSwgc3R5bGUpOwogfQogCi12b2lkIEhUTUxPTGlz
dEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0
IEF0b21pY1N0cmluZyYgdmFsdWUpCit2b2lkIEhUTUxPTGlzdEVsZW1lbnQ6OnBhcnNlQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKQog
ewogICAgIGlmIChuYW1lID09IHN0YXJ0QXR0cikgewogICAgICAgICBpbnQgb2xkU3RhcnQgPSBz
dGFydCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT0xpc3RFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPTGlzdEVsZW1lbnQuaAppbmRleCA4MTNmNWUw
NjJkYjI1YjU0MzE5YWNkMzI1NTk5YjAwMGY5NTljOTU0Li5mMzA1Y2E1OWI5OTYxZDZlYzkyZDYy
NGExYTg4NjY0ODhmMDNjYmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxP
TGlzdEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPTGlzdEVsZW1lbnQu
aApAQCAtNDgsOSArNDgsOSBAQCBwcml2YXRlOgogICAgICAgICAKICAgICBXRUJDT1JFX0VYUE9S
VCB1bnNpZ25lZCBpdGVtQ291bnQoKSBjb25zdDsKIAotICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIGZpbmFsOworICAgIHZv
aWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcm
KSBmaW5hbDsKICAgICBib29sIGlzUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIGNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlv
bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiwgTXV0
YWJsZVN0eWxlUHJvcGVydGllcyYpIGZpbmFsOworICAgIHZvaWQgY29sbGVjdFN0eWxlRm9yUHJl
c2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5n
JiwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYpIGZpbmFsOwogCiAgICAgT3B0aW9uYWw8aW50PiBt
X3N0YXJ0OwogICAgIG11dGFibGUgT3B0aW9uYWw8dW5zaWduZWQ+IG1faXRlbUNvdW50OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAppbmRleCA3OTc3ODNiYTg2ZWNi
ZGI3YTBhY2UyYzZjYjM2NjVjNGVkNTJkNTY2Li4zMWVhOWMyZWQ2YTE3M2FmMDFjM2RhMGMyZWZm
MzhiZTJmOWQ5ODE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNw
cApAQCAtOTMsNyArOTMsNyBAQCBib29sIEhUTUxPYmplY3RFbGVtZW50Ojppc1ByZXNlbnRhdGlv
bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdAogICAgIHJldHVybiBI
VE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojppc1ByZXNlbnRhdGlvbkF0dHJpYnV0ZShuYW1lKTsKIH0K
IAotdm9pZCBIVE1MT2JqZWN0RWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFs
dWUsIE11dGFibGVTdHlsZVByb3BlcnRpZXMmIHN0eWxlKQordm9pZCBIVE1MT2JqZWN0RWxlbWVu
dDo6Y29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlLCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVz
JiBzdHlsZSkKIHsKICAgICBpZiAobmFtZSA9PSBib3JkZXJBdHRyKQogICAgICAgICBhcHBseUJv
cmRlckF0dHJpYnV0ZVRvU3R5bGUodmFsdWUsIHN0eWxlKTsKQEAgLTEwMSw3ICsxMDEsNyBAQCB2
b2lkIEhUTUxPYmplY3RFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZQogICAgICAgICBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojpj
b2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUobmFtZSwgdmFsdWUsIHN0eWxlKTsK
IH0KIAotdm9pZCBIVE1MT2JqZWN0RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKK3ZvaWQgSFRNTE9iamVj
dEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0
IEF0b21TdHJpbmcmIHZhbHVlKQogewogICAgIGJvb2wgaW52YWxpZGF0ZVJlbmRlcmVyID0gZmFs
c2U7CiAKQEAgLTE5MCw3ICsxOTAsNyBAQCB2b2lkIEhUTUxPYmplY3RFbGVtZW50OjpwYXJhbWV0
ZXJzRm9yUGx1Z2luKFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBWZWN0b3I8UwogICAgIC8v
IFR1cm4gdGhlIGF0dHJpYnV0ZXMgb2YgdGhlIDxvYmplY3Q+IGVsZW1lbnQgaW50byBhcnJheXMs
IGJ1dCBkb24ndCBvdmVycmlkZSA8cGFyYW0+IHZhbHVlcy4KICAgICBpZiAoaGFzQXR0cmlidXRl
cygpKSB7CiAgICAgICAgIGZvciAoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUgOiBhdHRyaWJ1
dGVzSXRlcmF0b3IoKSkgewotICAgICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lID0g
YXR0cmlidXRlLm5hbWUoKS5sb2NhbE5hbWUoKTsKKyAgICAgICAgICAgIGNvbnN0IEF0b21TdHJp
bmcmIG5hbWUgPSBhdHRyaWJ1dGUubmFtZSgpLmxvY2FsTmFtZSgpOwogICAgICAgICAgICAgaWYg
KCF1bmlxdWVQYXJhbU5hbWVzLmNvbnRhaW5zKG5hbWUuaW1wbCgpKSkgewogICAgICAgICAgICAg
ICAgIHBhcmFtTmFtZXMuYXBwZW5kKG5hbWUuc3RyaW5nKCkpOwogICAgICAgICAgICAgICAgIHBh
cmFtVmFsdWVzLmFwcGVuZChhdHRyaWJ1dGUudmFsdWUoKS5zdHJpbmcoKSk7CkBAIC0zMjQsNyAr
MzI0LDcgQEAgYm9vbCBIVE1MT2JqZWN0RWxlbWVudDo6aXNVUkxBdHRyaWJ1dGUoY29uc3QgQXR0
cmlidXRlJiBhdHRyaWJ1dGUpIGNvbnN0CiAgICAgcmV0dXJuIGF0dHJpYnV0ZS5uYW1lKCkgPT0g
ZGF0YUF0dHIgfHwgYXR0cmlidXRlLm5hbWUoKSA9PSBjb2RlYmFzZUF0dHIgfHwgKGF0dHJpYnV0
ZS5uYW1lKCkgPT0gdXNlbWFwQXR0ciAmJiBhdHRyaWJ1dGUudmFsdWUoKS5zdHJpbmcoKVswXSAh
PSAnIycpIHx8IEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmlzVVJMQXR0cmlidXRlKGF0dHJpYnV0
ZSk7CiB9CiAKLWNvbnN0IEF0b21pY1N0cmluZyYgSFRNTE9iamVjdEVsZW1lbnQ6OmltYWdlU291
cmNlVVJMKCkgY29uc3QKK2NvbnN0IEF0b21TdHJpbmcmIEhUTUxPYmplY3RFbGVtZW50OjppbWFn
ZVNvdXJjZVVSTCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24oZGF0YUF0dHIpOwogfQpAQCAtNDU3LDcgKzQ1Nyw3IEBAIHZvaWQgSFRNTE9iamVj
dEVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JiB1
cmxzKSBjb25zCiAKICAgICAvLyBGSVhNRTogUGFzc2luZyBhIHN0cmluZyB0aGF0IHN0YXJ0cyB3
aXRoICIjIiB0byB0aGUgY29tcGxldGVVUkwgZnVuY3Rpb24gZG9lcwogICAgIC8vIG5vdCBzZWVt
IGxpa2UgaXQgd291bGQgd29yay4gVGhlIGltYWdlIGVsZW1lbnQgaGFzIHNpbWlsYXIgYnV0IG5v
dCBpZGVudGljYWwgY29kZS4KLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIHVzZU1hcCA9IGF0dHJp
YnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24odXNlbWFwQXR0cik7CisgICAgY29uc3QgQXRvbVN0
cmluZyYgdXNlTWFwID0gYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih1c2VtYXBBdHRy
KTsKICAgICBpZiAodXNlTWFwLnN0YXJ0c1dpdGgoJyMnKSkKICAgICAgICAgYWRkU3VicmVzb3Vy
Y2VVUkwodXJscywgZG9jdW1lbnQoKS5jb21wbGV0ZVVSTCh1c2VNYXApKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaAppbmRleCBiYmJiYzg1OGE3M2NlOWJmNzQ2YjYz
NzAxOWJmNGU4YWQ0ZTVkOTEzLi4xZDZmMjg1MTExYTkyM2FiOTlkNjI0ZTQzMjg2MGMwMDEyNDEw
MTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oCkBAIC01OSw5ICs1
OSw5IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSFRNTE9iamVjdEVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIERvY3VtZW50JiwgSFRNTEZvcm1FbGVtZW50Kik7CiAKLSAgICB2b2lkIHBh
cnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBm
aW5hbDsKKyAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25z
dCBBdG9tU3RyaW5nJikgZmluYWw7CiAgICAgYm9vbCBpc1ByZXNlbnRhdGlvbkF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJikgY29uc3QgZmluYWw7Ci0gICAgdm9pZCBjb2xsZWN0U3R5bGVG
b3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21p
Y1N0cmluZyYsIE11dGFibGVTdHlsZVByb3BlcnRpZXMmKSBmaW5hbDsKKyAgICB2b2lkIGNvbGxl
Y3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29u
c3QgQXRvbVN0cmluZyYsIE11dGFibGVTdHlsZVByb3BlcnRpZXMmKSBmaW5hbDsKIAogICAgIElu
c2VydGVkSW50b0FuY2VzdG9yUmVzdWx0IGluc2VydGVkSW50b0FuY2VzdG9yKEluc2VydGlvblR5
cGUsIENvbnRhaW5lck5vZGUmKSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaEluc2VydGluZ05v
ZGUoKSBmaW5hbDsKQEAgLTcyLDcgKzcyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNoaWxkcmVu
Q2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYpIGZpbmFsOwogCiAgICAgYm9vbCBpc1VSTEF0dHJp
YnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBjb25zdCBmaW5hbDsKLSAgICBjb25zdCBBdG9taWNTdHJp
bmcmIGltYWdlU291cmNlVVJMKCkgY29uc3QgZmluYWw7CisgICAgY29uc3QgQXRvbVN0cmluZyYg
aW1hZ2VTb3VyY2VVUkwoKSBjb25zdCBmaW5hbDsKIAogICAgIFJlbmRlcldpZGdldCogcmVuZGVy
V2lkZ2V0TG9hZGluZ1BsdWdpbigpIGNvbnN0IGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MT3B0R3JvdXBFbGVtZW50LmNwcAppbmRleCA3Mzg3ZGQwMzIxYjg2MTQ1MWRlMTI1MjA0
YjQyYjFlYWMwMTJkMDIxLi45ZThjZmZkYjkxYTUxMDkwNDI4NDU5ZWZmZTg2NWE0OGUwN2Y0ODA4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5jcHAKQEAgLTY2
LDkgKzY2LDkgQEAgYm9vbCBIVE1MT3B0R3JvdXBFbGVtZW50Ojppc0ZvY3VzYWJsZSgpIGNvbnN0
CiAgICAgcmV0dXJuIHN0eWxlICYmIHN0eWxlLT5kaXNwbGF5KCkgIT0gRGlzcGxheVR5cGU6Ok5v
bmU7CiB9CiAKLWNvbnN0IEF0b21pY1N0cmluZyYgSFRNTE9wdEdyb3VwRWxlbWVudDo6Zm9ybUNv
bnRyb2xUeXBlKCkgY29uc3QKK2NvbnN0IEF0b21TdHJpbmcmIEhUTUxPcHRHcm91cEVsZW1lbnQ6
OmZvcm1Db250cm9sVHlwZSgpIGNvbnN0CiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNv
bnN0IEF0b21pY1N0cmluZz4gb3B0Z3JvdXAoIm9wdGdyb3VwIiwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21T
dHJpbmc+IG9wdGdyb3VwKCJvcHRncm91cCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKTsKICAgICByZXR1cm4gb3B0Z3JvdXA7CiB9CiAKQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBI
VE1MT3B0R3JvdXBFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmIGNo
YW5nZSkKICAgICBIVE1MRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZSk7CiB9CiAKLXZv
aWQgSFRNTE9wdEdyb3VwRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKK3ZvaWQgSFRNTE9wdEdyb3VwRWxl
bWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRv
bVN0cmluZyYgdmFsdWUpCiB7CiAgICAgSFRNTEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUs
IHZhbHVlKTsKICAgICByZWNhbGNTZWxlY3RPcHRpb25zKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE9wdEdyb3VwRWxlbWVudC5oCmluZGV4IDJmODhhNzNjZmQ3MTZhZjVkZDZkZWMxMGYwYzFi
YTE5OGI2NGY3YjAuLmEyMzNiMzUwNGRhM2UzNzdmNzk0Nzk4NTMzZGViNjlmZGM3ZDJhYTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5oCkBAIC00Miw5ICs0Miw5
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSFRNTE9wdEdyb3VwRWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUNv
bnRyb2xUeXBlKCkgY29uc3Q7CisgICAgY29uc3QgQXRvbVN0cmluZyYgZm9ybUNvbnRyb2xUeXBl
KCkgY29uc3Q7CiAgICAgYm9vbCBpc0ZvY3VzYWJsZSgpIGNvbnN0IGZpbmFsOwotICAgIHZvaWQg
cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYp
IGZpbmFsOworICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNv
bnN0IEF0b21TdHJpbmcmKSBmaW5hbDsKICAgICBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3Qg
UmVuZGVyU3R5bGUmKSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgdm9pZCBjaGlsZHJl
bkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MT3B0aW9uRWxlbWVudC5jcHAKaW5kZXggZGY5YjFkZDFlNTFkNjZmYjE3NjRiY2VhMzhlY2Iw
YWRhNTQ2MzlkZC4uYzNkZDMwZDVkYzYyYmY4MzE3MDllNTcwMDQ2ODhkNGE4OGIzZTJhNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKQEAgLTE2Miw3ICsxNjIs
NyBAQCBpbnQgSFRNTE9wdGlvbkVsZW1lbnQ6OmluZGV4KCkgY29uc3QKICAgICByZXR1cm4gMDsK
IH0KIAotdm9pZCBIVE1MT3B0aW9uRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKK3ZvaWQgSFRNTE9wdGlv
bkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0
IEF0b21TdHJpbmcmIHZhbHVlKQogewogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQogICAg
IGlmIChuYW1lID09IHZhbHVlQXR0cikgewpAQCAtMTk0LDcgKzE5NCw3IEBAIHZvaWQgSFRNTE9w
dGlvbkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNv
bnN0IEF0b21pY1N0CiAKIFN0cmluZyBIVE1MT3B0aW9uRWxlbWVudDo6dmFsdWUoKSBjb25zdAog
ewotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSBhdHRyaWJ1dGVXaXRob3V0U3luY2hy
b25pemF0aW9uKHZhbHVlQXR0cik7CisgICAgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUgPSBhdHRy
aWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHZhbHVlQXR0cik7CiAgICAgaWYgKCF2YWx1ZS5p
c051bGwoKSkKICAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgIHJldHVybiBzdHJpcExlYWRpbmdB
bmRUcmFpbGluZ0hUTUxTcGFjZXMoY29sbGVjdE9wdGlvbklubmVyVGV4dCgpKS5zaW1wbGlmeVdo
aXRlU3BhY2UoaXNIVE1MU3BhY2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MT3B0aW9uRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVu
dC5oCmluZGV4IDdiMjdmYmRlODM5NTNjNTE0NGQ1YzA4MTFjNGViN2U3YTdjMjMyMDEuLmYwZDk0
YzhhNmI1ZjMwODMzNGVhYTExZGE5ZTQwMjFiNWMwZTU3ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxPcHRpb25FbGVtZW50LmgKQEAgLTczLDcgKzczLDcgQEAgcHJpdmF0ZToKICAgICBib29s
IHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBmaW5hbCB7IHJldHVybiBmYWxz
ZTsgfQogICAgIGJvb2wgbWF0Y2hlc0RlZmF1bHRQc2V1ZG9DbGFzcygpIGNvbnN0IGZpbmFsOwog
Ci0gICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRv
bWljU3RyaW5nJikgZmluYWw7CisgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiwgY29uc3QgQXRvbVN0cmluZyYpIGZpbmFsOwogCiAgICAgSW5zZXJ0ZWRJbnRvQW5j
ZXN0b3JSZXN1bHQgaW5zZXJ0ZWRJbnRvQW5jZXN0b3IoSW5zZXJ0aW9uVHlwZSwgQ29udGFpbmVy
Tm9kZSYpIGZpbmFsOwogICAgIHZvaWQgYWNjZXNzS2V5QWN0aW9uKGJvb2wpIGZpbmFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmgKaW5kZXggYTNjMTFkNmI2
ZDAyNDFiYmQyMDQ2OTE5NjBkZWZlYzIzZjIwY2M0My4uNjc2NTJlOWI0OTRhNjNlMTJhNzdkZjlm
NWM1ZDE0YjQwZWM2MTE2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0
aW9uc0NvbGxlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29s
bGVjdGlvbi5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBIVE1MU2VsZWN0
RWxlbWVudCYgc2VsZWN0RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PEhUTUxTZWxl
Y3RFbGVtZW50Pihvd25lck5vZGUoKSk7IH0KIAogICAgIEhUTUxPcHRpb25FbGVtZW50KiBpdGVt
KHVuc2lnbmVkIG9mZnNldCkgY29uc3QgZmluYWw7Ci0gICAgSFRNTE9wdGlvbkVsZW1lbnQqIG5h
bWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0IGZpbmFsOworICAgIEhUTUxP
cHRpb25FbGVtZW50KiBuYW1lZEl0ZW0oY29uc3QgQXRvbVN0cmluZyYgbmFtZSkgY29uc3QgZmlu
YWw7CiAgICAgCiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0SXRlbSh1bnNpZ25lZCBpbmRleCwg
SFRNTE9wdGlvbkVsZW1lbnQqKTsKICAgICAKQEAgLTY2LDcgKzY2LDcgQEAgaW5saW5lIEhUTUxP
cHRpb25FbGVtZW50KiBIVE1MT3B0aW9uc0NvbGxlY3Rpb246Oml0ZW0odW5zaWduZWQgb2Zmc2V0
KSBjb25zdAogICAgIHJldHVybiBkb3duY2FzdDxIVE1MT3B0aW9uRWxlbWVudD4oQmFzZTo6aXRl
bShvZmZzZXQpKTsKIH0KIAotaW5saW5lIEhUTUxPcHRpb25FbGVtZW50KiBIVE1MT3B0aW9uc0Nv
bGxlY3Rpb246Om5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0Citpbmxp
bmUgSFRNTE9wdGlvbkVsZW1lbnQqIEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6bmFtZWRJdGVtKGNv
bnN0IEF0b21TdHJpbmcmIG5hbWUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxP
cHRpb25FbGVtZW50PihCYXNlOjpuYW1lZEl0ZW0obmFtZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxPdXRwdXRFbGVtZW50LmNwcAppbmRleCBmMzBkOWRhZmRjZTI5ZjllNDNmMzA1YmQ5
ZmY0MTE4NmYyMzI0YmQ4Li5kZDRmYTJkNzBlNGY0M2Y0MmI4MjIyZDM3ZDQ0MThmMWExMzFlZDg3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50LmNwcApAQCAtNTUsOSAr
NTUsOSBAQCBSZWY8SFRNTE91dHB1dEVsZW1lbnQ+IEhUTUxPdXRwdXRFbGVtZW50OjpjcmVhdGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRAogICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEhUTUxPdXRwdXRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBmb3JtKSk7CiB9CiAKLWNvbnN0
IEF0b21pY1N0cmluZyYgSFRNTE91dHB1dEVsZW1lbnQ6OmZvcm1Db250cm9sVHlwZSgpIGNvbnN0
Citjb25zdCBBdG9tU3RyaW5nJiBIVE1MT3V0cHV0RWxlbWVudDo6Zm9ybUNvbnRyb2xUeXBlKCkg
Y29uc3QKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBv
dXRwdXQoIm91dHB1dCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBvdXRwdXQoIm91dHB1dCIs
IEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gb3V0cHV0Owog
fQogCkBAIC02Niw3ICs2Niw3IEBAIGJvb2wgSFRNTE91dHB1dEVsZW1lbnQ6OnN1cHBvcnRzRm9j
dXMoKSBjb25zdAogICAgIHJldHVybiBIVE1MRWxlbWVudDo6c3VwcG9ydHNGb2N1cygpOwogfQog
Ci12b2lkIEhUTUxPdXRwdXRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQordm9pZCBIVE1MT3V0cHV0RWxl
bWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRv
bVN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKG5hbWUgPT0gZm9yQXR0cikgewogICAgICAgICBp
ZiAobV90b2tlbnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPdXRwdXRF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50LmgKaW5kZXgg
MGE3MmU0NWM0OWU4ODZiNDM4NmIwODZlNTk0NTU2NDM4YjJiYTg2Yy4uNTAzNGIwMjMxMzk2NjQ0
Y2RjMDQ3NGNkZGNjYjEwMzkwOThmNDBkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MT3V0cHV0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE91dHB1
dEVsZW1lbnQuaApAQCAtNTIsOCArNTIsOCBAQCBwcml2YXRlOgogICAgIEhUTUxPdXRwdXRFbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYsIEhUTUxGb3JtRWxlbWVudCopOwog
CiAgICAgYm9vbCBjb21wdXRlV2lsbFZhbGlkYXRlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFs
c2U7IH0KLSAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25z
dCBBdG9taWNTdHJpbmcmKSBmaW5hbDsKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGZvcm1Db250
cm9sVHlwZSgpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmKSBmaW5hbDsKKyAgICBjb25zdCBBdG9tU3Ry
aW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdCBmaW5hbDsKICAgICBib29sIGlzRW51bWVyYXRh
YmxlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIGJvb2wgc3VwcG9ydExhYmVs
cygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICBib29sIHN1cHBvcnRzRm9jdXMo
KSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBhcmFn
cmFwaEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGFyYWdyYXBoRWxlbWVu
dC5jcHAKaW5kZXggMDFjNmJhZTgxNzgwM2U2OWE3ZWFmNDAzMWQxM2QyM2YwZThlM2UzNy4uZWZh
OWQ3YWQxZTE0NDM5ZWFhMWVmNjJkYzYyYTgwNDE2NGIwZDhjNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MUGFyYWdyYXBoRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MUGFyYWdyYXBoRWxlbWVudC5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgUmVmPEhU
TUxQYXJhZ3JhcGhFbGVtZW50PiBIVE1MUGFyYWdyYXBoRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ04KICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBIVE1MUGFyYWdyYXBo
RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCi12b2lkIEhUTUxQYXJhZ3JhcGhFbGVt
ZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSwgTXV0YWJsZVN0eWxlUHJvcGVy
dGllcyYgc3R5bGUpCit2b2lkIEhUTUxQYXJhZ3JhcGhFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQ
cmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRv
bVN0cmluZyYgdmFsdWUsIE11dGFibGVTdHlsZVByb3BlcnRpZXMmIHN0eWxlKQogewogICAgIGlm
IChuYW1lID09IGFsaWduQXR0cikgewogICAgICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UodmFsdWUsICJtaWRkbGUiKSB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZSh2YWx1ZSwgImNlbnRlciIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
UGFyYWdyYXBoRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGFyYWdyYXBoRWxl
bWVudC5oCmluZGV4IGFkNzAxZDQ0NzcxMDg5YTJiNzBhYzEzYTNlMzZkOWRiMWY2NjEzODIuLmRj
M2FhOGI5NTQ4YTkwODdhYjhhMDdkYjc0N2U4ZjU1MjJhOGExY2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFBhcmFncmFwaEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxQYXJhZ3JhcGhFbGVtZW50LmgKQEAgLTM1LDcgKzM1LDcgQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICBIVE1MUGFyYWdyYXBoRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwg
RG9jdW1lbnQmKTsKIAotICAgIHZvaWQgY29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmLCBNdXRhYmxlU3R5
bGVQcm9wZXJ0aWVzJikgZmluYWw7CisgICAgdm9pZCBjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRp
b25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmLCBNdXRh
YmxlU3R5bGVQcm9wZXJ0aWVzJikgZmluYWw7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwCmluZGV4IDY1M2JiYWU0
ZmYzOGZlNTBhYjdjY2M2Y2RlODU3Y2Q4NjBhYTVkY2MuLjY1MzI0NjJiZmJlMTM1ODRhOWI2YWIy
ZGYzZjRiNmU0MDRmNTczMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBs
dWdJbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1l
bnQuY3BwCkBAIC0xNjUsNyArMTY1LDcgQEAgYm9vbCBIVE1MUGx1Z0luRWxlbWVudDo6aXNQcmVz
ZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKICAgICBy
ZXR1cm4gSFRNTEZyYW1lT3duZXJFbGVtZW50Ojppc1ByZXNlbnRhdGlvbkF0dHJpYnV0ZShuYW1l
KTsKIH0KIAotdm9pZCBIVE1MUGx1Z0luRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yUHJlc2VudGF0
aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgdmFsdWUsIE11dGFibGVTdHlsZVByb3BlcnRpZXMmIHN0eWxlKQordm9pZCBIVE1MUGx1Z0lu
RWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlLCBNdXRhYmxlU3R5bGVQcm9w
ZXJ0aWVzJiBzdHlsZSkKIHsKICAgICBpZiAobmFtZSA9PSB3aWR0aEF0dHIpCiAgICAgICAgIGFk
ZEhUTUxMZW5ndGhUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eVdpZHRoLCB2YWx1ZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmgKaW5kZXggYzQyYzBkM2YwY2Y0NzI1OGEx
MTJhNWVkZjU4ZGE2YmJhZWQ0MmZjNy4uNTdjNWMyMWRhYTU2YTgzYzg3MDlhYzFmODJlM2Q4NTAx
YmJhZGEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuaApAQCAtOTUs
NyArOTUsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2b2lkIHdpbGxEZXRhY2hSZW5kZXJlcnMoKSBv
dmVycmlkZTsKICAgICBib29sIGlzUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmKSBjb25zdCBvdmVycmlkZTsKLSAgICB2b2lkIGNvbGxlY3RTdHlsZUZvclByZXNlbnRh
dGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiwg
TXV0YWJsZVN0eWxlUHJvcGVydGllcyYpIG92ZXJyaWRlOworICAgIHZvaWQgY29sbGVjdFN0eWxl
Rm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9t
U3RyaW5nJiwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYpIG92ZXJyaWRlOwogCiAgICAgdmlydHVh
bCBib29sIHVzZUZhbGxiYWNrQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCmluZGV4IDMx
YWIxYzI3MjRlNWFhZTQzODEwNzI0NjM5ZDQxMGVhYWIxNTI1NTEuLjdmNjI4OWFjYmMxMDE5M2Zj
ZTg1ZDQ1YmQyZTM0NTllODZjMDRhOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
UGx1Z0luSW1hZ2VFbGVtZW50LmNwcApAQCAtNDE0LDcgKzQxNCw3IEBAIHZvaWQgSFRNTFBsdWdJ
bkltYWdlRWxlbWVudDo6ZGlkQWRkVXNlckFnZW50U2hhZG93Um9vdChTaGFkb3dSb290JiByb290
KQogCiBib29sIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnBhcnRPZlNuYXBzaG90T3ZlcmxheShj
b25zdCBFdmVudFRhcmdldCogdGFyZ2V0KSBjb25zdAogewotICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxBdG9taWNTdHJpbmc+IHNlbGVjdG9yKCIuc25hcHNob3Qtb3ZlcmxheSIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxB
dG9tU3RyaW5nPiBzZWxlY3RvcigiLnNuYXBzaG90LW92ZXJsYXkiLCBBdG9tU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgYXV0byBzaGFkb3cgPSB1c2VyQWdlbnRTaGFkb3dSb290
KCk7CiAgICAgaWYgKCFzaGFkb3cpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MUHJlRWxlbWVudC5jcHAKaW5kZXggNWNmMzE5ZGEwMDdlMzU2YmI3ODRkZWI2MzJh
ZmVmYjRjNDhmZTA0OS4uYzhiNGY3YWMzZDA4NDJhM2RkYjgwMDZhZDc1NTMxMzA3MjQxYTdiNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJlRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJlRWxlbWVudC5jcHAKQEAgLTUyLDcgKzUyLDcgQEAg
Ym9vbCBIVE1MUHJlRWxlbWVudDo6aXNQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgbmFtZSkgY29uc3QKICAgICByZXR1cm4gSFRNTEVsZW1lbnQ6OmlzUHJlc2VudGF0
aW9uQXR0cmlidXRlKG5hbWUpOwogfQogCi12b2lkIEhUTUxQcmVFbGVtZW50Ojpjb2xsZWN0U3R5
bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29u
c3QgQXRvbWljU3RyaW5nJiB2YWx1ZSwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYgc3R5bGUpCit2
b2lkIEhUTUxQcmVFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUsIE11dGFi
bGVTdHlsZVByb3BlcnRpZXMmIHN0eWxlKQogewogICAgIGlmIChuYW1lID09IHdyYXBBdHRyKQog
ICAgICAgICBzdHlsZS5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVdoaXRlU3BhY2UsIENTU1ZhbHVl
UHJlV3JhcCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcmVFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcmVFbGVtZW50LmgKaW5kZXggNzBkYjQ4MmNl
NjNkNzJmNmY4ZGE4ZGU2YzQ1OTE1Y2EwY2QyZjhmMi4uZGRjZGM1NmJiNjU5MjcxNGY3NWQ2MTRk
ODU3Y2M1NTU2YjkwZDc0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJl
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByZUVsZW1lbnQuaApAQCAt
MzUsNyArMzUsNyBAQCBwcml2YXRlOgogICAgIEhUTUxQcmVFbGVtZW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBEb2N1bWVudCYpOwogCiAgICAgYm9vbCBpc1ByZXNlbnRhdGlvbkF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJikgY29uc3QgZmluYWw7Ci0gICAgdm9pZCBjb2xsZWN0U3R5bGVG
b3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21p
Y1N0cmluZyYsIE11dGFibGVTdHlsZVByb3BlcnRpZXMmKSBmaW5hbDsKKyAgICB2b2lkIGNvbGxl
Y3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29u
c3QgQXRvbVN0cmluZyYsIE11dGFibGVTdHlsZVByb3BlcnRpZXMmKSBmaW5hbDsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFByb2dyZXNzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9ncmVzc0Vs
ZW1lbnQuY3BwCmluZGV4IGMyZTc1MGU5YTI3ODgyNGRlZDgzYzUyODM1OGEwYzlmOWZhMDQ4ZmEu
LjYzNDNhYmI1OWY2MDg0YmY0ZTQ4MDljMTcyNDM5NzkwZmFkOGNmZmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmNwcApAQCAtNzUsNyArNzUsNyBAQCBSZW5k
ZXJQcm9ncmVzcyogSFRNTFByb2dyZXNzRWxlbWVudDo6cmVuZGVyUHJvZ3Jlc3MoKSBjb25zdAog
ICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJQcm9ncmVzcz4oZGVzY2VuZGFudHNPZlR5cGU8RWxl
bWVudD4oKnVzZXJBZ2VudFNoYWRvd1Jvb3QoKSkuZmlyc3QoKS0+cmVuZGVyZXIoKSk7CiB9CiAK
LXZvaWQgSFRNTFByb2dyZXNzRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKK3ZvaWQgSFRNTFByb2dyZXNz
RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3Qg
QXRvbVN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKG5hbWUgPT0gdmFsdWVBdHRyKQogICAgICAg
ICBkaWRFbGVtZW50U3RhdGVDaGFuZ2UoKTsKQEAgLTk5LDcgKzk5LDcgQEAgZG91YmxlIEhUTUxQ
cm9ncmVzc0VsZW1lbnQ6OnZhbHVlKCkgY29uc3QKIAogdm9pZCBIVE1MUHJvZ3Jlc3NFbGVtZW50
OjpzZXRWYWx1ZShkb3VibGUgdmFsdWUpCiB7Ci0gICAgc2V0QXR0cmlidXRlV2l0aG91dFN5bmNo
cm9uaXphdGlvbih2YWx1ZUF0dHIsIEF0b21pY1N0cmluZzo6bnVtYmVyKHZhbHVlKSk7CisgICAg
c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih2YWx1ZUF0dHIsIEF0b21TdHJpbmc6
Om51bWJlcih2YWx1ZSkpOwogfQogCiBkb3VibGUgSFRNTFByb2dyZXNzRWxlbWVudDo6bWF4KCkg
Y29uc3QKQEAgLTExMSw3ICsxMTEsNyBAQCBkb3VibGUgSFRNTFByb2dyZXNzRWxlbWVudDo6bWF4
KCkgY29uc3QKIHZvaWQgSFRNTFByb2dyZXNzRWxlbWVudDo6c2V0TWF4KGRvdWJsZSBtYXgpCiB7
CiAgICAgaWYgKG1heCA+IDApCi0gICAgICAgIHNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6
YXRpb24obWF4QXR0ciwgQXRvbWljU3RyaW5nOjpudW1iZXIobWF4KSk7CisgICAgICAgIHNldEF0
dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24obWF4QXR0ciwgQXRvbVN0cmluZzo6bnVtYmVy
KG1heCkpOwogfQogCiBkb3VibGUgSFRNTFByb2dyZXNzRWxlbWVudDo6cG9zaXRpb24oKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuaAppbmRleCBkMWZhMDhj
NjlkNDY2MThlMGYyZjU1ODljMzUzYmE4MDJlNWNiMTUyLi40ZmIwZTdhM2MzOGM2ZTU4NGY1OTM0
M2NhNzE3OGE4ZmIwMTllZmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQ
cm9ncmVzc0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9ncmVzc0Vs
ZW1lbnQuaApAQCAtNTQsNyArNTQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgY2hpbGRTaG91bGRD
cmVhdGVSZW5kZXJlcihjb25zdCBOb2RlJikgY29uc3QgZmluYWw7CiAgICAgUmVuZGVyUHJvZ3Jl
c3MqIHJlbmRlclByb2dyZXNzKCkgY29uc3Q7CiAKLSAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lk
IHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5nJikg
ZmluYWw7CiAKICAgICB2b2lkIGRpZEF0dGFjaFJlbmRlcmVycygpIGZpbmFsOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwCmluZGV4IDYwNjEwOTg0MDI0YzE4ZGNj
ZWViMDJhNzhjMzgwZDk0NmZlZWFhNzQuLmY0MGQ1N2QyZmI0ZTMxZTZiODAwOTRhYjQ0Y2RlMTM4
N2U5MjRkMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwCkBA
IC02MSw3ICs2MSw3IEBAIHZvaWQgSFRNTFNjcmlwdEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChj
b25zdCBDaGlsZENoYW5nZSYgY2hhbmdlKQogICAgIFNjcmlwdEVsZW1lbnQ6OmNoaWxkcmVuQ2hh
bmdlZChjaGFuZ2UpOwogfQogCi12b2lkIEhUTUxTY3JpcHRFbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQor
dm9pZCBIVE1MU2NyaXB0RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKG5hbWUgPT0gc3Jj
QXR0cikKICAgICAgICAgaGFuZGxlU291cmNlQXR0cmlidXRlKHZhbHVlKTsKQEAgLTk5LDcgKzk5
LDcgQEAgYm9vbCBIVE1MU2NyaXB0RWxlbWVudDo6YXN5bmMoKSBjb25zdAogICAgIHJldHVybiBo
YXNBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGFzeW5jQXR0cikgfHwgZm9yY2VBc3lu
YygpOwogfQogCi12b2lkIEhUTUxTY3JpcHRFbGVtZW50OjpzZXRDcm9zc09yaWdpbihjb25zdCBB
dG9taWNTdHJpbmcmIHZhbHVlKQordm9pZCBIVE1MU2NyaXB0RWxlbWVudDo6c2V0Q3Jvc3NPcmln
aW4oY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCiB7CiAgICAgc2V0QXR0cmlidXRlV2l0aG91dFN5
bmNocm9uaXphdGlvbihjcm9zc29yaWdpbkF0dHIsIHZhbHVlKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFNjcmlwdEVsZW1lbnQuaAppbmRleCBiZDFlM2VkMmYyNWVkZTZkOTIzOTg3MTVkNzkx
NDc5M2ZkZTBmNTE2Li41ZmFlYzJjYzI3M2MwNjNjNTQ2N2RhNzdkZTc4NjA1NzdmYjBjM2JkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5oCkBAIC00MSw3ICs0MSw3IEBA
IHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEFzeW5jKGJvb2wpOwogICAgIFdF
QkNPUkVfRVhQT1JUIGJvb2wgYXN5bmMoKSBjb25zdDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0Q3Jvc3NPcmlnaW4oY29uc3QgQXRvbWljU3RyaW5nJik7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRDcm9zc09yaWdpbihjb25zdCBBdG9tU3RyaW5nJik7CiAgICAgV0VCQ09SRV9F
WFBPUlQgU3RyaW5nIGNyb3NzT3JpZ2luKCkgY29uc3Q7CiAKICAgICB1c2luZyBIVE1MRWxlbWVu
dDo6cmVmOwpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEhUTUxTY3Jp
cHRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYsIGJvb2wgd2FzSW5zZXJ0
ZWRCeVBhcnNlciwgYm9vbCBhbHJlYWR5U3RhcnRlZCk7CiAKLSAgICB2b2lkIHBhcnNlQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBmaW5hbDsKKyAg
ICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9tU3Ry
aW5nJikgZmluYWw7CiAgICAgSW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQgaW5zZXJ0ZWRJbnRv
QW5jZXN0b3IoSW5zZXJ0aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYpIGZpbmFsOwogICAgIHZvaWQg
ZGlkRmluaXNoSW5zZXJ0aW5nTm9kZSgpIGZpbmFsOwogICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2Vk
KGNvbnN0IENoaWxkQ2hhbmdlJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVj
dEVsZW1lbnQuY3BwCmluZGV4IDNlYTAxYzA3M2NmN2YxMzM5NWUyZTgyMzEyODFmY2ViY2JiNzYz
OWEuLjhiYTMwZjJiY2IyYTFjM2JiNGRlYzI5YWIwNmY5NTg5NDA0YmUwZGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCkBAIC05OCwxMCArOTgsMTAgQEAgdm9p
ZCBIVE1MU2VsZWN0RWxlbWVudDo6ZGlkUmVjYWxjU3R5bGUoU3R5bGU6OkNoYW5nZSBzdHlsZUNo
YW5nZSkKICAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpkaWRSZWNhbGNTdHlsZShzdHlsZUNo
YW5nZSk7CiB9CiAKLWNvbnN0IEF0b21pY1N0cmluZyYgSFRNTFNlbGVjdEVsZW1lbnQ6OmZvcm1D
b250cm9sVHlwZSgpIGNvbnN0Citjb25zdCBBdG9tU3RyaW5nJiBIVE1MU2VsZWN0RWxlbWVudDo6
Zm9ybUNvbnRyb2xUeXBlKCkgY29uc3QKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29u
c3QgQXRvbWljU3RyaW5nPiBzZWxlY3RNdWx0aXBsZSgic2VsZWN0LW11bHRpcGxlIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PGNvbnN0IEF0b21pY1N0cmluZz4gc2VsZWN0T25lKCJzZWxlY3Qtb25lIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0
IEF0b21TdHJpbmc+IHNlbGVjdE11bHRpcGxlKCJzZWxlY3QtbXVsdGlwbGUiLCBBdG9tU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0
IEF0b21TdHJpbmc+IHNlbGVjdE9uZSgic2VsZWN0LW9uZSIsIEF0b21TdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gbV9tdWx0aXBsZSA/IHNlbGVjdE11bHRpcGxlIDog
c2VsZWN0T25lOwogfQogCkBAIC0yODgsNyArMjg4LDcgQEAgYm9vbCBIVE1MU2VsZWN0RWxlbWVu
dDo6aXNQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29u
c3QKICAgICByZXR1cm4gSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZTo6aXNQcmVzZW50
YXRpb25BdHRyaWJ1dGUobmFtZSk7CiB9CiAKLXZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYg
dmFsdWUpCit2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAobmFt
ZSA9PSBzaXplQXR0cikgewogICAgICAgICB1bnNpZ25lZCBvbGRTaXplID0gbV9zaXplOwpAQCAt
NDA4LDcgKzQwOCw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnNldFNpemUodW5zaWduZWQg
c2l6ZSkKICAgICBzZXRVbnNpZ25lZEludGVncmFsQXR0cmlidXRlKHNpemVBdHRyLCBsaW1pdFRv
T25seUhUTUxOb25OZWdhdGl2ZShzaXplKSk7CiB9CiAKLUhUTUxPcHRpb25FbGVtZW50KiBIVE1M
U2VsZWN0RWxlbWVudDo6bmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKK0hUTUxP
cHRpb25FbGVtZW50KiBIVE1MU2VsZWN0RWxlbWVudDo6bmFtZWRJdGVtKGNvbnN0IEF0b21TdHJp
bmcmIG5hbWUpCiB7CiAgICAgcmV0dXJuIG9wdGlvbnMoKS0+bmFtZWRJdGVtKG5hbWUpOwogfQpA
QCAtMTAyNiw3ICsxMDI2LDcgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6cmVzdG9yZUZvcm1D
b250cm9sU3RhdGUoY29uc3QgRm9ybUNvbnRyb2xTdGF0ZSYgc3RhdGUpCiAgICAgdXBkYXRlVmFs
aWRpdHkoKTsKIH0KIAotdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6cGFyc2VNdWx0aXBsZUF0dHJp
YnV0ZShjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQordm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6
cGFyc2VNdWx0aXBsZUF0dHJpYnV0ZShjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBi
b29sIG9sZFVzZXNNZW51TGlzdCA9IHVzZXNNZW51TGlzdCgpOwogICAgIG1fbXVsdGlwbGUgPSAh
dmFsdWUuaXNOdWxsKCk7CkBAIC0xMDM3LDcgKzEwMzcsNyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVt
ZW50OjpwYXJzZU11bHRpcGxlQXR0cmlidXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiAK
IGJvb2wgSFRNTFNlbGVjdEVsZW1lbnQ6OmFwcGVuZEZvcm1EYXRhKERPTUZvcm1EYXRhJiBmb3Jt
RGF0YSwgYm9vbCkKIHsKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUgPSB0aGlzLT5uYW1l
KCk7CisgICAgY29uc3QgQXRvbVN0cmluZyYgbmFtZSA9IHRoaXMtPm5hbWUoKTsKICAgICBpZiAo
bmFtZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MU2VsZWN0RWxlbWVudC5oCmluZGV4IDRlY2EzOTYyNmQ5MWZhN2EzMmVhNzBjYTIxNzVl
NmE4ZjY1NzVkMjIuLmZiZTg4Nzc2ODgyZGNkMzg0NTZhYjhkNmRjYzQxNjYwY2YwMmViMWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmgKQEAgLTg0LDcgKzg0LDcgQEAg
cHVibGljOgogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldEl0ZW0odW5zaWduZWQgaW5kZXgsIEhU
TUxPcHRpb25FbGVtZW50Kik7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0TGVuZ3RoKHVuc2ln
bmVkKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIEhUTUxPcHRpb25FbGVtZW50KiBuYW1lZEl0ZW0o
Y29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBIVE1MT3B0aW9u
RWxlbWVudCogbmFtZWRJdGVtKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUpOwogICAgIFdFQkNPUkVf
RVhQT1JUIEhUTUxPcHRpb25FbGVtZW50KiBpdGVtKHVuc2lnbmVkIGluZGV4KTsKIAogICAgIHZv
aWQgc2Nyb2xsVG9TZWxlY3Rpb24oKTsKQEAgLTExMCw3ICsxMTAsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgSFRNTFNlbGVjdEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgSFRN
TEZvcm1FbGVtZW50Kik7CiAKIHByaXZhdGU6Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBmb3Jt
Q29udHJvbFR5cGUoKSBjb25zdCBmaW5hbDsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBmb3JtQ29u
dHJvbFR5cGUoKSBjb25zdCBmaW5hbDsKICAgICAKICAgICBib29sIGlzS2V5Ym9hcmRGb2N1c2Fi
bGUoS2V5Ym9hcmRFdmVudCopIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgaXNNb3VzZUZvY3VzYWJs
ZSgpIGNvbnN0IGZpbmFsOwpAQCAtMTI2LDcgKzEyNiw3IEBAIHByaXZhdGU6CiAgICAgRm9ybUNv
bnRyb2xTdGF0ZSBzYXZlRm9ybUNvbnRyb2xTdGF0ZSgpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQg
cmVzdG9yZUZvcm1Db250cm9sU3RhdGUoY29uc3QgRm9ybUNvbnRyb2xTdGF0ZSYpIGZpbmFsOwog
Ci0gICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRv
bWljU3RyaW5nJikgZmluYWw7CisgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiwgY29uc3QgQXRvbVN0cmluZyYpIGZpbmFsOwogICAgIGJvb2wgaXNQcmVzZW50YXRp
b25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IGZpbmFsOwogCiAgICAgYm9v
bCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUmKSBjb25zdCBmaW5hbDsKQEAg
LTE2Myw3ICsxNjMsNyBAQCBwcml2YXRlOgogICAgIHR5cGVkZWYgdW5zaWduZWQgU2VsZWN0T3B0
aW9uRmxhZ3M7CiAgICAgdm9pZCBzZWxlY3RPcHRpb24oaW50IG9wdGlvbkluZGV4LCBTZWxlY3RP
cHRpb25GbGFncyA9IDApOwogICAgIHZvaWQgZGVzZWxlY3RJdGVtc1dpdGhvdXRWYWxpZGF0aW9u
KEhUTUxFbGVtZW50KiBlbGVtZW50VG9FeGNsdWRlID0gbnVsbHB0cik7Ci0gICAgdm9pZCBwYXJz
ZU11bHRpcGxlQXR0cmlidXRlKGNvbnN0IEF0b21pY1N0cmluZyYpOworICAgIHZvaWQgcGFyc2VN
dWx0aXBsZUF0dHJpYnV0ZShjb25zdCBBdG9tU3RyaW5nJik7CiAgICAgaW50IGxhc3RTZWxlY3Rl
ZExpc3RJbmRleCgpIGNvbnN0OwogICAgIHZvaWQgdXBkYXRlU2VsZWN0ZWRTdGF0ZShpbnQgbGlz
dEluZGV4LCBib29sIG11bHRpLCBib29sIHNoaWZ0KTsKICAgICB2b2lkIG1lbnVMaXN0RGVmYXVs
dEV2ZW50SGFuZGxlcihFdmVudCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MU2xvdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2xvdEVsZW1lbnQu
Y3BwCmluZGV4IDgxOTA4NDY4MDI1OTZlNTgwZDRhNGIwMjNiNTAxMWZmMDFmZGFkMmIuLjdmNGZh
OGI5YTIxN2UzZDM5NjY0M2NkOTE1NjdmZmY0YTA5ZjA0OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFNsb3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxTbG90RWxlbWVudC5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgdm9pZCBIVE1MU2xvdEVsZW1l
bnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYgY2hpbGRDaGFuZ2UpCiAgICAg
fQogfQogCi12b2lkIEhUTUxTbG90RWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFs
aWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBBdG9t
aWNTdHJpbmcmIG5ld1ZhbHVlLCBBdHRyaWJ1dGVNb2RpZmljYXRpb25SZWFzb24gcmVhc29uKQor
dm9pZCBIVE1MU2xvdEVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0b21TdHJpbmcmIG5l
d1ZhbHVlLCBBdHRyaWJ1dGVNb2RpZmljYXRpb25SZWFzb24gcmVhc29uKQogewogICAgIEhUTUxF
bGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKG5hbWUsIG9sZFZhbHVlLCBuZXdWYWx1ZSwgcmVhc29u
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2xvdEVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNsb3RFbGVtZW50LmgKaW5kZXggZWY4YWVjYjU0ZDgz
ODc1ZTRhMzk0MTQ2MmUxYzUzZjRjOTAwZDViOC4uZmQzZGUwOWU3ZDAxZmIxNjYyN2M3N2ZiYTMy
ZWMxYTFiMjA5NWZhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2xvdEVs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTbG90RWxlbWVudC5oCkBAIC01
Myw3ICs1Myw3IEBAIHByaXZhdGU6CiAgICAgSW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQgaW5z
ZXJ0ZWRJbnRvQW5jZXN0b3IoSW5zZXJ0aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYpIGZpbmFsOwog
ICAgIHZvaWQgcmVtb3ZlZEZyb21BbmNlc3RvcihSZW1vdmFsVHlwZSwgQ29udGFpbmVyTm9kZSYp
IGZpbmFsOwogICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikgZmlu
YWw7Ci0gICAgdm9pZCBhdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25z
dCBBdG9taWNTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlLCBB
dHRyaWJ1dGVNb2RpZmljYXRpb25SZWFzb24pIGZpbmFsOworICAgIHZvaWQgYXR0cmlidXRlQ2hh
bmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbVN0cmluZyYgb2xkVmFsdWUsIGNv
bnN0IEF0b21TdHJpbmcmIG5ld1ZhbHVlLCBBdHRyaWJ1dGVNb2RpZmljYXRpb25SZWFzb24pIGZp
bmFsOwogCiAgICAgYm9vbCBtX2luU2lnbmFsU2xvdExpc3QgeyBmYWxzZSB9OwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNvdXJjZUVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MU291cmNlRWxlbWVudC5jcHAKaW5kZXggMjkxMTcyODNmYmE4ZWRi
MGIzNTJjYjFkN2FlZDQwMjE1YjI0ZDYyNC4uODhlYzVhNzZhNjBlY2JmNjBlY2QyMjU4MTFjYmYz
MzJmZTEyM2JjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU291cmNlRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU291cmNlRWxlbWVudC5jcHAK
QEAgLTE1NCw3ICsxNTQsNyBAQCB2b2lkIEhUTUxTb3VyY2VFbGVtZW50OjpzdG9wKCkKICAgICBj
YW5jZWxQZW5kaW5nRXJyb3JFdmVudCgpOwogfQogCi12b2lkIEhUTUxTb3VyY2VFbGVtZW50Ojpw
YXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJp
bmcmIHZhbHVlKQordm9pZCBIVE1MU291cmNlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCiB7CiAgICAgSFRN
TEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKICAgICBpZiAobmFtZSA9PSBz
cmNzZXRBdHRyIHx8IG5hbWUgPT0gc2l6ZXNBdHRyIHx8IG5hbWUgPT0gbWVkaWFBdHRyIHx8IG5h
bWUgPT0gdHlwZUF0dHIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNv
dXJjZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNvdXJjZUVsZW1lbnQuaApp
bmRleCA0ZjY0ODU0ZTI4YTJhOTUwZTg0YTIzZDc5ODljM2NhYjViNzc1YmJkLi5lMTIyNzMzZTZk
NDRkNmM0NWE4ZWQxNjk2NmQxYjcwOWU1YmJiMWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxTb3VyY2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
U291cmNlRWxlbWVudC5oCkBAIC01Nyw3ICs1Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXN1
bWUoKSBmaW5hbDsKICAgICB2b2lkIHN0b3AoKSBmaW5hbDsKIAotICAgIHZvaWQgcGFyc2VBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIGZpbmFsOwor
ICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21T
dHJpbmcmKSBmaW5hbDsKIAogICAgIHZvaWQgZXJyb3JFdmVudFRpbWVyRmlyZWQoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAKaW5kZXggZTUyOGM1OTU0Y2VhN2Qz
MWM2NzRjNGVmYWMyYzNiNDMwNzQ4MDQzYi4uNWViNjM3MTA5OWY5ZjZiYjBmNDE5N2E5ODFiMTRl
NmRkZThmMzE5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwCkBA
IC03Niw3ICs3Niw3IEBAIFJlZjxIVE1MU3R5bGVFbGVtZW50PiBIVE1MU3R5bGVFbGVtZW50Ojpj
cmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEhUTUxT
dHlsZUVsZW1lbnQoc3R5bGVUYWcsIGRvY3VtZW50LCBmYWxzZSkpOwogfQogCi12b2lkIEhUTUxT
dHlsZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNv
bnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCit2b2lkIEhUTUxTdHlsZUVsZW1lbnQ6OnBhcnNlQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVl
KQogewogICAgIGlmIChuYW1lID09IHRpdGxlQXR0ciAmJiBzaGVldCgpICYmICFpc0luU2hhZG93
VHJlZSgpKQogICAgICAgICBzaGVldCgpLT5zZXRUaXRsZSh2YWx1ZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFN0eWxlRWxlbWVudC5oCmluZGV4IGFmMDViNzE1ZjIwMTdiODVkZjhhMjBmYjYyMmIz
Mzk2OGRiNzBlYjguLmE1NTNlYTM1NjdiYWEzZDQzZjg1NmMyN2MzYWQzYTM3ZGI3Yjg2YzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5oCkBAIC01NCw3ICs1NCw3IEBAIHB1
YmxpYzoKIHByaXZhdGU6CiAgICAgSFRNTFN0eWxlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiwgRG9jdW1lbnQmLCBib29sIGNyZWF0ZWRCeVBhcnNlcik7CiAKLSAgICB2b2lkIHBhcnNlQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBmaW5hbDsK
KyAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9t
U3RyaW5nJikgZmluYWw7CiAgICAgSW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQgaW5zZXJ0ZWRJ
bnRvQW5jZXN0b3IoSW5zZXJ0aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYpIGZpbmFsOwogICAgIHZv
aWQgcmVtb3ZlZEZyb21BbmNlc3RvcihSZW1vdmFsVHlwZSwgQ29udGFpbmVyTm9kZSYpIGZpbmFs
OwogICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikgZmluYWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5jcHAKaW5kZXggZjA5OGQ1YWJm
Mzg1Yzk0ZDkxZGQ3ZjU5MGIxYWY0YWE4Mzc5NjM1Ny4uMTBiYzA5ZmYwOTljODg4YjIyNjI2OTM5
MGI4ZTFmOGJlNGNlMzk2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3Vt
bWFyeUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN1bW1hcnlFbGVt
ZW50LmNwcApAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgogICAgICAgICBkaWRDaGFuZ2VTbG90
KFNsb3RBc3NpZ25tZW50OjpkZWZhdWx0U2xvdE5hbWUoKSwgc2hhZG93Um9vdCk7CiAgICAgfQog
Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBzbG90TmFtZUZvckhvc3RDaGlsZChjb25zdCBOb2Rl
JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU2xvdEFzc2lnbm1lbnQ6OmRlZmF1bHRTbG90TmFt
ZSgpOyB9CisgICAgY29uc3QgQXRvbVN0cmluZyYgc2xvdE5hbWVGb3JIb3N0Q2hpbGQoY29uc3Qg
Tm9kZSYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFNsb3RBc3NpZ25tZW50OjpkZWZhdWx0U2xv
dE5hbWUoKTsgfQogfTsKIAogUmVmPEhUTUxTdW1tYXJ5RWxlbWVudD4gSFRNTFN1bW1hcnlFbGVt
ZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3Vt
ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDYXB0aW9uRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNhcHRpb25FbGVtZW50LmNw
cAppbmRleCAyMTBlMWE3M2EwNzgyZGU0YzFhMWMzNzUwNWM1YzIwNTdkZDRkNWE5Li45ZDk3ZTI4
NmE4YzFmMzgwMjEyMzU3YzJmMjhlZTE2YjBlZmNiNjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUYWJsZUNhcHRpb25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUYWJsZUNhcHRpb25FbGVtZW50LmNwcApAQCAtNDYsNyArNDYsNyBAQCBSZWY8
SFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQ+IEhUTUxUYWJsZUNhcHRpb25FbGVtZW50OjpjcmVhdGUo
Y29uc3QgUXVhbGlmaWVkTmFtZQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEhUTUxUYWJsZUNh
cHRpb25FbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKLXZvaWQgSFRNTFRhYmxlQ2Fw
dGlvbkVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlLCBNdXRhYmxlU3R5
bGVQcm9wZXJ0aWVzJiBzdHlsZSkKK3ZvaWQgSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQ6OmNvbGxl
Y3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1l
LCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYgc3R5bGUp
CiB7CiAgICAgaWYgKG5hbWUgPT0gYWxpZ25BdHRyKSB7CiAgICAgICAgIGlmICghdmFsdWUuaXNF
bXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDYXB0aW9u
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDYXB0aW9uRWxlbWVudC5o
CmluZGV4IDAwMjBlYTJmYTk1ZDRkN2Y2ZTQxNjUyZjU5OTg2YTE5MGI4YTJjMzYuLjgwMWNkZTBi
YjE2NTFlNDFhMGVjM2RhODZkOGNiMTFlZDk0NTNiZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUYWJsZUNhcHRpb25FbGVtZW50LmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICBIVE1MVGFibGVDYXB0aW9uRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiwgRG9jdW1lbnQmKTsKIAotICAgIHZvaWQgY29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmLCBNdXRhYmxl
U3R5bGVQcm9wZXJ0aWVzJikgZmluYWw7CisgICAgdm9pZCBjb2xsZWN0U3R5bGVGb3JQcmVzZW50
YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmLCBN
dXRhYmxlU3R5bGVQcm9wZXJ0aWVzJikgZmluYWw7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuY3BwCmluZGV4
IDFlMWViYjk5NDc1MGE1NDVhOTNiYTMzZmRjNWYxYmUwOGIzZDY5OTQuLjUyYTliNGZhNmE2N2Fl
YWYyNDRkMzFlODEyMGUxNGMwNGI0YjI5ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRhYmxlQ2VsbEVsZW1lbnQuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIGJvb2wgSFRNTFRhYmxlQ2Vs
bEVsZW1lbnQ6OmlzUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5h
bWUpIGNvCiAgICAgcmV0dXJuIEhUTUxUYWJsZVBhcnRFbGVtZW50Ojppc1ByZXNlbnRhdGlvbkF0
dHJpYnV0ZShuYW1lKTsKIH0KIAotdm9pZCBIVE1MVGFibGVDZWxsRWxlbWVudDo6Y29sbGVjdFN0
eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNv
bnN0IEF0b21pY1N0cmluZyYgdmFsdWUsIE11dGFibGVTdHlsZVByb3BlcnRpZXMmIHN0eWxlKQor
dm9pZCBIVE1MVGFibGVDZWxsRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVl
LCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJiBzdHlsZSkKIHsKICAgICBpZiAobmFtZSA9PSBub3dy
YXBBdHRyKQogICAgICAgICBhZGRQcm9wZXJ0eVRvUHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUo
c3R5bGUsIENTU1Byb3BlcnR5V2hpdGVTcGFjZSwgQ1NTVmFsdWVXZWJraXROb3dyYXApOwpAQCAt
MTE3LDcgKzExNyw3IEBAIHZvaWQgSFRNTFRhYmxlQ2VsbEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZv
clByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROCiAgICAgICAgIEhUTUxUYWJs
ZVBhcnRFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUobmFtZSwg
dmFsdWUsIHN0eWxlKTsKIH0KIAotdm9pZCBIVE1MVGFibGVDZWxsRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1
ZSkKK3ZvaWQgSFRNTFRhYmxlQ2VsbEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKQogewogICAgIGlmIChuYW1l
ID09IHJvd3NwYW5BdHRyKSB7CiAgICAgICAgIGlmIChpczxSZW5kZXJUYWJsZUNlbGw+KHJlbmRl
cmVyKCkpKQpAQCAtMTUzLDcgKzE1Myw3IEBAIFN0cmluZyBIVE1MVGFibGVDZWxsRWxlbWVudDo6
YXhpcygpIGNvbnN0CiAKIHZvaWQgSFRNTFRhYmxlQ2VsbEVsZW1lbnQ6OnNldENvbFNwYW4odW5z
aWduZWQgbikKIHsKLSAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGNvbHNw
YW5BdHRyLCBBdG9taWNTdHJpbmc6Om51bWJlcihsaW1pdFRvT25seUhUTUxOb25OZWdhdGl2ZShu
LCAxKSkpOworICAgIHNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oY29sc3BhbkF0
dHIsIEF0b21TdHJpbmc6Om51bWJlcihsaW1pdFRvT25seUhUTUxOb25OZWdhdGl2ZShuLCAxKSkp
OwogfQogCiBTdHJpbmcgSFRNTFRhYmxlQ2VsbEVsZW1lbnQ6OmhlYWRlcnMoKSBjb25zdApAQCAt
MTYzLDE4ICsxNjMsMTggQEAgU3RyaW5nIEhUTUxUYWJsZUNlbGxFbGVtZW50OjpoZWFkZXJzKCkg
Y29uc3QKIAogdm9pZCBIVE1MVGFibGVDZWxsRWxlbWVudDo6c2V0Um93U3BhbkZvckJpbmRpbmdz
KHVuc2lnbmVkIG4pCiB7Ci0gICAgc2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihy
b3dzcGFuQXR0ciwgQXRvbWljU3RyaW5nOjpudW1iZXIobGltaXRUb09ubHlIVE1MTm9uTmVnYXRp
dmUobiwgMSkpKTsKKyAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHJvd3Nw
YW5BdHRyLCBBdG9tU3RyaW5nOjpudW1iZXIobGltaXRUb09ubHlIVE1MTm9uTmVnYXRpdmUobiwg
MSkpKTsKIH0KIAotY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MVGFibGVDZWxsRWxlbWVudDo6c2Nv
cGUoKSBjb25zdAorY29uc3QgQXRvbVN0cmluZyYgSFRNTFRhYmxlQ2VsbEVsZW1lbnQ6OnNjb3Bl
KCkgY29uc3QKIHsKICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFn
ZS90YWJsZXMuaHRtbCNhdHRyLXRoLXNjb3BlCi0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNv
bnN0IEF0b21pY1N0cmluZz4gcm93KCJyb3ciLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBj
b2woImNvbCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IHJvd2dyb3VwKCJyb3dncm91cCIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGNvbGdyb3VwKCJjb2xncm91cCIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxj
b25zdCBBdG9tU3RyaW5nPiByb3coInJvdyIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gY29sKCJj
b2wiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHJvd2dyb3VwKCJyb3dncm91cCIsIEF0b21TdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29u
c3QgQXRvbVN0cmluZz4gY29sZ3JvdXAoImNvbGdyb3VwIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpOwogCi0gICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSA9IGF0dHJpYnV0
ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpzY29wZUF0dHIpOworICAgIGNvbnN0
IEF0b21TdHJpbmcmIHZhbHVlID0gYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1M
TmFtZXM6OnNjb3BlQXR0cik7CiAKICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZSh2YWx1
ZSwgcm93KSkKICAgICAgICAgcmV0dXJuIHJvdzsKQEAgLTE4Nyw3ICsxODcsNyBAQCBjb25zdCBB
dG9taWNTdHJpbmcmIEhUTUxUYWJsZUNlbGxFbGVtZW50OjpzY29wZSgpIGNvbnN0CiAgICAgcmV0
dXJuIGVtcHR5QXRvbSgpOwogfQogCi12b2lkIEhUTUxUYWJsZUNlbGxFbGVtZW50OjpzZXRTY29w
ZShjb25zdCBBdG9taWNTdHJpbmcmIHNjb3BlKQordm9pZCBIVE1MVGFibGVDZWxsRWxlbWVudDo6
c2V0U2NvcGUoY29uc3QgQXRvbVN0cmluZyYgc2NvcGUpCiB7CiAgICAgc2V0QXR0cmlidXRlV2l0
aG91dFN5bmNocm9uaXphdGlvbihzY29wZUF0dHIsIHNjb3BlKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuaAppbmRleCA4NDIzM2I1M2M4MWM2ZmVjODA0YzZl
MGU5NTY4NmIzZDNiZjc3ZjJkLi5mMDQ1MzkzMTNkYjc1NDI5ZGJlNzgzNDM3MzQ4ODVmOTQxNDhh
YjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5oCkBAIC00
NiwxNyArNDYsMTcgQEAgcHVibGljOgogICAgIFN0cmluZyBhYmJyKCkgY29uc3Q7CiAgICAgU3Ry
aW5nIGF4aXMoKSBjb25zdDsKICAgICBTdHJpbmcgaGVhZGVycygpIGNvbnN0OwotICAgIFdFQkNP
UkVfRVhQT1JUIGNvbnN0IEF0b21pY1N0cmluZyYgc2NvcGUoKSBjb25zdDsKLSAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldFNjb3BlKGNvbnN0IEF0b21pY1N0cmluZyYpOworICAgIFdFQkNPUkVf
RVhQT1JUIGNvbnN0IEF0b21TdHJpbmcmIHNjb3BlKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRTY29wZShjb25zdCBBdG9tU3RyaW5nJik7CiAKICAgICBXRUJDT1JFX0VYUE9S
VCBIVE1MVGFibGVDZWxsRWxlbWVudCogY2VsbEFib3ZlKCkgY29uc3Q7CiAKIHByaXZhdGU6CiAg
ICAgSFRNTFRhYmxlQ2VsbEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7
CiAKLSAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBB
dG9taWNTdHJpbmcmKSBvdmVycmlkZTsKKyAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc1By
ZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Qgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYsIE11dGFibGVTdHlsZVByb3BlcnRpZXMm
KSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbVN0cmluZyYsIE11dGFibGVTdHlsZVBy
b3BlcnRpZXMmKSBvdmVycmlkZTsKICAgICBjb25zdCBTdHlsZVByb3BlcnRpZXMqIGFkZGl0aW9u
YWxQcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgYm9v
bCBpc1VSTEF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBjb25zdCBvdmVycmlkZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ29sRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNvbEVsZW1lbnQuY3BwCmluZGV4IDIwOWZmNGVmZDM3
ZTE1YWUyNDNmYzRjMDc1YzI2MmYxOWI2ZjgwM2UuLjcyOGI1ZjNkMmI1NTIzYjA0YjM5OWYyY2M0
YjU1YWE0ZjhiMWZjNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxl
Q29sRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDb2xFbGVt
ZW50LmNwcApAQCAtNjEsNyArNjEsNyBAQCBib29sIEhUTUxUYWJsZUNvbEVsZW1lbnQ6OmlzUHJl
c2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbgogICAgIHJl
dHVybiBIVE1MVGFibGVQYXJ0RWxlbWVudDo6aXNQcmVzZW50YXRpb25BdHRyaWJ1dGUobmFtZSk7
CiB9CiAKLXZvaWQgSFRNTFRhYmxlQ29sRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yUHJlc2VudGF0
aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgdmFsdWUsIE11dGFibGVTdHlsZVByb3BlcnRpZXMmIHN0eWxlKQordm9pZCBIVE1MVGFibGVD
b2xFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUsIE11dGFibGVTdHlsZVBy
b3BlcnRpZXMmIHN0eWxlKQogewogICAgIGlmIChuYW1lID09IHdpZHRoQXR0cikKICAgICAgICAg
YWRkSFRNTExlbmd0aFRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5V2lkdGgsIHZhbHVlKTsKQEAg
LTY5LDcgKzY5LDcgQEAgdm9pZCBIVE1MVGFibGVDb2xFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQ
cmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmEKICAgICAgICAgSFRNTFRhYmxl
UGFydEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShuYW1lLCB2
YWx1ZSwgc3R5bGUpOwogfQogCi12b2lkIEhUTUxUYWJsZUNvbEVsZW1lbnQ6OnBhcnNlQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUp
Cit2b2lkIEhUTUxUYWJsZUNvbEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKQogewogICAgIGlmIChuYW1lID09
IHNwYW5BdHRyKSB7CiAgICAgICAgIG1fc3BhbiA9IGNsYW1wSFRNTE5vbk5lZ2F0aXZlSW50ZWdl
clRvUmFuZ2UodmFsdWUsIG1pblNwYW4sIG1heFNwYW4sIGRlZmF1bHRTcGFuKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ29sRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGFibGVDb2xFbGVtZW50LmgKaW5kZXggZGNmMDc0ZDRjYzAyNmNmZmNm
YzgzM2VlMzEyYmY3ZTIzZDYyMjE4OS4uMmY0ZjYzODJiNjRjNzQxNGE3MjgxMzE5NDk3MTMyOWRj
MjQ5YjQxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDb2xFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDb2xFbGVtZW50LmgKQEAg
LTQyLDkgKzQyLDkgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBIVE1MVGFibGVDb2xFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50Jik7CiAKLSAgICB2b2lkIHBh
cnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBm
aW5hbDsKKyAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25z
dCBBdG9tU3RyaW5nJikgZmluYWw7CiAgICAgYm9vbCBpc1ByZXNlbnRhdGlvbkF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJikgY29uc3QgZmluYWw7Ci0gICAgdm9pZCBjb2xsZWN0U3R5bGVG
b3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21p
Y1N0cmluZyYsIE11dGFibGVTdHlsZVByb3BlcnRpZXMmKSBmaW5hbDsKKyAgICB2b2lkIGNvbGxl
Y3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29u
c3QgQXRvbVN0cmluZyYsIE11dGFibGVTdHlsZVByb3BlcnRpZXMmKSBmaW5hbDsKICAgICBjb25z
dCBTdHlsZVByb3BlcnRpZXMqIGFkZGl0aW9uYWxQcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZSgp
IGNvbnN0IGZpbmFsOwogCiAgICAgdW5zaWduZWQgbV9zcGFuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRhYmxlRWxlbWVudC5jcHAKaW5kZXggYmU2ZWQwZmVhMWJhYjI2MjZlODAzNjk3NmI2MDc0
ZDU2MTQzNjRhOS4uMjM4YjlhOTQ5ZDdlOTkxNzljYjliODVjZjEzMDlhNjBiMGE3N2FiZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwCkBAIC0yNzgsNyArMjc4LDcg
QEAgc3RhdGljIGJvb2wgc2V0VGFibGVDZWxsc0NoYW5nZWQoRWxlbWVudCYgZWxlbWVudCkKICAg
ICByZXR1cm4gY2VsbENoYW5nZWQ7CiB9CiAKLXN0YXRpYyBib29sIGdldEJvcmRlcnNGcm9tRnJh
bWVBdHRyaWJ1dGVWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlLCBib29sJiBib3JkZXJU
b3AsIGJvb2wmIGJvcmRlclJpZ2h0LCBib29sJiBib3JkZXJCb3R0b20sIGJvb2wmIGJvcmRlckxl
ZnQpCitzdGF0aWMgYm9vbCBnZXRCb3JkZXJzRnJvbUZyYW1lQXR0cmlidXRlVmFsdWUoY29uc3Qg
QXRvbVN0cmluZyYgdmFsdWUsIGJvb2wmIGJvcmRlclRvcCwgYm9vbCYgYm9yZGVyUmlnaHQsIGJv
b2wmIGJvcmRlckJvdHRvbSwgYm9vbCYgYm9yZGVyTGVmdCkKIHsKICAgICBib3JkZXJUb3AgPSBm
YWxzZTsKICAgICBib3JkZXJSaWdodCA9IGZhbHNlOwpAQCAtMzA0LDcgKzMwNCw3IEBAIHN0YXRp
YyBib29sIGdldEJvcmRlcnNGcm9tRnJhbWVBdHRyaWJ1dGVWYWx1ZShjb25zdCBBdG9taWNTdHJp
bmcmIHZhbHVlLCBib29sJiBiCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgSFRNTFRhYmxl
RWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUsIE11dGFibGVTdHlsZVBy
b3BlcnRpZXMmIHN0eWxlKQordm9pZCBIVE1MVGFibGVFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQ
cmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRv
bVN0cmluZyYgdmFsdWUsIE11dGFibGVTdHlsZVByb3BlcnRpZXMmIHN0eWxlKQogewogICAgIGlm
IChuYW1lID09IHdpZHRoQXR0cikKICAgICAgICAgYWRkSFRNTExlbmd0aFRvU3R5bGUoc3R5bGUs
IENTU1Byb3BlcnR5V2lkdGgsIHZhbHVlKTsKQEAgLTM2OCw3ICszNjgsNyBAQCBib29sIEhUTUxU
YWJsZUVsZW1lbnQ6OmlzUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IG5hbWUpIGNvbnN0CiAgICAgcmV0dXJuIEhUTUxFbGVtZW50Ojppc1ByZXNlbnRhdGlvbkF0dHJp
YnV0ZShuYW1lKTsKIH0KIAotdm9pZCBIVE1MVGFibGVFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQordm9p
ZCBIVE1MVGFibGVFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBu
YW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBDZWxsQm9yZGVycyBib3JkZXJz
QmVmb3JlID0gY2VsbEJvcmRlcnMoKTsKICAgICB1bnNpZ25lZCBzaG9ydCBvbGRQYWRkaW5nID0g
bV9wYWRkaW5nOwpAQCAtNTY2LDEyICs1NjYsMTIgQEAgUmVmPEhUTUxDb2xsZWN0aW9uPiBIVE1M
VGFibGVFbGVtZW50Ojp0Qm9kaWVzKCkKICAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEoKS5lbnN1
cmVOb2RlTGlzdHMoKS5hZGRDYWNoZWRDb2xsZWN0aW9uPEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVj
dGlvbjxDb2xsZWN0aW9uVHlwZVRyYWl0czxUYWJsZVRCb2RpZXM+Ojp0cmF2ZXJzYWxUeXBlPj4o
KnRoaXMsIFRhYmxlVEJvZGllcyk7CiB9CiAKLWNvbnN0IEF0b21pY1N0cmluZyYgSFRNTFRhYmxl
RWxlbWVudDo6cnVsZXMoKSBjb25zdAorY29uc3QgQXRvbVN0cmluZyYgSFRNTFRhYmxlRWxlbWVu
dDo6cnVsZXMoKSBjb25zdAogewogICAgIHJldHVybiBhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25p
emF0aW9uKHJ1bGVzQXR0cik7CiB9CiAKLWNvbnN0IEF0b21pY1N0cmluZyYgSFRNTFRhYmxlRWxl
bWVudDo6c3VtbWFyeSgpIGNvbnN0Citjb25zdCBBdG9tU3RyaW5nJiBIVE1MVGFibGVFbGVtZW50
OjpzdW1tYXJ5KCkgY29uc3QKIHsKICAgICByZXR1cm4gYXR0cmlidXRlV2l0aG91dFN5bmNocm9u
aXphdGlvbihzdW1tYXJ5QXR0cik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUYWJsZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVu
dC5oCmluZGV4IGE3YjdmODFlZTRiY2YwNzFmODgyNWUzYmI2NzRkYzk1MjFlOTNjYTQuLmIzNjU0
MjA5YmRhODU3ODg1YzY5MzFjODFiNGVlM2Y5ODZmMzg0MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRhYmxlRWxlbWVudC5oCkBAIC02Miw4ICs2Miw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCBSZWY8SFRNTENvbGxlY3Rpb24+IHJvd3MoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBS
ZWY8SFRNTENvbGxlY3Rpb24+IHRCb2RpZXMoKTsKIAotICAgIGNvbnN0IEF0b21pY1N0cmluZyYg
cnVsZXMoKSBjb25zdDsKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIHN1bW1hcnkoKSBjb25zdDsK
KyAgICBjb25zdCBBdG9tU3RyaW5nJiBydWxlcygpIGNvbnN0OworICAgIGNvbnN0IEF0b21TdHJp
bmcmIHN1bW1hcnkoKSBjb25zdDsKIAogICAgIGNvbnN0IFN0eWxlUHJvcGVydGllcyogYWRkaXRp
b25hbENlbGxTdHlsZSgpOwogICAgIGNvbnN0IFN0eWxlUHJvcGVydGllcyogYWRkaXRpb25hbEdy
b3VwU3R5bGUoYm9vbCByb3dzKTsKQEAgLTcxLDkgKzcxLDkgQEAgcHVibGljOgogcHJpdmF0ZToK
ICAgICBIVE1MVGFibGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwog
Ci0gICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRv
bWljU3RyaW5nJikgZmluYWw7CisgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiwgY29uc3QgQXRvbVN0cmluZyYpIGZpbmFsOwogICAgIGJvb2wgaXNQcmVzZW50YXRp
b25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IGZpbmFsOwotICAgIHZvaWQg
Y29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBjb25zdCBBdG9taWNTdHJpbmcmLCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJikgZmluYWw7Cisg
ICAgdm9pZCBjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmLCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJikgZmlu
YWw7CiAgICAgYm9vbCBpc1VSTEF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBjb25zdCBmaW5h
bDsKIAogICAgIC8vIFVzZWQgdG8gb2J0YWluIGVpdGhlciBhIHNvbGlkIG9yIG91dHNldCBib3Jk
ZXIgZGVjbCBhbmQgdG8gZGVhbCB3aXRoIHRoZSBmcmFtZSBhbmQgcnVsZXMgYXR0cmlidXRlcy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUGFydEVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVQYXJ0RWxlbWVudC5jcHAKaW5kZXggM2Jm
MmFhYzhiZGZhYmI2YjI3NzYxYzg1MTFkNDQ0MTlkZTRjNzdmMi4uMzU4NzgwMTYyMTBmY2FhZmY2
MDkwZTY5NTM5NDE1NWM0NTVhZWE3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVGFibGVQYXJ0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFi
bGVQYXJ0RWxlbWVudC5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgYm9vbCBIVE1MVGFibGVQYXJ0RWxl
bWVudDo6aXNQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkg
Y28KICAgICByZXR1cm4gSFRNTEVsZW1lbnQ6OmlzUHJlc2VudGF0aW9uQXR0cmlidXRlKG5hbWUp
OwogfQogCi12b2lkIEhUTUxUYWJsZVBhcnRFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50
YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3Ry
aW5nJiB2YWx1ZSwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYgc3R5bGUpCit2b2lkIEhUTUxUYWJs
ZVBhcnRFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUsIE11dGFibGVTdHls
ZVByb3BlcnRpZXMmIHN0eWxlKQogewogICAgIGlmIChuYW1lID09IGJnY29sb3JBdHRyKQogICAg
ICAgICBhZGRIVE1MQ29sb3JUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xv
ciwgdmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVQYXJ0
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVQYXJ0RWxlbWVudC5oCmlu
ZGV4IDE5NGZjNWRmZDQ1MDBiNWE0OTdlZmE0MjQ5YjIzMjI0NThiYmVhN2MuLmQzYmNmNTBiYWUy
MWMzNThjZGUyM2YzMzYzZTVjNjkyZDU2ZjExZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRhYmxlUGFydEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUYWJsZVBhcnRFbGVtZW50LmgKQEAgLTQwLDcgKzQwLDcgQEAgcHJvdGVjdGVkOgogICAgIH0K
IAogICAgIGJvb2wgaXNQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYp
IGNvbnN0IG92ZXJyaWRlOwotICAgIHZvaWQgY29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmLCBNdXRhYmxl
U3R5bGVQcm9wZXJ0aWVzJikgb3ZlcnJpZGU7CisgICAgdm9pZCBjb2xsZWN0U3R5bGVGb3JQcmVz
ZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcm
LCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJikgb3ZlcnJpZGU7CiAKICAgICBSZWZQdHI8SFRNTFRh
YmxlRWxlbWVudD4gZmluZFBhcmVudFRhYmxlKCkgY29uc3Q7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKaW5kZXggODZhZGVlZjc3OGRhMGQ4OGYzODNh
N2I0MWM5Y2NhOWJiY2ZlOTk3OC4uMTI1ZmRkMzE5OTI2NmE2MzE1ZjUxNWZhMWI0ZWEwYjQyMzc3
NDEzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCkBA
IC0xMDksOSArMTA5LDkgQEAgdm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50OjpkaWRBZGRVc2VyQWdl
bnRTaGFkb3dSb290KFNoYWRvd1Jvb3QmIHJvb3QpCiAgICAgdXBkYXRlSW5uZXJUZXh0RWxlbWVu
dEVkaXRhYmlsaXR5KCk7CiB9CiAKLWNvbnN0IEF0b21pY1N0cmluZyYgSFRNTFRleHRBcmVhRWxl
bWVudDo6Zm9ybUNvbnRyb2xUeXBlKCkgY29uc3QKK2NvbnN0IEF0b21TdHJpbmcmIEhUTUxUZXh0
QXJlYUVsZW1lbnQ6OmZvcm1Db250cm9sVHlwZSgpIGNvbnN0CiB7Ci0gICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gdGV4dGFyZWEoInRleHRhcmVhIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PGNvbnN0IEF0b21TdHJpbmc+IHRleHRhcmVhKCJ0ZXh0YXJlYSIsIEF0b21TdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gdGV4dGFyZWE7CiB9CiAKQEAgLTE0OCw3ICsx
NDgsNyBAQCBib29sIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OmlzUHJlc2VudGF0aW9uQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbgogICAgIHJldHVybiBIVE1MVGV4dEZvcm1D
b250cm9sRWxlbWVudDo6aXNQcmVzZW50YXRpb25BdHRyaWJ1dGUobmFtZSk7CiB9CiAKLXZvaWQg
SFRNTFRleHRBcmVhRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUsIE11
dGFibGVTdHlsZVByb3BlcnRpZXMmIHN0eWxlKQordm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50Ojpj
b2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
bmFtZSwgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUsIE11dGFibGVTdHlsZVByb3BlcnRpZXMmIHN0
eWxlKQogewogICAgIGlmIChuYW1lID09IHdyYXBBdHRyKSB7CiAgICAgICAgIGlmIChzaG91bGRX
cmFwVGV4dCgpKSB7CkBAIC0xNjIsNyArMTYyLDcgQEAgdm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50
Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmEK
ICAgICAgICAgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvclByZXNl
bnRhdGlvbkF0dHJpYnV0ZShuYW1lLCB2YWx1ZSwgc3R5bGUpOwogfQogCi12b2lkIEhUTUxUZXh0
QXJlYUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNv
bnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCit2b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZh
bHVlKQogewogICAgIGlmIChuYW1lID09IHJvd3NBdHRyKSB7CiAgICAgICAgIHVuc2lnbmVkIHJv
d3MgPSBsaW1pdFRvT25seUhUTUxOb25OZWdhdGl2ZU51bWJlcnNHcmVhdGVyVGhhblplcm8odmFs
dWUsIGRlZmF1bHRSb3dzKTsKQEAgLTIwMSwxMyArMjAxLDEzIEBAIHZvaWQgSFRNTFRleHRBcmVh
RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3Qg
QXRvbWljCiAgICAgICAgIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZShuYW1lLCB2YWx1ZSk7CiB9CiAKLXZvaWQgSFRNTFRleHRBcmVhRWxlbWVudDo6bWF4TGVuZ3Ro
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlKQordm9pZCBIVE1M
VGV4dEFyZWFFbGVtZW50OjptYXhMZW5ndGhBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IEF0b21TdHJp
bmcmIG5ld1ZhbHVlKQogewogICAgIGludGVybmFsU2V0TWF4TGVuZ3RoKHBhcnNlSFRNTE5vbk5l
Z2F0aXZlSW50ZWdlcihuZXdWYWx1ZSkudmFsdWVfb3IoLTEpKTsKICAgICB1cGRhdGVWYWxpZGl0
eSgpOwogfQogCi12b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6Om1pbkxlbmd0aEF0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSkKK3ZvaWQgSFRNTFRleHRBcmVhRWxl
bWVudDo6bWluTGVuZ3RoQXR0cmlidXRlQ2hhbmdlZChjb25zdCBBdG9tU3RyaW5nJiBuZXdWYWx1
ZSkKIHsKICAgICBpbnRlcm5hbFNldE1pbkxlbmd0aChwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVn
ZXIobmV3VmFsdWUpLnZhbHVlX29yKC0xKSk7CiAgICAgdXBkYXRlVmFsaWRpdHkoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmgKaW5kZXggYTUyYmM2Mjg1MWI1MGEz
Y2M1NGU5ZTcyNDhjMGQ5NWFhYTVlZTlhMy4uMDFkYTY5NDI3ZGM1OWI0ZjFhMWFiMjBmNzdmZjQw
ZWUwYjIzOWZmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmgK
QEAgLTc0LDggKzc0LDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlkQWRkVXNlckFnZW50U2hh
ZG93Um9vdChTaGFkb3dSb290JikgZmluYWw7CiAKLSAgICB2b2lkIG1heExlbmd0aEF0dHJpYnV0
ZUNoYW5nZWQoY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSk7Ci0gICAgdm9pZCBtaW5MZW5n
dGhBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUpOworICAgIHZv
aWQgbWF4TGVuZ3RoQXR0cmlidXRlQ2hhbmdlZChjb25zdCBBdG9tU3RyaW5nJiBuZXdWYWx1ZSk7
CisgICAgdm9pZCBtaW5MZW5ndGhBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IEF0b21TdHJpbmcmIG5l
d1ZhbHVlKTsKIAogICAgIHZvaWQgaGFuZGxlQmVmb3JlVGV4dEluc2VydGVkRXZlbnQoQmVmb3Jl
VGV4dEluc2VydGVkRXZlbnQmKSBjb25zdDsKICAgICBzdGF0aWMgU3RyaW5nIHNhbml0aXplVXNl
cklucHV0VmFsdWUoY29uc3QgU3RyaW5nJiwgdW5zaWduZWQgbWF4TGVuZ3RoKTsKQEAgLTk4LDcg
Kzk4LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzRW51bWVyYXRhYmxlKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gdHJ1ZTsgfQogICAgIGJvb2wgc3VwcG9ydExhYmVscygpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIHRydWU7IH0KIAotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUNvbnRyb2xUeXBl
KCkgY29uc3QgZmluYWw7CisgICAgY29uc3QgQXRvbVN0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkg
Y29uc3QgZmluYWw7CiAKICAgICBGb3JtQ29udHJvbFN0YXRlIHNhdmVGb3JtQ29udHJvbFN0YXRl
KCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCByZXN0b3JlRm9ybUNvbnRyb2xTdGF0ZShjb25zdCBG
b3JtQ29udHJvbFN0YXRlJikgZmluYWw7CkBAIC0xMDYsOSArMTA2LDkgQEAgcHJpdmF0ZToKICAg
ICBib29sIGlzVGV4dEZpZWxkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAg
dm9pZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKSBmaW5hbDsKLSAgICB2b2lk
IHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcm
KSBmaW5hbDsKKyAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBj
b25zdCBBdG9tU3RyaW5nJikgZmluYWw7CiAgICAgYm9vbCBpc1ByZXNlbnRhdGlvbkF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3QgZmluYWw7Ci0gICAgdm9pZCBjb2xsZWN0U3R5
bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0
b21pY1N0cmluZyYsIE11dGFibGVTdHlsZVByb3BlcnRpZXMmKSBmaW5hbDsKKyAgICB2b2lkIGNv
bGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwg
Y29uc3QgQXRvbVN0cmluZyYsIE11dGFibGVTdHlsZVByb3BlcnRpZXMmKSBmaW5hbDsKICAgICBS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxl
JiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIGZpbmFsOwogICAgIGJvb2wgYXBwZW5kRm9y
bURhdGEoRE9NRm9ybURhdGEmLCBib29sKSBmaW5hbDsKICAgICB2b2lkIHJlc2V0KCkgZmluYWw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQu
Y3BwCmluZGV4IDgxMzY5MzNhZDU1NGM1YTFmN2UwYzZjYTc4NzlkOTY1ZWZjM2RjYTkuLjk3MjJm
ZjBlN2QzOTAxMjY1NjAwMDVlMzUxNWExYjhiODFlYTk5OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCkBAIC0xMzAsNyArMTMw
LDcgQEAgU3RyaW5nIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpzdHJpcHBlZFBsYWNlaG9s
ZGVyKCkgY29uc3QKIHsKICAgICAvLyBBY2NvcmRpbmcgdG8gdGhlIEhUTUw1IHNwZWNpZmljYXRp
b24sIHdlIG5lZWQgdG8gcmVtb3ZlIENSIGFuZCBMRiBmcm9tCiAgICAgLy8gdGhlIGF0dHJpYnV0
ZSB2YWx1ZS4KLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVZhbHVlID0gYXR0cmli
dXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihwbGFjZWhvbGRlckF0dHIpOworICAgIGNvbnN0IEF0
b21TdHJpbmcmIGF0dHJpYnV0ZVZhbHVlID0gYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlv
bihwbGFjZWhvbGRlckF0dHIpOwogICAgIGlmICghYXR0cmlidXRlVmFsdWUuY29udGFpbnMobmV3
bGluZUNoYXJhY3RlcikgJiYgIWF0dHJpYnV0ZVZhbHVlLmNvbnRhaW5zKGNhcnJpYWdlUmV0dXJu
KSkKICAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZVZhbHVlOwogCkBAIC0xNTAsNyArMTUwLDcgQEAg
c3RhdGljIGJvb2wgaXNOb3RMaW5lQnJlYWsoVUNoYXIgY2gpIHsgcmV0dXJuIGNoICE9IG5ld2xp
bmVDaGFyYWN0ZXIgJiYgY2ggIT0gY2EKIAogYm9vbCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVu
dDo6aXNQbGFjZWhvbGRlckVtcHR5KCkgY29uc3QKIHsKLSAgICBjb25zdCBBdG9taWNTdHJpbmcm
IGF0dHJpYnV0ZVZhbHVlID0gYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihwbGFjZWhv
bGRlckF0dHIpOworICAgIGNvbnN0IEF0b21TdHJpbmcmIGF0dHJpYnV0ZVZhbHVlID0gYXR0cmli
dXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihwbGFjZWhvbGRlckF0dHIpOwogICAgIHJldHVybiBh
dHRyaWJ1dGVWYWx1ZS5zdHJpbmcoKS5maW5kKGlzTm90TGluZUJyZWFrKSA9PSBub3RGb3VuZDsK
IH0KIApAQCAtMzc2LDExICszNzYsMTEgQEAgaW50IEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50
Ojpjb21wdXRlU2VsZWN0aW9uRW5kKCkgY29uc3QKICAgICByZXR1cm4gaW5kZXhGb3JQb3NpdGlv
bihmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuZW5kKCkpOwogfQogCi1zdGF0aWMgY29u
c3QgQXRvbWljU3RyaW5nJiBkaXJlY3Rpb25TdHJpbmcoVGV4dEZpZWxkU2VsZWN0aW9uRGlyZWN0
aW9uIGRpcmVjdGlvbikKK3N0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBkaXJlY3Rpb25TdHJpbmco
VGV4dEZpZWxkU2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKLSAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBub25lKCJub25lIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0
IEF0b21pY1N0cmluZz4gZm9yd2FyZCgiZm9yd2FyZCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpOwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJp
bmc+IGJhY2t3YXJkKCJiYWNrd2FyZCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBub25lKCJu
b25lIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBmb3J3YXJkKCJmb3J3YXJkIiwgQXRvbVN0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25z
dCBBdG9tU3RyaW5nPiBiYWNrd2FyZCgiYmFja3dhcmQiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCk7CiAKICAgICBzd2l0Y2ggKGRpcmVjdGlvbikgewogICAgIGNhc2UgU2VsZWN0
aW9uSGFzTm9EaXJlY3Rpb246CkBAIC0zOTUsNyArMzk1LDcgQEAgc3RhdGljIGNvbnN0IEF0b21p
Y1N0cmluZyYgZGlyZWN0aW9uU3RyaW5nKFRleHRGaWVsZFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJl
Y3Rpb24KICAgICByZXR1cm4gbm9uZTsKIH0KIAotY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MVGV4
dEZvcm1Db250cm9sRWxlbWVudDo6c2VsZWN0aW9uRGlyZWN0aW9uKCkgY29uc3QKK2NvbnN0IEF0
b21TdHJpbmcmIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpzZWxlY3Rpb25EaXJlY3Rpb24o
KSBjb25zdAogewogICAgIGlmICghaXNUZXh0RmllbGQoKSkKICAgICAgICAgcmV0dXJuIGRpcmVj
dGlvblN0cmluZyhTZWxlY3Rpb25IYXNOb0RpcmVjdGlvbik7CkBAIC00ODYsNyArNDg2LDcgQEAg
dm9pZCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6c2VsZWN0aW9uQ2hhbmdlZChib29sIHNo
b3VsZEZpcmVTZWxlY3RFdmVudCkKICAgICAgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRl
KGV2ZW50TmFtZXMoKS5zZWxlY3RFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6WWVzLCBFdmVudDo6
SXNDYW5jZWxhYmxlOjpObykpOwogfQogCi12b2lkIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNT
dHJpbmcmIHZhbHVlKQordm9pZCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUp
CiB7CiAgICAgaWYgKG5hbWUgPT0gcGxhY2Vob2xkZXJBdHRyKSB7CiAgICAgICAgIHVwZGF0ZVBs
YWNlaG9sZGVyVGV4dCgpOwpAQCAtNTE1LDcgKzUxNSw3IEBAIGJvb2wgSFRNTFRleHRGb3JtQ29u
dHJvbEVsZW1lbnQ6OmlzSW5uZXJUZXh0RWxlbWVudEVkaXRhYmxlKCkgY29uc3QKIHZvaWQgSFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0
eSgpCiB7CiAgICAgaWYgKGF1dG8gaW5uZXJUZXh0ID0gaW5uZXJUZXh0RWxlbWVudCgpKSB7Ci0g
ICAgICAgIGF1dG8gdmFsdWUgPSBpc0lubmVyVGV4dEVsZW1lbnRFZGl0YWJsZSgpID8gQXRvbWlj
U3RyaW5nIHsgInBsYWludGV4dC1vbmx5IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCB9IDogQXRvbWljU3RyaW5nIHsgImZhbHNlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCB9OworICAgICAgICBhdXRvIHZhbHVlID0gaXNJbm5lclRleHRFbGVtZW50RWRp
dGFibGUoKSA/IEF0b21TdHJpbmcgeyAicGxhaW50ZXh0LW9ubHkiLCBBdG9tU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCB9IDogQXRvbVN0cmluZyB7ICJmYWxzZSIsIEF0b21TdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsIH07CiAgICAgICAgIGlubmVyVGV4dC0+c2V0QXR0cmlidXRlV2l0
aG91dFN5bmNocm9uaXphdGlvbihjb250ZW50ZWRpdGFibGVBdHRyLCB2YWx1ZSk7CiAgICAgfQog
fQpAQCAtNzU4LDcgKzc1OCw3IEBAIHN0YXRpYyBjb25zdCBFbGVtZW50KiBwYXJlbnRIVE1MRWxl
bWVudChjb25zdCBFbGVtZW50KiBlbGVtZW50KQogU3RyaW5nIEhUTUxUZXh0Rm9ybUNvbnRyb2xF
bGVtZW50OjpkaXJlY3Rpb25Gb3JGb3JtRGF0YSgpIGNvbnN0CiB7CiAgICAgZm9yIChjb25zdCBF
bGVtZW50KiBlbGVtZW50ID0gdGhpczsgZWxlbWVudDsgZWxlbWVudCA9IHBhcmVudEhUTUxFbGVt
ZW50KGVsZW1lbnQpKSB7Ci0gICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZGlyQXR0cmlidXRl
VmFsdWUgPSBlbGVtZW50LT5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGRpckF0dHIp
OworICAgICAgICBjb25zdCBBdG9tU3RyaW5nJiBkaXJBdHRyaWJ1dGVWYWx1ZSA9IGVsZW1lbnQt
PmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oZGlyQXR0cik7CiAgICAgICAgIGlmIChk
aXJBdHRyaWJ1dGVWYWx1ZS5pc051bGwoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgKaW5kZXgg
Y2Y4Yzc0NGI3MDNmYzU0ZWI1OTM5MTQwM2I2MTlmMmQ1NjNlZWY1ZS4uNzQ5NGQyNTRkNTUwYWI1
NDM3NzQ5MjViZTkwODM4MjMxMjViYjk5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaApAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAg
ICAgV0VCQ09SRV9FWFBPUlQgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkZvckluZGV4
KGludCBpbmRleCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50IHNlbGVjdGlvblN0YXJ0
KCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50IHNlbGVjdGlvbkVuZCgpIGNvbnN0Owot
ICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IEF0b21pY1N0cmluZyYgc2VsZWN0aW9uRGlyZWN0aW9u
KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgQXRvbVN0cmluZyYgc2VsZWN0aW9u
RGlyZWN0aW9uKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTZWxlY3Rpb25T
dGFydChpbnQpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2VsZWN0aW9uRW5kKGludCk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTZWxlY3Rpb25EaXJlY3Rpb24oY29uc3QgU3Ry
aW5nJik7CkBAIC0xMDUsNyArMTA1LDcgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgaXNQbGFjZWhv
bGRlckVtcHR5KCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVBsYWNlaG9sZGVyVGV4
dCgpID0gMDsKIAotICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOworICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmKSBvdmVycmlkZTsKIAogICAg
IHZvaWQgZGlzYWJsZWRTdGF0ZUNoYW5nZWQoKSBvdmVycmlkZTsKICAgICB2b2lkIHJlYWRPbmx5
U3RhdGVDaGFuZ2VkKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUcmFja0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVt
ZW50LmNwcAppbmRleCAwMTFjMTZkZmFkODc2ZDc4MTFhY2E4YTg2NGQ5MjNkZmFhNDIzZmEzLi5h
ZTdkODBjYzZmZWZlZjJlMDkwNDhlZTM3MzRjZDNkM2UzN2IwZjI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgdm9pZCBIVE1MVHJh
Y2tFbGVtZW50OjpyZW1vdmVkRnJvbUFuY2VzdG9yKFJlbW92YWxUeXBlIHJlbW92YWxUeXBlLCBD
b250YWluZXJOb2QKICAgICAgICAgZG93bmNhc3Q8SFRNTE1lZGlhRWxlbWVudD4ob2xkUGFyZW50
T2ZSZW1vdmVkVHJlZSkuZGlkUmVtb3ZlVGV4dFRyYWNrKCp0aGlzKTsKIH0KIAotdm9pZCBIVE1M
VHJhY2tFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBj
b25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQordm9pZCBIVE1MVHJhY2tFbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1
ZSkKIHsKICAgICBpZiAobmFtZSA9PSBzcmNBdHRyKSB7CiAgICAgICAgIHNjaGVkdWxlTG9hZCgp
OwpAQCAtMTE4LDIyICsxMTgsMjIgQEAgdm9pZCBIVE1MVHJhY2tFbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHIKICAgICBIVE1M
RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwogfQogCi1jb25zdCBBdG9taWNT
dHJpbmcmIEhUTUxUcmFja0VsZW1lbnQ6OmtpbmQoKQorY29uc3QgQXRvbVN0cmluZyYgSFRNTFRy
YWNrRWxlbWVudDo6a2luZCgpCiB7CiAgICAgcmV0dXJuIHRyYWNrKCkua2luZEtleXdvcmQoKTsK
IH0KIAotdm9pZCBIVE1MVHJhY2tFbGVtZW50OjpzZXRLaW5kKGNvbnN0IEF0b21pY1N0cmluZyYg
a2luZCkKK3ZvaWQgSFRNTFRyYWNrRWxlbWVudDo6c2V0S2luZChjb25zdCBBdG9tU3RyaW5nJiBr
aW5kKQogewogICAgIHNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oa2luZEF0dHIs
IGtpbmQpOwogfQogCi1jb25zdCBBdG9taWNTdHJpbmcmIEhUTUxUcmFja0VsZW1lbnQ6OnNyY2xh
bmcoKSBjb25zdAorY29uc3QgQXRvbVN0cmluZyYgSFRNTFRyYWNrRWxlbWVudDo6c3JjbGFuZygp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oc3Jj
bGFuZ0F0dHIpOwogfQogCi1jb25zdCBBdG9taWNTdHJpbmcmIEhUTUxUcmFja0VsZW1lbnQ6Omxh
YmVsKCkgY29uc3QKK2NvbnN0IEF0b21TdHJpbmcmIEhUTUxUcmFja0VsZW1lbnQ6OmxhYmVsKCkg
Y29uc3QKIHsKICAgICByZXR1cm4gYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihsYWJl
bEF0dHIpOwogfQpAQCAtMjc5LDcgKzI3OSw3IEBAIEhUTUxUcmFja0VsZW1lbnQ6OlJlYWR5U3Rh
dGUgSFRNTFRyYWNrRWxlbWVudDo6cmVhZHlTdGF0ZSgpCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PFJlYWR5U3RhdGU+KHRyYWNrKCkucmVhZGluZXNzU3RhdGUoKSk7CiB9CiAKLWNvbnN0IEF0b21p
Y1N0cmluZyYgSFRNTFRyYWNrRWxlbWVudDo6bWVkaWFFbGVtZW50Q3Jvc3NPcmlnaW5BdHRyaWJ1
dGUoKSBjb25zdAorY29uc3QgQXRvbVN0cmluZyYgSFRNTFRyYWNrRWxlbWVudDo6bWVkaWFFbGVt
ZW50Q3Jvc3NPcmlnaW5BdHRyaWJ1dGUoKSBjb25zdAogewogICAgIGlmIChhdXRvIHBhcmVudCA9
IG1lZGlhRWxlbWVudCgpKQogICAgICAgICByZXR1cm4gcGFyZW50LT5hdHRyaWJ1dGVXaXRob3V0
U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6Y3Jvc3NvcmlnaW5BdHRyKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVHJhY2tFbGVtZW50LmgKaW5kZXggOWNiZGFkYjRjNDhlMjY2NWFkYThmMmZhMzE3
OWI4NGU2ZTFiYTMyNC4uYzk1ZGI2ZWEyOGM3ZmYxMzZmNjk0ZjdhYjZkZmU0Y2JjMzlkYTc1MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmgKQEAgLTQwLDExICs0MCwxMSBA
QCBjbGFzcyBIVE1MVHJhY2tFbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxFbGVtZW50LCBwdWJs
aWMgVGV4dFRyYWNrQ2xpZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEhUTUxUcmFja0Vs
ZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAotICAgIGNv
bnN0IEF0b21pY1N0cmluZyYga2luZCgpOwotICAgIHZvaWQgc2V0S2luZChjb25zdCBBdG9taWNT
dHJpbmcmKTsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBraW5kKCk7CisgICAgdm9pZCBzZXRLaW5k
KGNvbnN0IEF0b21TdHJpbmcmKTsKIAotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgc3JjbGFuZygp
IGNvbnN0OwotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbGFiZWwoKSBjb25zdDsKKyAgICBjb25z
dCBBdG9tU3RyaW5nJiBzcmNsYW5nKCkgY29uc3Q7CisgICAgY29uc3QgQXRvbVN0cmluZyYgbGFi
ZWwoKSBjb25zdDsKICAgICBib29sIGlzRGVmYXVsdCgpIGNvbnN0OwogCiAgICAgZW51bSBSZWFk
eVN0YXRlIHsgTk9ORSA9IDAsIExPQURJTkcgPSAxLCBMT0FERUQgPSAyLCBUUkFDS19FUlJPUiA9
IDMgfTsKQEAgLTU5LDEzICs1OSwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRDb21wbGV0ZUxv
YWQoTG9hZFN0YXR1cyk7CiAKICAgICBSZWZQdHI8SFRNTE1lZGlhRWxlbWVudD4gbWVkaWFFbGVt
ZW50KCkgY29uc3Q7Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBtZWRpYUVsZW1lbnRDcm9zc09y
aWdpbkF0dHJpYnV0ZSgpIGNvbnN0OworICAgIGNvbnN0IEF0b21TdHJpbmcmIG1lZGlhRWxlbWVu
dENyb3NzT3JpZ2luQXR0cmlidXRlKCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgSFRNTFRyYWNr
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKICAgICB2aXJ0dWFsIH5I
VE1MVHJhY2tFbGVtZW50KCk7CiAKLSAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIHBhcnNlQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5nJikgZmluYWw7CiAK
ICAgICBJbnNlcnRlZEludG9BbmNlc3RvclJlc3VsdCBpbnNlcnRlZEludG9BbmNlc3RvcihJbnNl
cnRpb25UeXBlLCBDb250YWluZXJOb2RlJikgZmluYWw7CiAgICAgdm9pZCByZW1vdmVkRnJvbUFu
Y2VzdG9yKFJlbW92YWxUeXBlLCBDb250YWluZXJOb2RlJikgZmluYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxVTGlzdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVUxpc3RFbGVtZW50LmNwcAppbmRleCBkOWNkNmUzYmNhZTQ3Y2NiYTgxN2JiZWY2
OGY0ZjhhM2JkOWM4OTdlLi41NzBlYTdmZmZlYWNlMjY5OTkwOTAxZjY0MzczYjlmMDI3NDExNDUz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxVTGlzdEVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFVMaXN0RWxlbWVudC5jcHAKQEAgLTU2LDcgKzU2
LDcgQEAgYm9vbCBIVE1MVUxpc3RFbGVtZW50Ojppc1ByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdAogICAgIHJldHVybiBIVE1MRWxlbWVudDo6aXNQ
cmVzZW50YXRpb25BdHRyaWJ1dGUobmFtZSk7CiB9CiAKLXZvaWQgSFRNTFVMaXN0RWxlbWVudDo6
Y29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUsIE11dGFibGVTdHlsZVByb3BlcnRpZXMm
IHN0eWxlKQordm9pZCBIVE1MVUxpc3RFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRp
b25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYg
dmFsdWUsIE11dGFibGVTdHlsZVByb3BlcnRpZXMmIHN0eWxlKQogewogICAgIGlmIChuYW1lID09
IHR5cGVBdHRyKQogICAgICAgICBhZGRQcm9wZXJ0eVRvUHJlc2VudGF0aW9uQXR0cmlidXRlU3R5
bGUoc3R5bGUsIENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZSwgdmFsdWUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVUxpc3RFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxVTGlzdEVsZW1lbnQuaAppbmRleCA2YTBiNzIwNzMxMjFmZjYyMTE0M2FiZDdiMWI3
NWU5ZDM4MWM2YTI0Li5iNTJjMjAzMGU1N2NjNmIxMTQ2NjI1YTIwOTc1YWI2MWFlYjVlODYzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxVTGlzdEVsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxVTGlzdEVsZW1lbnQuaApAQCAtMzYsNyArMzYsNyBAQCBw
cml2YXRlOgogICAgIEhUTUxVTGlzdEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3Vt
ZW50Jik7CiAKICAgICBib29sIGlzUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIGNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlv
bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiwgTXV0
YWJsZVN0eWxlUHJvcGVydGllcyYpIGZpbmFsOworICAgIHZvaWQgY29sbGVjdFN0eWxlRm9yUHJl
c2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5n
JiwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYpIGZpbmFsOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKaW5kZXggYTZm
MmY4MzViYjdiNTVhZWVhZjRjMDg0ZGRjN2E4ZmU5MTk0M2MxMi4uYTVlNzVhYWZmNTJkZGY5ZjU3
NTQ1YmEwNjdlZWM3ODk4ODhkZDlhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVmlkZW9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0Vs
ZW1lbnQuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBIVE1MVmlkZW9FbGVtZW50OjpkaWRB
dHRhY2hSZW5kZXJlcnMoKQogICAgIH0KIH0KIAotdm9pZCBIVE1MVmlkZW9FbGVtZW50Ojpjb2xs
ZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFt
ZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYgc3R5
bGUpCit2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1
ZSwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYgc3R5bGUpCiB7CiAgICAgaWYgKG5hbWUgPT0gd2lk
dGhBdHRyKQogICAgICAgICBhZGRIVE1MTGVuZ3RoVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlX
aWR0aCwgdmFsdWUpOwpAQCAtMTE4LDcgKzExOCw3IEBAIGJvb2wgSFRNTFZpZGVvRWxlbWVudDo6
aXNQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QK
ICAgICByZXR1cm4gSFRNTE1lZGlhRWxlbWVudDo6aXNQcmVzZW50YXRpb25BdHRyaWJ1dGUobmFt
ZSk7CiB9CiAKLXZvaWQgSFRNTFZpZGVvRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKK3ZvaWQgSFRNTFZp
ZGVvRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29u
c3QgQXRvbVN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKG5hbWUgPT0gcG9zdGVyQXR0cikgewog
ICAgICAgICAvLyBGb3JjZSBhIHBvc3RlciByZWNhbGMgYnkgc2V0dGluZyBtX2Rpc3BsYXlNb2Rl
IHRvIFVua25vd24gZGlyZWN0bHkgYmVmb3JlIGNhbGxpbmcgdXBkYXRlRGlzcGxheVN0YXRlLgpA
QCAtMjMyLDkgKzIzMiw5IEBAIGJvb2wgSFRNTFZpZGVvRWxlbWVudDo6aXNVUkxBdHRyaWJ1dGUo
Y29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUpIGNvbnN0CiAgICAgcmV0dXJuIGF0dHJpYnV0ZS5u
YW1lKCkgPT0gcG9zdGVyQXR0ciB8fCBIVE1MTWVkaWFFbGVtZW50Ojppc1VSTEF0dHJpYnV0ZShh
dHRyaWJ1dGUpOwogfQogCi1jb25zdCBBdG9taWNTdHJpbmcmIEhUTUxWaWRlb0VsZW1lbnQ6Omlt
YWdlU291cmNlVVJMKCkgY29uc3QKK2NvbnN0IEF0b21TdHJpbmcmIEhUTUxWaWRlb0VsZW1lbnQ6
OmltYWdlU291cmNlVVJMKCkgY29uc3QKIHsKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIHVybCA9
IGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24ocG9zdGVyQXR0cik7CisgICAgY29uc3Qg
QXRvbVN0cmluZyYgdXJsID0gYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihwb3N0ZXJB
dHRyKTsKICAgICBpZiAoIXN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyh1cmwpLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHVybDsKICAgICByZXR1cm4gbV9kZWZhdWx0UG9zdGVy
VVJMOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAppbmRleCBkNGJhMzcwYjQy
NGE2OTYxZDk5NjQ5YTE3MzZiNTk3NTUyYWNiY2I0Li4xZTk1MjU4ZmM3NWQyMzIxOTM3NjJhZjVk
ODRlNmEwZGE0ZTNkMGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRl
b0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaApA
QCAtMTAxLDE0ICsxMDEsMTQgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNjaGVkdWxlUmVzaXplRXZl
bnRJZlNpemVDaGFuZ2VkKCkgZmluYWw7CiAgICAgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0
IFJlbmRlclN0eWxlJikgZmluYWw7CiAgICAgdm9pZCBkaWRBdHRhY2hSZW5kZXJlcnMoKSBmaW5h
bDsKLSAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBB
dG9taWNTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5nJikgZmluYWw7CiAgICAgYm9vbCBpc1ByZXNlbnRh
dGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3QgZmluYWw7Ci0gICAgdm9p
ZCBjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIGNvbnN0IEF0b21pY1N0cmluZyYsIE11dGFibGVTdHlsZVByb3BlcnRpZXMmKSBmaW5hbDsK
KyAgICB2b2lkIGNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiwgY29uc3QgQXRvbVN0cmluZyYsIE11dGFibGVTdHlsZVByb3BlcnRpZXMmKSBm
aW5hbDsKICAgICBib29sIGlzVmlkZW8oKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAg
ICAgYm9vbCBoYXNWaWRlbygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHBsYXllcigpICYmIHBsYXll
cigpLT5oYXNWaWRlbygpOyB9CiAgICAgYm9vbCBzdXBwb3J0c0Z1bGxzY3JlZW4oSFRNTE1lZGlh
RWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKSBjb25zdCBmaW5hbDsKICAgICBib29s
IGlzVVJMQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIGNvbnN0IGZpbmFsOwotICAgIGNvbnN0
IEF0b21pY1N0cmluZyYgaW1hZ2VTb3VyY2VVUkwoKSBjb25zdCBmaW5hbDsKKyAgICBjb25zdCBB
dG9tU3RyaW5nJiBpbWFnZVNvdXJjZVVSTCgpIGNvbnN0IGZpbmFsOwogCiAgICAgYm9vbCBoYXNB
dmFpbGFibGVWaWRlb0ZyYW1lKCkgY29uc3Q7CiAgICAgdm9pZCB1cGRhdGVEaXNwbGF5U3RhdGUo
KSBmaW5hbDsKQEAgLTExOSw3ICsxMTksNyBAQCBwcml2YXRlOgogCiAgICAgc3RkOjp1bmlxdWVf
cHRyPEhUTUxJbWFnZUxvYWRlcj4gbV9pbWFnZUxvYWRlcjsKIAotICAgIEF0b21pY1N0cmluZyBt
X2RlZmF1bHRQb3N0ZXJVUkw7CisgICAgQXRvbVN0cmluZyBtX2RlZmF1bHRQb3N0ZXJVUkw7CiAK
ICAgICB1bnNpZ25lZCBtX2xhc3RSZXBvcnRlZFZpZGVvV2lkdGggeyAwIH07CiAgICAgdW5zaWdu
ZWQgbV9sYXN0UmVwb3J0ZWRWaWRlb0hlaWdodCB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSGlkZGVuSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSGlk
ZGVuSW5wdXRUeXBlLmNwcAppbmRleCBhODgyYzhmYzU5Mzk0ODMxZWM4MDRhZmEyYzljNzZiMDFl
N2JiNzY2Li4xNGI2M2JmNWZkYjBiMmUzZDQ3Mjk2ZDI3NmE4NjJjZDE0NWUyNWQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hpZGRlbklucHV0VHlwZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IaWRkZW5JbnB1dFR5cGUuY3BwCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotY29uc3QgQXRv
bWljU3RyaW5nJiBIaWRkZW5JbnB1dFR5cGU6OmZvcm1Db250cm9sVHlwZSgpIGNvbnN0Citjb25z
dCBBdG9tU3RyaW5nJiBIaWRkZW5JbnB1dFR5cGU6OmZvcm1Db250cm9sVHlwZSgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIElucHV0VHlwZU5hbWVzOjpoaWRkZW4oKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSGlkZGVuSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hpZGRlbklucHV0VHlwZS5oCmluZGV4IGI2MzA3YzIwZmJhYjJiOTBkMDgzNzgzNDkxODcwZDg4
YjQzMWEzMjYuLmRhYzYyODQ4YWI0Y2RmNGM5NTFlNTAwYjBhZGE4MDQyODQ1OWUzYWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSGlkZGVuSW5wdXRUeXBlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IaWRkZW5JbnB1dFR5cGUuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6
CiAgICAgZXhwbGljaXQgSGlkZGVuSW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQp
IDogSW5wdXRUeXBlKGVsZW1lbnQpIHsgfQogCiBwcml2YXRlOgotICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgY29uc3QgQXRvbVN0
cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgRm9ybUNvbnRyb2xT
dGF0ZSBzYXZlRm9ybUNvbnRyb2xTdGF0ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgcmVz
dG9yZUZvcm1Db250cm9sU3RhdGUoY29uc3QgRm9ybUNvbnRyb2xTdGF0ZSYpIG92ZXJyaWRlOwog
ICAgIGJvb2wgc3VwcG9ydHNWYWxpZGF0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSW1hZ2VJbnB1dFR5cGUuY3BwCmluZGV4IDJiMGYxZWQ2NjgyOGYxMjZhN2UxNTlhMDRi
MWNiYThjMDhjNWFhYTAuLjU2MTViNDQ2ZGY2YWQxMDJkODUxODZlNzE4MjBmZDJmMjRiZWEwYjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VJbnB1dFR5cGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VJbnB1dFR5cGUuY3BwCkBAIC00NCw3ICs0NCw3IEBA
IEltYWdlSW5wdXRUeXBlOjpJbWFnZUlucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50JiBlbGVtZW50
KQogewogfQogCi1jb25zdCBBdG9taWNTdHJpbmcmIEltYWdlSW5wdXRUeXBlOjpmb3JtQ29udHJv
bFR5cGUoKSBjb25zdAorY29uc3QgQXRvbVN0cmluZyYgSW1hZ2VJbnB1dFR5cGU6OmZvcm1Db250
cm9sVHlwZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIElucHV0VHlwZU5hbWVzOjppbWFnZSgpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUlucHV0VHlwZS5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUlucHV0VHlwZS5oCmluZGV4IDBlMzFkY2Y4NDlkZmU2M2Fm
MDMzOWQ3MTJmMzczNmU3ODMxYmQ2YTYuLjI2Nzg2MTBmNmNiOGI5YjcxZGNhNTVkMDBlM2ZkYjFj
ZGI3MjAzNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VJbnB1dFR5cGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlSW5wdXRUeXBlLmgKQEAgLTQyLDcgKzQy
LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IEltYWdlSW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1l
bnQmKTsKIAogcHJpdmF0ZToKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGZvcm1Db250cm9sVHlw
ZSgpIGNvbnN0IGZpbmFsOworICAgIGNvbnN0IEF0b21TdHJpbmcmIGZvcm1Db250cm9sVHlwZSgp
IGNvbnN0IGZpbmFsOwogICAgIGJvb2wgaXNGb3JtRGF0YUFwcGVuZGFibGUoKSBjb25zdCBmaW5h
bDsKICAgICBib29sIGFwcGVuZEZvcm1EYXRhKERPTUZvcm1EYXRhJiwgYm9vbCkgY29uc3QgZmlu
YWw7CiAgICAgYm9vbCBzdXBwb3J0c1ZhbGlkYXRpb24oKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRNb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSW5wdXRNb2RlLmNwcAppbmRleCBiY2EzNWI0YTMxZmY4YmQwYjY3YWM2MjJjMjZkYzk1ZGVm
ZGU1MGU1Li5hMjBlYWNjZmY5YzZkMDU3NjliOThkNjhjNzNmNWFmYzFiOWJlNmJlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0TW9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9JbnB1dE1vZGUuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotSW5wdXRNb2RlIGlucHV0TW9kZUZvckF0dHJpYnV0ZVZhbHVlKGNvbnN0IEF0b21p
Y1N0cmluZyYgdmFsdWUpCitJbnB1dE1vZGUgaW5wdXRNb2RlRm9yQXR0cmlidXRlVmFsdWUoY29u
c3QgQXRvbVN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2Uo
dmFsdWUsIElucHV0TW9kZU5hbWVzOjpub25lKCkpKQogICAgICAgICByZXR1cm4gSW5wdXRNb2Rl
OjpOb25lOwpAQCAtNTIsNyArNTIsNyBAQCBJbnB1dE1vZGUgaW5wdXRNb2RlRm9yQXR0cmlidXRl
VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKICAgICByZXR1cm4gSW5wdXRNb2RlOjpV
bnNwZWNpZmllZDsKIH0KIAotY29uc3QgQXRvbWljU3RyaW5nJiBzdHJpbmdGb3JJbnB1dE1vZGUo
SW5wdXRNb2RlIG1vZGUpCitjb25zdCBBdG9tU3RyaW5nJiBzdHJpbmdGb3JJbnB1dE1vZGUoSW5w
dXRNb2RlIG1vZGUpCiB7CiAgICAgc3dpdGNoIChtb2RlKSB7CiAgICAgY2FzZSBJbnB1dE1vZGU6
OlVuc3BlY2lmaWVkOgpAQCAtODAsNTEgKzgwLDUxIEBAIGNvbnN0IEF0b21pY1N0cmluZyYgc3Ry
aW5nRm9ySW5wdXRNb2RlKElucHV0TW9kZSBtb2RlKQogCiBuYW1lc3BhY2UgSW5wdXRNb2RlTmFt
ZXMgewogCi1jb25zdCBBdG9taWNTdHJpbmcmIG5vbmUoKQorY29uc3QgQXRvbVN0cmluZyYgbm9u
ZSgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gbW9kZSgibm9u
ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxBdG9tU3RyaW5nPiBtb2RlKCJub25lIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBtb2RlOwogfQogCi1jb25zdCBBdG9taWNTdHJpbmcm
IHRleHQoKQorY29uc3QgQXRvbVN0cmluZyYgdGV4dCgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEF0b21pY1N0cmluZz4gbW9kZSgidGV4dCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9tU3RyaW5nPiBtb2Rl
KCJ0ZXh0IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBt
b2RlOwogfQogCi1jb25zdCBBdG9taWNTdHJpbmcmIHRlbCgpCitjb25zdCBBdG9tU3RyaW5nJiB0
ZWwoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG1vZGUoInRl
bCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxBdG9tU3RyaW5nPiBtb2RlKCJ0ZWwiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIG1vZGU7CiB9CiAKLWNvbnN0IEF0b21pY1N0cmluZyYg
dXJsKCkKK2NvbnN0IEF0b21TdHJpbmcmIHVybCgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPEF0b21pY1N0cmluZz4gbW9kZSgidXJsIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21TdHJpbmc+IG1vZGUoInVy
bCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gbW9kZTsK
IH0KIAotY29uc3QgQXRvbWljU3RyaW5nJiBlbWFpbCgpCitjb25zdCBBdG9tU3RyaW5nJiBlbWFp
bCgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gbW9kZSgiZW1h
aWwiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8QXRvbVN0cmluZz4gbW9kZSgiZW1haWwiLCBBdG9tU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIG1vZGU7CiB9CiAKLWNvbnN0IEF0b21pY1N0cmlu
ZyYgbnVtZXJpYygpCitjb25zdCBBdG9tU3RyaW5nJiBudW1lcmljKCkKIHsKLSAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBtb2RlKCJudW1lcmljIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21T
dHJpbmc+IG1vZGUoIm51bWVyaWMiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7
CiAgICAgcmV0dXJuIG1vZGU7CiB9CiAKLWNvbnN0IEF0b21pY1N0cmluZyYgZGVjaW1hbCgpCitj
b25zdCBBdG9tU3RyaW5nJiBkZWNpbWFsKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
QXRvbWljU3RyaW5nPiBtb2RlKCJkZWNpbWFsIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21TdHJpbmc+IG1vZGUoImRl
Y2ltYWwiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIG1v
ZGU7CiB9CiAKLWNvbnN0IEF0b21pY1N0cmluZyYgc2VhcmNoKCkKK2NvbnN0IEF0b21TdHJpbmcm
IHNlYXJjaCgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gbW9k
ZSgic2VhcmNoIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPEF0b21TdHJpbmc+IG1vZGUoInNlYXJjaCIsIEF0b21TdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gbW9kZTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dE1vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SW5wdXRNb2RlLmgKaW5kZXggNzM2ODM3MDFkNjZiZWM2YTFkNmUzNDJkOGI1OTIzY2RlNmJlYWVk
Ny4uZjk2NjgyNWY5NjA0ZDkzNTc4M2MyYmVhODIzZTc1ODc5OTljZDczZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dE1vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0lucHV0TW9kZS5oCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVk
ZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmlu
Zy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQxLDE5ICs0MSwxOSBAQCBlbnVtIGNs
YXNzIElucHV0TW9kZSA6IHVpbnQ4X3QgewogICAgIFNlYXJjaAogfTsKIAotSW5wdXRNb2RlIGlu
cHV0TW9kZUZvckF0dHJpYnV0ZVZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYpOwotY29uc3QgQXRv
bWljU3RyaW5nJiBzdHJpbmdGb3JJbnB1dE1vZGUoSW5wdXRNb2RlKTsKK0lucHV0TW9kZSBpbnB1
dE1vZGVGb3JBdHRyaWJ1dGVWYWx1ZShjb25zdCBBdG9tU3RyaW5nJik7Citjb25zdCBBdG9tU3Ry
aW5nJiBzdHJpbmdGb3JJbnB1dE1vZGUoSW5wdXRNb2RlKTsKIAogbmFtZXNwYWNlIElucHV0TW9k
ZU5hbWVzIHsKIAotY29uc3QgQXRvbWljU3RyaW5nJiBub25lKCk7Ci1jb25zdCBBdG9taWNTdHJp
bmcmIHRleHQoKTsKLWNvbnN0IEF0b21pY1N0cmluZyYgdGVsKCk7Ci1jb25zdCBBdG9taWNTdHJp
bmcmIHVybCgpOwotY29uc3QgQXRvbWljU3RyaW5nJiBlbWFpbCgpOwotY29uc3QgQXRvbWljU3Ry
aW5nJiBudW1lcmljKCk7Ci1jb25zdCBBdG9taWNTdHJpbmcmIGRlY2ltYWwoKTsKLWNvbnN0IEF0
b21pY1N0cmluZyYgc2VhcmNoKCk7Citjb25zdCBBdG9tU3RyaW5nJiBub25lKCk7Citjb25zdCBB
dG9tU3RyaW5nJiB0ZXh0KCk7Citjb25zdCBBdG9tU3RyaW5nJiB0ZWwoKTsKK2NvbnN0IEF0b21T
dHJpbmcmIHVybCgpOworY29uc3QgQXRvbVN0cmluZyYgZW1haWwoKTsKK2NvbnN0IEF0b21TdHJp
bmcmIG51bWVyaWMoKTsKK2NvbnN0IEF0b21TdHJpbmcmIGRlY2ltYWwoKTsKK2NvbnN0IEF0b21T
dHJpbmcmIHNlYXJjaCgpOwogCiB9IC8vIG5hbWVzcGFjZSBJbnB1dE1vZGVOYW1lcwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0lucHV0VHlwZS5jcHAKaW5kZXggMDRkMzI1ZGIwNzg2NWY5YjhiYTA5MjgxYTVhOWEw
NWJhNmVlZTlmNy4uMjE5OGI4MzQ0YzFkMTBmNzhiYTBhZGI1NjUwNDI3YzlhMGViNzI5YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcApAQCAtODQsOSArODQsOSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiB0eXBlZGVmIGJvb2wgKFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OipJbnB1dFR5cGVDb25kaXRpb25hbEZ1bmN0aW9uKSgpIGNvbnN0
OwotdHlwZWRlZiBjb25zdCBBdG9taWNTdHJpbmcmICgqSW5wdXRUeXBlTmFtZUZ1bmN0aW9uKSgp
OwordHlwZWRlZiBjb25zdCBBdG9tU3RyaW5nJiAoKklucHV0VHlwZU5hbWVGdW5jdGlvbikoKTsK
IHR5cGVkZWYgUmVmPElucHV0VHlwZT4gKCpJbnB1dFR5cGVGYWN0b3J5RnVuY3Rpb24pKEhUTUxJ
bnB1dEVsZW1lbnQmKTsKLXR5cGVkZWYgSGFzaE1hcDxBdG9taWNTdHJpbmcsIElucHV0VHlwZUZh
Y3RvcnlGdW5jdGlvbiwgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiBJbnB1dFR5cGVGYWN0b3J5
TWFwOwordHlwZWRlZiBIYXNoTWFwPEF0b21TdHJpbmcsIElucHV0VHlwZUZhY3RvcnlGdW5jdGlv
biwgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiBJbnB1dFR5cGVGYWN0b3J5TWFwOwogCiB0ZW1w
bGF0ZTxjbGFzcyBUPgogc3RhdGljIFJlZjxJbnB1dFR5cGU+IGNyZWF0ZUlucHV0VHlwZShIVE1M
SW5wdXRFbGVtZW50JiBlbGVtZW50KQpAQCAtMTQ5LDcgKzE0OSw3IEBAIHN0YXRpYyBJbnB1dFR5
cGVGYWN0b3J5TWFwIGNyZWF0ZUlucHV0VHlwZUZhY3RvcnlNYXAoKQogICAgIHJldHVybiBtYXA7
CiB9CiAKLVJlZjxJbnB1dFR5cGU+IElucHV0VHlwZTo6Y3JlYXRlKEhUTUxJbnB1dEVsZW1lbnQm
IGVsZW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZU5hbWUpCitSZWY8SW5wdXRUeXBlPiBJ
bnB1dFR5cGU6OmNyZWF0ZShIVE1MSW5wdXRFbGVtZW50JiBlbGVtZW50LCBjb25zdCBBdG9tU3Ry
aW5nJiB0eXBlTmFtZSkKIHsKICAgICBpZiAoIXR5cGVOYW1lLmlzRW1wdHkoKSkgewogICAgICAg
ICBzdGF0aWMgY29uc3QgYXV0byBmYWN0b3J5TWFwID0gbWFrZU5ldmVyRGVzdHJveWVkKGNyZWF0
ZUlucHV0VHlwZUZhY3RvcnlNYXAoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0lucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaAppbmRleCA2NDNi
NTllNDdhYTJjZGQ1MjA3ZTQ0ZDI2MDAzZTFlN2U0N2NlZDQ1Li42NjVlNjZjZjVhMDg2MzM3MTY2
OTY3NzIwMjNhYmFiNzA4OTRiZWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lu
cHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKQEAgLTczLDcg
KzczLDcgQEAgY2xhc3MgSW5wdXRUeXBlIDogcHVibGljIFJlZkNvdW50ZWQ8SW5wdXRUeXBlPiB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
PElucHV0VHlwZT4gY3JlYXRlKEhUTUxJbnB1dEVsZW1lbnQmLCBjb25zdCBBdG9taWNTdHJpbmcm
KTsKKyAgICBzdGF0aWMgUmVmPElucHV0VHlwZT4gY3JlYXRlKEhUTUxJbnB1dEVsZW1lbnQmLCBj
b25zdCBBdG9tU3RyaW5nJik7CiAgICAgc3RhdGljIFJlZjxJbnB1dFR5cGU+IGNyZWF0ZVRleHQo
SFRNTElucHV0RWxlbWVudCYpOwogICAgIHZpcnR1YWwgfklucHV0VHlwZSgpOwogCkBAIC04MSw3
ICs4MSw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBib29sIHRoZW1lU3VwcG9ydHNEYXRhTGlz
dFVJKElucHV0VHlwZSopOwogCi0gICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGZvcm1D
b250cm9sVHlwZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21TdHJpbmcmIGZv
cm1Db250cm9sVHlwZSgpIGNvbnN0ID0gMDsKIAogICAgIC8vIFR5cGUgcXVlcnkgZnVuY3Rpb25z
LgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZU5hbWVzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlTmFtZXMuY3BwCmluZGV4IDQzODc2MThjNzg0
MDBhNmI2ZDZhNjBiMTkxM2ZhZTA2YTJkNDNiYmEuLmE4YTZlNzlkY2M2OGIyOTZiZmQ4NzE5N2Nj
ZjRiNDZlOWE3ZjllZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBl
TmFtZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlTmFtZXMuY3BwCkBA
IC0zMSwxNDEgKzMxLDE0MSBAQCBuYW1lc3BhY2UgSW5wdXRUeXBlTmFtZXMgewogLy8gVGhlIHR5
cGUgbmFtZXMgbXVzdCBiZSBsb3dlcmNhc2VkIGJlY2F1c2UgdGhleSB3aWxsIGJlIHRoZSByZXR1
cm4gdmFsdWVzIG9mCiAvLyBpbnB1dC50eXBlIGFuZCBpbnB1dC50eXBlIG11c3QgYmUgbG93ZXJj
YXNlIGFjY29yZGluZyB0byBET00gTGV2ZWwgMi4KIAotY29uc3QgQXRvbWljU3RyaW5nJiBidXR0
b24oKQorY29uc3QgQXRvbVN0cmluZyYgYnV0dG9uKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8QXRvbWljU3RyaW5nPiBuYW1lKCJidXR0b24iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbVN0cmluZz4gbmFt
ZSgiYnV0dG9uIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVy
biBuYW1lOwogfQogCi1jb25zdCBBdG9taWNTdHJpbmcmIGNoZWNrYm94KCkKK2NvbnN0IEF0b21T
dHJpbmcmIGNoZWNrYm94KCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3Ry
aW5nPiBuYW1lKCJjaGVja2JveCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9tU3RyaW5nPiBuYW1lKCJjaGVja2JveCIs
IEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gbmFtZTsKIH0K
IAotY29uc3QgQXRvbWljU3RyaW5nJiBjb2xvcigpCitjb25zdCBBdG9tU3RyaW5nJiBjb2xvcigp
CiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gbmFtZSgiY29sb3Ii
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8QXRvbVN0cmluZz4gbmFtZSgiY29sb3IiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIG5hbWU7CiB9CiAKLWNvbnN0IEF0b21pY1N0cmluZyYg
ZGF0ZSgpCitjb25zdCBBdG9tU3RyaW5nJiBkYXRlKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8QXRvbWljU3RyaW5nPiBuYW1lKCJkYXRlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21TdHJpbmc+IG5hbWUo
ImRhdGUiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIG5h
bWU7CiB9CiAKLWNvbnN0IEF0b21pY1N0cmluZyYgZGF0ZXRpbWUoKQorY29uc3QgQXRvbVN0cmlu
ZyYgZGF0ZXRpbWUoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+
IG5hbWUoImRhdGV0aW1lIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21TdHJpbmc+IG5hbWUoImRhdGV0aW1lIiwgQXRv
bVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBuYW1lOwogfQogCi1j
b25zdCBBdG9taWNTdHJpbmcmIGRhdGV0aW1lbG9jYWwoKQorY29uc3QgQXRvbVN0cmluZyYgZGF0
ZXRpbWVsb2NhbCgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4g
bmFtZSgiZGF0ZXRpbWUtbG9jYWwiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbVN0cmluZz4gbmFtZSgiZGF0ZXRpbWUt
bG9jYWwiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIG5h
bWU7CiB9CiAKLWNvbnN0IEF0b21pY1N0cmluZyYgZW1haWwoKQorY29uc3QgQXRvbVN0cmluZyYg
ZW1haWwoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5hbWUo
ImVtYWlsIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPEF0b21TdHJpbmc+IG5hbWUoImVtYWlsIiwgQXRvbVN0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBuYW1lOwogfQogCi1jb25zdCBBdG9taWNT
dHJpbmcmIGZpbGUoKQorY29uc3QgQXRvbVN0cmluZyYgZmlsZSgpCiB7Ci0gICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gbmFtZSgiZmlsZSIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9tU3RyaW5n
PiBuYW1lKCJmaWxlIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJl
dHVybiBuYW1lOwogfQogCi1jb25zdCBBdG9taWNTdHJpbmcmIGhpZGRlbigpCitjb25zdCBBdG9t
U3RyaW5nJiBoaWRkZW4oKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJp
bmc+IG5hbWUoImhpZGRlbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9tU3RyaW5nPiBuYW1lKCJoaWRkZW4iLCBBdG9t
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIG5hbWU7CiB9CiAKLWNv
bnN0IEF0b21pY1N0cmluZyYgaW1hZ2UoKQorY29uc3QgQXRvbVN0cmluZyYgaW1hZ2UoKQogewot
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5hbWUoImltYWdlIiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPEF0b21TdHJpbmc+IG5hbWUoImltYWdlIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpOwogICAgIHJldHVybiBuYW1lOwogfQogCi1jb25zdCBBdG9taWNTdHJpbmcmIG1vbnRo
KCkKK2NvbnN0IEF0b21TdHJpbmcmIG1vbnRoKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8QXRvbWljU3RyaW5nPiBuYW1lKCJtb250aCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9tU3RyaW5nPiBuYW1lKCJt
b250aCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gbmFt
ZTsKIH0KIAotY29uc3QgQXRvbWljU3RyaW5nJiBudW1iZXIoKQorY29uc3QgQXRvbVN0cmluZyYg
bnVtYmVyKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBuYW1l
KCJudW1iZXIiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbVN0cmluZz4gbmFtZSgibnVtYmVyIiwgQXRvbVN0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBuYW1lOwogfQogCi1jb25zdCBBdG9t
aWNTdHJpbmcmIHBhc3N3b3JkKCkKK2NvbnN0IEF0b21TdHJpbmcmIHBhc3N3b3JkKCkKIHsKLSAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBuYW1lKCJwYXNzd29yZCIsIEF0
b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxBdG9tU3RyaW5nPiBuYW1lKCJwYXNzd29yZCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKTsKICAgICByZXR1cm4gbmFtZTsKIH0KIAotY29uc3QgQXRvbWljU3RyaW5nJiBy
YWRpbygpCitjb25zdCBBdG9tU3RyaW5nJiByYWRpbygpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEF0b21pY1N0cmluZz4gbmFtZSgicmFkaW8iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbVN0cmluZz4gbmFt
ZSgicmFkaW8iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJu
IG5hbWU7CiB9CiAKLWNvbnN0IEF0b21pY1N0cmluZyYgcmFuZ2UoKQorY29uc3QgQXRvbVN0cmlu
ZyYgcmFuZ2UoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5h
bWUoInJhbmdlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPEF0b21TdHJpbmc+IG5hbWUoInJhbmdlIiwgQXRvbVN0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBuYW1lOwogfQogCi1jb25zdCBBdG9t
aWNTdHJpbmcmIHJlc2V0KCkKK2NvbnN0IEF0b21TdHJpbmcmIHJlc2V0KCkKIHsKLSAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBuYW1lKCJyZXNldCIsIEF0b21pY1N0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9t
U3RyaW5nPiBuYW1lKCJyZXNldCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsK
ICAgICByZXR1cm4gbmFtZTsKIH0KIAotY29uc3QgQXRvbWljU3RyaW5nJiBzZWFyY2goKQorY29u
c3QgQXRvbVN0cmluZyYgc2VhcmNoKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRv
bWljU3RyaW5nPiBuYW1lKCJzZWFyY2giLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbVN0cmluZz4gbmFtZSgic2VhcmNo
IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBuYW1lOwog
fQogCi1jb25zdCBBdG9taWNTdHJpbmcmIHN1Ym1pdCgpCitjb25zdCBBdG9tU3RyaW5nJiBzdWJt
aXQoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5hbWUoInN1
Ym1pdCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxBdG9tU3RyaW5nPiBuYW1lKCJzdWJtaXQiLCBBdG9tU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIG5hbWU7CiB9CiAKLWNvbnN0IEF0b21pY1N0
cmluZyYgdGVsZXBob25lKCkKK2NvbnN0IEF0b21TdHJpbmcmIHRlbGVwaG9uZSgpCiB7Ci0gICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gbmFtZSgidGVsIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0
b21TdHJpbmc+IG5hbWUoInRlbCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsK
ICAgICByZXR1cm4gbmFtZTsKIH0KIAotY29uc3QgQXRvbWljU3RyaW5nJiB0ZXh0KCkKK2NvbnN0
IEF0b21TdHJpbmcmIHRleHQoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNT
dHJpbmc+IG5hbWUoInRleHQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbVN0cmluZz4gbmFtZSgidGV4dCIsIEF0b21T
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gbmFtZTsKIH0KIAotY29u
c3QgQXRvbWljU3RyaW5nJiB0aW1lKCkKK2NvbnN0IEF0b21TdHJpbmcmIHRpbWUoKQogewotICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5hbWUoInRpbWUiLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
QXRvbVN0cmluZz4gbmFtZSgidGltZSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKICAgICByZXR1cm4gbmFtZTsKIH0KIAotY29uc3QgQXRvbWljU3RyaW5nJiB1cmwoKQorY29u
c3QgQXRvbVN0cmluZyYgdXJsKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWlj
U3RyaW5nPiBuYW1lKCJ1cmwiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbVN0cmluZz4gbmFtZSgidXJsIiwgQXRvbVN0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBuYW1lOwogfQogCi1jb25z
dCBBdG9taWNTdHJpbmcmIHdlZWsoKQorY29uc3QgQXRvbVN0cmluZyYgd2VlaygpCiB7Ci0gICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gbmFtZSgid2VlayIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxB
dG9tU3RyaW5nPiBuYW1lKCJ3ZWVrIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OwogICAgIHJldHVybiBuYW1lOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0lucHV0VHlwZU5hbWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZU5hbWVzLmgK
aW5kZXggNDcwMDMwNjIzYTg3ZWFlMDNhYTVkM2U5YWE2NTcwMGQxMDNiOGUyOC4uMjQxZWMyOGJh
OGY1MzU2OWQzYWU0N2M0MTFmN2VhMTQ1YjdjNDkzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9JbnB1dFR5cGVOYW1lcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRU
eXBlTmFtZXMuaApAQCAtMjAsMzUgKzIwLDM1IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVk
ZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmlu
Zy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSBJbnB1dFR5cGVOYW1lcyB7
CiAKLWNvbnN0IEF0b21pY1N0cmluZyYgYnV0dG9uKCk7Ci1jb25zdCBBdG9taWNTdHJpbmcmIGNo
ZWNrYm94KCk7Ci1jb25zdCBBdG9taWNTdHJpbmcmIGNvbG9yKCk7Ci1jb25zdCBBdG9taWNTdHJp
bmcmIGRhdGUoKTsKLWNvbnN0IEF0b21pY1N0cmluZyYgZGF0ZXRpbWUoKTsKLWNvbnN0IEF0b21p
Y1N0cmluZyYgZGF0ZXRpbWVsb2NhbCgpOwotY29uc3QgQXRvbWljU3RyaW5nJiBlbWFpbCgpOwot
Y29uc3QgQXRvbWljU3RyaW5nJiBmaWxlKCk7Ci1jb25zdCBBdG9taWNTdHJpbmcmIGhpZGRlbigp
OwotY29uc3QgQXRvbWljU3RyaW5nJiBpbWFnZSgpOwotY29uc3QgQXRvbWljU3RyaW5nJiBtb250
aCgpOwotY29uc3QgQXRvbWljU3RyaW5nJiBudW1iZXIoKTsKLWNvbnN0IEF0b21pY1N0cmluZyYg
cGFzc3dvcmQoKTsKLWNvbnN0IEF0b21pY1N0cmluZyYgcmFkaW8oKTsKLWNvbnN0IEF0b21pY1N0
cmluZyYgcmFuZ2UoKTsKLWNvbnN0IEF0b21pY1N0cmluZyYgcmVzZXQoKTsKLWNvbnN0IEF0b21p
Y1N0cmluZyYgc2VhcmNoKCk7Ci1jb25zdCBBdG9taWNTdHJpbmcmIHN1Ym1pdCgpOwotY29uc3Qg
QXRvbWljU3RyaW5nJiB0ZWxlcGhvbmUoKTsKLWNvbnN0IEF0b21pY1N0cmluZyYgdGV4dCgpOwot
Y29uc3QgQXRvbWljU3RyaW5nJiB0aW1lKCk7Ci1jb25zdCBBdG9taWNTdHJpbmcmIHVybCgpOwot
Y29uc3QgQXRvbWljU3RyaW5nJiB3ZWVrKCk7Citjb25zdCBBdG9tU3RyaW5nJiBidXR0b24oKTsK
K2NvbnN0IEF0b21TdHJpbmcmIGNoZWNrYm94KCk7Citjb25zdCBBdG9tU3RyaW5nJiBjb2xvcigp
OworY29uc3QgQXRvbVN0cmluZyYgZGF0ZSgpOworY29uc3QgQXRvbVN0cmluZyYgZGF0ZXRpbWUo
KTsKK2NvbnN0IEF0b21TdHJpbmcmIGRhdGV0aW1lbG9jYWwoKTsKK2NvbnN0IEF0b21TdHJpbmcm
IGVtYWlsKCk7Citjb25zdCBBdG9tU3RyaW5nJiBmaWxlKCk7Citjb25zdCBBdG9tU3RyaW5nJiBo
aWRkZW4oKTsKK2NvbnN0IEF0b21TdHJpbmcmIGltYWdlKCk7Citjb25zdCBBdG9tU3RyaW5nJiBt
b250aCgpOworY29uc3QgQXRvbVN0cmluZyYgbnVtYmVyKCk7Citjb25zdCBBdG9tU3RyaW5nJiBw
YXNzd29yZCgpOworY29uc3QgQXRvbVN0cmluZyYgcmFkaW8oKTsKK2NvbnN0IEF0b21TdHJpbmcm
IHJhbmdlKCk7Citjb25zdCBBdG9tU3RyaW5nJiByZXNldCgpOworY29uc3QgQXRvbVN0cmluZyYg
c2VhcmNoKCk7Citjb25zdCBBdG9tU3RyaW5nJiBzdWJtaXQoKTsKK2NvbnN0IEF0b21TdHJpbmcm
IHRlbGVwaG9uZSgpOworY29uc3QgQXRvbVN0cmluZyYgdGV4dCgpOworY29uc3QgQXRvbVN0cmlu
ZyYgdGltZSgpOworY29uc3QgQXRvbVN0cmluZyYgdXJsKCk7Citjb25zdCBBdG9tU3RyaW5nJiB3
ZWVrKCk7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9MYWJlbHNOb2Rl
TGlzdC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9MYWJlbHNOb2RlTGlzdC5oCmluZGV4IGU3ZDdk
MTY1YzIyYzgzMDMxMDA0NzJhZmY1MTMzMjAwYzhmZDNhYTYuLmY1MzlkNzliMGNhYTA1MDAzMDQ4
ODhkYzQ2MTc3MmFmN2RiMTYyODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTGFi
ZWxzTm9kZUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0xhYmVsc05vZGVMaXN0LmgK
QEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTGFiZWxzTm9kZUxp
c3QgZmluYWwgOiBwdWJsaWMgQ2FjaGVkTGl2ZU5vZGVMaXN0PExhYmVsc05vZGVMaXN0PiB7CiAg
ICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChMYWJlbHNOb2RlTGlzdCk7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxMYWJlbHNOb2RlTGlzdD4gY3JlYXRlKExhYmVsYWJsZUVsZW1lbnQmIGZvck5v
ZGUsIGNvbnN0IEF0b21pY1N0cmluZyYpCisgICAgc3RhdGljIFJlZjxMYWJlbHNOb2RlTGlzdD4g
Y3JlYXRlKExhYmVsYWJsZUVsZW1lbnQmIGZvck5vZGUsIGNvbnN0IEF0b21TdHJpbmcmKQogICAg
IHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTGFiZWxzTm9kZUxpc3QoZm9yTm9kZSkp
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmNwcAppbmRleCA1MWZh
NjU4YzQ5MTAwYTk3NjVmOTYxZGU2OWM4NDRkMTQxZTY4ZTg2Li5lNDgyYjM2MmIxOGE3YTU0OTQ1
Mzc2NDY0NGNjZmU3Y2JmNTE1MmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01l
ZGlhQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xs
ZXIuY3BwCkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMu
aD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGli
RXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvQXRvbVN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTI4Nywy
NSArMjg3LDI1IEBAIHZvaWQgTWVkaWFDb250cm9sbGVyOjpzZXRNdXRlZChib29sIGZsYWcpCiAg
ICAgICAgIG1lZGlhRWxlbWVudC0+dXBkYXRlVm9sdW1lKCk7CiB9CiAKLXN0YXRpYyBjb25zdCBB
dG9taWNTdHJpbmcmIHBsYXliYWNrU3RhdGVXYWl0aW5nKCkKK3N0YXRpYyBjb25zdCBBdG9tU3Ry
aW5nJiBwbGF5YmFja1N0YXRlV2FpdGluZygpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEF0b21pY1N0cmluZz4gd2FpdGluZygid2FpdGluZyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9tU3RyaW5nPiB3YWl0
aW5nKCJ3YWl0aW5nIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJl
dHVybiB3YWl0aW5nOwogfQogCi1zdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBwbGF5YmFja1N0
YXRlUGxheWluZygpCitzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgcGxheWJhY2tTdGF0ZVBsYXlp
bmcoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHBsYXlpbmco
InBsYXlpbmciLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbVN0cmluZz4gcGxheWluZygicGxheWluZyIsIEF0b21TdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gcGxheWluZzsKIH0KIAotc3Rh
dGljIGNvbnN0IEF0b21pY1N0cmluZyYgcGxheWJhY2tTdGF0ZUVuZGVkKCkKK3N0YXRpYyBjb25z
dCBBdG9tU3RyaW5nJiBwbGF5YmFja1N0YXRlRW5kZWQoKQogewotICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxBdG9taWNTdHJpbmc+IGVuZGVkKCJlbmRlZCIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9tU3RyaW5nPiBl
bmRlZCgiZW5kZWQiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0
dXJuIGVuZGVkOwogfQogCi1jb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbGxlcjo6cGxh
eWJhY2tTdGF0ZSgpIGNvbnN0Citjb25zdCBBdG9tU3RyaW5nJiBNZWRpYUNvbnRyb2xsZXI6OnBs
YXliYWNrU3RhdGUoKSBjb25zdAogewogICAgIHN3aXRjaCAobV9wbGF5YmFja1N0YXRlKSB7CiAg
ICAgY2FzZSBXQUlUSU5HOgpAQCAtMzI2LDcgKzMyNiw3IEBAIHZvaWQgTWVkaWFDb250cm9sbGVy
OjpyZXBvcnRDb250cm9sbGVyU3RhdGUoKQogICAgIHVwZGF0ZVBsYXliYWNrU3RhdGUoKTsKIH0K
IAotc3RhdGljIEF0b21pY1N0cmluZyBldmVudE5hbWVGb3JSZWFkeVN0YXRlKE1lZGlhQ29udHJv
bGxlckludGVyZmFjZTo6UmVhZHlTdGF0ZSBzdGF0ZSkKK3N0YXRpYyBBdG9tU3RyaW5nIGV2ZW50
TmFtZUZvclJlYWR5U3RhdGUoTWVkaWFDb250cm9sbGVySW50ZXJmYWNlOjpSZWFkeVN0YXRlIHN0
YXRlKQogewogICAgIHN3aXRjaCAoc3RhdGUpIHsKICAgICBjYXNlIE1lZGlhQ29udHJvbGxlcklu
dGVyZmFjZTo6SEFWRV9OT1RISU5HOgpAQCAtNDM2LDcgKzQzNiw3IEBAIHZvaWQgTWVkaWFDb250
cm9sbGVyOjp1cGRhdGVQbGF5YmFja1N0YXRlKCkKICAgICAvLyBJZiB0aGUgTWVkaWFDb250cm9s
bGVyJ3MgbW9zdCByZWNlbnRseSByZXBvcnRlZCBwbGF5YmFjayBzdGF0ZSBpcyBub3QgZXF1YWwg
dG8gbmV3IHBsYXliYWNrIHN0YXRlCiAgICAgLy8gdGhlbiBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBh
IHNpbXBsZSBldmVudCBhdCB0aGUgTWVkaWFDb250cm9sbGVyIG9iamVjdCwgd2hvc2UgbmFtZSBp
cyBwbGF5aW5nIAogICAgIC8vIGlmIG5ldyBwbGF5YmFjayBzdGF0ZSBpcyBwbGF5aW5nLCBlbmRl
ZCBpZiBuZXcgcGxheWJhY2sgc3RhdGUgaXMgZW5kZWQsIGFuZCB3YWl0aW5nIG90aGVyd2lzZS4K
LSAgICBBdG9taWNTdHJpbmcgZXZlbnROYW1lOworICAgIEF0b21TdHJpbmcgZXZlbnROYW1lOwog
ICAgIHN3aXRjaCAobmV3UGxheWJhY2tTdGF0ZSkgewogICAgIGNhc2UgV0FJVElORzoKICAgICAg
ICAgZXZlbnROYW1lID0gZXZlbnROYW1lcygpLndhaXRpbmdFdmVudDsKQEAgLTUzMyw3ICs1MzMs
NyBAQCBib29sIE1lZGlhQ29udHJvbGxlcjo6aGFzRW5kZWQoKSBjb25zdAogICAgIHJldHVybiBh
bGxIYXZlRW5kZWQ7CiB9CiAKLXZvaWQgTWVkaWFDb250cm9sbGVyOjpzY2hlZHVsZUV2ZW50KGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lKQordm9pZCBNZWRpYUNvbnRyb2xsZXI6OnNjaGVk
dWxlRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgZXZlbnROYW1lKQogewogICAgIG1fcGVuZGluZ0V2
ZW50cy5hcHBlbmQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWUsIEV2ZW50OjpDYW5CdWJibGU6Ok5v
LCBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXMpKTsKICAgICBpZiAoIW1fYXN5bmNFdmVudFRpbWVy
LmlzQWN0aXZlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJv
bGxlci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuaAppbmRleCBlNTIy
YzhhZTMyOWMzNmRiOWJhNTllMjk0YzQ4M2JiN2NlZDQ3YTQ0Li41MzhkYzJlNzgyMjk0NDdkOTc2
MWE4MzdmNWUyOTY0OWM4MTBkYWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01l
ZGlhQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVy
LmgKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAgIGJvb2wgbXV0ZWQoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX211dGVkOyB9CiAgICAgdm9pZCBzZXRNdXRlZChib29sKSBmaW5hbDsKIAot
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgcGxheWJhY2tTdGF0ZSgpIGNvbnN0OworICAgIGNvbnN0
IEF0b21TdHJpbmcmIHBsYXliYWNrU3RhdGUoKSBjb25zdDsKIAogICAgIHVzaW5nIFJlZkNvdW50
ZWQ6OnJlZjsKICAgICB1c2luZyBSZWZDb3VudGVkOjpkZXJlZjsKQEAgLTg1LDcgKzg1LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVBsYXliYWNrU3RhdGUoKTsKICAgICB2b2lkIHVwZGF0
ZU1lZGlhRWxlbWVudHMoKTsKICAgICB2b2lkIGJyaW5nRWxlbWVudFVwVG9TcGVlZChIVE1MTWVk
aWFFbGVtZW50Jik7Ci0gICAgdm9pZCBzY2hlZHVsZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnROYW1lKTsKKyAgICB2b2lkIHNjaGVkdWxlRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgZXZl
bnROYW1lKTsKICAgICB2b2lkIGFzeW5jRXZlbnRUaW1lckZpcmVkKCk7CiAgICAgdm9pZCBjbGVh
clBvc2l0aW9uVGltZXJGaXJlZCgpOwogICAgIGJvb2wgaGFzRW5kZWQoKSBjb25zdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL01lZGlhRG9jdW1lbnQuY3BwCmluZGV4IDAzNTYyZTdmOTFjZjUzMTc4NTU1Nzc1
MjZlNzEzMGFkNjczM2Y4ZWYuLmFhZWQ1YWUyM2QyODgxMDQ3ZDE1Mjc0NWM3ZWY4NWE5OTg0ODM4
ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYURvY3VtZW50LmNwcApAQCAtMTAwLDggKzEwMCw4
IEBAIHZvaWQgTWVkaWFEb2N1bWVudFBhcnNlcjo6Y3JlYXRlRG9jdW1lbnRTdHJ1Y3R1cmUoKQog
ICAgIHJvb3RFbGVtZW50LT5hcHBlbmRDaGlsZChoZWFkRWxlbWVudCk7CiAKICAgICBhdXRvIG1l
dGFFbGVtZW50ID0gSFRNTE1ldGFFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwotICAgIG1ldGFF
bGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKG5hbWVBdHRyLCBBdG9t
aWNTdHJpbmcoInZpZXdwb3J0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkp
OwotICAgIG1ldGFFbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGNv
bnRlbnRBdHRyLCBBdG9taWNTdHJpbmcoIndpZHRoPWRldmljZS13aWR0aCxpbml0aWFsLXNjYWxl
PTEiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgbWV0YUVsZW1l
bnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24obmFtZUF0dHIsIEF0b21TdHJp
bmcoInZpZXdwb3J0IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBt
ZXRhRWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihjb250ZW50QXR0
ciwgQXRvbVN0cmluZygid2lkdGg9ZGV2aWNlLXdpZHRoLGluaXRpYWwtc2NhbGU9MSIsIEF0b21T
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CiAgICAgaGVhZEVsZW1lbnQtPmFwcGVuZENo
aWxkKG1ldGFFbGVtZW50KTsKICNlbmRpZgogCkBAIC0yNDUsMTUgKzI0NSwxNSBAQCB2b2lkIE1l
ZGlhRG9jdW1lbnQ6OnJlcGxhY2VNZWRpYUVsZW1lbnRUaW1lckZpcmVkKCkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgLy8gU2V0IGJvZHkgbWFyZ2luIHdpZHRoIGFuZCBoZWlnaHQgdG8gMCBhcyB0
aGF0IGlzIHdoYXQgYSBQbHVnaW5Eb2N1bWVudCB1c2VzLgotICAgIGh0bWxCb2R5LT5zZXRBdHRy
aWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKG1hcmdpbndpZHRoQXR0ciwgQXRvbWljU3RyaW5n
KCIwIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIGh0bWxCb2R5
LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKG1hcmdpbmhlaWdodEF0dHIsIEF0
b21pY1N0cmluZygiMCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAg
ICBodG1sQm9keS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihtYXJnaW53aWR0
aEF0dHIsIEF0b21TdHJpbmcoIjAiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkp
OworICAgIGh0bWxCb2R5LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKG1hcmdp
bmhlaWdodEF0dHIsIEF0b21TdHJpbmcoIjAiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCkpOwogCiAgICAgaWYgKGF1dG8gdmlkZW9FbGVtZW50ID0gbWFrZVJlZlB0cihkZXNjZW5k
YW50VmlkZW9FbGVtZW50KCpodG1sQm9keSkpKSB7CiAgICAgICAgIGF1dG8gZW1iZWRFbGVtZW50
ID0gSFRNTEVtYmVkRWxlbWVudDo6Y3JlYXRlKCp0aGlzKTsKIAotICAgICAgICBlbWJlZEVsZW1l
bnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24od2lkdGhBdHRyLCBBdG9taWNT
dHJpbmcoIjEwMCUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAg
ICAgIGVtYmVkRWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihoZWln
aHRBdHRyLCBBdG9taWNTdHJpbmcoIjEwMCUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKSk7Ci0gICAgICAgIGVtYmVkRWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNo
cm9uaXphdGlvbihuYW1lQXR0ciwgQXRvbWljU3RyaW5nKCJwbHVnaW4iLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgICAgIGVtYmVkRWxlbWVudC0+c2V0QXR0cmli
dXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih3aWR0aEF0dHIsIEF0b21TdHJpbmcoIjEwMCUiLCBB
dG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgICAgICBlbWJlZEVsZW1lbnQt
PnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oaGVpZ2h0QXR0ciwgQXRvbVN0cmlu
ZygiMTAwJSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgICAgIGVt
YmVkRWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihuYW1lQXR0ciwg
QXRvbVN0cmluZygicGx1Z2luIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsK
ICAgICAgICAgZW1iZWRFbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9u
KHNyY0F0dHIsIHVybCgpLnN0cmluZygpKTsKIAogICAgICAgICBBU1NFUlQobG9hZGVyKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVuY3J5cHRlZEV2ZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbmNyeXB0ZWRFdmVudC5jcHAKaW5kZXggNDhiYjVh
MmYxZmE4NTQwOGRkOTE4YTc2NzUzMjM2NWIzOGU2MTJmNi4uZjZlNGVmOGY3ZWI1MGUzM2MwZGYy
ZTA3ZGMzNDQ5NjAwYTMwYzlmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRp
YUVuY3J5cHRlZEV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRW5jcnlw
dGVkRXZlbnQuY3BwCkBAIC0zNSw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
TWVkaWFFbmNyeXB0ZWRFdmVudDo6TWVkaWFFbmNyeXB0ZWRFdmVudChjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUsIGNvbnN0IE1lZGlhRW5jcnlwdGVkRXZlbnRJbml0JiBpbml0aWFsaXplciwgSXNU
cnVzdGVkIGlzVHJ1c3RlZCkKK01lZGlhRW5jcnlwdGVkRXZlbnQ6Ok1lZGlhRW5jcnlwdGVkRXZl
bnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3QgTWVkaWFFbmNyeXB0ZWRFdmVudEluaXQm
IGluaXRpYWxpemVyLCBJc1RydXN0ZWQgaXNUcnVzdGVkKQogICAgIDogRXZlbnQodHlwZSwgaW5p
dGlhbGl6ZXIsIGlzVHJ1c3RlZCkKICAgICAsIG1faW5pdERhdGFUeXBlKGluaXRpYWxpemVyLmlu
aXREYXRhVHlwZSkKICAgICAsIG1faW5pdERhdGEoaW5pdGlhbGl6ZXIuaW5pdERhdGEpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRW5jcnlwdGVkRXZlbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvTWVkaWFFbmNyeXB0ZWRFdmVudC5oCmluZGV4IGI1MjE5YzFkMGNlMDg5
NTcwYmUxYTk3ZTg5NWU5ZTg5OGZhNmY4OGYuLjQ1YjM0NGViZTdiMjczM2MzMzQwZWI1OGExODJk
ZWZlNDZiMWM2YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbmNyeXB0
ZWRFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbmNyeXB0ZWRFdmVudC5o
CkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIE1lZGlhRW5jcnlwdGVkRXZlbnQgZmluYWwgOiBwdWJs
aWMgRXZlbnQgewogcHVibGljOgogICAgIHVzaW5nIEluaXQgPSBNZWRpYUVuY3J5cHRlZEV2ZW50
SW5pdDsKIAotICAgIHN0YXRpYyBSZWY8TWVkaWFFbmNyeXB0ZWRFdmVudD4gY3JlYXRlKGNvbnN0
IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgTWVkaWFFbmNyeXB0ZWRFdmVudEluaXQmIGluaXRp
YWxpemVyLCBJc1RydXN0ZWQgaXNUcnVzdGVkID0gSXNUcnVzdGVkOjpObykKKyAgICBzdGF0aWMg
UmVmPE1lZGlhRW5jcnlwdGVkRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBj
b25zdCBNZWRpYUVuY3J5cHRlZEV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIsIElzVHJ1c3RlZCBpc1Ry
dXN0ZWQgPSBJc1RydXN0ZWQ6Ok5vKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgTWVkaWFFbmNyeXB0ZWRFdmVudCh0eXBlLCBpbml0aWFsaXplciwgaXNUcnVzdGVkKSk7CiAg
ICAgfQpAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgSlNDOjpBcnJheUJ1ZmZlciogaW5p
dERhdGEoKSB7IHJldHVybiBtX2luaXREYXRhLmdldCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgTWVk
aWFFbmNyeXB0ZWRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmLCBjb25zdCBNZWRpYUVuY3J5cHRl
ZEV2ZW50SW5pdCYsIElzVHJ1c3RlZCk7CisgICAgTWVkaWFFbmNyeXB0ZWRFdmVudChjb25zdCBB
dG9tU3RyaW5nJiwgY29uc3QgTWVkaWFFbmNyeXB0ZWRFdmVudEluaXQmLCBJc1RydXN0ZWQpOwog
CiAgICAgLy8gRXZlbnQKICAgICBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Nb250aElucHV0VHlw
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01vbnRoSW5wdXRUeXBlLmNwcAppbmRleCBmOTJi
MzU1MzVhMWQ2ZWEyMzM2N2E2OTYwNTJmMThhMjNmMWUyNGUxLi43M2VhNjc2MDY4OGZjY2M0MTFk
ZmQwNzgzYWNmYzYzMDk2MzEyNmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01v
bnRoSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01vbnRoSW5wdXRUeXBl
LmNwcApAQCAtNDgsNyArNDgsNyBAQCBzdGF0aWMgY29uc3QgaW50IG1vbnRoRGVmYXVsdFN0ZXBC
YXNlID0gMDsKIHN0YXRpYyBjb25zdCBpbnQgbW9udGhTdGVwU2NhbGVGYWN0b3IgPSAxOwogc3Rh
dGljIGNvbnN0IFN0ZXBSYW5nZTo6U3RlcERlc2NyaXB0aW9uIG1vbnRoU3RlcERlc2NyaXB0aW9u
IHsgbW9udGhEZWZhdWx0U3RlcCwgbW9udGhEZWZhdWx0U3RlcEJhc2UsIG1vbnRoU3RlcFNjYWxl
RmFjdG9yLCBTdGVwUmFuZ2U6OlBhcnNlZFN0ZXBWYWx1ZVNob3VsZEJlSW50ZWdlciB9OwogCi1j
b25zdCBBdG9taWNTdHJpbmcmIE1vbnRoSW5wdXRUeXBlOjpmb3JtQ29udHJvbFR5cGUoKSBjb25z
dAorY29uc3QgQXRvbVN0cmluZyYgTW9udGhJbnB1dFR5cGU6OmZvcm1Db250cm9sVHlwZSgpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIElucHV0VHlwZU5hbWVzOjptb250aCgpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Nb250aElucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9Nb250aElucHV0VHlwZS5oCmluZGV4IDIwNTYyMWYyOWZlN2Q1NDMzNjA2NDUzOGFiMDRh
ZmI5NzVlYTIzZjEuLmFjZjk1ODg2MTM2N2E3M2ExYzRkZWMyYzg5NzkyYjg2MjIzZTgzYWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTW9udGhJbnB1dFR5cGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL01vbnRoSW5wdXRUeXBlLmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGlj
OgogICAgIGV4cGxpY2l0IE1vbnRoSW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQp
IDogQmFzZUNob29zZXJPbmx5RGF0ZUFuZFRpbWVJbnB1dFR5cGUoZWxlbWVudCkgeyB9CiAKIHBy
aXZhdGU6Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdCBv
dmVycmlkZTsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdCBv
dmVycmlkZTsKICAgICBEYXRlQ29tcG9uZW50czo6VHlwZSBkYXRlVHlwZSgpIGNvbnN0IG92ZXJy
aWRlOwogICAgIGRvdWJsZSB2YWx1ZUFzRGF0ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFN0cmlu
ZyBzZXJpYWxpemVXaXRoTWlsbGlzZWNvbmRzKGRvdWJsZSkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL051bWJlcklucHV0VHlwZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL051bWJlcklucHV0VHlwZS5jcHAKaW5kZXggMDVmZjA3ZDg2ODgzYzFiMmM2
MDMxOWEwYzVkYTQzZjQ3NzY4YWJjOC4uYWEyZWQyZTM4ODdlY2VmMzM0ZDkzMjg4M2E2NjMxNzdi
ODI4Y2MxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRUeXBlLmNwcApAQCAtODYs
NyArODYsNyBAQCBzdGF0aWMgUmVhbE51bWJlclJlbmRlclNpemUgY2FsY3VsYXRlUmVuZGVyU2l6
ZShjb25zdCBEZWNpbWFsJiB2YWx1ZSkKICAgICByZXR1cm4geyBzaXplT2ZTaWduICsgc2l6ZU9m
WmVybyAsIG51bWJlck9mWmVyb0FmdGVyRGVjaW1hbFBvaW50ICsgc2l6ZU9mRGlnaXRzIH07CiB9
CiAKLWNvbnN0IEF0b21pY1N0cmluZyYgTnVtYmVySW5wdXRUeXBlOjpmb3JtQ29udHJvbFR5cGUo
KSBjb25zdAorY29uc3QgQXRvbVN0cmluZyYgTnVtYmVySW5wdXRUeXBlOjpmb3JtQ29udHJvbFR5
cGUoKSBjb25zdAogewogICAgIHJldHVybiBJbnB1dFR5cGVOYW1lczo6bnVtYmVyKCk7CiB9CkBA
IC0xNTEsNyArMTUxLDcgQEAgU3RlcFJhbmdlIE51bWJlcklucHV0VHlwZTo6Y3JlYXRlU3RlcFJh
bmdlKEFueVN0ZXBIYW5kbGluZyBhbnlTdGVwSGFuZGxpbmcpIGNvbnMKIAogICAgIFJhbmdlTGlt
aXRhdGlvbnMgcmFuZ2VMaW1pdGF0aW9ucyA9IFJhbmdlTGltaXRhdGlvbnM6OkludmFsaWQ7CiAg
ICAgYXV0byBleHRyYWN0Qm91bmQgPSBbJl0gKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0
ZU5hbWUsIGNvbnN0IERlY2ltYWwmIGRlZmF1bHRWYWx1ZSkgLT4gRGVjaW1hbCB7Ci0gICAgICAg
IGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlVmFsdWUgPSBlbGVtZW50LmF0dHJpYnV0ZVdp
dGhvdXRTeW5jaHJvbml6YXRpb24oYXR0cmlidXRlTmFtZSk7CisgICAgICAgIGNvbnN0IEF0b21T
dHJpbmcmIGF0dHJpYnV0ZVZhbHVlID0gZWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25p
emF0aW9uKGF0dHJpYnV0ZU5hbWUpOwogICAgICAgICBEZWNpbWFsIHZhbHVlRnJvbUF0dHJpYnV0
ZSA9IHBhcnNlVG9OdW1iZXJPck5hTihhdHRyaWJ1dGVWYWx1ZSk7CiAgICAgICAgIGlmICh2YWx1
ZUZyb21BdHRyaWJ1dGUuaXNGaW5pdGUoKSkgewogICAgICAgICAgICAgcmFuZ2VMaW1pdGF0aW9u
cyA9IFJhbmdlTGltaXRhdGlvbnM6OlZhbGlkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9OdW1iZXJJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRU
eXBlLmgKaW5kZXggZmVkMWFiYTAzNWZjNTg3MGZjM2VmZjYwYWYyZmM4MzczN2NhNjE0Yi4uZGU1
MWE0YTMwZDUzMDBkYjI1MmQ4MjA5NzZjYWMyZDI0YTE1ZTA3MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L051bWJlcklucHV0VHlwZS5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNp
dCBOdW1iZXJJbnB1dFR5cGUoSFRNTElucHV0RWxlbWVudCYgZWxlbWVudCkgOiBUZXh0RmllbGRJ
bnB1dFR5cGUoZWxlbWVudCkgeyB9CiAKIHByaXZhdGU6Ci0gICAgY29uc3QgQXRvbWljU3RyaW5n
JiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdCBmaW5hbDsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBm
b3JtQ29udHJvbFR5cGUoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHNldFZhbHVlKGNvbnN0IFN0
cmluZyYsIGJvb2wgdmFsdWVDaGFuZ2VkLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yKSBmaW5hbDsK
ICAgICBkb3VibGUgdmFsdWVBc0RvdWJsZSgpIGNvbnN0IGZpbmFsOwogICAgIEV4Y2VwdGlvbk9y
PHZvaWQ+IHNldFZhbHVlQXNEb3VibGUoZG91YmxlLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yKSBj
b25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUGFzc3dvcmRJbnB1
dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9QYXNzd29yZElucHV0VHlwZS5jcHAKaW5k
ZXggYWYyZTM4Y2YzNDdjY2UxMGUzNzQyZmY0MTU3N2I0ZWJlYzNmODViMS4uZjdiOTc1ZTFkMTlm
ZGU2ZjU2NmY2YWJjMWMxYTA0YTlmZTA5OGNkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9QYXNzd29yZElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9QYXNz
d29yZElucHV0VHlwZS5jcHAKQEAgLTM5LDcgKzM5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1jb25zdCBBdG9taWNTdHJpbmcmIFBhc3N3b3JkSW5wdXRUeXBlOjpmb3JtQ29udHJvbFR5
cGUoKSBjb25zdAorY29uc3QgQXRvbVN0cmluZyYgUGFzc3dvcmRJbnB1dFR5cGU6OmZvcm1Db250
cm9sVHlwZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIElucHV0VHlwZU5hbWVzOjpwYXNzd29yZCgp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9QYXNzd29yZElucHV0VHlwZS5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9QYXNzd29yZElucHV0VHlwZS5oCmluZGV4IDFlMGY1ZTM0
YzY3MTNhNDdiM2M3M2VmNmU3MTQ5YTdmMWMwNGEzYjYuLmQ0ZmQwY2YyMjU1YjIwMjVlYTFjMmFj
MzQxNzM2MjM1MzZjMjljZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUGFzc3dv
cmRJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1Bhc3N3b3JkSW5wdXRUeXBl
LmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFBhc3N3b3JkSW5wdXRU
eXBlKEhUTUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQpIDogQmFzZVRleHRJbnB1dFR5cGUoZWxlbWVu
dCkgeyB9CiAKIHByaXZhdGU6Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBmb3JtQ29udHJvbFR5
cGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBmb3JtQ29udHJvbFR5
cGUoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIHNob3VsZFNhdmVBbmRSZXN0b3JlRm9ybUNv
bnRyb2xTdGF0ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIEZvcm1Db250cm9sU3RhdGUgc2F2ZUZv
cm1Db250cm9sU3RhdGUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHJlc3RvcmVGb3JtQ29u
dHJvbFN0YXRlKGNvbnN0IEZvcm1Db250cm9sU3RhdGUmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9QbHVnaW5Eb2N1bWVudC5jcHAKaW5kZXggNTBlMTlkZjc3N2MyNWZiOGY1NGUyMDJmMmQy
YjVlZmE1MmFmNTVlYS4uYTdhYzJmN2M3NzVjNGFmZGVlODkwYmQzZGRmNmQyMjMyZjJkZDIwYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5jcHAKQEAgLTgyLDEyICs4MiwxMiBA
QCB2b2lkIFBsdWdpbkRvY3VtZW50UGFyc2VyOjpjcmVhdGVEb2N1bWVudFN0cnVjdHVyZSgpCiAj
ZW5kaWYKIAogICAgIGF1dG8gYm9keSA9IEhUTUxCb2R5RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50
KTsKLSAgICBib2R5LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKG1hcmdpbndp
ZHRoQXR0ciwgQXRvbWljU3RyaW5nKCIwIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCkpOwotICAgIGJvZHktPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24obWFy
Z2luaGVpZ2h0QXR0ciwgQXRvbWljU3RyaW5nKCIwIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCkpOworICAgIGJvZHktPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRp
b24obWFyZ2lud2lkdGhBdHRyLCBBdG9tU3RyaW5nKCIwIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpKTsKKyAgICBib2R5LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKG1hcmdpbmhlaWdodEF0dHIsIEF0b21TdHJpbmcoIjAiLCBBdG9tU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCkpOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgYm9keS0+c2V0
QXR0cmlidXRlKHN0eWxlQXR0ciwgQXRvbWljU3RyaW5nKCJiYWNrZ3JvdW5kLWNvbG9yOiByZ2Io
MjE3LDIyNCwyMzMpIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAg
IGJvZHktPnNldEF0dHJpYnV0ZShzdHlsZUF0dHIsIEF0b21TdHJpbmcoImJhY2tncm91bmQtY29s
b3I6IHJnYigyMTcsMjI0LDIzMykiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkp
OwogI2Vsc2UKLSAgICBib2R5LT5zZXRBdHRyaWJ1dGUoc3R5bGVBdHRyLCBBdG9taWNTdHJpbmco
ImJhY2tncm91bmQtY29sb3I6IHJnYigzOCwzOCwzOCkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKSk7CisgICAgYm9keS0+c2V0QXR0cmlidXRlKHN0eWxlQXR0ciwgQXRvbVN0
cmluZygiYmFja2dyb3VuZC1jb2xvcjogcmdiKDM4LDM4LDM4KSIsIEF0b21TdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKSk7CiAjZW5kaWYKIAogICAgIHJvb3RFbGVtZW50LT5hcHBlbmRDaGls
ZChib2R5KTsKQEAgLTk1LDEwICs5NSwxMCBAQCB2b2lkIFBsdWdpbkRvY3VtZW50UGFyc2VyOjpj
cmVhdGVEb2N1bWVudFN0cnVjdHVyZSgpCiAgICAgYXV0byBlbWJlZEVsZW1lbnQgPSBIVE1MRW1i
ZWRFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwogICAgICAgICAKICAgICBtX2VtYmVkRWxlbWVu
dCA9IGVtYmVkRWxlbWVudC5wdHIoKTsKLSAgICBlbWJlZEVsZW1lbnQtPnNldEF0dHJpYnV0ZVdp
dGhvdXRTeW5jaHJvbml6YXRpb24od2lkdGhBdHRyLCBBdG9taWNTdHJpbmcoIjEwMCUiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgZW1iZWRFbGVtZW50LT5zZXRB
dHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGhlaWdodEF0dHIsIEF0b21pY1N0cmluZygi
MTAwJSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBlbWJlZEVs
ZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24od2lkdGhBdHRyLCBBdG9t
U3RyaW5nKCIxMDAlIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBl
bWJlZEVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oaGVpZ2h0QXR0
ciwgQXRvbVN0cmluZygiMTAwJSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7
CiAgICAgCi0gICAgZW1iZWRFbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKG5hbWVBdHRyLCBBdG9taWNTdHJpbmcoInBsdWdpbiIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpKTsKKyAgICBlbWJlZEVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24obmFtZUF0dHIsIEF0b21TdHJpbmcoInBsdWdpbiIsIEF0b21TdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CiAgICAgZW1iZWRFbGVtZW50LT5zZXRBdHRyaWJ1dGVX
aXRob3V0U3luY2hyb25pemF0aW9uKHNyY0F0dHIsIGRvY3VtZW50LnVybCgpLnN0cmluZygpKTsK
ICAgICAKICAgICBBU1NFUlQoZG9jdW1lbnQubG9hZGVyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9SYWRpb0lucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1Jh
ZGlvSW5wdXRUeXBlLmNwcAppbmRleCBhYzlhOWMyNTQ2ODFiMWQzMzFjN2U0ZGE0MGI0MmFkOWFj
NTM0ODc1Li4zMTlmMjU3MmQxMjgwOTRlOTVhYjAyNDMxOGU3MWFlNGE0YmViMDRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhZGlvSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1JhZGlvSW5wdXRUeXBlLmNwcApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLWNvbnN0IEF0b21p
Y1N0cmluZyYgUmFkaW9JbnB1dFR5cGU6OmZvcm1Db250cm9sVHlwZSgpIGNvbnN0Citjb25zdCBB
dG9tU3RyaW5nJiBSYWRpb0lucHV0VHlwZTo6Zm9ybUNvbnRyb2xUeXBlKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gSW5wdXRUeXBlTmFtZXM6OnJhZGlvKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1JhZGlvSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhZGlv
SW5wdXRUeXBlLmgKaW5kZXggNzIwZGQ0ZTQ0ZWEyMDAxZDNhZjFkMzJmNDVlZGM0ODA3MzU5OTY2
YS4uNzAyYzI3ZmM0YmNmMzY3NzIzYTFiMmVkYjI5OWU0OWU2YjQ2MTA4OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9SYWRpb0lucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvUmFkaW9JbnB1dFR5cGUuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgZXhw
bGljaXQgUmFkaW9JbnB1dFR5cGUoSFRNTElucHV0RWxlbWVudCYgZWxlbWVudCkgOiBCYXNlQ2hl
Y2thYmxlSW5wdXRUeXBlKGVsZW1lbnQpIHsgfQogCiBwcml2YXRlOgotICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3QgZmluYWw7CisgICAgY29uc3QgQXRvbVN0
cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCB2YWx1ZU1pc3Np
bmcoY29uc3QgU3RyaW5nJikgY29uc3QgZmluYWw7CiAgICAgU3RyaW5nIHZhbHVlTWlzc2luZ1Rl
eHQoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIGhhbmRsZUNsaWNrRXZlbnQoTW91c2VFdmVudCYp
IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYWRpb05vZGVMaXN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFkaW9Ob2RlTGlzdC5jcHAKaW5kZXggYTk0ZjYzNzkz
M2YyYmFkZmY0OTkxNDA3ZmM4NGIyOTMzYmFhMjk0Ny4uNGM5ODBmYjM2MzBmZWFjNzdmODY0MTYy
MGMzNjkyYTFlZTc0NzhiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYWRpb05v
ZGVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhZGlvTm9kZUxpc3QuY3BwCkBA
IC00MCw3ICs0MCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIFdURl9NQUtFX0lT
T19BTExPQ0FURURfSU1QTChSYWRpb05vZGVMaXN0KTsKIAotUmFkaW9Ob2RlTGlzdDo6UmFkaW9O
b2RlTGlzdChDb250YWluZXJOb2RlJiByb290Tm9kZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
KQorUmFkaW9Ob2RlTGlzdDo6UmFkaW9Ob2RlTGlzdChDb250YWluZXJOb2RlJiByb290Tm9kZSwg
Y29uc3QgQXRvbVN0cmluZyYgbmFtZSkKICAgICA6IENhY2hlZExpdmVOb2RlTGlzdChyb290Tm9k
ZSwgSW52YWxpZGF0ZUZvckZvcm1Db250cm9scykKICAgICAsIG1fbmFtZShuYW1lKQogICAgICwg
bV9pc1Jvb3RlZEF0RG9jdW1lbnQoaXM8SFRNTEZvcm1FbGVtZW50Pihvd25lck5vZGUoKSkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhZGlvTm9kZUxpc3QuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvUmFkaW9Ob2RlTGlzdC5oCmluZGV4IGUwZTMzNmIwNWNjZjczODRjNGZjMzQ1
ZGY3OGMxYTdiNzBkNzZhOTYuLmEzMDI3NjMzMGM3ZmRiNmNjZjYyYjIxOGU3YjE3MmQwMjNkOGE2
YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFkaW9Ob2RlTGlzdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFkaW9Ob2RlTGlzdC5oCkBAIC0yOCwxNCArMjgsMTQgQEAK
IAogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiTGl2ZU5vZGVMaXN0LmgiCi0j
aW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRv
bVN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJhZGlvTm9kZUxpc3Qg
ZmluYWwgOiBwdWJsaWMgQ2FjaGVkTGl2ZU5vZGVMaXN0PFJhZGlvTm9kZUxpc3Q+IHsKICAgICBX
VEZfTUFLRV9JU09fQUxMT0NBVEVEKFJhZGlvTm9kZUxpc3QpOwogcHVibGljOgotICAgIHN0YXRp
YyBSZWY8UmFkaW9Ob2RlTGlzdD4gY3JlYXRlKENvbnRhaW5lck5vZGUmIHJvb3ROb2RlLCBjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWUpCisgICAgc3RhdGljIFJlZjxSYWRpb05vZGVMaXN0PiBjcmVh
dGUoQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUsIGNvbnN0IEF0b21TdHJpbmcmIG5hbWUpCiAgICAg
ewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSYWRpb05vZGVMaXN0KHJvb3ROb2RlLCBu
YW1lKSk7CiAgICAgfQpAQCAtNTEsMTAgKzUxLDEwIEBAIHB1YmxpYzoKICAgICBib29sIGlzUm9v
dGVkQXREb2N1bWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faXNSb290ZWRBdERvY3Vt
ZW50OyB9CiAKIHByaXZhdGU6Ci0gICAgUmFkaW9Ob2RlTGlzdChDb250YWluZXJOb2RlJiwgY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lKTsKKyAgICBSYWRpb05vZGVMaXN0KENvbnRhaW5lck5vZGUm
LCBjb25zdCBBdG9tU3RyaW5nJiBuYW1lKTsKICAgICBib29sIGNoZWNrRWxlbWVudE1hdGNoZXNS
YWRpb05vZGVMaXN0RmlsdGVyKGNvbnN0IEVsZW1lbnQmKSBjb25zdDsKIAotICAgIEF0b21pY1N0
cmluZyBtX25hbWU7CisgICAgQXRvbVN0cmluZyBtX25hbWU7CiAgICAgYm9vbCBtX2lzUm9vdGVk
QXREb2N1bWVudDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJ
bnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAKaW5k
ZXggMTZkZjFkNWE0YTNiNjA1YWEyZTgyYTA0Y2RhMWFkYjM3ZjA0MDJhYi4uMWUwZjhiZTgzYTA3
ZDNlY2E3YjljNDNlNjYwZWVjMDQ3YzYxYzFmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9SYW5nZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlu
cHV0VHlwZS5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgYm9vbCBSYW5nZUlucHV0VHlwZTo6aXNSYW5n
ZUNvbnRyb2woKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1jb25zdCBBdG9taWNTdHJp
bmcmIFJhbmdlSW5wdXRUeXBlOjpmb3JtQ29udHJvbFR5cGUoKSBjb25zdAorY29uc3QgQXRvbVN0
cmluZyYgUmFuZ2VJbnB1dFR5cGU6OmZvcm1Db250cm9sVHlwZSgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIElucHV0VHlwZU5hbWVzOjpyYW5nZSgpOwogfQpAQCAtMTIwLDcgKzEyMCw3IEBAIFN0ZXBS
YW5nZSBSYW5nZUlucHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKEFueVN0ZXBIYW5kbGluZyBhbnlT
dGVwSGFuZGxpbmcpIGNvbnN0CiAgICAgY29uc3QgRGVjaW1hbCBtaW5pbXVtID0gcGFyc2VUb051
bWJlcihlbGVtZW50KCktPmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24obWluQXR0ciks
IHJhbmdlRGVmYXVsdE1pbmltdW0pOwogICAgIGNvbnN0IERlY2ltYWwgbWF4aW11bSA9IGVuc3Vy
ZU1heGltdW0ocGFyc2VUb051bWJlcihlbGVtZW50KCktPmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24obWF4QXR0ciksIHJhbmdlRGVmYXVsdE1heGltdW0pLCBtaW5pbXVtLCByYW5nZURl
ZmF1bHRNYXhpbXVtKTsKIAotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgcHJlY2lzaW9uVmFsdWUg
PSBlbGVtZW50KCktPmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24ocHJlY2lzaW9uQXR0
cik7CisgICAgY29uc3QgQXRvbVN0cmluZyYgcHJlY2lzaW9uVmFsdWUgPSBlbGVtZW50KCktPmF0
dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24ocHJlY2lzaW9uQXR0cik7CiAgICAgaWYgKCFw
cmVjaXNpb25WYWx1ZS5pc051bGwoKSkgewogICAgICAgICBjb25zdCBEZWNpbWFsIHN0ZXAgPSBl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwcmVjaXNpb25WYWx1ZSwgImZsb2F0IikgPyBE
ZWNpbWFsOjpuYW4oKSA6IDE7CiAgICAgICAgIHJldHVybiBTdGVwUmFuZ2UobWluaW11bSwgUmFu
Z2VMaW1pdGF0aW9uczo6VmFsaWQsIG1pbmltdW0sIG1heGltdW0sIHN0ZXAsIHJhbmdlU3RlcERl
c2NyaXB0aW9uKTsKQEAgLTI2MCw3ICsyNjAsNyBAQCB2b2lkIFJhbmdlSW5wdXRUeXBlOjpjcmVh
dGVTaGFkb3dTdWJ0cmVlKCkKIAogICAgIERvY3VtZW50JiBkb2N1bWVudCA9IGVsZW1lbnQoKS0+
ZG9jdW1lbnQoKTsKICAgICBhdXRvIHRyYWNrID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2N1
bWVudCk7Ci0gICAgdHJhY2stPnNldFBzZXVkbyhBdG9taWNTdHJpbmcoIi13ZWJraXQtc2xpZGVy
LXJ1bm5hYmxlLXRyYWNrIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwor
ICAgIHRyYWNrLT5zZXRQc2V1ZG8oQXRvbVN0cmluZygiLXdlYmtpdC1zbGlkZXItcnVubmFibGUt
dHJhY2siLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogICAgIHRyYWNrLT5h
cHBlbmRDaGlsZChTbGlkZXJUaHVtYkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCkpOwogICAgIGF1
dG8gY29udGFpbmVyID0gU2xpZGVyQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsK
ICAgICBjb250YWluZXItPmFwcGVuZENoaWxkKHRyYWNrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJ
bnB1dFR5cGUuaAppbmRleCAwODY2NmY1MGUxOWY4YjJlOTA1ZWYxMDA2OTY5NjQ2ZjdjZmE3ZjZl
Li4zMmM4OGU3NjlkMGUxZDQ0Yjc3MzhiZDZjMjM2NDFhYTNiNTE4M2ZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9SYW5nZUlucHV0VHlwZS5oCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKIAogcHJpdmF0
ZToKICAgICBib29sIGlzUmFuZ2VDb250cm9sKCkgY29uc3QgZmluYWw7Ci0gICAgY29uc3QgQXRv
bWljU3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdCBmaW5hbDsKKyAgICBjb25zdCBBdG9t
U3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdCBmaW5hbDsKICAgICBkb3VibGUgdmFsdWVB
c0RvdWJsZSgpIGNvbnN0IGZpbmFsOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFZhbHVlQXNE
ZWNpbWFsKGNvbnN0IERlY2ltYWwmLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yKSBjb25zdCBmaW5h
bDsKICAgICBib29sIHR5cGVNaXNtYXRjaEZvcihjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmVzZXRJbnB1dFR5cGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9SZXNldElucHV0VHlwZS5jcHAKaW5kZXggNDA1Y2IyY2M1OTRhM2Qz
MzExNDZhODU1ZGJmYTE5NWIzYWI3MDkxNS4uZjBjZGJlN2Y4YWQ3YTA3OTliOTM4YzM1NDk3OGQy
YjkzOWQ2MDA0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9SZXNldElucHV0VHlw
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SZXNldElucHV0VHlwZS5jcHAKQEAgLTQw
LDcgKzQwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jb25zdCBBdG9taWNTdHJpbmcm
IFJlc2V0SW5wdXRUeXBlOjpmb3JtQ29udHJvbFR5cGUoKSBjb25zdAorY29uc3QgQXRvbVN0cmlu
ZyYgUmVzZXRJbnB1dFR5cGU6OmZvcm1Db250cm9sVHlwZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IElucHV0VHlwZU5hbWVzOjpyZXNldCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9SZXNldElucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SZXNldElucHV0VHlw
ZS5oCmluZGV4IDJhZDYwMjliZTg0NmYyNDYwYzE4YmFlNThkNWUxOWU4YTAxMDMwNDAuLjk3YWIx
MmE4YjlmNTAzNTBkNzQ5MzdkMjI3M2M3ODZiYTM1OGRkMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvUmVzZXRJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1Jl
c2V0SW5wdXRUeXBlLmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFJl
c2V0SW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQpIDogQmFzZUJ1dHRvbklucHV0
VHlwZShlbGVtZW50KSB7IH0KIAogcHJpdmF0ZToKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGZv
cm1Db250cm9sVHlwZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGNvbnN0IEF0b21TdHJpbmcmIGZv
cm1Db250cm9sVHlwZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgc3VwcG9ydHNWYWxpZGF0
aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBoYW5kbGVET01BY3RpdmF0ZUV2ZW50KEV2
ZW50Jikgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIGRlZmF1bHRWYWx1ZSgpIGNvbnN0IG92ZXJyaWRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuY3BwCmluZGV4IDUzNDNiZWRhOGY5
MjY0MGRhYzM2ZDJkZGFmN2RmMGYxZmNlNjk3MzcuLjJjMzA2YTIwM2NjNGQ1ODc0ZDE0ZjdiMzA2
OWVmYjJiOGEyZDI2YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5w
dXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1NlYXJjaElucHV0VHlwZS5jcHAK
QEAgLTY1LDExICs2NSwxMSBAQCB2b2lkIFNlYXJjaElucHV0VHlwZTo6YWRkU2VhcmNoUmVzdWx0
KCkKIHN0YXRpYyB2b2lkIHVwZGF0ZVJlc3VsdEJ1dHRvblBzZXVkb1R5cGUoU2VhcmNoRmllbGRS
ZXN1bHRzQnV0dG9uRWxlbWVudCYgcmVzdWx0QnV0dG9uLCBpbnQgbWF4UmVzdWx0cykKIHsKICAg
ICBpZiAoIW1heFJlc3VsdHMpCi0gICAgICAgIHJlc3VsdEJ1dHRvbi5zZXRQc2V1ZG8oQXRvbWlj
U3RyaW5nKCItd2Via2l0LXNlYXJjaC1yZXN1bHRzLWRlY29yYXRpb24iLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgICAgIHJlc3VsdEJ1dHRvbi5zZXRQc2V1ZG8o
QXRvbVN0cmluZygiLXdlYmtpdC1zZWFyY2gtcmVzdWx0cy1kZWNvcmF0aW9uIiwgQXRvbVN0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKICAgICBlbHNlIGlmIChtYXhSZXN1bHRzIDwgMCkK
LSAgICAgICAgcmVzdWx0QnV0dG9uLnNldFBzZXVkbyhBdG9taWNTdHJpbmcoIi13ZWJraXQtc2Vh
cmNoLWRlY29yYXRpb24iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Cisg
ICAgICAgIHJlc3VsdEJ1dHRvbi5zZXRQc2V1ZG8oQXRvbVN0cmluZygiLXdlYmtpdC1zZWFyY2gt
ZGVjb3JhdGlvbiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CiAgICAgZWxz
ZQotICAgICAgICByZXN1bHRCdXR0b24uc2V0UHNldWRvKEF0b21pY1N0cmluZygiLXdlYmtpdC1z
ZWFyY2gtcmVzdWx0cy1idXR0b24iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KSk7CisgICAgICAgIHJlc3VsdEJ1dHRvbi5zZXRQc2V1ZG8oQXRvbVN0cmluZygiLXdlYmtpdC1z
ZWFyY2gtcmVzdWx0cy1idXR0b24iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkp
OwogfQogCiB2b2lkIFNlYXJjaElucHV0VHlwZTo6YXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFs
aWZpZWROYW1lJiBuYW1lKQpAQCAtODksNyArODksNyBAQCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVu
dD4gU2VhcmNoSW5wdXRUeXBlOjpjcmVhdGVJbnB1dFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5
bAogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTZWFyY2hGaWVsZD4oKmVsZW1lbnQo
KSwgV1RGTW92ZShzdHlsZSkpOwogfQogCi1jb25zdCBBdG9taWNTdHJpbmcmIFNlYXJjaElucHV0
VHlwZTo6Zm9ybUNvbnRyb2xUeXBlKCkgY29uc3QKK2NvbnN0IEF0b21TdHJpbmcmIFNlYXJjaElu
cHV0VHlwZTo6Zm9ybUNvbnRyb2xUeXBlKCkgY29uc3QKIHsKICAgICByZXR1cm4gSW5wdXRUeXBl
TmFtZXM6OnNlYXJjaCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9TZWFy
Y2hJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBlLmgKaW5k
ZXggMjhkNmE4YjY0ODM1NDFjOWZlNzQ2NThlMTk0NGVkNThjZjc0NWE1MC4uNmYzNjBhM2I4OGM1
ZWM4ZGYxMTc1ODFhZWNhYTRlNDExYTJlMmZjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9TZWFyY2hJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1NlYXJjaElu
cHV0VHlwZS5oCkBAIC00OCw3ICs0OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhZGRTZWFyY2hS
ZXN1bHQoKSBmaW5hbDsKICAgICB2b2lkIGF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVk
TmFtZSYpIGZpbmFsOwogICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVJbnB1dFJl
bmRlcmVyKFJlbmRlclN0eWxlJiYpIGZpbmFsOwotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZm9y
bUNvbnRyb2xUeXBlKCkgY29uc3QgZmluYWw7CisgICAgY29uc3QgQXRvbVN0cmluZyYgZm9ybUNv
bnRyb2xUeXBlKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBpc1NlYXJjaEZpZWxkKCkgY29uc3Qg
ZmluYWw7CiAgICAgYm9vbCBuZWVkc0NvbnRhaW5lcigpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQg
Y3JlYXRlU2hhZG93U3VidHJlZSgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9TdWJtaXRJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9TdWJtaXRJbnB1
dFR5cGUuY3BwCmluZGV4IDFiMWVhMDgwZTM4MDdhYzY1NDJjNWNhMjQ5MTg0NWNjMGM3NTNjOWMu
Ljk4NWFmNjY3MmRjYTgzNmYyMjYxYTBhM2Q3MzZjNjI5YWRiODQ1M2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvU3VibWl0SW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1N1Ym1pdElucHV0VHlwZS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1jb25zdCBBdG9taWNTdHJpbmcmIFN1Ym1pdElucHV0VHlwZTo6Zm9ybUNv
bnRyb2xUeXBlKCkgY29uc3QKK2NvbnN0IEF0b21TdHJpbmcmIFN1Ym1pdElucHV0VHlwZTo6Zm9y
bUNvbnRyb2xUeXBlKCkgY29uc3QKIHsKICAgICByZXR1cm4gSW5wdXRUeXBlTmFtZXM6OnN1Ym1p
dCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9TdWJtaXRJbnB1dFR5cGUu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvU3VibWl0SW5wdXRUeXBlLmgKaW5kZXggMDJkY2VlMDlk
ZDMyZTdhNTZiMWJkNWQ0Y2MwN2MwMWI5N2VjZjRjNC4uZTFlZGUyNzllNDc1NmJlODMzYzNlNTdk
Nzc0NzhiNzEyODc1YjE0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9TdWJtaXRJ
bnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1N1Ym1pdElucHV0VHlwZS5oCkBA
IC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBTdWJtaXRJbnB1dFR5cGUoSFRN
TElucHV0RWxlbWVudCYgZWxlbWVudCkgOiBCYXNlQnV0dG9uSW5wdXRUeXBlKGVsZW1lbnQpIHsg
fQogCiBwcml2YXRlOgotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgY29uc3QgQXRvbVN0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBhcHBlbmRGb3JtRGF0YShET01Gb3JtRGF0YSYsIGJv
b2wpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgc3VwcG9ydHNSZXF1aXJlZCgpIGNvbnN0IG92
ZXJyaWRlOwogICAgIHZvaWQgaGFuZGxlRE9NQWN0aXZhdGVFdmVudChFdmVudCYpIG92ZXJyaWRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZWxlcGhvbmVJbnB1dFR5cGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZWxlcGhvbmVJbnB1dFR5cGUuY3BwCmluZGV4IGM2ZmI0
MTE1MmViNDE1MTIwY2I2NGJkNTljMTcxYzE2ZmRhOTcxZGQuLjgyOGQzMGZiOWU3OGQwNjAyOWUz
YTc5NGZhN2IwZDczMzJiNzhmMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGVs
ZXBob25lSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RlbGVwaG9uZUlu
cHV0VHlwZS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
b25zdCBBdG9taWNTdHJpbmcmIFRlbGVwaG9uZUlucHV0VHlwZTo6Zm9ybUNvbnRyb2xUeXBlKCkg
Y29uc3QKK2NvbnN0IEF0b21TdHJpbmcmIFRlbGVwaG9uZUlucHV0VHlwZTo6Zm9ybUNvbnRyb2xU
eXBlKCkgY29uc3QKIHsKICAgICByZXR1cm4gSW5wdXRUeXBlTmFtZXM6OnRlbGVwaG9uZSgpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZWxlcGhvbmVJbnB1dFR5cGUuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvVGVsZXBob25lSW5wdXRUeXBlLmgKaW5kZXggMWY4ZDVlYTU4
ZmViYjI2YjY3MWJhZDZmZGI4NzcxZTQyYzc4NWExYi4uOTEwNmU1OGM5NDA3MzgwYjllYmFhZDli
MDc3YmQ0NTdhYTY5NjEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZWxlcGhv
bmVJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RlbGVwaG9uZUlucHV0VHlw
ZS5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBUZWxlcGhvbmVJbnB1
dFR5cGUoSFRNTElucHV0RWxlbWVudCYgZWxlbWVudCkgOiBCYXNlVGV4dElucHV0VHlwZShlbGVt
ZW50KSB7IH0KIAogcHJpdmF0ZToKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGZvcm1Db250cm9s
VHlwZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGNvbnN0IEF0b21TdHJpbmcmIGZvcm1Db250cm9s
VHlwZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgaXNUZWxlcGhvbmVGaWVsZCgpIGNvbnN0
IG92ZXJyaWRlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0Rmll
bGRJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUu
Y3BwCmluZGV4IDNkMDUzZjE0M2U1YjdmYzE2ZGQ3NDkzZTBiNWJiYWM5ZmVhNGIxZDcuLmZkYjhl
MzBmZmVjOWJiMDlhY2U2YjI5ZWM2YTMwMWEzOTBlZWQ1ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAKQEAgLTM0OSw3ICszNDksNyBAQCB2b2lkIFRleHRG
aWVsZElucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSgpCiAKICAgICBpZiAoc2hvdWxkSGF2
ZUNhcHNMb2NrSW5kaWNhdG9yKSB7CiAgICAgICAgIG1fY2Fwc0xvY2tJbmRpY2F0b3IgPSBIVE1M
RGl2RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLSAgICAgICAgbV9jYXBzTG9ja0luZGljYXRv
ci0+c2V0UHNldWRvKEF0b21pY1N0cmluZygiLXdlYmtpdC1jYXBzLWxvY2staW5kaWNhdG9yIiwg
QXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgICAgICBtX2NhcHNMb2Nr
SW5kaWNhdG9yLT5zZXRQc2V1ZG8oQXRvbVN0cmluZygiLXdlYmtpdC1jYXBzLWxvY2staW5kaWNh
dG9yIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKIAogICAgICAgICBib29s
IHNob3VsZERyYXdDYXBzTG9ja0luZGljYXRvciA9IHRoaXMtPnNob3VsZERyYXdDYXBzTG9ja0lu
ZGljYXRvcigpOwogICAgICAgICBtX2NhcHNMb2NrSW5kaWNhdG9yLT5zZXRJbmxpbmVTdHlsZVBy
b3BlcnR5KENTU1Byb3BlcnR5RGlzcGxheSwgc2hvdWxkRHJhd0NhcHNMb2NrSW5kaWNhdG9yID8g
Q1NTVmFsdWVCbG9jayA6IENTU1ZhbHVlTm9uZSwgdHJ1ZSk7CkBAIC00NTcsNyArNDU3LDcgQEAg
dm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmNyZWF0ZURhdGFMaXN0RHJvcGRvd25JbmRpY2F0b3Io
KQogICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6RXZlbnRBbGxvd2VkU2NvcGUgYWxsb3dlZFNj
b3BlKCptX2NvbnRhaW5lcik7CiAgICAgbV9kYXRhTGlzdERyb3Bkb3duSW5kaWNhdG9yID0gRGF0
YUxpc3RCdXR0b25FbGVtZW50OjpjcmVhdGUoZWxlbWVudCgpLT5kb2N1bWVudCgpLCAqdGhpcyk7
CiAgICAgbV9jb250YWluZXItPmFwcGVuZENoaWxkKCptX2RhdGFMaXN0RHJvcGRvd25JbmRpY2F0
b3IpOwotICAgIG1fZGF0YUxpc3REcm9wZG93bkluZGljYXRvci0+c2V0UHNldWRvKEF0b21pY1N0
cmluZygiLXdlYmtpdC1saXN0LWJ1dHRvbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpKTsKKyAgICBtX2RhdGFMaXN0RHJvcGRvd25JbmRpY2F0b3ItPnNldFBzZXVkbyhBdG9t
U3RyaW5nKCItd2Via2l0LWxpc3QtYnV0dG9uIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpKTsKICAgICBtX2RhdGFMaXN0RHJvcGRvd25JbmRpY2F0b3ItPnNldElubGluZVN0eWxl
UHJvcGVydHkoQ1NTUHJvcGVydHlEaXNwbGF5LCBDU1NWYWx1ZU5vbmUsIHRydWUpOwogCiB9CkBA
IC01MTgsMTcgKzUxOCwxNyBAQCBzdGF0aWMgU3RyaW5nIGF1dG9GaWxsQnV0dG9uVHlwZVRvQXV0
b0ZpbGxCdXR0b25UZXh0KEF1dG9GaWxsQnV0dG9uVHlwZSBhdXRvRmlsbAogICAgIHJldHVybiB7
IH07CiB9CiAKLXN0YXRpYyBBdG9taWNTdHJpbmcgYXV0b0ZpbGxCdXR0b25UeXBlVG9BdXRvRmls
bEJ1dHRvblBzZXVkb0NsYXNzTmFtZShBdXRvRmlsbEJ1dHRvblR5cGUgYXV0b0ZpbGxCdXR0b25U
eXBlKQorc3RhdGljIEF0b21TdHJpbmcgYXV0b0ZpbGxCdXR0b25UeXBlVG9BdXRvRmlsbEJ1dHRv
blBzZXVkb0NsYXNzTmFtZShBdXRvRmlsbEJ1dHRvblR5cGUgYXV0b0ZpbGxCdXR0b25UeXBlKQog
ewogICAgIHN3aXRjaCAoYXV0b0ZpbGxCdXR0b25UeXBlKSB7CiAgICAgY2FzZSBBdXRvRmlsbEJ1
dHRvblR5cGU6OkNvbnRhY3RzOgotICAgICAgICByZXR1cm4geyAiLXdlYmtpdC1jb250YWN0cy1h
dXRvLWZpbGwtYnV0dG9uIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCB9Owor
ICAgICAgICByZXR1cm4geyAiLXdlYmtpdC1jb250YWN0cy1hdXRvLWZpbGwtYnV0dG9uIiwgQXRv
bVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwgfTsKICAgICBjYXNlIEF1dG9GaWxsQnV0dG9u
VHlwZTo6Q3JlZGVudGlhbHM6Ci0gICAgICAgIHJldHVybiB7ICItd2Via2l0LWNyZWRlbnRpYWxz
LWF1dG8tZmlsbC1idXR0b24iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsIH07
CisgICAgICAgIHJldHVybiB7ICItd2Via2l0LWNyZWRlbnRpYWxzLWF1dG8tZmlsbC1idXR0b24i
LCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCB9OwogICAgIGNhc2UgQXV0b0ZpbGxC
dXR0b25UeXBlOjpTdHJvbmdQYXNzd29yZDoKLSAgICAgICAgcmV0dXJuIHsgIi13ZWJraXQtc3Ry
b25nLXBhc3N3b3JkLWF1dG8tZmlsbC1idXR0b24iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsIH07CisgICAgICAgIHJldHVybiB7ICItd2Via2l0LXN0cm9uZy1wYXNzd29yZC1h
dXRvLWZpbGwtYnV0dG9uIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwgfTsKICAg
ICBjYXNlIEF1dG9GaWxsQnV0dG9uVHlwZTo6Q3JlZGl0Q2FyZDoKLSAgICAgICAgcmV0dXJuIHsg
Ii13ZWJraXQtY3JlZGl0LWNhcmQtYXV0by1maWxsLWJ1dHRvbiIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwgfTsKKyAgICAgICAgcmV0dXJuIHsgIi13ZWJraXQtY3JlZGl0LWNh
cmQtYXV0by1maWxsLWJ1dHRvbiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsIH07
CiAgICAgY2FzZSBBdXRvRmlsbEJ1dHRvblR5cGU6Ok5vbmU6CiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gZW1wdHlBdG9tKCk7CkBAIC01MzcsNyArNTM3LDcg
QEAgc3RhdGljIEF0b21pY1N0cmluZyBhdXRvRmlsbEJ1dHRvblR5cGVUb0F1dG9GaWxsQnV0dG9u
UHNldWRvQ2xhc3NOYW1lKEF1dG9GaWxsQnUKICAgICByZXR1cm4geyB9OwogfQogCi1zdGF0aWMg
Ym9vbCBpc0F1dG9GaWxsQnV0dG9uVHlwZUNoYW5nZWQoY29uc3QgQXRvbWljU3RyaW5nJiBhdHRy
aWJ1dGUsIEF1dG9GaWxsQnV0dG9uVHlwZSBhdXRvRmlsbEJ1dHRvblR5cGUpCitzdGF0aWMgYm9v
bCBpc0F1dG9GaWxsQnV0dG9uVHlwZUNoYW5nZWQoY29uc3QgQXRvbVN0cmluZyYgYXR0cmlidXRl
LCBBdXRvRmlsbEJ1dHRvblR5cGUgYXV0b0ZpbGxCdXR0b25UeXBlKQogewogICAgIGlmIChhdHRy
aWJ1dGUgPT0gIi13ZWJraXQtY29udGFjdHMtYXV0by1maWxsLWJ1dHRvbiIgJiYgYXV0b0ZpbGxC
dXR0b25UeXBlICE9IEF1dG9GaWxsQnV0dG9uVHlwZTo6Q29udGFjdHMpCiAgICAgICAgIHJldHVy
biB0cnVlOwpAQCAtNzgyLDcgKzc4Miw3IEBAIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpjcmVh
dGVDb250YWluZXIoKQogCiAgICAgbV9jb250YWluZXIgPSBUZXh0Q29udHJvbElubmVyQ29udGFp
bmVyOjpjcmVhdGUoZWxlbWVudCgpLT5kb2N1bWVudCgpKTsKICAgICBlbGVtZW50KCktPnVzZXJB
Z2VudFNoYWRvd1Jvb3QoKS0+YXBwZW5kQ2hpbGQoKm1fY29udGFpbmVyKTsKLSAgICBtX2NvbnRh
aW5lci0+c2V0UHNldWRvKEF0b21pY1N0cmluZygiLXdlYmtpdC10ZXh0ZmllbGQtZGVjb3JhdGlv
bi1jb250YWluZXIiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAg
bV9jb250YWluZXItPnNldFBzZXVkbyhBdG9tU3RyaW5nKCItd2Via2l0LXRleHRmaWVsZC1kZWNv
cmF0aW9uLWNvbnRhaW5lciIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CiAK
ICAgICBtX2lubmVyQmxvY2sgPSBUZXh0Q29udHJvbElubmVyRWxlbWVudDo6Y3JlYXRlKGVsZW1l
bnQoKS0+ZG9jdW1lbnQoKSk7CiAgICAgbV9jb250YWluZXItPmFwcGVuZENoaWxkKCptX2lubmVy
QmxvY2spOwpAQCAtNzk5LDcgKzc5OSw3IEBAIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpjcmVh
dGVBdXRvRmlsbEJ1dHRvbihBdXRvRmlsbEJ1dHRvblR5cGUgYXV0b0ZpbGxCdXR0b25UCiAgICAg
QVNTRVJUKGVsZW1lbnQoKSk7CiAgICAgbV9hdXRvRmlsbEJ1dHRvbiA9IEF1dG9GaWxsQnV0dG9u
RWxlbWVudDo6Y3JlYXRlKGVsZW1lbnQoKS0+ZG9jdW1lbnQoKSwgKnRoaXMpOwogICAgIG1fYXV0
b0ZpbGxCdXR0b24tPnNldFBzZXVkbyhhdXRvRmlsbEJ1dHRvblR5cGVUb0F1dG9GaWxsQnV0dG9u
UHNldWRvQ2xhc3NOYW1lKGF1dG9GaWxsQnV0dG9uVHlwZSkpOwotICAgIG1fYXV0b0ZpbGxCdXR0
b24tPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24ocm9sZUF0dHIsIEF0b21pY1N0
cmluZygiYnV0dG9uIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAg
IG1fYXV0b0ZpbGxCdXR0b24tPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24ocm9s
ZUF0dHIsIEF0b21TdHJpbmcoImJ1dHRvbiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7CiAgICAgbV9hdXRvRmlsbEJ1dHRvbi0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9u
aXphdGlvbihhcmlhX2xhYmVsQXR0ciwgYXV0b0ZpbGxCdXR0b25UeXBlVG9BY2Nlc3NpYmlsaXR5
TGFiZWwoYXV0b0ZpbGxCdXR0b25UeXBlKSk7CiAgICAgbV9hdXRvRmlsbEJ1dHRvbi0+c2V0VGV4
dENvbnRlbnQoYXV0b0ZpbGxCdXR0b25UeXBlVG9BdXRvRmlsbEJ1dHRvblRleHQoYXV0b0ZpbGxC
dXR0b25UeXBlKSk7CiAgICAgbV9jb250YWluZXItPmFwcGVuZENoaWxkKCptX2F1dG9GaWxsQnV0
dG9uKTsKQEAgLTgxOCw3ICs4MTgsNyBAQCB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6dXBkYXRl
QXV0b0ZpbGxCdXR0b24oKQogICAgICAgICBpZiAoIW1fYXV0b0ZpbGxCdXR0b24pCiAgICAgICAg
ICAgICBjcmVhdGVBdXRvRmlsbEJ1dHRvbihhdXRvRmlsbEJ1dHRvblR5cGUpOwogCi0gICAgICAg
IGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlID0gbV9hdXRvRmlsbEJ1dHRvbi0+YXR0cmli
dXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihwc2V1ZG9BdHRyKTsKKyAgICAgICAgY29uc3QgQXRv
bVN0cmluZyYgYXR0cmlidXRlID0gbV9hdXRvRmlsbEJ1dHRvbi0+YXR0cmlidXRlV2l0aG91dFN5
bmNocm9uaXphdGlvbihwc2V1ZG9BdHRyKTsKICAgICAgICAgYm9vbCBzaG91bGRVcGRhdGVBdXRv
RmlsbEJ1dHRvblR5cGUgPSBpc0F1dG9GaWxsQnV0dG9uVHlwZUNoYW5nZWQoYXR0cmlidXRlLCBh
dXRvRmlsbEJ1dHRvblR5cGUpOwogICAgICAgICBpZiAoc2hvdWxkVXBkYXRlQXV0b0ZpbGxCdXR0
b25UeXBlKSB7CiAgICAgICAgICAgICBtX2F1dG9GaWxsQnV0dG9uLT5zZXRQc2V1ZG8oYXV0b0Zp
bGxCdXR0b25UeXBlVG9BdXRvRmlsbEJ1dHRvblBzZXVkb0NsYXNzTmFtZShhdXRvRmlsbEJ1dHRv
blR5cGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dElucHV0VHlwZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRJbnB1dFR5cGUuY3BwCmluZGV4IDkwMzJkYjY3
NTdmNWNmMmUxMzdhOTQwYzk2ZGMwZTAxMjFlYTQ5MjAuLjc4NGI2NWUwY2Q5ZDE1ZjcxZjNlY2Fi
Y2NlNDRhY2E1ZjI2M2ZkMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dElu
cHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0SW5wdXRUeXBlLmNwcApA
QCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBI
VE1MTmFtZXM7CiAKLWNvbnN0IEF0b21pY1N0cmluZyYgVGV4dElucHV0VHlwZTo6Zm9ybUNvbnRy
b2xUeXBlKCkgY29uc3QKK2NvbnN0IEF0b21TdHJpbmcmIFRleHRJbnB1dFR5cGU6OmZvcm1Db250
cm9sVHlwZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIElucHV0VHlwZU5hbWVzOjp0ZXh0KCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRJbnB1dFR5cGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvVGV4dElucHV0VHlwZS5oCmluZGV4IDZkN2YzOWRiODVkMTU3OGJhZjNm
MTQwMTgxNTFiMGY4Y2IyYjdkYzQuLmVlODljOGY2YWE5ZjE4YWNjNzlmNWMyYjFhODVhMDI3YmVl
N2QzY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dElucHV0VHlwZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dElucHV0VHlwZS5oCkBAIC0zOSw3ICszOSw3IEBA
IHB1YmxpYzoKICAgICBleHBsaWNpdCBUZXh0SW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQmIGVs
ZW1lbnQpIDogQmFzZVRleHRJbnB1dFR5cGUoZWxlbWVudCkgeyB9CiAKIHByaXZhdGU6Ci0gICAg
Y29uc3QgQXRvbWljU3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBjb25zdCBBdG9tU3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdCBvdmVycmlkZTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvVGltZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVJbnB1dFR5cGUu
Y3BwCmluZGV4IDQyYzM5MTFlZGUyMmJmMTI3ZjljMmM5YWRhZWVkMWRlMzY5ZTI1NzcuLmI0MDQw
ZDM0ZjBjMThlOGM0NjBmMWJmNWM3MWJiYjgzNmJjMzEyZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvVGltZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9U
aW1lSW5wdXRUeXBlLmNwcApAQCAtNTIsNyArNTIsNyBAQCBUaW1lSW5wdXRUeXBlOjpUaW1lSW5w
dXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQpCiB7CiB9CiAKLWNvbnN0IEF0b21pY1N0
cmluZyYgVGltZUlucHV0VHlwZTo6Zm9ybUNvbnRyb2xUeXBlKCkgY29uc3QKK2NvbnN0IEF0b21T
dHJpbmcmIFRpbWVJbnB1dFR5cGU6OmZvcm1Db250cm9sVHlwZSgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIElucHV0VHlwZU5hbWVzOjp0aW1lKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1RpbWVJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGltZUlucHV0VHlw
ZS5oCmluZGV4IDA2NDg2YmNhMjhiNDYyZTU2MGEwODc1YWZkN2U5ODYzZjExYWE4MzMuLmU5ODU1
MDhlZGI5OWQ1NzRiNTgyNDViM2MxYTQwZGFkN2I2Y2M2ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvVGltZUlucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGlt
ZUlucHV0VHlwZS5oCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBUaW1l
SW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQmKTsKIAogcHJpdmF0ZToKLSAgICBjb25zdCBBdG9t
aWNTdHJpbmcmIGZvcm1Db250cm9sVHlwZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGNvbnN0IEF0
b21TdHJpbmcmIGZvcm1Db250cm9sVHlwZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIERhdGVDb21w
b25lbnRzOjpUeXBlIGRhdGVUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgRGVjaW1hbCBkZWZh
dWx0VmFsdWVGb3JTdGVwVXAoKSBjb25zdCBvdmVycmlkZTsKICAgICBTdGVwUmFuZ2UgY3JlYXRl
U3RlcFJhbmdlKEFueVN0ZXBIYW5kbGluZykgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL1VSTElucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L1VSTElucHV0VHlwZS5jcHAKaW5kZXggNjNiYjNjYzI2MDFhMDQzZDE0OWM0NWEyOWVjMThkYTE0
MGI1YWQ4NC4uNzY4MThhMjYwOThlNzVjYzg4ZmVmNzlmODUxYTA4YmJjOWNhOWU2ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvVVJMSW5wdXRUeXBlLmNwcApAQCAtNDAsNyArNDAsNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWNvbnN0IEF0b21pY1N0cmluZyYgVVJMSW5wdXRUeXBlOjpmb3JtQ29u
dHJvbFR5cGUoKSBjb25zdAorY29uc3QgQXRvbVN0cmluZyYgVVJMSW5wdXRUeXBlOjpmb3JtQ29u
dHJvbFR5cGUoKSBjb25zdAogewogICAgIHJldHVybiBJbnB1dFR5cGVOYW1lczo6dXJsKCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTElucHV0VHlwZS5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9VUkxJbnB1dFR5cGUuaAppbmRleCA5OGI5Zjg1YTE3MmVhOTI1ZDZiZjZj
MjY0ZTQ3NzNmZWI4Zjg4MzNlLi4wZDNiYmI1YTJkMDU4NTVjOGYxMjViYzlmYWVmOGViMTdmNzk5
MGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTElucHV0VHlwZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMSW5wdXRUeXBlLmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVi
bGljOgogICAgIGV4cGxpY2l0IFVSTElucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50JiBlbGVtZW50
KSA6IEJhc2VUZXh0SW5wdXRUeXBlKGVsZW1lbnQpIHsgfQogCiBwcml2YXRlOgotICAgIGNvbnN0
IEF0b21pY1N0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgY29u
c3QgQXRvbVN0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9v
bCB0eXBlTWlzbWF0Y2hGb3IoY29uc3QgU3RyaW5nJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9v
bCB0eXBlTWlzbWF0Y2goKSBjb25zdCBvdmVycmlkZTsKICAgICBTdHJpbmcgdHlwZU1pc21hdGNo
VGV4dCgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9V
UkxVdGlscy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxVdGlscy5oCmluZGV4IDY5NmMwMDUx
YmQ1NDQ3MjNiYjQ4ZTVmODdlMWQ4NzAzYTgyOTAyN2QuLjNjNWYyZDI2MTM1Yjk3ZThhNzJiNmEw
Y2Q2MzJhNzJmNmM2YmZiMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMVXRp
bHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFV0aWxzLmgKQEAgLTI5Nyw3ICsyOTcs
NyBAQCBTdHJpbmcgVVJMVXRpbHM8VD46Omhhc2goKSBjb25zdAogICAgIFN0cmluZyBmcmFnbWVu
dElkZW50aWZpZXIgPSBocmVmKCkuZnJhZ21lbnRJZGVudGlmaWVyKCk7CiAgICAgaWYgKGZyYWdt
ZW50SWRlbnRpZmllci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwot
ICAgIHJldHVybiBBdG9taWNTdHJpbmcoU3RyaW5nKCIjIiArIGZyYWdtZW50SWRlbnRpZmllcikp
OworICAgIHJldHVybiBBdG9tU3RyaW5nKFN0cmluZygiIyIgKyBmcmFnbWVudElkZW50aWZpZXIp
KTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1ZhbGlkYXRpb25NZXNzYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVmFsaWRh
dGlvbk1lc3NhZ2UuY3BwCmluZGV4IGRhZTlmMTI2MTM1ZjY5NGMzZWFkMWJkMzQ2NDEyMTI3NzNm
ZGMzMWUuLjhhZjczYThhMDA1NDk4MGFkMTc5MDY5NTZhODQzMmE2ZjljZGIxNGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVmFsaWRhdGlvbk1lc3NhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvVmFsaWRhdGlvbk1lc3NhZ2UuY3BwCkBAIC05MCw3ICs5MCw3IEBAIHZv
aWQgVmFsaWRhdGlvbk1lc3NhZ2U6OnVwZGF0ZVZhbGlkYXRpb25NZXNzYWdlKGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSkKICAgICAgICAgLy8gd2l0aCB0aGUgdmFsaWRhdGlvbk1lc3NhZ2UuIEhvd2V2
ZXIsIHRoaXMgYmVoYXZpb3IgaXMgc2FtZSBhcyBPcGVyYQogICAgICAgICAvLyBhbmQgdGhlIHNw
ZWNpZmljYXRpb24gZGVzY3JpYmVzIHN1Y2ggYmVoYXZpb3IgYXMgYW4gZXhhbXBsZS4KICAgICAg
ICAgaWYgKCF1cGRhdGVkTWVzc2FnZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIGNvbnN0IEF0
b21pY1N0cmluZyYgdGl0bGUgPSBtX2VsZW1lbnQtPmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6
YXRpb24odGl0bGVBdHRyKTsKKyAgICAgICAgICAgIGNvbnN0IEF0b21TdHJpbmcmIHRpdGxlID0g
bV9lbGVtZW50LT5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHRpdGxlQXR0cik7CiAg
ICAgICAgICAgICBpZiAoIXRpdGxlLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICB1cGRhdGVk
TWVzc2FnZSA9IHVwZGF0ZWRNZXNzYWdlICsgJ1xuJyArIHRpdGxlOwogICAgICAgICB9CkBAIC0x
ODMsNyArMTgzLDcgQEAgdm9pZCBWYWxpZGF0aW9uTWVzc2FnZTo6YnVpbGRCdWJibGVUcmVlKCkK
IAogICAgIERvY3VtZW50JiBkb2N1bWVudCA9IG1fZWxlbWVudC0+ZG9jdW1lbnQoKTsKICAgICBt
X2J1YmJsZSA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwotICAgIG1fYnViYmxl
LT5zZXRQc2V1ZG8oQXRvbWljU3RyaW5nKCItd2Via2l0LXZhbGlkYXRpb24tYnViYmxlIiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIG1fYnViYmxlLT5zZXRQc2V1
ZG8oQXRvbVN0cmluZygiLXdlYmtpdC12YWxpZGF0aW9uLWJ1YmJsZSIsIEF0b21TdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKSk7CiAgICAgLy8gTmVlZCB0byBmb3JjZSBwb3NpdGlvbjphYnNv
bHV0ZSBiZWNhdXNlIFJlbmRlck1lbnVMaXN0IGRvZXNuJ3QgYXNzdW1lIGl0CiAgICAgLy8gY29u
dGFpbnMgbm9uLWFic29sdXRlIG9yIG5vbi1maXhlZCByZW5kZXJlcnMgYXMgY2hpbGRyZW4uCiAg
ICAgbV9idWJibGUtPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlQb3NpdGlvbiwg
Q1NTVmFsdWVBYnNvbHV0ZSk7CkBAIC0xOTksMjQgKzE5OSwyNCBAQCB2b2lkIFZhbGlkYXRpb25N
ZXNzYWdlOjpidWlsZEJ1YmJsZVRyZWUoKQogICAgIGFkanVzdEJ1YmJsZVBvc2l0aW9uKG1fZWxl
bWVudC0+cmVuZGVyZXIoKS0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKSwgbV9idWJibGUuZ2V0
KCkpOwogCiAgICAgYXV0byBjbGlwcGVyID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVu
dCk7Ci0gICAgY2xpcHBlci0+c2V0UHNldWRvKEF0b21pY1N0cmluZygiLXdlYmtpdC12YWxpZGF0
aW9uLWJ1YmJsZS1hcnJvdy1jbGlwcGVyIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCkpOworICAgIGNsaXBwZXItPnNldFBzZXVkbyhBdG9tU3RyaW5nKCItd2Via2l0LXZhbGlk
YXRpb24tYnViYmxlLWFycm93LWNsaXBwZXIiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCkpOwogICAgIGF1dG8gYnViYmxlQXJyb3cgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRv
Y3VtZW50KTsKLSAgICBidWJibGVBcnJvdy0+c2V0UHNldWRvKEF0b21pY1N0cmluZygiLXdlYmtp
dC12YWxpZGF0aW9uLWJ1YmJsZS1hcnJvdyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpKTsKKyAgICBidWJibGVBcnJvdy0+c2V0UHNldWRvKEF0b21TdHJpbmcoIi13ZWJraXQt
dmFsaWRhdGlvbi1idWJibGUtYXJyb3ciLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCkpOwogICAgIGNsaXBwZXItPmFwcGVuZENoaWxkKGJ1YmJsZUFycm93KTsKICAgICBtX2J1YmJs
ZS0+YXBwZW5kQ2hpbGQoY2xpcHBlcik7CiAKICAgICBhdXRvIG1lc3NhZ2UgPSBIVE1MRGl2RWxl
bWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLSAgICBtZXNzYWdlLT5zZXRQc2V1ZG8oQXRvbWljU3Ry
aW5nKCItd2Via2l0LXZhbGlkYXRpb24tYnViYmxlLW1lc3NhZ2UiLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgbWVzc2FnZS0+c2V0UHNldWRvKEF0b21TdHJpbmco
Ii13ZWJraXQtdmFsaWRhdGlvbi1idWJibGUtbWVzc2FnZSIsIEF0b21TdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKSk7CiAgICAgYXV0byBpY29uID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShk
b2N1bWVudCk7Ci0gICAgaWNvbi0+c2V0UHNldWRvKEF0b21pY1N0cmluZygiLXdlYmtpdC12YWxp
ZGF0aW9uLWJ1YmJsZS1pY29uIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkp
OworICAgIGljb24tPnNldFBzZXVkbyhBdG9tU3RyaW5nKCItd2Via2l0LXZhbGlkYXRpb24tYnVi
YmxlLWljb24iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogICAgIG1lc3Nh
Z2UtPmFwcGVuZENoaWxkKGljb24pOwogICAgIGF1dG8gdGV4dEJsb2NrID0gSFRNTERpdkVsZW1l
bnQ6OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAgdGV4dEJsb2NrLT5zZXRQc2V1ZG8oQXRvbWljU3Ry
aW5nKCItd2Via2l0LXZhbGlkYXRpb24tYnViYmxlLXRleHQtYmxvY2siLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgdGV4dEJsb2NrLT5zZXRQc2V1ZG8oQXRvbVN0
cmluZygiLXdlYmtpdC12YWxpZGF0aW9uLWJ1YmJsZS10ZXh0LWJsb2NrIiwgQXRvbVN0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKICAgICBtX21lc3NhZ2VIZWFkaW5nID0gSFRNTERpdkVs
ZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAgbV9tZXNzYWdlSGVhZGluZy0+c2V0UHNldWRv
KEF0b21pY1N0cmluZygiLXdlYmtpdC12YWxpZGF0aW9uLWJ1YmJsZS1oZWFkaW5nIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIG1fbWVzc2FnZUhlYWRpbmctPnNl
dFBzZXVkbyhBdG9tU3RyaW5nKCItd2Via2l0LXZhbGlkYXRpb24tYnViYmxlLWhlYWRpbmciLCBB
dG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogICAgIHRleHRCbG9jay0+YXBwZW5k
Q2hpbGQoKm1fbWVzc2FnZUhlYWRpbmcpOwogICAgIG1fbWVzc2FnZUJvZHkgPSBIVE1MRGl2RWxl
bWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLSAgICBtX21lc3NhZ2VCb2R5LT5zZXRQc2V1ZG8oQXRv
bWljU3RyaW5nKCItd2Via2l0LXZhbGlkYXRpb24tYnViYmxlLWJvZHkiLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgbV9tZXNzYWdlQm9keS0+c2V0UHNldWRvKEF0
b21TdHJpbmcoIi13ZWJraXQtdmFsaWRhdGlvbi1idWJibGUtYm9keSIsIEF0b21TdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKSk7CiAgICAgdGV4dEJsb2NrLT5hcHBlbmRDaGlsZCgqbV9tZXNz
YWdlQm9keSk7CiAgICAgbWVzc2FnZS0+YXBwZW5kQ2hpbGQodGV4dEJsb2NrKTsKICAgICBtX2J1
YmJsZS0+YXBwZW5kQ2hpbGQobWVzc2FnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1dlZWtJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9XZWVrSW5wdXRUeXBl
LmNwcAppbmRleCBiY2I2YWYyY2FhZDVlNWYzYmVhOTQ1NGE1MTAzZWI5NTFjZDQzZDYyLi4xOThj
ZmNjZTY4ZWRkN2E5Nzg4NGExMTk0NGQxMWJjZGJkOGQwOGExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1dlZWtJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
V2Vla0lucHV0VHlwZS5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgc3RhdGljIGNvbnN0IGludCB3ZWVr
RGVmYXVsdFN0ZXAgPSAxOwogc3RhdGljIGNvbnN0IGludCB3ZWVrU3RlcFNjYWxlRmFjdG9yID0g
NjA0ODAwMDAwOwogc3RhdGljIGNvbnN0IFN0ZXBSYW5nZTo6U3RlcERlc2NyaXB0aW9uIHdlZWtT
dGVwRGVzY3JpcHRpb24geyB3ZWVrRGVmYXVsdFN0ZXAsIHdlZWtEZWZhdWx0U3RlcEJhc2UsIHdl
ZWtTdGVwU2NhbGVGYWN0b3IsIFN0ZXBSYW5nZTo6UGFyc2VkU3RlcFZhbHVlU2hvdWxkQmVJbnRl
Z2VyIH07CiAKLWNvbnN0IEF0b21pY1N0cmluZyYgV2Vla0lucHV0VHlwZTo6Zm9ybUNvbnRyb2xU
eXBlKCkgY29uc3QKK2NvbnN0IEF0b21TdHJpbmcmIFdlZWtJbnB1dFR5cGU6OmZvcm1Db250cm9s
VHlwZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIElucHV0VHlwZU5hbWVzOjp3ZWVrKCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1dlZWtJbnB1dFR5cGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvV2Vla0lucHV0VHlwZS5oCmluZGV4IGNlM2IxZTZiMjkxNzY0ZmY5NzZiMWZm
YjkwYTUyYmU1YmM1ZGEyYTcuLjM3MTkwZGZlNzllYTU1MDgxMDE0YzJlOThhNTI4MzA1MmI2ZGZi
YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvV2Vla0lucHV0VHlwZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvV2Vla0lucHV0VHlwZS5oCkBAIC00MSw3ICs0MSw3IEBAIHB1
YmxpYzoKICAgICBleHBsaWNpdCBXZWVrSW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQmIGVsZW1l
bnQpIDogQmFzZUNob29zZXJPbmx5RGF0ZUFuZFRpbWVJbnB1dFR5cGUoZWxlbWVudCkgeyB9CiAK
IHByaXZhdGU6Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25z
dCBvdmVycmlkZTsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25z
dCBvdmVycmlkZTsKICAgICBEYXRlQ29tcG9uZW50czo6VHlwZSBkYXRlVHlwZSgpIGNvbnN0IG92
ZXJyaWRlOwogICAgIFN0ZXBSYW5nZSBjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nKSBj
b25zdCBvdmVycmlkZTsKICAgICBib29sIHBhcnNlVG9EYXRlQ29tcG9uZW50c0ludGVybmFsKGNv
bnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoLCBEYXRlQ29tcG9uZW50cyopIGNvbnN0IG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0
RXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0RXZlbnQu
Y3BwCmluZGV4IDQxYTZlYTZhYzZiN2RiODhiNmM4NzE4NjI1OWZjNDM4ODNiNmM5ZjIuLjEzZGYy
MDQ2MjcyOTFmZWI1NzRlNDA3ZWE0MTM4M2ViYzdkZDgxNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dEV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRFdmVudC5jcHAKQEAgLTMwLDEzICszMCwxMyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVdlYkdMQ29udGV4dEV2ZW50OjpXZWJHTENvbnRl
eHRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIENhbkJ1YmJsZSBjYW5CdWJibGUsIElz
Q2FuY2VsYWJsZSBjYW5jZWxhYmxlLCBjb25zdCBTdHJpbmcmIHN0YXR1c01lc3NhZ2UpCitXZWJH
TENvbnRleHRFdmVudDo6V2ViR0xDb250ZXh0RXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwg
Q2FuQnViYmxlIGNhbkJ1YmJsZSwgSXNDYW5jZWxhYmxlIGNhbmNlbGFibGUsIGNvbnN0IFN0cmlu
ZyYgc3RhdHVzTWVzc2FnZSkKICAgICA6IEV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJs
ZSkKICAgICAsIG1fc3RhdHVzTWVzc2FnZShzdGF0dXNNZXNzYWdlKQogewogfQogCi1XZWJHTENv
bnRleHRFdmVudDo6V2ViR0xDb250ZXh0RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBj
b25zdCBJbml0JiBpbml0aWFsaXplciwgSXNUcnVzdGVkIGlzVHJ1c3RlZCkKK1dlYkdMQ29udGV4
dEV2ZW50OjpXZWJHTENvbnRleHRFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBJ
bml0JiBpbml0aWFsaXplciwgSXNUcnVzdGVkIGlzVHJ1c3RlZCkKICAgICA6IEV2ZW50KHR5cGUs
IGluaXRpYWxpemVyLCBpc1RydXN0ZWQpCiAgICAgLCBtX3N0YXR1c01lc3NhZ2UoaW5pdGlhbGl6
ZXIuc3RhdHVzTWVzc2FnZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQ29udGV4dEV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TENvbnRleHRFdmVudC5oCmluZGV4IDk5YWFkN2VmY2I0MTlkNjBjZDcxNzI0ZjgwY2ZlM2EzNTRi
NTUzODMuLjViZmQwMjk1OTAxYTMzMDc5MjRkNjQ5Mjg5ZTRhMmMzYjdiZmE1NzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dEV2ZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0RXZlbnQuaApAQCAtMzEsNyAr
MzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdlYkdMQ29udGV4dEV2ZW50IGZp
bmFsIDogcHVibGljIEV2ZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYkdMQ29udGV4
dEV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBDYW5CdWJibGUgY2FuQnVi
YmxlLCBJc0NhbmNlbGFibGUgY2FuY2VsYWJsZSwgY29uc3QgU3RyaW5nJiBzdGF0dXNNZXNzYWdl
KQorICAgIHN0YXRpYyBSZWY8V2ViR0xDb250ZXh0RXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9tU3Ry
aW5nJiB0eXBlLCBDYW5CdWJibGUgY2FuQnViYmxlLCBJc0NhbmNlbGFibGUgY2FuY2VsYWJsZSwg
Y29uc3QgU3RyaW5nJiBzdGF0dXNNZXNzYWdlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgV2ViR0xDb250ZXh0RXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBz
dGF0dXNNZXNzYWdlKSk7CiAgICAgfQpAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgICAg
IFN0cmluZyBzdGF0dXNNZXNzYWdlOwogICAgIH07CiAKLSAgICBzdGF0aWMgUmVmPFdlYkdMQ29u
dGV4dEV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiBp
bml0aWFsaXplciwgSXNUcnVzdGVkIGlzVHJ1c3RlZCA9IElzVHJ1c3RlZDo6Tm8pCisgICAgc3Rh
dGljIFJlZjxXZWJHTENvbnRleHRFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUs
IGNvbnN0IEluaXQmIGluaXRpYWxpemVyLCBJc1RydXN0ZWQgaXNUcnVzdGVkID0gSXNUcnVzdGVk
OjpObykKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdMQ29udGV4dEV2
ZW50KHR5cGUsIGluaXRpYWxpemVyLCBpc1RydXN0ZWQpKTsKICAgICB9CkBAIC01MSw4ICs1MSw4
IEBAIHB1YmxpYzoKICAgICBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0IG92
ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIFdlYkdMQ29udGV4dEV2ZW50KGNvbnN0IEF0b21pY1N0
cmluZyYgdHlwZSwgQ2FuQnViYmxlLCBJc0NhbmNlbGFibGUsIGNvbnN0IFN0cmluZyYgc3RhdHVz
TWVzc2FnZSk7Ci0gICAgV2ViR0xDb250ZXh0RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiwgY29u
c3QgSW5pdCYsIElzVHJ1c3RlZCk7CisgICAgV2ViR0xDb250ZXh0RXZlbnQoY29uc3QgQXRvbVN0
cmluZyYgdHlwZSwgQ2FuQnViYmxlLCBJc0NhbmNlbGFibGUsIGNvbnN0IFN0cmluZyYgc3RhdHVz
TWVzc2FnZSk7CisgICAgV2ViR0xDb250ZXh0RXZlbnQoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0
IEluaXQmLCBJc1RydXN0ZWQpOwogCiAgICAgU3RyaW5nIG1fc3RhdHVzTWVzc2FnZTsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9BdG9taWNIVE1MVG9rZW4uaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0F0b21pY0hUTUxUb2tlbi5oCmluZGV4IGEwNzBj
ZTQ3ZjNiZmJkOTdlNTlmMzRmZDM0NTQ0YWFlODk4YzZhYmIuLmI5NTk3NmYyMWU2NmVmY2NhMGNl
MWM0NzQyODQ1NjhiNWJjNDJhNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0F0b21pY0hUTUxUb2tlbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0F0
b21pY0hUTUxUb2tlbi5oCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIEF0b21pY0hUTUxUb2tlbiB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgQXRvbWljSFRNTFRv
a2VuKEhUTUxUb2tlbiYpOwotICAgIEF0b21pY0hUTUxUb2tlbihIVE1MVG9rZW46OlR5cGUsIGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZSwgVmVjdG9yPEF0dHJpYnV0ZT4mJiA9IHsgfSk7IC8vIE9u
bHkgU3RhcnRUYWcgb3IgRW5kVGFnLgorICAgIEF0b21pY0hUTUxUb2tlbihIVE1MVG9rZW46OlR5
cGUsIGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIFZlY3RvcjxBdHRyaWJ1dGU+JiYgPSB7IH0pOyAv
LyBPbmx5IFN0YXJ0VGFnIG9yIEVuZFRhZy4KIAogICAgIEF0b21pY0hUTUxUb2tlbihjb25zdCBB
dG9taWNIVE1MVG9rZW4mKSA9IGRlbGV0ZTsKICAgICBBdG9taWNIVE1MVG9rZW4oQXRvbWljSFRN
TFRva2VuJiYpID0gZGVmYXVsdDsKQEAgLTQyLDkgKzQyLDkgQEAgcHVibGljOgogCiAgICAgLy8g
U3RhcnRUYWcsIEVuZFRhZywgRE9DVFlQRS4KIAotICAgIHZvaWQgc2V0TmFtZShjb25zdCBBdG9t
aWNTdHJpbmcmKTsKKyAgICB2b2lkIHNldE5hbWUoY29uc3QgQXRvbVN0cmluZyYpOwogCi0gICAg
Y29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKCkgY29uc3Q7CisgICAgY29uc3QgQXRvbVN0cmluZyYg
bmFtZSgpIGNvbnN0OwogCiAgICAgLy8gRE9DVFlQRS4KIApAQCAtNzQsNyArNzQsNyBAQCBwcml2
YXRlOgogCiAgICAgdm9pZCBpbml0aWFsaXplQXR0cmlidXRlcyhjb25zdCBIVE1MVG9rZW46OkF0
dHJpYnV0ZUxpc3QmIGF0dHJpYnV0ZXMpOwogCi0gICAgQXRvbWljU3RyaW5nIG1fbmFtZTsgLy8g
U3RhcnRUYWcsIEVuZFRhZywgRE9DVFlQRS4KKyAgICBBdG9tU3RyaW5nIG1fbmFtZTsgLy8gU3Rh
cnRUYWcsIEVuZFRhZywgRE9DVFlQRS4KIAogICAgIFN0cmluZyBtX2RhdGE7IC8vIENvbW1lbnQK
IApAQCAtOTIsMjAgKzkyLDIwIEBAIHByaXZhdGU6CiB9OwogCiBjb25zdCBBdHRyaWJ1dGUqIGZp
bmRBdHRyaWJ1dGUoY29uc3QgVmVjdG9yPEF0dHJpYnV0ZT4mLCBjb25zdCBRdWFsaWZpZWROYW1l
Jik7Ci1ib29sIGhhc0F0dHJpYnV0ZShjb25zdCBWZWN0b3I8QXR0cmlidXRlPiYsIGNvbnN0IEF0
b21pY1N0cmluZyYgbG9jYWxOYW1lKTsKK2Jvb2wgaGFzQXR0cmlidXRlKGNvbnN0IFZlY3RvcjxB
dHRyaWJ1dGU+JiwgY29uc3QgQXRvbVN0cmluZyYgbG9jYWxOYW1lKTsKIAogaW5saW5lIEhUTUxU
b2tlbjo6VHlwZSBBdG9taWNIVE1MVG9rZW46OnR5cGUoKSBjb25zdAogewogICAgIHJldHVybiBt
X3R5cGU7CiB9CiAKLWlubGluZSBjb25zdCBBdG9taWNTdHJpbmcmIEF0b21pY0hUTUxUb2tlbjo6
bmFtZSgpIGNvbnN0CitpbmxpbmUgY29uc3QgQXRvbVN0cmluZyYgQXRvbWljSFRNTFRva2VuOjpu
YW1lKCkgY29uc3QKIHsKICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlbjo6U3RhcnRUYWcg
fHwgbV90eXBlID09IEhUTUxUb2tlbjo6RW5kVGFnIHx8IG1fdHlwZSA9PSBIVE1MVG9rZW46OkRP
Q1RZUEUpOwogICAgIHJldHVybiBtX25hbWU7CiB9CiAKLWlubGluZSB2b2lkIEF0b21pY0hUTUxU
b2tlbjo6c2V0TmFtZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCitpbmxpbmUgdm9pZCBBdG9t
aWNIVE1MVG9rZW46OnNldE5hbWUoY29uc3QgQXRvbVN0cmluZyYgbmFtZSkKIHsKICAgICBBU1NF
UlQobV90eXBlID09IEhUTUxUb2tlbjo6U3RhcnRUYWcgfHwgbV90eXBlID09IEhUTUxUb2tlbjo6
RW5kVGFnIHx8IG1fdHlwZSA9PSBIVE1MVG9rZW46OkRPQ1RZUEUpOwogICAgIG1fbmFtZSA9IG5h
bWU7CkBAIC0xODIsNyArMTgyLDcgQEAgaW5saW5lIGNvbnN0IEF0dHJpYnV0ZSogZmluZEF0dHJp
YnV0ZShjb25zdCBWZWN0b3I8QXR0cmlidXRlPiYgYXR0cmlidXRlcywgY29uc3QKICAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIAotaW5saW5lIGJvb2wgaGFzQXR0cmlidXRlKGNvbnN0IFZlY3RvcjxB
dHRyaWJ1dGU+JiBhdHRyaWJ1dGVzLCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSkKK2lu
bGluZSBib29sIGhhc0F0dHJpYnV0ZShjb25zdCBWZWN0b3I8QXR0cmlidXRlPiYgYXR0cmlidXRl
cywgY29uc3QgQXRvbVN0cmluZyYgbG9jYWxOYW1lKQogewogICAgIGZvciAoYXV0byYgYXR0cmli
dXRlIDogYXR0cmlidXRlcykgewogICAgICAgICBpZiAoYXR0cmlidXRlLmxvY2FsTmFtZSgpID09
IGxvY2FsTmFtZSkKQEAgLTIwMiwxMSArMjAyLDExIEBAIGlubGluZSB2b2lkIEF0b21pY0hUTUxU
b2tlbjo6aW5pdGlhbGl6ZUF0dHJpYnV0ZXMoY29uc3QgSFRNTFRva2VuOjpBdHRyaWJ1dGVMaXN0
CiAgICAgICAgIGlmIChhdHRyaWJ1dGUubmFtZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBjb250
aW51ZTsKIAotICAgICAgICBBdG9taWNTdHJpbmcgbG9jYWxOYW1lKGF0dHJpYnV0ZS5uYW1lKTsK
KyAgICAgICAgQXRvbVN0cmluZyBsb2NhbE5hbWUoYXR0cmlidXRlLm5hbWUpOwogCiAgICAgICAg
IC8vIEZJWE1FOiBUaGlzIGlzIE5eMiBmb3IgdGhlIG51bWJlciBvZiBhdHRyaWJ1dGVzLgogICAg
ICAgICBpZiAoIWhhc0F0dHJpYnV0ZShtX2F0dHJpYnV0ZXMsIGxvY2FsTmFtZSkpCi0gICAgICAg
ICAgICBtX2F0dHJpYnV0ZXMudW5jaGVja2VkQXBwZW5kKEF0dHJpYnV0ZShRdWFsaWZpZWROYW1l
KG51bGxBdG9tKCksIGxvY2FsTmFtZSwgbnVsbEF0b20oKSksIEF0b21pY1N0cmluZyhhdHRyaWJ1
dGUudmFsdWUpKSk7CisgICAgICAgICAgICBtX2F0dHJpYnV0ZXMudW5jaGVja2VkQXBwZW5kKEF0
dHJpYnV0ZShRdWFsaWZpZWROYW1lKG51bGxBdG9tKCksIGxvY2FsTmFtZSwgbnVsbEF0b20oKSks
IEF0b21TdHJpbmcoYXR0cmlidXRlLnZhbHVlKSkpOwogICAgIH0KIH0KIApAQCAtMjE4LDcgKzIx
OCw3IEBAIGlubGluZSBBdG9taWNIVE1MVG9rZW46OkF0b21pY0hUTUxUb2tlbihIVE1MVG9rZW4m
IHRva2VuKQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIGNhc2UgSFRNTFRva2VuOjpET0NUWVBFOgotICAgICAgICBtX25hbWUgPSBBdG9taWNTdHJp
bmcodG9rZW4ubmFtZSgpKTsKKyAgICAgICAgbV9uYW1lID0gQXRvbVN0cmluZyh0b2tlbi5uYW1l
KCkpOwogICAgICAgICBtX2RvY3R5cGVEYXRhID0gdG9rZW4ucmVsZWFzZURvY3R5cGVEYXRhKCk7
CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIEhUTUxUb2tlbjo6RW5kT2ZGaWxlOgpAQCAtMjI2
LDcgKzIyNiw3IEBAIGlubGluZSBBdG9taWNIVE1MVG9rZW46OkF0b21pY0hUTUxUb2tlbihIVE1M
VG9rZW4mIHRva2VuKQogICAgIGNhc2UgSFRNTFRva2VuOjpTdGFydFRhZzoKICAgICBjYXNlIEhU
TUxUb2tlbjo6RW5kVGFnOgogICAgICAgICBtX3NlbGZDbG9zaW5nID0gdG9rZW4uc2VsZkNsb3Np
bmcoKTsKLSAgICAgICAgbV9uYW1lID0gQXRvbWljU3RyaW5nKHRva2VuLm5hbWUoKSk7CisgICAg
ICAgIG1fbmFtZSA9IEF0b21TdHJpbmcodG9rZW4ubmFtZSgpKTsKICAgICAgICAgaW5pdGlhbGl6
ZUF0dHJpYnV0ZXModG9rZW4uYXR0cmlidXRlcygpKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNh
c2UgSFRNTFRva2VuOjpDb21tZW50OgpAQCAtMjQ0LDcgKzI0NCw3IEBAIGlubGluZSBBdG9taWNI
VE1MVG9rZW46OkF0b21pY0hUTUxUb2tlbihIVE1MVG9rZW4mIHRva2VuKQogICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogfQogCi1pbmxpbmUgQXRvbWljSFRNTFRva2VuOjpBdG9taWNIVE1MVG9r
ZW4oSFRNTFRva2VuOjpUeXBlIHR5cGUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgVmVjdG9y
PEF0dHJpYnV0ZT4mJiBhdHRyaWJ1dGVzKQoraW5saW5lIEF0b21pY0hUTUxUb2tlbjo6QXRvbWlj
SFRNTFRva2VuKEhUTUxUb2tlbjo6VHlwZSB0eXBlLCBjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBW
ZWN0b3I8QXR0cmlidXRlPiYmIGF0dHJpYnV0ZXMpCiAgICAgOiBtX3R5cGUodHlwZSkKICAgICAs
IG1fbmFtZShuYW1lKQogICAgICwgbV9zZWxmQ2xvc2luZyhmYWxzZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcAppbmRleCBjZjFi
NTNiZGIyM2Y3OThmYjIxMzhiOTY4OTUwNDg5MTliYzQyMTdjLi41MWJhZTRjMjFjZjk0MGRjZDhj
NmQzMjBiYzRkYmQ2NjI2YmU3ZDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCkBAIC01MDksNyArNTA5LDcgQEAgc3RkOjp1
bmlxdWVfcHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rpb25EYXRhPiBIVE1MQ29uc3RydWN0aW9u
U2l0ZTo6aW5zZXJ0SFRNTEUKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotdm9pZCBIVE1MQ29u
c3RydWN0aW9uU2l0ZTo6aW5zZXJ0Q3VzdG9tRWxlbWVudChSZWY8RWxlbWVudD4mJiBlbGVtZW50
LCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSwgVmVjdG9yPEF0dHJpYnV0ZT4mJiBhdHRy
aWJ1dGVzKQordm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0Q3VzdG9tRWxlbWVudChS
ZWY8RWxlbWVudD4mJiBlbGVtZW50LCBjb25zdCBBdG9tU3RyaW5nJiBsb2NhbE5hbWUsIFZlY3Rv
cjxBdHRyaWJ1dGU+JiYgYXR0cmlidXRlcykKIHsKICAgICBzZXRBdHRyaWJ1dGVzKGVsZW1lbnQs
IGF0dHJpYnV0ZXMsIG1fcGFyc2VyQ29udGVudFBvbGljeSk7CiAgICAgYXR0YWNoTGF0ZXIoY3Vy
cmVudE5vZGUoKSwgZWxlbWVudC5jb3B5UmVmKCkpOwpAQCAtNTU0LDcgKzU1NCw3IEBAIHZvaWQg
SFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydFNjcmlwdEVsZW1lbnQoQXRvbWljSFRNTFRva2Vu
JiYgdG9rZW4pCiAgICAgbV9vcGVuRWxlbWVudHMucHVzaChIVE1MU3RhY2tJdGVtOjpjcmVhdGUo
V1RGTW92ZShlbGVtZW50KSwgV1RGTW92ZSh0b2tlbikpKTsKIH0KIAotdm9pZCBIVE1MQ29uc3Ry
dWN0aW9uU2l0ZTo6aW5zZXJ0Rm9yZWlnbkVsZW1lbnQoQXRvbWljSFRNTFRva2VuJiYgdG9rZW4s
IGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJKQordm9pZCBIVE1MQ29uc3RydWN0aW9u
U2l0ZTo6aW5zZXJ0Rm9yZWlnbkVsZW1lbnQoQXRvbWljSFRNTFRva2VuJiYgdG9rZW4sIGNvbnN0
IEF0b21TdHJpbmcmIG5hbWVzcGFjZVVSSSkKIHsKICAgICBBU1NFUlQodG9rZW4udHlwZSgpID09
IEhUTUxUb2tlbjo6U3RhcnRUYWcpOwogICAgIG5vdEltcGxlbWVudGVkKCk7IC8vIHBhcnNlRXJy
b3Igd2hlbiB4bWxucyBvciB4bWxuczp4bGluayBhcmUgd3JvbmcuCkBAIC01NzUsOCArNTc1LDgg
QEAgdm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0VGV4dE5vZGUoY29uc3QgU3RyaW5n
JiBjaGFyYWN0ZXJzLCBXaGl0ZXNwYWNlTW8KICAgICAgICAgZmluZEZvc3RlclNpdGUodGFzayk7
CiAKICAgICAvLyBTdHJpbmdzIGNvbXBvc2VkIGVudGlyZWx5IG9mIHdoaXRlc3BhY2UgYXJlIGxp
a2VseSB0byBiZSByZXBlYXRlZC4KLSAgICAvLyBUdXJuIHRoZW0gaW50byBBdG9taWNTdHJpbmcg
c28gd2Ugc2hhcmUgYSBzaW5nbGUgc3RyaW5nIGZvciBlYWNoLgotICAgIGJvb2wgc2hvdWxkVXNl
QXRvbWljU3RyaW5nID0gd2hpdGVzcGFjZU1vZGUgPT0gQWxsV2hpdGVzcGFjZSB8fCAod2hpdGVz
cGFjZU1vZGUgPT0gV2hpdGVzcGFjZVVua25vd24gJiYgaXNBbGxXaGl0ZXNwYWNlKGNoYXJhY3Rl
cnMpKTsKKyAgICAvLyBUdXJuIHRoZW0gaW50byBBdG9tU3RyaW5nIHNvIHdlIHNoYXJlIGEgc2lu
Z2xlIHN0cmluZyBmb3IgZWFjaC4KKyAgICBib29sIHNob3VsZFVzZUF0b21TdHJpbmcgPSB3aGl0
ZXNwYWNlTW9kZSA9PSBBbGxXaGl0ZXNwYWNlIHx8ICh3aGl0ZXNwYWNlTW9kZSA9PSBXaGl0ZXNw
YWNlVW5rbm93biAmJiBpc0FsbFdoaXRlc3BhY2UoY2hhcmFjdGVycykpOwogCiAgICAgdW5zaWdu
ZWQgY3VycmVudFBvc2l0aW9uID0gMDsKICAgICB1bnNpZ25lZCBsZW5ndGhMaW1pdCA9IHNob3Vs
ZFVzZUxlbmd0aExpbWl0KCp0YXNrLnBhcmVudCkgPyBUZXh0OjpkZWZhdWx0TGVuZ3RoTGltaXQg
OiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCk7CkBAIC01OTIsMTEgKzU5Miwx
MSBAQCB2b2lkIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRUZXh0Tm9kZShjb25zdCBTdHJp
bmcmIGNoYXJhY3RlcnMsIFdoaXRlc3BhY2VNbwogICAgIH0KIAogICAgIHdoaWxlIChjdXJyZW50
UG9zaXRpb24gPCBjaGFyYWN0ZXJzLmxlbmd0aCgpKSB7Ci0gICAgICAgIGF1dG8gdGV4dE5vZGUg
PSBUZXh0OjpjcmVhdGVXaXRoTGVuZ3RoTGltaXQodGFzay5wYXJlbnQtPmRvY3VtZW50KCksIHNo
b3VsZFVzZUF0b21pY1N0cmluZyA/IEF0b21pY1N0cmluZyhjaGFyYWN0ZXJzKS5zdHJpbmcoKSA6
IGNoYXJhY3RlcnMsIGN1cnJlbnRQb3NpdGlvbiwgbGVuZ3RoTGltaXQpOworICAgICAgICBhdXRv
IHRleHROb2RlID0gVGV4dDo6Y3JlYXRlV2l0aExlbmd0aExpbWl0KHRhc2sucGFyZW50LT5kb2N1
bWVudCgpLCBzaG91bGRVc2VBdG9tU3RyaW5nID8gQXRvbVN0cmluZyhjaGFyYWN0ZXJzKS5zdHJp
bmcoKSA6IGNoYXJhY3RlcnMsIGN1cnJlbnRQb3NpdGlvbiwgbGVuZ3RoTGltaXQpOwogICAgICAg
ICAvLyBJZiB3ZSBoYXZlIGEgd2hvbGUgc3RyaW5nIG9mIHVuYnJlYWthYmxlIGNoYXJhY3RlcnMg
dGhlIGFib3ZlIGNvdWxkIGxlYWQgdG8gYW4gaW5maW5pdGUgbG9vcC4gRXhjZWVkaW5nIHRoZSBs
ZW5ndGggbGltaXQgaXMgdGhlIGxlc3NlciBldmlsLgogICAgICAgICBpZiAoIXRleHROb2RlLT5s
ZW5ndGgoKSkgewogICAgICAgICAgICAgU3RyaW5nIHN1YnN0cmluZyA9IGNoYXJhY3RlcnMuc3Vi
c3RyaW5nKGN1cnJlbnRQb3NpdGlvbik7Ci0gICAgICAgICAgICB0ZXh0Tm9kZSA9IFRleHQ6OmNy
ZWF0ZSh0YXNrLnBhcmVudC0+ZG9jdW1lbnQoKSwgc2hvdWxkVXNlQXRvbWljU3RyaW5nID8gQXRv
bWljU3RyaW5nKHN1YnN0cmluZykuc3RyaW5nKCkgOiBzdWJzdHJpbmcpOworICAgICAgICAgICAg
dGV4dE5vZGUgPSBUZXh0OjpjcmVhdGUodGFzay5wYXJlbnQtPmRvY3VtZW50KCksIHNob3VsZFVz
ZUF0b21TdHJpbmcgPyBBdG9tU3RyaW5nKHN1YnN0cmluZykuc3RyaW5nKCkgOiBzdWJzdHJpbmcp
OwogICAgICAgICB9CiAKICAgICAgICAgY3VycmVudFBvc2l0aW9uICs9IHRleHROb2RlLT5sZW5n
dGgoKTsKQEAgLTYzNSw3ICs2MzUsNyBAQCB2b2lkIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjp0YWtl
QWxsQ2hpbGRyZW5BbmRSZXBhcmVudChIVE1MU3RhY2tJdGVtJiBuZXdQYXJlbnQsCiAgICAgbV90
YXNrUXVldWUuYXBwZW5kKFdURk1vdmUodGFzaykpOwogfQogCi1SZWY8RWxlbWVudD4gSFRNTENv
bnN0cnVjdGlvblNpdGU6OmNyZWF0ZUVsZW1lbnQoQXRvbWljSFRNTFRva2VuJiB0b2tlbiwgY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkkpCitSZWY8RWxlbWVudD4gSFRNTENvbnN0cnVj
dGlvblNpdGU6OmNyZWF0ZUVsZW1lbnQoQXRvbWljSFRNTFRva2VuJiB0b2tlbiwgY29uc3QgQXRv
bVN0cmluZyYgbmFtZXNwYWNlVVJJKQogewogICAgIFF1YWxpZmllZE5hbWUgdGFnTmFtZShudWxs
QXRvbSgpLCB0b2tlbi5uYW1lKCksIG5hbWVzcGFjZVVSSSk7CiAgICAgYXV0byBlbGVtZW50ID0g
b3duZXJEb2N1bWVudEZvckN1cnJlbnROb2RlKCkuY3JlYXRlRWxlbWVudCh0YWdOYW1lLCB0cnVl
KTsKQEAgLTY1MCw3ICs2NTAsNyBAQCBpbmxpbmUgRG9jdW1lbnQmIEhUTUxDb25zdHJ1Y3Rpb25T
aXRlOjpvd25lckRvY3VtZW50Rm9yQ3VycmVudE5vZGUoKQogICAgIHJldHVybiBjdXJyZW50Tm9k
ZSgpLmRvY3VtZW50KCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDdXN0b21FbGVtZW50SW50ZXJm
YWNlKiBmaW5kQ3VzdG9tRWxlbWVudEludGVyZmFjZShEb2N1bWVudCYgb3duZXJEb2N1bWVudCwg
Y29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUpCitzdGF0aWMgaW5saW5lIEpTQ3VzdG9tRWxl
bWVudEludGVyZmFjZSogZmluZEN1c3RvbUVsZW1lbnRJbnRlcmZhY2UoRG9jdW1lbnQmIG93bmVy
RG9jdW1lbnQsIGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsTmFtZSkKIHsKICAgICBhdXRvKiB3aW5k
b3cgPSBvd25lckRvY3VtZW50LmRvbVdpbmRvdygpOwogICAgIGlmICghd2luZG93KQpAQCAtNzU0
LDcgKzc1NCw3IEBAIHZvaWQgSFRNTENvbnN0cnVjdGlvblNpdGU6OnJlY29uc3RydWN0VGhlQWN0
aXZlRm9ybWF0dGluZ0VsZW1lbnRzKCkKICAgICB9CiB9CiAKLXZvaWQgSFRNTENvbnN0cnVjdGlv
blNpdGU6OmdlbmVyYXRlSW1wbGllZEVuZFRhZ3NXaXRoRXhjbHVzaW9uKGNvbnN0IEF0b21pY1N0
cmluZyYgdGFnTmFtZSkKK3ZvaWQgSFRNTENvbnN0cnVjdGlvblNpdGU6OmdlbmVyYXRlSW1wbGll
ZEVuZFRhZ3NXaXRoRXhjbHVzaW9uKGNvbnN0IEF0b21TdHJpbmcmIHRhZ05hbWUpCiB7CiAgICAg
d2hpbGUgKGhhc0ltcGxpZWRFbmRUYWcoY3VycmVudFN0YWNrSXRlbSgpKSAmJiAhY3VycmVudFN0
YWNrSXRlbSgpLm1hdGNoZXNIVE1MVGFnKHRhZ05hbWUpKQogICAgICAgICBtX29wZW5FbGVtZW50
cy5wb3AoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25z
dHJ1Y3Rpb25TaXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0
aW9uU2l0ZS5oCmluZGV4IDNhZjYyMmVlOWFiNDg5NmVmZDNjZmU4YTIyNWE5OWUxZWI4NjViNTUu
LmMwOGQ2NjdmN2M4MTJjYTNiZWJiZGEzZTkwODk2ODExNzVmYWQwOGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuaApAQCAtMTA0LDcg
KzEwNCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGluc2VydENvbW1lbnRPbkhUTUxIdG1sRWxlbWVu
dChBdG9taWNIVE1MVG9rZW4mJik7CiAgICAgdm9pZCBpbnNlcnRIVE1MRWxlbWVudChBdG9taWNI
VE1MVG9rZW4mJik7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rp
b25EYXRhPiBpbnNlcnRIVE1MRWxlbWVudE9yRmluZEN1c3RvbUVsZW1lbnRJbnRlcmZhY2UoQXRv
bWljSFRNTFRva2VuJiYpOwotICAgIHZvaWQgaW5zZXJ0Q3VzdG9tRWxlbWVudChSZWY8RWxlbWVu
dD4mJiwgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUsIFZlY3RvcjxBdHRyaWJ1dGU+JiYp
OworICAgIHZvaWQgaW5zZXJ0Q3VzdG9tRWxlbWVudChSZWY8RWxlbWVudD4mJiwgY29uc3QgQXRv
bVN0cmluZyYgbG9jYWxOYW1lLCBWZWN0b3I8QXR0cmlidXRlPiYmKTsKICAgICB2b2lkIGluc2Vy
dFNlbGZDbG9zaW5nSFRNTEVsZW1lbnQoQXRvbWljSFRNTFRva2VuJiYpOwogICAgIHZvaWQgaW5z
ZXJ0Rm9ybWF0dGluZ0VsZW1lbnQoQXRvbWljSFRNTFRva2VuJiYpOwogICAgIHZvaWQgaW5zZXJ0
SFRNTEhlYWRFbGVtZW50KEF0b21pY0hUTUxUb2tlbiYmKTsKQEAgLTExMiw3ICsxMTIsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBpbnNlcnRIVE1MRm9ybUVsZW1lbnQoQXRvbWljSFRNTFRva2VuJiYs
IGJvb2wgaXNEZW1vdGVkID0gZmFsc2UpOwogICAgIHZvaWQgaW5zZXJ0U2NyaXB0RWxlbWVudChB
dG9taWNIVE1MVG9rZW4mJik7CiAgICAgdm9pZCBpbnNlcnRUZXh0Tm9kZShjb25zdCBTdHJpbmcm
LCBXaGl0ZXNwYWNlTW9kZSA9IFdoaXRlc3BhY2VVbmtub3duKTsKLSAgICB2b2lkIGluc2VydEZv
cmVpZ25FbGVtZW50KEF0b21pY0hUTUxUb2tlbiYmLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVz
cGFjZVVSSSk7CisgICAgdm9pZCBpbnNlcnRGb3JlaWduRWxlbWVudChBdG9taWNIVE1MVG9rZW4m
JiwgY29uc3QgQXRvbVN0cmluZyYgbmFtZXNwYWNlVVJJKTsKIAogICAgIHZvaWQgaW5zZXJ0SFRN
TEh0bWxTdGFydFRhZ0JlZm9yZUhUTUwoQXRvbWljSFRNTFRva2VuJiYpOwogICAgIHZvaWQgaW5z
ZXJ0SFRNTEh0bWxTdGFydFRhZ0luQm9keShBdG9taWNIVE1MVG9rZW4mJik7CkBAIC0xMzQsNyAr
MTM0LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVjb25zdHJ1Y3RUaGVBY3RpdmVGb3JtYXR0aW5n
RWxlbWVudHMoKTsKIAogICAgIHZvaWQgZ2VuZXJhdGVJbXBsaWVkRW5kVGFncygpOwotICAgIHZv
aWQgZ2VuZXJhdGVJbXBsaWVkRW5kVGFnc1dpdGhFeGNsdXNpb24oY29uc3QgQXRvbWljU3RyaW5n
JiB0YWdOYW1lKTsKKyAgICB2b2lkIGdlbmVyYXRlSW1wbGllZEVuZFRhZ3NXaXRoRXhjbHVzaW9u
KGNvbnN0IEF0b21TdHJpbmcmIHRhZ05hbWUpOwogCiAgICAgYm9vbCBpblF1aXJrc01vZGUoKSB7
IHJldHVybiBtX2luUXVpcmtzTW9kZTsgfQogCkBAIC0xNzIsNyArMTcyLDcgQEAgcHVibGljOgog
ICAgICAgICBTZXRGb3JTY29wZTxib29sPiBtX3JlZGlyZWN0QXR0YWNoVG9Gb3N0ZXJQYXJlbnRD
aGFuZ2U7CiAgICAgfTsKIAotICAgIHN0YXRpYyBib29sIGlzRm9ybWF0dGluZ1RhZyhjb25zdCBB
dG9taWNTdHJpbmcmKTsKKyAgICBzdGF0aWMgYm9vbCBpc0Zvcm1hdHRpbmdUYWcoY29uc3QgQXRv
bVN0cmluZyYpOwogCiBwcml2YXRlOgogICAgIC8vIEluIHRoZSBjb21tb24gY2FzZSwgdGhpcyBx
dWV1ZSB3aWxsIGhhdmUgb25seSBvbmUgdGFzayBiZWNhdXNlIG1vc3QKQEAgLTE4OCw3ICsxODgs
NyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPEVsZW1lbnQ+IGNyZWF0ZUhUTUxFbGVtZW50T3JG
aW5kQ3VzdG9tRWxlbWVudEludGVyZmFjZShBdG9taWNIVE1MVG9rZW4mLCBKU0N1c3RvbUVsZW1l
bnRJbnRlcmZhY2UqKik7CiAgICAgUmVmPEVsZW1lbnQ+IGNyZWF0ZUhUTUxFbGVtZW50KEF0b21p
Y0hUTUxUb2tlbiYpOwotICAgIFJlZjxFbGVtZW50PiBjcmVhdGVFbGVtZW50KEF0b21pY0hUTUxU
b2tlbiYsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJKTsKKyAgICBSZWY8RWxlbWVu
dD4gY3JlYXRlRWxlbWVudChBdG9taWNIVE1MVG9rZW4mLCBjb25zdCBBdG9tU3RyaW5nJiBuYW1l
c3BhY2VVUkkpOwogCiAgICAgdm9pZCBtZXJnZUF0dHJpYnV0ZXNGcm9tVG9rZW5JbnRvRWxlbWVu
dChBdG9taWNIVE1MVG9rZW4mJiwgRWxlbWVudCYpOwogICAgIHZvaWQgZGlzcGF0Y2hEb2N1bWVu
dEVsZW1lbnRBdmFpbGFibGVJZk5lZWRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTEVsZW1lbnRTdGFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MRWxlbWVudFN0YWNrLmNwcAppbmRleCA5ZWE2M2JjNTUyOTg4Y2FlMWNkYzhmZWFh
ODI2NzAzYjA3Y2MzNzI4Li4zMGM1YjQ2ZGYxMDNkYmRmNmY0YjdjZTQwOWNjM2FhMTZjNTQ2MDEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNr
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmNw
cApAQCAtMTkwLDcgKzE5MCw3IEBAIHZvaWQgSFRNTEVsZW1lbnRTdGFjazo6cG9wKCkKICAgICBw
b3BDb21tb24oKTsKIH0KIAotdm9pZCBIVE1MRWxlbWVudFN0YWNrOjpwb3BVbnRpbChjb25zdCBB
dG9taWNTdHJpbmcmIHRhZ05hbWUpCit2b2lkIEhUTUxFbGVtZW50U3RhY2s6OnBvcFVudGlsKGNv
bnN0IEF0b21TdHJpbmcmIHRhZ05hbWUpCiB7CiAgICAgd2hpbGUgKCF0b3BTdGFja0l0ZW0oKS5t
YXRjaGVzSFRNTFRhZyh0YWdOYW1lKSkgewogICAgICAgICAvLyBwb3AoKSB3aWxsIEFTU0VSVCBp
ZiBhIDxib2R5PiwgPGhlYWQ+IG9yIDxodG1sPiB3aWxsIGJlIHBvcHBlZC4KQEAgLTE5OCw3ICsx
OTgsNyBAQCB2b2lkIEhUTUxFbGVtZW50U3RhY2s6OnBvcFVudGlsKGNvbnN0IEF0b21pY1N0cmlu
ZyYgdGFnTmFtZSkKICAgICB9CiB9CiAKLXZvaWQgSFRNTEVsZW1lbnRTdGFjazo6cG9wVW50aWxQ
b3BwZWQoY29uc3QgQXRvbWljU3RyaW5nJiB0YWdOYW1lKQordm9pZCBIVE1MRWxlbWVudFN0YWNr
Ojpwb3BVbnRpbFBvcHBlZChjb25zdCBBdG9tU3RyaW5nJiB0YWdOYW1lKQogewogICAgIHBvcFVu
dGlsKHRhZ05hbWUpOwogICAgIHBvcCgpOwpAQCAtMzkyLDcgKzM5Miw3IEBAIGF1dG8gSFRNTEVs
ZW1lbnRTdGFjazo6ZmluZChFbGVtZW50JiBlbGVtZW50KSBjb25zdCAtPiBFbGVtZW50UmVjb3Jk
KgogICAgIHJldHVybiBudWxscHRyOwogfQogCi1hdXRvIEhUTUxFbGVtZW50U3RhY2s6OnRvcG1v
c3QoY29uc3QgQXRvbWljU3RyaW5nJiB0YWdOYW1lKSBjb25zdCAtPiBFbGVtZW50UmVjb3JkKgor
YXV0byBIVE1MRWxlbWVudFN0YWNrOjp0b3Btb3N0KGNvbnN0IEF0b21TdHJpbmcmIHRhZ05hbWUp
IGNvbnN0IC0+IEVsZW1lbnRSZWNvcmQqCiB7CiAgICAgZm9yIChhdXRvKiByZWNvcmQgPSBtX3Rv
cC5nZXQoKTsgcmVjb3JkOyByZWNvcmQgPSByZWNvcmQtPm5leHQoKSkgewogICAgICAgICBpZiAo
cmVjb3JkLT5zdGFja0l0ZW0oKS5tYXRjaGVzSFRNTFRhZyh0YWdOYW1lKSkKQEAgLTQwNiwxMiAr
NDA2LDEyIEBAIGJvb2wgSFRNTEVsZW1lbnRTdGFjazo6Y29udGFpbnMoRWxlbWVudCYgZWxlbWVu
dCkgY29uc3QKICAgICByZXR1cm4gISFmaW5kKGVsZW1lbnQpOwogfQogCi1ib29sIEhUTUxFbGVt
ZW50U3RhY2s6OmNvbnRhaW5zKGNvbnN0IEF0b21pY1N0cmluZyYgdGFnTmFtZSkgY29uc3QKK2Jv
b2wgSFRNTEVsZW1lbnRTdGFjazo6Y29udGFpbnMoY29uc3QgQXRvbVN0cmluZyYgdGFnTmFtZSkg
Y29uc3QKIHsKICAgICByZXR1cm4gISF0b3Btb3N0KHRhZ05hbWUpOwogfQogCi10ZW1wbGF0ZSA8
Ym9vbCBpc01hcmtlcihIVE1MU3RhY2tJdGVtJik+IGJvb2wgaW5TY29wZUNvbW1vbihIVE1MRWxl
bWVudFN0YWNrOjpFbGVtZW50UmVjb3JkKiB0b3AsIGNvbnN0IEF0b21pY1N0cmluZyYgdGFyZ2V0
VGFnKQordGVtcGxhdGUgPGJvb2wgaXNNYXJrZXIoSFRNTFN0YWNrSXRlbSYpPiBib29sIGluU2Nv
cGVDb21tb24oSFRNTEVsZW1lbnRTdGFjazo6RWxlbWVudFJlY29yZCogdG9wLCBjb25zdCBBdG9t
U3RyaW5nJiB0YXJnZXRUYWcpCiB7CiAgICAgZm9yIChhdXRvKiByZWNvcmQgPSB0b3A7IHJlY29y
ZDsgcmVjb3JkID0gcmVjb3JkLT5uZXh0KCkpIHsKICAgICAgICAgYXV0byYgaXRlbSA9IHJlY29y
ZC0+c3RhY2tJdGVtKCk7CkBAIC00NTAsNyArNDUwLDcgQEAgYm9vbCBIVE1MRWxlbWVudFN0YWNr
OjppblNjb3BlKEVsZW1lbnQmIHRhcmdldEVsZW1lbnQpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi1ib29sIEhUTUxFbGVtZW50U3RhY2s6OmluU2NvcGUoY29uc3QgQXRvbWljU3RyaW5n
JiB0YXJnZXRUYWcpIGNvbnN0Citib29sIEhUTUxFbGVtZW50U3RhY2s6OmluU2NvcGUoY29uc3Qg
QXRvbVN0cmluZyYgdGFyZ2V0VGFnKSBjb25zdAogewogICAgIHJldHVybiBpblNjb3BlQ29tbW9u
PGlzU2NvcGVNYXJrZXI+KG1fdG9wLmdldCgpLCB0YXJnZXRUYWcpOwogfQpAQCAtNDYwLDcgKzQ2
MCw3IEBAIGJvb2wgSFRNTEVsZW1lbnRTdGFjazo6aW5TY29wZShjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lKSBjb25zdAogICAgIHJldHVybiBpblNjb3BlKHRhZ05hbWUubG9jYWxOYW1lKCkp
OwogfQogCi1ib29sIEhUTUxFbGVtZW50U3RhY2s6OmluTGlzdEl0ZW1TY29wZShjb25zdCBBdG9t
aWNTdHJpbmcmIHRhcmdldFRhZykgY29uc3QKK2Jvb2wgSFRNTEVsZW1lbnRTdGFjazo6aW5MaXN0
SXRlbVNjb3BlKGNvbnN0IEF0b21TdHJpbmcmIHRhcmdldFRhZykgY29uc3QKIHsKICAgICByZXR1
cm4gaW5TY29wZUNvbW1vbjxpc0xpc3RJdGVtU2NvcGVNYXJrZXI+KG1fdG9wLmdldCgpLCB0YXJn
ZXRUYWcpOwogfQpAQCAtNDcwLDcgKzQ3MCw3IEBAIGJvb2wgSFRNTEVsZW1lbnRTdGFjazo6aW5M
aXN0SXRlbVNjb3BlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUpIGNvbnN0CiAgICAgcmV0
dXJuIGluTGlzdEl0ZW1TY29wZSh0YWdOYW1lLmxvY2FsTmFtZSgpKTsKIH0KIAotYm9vbCBIVE1M
RWxlbWVudFN0YWNrOjppblRhYmxlU2NvcGUoY29uc3QgQXRvbWljU3RyaW5nJiB0YXJnZXRUYWcp
IGNvbnN0Citib29sIEhUTUxFbGVtZW50U3RhY2s6OmluVGFibGVTY29wZShjb25zdCBBdG9tU3Ry
aW5nJiB0YXJnZXRUYWcpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGluU2NvcGVDb21tb248aXNUYWJs
ZVNjb3BlTWFya2VyPihtX3RvcC5nZXQoKSwgdGFyZ2V0VGFnKTsKIH0KQEAgLTQ4MCw3ICs0ODAs
NyBAQCBib29sIEhUTUxFbGVtZW50U3RhY2s6OmluVGFibGVTY29wZShjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdOYW1lKSBjb25zdAogICAgIHJldHVybiBpblRhYmxlU2NvcGUodGFnTmFtZS5sb2Nh
bE5hbWUoKSk7CiB9CiAKLWJvb2wgSFRNTEVsZW1lbnRTdGFjazo6aW5CdXR0b25TY29wZShjb25z
dCBBdG9taWNTdHJpbmcmIHRhcmdldFRhZykgY29uc3QKK2Jvb2wgSFRNTEVsZW1lbnRTdGFjazo6
aW5CdXR0b25TY29wZShjb25zdCBBdG9tU3RyaW5nJiB0YXJnZXRUYWcpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIGluU2NvcGVDb21tb248aXNCdXR0b25TY29wZU1hcmtlcj4obV90b3AuZ2V0KCksIHRh
cmdldFRhZyk7CiB9CkBAIC00OTAsNyArNDkwLDcgQEAgYm9vbCBIVE1MRWxlbWVudFN0YWNrOjpp
bkJ1dHRvblNjb3BlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUpIGNvbnN0CiAgICAgcmV0
dXJuIGluQnV0dG9uU2NvcGUodGFnTmFtZS5sb2NhbE5hbWUoKSk7CiB9CiAKLWJvb2wgSFRNTEVs
ZW1lbnRTdGFjazo6aW5TZWxlY3RTY29wZShjb25zdCBBdG9taWNTdHJpbmcmIHRhcmdldFRhZykg
Y29uc3QKK2Jvb2wgSFRNTEVsZW1lbnRTdGFjazo6aW5TZWxlY3RTY29wZShjb25zdCBBdG9tU3Ry
aW5nJiB0YXJnZXRUYWcpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGluU2NvcGVDb21tb248aXNTZWxl
Y3RTY29wZU1hcmtlcj4obV90b3AuZ2V0KCksIHRhcmdldFRhZyk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmgKaW5kZXggNmQ0OTkyNzcwMmVmZDZk
Njk5ZmQxZGNkNTFjYTYyYjY5Y2JiNDFmZS4uMTE4NzZhYTFhMDI4YTc4OTk5ZWNhNTlkNDJiZmVi
OTg1MjhmMzUzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEVs
ZW1lbnRTdGFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxFbGVtZW50
U3RhY2suaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgICAgIEVsZW1lbnQm
IGVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2l0ZW0tPmVsZW1lbnQoKTsgfQogICAgICAgICBD
b250YWluZXJOb2RlJiBub2RlKCkgY29uc3QgeyByZXR1cm4gbV9pdGVtLT5ub2RlKCk7IH0KLSAg
ICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkkoKSBjb25zdCB7IHJldHVybiBt
X2l0ZW0tPm5hbWVzcGFjZVVSSSgpOyB9CisgICAgICAgIGNvbnN0IEF0b21TdHJpbmcmIG5hbWVz
cGFjZVVSSSgpIGNvbnN0IHsgcmV0dXJuIG1faXRlbS0+bmFtZXNwYWNlVVJJKCk7IH0KICAgICAg
ICAgSFRNTFN0YWNrSXRlbSYgc3RhY2tJdGVtKCkgeyByZXR1cm4gbV9pdGVtLmdldCgpOyB9CiAg
ICAgICAgIGNvbnN0IEhUTUxTdGFja0l0ZW0mIHN0YWNrSXRlbSgpIGNvbnN0IHsgcmV0dXJuIG1f
aXRlbS5nZXQoKTsgfQogCkBAIC05Niw3ICs5Niw3IEBAIHB1YmxpYzoKICAgICBFbGVtZW50UmVj
b3JkJiB0b3BSZWNvcmQoKSBjb25zdDsKICAgICBFbGVtZW50UmVjb3JkKiBmaW5kKEVsZW1lbnQm
KSBjb25zdDsKICAgICBFbGVtZW50UmVjb3JkKiBmdXJ0aGVzdEJsb2NrRm9yRm9ybWF0dGluZ0Vs
ZW1lbnQoRWxlbWVudCYpIGNvbnN0OwotICAgIEVsZW1lbnRSZWNvcmQqIHRvcG1vc3QoY29uc3Qg
QXRvbWljU3RyaW5nJiB0YWdOYW1lKSBjb25zdDsKKyAgICBFbGVtZW50UmVjb3JkKiB0b3Btb3N0
KGNvbnN0IEF0b21TdHJpbmcmIHRhZ05hbWUpIGNvbnN0OwogCiAgICAgdm9pZCBpbnNlcnRBYm92
ZShSZWY8SFRNTFN0YWNrSXRlbT4mJiwgRWxlbWVudFJlY29yZCYpOwogCkBAIC0xMDcsOSArMTA3
LDkgQEAgcHVibGljOgogICAgIHZvaWQgcHVzaEhUTUxCb2R5RWxlbWVudChSZWY8SFRNTFN0YWNr
SXRlbT4mJik7CiAKICAgICB2b2lkIHBvcCgpOwotICAgIHZvaWQgcG9wVW50aWwoY29uc3QgQXRv
bWljU3RyaW5nJiB0YWdOYW1lKTsKKyAgICB2b2lkIHBvcFVudGlsKGNvbnN0IEF0b21TdHJpbmcm
IHRhZ05hbWUpOwogICAgIHZvaWQgcG9wVW50aWwoRWxlbWVudCYpOwotICAgIHZvaWQgcG9wVW50
aWxQb3BwZWQoY29uc3QgQXRvbWljU3RyaW5nJiB0YWdOYW1lKTsKKyAgICB2b2lkIHBvcFVudGls
UG9wcGVkKGNvbnN0IEF0b21TdHJpbmcmIHRhZ05hbWUpOwogICAgIHZvaWQgcG9wVW50aWxQb3Bw
ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSkgeyBwb3BVbnRpbFBvcHBlZCh0YWdOYW1l
LmxvY2FsTmFtZSgpKTsgfQogCiAgICAgdm9pZCBwb3BVbnRpbFBvcHBlZChFbGVtZW50Jik7CkBA
IC0xMjksMTggKzEyOSwxOCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVIVE1MSGVhZEVsZW1l
bnQoRWxlbWVudCYpOwogCiAgICAgYm9vbCBjb250YWlucyhFbGVtZW50JikgY29uc3Q7Ci0gICAg
Ym9vbCBjb250YWlucyhjb25zdCBBdG9taWNTdHJpbmcmIHRhZ05hbWUpIGNvbnN0OworICAgIGJv
b2wgY29udGFpbnMoY29uc3QgQXRvbVN0cmluZyYgdGFnTmFtZSkgY29uc3Q7CiAKICAgICBib29s
IGluU2NvcGUoRWxlbWVudCYpIGNvbnN0OwotICAgIGJvb2wgaW5TY29wZShjb25zdCBBdG9taWNT
dHJpbmcmIHRhZ05hbWUpIGNvbnN0OworICAgIGJvb2wgaW5TY29wZShjb25zdCBBdG9tU3RyaW5n
JiB0YWdOYW1lKSBjb25zdDsKICAgICBib29sIGluU2NvcGUoY29uc3QgUXVhbGlmaWVkTmFtZSYp
IGNvbnN0OwotICAgIGJvb2wgaW5MaXN0SXRlbVNjb3BlKGNvbnN0IEF0b21pY1N0cmluZyYgdGFn
TmFtZSkgY29uc3Q7CisgICAgYm9vbCBpbkxpc3RJdGVtU2NvcGUoY29uc3QgQXRvbVN0cmluZyYg
dGFnTmFtZSkgY29uc3Q7CiAgICAgYm9vbCBpbkxpc3RJdGVtU2NvcGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYpIGNvbnN0OwotICAgIGJvb2wgaW5UYWJsZVNjb3BlKGNvbnN0IEF0b21pY1N0cmluZyYg
dGFnTmFtZSkgY29uc3Q7CisgICAgYm9vbCBpblRhYmxlU2NvcGUoY29uc3QgQXRvbVN0cmluZyYg
dGFnTmFtZSkgY29uc3Q7CiAgICAgYm9vbCBpblRhYmxlU2NvcGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpIGNvbnN0OwotICAgIGJvb2wgaW5CdXR0b25TY29wZShjb25zdCBBdG9taWNTdHJpbmcmIHRh
Z05hbWUpIGNvbnN0OworICAgIGJvb2wgaW5CdXR0b25TY29wZShjb25zdCBBdG9tU3RyaW5nJiB0
YWdOYW1lKSBjb25zdDsKICAgICBib29sIGluQnV0dG9uU2NvcGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpIGNvbnN0OwotICAgIGJvb2wgaW5TZWxlY3RTY29wZShjb25zdCBBdG9taWNTdHJpbmcmIHRh
Z05hbWUpIGNvbnN0OworICAgIGJvb2wgaW5TZWxlY3RTY29wZShjb25zdCBBdG9tU3RyaW5nJiB0
YWdOYW1lKSBjb25zdDsKICAgICBib29sIGluU2VsZWN0U2NvcGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpIGNvbnN0OwogCiAgICAgYm9vbCBoYXNOdW1iZXJlZEhlYWRlckVsZW1lbnRJblNjb3BlKCkg
Y29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRm9ybWF0
dGluZ0VsZW1lbnRMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxGb3Jt
YXR0aW5nRWxlbWVudExpc3QuY3BwCmluZGV4IGNhYjE2ZjExZDgzOWM5OWUzYTkzNjdiN2JjNGI5
MzVkNDUyZjRiN2UuLjY1NzQ4NjM4OTZlOGY4ODZkNzU5MmJlZTFmYTljOWVlOTZhM2ZmOTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxGb3JtYXR0aW5nRWxlbWVu
dExpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxGb3JtYXR0aW5n
RWxlbWVudExpc3QuY3BwCkBAIC00MSw3ICs0MSw3IEBAIEhUTUxGb3JtYXR0aW5nRWxlbWVudExp
c3Q6OkhUTUxGb3JtYXR0aW5nRWxlbWVudExpc3QoKSA9IGRlZmF1bHQ7CiAKIEhUTUxGb3JtYXR0
aW5nRWxlbWVudExpc3Q6On5IVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0KCkgPSBkZWZhdWx0Owog
Ci1FbGVtZW50KiBIVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0OjpjbG9zZXN0RWxlbWVudEluU2Nv
cGVXaXRoTmFtZShjb25zdCBBdG9taWNTdHJpbmcmIHRhcmdldE5hbWUpCitFbGVtZW50KiBIVE1M
Rm9ybWF0dGluZ0VsZW1lbnRMaXN0OjpjbG9zZXN0RWxlbWVudEluU2NvcGVXaXRoTmFtZShjb25z
dCBBdG9tU3RyaW5nJiB0YXJnZXROYW1lKQogewogICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkg
PD0gbV9lbnRyaWVzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGNvbnN0IEVudHJ5JiBlbnRyeSA9
IG1fZW50cmllc1ttX2VudHJpZXMuc2l6ZSgpIC0gaV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0LmgKaW5kZXggZGZlYmVh
MzQzY2VjMDU4MDc0MDk0ZmMyNmJmMzVlNDE4ZjJhZGM5YS4uZTZhYjFlYTU3YjE0ZDIxZDk4MTNk
ZjdmZWRhMGM2NTZjOWQwYTdmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTEZvcm1hdHRpbmdFbGVtZW50TGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxGb3JtYXR0aW5nRWxlbWVudExpc3QuaApAQCAtMTAxLDcgKzEwMSw3IEBAIHB1
YmxpYzoKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhc2l6ZSgpOyB9CiAgICAg
c2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2VudHJpZXMuc2l6ZSgpOyB9CiAKLSAgICBF
bGVtZW50KiBjbG9zZXN0RWxlbWVudEluU2NvcGVXaXRoTmFtZShjb25zdCBBdG9taWNTdHJpbmcm
KTsKKyAgICBFbGVtZW50KiBjbG9zZXN0RWxlbWVudEluU2NvcGVXaXRoTmFtZShjb25zdCBBdG9t
U3RyaW5nJik7CiAKICAgICBFbnRyeSogZmluZChFbGVtZW50Jik7CiAgICAgYm9vbCBjb250YWlu
cyhFbGVtZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
TWV0YUNoYXJzZXRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTE1l
dGFDaGFyc2V0UGFyc2VyLmNwcAppbmRleCBiNWNhNDZjMjFmYjZjYTI1Y2I5ODI1Yzc5NWYwODg3
YjQ0NDUyMGQ1Li44ZTBiY2IwNDBjMTEzMzdhZmMwMzQ5MTk4MzBmMmQyN2VhOTk0MTE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MTWV0YUNoYXJzZXRQYXJzZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxNZXRhQ2hhcnNldFBhcnNl
ci5jcHAKQEAgLTE2MCw3ICsxNjAsNyBAQCBib29sIEhUTUxNZXRhQ2hhcnNldFBhcnNlcjo6Y2hl
Y2tGb3JNZXRhQ2hhcnNldChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQogICAgIHdo
aWxlIChhdXRvIHRva2VuID0gbV90b2tlbml6ZXIubmV4dFRva2VuKG1faW5wdXQpKSB7CiAgICAg
ICAgIGJvb2wgaXNFbmQgPSB0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlbjo6RW5kVGFnOwogICAg
ICAgICBpZiAoaXNFbmQgfHwgdG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnKSB7
Ci0gICAgICAgICAgICBBdG9taWNTdHJpbmcgdGFnTmFtZSh0b2tlbi0+bmFtZSgpKTsKKyAgICAg
ICAgICAgIEF0b21TdHJpbmcgdGFnTmFtZSh0b2tlbi0+bmFtZSgpKTsKICAgICAgICAgICAgIGlm
ICghaXNFbmQpIHsKICAgICAgICAgICAgICAgICBtX3Rva2VuaXplci51cGRhdGVTdGF0ZUZvcih0
YWdOYW1lKTsKICAgICAgICAgICAgICAgICBpZiAodGFnTmFtZSA9PSBtZXRhVGFnICYmIHByb2Nl
c3NNZXRhKCp0b2tlbikpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxQYXJzZXJJZGlvbXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBh
cnNlcklkaW9tcy5jcHAKaW5kZXggNTQ0MmUwYzRhMDY3YmE3MjdiNjI5NWY5YjkxOGYzMzk5ZGIy
ZWFjZS4uNzY3OTg0NjdlMzQwNDZmY2RiNWU1NjRmYjkxZTdmYTM0MjRjNDJhYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKQEAgLTM0Niw3
ICszNDYsNyBAQCBib29sIHRocmVhZFNhZmVNYXRjaChjb25zdCBRdWFsaWZpZWROYW1lJiBhLCBj
b25zdCBRdWFsaWZpZWROYW1lJiBiKQogICAgIHJldHVybiB0aHJlYWRTYWZlRXF1YWwoKmEubG9j
YWxOYW1lKCkuaW1wbCgpLCAqYi5sb2NhbE5hbWUoKS5pbXBsKCkpOwogfQogCi1TdHJpbmcgcGFy
c2VDT1JTU2V0dGluZ3NBdHRyaWJ1dGUoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKK1N0cmlu
ZyBwYXJzZUNPUlNTZXR0aW5nc0F0dHJpYnV0ZShjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKIHsK
ICAgICBpZiAodmFsdWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKQEAgLTQ2
OCwxMiArNDY4LDEyIEBAIGJvb2wgcGFyc2VNZXRhSFRUUEVxdWl2UmVmcmVzaChjb25zdCBTdHJp
bmdWaWV3JiBpbnB1dCwgZG91YmxlJiBkZWxheSwgU3RyaW5nJiB1CiB9CiAKIC8vIGh0dHBzOi8v
aHRtbC5zcGVjLndoYXR3Zy5vcmcvI3J1bGVzLWZvci1wYXJzaW5nLWEtaGFzaC1uYW1lLXJlZmVy
ZW5jZQotQXRvbWljU3RyaW5nIHBhcnNlSFRNTEhhc2hOYW1lUmVmZXJlbmNlKFN0cmluZ1ZpZXcg
dXNlbWFwKQorQXRvbVN0cmluZyBwYXJzZUhUTUxIYXNoTmFtZVJlZmVyZW5jZShTdHJpbmdWaWV3
IHVzZW1hcCkKIHsKICAgICBzaXplX3QgbnVtYmVyU2lnbkluZGV4ID0gdXNlbWFwLmZpbmQoJyMn
KTsKICAgICBpZiAobnVtYmVyU2lnbkluZGV4ID09IG5vdEZvdW5kKQogICAgICAgICByZXR1cm4g
bnVsbEF0b20oKTsKLSAgICByZXR1cm4gdXNlbWFwLnN1YnN0cmluZyhudW1iZXJTaWduSW5kZXgg
KyAxKS50b0F0b21pY1N0cmluZygpOworICAgIHJldHVybiB1c2VtYXAuc3Vic3RyaW5nKG51bWJl
clNpZ25JbmRleCArIDEpLnRvQXRvbVN0cmluZygpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmgKaW5kZXggNjllODk0ZDEwOGMxOTM0YTIw
NjhhMzliZDhmOTVkMzc5YjUyMjg1MC4uNTM4NWM5NjUyNjE3NjkyZGY2NjJjYjgxZjVmZTg4MTkx
YjljZTE2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNl
cklkaW9tcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlv
bXMuaApAQCAtODAsMTEgKzgwLDExIEBAIFZlY3Rvcjxkb3VibGU+IHBhcnNlSFRNTExpc3RPZk9m
RmxvYXRpbmdQb2ludE51bWJlclZhbHVlcyhTdHJpbmdWaWV3KTsKIGJvb2wgcGFyc2VNZXRhSFRU
UEVxdWl2UmVmcmVzaChjb25zdCBTdHJpbmdWaWV3JiwgZG91YmxlJiBkZWxheSwgU3RyaW5nJiB1
cmwpOwogCiAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9pbmZyYXN0
cnVjdHVyZS5odG1sI2NvcnMtc2V0dGluZ3MtYXR0cmlidXRlCi1TdHJpbmcgcGFyc2VDT1JTU2V0
dGluZ3NBdHRyaWJ1dGUoY29uc3QgQXRvbWljU3RyaW5nJik7CitTdHJpbmcgcGFyc2VDT1JTU2V0
dGluZ3NBdHRyaWJ1dGUoY29uc3QgQXRvbVN0cmluZyYpOwogCiBib29sIHRocmVhZFNhZmVNYXRj
aChjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogCi1BdG9taWNT
dHJpbmcgcGFyc2VIVE1MSGFzaE5hbWVSZWZlcmVuY2UoU3RyaW5nVmlldyk7CitBdG9tU3RyaW5n
IHBhcnNlSFRNTEhhc2hOYW1lUmVmZXJlbmNlKFN0cmluZ1ZpZXcpOwogCiAvLyBJbmxpbmUgaW1w
bGVtZW50YXRpb25zIG9mIHNvbWUgb2YgdGhlIGZ1bmN0aW9ucyBkZWNsYXJlZCBhYm92ZS4KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAK
aW5kZXggZDcxZWM1NTI1MDU3NDU4MTZkNTUzNjRlM2ZhYjZlYjFjOGU5MGMwYi4uMzIzMTQ5NmJm
MDlhNTBlZWQyZGFiMjI2NDVmMjI4NzViNGZmYTkzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwCkBAIC01MSw3ICs1MSw3IEBAIHVz
aW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIFRva2VuUHJlbG9hZFNjYW5uZXI6OlRhZ0lkIFRv
a2VuUHJlbG9hZFNjYW5uZXI6OnRhZ0lkRm9yKGNvbnN0IEhUTUxUb2tlbjo6RGF0YVZlY3RvciYg
ZGF0YSkKIHsKLSAgICBBdG9taWNTdHJpbmcgdGFnTmFtZShkYXRhKTsKKyAgICBBdG9tU3RyaW5n
IHRhZ05hbWUoZGF0YSk7CiAgICAgaWYgKHRhZ05hbWUgPT0gaW1nVGFnKQogICAgICAgICByZXR1
cm4gVGFnSWQ6OkltZzsKICAgICBpZiAodGFnTmFtZSA9PSBpbnB1dFRhZykKQEAgLTEyMCw3ICsx
MjAsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgICAgICBm
b3IgKGF1dG8mIGF0dHJpYnV0ZSA6IGF0dHJpYnV0ZXMpIHsKLSAgICAgICAgICAgIEF0b21pY1N0
cmluZyBhdHRyaWJ1dGVOYW1lKGF0dHJpYnV0ZS5uYW1lKTsKKyAgICAgICAgICAgIEF0b21TdHJp
bmcgYXR0cmlidXRlTmFtZShhdHRyaWJ1dGUubmFtZSk7CiAgICAgICAgICAgICBTdHJpbmcgYXR0
cmlidXRlVmFsdWUgPSBTdHJpbmdJbXBsOjpjcmVhdGU4Qml0SWZQb3NzaWJsZShhdHRyaWJ1dGUu
dmFsdWUpOwogICAgICAgICAgICAgcHJvY2Vzc0F0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lLCBhdHRy
aWJ1dGVWYWx1ZSwgZG9jdW1lbnQsIHBpY3R1cmVTdGF0ZSk7CiAgICAgICAgIH0KQEAgLTE3Miwx
NCArMTcyLDE0IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlcXVlc3Q7CiAgICAgfQogCi0g
ICAgc3RhdGljIGJvb2wgbWF0Y2goY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBRdWFs
aWZpZWROYW1lJiBxTmFtZSkKKyAgICBzdGF0aWMgYm9vbCBtYXRjaChjb25zdCBBdG9tU3RyaW5n
JiBuYW1lLCBjb25zdCBRdWFsaWZpZWROYW1lJiBxTmFtZSkKICAgICB7CiAgICAgICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIHJldHVybiBxTmFtZS5sb2NhbE5hbWUoKSA9PSBu
YW1lOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICB2b2lkIHByb2Nlc3NJbWFnZUFuZFNjcmlwdEF0
dHJpYnV0ZShjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IFN0cmluZyYg
YXR0cmlidXRlVmFsdWUpCisgICAgdm9pZCBwcm9jZXNzSW1hZ2VBbmRTY3JpcHRBdHRyaWJ1dGUo
Y29uc3QgQXRvbVN0cmluZyYgYXR0cmlidXRlTmFtZSwgY29uc3QgU3RyaW5nJiBhdHRyaWJ1dGVW
YWx1ZSkKICAgICB7CiAgICAgICAgIGlmIChtYXRjaChhdHRyaWJ1dGVOYW1lLCBzcmNBdHRyKSkK
ICAgICAgICAgICAgIHNldFVybFRvTG9hZChhdHRyaWJ1dGVWYWx1ZSk7CkBAIC0xODksNyArMTg5
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1fY2hhcnNldCA9IGF0dHJpYnV0ZVZhbHVlOwog
ICAgIH0KIAotICAgIHZvaWQgcHJvY2Vzc0F0dHJpYnV0ZShjb25zdCBBdG9taWNTdHJpbmcmIGF0
dHJpYnV0ZU5hbWUsIGNvbnN0IFN0cmluZyYgYXR0cmlidXRlVmFsdWUsIERvY3VtZW50JiBkb2N1
bWVudCwgY29uc3QgVmVjdG9yPGJvb2w+JiBwaWN0dXJlU3RhdGUpCisgICAgdm9pZCBwcm9jZXNz
QXR0cmlidXRlKGNvbnN0IEF0b21TdHJpbmcmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IFN0cmluZyYg
YXR0cmlidXRlVmFsdWUsIERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVmVjdG9yPGJvb2w+JiBw
aWN0dXJlU3RhdGUpCiAgICAgewogICAgICAgICBib29sIGluUGljdHVyZSA9ICFwaWN0dXJlU3Rh
dGUuaXNFbXB0eSgpOwogICAgICAgICBib29sIGFscmVhZHlNYXRjaGVkU291cmNlID0gaW5QaWN0
dXJlICYmIHBpY3R1cmVTdGF0ZS5sYXN0KCk7CkBAIC00NzIsNyArNDcyLDcgQEAgdm9pZCBIVE1M
UHJlbG9hZFNjYW5uZXI6OnNjYW4oSFRNTFJlc291cmNlUHJlbG9hZGVyJiBwcmVsb2FkZXIsIERv
Y3VtZW50JiBkb2N1bWUKIAogICAgIHdoaWxlIChhdXRvIHRva2VuID0gbV90b2tlbml6ZXIubmV4
dFRva2VuKG1fc291cmNlKSkgewogICAgICAgICBpZiAodG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9r
ZW46OlN0YXJ0VGFnKQotICAgICAgICAgICAgbV90b2tlbml6ZXIudXBkYXRlU3RhdGVGb3IoQXRv
bWljU3RyaW5nKHRva2VuLT5uYW1lKCkpKTsKKyAgICAgICAgICAgIG1fdG9rZW5pemVyLnVwZGF0
ZVN0YXRlRm9yKEF0b21TdHJpbmcodG9rZW4tPm5hbWUoKSkpOwogICAgICAgICBtX3NjYW5uZXIu
c2NhbigqdG9rZW4sIHJlcXVlc3RzLCBkb2N1bWVudCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU3Jjc2V0UGFyc2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTcmNzZXRQYXJzZXIuY3BwCmluZGV4IGFmNDI2Y2RiNDFi
MGQ4ZmY5ODg3N2MzYjg1NjJhZmUxOWM4MzE4YmUuLjRmNDEwNzg5MDY4NjIyMmI1OWU5MzkyNjk4
OTYxMWJlY2UzZDY5ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxTcmNzZXRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxT
cmNzZXRQYXJzZXIuY3BwCkBAIC0yNTcsNyArMjU3LDcgQEAgc3RhdGljIEltYWdlQ2FuZGlkYXRl
IHBpY2tCZXN0SW1hZ2VDYW5kaWRhdGUoZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IsIFZlY3RvcjxJ
bWEKICAgICByZXR1cm4gaW1hZ2VDYW5kaWRhdGVzW3dpbm5lcl07CiB9CiAKLUltYWdlQ2FuZGlk
YXRlIGJlc3RGaXRTb3VyY2VGb3JJbWFnZUF0dHJpYnV0ZXMoZmxvYXQgZGV2aWNlU2NhbGVGYWN0
b3IsIGNvbnN0IEF0b21pY1N0cmluZyYgc3JjQXR0cmlidXRlLCBjb25zdCBBdG9taWNTdHJpbmcm
IHNyY3NldEF0dHJpYnV0ZSwgZmxvYXQgc291cmNlU2l6ZSkKK0ltYWdlQ2FuZGlkYXRlIGJlc3RG
aXRTb3VyY2VGb3JJbWFnZUF0dHJpYnV0ZXMoZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IsIGNvbnN0
IEF0b21TdHJpbmcmIHNyY0F0dHJpYnV0ZSwgY29uc3QgQXRvbVN0cmluZyYgc3Jjc2V0QXR0cmli
dXRlLCBmbG9hdCBzb3VyY2VTaXplKQogewogICAgIGlmIChzcmNzZXRBdHRyaWJ1dGUuaXNOdWxs
KCkpIHsKICAgICAgICAgaWYgKHNyY0F0dHJpYnV0ZS5pc051bGwoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTcmNzZXRQYXJzZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxTcmNzZXRQYXJzZXIuaAppbmRleCA2M2FlZTUzYTNhYmVkZjM0
YjY5NjU1YTdkNTJkYTczM2JjZTNmMGQyLi4wM2M1N2QzNjBiZWQwZmM4NTlkODM3NGMwNjdjNDFk
YTE2YjVlOWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU3Jj
c2V0UGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFNyY3NldFBh
cnNlci5oCkBAIC0xMDIsNyArMTAyLDcgQEAgc3RydWN0IEltYWdlQ2FuZGlkYXRlIHsKICAgICBP
cmlnaW5BdHRyaWJ1dGUgb3JpZ2luQXR0cmlidXRlOwogfTsKIAotSW1hZ2VDYW5kaWRhdGUgYmVz
dEZpdFNvdXJjZUZvckltYWdlQXR0cmlidXRlcyhmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciwgY29u
c3QgQXRvbWljU3RyaW5nJiBzcmNBdHRyaWJ1dGUsIGNvbnN0IEF0b21pY1N0cmluZyYgc3Jjc2V0
QXR0cmlidXRlLCBmbG9hdCBzb3VyY2VTaXplKTsKK0ltYWdlQ2FuZGlkYXRlIGJlc3RGaXRTb3Vy
Y2VGb3JJbWFnZUF0dHJpYnV0ZXMoZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IsIGNvbnN0IEF0b21T
dHJpbmcmIHNyY0F0dHJpYnV0ZSwgY29uc3QgQXRvbVN0cmluZyYgc3Jjc2V0QXR0cmlidXRlLCBm
bG9hdCBzb3VyY2VTaXplKTsKIAogVmVjdG9yPEltYWdlQ2FuZGlkYXRlPiBwYXJzZUltYWdlQ2Fu
ZGlkYXRlc0Zyb21TcmNzZXRBdHRyaWJ1dGUoU3RyaW5nVmlldyBhdHRyaWJ1dGUpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU3RhY2tJdGVtLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU3RhY2tJdGVtLmgKaW5kZXggOTg1MzE5ODMxYjE1
MzI5YmJhOTRmY2ZhOTA1NDRlOGNmMzdjZmI2ZS4uYTM2MzE1MjBhN2QzMTYzN2NhYjc2MjQ1NDcy
MTRlODFiOWYxOTU4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TFN0YWNrSXRlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTdGFja0l0
ZW0uaApAQCAtMzgsOCArMzgsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBIVE1MU3Rh
Y2tJdGVtIDogcHVibGljIFJlZkNvdW50ZWQ8SFRNTFN0YWNrSXRlbT4gewogcHVibGljOgogICAg
IC8vIE5vcm1hbCBIVE1MRWxlbWVudFN0YWNrIGFuZCBIVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0
IGl0ZW1zLgotICAgIHN0YXRpYyBSZWY8SFRNTFN0YWNrSXRlbT4gY3JlYXRlKFJlZjxFbGVtZW50
PiYmLCBBdG9taWNIVE1MVG9rZW4mJiwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkkg
PSBIVE1MTmFtZXM6OnhodG1sTmFtZXNwYWNlVVJJKTsKLSAgICBzdGF0aWMgUmVmPEhUTUxTdGFj
a0l0ZW0+IGNyZWF0ZShSZWY8RWxlbWVudD4mJiwgY29uc3QgQXRvbWljU3RyaW5nJiwgVmVjdG9y
PEF0dHJpYnV0ZT4mJik7CisgICAgc3RhdGljIFJlZjxIVE1MU3RhY2tJdGVtPiBjcmVhdGUoUmVm
PEVsZW1lbnQ+JiYsIEF0b21pY0hUTUxUb2tlbiYmLCBjb25zdCBBdG9tU3RyaW5nJiBuYW1lc3Bh
Y2VVUkkgPSBIVE1MTmFtZXM6OnhodG1sTmFtZXNwYWNlVVJJKTsKKyAgICBzdGF0aWMgUmVmPEhU
TUxTdGFja0l0ZW0+IGNyZWF0ZShSZWY8RWxlbWVudD4mJiwgY29uc3QgQXRvbVN0cmluZyYsIFZl
Y3RvcjxBdHRyaWJ1dGU+JiYpOwogCiAgICAgLy8gRG9jdW1lbnQgZnJhZ21lbnQgb3IgZWxlbWVu
dCBmb3IgcGFyc2luZyBjb250ZXh0LgogICAgIHN0YXRpYyBSZWY8SFRNTFN0YWNrSXRlbT4gY3Jl
YXRlKEVsZW1lbnQmKTsKQEAgLTUxLDI0ICs1MSwyNCBAQCBwdWJsaWM6CiAgICAgQ29udGFpbmVy
Tm9kZSYgbm9kZSgpIGNvbnN0OwogICAgIEVsZW1lbnQmIGVsZW1lbnQoKSBjb25zdDsKIAotICAg
IGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJKCkgY29uc3Q7Ci0gICAgY29uc3QgQXRv
bWljU3RyaW5nJiBsb2NhbE5hbWUoKSBjb25zdDsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBuYW1l
c3BhY2VVUkkoKSBjb25zdDsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBsb2NhbE5hbWUoKSBjb25z
dDsKIAogICAgIGNvbnN0IFZlY3RvcjxBdHRyaWJ1dGU+JiBhdHRyaWJ1dGVzKCkgY29uc3Q7CiAg
ICAgY29uc3QgQXR0cmlidXRlKiBmaW5kQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJpYnV0ZU5hbWUpIGNvbnN0OwogCiAgICAgYm9vbCBoYXNUYWdOYW1lKGNvbnN0IFF1YWxpZmll
ZE5hbWUmKSBjb25zdDsKLSAgICBib29sIG1hdGNoZXNIVE1MVGFnKGNvbnN0IEF0b21pY1N0cmlu
ZyYpIGNvbnN0OworICAgIGJvb2wgbWF0Y2hlc0hUTUxUYWcoY29uc3QgQXRvbVN0cmluZyYpIGNv
bnN0OwogCiBwcml2YXRlOgotICAgIEhUTUxTdGFja0l0ZW0oUmVmPEVsZW1lbnQ+JiYsIEF0b21p
Y0hUTUxUb2tlbiYmLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSk7Ci0gICAgSFRN
TFN0YWNrSXRlbShSZWY8RWxlbWVudD4mJiwgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUs
IGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJLCBWZWN0b3I8QXR0cmlidXRlPiYmKTsK
KyAgICBIVE1MU3RhY2tJdGVtKFJlZjxFbGVtZW50PiYmLCBBdG9taWNIVE1MVG9rZW4mJiwgY29u
c3QgQXRvbVN0cmluZyYgbmFtZXNwYWNlVVJJKTsKKyAgICBIVE1MU3RhY2tJdGVtKFJlZjxFbGVt
ZW50PiYmLCBjb25zdCBBdG9tU3RyaW5nJiBsb2NhbE5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIG5h
bWVzcGFjZVVSSSwgVmVjdG9yPEF0dHJpYnV0ZT4mJik7CiAgICAgZXhwbGljaXQgSFRNTFN0YWNr
SXRlbShFbGVtZW50Jik7CiAgICAgZXhwbGljaXQgSFRNTFN0YWNrSXRlbShEb2N1bWVudEZyYWdt
ZW50Jik7CiAKICAgICBjb25zdCBSZWY8Q29udGFpbmVyTm9kZT4gbV9ub2RlOwotICAgIGNvbnN0
IEF0b21pY1N0cmluZyBtX25hbWVzcGFjZVVSSTsKLSAgICBjb25zdCBBdG9taWNTdHJpbmcgbV9s
b2NhbE5hbWU7CisgICAgY29uc3QgQXRvbVN0cmluZyBtX25hbWVzcGFjZVVSSTsKKyAgICBjb25z
dCBBdG9tU3RyaW5nIG1fbG9jYWxOYW1lOwogICAgIGNvbnN0IFZlY3RvcjxBdHRyaWJ1dGU+IG1f
YXR0cmlidXRlczsKIH07CiAKQEAgLTc2LDcgKzc2LDcgQEAgYm9vbCBpc0luSFRNTE5hbWVzcGFj
ZShjb25zdCBIVE1MU3RhY2tJdGVtJik7CiBib29sIGlzTnVtYmVyZWRIZWFkZXJFbGVtZW50KGNv
bnN0IEhUTUxTdGFja0l0ZW0mKTsKIGJvb2wgaXNTcGVjaWFsTm9kZShjb25zdCBIVE1MU3RhY2tJ
dGVtJik7CiAKLWlubGluZSBIVE1MU3RhY2tJdGVtOjpIVE1MU3RhY2tJdGVtKFJlZjxFbGVtZW50
PiYmIGVsZW1lbnQsIEF0b21pY0hUTUxUb2tlbiYmIHRva2VuLCBjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWVzcGFjZVVSSSA9IEhUTUxOYW1lczo6eGh0bWxOYW1lc3BhY2VVUkkpCitpbmxpbmUgSFRN
TFN0YWNrSXRlbTo6SFRNTFN0YWNrSXRlbShSZWY8RWxlbWVudD4mJiBlbGVtZW50LCBBdG9taWNI
VE1MVG9rZW4mJiB0b2tlbiwgY29uc3QgQXRvbVN0cmluZyYgbmFtZXNwYWNlVVJJID0gSFRNTE5h
bWVzOjp4aHRtbE5hbWVzcGFjZVVSSSkKICAgICA6IG1fbm9kZShXVEZNb3ZlKGVsZW1lbnQpKQog
ICAgICwgbV9uYW1lc3BhY2VVUkkobmFtZXNwYWNlVVJJKQogICAgICwgbV9sb2NhbE5hbWUodG9r
ZW4ubmFtZSgpKQpAQCAtODQsMTIgKzg0LDEyIEBAIGlubGluZSBIVE1MU3RhY2tJdGVtOjpIVE1M
U3RhY2tJdGVtKFJlZjxFbGVtZW50PiYmIGVsZW1lbnQsIEF0b21pY0hUTUxUb2tlbiYmIHRvCiB7
CiB9CiAKLWlubGluZSBSZWY8SFRNTFN0YWNrSXRlbT4gSFRNTFN0YWNrSXRlbTo6Y3JlYXRlKFJl
ZjxFbGVtZW50PiYmIGVsZW1lbnQsIEF0b21pY0hUTUxUb2tlbiYmIHRva2VuLCBjb25zdCBBdG9t
aWNTdHJpbmcmIG5hbWVzcGFjZVVSSSkKK2lubGluZSBSZWY8SFRNTFN0YWNrSXRlbT4gSFRNTFN0
YWNrSXRlbTo6Y3JlYXRlKFJlZjxFbGVtZW50PiYmIGVsZW1lbnQsIEF0b21pY0hUTUxUb2tlbiYm
IHRva2VuLCBjb25zdCBBdG9tU3RyaW5nJiBuYW1lc3BhY2VVUkkpCiB7CiAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgSFRNTFN0YWNrSXRlbShXVEZNb3ZlKGVsZW1lbnQpLCBXVEZNb3ZlKHRva2Vu
KSwgbmFtZXNwYWNlVVJJKSk7CiB9CiAKLWlubGluZSBIVE1MU3RhY2tJdGVtOjpIVE1MU3RhY2tJ
dGVtKFJlZjxFbGVtZW50PiYmIGVsZW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1l
LCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSwgVmVjdG9yPEF0dHJpYnV0ZT4mJiBh
dHRyaWJ1dGVzKQoraW5saW5lIEhUTUxTdGFja0l0ZW06OkhUTUxTdGFja0l0ZW0oUmVmPEVsZW1l
bnQ+JiYgZWxlbWVudCwgY29uc3QgQXRvbVN0cmluZyYgbG9jYWxOYW1lLCBjb25zdCBBdG9tU3Ry
aW5nJiBuYW1lc3BhY2VVUkksIFZlY3RvcjxBdHRyaWJ1dGU+JiYgYXR0cmlidXRlcykKICAgICA6
IG1fbm9kZShXVEZNb3ZlKGVsZW1lbnQpKQogICAgICwgbV9uYW1lc3BhY2VVUkkobmFtZXNwYWNl
VVJJKQogICAgICwgbV9sb2NhbE5hbWUobG9jYWxOYW1lKQpAQCAtOTcsNyArOTcsNyBAQCBpbmxp
bmUgSFRNTFN0YWNrSXRlbTo6SFRNTFN0YWNrSXRlbShSZWY8RWxlbWVudD4mJiBlbGVtZW50LCBj
b25zdCBBdG9taWNTdHJpbmcmCiB7CiB9CiAKLWlubGluZSBSZWY8SFRNTFN0YWNrSXRlbT4gSFRN
TFN0YWNrSXRlbTo6Y3JlYXRlKFJlZjxFbGVtZW50PiYmIGVsZW1lbnQsIGNvbnN0IEF0b21pY1N0
cmluZyYgbG9jYWxOYW1lLCBWZWN0b3I8QXR0cmlidXRlPiYmIGF0dHJpYnV0ZXMpCitpbmxpbmUg
UmVmPEhUTUxTdGFja0l0ZW0+IEhUTUxTdGFja0l0ZW06OmNyZWF0ZShSZWY8RWxlbWVudD4mJiBl
bGVtZW50LCBjb25zdCBBdG9tU3RyaW5nJiBsb2NhbE5hbWUsIFZlY3RvcjxBdHRyaWJ1dGU+JiYg
YXR0cmlidXRlcykKIHsKICAgICBhdXRvJiBuYW1lc3BhY2VVUkkgPSBlbGVtZW50LmdldCgpLm5h
bWVzcGFjZVVSSSgpOwogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEhUTUxTdGFja0l0ZW0oV1RG
TW92ZShlbGVtZW50KSwgbG9jYWxOYW1lLCBuYW1lc3BhY2VVUkksIFdURk1vdmUoYXR0cmlidXRl
cykpKTsKQEAgLTE0NSwxMiArMTQ1LDEyIEBAIGlubGluZSBib29sIEhUTUxTdGFja0l0ZW06Omlz
RWxlbWVudCgpIGNvbnN0CiAgICAgcmV0dXJuICFpc0RvY3VtZW50RnJhZ21lbnQoKTsKIH0KIAot
aW5saW5lIGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTFN0YWNrSXRlbTo6bmFtZXNwYWNlVVJJKCkg
Y29uc3QKK2lubGluZSBjb25zdCBBdG9tU3RyaW5nJiBIVE1MU3RhY2tJdGVtOjpuYW1lc3BhY2VV
UkkoKSBjb25zdAogewogICAgIHJldHVybiBtX25hbWVzcGFjZVVSSTsKIH0KIAotaW5saW5lIGNv
bnN0IEF0b21pY1N0cmluZyYgSFRNTFN0YWNrSXRlbTo6bG9jYWxOYW1lKCkgY29uc3QKK2lubGlu
ZSBjb25zdCBBdG9tU3RyaW5nJiBIVE1MU3RhY2tJdGVtOjpsb2NhbE5hbWUoKSBjb25zdAogewog
ICAgIHJldHVybiBtX2xvY2FsTmFtZTsKIH0KQEAgLTE3MSw3ICsxNzEsNyBAQCBpbmxpbmUgYm9v
bCBIVE1MU3RhY2tJdGVtOjpoYXNUYWdOYW1lKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNv
bnN0CiAgICAgcmV0dXJuIG1fbG9jYWxOYW1lID09IG5hbWUubG9jYWxOYW1lKCkgJiYgbV9uYW1l
c3BhY2VVUkkgPT0gbmFtZS5uYW1lc3BhY2VVUkkoKTsKIH0KIAotaW5saW5lIGJvb2wgSFRNTFN0
YWNrSXRlbTo6bWF0Y2hlc0hUTUxUYWcoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdAor
aW5saW5lIGJvb2wgSFRNTFN0YWNrSXRlbTo6bWF0Y2hlc0hUTUxUYWcoY29uc3QgQXRvbVN0cmlu
ZyYgbmFtZSkgY29uc3QKIHsKICAgICByZXR1cm4gbV9sb2NhbE5hbWUgPT0gbmFtZSAmJiBtX25h
bWVzcGFjZVVSSSA9PSBIVE1MTmFtZXM6OnhodG1sTmFtZXNwYWNlVVJJOwogfQpAQCAtMjAwLDcg
KzIwMCw3IEBAIGlubGluZSBib29sIGlzU3BlY2lhbE5vZGUoY29uc3QgSFRNTFN0YWNrSXRlbSYg
aXRlbSkKIHsKICAgICBpZiAoaXRlbS5pc0RvY3VtZW50RnJhZ21lbnQoKSkKICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiB0YWdOYW1lID0gaXRlbS5sb2NhbE5h
bWUoKTsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiB0YWdOYW1lID0gaXRlbS5sb2NhbE5hbWUoKTsK
ICAgICBpZiAoaXRlbS5uYW1lc3BhY2VVUkkoKSA9PSBIVE1MTmFtZXM6OnhodG1sTmFtZXNwYWNl
VVJJKSB7CiAgICAgICAgIHJldHVybiB0YWdOYW1lID09IEhUTUxOYW1lczo6YWRkcmVzc1RhZwog
ICAgICAgICAgICAgfHwgdGFnTmFtZSA9PSBIVE1MTmFtZXM6OmFwcGxldFRhZwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuaXplci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW5pemVyLmNwcAppbmRleCBmNTM3Y2YxYjRkOTNm
MDNmNzM5MzE2MTM2Y2UwM2ExNmRmYzNlMGNkLi42NjNlMGMxYzdhOTVkZjlkZDViMTViMjg4YzNm
MzI3Mjc4ZTQyODEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
VG9rZW5pemVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW5p
emVyLmNwcApAQCAtMTQwNSw3ICsxNDA1LDcgQEAgU3RyaW5nIEhUTUxUb2tlbml6ZXI6OmJ1ZmZl
cmVkQ2hhcmFjdGVycygpIGNvbnN0CiAgICAgcmV0dXJuIGNoYXJhY3RlcnMudG9TdHJpbmcoKTsK
IH0KIAotdm9pZCBIVE1MVG9rZW5pemVyOjp1cGRhdGVTdGF0ZUZvcihjb25zdCBBdG9taWNTdHJp
bmcmIHRhZ05hbWUpCit2b2lkIEhUTUxUb2tlbml6ZXI6OnVwZGF0ZVN0YXRlRm9yKGNvbnN0IEF0
b21TdHJpbmcmIHRhZ05hbWUpCiB7CiAgICAgaWYgKHRhZ05hbWUgPT0gdGV4dGFyZWFUYWcgfHwg
dGFnTmFtZSA9PSB0aXRsZVRhZykKICAgICAgICAgbV9zdGF0ZSA9IFJDREFUQVN0YXRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuaXplci5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuaXplci5oCmluZGV4IGE1NTNhY2JkOTFj
NjA5OTcyNjU2NWUxN2FiMmZlODdhZDdiZTk4NzcuLjVkODE5MWY0NDg5NTQ0MjE1OGNmN2UyNTRh
M2ExYzU2ODdhODA0NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxUb2tlbml6ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW5p
emVyLmgKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogICAgIC8vCiAgICAgLy8gVGhpcyBhcHBy
b3hpbWF0aW9uIGlzIGFsc28gdGhlIGFsZ29yaXRobSBjYWxsZWQgZm9yIHdoZW4gcGFyc2luZyBh
biBIVE1MIGZyYWdtZW50LgogICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVs
dGlwYWdlL3N5bnRheC5odG1sI3BhcnNpbmctaHRtbC1mcmFnbWVudHMKLSAgICB2b2lkIHVwZGF0
ZVN0YXRlRm9yKGNvbnN0IEF0b21pY1N0cmluZyYgdGFnTmFtZSk7CisgICAgdm9pZCB1cGRhdGVT
dGF0ZUZvcihjb25zdCBBdG9tU3RyaW5nJiB0YWdOYW1lKTsKIAogICAgIHZvaWQgc2V0Rm9yY2VO
dWxsQ2hhcmFjdGVyUmVwbGFjZW1lbnQoYm9vbCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwCmluZGV4IDE4ZmJlNDA0MmQ0ZmVlYzZmN2ZjZjMy
YTEzNzIxMTliNTMxNTM0YjguLjBmYjFmYjZiMmE2NzM0ZTYxZTkyNjIxYjI2YzBhNmRiNmI0ZWRh
ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNw
cApAQCAtNTYsNyArNTYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFj
ZSBIVE1MTmFtZXM7CiAKLUN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rpb25EYXRhOjpDdXN0b21FbGVt
ZW50Q29uc3RydWN0aW9uRGF0YShSZWY8SlNDdXN0b21FbGVtZW50SW50ZXJmYWNlPiYmIGN1c3Rv
bUVsZW1lbnRJbnRlcmZhY2UsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgVmVjdG9yPEF0dHJp
YnV0ZT4mJiBhdHRyaWJ1dGVzKQorQ3VzdG9tRWxlbWVudENvbnN0cnVjdGlvbkRhdGE6OkN1c3Rv
bUVsZW1lbnRDb25zdHJ1Y3Rpb25EYXRhKFJlZjxKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U+JiYg
Y3VzdG9tRWxlbWVudEludGVyZmFjZSwgY29uc3QgQXRvbVN0cmluZyYgbmFtZSwgVmVjdG9yPEF0
dHJpYnV0ZT4mJiBhdHRyaWJ1dGVzKQogICAgIDogZWxlbWVudEludGVyZmFjZShXVEZNb3ZlKGN1
c3RvbUVsZW1lbnRJbnRlcmZhY2UpKQogICAgICwgbmFtZShuYW1lKQogICAgICwgYXR0cmlidXRl
cyhXVEZNb3ZlKGF0dHJpYnV0ZXMpKQpAQCAtODksNyArODksNyBAQCBzdGF0aWMgaW5saW5lIGJv
b2wgaXNBbGxXaGl0ZXNwYWNlT3JSZXBsYWNlbWVudENoYXJhY3RlcnMoY29uc3QgU3RyaW5nJiBz
dHJpbmcpCiAgICAgcmV0dXJuIHN0cmluZy5pc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzSFRNTFNw
YWNlT3JSZXBsYWNlbWVudENoYXJhY3Rlcj4oKTsKIH0KIAotc3RhdGljIGJvb2wgaXNOdW1iZXJl
ZEhlYWRlclRhZyhjb25zdCBBdG9taWNTdHJpbmcmIHRhZ05hbWUpCitzdGF0aWMgYm9vbCBpc051
bWJlcmVkSGVhZGVyVGFnKGNvbnN0IEF0b21TdHJpbmcmIHRhZ05hbWUpCiB7CiAgICAgcmV0dXJu
IHRhZ05hbWUgPT0gaDFUYWcKICAgICAgICAgfHwgdGFnTmFtZSA9PSBoMlRhZwpAQCAtOTksMjIg
Kzk5LDIyIEBAIHN0YXRpYyBib29sIGlzTnVtYmVyZWRIZWFkZXJUYWcoY29uc3QgQXRvbWljU3Ry
aW5nJiB0YWdOYW1lKQogICAgICAgICB8fCB0YWdOYW1lID09IGg2VGFnOwogfQogCi1zdGF0aWMg
Ym9vbCBpc0NhcHRpb25Db2xPckNvbGdyb3VwVGFnKGNvbnN0IEF0b21pY1N0cmluZyYgdGFnTmFt
ZSkKK3N0YXRpYyBib29sIGlzQ2FwdGlvbkNvbE9yQ29sZ3JvdXBUYWcoY29uc3QgQXRvbVN0cmlu
ZyYgdGFnTmFtZSkKIHsKICAgICByZXR1cm4gdGFnTmFtZSA9PSBjYXB0aW9uVGFnIHx8IHRhZ05h
bWUgPT0gY29sVGFnIHx8IHRhZ05hbWUgPT0gY29sZ3JvdXBUYWc7CiB9CiAKLXN0YXRpYyBib29s
IGlzVGFibGVDZWxsQ29udGV4dFRhZyhjb25zdCBBdG9taWNTdHJpbmcmIHRhZ05hbWUpCitzdGF0
aWMgYm9vbCBpc1RhYmxlQ2VsbENvbnRleHRUYWcoY29uc3QgQXRvbVN0cmluZyYgdGFnTmFtZSkK
IHsKICAgICByZXR1cm4gdGFnTmFtZSA9PSB0aFRhZyB8fCB0YWdOYW1lID09IHRkVGFnOwogfQog
Ci1zdGF0aWMgYm9vbCBpc1RhYmxlQm9keUNvbnRleHRUYWcoY29uc3QgQXRvbWljU3RyaW5nJiB0
YWdOYW1lKQorc3RhdGljIGJvb2wgaXNUYWJsZUJvZHlDb250ZXh0VGFnKGNvbnN0IEF0b21TdHJp
bmcmIHRhZ05hbWUpCiB7CiAgICAgcmV0dXJuIHRhZ05hbWUgPT0gdGJvZHlUYWcgfHwgdGFnTmFt
ZSA9PSB0Zm9vdFRhZyB8fCB0YWdOYW1lID09IHRoZWFkVGFnOwogfQogCi1zdGF0aWMgYm9vbCBp
c05vbkFuY2hvck5vbk5vYnJGb3JtYXR0aW5nVGFnKGNvbnN0IEF0b21pY1N0cmluZyYgdGFnTmFt
ZSkKK3N0YXRpYyBib29sIGlzTm9uQW5jaG9yTm9uTm9ickZvcm1hdHRpbmdUYWcoY29uc3QgQXRv
bVN0cmluZyYgdGFnTmFtZSkKIHsKICAgICByZXR1cm4gdGFnTmFtZSA9PSBiVGFnCiAgICAgICAg
IHx8IHRhZ05hbWUgPT0gYmlnVGFnCkBAIC0xMzAsMTMgKzEzMCwxMyBAQCBzdGF0aWMgYm9vbCBp
c05vbkFuY2hvck5vbk5vYnJGb3JtYXR0aW5nVGFnKGNvbnN0IEF0b21pY1N0cmluZyYgdGFnTmFt
ZSkKICAgICAgICAgfHwgdGFnTmFtZSA9PSB1VGFnOwogfQogCi1zdGF0aWMgYm9vbCBpc05vbkFu
Y2hvckZvcm1hdHRpbmdUYWcoY29uc3QgQXRvbWljU3RyaW5nJiB0YWdOYW1lKQorc3RhdGljIGJv
b2wgaXNOb25BbmNob3JGb3JtYXR0aW5nVGFnKGNvbnN0IEF0b21TdHJpbmcmIHRhZ05hbWUpCiB7
CiAgICAgcmV0dXJuIHRhZ05hbWUgPT0gbm9iclRhZyB8fCBpc05vbkFuY2hvck5vbk5vYnJGb3Jt
YXR0aW5nVGFnKHRhZ05hbWUpOwogfQogCiAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3Jn
L211bHRpcGFnZS9zeW50YXguaHRtbCNmb3JtYXR0aW5nCi1ib29sIEhUTUxDb25zdHJ1Y3Rpb25T
aXRlOjppc0Zvcm1hdHRpbmdUYWcoY29uc3QgQXRvbWljU3RyaW5nJiB0YWdOYW1lKQorYm9vbCBI
VE1MQ29uc3RydWN0aW9uU2l0ZTo6aXNGb3JtYXR0aW5nVGFnKGNvbnN0IEF0b21TdHJpbmcmIHRh
Z05hbWUpCiB7CiAgICAgcmV0dXJuIHRhZ05hbWUgPT0gYVRhZyB8fCBpc05vbkFuY2hvckZvcm1h
dHRpbmdUYWcodGFnTmFtZSk7CiB9CkBAIC00MjAsNyArNDIwLDcgQEAgdm9pZCBIVE1MVHJlZUJ1
aWxkZXI6OnByb2Nlc3NGYWtlU3RhcnRUYWcoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
VmVjdG9yPEEKICAgICBwcm9jZXNzU3RhcnRUYWcoV1RGTW92ZShmYWtlVG9rZW4pKTsKIH0KIAot
dm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NGYWtlRW5kVGFnKGNvbnN0IEF0b21pY1N0cmlu
ZyYgdGFnTmFtZSkKK3ZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRmFrZUVuZFRhZyhjb25z
dCBBdG9tU3RyaW5nJiB0YWdOYW1lKQogewogICAgIEF0b21pY0hUTUxUb2tlbiBmYWtlVG9rZW4o
SFRNTFRva2VuOjpFbmRUYWcsIHRhZ05hbWUpOwogICAgIHByb2Nlc3NFbmRUYWcoV1RGTW92ZShm
YWtlVG9rZW4pKTsKQEAgLTQ3OCwxMyArNDc4LDEzIEBAIHRlbXBsYXRlIDxib29sIHNob3VsZENs
b3NlKGNvbnN0IEhUTUxTdGFja0l0ZW0mKT4gdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3ND
CiAgICAgbV90cmVlLmluc2VydEhUTUxFbGVtZW50KFdURk1vdmUodG9rZW4pKTsKIH0KIAotdGVt
cGxhdGUgPHR5cGVuYW1lIFRhYmxlUXVhbGlmaWVkTmFtZT4gc3RhdGljIEhhc2hNYXA8QXRvbWlj
U3RyaW5nLCBRdWFsaWZpZWROYW1lPiBjcmVhdGVDYXNlTWFwKGNvbnN0IFRhYmxlUXVhbGlmaWVk
TmFtZSogY29uc3QgbmFtZXNbXSwgdW5zaWduZWQgbGVuZ3RoKQordGVtcGxhdGUgPHR5cGVuYW1l
IFRhYmxlUXVhbGlmaWVkTmFtZT4gc3RhdGljIEhhc2hNYXA8QXRvbVN0cmluZywgUXVhbGlmaWVk
TmFtZT4gY3JlYXRlQ2FzZU1hcChjb25zdCBUYWJsZVF1YWxpZmllZE5hbWUqIGNvbnN0IG5hbWVz
W10sIHVuc2lnbmVkIGxlbmd0aCkKIHsKLSAgICBIYXNoTWFwPEF0b21pY1N0cmluZywgUXVhbGlm
aWVkTmFtZT4gbWFwOworICAgIEhhc2hNYXA8QXRvbVN0cmluZywgUXVhbGlmaWVkTmFtZT4gbWFw
OwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewogICAgICAgICBj
b25zdCBRdWFsaWZpZWROYW1lJiBuYW1lID0gKm5hbWVzW2ldOwotICAgICAgICBjb25zdCBBdG9t
aWNTdHJpbmcmIGxvY2FsTmFtZSA9IG5hbWUubG9jYWxOYW1lKCk7Ci0gICAgICAgIEF0b21pY1N0
cmluZyBsb3dlcmVkTG9jYWxOYW1lID0gbG9jYWxOYW1lLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNl
KCk7CisgICAgICAgIGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsTmFtZSA9IG5hbWUubG9jYWxOYW1l
KCk7CisgICAgICAgIEF0b21TdHJpbmcgbG93ZXJlZExvY2FsTmFtZSA9IGxvY2FsTmFtZS5jb252
ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwogICAgICAgICBpZiAobG93ZXJlZExvY2FsTmFtZSAhPSBs
b2NhbE5hbWUpCiAgICAgICAgICAgICBtYXAuYWRkKGxvd2VyZWRMb2NhbE5hbWUsIG5hbWUpOwog
ICAgIH0KQEAgLTQ5MywxNCArNDkzLDE0IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUYWJsZVF1YWxp
ZmllZE5hbWU+IHN0YXRpYyBIYXNoTWFwPEF0b21pY1N0cmluZywgUXVhbGlmaWVkTmFtCiAKIHN0
YXRpYyB2b2lkIGFkanVzdFNWR1RhZ05hbWVDYXNlKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiB7
Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8QXRvbWljU3RyaW5nLCBRdWFsaWZp
ZWROYW1lPj4gbWFwID0gY3JlYXRlQ2FzZU1hcChTVkdOYW1lczo6Z2V0U1ZHVGFncygpLCBTVkdO
YW1lczo6U1ZHVGFnc0NvdW50KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxB
dG9tU3RyaW5nLCBRdWFsaWZpZWROYW1lPj4gbWFwID0gY3JlYXRlQ2FzZU1hcChTVkdOYW1lczo6
Z2V0U1ZHVGFncygpLCBTVkdOYW1lczo6U1ZHVGFnc0NvdW50KTsKICAgICBjb25zdCBRdWFsaWZp
ZWROYW1lJiBjYXNlZE5hbWUgPSBtYXAuZ2V0KCkuZ2V0KHRva2VuLm5hbWUoKSk7CiAgICAgaWYg
KGNhc2VkTmFtZS5sb2NhbE5hbWUoKS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogICAgIHRv
a2VuLnNldE5hbWUoY2FzZWROYW1lLmxvY2FsTmFtZSgpKTsKIH0KIAotc3RhdGljIGlubGluZSB2
b2lkIGFkanVzdEF0dHJpYnV0ZXMoSGFzaE1hcDxBdG9taWNTdHJpbmcsIFF1YWxpZmllZE5hbWU+
JiBtYXAsIEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCitzdGF0aWMgaW5saW5lIHZvaWQgYWRqdXN0
QXR0cmlidXRlcyhIYXNoTWFwPEF0b21TdHJpbmcsIFF1YWxpZmllZE5hbWU+JiBtYXAsIEF0b21p
Y0hUTUxUb2tlbiYgdG9rZW4pCiB7CiAgICAgZm9yIChhdXRvJiBhdHRyaWJ1dGUgOiB0b2tlbi5h
dHRyaWJ1dGVzKCkpIHsKICAgICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgY2FzZWROYW1lID0g
bWFwLmdldChhdHRyaWJ1dGUubG9jYWxOYW1lKCkpOwpAQCAtNTExLDcgKzUxMSw3IEBAIHN0YXRp
YyBpbmxpbmUgdm9pZCBhZGp1c3RBdHRyaWJ1dGVzKEhhc2hNYXA8QXRvbWljU3RyaW5nLCBRdWFs
aWZpZWROYW1lPiYgbWFwLCBBCiAKIHRlbXBsYXRlPGNvbnN0IFF1YWxpZmllZE5hbWUqIGNvbnN0
KiBhdHRyaWJ1dGVzVGFibGUoKSwgdW5zaWduZWQgYXR0cmlidXRlc1RhYmxlTGVuZ3RoPiBzdGF0
aWMgdm9pZCBhZGp1c3RBdHRyaWJ1dGVzKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiB7Ci0gICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8QXRvbWljU3RyaW5nLCBRdWFsaWZpZWROYW1l
Pj4gbWFwID0gY3JlYXRlQ2FzZU1hcChhdHRyaWJ1dGVzVGFibGUoKSwgYXR0cmlidXRlc1RhYmxl
TGVuZ3RoKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxBdG9tU3RyaW5nLCBR
dWFsaWZpZWROYW1lPj4gbWFwID0gY3JlYXRlQ2FzZU1hcChhdHRyaWJ1dGVzVGFibGUoKSwgYXR0
cmlidXRlc1RhYmxlTGVuZ3RoKTsKICAgICBhZGp1c3RBdHRyaWJ1dGVzKG1hcCwgdG9rZW4pOwog
fQogCkBAIC01MjUsMjAgKzUyNSwyMCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYWRqdXN0TWF0aE1M
QXR0cmlidXRlcyhBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogICAgIGFkanVzdEF0dHJpYnV0ZXM8
TWF0aE1MTmFtZXM6OmdldE1hdGhNTEF0dHJzLCBNYXRoTUxOYW1lczo6TWF0aE1MQXR0cnNDb3Vu
dD4odG9rZW4pOwogfQogCi1zdGF0aWMgdm9pZCBhZGROYW1lc1dpdGhQcmVmaXgoSGFzaE1hcDxB
dG9taWNTdHJpbmcsIFF1YWxpZmllZE5hbWU+JiBtYXAsIGNvbnN0IEF0b21pY1N0cmluZyYgcHJl
Zml4LCBjb25zdCBRdWFsaWZpZWROYW1lKiBjb25zdCBuYW1lc1tdLCB1bnNpZ25lZCBsZW5ndGgp
CitzdGF0aWMgdm9pZCBhZGROYW1lc1dpdGhQcmVmaXgoSGFzaE1hcDxBdG9tU3RyaW5nLCBRdWFs
aWZpZWROYW1lPiYgbWFwLCBjb25zdCBBdG9tU3RyaW5nJiBwcmVmaXgsIGNvbnN0IFF1YWxpZmll
ZE5hbWUqIGNvbnN0IG5hbWVzW10sIHVuc2lnbmVkIGxlbmd0aCkKIHsKICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKICAgICAgICAgY29uc3QgUXVhbGlmaWVkTmFt
ZSYgbmFtZSA9ICpuYW1lc1tpXTsKLSAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5h
bWUgPSBuYW1lLmxvY2FsTmFtZSgpOworICAgICAgICBjb25zdCBBdG9tU3RyaW5nJiBsb2NhbE5h
bWUgPSBuYW1lLmxvY2FsTmFtZSgpOwogICAgICAgICBtYXAuYWRkKHByZWZpeCArICc6JyArIGxv
Y2FsTmFtZSwgUXVhbGlmaWVkTmFtZShwcmVmaXgsIGxvY2FsTmFtZSwgbmFtZS5uYW1lc3BhY2VV
UkkoKSkpOwogICAgIH0KIH0KIAotc3RhdGljIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBRdWFsaWZp
ZWROYW1lPiBjcmVhdGVGb3JlaWduQXR0cmlidXRlc01hcCgpCitzdGF0aWMgSGFzaE1hcDxBdG9t
U3RyaW5nLCBRdWFsaWZpZWROYW1lPiBjcmVhdGVGb3JlaWduQXR0cmlidXRlc01hcCgpCiB7Ci0g
ICAgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFF1YWxpZmllZE5hbWU+IG1hcDsKKyAgICBIYXNoTWFw
PEF0b21TdHJpbmcsIFF1YWxpZmllZE5hbWU+IG1hcDsKIAotICAgIEF0b21pY1N0cmluZyB4bGlu
a05hbWUoInhsaW5rIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAg
QXRvbVN0cmluZyB4bGlua05hbWUoInhsaW5rIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpOwogICAgIGFkZE5hbWVzV2l0aFByZWZpeChtYXAsIHhsaW5rTmFtZSwgWExpbmtOYW1l
czo6Z2V0WExpbmtBdHRycygpLCBYTGlua05hbWVzOjpYTGlua0F0dHJzQ291bnQpOwogICAgIGFk
ZE5hbWVzV2l0aFByZWZpeChtYXAsIHhtbEF0b20oKSwgWE1MTmFtZXM6OmdldFhNTEF0dHJzKCks
IFhNTE5hbWVzOjpYTUxBdHRyc0NvdW50KTsKIApAQCAtNTUwLDcgKzU1MCw3IEBAIHN0YXRpYyBI
YXNoTWFwPEF0b21pY1N0cmluZywgUXVhbGlmaWVkTmFtZT4gY3JlYXRlRm9yZWlnbkF0dHJpYnV0
ZXNNYXAoKQogCiBzdGF0aWMgdm9pZCBhZGp1c3RGb3JlaWduQXR0cmlidXRlcyhBdG9taWNIVE1M
VG9rZW4mIHRva2VuKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPEF0b21p
Y1N0cmluZywgUXVhbGlmaWVkTmFtZT4+IG1hcCA9IGNyZWF0ZUZvcmVpZ25BdHRyaWJ1dGVzTWFw
KCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8QXRvbVN0cmluZywgUXVhbGlm
aWVkTmFtZT4+IG1hcCA9IGNyZWF0ZUZvcmVpZ25BdHRyaWJ1dGVzTWFwKCk7CiAgICAgYWRqdXN0
QXR0cmlidXRlcyhtYXAsIHRva2VuKTsKIH0KIApAQCAtMjIwMCw3ICsyMjAwLDcgQEAgdm9pZCBI
VE1MVHJlZUJ1aWxkZXI6Omluc2VydFBob25lTnVtYmVyTGluayhjb25zdCBTdHJpbmcmIHN0cmlu
ZykKICAgICBWZWN0b3I8QXR0cmlidXRlPiBhdHRyaWJ1dGVzOwogICAgIGF0dHJpYnV0ZXMuYXBw
ZW5kKEF0dHJpYnV0ZShIVE1MTmFtZXM6OmhyZWZBdHRyLCBtYWtlU3RyaW5nKCJ0ZWw6Il9zLCBz
dHJpbmcpKSk7CiAKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGFUYWdMb2NhbE5hbWUgPSBhVGFn
LT5sb2NhbE5hbWUoKTsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBhVGFnTG9jYWxOYW1lID0gYVRh
Zy0+bG9jYWxOYW1lKCk7CiAgICAgQXRvbWljSFRNTFRva2VuIGFTdGFydFRva2VuKEhUTUxUb2tl
bjo6U3RhcnRUYWcsIGFUYWdMb2NhbE5hbWUsIFdURk1vdmUoYXR0cmlidXRlcykpOwogICAgIEF0
b21pY0hUTUxUb2tlbiBhRW5kVG9rZW4oSFRNTFRva2VuOjpFbmRUYWcsIGFUYWdMb2NhbE5hbWUp
OwogCkBAIC0yNzc0LDcgKzI3NzQsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1Rv
a2VuSW5Gb3JlaWduQ29udGVudChBdG9taWNIVE1MVG9rZW4mJiB0b2tlbikKICAgICAgICAgICAg
IHByb2Nlc3NTdGFydFRhZyhXVEZNb3ZlKHRva2VuKSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KLSAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBjdXJyZW50TmFtZXNwYWNlID0g
YWRqdXN0ZWRDdXJyZW50Tm9kZS5uYW1lc3BhY2VVUkkoKTsKKyAgICAgICAgY29uc3QgQXRvbVN0
cmluZyYgY3VycmVudE5hbWVzcGFjZSA9IGFkanVzdGVkQ3VycmVudE5vZGUubmFtZXNwYWNlVVJJ
KCk7CiAgICAgICAgIGlmIChjdXJyZW50TmFtZXNwYWNlID09IE1hdGhNTE5hbWVzOjptYXRobWxO
YW1lc3BhY2VVUkkpCiAgICAgICAgICAgICBhZGp1c3RNYXRoTUxBdHRyaWJ1dGVzKHRva2VuKTsK
ICAgICAgICAgaWYgKGN1cnJlbnROYW1lc3BhY2UgPT0gU1ZHTmFtZXM6OnN2Z05hbWVzcGFjZVVS
SSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWls
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuaAppbmRl
eCA0YTVlMmI0ODczOTZhYWVlZDBhOTZhYTJlZTdhMzgxMmMzOTM4YWVkLi5hNmEzOTFjMThlNzZk
MTc3M2E2NTZlYzU2N2Y4Njg1YzBiM2NkYjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MVHJlZUJ1aWxkZXIuaApAQCAtNDAsMTEgKzQwLDExIEBAIGNsYXNzIFNjcmlwdEVs
ZW1lbnQ7CiBzdHJ1Y3QgQ3VzdG9tRWxlbWVudENvbnN0cnVjdGlvbkRhdGEgewogICAgIFdURl9N
QUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKIAotICAgIEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rp
b25EYXRhKFJlZjxKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U+JiYsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZSwgVmVjdG9yPEF0dHJpYnV0ZT4mJik7CisgICAgQ3VzdG9tRWxlbWVudENvbnN0cnVj
dGlvbkRhdGEoUmVmPEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZT4mJiwgY29uc3QgQXRvbVN0cmlu
ZyYgbmFtZSwgVmVjdG9yPEF0dHJpYnV0ZT4mJik7CiAgICAgfkN1c3RvbUVsZW1lbnRDb25zdHJ1
Y3Rpb25EYXRhKCk7CiAKICAgICBSZWY8SlNDdXN0b21FbGVtZW50SW50ZXJmYWNlPiBlbGVtZW50
SW50ZXJmYWNlOwotICAgIEF0b21pY1N0cmluZyBuYW1lOworICAgIEF0b21TdHJpbmcgbmFtZTsK
ICAgICBWZWN0b3I8QXR0cmlidXRlPiBhdHRyaWJ1dGVzOwogfTsKIApAQCAtMTQzLDcgKzE0Myw3
IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHByb2Nlc3NGYWtlU3RhcnRUYWcoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIFZlY3RvcjxBdHRyaWJ1dGU+JiYgYXR0cmlidXRlcyA9IFZlY3RvcjxBdHRyaWJ1
dGU+KCkpOwogICAgIHZvaWQgcHJvY2Vzc0Zha2VFbmRUYWcoY29uc3QgUXVhbGlmaWVkTmFtZSYp
OwotICAgIHZvaWQgcHJvY2Vzc0Zha2VFbmRUYWcoY29uc3QgQXRvbWljU3RyaW5nJik7CisgICAg
dm9pZCBwcm9jZXNzRmFrZUVuZFRhZyhjb25zdCBBdG9tU3RyaW5nJik7CiAgICAgdm9pZCBwcm9j
ZXNzRmFrZUNoYXJhY3RlcnMoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBwcm9jZXNzRmFrZVBF
bmRUYWdJZlBJbkJ1dHRvblNjb3BlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L0RldGFpbHNNYXJrZXJDb250cm9sLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L0RldGFpbHNNYXJrZXJDb250cm9sLmNwcAppbmRleCBiNjUwN2NkMzI4MWQxZjNjZTM2
NzgxNDVmZGFmN2U2ZmE0ZGQzMDE1Li4wNGE5YWU2NDRiODY1Mjg2OWUyYWI0MmM2ODgyMDhiYmE3
MDQ4ZDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EZXRhaWxzTWFy
a2VyQ29udHJvbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGV0YWlsc01h
cmtlckNvbnRyb2wuY3BwCkBAIC00OSw3ICs0OSw3IEBAIFJlZjxEZXRhaWxzTWFya2VyQ29udHJv
bD4gRGV0YWlsc01hcmtlckNvbnRyb2w6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQpCiBEZXRh
aWxzTWFya2VyQ29udHJvbDo6RGV0YWlsc01hcmtlckNvbnRyb2woRG9jdW1lbnQmIGRvY3VtZW50
KQogICAgIDogSFRNTERpdkVsZW1lbnQoSFRNTE5hbWVzOjpkaXZUYWcsIGRvY3VtZW50KQogewot
ICAgIHNldFBzZXVkbyhBdG9taWNTdHJpbmcoIi13ZWJraXQtZGV0YWlscy1tYXJrZXIiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc2V0UHNldWRvKEF0b21TdHJp
bmcoIi13ZWJraXQtZGV0YWlscy1tYXJrZXIiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCkpOwogfQogCiBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gRGV0YWlsc01hcmtlckNvbnRy
b2w6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5k
ZXJUcmVlUG9zaXRpb24mKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
TWVkaWFDb250cm9sRWxlbWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVk
aWFDb250cm9sRWxlbWVudHMuY3BwCmluZGV4IDA4OWUxMzkzNDgzNjI4MjdiYjVlZDA0MzdiNjcy
MGNlNjFkZmM5OTYuLmNkZGM1Yjc5NWQ2MjQ5NmFjYTE3MzMwNjk5NTNhYjI4MmZlYTMxNjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50
cy5jcHAKQEAgLTk0LDggKzk0LDggQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKE1lZGlh
Q29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQpOwogCiB1c2luZyBuYW1lc3BhY2UgSFRN
TE5hbWVzOwogCi1zdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBnZXRNZWRpYUNvbnRyb2xDdXJy
ZW50VGltZURpc3BsYXlFbGVtZW50U2hhZG93UHNldWRvSWQoKTsKLXN0YXRpYyBjb25zdCBBdG9t
aWNTdHJpbmcmIGdldE1lZGlhQ29udHJvbFRpbWVSZW1haW5pbmdEaXNwbGF5RWxlbWVudFNoYWRv
d1BzZXVkb0lkKCk7CitzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgZ2V0TWVkaWFDb250cm9sQ3Vy
cmVudFRpbWVEaXNwbGF5RWxlbWVudFNoYWRvd1BzZXVkb0lkKCk7CitzdGF0aWMgY29uc3QgQXRv
bVN0cmluZyYgZ2V0TWVkaWFDb250cm9sVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50U2hhZG93
UHNldWRvSWQoKTsKIAogTWVkaWFDb250cm9sUGFuZWxFbGVtZW50OjpNZWRpYUNvbnRyb2xQYW5l
bEVsZW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIDogTWVkaWFDb250cm9sRGl2RWxlbWVu
dChkb2N1bWVudCwgTWVkaWFDb250cm9sc1BhbmVsKQpAQCAtMTA1LDcgKzEwNSw3IEBAIE1lZGlh
Q29udHJvbFBhbmVsRWxlbWVudDo6TWVkaWFDb250cm9sUGFuZWxFbGVtZW50KERvY3VtZW50JiBk
b2N1bWVudCkKICAgICAsIG1fb3BhcXVlKHRydWUpCiAgICAgLCBtX3RyYW5zaXRpb25UaW1lcigq
dGhpcywgJk1lZGlhQ29udHJvbFBhbmVsRWxlbWVudDo6dHJhbnNpdGlvblRpbWVyRmlyZWQpCiB7
Ci0gICAgc2V0UHNldWRvKEF0b21pY1N0cmluZygiLXdlYmtpdC1tZWRpYS1jb250cm9scy1wYW5l
bCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzZXRQc2V1ZG8o
QXRvbVN0cmluZygiLXdlYmtpdC1tZWRpYS1jb250cm9scy1wYW5lbCIsIEF0b21TdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKSk7CiB9CiAKIFJlZjxNZWRpYUNvbnRyb2xQYW5lbEVsZW1lbnQ+
IE1lZGlhQ29udHJvbFBhbmVsRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCkKQEAg
LTI4Nyw3ICsyODcsNyBAQCBNZWRpYUNvbnRyb2xQYW5lbEVuY2xvc3VyZUVsZW1lbnQ6Ok1lZGlh
Q29udHJvbFBhbmVsRW5jbG9zdXJlRWxlbWVudChEb2N1bWVudCYgZAogICAgIC8vIE1hcHBpbmcg
b250byBzYW1lIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlIGFzIHBhbmVsIGVsZW1lbnQsIHNpbmNl
IGl0IGhhcyBzaW1pbGFyIHByb3BlcnRpZXMuCiAgICAgOiBNZWRpYUNvbnRyb2xEaXZFbGVtZW50
KGRvY3VtZW50LCBNZWRpYUNvbnRyb2xzUGFuZWwpCiB7Ci0gICAgc2V0UHNldWRvKEF0b21pY1N0
cmluZygiLXdlYmtpdC1tZWRpYS1jb250cm9scy1lbmNsb3N1cmUiLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc2V0UHNldWRvKEF0b21TdHJpbmcoIi13ZWJraXQt
bWVkaWEtY29udHJvbHMtZW5jbG9zdXJlIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpKTsKIH0KIAogUmVmPE1lZGlhQ29udHJvbFBhbmVsRW5jbG9zdXJlRWxlbWVudD4gTWVkaWFD
b250cm9sUGFuZWxFbmNsb3N1cmVFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQpA
QCAtMzAxLDcgKzMwMSw3IEBAIE1lZGlhQ29udHJvbE92ZXJsYXlFbmNsb3N1cmVFbGVtZW50OjpN
ZWRpYUNvbnRyb2xPdmVybGF5RW5jbG9zdXJlRWxlbWVudChEb2N1bWVuCiAgICAgLy8gTWFwcGlu
ZyBvbnRvIHNhbWUgTWVkaWFDb250cm9sRWxlbWVudFR5cGUgYXMgcGFuZWwgZWxlbWVudCwgc2lu
Y2UgaXQgaGFzIHNpbWlsYXIgcHJvcGVydGllcy4KICAgICA6IE1lZGlhQ29udHJvbERpdkVsZW1l
bnQoZG9jdW1lbnQsIE1lZGlhQ29udHJvbHNQYW5lbCkKIHsKLSAgICBzZXRQc2V1ZG8oQXRvbWlj
U3RyaW5nKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLW92ZXJsYXktZW5jbG9zdXJlIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHNldFBzZXVkbyhBdG9tU3RyaW5n
KCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLW92ZXJsYXktZW5jbG9zdXJlIiwgQXRvbVN0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKIH0KIAogUmVmPE1lZGlhQ29udHJvbE92ZXJsYXlFbmNs
b3N1cmVFbGVtZW50PiBNZWRpYUNvbnRyb2xPdmVybGF5RW5jbG9zdXJlRWxlbWVudDo6Y3JlYXRl
KERvY3VtZW50JiBkb2N1bWVudCkKQEAgLTMxNCw3ICszMTQsNyBAQCBSZWY8TWVkaWFDb250cm9s
T3ZlcmxheUVuY2xvc3VyZUVsZW1lbnQ+IE1lZGlhQ29udHJvbE92ZXJsYXlFbmNsb3N1cmVFbGVt
ZW50OjpjcgogTWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXJFbGVtZW50OjpNZWRpYUNvbnRy
b2xUaW1lbGluZUNvbnRhaW5lckVsZW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIDogTWVk
aWFDb250cm9sRGl2RWxlbWVudChkb2N1bWVudCwgTWVkaWFUaW1lbGluZUNvbnRhaW5lcikKIHsK
LSAgICBzZXRQc2V1ZG8oQXRvbWljU3RyaW5nKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLXRpbWVs
aW5lLWNvbnRhaW5lciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAg
ICBzZXRQc2V1ZG8oQXRvbVN0cmluZygiLXdlYmtpdC1tZWRpYS1jb250cm9scy10aW1lbGluZS1j
b250YWluZXIiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogfQogCiBSZWY8
TWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXJFbGVtZW50PiBNZWRpYUNvbnRyb2xUaW1lbGlu
ZUNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQpCkBAIC0zNDksNyAr
MzQ5LDcgQEAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IE1lZGlhQ29udHJvbFRpbWVsaW5lQ29u
dGFpbmVyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmQKIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRl
ckNvbnRhaW5lckVsZW1lbnQ6Ok1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckNvbnRhaW5lckVsZW1l
bnQoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIDogTWVkaWFDb250cm9sRGl2RWxlbWVudChkb2N1
bWVudCwgTWVkaWFWb2x1bWVTbGlkZXJDb250YWluZXIpCiB7Ci0gICAgc2V0UHNldWRvKEF0b21p
Y1N0cmluZygiLXdlYmtpdC1tZWRpYS1jb250cm9scy12b2x1bWUtc2xpZGVyLWNvbnRhaW5lciIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzZXRQc2V1ZG8oQXRv
bVN0cmluZygiLXdlYmtpdC1tZWRpYS1jb250cm9scy12b2x1bWUtc2xpZGVyLWNvbnRhaW5lciIs
IEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CiB9CiAKIFJlZjxNZWRpYUNvbnRy
b2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50PiBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJD
b250YWluZXJFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQpAQCAtMzg2LDcgKzM4
Niw3IEBAIE1lZGlhQ29udHJvbFN0YXR1c0Rpc3BsYXlFbGVtZW50OjpNZWRpYUNvbnRyb2xTdGF0
dXNEaXNwbGF5RWxlbWVudChEb2N1bWVudCYgZG9jCiAgICAgOiBNZWRpYUNvbnRyb2xEaXZFbGVt
ZW50KGRvY3VtZW50LCBNZWRpYVN0YXR1c0Rpc3BsYXkpCiAgICAgLCBtX3N0YXRlQmVpbmdEaXNw
bGF5ZWQoTm90aGluZykKIHsKLSAgICBzZXRQc2V1ZG8oQXRvbWljU3RyaW5nKCItd2Via2l0LW1l
ZGlhLWNvbnRyb2xzLXN0YXR1cy1kaXNwbGF5IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCkpOworICAgIHNldFBzZXVkbyhBdG9tU3RyaW5nKCItd2Via2l0LW1lZGlhLWNvbnRy
b2xzLXN0YXR1cy1kaXNwbGF5IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsK
IH0KIAogUmVmPE1lZGlhQ29udHJvbFN0YXR1c0Rpc3BsYXlFbGVtZW50PiBNZWRpYUNvbnRyb2xT
dGF0dXNEaXNwbGF5RWxlbWVudDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCkKQEAgLTQzNSw3
ICs0MzUsNyBAQCBNZWRpYUNvbnRyb2xQYW5lbE11dGVCdXR0b25FbGVtZW50OjpNZWRpYUNvbnRy
b2xQYW5lbE11dGVCdXR0b25FbGVtZW50KERvY3VtZW50JgogICAgIDogTWVkaWFDb250cm9sTXV0
ZUJ1dHRvbkVsZW1lbnQoZG9jdW1lbnQsIE1lZGlhTXV0ZUJ1dHRvbikKICAgICAsIG1fY29udHJv
bHMoY29udHJvbHMpCiB7Ci0gICAgc2V0UHNldWRvKEF0b21pY1N0cmluZygiLXdlYmtpdC1tZWRp
YS1jb250cm9scy1tdXRlLWJ1dHRvbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpKTsKKyAgICBzZXRQc2V1ZG8oQXRvbVN0cmluZygiLXdlYmtpdC1tZWRpYS1jb250cm9scy1t
dXRlLWJ1dHRvbiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CiB9CiAKIFJl
ZjxNZWRpYUNvbnRyb2xQYW5lbE11dGVCdXR0b25FbGVtZW50PiBNZWRpYUNvbnRyb2xQYW5lbE11
dGVCdXR0b25FbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBNZWRpYUNvbnRyb2xz
KiBjb250cm9scykKQEAgLTQ2MSw3ICs0NjEsNyBAQCB2b2lkIE1lZGlhQ29udHJvbFBhbmVsTXV0
ZUJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQmIGV2ZW50KQogTWVkaWFD
b250cm9sVm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbkVsZW1lbnQ6Ok1lZGlhQ29udHJvbFZvbHVtZVNs
aWRlck11dGVCdXR0b25FbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IE1lZGlhQ29u
dHJvbE11dGVCdXR0b25FbGVtZW50KGRvY3VtZW50LCBNZWRpYU11dGVCdXR0b24pCiB7Ci0gICAg
c2V0UHNldWRvKEF0b21pY1N0cmluZygiLXdlYmtpdC1tZWRpYS1jb250cm9scy12b2x1bWUtc2xp
ZGVyLW11dGUtYnV0dG9uIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwor
ICAgIHNldFBzZXVkbyhBdG9tU3RyaW5nKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLXZvbHVtZS1z
bGlkZXItbXV0ZS1idXR0b24iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwog
fQogCiBSZWY8TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbkVsZW1lbnQ+IE1lZGlh
Q29udHJvbFZvbHVtZVNsaWRlck11dGVCdXR0b25FbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRv
Y3VtZW50KQpAQCAtNDc3LDcgKzQ3Nyw3IEBAIFJlZjxNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJN
dXRlQnV0dG9uRWxlbWVudD4gTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyTXV0ZUJ1dHRvCiBNZWRp
YUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudDo6TWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1lbnQo
RG9jdW1lbnQmIGRvY3VtZW50KQogICAgIDogTWVkaWFDb250cm9sSW5wdXRFbGVtZW50KGRvY3Vt
ZW50LCBNZWRpYVBsYXlCdXR0b24pCiB7Ci0gICAgc2V0UHNldWRvKEF0b21pY1N0cmluZygiLXdl
YmtpdC1tZWRpYS1jb250cm9scy1wbGF5LWJ1dHRvbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpKTsKKyAgICBzZXRQc2V1ZG8oQXRvbVN0cmluZygiLXdlYmtpdC1tZWRpYS1j
b250cm9scy1wbGF5LWJ1dHRvbiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7
CiB9CiAKIFJlZjxNZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudD4gTWVkaWFDb250cm9sUGxh
eUJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQpCkBAIC01MTEsNyArNTEx
LDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudDo6dXBkYXRlRGlzcGxheVR5
cGUoKQogTWVkaWFDb250cm9sT3ZlcmxheVBsYXlCdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xP
dmVybGF5UGxheUJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIDogTWVkaWFD
b250cm9sSW5wdXRFbGVtZW50KGRvY3VtZW50LCBNZWRpYU92ZXJsYXlQbGF5QnV0dG9uKQogewot
ICAgIHNldFBzZXVkbyhBdG9taWNTdHJpbmcoIi13ZWJraXQtbWVkaWEtY29udHJvbHMtb3Zlcmxh
eS1wbGF5LWJ1dHRvbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAg
ICBzZXRQc2V1ZG8oQXRvbVN0cmluZygiLXdlYmtpdC1tZWRpYS1jb250cm9scy1vdmVybGF5LXBs
YXktYnV0dG9uIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKIH0KIAogUmVm
PE1lZGlhQ29udHJvbE92ZXJsYXlQbGF5QnV0dG9uRWxlbWVudD4gTWVkaWFDb250cm9sT3Zlcmxh
eVBsYXlCdXR0b25FbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQpAQCAtNTQ1LDcg
KzU0NSw3IEBAIHZvaWQgTWVkaWFDb250cm9sT3ZlcmxheVBsYXlCdXR0b25FbGVtZW50Ojp1cGRh
dGVEaXNwbGF5VHlwZSgpCiBNZWRpYUNvbnRyb2xTZWVrRm9yd2FyZEJ1dHRvbkVsZW1lbnQ6Ok1l
ZGlhQ29udHJvbFNlZWtGb3J3YXJkQnV0dG9uRWxlbWVudChEb2N1bWVudCYgZG9jdW1lbnQpCiAg
ICAgOiBNZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVudChkb2N1bWVudCwgTWVkaWFTZWVrRm9y
d2FyZEJ1dHRvbikKIHsKLSAgICBzZXRQc2V1ZG8oQXRvbWljU3RyaW5nKCItd2Via2l0LW1lZGlh
LWNvbnRyb2xzLXNlZWstZm9yd2FyZC1idXR0b24iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKSk7CisgICAgc2V0UHNldWRvKEF0b21TdHJpbmcoIi13ZWJraXQtbWVkaWEtY29u
dHJvbHMtc2Vlay1mb3J3YXJkLWJ1dHRvbiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7CiB9CiAKIFJlZjxNZWRpYUNvbnRyb2xTZWVrRm9yd2FyZEJ1dHRvbkVsZW1lbnQ+IE1l
ZGlhQ29udHJvbFNlZWtGb3J3YXJkQnV0dG9uRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1
bWVudCkKQEAgLTU2MSw3ICs1NjEsNyBAQCBSZWY8TWVkaWFDb250cm9sU2Vla0ZvcndhcmRCdXR0
b25FbGVtZW50PiBNZWRpYUNvbnRyb2xTZWVrRm9yd2FyZEJ1dHRvbkVsZW1lbnQ6OgogTWVkaWFD
b250cm9sU2Vla0JhY2tCdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xTZWVrQmFja0J1dHRvbkVs
ZW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIDogTWVkaWFDb250cm9sU2Vla0J1dHRvbkVs
ZW1lbnQoZG9jdW1lbnQsIE1lZGlhU2Vla0JhY2tCdXR0b24pCiB7Ci0gICAgc2V0UHNldWRvKEF0
b21pY1N0cmluZygiLXdlYmtpdC1tZWRpYS1jb250cm9scy1zZWVrLWJhY2stYnV0dG9uIiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHNldFBzZXVkbyhBdG9tU3Ry
aW5nKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLXNlZWstYmFjay1idXR0b24iLCBBdG9tU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogfQogCiBSZWY8TWVkaWFDb250cm9sU2Vla0JhY2tC
dXR0b25FbGVtZW50PiBNZWRpYUNvbnRyb2xTZWVrQmFja0J1dHRvbkVsZW1lbnQ6OmNyZWF0ZShE
b2N1bWVudCYgZG9jdW1lbnQpCkBAIC01NzcsNyArNTc3LDcgQEAgUmVmPE1lZGlhQ29udHJvbFNl
ZWtCYWNrQnV0dG9uRWxlbWVudD4gTWVkaWFDb250cm9sU2Vla0JhY2tCdXR0b25FbGVtZW50Ojpj
cmVhdGUKIE1lZGlhQ29udHJvbFJld2luZEJ1dHRvbkVsZW1lbnQ6Ok1lZGlhQ29udHJvbFJld2lu
ZEJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIDogTWVkaWFDb250cm9sSW5w
dXRFbGVtZW50KGRvY3VtZW50LCBNZWRpYVJld2luZEJ1dHRvbikKIHsKLSAgICBzZXRQc2V1ZG8o
QXRvbWljU3RyaW5nKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLXJld2luZC1idXR0b24iLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc2V0UHNldWRvKEF0b21TdHJp
bmcoIi13ZWJraXQtbWVkaWEtY29udHJvbHMtcmV3aW5kLWJ1dHRvbiIsIEF0b21TdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKSk7CiB9CiAKIFJlZjxNZWRpYUNvbnRyb2xSZXdpbmRCdXR0b25F
bGVtZW50PiBNZWRpYUNvbnRyb2xSZXdpbmRCdXR0b25FbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQm
IGRvY3VtZW50KQpAQCAtNjAyLDcgKzYwMiw3IEBAIHZvaWQgTWVkaWFDb250cm9sUmV3aW5kQnV0
dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCYgZXZlbnQpCiBNZWRpYUNvbnRy
b2xSZXR1cm5Ub1JlYWx0aW1lQnV0dG9uRWxlbWVudDo6TWVkaWFDb250cm9sUmV0dXJuVG9SZWFs
dGltZUJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIDogTWVkaWFDb250cm9s
SW5wdXRFbGVtZW50KGRvY3VtZW50LCBNZWRpYVJldHVyblRvUmVhbHRpbWVCdXR0b24pCiB7Ci0g
ICAgc2V0UHNldWRvKEF0b21pY1N0cmluZygiLXdlYmtpdC1tZWRpYS1jb250cm9scy1yZXR1cm4t
dG8tcmVhbHRpbWUtYnV0dG9uIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkp
OworICAgIHNldFBzZXVkbyhBdG9tU3RyaW5nKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLXJldHVy
bi10by1yZWFsdGltZS1idXR0b24iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkp
OwogfQogCiBSZWY8TWVkaWFDb250cm9sUmV0dXJuVG9SZWFsdGltZUJ1dHRvbkVsZW1lbnQ+IE1l
ZGlhQ29udHJvbFJldHVyblRvUmVhbHRpbWVCdXR0b25FbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQm
IGRvY3VtZW50KQpAQCAtNjM0LDcgKzYzNCw3IEBAIE1lZGlhQ29udHJvbFRvZ2dsZUNsb3NlZENh
cHRpb25zQnV0dG9uRWxlbWVudDo6TWVkaWFDb250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCCiAj
aWYgIVBMQVRGT1JNKENPQ09BKSAmJiAhUExBVEZPUk0oV0lOKSB8fCAhUExBVEZPUk0oR1RLKQog
ICAgIFVOVVNFRF9QQVJBTShjb250cm9scyk7CiAjZW5kaWYKLSAgICBzZXRQc2V1ZG8oQXRvbWlj
U3RyaW5nKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLXRvZ2dsZS1jbG9zZWQtY2FwdGlvbnMtYnV0
dG9uIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHNldFBzZXVk
byhBdG9tU3RyaW5nKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLXRvZ2dsZS1jbG9zZWQtY2FwdGlv
bnMtYnV0dG9uIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKIH0KIAogUmVm
PE1lZGlhQ29udHJvbFRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uRWxlbWVudD4gTWVkaWFDb250
cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRv
Y3VtZW50LCBNZWRpYUNvbnRyb2xzKiBjb250cm9scykKQEAgLTY4MCwxMyArNjgwLDEzIEBAIHZv
aWQgTWVkaWFDb250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50OjpkZWZhdWx0
RXZlbnRIYW5kbGVyKEV2ZW50JiBlCiBNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc0NvbnRhaW5l
ckVsZW1lbnQ6Ok1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zQ29udGFpbmVyRWxlbWVudChEb2N1
bWVudCYgZG9jdW1lbnQpCiAgICAgOiBNZWRpYUNvbnRyb2xEaXZFbGVtZW50KGRvY3VtZW50LCBN
ZWRpYUNsb3NlZENhcHRpb25zQ29udGFpbmVyKQogewotICAgIHNldFBzZXVkbyhBdG9taWNTdHJp
bmcoIi13ZWJraXQtbWVkaWEtY29udHJvbHMtY2xvc2VkLWNhcHRpb25zLWNvbnRhaW5lciIsIEF0
b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzZXRQc2V1ZG8oQXRvbVN0
cmluZygiLXdlYmtpdC1tZWRpYS1jb250cm9scy1jbG9zZWQtY2FwdGlvbnMtY29udGFpbmVyIiwg
QXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKIH0KIAogUmVmPE1lZGlhQ29udHJv
bENsb3NlZENhcHRpb25zQ29udGFpbmVyRWxlbWVudD4gTWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlv
bnNDb250YWluZXJFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIFJl
ZjxNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc0NvbnRhaW5lckVsZW1lbnQ+IGVsZW1lbnQgPSBh
ZG9wdFJlZigqbmV3IE1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zQ29udGFpbmVyRWxlbWVudChk
b2N1bWVudCkpOwotICAgIGVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRp
b24oZGlyQXR0ciwgQXRvbWljU3RyaW5nKCJhdXRvIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCkpOworICAgIGVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6
YXRpb24oZGlyQXR0ciwgQXRvbVN0cmluZygiYXV0byIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKSk7CiAgICAgZWxlbWVudC0+aGlkZSgpOwogICAgIHJldHVybiBlbGVtZW50Owog
fQpAQCAtNzAyLDcgKzcwMiw3IEBAIE1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0
RWxlbWVudDo6TWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFCiAjaWYgIUVOQUJM
RShWSURFT19UUkFDSykKICAgICBVTlVTRURfUEFSQU0oY29udHJvbHMpOwogI2VuZGlmCi0gICAg
c2V0UHNldWRvKEF0b21pY1N0cmluZygiLXdlYmtpdC1tZWRpYS1jb250cm9scy1jbG9zZWQtY2Fw
dGlvbnMtdHJhY2stbGlzdCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsK
KyAgICBzZXRQc2V1ZG8oQXRvbVN0cmluZygiLXdlYmtpdC1tZWRpYS1jb250cm9scy1jbG9zZWQt
Y2FwdGlvbnMtdHJhY2stbGlzdCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7
CiB9CiAKIFJlZjxNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNrTGlzdEVsZW1lbnQ+IE1l
ZGlhQ29udHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0RWxlbWVudDo6Y3JlYXRlKERvY3VtZW50
JiBkb2N1bWVudCwgTWVkaWFDb250cm9scyogY29udHJvbHMpCkBAIC03NDgsNyArNzQ4LDcgQEAg
dm9pZCBNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNrTGlzdEVsZW1lbnQ6OmRlZmF1bHRF
dmVudEhhbmRsZXIoRXZlbnQmIGV2ZW4KIHZvaWQgTWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNU
cmFja0xpc3RFbGVtZW50Ojp1cGRhdGVEaXNwbGF5KCkKIHsKICNpZiBFTkFCTEUoVklERU9fVFJB
Q0spCi0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gc2VsZWN0ZWRDbGFz
c1ZhbHVlKCJzZWxlY3RlZCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9tU3RyaW5nPiBzZWxlY3RlZENsYXNzVmFsdWUo
InNlbGVjdGVkIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogCiAgICAgaWYg
KCFtZWRpYUNvbnRyb2xsZXIoKS0+aGFzQ2xvc2VkQ2FwdGlvbnMoKSkKICAgICAgICAgcmV0dXJu
OwpAQCAtODU0LDcgKzg1NCw3IEBAIE1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudDo6TWVkaWFD
b250cm9sVGltZWxpbmVFbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCwgTWVkCiAgICAgOiBNZWRp
YUNvbnRyb2xJbnB1dEVsZW1lbnQoZG9jdW1lbnQsIE1lZGlhU2xpZGVyKQogICAgICwgbV9jb250
cm9scyhjb250cm9scykKIHsKLSAgICBzZXRQc2V1ZG8oQXRvbWljU3RyaW5nKCItd2Via2l0LW1l
ZGlhLWNvbnRyb2xzLXRpbWVsaW5lIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCkpOworICAgIHNldFBzZXVkbyhBdG9tU3RyaW5nKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLXRp
bWVsaW5lIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKIH0KIAogUmVmPE1l
ZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudD4gTWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50Ojpj
cmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBNZWRpYUNvbnRyb2xzKiBjb250cm9scykKQEAgLTg2
NCw3ICs4NjQsNyBAQCBSZWY8TWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50PiBNZWRpYUNvbnRy
b2xUaW1lbGluZUVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgZAogICAgIFJlZjxNZWRpYUNvbnRy
b2xUaW1lbGluZUVsZW1lbnQ+IHRpbWVsaW5lID0gYWRvcHRSZWYoKm5ldyBNZWRpYUNvbnRyb2xU
aW1lbGluZUVsZW1lbnQoZG9jdW1lbnQsIGNvbnRyb2xzKSk7CiAgICAgdGltZWxpbmUtPmVuc3Vy
ZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKTsKICAgICB0aW1lbGluZS0+c2V0VHlwZSgicmFuZ2UiKTsK
LSAgICB0aW1lbGluZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihwcmVjaXNp
b25BdHRyLCBBdG9taWNTdHJpbmcoImZsb2F0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCkpOworICAgIHRpbWVsaW5lLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKHByZWNpc2lvbkF0dHIsIEF0b21TdHJpbmcoImZsb2F0IiwgQXRvbVN0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpKTsKICAgICByZXR1cm4gdGltZWxpbmU7CiB9CiAKQEAgLTkxNCw3ICs5
MTQsNyBAQCB2b2lkIE1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudDo6c2V0UG9zaXRpb24oZG91
YmxlIGN1cnJlbnRUaW1lKQogCiB2b2lkIE1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudDo6c2V0
RHVyYXRpb24oZG91YmxlIGR1cmF0aW9uKQogewotICAgIHNldEF0dHJpYnV0ZShtYXhBdHRyLCBB
dG9taWNTdHJpbmc6Om51bWJlcihkdXJhdGlvbikpOworICAgIHNldEF0dHJpYnV0ZShtYXhBdHRy
LCBBdG9tU3RyaW5nOjpudW1iZXIoZHVyYXRpb24pKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQpAQCAtOTIyLDcgKzkyMiw3IEBAIHZvaWQgTWVkaWFDb250cm9sVGltZWxp
bmVFbGVtZW50OjpzZXREdXJhdGlvbihkb3VibGUgZHVyYXRpb24pCiBNZWRpYUNvbnRyb2xQYW5l
bFZvbHVtZVNsaWRlckVsZW1lbnQ6Ok1lZGlhQ29udHJvbFBhbmVsVm9sdW1lU2xpZGVyRWxlbWVu
dChEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgOiBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVt
ZW50KGRvY3VtZW50KQogewotICAgIHNldFBzZXVkbyhBdG9taWNTdHJpbmcoIi13ZWJraXQtbWVk
aWEtY29udHJvbHMtdm9sdW1lLXNsaWRlciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpKTsKKyAgICBzZXRQc2V1ZG8oQXRvbVN0cmluZygiLXdlYmtpdC1tZWRpYS1jb250cm9s
cy12b2x1bWUtc2xpZGVyIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKIH0K
IAogUmVmPE1lZGlhQ29udHJvbFBhbmVsVm9sdW1lU2xpZGVyRWxlbWVudD4gTWVkaWFDb250cm9s
UGFuZWxWb2x1bWVTbGlkZXJFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQpAQCAt
OTMwLDggKzkzMCw4IEBAIFJlZjxNZWRpYUNvbnRyb2xQYW5lbFZvbHVtZVNsaWRlckVsZW1lbnQ+
IE1lZGlhQ29udHJvbFBhbmVsVm9sdW1lU2xpZGVyRWxlbWVudDo6CiAgICAgUmVmPE1lZGlhQ29u
dHJvbFBhbmVsVm9sdW1lU2xpZGVyRWxlbWVudD4gc2xpZGVyID0gYWRvcHRSZWYoKm5ldyBNZWRp
YUNvbnRyb2xQYW5lbFZvbHVtZVNsaWRlckVsZW1lbnQoZG9jdW1lbnQpKTsKICAgICBzbGlkZXIt
PmVuc3VyZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKTsKICAgICBzbGlkZXItPnNldFR5cGUoInJhbmdl
Iik7Ci0gICAgc2xpZGVyLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHByZWNp
c2lvbkF0dHIsIEF0b21pY1N0cmluZygiZmxvYXQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKSk7Ci0gICAgc2xpZGVyLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKG1heEF0dHIsIEF0b21pY1N0cmluZygiMSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpKTsKKyAgICBzbGlkZXItPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRp
b24ocHJlY2lzaW9uQXR0ciwgQXRvbVN0cmluZygiZmxvYXQiLCBBdG9tU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCkpOworICAgIHNsaWRlci0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9u
aXphdGlvbihtYXhBdHRyLCBBdG9tU3RyaW5nKCIxIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpKTsKICAgICByZXR1cm4gc2xpZGVyOwogfQogCkBAIC05NDAsNyArOTQwLDcgQEAg
UmVmPE1lZGlhQ29udHJvbFBhbmVsVm9sdW1lU2xpZGVyRWxlbWVudD4gTWVkaWFDb250cm9sUGFu
ZWxWb2x1bWVTbGlkZXJFbGVtZW50OjoKIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVTbGlk
ZXJFbGVtZW50OjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lU2xpZGVyRWxlbWVudChEb2N1
bWVudCYgZG9jdW1lbnQpCiAgICAgOiBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50KGRv
Y3VtZW50KQogewotICAgIHNldFBzZXVkbyhBdG9taWNTdHJpbmcoIi13ZWJraXQtbWVkaWEtY29u
dHJvbHMtZnVsbHNjcmVlbi12b2x1bWUtc2xpZGVyIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCkpOworICAgIHNldFBzZXVkbyhBdG9tU3RyaW5nKCItd2Via2l0LW1lZGlhLWNv
bnRyb2xzLWZ1bGxzY3JlZW4tdm9sdW1lLXNsaWRlciIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKSk7CiB9CiAKIFJlZjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lU2xpZGVy
RWxlbWVudD4gTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZVNsaWRlckVsZW1lbnQ6OmNyZWF0
ZShEb2N1bWVudCYgZG9jdW1lbnQpCkBAIC05NDgsOCArOTQ4LDggQEAgUmVmPE1lZGlhQ29udHJv
bEZ1bGxzY3JlZW5Wb2x1bWVTbGlkZXJFbGVtZW50PiBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9s
dW1lU2xpZGUKICAgICBSZWY8TWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZVNsaWRlckVsZW1l
bnQ+IHNsaWRlciA9IGFkb3B0UmVmKCpuZXcgTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZVNs
aWRlckVsZW1lbnQoZG9jdW1lbnQpKTsKICAgICBzbGlkZXItPmVuc3VyZVVzZXJBZ2VudFNoYWRv
d1Jvb3QoKTsKICAgICBzbGlkZXItPnNldFR5cGUoInJhbmdlIik7Ci0gICAgc2xpZGVyLT5zZXRB
dHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHByZWNpc2lvbkF0dHIsIEF0b21pY1N0cmlu
ZygiZmxvYXQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgc2xp
ZGVyLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKG1heEF0dHIsIEF0b21pY1N0
cmluZygiMSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzbGlk
ZXItPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24ocHJlY2lzaW9uQXR0ciwgQXRv
bVN0cmluZygiZmxvYXQiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAg
IHNsaWRlci0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihtYXhBdHRyLCBBdG9t
U3RyaW5nKCIxIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKICAgICByZXR1
cm4gc2xpZGVyOwogfQogCkBAIC05NTgsNyArOTU4LDcgQEAgUmVmPE1lZGlhQ29udHJvbEZ1bGxz
Y3JlZW5Wb2x1bWVTbGlkZXJFbGVtZW50PiBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lU2xp
ZGUKIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xGdWxs
c2NyZWVuQnV0dG9uRWxlbWVudChEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgOiBNZWRpYUNvbnRy
b2xJbnB1dEVsZW1lbnQoZG9jdW1lbnQsIE1lZGlhRW50ZXJGdWxsc2NyZWVuQnV0dG9uKQogewot
ICAgIHNldFBzZXVkbyhBdG9taWNTdHJpbmcoIi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNj
cmVlbi1idXR0b24iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAg
c2V0UHNldWRvKEF0b21TdHJpbmcoIi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1i
dXR0b24iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogfQogCiBSZWY8TWVk
aWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQ+IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5C
dXR0b25FbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQpAQCAtMTAwMiw3ICsxMDAy
LDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudDo6c2V0SXNGdWxs
c2NyZWVuKGJvb2wgaXNGdWxsc2NyZWVuKQogTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1p
bkJ1dHRvbkVsZW1lbnQ6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNaW5CdXR0b25FbGVt
ZW50KERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IE1lZGlhQ29udHJvbElucHV0RWxlbWVudChk
b2N1bWVudCwgTWVkaWFVbk11dGVCdXR0b24pCiB7Ci0gICAgc2V0UHNldWRvKEF0b21pY1N0cmlu
ZygiLXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLXZvbHVtZS1taW4tYnV0dG9uIiwg
QXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHNldFBzZXVkbyhBdG9t
U3RyaW5nKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tdm9sdW1lLW1pbi1idXR0
b24iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogfQogCiBSZWY8TWVkaWFD
b250cm9sRnVsbHNjcmVlblZvbHVtZU1pbkJ1dHRvbkVsZW1lbnQ+IE1lZGlhQ29udHJvbEZ1bGxz
Y3JlZW5Wb2x1bWVNaW5CdXR0b25FbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQpA
QCAtMTAyNyw3ICsxMDI3LDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWlu
QnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCYgZXYKIE1lZGlhQ29udHJv
bEZ1bGxzY3JlZW5Wb2x1bWVNYXhCdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVu
Vm9sdW1lTWF4QnV0dG9uRWxlbWVudChEb2N1bWVudCYgZG9jdW1lbnQpCiA6IE1lZGlhQ29udHJv
bElucHV0RWxlbWVudChkb2N1bWVudCwgTWVkaWFNdXRlQnV0dG9uKQogewotICAgIHNldFBzZXVk
byhBdG9taWNTdHJpbmcoIi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi12b2x1bWUt
bWF4LWJ1dHRvbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBz
ZXRQc2V1ZG8oQXRvbVN0cmluZygiLXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLXZv
bHVtZS1tYXgtYnV0dG9uIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKIH0K
IAogUmVmPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNYXhCdXR0b25FbGVtZW50PiBNZWRp
YUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWF4QnV0dG9uRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50
JiBkb2N1bWVudCkKQEAgLTEwNjAsOSArMTA2MCw5IEBAIFJlZjxNZWRpYUNvbnRyb2xUaW1lUmVt
YWluaW5nRGlzcGxheUVsZW1lbnQ+IE1lZGlhQ29udHJvbFRpbWVSZW1haW5pbmdEaXNwbGF5RWxl
CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFDb250cm9sVGltZVJlbWFpbmluZ0Rpc3Bs
YXlFbGVtZW50KGRvY3VtZW50KSk7CiB9CiAKLXN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGdl
dE1lZGlhQ29udHJvbFRpbWVSZW1haW5pbmdEaXNwbGF5RWxlbWVudFNoYWRvd1BzZXVkb0lkKCkK
K3N0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBnZXRNZWRpYUNvbnRyb2xUaW1lUmVtYWluaW5nRGlz
cGxheUVsZW1lbnRTaGFkb3dQc2V1ZG9JZCgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEF0b21pY1N0cmluZz4gaWQoIi13ZWJraXQtbWVkaWEtY29udHJvbHMtdGltZS1yZW1haW5pbmct
ZGlzcGxheSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxBdG9tU3RyaW5nPiBpZCgiLXdlYmtpdC1tZWRpYS1jb250cm9scy10
aW1lLXJlbWFpbmluZy1kaXNwbGF5IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OwogICAgIHJldHVybiBpZDsKIH0KIApAQCAtMTA3OSw5ICsxMDc5LDkgQEAgUmVmPE1lZGlhQ29u
dHJvbEN1cnJlbnRUaW1lRGlzcGxheUVsZW1lbnQ+IE1lZGlhQ29udHJvbEN1cnJlbnRUaW1lRGlz
cGxheUVsZW1lbnQKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYUNvbnRyb2xDdXJyZW50
VGltZURpc3BsYXlFbGVtZW50KGRvY3VtZW50KSk7CiB9CiAKLXN0YXRpYyBjb25zdCBBdG9taWNT
dHJpbmcmIGdldE1lZGlhQ29udHJvbEN1cnJlbnRUaW1lRGlzcGxheUVsZW1lbnRTaGFkb3dQc2V1
ZG9JZCgpCitzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgZ2V0TWVkaWFDb250cm9sQ3VycmVudFRp
bWVEaXNwbGF5RWxlbWVudFNoYWRvd1BzZXVkb0lkKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8QXRvbWljU3RyaW5nPiBpZCgiLXdlYmtpdC1tZWRpYS1jb250cm9scy1jdXJyZW50LXRp
bWUtZGlzcGxheSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9tU3RyaW5nPiBpZCgiLXdlYmtpdC1tZWRpYS1jb250cm9s
cy1jdXJyZW50LXRpbWUtZGlzcGxheSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKICAgICByZXR1cm4gaWQ7CiB9CiAKQEAgLTEwOTYsNyArMTA5Niw3IEBAIE1lZGlhQ29udHJv
bFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6Ok1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5l
ckVsZW1lbnQoRG9jCiAgICAgLCBtX2ZvbnRTaXplSXNJbXBvcnRhbnQoZmFsc2UpCiAgICAgLCBt
X3VwZGF0ZVRleHRUcmFja1JlcHJlc2VudGF0aW9uU3R5bGUoZmFsc2UpCiB7Ci0gICAgc2V0UHNl
dWRvKEF0b21pY1N0cmluZygiLXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLWNvbnRhaW5lciIsIEF0
b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzZXRQc2V1ZG8oQXRvbVN0
cmluZygiLXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLWNvbnRhaW5lciIsIEF0b21TdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKSk7CiB9CiAKIFJlZjxNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250
YWluZXJFbGVtZW50PiBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50OjpjcmVh
dGUoRG9jdW1lbnQmIGRvY3VtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvTWVkaWFDb250cm9scy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRp
YUNvbnRyb2xzLmNwcAppbmRleCA2MzFiODgyMzhkY2M5MzkyODQ2Nzg1MjQ3N2Q4M2JkY2ZjNjlj
NTlmLi5hN2RiZGFkYjMyODhlYzNiZjdkMDkwZGNjNTZiMjc5MzIwYjkyZmMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmNwcApAQCAtNTksNyArNTksNyBA
QCBNZWRpYUNvbnRyb2xzOjpNZWRpYUNvbnRyb2xzKERvY3VtZW50JiBkb2N1bWVudCkKICAgICAs
IG1faXNGdWxsc2NyZWVuKGZhbHNlKQogICAgICwgbV9pc01vdXNlT3ZlckNvbnRyb2xzKGZhbHNl
KQogewotICAgIHNldFBzZXVkbyhBdG9taWNTdHJpbmcoIi13ZWJraXQtbWVkaWEtY29udHJvbHMi
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc2V0UHNldWRvKEF0
b21TdHJpbmcoIi13ZWJraXQtbWVkaWEtY29udHJvbHMiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCkpOwogfQogCiB2b2lkIE1lZGlhQ29udHJvbHM6OnNldE1lZGlhQ29udHJvbGxl
cihNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UqIGNvbnRyb2xsZXIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Qcm9ncmVzc1NoYWRvd0VsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L1Byb2dyZXNzU2hhZG93RWxlbWVudC5oCmluZGV4IDkwMGQ3MmMx
YmY1NDlkYzQ3NWZlMDJlM2UxNjg1N2ZkNjI2ZDFlZjUuLjZkYzg5YzlkYzNjNWM1MTlkMzBjOGM1
MzI2NjNiMjkyMDQxMDZmZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L1Byb2dyZXNzU2hhZG93RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L1Byb2dyZXNzU2hhZG93RWxlbWVudC5oCkBAIC02Nyw3ICs2Nyw3IEBAIHByaXZhdGU6CiBpbmxp
bmUgUmVmPFByb2dyZXNzSW5uZXJFbGVtZW50PiBQcm9ncmVzc0lubmVyRWxlbWVudDo6Y3JlYXRl
KERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICBSZWY8UHJvZ3Jlc3NJbm5lckVsZW1lbnQ+IHJl
c3VsdCA9IGFkb3B0UmVmKCpuZXcgUHJvZ3Jlc3NJbm5lckVsZW1lbnQoZG9jdW1lbnQpKTsKLSAg
ICByZXN1bHQtPnNldFBzZXVkbyhBdG9taWNTdHJpbmcoIi13ZWJraXQtcHJvZ3Jlc3MtaW5uZXIt
ZWxlbWVudCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXN1
bHQtPnNldFBzZXVkbyhBdG9tU3RyaW5nKCItd2Via2l0LXByb2dyZXNzLWlubmVyLWVsZW1lbnQi
LCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKQEAgLTgyLDcgKzgyLDcgQEAgcHJpdmF0ZToKIGlubGluZSBSZWY8UHJvZ3Jlc3NCYXJF
bGVtZW50PiBQcm9ncmVzc0JhckVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQpCiB7
CiAgICAgUmVmPFByb2dyZXNzQmFyRWxlbWVudD4gcmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBQcm9n
cmVzc0JhckVsZW1lbnQoZG9jdW1lbnQpKTsKLSAgICByZXN1bHQtPnNldFBzZXVkbyhBdG9taWNT
dHJpbmcoIi13ZWJraXQtcHJvZ3Jlc3MtYmFyIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCkpOworICAgIHJlc3VsdC0+c2V0UHNldWRvKEF0b21TdHJpbmcoIi13ZWJraXQtcHJv
Z3Jlc3MtYmFyIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCkBAIC05OCw3ICs5OCw3IEBAIHByaXZhdGU6CiBpbmxpbmUgUmVmPFBy
b2dyZXNzVmFsdWVFbGVtZW50PiBQcm9ncmVzc1ZhbHVlRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50
JiBkb2N1bWVudCkKIHsKICAgICBSZWY8UHJvZ3Jlc3NWYWx1ZUVsZW1lbnQ+IHJlc3VsdCA9IGFk
b3B0UmVmKCpuZXcgUHJvZ3Jlc3NWYWx1ZUVsZW1lbnQoZG9jdW1lbnQpKTsKLSAgICByZXN1bHQt
PnNldFBzZXVkbyhBdG9taWNTdHJpbmcoIi13ZWJraXQtcHJvZ3Jlc3MtdmFsdWUiLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgcmVzdWx0LT5zZXRQc2V1ZG8oQXRv
bVN0cmluZygiLXdlYmtpdC1wcm9ncmVzcy12YWx1ZSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAKaW5kZXggMGQ0NDNjMTcyMzQ4
NTc5MjU1ZDY5NzhkZTc4ZDU1ZmM3ZjY5MzBjNS4uZjIzYWRiYTM4ZThlYmU1MWQzOTE3NTJiMjJm
MWE4NTMyMmQ1MGVjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xp
ZGVyVGh1bWJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlk
ZXJUaHVtYkVsZW1lbnQuY3BwCkBAIC0zNTYsNyArMzU2LDcgQEAgdm9pZCBTbGlkZXJUaHVtYkVs
ZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQmIGV2ZW50KQogCiAgICAgTW91c2VFdmVu
dCYgbW91c2VFdmVudCA9IGRvd25jYXN0PE1vdXNlRXZlbnQ+KGV2ZW50KTsKICAgICBib29sIGlz
TGVmdEJ1dHRvbiA9IG1vdXNlRXZlbnQuYnV0dG9uKCkgPT0gTGVmdEJ1dHRvbjsKLSAgICBjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSA9IG1vdXNlRXZlbnQudHlwZSgpOworICAgIGNvbnN0
IEF0b21TdHJpbmcmIGV2ZW50VHlwZSA9IG1vdXNlRXZlbnQudHlwZSgpOwogCiAgICAgLy8gV2Ug
aW50ZW50aW9uYWxseSBkbyBub3QgY2FsbCBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKSBoZXJl
IGJlY2F1c2UKICAgICAvLyBNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ6OmRlZmF1bHRFdmVu
dEhhbmRsZXIoKSB3YW50cyB0byBoYW5kbGUgdGhlc2UKQEAgLTUyMyw3ICs1MjMsNyBAQCB2b2lk
IFNsaWRlclRodW1iRWxlbWVudDo6aGFuZGxlVG91Y2hFdmVudChUb3VjaEV2ZW50JiB0b3VjaEV2
ZW50KQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGUgPSB0b3VjaEV2ZW50LnR5cGUoKTsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBldmVu
dFR5cGUgPSB0b3VjaEV2ZW50LnR5cGUoKTsKICAgICBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFt
ZXMoKS50b3VjaHN0YXJ0RXZlbnQpIHsKICAgICAgICAgaGFuZGxlVG91Y2hTdGFydCh0b3VjaEV2
ZW50KTsKICAgICAgICAgcmV0dXJuOwpAQCAtNTk0LDggKzU5NCw4IEBAIE9wdGlvbmFsPEVsZW1l
bnRTdHlsZT4gU2xpZGVyVGh1bWJFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVu
ZGVyU3R5bGUmCiB7CiAgICAgLy8gVGhpcyBkb2Vzbid0IGFjdHVhbGx5IGNvbXB1dGUgc3R5bGUu
IFRoaXMgaXMganVzdCBhIGhhY2sgdG8gcGljayBzaGFkb3cgcHNldWRvIGlkIHdoZW4gaG9zdCBz
dHlsZSBpcyBrbm93bi4KIAotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNT
dHJpbmc+IHNsaWRlclRodW1iU2hhZG93UHNldWRvSWQoIi13ZWJraXQtc2xpZGVyLXRodW1iIiwg
QXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gbWVkaWFTbGlkZXJUaHVtYlNoYWRvd1BzZXVkb0lk
KCItd2Via2l0LW1lZGlhLXNsaWRlci10aHVtYiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBz
bGlkZXJUaHVtYlNoYWRvd1BzZXVkb0lkKCItd2Via2l0LXNsaWRlci10aHVtYiIsIEF0b21TdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29u
c3QgQXRvbVN0cmluZz4gbWVkaWFTbGlkZXJUaHVtYlNoYWRvd1BzZXVkb0lkKCItd2Via2l0LW1l
ZGlhLXNsaWRlci10aHVtYiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKIAog
ICAgIGlmICghaG9zdFN0eWxlKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpAQCAtNjE2
LDcgKzYxNiw3IEBAIE9wdGlvbmFsPEVsZW1lbnRTdHlsZT4gU2xpZGVyVGh1bWJFbGVtZW50Ojpy
ZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmCiAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKIH0KIAotY29uc3QgQXRvbWljU3RyaW5nJiBTbGlkZXJUaHVtYkVsZW1lbnQ6OnNoYWRv
d1BzZXVkb0lkKCkgY29uc3QKK2NvbnN0IEF0b21TdHJpbmcmIFNsaWRlclRodW1iRWxlbWVudDo6
c2hhZG93UHNldWRvSWQoKSBjb25zdAogewogICAgIHJldHVybiBtX3NoYWRvd1BzZXVkb0lkOwog
fQpAQCAtNjQ4LDggKzY0OCw4IEBAIE9wdGlvbmFsPEVsZW1lbnRTdHlsZT4gU2xpZGVyQ29udGFp
bmVyRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0CiB7CiAgICAgLy8g
VGhpcyBkb2Vzbid0IGFjdHVhbGx5IGNvbXB1dGUgc3R5bGUuIFRoaXMgaXMganVzdCBhIGhhY2sg
dG8gcGljayBzaGFkb3cgcHNldWRvIGlkIHdoZW4gaG9zdCBzdHlsZSBpcyBrbm93bi4KIAotICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IG1lZGlhU2xpZGVyQ29u
dGFpbmVyKCItd2Via2l0LW1lZGlhLXNsaWRlci1jb250YWluZXIiLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRv
bWljU3RyaW5nPiBzbGlkZXJDb250YWluZXIoIi13ZWJraXQtc2xpZGVyLWNvbnRhaW5lciIsIEF0
b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxjb25zdCBBdG9tU3RyaW5nPiBtZWRpYVNsaWRlckNvbnRhaW5lcigiLXdlYmtpdC1tZWRp
YS1zbGlkZXItY29udGFpbmVyIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBzbGlkZXJDb250YWlu
ZXIoIi13ZWJraXQtc2xpZGVyLWNvbnRhaW5lciIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKTsKIAogICAgIGlmICghaG9zdFN0eWxlKQogICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwpAQCAtNjcwLDcgKzY3MCw3IEBAIE9wdGlvbmFsPEVsZW1lbnRTdHlsZT4gU2xpZGVyQ29u
dGFpbmVyRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0CiAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKIH0KIAotY29uc3QgQXRvbWljU3RyaW5nJiBTbGlkZXJDb250YWlu
ZXJFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0Citjb25zdCBBdG9tU3RyaW5nJiBTbGlk
ZXJDb250YWluZXJFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IG1fc2hhZG93UHNldWRvSWQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1Ns
aWRlclRodW1iRWxlbWVudC5oCmluZGV4IDZiYWIzZjI5MmU2YTdkOWM1NDY1ZTA5MWQ4ZTliYTgw
MWM4OTkxZTguLmIwMThiOThiMjVhOTVmZTIyNjg0N2M1NTg3NmY5NDE1YWI0YWQ3N2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5oCkBAIC03
OCw3ICs3OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsRGV0YWNoUmVuZGVyZXJzKCkgZmlu
YWw7CiAKICAgICBPcHRpb25hbDxFbGVtZW50U3R5bGU+IHJlc29sdmVDdXN0b21TdHlsZShjb25z
dCBSZW5kZXJTdHlsZSYsIGNvbnN0IFJlbmRlclN0eWxlKikgZmluYWw7Ci0gICAgY29uc3QgQXRv
bWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0IGZpbmFsOworICAgIGNvbnN0IEF0b21T
dHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3QgZmluYWw7CiAKICAgICB2b2lkIHN0YXJ0RHJh
Z2dpbmcoKTsKICAgICB2b2lkIHN0b3BEcmFnZ2luZygpOwpAQCAtOTcsNyArOTcsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgdW5yZWdpc3RlckZvclRvdWNoRXZlbnRzKCk7CiAjZW5kaWYKIAotICAg
IEF0b21pY1N0cmluZyBtX3NoYWRvd1BzZXVkb0lkOworICAgIEF0b21TdHJpbmcgbV9zaGFkb3dQ
c2V1ZG9JZDsKICAgICBib29sIG1faW5EcmFnTW9kZSB7IGZhbHNlIH07CiAKICNpZiBFTkFCTEUo
SU9TX1RPVUNIX0VWRU5UUykKQEAgLTEzNywxMCArMTM3LDEwIEBAIHByaXZhdGU6CiAgICAgU2xp
ZGVyQ29udGFpbmVyRWxlbWVudChEb2N1bWVudCYpOwogICAgIFJlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJl
ZVBvc2l0aW9uJikgZmluYWw7CiAgICAgT3B0aW9uYWw8RWxlbWVudFN0eWxlPiByZXNvbHZlQ3Vz
dG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBSZW5kZXJTdHlsZSopIGZpbmFsOwot
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdCBmaW5hbDsKKyAg
ICBjb25zdCBBdG9tU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0IGZpbmFsOwogICAgIGJv
b2wgaXNTbGlkZXJDb250YWluZXJFbGVtZW50KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsg
fQogCi0gICAgQXRvbWljU3RyaW5nIG1fc2hhZG93UHNldWRvSWQ7CisgICAgQXRvbVN0cmluZyBt
X3NoYWRvd1BzZXVkb0lkOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuY3BwCmluZGV4IDc4MmJk
YzAzNzYxN2FhNzllOWYyOThhZGRiZTQwNTg0YmU0YWQxMTUuLmY2MDU0ODM0NDVlNDU1YTc2NTAw
ODhlODQ5YTVhOWMxNDVkOTk3MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L1NwaW5CdXR0b25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9TcGluQnV0dG9uRWxlbWVudC5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgaW5saW5lIFNwaW5CdXR0
b25FbGVtZW50OjpTcGluQnV0dG9uRWxlbWVudChEb2N1bWVudCYgZG9jdW1lbnQsIFNwaW5CdXR0
b25Pd25lciYKICAgICAsIG1fcmVwZWF0aW5nVGltZXIoKnRoaXMsICZTcGluQnV0dG9uRWxlbWVu
dDo6cmVwZWF0aW5nVGltZXJGaXJlZCkKIHsKICAgICBzZXRIYXNDdXN0b21TdHlsZVJlc29sdmVD
YWxsYmFja3MoKTsKLSAgICBzZXRQc2V1ZG8oQXRvbWljU3RyaW5nKCItd2Via2l0LWlubmVyLXNw
aW4tYnV0dG9uIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHNl
dFBzZXVkbyhBdG9tU3RyaW5nKCItd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uIiwgQXRvbVN0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKIH0KIAogUmVmPFNwaW5CdXR0b25FbGVtZW50PiBT
cGluQnV0dG9uRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgU3BpbkJ1dHRvbk93
bmVyJiBzcGluQnV0dG9uT3duZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAppbmRleCBhMmEyZjBiMDllZTYxOTM4
ZmQ4OGZhYzc2MzI1YjI0MjBhMjlhYTlhLi4zYTYzN2RhZWYwMTI0ZTJlNGVkMzM2YjY2Mzc1MmQw
MDIyYjViZTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29u
dHJvbElubmVyRWxlbWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1Rl
eHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKQEAgLTE4Miw3ICsxODIsNyBAQCBPcHRpb25hbDxF
bGVtZW50U3R5bGU+IFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0
eWxlKGNvbnN0IFJlbgogaW5saW5lIFRleHRDb250cm9sUGxhY2Vob2xkZXJFbGVtZW50OjpUZXh0
Q29udHJvbFBsYWNlaG9sZGVyRWxlbWVudChEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgOiBIVE1M
RGl2RWxlbWVudChkaXZUYWcsIGRvY3VtZW50KQogewotICAgIHNldFBzZXVkbyhBdG9taWNTdHJp
bmcoInBsYWNlaG9sZGVyIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwor
ICAgIHNldFBzZXVkbyhBdG9tU3RyaW5nKCJwbGFjZWhvbGRlciIsIEF0b21TdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKSk7CiAgICAgc2V0SGFzQ3VzdG9tU3R5bGVSZXNvbHZlQ2FsbGJhY2tz
KCk7CiB9CiAKQEAgLTI1MiwxMSArMjUyLDExIEBAIGJvb2wgU2VhcmNoRmllbGRSZXN1bHRzQnV0
dG9uRWxlbWVudDo6d2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKQogaW5saW5lIFNlYXJj
aEZpZWxkQ2FuY2VsQnV0dG9uRWxlbWVudDo6U2VhcmNoRmllbGRDYW5jZWxCdXR0b25FbGVtZW50
KERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IEhUTUxEaXZFbGVtZW50KGRpdlRhZywgZG9jdW1l
bnQpCiB7Ci0gICAgc2V0UHNldWRvKEF0b21pY1N0cmluZygiLXdlYmtpdC1zZWFyY2gtY2FuY2Vs
LWJ1dHRvbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzZXRQ
c2V1ZG8oQXRvbVN0cmluZygiLXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbiIsIEF0b21TdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgc2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihhcmlhX2xhYmVsQXR0ciwgQVhT
ZWFyY2hGaWVsZENhbmNlbEJ1dHRvblRleHQoKSk7CiAjZW5kaWYKLSAgICBzZXRBdHRyaWJ1dGVX
aXRob3V0U3luY2hyb25pemF0aW9uKHJvbGVBdHRyLCBBdG9taWNTdHJpbmcoImJ1dHRvbiIsIEF0
b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzZXRBdHRyaWJ1dGVXaXRo
b3V0U3luY2hyb25pemF0aW9uKHJvbGVBdHRyLCBBdG9tU3RyaW5nKCJidXR0b24iLCBBdG9tU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogfQogCiBSZWY8U2VhcmNoRmllbGRDYW5jZWxC
dXR0b25FbGVtZW50PiBTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShEb2N1
bWVudCYgZG9jdW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Z
b3VUdWJlRW1iZWRTaGFkb3dFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L1lvdVR1YmVFbWJlZFNoYWRvd0VsZW1lbnQuY3BwCmluZGV4IDQ1NTFjZDQwZTBiOGEzOTA1ODcy
YTU2NTA3M2RjMGZhNzAzZjVkOGUuLjg4MDI2MDE0ZmZlZjIwMGE1YjZjMzM4YTEyNzM3NGE2MGIx
YmZmNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1lvdVR1YmVFbWJl
ZFNoYWRvd0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1lvdVR1
YmVFbWJlZFNoYWRvd0VsZW1lbnQuY3BwCkBAIC00MSw3ICs0MSw3IEBAIFJlZjxZb3VUdWJlRW1i
ZWRTaGFkb3dFbGVtZW50PiBZb3VUdWJlRW1iZWRTaGFkb3dFbGVtZW50OjpjcmVhdGUoRG9jdW1l
bnQmIGRvYykKIFlvdVR1YmVFbWJlZFNoYWRvd0VsZW1lbnQ6OllvdVR1YmVFbWJlZFNoYWRvd0Vs
ZW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIDogSFRNTERpdkVsZW1lbnQoSFRNTE5hbWVz
OjpkaXZUYWcsIGRvY3VtZW50KQogewotICAgIHNldFBzZXVkbyhBdG9taWNTdHJpbmcoIi13ZWJr
aXQtcGx1Z2luLXJlcGxhY2VtZW50IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCkpOworICAgIHNldFBzZXVkbyhBdG9tU3RyaW5nKCItd2Via2l0LXBsdWdpbi1yZXBsYWNlbWVu
dCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CiB9CiAKIFJlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBZb3VUdWJlRW1iZWRTaGFkb3dFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzQnV0
dG9uRWxlbWVudE1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9tYWMvSW1hZ2VD
b250cm9sc0J1dHRvbkVsZW1lbnRNYWMuY3BwCmluZGV4IDNlYWI1YTAxYmU5ZTgwMjQ3YjM5NTNm
YzVlMmU3ODc4OTJhMTkzNzguLjhlZTIzOTIzOTZlMzFkY2E5MmY3ZTI1YjE1YWEzMjc0ZjI5MTM5
MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRy
b2xzQnV0dG9uRWxlbWVudE1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
bWFjL0ltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjLmNwcApAQCAtOTUsNyArOTUsNyBAQCBS
ZWZQdHI8SW1hZ2VDb250cm9sc0J1dHRvbkVsZW1lbnRNYWM+IEltYWdlQ29udHJvbHNCdXR0b25F
bGVtZW50TWFjOjp0cnlDcmVhdGUoRAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGF1
dG8gYnV0dG9uID0gYWRvcHRSZWYoKm5ldyBJbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYyhk
b2N1bWVudCkpOwotICAgIGJ1dHRvbi0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlv
bihIVE1MTmFtZXM6OmNsYXNzQXR0ciwgQXRvbWljU3RyaW5nKCJ4LXdlYmtpdC1pbWFnZS1jb250
cm9scy1idXR0b24iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAg
YnV0dG9uLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6Y2xh
c3NBdHRyLCBBdG9tU3RyaW5nKCJ4LXdlYmtpdC1pbWFnZS1jb250cm9scy1idXR0b24iLCBBdG9t
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogCiAgICAgSW50U2l6ZSBwb3NpdGlvbk9m
ZnNldCA9IFJlbmRlclRoZW1lOjpzaW5nbGV0b24oKS5pbWFnZUNvbnRyb2xzQnV0dG9uUG9zaXRp
b25PZmZzZXQoKTsKICAgICBidXR0b24tPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVy
dHlUb3AsIHBvc2l0aW9uT2Zmc2V0LmhlaWdodCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BY
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRy
b2xzUm9vdEVsZW1lbnRNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvbWFjL0lt
YWdlQ29udHJvbHNSb290RWxlbWVudE1hYy5jcHAKaW5kZXggODhlZjJiYWFhOTIyYzM1ODRjNjcw
YzdlYTI1OTBmNWRlMzRiOGFmNC4uODhkMzllMTVmZWQ4Nzc5YTZlZTMyMGY5NGJlZWM5NmJiYzgw
NThjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29u
dHJvbHNSb290RWxlbWVudE1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
bWFjL0ltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYy5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgUmVm
UHRyPEltYWdlQ29udHJvbHNSb290RWxlbWVudD4gSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50Ojp0
cnlDcmVhdGUoRG9jdW1lbnQmIGQKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBSZWY8
SW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFjPiBjb250cm9scyA9IGFkb3B0UmVmKCpuZXcgSW1h
Z2VDb250cm9sc1Jvb3RFbGVtZW50TWFjKGRvY3VtZW50KSk7Ci0gICAgY29udHJvbHMtPnNldEF0
dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpjbGFzc0F0dHIsIEF0b21p
Y1N0cmluZygieC13ZWJraXQtaW1hZ2UtY29udHJvbHMiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKSk7CisgICAgY29udHJvbHMtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24oSFRNTE5hbWVzOjpjbGFzc0F0dHIsIEF0b21TdHJpbmcoIngtd2Via2l0LWltYWdl
LWNvbnRyb2xzIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKIAogICAgIGlm
IChSZWZQdHI8SW1hZ2VDb250cm9sc0J1dHRvbkVsZW1lbnRNYWM+IGJ1dHRvbiA9IEltYWdlQ29u
dHJvbHNCdXR0b25FbGVtZW50TWFjOjp0cnlDcmVhdGUoZG9jdW1lbnQpKQogICAgICAgICBjb250
cm9scy0+YXBwZW5kQ2hpbGQoKmJ1dHRvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL0F1ZGlvVHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRp
b1RyYWNrLmNwcAppbmRleCA3ZTVhYmQzNGZkMGZhOGE1MGJlMmYwM2EwYTMxMmFjZTg3YmI4Njcw
Li5mOGE3ZWI1MzFlMzcwNjkyMmEzYTlhOTc0MTVhMzU2M2QwOTg1N2E3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5jcHAKQEAgLTM5LDM5ICszOSwzOSBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNvbnN0IEF0b21pY1N0cmluZyYgQXVkaW9UcmFjazo6YWx0ZXJu
YXRpdmVLZXl3b3JkKCkKK2NvbnN0IEF0b21TdHJpbmcmIEF1ZGlvVHJhY2s6OmFsdGVybmF0aXZl
S2V5d29yZCgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gYWx0
ZXJuYXRpdmUoImFsdGVybmF0aXZlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21TdHJpbmc+IGFsdGVybmF0aXZlKCJh
bHRlcm5hdGl2ZSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1
cm4gYWx0ZXJuYXRpdmU7CiB9CiAKLWNvbnN0IEF0b21pY1N0cmluZyYgQXVkaW9UcmFjazo6ZGVz
Y3JpcHRpb25LZXl3b3JkKCkKK2NvbnN0IEF0b21TdHJpbmcmIEF1ZGlvVHJhY2s6OmRlc2NyaXB0
aW9uS2V5d29yZCgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4g
ZGVzY3JpcHRpb24oImRlc2NyaXB0aW9uIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21TdHJpbmc+IGRlc2NyaXB0aW9u
KCJkZXNjcmlwdGlvbiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBy
ZXR1cm4gZGVzY3JpcHRpb247CiB9CiAKLWNvbnN0IEF0b21pY1N0cmluZyYgQXVkaW9UcmFjazo6
bWFpbktleXdvcmQoKQorY29uc3QgQXRvbVN0cmluZyYgQXVkaW9UcmFjazo6bWFpbktleXdvcmQo
KQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG1haW4oIm1haW4i
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8QXRvbVN0cmluZz4gbWFpbigibWFpbiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKTsKICAgICByZXR1cm4gbWFpbjsKIH0KIAotY29uc3QgQXRvbWljU3RyaW5nJiBB
dWRpb1RyYWNrOjptYWluRGVzY0tleXdvcmQoKQorY29uc3QgQXRvbVN0cmluZyYgQXVkaW9UcmFj
azo6bWFpbkRlc2NLZXl3b3JkKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWlj
U3RyaW5nPiBtYWluRGVzYygibWFpbi1kZXNjIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21TdHJpbmc+IG1haW5EZXNj
KCJtYWluLWRlc2MiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0
dXJuIG1haW5EZXNjOwogfQogCi1jb25zdCBBdG9taWNTdHJpbmcmIEF1ZGlvVHJhY2s6OnRyYW5z
bGF0aW9uS2V5d29yZCgpCitjb25zdCBBdG9tU3RyaW5nJiBBdWRpb1RyYWNrOjp0cmFuc2xhdGlv
bktleXdvcmQoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHRy
YW5zbGF0aW9uKCJ0cmFuc2xhdGlvbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9tU3RyaW5nPiB0cmFuc2xhdGlvbigi
dHJhbnNsYXRpb24iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0
dXJuIHRyYW5zbGF0aW9uOwogfQogCi1jb25zdCBBdG9taWNTdHJpbmcmIEF1ZGlvVHJhY2s6OmNv
bW1lbnRhcnlLZXl3b3JkKCkKK2NvbnN0IEF0b21TdHJpbmcmIEF1ZGlvVHJhY2s6OmNvbW1lbnRh
cnlLZXl3b3JkKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBj
b21tZW50YXJ5KCJjb21tZW50YXJ5IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21TdHJpbmc+IGNvbW1lbnRhcnkoImNv
bW1lbnRhcnkiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJu
IGNvbW1lbnRhcnk7CiB9CiAKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIEF1ZGlvVHJhY2s6OnNl
dFByaXZhdGUoQXVkaW9UcmFja1ByaXZhdGUmIHRyYWNrUHJpdmF0ZSkKICAgICB1cGRhdGVLaW5k
RnJvbVByaXZhdGUoKTsKIH0KIAotYm9vbCBBdWRpb1RyYWNrOjppc1ZhbGlkS2luZChjb25zdCBB
dG9taWNTdHJpbmcmIHZhbHVlKSBjb25zdAorYm9vbCBBdWRpb1RyYWNrOjppc1ZhbGlkS2luZChj
b25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkgY29uc3QKIHsKICAgICByZXR1cm4gdmFsdWUgPT0gYWx0
ZXJuYXRpdmVLZXl3b3JkKCkKICAgICAgICAgfHwgdmFsdWUgPT0gY29tbWVudGFyeUtleXdvcmQo
KQpAQCAtMTQzLDE3ICsxNDMsMTcgQEAgdm9pZCBBdWRpb1RyYWNrOjplbmFibGVkQ2hhbmdlZChi
b29sIGVuYWJsZWQpCiAgICAgICAgIG1fY2xpZW50LT5hdWRpb1RyYWNrRW5hYmxlZENoYW5nZWQo
KnRoaXMpOwogfQogCi12b2lkIEF1ZGlvVHJhY2s6OmlkQ2hhbmdlZChjb25zdCBBdG9taWNTdHJp
bmcmIGlkKQordm9pZCBBdWRpb1RyYWNrOjppZENoYW5nZWQoY29uc3QgQXRvbVN0cmluZyYgaWQp
CiB7CiAgICAgc2V0SWQoaWQpOwogfQogCi12b2lkIEF1ZGlvVHJhY2s6OmxhYmVsQ2hhbmdlZChj
b25zdCBBdG9taWNTdHJpbmcmIGxhYmVsKQordm9pZCBBdWRpb1RyYWNrOjpsYWJlbENoYW5nZWQo
Y29uc3QgQXRvbVN0cmluZyYgbGFiZWwpCiB7CiAgICAgc2V0TGFiZWwobGFiZWwpOwogfQogCi12
b2lkIEF1ZGlvVHJhY2s6Omxhbmd1YWdlQ2hhbmdlZChjb25zdCBBdG9taWNTdHJpbmcmIGxhbmd1
YWdlKQordm9pZCBBdWRpb1RyYWNrOjpsYW5ndWFnZUNoYW5nZWQoY29uc3QgQXRvbVN0cmluZyYg
bGFuZ3VhZ2UpCiB7CiAgICAgc2V0TGFuZ3VhZ2UobGFuZ3VhZ2UpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL0F1ZGlvVHJhY2suaAppbmRleCA1NmFkMTQ4N2E2OGQ0Y2E1Nzk3NGJjMTU4NDMz
NjZjZjE1YzI1MDEwLi41Njk1MzAwZjZkYjFlYmU2MDBiNzFkMzliYzQ3MTVlZWI1OTI1OTU5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suaApAQCAtNDksMTIgKzQ5LDEyIEBA
IHB1YmxpYzoKICAgICB9CiAgICAgdmlydHVhbCB+QXVkaW9UcmFjaygpOwogCi0gICAgc3RhdGlj
IGNvbnN0IEF0b21pY1N0cmluZyYgYWx0ZXJuYXRpdmVLZXl3b3JkKCk7Ci0gICAgc3RhdGljIGNv
bnN0IEF0b21pY1N0cmluZyYgZGVzY3JpcHRpb25LZXl3b3JkKCk7Ci0gICAgc3RhdGljIGNvbnN0
IEF0b21pY1N0cmluZyYgbWFpbktleXdvcmQoKTsKLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3Ry
aW5nJiBtYWluRGVzY0tleXdvcmQoKTsKLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiB0
cmFuc2xhdGlvbktleXdvcmQoKTsKLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBjb21t
ZW50YXJ5S2V5d29yZCgpOworICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBhbHRlcm5hdGl2
ZUtleXdvcmQoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgZGVzY3JpcHRpb25LZXl3
b3JkKCk7CisgICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIG1haW5LZXl3b3JkKCk7CisgICAg
c3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIG1haW5EZXNjS2V5d29yZCgpOworICAgIHN0YXRpYyBj
b25zdCBBdG9tU3RyaW5nJiB0cmFuc2xhdGlvbktleXdvcmQoKTsKKyAgICBzdGF0aWMgY29uc3Qg
QXRvbVN0cmluZyYgY29tbWVudGFyeUtleXdvcmQoKTsKIAogICAgIGJvb2wgZW5hYmxlZCgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1fZW5hYmxlZDsgfQogICAgIHZvaWQgc2V0RW5hYmxlZChjb25z
dCBib29sKTsKQEAgLTcwLDE1ICs3MCwxNSBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEF1ZGlv
VHJhY2soQXVkaW9UcmFja0NsaWVudCYsIEF1ZGlvVHJhY2tQcml2YXRlJik7CiAKLSAgICBib29s
IGlzVmFsaWRLaW5kKGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wg
aXNWYWxpZEtpbmQoY29uc3QgQXRvbVN0cmluZyYpIGNvbnN0IGZpbmFsOwogCiAgICAgLy8gQXVk
aW9UcmFja1ByaXZhdGVDbGllbnQKICAgICB2b2lkIGVuYWJsZWRDaGFuZ2VkKGJvb2wpIGZpbmFs
OwogCiAgICAgLy8gVHJhY2tQcml2YXRlQmFzZUNsaWVudAotICAgIHZvaWQgaWRDaGFuZ2VkKGNv
bnN0IEF0b21pY1N0cmluZyYpIGZpbmFsOwotICAgIHZvaWQgbGFiZWxDaGFuZ2VkKGNvbnN0IEF0
b21pY1N0cmluZyYpIGZpbmFsOwotICAgIHZvaWQgbGFuZ3VhZ2VDaGFuZ2VkKGNvbnN0IEF0b21p
Y1N0cmluZyYpIGZpbmFsOworICAgIHZvaWQgaWRDaGFuZ2VkKGNvbnN0IEF0b21TdHJpbmcmKSBm
aW5hbDsKKyAgICB2b2lkIGxhYmVsQ2hhbmdlZChjb25zdCBBdG9tU3RyaW5nJikgZmluYWw7Cisg
ICAgdm9pZCBsYW5ndWFnZUNoYW5nZWQoY29uc3QgQXRvbVN0cmluZyYpIGZpbmFsOwogICAgIHZv
aWQgd2lsbFJlbW92ZSgpIGZpbmFsOwogCiAgICAgdm9pZCB1cGRhdGVLaW5kRnJvbVByaXZhdGUo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5jcHAKaW5kZXgg
YWFkZGNkZTM1NzU2NzYyMmE0ZDc4YjVjMWYyODhmNzVmNDE1ZDZkYy4uMmUwMzYxZTI3Zjk3MTFh
ODM0YjlkYmEyNDZlNmQ3MjJjZjY1M2QwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9BdWRpb1RyYWNrTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9BdWRpb1RyYWNrTGlzdC5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgQXVkaW9UcmFjayogQXVkaW9U
cmFja0xpc3Q6Oml0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0CiAgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKLUF1ZGlvVHJhY2sqIEF1ZGlvVHJhY2tMaXN0OjpnZXRUcmFja0J5SWQoY29uc3QgQXRv
bWljU3RyaW5nJiBpZCkgY29uc3QKK0F1ZGlvVHJhY2sqIEF1ZGlvVHJhY2tMaXN0OjpnZXRUcmFj
a0J5SWQoY29uc3QgQXRvbVN0cmluZyYgaWQpIGNvbnN0CiB7CiAgICAgZm9yIChhdXRvJiBpbmJh
bmRUcmFjayA6IG1faW5iYW5kVHJhY2tzKSB7CiAgICAgICAgIGF1dG8mIHRyYWNrID0gZG93bmNh
c3Q8QXVkaW9UcmFjaz4oKmluYmFuZFRyYWNrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
QXVkaW9UcmFja0xpc3QuaAppbmRleCBkYmUwMTQ1NzI0YTZkNDZkNzk1MWYyMmU0MDI5NTdhNDgz
NTA2YmFiLi42ZWQ4Nzc4ZTZlYmYyOTg4ZjM0NDdlZmM4NzgxY2VjZmQ3ZTkzOTgzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5oCkBAIC00MSw3ICs0MSw3IEBA
IHB1YmxpYzoKICAgICB9CiAgICAgdmlydHVhbCB+QXVkaW9UcmFja0xpc3QoKTsKIAotICAgIEF1
ZGlvVHJhY2sqIGdldFRyYWNrQnlJZChjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdDsKKyAgICBB
dWRpb1RyYWNrKiBnZXRUcmFja0J5SWQoY29uc3QgQXRvbVN0cmluZyYpIGNvbnN0OwogCiAgICAg
QXVkaW9UcmFjayogaXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3Q7CiAgICAgQXVkaW9UcmFjayog
bGFzdEl0ZW0oKSBjb25zdCB7IHJldHVybiBpdGVtKGxlbmd0aCgpIC0gMSk7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmNwcAppbmRleCBlY2JiMmUyNDQx
ZjU1OTFjYjMyOTYyMTk0MzNlZWI4ZTk4OWIyODdmLi40Y2YxYzg1NzYzNjg0ZjQ1MzVmMmM1YjIy
NGY4M2RiODIxNjkzMzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0lu
YmFuZFRleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRU
ZXh0VHJhY2suY3BwCkBAIC0xMzcsMjIgKzEzNywyMiBAQCBzaXplX3QgSW5iYW5kVGV4dFRyYWNr
OjppbmJhbmRUcmFja0luZGV4KCkKICAgICByZXR1cm4gbV9wcml2YXRlLT50cmFja0luZGV4KCk7
CiB9CiAKLUF0b21pY1N0cmluZyBJbmJhbmRUZXh0VHJhY2s6OmluQmFuZE1ldGFkYXRhVHJhY2tE
aXNwYXRjaFR5cGUoKSBjb25zdAorQXRvbVN0cmluZyBJbmJhbmRUZXh0VHJhY2s6OmluQmFuZE1l
dGFkYXRhVHJhY2tEaXNwYXRjaFR5cGUoKSBjb25zdAogewogICAgIHJldHVybiBtX3ByaXZhdGUt
PmluQmFuZE1ldGFkYXRhVHJhY2tEaXNwYXRjaFR5cGUoKTsKIH0KIAotdm9pZCBJbmJhbmRUZXh0
VHJhY2s6OmlkQ2hhbmdlZChjb25zdCBBdG9taWNTdHJpbmcmIGlkKQordm9pZCBJbmJhbmRUZXh0
VHJhY2s6OmlkQ2hhbmdlZChjb25zdCBBdG9tU3RyaW5nJiBpZCkKIHsKICAgICBzZXRJZChpZCk7
CiB9CiAKLXZvaWQgSW5iYW5kVGV4dFRyYWNrOjpsYWJlbENoYW5nZWQoY29uc3QgQXRvbWljU3Ry
aW5nJiBsYWJlbCkKK3ZvaWQgSW5iYW5kVGV4dFRyYWNrOjpsYWJlbENoYW5nZWQoY29uc3QgQXRv
bVN0cmluZyYgbGFiZWwpCiB7CiAgICAgc2V0TGFiZWwobGFiZWwpOwogfQogCi12b2lkIEluYmFu
ZFRleHRUcmFjazo6bGFuZ3VhZ2VDaGFuZ2VkKGNvbnN0IEF0b21pY1N0cmluZyYgbGFuZ3VhZ2Up
Cit2b2lkIEluYmFuZFRleHRUcmFjazo6bGFuZ3VhZ2VDaGFuZ2VkKGNvbnN0IEF0b21TdHJpbmcm
IGxhbmd1YWdlKQogewogICAgIHNldExhbmd1YWdlKGxhbmd1YWdlKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5oCmluZGV4IDIzYzhhYThhZmFhNTZkMWZi
ZDg0OTQ4NDc4OTNjZDE4ZTMxZWQzMzEuLmUyYWU5YjIzOWYzMDI5NzZiN2NkZDNmMzQ0ZGZkMmMx
NGE2MzhhOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4
dFRyYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2su
aApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRNb2RlKE1vZGUpIG92ZXJy
aWRlOwogICAgIHNpemVfdCBpbmJhbmRUcmFja0luZGV4KCk7CiAKLSAgICBBdG9taWNTdHJpbmcg
aW5CYW5kTWV0YWRhdGFUcmFja0Rpc3BhdGNoVHlwZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIEF0
b21TdHJpbmcgaW5CYW5kTWV0YWRhdGFUcmFja0Rpc3BhdGNoVHlwZSgpIGNvbnN0IG92ZXJyaWRl
OwogCiAgICAgdm9pZCBzZXRQcml2YXRlKEluYmFuZFRleHRUcmFja1ByaXZhdGUmKTsKICAgICB2
b2lkIHNldE1lZGlhRWxlbWVudChIVE1MTWVkaWFFbGVtZW50Kikgb3ZlcnJpZGU7CkBAIC02MSw5
ICs2MSw5IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAgICBib29sIGlzSW5iYW5kKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZvaWQgaWRDaGFuZ2VkKGNvbnN0IEF0b21p
Y1N0cmluZyYpIG92ZXJyaWRlOwotICAgIHZvaWQgbGFiZWxDaGFuZ2VkKGNvbnN0IEF0b21pY1N0
cmluZyYpIG92ZXJyaWRlOwotICAgIHZvaWQgbGFuZ3VhZ2VDaGFuZ2VkKGNvbnN0IEF0b21pY1N0
cmluZyYpIG92ZXJyaWRlOworICAgIHZvaWQgaWRDaGFuZ2VkKGNvbnN0IEF0b21TdHJpbmcmKSBv
dmVycmlkZTsKKyAgICB2b2lkIGxhYmVsQ2hhbmdlZChjb25zdCBBdG9tU3RyaW5nJikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBsYW5ndWFnZUNoYW5nZWQoY29uc3QgQXRvbVN0cmluZyYpIG92ZXJyaWRl
OwogICAgIHZvaWQgd2lsbFJlbW92ZSgpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBhZGREYXRhQ3Vl
KGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IHZvaWQqLCB1bnNpZ25l
ZCkgb3ZlcnJpZGUgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcAppbmRleCAzMTUxYjdmYWMzMmU0ZmFk
OWM4MWZkODVhYmMyMDVlN2IwNmY5YTAyLi44ZjI5YzdmMTY3OWEwZmEyOTE4ZGVjZmE1MTNlMmQ4
MDI3MWEzNWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0xvYWRhYmxl
VGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4
dFRyYWNrLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIHZvaWQgTG9hZGFibGVUZXh0VHJhY2s6Om5l
d1N0eWxlU2hlZXRzQXZhaWxhYmxlKFRleHRUcmFja0xvYWRlciYgbG9hZGVyKQogICAgIG1fc3R5
bGVTaGVldHMgPSBtX2xvYWRlci0+Z2V0TmV3U3R5bGVTaGVldHMoKTsKIH0KIAotQXRvbWljU3Ry
aW5nIExvYWRhYmxlVGV4dFRyYWNrOjppZCgpIGNvbnN0CitBdG9tU3RyaW5nIExvYWRhYmxlVGV4
dFRyYWNrOjppZCgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3RyYWNrRWxlbWVudCkKICAgICAgICAg
cmV0dXJuIGVtcHR5QXRvbSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9Mb2FkYWJsZVRleHRUcmFjay5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJs
ZVRleHRUcmFjay5oCmluZGV4IGI0MTU1MzZlNDFiYzAxMWZlY2FhOTU0YjkyNTk3ZDEwZThlZGMz
MWMuLmRjNDcxMjQzMDg3ZDY3NTJjYmQ3Y2RhNjU1YTQ5NmI1NmE0NTM5ZGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmgKQEAgLTU5LDcgKzU5LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIG5ld1JlZ2lvbnNBdmFpbGFibGUoVGV4dFRyYWNrTG9hZGVy
JikgZmluYWw7CiAgICAgdm9pZCBuZXdTdHlsZVNoZWV0c0F2YWlsYWJsZShUZXh0VHJhY2tMb2Fk
ZXImKSBmaW5hbDsKIAotICAgIEF0b21pY1N0cmluZyBpZCgpIGNvbnN0IGZpbmFsOworICAgIEF0
b21TdHJpbmcgaWQoKSBjb25zdCBmaW5hbDsKICAgICBib29sIGlzRGVmYXVsdCgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1faXNEZWZhdWx0OyB9CiAgICAgRWxlbWVudCogZWxlbWVudCgpIGZpbmFs
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAKaW5kZXggNmFmZjgzOGQw
MDRiYmFiODNkY2RmZjcxNDhiMzExZmJjODYyMDA1MC4uNTlhMTkyNDYyMDliMDA5YWMwMTRhYmE5
YjcyMGYzMjJkNTYxNzk3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
ZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNw
cApAQCAtNDksMzkgKzQ5LDM5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNP
X0FMTE9DQVRFRF9JTVBMKFRleHRUcmFjayk7CiAKLWNvbnN0IEF0b21pY1N0cmluZyYgVGV4dFRy
YWNrOjpzdWJ0aXRsZXNLZXl3b3JkKCkKK2NvbnN0IEF0b21TdHJpbmcmIFRleHRUcmFjazo6c3Vi
dGl0bGVzS2V5d29yZCgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21p
Y1N0cmluZz4gc3VidGl0bGVzKCJzdWJ0aXRsZXMiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4g
c3VidGl0bGVzKCJzdWJ0aXRsZXMiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7
CiAgICAgcmV0dXJuIHN1YnRpdGxlczsKIH0KIAotc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYg
Y2FwdGlvbnNLZXl3b3JkKCkKK3N0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBjYXB0aW9uc0tleXdv
cmQoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGNh
cHRpb25zKCJjYXB0aW9ucyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBjYXB0aW9ucygiY2Fw
dGlvbnMiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIGNh
cHRpb25zOwogfQogCi1zdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBkZXNjcmlwdGlvbnNLZXl3
b3JkKCkKK3N0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBkZXNjcmlwdGlvbnNLZXl3b3JkKCkKIHsK
LSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBkZXNjcmlwdGlv
bnMoImRlc2NyaXB0aW9ucyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBkZXNjcmlwdGlvbnMo
ImRlc2NyaXB0aW9ucyIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBy
ZXR1cm4gZGVzY3JpcHRpb25zOwogfQogCi1zdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBjaGFw
dGVyc0tleXdvcmQoKQorc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGNoYXB0ZXJzS2V5d29yZCgp
CiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gY2hhcHRl
cnMoImNoYXB0ZXJzIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGNoYXB0ZXJzKCJjaGFwdGVy
cyIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gY2hhcHRl
cnM7CiB9CiAKLXN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIG1ldGFkYXRhS2V5d29yZCgpCitz
dGF0aWMgY29uc3QgQXRvbVN0cmluZyYgbWV0YWRhdGFLZXl3b3JkKCkKIHsKLSAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBtZXRhZGF0YSgibWV0YWRhdGEiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gbWV0YWRhdGEoIm1ldGFkYXRhIiwgQXRvbVN0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBtZXRhZGF0YTsKIH0KICAgICAKLXN0
YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGZvcmNlZEtleXdvcmQoKQorc3RhdGljIGNvbnN0IEF0
b21TdHJpbmcmIGZvcmNlZEtleXdvcmQoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxj
b25zdCBBdG9taWNTdHJpbmc+IGZvcmNlZCgiZm9yY2VkIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJp
bmc+IGZvcmNlZCgiZm9yY2VkIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwog
ICAgIHJldHVybiBmb3JjZWQ7CiB9CiAKQEAgLTk3LDcgKzk3LDcgQEAgVGV4dFRyYWNrKiBUZXh0
VHJhY2s6OmNhcHRpb25NZW51QXV0b21hdGljSXRlbSgpCiAgICAgcmV0dXJuICZhdXRvbWF0aWM7
CiB9CiAKLVRleHRUcmFjazo6VGV4dFRyYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIFRleHRUcmFja0NsaWVudCogY2xpZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIGtpbmQsIGNv
bnN0IEF0b21pY1N0cmluZyYgaWQsIGNvbnN0IEF0b21pY1N0cmluZyYgbGFiZWwsIGNvbnN0IEF0
b21pY1N0cmluZyYgbGFuZ3VhZ2UsIFRleHRUcmFja1R5cGUgdHlwZSkKK1RleHRUcmFjazo6VGV4
dFRyYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFRleHRUcmFja0NsaWVudCog
Y2xpZW50LCBjb25zdCBBdG9tU3RyaW5nJiBraW5kLCBjb25zdCBBdG9tU3RyaW5nJiBpZCwgY29u
c3QgQXRvbVN0cmluZyYgbGFiZWwsIGNvbnN0IEF0b21TdHJpbmcmIGxhbmd1YWdlLCBUZXh0VHJh
Y2tUeXBlIHR5cGUpCiAgICAgOiBUcmFja0Jhc2UoVHJhY2tCYXNlOjpUZXh0VHJhY2ssIGlkLCBs
YWJlbCwgbGFuZ3VhZ2UpCiAgICAgLCBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcihjb250ZXh0
KQogICAgICwgbV9jbGllbnQoY2xpZW50KQpAQCAtMTM0LDcgKzEzNCw3IEBAIGJvb2wgVGV4dFRy
YWNrOjplbmFibGVkKCkgY29uc3QKICAgICByZXR1cm4gbV9tb2RlICE9IE1vZGU6OkRpc2FibGVk
OwogfQogCi1ib29sIFRleHRUcmFjazo6aXNWYWxpZEtpbmRLZXl3b3JkKGNvbnN0IEF0b21pY1N0
cmluZyYgdmFsdWUpCitib29sIFRleHRUcmFjazo6aXNWYWxpZEtpbmRLZXl3b3JkKGNvbnN0IEF0
b21TdHJpbmcmIHZhbHVlKQogewogICAgIGlmICh2YWx1ZSA9PSBzdWJ0aXRsZXNLZXl3b3JkKCkp
CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTUyLDcgKzE1Miw3IEBAIGJvb2wgVGV4dFRyYWNr
Ojppc1ZhbGlkS2luZEtleXdvcmQoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLWNvbnN0IEF0b21pY1N0cmluZyYgVGV4dFRyYWNrOjpraW5kS2V5d29y
ZCgpIGNvbnN0Citjb25zdCBBdG9tU3RyaW5nJiBUZXh0VHJhY2s6OmtpbmRLZXl3b3JkKCkgY29u
c3QKIHsKICAgICBzd2l0Y2ggKG1fa2luZCkgewogICAgIGNhc2UgS2luZDo6Q2FwdGlvbnM6CkBA
IC01NDgsNyArNTQ4LDcgQEAgYm9vbCBUZXh0VHJhY2s6OmNvbnRhaW5zT25seUZvcmNlZFN1YnRp
dGxlcygpIGNvbnN0CiB9CiAKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQotdm9pZCBUZXh0VHJh
Y2s6OnNldExhbmd1YWdlKGNvbnN0IEF0b21pY1N0cmluZyYgbGFuZ3VhZ2UpCit2b2lkIFRleHRU
cmFjazo6c2V0TGFuZ3VhZ2UoY29uc3QgQXRvbVN0cmluZyYgbGFuZ3VhZ2UpCiB7CiAgICAgLy8g
MTEuMSBsYW5ndWFnZSwgb24gc2V0dGluZzoKICAgICAvLyAxLiBJZiB0aGUgdmFsdWUgYmVpbmcg
YXNzaWduZWQgdG8gdGhpcyBhdHRyaWJ1dGUgaXMgbm90IGFuIGVtcHR5IHN0cmluZyBvciBhIEJD
UCA0NyBsYW5ndWFnZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0
VHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmgKaW5kZXggMzQ2
YjczN2I5NjBhODc1MDVkZTc2ZTliMGUyMDgwYjM5YmM1MjRlMC4uZWQ1YjgzYWZmOTJkZmMxMDQ4
ZmVkMTU0YzEyYWQyOTcwMTIzMGUyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9UZXh0VHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFj
ay5oCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKIGNsYXNzIFRleHRUcmFjayA6IHB1YmxpYyBU
cmFja0Jhc2UsIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgQ29udGV4
dERlc3RydWN0aW9uT2JzZXJ2ZXIgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoVGV4dFRy
YWNrKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFRleHRUcmFjaz4gY3JlYXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFRleHRUcmFja0NsaWVudCogY2xpZW50LCBjb25zdCBB
dG9taWNTdHJpbmcmIGtpbmQsIGNvbnN0IEF0b21pY1N0cmluZyYgaWQsIGNvbnN0IEF0b21pY1N0
cmluZyYgbGFiZWwsIGNvbnN0IEF0b21pY1N0cmluZyYgbGFuZ3VhZ2UpCisgICAgc3RhdGljIFJl
ZjxUZXh0VHJhY2s+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBUZXh0
VHJhY2tDbGllbnQqIGNsaWVudCwgY29uc3QgQXRvbVN0cmluZyYga2luZCwgY29uc3QgQXRvbVN0
cmluZyYgaWQsIGNvbnN0IEF0b21TdHJpbmcmIGxhYmVsLCBjb25zdCBBdG9tU3RyaW5nJiBsYW5n
dWFnZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRleHRUcmFjayhjb250
ZXh0LCBjbGllbnQsIGtpbmQsIGlkLCBsYWJlbCwgbGFuZ3VhZ2UsIEFkZFRyYWNrKSk7CiAgICAg
fQpAQCAtNjYsMTIgKzY2LDEyIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgVGV4dFRyYWNrKiBjYXB0
aW9uTWVudU9mZkl0ZW0oKTsKICAgICBzdGF0aWMgVGV4dFRyYWNrKiBjYXB0aW9uTWVudUF1dG9t
YXRpY0l0ZW0oKTsKIAotICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHN1YnRpdGxlc0tl
eXdvcmQoKTsKLSAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkS2luZEtleXdvcmQoY29uc3QgQXRvbWlj
U3RyaW5nJik7CisgICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIHN1YnRpdGxlc0tleXdvcmQo
KTsKKyAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkS2luZEtleXdvcmQoY29uc3QgQXRvbVN0cmluZyYp
OwogCi0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgZGlzYWJsZWRLZXl3b3JkKCk7Ci0g
ICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgaGlkZGVuS2V5d29yZCgpOwotICAgIHN0YXRp
YyBjb25zdCBBdG9taWNTdHJpbmcmIHNob3dpbmdLZXl3b3JkKCk7CisgICAgc3RhdGljIGNvbnN0
IEF0b21TdHJpbmcmIGRpc2FibGVkS2V5d29yZCgpOworICAgIHN0YXRpYyBjb25zdCBBdG9tU3Ry
aW5nJiBoaWRkZW5LZXl3b3JkKCk7CisgICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIHNob3dp
bmdLZXl3b3JkKCk7CiAKICAgICBlbnVtIGNsYXNzIEtpbmQgeyBTdWJ0aXRsZXMsIENhcHRpb25z
LCBEZXNjcmlwdGlvbnMsIENoYXB0ZXJzLCBNZXRhZGF0YSwgRm9yY2VkIH07CiAgICAgS2luZCBr
aW5kKCkgY29uc3Q7CkBAIC04MCwxMCArODAsMTAgQEAgcHVibGljOgogICAgIEtpbmQga2luZEZv
ckJpbmRpbmdzKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRLaW5kRm9yQmluZGluZ3MoS2luZCk7CiAK
LSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGtpbmRLZXl3b3JkKCkgY29uc3Q7CisgICAgY29uc3Qg
QXRvbVN0cmluZyYga2luZEtleXdvcmQoKSBjb25zdDsKICAgICB2b2lkIHNldEtpbmRLZXl3b3Jk
SWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldyk7CiAKLSAgICB2aXJ0dWFsIEF0b21pY1N0cmlu
ZyBpbkJhbmRNZXRhZGF0YVRyYWNrRGlzcGF0Y2hUeXBlKCkgY29uc3QgeyByZXR1cm4gZW1wdHlT
dHJpbmcoKTsgfQorICAgIHZpcnR1YWwgQXRvbVN0cmluZyBpbkJhbmRNZXRhZGF0YVRyYWNrRGlz
cGF0Y2hUeXBlKCkgY29uc3QgeyByZXR1cm4gZW1wdHlTdHJpbmcoKTsgfQogCiAgICAgZW51bSBj
bGFzcyBNb2RlIHsgRGlzYWJsZWQsIEhpZGRlbiwgU2hvd2luZyB9OwogICAgIE1vZGUgbW9kZSgp
IGNvbnN0OwpAQCAtMTM1LDcgKzEzNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZUFsbEN1
ZXMoKTsKIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCi0gICAgdm9pZCBzZXRMYW5ndWFnZShj
b25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldExhbmd1YWdlKGNvbnN0
IEF0b21TdHJpbmcmKSBvdmVycmlkZTsKICNlbmRpZgogCiAgICAgdmlydHVhbCBib29sIGlzSW5i
YW5kKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTE0OCw3ICsxNDgsNyBAQCBwdWJsaWM6
CiAgICAgY29uc3QgT3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+JiBzdHlsZVNoZWV0cygpIGNvbnN0
IHsgcmV0dXJuIG1fc3R5bGVTaGVldHM7IH0KIAogcHJvdGVjdGVkOgotICAgIFRleHRUcmFjayhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgVGV4dFRyYWNrQ2xpZW50KiwgY29uc3QgQXRvbWljU3Ry
aW5nJiBraW5kLCBjb25zdCBBdG9taWNTdHJpbmcmIGlkLCBjb25zdCBBdG9taWNTdHJpbmcmIGxh
YmVsLCBjb25zdCBBdG9taWNTdHJpbmcmIGxhbmd1YWdlLCBUZXh0VHJhY2tUeXBlKTsKKyAgICBU
ZXh0VHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFRleHRUcmFja0NsaWVudCosIGNvbnN0
IEF0b21TdHJpbmcmIGtpbmQsIGNvbnN0IEF0b21TdHJpbmcmIGlkLCBjb25zdCBBdG9tU3RyaW5n
JiBsYWJlbCwgY29uc3QgQXRvbVN0cmluZyYgbGFuZ3VhZ2UsIFRleHRUcmFja1R5cGUpOwogCiAj
aWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlRleHRUcmFjayI7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcAppbmRleCA2MzY3NDRiYmMwZGQzZjAzZjllNGNkOTFi
OWVlNWZmMTExYWRhMzExLi44ZWFjNzUxY2Q3Y2E2ODk4MTlhYTA2YzJlM2FlZWYzNzliM2U1NDA5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCkBAIC01NCw5
ICs1NCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9J
TVBMKFRleHRUcmFja0N1ZSk7CiAKLWNvbnN0IEF0b21pY1N0cmluZyYgVGV4dFRyYWNrQ3VlOjpj
dWVTaGFkb3dQc2V1ZG9JZCgpCitjb25zdCBBdG9tU3RyaW5nJiBUZXh0VHJhY2tDdWU6OmN1ZVNo
YWRvd1BzZXVkb0lkKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWlj
U3RyaW5nPiBjdWUoImN1ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBjdWUoImN1ZSIsIEF0
b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gY3VlOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaAppbmRleCAyYjRkNDI0NzVjNWM2
Yjc4ZTVmYzY5MDM3MjRkZmI0NTIyYmJhMmZhLi5hZWRkYmQzZDc5MWZlOGMyNTI5MDlhOTZiMjYz
ZmUyMjg2YjczZjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRU
cmFja0N1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmgK
QEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3MgVGV4dFRyYWNrOwogY2xhc3MgVGV4dFRyYWNrQ3VlIDog
cHVibGljIFJlZkNvdW50ZWQ8VGV4dFRyYWNrQ3VlPiwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElu
bGluZURhdGEgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoVGV4dFRyYWNrQ3VlKTsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBjdWVTaGFkb3dQc2V1ZG9JZCgp
OworICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBjdWVTaGFkb3dQc2V1ZG9JZCgpOwogCiAg
ICAgVGV4dFRyYWNrKiB0cmFjaygpIGNvbnN0OwogICAgIHZvaWQgc2V0VHJhY2soVGV4dFRyYWNr
Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmNwcAppbmRleCA5
OWE5YjMyMjM1YjFhMGJhOGY0Mjg0NjcyMzdjYmNlODhhNDVjM2U5Li5iNjZmYWQ5YTU5NjczYWZk
NmIwYzYyN2QzM2QzODM3ODVjOGExNTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1RleHRUcmFja0xpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VGV4dFRyYWNrTGlzdC5jcHAKQEAgLTEzOCw3ICsxMzgsNyBAQCBUZXh0VHJhY2sqIFRleHRUcmFj
a0xpc3Q6Oml0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKLVRleHRUcmFjayogVGV4dFRyYWNrTGlzdDo6Z2V0VHJhY2tCeUlkKGNvbnN0IEF0b21pY1N0
cmluZyYgaWQpCitUZXh0VHJhY2sqIFRleHRUcmFja0xpc3Q6OmdldFRyYWNrQnlJZChjb25zdCBB
dG9tU3RyaW5nJiBpZCkKIHsKICAgICAvLyA0LjguMTAuMTIuNSBUZXh0IHRyYWNrIEFQSQogICAg
IC8vIFRoZSBnZXRUcmFja0J5SWQoaWQpIG1ldGhvZCBtdXN0IHJldHVybiB0aGUgZmlyc3QgVGV4
dFRyYWNrIGluIHRoZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0
VHJhY2tMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaApp
bmRleCAxZjczOTI3Yjg0YWEyYmMzNGU1NDRmYmM1ODU1YzY4MmUyZTIxZjE3Li41ZDAxNmQxM2Q3
OTY0MGMwZDQ5OWE2OGFmNTJjNzM0NjBlNGE5MDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1RleHRUcmFja0xpc3QuaApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBj
b250YWlucyhUcmFja0Jhc2UmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFRleHRUcmFjayogaXRl
bSh1bnNpZ25lZCBpbmRleCkgY29uc3Q7Ci0gICAgVGV4dFRyYWNrKiBnZXRUcmFja0J5SWQoY29u
c3QgQXRvbWljU3RyaW5nJik7CisgICAgVGV4dFRyYWNrKiBnZXRUcmFja0J5SWQoY29uc3QgQXRv
bVN0cmluZyYpOwogICAgIFRleHRUcmFjayogbGFzdEl0ZW0oKSBjb25zdCB7IHJldHVybiBpdGVt
KGxlbmd0aCgpIC0gMSk7IH0KIAogICAgIHZvaWQgYXBwZW5kKFJlZjxUZXh0VHJhY2s+JiYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2UuY3BwCmluZGV4IGZmNWY0MWFmYzMyMzcz
YWFiZmU1Yjg5ODZmZTA3OTExNDgzNTI5YmUuLjE4MTllOGRkZTgxZjdlNjk1ZWI5ZTdjOTg3NjI5
NjZkZGY2NTI0MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tC
YXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrQmFzZS5jcHAKQEAg
LTUyLDcgKzUyLDcgQEAgc3RhdGljIFJlZlB0cjxMb2dnZXI+JiBudWxsTG9nZ2VyKCkKIH0KICNl
bmRpZgogCi1UcmFja0Jhc2U6OlRyYWNrQmFzZShUeXBlIHR5cGUsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgaWQsIGNvbnN0IEF0b21pY1N0cmluZyYgbGFiZWwsIGNvbnN0IEF0b21pY1N0cmluZyYgbGFu
Z3VhZ2UpCitUcmFja0Jhc2U6OlRyYWNrQmFzZShUeXBlIHR5cGUsIGNvbnN0IEF0b21TdHJpbmcm
IGlkLCBjb25zdCBBdG9tU3RyaW5nJiBsYWJlbCwgY29uc3QgQXRvbVN0cmluZyYgbGFuZ3VhZ2Up
CiAgICAgOiBtX3VuaXF1ZUlkKCsrc191bmlxdWVJZCkKICAgICAsIG1faWQoaWQpCiAgICAgLCBt
X2xhYmVsKGxhYmVsKQpAQCAtMTQxLDcgKzE0MSw3IEBAIHN0YXRpYyBib29sIGlzVmFsaWRCQ1A0
N0xhbmd1YWdlVGFnKGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2VUYWcpCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAgICAgCi12b2lkIFRyYWNrQmFzZTo6c2V0TGFuZ3VhZ2UoY29uc3QgQXRvbWljU3RyaW5n
JiBsYW5ndWFnZSkKK3ZvaWQgVHJhY2tCYXNlOjpzZXRMYW5ndWFnZShjb25zdCBBdG9tU3RyaW5n
JiBsYW5ndWFnZSkKIHsKICAgICBpZiAoIWxhbmd1YWdlLmlzRW1wdHkoKSAmJiAhaXNWYWxpZEJD
UDQ3TGFuZ3VhZ2VUYWcobGFuZ3VhZ2UpKSB7CiAgICAgICAgIFN0cmluZyBtZXNzYWdlOwpAQCAt
MTYyLDcgKzE2Miw3IEBAIHZvaWQgVHJhY2tCYXNlOjpzZXRMYW5ndWFnZShjb25zdCBBdG9taWNT
dHJpbmcmIGxhbmd1YWdlKQogICAgIG1fbGFuZ3VhZ2UgPSBsYW5ndWFnZTsKIH0KIAotQXRvbWlj
U3RyaW5nIFRyYWNrQmFzZTo6dmFsaWRCQ1A0N0xhbmd1YWdlKCkgY29uc3QKK0F0b21TdHJpbmcg
VHJhY2tCYXNlOjp2YWxpZEJDUDQ3TGFuZ3VhZ2UoKSBjb25zdAogewogICAgIHJldHVybiBtX3Zh
bGlkQkNQNDdMYW5ndWFnZTsKIH0KQEAgLTE3NCwxNyArMTc0LDE3IEBAIFdURkxvZ0NoYW5uZWwm
IFRyYWNrQmFzZTo6bG9nQ2hhbm5lbCgpIGNvbnN0CiB9CiAjZW5kaWYKIAotTWVkaWFUcmFja0Jh
c2U6Ok1lZGlhVHJhY2tCYXNlKFR5cGUgdHlwZSwgY29uc3QgQXRvbWljU3RyaW5nJiBpZCwgY29u
c3QgQXRvbWljU3RyaW5nJiBsYWJlbCwgY29uc3QgQXRvbWljU3RyaW5nJiBsYW5ndWFnZSkKK01l
ZGlhVHJhY2tCYXNlOjpNZWRpYVRyYWNrQmFzZShUeXBlIHR5cGUsIGNvbnN0IEF0b21TdHJpbmcm
IGlkLCBjb25zdCBBdG9tU3RyaW5nJiBsYWJlbCwgY29uc3QgQXRvbVN0cmluZyYgbGFuZ3VhZ2Up
CiAgICAgOiBUcmFja0Jhc2UodHlwZSwgaWQsIGxhYmVsLCBsYW5ndWFnZSkKIHsKIH0KIAotdm9p
ZCBNZWRpYVRyYWNrQmFzZTo6c2V0S2luZChjb25zdCBBdG9taWNTdHJpbmcmIGtpbmQpCit2b2lk
IE1lZGlhVHJhY2tCYXNlOjpzZXRLaW5kKGNvbnN0IEF0b21TdHJpbmcmIGtpbmQpCiB7CiAgICAg
c2V0S2luZEludGVybmFsKGtpbmQpOwogfQogCi12b2lkIE1lZGlhVHJhY2tCYXNlOjpzZXRLaW5k
SW50ZXJuYWwoY29uc3QgQXRvbWljU3RyaW5nJiBraW5kKQordm9pZCBNZWRpYVRyYWNrQmFzZTo6
c2V0S2luZEludGVybmFsKGNvbnN0IEF0b21TdHJpbmcmIGtpbmQpCiB7CiAgICAgaWYgKGlzVmFs
aWRLaW5kKGtpbmQpKQogICAgICAgICBtX2tpbmQgPSBraW5kOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVHJhY2tCYXNlLmgKaW5kZXggMDE2OGM1MTkzNDQ5OGRlMjMyNDllOWZjM2NhYTczNzIxYmM1
MDY3MC4uMzIyNWU1NTJhZGFjYmQzMTRkNmEwZjg1ZjI5NjFmYzliZDU1NmRmYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1RyYWNrQmFzZS5oCkBAIC0yOCw3ICsyOCw3IEBACiAjaWYgRU5BQkxF
KFZJREVPX1RSQUNLKQogCiAjaW5jbHVkZSA8d3RmL0xvZ2dlckhlbHBlci5oPgotI2luY2x1ZGUg
PHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01MiwxNSArNTIsMTUgQEAgcHVibGljOgog
ICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCgpIHsgcmV0dXJuIG1fbWVkaWFFbGVt
ZW50OyB9CiAgICAgdmlydHVhbCBFbGVtZW50KiBlbGVtZW50KCk7CiAKLSAgICB2aXJ0dWFsIEF0
b21pY1N0cmluZyBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
c2V0SWQoY29uc3QgQXRvbWljU3RyaW5nJiBpZCkgeyBtX2lkID0gaWQ7IH0KKyAgICB2aXJ0dWFs
IEF0b21TdHJpbmcgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CisgICAgdmlydHVhbCB2b2lk
IHNldElkKGNvbnN0IEF0b21TdHJpbmcmIGlkKSB7IG1faWQgPSBpZDsgfQogCi0gICAgQXRvbWlj
U3RyaW5nIGxhYmVsKCkgY29uc3QgeyByZXR1cm4gbV9sYWJlbDsgfQotICAgIHZvaWQgc2V0TGFi
ZWwoY29uc3QgQXRvbWljU3RyaW5nJiBsYWJlbCkgeyBtX2xhYmVsID0gbGFiZWw7IH0KKyAgICBB
dG9tU3RyaW5nIGxhYmVsKCkgY29uc3QgeyByZXR1cm4gbV9sYWJlbDsgfQorICAgIHZvaWQgc2V0
TGFiZWwoY29uc3QgQXRvbVN0cmluZyYgbGFiZWwpIHsgbV9sYWJlbCA9IGxhYmVsOyB9CiAKLSAg
ICBBdG9taWNTdHJpbmcgdmFsaWRCQ1A0N0xhbmd1YWdlKCkgY29uc3Q7Ci0gICAgQXRvbWljU3Ry
aW5nIGxhbmd1YWdlKCkgY29uc3QgeyByZXR1cm4gbV9sYW5ndWFnZTsgfQotICAgIHZpcnR1YWwg
dm9pZCBzZXRMYW5ndWFnZShjb25zdCBBdG9taWNTdHJpbmcmKTsKKyAgICBBdG9tU3RyaW5nIHZh
bGlkQkNQNDdMYW5ndWFnZSgpIGNvbnN0OworICAgIEF0b21TdHJpbmcgbGFuZ3VhZ2UoKSBjb25z
dCB7IHJldHVybiBtX2xhbmd1YWdlOyB9CisgICAgdmlydHVhbCB2b2lkIHNldExhbmd1YWdlKGNv
bnN0IEF0b21TdHJpbmcmKTsKIAogICAgIHZpcnR1YWwgdm9pZCBjbGVhckNsaWVudCgpID0gMDsK
IApAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJvdGVjdGVkOgotICAgIFRy
YWNrQmFzZShUeXBlLCBjb25zdCBBdG9taWNTdHJpbmcmIGlkLCBjb25zdCBBdG9taWNTdHJpbmcm
IGxhYmVsLCBjb25zdCBBdG9taWNTdHJpbmcmIGxhbmd1YWdlKTsKKyAgICBUcmFja0Jhc2UoVHlw
ZSwgY29uc3QgQXRvbVN0cmluZyYgaWQsIGNvbnN0IEF0b21TdHJpbmcmIGxhYmVsLCBjb25zdCBB
dG9tU3RyaW5nJiBsYW5ndWFnZSk7CiAKICAgICBIVE1MTWVkaWFFbGVtZW50KiBtX21lZGlhRWxl
bWVudCB7IG51bGxwdHIgfTsKIApAQCAtOTEsMTAgKzkxLDEwIEBAIHByb3RlY3RlZDoKIHByaXZh
dGU6CiAgICAgVHlwZSBtX3R5cGU7CiAgICAgaW50IG1fdW5pcXVlSWQ7Ci0gICAgQXRvbWljU3Ry
aW5nIG1faWQ7Ci0gICAgQXRvbWljU3RyaW5nIG1fbGFiZWw7Ci0gICAgQXRvbWljU3RyaW5nIG1f
bGFuZ3VhZ2U7Ci0gICAgQXRvbWljU3RyaW5nIG1fdmFsaWRCQ1A0N0xhbmd1YWdlOworICAgIEF0
b21TdHJpbmcgbV9pZDsKKyAgICBBdG9tU3RyaW5nIG1fbGFiZWw7CisgICAgQXRvbVN0cmluZyBt
X2xhbmd1YWdlOworICAgIEF0b21TdHJpbmcgbV92YWxpZEJDUDQ3TGFuZ3VhZ2U7CiAjaWYgIVJF
TEVBU0VfTE9HX0RJU0FCTEVECiAgICAgUmVmUHRyPGNvbnN0IExvZ2dlcj4gbV9sb2dnZXI7CiAg
ICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOwpAQCAtMTAzLDE4ICsxMDMsMTggQEAgcHJp
dmF0ZToKIAogY2xhc3MgTWVkaWFUcmFja0Jhc2UgOiBwdWJsaWMgVHJhY2tCYXNlIHsKIHB1Ymxp
YzoKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGtpbmQoKSBjb25zdCB7IHJldHVybiBtX2tpbmQ7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0S2luZChjb25zdCBBdG9taWNTdHJpbmcmKTsKKyAgICBj
b25zdCBBdG9tU3RyaW5nJiBraW5kKCkgY29uc3QgeyByZXR1cm4gbV9raW5kOyB9CisgICAgdmly
dHVhbCB2b2lkIHNldEtpbmQoY29uc3QgQXRvbVN0cmluZyYpOwogCiBwcm90ZWN0ZWQ6Ci0gICAg
TWVkaWFUcmFja0Jhc2UoVHlwZSwgY29uc3QgQXRvbWljU3RyaW5nJiBpZCwgY29uc3QgQXRvbWlj
U3RyaW5nJiBsYWJlbCwgY29uc3QgQXRvbWljU3RyaW5nJiBsYW5ndWFnZSk7CisgICAgTWVkaWFU
cmFja0Jhc2UoVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaWQsIGNvbnN0IEF0b21TdHJpbmcmIGxh
YmVsLCBjb25zdCBBdG9tU3RyaW5nJiBsYW5ndWFnZSk7CiAKLSAgICB2b2lkIHNldEtpbmRJbnRl
cm5hbChjb25zdCBBdG9taWNTdHJpbmcmKTsKKyAgICB2b2lkIHNldEtpbmRJbnRlcm5hbChjb25z
dCBBdG9tU3RyaW5nJik7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBib29sIGlzVmFsaWRLaW5k
KGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNWYWxp
ZEtpbmQoY29uc3QgQXRvbVN0cmluZyYpIGNvbnN0ID0gMDsKIAotICAgIEF0b21pY1N0cmluZyBt
X2tpbmQ7CisgICAgQXRvbVN0cmluZyBtX2tpbmQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrRXZlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0V2ZW50LmNwcAppbmRleCBiOWE5MGRh
M2ZkNmZlMTI0YjVlNDA4NDEyMmE4ZTAzNjVhYmMxNTYxLi44NTAwMjRhYTIwNjBkODc3ZDk5NWFh
N2MwYWIyMWI2YzA0MWIwZDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1RyYWNrRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tFdmVu
dC5jcHAKQEAgLTQ4LDEzICs0OCwxMyBAQCBzdGF0aWMgaW5saW5lIE9wdGlvbmFsPFRyYWNrRXZl
bnQ6OlRyYWNrRXZlbnRUcmFjaz4gY29udmVydFRvVHJhY2tFdmVudFRyYWNrKFJlZgogICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CiB9CiAKLVRyYWNrRXZlbnQ6OlRyYWNrRXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlLCBDYW5CdWJibGUgY2FuQnViYmxlLCBJc0NhbmNlbGFibGUgY2FuY2Vs
YWJsZSwgUmVmPFRyYWNrQmFzZT4mJiB0cmFjaykKK1RyYWNrRXZlbnQ6OlRyYWNrRXZlbnQoY29u
c3QgQXRvbVN0cmluZyYgdHlwZSwgQ2FuQnViYmxlIGNhbkJ1YmJsZSwgSXNDYW5jZWxhYmxlIGNh
bmNlbGFibGUsIFJlZjxUcmFja0Jhc2U+JiYgdHJhY2spCiAgICAgOiBFdmVudCh0eXBlLCBjYW5C
dWJibGUsIGNhbmNlbGFibGUpCiAgICAgLCBtX3RyYWNrKGNvbnZlcnRUb1RyYWNrRXZlbnRUcmFj
ayhXVEZNb3ZlKHRyYWNrKSkpCiB7CiB9CiAKLVRyYWNrRXZlbnQ6OlRyYWNrRXZlbnQoY29uc3Qg
QXRvbWljU3RyaW5nJiB0eXBlLCBJbml0JiYgaW5pdGlhbGl6ZXIsIElzVHJ1c3RlZCBpc1RydXN0
ZWQpCitUcmFja0V2ZW50OjpUcmFja0V2ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIEluaXQm
JiBpbml0aWFsaXplciwgSXNUcnVzdGVkIGlzVHJ1c3RlZCkKICAgICA6IEV2ZW50KHR5cGUsIGlu
aXRpYWxpemVyLCBpc1RydXN0ZWQpCiAgICAgLCBtX3RyYWNrKFdURk1vdmUoaW5pdGlhbGl6ZXIu
dHJhY2spKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0V2
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrRXZlbnQuaAppbmRleCBhOGVj
NjhjNGQwMGMxZGY5MmQxMmQ5OTczZGRjZGZiNDgwYTFkMWNjLi5iNjQ3OTgyY2U0OTllMmJjZDAx
OWExZDRhNWNhODZhYjE2NTQxZDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1RyYWNrRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrRXZl
bnQuaApAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBUcmFja0V2ZW50IGZpbmFsIDogcHVibGljIEV2
ZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5UcmFja0V2ZW50KCk7CiAKLSAgICBzdGF0aWMg
UmVmPFRyYWNrRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIENhbkJ1YmJs
ZSBjYW5CdWJibGUsIElzQ2FuY2VsYWJsZSBjYW5jZWxhYmxlLCBSZWY8VHJhY2tCYXNlPiYmIHRy
YWNrKQorICAgIHN0YXRpYyBSZWY8VHJhY2tFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21TdHJpbmcm
IHR5cGUsIENhbkJ1YmJsZSBjYW5CdWJibGUsIElzQ2FuY2VsYWJsZSBjYW5jZWxhYmxlLCBSZWY8
VHJhY2tCYXNlPiYmIHRyYWNrKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
VHJhY2tFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIFdURk1vdmUodHJhY2spKSk7
CiAgICAgfQpAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgICAgIE9wdGlvbmFsPFRyYWNr
RXZlbnRUcmFjaz4gdHJhY2s7CiAgICAgfTsKIAotICAgIHN0YXRpYyBSZWY8VHJhY2tFdmVudD4g
Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgSW5pdCYmIGluaXRpYWxpemVyLCBJc1Ry
dXN0ZWQgaXNUcnVzdGVkID0gSXNUcnVzdGVkOjpObykKKyAgICBzdGF0aWMgUmVmPFRyYWNrRXZl
bnQ+IGNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBJbml0JiYgaW5pdGlhbGl6ZXIsIElz
VHJ1c3RlZCBpc1RydXN0ZWQgPSBJc1RydXN0ZWQ6Ok5vKQogICAgIHsKICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgVHJhY2tFdmVudCh0eXBlLCBXVEZNb3ZlKGluaXRpYWxpemVyKSwgaXNU
cnVzdGVkKSk7CiAgICAgfQpAQCAtNTcsOCArNTcsOCBAQCBwdWJsaWM6CiAgICAgT3B0aW9uYWw8
VHJhY2tFdmVudFRyYWNrPiB0cmFjaygpIGNvbnN0IHsgcmV0dXJuIG1fdHJhY2s7IH0KIAogcHJp
dmF0ZToKLSAgICBUcmFja0V2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgQ2FuQnViYmxl
LCBJc0NhbmNlbGFibGUsIFJlZjxUcmFja0Jhc2U+JiYpOwotICAgIFRyYWNrRXZlbnQoY29uc3Qg
QXRvbWljU3RyaW5nJiB0eXBlLCBJbml0JiYgaW5pdGlhbGl6ZXIsIElzVHJ1c3RlZCk7CisgICAg
VHJhY2tFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBDYW5CdWJibGUsIElzQ2FuY2VsYWJs
ZSwgUmVmPFRyYWNrQmFzZT4mJik7CisgICAgVHJhY2tFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0
eXBlLCBJbml0JiYgaW5pdGlhbGl6ZXIsIElzVHJ1c3RlZCk7CiAKICAgICBFdmVudEludGVyZmFj
ZSBldmVudEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9UcmFja0xpc3RCYXNlLmNwcAppbmRleCAwMDUyMjY1OGJkYmMxZTk0YTU4MTgxNGE1
ZGIwM2VjYzRkOGI4YjA3Li42ZDMxMThiZTc0MjkzOThjMDdhYWUwZjk1OWZlY2RjMTI2N2ZmZDAz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5jcHAKQEAgLTk2
LDcgKzk2LDcgQEAgYm9vbCBUcmFja0xpc3RCYXNlOjpjb250YWlucyhUcmFja0Jhc2UmIHRyYWNr
KSBjb25zdAogICAgIHJldHVybiBtX2luYmFuZFRyYWNrcy5maW5kKCZ0cmFjaykgIT0gbm90Rm91
bmQ7CiB9CiAKLXZvaWQgVHJhY2tMaXN0QmFzZTo6c2NoZWR1bGVUcmFja0V2ZW50KGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnROYW1lLCBSZWY8VHJhY2tCYXNlPiYmIHRyYWNrKQordm9pZCBUcmFj
a0xpc3RCYXNlOjpzY2hlZHVsZVRyYWNrRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgZXZlbnROYW1l
LCBSZWY8VHJhY2tCYXNlPiYmIHRyYWNrKQogewogICAgIG1fYXN5bmNFdmVudFF1ZXVlLmVucXVl
dWVFdmVudChUcmFja0V2ZW50OjpjcmVhdGUoZXZlbnROYW1lLCBFdmVudDo6Q2FuQnViYmxlOjpO
bywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8sIFdURk1vdmUodHJhY2spKSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5oCmluZGV4IGVkNDM0OTZlMWVhYTMxNGEy
MzAxODJhYzc2YzE1N2NmZWZkOTYwOWIuLjNjZGU4OGRjYzRhZmQ1NDA3YjA4YzY4YWQ5YzJmMTkz
Njg1OGEyMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tMaXN0
QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5oCkBA
IC03Myw3ICs3Myw3IEBAIHByb3RlY3RlZDoKICAgICBWZWN0b3I8UmVmUHRyPFRyYWNrQmFzZT4+
IG1faW5iYW5kVHJhY2tzOwogCiBwcml2YXRlOgotICAgIHZvaWQgc2NoZWR1bGVUcmFja0V2ZW50
KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lLCBSZWY8VHJhY2tCYXNlPiYmKTsKKyAgICB2
b2lkIHNjaGVkdWxlVHJhY2tFdmVudChjb25zdCBBdG9tU3RyaW5nJiBldmVudE5hbWUsIFJlZjxU
cmFja0Jhc2U+JiYpOwogCiAgICAgYm9vbCBjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9u
KCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24pIGZp
bmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuY3BwCmluZGV4IDEwZDVjYzA2MjVhOTA2
ZWU1OGE1MTkyNTgyMjYxYjBjZTExZjEyOTcuLmU4ZTIxODJmZjk4NDgyOGUwZTU5Mzc1N2VhYzk0
YzMxOTY0YzcwYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3Vl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5jcHAKQEAgLTI0Miw5
ICsyNDIsOSBAQCB2b2lkIFZUVEN1ZUJveDo6YXBwbHlDU1NQcm9wZXJ0aWVzKGNvbnN0IEludFNp
emUmIHZpZGVvU2l6ZSkKICAgICBjdWUtPmVsZW1lbnQoKS5zZXRJbmxpbmVTdHlsZVByb3BlcnR5
KENTU1Byb3BlcnR5T3ZlcmZsb3csIENTU1ZhbHVlVmlzaWJsZSk7CiB9CiAKLWNvbnN0IEF0b21p
Y1N0cmluZyYgVlRUQ3VlQm94Ojp2dHRDdWVCb3hTaGFkb3dQc2V1ZG9JZCgpCitjb25zdCBBdG9t
U3RyaW5nJiBWVFRDdWVCb3g6OnZ0dEN1ZUJveFNoYWRvd1BzZXVkb0lkKCkKIHsKLSAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiB0cmFja0Rpc3BsYXlCb3hTaGFk
b3dQc2V1ZG9JZCgiLXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLWRpc3BsYXkiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29u
c3QgQXRvbVN0cmluZz4gdHJhY2tEaXNwbGF5Qm94U2hhZG93UHNldWRvSWQoIi13ZWJraXQtbWVk
aWEtdGV4dC10cmFjay1kaXNwbGF5IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OwogICAgIHJldHVybiB0cmFja0Rpc3BsYXlCb3hTaGFkb3dQc2V1ZG9JZDsKIH0KIApAQCAtMjU1
LDkgKzI1NSw5IEBAIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBWVFRDdWVCb3g6OmNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjCiAKIC8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KIAotY29uc3QgQXRvbWljU3RyaW5nJiBWVFRDdWU6OmN1ZUJhY2tkcm9w
U2hhZG93UHNldWRvSWQoKQorY29uc3QgQXRvbVN0cmluZyYgVlRUQ3VlOjpjdWVCYWNrZHJvcFNo
YWRvd1BzZXVkb0lkKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWlj
U3RyaW5nPiBjdWVCYWNrZHJvcFNoYWRvd1BzZXVkb0lkKCItd2Via2l0LW1lZGlhLXRleHQtdHJh
Y2stZGlzcGxheS1iYWNrZHJvcCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBjdWVCYWNrZHJv
cFNoYWRvd1BzZXVkb0lkKCItd2Via2l0LW1lZGlhLXRleHQtdHJhY2stZGlzcGxheS1iYWNrZHJv
cCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gY3VlQmFj
a2Ryb3BTaGFkb3dQc2V1ZG9JZDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9WVFRDdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmgKaW5k
ZXggMmUzNzQ5NTlhNTJiYTVlYTdiYjlhMjE5MmJhODNlNzkwMWI4ZjE1ZS4uMWJmN2Y1NTNhMjY4
MDRhOGY4NWIwYjI1NTk4M2VjMjMzNzMyMmU3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9WVFRDdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1
ZS5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICBWVFRDdWUqIGdldEN1ZSgpIGNvbnN0
OwogICAgIHZpcnR1YWwgdm9pZCBhcHBseUNTU1Byb3BlcnRpZXMoY29uc3QgSW50U2l6ZSYgdmlk
ZW9TaXplKTsKIAotICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHZ0dEN1ZUJveFNoYWRv
d1BzZXVkb0lkKCk7CisgICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIHZ0dEN1ZUJveFNoYWRv
d1BzZXVkb0lkKCk7CiAgICAgdm9pZCBzZXRGb250U2l6ZUZyb21DYXB0aW9uVXNlclByZWZzKGlu
dCBmb250U2l6ZSkgeyBtX2ZvbnRTaXplRnJvbUNhcHRpb25Vc2VyUHJlZnMgPSBmb250U2l6ZTsg
fQogCiBwcm90ZWN0ZWQ6CkBAIC04OSw3ICs4OSw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBS
ZWY8VlRUQ3VlPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFdlYlZUVEN1
ZURhdGEmKTsKIAotICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGN1ZUJhY2tkcm9wU2hh
ZG93UHNldWRvSWQoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgY3VlQmFja2Ryb3BT
aGFkb3dQc2V1ZG9JZCgpOwogCiAgICAgdmlydHVhbCB+VlRUQ3VlKCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUUmVnaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVlRUUmVnaW9uLmNwcAppbmRleCA4ODViZjc5YTFjODhkOWY3NTI3YjczYzk5
YzRiYjExYmNhZDY4YzVhLi43NjA3MjQxNzgyOTZkZjAyNmY0MGJjZGE4MjdmNzhkNmFiNzUzYmFh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVFJlZ2lvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRSZWdpb24uY3BwCkBAIC0xMjQsMTggKzEy
NCwxOCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBWVFRSZWdpb246OnNldFZpZXdwb3J0QW5jaG9yWShk
b3VibGUgdmFsdWUpCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotc3RhdGljIGNvbnN0IEF0b21pY1N0
cmluZyYgdXBLZXl3b3JkKCkKK3N0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiB1cEtleXdvcmQoKQog
ewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IHVwS2V5d29y
ZCgidXAiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gdXBLZXl3b3JkKCJ1cCIsIEF0b21TdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gdXBLZXl3b3JkOwogfQogCi1j
b25zdCBBdG9taWNTdHJpbmcmIFZUVFJlZ2lvbjo6c2Nyb2xsKCkgY29uc3QKK2NvbnN0IEF0b21T
dHJpbmcmIFZUVFJlZ2lvbjo6c2Nyb2xsKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9zY3JvbGwg
PyB1cEtleXdvcmQoKSA6IGVtcHR5QXRvbSgpOwogfQogCi1FeGNlcHRpb25Pcjx2b2lkPiBWVFRS
ZWdpb246OnNldFNjcm9sbChjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQorRXhjZXB0aW9uT3I8
dm9pZD4gVlRUUmVnaW9uOjpzZXRTY3JvbGwoY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCiB7CiAg
ICAgaWYgKHZhbHVlLmlzRW1wdHkoKSkgewogICAgICAgICBtX3Njcm9sbCA9IGZhbHNlOwpAQCAt
MjYwLDIzICsyNjAsMjMgQEAgdm9pZCBWVFRSZWdpb246OnBhcnNlU2V0dGluZ1ZhbHVlKFJlZ2lv
blNldHRpbmcgc2V0dGluZywgVlRUU2Nhbm5lciYgaW5wdXQpCiAgICAgaW5wdXQuc2tpcFJ1bih2
YWx1ZVJ1bik7CiB9CiAKLWNvbnN0IEF0b21pY1N0cmluZyYgVlRUUmVnaW9uOjp0ZXh0VHJhY2tD
dWVDb250YWluZXJTY3JvbGxpbmdDbGFzcygpCitjb25zdCBBdG9tU3RyaW5nJiBWVFRSZWdpb246
OnRleHRUcmFja0N1ZUNvbnRhaW5lclNjcm9sbGluZ0NsYXNzKCkKIHsKLSAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiB0cmFja1JlZ2lvbkN1ZUNvbnRhaW5lclNj
cm9sbGluZ0NsYXNzKCJzY3JvbGxpbmciLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gdHJhY2tS
ZWdpb25DdWVDb250YWluZXJTY3JvbGxpbmdDbGFzcygic2Nyb2xsaW5nIiwgQXRvbVN0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogCiAgICAgcmV0dXJuIHRyYWNrUmVnaW9uQ3VlQ29udGFp
bmVyU2Nyb2xsaW5nQ2xhc3M7CiB9CiAKLWNvbnN0IEF0b21pY1N0cmluZyYgVlRUUmVnaW9uOjp0
ZXh0VHJhY2tDdWVDb250YWluZXJTaGFkb3dQc2V1ZG9JZCgpCitjb25zdCBBdG9tU3RyaW5nJiBW
VFRSZWdpb246OnRleHRUcmFja0N1ZUNvbnRhaW5lclNoYWRvd1BzZXVkb0lkKCkKIHsKLSAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiB0cmFja1JlZ2lvbkN1ZUNv
bnRhaW5lclBzZXVkb0lkKCItd2Via2l0LW1lZGlhLXRleHQtdHJhY2stcmVnaW9uLWNvbnRhaW5l
ciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB0cmFja1JlZ2lvbkN1ZUNvbnRhaW5lclBzZXVk
b0lkKCItd2Via2l0LW1lZGlhLXRleHQtdHJhY2stcmVnaW9uLWNvbnRhaW5lciIsIEF0b21TdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKIAogICAgIHJldHVybiB0cmFja1JlZ2lvbkN1ZUNv
bnRhaW5lclBzZXVkb0lkOwogfQogCi1jb25zdCBBdG9taWNTdHJpbmcmIFZUVFJlZ2lvbjo6dGV4
dFRyYWNrUmVnaW9uU2hhZG93UHNldWRvSWQoKQorY29uc3QgQXRvbVN0cmluZyYgVlRUUmVnaW9u
Ojp0ZXh0VHJhY2tSZWdpb25TaGFkb3dQc2V1ZG9JZCgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gdHJhY2tSZWdpb25TaGFkb3dQc2V1ZG9JZCgiLXdl
YmtpdC1tZWRpYS10ZXh0LXRyYWNrLXJlZ2lvbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB0
cmFja1JlZ2lvblNoYWRvd1BzZXVkb0lkKCItd2Via2l0LW1lZGlhLXRleHQtdHJhY2stcmVnaW9u
IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogCiAgICAgcmV0dXJuIHRyYWNr
UmVnaW9uU2hhZG93UHNldWRvSWQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1ZUVFJlZ2lvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRSZWdpb24u
aAppbmRleCA3N2E3YjAwZDMyMjUyNDEyZWRlMjExMTI2M2ZhNjE3MDkzN2Q1ODc4Li42ZmNjNGYz
MzkxM2UyNjRiODRjMmJmNmJjNGZmNmJmMmNjNzMyZWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1ZUVFJlZ2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVlRUUmVnaW9uLmgKQEAgLTc2LDggKzc2LDggQEAgcHVibGljOgogICAgIGRvdWJsZSB2aWV3
cG9ydEFuY2hvclkoKSBjb25zdCB7IHJldHVybiBtX3ZpZXdwb3J0QW5jaG9yLnkoKTsgfQogICAg
IEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFZpZXdwb3J0QW5jaG9yWShkb3VibGUpOwogCi0gICAgY29u
c3QgQXRvbWljU3RyaW5nJiBzY3JvbGwoKSBjb25zdDsKLSAgICBFeGNlcHRpb25Pcjx2b2lkPiBz
ZXRTY3JvbGwoY29uc3QgQXRvbWljU3RyaW5nJik7CisgICAgY29uc3QgQXRvbVN0cmluZyYgc2Ny
b2xsKCkgY29uc3Q7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0U2Nyb2xsKGNvbnN0IEF0b21T
dHJpbmcmKTsKIAogICAgIHZvaWQgdXBkYXRlUGFyYW1ldGVyc0Zyb21SZWdpb24oY29uc3QgVlRU
UmVnaW9uJik7CiAKQEAgLTExNiw5ICsxMTYsOSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBwYXJz
ZVNldHRpbmdWYWx1ZShSZWdpb25TZXR0aW5nLCBWVFRTY2FubmVyJik7CiAKLSAgICBzdGF0aWMg
Y29uc3QgQXRvbWljU3RyaW5nJiB0ZXh0VHJhY2tDdWVDb250YWluZXJTaGFkb3dQc2V1ZG9JZCgp
OwotICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHRleHRUcmFja0N1ZUNvbnRhaW5lclNj
cm9sbGluZ0NsYXNzKCk7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgdGV4dFRyYWNr
UmVnaW9uU2hhZG93UHNldWRvSWQoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgdGV4
dFRyYWNrQ3VlQ29udGFpbmVyU2hhZG93UHNldWRvSWQoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRv
bVN0cmluZyYgdGV4dFRyYWNrQ3VlQ29udGFpbmVyU2Nyb2xsaW5nQ2xhc3MoKTsKKyAgICBzdGF0
aWMgY29uc3QgQXRvbVN0cmluZyYgdGV4dFRyYWNrUmVnaW9uU2hhZG93UHNldWRvSWQoKTsKIAog
ICAgIFN0cmluZyBtX2lkOwogICAgIFN0cmluZyBtX3NldHRpbmdzOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svVmlkZW9UcmFjay5jcHAKaW5kZXggNzVjOTdlNmNlOTBiNjI4ZGMyMzY0N2QyMmE2
ZmZkOWZhOTg1MTJiMy4uNTExZWRkYjc1OWY3NTk1MTlkODZmNjBmMmMyNDYxNmM0NmM3YTI0YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suY3BwCkBAIC00NCwzOSArNDQs
MzkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jb25zdCBBdG9taWNTdHJpbmcmIFZpZGVv
VHJhY2s6OmFsdGVybmF0aXZlS2V5d29yZCgpCitjb25zdCBBdG9tU3RyaW5nJiBWaWRlb1RyYWNr
OjphbHRlcm5hdGl2ZUtleXdvcmQoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25z
dCBBdG9taWNTdHJpbmc+IGFsdGVybmF0aXZlKCJhbHRlcm5hdGl2ZSIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBB
dG9tU3RyaW5nPiBhbHRlcm5hdGl2ZSgiYWx0ZXJuYXRpdmUiLCBBdG9tU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIGFsdGVybmF0aXZlOwogfQogCi1jb25zdCBBdG9t
aWNTdHJpbmcmIFZpZGVvVHJhY2s6OmNhcHRpb25zS2V5d29yZCgpCitjb25zdCBBdG9tU3RyaW5n
JiBWaWRlb1RyYWNrOjpjYXB0aW9uc0tleXdvcmQoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGNhcHRpb25zKCJjYXB0aW9ucyIsIEF0b21pY1N0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25z
dCBBdG9tU3RyaW5nPiBjYXB0aW9ucygiY2FwdGlvbnMiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIGNhcHRpb25zOwogfQogCi1jb25zdCBBdG9taWNTdHJp
bmcmIFZpZGVvVHJhY2s6Om1haW5LZXl3b3JkKCkKK2NvbnN0IEF0b21TdHJpbmcmIFZpZGVvVHJh
Y2s6Om1haW5LZXl3b3JkKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRv
bWljU3RyaW5nPiBjYXB0aW9ucygibWFpbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBjYXB0
aW9ucygibWFpbiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1
cm4gY2FwdGlvbnM7CiB9CiAKLWNvbnN0IEF0b21pY1N0cmluZyYgVmlkZW9UcmFjazo6c2lnbktl
eXdvcmQoKQorY29uc3QgQXRvbVN0cmluZyYgVmlkZW9UcmFjazo6c2lnbktleXdvcmQoKQogewot
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IHNpZ24oInNpZ24i
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gc2lnbigic2lnbiIsIEF0b21TdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gc2lnbjsKIH0KIAotY29uc3QgQXRvbWljU3Ry
aW5nJiBWaWRlb1RyYWNrOjpzdWJ0aXRsZXNLZXl3b3JkKCkKK2NvbnN0IEF0b21TdHJpbmcmIFZp
ZGVvVHJhY2s6OnN1YnRpdGxlc0tleXdvcmQoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxjb25zdCBBdG9taWNTdHJpbmc+IHN1YnRpdGxlcygic3VidGl0bGVzIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0
IEF0b21TdHJpbmc+IHN1YnRpdGxlcygic3VidGl0bGVzIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBzdWJ0aXRsZXM7CiB9CiAKLWNvbnN0IEF0b21pY1N0
cmluZyYgVmlkZW9UcmFjazo6Y29tbWVudGFyeUtleXdvcmQoKQorY29uc3QgQXRvbVN0cmluZyYg
VmlkZW9UcmFjazo6Y29tbWVudGFyeUtleXdvcmQoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGNvbW1lbnRhcnkoImNvbW1lbnRhcnkiLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
Y29uc3QgQXRvbVN0cmluZz4gY29tbWVudGFyeSgiY29tbWVudGFyeSIsIEF0b21TdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gY29tbWVudGFyeTsKIH0KIApAQCAtMTE0
LDcgKzExNCw3IEBAIHZvaWQgVmlkZW9UcmFjazo6c2V0UHJpdmF0ZShWaWRlb1RyYWNrUHJpdmF0
ZSYgdHJhY2tQcml2YXRlKQogICAgIHVwZGF0ZUtpbmRGcm9tUHJpdmF0ZSgpOwogfQogCi1ib29s
IFZpZGVvVHJhY2s6OmlzVmFsaWRLaW5kKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpIGNvbnN0
Citib29sIFZpZGVvVHJhY2s6OmlzVmFsaWRLaW5kKGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKSBj
b25zdAogewogICAgIHJldHVybiB2YWx1ZSA9PSBhbHRlcm5hdGl2ZUtleXdvcmQoKQogICAgICAg
ICB8fCB2YWx1ZSA9PSBjb21tZW50YXJ5S2V5d29yZCgpCkBAIC0xNDYsMTcgKzE0NiwxNyBAQCB2
b2lkIFZpZGVvVHJhY2s6OnNlbGVjdGVkQ2hhbmdlZChib29sIHNlbGVjdGVkKQogICAgIHNldFNl
bGVjdGVkKHNlbGVjdGVkKTsKIH0KIAotdm9pZCBWaWRlb1RyYWNrOjppZENoYW5nZWQoY29uc3Qg
QXRvbWljU3RyaW5nJiBpZCkKK3ZvaWQgVmlkZW9UcmFjazo6aWRDaGFuZ2VkKGNvbnN0IEF0b21T
dHJpbmcmIGlkKQogewogICAgIHNldElkKGlkKTsKIH0KIAotdm9pZCBWaWRlb1RyYWNrOjpsYWJl
bENoYW5nZWQoY29uc3QgQXRvbWljU3RyaW5nJiBsYWJlbCkKK3ZvaWQgVmlkZW9UcmFjazo6bGFi
ZWxDaGFuZ2VkKGNvbnN0IEF0b21TdHJpbmcmIGxhYmVsKQogewogICAgIHNldExhYmVsKGxhYmVs
KTsKIH0KIAotdm9pZCBWaWRlb1RyYWNrOjpsYW5ndWFnZUNoYW5nZWQoY29uc3QgQXRvbWljU3Ry
aW5nJiBsYW5ndWFnZSkKK3ZvaWQgVmlkZW9UcmFjazo6bGFuZ3VhZ2VDaGFuZ2VkKGNvbnN0IEF0
b21TdHJpbmcmIGxhbmd1YWdlKQogewogICAgIHNldExhbmd1YWdlKGxhbmd1YWdlKTsKIH0KQEAg
LTE3MSw3ICsxNzEsNyBAQCB2b2lkIFZpZGVvVHJhY2s6OndpbGxSZW1vdmUoKQogCiAjaWYgRU5B
QkxFKE1FRElBX1NPVVJDRSkKIAotdm9pZCBWaWRlb1RyYWNrOjpzZXRLaW5kKGNvbnN0IEF0b21p
Y1N0cmluZyYga2luZCkKK3ZvaWQgVmlkZW9UcmFjazo6c2V0S2luZChjb25zdCBBdG9tU3RyaW5n
JiBraW5kKQogewogICAgIC8vIDEwLjEga2luZCwgb24gc2V0dGluZzoKICAgICAvLyAxLiBJZiB0
aGUgdmFsdWUgYmVpbmcgYXNzaWduZWQgdG8gdGhpcyBhdHRyaWJ1dGUgZG9lcyBub3QgbWF0Y2gg
b25lIG9mIHRoZSB2aWRlbyB0cmFjayBraW5kcywKQEAgLTE5Miw3ICsxOTIsNyBAQCB2b2lkIFZp
ZGVvVHJhY2s6OnNldEtpbmQoY29uc3QgQXRvbWljU3RyaW5nJiBraW5kKQogICAgIG1lZGlhRWxl
bWVudCgpLT5lbnN1cmVWaWRlb1RyYWNrcygpLnNjaGVkdWxlQ2hhbmdlRXZlbnQoKTsKIH0KIAot
dm9pZCBWaWRlb1RyYWNrOjpzZXRMYW5ndWFnZShjb25zdCBBdG9taWNTdHJpbmcmIGxhbmd1YWdl
KQordm9pZCBWaWRlb1RyYWNrOjpzZXRMYW5ndWFnZShjb25zdCBBdG9tU3RyaW5nJiBsYW5ndWFn
ZSkKIHsKICAgICAvLyAxMC4xIGxhbmd1YWdlLCBvbiBzZXR0aW5nOgogICAgIC8vIDEuIElmIHRo
ZSB2YWx1ZSBiZWluZyBhc3NpZ25lZCB0byB0aGlzIGF0dHJpYnV0ZSBpcyBub3QgYW4gZW1wdHkg
c3RyaW5nIG9yIGEgQkNQIDQ3IGxhbmd1YWdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1ZpZGVvVHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9U
cmFjay5oCmluZGV4IGViYWIwMjRhNGNhOTEyNjU2YjlhYjVhYTc3ZWEwYWYwMzgwYmYzNzguLjVl
ZmY0M2I2Yjg5YTNhYTRlM2RlOWM3ZGQ1ODI3ZjZmYjU5YjM4OWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svVmlkZW9UcmFjay5oCkBAIC01MCwxMiArNTAsMTIgQEAgcHVibGljOgogICAgIH0K
ICAgICB2aXJ0dWFsIH5WaWRlb1RyYWNrKCk7CiAKLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3Ry
aW5nJiBhbHRlcm5hdGl2ZUtleXdvcmQoKTsKLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5n
JiBjYXB0aW9uc0tleXdvcmQoKTsKLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBtYWlu
S2V5d29yZCgpOwotICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHNpZ25LZXl3b3JkKCk7
Ci0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgc3VidGl0bGVzS2V5d29yZCgpOwotICAg
IHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGNvbW1lbnRhcnlLZXl3b3JkKCk7CisgICAgc3Rh
dGljIGNvbnN0IEF0b21TdHJpbmcmIGFsdGVybmF0aXZlS2V5d29yZCgpOworICAgIHN0YXRpYyBj
b25zdCBBdG9tU3RyaW5nJiBjYXB0aW9uc0tleXdvcmQoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRv
bVN0cmluZyYgbWFpbktleXdvcmQoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgc2ln
bktleXdvcmQoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgc3VidGl0bGVzS2V5d29y
ZCgpOworICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBjb21tZW50YXJ5S2V5d29yZCgpOwog
CiAgICAgYm9vbCBzZWxlY3RlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0ZWQ7IH0KICAgICB2
aXJ0dWFsIHZvaWQgc2V0U2VsZWN0ZWQoY29uc3QgYm9vbCk7CkBAIC02Niw4ICs2Niw4IEBAIHB1
YmxpYzoKICAgICBzaXplX3QgaW5iYW5kVHJhY2tJbmRleCgpOwogCiAjaWYgRU5BQkxFKE1FRElB
X1NPVVJDRSkKLSAgICB2b2lkIHNldEtpbmQoY29uc3QgQXRvbWljU3RyaW5nJikgZmluYWw7Ci0g
ICAgdm9pZCBzZXRMYW5ndWFnZShjb25zdCBBdG9taWNTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lk
IHNldEtpbmQoY29uc3QgQXRvbVN0cmluZyYpIGZpbmFsOworICAgIHZvaWQgc2V0TGFuZ3VhZ2Uo
Y29uc3QgQXRvbVN0cmluZyYpIGZpbmFsOwogI2VuZGlmCiAKICAgICBjb25zdCBNZWRpYURlc2Ny
aXB0aW9uJiBkZXNjcmlwdGlvbigpIGNvbnN0OwpAQCAtNzgsMTUgKzc4LDE1IEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgVmlkZW9UcmFjayhWaWRlb1RyYWNrQ2xpZW50JiwgVmlkZW9UcmFja1By
aXZhdGUmKTsKIAotICAgIGJvb2wgaXNWYWxpZEtpbmQoY29uc3QgQXRvbWljU3RyaW5nJikgY29u
c3QgZmluYWw7CisgICAgYm9vbCBpc1ZhbGlkS2luZChjb25zdCBBdG9tU3RyaW5nJikgY29uc3Qg
ZmluYWw7CiAKICAgICAvLyBWaWRlb1RyYWNrUHJpdmF0ZUNsaWVudAogICAgIHZvaWQgc2VsZWN0
ZWRDaGFuZ2VkKGJvb2wpIGZpbmFsOwogCiAgICAgLy8gVHJhY2tQcml2YXRlQmFzZUNsaWVudAot
ICAgIHZvaWQgaWRDaGFuZ2VkKGNvbnN0IEF0b21pY1N0cmluZyYpIGZpbmFsOwotICAgIHZvaWQg
bGFiZWxDaGFuZ2VkKGNvbnN0IEF0b21pY1N0cmluZyYpIGZpbmFsOwotICAgIHZvaWQgbGFuZ3Vh
Z2VDaGFuZ2VkKGNvbnN0IEF0b21pY1N0cmluZyYpIGZpbmFsOworICAgIHZvaWQgaWRDaGFuZ2Vk
KGNvbnN0IEF0b21TdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIGxhYmVsQ2hhbmdlZChjb25zdCBB
dG9tU3RyaW5nJikgZmluYWw7CisgICAgdm9pZCBsYW5ndWFnZUNoYW5nZWQoY29uc3QgQXRvbVN0
cmluZyYpIGZpbmFsOwogICAgIHZvaWQgd2lsbFJlbW92ZSgpIGZpbmFsOwogCiAgICAgYm9vbCBl
bmFibGVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gc2VsZWN0ZWQoKTsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmNwcAppbmRleCA0ZDhiMzI1NTNmN2FlNjZi
N2JjZjNkNzJjNGUxYmVkNzkyMzYxMjVjLi43ODgxM2IzY2ZmYzUzYWRiNmJlNjdiZTFmZWNiNDNj
NjI3ZDE4OTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJh
Y2tMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0
LmNwcApAQCAtNjUsNyArNjUsNyBAQCBWaWRlb1RyYWNrKiBWaWRlb1RyYWNrTGlzdDo6aXRlbSh1
bnNpZ25lZCBpbmRleCkgY29uc3QKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotVmlkZW9UcmFj
ayogVmlkZW9UcmFja0xpc3Q6OmdldFRyYWNrQnlJZChjb25zdCBBdG9taWNTdHJpbmcmIGlkKSBj
b25zdAorVmlkZW9UcmFjayogVmlkZW9UcmFja0xpc3Q6OmdldFRyYWNrQnlJZChjb25zdCBBdG9t
U3RyaW5nJiBpZCkgY29uc3QKIHsKICAgICBmb3IgKGF1dG8mIGluYmFuZFRyYWNrcyA6IG1faW5i
YW5kVHJhY2tzKSB7CiAgICAgICAgIGF1dG8mIHRyYWNrID0gZG93bmNhc3Q8VmlkZW9UcmFjaz4o
KmluYmFuZFRyYWNrcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1Zp
ZGVvVHJhY2tMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0
LmgKaW5kZXggY2I2YTljZjA4MjAwMzZmOTBlZjlhNTM0ZTFmOGE2NzljYjQ4NmYxYS4uNDY3YzZi
ZDI0NTI5Y2JhNDEyYjMwN2NlZDA3OTQ3OGJmNzI0Nzk3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAg
fQogICAgIHZpcnR1YWwgflZpZGVvVHJhY2tMaXN0KCk7CiAKLSAgICBWaWRlb1RyYWNrKiBnZXRU
cmFja0J5SWQoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3Q7CisgICAgVmlkZW9UcmFjayogZ2V0
VHJhY2tCeUlkKGNvbnN0IEF0b21TdHJpbmcmKSBjb25zdDsKICAgICBpbnQgc2VsZWN0ZWRJbmRl
eCgpIGNvbnN0OwogCiAgICAgVmlkZW9UcmFjayogaXRlbSh1bnNpZ25lZCkgY29uc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5oCmluZGV4IDY0MTM1ZTJhYzE1NDFj
MzcyNjBlYzA2ZDJlYzVkZjE2ZmViZWM5ZjQuLjI4NDcxZDZhZDcyYzhjOTY0MDI1NzZiYTc1MTY0
YjIxZDVmZWIwNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRU
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5o
CkBAIC01OCw4ICs1OCw4IEBAIHB1YmxpYzoKICAgICBib29sIGlzUGFzdE5vZGUoKSBjb25zdCB7
IHJldHVybiBtX2lzUGFzdE5vZGU7IH0KICAgICB2b2lkIHNldElzUGFzdE5vZGUoYm9vbCB2YWx1
ZSkgeyBtX2lzUGFzdE5vZGUgPSB2YWx1ZTsgfQogCi0gICAgQXRvbWljU3RyaW5nIGxhbmd1YWdl
KCkgY29uc3QgeyByZXR1cm4gbV9sYW5ndWFnZTsgfQotICAgIHZvaWQgc2V0TGFuZ3VhZ2UoY29u
c3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkgeyBtX2xhbmd1YWdlID0gdmFsdWU7IH0KKyAgICBBdG9t
U3RyaW5nIGxhbmd1YWdlKCkgY29uc3QgeyByZXR1cm4gbV9sYW5ndWFnZTsgfQorICAgIHZvaWQg
c2V0TGFuZ3VhZ2UoY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpIHsgbV9sYW5ndWFnZSA9IHZhbHVl
OyB9CiAKICAgICBzdGF0aWMgY29uc3QgUXVhbGlmaWVkTmFtZSYgdm9pY2VBdHRyaWJ1dGVOYW1l
KCkKICAgICB7CkBAIC04MSw3ICs4MSw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9pc1Bh
c3ROb2RlIDogMTsKICAgICB1bnNpZ25lZCBtX3dlYlZUVE5vZGVUeXBlIDogNDsKICAgICAKLSAg
ICBBdG9taWNTdHJpbmcgbV9sYW5ndWFnZTsKKyAgICBBdG9tU3RyaW5nIG1fbGFuZ3VhZ2U7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dl
YlZUVFBhcnNlci5jcHAKaW5kZXggMTk3NjJhMTYwZTc2MmZmMjk3OThiZDViNzlhOGY3ZmU1ZjYz
ODY3Mi4uYzJmODgwNjE1ZDlkMGRiYWViMGY1MzNlZTE5YjIzZDBkMTI1ZWE3YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcApAQCAtNTAxLDcgKzUwMSw3IEBA
IHByaXZhdGU6CiAKICAgICBXZWJWVFRUb2tlbiBtX3Rva2VuOwogICAgIFJlZlB0cjxDb250YWlu
ZXJOb2RlPiBtX2N1cnJlbnROb2RlOwotICAgIFZlY3RvcjxBdG9taWNTdHJpbmc+IG1fbGFuZ3Vh
Z2VTdGFjazsKKyAgICBWZWN0b3I8QXRvbVN0cmluZz4gbV9sYW5ndWFnZVN0YWNrOwogICAgIERv
Y3VtZW50JiBtX2RvY3VtZW50OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9XZWJWVFRQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRU
UGFyc2VyLmgKaW5kZXggY2ZjNTcxN2ZkMmJkNTI5ZWE1NGRjOGM4YTlmOGRjNjUyYmE5ZDQ1YS4u
ZDFhNDQxZDExNGQ3MjI4OTkzODMyNmQ5MjRmNzUyYzJlYWNiMjRiNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5oCkBAIC0xMTMsNyArMTEzLDcgQEAgcHVibGljOgog
CiAgICAgV2ViVlRUUGFyc2VyKFdlYlZUVFBhcnNlckNsaWVudCosIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqKTsKIAotICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1JlY29nbml6ZWRUYWcoY29uc3Qg
QXRvbWljU3RyaW5nJiB0YWdOYW1lKQorICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1JlY29nbml6
ZWRUYWcoY29uc3QgQXRvbVN0cmluZyYgdGFnTmFtZSkKICAgICB7CiAgICAgICAgIHJldHVybiB0
YWdOYW1lID09IGlUYWcKICAgICAgICAgICAgIHx8IHRhZ05hbWUgPT0gYlRhZwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRUb2tlbi5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9XZWJWVFRUb2tlbi5oCmluZGV4IDk2MDA5NDVlYTYxYjdkZjljMDdmNmNj
YjEzZmExNmNlNThmYzU0OTIuLjczZWFjYmFiYmM0YjI2NjA2Zjg3MzY2NzlmYmI1ZTI1YWUyNTc0
ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUVG9rZW4uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFRva2VuLmgKQEAgLTU4LDcgKzU4
LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gV2ViVlRUVG9rZW4oVHlwZTo6Q2hhcmFjdGVy
LCBjaGFyYWN0ZXJEYXRhKTsKICAgICB9CiAKLSAgICBzdGF0aWMgV2ViVlRUVG9rZW4gU3RhcnRU
YWcoY29uc3QgU3RyaW5nJiB0YWdOYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIGNsYXNzZXMgPSBl
bXB0eUF0b20oKSwgY29uc3QgQXRvbWljU3RyaW5nJiBhbm5vdGF0aW9uID0gZW1wdHlBdG9tKCkp
CisgICAgc3RhdGljIFdlYlZUVFRva2VuIFN0YXJ0VGFnKGNvbnN0IFN0cmluZyYgdGFnTmFtZSwg
Y29uc3QgQXRvbVN0cmluZyYgY2xhc3NlcyA9IGVtcHR5QXRvbSgpLCBjb25zdCBBdG9tU3RyaW5n
JiBhbm5vdGF0aW9uID0gZW1wdHlBdG9tKCkpCiAgICAgewogICAgICAgICBXZWJWVFRUb2tlbiB0
b2tlbihUeXBlOjpTdGFydFRhZywgdGFnTmFtZSk7CiAgICAgICAgIHRva2VuLm1fY2xhc3NlcyA9
IGNsYXNzZXM7CkBAIC03OSw4ICs3OSw4IEBAIHB1YmxpYzoKICAgICBUeXBlOjpUeXBlIHR5cGUo
KSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KICAgICBjb25zdCBTdHJpbmcmIG5hbWUoKSBjb25z
dCB7IHJldHVybiBtX2RhdGE7IH0KICAgICBjb25zdCBTdHJpbmcmIGNoYXJhY3RlcnMoKSBjb25z
dCB7IHJldHVybiBtX2RhdGE7IH0KLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGNsYXNzZXMoKSBj
b25zdCB7IHJldHVybiBtX2NsYXNzZXM7IH0KLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGFubm90
YXRpb24oKSBjb25zdCB7IHJldHVybiBtX2Fubm90YXRpb247IH0KKyAgICBjb25zdCBBdG9tU3Ry
aW5nJiBjbGFzc2VzKCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc2VzOyB9CisgICAgY29uc3QgQXRv
bVN0cmluZyYgYW5ub3RhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYW5ub3RhdGlvbjsgfQogCiBw
cml2YXRlOgogICAgIFdlYlZUVFRva2VuKFR5cGU6OlR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBk
YXRhKQpAQCAtODksOCArODksOCBAQCBwcml2YXRlOgogCiAgICAgVHlwZTo6VHlwZSBtX3R5cGU7
CiAgICAgU3RyaW5nIG1fZGF0YTsKLSAgICBBdG9taWNTdHJpbmcgbV9hbm5vdGF0aW9uOwotICAg
IEF0b21pY1N0cmluZyBtX2NsYXNzZXM7CisgICAgQXRvbVN0cmluZyBtX2Fubm90YXRpb247Cisg
ICAgQXRvbVN0cmluZyBtX2NsYXNzZXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFRva2VuaXplci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFRva2VuaXplci5jcHAKaW5kZXggMDI0
YzA0YTA5NmM4YTMzMTcwMjc1MWU3ZWQxZjNjM2M3N2Q4MDFjZS4uZjIwMGNiYWJlOTQ3MTM2OTI2
YmVhNjhjMDVhMWQyNDMyYTEwODZmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9XZWJWVFRUb2tlbml6ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
V2ViVlRUVG9rZW5pemVyLmNwcApAQCAtMjAyLDcgKzIwMiw3IEBAIFN0YXJ0VGFnQ2xhc3NTdGF0
ZToKICAgICB9IGVsc2UgaWYgKGNoYXJhY3RlciA9PSAnPicgfHwgY2hhcmFjdGVyID09IGtFbmRP
ZkZpbGVNYXJrZXIpIHsKICAgICAgICAgYWRkTmV3Q2xhc3MoY2xhc3NlcywgYnVmZmVyKTsKICAg
ICAgICAgYnVmZmVyLmNsZWFyKCk7Ci0gICAgICAgIHJldHVybiBhZHZhbmNlQW5kRW1pdFRva2Vu
KG1faW5wdXQsIHRva2VuLCBXZWJWVFRUb2tlbjo6U3RhcnRUYWcocmVzdWx0LnRvU3RyaW5nKCks
IGNsYXNzZXMudG9BdG9taWNTdHJpbmcoKSkpOworICAgICAgICByZXR1cm4gYWR2YW5jZUFuZEVt
aXRUb2tlbihtX2lucHV0LCB0b2tlbiwgV2ViVlRUVG9rZW46OlN0YXJ0VGFnKHJlc3VsdC50b1N0
cmluZygpLCBjbGFzc2VzLnRvQXRvbVN0cmluZygpKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAg
YnVmZmVyLmFwcGVuZChjaGFyYWN0ZXIpOwogICAgICAgICBXRUJWVFRfQURWQU5DRV9UTyhTdGFy
dFRhZ0NsYXNzU3RhdGUpOwpAQCAtMjEwLDcgKzIxMCw3IEBAIFN0YXJ0VGFnQ2xhc3NTdGF0ZToK
IAogU3RhcnRUYWdBbm5vdGF0aW9uU3RhdGU6CiAgICAgaWYgKGNoYXJhY3RlciA9PSAnPicgfHwg
Y2hhcmFjdGVyID09IGtFbmRPZkZpbGVNYXJrZXIpCi0gICAgICAgIHJldHVybiBhZHZhbmNlQW5k
RW1pdFRva2VuKG1faW5wdXQsIHRva2VuLCBXZWJWVFRUb2tlbjo6U3RhcnRUYWcocmVzdWx0LnRv
U3RyaW5nKCksIGNsYXNzZXMudG9BdG9taWNTdHJpbmcoKSwgYnVmZmVyLnRvQXRvbWljU3RyaW5n
KCkpKTsKKyAgICAgICAgcmV0dXJuIGFkdmFuY2VBbmRFbWl0VG9rZW4obV9pbnB1dCwgdG9rZW4s
IFdlYlZUVFRva2VuOjpTdGFydFRhZyhyZXN1bHQudG9TdHJpbmcoKSwgY2xhc3Nlcy50b0F0b21T
dHJpbmcoKSwgYnVmZmVyLnRvQXRvbVN0cmluZygpKSk7CiAgICAgYnVmZmVyLmFwcGVuZChjaGFy
YWN0ZXIpOwogICAgIFdFQlZUVF9BRFZBTkNFX1RPKFN0YXJ0VGFnQW5ub3RhdGlvblN0YXRlKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTUVkaXRvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NRWRpdG9yLmNwcAppbmRleCA0NTE2NjgwNDFjMDM5
ODEyYzc2NzA1ZGMzYjIxYzBjNTUxYTZiMDQ2Li42YzMxZTQ5OGU0MzRkMzAwYjBmMWM2ZWFiODQz
NDY3NzZjZjBhMmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NRWRp
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NRWRpdG9yLmNwcApAQCAt
MTU5LDcgKzE1OSw3IEBAIHByaXZhdGU6CiBjbGFzcyBET01FZGl0b3I6OlNldEF0dHJpYnV0ZUFj
dGlvbiBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JIaXN0b3J5OjpBY3Rpb24gewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKFNldEF0dHJpYnV0ZUFjdGlvbik7CiBwdWJsaWM6Ci0gICAgU2V0QXR0
cmlidXRlQWN0aW9uKEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwg
Y29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKKyAgICBTZXRBdHRyaWJ1dGVBY3Rpb24oRWxlbWVu
dCYgZWxlbWVudCwgY29uc3QgQXRvbVN0cmluZyYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYgdmFs
dWUpCiAgICAgICAgIDogSW5zcGVjdG9ySGlzdG9yeTo6QWN0aW9uKCkKICAgICAgICAgLCBtX2Vs
ZW1lbnQoZWxlbWVudCkKICAgICAgICAgLCBtX25hbWUobmFtZSkKQEAgLTE4OSw5ICsxODksOSBA
QCBwcml2YXRlOgogICAgIH0KIAogICAgIFJlZjxFbGVtZW50PiBtX2VsZW1lbnQ7Ci0gICAgQXRv
bWljU3RyaW5nIG1fbmFtZTsKLSAgICBBdG9taWNTdHJpbmcgbV92YWx1ZTsKLSAgICBBdG9taWNT
dHJpbmcgbV9vbGRWYWx1ZTsKKyAgICBBdG9tU3RyaW5nIG1fbmFtZTsKKyAgICBBdG9tU3RyaW5n
IG1fdmFsdWU7CisgICAgQXRvbVN0cmluZyBtX29sZFZhbHVlOwogfTsKIAogY2xhc3MgRE9NRWRp
dG9yOjpTZXRPdXRlckhUTUxBY3Rpb24gZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9ySGlzdG9yeTo6
QWN0aW9uIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JB
dWRpdERPTU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVk
aXRET01PYmplY3QuY3BwCmluZGV4IDkyMzI4N2QzZDJmYzE0YTdjNjQ1OTA2MzZmZjRmMTMwNTU3
NGViNDIuLmYxZGZhNDBiOTlkYWNlNDY0M2UxYTgyNTI5Mjg2NzcxN2Y2OGVkYTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBdWRpdERPTU9iamVjdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0RE9NT2JqZWN0LmNw
cApAQCAtMjgsNyArMjgsNyBAQAogI2luY2x1ZGUgIkluc3BlY3RvckF1ZGl0RE9NT2JqZWN0Lmgi
CiAKICNpbmNsdWRlICJOb2RlLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00OSwxMyArNDksMTMgQEAgRXhj
ZXB0aW9uT3I8Ym9vbD4gSW5zcGVjdG9yQXVkaXRET01PYmplY3Q6Omhhc0V2ZW50TGlzdGVuZXJz
KE5vZGUmIG5vZGUsIGNvbnN0IFMKICAgICBFUlJPUl9JRl9OT19BQ1RJVkVfQVVESVQoKTsKIAog
ICAgIGlmIChFdmVudFRhcmdldERhdGEqIGV2ZW50VGFyZ2V0RGF0YSA9IG5vZGUuZXZlbnRUYXJn
ZXREYXRhKCkpIHsKLSAgICAgICAgVmVjdG9yPEF0b21pY1N0cmluZz4gZXZlbnRUeXBlczsKKyAg
ICAgICAgVmVjdG9yPEF0b21TdHJpbmc+IGV2ZW50VHlwZXM7CiAgICAgICAgIGlmICh0eXBlLmlz
TnVsbCgpKQogICAgICAgICAgICAgZXZlbnRUeXBlcyA9IGV2ZW50VGFyZ2V0RGF0YS0+ZXZlbnRM
aXN0ZW5lck1hcC5ldmVudFR5cGVzKCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGV2ZW50
VHlwZXMuYXBwZW5kKHR5cGUpOwogCi0gICAgICAgIGZvciAoQXRvbWljU3RyaW5nJiB0eXBlIDog
ZXZlbnRUeXBlcykgeworICAgICAgICBmb3IgKEF0b21TdHJpbmcmIHR5cGUgOiBldmVudFR5cGVz
KSB7CiAgICAgICAgICAgICBmb3IgKGNvbnN0IFJlZlB0cjxSZWdpc3RlcmVkRXZlbnRMaXN0ZW5l
cj4mIGxpc3RlbmVyIDogbm9kZS5ldmVudExpc3RlbmVycyh0eXBlKSkgewogICAgICAgICAgICAg
ICAgIGlmIChsaXN0ZW5lci0+Y2FsbGJhY2soKS50eXBlKCkgPT0gRXZlbnRMaXN0ZW5lcjo6SlNF
dmVudExpc3RlbmVyVHlwZSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
Y3BwCmluZGV4IGZiNzVkMTljOGI2OTgxYzZjMTAxMDBiZGRkNjNmMmEwMWI5YzUxNWIuLjliMWQy
ZmNmM2RiYzIxZjJlMTY1N2E5NDY2OTdhYzk2NzE2ZTJjMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCkBAIC0xNjks
NyArMTY5LDcgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlbW92ZURPTU5v
ZGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW0KICAgICAgICAgZG9tQWdlbnQtPmRp
ZFJlbW92ZURPTU5vZGUobm9kZSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojp3aWxsTW9kaWZ5RE9NQXR0ckltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGlu
Z0FnZW50cywgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1ZSwg
Y29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjp3aWxsTW9kaWZ5RE9NQXR0ckltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVu
dGluZ0FnZW50cywgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgQXRvbVN0cmluZyYgb2xkVmFsdWUs
IGNvbnN0IEF0b21TdHJpbmcmIG5ld1ZhbHVlKQogewogICAgIGlmIChJbnNwZWN0b3JET01EZWJ1
Z2dlckFnZW50KiBkb21EZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0
b3JET01EZWJ1Z2dlckFnZW50KCkpCiAgICAgICAgIGRvbURlYnVnZ2VyQWdlbnQtPndpbGxNb2Rp
ZnlET01BdHRyKGVsZW1lbnQpOwpAQCAtMTc3LDEzICsxNzcsMTMgQEAgdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OndpbGxNb2RpZnlET01BdHRySW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
JiBpbnN0cnUKICAgICAgICAgZG9tQWdlbnQtPndpbGxNb2RpZnlET01BdHRyKGVsZW1lbnQsIG9s
ZFZhbHVlLCBuZXdWYWx1ZSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRNb2RpZnlET01BdHRySW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdl
bnRzLCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IEF0
b21pY1N0cmluZyYgdmFsdWUpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTW9k
aWZ5RE9NQXR0ckltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywg
RWxlbWVudCYgZWxlbWVudCwgY29uc3QgQXRvbVN0cmluZyYgbmFtZSwgY29uc3QgQXRvbVN0cmlu
ZyYgdmFsdWUpCiB7CiAgICAgaWYgKEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCA9IGluc3Ry
dW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NQWdlbnQoKSkKICAgICAgICAgZG9tQWdlbnQtPmRp
ZE1vZGlmeURPTUF0dHIoZWxlbWVudCwgbmFtZSwgdmFsdWUpOwogfQogCi12b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkUmVtb3ZlRE9NQXR0ckltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlbW92ZURPTUF0
dHJJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIEVsZW1lbnQm
IGVsZW1lbnQsIGNvbnN0IEF0b21TdHJpbmcmIG5hbWUpCiB7CiAgICAgaWYgKEluc3BlY3RvckRP
TUFnZW50KiBkb21BZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NQWdlbnQo
KSkKICAgICAgICAgZG9tQWdlbnQtPmRpZFJlbW92ZURPTUF0dHIoZWxlbWVudCwgbmFtZSk7CkBA
IC0zMjgsNyArMzI4LDcgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlbW92
ZVRpbWVySW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW4KICAgICAgICAgdGltZWxp
bmVBZ2VudC0+ZGlkUmVtb3ZlVGltZXIodGltZXJJZCwgZnJhbWVGb3JTY3JpcHRFeGVjdXRpb25D
b250ZXh0KGNvbnRleHQpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZEFkZEV2ZW50TGlzdGVuZXJJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdB
Z2VudHMsIEV2ZW50VGFyZ2V0JiB0YXJnZXQsIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBl
LCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lciwgYm9vbCBjYXB0dXJlKQordm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZEFkZEV2ZW50TGlzdGVuZXJJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIEV2ZW50VGFyZ2V0JiB0YXJnZXQsIGNvbnN0IEF0b21T
dHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIsIGJvb2wgY2FwdHVyZSkK
IHsKICAgICBpZiAoUGFnZURlYnVnZ2VyQWdlbnQqIHBhZ2VEZWJ1Z2dlckFnZW50ID0gaW5zdHJ1
bWVudGluZ0FnZW50cy5wYWdlRGVidWdnZXJBZ2VudCgpKQogICAgICAgICBwYWdlRGVidWdnZXJB
Z2VudC0+ZGlkQWRkRXZlbnRMaXN0ZW5lcih0YXJnZXQsIGV2ZW50VHlwZSwgbGlzdGVuZXIsIGNh
cHR1cmUpOwpAQCAtMzM2LDcgKzMzNiw3IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRBZGRFdmVudExpc3RlbmVySW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0CiAgICAg
ICAgIGRvbUFnZW50LT5kaWRBZGRFdmVudExpc3RlbmVyKHRhcmdldCk7CiB9CiAKLXZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVtb3ZlRXZlbnRMaXN0ZW5lckltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgRXZlbnRUYXJnZXQmIHRhcmdldCwg
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXImIGxpc3RlbmVyLCBi
b29sIGNhcHR1cmUpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlbW92ZUV2
ZW50TGlzdGVuZXJJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMs
IEV2ZW50VGFyZ2V0JiB0YXJnZXQsIGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRM
aXN0ZW5lciYgbGlzdGVuZXIsIGJvb2wgY2FwdHVyZSkKIHsKICAgICBpZiAoUGFnZURlYnVnZ2Vy
QWdlbnQqIHBhZ2VEZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5wYWdlRGVidWdn
ZXJBZ2VudCgpKQogICAgICAgICBwYWdlRGVidWdnZXJBZ2VudC0+d2lsbFJlbW92ZUV2ZW50TGlz
dGVuZXIodGFyZ2V0LCBldmVudFR5cGUsIGxpc3RlbmVyLCBjYXB0dXJlKTsKQEAgLTM0NCw3ICsz
NDQsNyBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlbW92ZUV2ZW50TGlz
dGVuZXJJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmCiAgICAgICAgIGRvbUFnZW50LT53aWxsUmVt
b3ZlRXZlbnRMaXN0ZW5lcih0YXJnZXQsIGV2ZW50VHlwZSwgbGlzdGVuZXIsIGNhcHR1cmUpOwog
fQogCi1ib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aXNFdmVudExpc3RlbmVyRGlzYWJs
ZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIEV2ZW50VGFy
Z2V0JiB0YXJnZXQsIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVy
JiBsaXN0ZW5lciwgYm9vbCBjYXB0dXJlKQorYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmlzRXZlbnRMaXN0ZW5lckRpc2FibGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVt
ZW50aW5nQWdlbnRzLCBFdmVudFRhcmdldCYgdGFyZ2V0LCBjb25zdCBBdG9tU3RyaW5nJiBldmVu
dFR5cGUsIEV2ZW50TGlzdGVuZXImIGxpc3RlbmVyLCBib29sIGNhcHR1cmUpCiB7CiAgICAgaWYg
KEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVj
dG9yRE9NQWdlbnQoKSkKICAgICAgICAgcmV0dXJuIGRvbUFnZW50LT5pc0V2ZW50TGlzdGVuZXJE
aXNhYmxlZCh0YXJnZXQsIGV2ZW50VHlwZSwgbGlzdGVuZXIsIGNhcHR1cmUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCmluZGV4
IGM4NjQ1M2YxNDI1OTlmMGEzODU3NzVhMTcwMDY2N2RhNDc0NWRmMmQuLjlkMTMyYzVkNzYxOGEz
YTU0YWRiMTkxODdhYjU3M2Q2YTQ0MmEwNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKQEAgLTExMSw5ICsxMTEsOSBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZGlkSW5zZXJ0RE9NTm9kZShEb2N1bWVudCYsIE5vZGUm
KTsKICAgICBzdGF0aWMgdm9pZCB3aWxsUmVtb3ZlRE9NTm9kZShEb2N1bWVudCYsIE5vZGUmKTsK
ICAgICBzdGF0aWMgdm9pZCBkaWRSZW1vdmVET01Ob2RlKERvY3VtZW50JiwgTm9kZSYpOwotICAg
IHN0YXRpYyB2b2lkIHdpbGxNb2RpZnlET01BdHRyKERvY3VtZW50JiwgRWxlbWVudCYsIGNvbnN0
IEF0b21pY1N0cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUpOwot
ICAgIHN0YXRpYyB2b2lkIGRpZE1vZGlmeURPTUF0dHIoRG9jdW1lbnQmLCBFbGVtZW50JiwgY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKTsKLSAgICBz
dGF0aWMgdm9pZCBkaWRSZW1vdmVET01BdHRyKERvY3VtZW50JiwgRWxlbWVudCYsIGNvbnN0IEF0
b21pY1N0cmluZyYgbmFtZSk7CisgICAgc3RhdGljIHZvaWQgd2lsbE1vZGlmeURPTUF0dHIoRG9j
dW1lbnQmLCBFbGVtZW50JiwgY29uc3QgQXRvbVN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0b21T
dHJpbmcmIG5ld1ZhbHVlKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRNb2RpZnlET01BdHRyKERvY3Vt
ZW50JiwgRWxlbWVudCYsIGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcm
IHZhbHVlKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZW1vdmVET01BdHRyKERvY3VtZW50JiwgRWxl
bWVudCYsIGNvbnN0IEF0b21TdHJpbmcmIG5hbWUpOwogICAgIHN0YXRpYyB2b2lkIGNoYXJhY3Rl
ckRhdGFNb2RpZmllZChEb2N1bWVudCYsIENoYXJhY3RlckRhdGEmKTsKICAgICBzdGF0aWMgdm9p
ZCB3aWxsSW52YWxpZGF0ZVN0eWxlQXR0cihFbGVtZW50Jik7CiAgICAgc3RhdGljIHZvaWQgZGlk
SW52YWxpZGF0ZVN0eWxlQXR0cihFbGVtZW50Jik7CkBAIC0xNDksOSArMTQ5LDkgQEAgcHVibGlj
OgogCiAgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsQ2FsbEZ1
bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIHNjcmlwdE5hbWUs
IGludCBzY3JpcHRMaW5lLCBpbnQgc2NyaXB0Q29sdW1uKTsKICAgICBzdGF0aWMgdm9pZCBkaWRD
YWxsRnVuY3Rpb24oY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJiwgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCopOwotICAgIHN0YXRpYyB2b2lkIGRpZEFkZEV2ZW50TGlzdGVuZXIo
RXZlbnRUYXJnZXQmLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5l
ciYsIGJvb2wgY2FwdHVyZSk7Ci0gICAgc3RhdGljIHZvaWQgd2lsbFJlbW92ZUV2ZW50TGlzdGVu
ZXIoRXZlbnRUYXJnZXQmLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0
ZW5lciYsIGJvb2wgY2FwdHVyZSk7Ci0gICAgc3RhdGljIGJvb2wgaXNFdmVudExpc3RlbmVyRGlz
YWJsZWQoRXZlbnRUYXJnZXQmLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRM
aXN0ZW5lciYsIGJvb2wgY2FwdHVyZSk7CisgICAgc3RhdGljIHZvaWQgZGlkQWRkRXZlbnRMaXN0
ZW5lcihFdmVudFRhcmdldCYsIGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0
ZW5lciYsIGJvb2wgY2FwdHVyZSk7CisgICAgc3RhdGljIHZvaWQgd2lsbFJlbW92ZUV2ZW50TGlz
dGVuZXIoRXZlbnRUYXJnZXQmLCBjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlz
dGVuZXImLCBib29sIGNhcHR1cmUpOworICAgIHN0YXRpYyBib29sIGlzRXZlbnRMaXN0ZW5lckRp
c2FibGVkKEV2ZW50VGFyZ2V0JiwgY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBFdmVudExp
c3RlbmVyJiwgYm9vbCBjYXB0dXJlKTsKICAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uQ29va2llIHdpbGxEaXNwYXRjaEV2ZW50KERvY3VtZW50JiwgY29uc3QgRXZlbnQmLCBib29s
IGhhc0V2ZW50TGlzdGVuZXJzKTsKICAgICBzdGF0aWMgdm9pZCBkaWREaXNwYXRjaEV2ZW50KGNv
bnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYsIGJvb2wgZGVmYXVsdFByZXZlbnRl
ZCk7CiAgICAgc3RhdGljIHZvaWQgd2lsbEhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmLCBFdmVudCYsIGNvbnN0IFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyJik7CkBAIC0zMDUsOSAr
MzA1LDkgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBkaWRJbnNlcnRET01Ob2RlSW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzJiwgTm9kZSYpOwogICAgIHN0YXRpYyB2b2lkIHdpbGxSZW1vdmVE
T01Ob2RlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgTm9kZSYpOwogICAgIHN0YXRpYyB2b2lk
IGRpZFJlbW92ZURPTU5vZGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBOb2RlJik7Ci0gICAg
c3RhdGljIHZvaWQgd2lsbE1vZGlmeURPTUF0dHJJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBF
bGVtZW50JiwgY29uc3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5n
JiBuZXdWYWx1ZSk7Ci0gICAgc3RhdGljIHZvaWQgZGlkTW9kaWZ5RE9NQXR0ckltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyYsIEVsZW1lbnQmLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0
IEF0b21pY1N0cmluZyYgdmFsdWUpOwotICAgIHN0YXRpYyB2b2lkIGRpZFJlbW92ZURPTUF0dHJJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBFbGVtZW50JiwgY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lKTsKKyAgICBzdGF0aWMgdm9pZCB3aWxsTW9kaWZ5RE9NQXR0ckltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyYsIEVsZW1lbnQmLCBjb25zdCBBdG9tU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRv
bVN0cmluZyYgbmV3VmFsdWUpOworICAgIHN0YXRpYyB2b2lkIGRpZE1vZGlmeURPTUF0dHJJbXBs
KEluc3RydW1lbnRpbmdBZ2VudHMmLCBFbGVtZW50JiwgY29uc3QgQXRvbVN0cmluZyYgbmFtZSwg
Y29uc3QgQXRvbVN0cmluZyYgdmFsdWUpOworICAgIHN0YXRpYyB2b2lkIGRpZFJlbW92ZURPTUF0
dHJJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBFbGVtZW50JiwgY29uc3QgQXRvbVN0cmluZyYg
bmFtZSk7CiAgICAgc3RhdGljIHZvaWQgY2hhcmFjdGVyRGF0YU1vZGlmaWVkSW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzJiwgQ2hhcmFjdGVyRGF0YSYpOwogICAgIHN0YXRpYyB2b2lkIHdpbGxJbnZh
bGlkYXRlU3R5bGVBdHRySW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgRWxlbWVudCYpOwogICAg
IHN0YXRpYyB2b2lkIGRpZEludmFsaWRhdGVTdHlsZUF0dHJJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMmLCBFbGVtZW50Jik7CkBAIC0zNDMsOSArMzQzLDkgQEAgcHJpdmF0ZToKIAogICAgIHN0YXRp
YyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbENhbGxGdW5jdGlvbkltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0IFN0cmluZyYgc2NyaXB0TmFtZSwgaW50IHNjcmlwdExp
bmUsIGludCBzY3JpcHRDb2x1bW4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKICAgICBzdGF0
aWMgdm9pZCBkaWRDYWxsRnVuY3Rpb25JbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bkNvb2tpZSYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRB
ZGRFdmVudExpc3RlbmVySW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgRXZlbnRUYXJnZXQmLCBj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYsIGJvb2wgY2FwdHVy
ZSk7Ci0gICAgc3RhdGljIHZvaWQgd2lsbFJlbW92ZUV2ZW50TGlzdGVuZXJJbXBsKEluc3RydW1l
bnRpbmdBZ2VudHMmLCBFdmVudFRhcmdldCYsIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBl
LCBFdmVudExpc3RlbmVyJiwgYm9vbCBjYXB0dXJlKTsKLSAgICBzdGF0aWMgYm9vbCBpc0V2ZW50
TGlzdGVuZXJEaXNhYmxlZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIEV2ZW50VGFyZ2V0Jiwg
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXImLCBib29sIGNhcHR1
cmUpOworICAgIHN0YXRpYyB2b2lkIGRpZEFkZEV2ZW50TGlzdGVuZXJJbXBsKEluc3RydW1lbnRp
bmdBZ2VudHMmLCBFdmVudFRhcmdldCYsIGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgRXZl
bnRMaXN0ZW5lciYsIGJvb2wgY2FwdHVyZSk7CisgICAgc3RhdGljIHZvaWQgd2lsbFJlbW92ZUV2
ZW50TGlzdGVuZXJJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBFdmVudFRhcmdldCYsIGNvbnN0
IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYsIGJvb2wgY2FwdHVyZSk7Cisg
ICAgc3RhdGljIGJvb2wgaXNFdmVudExpc3RlbmVyRGlzYWJsZWRJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMmLCBFdmVudFRhcmdldCYsIGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRM
aXN0ZW5lciYsIGJvb2wgY2FwdHVyZSk7CiAgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbkNvb2tpZSB3aWxsRGlzcGF0Y2hFdmVudEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIERv
Y3VtZW50JiwgY29uc3QgRXZlbnQmLCBib29sIGhhc0V2ZW50TGlzdGVuZXJzKTsKICAgICBzdGF0
aWMgdm9pZCB3aWxsSGFuZGxlRXZlbnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBFdmVudCYs
IGNvbnN0IFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyJik7CiAgICAgc3RhdGljIHZvaWQgZGlkSGFu
ZGxlRXZlbnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmKTsKQEAgLTUzMywyMSArNTMzLDIxIEBA
IGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVtb3ZlRE9NTm9kZShE
b2N1bWVudCYgZG9jdW1lbnQsIE5vZGUmCiAgICAgICAgIGRpZFJlbW92ZURPTU5vZGVJbXBsKCpp
bnN0cnVtZW50aW5nQWdlbnRzLCBub2RlKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjp3aWxsTW9kaWZ5RE9NQXR0cihEb2N1bWVudCYgZG9jdW1lbnQsIEVsZW1l
bnQmIGVsZW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0b21pY1N0
cmluZyYgbmV3VmFsdWUpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Ondp
bGxNb2RpZnlET01BdHRyKERvY3VtZW50JiBkb2N1bWVudCwgRWxlbWVudCYgZWxlbWVudCwgY29u
c3QgQXRvbVN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0b21TdHJpbmcmIG5ld1ZhbHVlKQogewog
ICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwogICAgIGlmIChJbnN0cnVt
ZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0Zv
ckRvY3VtZW50KGRvY3VtZW50KSkKICAgICAgICAgd2lsbE1vZGlmeURPTUF0dHJJbXBsKCppbnN0
cnVtZW50aW5nQWdlbnRzLCBlbGVtZW50LCBvbGRWYWx1ZSwgbmV3VmFsdWUpOwogfQogCi1pbmxp
bmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZE1vZGlmeURPTUF0dHIoRG9jdW1l
bnQmIGRvY3VtZW50LCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUs
IGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZE1vZGlmeURPTUF0dHIoRG9jdW1lbnQmIGRvY3VtZW50LCBFbGVtZW50JiBl
bGVtZW50LCBjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkK
IHsKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKICAgICBpZiAoSW5z
dHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2Vu
dHNGb3JEb2N1bWVudChkb2N1bWVudCkpCiAgICAgICAgIGRpZE1vZGlmeURPTUF0dHJJbXBsKCpp
bnN0cnVtZW50aW5nQWdlbnRzLCBlbGVtZW50LCBuYW1lLCB2YWx1ZSk7CiB9CiAKLWlubGluZSB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVtb3ZlRE9NQXR0cihEb2N1bWVudCYg
ZG9jdW1lbnQsIEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKK2lu
bGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVtb3ZlRE9NQXR0cihEb2N1
bWVudCYgZG9jdW1lbnQsIEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEF0b21TdHJpbmcmIG5hbWUp
CiB7CiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7CiAgICAgaWYgKElu
c3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdl
bnRzRm9yRG9jdW1lbnQoZG9jdW1lbnQpKQpAQCAtNzMwLDIxICs3MzAsMjEgQEAgaW5saW5lIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZW1vdmVUaW1lcihTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb24KICAgICAgICAgZGlkUmVtb3ZlVGltZXJJbXBsKCppbnN0cnVtZW50aW5n
QWdlbnRzLCB0aW1lcklkLCBjb250ZXh0KTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRBZGRFdmVudExpc3RlbmVyKEV2ZW50VGFyZ2V0JiB0YXJnZXQsIGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lciwgYm9v
bCBjYXB0dXJlKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRBZGRF
dmVudExpc3RlbmVyKEV2ZW50VGFyZ2V0JiB0YXJnZXQsIGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50
VHlwZSwgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIsIGJvb2wgY2FwdHVyZSkKIHsKICAgICBGQVNU
X1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKICAgICBpZiAoSW5zdHJ1bWVudGluZ0Fn
ZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JDb250ZXh0
KHRhcmdldC5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpKQogICAgICAgICBkaWRBZGRFdmVudExp
c3RlbmVySW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgdGFyZ2V0LCBldmVudFR5cGUsIGxpc3Rl
bmVyLCBjYXB0dXJlKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojp3aWxsUmVtb3ZlRXZlbnRMaXN0ZW5lcihFdmVudFRhcmdldCYgdGFyZ2V0LCBjb25zdCBBdG9t
aWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIsIGJvb2wgY2FwdHVy
ZSkKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlbW92ZUV2ZW50
TGlzdGVuZXIoRXZlbnRUYXJnZXQmIHRhcmdldCwgY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBl
LCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lciwgYm9vbCBjYXB0dXJlKQogewogICAgIEZBU1RfUkVU
VVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRz
KiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckNvbnRleHQodGFy
Z2V0LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkpCiAgICAgICAgIHdpbGxSZW1vdmVFdmVudExp
c3RlbmVySW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgdGFyZ2V0LCBldmVudFR5cGUsIGxpc3Rl
bmVyLCBjYXB0dXJlKTsKIH0KIAotaW5saW5lIGJvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojppc0V2ZW50TGlzdGVuZXJEaXNhYmxlZChFdmVudFRhcmdldCYgdGFyZ2V0LCBjb25zdCBBdG9t
aWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIsIGJvb2wgY2FwdHVy
ZSkKK2lubGluZSBib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aXNFdmVudExpc3RlbmVy
RGlzYWJsZWQoRXZlbnRUYXJnZXQmIHRhcmdldCwgY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBl
LCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lciwgYm9vbCBjYXB0dXJlKQogewogICAgIEZBU1RfUkVU
VVJOX0lGX05PX0ZST05URU5EUyhmYWxzZSk7CiAgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMq
IGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yQ29udGV4dCh0YXJn
ZXQuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXggMGU1NmVjZmZmM2Mx
MmRiNmJkYjA0ODhkZmNmYWQ4ODE3ZDM2NjgxYS4uNWMzZjJiMTE0OTQyYmEwZWQyYTgzMGM4M2I3
MmU5OTgwODVhODg4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKQEAgLTcxNCw3ICs3MTQsNyBAQCBJbnNwZWN0b3JT
dHlsZVNoZWV0KiBJbnNwZWN0b3JDU1NBZ2VudDo6Y3JlYXRlSW5zcGVjdG9yU3R5bGVTaGVldEZv
ckRvY3VtZW50KERvYwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGF1dG8gc3R5bGVF
bGVtZW50ID0gSFRNTFN0eWxlRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLSAgICBzdHlsZUVs
ZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjp0eXBl
QXR0ciwgQXRvbWljU3RyaW5nKCJ0ZXh0L2NzcyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpKTsKKyAgICBzdHlsZUVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24oSFRNTE5hbWVzOjp0eXBlQXR0ciwgQXRvbVN0cmluZygidGV4dC9jc3MiLCBBdG9t
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogCiAgICAgQ29udGFpbmVyTm9kZSogdGFy
Z2V0Tm9kZTsKICAgICAvLyBIRUFEIGlzIGFic2VudCBpbiBJbWFnZURvY3VtZW50cywgZm9yIGV4
YW1wbGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yRE9NQWdlbnQuY3BwCmluZGV4IDdkOTg5NjBlMzZlZmY2YWJkY2MyNWFjZThmZjJjZmUzOGNm
MzE5Y2IuLjBkNTk3ODVjMWVjNjgyYjU5YmEwOTcyY2E5NjA0ZGNiY2Q5N2QxMjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQu
Y3BwCkBAIC04OTQsNyArODk0LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Z2V0RXZlbnRM
aXN0ZW5lcnNGb3JOb2RlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG4KIAogICAgIHN0
cnVjdCBFdmVudExpc3RlbmVySW5mbyB7CiAgICAgICAgIFJlZlB0cjxFdmVudFRhcmdldD4gZXZl
bnRUYXJnZXQ7Ci0gICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyBldmVudFR5cGU7CisgICAgICAg
IGNvbnN0IEF0b21TdHJpbmcgZXZlbnRUeXBlOwogICAgICAgICBjb25zdCBFdmVudExpc3RlbmVy
VmVjdG9yIGV2ZW50TGlzdGVuZXJzOwogICAgIH07CiAKQEAgLTE2NzcsNyArMTY3Nyw3IEBAIFJl
ZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZT4+IEluc3Bl
Y3RvckRPTUFnZW50OjpidWlsZEFyCiAgICAgcmV0dXJuIHBzZXVkb0VsZW1lbnRzOwogfQogCi1S
ZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpFdmVudExpc3RlbmVyPiBJbnNwZWN0b3JET01B
Z2VudDo6YnVpbGRPYmplY3RGb3JFdmVudExpc3RlbmVyKGNvbnN0IFJlZ2lzdGVyZWRFdmVudExp
c3RlbmVyJiByZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciwgaW50IGlkZW50aWZpZXIsIEV2ZW50VGFy
Z2V0JiBldmVudFRhcmdldCwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgZGlz
YWJsZWQsIGJvb2wgaGFzQnJlYWtwb2ludCkKK1JlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006
OkV2ZW50TGlzdGVuZXI+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZvckV2ZW50TGlz
dGVuZXIoY29uc3QgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXImIHJlZ2lzdGVyZWRFdmVudExpc3Rl
bmVyLCBpbnQgaWRlbnRpZmllciwgRXZlbnRUYXJnZXQmIGV2ZW50VGFyZ2V0LCBjb25zdCBBdG9t
U3RyaW5nJiBldmVudFR5cGUsIGJvb2wgZGlzYWJsZWQsIGJvb2wgaGFzQnJlYWtwb2ludCkKIHsK
ICAgICBSZWY8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lciA9IHJlZ2lzdGVyZWRFdmVudExp
c3RlbmVyLmNhbGxiYWNrKCk7CiAKQEAgLTIxNzYsNyArMjE3Niw3IEBAIHZvaWQgSW5zcGVjdG9y
RE9NQWdlbnQ6OmFkZEV2ZW50TGlzdGVuZXJzVG9Ob2RlKE5vZGUmIG5vZGUpCiAjaWYgRU5BQkxF
KFZJREVPKQogICAgIGF1dG8gY2FsbGJhY2sgPSBFdmVudEZpcmVkQ2FsbGJhY2s6OmNyZWF0ZSgq
dGhpcyk7CiAKLSAgICBhdXRvIGNyZWF0ZUV2ZW50TGlzdGVuZXIgPSBbJl0gKGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnROYW1lKSB7CisgICAgYXV0byBjcmVhdGVFdmVudExpc3RlbmVyID0gWyZd
IChjb25zdCBBdG9tU3RyaW5nJiBldmVudE5hbWUpIHsKICAgICAgICAgbm9kZS5hZGRFdmVudExp
c3RlbmVyKGV2ZW50TmFtZSwgY2FsbGJhY2suY29weVJlZigpLCBmYWxzZSk7CiAgICAgfTsKIApA
QCAtMjI2MiwxMiArMjI2MiwxMiBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRSZW1vdmVE
T01Ob2RlKE5vZGUmIG5vZGUpCiAgICAgdW5iaW5kKCZub2RlLCAmbV9kb2N1bWVudE5vZGVUb0lk
TWFwKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6d2lsbE1vZGlmeURPTUF0dHIoRWxl
bWVudCYsIGNvbnN0IEF0b21pY1N0cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0b21pY1N0cmluZyYg
bmV3VmFsdWUpCit2b2lkIEluc3BlY3RvckRPTUFnZW50Ojp3aWxsTW9kaWZ5RE9NQXR0cihFbGVt
ZW50JiwgY29uc3QgQXRvbVN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0b21TdHJpbmcmIG5ld1Zh
bHVlKQogewogICAgIG1fc3VwcHJlc3NBdHRyaWJ1dGVNb2RpZmllZEV2ZW50ID0gKG9sZFZhbHVl
ID09IG5ld1ZhbHVlKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlkTW9kaWZ5RE9N
QXR0cihFbGVtZW50JiBlbGVtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IEF0
b21pY1N0cmluZyYgdmFsdWUpCit2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRNb2RpZnlET01B
dHRyKEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIGNvbnN0IEF0b21T
dHJpbmcmIHZhbHVlKQogewogICAgIGJvb2wgc2hvdWxkU3VwcHJlc3NFdmVudCA9IG1fc3VwcHJl
c3NBdHRyaWJ1dGVNb2RpZmllZEV2ZW50OwogICAgIG1fc3VwcHJlc3NBdHRyaWJ1dGVNb2RpZmll
ZEV2ZW50ID0gZmFsc2U7CkBAIC0yMjg0LDcgKzIyODQsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFn
ZW50OjpkaWRNb2RpZnlET01BdHRyKEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgbgogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5hdHRyaWJ1dGVNb2RpZmllZChpZCwgbmFt
ZSwgdmFsdWUpOwogfQogCi12b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRSZW1vdmVET01BdHRy
KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKK3ZvaWQgSW5zcGVj
dG9yRE9NQWdlbnQ6OmRpZFJlbW92ZURPTUF0dHIoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgQXRv
bVN0cmluZyYgbmFtZSkKIHsKICAgICBpbnQgaWQgPSBib3VuZE5vZGVJZCgmZWxlbWVudCk7CiAg
ICAgaWYgKCFpZCkKQEAgLTI0MjMsNyArMjQyMyw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6
OmRpZEFkZEV2ZW50TGlzdGVuZXIoRXZlbnRUYXJnZXQmIHRhcmdldCkKICAgICBtX2Zyb250ZW5k
RGlzcGF0Y2hlci0+ZGlkQWRkRXZlbnRMaXN0ZW5lcihub2RlSWQpOwogfQogCi12b2lkIEluc3Bl
Y3RvckRPTUFnZW50Ojp3aWxsUmVtb3ZlRXZlbnRMaXN0ZW5lcihFdmVudFRhcmdldCYgdGFyZ2V0
LCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIs
IGJvb2wgY2FwdHVyZSkKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OndpbGxSZW1vdmVFdmVudExp
c3RlbmVyKEV2ZW50VGFyZ2V0JiB0YXJnZXQsIGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwg
RXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIsIGJvb2wgY2FwdHVyZSkKIHsKICAgICBpZiAoIWlzPE5v
ZGU+KHRhcmdldCkpCiAgICAgICAgIHJldHVybjsKQEAgLTI0NTksNyArMjQ1OSw3IEBAIHZvaWQg
SW5zcGVjdG9yRE9NQWdlbnQ6OndpbGxSZW1vdmVFdmVudExpc3RlbmVyKEV2ZW50VGFyZ2V0JiB0
YXJnZXQsIGNvbnN0IEF0b21pCiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPndpbGxSZW1vdmVF
dmVudExpc3RlbmVyKG5vZGVJZCk7CiB9CiAKLWJvb2wgSW5zcGVjdG9yRE9NQWdlbnQ6OmlzRXZl
bnRMaXN0ZW5lckRpc2FibGVkKEV2ZW50VGFyZ2V0JiB0YXJnZXQsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lciwgYm9vbCBjYXB0dXJlKQorYm9v
bCBJbnNwZWN0b3JET01BZ2VudDo6aXNFdmVudExpc3RlbmVyRGlzYWJsZWQoRXZlbnRUYXJnZXQm
IHRhcmdldCwgY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiBsaXN0
ZW5lciwgYm9vbCBjYXB0dXJlKQogewogICAgIGZvciAoYXV0byYgaW5zcGVjdG9yRXZlbnRMaXN0
ZW5lciA6IG1fZXZlbnRMaXN0ZW5lckVudHJpZXMudmFsdWVzKCkpIHsKICAgICAgICAgaWYgKGlu
c3BlY3RvckV2ZW50TGlzdGVuZXIubWF0Y2hlcyh0YXJnZXQsIGV2ZW50VHlwZSwgbGlzdGVuZXIs
IGNhcHR1cmUpKQpAQCAtMjQ3Myw3ICsyNDczLDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6
ZXZlbnREaWRSZXNldEFmdGVyRGlzcGF0Y2goY29uc3QgRXZlbnQmIGV2ZW50KQogICAgIG1fZGlz
cGF0Y2hlZEV2ZW50cy5yZW1vdmUoJmV2ZW50KTsKIH0KIAotYm9vbCBJbnNwZWN0b3JET01BZ2Vu
dDo6aGFzQnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIoRXZlbnRUYXJnZXQmIHRhcmdldCwgY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXImIGxpc3RlbmVyLCBib29s
IGNhcHR1cmUpCitib29sIEluc3BlY3RvckRPTUFnZW50OjpoYXNCcmVha3BvaW50Rm9yRXZlbnRM
aXN0ZW5lcihFdmVudFRhcmdldCYgdGFyZ2V0LCBjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUs
IEV2ZW50TGlzdGVuZXImIGxpc3RlbmVyLCBib29sIGNhcHR1cmUpCiB7CiAgICAgZm9yIChhdXRv
JiBpbnNwZWN0b3JFdmVudExpc3RlbmVyIDogbV9ldmVudExpc3RlbmVyRW50cmllcy52YWx1ZXMo
KSkgewogICAgICAgICBpZiAoaW5zcGVjdG9yRXZlbnRMaXN0ZW5lci5tYXRjaGVzKHRhcmdldCwg
ZXZlbnRUeXBlLCBsaXN0ZW5lciwgY2FwdHVyZSkpCkBAIC0yNDgyLDcgKzI0ODIsNyBAQCBib29s
IEluc3BlY3RvckRPTUFnZW50OjpoYXNCcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lcihFdmVudFRh
cmdldCYgdGFyZ2V0LCBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotaW50IEluc3BlY3Rv
ckRPTUFnZW50OjppZEZvckV2ZW50TGlzdGVuZXIoRXZlbnRUYXJnZXQmIHRhcmdldCwgY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXImIGxpc3RlbmVyLCBib29sIGNh
cHR1cmUpCitpbnQgSW5zcGVjdG9yRE9NQWdlbnQ6OmlkRm9yRXZlbnRMaXN0ZW5lcihFdmVudFRh
cmdldCYgdGFyZ2V0LCBjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIm
IGxpc3RlbmVyLCBib29sIGNhcHR1cmUpCiB7CiAgICAgZm9yIChhdXRvJiBpbnNwZWN0b3JFdmVu
dExpc3RlbmVyIDogbV9ldmVudExpc3RlbmVyRW50cmllcy52YWx1ZXMoKSkgewogICAgICAgICBp
ZiAoaW5zcGVjdG9yRXZlbnRMaXN0ZW5lci5tYXRjaGVzKHRhcmdldCwgZXZlbnRUeXBlLCBsaXN0
ZW5lciwgY2FwdHVyZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckRPTUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckRPTUFnZW50LmgKaW5kZXggNThkM2EyMDc2N2YxZmQ3YTFlMzk1MTgwYzNiMTlj
YTc0OTk0ODUwNi4uNzNmZTIwM2VkMzJlNDcxNjUxNmFlYzc4NWZmODhhZGIxMDRmZDUzYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2Vu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdl
bnQuaApAQCAtMzksNyArMzksNyBAQAogI2luY2x1ZGUgPHd0Zi9KU09OVmFsdWVzLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3
dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+
CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogY2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwpA
QCAtMTQyLDkgKzE0Miw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZEV2ZW50TGlzdGVuZXJzVG9O
b2RlKE5vZGUmKTsKICAgICB2b2lkIGRpZEluc2VydERPTU5vZGUoTm9kZSYpOwogICAgIHZvaWQg
ZGlkUmVtb3ZlRE9NTm9kZShOb2RlJik7Ci0gICAgdm9pZCB3aWxsTW9kaWZ5RE9NQXR0cihFbGVt
ZW50JiwgY29uc3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBu
ZXdWYWx1ZSk7Ci0gICAgdm9pZCBkaWRNb2RpZnlET01BdHRyKEVsZW1lbnQmLCBjb25zdCBBdG9t
aWNTdHJpbmcmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpOwotICAgIHZvaWQgZGlk
UmVtb3ZlRE9NQXR0cihFbGVtZW50JiwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKTsKKyAgICB2
b2lkIHdpbGxNb2RpZnlET01BdHRyKEVsZW1lbnQmLCBjb25zdCBBdG9tU3RyaW5nJiBvbGRWYWx1
ZSwgY29uc3QgQXRvbVN0cmluZyYgbmV3VmFsdWUpOworICAgIHZvaWQgZGlkTW9kaWZ5RE9NQXR0
cihFbGVtZW50JiwgY29uc3QgQXRvbVN0cmluZyYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYgdmFs
dWUpOworICAgIHZvaWQgZGlkUmVtb3ZlRE9NQXR0cihFbGVtZW50JiwgY29uc3QgQXRvbVN0cmlu
ZyYgbmFtZSk7CiAgICAgdm9pZCBjaGFyYWN0ZXJEYXRhTW9kaWZpZWQoQ2hhcmFjdGVyRGF0YSYp
OwogICAgIHZvaWQgZGlkSW52YWxpZGF0ZVN0eWxlQXR0cihFbGVtZW50Jik7CiAgICAgdm9pZCBk
aWRQdXNoU2hhZG93Um9vdChFbGVtZW50JiBob3N0LCBTaGFkb3dSb290Jik7CkBAIC0xNTYsOCAr
MTU2LDggQEAgcHVibGljOgogICAgIHZvaWQgcHNldWRvRWxlbWVudENyZWF0ZWQoUHNldWRvRWxl
bWVudCYpOwogICAgIHZvaWQgcHNldWRvRWxlbWVudERlc3Ryb3llZChQc2V1ZG9FbGVtZW50Jik7
CiAgICAgdm9pZCBkaWRBZGRFdmVudExpc3RlbmVyKEV2ZW50VGFyZ2V0Jik7Ci0gICAgdm9pZCB3
aWxsUmVtb3ZlRXZlbnRMaXN0ZW5lcihFdmVudFRhcmdldCYsIGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiwgYm9vbCBjYXB0dXJlKTsKLSAgICBib29sIGlzRXZl
bnRMaXN0ZW5lckRpc2FibGVkKEV2ZW50VGFyZ2V0JiwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVu
dFR5cGUsIEV2ZW50TGlzdGVuZXImLCBib29sIGNhcHR1cmUpOworICAgIHZvaWQgd2lsbFJlbW92
ZUV2ZW50TGlzdGVuZXIoRXZlbnRUYXJnZXQmLCBjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUs
IEV2ZW50TGlzdGVuZXImLCBib29sIGNhcHR1cmUpOworICAgIGJvb2wgaXNFdmVudExpc3RlbmVy
RGlzYWJsZWQoRXZlbnRUYXJnZXQmLCBjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50
TGlzdGVuZXImLCBib29sIGNhcHR1cmUpOwogICAgIHZvaWQgZXZlbnREaWRSZXNldEFmdGVyRGlz
cGF0Y2goY29uc3QgRXZlbnQmKTsKIAogICAgIC8vIENhbGxiYWNrcyB0aGF0IGRvbid0IGRpcmVj
dGx5IGNvcnJlc3BvbmQgdG8gYW4gaW5zdHJ1bWVudGF0aW9uIGVudHJ5IHBvaW50LgpAQCAtMTk1
LDggKzE5NSw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgTm9kZSogc2NyaXB0VmFsdWVBc05vZGUo
SlNDOjpKU1ZhbHVlKTsKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIG5vZGVBc1NjcmlwdFZhbHVl
KEpTQzo6RXhlY1N0YXRlJiwgTm9kZSopOwogCi0gICAgYm9vbCBoYXNCcmVha3BvaW50Rm9yRXZl
bnRMaXN0ZW5lcihFdmVudFRhcmdldCYsIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBF
dmVudExpc3RlbmVyJiwgYm9vbCBjYXB0dXJlKTsKLSAgICBpbnQgaWRGb3JFdmVudExpc3RlbmVy
KEV2ZW50VGFyZ2V0JiwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVu
ZXImLCBib29sIGNhcHR1cmUpOworICAgIGJvb2wgaGFzQnJlYWtwb2ludEZvckV2ZW50TGlzdGVu
ZXIoRXZlbnRUYXJnZXQmLCBjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVu
ZXImLCBib29sIGNhcHR1cmUpOworICAgIGludCBpZEZvckV2ZW50TGlzdGVuZXIoRXZlbnRUYXJn
ZXQmLCBjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXImLCBib29sIGNh
cHR1cmUpOwogCiBwcml2YXRlOgogI2lmIEVOQUJMRShWSURFTykKQEAgLTIyMiw3ICsyMjIsNyBA
QCBwcml2YXRlOgogICAgIFJlZjxKU09OOjpBcnJheU9mPFN0cmluZz4+IGJ1aWxkQXJyYXlGb3JF
bGVtZW50QXR0cmlidXRlcyhFbGVtZW50Kik7CiAgICAgUmVmPEpTT046OkFycmF5T2Y8SW5zcGVj
dG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlPj4gYnVpbGRBcnJheUZvckNvbnRhaW5lckNoaWxkcmVu
KE5vZGUqIGNvbnRhaW5lciwgaW50IGRlcHRoLCBOb2RlVG9JZE1hcCogbm9kZXNNYXApOwogICAg
IFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZT4+IGJ1
aWxkQXJyYXlGb3JQc2V1ZG9FbGVtZW50cyhjb25zdCBFbGVtZW50JiwgTm9kZVRvSWRNYXAqIG5v
ZGVzTWFwKTsKLSAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpFdmVudExpc3RlbmVy
PiBidWlsZE9iamVjdEZvckV2ZW50TGlzdGVuZXIoY29uc3QgUmVnaXN0ZXJlZEV2ZW50TGlzdGVu
ZXImLCBpbnQgaWRlbnRpZmllciwgRXZlbnRUYXJnZXQmLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2
ZW50VHlwZSwgYm9vbCBkaXNhYmxlZCwgYm9vbCBoYXNCcmVha3BvaW50KTsKKyAgICBSZWY8SW5z
cGVjdG9yOjpQcm90b2NvbDo6RE9NOjpFdmVudExpc3RlbmVyPiBidWlsZE9iamVjdEZvckV2ZW50
TGlzdGVuZXIoY29uc3QgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXImLCBpbnQgaWRlbnRpZmllciwg
RXZlbnRUYXJnZXQmLCBjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgZGlzYWJsZWQs
IGJvb2wgaGFzQnJlYWtwb2ludCk7CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRP
TTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM+IGJ1aWxkT2JqZWN0Rm9yQWNjZXNzaWJpbGl0eVBy
b3BlcnRpZXMoTm9kZSopOwogICAgIHZvaWQgcHJvY2Vzc0FjY2Vzc2liaWxpdHlDaGlsZHJlbihB
Y2Nlc3NpYmlsaXR5T2JqZWN0JiwgSlNPTjo6QXJyYXlPZjxpbnQ+Jik7CiAgICAgCkBAIC0yODIs
MTQgKzI4MiwxNCBAQCBwcml2YXRlOgogICAgICAgICBpbnQgaWRlbnRpZmllciB7IDEgfTsKICAg
ICAgICAgUmVmUHRyPEV2ZW50VGFyZ2V0PiBldmVudFRhcmdldDsKICAgICAgICAgUmVmUHRyPEV2
ZW50TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXI7Ci0gICAgICAgIEF0b21pY1N0cmluZyBldmVudFR5
cGU7CisgICAgICAgIEF0b21TdHJpbmcgZXZlbnRUeXBlOwogICAgICAgICBib29sIHVzZUNhcHR1
cmUgeyBmYWxzZSB9OwogICAgICAgICBib29sIGRpc2FibGVkIHsgZmFsc2UgfTsKICAgICAgICAg
Ym9vbCBoYXNCcmVha3BvaW50IHsgZmFsc2UgfTsKIAogICAgICAgICBJbnNwZWN0b3JFdmVudExp
c3RlbmVyKCkgeyB9CiAKLSAgICAgICAgSW5zcGVjdG9yRXZlbnRMaXN0ZW5lcihpbnQgaWRlbnRp
ZmllciwgRXZlbnRUYXJnZXQmIHRhcmdldCwgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBFdmVu
dExpc3RlbmVyJiBsaXN0ZW5lciwgYm9vbCBjYXB0dXJlKQorICAgICAgICBJbnNwZWN0b3JFdmVu
dExpc3RlbmVyKGludCBpZGVudGlmaWVyLCBFdmVudFRhcmdldCYgdGFyZ2V0LCBjb25zdCBBdG9t
U3RyaW5nJiB0eXBlLCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lciwgYm9vbCBjYXB0dXJlKQogICAg
ICAgICAgICAgOiBpZGVudGlmaWVyKGlkZW50aWZpZXIpCiAgICAgICAgICAgICAsIGV2ZW50VGFy
Z2V0KCZ0YXJnZXQpCiAgICAgICAgICAgICAsIGV2ZW50TGlzdGVuZXIoJmxpc3RlbmVyKQpAQCAt
Mjk4LDcgKzI5OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAg
IGJvb2wgbWF0Y2hlcyhFdmVudFRhcmdldCYgdGFyZ2V0LCBjb25zdCBBdG9taWNTdHJpbmcmIHR5
cGUsIEV2ZW50TGlzdGVuZXImIGxpc3RlbmVyLCBib29sIGNhcHR1cmUpCisgICAgICAgIGJvb2wg
bWF0Y2hlcyhFdmVudFRhcmdldCYgdGFyZ2V0LCBjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBFdmVu
dExpc3RlbmVyJiBsaXN0ZW5lciwgYm9vbCBjYXB0dXJlKQogICAgICAgICB7CiAgICAgICAgICAg
ICBpZiAoZXZlbnRUYXJnZXQuZ2V0KCkgIT0gJnRhcmdldCkKICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3Bh
Z2UvUGFnZURlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9wYWdlL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcAppbmRleCBlOGNmNDhmZDZkMDQ0ZjcyZTY3OTc1
NzE3ZGQzNGMxMTBmYWMxYWFmLi40ZjQ0MzIyN2FjZDUyN2M5YWZjMGE1MTViMzlhMTJjN2QzNjM0
YzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFn
ZURlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
cGFnZS9QYWdlRGVidWdnZXJBZ2VudC5jcHAKQEAgLTE1Niw3ICsxNTYsNyBAQCB2b2lkIFBhZ2VE
ZWJ1Z2dlckFnZW50OjptYWluRnJhbWVOYXZpZ2F0ZWQoKQogICAgIHNldFN1cHByZXNzQWxsUGF1
c2VzKGZhbHNlKTsKIH0KIAotdm9pZCBQYWdlRGVidWdnZXJBZ2VudDo6ZGlkQWRkRXZlbnRMaXN0
ZW5lcihFdmVudFRhcmdldCYgdGFyZ2V0LCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwg
RXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIsIGJvb2wgY2FwdHVyZSkKK3ZvaWQgUGFnZURlYnVnZ2Vy
QWdlbnQ6OmRpZEFkZEV2ZW50TGlzdGVuZXIoRXZlbnRUYXJnZXQmIHRhcmdldCwgY29uc3QgQXRv
bVN0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lciwgYm9vbCBjYXB0dXJl
KQogewogICAgIGlmICghYnJlYWtwb2ludHNBY3RpdmUoKSkKICAgICAgICAgcmV0dXJuOwpAQCAt
MTgyLDcgKzE4Miw3IEBAIHZvaWQgUGFnZURlYnVnZ2VyQWdlbnQ6OmRpZEFkZEV2ZW50TGlzdGVu
ZXIoRXZlbnRUYXJnZXQmIHRhcmdldCwgY29uc3QgQXRvbWljU3RyCiAgICAgZGlkU2NoZWR1bGVB
c3luY0NhbGwoc2NyaXB0U3RhdGUsIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OkFzeW5jQ2FsbFR5
cGU6OkV2ZW50TGlzdGVuZXIsIGlkZW50aWZpZXIsIHJlZ2lzdGVyZWRMaXN0ZW5lci0+aXNPbmNl
KCkpOwogfQogCi12b2lkIFBhZ2VEZWJ1Z2dlckFnZW50Ojp3aWxsUmVtb3ZlRXZlbnRMaXN0ZW5l
cihFdmVudFRhcmdldCYgdGFyZ2V0LCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZl
bnRMaXN0ZW5lciYgbGlzdGVuZXIsIGJvb2wgY2FwdHVyZSkKK3ZvaWQgUGFnZURlYnVnZ2VyQWdl
bnQ6OndpbGxSZW1vdmVFdmVudExpc3RlbmVyKEV2ZW50VGFyZ2V0JiB0YXJnZXQsIGNvbnN0IEF0
b21TdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIsIGJvb2wgY2FwdHVy
ZSkKIHsKICAgICBhdXRvJiBldmVudExpc3RlbmVycyA9IHRhcmdldC5ldmVudExpc3RlbmVycyhl
dmVudFR5cGUpOwogICAgIHNpemVfdCBsaXN0ZW5lckluZGV4ID0gZXZlbnRMaXN0ZW5lcnMuZmlu
ZE1hdGNoaW5nKFsmXShhdXRvJiByZWdpc3RlcmVkTGlzdGVuZXIpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRGVidWdnZXJBZ2VudC5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VEZWJ1Z2dlckFnZW50LmgK
aW5kZXggYTJhY2MyZGYwMGFhMjJlZmM1OThmMGQyNDNhODQ5Nzg5NTMyZmVkOC4uMDg1ZGUwNzY1
NGI5OTU4MjhkNzA1NjkyOWE2NGUyNTM0Y2IzYmJjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VEZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VEZWJ1Z2dlckFnZW50LmgKQEAgLTU5
LDggKzU5LDggQEAgcHVibGljOgogICAgIHZvaWQgd2lsbEZpcmVBbmltYXRpb25GcmFtZShpbnQg
Y2FsbGJhY2tJZCk7CiAgICAgdm9pZCBkaWRDYW5jZWxBbmltYXRpb25GcmFtZShpbnQgY2FsbGJh
Y2tJZCk7CiAKLSAgICB2b2lkIGRpZEFkZEV2ZW50TGlzdGVuZXIoRXZlbnRUYXJnZXQmLCBjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYsIGJvb2wgY2FwdHVyZSk7
Ci0gICAgdm9pZCB3aWxsUmVtb3ZlRXZlbnRMaXN0ZW5lcihFdmVudFRhcmdldCYsIGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiwgYm9vbCBjYXB0dXJlKTsKKyAg
ICB2b2lkIGRpZEFkZEV2ZW50TGlzdGVuZXIoRXZlbnRUYXJnZXQmLCBjb25zdCBBdG9tU3RyaW5n
JiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXImLCBib29sIGNhcHR1cmUpOworICAgIHZvaWQgd2ls
bFJlbW92ZUV2ZW50TGlzdGVuZXIoRXZlbnRUYXJnZXQmLCBjb25zdCBBdG9tU3RyaW5nJiBldmVu
dFR5cGUsIEV2ZW50TGlzdGVuZXImLCBib29sIGNhcHR1cmUpOwogICAgIHZvaWQgd2lsbEhhbmRs
ZUV2ZW50KGNvbnN0IFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyJik7CiAKICAgICB2b2lkIGRpZFBv
c3RNZXNzYWdlKGNvbnN0IFRpbWVyQmFzZSYsIEpTQzo6RXhlY1N0YXRlJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwCmluZGV4IDFm
NjdjMWRlNTg4OWUwNjc5OTRhZDQ3MTQ4Y2EzOTA2ODVkNzdiMDguLmQwZDU0Yjk3ZWFlNzIwNDI2
Zjk2MWM4ZGFlODk1ZTIwMzY5Y2VkY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwCkBAIC0zOCw3ICszOCw3IEBACiAjaW5jbHVk
ZSAiU2VjdXJpdHlQb2xpY3kuaCIKICNpbmNsdWRlIDxtdXRleD4KICNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNs
aWVudHMuY3BwCmluZGV4IGE1NzEwMWNhYTU4MWE3MzNjZjY5MWI2ZmE4NWRiMmNlODBlOGY5NjMu
LjYwM2U1N2VmZTBmNzRjYWU5Y2U5OWJiYmQyY2ZhM2JhYTdiNGI1ZDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC0zNzAsOCArMzcwLDggQEAgcHVibGljOgogCiBw
cml2YXRlOgogICAgIFBvcHVwTWVudSogcG9wdXBNZW51KCkgZmluYWwgeyByZXR1cm4gbV9wb3B1
cC5wdHIoKTsgfQotICAgIHZvaWQgc2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmlu
ZyYsIGNvbnN0IFZlY3RvcjxSZWNlbnRTZWFyY2g+JikgZmluYWwgeyB9Ci0gICAgdm9pZCBsb2Fk
UmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiwgVmVjdG9yPFJlY2VudFNlYXJjaD4m
KSBmaW5hbCB7IH0KKyAgICB2b2lkIHNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9tU3RyaW5n
JiwgY29uc3QgVmVjdG9yPFJlY2VudFNlYXJjaD4mKSBmaW5hbCB7IH0KKyAgICB2b2lkIGxvYWRS
ZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9tU3RyaW5nJiwgVmVjdG9yPFJlY2VudFNlYXJjaD4mKSBm
aW5hbCB7IH0KICAgICBib29sIGVuYWJsZWQoKSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogCiAg
ICAgUmVmPEVtcHR5UG9wdXBNZW51PiBtX3BvcHVwOwpAQCAtNDE0LDcgKzQxNCw3IEBAIGNsYXNz
IEVtcHR5VXNlckNvbnRlbnRQcm92aWRlciBmaW5hbCA6IHB1YmxpYyBVc2VyQ29udGVudFByb3Zp
ZGVyIHsKIH07CiAKIGNsYXNzIEVtcHR5VmlzaXRlZExpbmtTdG9yZSBmaW5hbCA6IHB1YmxpYyBW
aXNpdGVkTGlua1N0b3JlIHsKLSAgICBib29sIGlzTGlua1Zpc2l0ZWQoUGFnZSYsIFNoYXJlZFN0
cmluZ0hhc2gsIGNvbnN0IFVSTCYsIGNvbnN0IEF0b21pY1N0cmluZyYpIGZpbmFsIHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgYm9vbCBpc0xpbmtWaXNpdGVkKFBhZ2UmLCBTaGFyZWRTdHJpbmdIYXNo
LCBjb25zdCBVUkwmLCBjb25zdCBBdG9tU3RyaW5nJikgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICB2b2lkIGFkZFZpc2l0ZWRMaW5rKFBhZ2UmLCBTaGFyZWRTdHJpbmdIYXNoKSBmaW5hbCB7
IH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwCmluZGV4IDli
OGU2MDQ3M2NjNjNiMTJkODM1Yzk5MzA3NjA2YTBiODhjMjRiMjMuLmJlMDNlNGExOWUxMTcyMjVm
Y2U4MTI3YWYxNzRjMWIwNGY5NTU0ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Gb3JtU3VibWlzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJt
aXNzaW9uLmNwcApAQCAtMTQ3LDcgKzE0Nyw3IEBAIFJlZjxGb3JtU3VibWlzc2lvbj4gRm9ybVN1
Ym1pc3Npb246OmNyZWF0ZShIVE1MRm9ybUVsZW1lbnQmIGZvcm0sIGNvbnN0IEF0dHJpYnV0CiAg
ICAgYXV0byBjb3BpZWRBdHRyaWJ1dGVzID0gYXR0cmlidXRlczsKIAogICAgIGlmIChhdXRvKiBz
dWJtaXRCdXR0b24gPSBmb3JtLmZpbmRTdWJtaXRCdXR0b24oZXZlbnQpKSB7Ci0gICAgICAgIEF0
b21pY1N0cmluZyBhdHRyaWJ1dGVWYWx1ZTsKKyAgICAgICAgQXRvbVN0cmluZyBhdHRyaWJ1dGVW
YWx1ZTsKICAgICAgICAgaWYgKCEoYXR0cmlidXRlVmFsdWUgPSBzdWJtaXRCdXR0b24tPmF0dHJp
YnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oZm9ybWFjdGlvbkF0dHIpKS5pc051bGwoKSkKICAg
ICAgICAgICAgIGNvcGllZEF0dHJpYnV0ZXMucGFyc2VBY3Rpb24oYXR0cmlidXRlVmFsdWUpOwog
ICAgICAgICBpZiAoIShhdHRyaWJ1dGVWYWx1ZSA9IHN1Ym1pdEJ1dHRvbi0+YXR0cmlidXRlV2l0
aG91dFN5bmNocm9uaXphdGlvbihmb3JtZW5jdHlwZUF0dHIpKS5pc051bGwoKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRSZXF1ZXN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRSZXF1ZXN0LmNwcAppbmRleCBhYWFjYmFjY2MxZmM5MjYz
OTg0ZjY0OTM2OWRkMTU5NjczY2YyZDkxLi44MjdlNDkzODJmYzZkOGYyNmQ4MDU1MmQxZjJkMmY3
MjgwOGYyMzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkUmVx
dWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZFJlcXVlc3QuY3Bw
CkBAIC0zNyw3ICszNyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRnJhbWVMb2FkUmVx
dWVzdDo6RnJhbWVMb2FkUmVxdWVzdChEb2N1bWVudCYgcmVxdWVzdGVyLCBTZWN1cml0eU9yaWdp
biYgcmVxdWVzdGVyU2VjdXJpdHlPcmlnaW4sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3Vy
Y2VSZXF1ZXN0LCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgTG9ja0hpc3RvcnkgbG9ja0hpc3Rv
cnksIExvY2tCYWNrRm9yd2FyZExpc3QgbG9ja0JhY2tGb3J3YXJkTGlzdCwgU2hvdWxkU2VuZFJl
ZmVycmVyIHNob3VsZFNlbmRSZWZlcnJlciwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMIGFs
bG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCwgTmV3RnJhbWVPcGVuZXJQb2xpY3kgbmV3RnJhbWVP
cGVuZXJQb2xpY3ksIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeSwgSW5pdGlhdGVkQnlNYWluRnJhbWUgaW5pdGlhdGVkQnlNYWluRnJhbWUs
IFNob3VsZFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTCBzaG91bGRSZXBsYWNlRG9jdW1l
bnRJZkphdmFTY3JpcHRVUkwsIGNvbnN0IEF0b21pY1N0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUs
IGNvbnN0IFN5c3RlbVByZXZpZXdJbmZvJiBzeXN0ZW1QcmV2aWV3SW5mbykKK0ZyYW1lTG9hZFJl
cXVlc3Q6OkZyYW1lTG9hZFJlcXVlc3QoRG9jdW1lbnQmIHJlcXVlc3RlciwgU2VjdXJpdHlPcmln
aW4mIHJlcXVlc3RlclNlY3VyaXR5T3JpZ2luLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291
cmNlUmVxdWVzdCwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIExvY2tIaXN0b3J5IGxvY2tIaXN0
b3J5LCBMb2NrQmFja0ZvcndhcmRMaXN0IGxvY2tCYWNrRm9yd2FyZExpc3QsIFNob3VsZFNlbmRS
ZWZlcnJlciBzaG91bGRTZW5kUmVmZXJyZXIsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCBh
bGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIE5ld0ZyYW1lT3BlbmVyUG9saWN5IG5ld0ZyYW1l
T3BlbmVyUG9saWN5LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3ksIEluaXRpYXRlZEJ5TWFpbkZyYW1lIGluaXRpYXRlZEJ5TWFpbkZyYW1l
LCBTaG91bGRSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwgc2hvdWxkUmVwbGFjZURvY3Vt
ZW50SWZKYXZhU2NyaXB0VVJMLCBjb25zdCBBdG9tU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSwg
Y29uc3QgU3lzdGVtUHJldmlld0luZm8mIHN5c3RlbVByZXZpZXdJbmZvKQogICAgIDogbV9yZXF1
ZXN0ZXIgeyBtYWtlUmVmKHJlcXVlc3RlcikgfQogICAgICwgbV9yZXF1ZXN0ZXJTZWN1cml0eU9y
aWdpbiB7IG1ha2VSZWYocmVxdWVzdGVyU2VjdXJpdHlPcmlnaW4pIH0KICAgICAsIG1fcmVzb3Vy
Y2VSZXF1ZXN0IHsgcmVzb3VyY2VSZXF1ZXN0IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkUmVxdWVzdC5oCmluZGV4IGE3NGM0OTBhNWMyMGZiYWY0MTRhZjY3N2E1MGJhODdhNTE3NjVj
MmIuLjFkODFmZTQ3YTMwNDE4YjkyMjVkMjdhYjFiNDk3N2QzZGNiZjA2OTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZFJlcXVlc3QuaApAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBT
ZWN1cml0eU9yaWdpbjsKIAogY2xhc3MgRnJhbWVMb2FkUmVxdWVzdCB7CiBwdWJsaWM6Ci0gICAg
V0VCQ09SRV9FWFBPUlQgRnJhbWVMb2FkUmVxdWVzdChEb2N1bWVudCYsIFNlY3VyaXR5T3JpZ2lu
JiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIExvY2tI
aXN0b3J5LCBMb2NrQmFja0ZvcndhcmRMaXN0LCBTaG91bGRTZW5kUmVmZXJyZXIsIEFsbG93TmF2
aWdhdGlvblRvSW52YWxpZFVSTCwgTmV3RnJhbWVPcGVuZXJQb2xpY3ksIFNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3ksIEluaXRpYXRlZEJ5TWFpbkZyYW1lLCBTaG91bGRSZXBsYWNlRG9jdW1l
bnRJZkphdmFTY3JpcHRVUkwgPSBSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwsIGNvbnN0
IEF0b21pY1N0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUgPSB7IH0sIGNvbnN0IFN5c3RlbVByZXZp
ZXdJbmZvJiA9IHsgfSk7CisgICAgV0VCQ09SRV9FWFBPUlQgRnJhbWVMb2FkUmVxdWVzdChEb2N1
bWVudCYsIFNlY3VyaXR5T3JpZ2luJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3Ry
aW5nJiBmcmFtZU5hbWUsIExvY2tIaXN0b3J5LCBMb2NrQmFja0ZvcndhcmRMaXN0LCBTaG91bGRT
ZW5kUmVmZXJyZXIsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCwgTmV3RnJhbWVPcGVuZXJQ
b2xpY3ksIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIEluaXRpYXRlZEJ5TWFpbkZyYW1l
LCBTaG91bGRSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwgPSBSZXBsYWNlRG9jdW1lbnRJ
ZkphdmFTY3JpcHRVUkwsIGNvbnN0IEF0b21TdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlID0geyB9
LCBjb25zdCBTeXN0ZW1QcmV2aWV3SW5mbyYgPSB7IH0pOwogICAgIFdFQkNPUkVfRVhQT1JUIEZy
YW1lTG9hZFJlcXVlc3QoRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBTaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5LCBjb25zdCBTdWJzdGl0dXRlRGF0YSYgPSBTdWJzdGl0dXRlRGF0
YSgpKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIH5GcmFtZUxvYWRSZXF1ZXN0KCk7CkBAIC04Nyw3
ICs4Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3koU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBwb2xpY3kpIHsgbV9zaG91bGRPcGVuRXh0
ZXJuYWxVUkxzUG9saWN5ID0gcG9saWN5OyB9CiAgICAgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KCkgY29uc3QgeyByZXR1cm4gbV9zaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OyB9CiAKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGRv
d25sb2FkQXR0cmlidXRlKCkgY29uc3QgeyByZXR1cm4gbV9kb3dubG9hZEF0dHJpYnV0ZTsgfQor
ICAgIGNvbnN0IEF0b21TdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlKCkgY29uc3QgeyByZXR1cm4g
bV9kb3dubG9hZEF0dHJpYnV0ZTsgfQogCiAgICAgSW5pdGlhdGVkQnlNYWluRnJhbWUgaW5pdGlh
dGVkQnlNYWluRnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2luaXRpYXRlZEJ5TWFpbkZyYW1lOyB9
CiAKQEAgLTExNCw3ICsxMTQsNyBAQCBwcml2YXRlOgogICAgIE5ld0ZyYW1lT3BlbmVyUG9saWN5
IG1fbmV3RnJhbWVPcGVuZXJQb2xpY3k7CiAgICAgU2hvdWxkUmVwbGFjZURvY3VtZW50SWZKYXZh
U2NyaXB0VVJMIG1fc2hvdWxkUmVwbGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJMOwogICAgIFNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgbV9zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
IHsgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3cgfTsKLSAgICBB
dG9taWNTdHJpbmcgbV9kb3dubG9hZEF0dHJpYnV0ZTsKKyAgICBBdG9tU3RyaW5nIG1fZG93bmxv
YWRBdHRyaWJ1dGU7CiAgICAgSW5pdGlhdGVkQnlNYWluRnJhbWUgbV9pbml0aWF0ZWRCeU1haW5G
cmFtZSB7IEluaXRpYXRlZEJ5TWFpbkZyYW1lOjpVbmtub3duIH07CiAgICAgU3lzdGVtUHJldmll
d0luZm8gbV9zeXN0ZW1QcmV2aWV3SW5mbzsKICAgICBib29sIG1faXNSZXF1ZXN0RnJvbUNsaWVu
dE9yVXNlcklucHV0IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
CmluZGV4IGExZTBkOTM3OGRlZWZlZGRjMDExMWI3NWEzZDkwYmQ0ZDQyNTEyNmEuLjdlNDEzNjAz
OGE1M2ExYTBkNjQwMzVjZGI4OTVhNGJjMmFiMDU3MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcApAQCAtMzgxLDcgKzM4MSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNoYW5n
ZUxvY2F0aW9uKEZyYW1lTG9hZFJlcXVlc3QmJiByZXF1ZXN0KQogICAgIHVybFNlbGVjdGVkKFdU
Rk1vdmUocmVxdWVzdCksIG51bGxwdHIpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyOjp1cmxTZWxl
Y3RlZChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwYXNzZWRUYXJnZXQsIEV2ZW50KiB0
cmlnZ2VyaW5nRXZlbnQsIExvY2tIaXN0b3J5IGxvY2tIaXN0b3J5LCBMb2NrQmFja0ZvcndhcmRM
aXN0IGxvY2tCYWNrRm9yd2FyZExpc3QsIFNob3VsZFNlbmRSZWZlcnJlciBzaG91bGRTZW5kUmVm
ZXJyZXIsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeSwgT3B0aW9uYWw8TmV3RnJhbWVPcGVuZXJQb2xpY3k+IG9wZW5lclBvbGljeSwgY29u
c3QgQXRvbWljU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSwgY29uc3QgU3lzdGVtUHJldmlld0lu
Zm8mIHN5c3RlbVByZXZpZXdJbmZvLCBPcHRpb25hbDxBZENsaWNrQXR0cmlidXRpb24+JiYgYWRD
bGlja0F0dHJpYnV0aW9uKQordm9pZCBGcmFtZUxvYWRlcjo6dXJsU2VsZWN0ZWQoY29uc3QgVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgcGFzc2VkVGFyZ2V0LCBFdmVudCogdHJpZ2dlcmluZ0V2ZW50
LCBMb2NrSGlzdG9yeSBsb2NrSGlzdG9yeSwgTG9ja0JhY2tGb3J3YXJkTGlzdCBsb2NrQmFja0Zv
cndhcmRMaXN0LCBTaG91bGRTZW5kUmVmZXJyZXIgc2hvdWxkU2VuZFJlZmVycmVyLCBTaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIE9wdGlv
bmFsPE5ld0ZyYW1lT3BlbmVyUG9saWN5PiBvcGVuZXJQb2xpY3ksIGNvbnN0IEF0b21TdHJpbmcm
IGRvd25sb2FkQXR0cmlidXRlLCBjb25zdCBTeXN0ZW1QcmV2aWV3SW5mbyYgc3lzdGVtUHJldmll
d0luZm8sIE9wdGlvbmFsPEFkQ2xpY2tBdHRyaWJ1dGlvbj4mJiBhZENsaWNrQXR0cmlidXRpb24p
CiB7CiAgICAgYXV0byogZnJhbWUgPSBsZXhpY2FsRnJhbWVGcm9tQ29tbW9uVk0oKTsKICAgICBh
dXRvIGluaXRpYXRlZEJ5TWFpbkZyYW1lID0gZnJhbWUgJiYgZnJhbWUtPmlzTWFpbkZyYW1lKCkg
PyBJbml0aWF0ZWRCeU1haW5GcmFtZTo6WWVzIDogSW5pdGlhdGVkQnlNYWluRnJhbWU6OlVua25v
d247CkBAIC0zNjc3LDcgKzM2NzcsNyBAQCBib29sIEZyYW1lTG9hZGVyOjpzaG91bGRUcmVhdFVS
TEFzU3JjZG9jRG9jdW1lbnQoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiAgICAgcmV0dXJuIG93bmVy
RWxlbWVudC0+aGFzQXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihzcmNkb2NBdHRyKTsK
IH0KIAotRnJhbWUqIEZyYW1lTG9hZGVyOjpmaW5kRnJhbWVGb3JOYXZpZ2F0aW9uKGNvbnN0IEF0
b21pY1N0cmluZyYgbmFtZSwgRG9jdW1lbnQqIGFjdGl2ZURvY3VtZW50KQorRnJhbWUqIEZyYW1l
TG9hZGVyOjpmaW5kRnJhbWVGb3JOYXZpZ2F0aW9uKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIERv
Y3VtZW50KiBhY3RpdmVEb2N1bWVudCkKIHsKICAgICAvLyBGSVhNRTogRXZlbnR1YWxseSBhbGwg
Y2FsbGVycyBzaG91bGQgc3VwcGx5IHRoZSBhY3R1YWwgYWN0aXZlRG9jdW1lbnQgc28gd2UgY2Fu
IGNhbGwgY2FuTmF2aWdhdGUgd2l0aCB0aGUgcmlnaHQgZG9jdW1lbnQuCiAgICAgaWYgKCFhY3Rp
dmVEb2N1bWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKaW5kZXggZGVkYmJiY2Q1
MjUyY2NmMWUzYjQyMDE2OGFlM2EzNTY1YjFkNTBmMC4uZDQ3MzI2OTg3ZDgyNDE3Y2FmZTI1MDMy
YjZmNTUzNDY5OWIzODhiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKQEAgLTEy
Niw3ICsxMjYsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgbG9uZyBsb2FkUmVzb3VyY2VTeW5j
aHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIENsaWVudENyZWRlbnRpYWxQb2xpY3ks
IGNvbnN0IEZldGNoT3B0aW9ucyYsIGNvbnN0IEhUVFBIZWFkZXJNYXAmLCBSZXNvdXJjZUVycm9y
JiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBkYXRhKTsKIAogICAg
IHZvaWQgY2hhbmdlTG9jYXRpb24oRnJhbWVMb2FkUmVxdWVzdCYmKTsKLSAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHVybFNlbGVjdGVkKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBF
dmVudCosIExvY2tIaXN0b3J5LCBMb2NrQmFja0ZvcndhcmRMaXN0LCBTaG91bGRTZW5kUmVmZXJy
ZXIsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIE9wdGlvbmFsPE5ld0ZyYW1lT3BlbmVy
UG9saWN5PiA9IFdURjo6bnVsbG9wdCwgY29uc3QgQXRvbWljU3RyaW5nJiBkb3dubG9hZEF0dHJp
YnV0ZSA9IG51bGxBdG9tKCksIGNvbnN0IFN5c3RlbVByZXZpZXdJbmZvJiA9IHsgfSwgT3B0aW9u
YWw8QWRDbGlja0F0dHJpYnV0aW9uPiYmID0gV1RGOjpudWxsb3B0KTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHVybFNlbGVjdGVkKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBF
dmVudCosIExvY2tIaXN0b3J5LCBMb2NrQmFja0ZvcndhcmRMaXN0LCBTaG91bGRTZW5kUmVmZXJy
ZXIsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIE9wdGlvbmFsPE5ld0ZyYW1lT3BlbmVy
UG9saWN5PiA9IFdURjo6bnVsbG9wdCwgY29uc3QgQXRvbVN0cmluZyYgZG93bmxvYWRBdHRyaWJ1
dGUgPSBudWxsQXRvbSgpLCBjb25zdCBTeXN0ZW1QcmV2aWV3SW5mbyYgPSB7IH0sIE9wdGlvbmFs
PEFkQ2xpY2tBdHRyaWJ1dGlvbj4mJiA9IFdURjo6bnVsbG9wdCk7CiAgICAgdm9pZCBzdWJtaXRG
b3JtKFJlZjxGb3JtU3VibWlzc2lvbj4mJik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJl
bG9hZChPcHRpb25TZXQ8UmVsb2FkT3B0aW9uPiA9IHsgfSk7CkBAIC0yNzUsNyArMjc1LDcgQEAg
cHVibGljOgogCiAgICAgRnJhbWVMb2FkZXJTdGF0ZU1hY2hpbmUmIHN0YXRlTWFjaGluZSgpIHsg
cmV0dXJuIG1fc3RhdGVNYWNoaW5lOyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBGcmFtZSogZmlu
ZEZyYW1lRm9yTmF2aWdhdGlvbihjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIERvY3VtZW50KiBh
Y3RpdmVEb2N1bWVudCA9IG51bGxwdHIpOworICAgIFdFQkNPUkVfRVhQT1JUIEZyYW1lKiBmaW5k
RnJhbWVGb3JOYXZpZ2F0aW9uKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIERvY3VtZW50KiBhY3Rp
dmVEb2N1bWVudCA9IG51bGxwdHIpOwogCiAgICAgdm9pZCBhcHBseVVzZXJBZ2VudElmTmVlZGVk
KFJlc291cmNlUmVxdWVzdCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
SW1hZ2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcApp
bmRleCAwM2ZiYjMxOGMzZTJkMzYwOGU3NzQ2MzI3N2QxNjEzODAzYjNlMDBjLi44NmQ2NGVhMzlh
YzQzZWQ5ZjE1NjJjMzRmZTgyZWU3MzIzZjg2NGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFn
ZUxvYWRlci5jcHAKQEAgLTE2NSw3ICsxNjUsNyBAQCB2b2lkIEltYWdlTG9hZGVyOjp1cGRhdGVG
cm9tRWxlbWVudCgpCiAgICAgaWYgKCFkb2N1bWVudC5oYXNMaXZpbmdSZW5kZXJUcmVlKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIEF0b21pY1N0cmluZyBhdHRyID0gZWxlbWVudCgpLmltYWdl
U291cmNlVVJMKCk7CisgICAgQXRvbVN0cmluZyBhdHRyID0gZWxlbWVudCgpLmltYWdlU291cmNl
VVJMKCk7CiAKICAgICAvLyBBdm9pZCBsb2FkaW5nIGEgVVJMIHdlIGFscmVhZHkgZmFpbGVkIHRv
IGxvYWQuCiAgICAgaWYgKCFtX2ZhaWxlZExvYWRVUkwuaXNFbXB0eSgpICYmIGF0dHIgPT0gbV9m
YWlsZWRMb2FkVVJMKQpAQCAtMzkyLDcgKzM5Miw3IEBAIHZvaWQgSW1hZ2VMb2FkZXI6OmRlY29k
ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgCi0gICAgQXRvbWljU3RyaW5nIGF0dHIgPSBlbGVtZW50KCkuaW1hZ2VTb3VyY2VVUkwo
KTsKKyAgICBBdG9tU3RyaW5nIGF0dHIgPSBlbGVtZW50KCkuaW1hZ2VTb3VyY2VVUkwoKTsKICAg
ICBpZiAoc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGF0dHIpLmlzRW1wdHkoKSkg
ewogICAgICAgICBkZWNvZGVFcnJvcigiTWlzc2luZyBzb3VyY2UgVVJMLiIpOwogICAgICAgICBy
ZXR1cm47CkBAIC00NDUsNyArNDQ1LDcgQEAgdm9pZCBJbWFnZUxvYWRlcjo6dGltZXJGaXJlZCgp
CiB2b2lkIEltYWdlTG9hZGVyOjpkaXNwYXRjaFBlbmRpbmdFdmVudChJbWFnZUV2ZW50U2VuZGVy
KiBldmVudFNlbmRlcikKIHsKICAgICBBU1NFUlQoZXZlbnRTZW5kZXIgPT0gJmJlZm9yZUxvYWRF
dmVudFNlbmRlcigpIHx8IGV2ZW50U2VuZGVyID09ICZsb2FkRXZlbnRTZW5kZXIoKSB8fCBldmVu
dFNlbmRlciA9PSAmZXJyb3JFdmVudFNlbmRlcigpKTsKLSAgICBjb25zdCBBdG9taWNTdHJpbmcm
IGV2ZW50VHlwZSA9IGV2ZW50U2VuZGVyLT5ldmVudFR5cGUoKTsKKyAgICBjb25zdCBBdG9tU3Ry
aW5nJiBldmVudFR5cGUgPSBldmVudFNlbmRlci0+ZXZlbnRUeXBlKCk7CiAgICAgaWYgKGV2ZW50
VHlwZSA9PSBldmVudE5hbWVzKCkuYmVmb3JlbG9hZEV2ZW50KQogICAgICAgICBkaXNwYXRjaFBl
bmRpbmdCZWZvcmVMb2FkRXZlbnQoKTsKICAgICBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMo
KS5sb2FkRXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2Fk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5oCmluZGV4IGJkNGJhOWU2
NjRkYWNjMDY2OTY5ZmRmZmEzYmM1MWMzOWI5NjRjYWUuLjBjZGZhYWQ3NWJiZGY3YjBiYzdkZDI2
NWQ1YmYwZTMyMTE4ZjA1N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFn
ZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5oCkBAIC0y
Nyw3ICsyNyw3IEBACiAjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRl
ICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9B
dG9taWNTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtODAsNyArODAsNyBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6
CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoTG9hZEV2ZW50KCkgPSAwOwotICAgIHZpcnR1YWwg
U3RyaW5nIHNvdXJjZVVSSShjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBTdHJpbmcgc291cmNlVVJJKGNvbnN0IEF0b21TdHJpbmcmKSBjb25zdCA9IDA7CiAKICAg
ICB2b2lkIHVwZGF0ZWRIYXNQZW5kaW5nRXZlbnQoKTsKIApAQCAtMTA0LDcgKzEwNCw3IEBAIHBy
aXZhdGU6CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkSW1hZ2U+IG1faW1hZ2U7CiAg
ICAgVGltZXIgbV9kZXJlZkVsZW1lbnRUaW1lcjsKICAgICBSZWZQdHI8RWxlbWVudD4gbV9wcm90
ZWN0ZWRFbGVtZW50OwotICAgIEF0b21pY1N0cmluZyBtX2ZhaWxlZExvYWRVUkw7CisgICAgQXRv
bVN0cmluZyBtX2ZhaWxlZExvYWRVUkw7CiAgICAgVmVjdG9yPFJlZlB0cjxEZWZlcnJlZFByb21p
c2U+LCAxPiBtX2RlY29kaW5nUHJvbWlzZXM7CiAgICAgYm9vbCBtX2hhc1BlbmRpbmdCZWZvcmVM
b2FkRXZlbnQgOiAxOwogICAgIGJvb2wgbV9oYXNQZW5kaW5nTG9hZEV2ZW50IDogMTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmNwcAppbmRleCBmMjZhOWFhZjJmZDc5
NzRjZDNlNzFjODU5YWI0M2ZlZTIwZjgwM2ZmLi42MmJhMmRkMmY3NzBhNDA2ZTE1YzkwMzk1ZTQx
N2M0MmMyOGY1MjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlv
bkFjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24u
Y3BwCkBAIC05NCw3ICs5NCw3IEBAIHN0YXRpYyBPcHRpb25hbDxOYXZpZ2F0aW9uQWN0aW9uOjpN
b3VzZUV2ZW50RGF0YT4gbW91c2VFdmVudERhdGFGb3JGaXJzdE1vdXNlRXZlCiAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKIH0KIAotTmF2aWdhdGlvbkFjdGlvbjo6TmF2aWdhdGlvbkFjdGlvbihE
b2N1bWVudCYgcmVxdWVzdGVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVz
dCwgSW5pdGlhdGVkQnlNYWluRnJhbWUgaW5pdGlhdGVkQnlNYWluRnJhbWUsIE5hdmlnYXRpb25U
eXBlIHR5cGUsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeSwgRXZlbnQqIGV2ZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIGRvd25sb2FkQXR0
cmlidXRlKQorTmF2aWdhdGlvbkFjdGlvbjo6TmF2aWdhdGlvbkFjdGlvbihEb2N1bWVudCYgcmVx
dWVzdGVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCwgSW5pdGlhdGVk
QnlNYWluRnJhbWUgaW5pdGlhdGVkQnlNYWluRnJhbWUsIE5hdmlnYXRpb25UeXBlIHR5cGUsIFNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwg
RXZlbnQqIGV2ZW50LCBjb25zdCBBdG9tU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSkKICAgICA6
IG1fcmVxdWVzdGVyIHsgcmVxdWVzdGVyIH0KICAgICAsIG1fcmVzb3VyY2VSZXF1ZXN0IHsgcmVz
b3VyY2VSZXF1ZXN0IH0KICAgICAsIG1fdHlwZSB7IHR5cGUgfQpAQCAtMTIwLDcgKzEyMCw3IEBA
IHN0YXRpYyBOYXZpZ2F0aW9uVHlwZSBuYXZpZ2F0aW9uVHlwZShGcmFtZUxvYWRUeXBlIGZyYW1l
TG9hZFR5cGUsIGJvb2wgaXNGb3JtU3ViCiAgICAgcmV0dXJuIE5hdmlnYXRpb25UeXBlOjpPdGhl
cjsKIH0KIAotTmF2aWdhdGlvbkFjdGlvbjo6TmF2aWdhdGlvbkFjdGlvbihEb2N1bWVudCYgcmVx
dWVzdGVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCwgSW5pdGlhdGVk
QnlNYWluRnJhbWUgaW5pdGlhdGVkQnlNYWluRnJhbWUsIEZyYW1lTG9hZFR5cGUgZnJhbWVMb2Fk
VHlwZSwgYm9vbCBpc0Zvcm1TdWJtaXNzaW9uLCBFdmVudCogZXZlbnQsIFNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgY29uc3QgQXRvbWlj
U3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSkKK05hdmlnYXRpb25BY3Rpb246Ok5hdmlnYXRpb25B
Y3Rpb24oRG9jdW1lbnQmIHJlcXVlc3RlciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJj
ZVJlcXVlc3QsIEluaXRpYXRlZEJ5TWFpbkZyYW1lIGluaXRpYXRlZEJ5TWFpbkZyYW1lLCBGcmFt
ZUxvYWRUeXBlIGZyYW1lTG9hZFR5cGUsIGJvb2wgaXNGb3JtU3VibWlzc2lvbiwgRXZlbnQqIGV2
ZW50LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3ksIGNvbnN0IEF0b21TdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlKQogICAgIDogbV9yZXF1
ZXN0ZXIgeyByZXF1ZXN0ZXIgfQogICAgICwgbV9yZXNvdXJjZVJlcXVlc3QgeyByZXNvdXJjZVJl
cXVlc3QgfQogICAgICwgbV90eXBlIHsgbmF2aWdhdGlvblR5cGUoZnJhbWVMb2FkVHlwZSwgaXNG
b3JtU3VibWlzc2lvbiwgISFldmVudCkgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL05hdmlnYXRpb25BY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9u
QWN0aW9uLmgKaW5kZXggNGI2MTFiZjViZTY3YmE3ZTAxMzE0NjM5OTAyZmNlNzlhODQ0OTllYy4u
MzVjOTYxYWExNTQ3YjhlYTBjNGI5MDQwNzAzYzg1ZDNlYThlN2U1NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5oCkBAIC01Myw4ICs1Myw4IEBAIGNsYXNzIFVJRXZl
bnRXaXRoS2V5U3RhdGU7CiBjbGFzcyBOYXZpZ2F0aW9uQWN0aW9uIHsKIHB1YmxpYzoKICAgICBO
YXZpZ2F0aW9uQWN0aW9uKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgTmF2aWdhdGlvbkFjdGlvbihE
b2N1bWVudCYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIEluaXRpYXRlZEJ5TWFpbkZyYW1lLCBO
YXZpZ2F0aW9uVHlwZSA9IE5hdmlnYXRpb25UeXBlOjpPdGhlciwgU2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeSA9IFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93
LCBFdmVudCogPSBudWxscHRyLCBjb25zdCBBdG9taWNTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRl
ID0gbnVsbEF0b20oKSk7Ci0gICAgTmF2aWdhdGlvbkFjdGlvbihEb2N1bWVudCYsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYsIEluaXRpYXRlZEJ5TWFpbkZyYW1lLCBGcmFtZUxvYWRUeXBlLCBib29s
IGlzRm9ybVN1Ym1pc3Npb24sIEV2ZW50KiA9IG51bGxwdHIsIFNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3kgPSBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdywg
Y29uc3QgQXRvbWljU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSA9IG51bGxBdG9tKCkpOworICAg
IFdFQkNPUkVfRVhQT1JUIE5hdmlnYXRpb25BY3Rpb24oRG9jdW1lbnQmLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmLCBJbml0aWF0ZWRCeU1haW5GcmFtZSwgTmF2aWdhdGlvblR5cGUgPSBOYXZpZ2F0
aW9uVHlwZTo6T3RoZXIsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSBTaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdywgRXZlbnQqID0gbnVsbHB0ciwgY29u
c3QgQXRvbVN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUgPSBudWxsQXRvbSgpKTsKKyAgICBOYXZp
Z2F0aW9uQWN0aW9uKERvY3VtZW50JiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgSW5pdGlhdGVk
QnlNYWluRnJhbWUsIEZyYW1lTG9hZFR5cGUsIGJvb2wgaXNGb3JtU3VibWlzc2lvbiwgRXZlbnQq
ID0gbnVsbHB0ciwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IFNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93LCBjb25zdCBBdG9tU3RyaW5nJiBkb3dubG9h
ZEF0dHJpYnV0ZSA9IG51bGxBdG9tKCkpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgfk5hdmlnYXRp
b25BY3Rpb24oKTsKIApAQCAtMTE3LDcgKzExNyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBw
b2xpY3kpIHsgIG1fc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IHBvbGljeTsgfQogICAg
IEluaXRpYXRlZEJ5TWFpbkZyYW1lIGluaXRpYXRlZEJ5TWFpbkZyYW1lKCkgY29uc3QgeyByZXR1
cm4gbV9pbml0aWF0ZWRCeU1haW5GcmFtZTsgfQogCi0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBk
b3dubG9hZEF0dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZG93bmxvYWRBdHRyaWJ1dGU7IH0K
KyAgICBjb25zdCBBdG9tU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fZG93bmxvYWRBdHRyaWJ1dGU7IH0KIAogICAgIGJvb2wgdHJlYXRBc1NhbWVPcmlnaW5OYXZp
Z2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV90cmVhdEFzU2FtZU9yaWdpbk5hdmlnYXRpb247IH0K
IApAQCAtMTUzLDcgKzE1Myw3IEBAIHByaXZhdGU6CiAgICAgT3B0aW9uYWw8VUlFdmVudFdpdGhL
ZXlTdGF0ZURhdGE+IG1fa2V5U3RhdGVFdmVudERhdGE7CiAgICAgT3B0aW9uYWw8TW91c2VFdmVu
dERhdGE+IG1fbW91c2VFdmVudERhdGE7CiAgICAgUmVmUHRyPFVzZXJHZXN0dXJlVG9rZW4+IG1f
dXNlckdlc3R1cmVUb2tlbiB7IFVzZXJHZXN0dXJlSW5kaWNhdG9yOjpjdXJyZW50VXNlckdlc3R1
cmUoKSB9OwotICAgIEF0b21pY1N0cmluZyBtX2Rvd25sb2FkQXR0cmlidXRlOworICAgIEF0b21T
dHJpbmcgbV9kb3dubG9hZEF0dHJpYnV0ZTsKICAgICBib29sIG1fdHJlYXRBc1NhbWVPcmlnaW5O
YXZpZ2F0aW9uOwogICAgIGJvb2wgbV9oYXNPcGVuZWRGcmFtZXMgeyBmYWxzZSB9OwogICAgIGJv
b2wgbV9vcGVuZWRCeURPTVdpdGhPcGVuZXIgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlVGltaW5nSW5mb3JtYXRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlVGltaW5nSW5mb3JtYXRpb24uY3BwCmluZGV4IGYzMWUzNTY1
ZTE0M2FjMzZlNmM1ZGVhZWU0ZmRmNmE1N2RjMzhjMzYuLmFjMzViZWQ3NmMxMmI4ODdiNTllZjlm
MGYxZjdlZTc2OTliOTljMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZVRpbWluZ0luZm9ybWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VUaW1pbmdJbmZvcm1hdGlvbi5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBSZXNvdXJj
ZVRpbWluZ0luZm9ybWF0aW9uOjphZGRSZXNvdXJjZVRpbWluZyhDYWNoZWRSZXNvdXJjZSYgcmVz
b3VyY2UsIERvY3UKICAgICBpbmZvLmFkZGVkID0gQWRkZWQ7CiB9CiAKLXZvaWQgUmVzb3VyY2VU
aW1pbmdJbmZvcm1hdGlvbjo6c3RvcmVSZXNvdXJjZVRpbWluZ0luaXRpYXRvckluZm9ybWF0aW9u
KGNvbnN0IENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiYgcmVzb3VyY2UsIGNv
bnN0IEF0b21pY1N0cmluZyYgaW5pdGlhdG9yTmFtZSwgRnJhbWUqIGZyYW1lKQordm9pZCBSZXNv
dXJjZVRpbWluZ0luZm9ybWF0aW9uOjpzdG9yZVJlc291cmNlVGltaW5nSW5pdGlhdG9ySW5mb3Jt
YXRpb24oY29uc3QgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+JiByZXNvdXJj
ZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdGlhdG9yTmFtZSwgRnJhbWUqIGZyYW1lKQogewogICAg
IEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnJlc291cmNl
VGltaW5nRW5hYmxlZCgpKTsKICAgICBBU1NFUlQocmVzb3VyY2UuZ2V0KCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlVGltaW5nSW5mb3JtYXRpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZVRpbWluZ0luZm9ybWF0aW9uLmgKaW5kZXggODE1
NGVmYWQxN2M1N2YxODNhZTk2YzY5NjgwYzIwYzQ0OTkzMjA3Yy4uNjgyNDQzMTMxM2I3ZDlhNTBh
OTM5YWJmN2QzZWZlOTg5ZmQ2MTJkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlVGltaW5nSW5mb3JtYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VUaW1pbmdJbmZvcm1hdGlvbi5oCkBAIC00MSwxMiArNDEsMTIgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBib29sIHNob3VsZEFkZFJlc291cmNlVGltaW5nKENhY2hlZFJlc291cmNlJik7
CiAKICAgICB2b2lkIGFkZFJlc291cmNlVGltaW5nKENhY2hlZFJlc291cmNlJiwgRG9jdW1lbnQm
LCBSZXNvdXJjZVRpbWluZyYmKTsKLSAgICB2b2lkIHN0b3JlUmVzb3VyY2VUaW1pbmdJbml0aWF0
b3JJbmZvcm1hdGlvbihjb25zdCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4m
LCBjb25zdCBBdG9taWNTdHJpbmcmLCBGcmFtZSopOworICAgIHZvaWQgc3RvcmVSZXNvdXJjZVRp
bWluZ0luaXRpYXRvckluZm9ybWF0aW9uKGNvbnN0IENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hl
ZFJlc291cmNlPiYsIGNvbnN0IEF0b21TdHJpbmcmLCBGcmFtZSopOwogCiBwcml2YXRlOgogICAg
IGVudW0gQWxyZWFkeUFkZGVkIHsgTm90WWV0QWRkZWQsIEFkZGVkIH07CiAgICAgc3RydWN0IElu
aXRpYXRvckluZm8gewotICAgICAgICBBdG9taWNTdHJpbmcgbmFtZTsKKyAgICAgICAgQXRvbVN0
cmluZyBuYW1lOwogICAgICAgICBBbHJlYWR5QWRkZWQgYWRkZWQ7CiAgICAgfTsKICAgICBIYXNo
TWFwPENhY2hlZFJlc291cmNlKiwgSW5pdGlhdG9ySW5mbz4gbV9pbml0aWF0b3JNYXA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmNwcAppbmRleCA1Zjk4ZDU1NmY1NWZiMzEw
ZDI5MDIyZDljMmZmNDZhYjU3MjZmOGNmLi45NjIyYzQ2NDgzNjdkOTBlNDZiYWIxMDhmZjU0Nzg3
ZjMzOTQzNjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVMb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5jcHAKQEAg
LTczLDcgKzczLDcgQEAgdm9pZCBTdWJmcmFtZUxvYWRlcjo6Y2xlYXIoKQogICAgIG1fY29udGFp
bnNQbHVnaW5zID0gZmFsc2U7CiB9CiAKLWJvb2wgU3ViZnJhbWVMb2FkZXI6OnJlcXVlc3RGcmFt
ZShIVE1MRnJhbWVPd25lckVsZW1lbnQmIG93bmVyRWxlbWVudCwgY29uc3QgU3RyaW5nJiB1cmxT
dHJpbmcsIGNvbnN0IEF0b21pY1N0cmluZyYgZnJhbWVOYW1lLCBMb2NrSGlzdG9yeSBsb2NrSGlz
dG9yeSwgTG9ja0JhY2tGb3J3YXJkTGlzdCBsb2NrQmFja0ZvcndhcmRMaXN0KQorYm9vbCBTdWJm
cmFtZUxvYWRlcjo6cmVxdWVzdEZyYW1lKEhUTUxGcmFtZU93bmVyRWxlbWVudCYgb3duZXJFbGVt
ZW50LCBjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgQXRvbVN0cmluZyYgZnJhbWVOYW1l
LCBMb2NrSGlzdG9yeSBsb2NrSGlzdG9yeSwgTG9ja0JhY2tGb3J3YXJkTGlzdCBsb2NrQmFja0Zv
cndhcmRMaXN0KQogewogICAgIC8vIFN1cHBvcnQgZm9yIDxmcmFtZSBzcmM9ImphdmFzY3JpcHQ6
c3RyaW5nIj4KICAgICBVUkwgc2NyaXB0VVJMOwpAQCAtMjE4LDcgKzIxOCw3IEBAIHN0YXRpYyB2
b2lkIGxvZ1BsdWdpblJlcXVlc3QoUGFnZSogcGFnZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
Y29uc3QgU3RyaW5nJiB1CiAgICAgcGFnZS0+c2F3UGx1Z2luKGRlc2NyaXB0aW9uKTsKIH0KIAot
Ym9vbCBTdWJmcmFtZUxvYWRlcjo6cmVxdWVzdE9iamVjdChIVE1MUGx1Z0luSW1hZ2VFbGVtZW50
JiBvd25lckVsZW1lbnQsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBBdG9taWNTdHJpbmcmIGZy
YW1lTmFtZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBh
cmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcykKK2Jvb2wgU3ViZnJh
bWVMb2FkZXI6OnJlcXVlc3RPYmplY3QoSFRNTFBsdWdJbkltYWdlRWxlbWVudCYgb3duZXJFbGVt
ZW50LCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgQXRvbVN0cmluZyYgZnJhbWVOYW1lLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29u
c3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzKQogewogICAgIGlmICh1cmwuaXNFbXB0eSgp
ICYmIG1pbWVUeXBlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjk2LDcg
KzI5Niw3IEBAIFJlZlB0cjxXaWRnZXQ+IFN1YmZyYW1lTG9hZGVyOjpjcmVhdGVKYXZhQXBwbGV0
V2lkZ2V0KGNvbnN0IEludFNpemUmIHNpemUsIEhUTUxBCiAgICAgcmV0dXJuIHdpZGdldDsKIH0K
IAotRnJhbWUqIFN1YmZyYW1lTG9hZGVyOjpsb2FkT3JSZWRpcmVjdFN1YmZyYW1lKEhUTUxGcmFt
ZU93bmVyRWxlbWVudCYgb3duZXJFbGVtZW50LCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGNvbnN0
IEF0b21pY1N0cmluZyYgZnJhbWVOYW1lLCBMb2NrSGlzdG9yeSBsb2NrSGlzdG9yeSwgTG9ja0Jh
Y2tGb3J3YXJkTGlzdCBsb2NrQmFja0ZvcndhcmRMaXN0KQorRnJhbWUqIFN1YmZyYW1lTG9hZGVy
Ojpsb2FkT3JSZWRpcmVjdFN1YmZyYW1lKEhUTUxGcmFtZU93bmVyRWxlbWVudCYgb3duZXJFbGVt
ZW50LCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IEF0b21TdHJpbmcmIGZyYW1lTmFtZSwg
TG9ja0hpc3RvcnkgbG9ja0hpc3RvcnksIExvY2tCYWNrRm9yd2FyZExpc3QgbG9ja0JhY2tGb3J3
YXJkTGlzdCkKIHsKICAgICBhdXRvJiBpbml0aWF0aW5nRG9jdW1lbnQgPSBvd25lckVsZW1lbnQu
ZG9jdW1lbnQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1l
TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIuaAppbmRleCAy
Y2FhZTljYTYwOThhNzUzM2MzMDkzODk2ZGMyMDMxMjZlNjg5NDc2Li5jYzdjYzQyNDM3NzYxNjhj
OGNkMWQ5M2Q3YTU2M2M3MDFhMGQwNjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvU3ViZnJhbWVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVM
b2FkZXIuaApAQCAtNTUsOCArNTUsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFyKCk7CiAK
LSAgICBib29sIHJlcXVlc3RGcmFtZShIVE1MRnJhbWVPd25lckVsZW1lbnQmLCBjb25zdCBTdHJp
bmcmIHVybCwgY29uc3QgQXRvbWljU3RyaW5nJiBmcmFtZU5hbWUsIExvY2tIaXN0b3J5ID0gTG9j
a0hpc3Rvcnk6OlllcywgTG9ja0JhY2tGb3J3YXJkTGlzdCA9IExvY2tCYWNrRm9yd2FyZExpc3Q6
Olllcyk7Ci0gICAgYm9vbCByZXF1ZXN0T2JqZWN0KEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQmLCBj
b25zdCBTdHJpbmcmIHVybCwgY29uc3QgQXRvbWljU3RyaW5nJiBmcmFtZU5hbWUsCisgICAgYm9v
bCByZXF1ZXN0RnJhbWUoSFRNTEZyYW1lT3duZXJFbGVtZW50JiwgY29uc3QgU3RyaW5nJiB1cmws
IGNvbnN0IEF0b21TdHJpbmcmIGZyYW1lTmFtZSwgTG9ja0hpc3RvcnkgPSBMb2NrSGlzdG9yeTo6
WWVzLCBMb2NrQmFja0ZvcndhcmRMaXN0ID0gTG9ja0JhY2tGb3J3YXJkTGlzdDo6WWVzKTsKKyAg
ICBib29sIHJlcXVlc3RPYmplY3QoSFRNTFBsdWdJbkltYWdlRWxlbWVudCYsIGNvbnN0IFN0cmlu
ZyYgdXJsLCBjb25zdCBBdG9tU3RyaW5nJiBmcmFtZU5hbWUsCiAgICAgICAgIGNvbnN0IFN0cmlu
ZyYgc2VydmljZVR5cGUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMpOwogCiAgICAgUmVmUHRyPFdpZGdldD4gY3JlYXRl
SmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRTaXplJiwgSFRNTEFwcGxldEVsZW1lbnQmLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFt
VmFsdWVzKTsKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGJvb2wg
cmVxdWVzdFBsdWdpbihIVE1MUGx1Z0luSW1hZ2VFbGVtZW50JiwgY29uc3QgVVJMJiwgY29uc3Qg
U3RyaW5nJiBzZXJ2aWNlVHlwZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcywgYm9vbCB1c2VGYWxsYmFjayk7Ci0gICAg
RnJhbWUqIGxvYWRPclJlZGlyZWN0U3ViZnJhbWUoSFRNTEZyYW1lT3duZXJFbGVtZW50JiwgY29u
c3QgVVJMJiwgY29uc3QgQXRvbWljU3RyaW5nJiBmcmFtZU5hbWUsIExvY2tIaXN0b3J5LCBMb2Nr
QmFja0ZvcndhcmRMaXN0KTsKKyAgICBGcmFtZSogbG9hZE9yUmVkaXJlY3RTdWJmcmFtZShIVE1M
RnJhbWVPd25lckVsZW1lbnQmLCBjb25zdCBVUkwmLCBjb25zdCBBdG9tU3RyaW5nJiBmcmFtZU5h
bWUsIExvY2tIaXN0b3J5LCBMb2NrQmFja0ZvcndhcmRMaXN0KTsKICAgICBGcmFtZSogbG9hZFN1
YmZyYW1lKEhUTUxGcmFtZU93bmVyRWxlbWVudCYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgU3RyaW5nJiByZWZlcnJlcik7CiAgICAgYm9vbCBsb2FkUGx1Z2luKEhUTUxQ
bHVnSW5JbWFnZUVsZW1lbnQmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBh
cmFtVmFsdWVzLCBib29sIHVzZUZhbGxiYWNrKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJl
YWRhYmxlTG9hZGVyLmgKaW5kZXggODYxNzQ4YjdjN2I1YjMyNzU3ODg5YzBmMWEzY2UwNTIwZmRk
Y2NlZC4uNWMyYTA4ZTVlODY4NDU3NGVlOTRjN2I3YzA5NjU2YTAzODNmMzExOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5oCkBAIC0zMyw3ICszMyw3IEBACiAjaW5j
bHVkZSAiUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0
cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkBAIC02NCw3ICs2NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
VGhyZWFkYWJsZUxvYWRlck9wdGlvbnMgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAKICAgICAgICAg
Q29udGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQgY29udGVudFNlY3VyaXR5UG9saWN5RW5m
b3JjZW1lbnQgeyBDb250ZW50U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVudDo6RW5mb3JjZUNvbm5l
Y3RTcmNEaXJlY3RpdmUgfTsKLSAgICAgICAgU3RyaW5nIGluaXRpYXRvcjsgLy8gVGhpcyBjYW5u
b3QgYmUgYW4gQXRvbWljU3RyaW5nLCBhcyBpc29sYXRlZENvcHkoKSB3b3VsZG4ndCBjcmVhdGUg
YW4gb2JqZWN0IHRoYXQncyBzYWZlIGZvciBwYXNzaW5nIHRvIGFub3RoZXIgdGhyZWFkLgorICAg
ICAgICBTdHJpbmcgaW5pdGlhdG9yOyAvLyBUaGlzIGNhbm5vdCBiZSBhbiBBdG9tU3RyaW5nLCBh
cyBpc29sYXRlZENvcHkoKSB3b3VsZG4ndCBjcmVhdGUgYW4gb2JqZWN0IHRoYXQncyBzYWZlIGZv
ciBwYXNzaW5nIHRvIGFub3RoZXIgdGhyZWFkLgogICAgICAgICBSZXNwb25zZUZpbHRlcmluZ1Bv
bGljeSBmaWx0ZXJpbmdQb2xpY3kgeyBSZXNwb25zZUZpbHRlcmluZ1BvbGljeTo6RGlzYWJsZSB9
OwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKaW5kZXggOGUzODQ2OTNiZjVkZjRhNTczZjdmM2Zl
NTA4OGE3M2M2M2I0ODg4ZS4uMDQ0ZDdjODljNDM4NWRlMDIwZjJiMWNhZWJjOGY5ODA4YjVjZTRj
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVHcm91cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVHcm91cC5jcHAKQEAgLTEwMDAsMTMgKzEwMDAsMTMgQEAgdm9pZCBBcHBsaWNh
dGlvbkNhY2hlR3JvdXA6OnNjaGVkdWxlUmVhY2hlZE1heEFwcENhY2hlU2l6ZUNhbGxiYWNrKCkK
ICAgICAvLyBUaGUgdGltZXIgd2lsbCBkZWxldGUgaXRzZWxmIG9uY2UgaXQgZmlyZXMuCiB9CiAK
LXZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpwb3N0TGlzdGVuZXJUYXNrKGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBpbnQgcHJvZ3Jlc3NUb3RhbCwgaW50IHByb2dyZXNzRG9uZSwg
Y29uc3QgSGFzaFNldDxEb2N1bWVudExvYWRlcio+JiBsb2FkZXJTZXQpCit2b2lkIEFwcGxpY2F0
aW9uQ2FjaGVHcm91cDo6cG9zdExpc3RlbmVyVGFzayhjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5
cGUsIGludCBwcm9ncmVzc1RvdGFsLCBpbnQgcHJvZ3Jlc3NEb25lLCBjb25zdCBIYXNoU2V0PERv
Y3VtZW50TG9hZGVyKj4mIGxvYWRlclNldCkKIHsKICAgICBmb3IgKGF1dG8mIGxvYWRlciA6IGxv
YWRlclNldCkKICAgICAgICAgcG9zdExpc3RlbmVyVGFzayhldmVudFR5cGUsIHByb2dyZXNzVG90
YWwsIHByb2dyZXNzRG9uZSwgKmxvYWRlcik7CiB9CiAKLXZvaWQgQXBwbGljYXRpb25DYWNoZUdy
b3VwOjpwb3N0TGlzdGVuZXJUYXNrKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBpbnQg
cHJvZ3Jlc3NUb3RhbCwgaW50IHByb2dyZXNzRG9uZSwgRG9jdW1lbnRMb2FkZXImIGxvYWRlcikK
K3ZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpwb3N0TGlzdGVuZXJUYXNrKGNvbnN0IEF0b21T
dHJpbmcmIGV2ZW50VHlwZSwgaW50IHByb2dyZXNzVG90YWwsIGludCBwcm9ncmVzc0RvbmUsIERv
Y3VtZW50TG9hZGVyJiBsb2FkZXIpCiB7CiAgICAgYXV0byogZnJhbWUgPSBsb2FkZXIuZnJhbWUo
KTsKICAgICBpZiAoIWZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oCmluZGV4IDQ3ZDg5MzRiYTk5MTRhNWE1NmQx
MTQ2YTc5N2VkZWI4NGRmMmRiYzUuLmY0ZjNjMmRhNTliNDU0MGU0ZDE2ZWMwZDk2Yzg2YmVhNTBi
YjI1YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlR3JvdXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZUdyb3VwLmgKQEAgLTk0LDEwICs5NCwxMCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBkaXNhc3NvY2lhdGVEb2N1bWVudExvYWRlcihEb2N1bWVudExvYWRlciYpOwogCiBwcml2YXRl
OgotICAgIHN0YXRpYyB2b2lkIHBvc3RMaXN0ZW5lclRhc2soY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGUsIGNvbnN0IEhhc2hTZXQ8RG9jdW1lbnRMb2FkZXIqPiYgc2V0KSB7IHBvc3RMaXN0
ZW5lclRhc2soZXZlbnRUeXBlLCAwLCAwLCBzZXQpOyB9Ci0gICAgc3RhdGljIHZvaWQgcG9zdExp
c3RlbmVyVGFzayhjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRG9jdW1lbnRMb2FkZXIm
IGxvYWRlcikgIHsgcG9zdExpc3RlbmVyVGFzayhldmVudFR5cGUsIDAsIDAsIGxvYWRlcik7IH0K
LSAgICBzdGF0aWMgdm9pZCBwb3N0TGlzdGVuZXJUYXNrKGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlLCBpbnQgcHJvZ3Jlc3NUb3RhbCwgaW50IHByb2dyZXNzRG9uZSwgY29uc3QgSGFzaFNl
dDxEb2N1bWVudExvYWRlcio+Jik7Ci0gICAgc3RhdGljIHZvaWQgcG9zdExpc3RlbmVyVGFzayhj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgaW50IHByb2dyZXNzVG90YWwsIGludCBwcm9n
cmVzc0RvbmUsIERvY3VtZW50TG9hZGVyJik7CisgICAgc3RhdGljIHZvaWQgcG9zdExpc3RlbmVy
VGFzayhjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IEhhc2hTZXQ8RG9jdW1lbnRM
b2FkZXIqPiYgc2V0KSB7IHBvc3RMaXN0ZW5lclRhc2soZXZlbnRUeXBlLCAwLCAwLCBzZXQpOyB9
CisgICAgc3RhdGljIHZvaWQgcG9zdExpc3RlbmVyVGFzayhjb25zdCBBdG9tU3RyaW5nJiBldmVu
dFR5cGUsIERvY3VtZW50TG9hZGVyJiBsb2FkZXIpICB7IHBvc3RMaXN0ZW5lclRhc2soZXZlbnRU
eXBlLCAwLCAwLCBsb2FkZXIpOyB9CisgICAgc3RhdGljIHZvaWQgcG9zdExpc3RlbmVyVGFzayhj
b25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIGludCBwcm9ncmVzc1RvdGFsLCBpbnQgcHJvZ3Jl
c3NEb25lLCBjb25zdCBIYXNoU2V0PERvY3VtZW50TG9hZGVyKj4mKTsKKyAgICBzdGF0aWMgdm9p
ZCBwb3N0TGlzdGVuZXJUYXNrKGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgaW50IHByb2dy
ZXNzVG90YWwsIGludCBwcm9ncmVzc0RvbmUsIERvY3VtZW50TG9hZGVyJik7CiAKICAgICB2b2lk
IHNjaGVkdWxlUmVhY2hlZE1heEFwcENhY2hlU2l6ZUNhbGxiYWNrKCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3Bw
CmluZGV4IDkxZjAwMzE3OGFiZTEyMjg3NDM1NGJiZDkxMDkxYTgzNWQ3YjNhZGYuLmZjYWU3YzY2
YTlkNTFmNjdjMzJjMmNjZTA4NjU1N2FlMGRmZDlkZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcApAQCAtMzAw
LDcgKzMwMCw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6OnNldERPTUFwcGxpY2F0aW9u
Q2FjaGUoRE9NQXBwbGljYXRpb25DYWNoZSogZG9tQXBwbGljCiAgICAgbV9kb21BcHBsaWNhdGlv
bkNhY2hlID0gbWFrZVdlYWtQdHIoZG9tQXBwbGljYXRpb25DYWNoZSk7CiB9CiAKLXZvaWQgQXBw
bGljYXRpb25DYWNoZUhvc3Q6Om5vdGlmeURPTUFwcGxpY2F0aW9uQ2FjaGUoY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUsIGludCB0b3RhbCwgaW50IGRvbmUpCit2b2lkIEFwcGxpY2F0aW9u
Q2FjaGVIb3N0Ojpub3RpZnlET01BcHBsaWNhdGlvbkNhY2hlKGNvbnN0IEF0b21TdHJpbmcmIGV2
ZW50VHlwZSwgaW50IHRvdGFsLCBpbnQgZG9uZSkKIHsKICAgICBpZiAoZXZlbnRUeXBlICE9IGV2
ZW50TmFtZXMoKS5wcm9ncmVzc0V2ZW50KQogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OnVwZGF0ZUFwcGxpY2F0aW9uQ2FjaGVTdGF0dXMobV9kb2N1bWVudExvYWRlci5mcmFtZSgp
KTsKQEAgLTM3MSwxNCArMzcxLDE0IEBAIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpDYWNoZUluZm8g
QXBwbGljYXRpb25DYWNoZUhvc3Q6OmFwcGxpY2F0aW9uQ2FjaGVJbmZvKCkKICAgICByZXR1cm4g
eyBjYWNoZS0+bWFuaWZlc3RSZXNvdXJjZSgpLT51cmwoKSwgMCwgMCwgY2FjaGUtPmVzdGltYXRl
ZFNpemVJblN0b3JhZ2UoKSB9OwogfQogCi1zdGF0aWMgUmVmPEV2ZW50PiBjcmVhdGVBcHBsaWNh
dGlvbkNhY2hlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGludCB0b3RhbCwg
aW50IGRvbmUpCitzdGF0aWMgUmVmPEV2ZW50PiBjcmVhdGVBcHBsaWNhdGlvbkNhY2hlRXZlbnQo
Y29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBpbnQgdG90YWwsIGludCBkb25lKQogewogICAg
IGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLnByb2dyZXNzRXZlbnQpCiAgICAgICAgIHJl
dHVybiBQcm9ncmVzc0V2ZW50OjpjcmVhdGUoZXZlbnRUeXBlLCB0cnVlLCBkb25lLCB0b3RhbCk7
CiAgICAgcmV0dXJuIEV2ZW50OjpjcmVhdGUoZXZlbnRUeXBlLCBFdmVudDo6Q2FuQnViYmxlOjpO
bywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pOwogfQogCi12b2lkIEFwcGxpY2F0aW9uQ2FjaGVI
b3N0OjpkaXNwYXRjaERPTUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBpbnQg
dG90YWwsIGludCBkb25lKQordm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6ZGlzcGF0Y2hET01F
dmVudChjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIGludCB0b3RhbCwgaW50IGRvbmUpCiB7
CiAgICAgaWYgKCFtX2RvbUFwcGxpY2F0aW9uQ2FjaGUgfHwgIW1fZG9tQXBwbGljYXRpb25DYWNo
ZS0+ZnJhbWUoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAppbmRleCAwMWYyNzM1OThhOTk1
NTUwYmMwYWZkZjUzNGNkMTA4NTQ1Mzg4ZjM1Li4xMmNmZTM2OGMwNTIxNjg4NTE4OWZkN2JkMzdm
OTBmMDJmY2NjYjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaApAQCAtMTEzLDcgKzExMyw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGFib3J0KCk7CiAKICAgICB2b2lkIHNldERPTUFwcGxpY2F0aW9uQ2FjaGUoRE9NQXBw
bGljYXRpb25DYWNoZSopOwotICAgIHZvaWQgbm90aWZ5RE9NQXBwbGljYXRpb25DYWNoZShjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgaW50IHByb2dyZXNzVG90YWwsIGludCBwcm9ncmVz
c0RvbmUpOworICAgIHZvaWQgbm90aWZ5RE9NQXBwbGljYXRpb25DYWNoZShjb25zdCBBdG9tU3Ry
aW5nJiBldmVudFR5cGUsIGludCBwcm9ncmVzc1RvdGFsLCBpbnQgcHJvZ3Jlc3NEb25lKTsKIAog
ICAgIHZvaWQgc3RvcExvYWRpbmdJbkZyYW1lKEZyYW1lJik7CiAKQEAgLTEyOSw3ICsxMjksNyBA
QCBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlR3JvdXA7CiAKICAg
ICBzdHJ1Y3QgRGVmZXJyZWRFdmVudCB7Ci0gICAgICAgIEF0b21pY1N0cmluZyBldmVudFR5cGU7
CisgICAgICAgIEF0b21TdHJpbmcgZXZlbnRUeXBlOwogICAgICAgICBpbnQgcHJvZ3Jlc3NUb3Rh
bDsKICAgICAgICAgaW50IHByb2dyZXNzRG9uZTsKICAgICB9OwpAQCAtMTM3LDcgKzEzNyw3IEBA
IHByaXZhdGU6CiAgICAgYm9vbCBpc0FwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKCk7CiAgICAgYm9v
bCBpc0FwcGxpY2F0aW9uQ2FjaGVCbG9ja2VkRm9yUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVl
c3QmKTsKIAotICAgIHZvaWQgZGlzcGF0Y2hET01FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2
ZW50VHlwZSwgaW50IHByb2dyZXNzVG90YWwsIGludCBwcm9ncmVzc0RvbmUpOworICAgIHZvaWQg
ZGlzcGF0Y2hET01FdmVudChjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIGludCBwcm9ncmVz
c1RvdGFsLCBpbnQgcHJvZ3Jlc3NEb25lKTsKIAogICAgIGJvb2wgc2NoZWR1bGVMb2FkRmFsbGJh
Y2tSZXNvdXJjZUZyb21BcHBsaWNhdGlvbkNhY2hlKFJlc291cmNlTG9hZGVyKiwgQXBwbGljYXRp
b25DYWNoZSogPSBudWxscHRyKTsKICAgICB2b2lkIHNldENhbmRpZGF0ZUFwcGxpY2F0aW9uQ2Fj
aGVHcm91cChBcHBsaWNhdGlvbkNhY2hlR3JvdXAqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCmluZGV4
IGQyMDIxNTc1ZjEyYTRlNDIyODlhYjVmMTk3MjE0NDFhYWU2YmRkNWIuLmRhNjJkNjZjZWE0Y2Y2
MjA0MmFkMDNiNWE1MTY4M2I4ZTE4MzYxYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcApAQCAtMTA2
MSw3ICsxMDYxLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHBhcnNlSGVhZGVyKGNvbnN0IENoYXJh
Y3RlclR5cGUqIGhlYWRlciwgdW5zaWduZWQgaGVhZGVyTGVuZ3QKIAogICAgIC8vIFNhdmUgbWVt
b3J5IGJ5IHB1dHRpbmcgdGhlIGhlYWRlciBuYW1lcyBpbnRvIGF0b21pYyBzdHJpbmdzIHNvIGVh
Y2ggaXMgc3RvcmVkIG9ubHkgb25jZSwKICAgICAvLyBldmVuIHRob3VnaCB0aGUgc2V0SFRUUEhl
YWRlckZpZWxkIGZ1bmN0aW9uIGRvZXMgbm90IHJlcXVpcmUgYW4gYXRvbWljIHN0cmluZy4KLSAg
ICBBdG9taWNTdHJpbmcgaGVhZGVyTmFtZSB7IGhlYWRlciwgY29sb25Qb3NpdGlvbiB9OworICAg
IEF0b21TdHJpbmcgaGVhZGVyTmFtZSB7IGhlYWRlciwgY29sb25Qb3NpdGlvbiB9OwogICAgIFN0
cmluZyBoZWFkZXJWYWx1ZSB7IGhlYWRlciArIGNvbG9uUG9zaXRpb24gKyAxLCBoZWFkZXJMZW5n
dGggLSBjb2xvblBvc2l0aW9uIC0gMSB9OwogCiAgICAgcmVzcG9uc2Uuc2V0SFRUUEhlYWRlckZp
ZWxkKGhlYWRlck5hbWUsIGhlYWRlclZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRGb250LmNwcAppbmRleCBkYzU5NTAwZTU3ZDBhNTljOGRlZTQwMzAzZjJhNDRlODQ2
ZjZiZDc0Li42OTNkZGEwYzcyNGE5NzIwYjU4OWYzYjkxMWVlYzUwZTM2ZTU2Yjg2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCkBAIC04Myw3ICs4Myw3IEBA
IHZvaWQgQ2FjaGVkRm9udDo6YmVnaW5Mb2FkSWZOZWVkZWQoQ2FjaGVkUmVzb3VyY2VMb2FkZXIm
IGxvYWRlcikKICAgICB9CiB9CiAKLWJvb2wgQ2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERh
dGEoY29uc3QgQXRvbWljU3RyaW5nJikKK2Jvb2wgQ2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9u
dERhdGEoY29uc3QgQXRvbVN0cmluZyYpCiB7CiAgICAgcmV0dXJuIGVuc3VyZUN1c3RvbUZvbnRE
YXRhKG1fZGF0YS5nZXQoKSk7CiB9CkBAIC0xMjgsNyArMTI4LDcgQEAgc3RkOjp1bmlxdWVfcHRy
PEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRh
KFNoYXJlZEIKICAgICByZXR1cm4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShieXRlcywg
aXRlbUluQ29sbGVjdGlvbik7CiB9CiAKLVJlZlB0cjxGb250PiBDYWNoZWRGb250OjpjcmVhdGVG
b250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uLCBjb25zdCBBdG9taWNT
dHJpbmcmLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljLCBjb25zdCBG
b250RmVhdHVyZVNldHRpbmdzJiBmb250RmFjZUZlYXR1cmVzLCBjb25zdCBGb250VmFyaWFudFNl
dHRpbmdzJiBmb250RmFjZVZhcmlhbnRTZXR0aW5ncywgRm9udFNlbGVjdGlvblNwZWNpZmllZENh
cGFiaWxpdGllcyBmb250RmFjZUNhcGFiaWxpdGllcykKK1JlZlB0cjxGb250PiBDYWNoZWRGb250
OjpjcmVhdGVGb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uLCBjb25z
dCBBdG9tU3RyaW5nJiwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYywg
Y29uc3QgRm9udEZlYXR1cmVTZXR0aW5ncyYgZm9udEZhY2VGZWF0dXJlcywgY29uc3QgRm9udFZh
cmlhbnRTZXR0aW5ncyYgZm9udEZhY2VWYXJpYW50U2V0dGluZ3MsIEZvbnRTZWxlY3Rpb25TcGVj
aWZpZWRDYXBhYmlsaXRpZXMgZm9udEZhY2VDYXBhYmlsaXRpZXMpCiB7CiAgICAgcmV0dXJuIEZv
bnQ6OmNyZWF0ZShwbGF0Zm9ybURhdGFGcm9tQ3VzdG9tRGF0YShmb250RGVzY3JpcHRpb24sIHN5
bnRoZXRpY0JvbGQsIHN5bnRoZXRpY0l0YWxpYywgZm9udEZhY2VGZWF0dXJlcywgZm9udEZhY2VW
YXJpYW50U2V0dGluZ3MsIGZvbnRGYWNlQ2FwYWJpbGl0aWVzKSwgRm9udDo6T3JpZ2luOjpSZW1v
dGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZv
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKaW5kZXggZmFj
MDZkYTE1NzkzNzllMzQxZjI0YThiNjdkODA0NDdlNjRjOWNlZS4uNTgwZTliZTkyNTYwNWNiMmVj
M2FlN2UwYTg1MGNiOTY2OWJlYTg1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkRm9udC5oCkBAIC01MSwxMSArNTEsMTEgQEAgcHVibGljOgogICAgIHZvaWQgYmVnaW5Mb2Fk
SWZOZWVkZWQoQ2FjaGVkUmVzb3VyY2VMb2FkZXImKTsKICAgICBib29sIHN0aWxsTmVlZHNMb2Fk
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIW1fbG9hZEluaXRpYXRlZDsgfQogCi0gICAgdmly
dHVhbCBib29sIGVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21pY1N0cmluZyYgcmVtb3Rl
VVJJKTsKKyAgICB2aXJ0dWFsIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0
cmluZyYgcmVtb3RlVVJJKTsKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21Q
bGF0Zm9ybURhdGE+IGNyZWF0ZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0
cmluZyYgaXRlbUluQ29sbGVjdGlvbiwgYm9vbCYgd3JhcHBpbmcpOwogICAgIHN0YXRpYyBGb250
UGxhdGZvcm1EYXRhIHBsYXRmb3JtRGF0YUZyb21DdXN0b21EYXRhKEZvbnRDdXN0b21QbGF0Zm9y
bURhdGEmLCBjb25zdCBGb250RGVzY3JpcHRpb24mLCBib29sIGJvbGQsIGJvb2wgaXRhbGljLCBj
b25zdCBGb250RmVhdHVyZVNldHRpbmdzJiwgY29uc3QgRm9udFZhcmlhbnRTZXR0aW5ncyYsIEZv
bnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXMpOwogCi0gICAgdmlydHVhbCBSZWZQdHI8
Rm9udD4gY3JlYXRlRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mLCBjb25zdCBBdG9taWNTdHJp
bmcmIHJlbW90ZVVSSSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYywg
Y29uc3QgRm9udEZlYXR1cmVTZXR0aW5ncyYsIGNvbnN0IEZvbnRWYXJpYW50U2V0dGluZ3MmLCBG
b250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzKTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxG
b250PiBjcmVhdGVGb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGNvbnN0IEF0b21TdHJpbmcm
IHJlbW90ZVVSSSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYywgY29u
c3QgRm9udEZlYXR1cmVTZXR0aW5ncyYsIGNvbnN0IEZvbnRWYXJpYW50U2V0dGluZ3MmLCBGb250
U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzKTsKIAogcHJvdGVjdGVkOgogICAgIEZvbnRQ
bGF0Zm9ybURhdGEgcGxhdGZvcm1EYXRhRnJvbUN1c3RvbURhdGEoY29uc3QgRm9udERlc2NyaXB0
aW9uJiwgYm9vbCBib2xkLCBib29sIGl0YWxpYywgY29uc3QgRm9udEZlYXR1cmVTZXR0aW5ncyYs
IGNvbnN0IEZvbnRWYXJpYW50U2V0dGluZ3MmLCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJp
bGl0aWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgK
aW5kZXggOWJmNTFlMGIyMjc0NGFhNjJlNzc1ZDllZTc1NTM3ZjMxYmE4ODIwNC4uMjI5YTE0MmQ2
NDQxM2NlYmFlZmFjNTI3MTBiYjJiZjhkZGVkZjdiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKQEAgLTIxNyw3ICsyMTcsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBsb2FkRnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYpOwogCiAgICAgU2VjdXJpdHlP
cmlnaW4qIG9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luLmdldCgpOyB9Ci0gICAgQXRv
bWljU3RyaW5nIGluaXRpYXRvck5hbWUoKSBjb25zdCB7IHJldHVybiBtX2luaXRpYXRvck5hbWU7
IH0KKyAgICBBdG9tU3RyaW5nIGluaXRpYXRvck5hbWUoKSBjb25zdCB7IHJldHVybiBtX2luaXRp
YXRvck5hbWU7IH0KIAogICAgIGJvb2wgY2FuRGVsZXRlKCkgY29uc3QgeyByZXR1cm4gIWhhc0Ns
aWVudHMoKSAmJiAhbV9sb2FkZXIgJiYgIW1fcHJlbG9hZENvdW50ICYmICFtX2hhbmRsZUNvdW50
ICYmICFtX3Jlc291cmNlVG9SZXZhbGlkYXRlICYmICFtX3Byb3h5UmVzb3VyY2U7IH0KICAgICBi
b29sIGhhc09uZUhhbmRsZSgpIGNvbnN0IHsgcmV0dXJuIG1faGFuZGxlQ291bnQgPT0gMTsgfQpA
QCAtMzQ3LDcgKzM0Nyw3IEBAIHByaXZhdGU6CiAKICAgICBSZXNvdXJjZUVycm9yIG1fZXJyb3I7
CiAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBtX29yaWdpbjsKLSAgICBBdG9taWNTdHJpbmcg
bV9pbml0aWF0b3JOYW1lOworICAgIEF0b21TdHJpbmcgbV9pbml0aWF0b3JOYW1lOwogCiAgICAg
UmVkaXJlY3RDaGFpbkNhY2hlU3RhdHVzIG1fcmVkaXJlY3RDaGFpbkNhY2hlU3RhdHVzOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1
ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVl
c3QuY3BwCmluZGV4IDM5YmJjYTI3ZDIwNDc5OTdjZjkxNmNiYmFkMWU0NjY0NjY1OTA0MzguLjUy
NmIyMjQ4MTgxMjg5Y2VhOTViNGEzYzcyYzk2MjBkYzBkNzQ5YTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwCkBAIC02
NywyMSArNjcsMjEgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZVJlcXVlc3Q6OnNldEluaXRpYXRvcihF
bGVtZW50JiBlbGVtZW50KQogICAgIG1faW5pdGlhdG9yRWxlbWVudCA9ICZlbGVtZW50OwogfQog
Ci12b2lkIENhY2hlZFJlc291cmNlUmVxdWVzdDo6c2V0SW5pdGlhdG9yKGNvbnN0IEF0b21pY1N0
cmluZyYgbmFtZSkKK3ZvaWQgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0OjpzZXRJbml0aWF0b3IoY29u
c3QgQXRvbVN0cmluZyYgbmFtZSkKIHsKICAgICBBU1NFUlQoIW1faW5pdGlhdG9yRWxlbWVudCk7
CiAgICAgQVNTRVJUKG1faW5pdGlhdG9yTmFtZS5pc0VtcHR5KCkpOwogICAgIG1faW5pdGlhdG9y
TmFtZSA9IG5hbWU7CiB9CiAKLWNvbnN0IEF0b21pY1N0cmluZyYgQ2FjaGVkUmVzb3VyY2VSZXF1
ZXN0Ojppbml0aWF0b3JOYW1lKCkgY29uc3QKK2NvbnN0IEF0b21TdHJpbmcmIENhY2hlZFJlc291
cmNlUmVxdWVzdDo6aW5pdGlhdG9yTmFtZSgpIGNvbnN0CiB7CiAgICAgaWYgKG1faW5pdGlhdG9y
RWxlbWVudCkKICAgICAgICAgcmV0dXJuIG1faW5pdGlhdG9yRWxlbWVudC0+bG9jYWxOYW1lKCk7
CiAgICAgaWYgKCFtX2luaXRpYXRvck5hbWUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbV9p
bml0aWF0b3JOYW1lOwogCi0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4g
ZGVmYXVsdE5hbWUoIm90aGVyIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21TdHJpbmc+IGRlZmF1bHROYW1lKCJvdGhl
ciIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gZGVmYXVs
dE5hbWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZVJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZVJlcXVlc3QuaAppbmRleCA2MTNmMjc0ZWRmNzkwNTRhMmU4NjhiZGUyNmMzMDQxMTdj
MTExYmM1Li5mYmU2ZGE1MTdlNTE2MmUyNzYyNTcwMzFlYzNkMzM2YTQ0YjBiYWY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5o
CkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRl
ICJTZXJ2aWNlV29ya2VySWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNp
bmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9t
U3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjMsOCArNjMsOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRQcmlvcml0eShPcHRpb25hbDxSZXNvdXJjZUxvYWRQcmlvcml0eT4m
JiBwcmlvcml0eSkgeyBtX3ByaW9yaXR5ID0gV1RGTW92ZShwcmlvcml0eSk7IH0KIAogICAgIHZv
aWQgc2V0SW5pdGlhdG9yKEVsZW1lbnQmKTsKLSAgICB2b2lkIHNldEluaXRpYXRvcihjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWUpOwotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgaW5pdGlhdG9yTmFt
ZSgpIGNvbnN0OworICAgIHZvaWQgc2V0SW5pdGlhdG9yKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUp
OworICAgIGNvbnN0IEF0b21TdHJpbmcmIGluaXRpYXRvck5hbWUoKSBjb25zdDsKIAogICAgIGJv
b2wgYWxsb3dzQ2FjaGluZygpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9ucy5jYWNoaW5nUG9saWN5
ID09IENhY2hpbmdQb2xpY3k6OkFsbG93Q2FjaGluZzsgfQogICAgIHZvaWQgc2V0Q2FjaGluZ1Bv
bGljeShDYWNoaW5nUG9saWN5IHBvbGljeSkgeyBtX29wdGlvbnMuY2FjaGluZ1BvbGljeSA9IHBv
bGljeTsgIH0KQEAgLTExNiw3ICsxMTYsNyBAQCBwcml2YXRlOgogICAgIFJlc291cmNlTG9hZGVy
T3B0aW9ucyBtX29wdGlvbnM7CiAgICAgT3B0aW9uYWw8UmVzb3VyY2VMb2FkUHJpb3JpdHk+IG1f
cHJpb3JpdHk7CiAgICAgUmVmUHRyPEVsZW1lbnQ+IG1faW5pdGlhdG9yRWxlbWVudDsKLSAgICBB
dG9taWNTdHJpbmcgbV9pbml0aWF0b3JOYW1lOworICAgIEF0b21TdHJpbmcgbV9pbml0aWF0b3JO
YW1lOwogICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gbV9vcmlnaW47CiAgICAgU3RyaW5nIG1f
ZnJhZ21lbnRJZGVudGlmaWVyOwogICAgIGJvb2wgbV9pc0xpbmtQcmVsb2FkIHsgZmFsc2UgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJl
cXVlc3RJbml0aWF0b3JzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzLmNwcAppbmRleCBkZDExMGM3ZDVmNDNhOTM5NTIwOGUw
NjExM2Q4MmVmMGE5ZGEzYjhiLi4xM2Y1YjQ2ZGY5MzcyMjM3OWU4Yzk4OTliMDNiNmEyMWY5ZGY2
NTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2VSZXF1ZXN0SW5pdGlhdG9ycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMuY3BwCkBAIC0yOSwxMSArMjksMTEgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9yczo6
Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycygpCi0gICAgOiBjc3MoImNzcyIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpCi0gICAgLCBldmVudHNvdXJjZSgiZXZlbnRz
b3VyY2UiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKQotICAgICwgZmV0Y2go
ImZldGNoIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkKLSAgICAsIGljb24o
Imljb24iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKQotICAgICwgeG1saHR0
cHJlcXVlc3QoInhtbGh0dHByZXF1ZXN0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCkKKyAgICA6IGNzcygiY3NzIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
CisgICAgLCBldmVudHNvdXJjZSgiZXZlbnRzb3VyY2UiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCkKKyAgICAsIGZldGNoKCJmZXRjaCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKQorICAgICwgaWNvbigiaWNvbiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKQorICAgICwgeG1saHR0cHJlcXVlc3QoInhtbGh0dHByZXF1ZXN0IiwgQXRvbVN0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5o
CmluZGV4IDJhNDAwOGZlN2ZkYzhkNDYyMWVkZjY4NjMyYjcwOTk3Y2NlZTA0YzcuLjA2NGE4MzFm
YjljZDY3NTY3ZmVjNWUyMzcyNjQ4NTBiOTY5MjRlZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRv
cnMuaApAQCAtMjYsMTggKzI2LDE4IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlRocmVh
ZEdsb2JhbERhdGEuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3Ry
dWN0IENhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMgewogICAgIENhY2hlZFJlc291cmNl
UmVxdWVzdEluaXRpYXRvcnMoKTsKIAotICAgIGNvbnN0IEF0b21pY1N0cmluZyBjc3M7Ci0gICAg
Y29uc3QgQXRvbWljU3RyaW5nIGV2ZW50c291cmNlOwotICAgIGNvbnN0IEF0b21pY1N0cmluZyBm
ZXRjaDsKLSAgICBjb25zdCBBdG9taWNTdHJpbmcgaWNvbjsKLSAgICBjb25zdCBBdG9taWNTdHJp
bmcgeG1saHR0cHJlcXVlc3Q7CisgICAgY29uc3QgQXRvbVN0cmluZyBjc3M7CisgICAgY29uc3Qg
QXRvbVN0cmluZyBldmVudHNvdXJjZTsKKyAgICBjb25zdCBBdG9tU3RyaW5nIGZldGNoOworICAg
IGNvbnN0IEF0b21TdHJpbmcgaWNvbjsKKyAgICBjb25zdCBBdG9tU3RyaW5nIHhtbGh0dHByZXF1
ZXN0OwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENhY2hlZFJlc291cmNlUmVxdWVzdEluaXRp
YXRvcnMpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNs
YXNzIFRocmVhZEdsb2JhbERhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkU1ZHRm9udC5jcHAKaW5kZXggNWVlM2ZjMTg1MGMwMWU5YzgyYmNhMmU3YTg5NjNhYmEzOTFk
ZDA2NS4uZTUzYmQxMTBiYzQxNmNmNjFiMWFiZWM2YWIzNjEwMTAyYzA3ZTc5NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcApAQCAtNTIsNyArNTIs
NyBAQCBDYWNoZWRTVkdGb250OjpDYWNoZWRTVkdGb250KENhY2hlZFJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QsIGNvbnN0IFBBTDo6U2Vzc2lvbgogewogfQogCi1SZWZQdHI8Rm9udD4gQ2FjaGVk
U1ZHRm9udDo6Y3JlYXRlRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlv
biwgY29uc3QgQXRvbWljU3RyaW5nJiByZW1vdGVVUkksIGJvb2wgc3ludGhldGljQm9sZCwgYm9v
bCBzeW50aGV0aWNJdGFsaWMsIGNvbnN0IEZvbnRGZWF0dXJlU2V0dGluZ3MmIGZvbnRGYWNlRmVh
dHVyZXMsIGNvbnN0IEZvbnRWYXJpYW50U2V0dGluZ3MmIGZvbnRGYWNlVmFyaWFudFNldHRpbmdz
LCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzIGZvbnRGYWNlQ2FwYWJpbGl0aWVz
KQorUmVmUHRyPEZvbnQ+IENhY2hlZFNWR0ZvbnQ6OmNyZWF0ZUZvbnQoY29uc3QgRm9udERlc2Ny
aXB0aW9uJiBmb250RGVzY3JpcHRpb24sIGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSwgYm9v
bCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYywgY29uc3QgRm9udEZlYXR1cmVT
ZXR0aW5ncyYgZm9udEZhY2VGZWF0dXJlcywgY29uc3QgRm9udFZhcmlhbnRTZXR0aW5ncyYgZm9u
dEZhY2VWYXJpYW50U2V0dGluZ3MsIEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXMg
Zm9udEZhY2VDYXBhYmlsaXRpZXMpCiB7CiAgICAgQVNTRVJUKGZpcnN0Rm9udEZhY2UocmVtb3Rl
VVJJKSk7CiAgICAgcmV0dXJuIENhY2hlZEZvbnQ6OmNyZWF0ZUZvbnQoZm9udERlc2NyaXB0aW9u
LCByZW1vdGVVUkksIHN5bnRoZXRpY0JvbGQsIHN5bnRoZXRpY0l0YWxpYywgZm9udEZhY2VGZWF0
dXJlcywgZm9udEZhY2VWYXJpYW50U2V0dGluZ3MsIGZvbnRGYWNlQ2FwYWJpbGl0aWVzKTsKQEAg
LTY1LDcgKzY1LDcgQEAgRm9udFBsYXRmb3JtRGF0YSBDYWNoZWRTVkdGb250OjpwbGF0Zm9ybURh
dGFGcm9tQ3VzdG9tRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24KICAgICByZXR1cm4gQ2FjaGVk
Rm9udDo6cGxhdGZvcm1EYXRhRnJvbUN1c3RvbURhdGEoZm9udERlc2NyaXB0aW9uLCBib2xkLCBp
dGFsaWMsIGZvbnRGYWNlRmVhdHVyZXMsIGZvbnRGYWNlVmFyaWFudFNldHRpbmdzLCBmb250RmFj
ZUNhcGFiaWxpdGllcyk7CiB9CiAKLWJvb2wgQ2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9u
dERhdGEoY29uc3QgQXRvbWljU3RyaW5nJiByZW1vdGVVUkkpCitib29sIENhY2hlZFNWR0ZvbnQ6
OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSkKIHsKICAg
ICBpZiAoIW1fZXh0ZXJuYWxTVkdEb2N1bWVudCAmJiAhZXJyb3JPY2N1cnJlZCgpICYmICFpc0xv
YWRpbmcoKSAmJiBtX2RhdGEpIHsKICAgICAgICAgYm9vbCBzYXdFcnJvciA9IGZhbHNlOwpAQCAt
MTE0LDcgKzExNCw3IEBAIFNWR0ZvbnRFbGVtZW50KiBDYWNoZWRTVkdGb250OjpnZXRTVkdGb250
QnlJZChjb25zdCBTdHJpbmcmIGZvbnROYW1lKSBjb25zdAogICAgIHJldHVybiBudWxscHRyOwog
fQogCi1TVkdGb250RWxlbWVudCogQ2FjaGVkU1ZHRm9udDo6bWF5YmVJbml0aWFsaXplRXh0ZXJu
YWxTVkdGb250RWxlbWVudChjb25zdCBBdG9taWNTdHJpbmcmIHJlbW90ZVVSSSkKK1NWR0ZvbnRF
bGVtZW50KiBDYWNoZWRTVkdGb250OjptYXliZUluaXRpYWxpemVFeHRlcm5hbFNWR0ZvbnRFbGVt
ZW50KGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSkKIHsKICAgICBpZiAobV9leHRlcm5hbFNW
R0ZvbnRFbGVtZW50KQogICAgICAgICByZXR1cm4gbV9leHRlcm5hbFNWR0ZvbnRFbGVtZW50OwpA
QCAtMTI2LDcgKzEyNiw3IEBAIFNWR0ZvbnRFbGVtZW50KiBDYWNoZWRTVkdGb250OjptYXliZUlu
aXRpYWxpemVFeHRlcm5hbFNWR0ZvbnRFbGVtZW50KGNvbnN0IEF0b21pCiAgICAgcmV0dXJuIG1f
ZXh0ZXJuYWxTVkdGb250RWxlbWVudDsKIH0KIAotU1ZHRm9udEZhY2VFbGVtZW50KiBDYWNoZWRT
VkdGb250OjpmaXJzdEZvbnRGYWNlKGNvbnN0IEF0b21pY1N0cmluZyYgcmVtb3RlVVJJKQorU1ZH
Rm9udEZhY2VFbGVtZW50KiBDYWNoZWRTVkdGb250OjpmaXJzdEZvbnRGYWNlKGNvbnN0IEF0b21T
dHJpbmcmIHJlbW90ZVVSSSkKIHsKICAgICBpZiAoIW1heWJlSW5pdGlhbGl6ZUV4dGVybmFsU1ZH
Rm9udEVsZW1lbnQocmVtb3RlVVJJKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaAppbmRleCAwZGI2MzI5MmE5Yzgz
NDViNGU3NmIyYzM2ZTIwMWMxNjBmNjZkMTgxLi40MmNmMTM0Nzg5YmYzN2I2MGVlODUwYTcxNzhj
ODUyNTBjNTBkMTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkU1ZHRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdG
b250LmgKQEAgLTM3LDE3ICszNywxNyBAQCBjbGFzcyBDYWNoZWRTVkdGb250IGZpbmFsIDogcHVi
bGljIENhY2hlZEZvbnQgewogcHVibGljOgogICAgIENhY2hlZFNWR0ZvbnQoQ2FjaGVkUmVzb3Vy
Y2VSZXF1ZXN0JiYsIGNvbnN0IFBBTDo6U2Vzc2lvbklEJiwgY29uc3QgQ29va2llSmFyKik7CiAK
LSAgICBib29sIGVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21pY1N0cmluZyYgcmVtb3Rl
VVJJKSBvdmVycmlkZTsKKyAgICBib29sIGVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21T
dHJpbmcmIHJlbW90ZVVSSSkgb3ZlcnJpZGU7CiAKLSAgICBSZWZQdHI8Rm9udD4gY3JlYXRlRm9u
dChjb25zdCBGb250RGVzY3JpcHRpb24mLCBjb25zdCBBdG9taWNTdHJpbmcmIHJlbW90ZVVSSSwg
Ym9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYywgY29uc3QgRm9udEZlYXR1
cmVTZXR0aW5ncyYsIGNvbnN0IEZvbnRWYXJpYW50U2V0dGluZ3MmLCBGb250U2VsZWN0aW9uU3Bl
Y2lmaWVkQ2FwYWJpbGl0aWVzKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8Rm9udD4gY3JlYXRlRm9u
dChjb25zdCBGb250RGVzY3JpcHRpb24mLCBjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkksIGJv
b2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIGNvbnN0IEZvbnRGZWF0dXJl
U2V0dGluZ3MmLCBjb25zdCBGb250VmFyaWFudFNldHRpbmdzJiwgRm9udFNlbGVjdGlvblNwZWNp
ZmllZENhcGFiaWxpdGllcykgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgRm9udFBsYXRmb3Jt
RGF0YSBwbGF0Zm9ybURhdGFGcm9tQ3VzdG9tRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mLCBi
b29sIGJvbGQsIGJvb2wgaXRhbGljLCBjb25zdCBGb250RmVhdHVyZVNldHRpbmdzJiwgY29uc3Qg
Rm9udFZhcmlhbnRTZXR0aW5ncyYsIEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXMp
OwogCiAgICAgU1ZHRm9udEVsZW1lbnQqIGdldFNWR0ZvbnRCeUlkKGNvbnN0IFN0cmluZyYpIGNv
bnN0OwogCi0gICAgU1ZHRm9udEVsZW1lbnQqIG1heWJlSW5pdGlhbGl6ZUV4dGVybmFsU1ZHRm9u
dEVsZW1lbnQoY29uc3QgQXRvbWljU3RyaW5nJiByZW1vdGVVUkkpOwotICAgIFNWR0ZvbnRGYWNl
RWxlbWVudCogZmlyc3RGb250RmFjZShjb25zdCBBdG9taWNTdHJpbmcmIHJlbW90ZVVSSSk7Cisg
ICAgU1ZHRm9udEVsZW1lbnQqIG1heWJlSW5pdGlhbGl6ZUV4dGVybmFsU1ZHRm9udEVsZW1lbnQo
Y29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKTsKKyAgICBTVkdGb250RmFjZUVsZW1lbnQqIGZp
cnN0Rm9udEZhY2UoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKTsKIAogICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IG1fY29udmVydGVkRm9udDsKICAgICBSZWZQdHI8U1ZHRG9jdW1lbnQ+IG1f
ZXh0ZXJuYWxTVkdEb2N1bWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9N
YXRoTUxBbm5vdGF0aW9uRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1M
QW5ub3RhdGlvbkVsZW1lbnQuY3BwCmluZGV4IDNmZjRhYmJlZTdlY2FlZTNkMzA0MGJhNmMxNDY4
M2UwZjNlYzlmMTAuLjdlMGU3OTliMDJjYzM2N2Y1MjU1Y2Q0MTgxNjJlZmViNzc5ZWM3NDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxBbm5vdGF0aW9uRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEFubm90YXRpb25FbGVtZW50LmNw
cApAQCAtOTUsNyArOTUsNyBAQCBib29sIE1hdGhNTEFubm90YXRpb25FbGVtZW50OjpjaGlsZFNo
b3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUmIGNoaWxkKSBjb25zdAogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotdm9pZCBNYXRoTUxBbm5vdGF0aW9uRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdl
ZChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIG9sZFZhbHVl
LCBjb25zdCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlLCBBdHRyaWJ1dGVNb2RpZmljYXRpb25SZWFz
b24gcmVhc29uKQordm9pZCBNYXRoTUxBbm5vdGF0aW9uRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdl
ZChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiBvbGRWYWx1ZSwg
Y29uc3QgQXRvbVN0cmluZyYgbmV3VmFsdWUsIEF0dHJpYnV0ZU1vZGlmaWNhdGlvblJlYXNvbiBy
ZWFzb24pCiB7CiAgICAgaWYgKG5hbWUgPT0gTWF0aE1MTmFtZXM6OnNyY0F0dHIgfHwgbmFtZSA9
PSBNYXRoTUxOYW1lczo6ZW5jb2RpbmdBdHRyKSB7CiAgICAgICAgIGF1dG8qIHBhcmVudCA9IHBh
cmVudEVsZW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxB
bm5vdGF0aW9uRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEFubm90YXRp
b25FbGVtZW50LmgKaW5kZXggMTNhMjY3YTdlMzcxN2M2MWI3YTFmNjZkY2U0ZWM4MWI2OWY4Y2Fh
YS4uNzA3NDYwNmE1MjZkMGMzNDM1NTY2ZDY1ODQxY2QxYTgzZjZjYWYwOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEFubm90YXRpb25FbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEFubm90YXRpb25FbGVtZW50LmgKQEAgLTQyLDcgKzQy
LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzU2VtYW50aWNBbm5vdGF0aW9uKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVy
KGNvbnN0IE5vZGUmKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIGF0dHJpYnV0ZUNoYW5nZWQoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0
b21pY1N0cmluZyYgbmV3VmFsdWUsIEF0dHJpYnV0ZU1vZGlmaWNhdGlvblJlYXNvbikgZmluYWw7
CisgICAgdm9pZCBhdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBB
dG9tU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbVN0cmluZyYgbmV3VmFsdWUsIEF0dHJpYnV0
ZU1vZGlmaWNhdGlvblJlYXNvbikgZmluYWw7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwv
TWF0aE1MRWxlbWVudC5jcHAKaW5kZXggOTVkMjE4MjcyNmU5ZmNmZWJmY2M1NzU5OTlkMzUwMjUx
ODlhNzRiZS4uZWY1OWQ2M2JkMDcyNjc3MDk3YWY1Nzk5MjZiNmNhNjUzZDdlZGNkMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmNwcApAQCAtNzQsNyArNzQsNyBAQCB1bnNp
Z25lZCBNYXRoTUxFbGVtZW50Ojpyb3dTcGFuKCkgY29uc3QKICAgICByZXR1cm4gc3RkOjptYXgo
MXUsIHN0ZDo6bWluKGxpbWl0VG9Pbmx5SFRNTE5vbk5lZ2F0aXZlKHJvd1NwYW5WYWx1ZSwgMXUp
LCBtYXhSb3dzcGFuKSk7CiB9CiAKLXZvaWQgTWF0aE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKK3Zv
aWQgTWF0aE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFt
ZSwgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKG5hbWUgPT0gaHJlZkF0dHIp
IHsKICAgICAgICAgYm9vbCB3YXNMaW5rID0gaXNMaW5rKCk7CkBAIC05OCw3ICs5OCw3IEBAIGJv
b2wgTWF0aE1MRWxlbWVudDo6aXNQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgbmFtZSkgY29uc3QKICAgICByZXR1cm4gU3R5bGVkRWxlbWVudDo6aXNQcmVzZW50YXRp
b25BdHRyaWJ1dGUobmFtZSk7CiB9CiAKLXN0YXRpYyBTdHJpbmcgY29udmVydE1hdGhTaXplSWZO
ZWVkZWQoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKK3N0YXRpYyBTdHJpbmcgY29udmVydE1h
dGhTaXplSWZOZWVkZWQoY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVl
ID09ICJzbWFsbCIpCiAgICAgICAgIHJldHVybiAiMC43NWVtIjsKQEAgLTExNyw3ICsxMTcsNyBA
QCBzdGF0aWMgU3RyaW5nIGNvbnZlcnRNYXRoU2l6ZUlmTmVlZGVkKGNvbnN0IEF0b21pY1N0cmlu
ZyYgdmFsdWUpCiAgICAgcmV0dXJuIG1ha2VTdHJpbmcoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFdp
ZHRoKHVuaXRsZXNzVmFsdWUgKiAxMDAsIDMpLCAnJScpOwogfQogCi12b2lkIE1hdGhNTEVsZW1l
bnQ6OmNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlLCBNdXRhYmxlU3R5bGVQcm9wZXJ0
aWVzJiBzdHlsZSkKK3ZvaWQgTWF0aE1MRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yUHJlc2VudGF0
aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcm
IHZhbHVlLCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJiBzdHlsZSkKIHsKICAgICBpZiAobmFtZSA9
PSBtYXRoYmFja2dyb3VuZEF0dHIpCiAgICAgICAgIGFkZFByb3BlcnR5VG9QcmVzZW50YXRpb25B
dHRyaWJ1dGVTdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsIHZhbHVlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5oCmluZGV4IDA2NzlmMDI5ZTM5NmFiYTA4
NTBkYzY4N2IxYTMxZWFiNWI5MThhMTEuLjE5NjViMWEzNTRiYjMwYTlhMGYwOTk3MjhmMTFlYTI0
ODE4YmU5OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuaApAQCAtOTMsMTEg
KzkzLDExIEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBNYXRoTUxFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50Jik7CiAKLSAgICB2b2lkIHBhcnNlQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsK
KyAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9t
U3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNv
bnN0IE5vZGUmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIGJvb2wgaXNQcmVzZW50YXRpb25BdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZvaWQgY29s
bGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBj
b25zdCBBdG9taWNTdHJpbmcmLCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmLCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJikgb3Zl
cnJpZGU7CiAKICAgICBib29sIHdpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Jikgb3ZlcnJpZGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRnJhY3Rpb25FbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxGcmFjdGlvbkVsZW1lbnQuY3BwCmluZGV4IDUz
MTE5MzRiMTk4OGE4YTg4ZmNmZjc1MWNiMGFjM2NkMGI5NTQ0NmEuLmJiNGFkZDRjYmU5MjU2MWQ4
OWJkMGFiMTUyM2ZlNGM3Yzk1MTlkY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGht
bC9NYXRoTUxGcmFjdGlvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9N
YXRoTUxGcmFjdGlvbkVsZW1lbnQuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgTWF0aE1MRnJhY3Rp
b25FbGVtZW50OjpGcmFjdGlvbkFsaWdubWVudCBNYXRoTUxGcmFjdGlvbkVsZW1lbnQ6OmRlbm9t
aW5hdG9yQWxpZ24KICAgICByZXR1cm4gY2FjaGVkRnJhY3Rpb25BbGlnbm1lbnQoZGVub21hbGln
bkF0dHIsIG1fZGVub21pbmF0b3JBbGlnbm1lbnQpOwogfQogCi12b2lkIE1hdGhNTEZyYWN0aW9u
RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3Qg
QXRvbWljU3RyaW5nJiB2YWx1ZSkKK3ZvaWQgTWF0aE1MRnJhY3Rpb25FbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1
ZSkKIHsKICAgICBpZiAobmFtZSA9PSBsaW5ldGhpY2tuZXNzQXR0cikKICAgICAgICAgbV9saW5l
VGhpY2tuZXNzID0gV1RGOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0
aG1sL01hdGhNTEZyYWN0aW9uRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhN
TEZyYWN0aW9uRWxlbWVudC5oCmluZGV4IGUyMDY4MDY0OGNiNzNkY2E0NTE0YWM1MmVkYjcyODUy
MzQ5YTgyYTMuLmQ4YzY2YTM4NjRiNjM1NWY3YThlNzUxNDdkMzRiMzhjZjIxMDVlNWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxGcmFjdGlvbkVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRnJhY3Rpb25FbGVtZW50LmgKQEAgLTQ3LDcg
KzQ3LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBNYXRoTUxGcmFjdGlvbkVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmKTsKICAgICBSZW5kZXJQdHI8UmVu
ZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJl
bmRlclRyZWVQb3NpdGlvbiYpIGZpbmFsOwotICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIGZpbmFsOworICAgIHZvaWQgcGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmKSBmaW5h
bDsKIAogICAgIEZyYWN0aW9uQWxpZ25tZW50IGNhY2hlZEZyYWN0aW9uQWxpZ25tZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBPcHRpb25hbDxGcmFjdGlvbkFsaWdubWVudD4mKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1hdGhFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5jcHAKaW5kZXggYWViMjhkZmZlNGM5
NWNmNTk2ZjZjODgwMTExNzdlYmEwZTVmMDEzZC4uZDgzM2I0OGM5YThjNTkwYjgzZDgxN2VmYWEz
NTM0YmU2ZGM4YzcxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1h
dGhFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWF0aEVsZW1l
bnQuY3BwCkBAIC02OSw3ICs2OSw3IEBAIE9wdGlvbmFsPGJvb2w+IE1hdGhNTE1hdGhFbGVtZW50
OjpzcGVjaWZpZWREaXNwbGF5U3R5bGUoKQogICAgIHJldHVybiB0b09wdGlvbmFsQm9vbChtX2Rp
c3BsYXlTdHlsZS52YWx1ZSgpKTsKIH0KIAotdm9pZCBNYXRoTUxNYXRoRWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2
YWx1ZSkKK3ZvaWQgTWF0aE1MTWF0aEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKQogewogICAgIGJvb2wgZGlz
cGxheVN0eWxlQXR0cmlidXRlID0gKG5hbWUgPT0gZGlzcGxheXN0eWxlQXR0ciB8fCBuYW1lID09
IGRpc3BsYXlBdHRyKTsKICAgICBib29sIG1hdGhWYXJpYW50QXR0cmlidXRlID0gbmFtZSA9PSBt
YXRodmFyaWFudEF0dHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1M
TWF0aEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5o
CmluZGV4IGQ3ZDBhNjk3MzIwMTNiNTYzZGM5MzQ4MzllMDRkMTc5OWMzZDIwOTkuLmY5YTBhN2Zl
MmJlNzBmY2NhYjdkOTkwOGE1YjE3NjlhNTIyOWVmNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL21hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGht
bC9NYXRoTUxNYXRoRWxlbWVudC5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0
ZToKICAgICBNYXRoTUxNYXRoRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCYpOwotICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IGNvbnN0IEF0b21pY1N0cmluZyYpIGZpbmFsOworICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmKSBmaW5hbDsKICAgICB2b2lkIGRp
ZEF0dGFjaFJlbmRlcmVycygpIGZpbmFsOwogCiAgICAgYm9vbCBhY2NlcHRzRGlzcGxheVN0eWxl
QXR0cmlidXRlKCkgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbWF0aG1sL01hdGhNTE1lbmNsb3NlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9t
YXRobWwvTWF0aE1MTWVuY2xvc2VFbGVtZW50LmNwcAppbmRleCBmNjQ0NGY4YTEwODczMzAwNzYx
OTA4YzMzNjc0ZDUwYWJjZmQ3MzRhLi5jYzg0OWZlOGViZjJlZjUyYjNkMWM0NmZjNTc3OTBkMzJj
N2YxOWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWVuY2xvc2VF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWVuY2xvc2VFbGVt
ZW50LmNwcApAQCAtMTMyLDcgKzEzMiw3IEBAIGJvb2wgTWF0aE1MTWVuY2xvc2VFbGVtZW50Ojpo
YXNOb3RhdGlvbihNZW5jbG9zZU5vdGF0aW9uRmxhZyBub3RhdGlvbkZsYWcpCiAgICAgcmV0dXJu
IG1fbm90YXRpb25GbGFncy52YWx1ZSgpICYgbm90YXRpb25GbGFnOwogfQogCi12b2lkIE1hdGhN
TE1lbmNsb3NlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFt
ZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKK3ZvaWQgTWF0aE1MTWVuY2xvc2VFbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3Ry
aW5nJiB2YWx1ZSkKIHsKICAgICBpZiAobmFtZSA9PSBub3RhdGlvbkF0dHIpCiAgICAgICAgIG1f
bm90YXRpb25GbGFncyA9IFdURjo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L21hdGhtbC9NYXRoTUxNZW5jbG9zZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9N
YXRoTUxNZW5jbG9zZUVsZW1lbnQuaAppbmRleCA1N2UwZGU2ZWNlZTgwYjA0MTdmZjgwMThlYjcw
ZmUyZmIyYzYzZWQ4Li5hMGUzMmE4MWZjMGRlMmM2OTExZmRkY2RlN2FhMDRkMzBjMWU5ZDEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWVuY2xvc2VFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1lbmNsb3NlRWxlbWVudC5oCkBAIC01
OSw3ICs1OSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgTWF0aE1MTWVuY2xvc2VFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogICAgIFJlbmRlclB0cjxSZW5kZXJF
bGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVy
VHJlZVBvc2l0aW9uJikgZmluYWw7Ci0gICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgZmluYWw7CisgICAgdm9pZCBwYXJzZUF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbVN0cmluZyYpIGZpbmFsOwog
ICAgIHZvaWQgcGFyc2VOb3RhdGlvbkF0dHJpYnV0ZSgpOwogICAgIHZvaWQgY2xlYXJOb3RhdGlv
bnMoKSB7IG1fbm90YXRpb25GbGFncyA9IDA7IH0KICAgICB2b2lkIGFkZE5vdGF0aW9uKE1lbmNs
b3NlTm90YXRpb25GbGFnIG5vdGF0aW9uRmxhZykgeyBtX25vdGF0aW9uRmxhZ3MudmFsdWUoKSB8
PSBub3RhdGlvbkZsYWc7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRo
TUxPcGVyYXRvckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE9wZXJh
dG9yRWxlbWVudC5jcHAKaW5kZXggN2YwMGRhZGY0ODcxNzJhYjA4Njg4YjczNWVlNzQ0ODdhMDc2
MDNlZS4uN2E3YjQzYmU1MDlkN2Y5NzQxYWIyNjhlYjJiODE1MDFmYTljNDY5YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE9wZXJhdG9yRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE9wZXJhdG9yRWxlbWVudC5jcHAKQEAgLTIwMSw3
ICsyMDEsNyBAQCBjb25zdCBNYXRoTUxFbGVtZW50OjpMZW5ndGgmIE1hdGhNTE9wZXJhdG9yRWxl
bWVudDo6bWF4U2l6ZSgpCiAgICAgaWYgKG1fbWF4U2l6ZSkKICAgICAgICAgcmV0dXJuIG1fbWF4
U2l6ZS52YWx1ZSgpOwogCi0gICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSA9IGF0dHJpYnV0
ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oTWF0aE1MTmFtZXM6Om1heHNpemVBdHRyKTsKKyAgICBj
b25zdCBBdG9tU3RyaW5nJiB2YWx1ZSA9IGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24o
TWF0aE1MTmFtZXM6Om1heHNpemVBdHRyKTsKICAgICBpZiAodmFsdWUgPT0gImluZmluaXR5Iikg
ewogICAgICAgICBMZW5ndGggbWF4c2l6ZTsKICAgICAgICAgbWF4c2l6ZS50eXBlID0gTGVuZ3Ro
VHlwZTo6SW5maW5pdHk7CkBAIC0yMzksNyArMjM5LDcgQEAgc3RhdGljIE9wdGlvbmFsPE1hdGhN
TE9wZXJhdG9yRGljdGlvbmFyeTo6RmxhZz4gYXR0cmlidXRlTmFtZVRvUHJvcGVydHlGbGFnKGNv
bnMKICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogfQogCi12b2lkIE1hdGhNTE9wZXJhdG9yRWxl
bWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRv
bWljU3RyaW5nJiB2YWx1ZSkKK3ZvaWQgTWF0aE1MT3BlcmF0b3JFbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkK
IHsKICAgICBpZiAobmFtZSA9PSBmb3JtQXR0cikgewogICAgICAgICBtX2RpY3Rpb25hcnlQcm9w
ZXJ0eSA9IFdURjo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9N
YXRoTUxPcGVyYXRvckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxPcGVy
YXRvckVsZW1lbnQuaAppbmRleCBlMjBkZWQ4NzFjYzM3NGMzMWU4NjcyMDYwMTAzYzdhNGZiNjI3
MThjLi5jN2Q4ZDY2OWJmYzYwYzNlMTkzZjU0YmMwODlkNmI3NjM4MjJhYTg3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MT3BlcmF0b3JFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE9wZXJhdG9yRWxlbWVudC5oCkBAIC01Niw3ICs1Niw3
IEBAIHByaXZhdGU6CiAgICAgTWF0aE1MT3BlcmF0b3JFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsIERvY3VtZW50Jik7CiAgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRp
b24mKSBmaW5hbDsKICAgICB2b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYp
IGZpbmFsOwotICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNv
bnN0IEF0b21pY1N0cmluZyYpIGZpbmFsOworICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmKSBmaW5hbDsKIAogICAgIE9wdGlvbmFs
PE9wZXJhdG9yQ2hhcj4gbV9vcGVyYXRvckNoYXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL21hdGhtbC9NYXRoTUxQYWRkZWRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21hdGht
bC9NYXRoTUxQYWRkZWRFbGVtZW50LmNwcAppbmRleCA2ZTQyODY2YmIwN2RjYzlhZDI2MjcxYjMy
ZDM4YTFhMjg5ZmFkY2YzLi5mNzU5NDU5YjkyNTM0OTVjYzk3NTZiMTJhYjdlYjlkNzRiMzRiZmVk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MUGFkZGVkRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFBhZGRlZEVsZW1lbnQuY3BwCkBA
IC03Myw3ICs3Myw3IEBAIGNvbnN0IE1hdGhNTEVsZW1lbnQ6Okxlbmd0aCYgTWF0aE1MUGFkZGVk
RWxlbWVudDo6dm9mZnNldCgpCiAgICAgcmV0dXJuIGNhY2hlZE1hdGhNTExlbmd0aChNYXRoTUxO
YW1lczo6dm9mZnNldEF0dHIsIG1fdm9mZnNldCk7CiB9CiAKLXZvaWQgTWF0aE1MUGFkZGVkRWxl
bWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRv
bWljU3RyaW5nJiB2YWx1ZSkKK3ZvaWQgTWF0aE1MUGFkZGVkRWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCiB7
CiAgICAgaWYgKG5hbWUgPT0gd2lkdGhBdHRyKQogICAgICAgICBtX3dpZHRoID0gV1RGOjpudWxs
b3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFBhZGRlZEVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxQYWRkZWRFbGVtZW50LmgKaW5kZXgg
ZTFjMjNiYTQ4ZDQwMGJiZWJkY2RhYTJiNDA5NTczZDQ0YzIxMzBmNi4uNTk3MmM0OGRiY2EwNWU0
YzhjYmIyYmZjM2RjZDZkNDkyZjJiNDI2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0
aG1sL01hdGhNTFBhZGRlZEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0
aE1MUGFkZGVkRWxlbWVudC5oCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgTWF0aE1MUGFkZGVkRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1
bWVudCYpOwogICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVy
ZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgZmluYWw7Ci0gICAg
dm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3Ry
aW5nJikgZmluYWw7CisgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiwgY29uc3QgQXRvbVN0cmluZyYpIGZpbmFsOwogCiAgICAgT3B0aW9uYWw8TGVuZ3RoPiBtX3dp
ZHRoOwogICAgIE9wdGlvbmFsPExlbmd0aD4gbV9oZWlnaHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9tYXRobWwvTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9tYXRobWwvTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudC5jcHAKaW5kZXggN2JiYmJmYjYw
NzhkZWNhZjNhOTY2YmNjODk1N2NhZWU3ZGFkNjc2My4uMzZjMWRhZWIxMDg3MzY4MDUxMjc2OTBj
YTQ3ODAwYTUxZWRiNTlmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhN
TFByZXNlbnRhdGlvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRo
TUxQcmVzZW50YXRpb25FbGVtZW50LmNwcApAQCAtMTkxLDcgKzE5MSw3IEBAIGNvbnN0IE1hdGhN
TEVsZW1lbnQ6OkJvb2xlYW5WYWx1ZSYgTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudDo6Y2FjaGVk
Qm9vbGVhbkF0dHJpCiAgICAgICAgIHJldHVybiBhdHRyaWJ1dGUudmFsdWUoKTsKIAogICAgIC8v
IEluIE1hdGhNTCwgYXR0cmlidXRlIHZhbHVlcyBhcmUgY2FzZS1zZW5zaXRpdmUuCi0gICAgY29u
c3QgQXRvbWljU3RyaW5nJiB2YWx1ZSA9IGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24o
bmFtZSk7CisgICAgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUgPSBhdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKG5hbWUpOwogICAgIGlmICh2YWx1ZSA9PSAidHJ1ZSIpCiAgICAgICAgIGF0
dHJpYnV0ZSA9IEJvb2xlYW5WYWx1ZTo6VHJ1ZTsKICAgICBlbHNlIGlmICh2YWx1ZSA9PSAiZmFs
c2UiKQpAQCAtMzMxLDcgKzMzMSw3IEBAIE9wdGlvbmFsPGJvb2w+IE1hdGhNTFByZXNlbnRhdGlv
bkVsZW1lbnQ6OnNwZWNpZmllZERpc3BsYXlTdHlsZSgpCiAgICAgcmV0dXJuIHRvT3B0aW9uYWxC
b29sKHNwZWNpZmllZERpc3BsYXlTdHlsZSk7CiB9CiAKLU1hdGhNTEVsZW1lbnQ6Ok1hdGhWYXJp
YW50IE1hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQ6OnBhcnNlTWF0aFZhcmlhbnRBdHRyaWJ1dGUo
Y29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVWYWx1ZSkKK01hdGhNTEVsZW1lbnQ6Ok1hdGhW
YXJpYW50IE1hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQ6OnBhcnNlTWF0aFZhcmlhbnRBdHRyaWJ1
dGUoY29uc3QgQXRvbVN0cmluZyYgYXR0cmlidXRlVmFsdWUpCiB7CiAgICAgLy8gVGhlIG1hdGh2
YXJpYW50IGF0dHJpYnV0ZSB2YWx1ZXMgaXMgY2FzZS1zZW5zaXRpdmUuCiAgICAgaWYgKGF0dHJp
YnV0ZVZhbHVlID09ICJub3JtYWwiKQpAQCAtMzgyLDcgKzM4Miw3IEBAIE9wdGlvbmFsPE1hdGhN
TEVsZW1lbnQ6Ok1hdGhWYXJpYW50PiBNYXRoTUxQcmVzZW50YXRpb25FbGVtZW50OjpzcGVjaWZp
ZWRNYXRoVmFyCiAgICAgcmV0dXJuIG1fbWF0aFZhcmlhbnQudmFsdWUoKSA9PSBNYXRoVmFyaWFu
dDo6Tm9uZSA/IFdURjo6bnVsbG9wdCA6IG1fbWF0aFZhcmlhbnQ7CiB9CiAKLXZvaWQgTWF0aE1M
UHJlc2VudGF0aW9uRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
bmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKK3ZvaWQgTWF0aE1MUHJlc2VudGF0aW9u
RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3Qg
QXRvbVN0cmluZyYgdmFsdWUpCiB7CiAgICAgYm9vbCBkaXNwbGF5U3R5bGVBdHRyaWJ1dGUgPSBu
YW1lID09IGRpc3BsYXlzdHlsZUF0dHIgJiYgYWNjZXB0c0Rpc3BsYXlTdHlsZUF0dHJpYnV0ZSgp
OwogICAgIGJvb2wgbWF0aFZhcmlhbnRBdHRyaWJ1dGUgPSBuYW1lID09IG1hdGh2YXJpYW50QXR0
ciAmJiBhY2NlcHRzTWF0aFZhcmlhbnRBdHRyaWJ1dGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL21hdGhtbC9NYXRoTUxQcmVzZW50YXRpb25FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9tYXRobWwvTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudC5oCmluZGV4IGM1MzhhMWU4YjYzNTAx
ZjY2NTU1OWNiN2JiNDRlMzhlNGY1MzM5MmUuLjQ1NTE5Y2Y0MDY2N2Q0MDdhMzFhNTcxMGM3Y2Ez
YWRhOGFkNjM5OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxQcmVz
ZW50YXRpb25FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFByZXNl
bnRhdGlvbkVsZW1lbnQuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoK
ICAgICBNYXRoTUxQcmVzZW50YXRpb25FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50Jik7Ci0gICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgdm9pZCBwYXJzZUF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbVN0cmluZyYpIG92ZXJyaWRlOwog
CiAgICAgc3RhdGljIGJvb2wgaXNQaHJhc2luZ0NvbnRlbnQoY29uc3QgTm9kZSYpOwogICAgIHN0
YXRpYyBib29sIGlzRmxvd0NvbnRlbnQoY29uc3QgTm9kZSYpOwpAQCAtNjYsNyArNjYsNyBAQCBw
cml2YXRlOgogCiAgICAgc3RhdGljIExlbmd0aCBwYXJzZU51bWJlckFuZFVuaXQoY29uc3QgU3Ry
aW5nVmlldyYpOwogICAgIHN0YXRpYyBMZW5ndGggcGFyc2VOYW1lZFNwYWNlKGNvbnN0IFN0cmlu
Z1ZpZXcmKTsKLSAgICBzdGF0aWMgTWF0aFZhcmlhbnQgcGFyc2VNYXRoVmFyaWFudEF0dHJpYnV0
ZShjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVZhbHVlKTsKKyAgICBzdGF0aWMgTWF0aFZh
cmlhbnQgcGFyc2VNYXRoVmFyaWFudEF0dHJpYnV0ZShjb25zdCBBdG9tU3RyaW5nJiBhdHRyaWJ1
dGVWYWx1ZSk7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0
aE1MU2NyaXB0c0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFNjcmlw
dHNFbGVtZW50LmNwcAppbmRleCBkMjIyMjhjYzUxMzBhNWUxNzkyZjNiN2RjNmE2MmJlMzMwNzll
YzJmLi5kOGNiYjIyNTQ2YjdmNWMxZmFhZmViMThiNDhmZGNlMDZiNWQ0NWNiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU2NyaXB0c0VsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxTY3JpcHRzRWxlbWVudC5jcHAKQEAgLTc3LDcgKzc3
LDcgQEAgY29uc3QgTWF0aE1MRWxlbWVudDo6TGVuZ3RoJiBNYXRoTUxTY3JpcHRzRWxlbWVudDo6
c3VwZXJzY3JpcHRTaGlmdCgpCiAgICAgcmV0dXJuIGNhY2hlZE1hdGhNTExlbmd0aChzdXBlcnNj
cmlwdHNoaWZ0QXR0ciwgbV9zdXBlcnNjcmlwdFNoaWZ0KTsKIH0KIAotdm9pZCBNYXRoTUxTY3Jp
cHRzRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29u
c3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKK3ZvaWQgTWF0aE1MU2NyaXB0c0VsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZh
bHVlKQogewogICAgIGlmIChuYW1lID09IHN1YnNjcmlwdHNoaWZ0QXR0cikKICAgICAgICAgbV9z
dWJzY3JpcHRTaGlmdCA9IFdURjo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L21hdGhtbC9NYXRoTUxTY3JpcHRzRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01h
dGhNTFNjcmlwdHNFbGVtZW50LmgKaW5kZXggZTRmYjU0MjhlMmVjM2Y3YjRlZTU5MzY1NGIxMTY5
ZmVjOWRkZGVhYS4uNDNkYzRmYzlmMjcxNTJkZDc3YzZiNWVmY2U1ZjQ1Y2UxZmU5NjM5YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFNjcmlwdHNFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFNjcmlwdHNFbGVtZW50LmgKQEAgLTQ2LDcg
KzQ2LDcgQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAgIFJlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJl
ZVBvc2l0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgdm9pZCBwYXJz
ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbVN0cmluZyYpIG92ZXJy
aWRlOwogCiAgICAgY29uc3QgU2NyaXB0VHlwZSBtX3NjcmlwdFR5cGU7CiAgICAgT3B0aW9uYWw8
TGVuZ3RoPiBtX3N1YnNjcmlwdFNoaWZ0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0
aG1sL01hdGhNTFNlbGVjdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhN
TFNlbGVjdEVsZW1lbnQuY3BwCmluZGV4IGI0YTRhZTgzMDc4Yzk2NWU0MDRhYjg4Njk3ZWZjMzVm
YWU2NzNjYWQuLjgwYWVhMTBkMDBjY2Y5ZTQ3ZWEzOWQ4NGUxNzE3MGNjOTFkNmVlODcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxTZWxlY3RFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU2VsZWN0RWxlbWVudC5jcHAKQEAgLTY4LDE3
ICs2OCwxNyBAQCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gTWF0aE1MU2VsZWN0RWxlbWVudDo6
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJgogLy8gLSBPdGhlciBNSU1FIENvbnRl
bnQtVHlwZXMgZm9yIE1hdGhNTCwgU1ZHIGFuZCBIVE1MLgogLy8KIC8vIFdlIGV4Y2x1ZGUgImFw
cGxpY2F0aW9uL21hdGhtbCt4bWwiIHdoaWNoIGlzIGFtYmlndW91cyBhYm91dCB3aGV0aGVyIGl0
IGlzIFByZXNlbnRhdGlvbiBvciBDb250ZW50IE1hdGhNTC4gQXV0aG9ycyBtdXN0IHVzZSBhIG1v
cmUgZXhwbGljaXQgZW5jb2RpbmcgdmFsdWUuCi1ib29sIE1hdGhNTFNlbGVjdEVsZW1lbnQ6Omlz
TWF0aE1MRW5jb2RpbmcoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKK2Jvb2wgTWF0aE1MU2Vs
ZWN0RWxlbWVudDo6aXNNYXRoTUxFbmNvZGluZyhjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKIHsK
ICAgICByZXR1cm4gdmFsdWUgPT0gImFwcGxpY2F0aW9uL21hdGhtbC1wcmVzZW50YXRpb24reG1s
IiB8fCB2YWx1ZSA9PSAiTWF0aE1MLVByZXNlbnRhdGlvbiI7CiB9CiAKLWJvb2wgTWF0aE1MU2Vs
ZWN0RWxlbWVudDo6aXNTVkdFbmNvZGluZyhjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQorYm9v
bCBNYXRoTUxTZWxlY3RFbGVtZW50Ojppc1NWR0VuY29kaW5nKGNvbnN0IEF0b21TdHJpbmcmIHZh
bHVlKQogewogICAgIHJldHVybiB2YWx1ZSA9PSAiaW1hZ2Uvc3ZnK3htbCIgfHwgdmFsdWUgPT0g
IlNWRzEuMSI7CiB9CiAKLWJvb2wgTWF0aE1MU2VsZWN0RWxlbWVudDo6aXNIVE1MRW5jb2Rpbmco
Y29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKK2Jvb2wgTWF0aE1MU2VsZWN0RWxlbWVudDo6aXNI
VE1MRW5jb2RpbmcoY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCiB7CiAgICAgcmV0dXJuIHZhbHVl
ID09ICJhcHBsaWNhdGlvbi94aHRtbCt4bWwiIHx8IHZhbHVlID09ICJ0ZXh0L2h0bWwiOwogfQpA
QCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgTWF0aE1MU2VsZWN0RWxlbWVudDo6Y2hpbGRyZW5DaGFu
Z2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2UpCiAgICAgTWF0aE1MUm93RWxlbWVudDo6Y2hp
bGRyZW5DaGFuZ2VkKGNoYW5nZSk7CiB9CiAKLXZvaWQgTWF0aE1MU2VsZWN0RWxlbWVudDo6YXR0
cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJp
bmcmIG9sZFZhbHVlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlLCBBdHRyaWJ1dGVNb2Rp
ZmljYXRpb25SZWFzb24gcmVhc29uKQordm9pZCBNYXRoTUxTZWxlY3RFbGVtZW50OjphdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIG9s
ZFZhbHVlLCBjb25zdCBBdG9tU3RyaW5nJiBuZXdWYWx1ZSwgQXR0cmlidXRlTW9kaWZpY2F0aW9u
UmVhc29uIHJlYXNvbikKIHsKICAgICBpZiAoaGFzVGFnTmFtZShtYWN0aW9uVGFnKSAmJiAobmFt
ZSA9PSBNYXRoTUxOYW1lczo6YWN0aW9udHlwZUF0dHIgfHwgbmFtZSA9PSBNYXRoTUxOYW1lczo6
c2VsZWN0aW9uQXR0cikpCiAgICAgICAgIHVwZGF0ZVNlbGVjdGVkQ2hpbGQoKTsKQEAgLTI0MCw3
ICsyNDAsNyBAQCB2b2lkIE1hdGhNTFNlbGVjdEVsZW1lbnQ6OnRvZ2dsZSgpCiAKICAgICAvLyBX
ZSB1cGRhdGUgdGhlIGF0dHJpYnV0ZSB2YWx1ZSBvZiB0aGUgc2VsZWN0aW9uIGF0dHJpYnV0ZS4K
ICAgICAvLyBUaGlzIHdpbGwgYWxzbyBjYWxsIE1hdGhNTFNlbGVjdEVsZW1lbnQ6OmF0dHJpYnV0
ZUNoYW5nZWQgdG8gdXBkYXRlIHRoZSBzZWxlY3RlZCBjaGlsZC4KLSAgICBzZXRBdHRyaWJ1dGVX
aXRob3V0U3luY2hyb25pemF0aW9uKE1hdGhNTE5hbWVzOjpzZWxlY3Rpb25BdHRyLCBBdG9taWNT
dHJpbmc6Om51bWJlcihuZXdTZWxlY3RlZENoaWxkSW5kZXgpKTsKKyAgICBzZXRBdHRyaWJ1dGVX
aXRob3V0U3luY2hyb25pemF0aW9uKE1hdGhNTE5hbWVzOjpzZWxlY3Rpb25BdHRyLCBBdG9tU3Ry
aW5nOjpudW1iZXIobmV3U2VsZWN0ZWRDaGlsZEluZGV4KSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxTZWxlY3RFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9tYXRobWwvTWF0aE1MU2VsZWN0RWxlbWVudC5oCmluZGV4IGY3YTBkMjFlMzhmYTZhNDc4
MTE5MTFiMDliNzRhMWExYzMwNmQ3NTYuLjA3YzQ4OGVjNDJhMDQxYzQzMWIxNWUyODNlNWU3MDEx
NmFhNmU3NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxTZWxlY3RF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFNlbGVjdEVsZW1lbnQu
aApAQCAtMzUsOSArMzUsOSBAQCBjbGFzcyBNYXRoTUxTZWxlY3RFbGVtZW50IGZpbmFsIDogcHVi
bGljIE1hdGhNTFJvd0VsZW1lbnQgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoTWF0aE1M
U2VsZWN0RWxlbWVudCk7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxNYXRoTUxTZWxlY3RFbGVt
ZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmKTsKLSAg
ICBzdGF0aWMgYm9vbCBpc01hdGhNTEVuY29kaW5nKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUp
OwotICAgIHN0YXRpYyBib29sIGlzU1ZHRW5jb2RpbmcoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1
ZSk7Ci0gICAgc3RhdGljIGJvb2wgaXNIVE1MRW5jb2RpbmcoY29uc3QgQXRvbWljU3RyaW5nJiB2
YWx1ZSk7CisgICAgc3RhdGljIGJvb2wgaXNNYXRoTUxFbmNvZGluZyhjb25zdCBBdG9tU3RyaW5n
JiB2YWx1ZSk7CisgICAgc3RhdGljIGJvb2wgaXNTVkdFbmNvZGluZyhjb25zdCBBdG9tU3RyaW5n
JiB2YWx1ZSk7CisgICAgc3RhdGljIGJvb2wgaXNIVE1MRW5jb2RpbmcoY29uc3QgQXRvbVN0cmlu
ZyYgdmFsdWUpOwogCiBwcml2YXRlOgogICAgIE1hdGhNTFNlbGVjdEVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmKTsKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgZmluaXNoUGFyc2luZ0NoaWxkcmVuKCkgZmluYWw7CiAgICAgdm9pZCBj
aGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKSBmaW5hbDsKLSAgICB2b2lkIGF0dHJp
YnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYgb2xk
VmFsdWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUsIEF0dHJpYnV0ZU1vZGlmaWNhdGlv
blJlYXNvbiA9IE1vZGlmaWVkRGlyZWN0bHkpIGZpbmFsOworICAgIHZvaWQgYXR0cmlidXRlQ2hh
bmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbVN0cmluZyYgb2xkVmFsdWUsIGNv
bnN0IEF0b21TdHJpbmcmIG5ld1ZhbHVlLCBBdHRyaWJ1dGVNb2RpZmljYXRpb25SZWFzb24gPSBN
b2RpZmllZERpcmVjdGx5KSBmaW5hbDsKICAgICB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZl
bnQmKSBmaW5hbDsKICAgICBib29sIHdpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkgZmlu
YWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxTcGFjZUVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFNwYWNlRWxlbWVudC5jcHAKaW5k
ZXggNGFiMWEwNTU2ZGI4ZmU0NTIzYWJmNThhZTNhZWMwYmEyNDYyYjY1YS4uY2NkNzg4NjE1ZTMz
OGVkYjc1YWU0YzM0YjE4ZmExMDVjODQ1YTg2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bWF0aG1sL01hdGhNTFNwYWNlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1s
L01hdGhNTFNwYWNlRWxlbWVudC5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgY29uc3QgTWF0aE1MRWxl
bWVudDo6TGVuZ3RoJiBNYXRoTUxTcGFjZUVsZW1lbnQ6OmRlcHRoKCkKICAgICByZXR1cm4gY2Fj
aGVkTWF0aE1MTGVuZ3RoKE1hdGhNTE5hbWVzOjpkZXB0aEF0dHIsIG1fZGVwdGgpOwogfQogCi12
b2lkIE1hdGhNTFNwYWNlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKK3ZvaWQgTWF0aE1MU3BhY2VFbGVt
ZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9t
U3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAobmFtZSA9PSB3aWR0aEF0dHIpCiAgICAgICAgIG1f
d2lkdGggPSBXVEY6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwv
TWF0aE1MU3BhY2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU3BhY2VF
bGVtZW50LmgKaW5kZXggOGE4NWFjYjRiYWYzOTJiNzRmZDFhZjk2MmZiYmQ0ZWM4NmFmM2YxZC4u
YzEyODA4ZDQ5MWVhMGU2NjRiM2E5MmE0MzJjOTIzN2Q3N2I4NWRkZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFNwYWNlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL21hdGhtbC9NYXRoTUxTcGFjZUVsZW1lbnQuaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6
CiBwcml2YXRlOgogICAgIE1hdGhNTFNwYWNlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBEb2N1bWVudCYpOwogICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVF
bGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikg
ZmluYWw7Ci0gICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29u
c3QgQXRvbWljU3RyaW5nJikgZmluYWw7CisgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbVN0cmluZyYpIGZpbmFsOwogCiAgICAgYm9vbCBhY2Nl
cHRzRGlzcGxheVN0eWxlQXR0cmlidXRlKCkgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFVuZGVyT3ZlckVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFVuZGVyT3ZlckVsZW1lbnQuY3BwCmluZGV4
IDBjMWRmZWFiOTU3YTk5NjhlM2ViYmUzZDk2N2ZmOTBmMDY1NDYwOGYuLjUzOWZiZDg1Y2Y4NmFh
ZjcyM2VlZWZiMDczYzdmZTBkOWEwZmUyNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21h
dGhtbC9NYXRoTUxVbmRlck92ZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRo
bWwvTWF0aE1MVW5kZXJPdmVyRWxlbWVudC5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgY29uc3QgTWF0
aE1MRWxlbWVudDo6Qm9vbGVhblZhbHVlJiBNYXRoTUxVbmRlck92ZXJFbGVtZW50OjphY2NlbnRV
bmRlcigpCiAgICAgcmV0dXJuIGNhY2hlZEJvb2xlYW5BdHRyaWJ1dGUoYWNjZW50dW5kZXJBdHRy
LCBtX2FjY2VudFVuZGVyKTsKIH0KIAotdm9pZCBNYXRoTUxVbmRlck92ZXJFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcm
IHZhbHVlKQordm9pZCBNYXRoTUxVbmRlck92ZXJFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBp
ZiAobmFtZSA9PSBhY2NlbnRBdHRyKQogICAgICAgICBtX2FjY2VudCA9IFdURjo6bnVsbG9wdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxVbmRlck92ZXJFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVW5kZXJPdmVyRWxlbWVudC5oCmluZGV4
IGJkNjRmYTRjOTU4MTU1OTIwN2RlZTA3YzQ5OTg3ZjQ2YzdkZmM1NGIuLmY2MzQwMmYwZDc2MmY0
YTA4NmMzMjQ5NTg5NWNkNDRjNzNhNzJjMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21h
dGhtbC9NYXRoTUxVbmRlck92ZXJFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1s
L01hdGhNTFVuZGVyT3ZlckVsZW1lbnQuaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIE1hdGhNTFVuZGVyT3ZlckVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQmKTsKICAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxl
bWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIGZp
bmFsOwotICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0
IEF0b21pY1N0cmluZyYpIGZpbmFsOworICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmKSBmaW5hbDsKIAogICAgIE9wdGlvbmFsPEJv
b2xlYW5WYWx1ZT4gbV9hY2NlbnQ7CiAgICAgT3B0aW9uYWw8Qm9vbGVhblZhbHVlPiBtX2FjY2Vu
dFVuZGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmluZGV4IGNmY2JiMWQ4MjFhY2U4Y2Vi
ZmJiM2UyOGYzYWY1MWY0ZmNjN2Q1MTYuLjI5NDc2YjAwYjdlNWNhY2QyOWY4YTQ1MTdjMmQ1Mjg3
YmNiZjM5YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKQEAgLTE4MTAsNyArMTgxMCw3
IEBAIGJvb2wgRE9NV2luZG93Ojppc1NhbWVTZWN1cml0eU9yaWdpbkFzTWFpbkZyYW1lKCkgY29u
c3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgRE9NV2luZG93OjphZGRFdmVudExpc3Rl
bmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiBs
aXN0ZW5lciwgY29uc3QgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMmIG9wdGlvbnMpCitib29sIERP
TVdpbmRvdzo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIFJl
ZjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBjb25zdCBBZGRFdmVudExpc3RlbmVyT3B0aW9u
cyYgb3B0aW9ucykKIHsKICAgICBpZiAoIUV2ZW50VGFyZ2V0OjphZGRFdmVudExpc3RlbmVyKGV2
ZW50VHlwZSwgV1RGTW92ZShsaXN0ZW5lciksIG9wdGlvbnMpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC0yMDMxLDcgKzIwMzEsNyBAQCB2b2lkIERPTVdpbmRvdzo6cmVzZXRBbGxHZW9sb2Nh
dGlvblBlcm1pc3Npb24oKQogI2VuZGlmCiB9CiAKLWJvb2wgRE9NV2luZG93OjpyZW1vdmVFdmVu
dExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiBs
aXN0ZW5lciwgY29uc3QgTGlzdGVuZXJPcHRpb25zJiBvcHRpb25zKQorYm9vbCBET01XaW5kb3c6
OnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBFdmVudExp
c3RlbmVyJiBsaXN0ZW5lciwgY29uc3QgTGlzdGVuZXJPcHRpb25zJiBvcHRpb25zKQogewogICAg
IGlmICghRXZlbnRUYXJnZXQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5l
ciwgb3B0aW9ucy5jYXB0dXJlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjMxMyw3ICsy
MzEzLDcgQEAgYm9vbCBET01XaW5kb3c6OmlzSW5zZWN1cmVTY3JpcHRBY2Nlc3MoRE9NV2luZG93
JiBhY3RpdmVXaW5kb3csIGNvbnN0IFN0cmluZyYgdXIKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
RXhjZXB0aW9uT3I8UmVmUHRyPEZyYW1lPj4gRE9NV2luZG93OjpjcmVhdGVXaW5kb3coY29uc3Qg
U3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IEF0b21pY1N0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBX
aW5kb3dGZWF0dXJlcyYgd2luZG93RmVhdHVyZXMsIERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBG
cmFtZSYgZmlyc3RGcmFtZSwgRnJhbWUmIG9wZW5lckZyYW1lLCBjb25zdCBXVEY6OkZ1bmN0aW9u
PHZvaWQoRE9NV2luZG93Jik+JiBwcmVwYXJlRGlhbG9nRnVuY3Rpb24pCitFeGNlcHRpb25PcjxS
ZWZQdHI8RnJhbWU+PiBET01XaW5kb3c6OmNyZWF0ZVdpbmRvdyhjb25zdCBTdHJpbmcmIHVybFN0
cmluZywgY29uc3QgQXRvbVN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBXaW5kb3dGZWF0dXJlcyYg
d2luZG93RmVhdHVyZXMsIERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBGcmFtZSYgZmlyc3RGcmFt
ZSwgRnJhbWUmIG9wZW5lckZyYW1lLCBjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoRE9NV2luZG93
Jik+JiBwcmVwYXJlRGlhbG9nRnVuY3Rpb24pCiB7CiAgICAgRnJhbWUqIGFjdGl2ZUZyYW1lID0g
YWN0aXZlV2luZG93LmZyYW1lKCk7CiAgICAgaWYgKCFhY3RpdmVGcmFtZSkKQEAgLTIzNzIsNyAr
MjM3Miw3IEBAIEV4Y2VwdGlvbk9yPFJlZlB0cjxGcmFtZT4+IERPTVdpbmRvdzo6Y3JlYXRlV2lu
ZG93KGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zCiAgICAgcmV0dXJuIG5vb3BlbmVyID8g
UmVmUHRyPEZyYW1lPiB7IG51bGxwdHIgfSA6IG5ld0ZyYW1lOwogfQogCi1FeGNlcHRpb25PcjxS
ZWZQdHI8V2luZG93UHJveHk+PiBET01XaW5kb3c6Om9wZW4oRE9NV2luZG93JiBhY3RpdmVXaW5k
b3csIERPTVdpbmRvdyYgZmlyc3RXaW5kb3csIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25z
dCBBdG9taWNTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgU3RyaW5nJiB3aW5kb3dGZWF0dXJlc1N0
cmluZykKK0V4Y2VwdGlvbk9yPFJlZlB0cjxXaW5kb3dQcm94eT4+IERPTVdpbmRvdzo6b3BlbihE
T01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRE9NV2luZG93JiBmaXJzdFdpbmRvdywgY29uc3QgU3Ry
aW5nJiB1cmxTdHJpbmcsIGNvbnN0IEF0b21TdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgU3RyaW5n
JiB3aW5kb3dGZWF0dXJlc1N0cmluZykKIHsKICAgICBpZiAoIWlzQ3VycmVudGx5RGlzcGxheWVk
SW5GcmFtZSgpKQogICAgICAgICByZXR1cm4gUmVmUHRyPFdpbmRvd1Byb3h5PiB7IG51bGxwdHIg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCmluZGV4IGZhYzc5NTQ3NmU2ZTlhNTVlOGM3OGRiZDg1
NzRkZGFjNWU1YzIwNzEuLjZlNTYyYTkwMWQwMGQ1ZjY5YWMwN2YzMzEzYWViOTI2MWQ5Y2M0ZGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaApAQCAtMTc3LDcgKzE3Nyw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHByaW50KCk7CiAgICAgdm9pZCBzdG9wKCk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBF
eGNlcHRpb25PcjxSZWZQdHI8V2luZG93UHJveHk+PiBvcGVuKERPTVdpbmRvdyYgYWN0aXZlV2lu
ZG93LCBET01XaW5kb3cmIGZpcnN0V2luZG93LCBjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29u
c3QgQXRvbWljU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IFN0cmluZyYgd2luZG93RmVhdHVyZXNT
dHJpbmcpOworICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPFJlZlB0cjxXaW5kb3dQcm94
eT4+IG9wZW4oRE9NV2luZG93JiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyYgZmlyc3RXaW5kb3cs
IGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBBdG9tU3RyaW5nJiBmcmFtZU5hbWUsIGNv
bnN0IFN0cmluZyYgd2luZG93RmVhdHVyZXNTdHJpbmcpOwogCiAgICAgdm9pZCBzaG93TW9kYWxE
aWFsb2coY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGlhbG9nRmVhdHVy
ZXNTdHJpbmcsIERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBET01XaW5kb3cmIGZpcnN0V2luZG93
LCBjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoRE9NV2luZG93Jik+JiBwcmVwYXJlRGlhbG9nRnVu
Y3Rpb24pOwogCkBAIC0yODIsOCArMjgyLDggQEAgcHVibGljOgogCiAgICAgLy8gRXZlbnRzCiAg
ICAgLy8gRXZlbnRUYXJnZXQgQVBJCi0gICAgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiwgY29uc3QgQWRkRXZl
bnRMaXN0ZW5lck9wdGlvbnMmKSBmaW5hbDsKLSAgICBib29sIHJlbW92ZUV2ZW50TGlzdGVuZXIo
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXImLCBjb25zdCBMaXN0
ZW5lck9wdGlvbnMmKSBmaW5hbDsKKyAgICBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRv
bVN0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiwgY29uc3QgQWRkRXZlbnRM
aXN0ZW5lck9wdGlvbnMmKSBmaW5hbDsKKyAgICBib29sIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29u
c3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiwgY29uc3QgTGlzdGVuZXJP
cHRpb25zJikgZmluYWw7CiAgICAgdm9pZCByZW1vdmVBbGxFdmVudExpc3RlbmVycygpIGZpbmFs
OwogCiAgICAgdXNpbmcgRXZlbnRUYXJnZXQ6OmRpc3BhdGNoRXZlbnQ7CkBAIC0zNzcsNyArMzc3
LDcgQEAgcHJpdmF0ZToKICAgICBQYWdlKiBwYWdlKCk7CiAgICAgYm9vbCBhbGxvd2VkVG9DaGFu
Z2VXaW5kb3dHZW9tZXRyeSgpIGNvbnN0OwogCi0gICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZlB0
cjxGcmFtZT4+IGNyZWF0ZVdpbmRvdyhjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgQXRv
bWljU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiwgRE9NV2luZG93JiBh
Y3RpdmVXaW5kb3csIEZyYW1lJiBmaXJzdEZyYW1lLCBGcmFtZSYgb3BlbmVyRnJhbWUsIGNvbnN0
IFdURjo6RnVuY3Rpb248dm9pZChET01XaW5kb3cmKT4mIHByZXBhcmVEaWFsb2dGdW5jdGlvbiA9
IG51bGxwdHIpOworICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWZQdHI8RnJhbWU+PiBjcmVhdGVX
aW5kb3coY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IEF0b21TdHJpbmcmIGZyYW1lTmFt
ZSwgY29uc3QgV2luZG93RmVhdHVyZXMmLCBET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRnJhbWUm
IGZpcnN0RnJhbWUsIEZyYW1lJiBvcGVuZXJGcmFtZSwgY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lk
KERPTVdpbmRvdyYpPiYgcHJlcGFyZURpYWxvZ0Z1bmN0aW9uID0gbnVsbHB0cik7CiAgICAgYm9v
bCBpc0luc2VjdXJlU2NyaXB0QWNjZXNzKERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBjb25zdCBT
dHJpbmcmIHVybFN0cmluZyk7CiAKICNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IGExZjg1MTEwYTBlODFkMGZhNGE4NTM4
ZGZlYTM1ZjBlZDgzMmY3NWUuLmEzMGM5ZTk0MzdlNzVhMGIyNWVlN2Q4NTMwODU1YjI1YTU0YTA4
YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTIyNDgsNyArMjI0OCw3
IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVQYXN0ZUdsb2JhbFNlbGVjdGlvbihjb25zdCBQ
bGF0Zm9ybU1vdXNlRXZlbnQmIHBsYXRmb3JtCiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQog
Ci1ib29sIEV2ZW50SGFuZGxlcjo6ZGlzcGF0Y2hEcmFnRXZlbnQoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUsIEVsZW1lbnQmIGRyYWdUYXJnZXQsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVu
dCYgZXZlbnQsIERhdGFUcmFuc2ZlciYgZGF0YVRyYW5zZmVyKQorYm9vbCBFdmVudEhhbmRsZXI6
OmRpc3BhdGNoRHJhZ0V2ZW50KGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgRWxlbWVudCYg
ZHJhZ1RhcmdldCwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgRGF0YVRyYW5zZmVy
JiBkYXRhVHJhbnNmZXIpCiB7CiAgICAgUmVmPEZyYW1lPiBwcm90ZWN0ZWRGcmFtZShtX2ZyYW1l
KTsKICAgICBGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLnZpZXcoKTsKQEAgLTIzNDMsNyArMjM0
Myw3IEBAIHN0YXRpYyBib29sIGZpbmREcm9wWm9uZShOb2RlJiB0YXJnZXQsIERhdGFUcmFuc2Zl
ciYgZGF0YVRyYW5zZmVyKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotRXZlbnRIYW5kbGVyOjpE
cmFnVGFyZ2V0UmVzcG9uc2UgRXZlbnRIYW5kbGVyOjpkaXNwYXRjaERyYWdFbnRlck9yRHJhZ092
ZXJFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRWxlbWVudCYgdGFyZ2V0LCBj
b25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50LAorRXZlbnRIYW5kbGVyOjpEcmFnVGFyZ2V0
UmVzcG9uc2UgRXZlbnRIYW5kbGVyOjpkaXNwYXRjaERyYWdFbnRlck9yRHJhZ092ZXJFdmVudChj
b25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIEVsZW1lbnQmIHRhcmdldCwgY29uc3QgUGxhdGZv
cm1Nb3VzZUV2ZW50JiBldmVudCwKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiBw
YXN0ZWJvYXJkLCBEcmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlvbiwgYm9vbCBkcmFnZ2luZ0Zp
bGVzKQogewogICAgIGF1dG8gZGF0YVRyYW5zZmVyID0gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JV
cGRhdGluZ0Ryb3BUYXJnZXQodGFyZ2V0LmRvY3VtZW50KCksIFdURk1vdmUocGFzdGVib2FyZCks
IHNvdXJjZU9wZXJhdGlvbiwgZHJhZ2dpbmdGaWxlcyk7CkBAIC0yNDg5LDcgKzI0ODksNyBAQCBN
b3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzIEV2ZW50SGFuZGxlcjo6cHJlcGFyZU1vdXNlRXZl
bnQoY29uc3QgSGl0VGVzdFJlcXVlcwogICAgIHJldHVybiBtX2ZyYW1lLmRvY3VtZW50KCktPnBy
ZXBhcmVNb3VzZUV2ZW50KHJlcXVlc3QsIGRvY3VtZW50UG9pbnRGb3JXaW5kb3dQb2ludChtX2Zy
YW1lLCBtb3VzZUV2ZW50LnBvc2l0aW9uKCkpLCBtb3VzZUV2ZW50KTsKIH0KIAotc3RhdGljIGJv
b2wgaGllcmFyY2h5SGFzQ2FwdHVyaW5nRXZlbnRMaXN0ZW5lcnMoRWxlbWVudCogZWxlbWVudCwg
Y29uc3QgQXRvbWljU3RyaW5nJiBwb2ludGVyRXZlbnROYW1lLCBjb25zdCBBdG9taWNTdHJpbmcm
IGNvbXBhdGliaWxpdHlNb3VzZUV2ZW50TmFtZSkKK3N0YXRpYyBib29sIGhpZXJhcmNoeUhhc0Nh
cHR1cmluZ0V2ZW50TGlzdGVuZXJzKEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IEF0b21TdHJpbmcm
IHBvaW50ZXJFdmVudE5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIGNvbXBhdGliaWxpdHlNb3VzZUV2
ZW50TmFtZSkKIHsKICAgICBmb3IgKENvbnRhaW5lck5vZGUqIGN1cnIgPSBlbGVtZW50OyBjdXJy
OyBjdXJyID0gY3Vyci0+cGFyZW50SW5Db21wb3NlZFRyZWUoKSkgewogICAgICAgICBpZiAoY3Vy
ci0+aGFzQ2FwdHVyaW5nRXZlbnRMaXN0ZW5lcnMocG9pbnRlckV2ZW50TmFtZSkgfHwgY3Vyci0+
aGFzQ2FwdHVyaW5nRXZlbnRMaXN0ZW5lcnMoY29tcGF0aWJpbGl0eU1vdXNlRXZlbnROYW1lKSkK
QEAgLTI2MDMsNyArMjYwMyw3IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjp1cGRhdGVNb3VzZUV2ZW50
VGFyZ2V0Tm9kZShOb2RlKiB0YXJnZXROb2RlLCBjb25zdCBQbGF0Zm9ybU1vCiAgICAgfQogfQog
Ci1ib29sIEV2ZW50SGFuZGxlcjo6ZGlzcGF0Y2hNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmlu
ZyYgZXZlbnRUeXBlLCBOb2RlKiB0YXJnZXROb2RlLCBib29sIC8qY2FuY2VsYWJsZSovLCBpbnQg
Y2xpY2tDb3VudCwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBwbGF0Zm9ybU1vdXNlRXZlbnQs
IGJvb2wgc2V0VW5kZXIpCitib29sIEV2ZW50SGFuZGxlcjo6ZGlzcGF0Y2hNb3VzZUV2ZW50KGNv
bnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgTm9kZSogdGFyZ2V0Tm9kZSwgYm9vbCAvKmNhbmNl
bGFibGUqLywgaW50IGNsaWNrQ291bnQsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgcGxhdGZv
cm1Nb3VzZUV2ZW50LCBib29sIHNldFVuZGVyKQogewogICAgIFJlZjxGcmFtZT4gcHJvdGVjdGVk
RnJhbWUobV9mcmFtZSk7CiAKQEAgLTMzNTUsMTIgKzMzNTUsMTIgQEAgYm9vbCBFdmVudEhhbmRs
ZXI6OmludGVybmFsS2V5RXZlbnQoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiBpbml0aWFs
S2V5RXZlbnQKICAgICByZXR1cm4ga2V5ZG93blJlc3VsdCB8fCBrZXlwcmVzcy0+ZGVmYXVsdFBy
ZXZlbnRlZCgpIHx8IGtleXByZXNzLT5kZWZhdWx0SGFuZGxlZCgpOwogfQogCi1zdGF0aWMgRm9j
dXNEaXJlY3Rpb24gZm9jdXNEaXJlY3Rpb25Gb3JLZXkoY29uc3QgQXRvbWljU3RyaW5nJiBrZXlJ
ZGVudGlmaWVyKQorc3RhdGljIEZvY3VzRGlyZWN0aW9uIGZvY3VzRGlyZWN0aW9uRm9yS2V5KGNv
bnN0IEF0b21TdHJpbmcmIGtleUlkZW50aWZpZXIpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPEF0b21pY1N0cmluZz4gRG93bigiRG93biIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IFVwKCJV
cCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IExlZnQoIkxlZnQiLCBBdG9taWNTdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5n
PiBSaWdodCgiUmlnaHQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbVN0cmluZz4gRG93bigiRG93biIsIEF0b21TdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRv
bVN0cmluZz4gVXAoIlVwIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9tU3RyaW5nPiBMZWZ0KCJMZWZ0IiwgQXRvbVN0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9t
U3RyaW5nPiBSaWdodCgiUmlnaHQiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7
CiAKICAgICBGb2N1c0RpcmVjdGlvbiByZXRWYWwgPSBGb2N1c0RpcmVjdGlvbk5vbmU7CiAKQEAg
LTM2MzcsNyArMzYzNyw3IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjp1cGRhdGVEcmFnU3RhdGVBZnRl
ckVkaXREcmFnSWZOZWVkZWQoRWxlbWVudCYgcm9vdEVkaXRhYmxlRWxlCiAgICAgICAgIGRyYWdT
dGF0ZSgpLnNvdXJjZSA9ICZyb290RWRpdGFibGVFbGVtZW50OwogfQogCi12b2lkIEV2ZW50SGFu
ZGxlcjo6ZGlzcGF0Y2hEcmFnU3JjRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUs
IGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpCit2b2lkIEV2ZW50SGFuZGxlcjo6ZGlz
cGF0Y2hEcmFnU3JjRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBQbGF0
Zm9ybU1vdXNlRXZlbnQmIGV2ZW50KQogewogICAgIEFTU0VSVChkcmFnU3RhdGUoKS5kYXRhVHJh
bnNmZXIpOwogICAgIGRpc3BhdGNoRHJhZ0V2ZW50KGV2ZW50VHlwZSwgKmRyYWdTdGF0ZSgpLnNv
dXJjZSwgZXZlbnQsICpkcmFnU3RhdGUoKS5kYXRhVHJhbnNmZXIpOwpAQCAtNDAyNiw3ICs0MDI2
LDcgQEAgdm9pZCBFdmVudEhhbmRsZXI6OnVwZGF0ZUxhc3RTY3JvbGxiYXJVbmRlck1vdXNlKFNj
cm9sbGJhciogc2Nyb2xsYmFyLCBTZXRPckNsZWEKIH0KIAogI2lmIEVOQUJMRShUT1VDSF9FVkVO
VFMpICYmICFFTkFCTEUoSU9TX1RPVUNIX0VWRU5UUykKLXN0YXRpYyBjb25zdCBBdG9taWNTdHJp
bmcmIGV2ZW50TmFtZUZvclRvdWNoUG9pbnRTdGF0ZShQbGF0Zm9ybVRvdWNoUG9pbnQ6OlN0YXRl
IHN0YXRlKQorc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50TmFtZUZvclRvdWNoUG9pbnRT
dGF0ZShQbGF0Zm9ybVRvdWNoUG9pbnQ6OlN0YXRlIHN0YXRlKQogewogICAgIHN3aXRjaCAoc3Rh
dGUpIHsKICAgICBjYXNlIFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hSZWxlYXNlZDoKQEAgLTQy
NDAsNyArNDI0MCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVUb3VjaEV2ZW50KGNvbnN0
IFBsYXRmb3JtVG91Y2hFdmVudCYgZXZlbnQpCiAgICAgICAgIC8vIFdoZW4gc2VuZGluZyBhIHRv
dWNoIGNhbmNlbCBldmVudCwgdXNlIGVtcHR5IHRvdWNoZXMgYW5kIHRhcmdldFRvdWNoZXMgbGlz
dHMuCiAgICAgICAgIGJvb2wgaXNUb3VjaENhbmNlbEV2ZW50ID0gKHN0YXRlID09IFBsYXRmb3Jt
VG91Y2hQb2ludDo6VG91Y2hDYW5jZWxsZWQpOwogICAgICAgICBSZWZQdHI8VG91Y2hMaXN0PiYg
ZWZmZWN0aXZlVG91Y2hlcyhpc1RvdWNoQ2FuY2VsRXZlbnQgPyBlbXB0eUxpc3QgOiB0b3VjaGVz
KTsKLSAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBzdGF0ZU5hbWUoZXZlbnROYW1lRm9yVG91
Y2hQb2ludFN0YXRlKHN0YXRpY19jYXN0PFBsYXRmb3JtVG91Y2hQb2ludDo6U3RhdGU+KHN0YXRl
KSkpOworICAgICAgICBjb25zdCBBdG9tU3RyaW5nJiBzdGF0ZU5hbWUoZXZlbnROYW1lRm9yVG91
Y2hQb2ludFN0YXRlKHN0YXRpY19jYXN0PFBsYXRmb3JtVG91Y2hQb2ludDo6U3RhdGU+KHN0YXRl
KSkpOwogCiAgICAgICAgIGZvciAoYXV0byYgdGFyZ2V0IDogY2hhbmdlZFRvdWNoZXNbc3RhdGVd
Lm1fdGFyZ2V0cykgewogICAgICAgICAgICAgQVNTRVJUKGlzPE5vZGU+KHRhcmdldCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKaW5kZXggMmJkM2RlYjcyYzIwZmIyZGJmNGQ5ZDE5MTQ2
MGExMmExYzU4NGYxYS4uMzQxNDllMTFjYmU1ZDI2YTQyZWI1MGFlODA1NjUyZDdmMTE1YjY2YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCkBAIC0yMjYsMTYgKzIyNiwxNiBAQCBwdWJs
aWM6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShJT1NfVE9VQ0hfRVZFTlRTKQotICAgIGJvb2wgZGlz
cGF0Y2hUb3VjaEV2ZW50KGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYsIGNvbnN0IEF0b21pY1N0
cmluZyYsIGNvbnN0IEV2ZW50VGFyZ2V0VG91Y2hNYXAmLCBmbG9hdCwgZmxvYXQpOworICAgIGJv
b2wgZGlzcGF0Y2hUb3VjaEV2ZW50KGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYsIGNvbnN0IEF0
b21TdHJpbmcmLCBjb25zdCBFdmVudFRhcmdldFRvdWNoTWFwJiwgZmxvYXQsIGZsb2F0KTsKICAg
ICBib29sIGRpc3BhdGNoU2ltdWxhdGVkVG91Y2hFdmVudChJbnRQb2ludCBsb2NhdGlvbik7CiAg
ICAgRnJhbWUqIHRvdWNoRXZlbnRUYXJnZXRTdWJmcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fdG91
Y2hFdmVudFRhcmdldFN1YmZyYW1lLmdldCgpOyB9CiAgICAgY29uc3QgVG91Y2hBcnJheSYgdG91
Y2hlcygpIGNvbnN0IHsgcmV0dXJuIG1fdG91Y2hlczsgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUo
SU9TX0dFU1RVUkVfRVZFTlRTKQotICAgIGJvb2wgZGlzcGF0Y2hHZXN0dXJlRXZlbnQoY29uc3Qg
UGxhdGZvcm1Ub3VjaEV2ZW50JiwgY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgRXZlbnRUYXJn
ZXRTZXQmLCBmbG9hdCwgZmxvYXQpOworICAgIGJvb2wgZGlzcGF0Y2hHZXN0dXJlRXZlbnQoY29u
c3QgUGxhdGZvcm1Ub3VjaEV2ZW50JiwgY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IEV2ZW50VGFy
Z2V0U2V0JiwgZmxvYXQsIGZsb2F0KTsKICNlbGlmIEVOQUJMRShNQUNfR0VTVFVSRV9FVkVOVFMp
Ci0gICAgYm9vbCBkaXNwYXRjaEdlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVu
dCYsIGNvbnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IEV2ZW50VGFyZ2V0U2V0JiwgZmxvYXQsIGZs
b2F0KTsKKyAgICBib29sIGRpc3BhdGNoR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVy
ZUV2ZW50JiwgY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IEV2ZW50VGFyZ2V0U2V0JiwgZmxvYXQs
IGZsb2F0KTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhbmRsZUdlc3R1cmVFdmVudChjb25z
dCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYpOwogI2VuZGlmCiAKQEAgLTQxMiwxMSArNDEyLDExIEBA
IHByaXZhdGU6CiAKICAgICBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzIHByZXBhcmVNb3Vz
ZUV2ZW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7
CiAKLSAgICBib29sIGRpc3BhdGNoTW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
VHlwZSwgTm9kZSogdGFyZ2V0LCBib29sIGNhbmNlbGFibGUsIGludCBjbGlja0NvdW50LCBjb25z
dCBQbGF0Zm9ybU1vdXNlRXZlbnQmLCBib29sIHNldFVuZGVyKTsKKyAgICBib29sIGRpc3BhdGNo
TW91c2VFdmVudChjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIE5vZGUqIHRhcmdldCwgYm9v
bCBjYW5jZWxhYmxlLCBpbnQgY2xpY2tDb3VudCwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jiwg
Ym9vbCBzZXRVbmRlcik7CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQotICAgIGJvb2wgZGlz
cGF0Y2hEcmFnRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEVsZW1lbnQmIHRh
cmdldCwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiwgRGF0YVRyYW5zZmVyJik7Ci0gICAgRHJh
Z1RhcmdldFJlc3BvbnNlIGRpc3BhdGNoRHJhZ0VudGVyT3JEcmFnT3ZlckV2ZW50KGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFbGVtZW50JiB0YXJnZXQsIGNvbnN0IFBsYXRmb3JtTW91
c2VFdmVudCYsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYmICwgRHJhZ09wZXJhdGlvbiwg
Ym9vbCBkcmFnZ2luZ0ZpbGVzKTsKKyAgICBib29sIGRpc3BhdGNoRHJhZ0V2ZW50KGNvbnN0IEF0
b21TdHJpbmcmIGV2ZW50VHlwZSwgRWxlbWVudCYgdGFyZ2V0LCBjb25zdCBQbGF0Zm9ybU1vdXNl
RXZlbnQmLCBEYXRhVHJhbnNmZXImKTsKKyAgICBEcmFnVGFyZ2V0UmVzcG9uc2UgZGlzcGF0Y2hE
cmFnRW50ZXJPckRyYWdPdmVyRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBFbGVt
ZW50JiB0YXJnZXQsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIHN0ZDo6dW5pcXVlX3B0cjxQ
YXN0ZWJvYXJkPiYmICwgRHJhZ09wZXJhdGlvbiwgYm9vbCBkcmFnZ2luZ0ZpbGVzKTsKICAgICB2
b2lkIGludmFsaWRhdGVEYXRhVHJhbnNmZXIoKTsKIAogICAgIGJvb2wgaGFuZGxlRHJhZyhjb25z
dCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiwgQ2hlY2tEcmFnSHlzdGVyZXNpcyk7CkBA
IC00MjcsNyArNDI3LDcgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogICAg
IHZvaWQgY2xlYXJEcmFnU3RhdGUoKTsKIAotICAgIHZvaWQgZGlzcGF0Y2hEcmFnU3JjRXZlbnQo
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYp
OworICAgIHZvaWQgZGlzcGF0Y2hEcmFnU3JjRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRU
eXBlLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKICAgICBib29sIGRpc3BhdGNoRHJhZ1N0
YXJ0RXZlbnRPblNvdXJjZUVsZW1lbnQoRGF0YVRyYW5zZmVyJik7CiAKICAgICBib29sIGRyYWdI
eXN0ZXJlc2lzRXhjZWVkZWQoY29uc3QgRmxvYXRQb2ludCYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9F
dmVudFNvdXJjZS5oCmluZGV4IGRkNjdjYzM3MzEzNjFlZmY2MTBkMmE1MWIzNmI4MDk5OGVhODlm
MGUuLjk0MTNiNmFiMzM0ZWM5NmQ4ZDg4NDNkYjEzZjM4ZjcxYzY2NThkNGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50U291cmNlLmgKQEAgLTExMiw3ICsxMTIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wg
bV9kaXNjYXJkVHJhaWxpbmdOZXdsaW5lIHsgZmFsc2UgfTsKICAgICBib29sIG1fcmVxdWVzdElu
RmxpZ2h0IHsgZmFsc2UgfTsKIAotICAgIEF0b21pY1N0cmluZyBtX2V2ZW50TmFtZTsKKyAgICBB
dG9tU3RyaW5nIG1fZXZlbnROYW1lOwogICAgIFZlY3RvcjxVQ2hhcj4gbV9kYXRhOwogICAgIFN0
cmluZyBtX2N1cnJlbnRseVBhcnNlZEV2ZW50SWQ7CiAgICAgU3RyaW5nIG1fbGFzdEV2ZW50SWQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVHJlZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVHJlZS5jcHAKaW5kZXggMjQ1MTFkYTI0YjBkYTllNTJiNTU3ODE4
MjVmYmE1Nzc1YTgyMDIxYS4uZjg3NWZmMzZiMjljZjFiYmY4NjYzM2M1ZjhmMzU3Yjg0YmY4NmY4
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmNwcApAQCAtNDIsNyArNDIsNyBAQCBGcmFtZVRy
ZWU6On5GcmFtZVRyZWUoKQogICAgICAgICBjaGlsZC0+c2V0VmlldyhudWxscHRyKTsKIH0KIAot
dm9pZCBGcmFtZVRyZWU6OnNldE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSAKK3ZvaWQg
RnJhbWVUcmVlOjpzZXROYW1lKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUpIAogewogICAgIG1fbmFt
ZSA9IG5hbWU7CiAgICAgaWYgKCFwYXJlbnQoKSkgewpAQCAtOTQsNyArOTQsNyBAQCB2b2lkIEZy
YW1lVHJlZTo6cmVtb3ZlQ2hpbGQoRnJhbWUmIGNoaWxkKQogICAgIG1fc2NvcGVkQ2hpbGRDb3Vu
dCA9IGludmFsaWRDb3VudDsKIH0KIAotQXRvbWljU3RyaW5nIEZyYW1lVHJlZTo6dW5pcXVlQ2hp
bGROYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgcmVxdWVzdGVkTmFtZSkgY29uc3QKK0F0b21TdHJp
bmcgRnJhbWVUcmVlOjp1bmlxdWVDaGlsZE5hbWUoY29uc3QgQXRvbVN0cmluZyYgcmVxdWVzdGVk
TmFtZSkgY29uc3QKIHsKICAgICAvLyBJZiB0aGUgcmVxdWVzdGVkIG5hbWUgKHRoZSBmcmFtZSdz
ICJuYW1lIiBhdHRyaWJ1dGUpIGlzIHVuaXF1ZSwganVzdCB1c2UgdGhhdC4KICAgICBpZiAoIXJl
cXVlc3RlZE5hbWUuaXNFbXB0eSgpICYmICFjaGlsZChyZXF1ZXN0ZWROYW1lKSAmJiAhZXF1YWxJ
Z25vcmluZ0FTQ0lJQ2FzZShyZXF1ZXN0ZWROYW1lLCAiX2JsYW5rIikpCkBAIC0xMDUsNyArMTA1
LDcgQEAgQXRvbWljU3RyaW5nIEZyYW1lVHJlZTo6dW5pcXVlQ2hpbGROYW1lKGNvbnN0IEF0b21p
Y1N0cmluZyYgcmVxdWVzdGVkTmFtZSkgY29uc3QKICAgICByZXR1cm4gZ2VuZXJhdGVVbmlxdWVO
YW1lKCk7CiB9CiAKLUF0b21pY1N0cmluZyBGcmFtZVRyZWU6OmdlbmVyYXRlVW5pcXVlTmFtZSgp
IGNvbnN0CitBdG9tU3RyaW5nIEZyYW1lVHJlZTo6Z2VuZXJhdGVVbmlxdWVOYW1lKCkgY29uc3QK
IHsKICAgICBhdXRvJiB0b3AgPSB0aGlzLT50b3AoKTsKICAgICBpZiAoJnRvcC50cmVlKCkgIT0g
dGhpcykKQEAgLTE0Miw3ICsxNDIsNyBAQCBpbmxpbmUgRnJhbWUqIEZyYW1lVHJlZTo6c2NvcGVk
Q2hpbGQodW5zaWduZWQgaW5kZXgsIFRyZWVTY29wZSogc2NvcGUpIGNvbnN0CiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKLWlubGluZSBGcmFtZSogRnJhbWVUcmVlOjpzY29wZWRDaGlsZChjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWUsIFRyZWVTY29wZSogc2NvcGUpIGNvbnN0CitpbmxpbmUgRnJh
bWUqIEZyYW1lVHJlZTo6c2NvcGVkQ2hpbGQoY29uc3QgQXRvbVN0cmluZyYgbmFtZSwgVHJlZVNj
b3BlKiBzY29wZSkgY29uc3QKIHsKICAgICBpZiAoIXNjb3BlKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKQEAgLTE3Myw3ICsxNzMsNyBAQCBGcmFtZSogRnJhbWVUcmVlOjpzY29wZWRDaGlsZCh1
bnNpZ25lZCBpbmRleCkgY29uc3QKICAgICByZXR1cm4gc2NvcGVkQ2hpbGQoaW5kZXgsIG1fdGhp
c0ZyYW1lLmRvY3VtZW50KCkpOwogfQogCi1GcmFtZSogRnJhbWVUcmVlOjpzY29wZWRDaGlsZChj
b25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0CitGcmFtZSogRnJhbWVUcmVlOjpzY29wZWRD
aGlsZChjb25zdCBBdG9tU3RyaW5nJiBuYW1lKSBjb25zdAogewogICAgIHJldHVybiBzY29wZWRD
aGlsZChuYW1lLCBtX3RoaXNGcmFtZS5kb2N1bWVudCgpKTsKIH0KQEAgLTIwMSw3ICsyMDEsNyBA
QCBGcmFtZSogRnJhbWVUcmVlOjpjaGlsZCh1bnNpZ25lZCBpbmRleCkgY29uc3QKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCi1GcmFtZSogRnJhbWVUcmVlOjpjaGlsZChjb25zdCBBdG9taWNTdHJp
bmcmIG5hbWUpIGNvbnN0CitGcmFtZSogRnJhbWVUcmVlOjpjaGlsZChjb25zdCBBdG9tU3RyaW5n
JiBuYW1lKSBjb25zdAogewogICAgIGZvciAoRnJhbWUqIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBj
aGlsZDsgY2hpbGQgPSBjaGlsZC0+dHJlZSgpLm5leHRTaWJsaW5nKCkpCiAgICAgICAgIGlmIChj
aGlsZC0+dHJlZSgpLnVuaXF1ZU5hbWUoKSA9PSBuYW1lKQpAQCAtMjIxLDcgKzIyMSw3IEBAIHN0
YXRpYyBib29sIGlzRnJhbWVGYW1pbGlhcldpdGgoRnJhbWUmIGZyYW1lQSwgRnJhbWUmIGZyYW1l
QikKICAgICByZXR1cm4gKGZyYW1lQU9wZW5lciAmJiBmcmFtZUFPcGVuZXItPnBhZ2UoKSA9PSBm
cmFtZUIucGFnZSgpKSB8fCAoZnJhbWVCT3BlbmVyICYmIGZyYW1lQk9wZW5lci0+cGFnZSgpID09
IGZyYW1lQS5wYWdlKCkpIHx8IChmcmFtZUFPcGVuZXIgJiYgZnJhbWVCT3BlbmVyICYmIGZyYW1l
QU9wZW5lci0+cGFnZSgpID09IGZyYW1lQk9wZW5lci0+cGFnZSgpKTsKIH0KIAotRnJhbWUqIEZy
YW1lVHJlZTo6ZmluZChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIEZyYW1lJiBhY3RpdmVGcmFt
ZSkgY29uc3QKK0ZyYW1lKiBGcmFtZVRyZWU6OmZpbmQoY29uc3QgQXRvbVN0cmluZyYgbmFtZSwg
RnJhbWUmIGFjdGl2ZUZyYW1lKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBfY3VycmVudCBpcyBu
b3QgcGFydCBvZiB0aGUgSFRNTCBzcGVjaWZpY2F0aW9uLgogICAgIGlmIChlcXVhbElnbm9yaW5n
QVNDSUlDYXNlKG5hbWUsICJfc2VsZiIpIHx8IG5hbWUgPT0gIl9jdXJyZW50IiB8fCBuYW1lLmlz
RW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVHJlZS5oCmluZGV4IDk3YzhmMmI3YTQ2ZWYxY2QxZDAw
MTcwYmQyNzU4MTk2YzNiZWQ3ZDQuLjdhZmI1Y2ExZWY3ZDk0OTI4NTVjZDk5Y2VkOTM2NDY1Y2Ew
NjE0YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUuaApAQCAtMTksNyArMTksNyBAQAogCiAjcHJh
Z21hIG9uY2UKIAotI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00NSw5
ICs0NSw5IEBAIHB1YmxpYzoKIAogICAgIH5GcmFtZVRyZWUoKTsKIAotICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQotICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgdW5pcXVlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5pcXVlTmFtZTsgfQotICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TmFtZShjb25zdCBBdG9taWNTdHJpbmcmKTsKKyAgICBj
b25zdCBBdG9tU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CisgICAgY29u
c3QgQXRvbVN0cmluZyYgdW5pcXVlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5pcXVlTmFtZTsg
fQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TmFtZShjb25zdCBBdG9tU3RyaW5nJik7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhck5hbWUoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBG
cmFtZSogcGFyZW50KCkgY29uc3Q7CiAgICAgCkBAIC03NCwxMyArNzQsMTMgQEAgcHVibGljOgog
ICAgIHZvaWQgcmVtb3ZlQ2hpbGQoRnJhbWUmKTsKIAogICAgIEZyYW1lKiBjaGlsZCh1bnNpZ25l
ZCBpbmRleCkgY29uc3Q7Ci0gICAgRnJhbWUqIGNoaWxkKGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZSkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgRnJhbWUqIGZpbmQoY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lLCBGcmFtZSYgYWN0aXZlRnJhbWUpIGNvbnN0OworICAgIEZyYW1lKiBjaGlsZChj
b25zdCBBdG9tU3RyaW5nJiBuYW1lKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBGcmFtZSog
ZmluZChjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBGcmFtZSYgYWN0aXZlRnJhbWUpIGNvbnN0Owog
ICAgIFdFQkNPUkVfRVhQT1JUIHVuc2lnbmVkIGNoaWxkQ291bnQoKSBjb25zdDsKICAgICBXRUJD
T1JFX0VYUE9SVCBGcmFtZSYgdG9wKCkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBGcmFt
ZSogc2NvcGVkQ2hpbGQodW5zaWduZWQgaW5kZXgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JU
IEZyYW1lKiBzY29wZWRDaGlsZChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIEZyYW1lKiBzY29wZWRDaGlsZChjb25zdCBBdG9tU3RyaW5nJiBuYW1l
KSBjb25zdDsKICAgICB1bnNpZ25lZCBzY29wZWRDaGlsZENvdW50KCkgY29uc3Q7CiAKICAgICB2
b2lkIHJlc2V0RnJhbWVJZGVudGlmaWVycygpIHsgbV9mcmFtZUlER2VuZXJhdG9yID0gMDsgfQpA
QCAtOTEsMTcgKzkxLDE3IEBAIHByaXZhdGU6CiAKICAgICBib29sIHNjb3BlZEJ5KFRyZWVTY29w
ZSopIGNvbnN0OwogICAgIEZyYW1lKiBzY29wZWRDaGlsZCh1bnNpZ25lZCBpbmRleCwgVHJlZVNj
b3BlKikgY29uc3Q7Ci0gICAgRnJhbWUqIHNjb3BlZENoaWxkKGNvbnN0IEF0b21pY1N0cmluZyYg
bmFtZSwgVHJlZVNjb3BlKikgY29uc3Q7CisgICAgRnJhbWUqIHNjb3BlZENoaWxkKGNvbnN0IEF0
b21TdHJpbmcmIG5hbWUsIFRyZWVTY29wZSopIGNvbnN0OwogICAgIHVuc2lnbmVkIHNjb3BlZENo
aWxkQ291bnQoVHJlZVNjb3BlKikgY29uc3Q7CiAKLSAgICBBdG9taWNTdHJpbmcgdW5pcXVlQ2hp
bGROYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgcmVxdWVzdGVkTmFtZSkgY29uc3Q7Ci0gICAgQXRv
bWljU3RyaW5nIGdlbmVyYXRlVW5pcXVlTmFtZSgpIGNvbnN0OworICAgIEF0b21TdHJpbmcgdW5p
cXVlQ2hpbGROYW1lKGNvbnN0IEF0b21TdHJpbmcmIHJlcXVlc3RlZE5hbWUpIGNvbnN0OworICAg
IEF0b21TdHJpbmcgZ2VuZXJhdGVVbmlxdWVOYW1lKCkgY29uc3Q7CiAKICAgICBGcmFtZSYgbV90
aGlzRnJhbWU7CiAKICAgICBGcmFtZSogbV9wYXJlbnQ7Ci0gICAgQXRvbWljU3RyaW5nIG1fbmFt
ZTsgLy8gVGhlIGFjdHVhbCBmcmFtZSBuYW1lIChtYXkgYmUgZW1wdHkpLgotICAgIEF0b21pY1N0
cmluZyBtX3VuaXF1ZU5hbWU7CisgICAgQXRvbVN0cmluZyBtX25hbWU7IC8vIFRoZSBhY3R1YWwg
ZnJhbWUgbmFtZSAobWF5IGJlIGVtcHR5KS4KKyAgICBBdG9tU3RyaW5nIG1fdW5pcXVlTmFtZTsK
IAogICAgIFJlZlB0cjxGcmFtZT4gbV9uZXh0U2libGluZzsKICAgICBGcmFtZSogbV9wcmV2aW91
c1NpYmxpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCBkZWE1ZWEyZmZlNmRjZGUwMzRhNTI4ZmYw
NWM2Njk1NWI1ODU4M2VkLi45MGU0YzkzNWRjZDBiY2RlMmZjNGM1N2ZlMjIyY2M3MjFmNTFkM2My
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTI5NDksNyArMjk0OSw3IEBAIHZvaWQgUGFnZTo6cmVt
b3ZlTGF0Y2hpbmdTdGF0ZUZvclRhcmdldChFbGVtZW50JiB0YXJnZXROb2RlKQogfQogI2VuZGlm
IC8vIFBMQVRGT1JNKE1BQykKIAotc3RhdGljIHZvaWQgZGlzcGF0Y2hQcmludEV2ZW50KEZyYW1l
JiBtYWluRnJhbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKQorc3RhdGljIHZvaWQg
ZGlzcGF0Y2hQcmludEV2ZW50KEZyYW1lJiBtYWluRnJhbWUsIGNvbnN0IEF0b21TdHJpbmcmIGV2
ZW50VHlwZSkKIHsKICAgICBWZWN0b3I8UmVmPEZyYW1lPj4gZnJhbWVzOwogICAgIGZvciAoYXV0
byogZnJhbWUgPSAmbWFpbkZyYW1lOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZl
cnNlTmV4dCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVJl
c291cmNlVGltaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlUmVzb3VyY2VU
aW1pbmcuaAppbmRleCBiYmIzZjM0OWI2ZDdiYjdkYTI3NzcyZDU5NDI4MzI0Y2UzOTNkOWI4Li44
YjMyMWYxYjFlZTExMmUwOWExNjk4ODE5NGQ3YTgzMjI1MzJkYjYyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmcuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmcuaApAQCAtNDYsNyArNDYsNyBA
QCBjbGFzcyBQZXJmb3JtYW5jZVJlc291cmNlVGltaW5nIGZpbmFsIDogcHVibGljIFBlcmZvcm1h
bmNlRW50cnkgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8UGVyZm9ybWFuY2VSZXNvdXJjZVRp
bWluZz4gY3JlYXRlKE1vbm90b25pY1RpbWUgdGltZU9yaWdpbiwgUmVzb3VyY2VUaW1pbmcmJik7
CiAKLSAgICBBdG9taWNTdHJpbmcgaW5pdGlhdG9yVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5p
dGlhdG9yVHlwZTsgfQorICAgIEF0b21TdHJpbmcgaW5pdGlhdG9yVHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1faW5pdGlhdG9yVHlwZTsgfQogICAgIFN0cmluZyBuZXh0SG9wUHJvdG9jb2woKSBjb25z
dDsKIAogICAgIGRvdWJsZSB3b3JrZXJTdGFydCgpIGNvbnN0OwpAQCAtNjksNyArNjksNyBAQCBw
cml2YXRlOgogCiAgICAgZG91YmxlIG5ldHdvcmtMb2FkVGltZVRvRE9NSGlnaFJlc1RpbWVTdGFt
cChTZWNvbmRzKSBjb25zdDsKIAotICAgIEF0b21pY1N0cmluZyBtX2luaXRpYXRvclR5cGU7Cisg
ICAgQXRvbVN0cmluZyBtX2luaXRpYXRvclR5cGU7CiAgICAgTW9ub3RvbmljVGltZSBtX3RpbWVP
cmlnaW47CiAgICAgTG9hZFRpbWluZyBtX2xvYWRUaW1pbmc7CiAgICAgTmV0d29ya0xvYWRNZXRy
aWNzIG1fbmV0d29ya0xvYWRNZXRyaWNzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9Qb2ludGVyTG9ja0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVy
TG9ja0NvbnRyb2xsZXIuY3BwCmluZGV4IDc2NGE3OWNiNDk1ZmMxMGMxNTlmOTQzMjJhY2ZiMzk2
ZTJhYzg4NTMuLmEzOTEzYTRkNWRjMjhkMTk3MzE4YThlNTBhMTAyOTdhNmUwN2M3N2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUG9pbnRlckxvY2tDb250cm9sbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxlci5jcHAKQEAgLTE4Miw3
ICsxODIsNyBAQCB2b2lkIFBvaW50ZXJMb2NrQ29udHJvbGxlcjo6ZGlkTG9zZVBvaW50ZXJMb2Nr
KCkKICAgICB9CiB9CiAKLXZvaWQgUG9pbnRlckxvY2tDb250cm9sbGVyOjpkaXNwYXRjaExvY2tl
ZE1vdXNlRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUpCit2b2lkIFBvaW50ZXJMb2NrQ29udHJvbGxlcjo6ZGlzcGF0Y2hM
b2NrZWRNb3VzZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQsIGNvbnN0IEF0
b21TdHJpbmcmIGV2ZW50VHlwZSkKIHsKICAgICBpZiAoIW1fZWxlbWVudCB8fCAhbV9lbGVtZW50
LT5kb2N1bWVudCgpLmZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTIwOCwxMyArMjA4LDEz
IEBAIHZvaWQgUG9pbnRlckxvY2tDb250cm9sbGVyOjpjbGVhckVsZW1lbnQoKQogICAgIG1fZWxl
bWVudCA9IG51bGxwdHI7CiB9CiAKLXZvaWQgUG9pbnRlckxvY2tDb250cm9sbGVyOjplbnF1ZXVl
RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBFbGVtZW50KiBlbGVtZW50KQordm9pZCBQ
b2ludGVyTG9ja0NvbnRyb2xsZXI6OmVucXVldWVFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBl
LCBFbGVtZW50KiBlbGVtZW50KQogewogICAgIGlmIChlbGVtZW50KQogICAgICAgICBlbnF1ZXVl
RXZlbnQodHlwZSwgJmVsZW1lbnQtPmRvY3VtZW50KCkpOwogfQogCi12b2lkIFBvaW50ZXJMb2Nr
Q29udHJvbGxlcjo6ZW5xdWV1ZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgRG9jdW1l
bnQqIGRvY3VtZW50KQordm9pZCBQb2ludGVyTG9ja0NvbnRyb2xsZXI6OmVucXVldWVFdmVudChj
b25zdCBBdG9tU3RyaW5nJiB0eXBlLCBEb2N1bWVudCogZG9jdW1lbnQpCiB7CiAgICAgaWYgKGRv
Y3VtZW50KQogICAgICAgICBkb2N1bWVudC0+ZW5xdWV1ZURvY3VtZW50RXZlbnQoRXZlbnQ6OmNy
ZWF0ZSh0eXBlLCBFdmVudDo6Q2FuQnViYmxlOjpZZXMsIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5v
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9ja0NvbnRyb2xsZXIuaAppbmRleCA1
MDc3NDY1ZmI1NDU2ZGZiZjI4NmEwMDMxMzQyOWU4OTFhODdmZWJiLi5mZDFiYzVhMzZhOTk5ODE5
NzE2M2QwODMyMDcxODI4MDQzMWI4ZDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BvaW50ZXJMb2NrQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUG9pbnRl
ckxvY2tDb250cm9sbGVyLmgKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21p
Y1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC01NywxMyArNTcsMTMgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgZGlkQWNxdWlyZVBvaW50ZXJMb2NrKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBkaWROb3RBY3F1aXJlUG9pbnRlckxvY2soKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRp
ZExvc2VQb2ludGVyTG9jaygpOwotICAgIHZvaWQgZGlzcGF0Y2hMb2NrZWRNb3VzZUV2ZW50KGNv
bnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKTsK
KyAgICB2b2lkIGRpc3BhdGNoTG9ja2VkTW91c2VFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZl
bnQmLCBjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUpOwogICAgIHZvaWQgZGlzcGF0Y2hMb2Nr
ZWRXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpOwogCiBwcml2YXRlOgogICAg
IHZvaWQgY2xlYXJFbGVtZW50KCk7Ci0gICAgdm9pZCBlbnF1ZXVlRXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlLCBFbGVtZW50Kik7Ci0gICAgdm9pZCBlbnF1ZXVlRXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlLCBEb2N1bWVudCopOworICAgIHZvaWQgZW5xdWV1ZUV2ZW50KGNvbnN0
IEF0b21TdHJpbmcmIHR5cGUsIEVsZW1lbnQqKTsKKyAgICB2b2lkIGVucXVldWVFdmVudChjb25z
dCBBdG9tU3RyaW5nJiB0eXBlLCBEb2N1bWVudCopOwogICAgIFBhZ2UmIG1fcGFnZTsKICAgICBi
b29sIG1fbG9ja1BlbmRpbmcgeyBmYWxzZSB9OwogICAgIGJvb2wgbV91bmxvY2tQZW5kaW5nIHsg
ZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJvY2Vzc1dhcm1pbmcu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qcm9jZXNzV2FybWluZy5jcHAKaW5kZXggYjNkNmE5
NWEwYzMyZmE5ZTFjNGMyMjUwNGYzMDE0OTU2Y2UzMzI5Ny4uYTE1ODk5MGE5MjI2M2EyOWNiNjhj
YjVhNDlkYTkwODdkMTQyOTNhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Qcm9j
ZXNzV2FybWluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qcm9jZXNzV2FybWluZy5j
cHAKQEAgLTQ3LDcgKzQ3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIFByb2Nlc3NX
YXJtaW5nOjppbml0aWFsaXplTmFtZXMoKQogewotICAgIEF0b21pY1N0cmluZzo6aW5pdCgpOwor
ICAgIEF0b21TdHJpbmc6OmluaXQoKTsKICAgICBIVE1MTmFtZXM6OmluaXQoKTsKICAgICBRdWFs
aWZpZWROYW1lOjppbml0KCk7CiAgICAgTWVkaWFGZWF0dXJlTmFtZXM6OmluaXQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmNwcAppbmRleCBhMzUzM2U5MTBlYjM1ODMwNTdjMjEyOWY4
YTljM2VkMjU1OTEyMmNiLi41N2JlMDljZDFjMDliODg4ODBkZDJjYzVhN2YxMjM0NWFmZWMzMTA3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5nc0Jhc2UuY3BwCkBAIC03Myw5ICs3Myw5IEBAIFNl
dHRpbmdzQmFzZTo6U2V0dGluZ3NCYXNlKFBhZ2UqIHBhZ2UpCiAgICAgLCBtX21pbmltdW1ET01U
aW1lckludGVydmFsKERPTVRpbWVyOjpkZWZhdWx0TWluaW11bUludGVydmFsKCkpCiAgICAgLCBt
X3NldEltYWdlTG9hZGluZ1NldHRpbmdzVGltZXIoKnRoaXMsICZTZXR0aW5nc0Jhc2U6OmltYWdl
TG9hZGluZ1NldHRpbmdzVGltZXJGaXJlZCkKIHsKLSAgICAvLyBBIEZyYW1lIG1heSBub3QgaGF2
ZSBiZWVuIGNyZWF0ZWQgeWV0LCBzbyB3ZSBpbml0aWFsaXplIHRoZSBBdG9taWNTdHJpbmcKKyAg
ICAvLyBBIEZyYW1lIG1heSBub3QgaGF2ZSBiZWVuIGNyZWF0ZWQgeWV0LCBzbyB3ZSBpbml0aWFs
aXplIHRoZSBBdG9tU3RyaW5nCiAgICAgLy8gaGFzaCBiZWZvcmUgdHJ5aW5nIHRvIHVzZSBpdC4K
LSAgICBBdG9taWNTdHJpbmc6OmluaXQoKTsKKyAgICBBdG9tU3RyaW5nOjppbml0KCk7CiAgICAg
aW5pdGlhbGl6ZURlZmF1bHRGb250RmFtaWxpZXMoKTsKICAgICBtX3BhZ2UgPSBwYWdlOyAvLyBQ
YWdlIGlzIG5vdCB5ZXQgZnVsbHkgaW5pdGlhbGl6ZWQgd2hlbiBjb25zdHJ1Y3RpbmcgU2V0dGlu
Z3MsIHNvIGtlZXBpbmcgbV9wYWdlIG51bGwgb3ZlciBpbml0aWFsaXplRGVmYXVsdEZvbnRGYW1p
bGllcygpIGNhbGwuCiB9CkBAIC0xMzcsODQgKzEzNyw4NCBAQCBib29sIFNldHRpbmdzQmFzZTo6
cGxhdGZvcm1EZWZhdWx0TWVkaWFTb3VyY2VFbmFibGVkKCkKIH0KICNlbmRpZgogCi1jb25zdCBB
dG9taWNTdHJpbmcmIFNldHRpbmdzQmFzZTo6c3RhbmRhcmRGb250RmFtaWx5KFVTY3JpcHRDb2Rl
IHNjcmlwdCkgY29uc3QKK2NvbnN0IEF0b21TdHJpbmcmIFNldHRpbmdzQmFzZTo6c3RhbmRhcmRG
b250RmFtaWx5KFVTY3JpcHRDb2RlIHNjcmlwdCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9mb250
R2VuZXJpY0ZhbWlsaWVzLT5zdGFuZGFyZEZvbnRGYW1pbHkoc2NyaXB0KTsKIH0KIAotdm9pZCBT
ZXR0aW5nc0Jhc2U6OnNldFN0YW5kYXJkRm9udEZhbWlseShjb25zdCBBdG9taWNTdHJpbmcmIGZh
bWlseSwgVVNjcmlwdENvZGUgc2NyaXB0KQordm9pZCBTZXR0aW5nc0Jhc2U6OnNldFN0YW5kYXJk
Rm9udEZhbWlseShjb25zdCBBdG9tU3RyaW5nJiBmYW1pbHksIFVTY3JpcHRDb2RlIHNjcmlwdCkK
IHsKICAgICBib29sIGNoYW5nZXMgPSBtX2ZvbnRHZW5lcmljRmFtaWxpZXMtPnNldFN0YW5kYXJk
Rm9udEZhbWlseShmYW1pbHksIHNjcmlwdCk7CiAgICAgaWYgKGNoYW5nZXMpCiAgICAgICAgIGlu
dmFsaWRhdGVBZnRlckdlbmVyaWNGYW1pbHlDaGFuZ2UobV9wYWdlKTsKIH0KIAotY29uc3QgQXRv
bWljU3RyaW5nJiBTZXR0aW5nc0Jhc2U6OmZpeGVkRm9udEZhbWlseShVU2NyaXB0Q29kZSBzY3Jp
cHQpIGNvbnN0Citjb25zdCBBdG9tU3RyaW5nJiBTZXR0aW5nc0Jhc2U6OmZpeGVkRm9udEZhbWls
eShVU2NyaXB0Q29kZSBzY3JpcHQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fZm9udEdlbmVyaWNG
YW1pbGllcy0+Zml4ZWRGb250RmFtaWx5KHNjcmlwdCk7CiB9CiAKLXZvaWQgU2V0dGluZ3NCYXNl
OjpzZXRGaXhlZEZvbnRGYW1pbHkoY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHksIFVTY3JpcHRD
b2RlIHNjcmlwdCkKK3ZvaWQgU2V0dGluZ3NCYXNlOjpzZXRGaXhlZEZvbnRGYW1pbHkoY29uc3Qg
QXRvbVN0cmluZyYgZmFtaWx5LCBVU2NyaXB0Q29kZSBzY3JpcHQpCiB7CiAgICAgYm9vbCBjaGFu
Z2VzID0gbV9mb250R2VuZXJpY0ZhbWlsaWVzLT5zZXRGaXhlZEZvbnRGYW1pbHkoZmFtaWx5LCBz
Y3JpcHQpOwogICAgIGlmIChjaGFuZ2VzKQogICAgICAgICBpbnZhbGlkYXRlQWZ0ZXJHZW5lcmlj
RmFtaWx5Q2hhbmdlKG1fcGFnZSk7CiB9CiAKLWNvbnN0IEF0b21pY1N0cmluZyYgU2V0dGluZ3NC
YXNlOjpzZXJpZkZvbnRGYW1pbHkoVVNjcmlwdENvZGUgc2NyaXB0KSBjb25zdAorY29uc3QgQXRv
bVN0cmluZyYgU2V0dGluZ3NCYXNlOjpzZXJpZkZvbnRGYW1pbHkoVVNjcmlwdENvZGUgc2NyaXB0
KSBjb25zdAogewogICAgIHJldHVybiBtX2ZvbnRHZW5lcmljRmFtaWxpZXMtPnNlcmlmRm9udEZh
bWlseShzY3JpcHQpOwogfQogCi12b2lkIFNldHRpbmdzQmFzZTo6c2V0U2VyaWZGb250RmFtaWx5
KGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5LCBVU2NyaXB0Q29kZSBzY3JpcHQpCit2b2lkIFNl
dHRpbmdzQmFzZTo6c2V0U2VyaWZGb250RmFtaWx5KGNvbnN0IEF0b21TdHJpbmcmIGZhbWlseSwg
VVNjcmlwdENvZGUgc2NyaXB0KQogewogICAgIGJvb2wgY2hhbmdlcyA9IG1fZm9udEdlbmVyaWNG
YW1pbGllcy0+c2V0U2VyaWZGb250RmFtaWx5KGZhbWlseSwgc2NyaXB0KTsKICAgICBpZiAoY2hh
bmdlcykKICAgICAgICAgaW52YWxpZGF0ZUFmdGVyR2VuZXJpY0ZhbWlseUNoYW5nZShtX3BhZ2Up
OwogfQogCi1jb25zdCBBdG9taWNTdHJpbmcmIFNldHRpbmdzQmFzZTo6c2Fuc1NlcmlmRm9udEZh
bWlseShVU2NyaXB0Q29kZSBzY3JpcHQpIGNvbnN0Citjb25zdCBBdG9tU3RyaW5nJiBTZXR0aW5n
c0Jhc2U6OnNhbnNTZXJpZkZvbnRGYW1pbHkoVVNjcmlwdENvZGUgc2NyaXB0KSBjb25zdAogewog
ICAgIHJldHVybiBtX2ZvbnRHZW5lcmljRmFtaWxpZXMtPnNhbnNTZXJpZkZvbnRGYW1pbHkoc2Ny
aXB0KTsKIH0KIAotdm9pZCBTZXR0aW5nc0Jhc2U6OnNldFNhbnNTZXJpZkZvbnRGYW1pbHkoY29u
c3QgQXRvbWljU3RyaW5nJiBmYW1pbHksIFVTY3JpcHRDb2RlIHNjcmlwdCkKK3ZvaWQgU2V0dGlu
Z3NCYXNlOjpzZXRTYW5zU2VyaWZGb250RmFtaWx5KGNvbnN0IEF0b21TdHJpbmcmIGZhbWlseSwg
VVNjcmlwdENvZGUgc2NyaXB0KQogewogICAgIGJvb2wgY2hhbmdlcyA9IG1fZm9udEdlbmVyaWNG
YW1pbGllcy0+c2V0U2Fuc1NlcmlmRm9udEZhbWlseShmYW1pbHksIHNjcmlwdCk7CiAgICAgaWYg
KGNoYW5nZXMpCiAgICAgICAgIGludmFsaWRhdGVBZnRlckdlbmVyaWNGYW1pbHlDaGFuZ2UobV9w
YWdlKTsKIH0KIAotY29uc3QgQXRvbWljU3RyaW5nJiBTZXR0aW5nc0Jhc2U6OmN1cnNpdmVGb250
RmFtaWx5KFVTY3JpcHRDb2RlIHNjcmlwdCkgY29uc3QKK2NvbnN0IEF0b21TdHJpbmcmIFNldHRp
bmdzQmFzZTo6Y3Vyc2l2ZUZvbnRGYW1pbHkoVVNjcmlwdENvZGUgc2NyaXB0KSBjb25zdAogewog
ICAgIHJldHVybiBtX2ZvbnRHZW5lcmljRmFtaWxpZXMtPmN1cnNpdmVGb250RmFtaWx5KHNjcmlw
dCk7CiB9CiAKLXZvaWQgU2V0dGluZ3NCYXNlOjpzZXRDdXJzaXZlRm9udEZhbWlseShjb25zdCBB
dG9taWNTdHJpbmcmIGZhbWlseSwgVVNjcmlwdENvZGUgc2NyaXB0KQordm9pZCBTZXR0aW5nc0Jh
c2U6OnNldEN1cnNpdmVGb250RmFtaWx5KGNvbnN0IEF0b21TdHJpbmcmIGZhbWlseSwgVVNjcmlw
dENvZGUgc2NyaXB0KQogewogICAgIGJvb2wgY2hhbmdlcyA9IG1fZm9udEdlbmVyaWNGYW1pbGll
cy0+c2V0Q3Vyc2l2ZUZvbnRGYW1pbHkoZmFtaWx5LCBzY3JpcHQpOwogICAgIGlmIChjaGFuZ2Vz
KQogICAgICAgICBpbnZhbGlkYXRlQWZ0ZXJHZW5lcmljRmFtaWx5Q2hhbmdlKG1fcGFnZSk7CiB9
CiAKLWNvbnN0IEF0b21pY1N0cmluZyYgU2V0dGluZ3NCYXNlOjpmYW50YXN5Rm9udEZhbWlseShV
U2NyaXB0Q29kZSBzY3JpcHQpIGNvbnN0Citjb25zdCBBdG9tU3RyaW5nJiBTZXR0aW5nc0Jhc2U6
OmZhbnRhc3lGb250RmFtaWx5KFVTY3JpcHRDb2RlIHNjcmlwdCkgY29uc3QKIHsKICAgICByZXR1
cm4gbV9mb250R2VuZXJpY0ZhbWlsaWVzLT5mYW50YXN5Rm9udEZhbWlseShzY3JpcHQpOwogfQog
Ci12b2lkIFNldHRpbmdzQmFzZTo6c2V0RmFudGFzeUZvbnRGYW1pbHkoY29uc3QgQXRvbWljU3Ry
aW5nJiBmYW1pbHksIFVTY3JpcHRDb2RlIHNjcmlwdCkKK3ZvaWQgU2V0dGluZ3NCYXNlOjpzZXRG
YW50YXN5Rm9udEZhbWlseShjb25zdCBBdG9tU3RyaW5nJiBmYW1pbHksIFVTY3JpcHRDb2RlIHNj
cmlwdCkKIHsKICAgICBib29sIGNoYW5nZXMgPSBtX2ZvbnRHZW5lcmljRmFtaWxpZXMtPnNldEZh
bnRhc3lGb250RmFtaWx5KGZhbWlseSwgc2NyaXB0KTsKICAgICBpZiAoY2hhbmdlcykKICAgICAg
ICAgaW52YWxpZGF0ZUFmdGVyR2VuZXJpY0ZhbWlseUNoYW5nZShtX3BhZ2UpOwogfQogCi1jb25z
dCBBdG9taWNTdHJpbmcmIFNldHRpbmdzQmFzZTo6cGljdG9ncmFwaEZvbnRGYW1pbHkoVVNjcmlw
dENvZGUgc2NyaXB0KSBjb25zdAorY29uc3QgQXRvbVN0cmluZyYgU2V0dGluZ3NCYXNlOjpwaWN0
b2dyYXBoRm9udEZhbWlseShVU2NyaXB0Q29kZSBzY3JpcHQpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IG1fZm9udEdlbmVyaWNGYW1pbGllcy0+cGljdG9ncmFwaEZvbnRGYW1pbHkoc2NyaXB0KTsKIH0K
IAotdm9pZCBTZXR0aW5nc0Jhc2U6OnNldFBpY3RvZ3JhcGhGb250RmFtaWx5KGNvbnN0IEF0b21p
Y1N0cmluZyYgZmFtaWx5LCBVU2NyaXB0Q29kZSBzY3JpcHQpCit2b2lkIFNldHRpbmdzQmFzZTo6
c2V0UGljdG9ncmFwaEZvbnRGYW1pbHkoY29uc3QgQXRvbVN0cmluZyYgZmFtaWx5LCBVU2NyaXB0
Q29kZSBzY3JpcHQpCiB7CiAgICAgYm9vbCBjaGFuZ2VzID0gbV9mb250R2VuZXJpY0ZhbWlsaWVz
LT5zZXRQaWN0b2dyYXBoRm9udEZhbWlseShmYW1pbHksIHNjcmlwdCk7CiAgICAgaWYgKGNoYW5n
ZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5nc0Jhc2UuaAppbmRleCA3Y2FjZjc1MzRlNjg0OTIwZDVk
NjhjMjIyMjhjNjIwZTMxNTRiMDE3Li5iODUwMWNiNzFhOTRjMWFhMDdiZjFhMTJmYmY1OTM1MTcz
NmRkYjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmgKQEAgLTQwLDggKzQwLDggQEAK
ICNpbmNsdWRlIDx1bmljb2RlL3VzY3JpcHQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3Ry
aW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nSGFzaC5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nSGFz
aC5oPgogCiAjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQogI2luY2x1ZGUgIkRhdGFEZXRlY3Rp
b24uaCIKQEAgLTEzMywyNiArMTMzLDI2IEBAIHB1YmxpYzoKICAgICBjb25zdGV4cHIgc3RhdGlj
IGNvbnN0IGZsb2F0IGRlZmF1bHRNYXhUZXh0QXV0b3NpemluZ1NjYWxlSW5jcmVhc2UgPSAxLjdm
OwogI2VuZGlmCiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFN0YW5kYXJkRm9udEZhbWls
eShjb25zdCBBdG9taWNTdHJpbmcmLCBVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCBjb25zdCBBdG9taWNTdHJpbmcmIHN0YW5kYXJkRm9udEZhbWlseShV
U2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldFN0YW5kYXJkRm9udEZhbWlseShjb25zdCBBdG9tU3RyaW5nJiwgVVNjcmlwdENvZGUg
PSBVU0NSSVBUX0NPTU1PTik7CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgQXRvbVN0cmluZyYg
c3RhbmRhcmRGb250RmFtaWx5KFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04pIGNvbnN0Owog
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRGaXhlZEZvbnRGYW1pbHkoY29uc3QgQXRvbWlj
U3RyaW5nJiwgVVNjcmlwdENvZGUgPSBVU0NSSVBUX0NPTU1PTik7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgY29uc3QgQXRvbWljU3RyaW5nJiBmaXhlZEZvbnRGYW1pbHkoVVNjcmlwdENvZGUgPSBVU0NS
SVBUX0NPTU1PTikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRGaXhlZEZvbnRG
YW1pbHkoY29uc3QgQXRvbVN0cmluZyYsIFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04pOwor
ICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IEF0b21TdHJpbmcmIGZpeGVkRm9udEZhbWlseShVU2Ny
aXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKSBjb25zdDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0U2VyaWZGb250RmFtaWx5KGNvbnN0IEF0b21pY1N0cmluZyYsIFVTY3JpcHRDb2RlID0g
VVNDUklQVF9DT01NT04pOwotICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IEF0b21pY1N0cmluZyYg
c2VyaWZGb250RmFtaWx5KFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04pIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2VyaWZGb250RmFtaWx5KGNvbnN0IEF0b21TdHJpbmcm
LCBVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25z
dCBBdG9tU3RyaW5nJiBzZXJpZkZvbnRGYW1pbHkoVVNjcmlwdENvZGUgPSBVU0NSSVBUX0NPTU1P
TikgY29uc3Q7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNhbnNTZXJpZkZvbnRGYW1p
bHkoY29uc3QgQXRvbWljU3RyaW5nJiwgVVNjcmlwdENvZGUgPSBVU0NSSVBUX0NPTU1PTik7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgQXRvbWljU3RyaW5nJiBzYW5zU2VyaWZGb250RmFtaWx5
KFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04pIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0U2Fuc1NlcmlmRm9udEZhbWlseShjb25zdCBBdG9tU3RyaW5nJiwgVVNjcmlwdENv
ZGUgPSBVU0NSSVBUX0NPTU1PTik7CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgQXRvbVN0cmlu
ZyYgc2Fuc1NlcmlmRm9udEZhbWlseShVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKSBjb25z
dDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q3Vyc2l2ZUZvbnRGYW1pbHkoY29uc3Qg
QXRvbWljU3RyaW5nJiwgVVNjcmlwdENvZGUgPSBVU0NSSVBUX0NPTU1PTik7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgY29uc3QgQXRvbWljU3RyaW5nJiBjdXJzaXZlRm9udEZhbWlseShVU2NyaXB0Q29k
ZSA9IFVTQ1JJUFRfQ09NTU9OKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEN1
cnNpdmVGb250RmFtaWx5KGNvbnN0IEF0b21TdHJpbmcmLCBVU2NyaXB0Q29kZSA9IFVTQ1JJUFRf
Q09NTU9OKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBBdG9tU3RyaW5nJiBjdXJzaXZlRm9u
dEZhbWlseShVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKSBjb25zdDsKIAotICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0RmFudGFzeUZvbnRGYW1pbHkoY29uc3QgQXRvbWljU3RyaW5nJiwg
VVNjcmlwdENvZGUgPSBVU0NSSVBUX0NPTU1PTik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgY29uc3Qg
QXRvbWljU3RyaW5nJiBmYW50YXN5Rm9udEZhbWlseShVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09N
TU9OKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEZhbnRhc3lGb250RmFtaWx5
KGNvbnN0IEF0b21TdHJpbmcmLCBVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBjb25zdCBBdG9tU3RyaW5nJiBmYW50YXN5Rm9udEZhbWlseShVU2NyaXB0
Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKSBjb25zdDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0UGljdG9ncmFwaEZvbnRGYW1pbHkoY29uc3QgQXRvbWljU3RyaW5nJiwgVVNjcmlwdENvZGUg
PSBVU0NSSVBUX0NPTU1PTik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgQXRvbWljU3RyaW5n
JiBwaWN0b2dyYXBoRm9udEZhbWlseShVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKSBjb25z
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFBpY3RvZ3JhcGhGb250RmFtaWx5KGNvbnN0
IEF0b21TdHJpbmcmLCBVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBjb25zdCBBdG9tU3RyaW5nJiBwaWN0b2dyYXBoRm9udEZhbWlseShVU2NyaXB0Q29k
ZSA9IFVTQ1JJUFRfQ09NTU9OKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
TWluaW11bURPTVRpbWVySW50ZXJ2YWwoU2Vjb25kcyk7IC8vIEluaXRpYWxpemVkIHRvIERPTVRp
bWVyOjpkZWZhdWx0TWluaW11bUludGVydmFsKCkuCiAgICAgU2Vjb25kcyBtaW5pbXVtRE9NVGlt
ZXJJbnRlcnZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fbWluaW11bURPTVRpbWVySW50ZXJ2YWw7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3Jp
cHRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0
b3IuY3BwCmluZGV4IGQ5MzlmN2VlNjQ5Y2FkNWU0ZjExZWJlNjE4YzlhYWJiNzJiMjVhNTMuLmNh
MTI1ZWQ4OWY2ZjVlMjEwZGU1MjdhYjc5ZDE2MzRhZDE3ZmRjNWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yLmNwcApAQCAtMzIs
NyArMzIsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVVzZXJNZXNzYWdlSGFuZGxlckRl
c2NyaXB0b3I6OlVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IoY29uc3QgQXRvbWljU3RyaW5n
JiBuYW1lLCBET01XcmFwcGVyV29ybGQmIHdvcmxkKQorVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3Jp
cHRvcjo6VXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvcihjb25zdCBBdG9tU3RyaW5nJiBuYW1l
LCBET01XcmFwcGVyV29ybGQmIHdvcmxkKQogICAgIDogbV9uYW1lKG5hbWUpCiAgICAgLCBtX3dv
cmxkKHdvcmxkKQogewpAQCAtNDAsNyArNDAsNyBAQCBVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlw
dG9yOjpVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yKGNvbnN0IEF0b21pY1N0cmluZyYgbgog
CiBVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yOjp+VXNlck1lc3NhZ2VIYW5kbGVyRGVzY3Jp
cHRvcigpID0gZGVmYXVsdDsKIAotY29uc3QgQXRvbWljU3RyaW5nJiBVc2VyTWVzc2FnZUhhbmRs
ZXJEZXNjcmlwdG9yOjpuYW1lKCkgY29uc3QKK2NvbnN0IEF0b21TdHJpbmcmIFVzZXJNZXNzYWdl
SGFuZGxlckRlc2NyaXB0b3I6Om5hbWUoKSBjb25zdAogewogICAgIHJldHVybiBtX25hbWU7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxlckRlc2Ny
aXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRv
ci5oCmluZGV4IGQyOTdhODI5NDMyMGRmYjc0MGI2N2U2ZDAxNzUyMjY4ZTM3YjY2ZjEuLjQ1ZTE1
NTdlMDZiNmJiMTA2ZDI0OTIyNzlmOTI5MDdhODhjZThmYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvci5oCkBAIC0yOSw3ICsyOSw3
IEBACiAKICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
LSNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9B
dG9tU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzksMTcgKzM5LDE3IEBA
IGNsYXNzIFVzZXJNZXNzYWdlSGFuZGxlcjsKIAogY2xhc3MgVXNlck1lc3NhZ2VIYW5kbGVyRGVz
Y3JpcHRvciA6IHB1YmxpYyBSZWZDb3VudGVkPFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3I+
IHsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBVc2VyTWVzc2FnZUhhbmRs
ZXJEZXNjcmlwdG9yKGNvbnN0IEF0b21pY1N0cmluZyYsIERPTVdyYXBwZXJXb3JsZCYpOworICAg
IFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IoY29u
c3QgQXRvbVN0cmluZyYsIERPTVdyYXBwZXJXb3JsZCYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgflVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IoKTsKIAotICAgIFdFQkNPUkVfRVhQ
T1JUIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
IGNvbnN0IEF0b21TdHJpbmcmIG5hbWUoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBET01X
cmFwcGVyV29ybGQmIHdvcmxkKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgRE9NV3JhcHBl
cldvcmxkJiB3b3JsZCgpIGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lkIGRpZFBvc3RNZXNzYWdl
KFVzZXJNZXNzYWdlSGFuZGxlciYsIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSopID0gMDsKIAogcHJp
dmF0ZToKLSAgICBBdG9taWNTdHJpbmcgbV9uYW1lOworICAgIEF0b21TdHJpbmcgbV9uYW1lOwog
ICAgIFJlZjxET01XcmFwcGVyV29ybGQ+IG1fd29ybGQ7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JUeXBlcy5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yVHlwZXMuaAppbmRl
eCA2ODE2MDU0ODM3MzFjOWExOGYwYTJiYzIxY2M5MzNkY2E5MjdkM2ViLi5hMTQ4YjYxMzE2MWY1
ODhjYjY5NWQwZmZlNTdmZTRiMWUxZDZkMmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1VzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvclR5cGVzLmgKQEAgLTI5LDE1ICsy
OSwxNSBAQAogCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3Rl
eHQvQXRvbWljU3RyaW5nSGFzaC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nSGFzaC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIERPTVdyYXBwZXJXb3JsZDsKIGNsYXNzIFVzZXJNZXNzYWdlSGFuZGxlckRl
c2NyaXB0b3I7CiAKLXR5cGVkZWYgSGFzaE1hcDxzdGQ6OnBhaXI8QXRvbWljU3RyaW5nLCBSZWZQ
dHI8RE9NV3JhcHBlcldvcmxkPj4sIFJlZlB0cjxVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9y
Pj4gVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvck1hcDsKK3R5cGVkZWYgSGFzaE1hcDxzdGQ6
OnBhaXI8QXRvbVN0cmluZywgUmVmUHRyPERPTVdyYXBwZXJXb3JsZD4+LCBSZWZQdHI8VXNlck1l
c3NhZ2VIYW5kbGVyRGVzY3JpcHRvcj4+IFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JNYXA7
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZS5jcHAKaW5kZXggNmIxZDgxZmU0ZDQwNTg4
OTBjMjk5YzgwNzEwMmJhMThjMDdhOWE0NS4uZTZiMjg5NzE3YmVkOWEwNWE1MTM2MWYwY2I3OWY3
MGJiNjE3OGVjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2FnZUhh
bmRsZXJzTmFtZXNwYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdl
SGFuZGxlcnNOYW1lc3BhY2UuY3BwCkBAIC02NCwxNCArNjQsMTQgQEAgdm9pZCBVc2VyTWVzc2Fn
ZUhhbmRsZXJzTmFtZXNwYWNlOjpkaWRJbnZhbGlkYXRlKFVzZXJDb250ZW50UHJvdmlkZXImIHBy
b3ZpZGVyKQogICAgICAgICB1c2VyTWVzc2FnZUhhbmRsZXItPmludmFsaWRhdGVEZXNjcmlwdG9y
KCk7CiB9CiAKLVZlY3RvcjxBdG9taWNTdHJpbmc+IFVzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3Bh
Y2U6OnN1cHBvcnRlZFByb3BlcnR5TmFtZXMoKSBjb25zdAorVmVjdG9yPEF0b21TdHJpbmc+IFVz
ZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2U6OnN1cHBvcnRlZFByb3BlcnR5TmFtZXMoKSBjb25z
dAogewogICAgIC8vIEZJWE1FOiBDb25zaWRlciBhZGRpbmcgc3VwcG9ydCBmb3IgaXRlcmF0aW5n
IHRoZSByZWdpc3RlcmVkIFVzZXJNZXNzYWdlSGFuZGxlcnMuIFRoaXMgd291bGQKICAgICAvLyBy
ZXF1aXJlIGFkZGluZyBzdXBwb3J0IGZvciBwYXNzaW5nIHRoZSBET01XcmFwcGVyV29ybGQgdG8g
c3VwcG9ydGVkUHJvcGVydHlOYW1lcy4KICAgICByZXR1cm4geyB9OwogfQogCi1Vc2VyTWVzc2Fn
ZUhhbmRsZXIqIFVzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2U6Om5hbWVkSXRlbShET01XcmFw
cGVyV29ybGQmIHdvcmxkLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCitVc2VyTWVzc2FnZUhh
bmRsZXIqIFVzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2U6Om5hbWVkSXRlbShET01XcmFwcGVy
V29ybGQmIHdvcmxkLCBjb25zdCBBdG9tU3RyaW5nJiBuYW1lKQogewogICAgIEZyYW1lKiBmcmFt
ZSA9IHRoaXMtPmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKQEAgLTgxLDcgKzgxLDcgQEAgVXNl
ck1lc3NhZ2VIYW5kbGVyKiBVc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlOjpuYW1lZEl0ZW0o
RE9NV3JhcHBlcldvcmxkJiB3b3IKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgVXNlck1lc3NhZ2VIYW5kbGVyKiBoYW5kbGVyID0gbV9tZXNzYWdlSGFuZGxl
cnMuZ2V0KHN0ZDo6cGFpcjxBdG9taWNTdHJpbmcsIFJlZlB0cjxET01XcmFwcGVyV29ybGQ+Pihu
YW1lLCAmd29ybGQpKTsKKyAgICBVc2VyTWVzc2FnZUhhbmRsZXIqIGhhbmRsZXIgPSBtX21lc3Nh
Z2VIYW5kbGVycy5nZXQoc3RkOjpwYWlyPEF0b21TdHJpbmcsIFJlZlB0cjxET01XcmFwcGVyV29y
bGQ+PihuYW1lLCAmd29ybGQpKTsKICAgICBpZiAoaGFuZGxlcikKICAgICAgICAgcmV0dXJuIGhh
bmRsZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlck1lc3NhZ2VIYW5k
bGVyc05hbWVzcGFjZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXJz
TmFtZXNwYWNlLmgKaW5kZXggMzVlOGZjYmY4ZjJiOGZjMjNhZmY4OGExZmEzODJlYjZjZjE5NzRk
Mi4uNTA5NDBlOWZkMGY4ZWVhYzFkMjAzN2QzNzdlM2ZiYzM1YWUwZmJkMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlLmgKQEAgLTMz
LDggKzMzLDggQEAKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0F0
b21pY1N0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2guaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0
cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01MSw4ICs1MSw4IEBAIHB1
YmxpYzoKIAogICAgIHZpcnR1YWwgflVzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2UoKTsKIAot
ICAgIFZlY3RvcjxBdG9taWNTdHJpbmc+IHN1cHBvcnRlZFByb3BlcnR5TmFtZXMoKSBjb25zdDsK
LSAgICBVc2VyTWVzc2FnZUhhbmRsZXIqIG5hbWVkSXRlbShET01XcmFwcGVyV29ybGQmLCBjb25z
dCBBdG9taWNTdHJpbmcmKTsKKyAgICBWZWN0b3I8QXRvbVN0cmluZz4gc3VwcG9ydGVkUHJvcGVy
dHlOYW1lcygpIGNvbnN0OworICAgIFVzZXJNZXNzYWdlSGFuZGxlciogbmFtZWRJdGVtKERPTVdy
YXBwZXJXb3JsZCYsIGNvbnN0IEF0b21TdHJpbmcmKTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNp
dCBVc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlKEZyYW1lJiwgVXNlckNvbnRlbnRQcm92aWRl
ciYpOwpAQCAtNjEsNyArNjEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkSW52YWxpZGF0ZShV
c2VyQ29udGVudFByb3ZpZGVyJikgb3ZlcnJpZGU7CiAKICAgICBSZWY8VXNlckNvbnRlbnRQcm92
aWRlcj4gbV91c2VyQ29udGVudFByb3ZpZGVyOwotICAgIEhhc2hNYXA8c3RkOjpwYWlyPEF0b21p
Y1N0cmluZywgUmVmUHRyPERPTVdyYXBwZXJXb3JsZD4+LCBSZWZQdHI8VXNlck1lc3NhZ2VIYW5k
bGVyPj4gbV9tZXNzYWdlSGFuZGxlcnM7CisgICAgSGFzaE1hcDxzdGQ6OnBhaXI8QXRvbVN0cmlu
ZywgUmVmUHRyPERPTVdyYXBwZXJXb3JsZD4+LCBSZWZQdHI8VXNlck1lc3NhZ2VIYW5kbGVyPj4g
bV9tZXNzYWdlSGFuZGxlcnM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Zpc2l0ZWRMaW5rU3RvcmUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvVmlzaXRlZExpbmtTdG9yZS5oCmluZGV4IDI2ZDY1MGRiYTc0ZGM1MDJjZjkzMDlh
M2YzZDFjMDVkYTZiNjQ5YjMuLmM2NjNiYTk0YjljZTBjNTFmZDExZDE1NzM4YjBhODhjOGFlNDEy
NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlzaXRlZExpbmtTdG9yZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlzaXRlZExpbmtTdG9yZS5oCkBAIC00MCw3ICs0MCw3
IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5WaXNpdGVkTGlua1N0b3Jl
KCk7CiAKICAgICAvLyBGSVhNRTogVGhlc2UgdHdvIG1lbWJlcnMgc2hvdWxkIG9ubHkgdGFrZSB0
aGUgbGluayBoYXNoLgotICAgIHZpcnR1YWwgYm9vbCBpc0xpbmtWaXNpdGVkKFBhZ2UmLCBTaGFy
ZWRTdHJpbmdIYXNoLCBjb25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0
cmlidXRlVVJMKSA9IDA7CisgICAgdmlydHVhbCBib29sIGlzTGlua1Zpc2l0ZWQoUGFnZSYsIFNo
YXJlZFN0cmluZ0hhc2gsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgQXRvbVN0cmluZyYgYXR0
cmlidXRlVVJMKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGFkZFZpc2l0ZWRMaW5rKFBhZ2UmLCBT
aGFyZWRTdHJpbmdIYXNoKSA9IDA7CiAKICAgICB2b2lkIGFkZFBhZ2UoUGFnZSYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9WaXN1YWxWaWV3cG9ydC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1Zpc3VhbFZpZXdwb3J0LmNwcAppbmRleCAwZmZiZTBhZTg4MTU3YzFiZWUzNjAx
NzM0ZGVjYTk1ZGRkYTRjM2FmLi5iYjA3Zjg0NTIwOTNmOTMwYzViMTBiN2QxOGVjOTU3YWI3NDY4
MjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Zpc3VhbFZpZXdwb3J0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Zpc3VhbFZpZXdwb3J0LmNwcApAQCAtNTksNyArNTks
NyBAQCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBWaXN1YWxWaWV3cG9ydDo6c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PENvbnRleHREZXN0cnVj
dGlvbk9ic2VydmVyKj4od2luZG93KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogfQogCi1i
b29sIFZpc3VhbFZpZXdwb3J0OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwgY29uc3QgQWRkRXZlbnRM
aXN0ZW5lck9wdGlvbnMmIG9wdGlvbnMpCitib29sIFZpc3VhbFZpZXdwb3J0OjphZGRFdmVudExp
c3RlbmVyKGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50TGlzdGVuZXI+JiYg
bGlzdGVuZXIsIGNvbnN0IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zJiBvcHRpb25zKQogewogICAg
IGlmICghRXZlbnRUYXJnZXQ6OmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBXVEZNb3ZlKGxp
c3RlbmVyKSwgb3B0aW9ucykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvVmlzdWFsVmlld3BvcnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
VmlzdWFsVmlld3BvcnQuaAppbmRleCBhNDMzYWRiNzZlMTgzMDdlODRjMWFlZGJlZGE3NTAyMTVl
OWJjMzRiLi5mN2I5YzEyNWJmZTAyZjhjY2E4YzBiNDZmMGFmMGRmMDllZjNhZmU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Zpc3VhbFZpZXdwb3J0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9WaXN1YWxWaWV3cG9ydC5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAg
ICAvLyBFdmVudFRhcmdldAogICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50
ZXJmYWNlKCkgY29uc3QgZmluYWw7CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsOwotICAgIGJvb2wgYWRkRXZlbnRMaXN0ZW5l
cihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50TGlzdGVuZXI+JiYsIGNv
bnN0IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zJikgZmluYWw7CisgICAgYm9vbCBhZGRFdmVudExp
c3RlbmVyKGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50TGlzdGVuZXI+JiYs
IGNvbnN0IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zJikgZmluYWw7CiAKICAgICBkb3VibGUgb2Zm
c2V0TGVmdCgpIGNvbnN0OwogICAgIGRvdWJsZSBvZmZzZXRUb3AoKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU0FuaW1hdGlvbkNvbnRyb2xsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTQW5pbWF0aW9uQ29udHJvbGxl
ci5jcHAKaW5kZXggOGJiOTRlOTk4YWJlNWE2NWNkYjI4MzJkNzVkZmYxZTZjNWE1OTdiMC4uZDUx
MjY0MTYxZTM0YmE5MmFkZTc2YzMwMmUzYzU4NmNkM2E4ZWY2NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTQW5pbWF0aW9uQ29udHJvbGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTQW5pbWF0aW9uQ29udHJvbGxlci5jcHAK
QEAgLTI0MCw3ICsyNDAsNyBAQCB2b2lkIENTU0FuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlOjpz
dGFydFVwZGF0ZVN0eWxlSWZOZWVkZWREaXNwYXRjaGVyKCkKICAgICAgICAgbV91cGRhdGVTdHls
ZUlmTmVlZGVkRGlzcGF0Y2hlci5zdGFydE9uZVNob3QoMF9zKTsKIH0KIAotdm9pZCBDU1NBbmlt
YXRpb25Db250cm9sbGVyUHJpdmF0ZTo6YWRkRXZlbnRUb0Rpc3BhdGNoKEVsZW1lbnQmIGVsZW1l
bnQsIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIGRv
dWJsZSBlbGFwc2VkVGltZSkKK3ZvaWQgQ1NTQW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGU6OmFk
ZEV2ZW50VG9EaXNwYXRjaChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBBdG9tU3RyaW5nJiBldmVu
dFR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgZG91YmxlIGVsYXBzZWRUaW1lKQogewogICAgIG1f
ZXZlbnRzVG9EaXNwYXRjaC5hcHBlbmQoeyBlbGVtZW50LCBldmVudFR5cGUsIG5hbWUsIGVsYXBz
ZWRUaW1lIH0pOwogICAgIHN0YXJ0VXBkYXRlU3R5bGVJZk5lZWRlZERpc3BhdGNoZXIoKTsKQEAg
LTQwOSw3ICs0MDksNyBAQCB2b2lkIENTU0FuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlOjpzZXRB
bGxvd3NOZXdBbmltYXRpb25zV2hpbGVTdXNwZW5kZWQoYm9vbCBhbAogICAgIG1fYWxsb3dzTmV3
QW5pbWF0aW9uc1doaWxlU3VzcGVuZGVkID0gYWxsb3dlZDsKIH0KIAotYm9vbCBDU1NBbmltYXRp
b25Db250cm9sbGVyUHJpdmF0ZTo6cGF1c2VBbmltYXRpb25BdFRpbWUoRWxlbWVudCYgZWxlbWVu
dCwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBkb3VibGUgdCkKK2Jvb2wgQ1NTQW5pbWF0aW9u
Q29udHJvbGxlclByaXZhdGU6OnBhdXNlQW5pbWF0aW9uQXRUaW1lKEVsZW1lbnQmIGVsZW1lbnQs
IGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIGRvdWJsZSB0KQogewogICAgIENvbXBvc2l0ZUFuaW1h
dGlvbiYgY29tcG9zaXRlQW5pbWF0aW9uID0gZW5zdXJlQ29tcG9zaXRlQW5pbWF0aW9uKGVsZW1l
bnQpOwogICAgIGlmIChjb21wb3NpdGVBbmltYXRpb24ucGF1c2VBbmltYXRpb25BdFRpbWUobmFt
ZSwgdCkpIHsKQEAgLTY3Myw3ICs2NzMsNyBAQCB2b2lkIENTU0FuaW1hdGlvbkNvbnRyb2xsZXI6
Om5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIE1vbgogICAg
IG1fZGF0YS0+cmVjZWl2ZWRTdGFydFRpbWVSZXNwb25zZShzdGFydFRpbWUpOwogfQogCi1ib29s
IENTU0FuaW1hdGlvbkNvbnRyb2xsZXI6OnBhdXNlQW5pbWF0aW9uQXRUaW1lKEVsZW1lbnQmIGVs
ZW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgZG91YmxlIHQpCitib29sIENTU0FuaW1h
dGlvbkNvbnRyb2xsZXI6OnBhdXNlQW5pbWF0aW9uQXRUaW1lKEVsZW1lbnQmIGVsZW1lbnQsIGNv
bnN0IEF0b21TdHJpbmcmIG5hbWUsIGRvdWJsZSB0KQogewogICAgIEFuaW1hdGlvblVwZGF0ZUJs
b2NrIGFuaW1hdGlvblVwZGF0ZUJsb2NrKHRoaXMpOwogICAgIHJldHVybiBtX2RhdGEtPnBhdXNl
QW5pbWF0aW9uQXRUaW1lKGVsZW1lbnQsIG5hbWUsIHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTQW5pbWF0aW9uQ29udHJvbGxlci5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTQW5pbWF0aW9uQ29udHJvbGxlci5oCmluZGV4IGNiZTg4
NTAwYWZhZTY1Y2UyZWEyYTcwZDlkNzFlZjU5OTVlMjdjMDMuLmVjN2I5YzdkMjdmOWM5ZDJlODVh
MzBmZjZmYWJhYjFkOWJhMGIyMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5p
bWF0aW9uL0NTU0FuaW1hdGlvbkNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2FuaW1hdGlvbi9DU1NBbmltYXRpb25Db250cm9sbGVyLmgKQEAgLTY1LDcgKzY1LDcgQEAgcHVi
bGljOgogICAgIC8vIFRoaXMgaXMgY2FsbGVkIHdoZW4gYW4gYWNjZWxlcmF0ZWQgYW5pbWF0aW9u
IG9yIHRyYW5zaXRpb24gaGFzIGFjdHVhbGx5IHN0YXJ0ZWQgdG8gYW5pbWF0ZS4KICAgICB2b2lk
IG5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQoUmVuZGVyRWxlbWVudCYsIE1vbm90b25pY1RpbWUgc3Rh
cnRUaW1lKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgcGF1c2VBbmltYXRpb25BdFRpbWUo
RWxlbWVudCYsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgZG91YmxlIHQpOyAvLyBUbyBiZSB1
c2VkIG9ubHkgZm9yIHRlc3RpbmcKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIHBhdXNlQW5pbWF0
aW9uQXRUaW1lKEVsZW1lbnQmLCBjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBkb3VibGUgdCk7IC8v
IFRvIGJlIHVzZWQgb25seSBmb3IgdGVzdGluZwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgcGF1
c2VUcmFuc2l0aW9uQXRUaW1lKEVsZW1lbnQmLCBjb25zdCBTdHJpbmcmIHByb3BlcnR5LCBkb3Vi
bGUgdCk7IC8vIFRvIGJlIHVzZWQgb25seSBmb3IgdGVzdGluZwogICAgIFdFQkNPUkVfRVhQT1JU
IHVuc2lnbmVkIG51bWJlck9mQWN0aXZlQW5pbWF0aW9ucyhEb2N1bWVudCopIGNvbnN0OyAvLyBU
byBiZSB1c2VkIG9ubHkgZm9yIHRlc3RpbmcKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvYW5pbWF0aW9uL0NTU0FuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZS5o
CmluZGV4IDU1ZjU4Njg1MmM3MzFlNzIwYWIzZmJhMzI1OWZhNjAzMmM1NWY1ZmIuLmQzMjAzNzdk
ZWNjOWM1MzRkZWViN2I0ZTk1Y2UwZWQyZDg1YWVkYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvYW5pbWF0aW9uL0NTU0FuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTQW5pbWF0aW9uQ29udHJvbGxlclByaXZh
dGUuaApAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHVwZGF0ZVN0eWxlSWZO
ZWVkZWREaXNwYXRjaGVyRmlyZWQoKTsKICAgICB2b2lkIHN0YXJ0VXBkYXRlU3R5bGVJZk5lZWRl
ZERpc3BhdGNoZXIoKTsKLSAgICB2b2lkIGFkZEV2ZW50VG9EaXNwYXRjaChFbGVtZW50JiwgY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgZG91YmxlIGVs
YXBzZWRUaW1lKTsKKyAgICB2b2lkIGFkZEV2ZW50VG9EaXNwYXRjaChFbGVtZW50JiwgY29uc3Qg
QXRvbVN0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIGRvdWJsZSBlbGFwc2Vk
VGltZSk7CiAgICAgdm9pZCBhZGRFbGVtZW50Q2hhbmdlVG9EaXNwYXRjaChFbGVtZW50Jik7CiAK
ICAgICBib29sIGhhc0FuaW1hdGlvbnMoKSBjb25zdCB7IHJldHVybiAhbV9jb21wb3NpdGVBbmlt
YXRpb25zLmlzRW1wdHkoKTsgfQpAQCAtNzksNyArNzksNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBp
c1J1bm5pbmdBbmltYXRpb25PblJlbmRlcmVyKFJlbmRlckVsZW1lbnQmLCBDU1NQcm9wZXJ0eUlE
KSBjb25zdDsKICAgICBib29sIGlzUnVubmluZ0FjY2VsZXJhdGVkQW5pbWF0aW9uT25SZW5kZXJl
cihSZW5kZXJFbGVtZW50JiwgQ1NTUHJvcGVydHlJRCkgY29uc3Q7CiAKLSAgICBib29sIHBhdXNl
QW5pbWF0aW9uQXRUaW1lKEVsZW1lbnQmLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGRvdWJs
ZSB0KTsKKyAgICBib29sIHBhdXNlQW5pbWF0aW9uQXRUaW1lKEVsZW1lbnQmLCBjb25zdCBBdG9t
U3RyaW5nJiBuYW1lLCBkb3VibGUgdCk7CiAgICAgYm9vbCBwYXVzZVRyYW5zaXRpb25BdFRpbWUo
RWxlbWVudCYsIGNvbnN0IFN0cmluZyYgcHJvcGVydHksIGRvdWJsZSB0KTsKICAgICB1bnNpZ25l
ZCBudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoRG9jdW1lbnQqKSBjb25zdDsKIApAQCAtMTIyLDcg
KzEyMiw3IEBAIHByaXZhdGU6CiAKICAgICBzdHJ1Y3QgRXZlbnRUb0Rpc3BhdGNoIHsKICAgICAg
ICAgUmVmPEVsZW1lbnQ+IGVsZW1lbnQ7Ci0gICAgICAgIEF0b21pY1N0cmluZyBldmVudFR5cGU7
CisgICAgICAgIEF0b21TdHJpbmcgZXZlbnRUeXBlOwogICAgICAgICBTdHJpbmcgbmFtZTsKICAg
ICAgICAgZG91YmxlIGVsYXBzZWRUaW1lOwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2FuaW1hdGlvbi9Db21wb3NpdGVBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmNwcAppbmRleCBhNzgxNjMxNzUz
M2U4ODA2OTE0YjkwZGVlMDI4OWJmYjNhOWEyMTFiLi5lNTc2MjkzNThhNDI0ZDhlMDAyYzhlZWNh
ZWJkYzMzMDdhMzAwMmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlv
bi9Db21wb3NpdGVBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0
aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHAKQEAgLTIyMCwxNCArMjIwLDE0IEBAIHZvaWQgQ29t
cG9zaXRlQW5pbWF0aW9uOjp1cGRhdGVLZXlmcmFtZUFuaW1hdGlvbnMoRWxlbWVudCYgZWxlbWVu
dCwgY29uc3QgUmVuZGVyCiAgICAgLy8gVG9zcyB0aGUgYW5pbWF0aW9uIG9yZGVyIG1hcC4KICAg
ICBtX2tleWZyYW1lQW5pbWF0aW9uT3JkZXJNYXAuY2xlYXIoKTsKIAotICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IG5vbmUoIm5vbmUiLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3Qg
QXRvbVN0cmluZz4gbm9uZSgibm9uZSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKICAgICAKICAgICAvLyBOb3cgbWFyayBhbnkgc3RpbGwgYWN0aXZlIGFuaW1hdGlvbnMgYXMg
YWN0aXZlIGFuZCBhZGQgYW55IG5ldyBhbmltYXRpb25zLgogICAgIGlmICh0YXJnZXRTdHlsZS5h
bmltYXRpb25zKCkpIHsKICAgICAgICAgaW50IG51bUFuaW1zID0gdGFyZ2V0U3R5bGUuYW5pbWF0
aW9ucygpLT5zaXplKCk7CiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtQW5pbXM7ICsr
aSkgewogICAgICAgICAgICAgYXV0byYgYW5pbWF0aW9uID0gdGFyZ2V0U3R5bGUuYW5pbWF0aW9u
cygpLT5hbmltYXRpb24oaSk7Ci0gICAgICAgICAgICBBdG9taWNTdHJpbmcgYW5pbWF0aW9uTmFt
ZShhbmltYXRpb24ubmFtZSgpKTsKKyAgICAgICAgICAgIEF0b21TdHJpbmcgYW5pbWF0aW9uTmFt
ZShhbmltYXRpb24ubmFtZSgpKTsKIAogICAgICAgICAgICAgaWYgKCFhbmltYXRpb24uaXNWYWxp
ZEFuaW1hdGlvbigpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtNTI2LDcgKzUyNiw3
IEBAIGJvb2wgQ29tcG9zaXRlQW5pbWF0aW9uOjppc0FuaW1hdGluZ1Byb3BlcnR5KENTU1Byb3Bl
cnR5SUQgcHJvcGVydHksIGJvb2wgYWNjZWxlCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29s
IENvbXBvc2l0ZUFuaW1hdGlvbjo6cGF1c2VBbmltYXRpb25BdFRpbWUoY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lLCBkb3VibGUgdCkKK2Jvb2wgQ29tcG9zaXRlQW5pbWF0aW9uOjpwYXVzZUFuaW1h
dGlvbkF0VGltZShjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBkb3VibGUgdCkKIHsKICAgICBtX2tl
eWZyYW1lQW5pbWF0aW9ucy5jaGVja0NvbnNpc3RlbmN5KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmgKaW5kZXggNDA1MmI5M2Q0
YjE0OWFhZDgzZDUxMjc2NWNjNWRkNWJkZDQ0M2JlYi4uOTQyMjY5MjM5NmQyZmJhNjg4MGQxY2Q5
ZjljOGQ2OWI4MmU3YjBjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRp
b24vQ29tcG9zaXRlQW5pbWF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRp
b24vQ29tcG9zaXRlQW5pbWF0aW9uLmgKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJJbXBs
aWNpdEFuaW1hdGlvbi5oIgogI2luY2x1ZGUgIktleWZyYW1lQW5pbWF0aW9uLmgiCiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtNzYsNyArNzYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBvdmVycmlkZUltcGxpY2l0QW5pbWF0
aW9ucyhDU1NQcm9wZXJ0eUlEKTsKICAgICB2b2lkIHJlc3VtZU92ZXJyaWRkZW5JbXBsaWNpdEFu
aW1hdGlvbnMoQ1NTUHJvcGVydHlJRCk7CiAKLSAgICBib29sIHBhdXNlQW5pbWF0aW9uQXRUaW1l
KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgZG91YmxlIHQpOworICAgIGJvb2wgcGF1c2VBbmlt
YXRpb25BdFRpbWUoY29uc3QgQXRvbVN0cmluZyYgbmFtZSwgZG91YmxlIHQpOwogICAgIGJvb2wg
cGF1c2VUcmFuc2l0aW9uQXRUaW1lKENTU1Byb3BlcnR5SUQsIGRvdWJsZSk7CiAgICAgdW5zaWdu
ZWQgbnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKCkgY29uc3Q7CiAKQEAgLTg5LDcgKzg5LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZUtleWZyYW1lQW5pbWF0aW9ucyhFbGVtZW50JiwgY29u
c3QgUmVuZGVyU3R5bGUqIGN1cnJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIHRhcmdldFN0
eWxlKTsKICAgICAKICAgICB0eXBlZGVmIEhhc2hNYXA8aW50LCBSZWZQdHI8SW1wbGljaXRBbmlt
YXRpb24+PiBDU1NQcm9wZXJ0eVRyYW5zaXRpb25zTWFwOwotICAgIHR5cGVkZWYgSGFzaE1hcDxB
dG9taWNTdHJpbmdJbXBsKiwgUmVmUHRyPEtleWZyYW1lQW5pbWF0aW9uPj4gQW5pbWF0aW9uTmFt
ZU1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8QXRvbVN0cmluZ0ltcGwqLCBSZWZQdHI8S2V5ZnJh
bWVBbmltYXRpb24+PiBBbmltYXRpb25OYW1lTWFwOwogCiAgICAgYm9vbCBtX3N1c3BlbmRlZCB7
IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc0FuaW1hdGlvblRoYXREZXBlbmRzT25MYXlvdXQgeyBm
YWxzZSB9OwpAQCAtOTcsNyArOTcsNyBAQCBwcml2YXRlOgogICAgIENTU0FuaW1hdGlvbkNvbnRy
b2xsZXJQcml2YXRlJiBtX2FuaW1hdGlvbkNvbnRyb2xsZXI7CiAgICAgQ1NTUHJvcGVydHlUcmFu
c2l0aW9uc01hcCBtX3RyYW5zaXRpb25zOwogICAgIEFuaW1hdGlvbk5hbWVNYXAgbV9rZXlmcmFt
ZUFuaW1hdGlvbnM7Ci0gICAgVmVjdG9yPEF0b21pY1N0cmluZ0ltcGwqPiBtX2tleWZyYW1lQW5p
bWF0aW9uT3JkZXJNYXA7CisgICAgVmVjdG9yPEF0b21TdHJpbmdJbXBsKj4gbV9rZXlmcmFtZUFu
aW1hdGlvbk9yZGVyTWFwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vSW1wbGljaXRBbmltYXRpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vSW1wbGljaXRBbmltYXRpb24uY3BwCmluZGV4
IDRmN2MxM2VjOGExMzRjYzU2NThmMWY4NDQ5ODE1YzY4MzU1MjBjOGUuLjA0NzdhOWU3ZDA4NWUy
Nzc3ZGFmYjJjYjFjZjlkOWIzOTlkYzk3NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvYW5pbWF0aW9uL0ltcGxpY2l0QW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2FuaW1hdGlvbi9JbXBsaWNpdEFuaW1hdGlvbi5jcHAKQEAgLTIwMSw3ICsyMDEsNyBAQCB2
b2lkIEltcGxpY2l0QW5pbWF0aW9uOjpvbkFuaW1hdGlvbkVuZChkb3VibGUgZWxhcHNlZFRpbWUp
CiAgICAgZW5kQW5pbWF0aW9uKCk7CiB9CiAKLWJvb2wgSW1wbGljaXRBbmltYXRpb246OnNlbmRU
cmFuc2l0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGRvdWJsZSBlbGFw
c2VkVGltZSkKK2Jvb2wgSW1wbGljaXRBbmltYXRpb246OnNlbmRUcmFuc2l0aW9uRXZlbnQoY29u
c3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBkb3VibGUgZWxhcHNlZFRpbWUpCiB7CiAgICAgaWYg
KGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkudHJhbnNpdGlvbmVuZEV2ZW50KSB7CiAgICAgICAg
IERvY3VtZW50OjpMaXN0ZW5lclR5cGUgbGlzdGVuZXJUeXBlID0gRG9jdW1lbnQ6OlRSQU5TSVRJ
T05FTkRfTElTVEVORVI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlv
bi9JbXBsaWNpdEFuaW1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vSW1w
bGljaXRBbmltYXRpb24uaAppbmRleCA3MmQ0Y2JmMzMwZDZhOTNlMGJiNzRjZTc2OTM3MzM2YmZk
NDRlZWFkLi43MmI4NGFkY2VjZjkyOGQ4NGUxNWE0MGM1Yzg4NTc2MDVmM2U2NDYyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9JbXBsaWNpdEFuaW1hdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0ltcGxpY2l0QW5pbWF0aW9uLmgKQEAg
LTgzLDcgKzgzLDcgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBzaG91bGRTZW5k
RXZlbnRGb3JMaXN0ZW5lcihEb2N1bWVudDo6TGlzdGVuZXJUeXBlKSBjb25zdDsgICAgCi0gICAg
Ym9vbCBzZW5kVHJhbnNpdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYsIGRvdWJsZSBlbGFw
c2VkVGltZSk7CisgICAgYm9vbCBzZW5kVHJhbnNpdGlvbkV2ZW50KGNvbnN0IEF0b21TdHJpbmcm
LCBkb3VibGUgZWxhcHNlZFRpbWUpOwogCiAgICAgdm9pZCB2YWxpZGF0ZVRyYW5zZm9ybUZ1bmN0
aW9uTGlzdCgpOwogICAgIHZvaWQgY2hlY2tGb3JNYXRjaGluZ0ZpbHRlckZ1bmN0aW9uTGlzdHMo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5p
bWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0
aW9uLmNwcAppbmRleCA2MDk2OTE5MzVkNmY0MTgyOWY3NjRlZWUyMDUwNWE2YWZmZjNlZTMzLi45
YWY1ZjA4NGM1MDEzNjYwM2Q1MjRiMjBmYmExNmY1OTViYjk3OWZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9LZXlmcmFtZUFuaW1hdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vS2V5ZnJhbWVBbmltYXRpb24uY3BwCkBAIC0zNDMs
NyArMzQzLDcgQEAgdm9pZCBLZXlmcmFtZUFuaW1hdGlvbjo6b25BbmltYXRpb25FbmQoZG91Ymxl
IGVsYXBzZWRUaW1lKQogICAgIGVuZEFuaW1hdGlvbihtX2FuaW1hdGlvbi0+ZmlsbHNGb3J3YXJk
cygpKTsKIH0KIAotYm9vbCBLZXlmcmFtZUFuaW1hdGlvbjo6c2VuZEFuaW1hdGlvbkV2ZW50KGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBkb3VibGUgZWxhcHNlZFRpbWUpCitib29sIEtl
eWZyYW1lQW5pbWF0aW9uOjpzZW5kQW5pbWF0aW9uRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgZXZl
bnRUeXBlLCBkb3VibGUgZWxhcHNlZFRpbWUpCiB7CiAgICAgRG9jdW1lbnQ6Okxpc3RlbmVyVHlw
ZSBsaXN0ZW5lclR5cGU7CiAgICAgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkud2Via2l0
QW5pbWF0aW9uSXRlcmF0aW9uRXZlbnQgfHwgZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5hbmlt
YXRpb25pdGVyYXRpb25FdmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5p
bWF0aW9uL0tleWZyYW1lQW5pbWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlv
bi9LZXlmcmFtZUFuaW1hdGlvbi5oCmluZGV4IDM4ODlmZWUyNWZjOWE5MzM0NTkyYTdjNjBlYWZk
YWE3NWJiMmUyY2IuLmExYzNlNjY2Mjc5NThlNDgyNzI5ZDc0OWNkMzU1Y2IxOTFmNDBjMTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vS2V5ZnJhbWVBbmltYXRpb24u
aApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBLZXlmcmFtZUxpc3QmIGtl
eWZyYW1lcygpIGNvbnN0IHsgcmV0dXJuIG1fa2V5ZnJhbWVzOyB9CiAKLSAgICBjb25zdCBBdG9t
aWNTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX2tleWZyYW1lcy5hbmltYXRpb25OYW1l
KCk7IH0KKyAgICBjb25zdCBBdG9tU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9rZXlm
cmFtZXMuYW5pbWF0aW9uTmFtZSgpOyB9CiAKICAgICBib29sIGhhc0FuaW1hdGlvbkZvclByb3Bl
cnR5KENTU1Byb3BlcnR5SUQpIGNvbnN0OwogCkBAIC03Nyw3ICs3Nyw3IEBAIHByb3RlY3RlZDoK
ICAgICB2b2lkIHJlc3VtZU92ZXJyaWRkZW5BbmltYXRpb25zKCkgb3ZlcnJpZGU7CiAKICAgICBi
b29sIHNob3VsZFNlbmRFdmVudEZvckxpc3RlbmVyKERvY3VtZW50OjpMaXN0ZW5lclR5cGUgaW5M
aXN0ZW5lclR5cGUpIGNvbnN0OwotICAgIGJvb2wgc2VuZEFuaW1hdGlvbkV2ZW50KGNvbnN0IEF0
b21pY1N0cmluZyYsIGRvdWJsZSBlbGFwc2VkVGltZSk7CisgICAgYm9vbCBzZW5kQW5pbWF0aW9u
RXZlbnQoY29uc3QgQXRvbVN0cmluZyYsIGRvdWJsZSBlbGFwc2VkVGltZSk7CiAKICAgICBib29s
IGFmZmVjdHNQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcAppbmRleCBhZGEy
ZDQ0NjUyNTQzZTRkYzFmYTM0OTZlYmIzZjE3NDE2YTVhNzY0Li43ZDM5Mzk4NGIwZGZmYjcwY2E4
M2M1NDhmNjBmMDVlM2E2YzNmYWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdUcmVlLmNwcApAQCAtMzQwLDcgKzM0MCw3IEBAIHZvaWQgU2Nyb2xsaW5n
VHJlZTo6c2V0TWFpbkZyYW1lU2Nyb2xsUG9zaXRpb24oRmxvYXRQb2ludCBwb3NpdGlvbikKICAg
ICBtX3RyZWVTdGF0ZS5tYWluRnJhbWVTY3JvbGxQb3NpdGlvbiA9IHBvc2l0aW9uOwogfQogCi1U
cmFja2luZ1R5cGUgU2Nyb2xsaW5nVHJlZTo6ZXZlbnRUcmFja2luZ1R5cGVGb3JQb2ludChjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50TmFtZSwgSW50UG9pbnQgcCkKK1RyYWNraW5nVHlwZSBTY3Jv
bGxpbmdUcmVlOjpldmVudFRyYWNraW5nVHlwZUZvclBvaW50KGNvbnN0IEF0b21TdHJpbmcmIGV2
ZW50TmFtZSwgSW50UG9pbnQgcCkKIHsKICAgICBMb2NrSG9sZGVyIGxvY2sobV90cmVlU3RhdGVN
dXRleCk7CiAgICAgcmV0dXJuIG1fdHJlZVN0YXRlLmV2ZW50VHJhY2tpbmdSZWdpb25zLnRyYWNr
aW5nVHlwZUZvclBvaW50KGV2ZW50TmFtZSwgcCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdUcmVlLmgKaW5kZXggMWUzYWNhMzIwZGE2YWYyNjA3YWJiOTczZmJi
NGY2MjU0NGI2NThmNS4uOGVkYTY3NWU5YzNkMWQ5NTE4ZDJkYzQwZGQxMTIxM2NkOGZkYjc1NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuaApAQCAt
MTAwLDcgKzEwMCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsaW5nVHJlZU5v
ZGVEaWRFbmRTY3JvbGwoKSB7IH0KICNlbmRpZgogCi0gICAgV0VCQ09SRV9FWFBPUlQgVHJhY2tp
bmdUeXBlIGV2ZW50VHJhY2tpbmdUeXBlRm9yUG9pbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVu
dE5hbWUsIEludFBvaW50KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBUcmFja2luZ1R5cGUgZXZlbnRU
cmFja2luZ1R5cGVGb3JQb2ludChjb25zdCBBdG9tU3RyaW5nJiBldmVudE5hbWUsIEludFBvaW50
KTsKICNpZiBFTkFCTEUoUE9JTlRFUl9FVkVOVFMpCiAgICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9u
YWw8VG91Y2hBY3Rpb25EYXRhPiB0b3VjaEFjdGlvbkRhdGFBdFBvaW50KEludFBvaW50KSBjb25z
dDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGF0ZVRpbWVD
aG9vc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EYXRlVGltZUNob29zZXIuaAppbmRl
eCBlNWM1ZmFkNGNlMTk2NjA3NGFhZDdlMWU2YThmNTJjOWYwMTg4OTBlLi4yM2IwNWQ3YzgyNGY1
NTY4YzhmODdmOTc4NTM3NGFiYzEzYTAxMGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9EYXRlVGltZUNob29zZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9E
YXRlVGltZUNob29zZXIuaApAQCAtMzksMTIgKzM5LDEyIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHN0cnVjdCBEYXRlVGltZUNob29zZXJQYXJhbWV0ZXJzIHsKLSAgICBBdG9taWNTdHJpbmcg
dHlwZTsKKyAgICBBdG9tU3RyaW5nIHR5cGU7CiAgICAgSW50UmVjdCBhbmNob3JSZWN0SW5Sb290
VmlldzsKICAgICAvLyBMb2NhbGUgbmFtZSBmb3Igd2hpY2ggdGhlIGNob29zZXIgc2hvdWxkIGJl
IGxvY2FsaXplZC4gVGhpcwogICAgIC8vIG1pZ2h0IGJlIGFuIGludmFsaWQgbmFtZSBiZWNhdXNl
IGl0IGNvbWVzIGZyb20gSFRNTCBsYW5nCiAgICAgLy8gYXR0cmlidXRlcy4KLSAgICBBdG9taWNT
dHJpbmcgbG9jYWxlOworICAgIEF0b21TdHJpbmcgbG9jYWxlOwogICAgIFN0cmluZyBjdXJyZW50
VmFsdWU7CiAgICAgVmVjdG9yPFN0cmluZz4gc3VnZ2VzdGlvblZhbHVlczsKICAgICBWZWN0b3I8
U3RyaW5nPiBsb2NhbGl6ZWRTdWdnZXN0aW9uVmFsdWVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTWVkaWFEZXNjcmlwdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vTWVkaWFEZXNjcmlwdGlvbi5oCmluZGV4IGNhNGEwOWIwYzQ5NjA2OTBmNmUwZTA1YzE5NmVm
OTQ5ZjIwZmNmMjMuLjIxYTg4NTIwNWVmN2ZiODBjMDNlM2I1MWJmZGM3YWU2Mjc1NDE2OGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhRGVzY3JpcHRpb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYURlc2NyaXB0aW9uLmgKQEAgLTM1LDcgKzM1
LDcgQEAgY2xhc3MgTWVkaWFEZXNjcmlwdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhRGVz
Y3JpcHRpb24+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5NZWRpYURlc2NyaXB0aW9uKCkgPSBk
ZWZhdWx0OwogCi0gICAgdmlydHVhbCBBdG9taWNTdHJpbmcgY29kZWMoKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBBdG9tU3RyaW5nIGNvZGVjKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9v
bCBpc1ZpZGVvKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc0F1ZGlvKCkgY29uc3Qg
PSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc1RleHQoKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVNhbXBsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTWVkaWFTYW1wbGUuaAppbmRleCAwOTQ1MjJjNDNkMDY1YWVhYTI1YmIzZmRkNTEzN2Ex
MGYwMjQzMTcyLi42YzQ5NWM2NmJhNzFmY2E4ZmM5NjE3ZjFiMTY2NWUxN2JmYTI3ZDdlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVNhbXBsZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxlLmgKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNs
dWRlIDx3dGYvRW51bVRyYWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KICNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4KIAogdHlwZWRlZiBzdHJ1Y3Qgb3Bh
cXVlQ01TYW1wbGVCdWZmZXIgKkNNU2FtcGxlQnVmZmVyUmVmOwogdHlwZWRlZiBzdHJ1Y3QgX0dz
dFNhbXBsZSBHc3RTYW1wbGU7CkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IE1lZGlhVGltZSBkZWNvZGVUaW1lKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgTWVkaWFUaW1l
IGR1cmF0aW9uKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgTWVkaWFUaW1lIG91dHB1dER1cmF0
aW9uKCkgY29uc3QgeyByZXR1cm4gZHVyYXRpb24oKTsgfQotICAgIHZpcnR1YWwgQXRvbWljU3Ry
aW5nIHRyYWNrSUQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBdG9tU3RyaW5nIHRyYWNrSUQo
KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFRyYWNrSUQoY29uc3QgU3RyaW5nJikg
PSAwOwogICAgIHZpcnR1YWwgc2l6ZV90IHNpemVJbkJ5dGVzKCkgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgRmxvYXRTaXplIHByZXNlbnRhdGlvblNpemUoKSBjb25zdCA9IDA7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TZWFyY2hQb3B1cE1lbnUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NlYXJjaFBvcHVwTWVudS5oCmluZGV4IDYxNTgzZWVhODkxZDQ3ZjM3YmI1
YTJmMDg4ZjliYzRkMDdmNWNlOWQuLmNlNGRiODI4Y2QyNDBkNjcyMDFkNjA5ZGJlNDAwNDcyN2Ji
YzI2NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NlYXJjaFBvcHVwTWVu
dS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NlYXJjaFBvcHVwTWVudS5oCkBAIC0z
OCw4ICszOCw4IEBAIGNsYXNzIFNlYXJjaFBvcHVwTWVudSA6IHB1YmxpYyBSZWZDb3VudGVkPFNl
YXJjaFBvcHVwTWVudT4gewogcHVibGljOgogICAgIHZpcnR1YWwgflNlYXJjaFBvcHVwTWVudSgp
ID0gZGVmYXVsdDsKICAgICB2aXJ0dWFsIFBvcHVwTWVudSogcG9wdXBNZW51KCkgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
LCBjb25zdCBWZWN0b3I8UmVjZW50U2VhcmNoPiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgbG9h
ZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgVmVjdG9yPFJlY2VudFNl
YXJjaD4mKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBB
dG9tU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8UmVjZW50U2VhcmNoPiYpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgbG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIFZl
Y3RvcjxSZWNlbnRTZWFyY2g+JikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBlbmFibGVkKCkgPSAw
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkU3RyaW5n
SGFzaC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRTdHJpbmdIYXNoLmNwcApp
bmRleCBhZmI3NTdjYmU0MDIyZmVkZmM0NzkzZWFiYzI1NjllODYwZTk1OTU2Li5iOTM0ZTZmYTNh
ZjNmY2ZiMTFkNDk3MDIzNTYwMTYyYmRiNWJmYzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TaGFyZWRTdHJpbmdIYXNoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TaGFyZWRTdHJpbmdIYXNoLmNwcApAQCAtMjUsNyArMjUsNyBAQAogI2luY2x1ZGUgIlNo
YXJlZFN0cmluZ0hhc2guaCIKIAogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KLSNpbmNsdWRlIDx3dGYv
dGV4dC9BdG9taWNTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z1ZpZXcuaD4KIApAQCAtMjgwLDcgKzI4MCw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQg
Y29tcHV0ZVNoYXJlZFN0cmluZ0hhc2hJbmxpbmUoY29uc3QgVVJMJiBiYXNlLCBjb25zdCBDCiAg
ICAgcmV0dXJuOwogfQogCi1TaGFyZWRTdHJpbmdIYXNoIGNvbXB1dGVWaXNpdGVkTGlua0hhc2go
Y29uc3QgVVJMJiBiYXNlLCBjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVVSTCkKK1NoYXJl
ZFN0cmluZ0hhc2ggY29tcHV0ZVZpc2l0ZWRMaW5rSGFzaChjb25zdCBVUkwmIGJhc2UsIGNvbnN0
IEF0b21TdHJpbmcmIGF0dHJpYnV0ZVVSTCkKIHsKICAgICBpZiAoYXR0cmlidXRlVVJMLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TaGFyZWRTdHJpbmdIYXNoLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRT
dHJpbmdIYXNoLmgKaW5kZXggMzYwM2NmMGYyZTdmOTIxNGIzZTI1M2Y1NDc5ZDljYjM0NmIyN2Fm
OC4uMTI2MWQ3N2NiZWY0YjY1YzUyMjMyOGZiYWJlMzk3Y2M2OWVhMTNmYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkU3RyaW5nSGFzaC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFN0cmluZ0hhc2guaApAQCAtNTgsNiArNTgsNiBAQCBXRUJD
T1JFX0VYUE9SVCBTaGFyZWRTdHJpbmdIYXNoIGNvbXB1dGVTaGFyZWRTdHJpbmdIYXNoKGNvbnN0
IFVDaGFyKiB1cmwsIHVuc2lnbgogLy8gYmFzZSBVUkwsIGFuZCByZXR1cm5zIHRoZSBoYXNoIG9m
IHRoZSBzdHJpbmcgdGhhdCB3aWxsIGJlIHVzZWQgZm9yIHZpc2l0ZWQKIC8vIGxpbmsgY29sb3Jp
bmcuIEl0IHdpbGwgcmV0dXJuIHRoZSBzcGVjaWFsIHZhbHVlIG9mIDAgaWYgYXR0cmlidXRlVVJM
IGRvZXMgbm90CiAvLyBsb29rIGxpa2UgYSByZWxhdGl2ZSBVUkwuCi1TaGFyZWRTdHJpbmdIYXNo
IGNvbXB1dGVWaXNpdGVkTGlua0hhc2goY29uc3QgVVJMJiBiYXNlLCBjb25zdCBBdG9taWNTdHJp
bmcmIGF0dHJpYnV0ZVVSTCk7CitTaGFyZWRTdHJpbmdIYXNoIGNvbXB1dGVWaXNpdGVkTGlua0hh
c2goY29uc3QgVVJMJiBiYXNlLCBjb25zdCBBdG9tU3RyaW5nJiBhdHRyaWJ1dGVVUkwpOwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9QbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQuaAppbmRl
eCAxYTJlMTUxMWU5NjgxYzM0MjI5MzQ0NmIzODUzY2Y1YWM0ODc1MzU4Li5kNDFlYzM3ODA4NzU1
MjNhNmY4MDUwMDIzOTQyYzhiZTg1NWU4ODFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9QbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVt
ZW50LmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1l
ZGlhRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFFbGVtZW50LmdldCgpOyB9CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGhhbmRsZUV2ZW50KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmLCBXZWJDb3JlOjpFdmVudCYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlRm9yRXZl
bnROYW1lKGNvbnN0IFdURjo6QXRvbWljU3RyaW5nJik7CisgICAgdm9pZCB1cGRhdGVGb3JFdmVu
dE5hbWUoY29uc3QgV1RGOjpBdG9tU3RyaW5nJik7CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IEV2ZW50TGlzdGVuZXImIHJocykgY29uc3QgZmluYWwgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y29u
c3QgV2ViQ29yZTo6RXZlbnRMaXN0ZW5lcio+KHRoaXMpID09ICZyaHM7IH0KIAogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgYWRkQ2xpZW50KFBsYXliYWNrU2Vzc2lvbk1vZGVsQ2xpZW50Jik7CkBA
IC0xMDMsOCArMTAzLDggQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAgIHZvaWQgcHJvZ3Jl
c3NFdmVudFRpbWVyRmlyZWQoKTsKLSAgICBzdGF0aWMgY29uc3QgVmVjdG9yPFdURjo6QXRvbWlj
U3RyaW5nPiYgb2JzZXJ2ZWRFdmVudE5hbWVzKCk7Ci0gICAgY29uc3QgV1RGOjpBdG9taWNTdHJp
bmcmIGV2ZW50TmFtZUFsbCgpOworICAgIHN0YXRpYyBjb25zdCBWZWN0b3I8V1RGOjpBdG9tU3Ry
aW5nPiYgb2JzZXJ2ZWRFdmVudE5hbWVzKCk7CisgICAgY29uc3QgV1RGOjpBdG9tU3RyaW5nJiBl
dmVudE5hbWVBbGwoKTsKIAogICAgIFJlZlB0cjxIVE1MTWVkaWFFbGVtZW50PiBtX21lZGlhRWxl
bWVudDsKICAgICBib29sIG1faXNMaXN0ZW5pbmcgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1l
bnQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QbGF5YmFja1Nlc3Npb25Nb2Rl
bE1lZGlhRWxlbWVudC5tbQppbmRleCAzMzJmY2IxNWM0NDlhMWEzYjE0NGY3YWNhNzU3ZmQwYjlh
MWIxMzg3Li41MDU0MWNlN2E0MTY4ZTA1YTBhZTA0YWE5YTllN2E0ODVhYTZmNjA1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QbGF5YmFja1Nlc3Npb25Nb2RlbE1l
ZGlhRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QbGF5YmFj
a1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5tbQpAQCAtMTExLDcgKzExMSw3IEBAIHZvaWQgUGxh
eWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmhhbmRsZUV2ZW50KFdlYkNvcmU6OlNjcmlw
dEV4ZWN1dGlvbkNvbnRlCiAgICAgdXBkYXRlRm9yRXZlbnROYW1lKGV2ZW50LnR5cGUoKSk7CiB9
CiAKLXZvaWQgUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OnVwZGF0ZUZvckV2ZW50
TmFtZShjb25zdCBXVEY6OkF0b21pY1N0cmluZyYgZXZlbnROYW1lKQordm9pZCBQbGF5YmFja1Nl
c3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6dXBkYXRlRm9yRXZlbnROYW1lKGNvbnN0IFdURjo6QXRv
bVN0cmluZyYgZXZlbnROYW1lKQogewogICAgIGlmIChtX2NsaWVudHMuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm47CkBAIC0zODUsMTAgKzM4NSwxMCBAQCBkb3VibGUgUGxheWJhY2tTZXNzaW9u
TW9kZWxNZWRpYUVsZW1lbnQ6OnBsYXliYWNrU3RhcnRlZFRpbWUoKSBjb25zdAogICAgIHJldHVy
biBtX21lZGlhRWxlbWVudC0+cGxheWJhY2tTdGFydGVkVGltZSgpOwogfQogCi1jb25zdCBWZWN0
b3I8QXRvbWljU3RyaW5nPiYgUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6Om9ic2Vy
dmVkRXZlbnROYW1lcygpCitjb25zdCBWZWN0b3I8QXRvbVN0cmluZz4mIFBsYXliYWNrU2Vzc2lv
bk1vZGVsTWVkaWFFbGVtZW50OjpvYnNlcnZlZEV2ZW50TmFtZXMoKQogewogICAgIC8vIEZJWE1F
KDE1NzQ1Mik6IFJlbW92ZSB0aGUgcmlnaHQtaGFuZCBjb25zdHJ1Y3RvciBub3RhdGlvbiBvbmNl
IE5ldmVyRGVzdHJveWVkIHN1cHBvcnRzIGluaXRpYWxpemVyX2xpc3RzLgotICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxWZWN0b3I8QXRvbWljU3RyaW5nPj4gbmFtZXMgPSBWZWN0b3I8QXRvbWlj
U3RyaW5nPih7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3RvcjxBdG9tU3RyaW5nPj4g
bmFtZXMgPSBWZWN0b3I8QXRvbVN0cmluZz4oewogICAgICAgICBldmVudE5hbWVzKCkuZHVyYXRp
b25jaGFuZ2VFdmVudCwKICAgICAgICAgZXZlbnROYW1lcygpLnBhdXNlRXZlbnQsCiAgICAgICAg
IGV2ZW50TmFtZXMoKS5wbGF5RXZlbnQsCkBAIC00MDEsOSArNDAxLDkgQEAgY29uc3QgVmVjdG9y
PEF0b21pY1N0cmluZz4mIFBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjpvYnNlcnZl
ZEV2ZW50TmFtZXMKICAgICByZXR1cm4gbmFtZXMuZ2V0KCk7CiB9CiAKLWNvbnN0IEF0b21pY1N0
cmluZyYgIFBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjpldmVudE5hbWVBbGwoKQor
Y29uc3QgQXRvbVN0cmluZyYgIFBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjpldmVu
dE5hbWVBbGwoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGV2
ZW50TmFtZUFsbCgiYWxsRXZlbnRzIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21TdHJpbmc+IGV2ZW50TmFtZUFsbCgi
YWxsRXZlbnRzIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVy
biBldmVudE5hbWVBbGw7CiB9CiAKQEAgLTUwNSw3ICs1MDUsNyBAQCB1aW50NjRfdCBQbGF5YmFj
a1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6bGVnaWJsZU1lZGlhU2VsZWN0ZWRJbmRleCgpIGNv
bnN0CiAgICAgaWYgKCFob3N0KQogICAgICAgICByZXR1cm4gc2VsZWN0ZWRJbmRleDsKIAotICAg
IEF0b21pY1N0cmluZyBkaXNwbGF5TW9kZSA9IGhvc3QtPmNhcHRpb25EaXNwbGF5TW9kZSgpOwor
ICAgIEF0b21TdHJpbmcgZGlzcGxheU1vZGUgPSBob3N0LT5jYXB0aW9uRGlzcGxheU1vZGUoKTsK
ICAgICBUZXh0VHJhY2sqIG9mZkl0ZW0gPSBob3N0LT5jYXB0aW9uTWVudU9mZkl0ZW0oKTsKICAg
ICBUZXh0VHJhY2sqIGF1dG9tYXRpY0l0ZW0gPSBob3N0LT5jYXB0aW9uTWVudUF1dG9tYXRpY0l0
ZW0oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9G
dWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1ZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50LmgKaW5kZXggYmZhMjlmNjJlOTEy
NzViNjViNjY3NGNkNjdjM2Y0YzBjZDBkZGY2OS4uMGU5YTQ1NGI0ZDg4YWNlMzU1NDIyNjViZmIw
MGY0MTY3MjI3MTI0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oCkBAIC02MCw3
ICs2MCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdhaXRGb3JQcmVwYXJl
ZEZvcklubGluZVRoZW4oV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIg
PSBbXSB7IH0pOwogICAgIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFuZGxlRXZlbnQoV2Vi
Q29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFdlYkNvcmU6OkV2ZW50Jikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCB1cGRhdGVGb3JFdmVudE5hbWUoY29uc3QgV1RGOjpBdG9taWNTdHJpbmcmKTsK
KyAgICB2b2lkIHVwZGF0ZUZvckV2ZW50TmFtZShjb25zdCBXVEY6OkF0b21TdHJpbmcmKTsKICAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgcmhzKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBXZWJDb3JlOjpFdmVudExpc3RlbmVyKj4odGhp
cykgPT0gJnJoczsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRDbGllbnQoVmlkZW9G
dWxsc2NyZWVuTW9kZWxDbGllbnQmKSBvdmVycmlkZTsKQEAgLTg3LDggKzg3LDggQEAgcHJpdmF0
ZToKICAgICB2b2lkIHdpbGxFeGl0UGljdHVyZUluUGljdHVyZSgpIG92ZXJyaWRlOwogICAgIHZv
aWQgZGlkRXhpdFBpY3R1cmVJblBpY3R1cmUoKSBvdmVycmlkZTsKIAotICAgIHN0YXRpYyBjb25z
dCBWZWN0b3I8V1RGOjpBdG9taWNTdHJpbmc+JiBvYnNlcnZlZEV2ZW50TmFtZXMoKTsKLSAgICBj
b25zdCBXVEY6OkF0b21pY1N0cmluZyYgZXZlbnROYW1lQWxsKCk7CisgICAgc3RhdGljIGNvbnN0
IFZlY3RvcjxXVEY6OkF0b21TdHJpbmc+JiBvYnNlcnZlZEV2ZW50TmFtZXMoKTsKKyAgICBjb25z
dCBXVEY6OkF0b21TdHJpbmcmIGV2ZW50TmFtZUFsbCgpOwogCiAgICAgUmVmUHRyPEhUTUxWaWRl
b0VsZW1lbnQ+IG1fdmlkZW9FbGVtZW50OwogICAgIFJldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBt
X3ZpZGVvRnVsbHNjcmVlbkxheWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbQpp
bmRleCA5MzZiZDk1Y2QwM2I4MDdhNWQ4NGI0YTRhOGQ2YjgyZGIwZDJhNzBiLi5hNDg4MDdlYzNi
ZTAzN2E4MDFkYThiYTliMDUyZTRiNDcwNGY4NzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVv
RWxlbWVudC5tbQpAQCAtOTAsNyArOTAsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlk
ZW9FbGVtZW50OjpoYW5kbGVFdmVudChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZQogICAg
IHVwZGF0ZUZvckV2ZW50TmFtZShldmVudC50eXBlKCkpOwogfQogCi12b2lkIFZpZGVvRnVsbHNj
cmVlbk1vZGVsVmlkZW9FbGVtZW50Ojp1cGRhdGVGb3JFdmVudE5hbWUoY29uc3QgV1RGOjpBdG9t
aWNTdHJpbmcmIGV2ZW50TmFtZSkKK3ZvaWQgVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1l
bnQ6OnVwZGF0ZUZvckV2ZW50TmFtZShjb25zdCBXVEY6OkF0b21TdHJpbmcmIGV2ZW50TmFtZSkK
IHsKICAgICBpZiAobV9jbGllbnRzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTY5
LDE1ICsxNjksMTUgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6c2V0
VmlkZW9MYXllckdyYXZpdHkoTWVkaWFQbGF5ZXJFbnVtczo6VmkKICAgICBtX3ZpZGVvRWxlbWVu
dC0+c2V0VmlkZW9GdWxsc2NyZWVuR3Jhdml0eShncmF2aXR5KTsKIH0KIAotY29uc3QgVmVjdG9y
PEF0b21pY1N0cmluZz4mIFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpvYnNlcnZl
ZEV2ZW50TmFtZXMoKQorY29uc3QgVmVjdG9yPEF0b21TdHJpbmc+JiBWaWRlb0Z1bGxzY3JlZW5N
b2RlbFZpZGVvRWxlbWVudDo6b2JzZXJ2ZWRFdmVudE5hbWVzKCkKIHsKLSAgICBzdGF0aWMgY29u
c3QgYXV0byBuYW1lcyA9IG1ha2VOZXZlckRlc3Ryb3llZChWZWN0b3I8QXRvbWljU3RyaW5nPiB7
IGV2ZW50TmFtZXMoKS5yZXNpemVFdmVudCB9KTsKKyAgICBzdGF0aWMgY29uc3QgYXV0byBuYW1l
cyA9IG1ha2VOZXZlckRlc3Ryb3llZChWZWN0b3I8QXRvbVN0cmluZz4geyBldmVudE5hbWVzKCku
cmVzaXplRXZlbnQgfSk7CiAgICAgcmV0dXJuIG5hbWVzOwogfQogCi1jb25zdCBBdG9taWNTdHJp
bmcmIFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpldmVudE5hbWVBbGwoKQorY29u
c3QgQXRvbVN0cmluZyYgVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OmV2ZW50TmFt
ZUFsbCgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gc0V2ZW50
TmFtZUFsbCA9ICJhbGxFdmVudHMiOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9tU3Ry
aW5nPiBzRXZlbnROYW1lQWxsID0gImFsbEV2ZW50cyI7CiAgICAgcmV0dXJuIHNFdmVudE5hbWVB
bGw7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmgKaW5kZXggYTcxYWI4ZWE2YTM2ODU2ZjE2OGMz
NmJmNzU2NzY1NjQ5ZDZjMTg3NS4uODcyNWEzMWQ4YmIzZTIyYmUyMWRmMDdlMzIwYjM2ZTc1MDM4
NmUxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Q0RNSW5zdGFuY2VTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmgKQEAgLTY3LDcgKzY3LDcgQEAgcHVibGljOgog
ICAgIH07CiAKICAgICB1c2luZyBMaWNlbnNlQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFJlZjxTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQs
IGJvb2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgU3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCk+Owot
ICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbWlj
U3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vu
c2VDYWxsYmFjayYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vu
c2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+
JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSA9IDA7CiAKICAgICB1c2luZyBLZXlTdGF0
dXNWZWN0b3IgPSBDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQ6OktleVN0YXR1c1ZlY3RvcjsKICAg
ICB1c2luZyBNZXNzYWdlID0gc3RkOjpwYWlyPE1lc3NhZ2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVy
Pj47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9D
RE1Qcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Q
cml2YXRlLmgKaW5kZXggZTA1OGIwNzcxMmJmZTg0YzQ2NDhlOGZhY2EzN2UxZjgxZGYyNTI1Yy4u
MjVmNzgxNmEyZmUxZGE2ZjkwYzJmZWY3Nzc1NTE0MDZhYTBmNGEwMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaApAQCAtNDEs
NyArNDEsNyBAQCBjbGFzcyBDRE1Qcml2YXRlIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DRE1Q
cml2YXRlKCkgPSBkZWZhdWx0OwogCi0gICAgdmlydHVhbCBib29sIHN1cHBvcnRzSW5pdERhdGFU
eXBlKGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc3Vw
cG9ydHNJbml0RGF0YVR5cGUoY29uc3QgQXRvbVN0cmluZyYpIGNvbnN0ID0gMDsKICAgICB2aXJ0
dWFsIGJvb2wgc3VwcG9ydHNDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3Vy
YXRpb24mKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQ29uZmlndXJhdGlv
bldpdGhSZXN0cmljdGlvbnMoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0
IENETVJlc3RyaWN0aW9ucyYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNT
ZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKENETVNlc3Npb25UeXBlJiwgY29uc3QgQ0RNS2V5
U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0ID0gMDsKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBsb2FkQW5kSW5pdGlhbGl6ZSgpID0gMDsKICAgICB2aXJ0dWFs
IGJvb2wgc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSBjb25zdCA9IDA7CiAgICAgdmlydHVh
bCBib29sIHN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBib29sIHN1
cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgU2hhcmVkQnVmZmVyJikg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21T
dHJpbmcmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNv
bnN0ID0gMDsKICAgICB2aXJ0dWFsIE9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVTZXNzaW9uSWQo
Y29uc3QgU3RyaW5nJikgY29uc3QgPSAwOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNw
cAppbmRleCA2OTc2OTlhM2E3ZTRkNzVkNDMyMTEzNzExMmM1ZDhmODllZmZkZTg5Li41MDNmOTdi
OTIwMThkYTg3YzI0ODg5MWIyMjY3OWFiYjcwMDViMzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xl
YXJLZXkuY3BwCkBAIC0zMTUsNyArMzE1LDcgQEAgYm9vbCBDRE1GYWN0b3J5Q2xlYXJLZXk6OnN1
cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQogQ0RNUHJpdmF0ZUNsZWFy
S2V5OjpDRE1Qcml2YXRlQ2xlYXJLZXkoKSA9IGRlZmF1bHQ7CiBDRE1Qcml2YXRlQ2xlYXJLZXk6
On5DRE1Qcml2YXRlQ2xlYXJLZXkoKSA9IGRlZmF1bHQ7CiAKLWJvb2wgQ0RNUHJpdmF0ZUNsZWFy
S2V5OjpzdXBwb3J0c0luaXREYXRhVHlwZShjb25zdCBBdG9taWNTdHJpbmcmIGluaXREYXRhVHlw
ZSkgY29uc3QKK2Jvb2wgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c0luaXREYXRhVHlwZShj
b25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUpIGNvbnN0CiB7CiAgICAgLy8gYGtleWlkc2Ag
YW5kICdjZW5jJyBhcmUgdGhlIG9ubHkgc3VwcG9ydGVkIGluaXQgZGF0YSB0eXBlLgogICAgIHJl
dHVybiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoaW5pdERhdGFUeXBlLCAia2V5aWRz
IikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoaW5pdERhdGFUeXBlLCAiY2VuYyIp
IHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGluaXREYXRhVHlwZSwgIndlYm0iKSk7
CkBAIC00MTksNyArNDE5LDcgQEAgYm9vbCBDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRzU2Vz
c2lvbnMoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIENETVByaXZhdGVDbGVh
cktleTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9taWNTdHJpbmcmIGluaXREYXRhVHlwZSwg
Y29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkgY29uc3QKK2Jvb2wgQ0RNUHJpdmF0ZUNsZWFy
S2V5OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29u
c3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkgY29uc3QKIHsKICAgICAvLyBWYWxpZGF0ZSB0aGUg
aW5pdERhdGEgYnVmZmVyIGFzIGFuIEpTT04gb2JqZWN0IGluIGtleWlkcyBjYXNlLgogICAgIGlm
IChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShpbml0RGF0YVR5cGUsICJrZXlpZHMiKSAm
JiBwYXJzZUpTT05PYmplY3QoaW5pdERhdGEpKQpAQCAtNTE5LDcgKzUxOSw3IEBAIGNvbnN0IFZl
Y3RvcjxDRE1JbnN0YW5jZUNsZWFyS2V5OjpLZXk+IENETUluc3RhbmNlQ2xlYXJLZXk6OmtleXMo
KSBjb25zdAogICAgIHJldHVybiBhbGxLZXlzOwogfQogCi12b2lkIENETUluc3RhbmNlU2Vzc2lv
bkNsZWFyS2V5OjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbWljU3RyaW5n
JiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxs
YmFjayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6cmVxdWVz
dExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7
CiAgICAgc3RhdGljIHVpbnQzMl90IHNfc2Vzc2lvbklkVmFsdWUgPSAwOwogICAgICsrc19zZXNz
aW9uSWRWYWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5oCmluZGV4IGUzYWEwMzI4YzFhMzQx
MTEwMDVkNjc3Yzc0NzM4NzIzNmY0Mzk1NzYuLmQ0NzMwNGM5NWIyNmVmMjA0ZjVkYTRhZGNiYjhh
MDg2NGRlMThiYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaApAQCAtNTgsNyArNTgsNyBA
QCBwdWJsaWM6CiAgICAgQ0RNUHJpdmF0ZUNsZWFyS2V5KCk7CiAgICAgdmlydHVhbCB+Q0RNUHJp
dmF0ZUNsZWFyS2V5KCk7CiAKLSAgICBib29sIHN1cHBvcnRzSW5pdERhdGFUeXBlKGNvbnN0IEF0
b21pY1N0cmluZyYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YVR5cGUo
Y29uc3QgQXRvbVN0cmluZyYpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNDb25maWd1
cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBmaW5hbDsKICAg
ICBib29sIHN1cHBvcnRzQ29uZmlndXJhdGlvbldpdGhSZXN0cmljdGlvbnMoY29uc3QgQ0RNS2V5
U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IENETVJlc3RyaWN0aW9ucyYpIGNvbnN0IGZpbmFs
OwogICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKENETVNlc3Np
b25UeXBlJiwgY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0IGZpbmFsOwpA
QCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2FkQW5kSW5pdGlhbGl6ZSgpIGZp
bmFsOwogICAgIGJvb2wgc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSBjb25zdCBmaW5hbDsK
ICAgICBib29sIHN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdCBmaW5hbDsKLSAgICBib29sIHN1cHBv
cnRzSW5pdERhdGEoY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgY29u
c3QgZmluYWw7CisgICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBj
b25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwogICAg
IE9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJikgY29uc3Qg
ZmluYWw7CiB9OwpAQCAtMTA0LDcgKzEwNCw3IEBAIHByaXZhdGU6CiAKIGNsYXNzIENETUluc3Rh
bmNlU2Vzc2lvbkNsZWFyS2V5IGZpbmFsIDogcHVibGljIENETUluc3RhbmNlU2Vzc2lvbiwgcHVi
bGljIENhbk1ha2VXZWFrUHRyPENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5PiB7CiBwdWJsaWM6
Ci0gICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbWljU3RyaW5n
JiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxs
YmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25z
dCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEs
IExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3Qg
U3RyaW5nJiwgTGljZW5zZVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYsIExpY2Vuc2VVcGRhdGVD
YWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25z
dCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwog
ICAgIHZvaWQgY2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYsIENsb3NlU2Vzc2lvbkNhbGxiYWNr
JiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcAppbmRl
eCBhNzQzZTljYzAzMTc0NGM4NzM5MmUyNjU3NDUwN2VkMDVmMzExODgxLi4xODRiNDRiMDdhNDEy
MjE2YjllYzU5ODQyMmYwNzg3ZjBlNmM3YWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250LmNwcApAQCAtMzksNyArMzksNyBAQAogI2luY2x1ZGUgIk9wZW5UeXBlTWF0
aERhdGEuaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2guaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nSGFzaC5oPgogCiAjaWYgRU5BQkxFKE9QRU5UWVBF
X1ZFUlRJQ0FMKQogI2luY2x1ZGUgIk9wZW5UeXBlVmVydGljYWxEYXRhLmgiCkBAIC01MTcsNyAr
NTE3LDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICBDaGFyYWN0ZXJGYWxsYmFja01h
cEtleShjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSwgVUNoYXIzMiBjaGFyYWN0ZXIsIElzRm9y
UGxhdGZvcm1Gb250IGlzRm9yUGxhdGZvcm1Gb250KQorICAgIENoYXJhY3RlckZhbGxiYWNrTWFw
S2V5KGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsZSwgVUNoYXIzMiBjaGFyYWN0ZXIsIElzRm9yUGxh
dGZvcm1Gb250IGlzRm9yUGxhdGZvcm1Gb250KQogICAgICAgICA6IGxvY2FsZShsb2NhbGUpCiAg
ICAgICAgICwgY2hhcmFjdGVyKGNoYXJhY3RlcikKICAgICAgICAgLCBpc0ZvclBsYXRmb3JtRm9u
dChpc0ZvclBsYXRmb3JtRm9udCA9PSBJc0ZvclBsYXRmb3JtRm9udDo6WWVzKQpAQCAtNTQxLDcg
KzU0MSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZnJpZW5kIHN0cnVjdCBDaGFyYWN0ZXJG
YWxsYmFja01hcEtleUhhc2g7CiAKLSAgICBBdG9taWNTdHJpbmcgbG9jYWxlOworICAgIEF0b21T
dHJpbmcgbG9jYWxlOwogICAgIFVDaGFyMzIgY2hhcmFjdGVyIHsgMCB9OwogICAgIGJvb2wgaXNG
b3JQbGF0Zm9ybUZvbnQgeyBmYWxzZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCmluZGV4IGJmMzAzNmZlMGNlNzYxMzVhYWE3YTc3MmY3
MjkxZGNiMjAyNzA3NDMuLmQyZDBiNzlhNWFjZjBjMzYyZjhkNTljYzNjNjA1MzY0YjJjNTdmOTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcApA
QCAtMzksNyArMzksNyBAQAogI2luY2x1ZGUgPHd0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaD4K
ICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0
cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nSGFzaC5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L0F0b21TdHJpbmdIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFz
aC5oPgogCiAjaWYgRU5BQkxFKE9QRU5UWVBFX1ZFUlRJQ0FMKQpAQCAtNzcsNyArNzcsNyBAQCBz
dHJ1Y3QgRm9udFBsYXRmb3JtRGF0YUNhY2hlS2V5IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBGb250UGxhdGZvcm1EYXRhQ2FjaGVLZXkoKSB7IH0KLSAgICBG
b250UGxhdGZvcm1EYXRhQ2FjaGVLZXkoY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHksIGNvbnN0
IEZvbnREZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIGNvbnN0IEZvbnRGZWF0dXJlU2V0dGluZ3Mq
IGZvbnRGYWNlRmVhdHVyZXMsIGNvbnN0IEZvbnRWYXJpYW50U2V0dGluZ3MqIGZvbnRGYWNlVmFy
aWFudFNldHRpbmdzLCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzIGZvbnRGYWNl
Q2FwYWJpbGl0aWVzKQorICAgIEZvbnRQbGF0Zm9ybURhdGFDYWNoZUtleShjb25zdCBBdG9tU3Ry
aW5nJiBmYW1pbHksIGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIGNvbnN0IEZv
bnRGZWF0dXJlU2V0dGluZ3MqIGZvbnRGYWNlRmVhdHVyZXMsIGNvbnN0IEZvbnRWYXJpYW50U2V0
dGluZ3MqIGZvbnRGYWNlVmFyaWFudFNldHRpbmdzLCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2Fw
YWJpbGl0aWVzIGZvbnRGYWNlQ2FwYWJpbGl0aWVzKQogICAgICAgICA6IG1fZm9udERlc2NyaXB0
aW9uS2V5KGRlc2NyaXB0aW9uKQogICAgICAgICAsIG1fZmFtaWx5KGZhbWlseSkKICAgICAgICAg
LCBtX2ZvbnRGYWNlRmVhdHVyZXMoZm9udEZhY2VGZWF0dXJlcyA/ICpmb250RmFjZUZlYXR1cmVz
IDogRm9udEZlYXR1cmVTZXR0aW5ncygpKQpAQCAtMTA2LDcgKzEwNiw3IEBAIHB1YmxpYzoKICAg
ICB9CiAKICAgICBGb250RGVzY3JpcHRpb25LZXkgbV9mb250RGVzY3JpcHRpb25LZXk7Ci0gICAg
QXRvbWljU3RyaW5nIG1fZmFtaWx5OworICAgIEF0b21TdHJpbmcgbV9mYW1pbHk7CiAgICAgRm9u
dEZlYXR1cmVTZXR0aW5ncyBtX2ZvbnRGYWNlRmVhdHVyZXM7CiAgICAgRm9udFZhcmlhbnRTZXR0
aW5ncyBtX2ZvbnRGYWNlVmFyaWFudFNldHRpbmdzOwogICAgIEZvbnRTZWxlY3Rpb25TcGVjaWZp
ZWRDYXBhYmlsaXRpZXMgbV9mb250RmFjZUNhcGFiaWxpdGllczsKQEAgLTE1NSwxNiArMTU1LDE2
IEBAIHN0YXRpYyBGb250UGxhdGZvcm1EYXRhQ2FjaGUmIGZvbnRQbGF0Zm9ybURhdGFDYWNoZSgp
CiAgICAgcmV0dXJuIGNhY2hlOwogfQogCi1jb25zdCBBdG9taWNTdHJpbmcmIEZvbnRDYWNoZTo6
YWx0ZXJuYXRlRmFtaWx5TmFtZShjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseU5hbWUpCitjb25z
dCBBdG9tU3RyaW5nJiBGb250Q2FjaGU6OmFsdGVybmF0ZUZhbWlseU5hbWUoY29uc3QgQXRvbVN0
cmluZyYgZmFtaWx5TmFtZSkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3Ry
aW5nPiBhcmlhbCgiQXJpYWwiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsK
LSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBjb3VyaWVyKCJDb3VyaWVy
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEF0b21pY1N0cmluZz4gY291cmllck5ldygiQ291cmllciBOZXciLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
QXRvbWljU3RyaW5nPiBoZWx2ZXRpY2EoIkhlbHZldGljYSIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+
IHRpbWVzKCJUaW1lcyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHRpbWVzTmV3Um9tYW4oIlRpbWVz
IE5ldyBSb21hbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotCi0gICAg
Y29uc3QgQXRvbWljU3RyaW5nJiBwbGF0Zm9ybVNwZWNpZmljQWx0ZXJuYXRlID0gcGxhdGZvcm1B
bHRlcm5hdGVGYW1pbHlOYW1lKGZhbWlseU5hbWUpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxBdG9tU3RyaW5nPiBhcmlhbCgiQXJpYWwiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21TdHJpbmc+IGNvdXJpZXIoIkNv
dXJpZXIiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPEF0b21TdHJpbmc+IGNvdXJpZXJOZXcoIkNvdXJpZXIgTmV3IiwgQXRvbVN0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxB
dG9tU3RyaW5nPiBoZWx2ZXRpY2EoIkhlbHZldGljYSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbVN0cmluZz4gdGltZXMo
IlRpbWVzIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxBdG9tU3RyaW5nPiB0aW1lc05ld1JvbWFuKCJUaW1lcyBOZXcgUm9tYW4i
LCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisKKyAgICBjb25zdCBBdG9tU3Ry
aW5nJiBwbGF0Zm9ybVNwZWNpZmljQWx0ZXJuYXRlID0gcGxhdGZvcm1BbHRlcm5hdGVGYW1pbHlO
YW1lKGZhbWlseU5hbWUpOwogICAgIGlmICghcGxhdGZvcm1TcGVjaWZpY0FsdGVybmF0ZS5pc051
bGwoKSkKICAgICAgICAgcmV0dXJuIHBsYXRmb3JtU3BlY2lmaWNBbHRlcm5hdGU7CiAKQEAgLTIw
Myw3ICsyMDMsNyBAQCBjb25zdCBBdG9taWNTdHJpbmcmIEZvbnRDYWNoZTo6YWx0ZXJuYXRlRmFt
aWx5TmFtZShjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseU5hbQogICAgIHJldHVybiBudWxsQXRv
bSgpOwogfQogCi1Gb250UGxhdGZvcm1EYXRhKiBGb250Q2FjaGU6OmdldENhY2hlZEZvbnRQbGF0
Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24sIGNvbnN0IEF0
b21pY1N0cmluZyYgcGFzc2VkRmFtaWx5TmFtZSwKK0ZvbnRQbGF0Zm9ybURhdGEqIEZvbnRDYWNo
ZTo6Z2V0Q2FjaGVkRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnRE
ZXNjcmlwdGlvbiwgY29uc3QgQXRvbVN0cmluZyYgcGFzc2VkRmFtaWx5TmFtZSwKICAgICBjb25z
dCBGb250RmVhdHVyZVNldHRpbmdzKiBmb250RmFjZUZlYXR1cmVzLCBjb25zdCBGb250VmFyaWFu
dFNldHRpbmdzKiBmb250RmFjZVZhcmlhbnRTZXR0aW5ncywgRm9udFNlbGVjdGlvblNwZWNpZmll
ZENhcGFiaWxpdGllcyBmb250RmFjZUNhcGFiaWxpdGllcywgYm9vbCBjaGVja2luZ0FsdGVybmF0
ZU5hbWUpCiB7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTIxNCwxMCArMjE0LDEwIEBA
IEZvbnRQbGF0Zm9ybURhdGEqIEZvbnRDYWNoZTo6Z2V0Q2FjaGVkRm9udFBsYXRmb3JtRGF0YShj
b25zdCBGb250RGVzY3JpcHRpb24mIGZvCiAgICAgLy8gTGVhZGluZyAiQCIgaW4gdGhlIGZvbnQg
bmFtZSBlbmFibGVzIFdpbmRvd3MgdmVydGljYWwgZmxvdyBmbGFnIGZvciB0aGUgZm9udC4KICAg
ICAvLyBCZWNhdXNlIHdlIGRvIHZlcnRpY2FsIGZsb3cgYnkgb3Vyc2VsdmVzLCB3ZSBkb24ndCB3
YW50IHRvIHVzZSB0aGUgV2luZG93cyBmZWF0dXJlLgogICAgIC8vIElFIGRpc3JlZ2FyZHMgIkAi
IHJlZ2FyZGxlc3Mgb2YgdGhlIG9yaWVudGF0b2luLCBzbyB3ZSBmb2xsb3cgdGhlIGJlaGF2aW9y
LgotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5TmFtZSA9IChwYXNzZWRGYW1pbHlOYW1l
LmlzRW1wdHkoKSB8fCBwYXNzZWRGYW1pbHlOYW1lWzBdICE9ICdAJykgPwotICAgICAgICBwYXNz
ZWRGYW1pbHlOYW1lIDogQXRvbWljU3RyaW5nKHBhc3NlZEZhbWlseU5hbWUuaW1wbCgpLT5zdWJz
dHJpbmcoMSkpOworICAgIGNvbnN0IEF0b21TdHJpbmcmIGZhbWlseU5hbWUgPSAocGFzc2VkRmFt
aWx5TmFtZS5pc0VtcHR5KCkgfHwgcGFzc2VkRmFtaWx5TmFtZVswXSAhPSAnQCcpID8KKyAgICAg
ICAgcGFzc2VkRmFtaWx5TmFtZSA6IEF0b21TdHJpbmcocGFzc2VkRmFtaWx5TmFtZS5pbXBsKCkt
PnN1YnN0cmluZygxKSk7CiAjZWxzZQotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5TmFt
ZSA9IHBhc3NlZEZhbWlseU5hbWU7CisgICAgY29uc3QgQXRvbVN0cmluZyYgZmFtaWx5TmFtZSA9
IHBhc3NlZEZhbWlseU5hbWU7CiAjZW5kaWYKIAogICAgIHN0YXRpYyBib29sIGluaXRpYWxpemVk
OwpAQCAtMjM2LDcgKzIzNiw3IEBAIEZvbnRQbGF0Zm9ybURhdGEqIEZvbnRDYWNoZTo6Z2V0Q2Fj
aGVkRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvCiAgICAgICAgIGlm
ICghaXQtPnZhbHVlICYmICFjaGVja2luZ0FsdGVybmF0ZU5hbWUpIHsKICAgICAgICAgICAgIC8v
IFdlIHdlcmUgdW5hYmxlIHRvIGZpbmQgYSBmb250LiAgV2UgaGF2ZSBhIHNtYWxsIHNldCBvZiBm
b250cyB0aGF0IHdlIGFsaWFzIHRvIG90aGVyIG5hbWVzLAogICAgICAgICAgICAgLy8gZS5nLiwg
QXJpYWwvSGVsdmV0aWNhLCBDb3VyaWVyL0NvdXJpZXIgTmV3LCBldGMuICBUcnkgbG9va2luZyB1
cCB0aGUgZm9udCB1bmRlciB0aGUgYWxpYXNlZCBuYW1lLgotICAgICAgICAgICAgY29uc3QgQXRv
bWljU3RyaW5nJiBhbHRlcm5hdGVOYW1lID0gYWx0ZXJuYXRlRmFtaWx5TmFtZShmYW1pbHlOYW1l
KTsKKyAgICAgICAgICAgIGNvbnN0IEF0b21TdHJpbmcmIGFsdGVybmF0ZU5hbWUgPSBhbHRlcm5h
dGVGYW1pbHlOYW1lKGZhbWlseU5hbWUpOwogICAgICAgICAgICAgaWYgKCFhbHRlcm5hdGVOYW1l
LmlzTnVsbCgpKSB7CiAgICAgICAgICAgICAgICAgRm9udFBsYXRmb3JtRGF0YSogZm9udFBsYXRm
b3JtRGF0YUZvckFsdGVybmF0ZU5hbWUgPSBnZXRDYWNoZWRGb250UGxhdGZvcm1EYXRhKGZvbnRE
ZXNjcmlwdGlvbiwgYWx0ZXJuYXRlTmFtZSwgZm9udEZhY2VGZWF0dXJlcywgZm9udEZhY2VWYXJp
YW50U2V0dGluZ3MsIGZvbnRGYWNlQ2FwYWJpbGl0aWVzLCB0cnVlKTsKICAgICAgICAgICAgICAg
ICAvLyBMb29rdXAgdGhlIGtleSBpbiB0aGUgaGFzaCB0YWJsZSBhZ2FpbiBhcyB0aGUgcHJldmlv
dXMgaXRlcmF0b3IgbWF5IGhhdmUKQEAgLTMyMCw3ICszMjAsNyBAQCBjb25zdCB1bnNpZ25lZCBj
VGFyZ2V0SW5hY3RpdmVGb250RGF0YSA9IDIwMDsKIGNvbnN0IHVuc2lnbmVkIGNNYXhVbmRlck1l
bW9yeVByZXNzdXJlSW5hY3RpdmVGb250RGF0YSA9IDUwOwogY29uc3QgdW5zaWduZWQgY1Rhcmdl
dFVuZGVyTWVtb3J5UHJlc3N1cmVJbmFjdGl2ZUZvbnREYXRhID0gMzA7CiAKLVJlZlB0cjxGb250
PiBGb250Q2FjaGU6OmZvbnRGb3JGYW1pbHkoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVz
Y3JpcHRpb24sIGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5LCBjb25zdCBGb250RmVhdHVyZVNl
dHRpbmdzKiBmb250RmFjZUZlYXR1cmVzLCBjb25zdCBGb250VmFyaWFudFNldHRpbmdzKiBmb250
RmFjZVZhcmlhbnRTZXR0aW5ncywgRm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllcyBm
b250RmFjZUNhcGFiaWxpdGllcywgYm9vbCBjaGVja2luZ0FsdGVybmF0ZU5hbWUpCitSZWZQdHI8
Rm9udD4gRm9udENhY2hlOjpmb250Rm9yRmFtaWx5KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9u
dERlc2NyaXB0aW9uLCBjb25zdCBBdG9tU3RyaW5nJiBmYW1pbHksIGNvbnN0IEZvbnRGZWF0dXJl
U2V0dGluZ3MqIGZvbnRGYWNlRmVhdHVyZXMsIGNvbnN0IEZvbnRWYXJpYW50U2V0dGluZ3MqIGZv
bnRGYWNlVmFyaWFudFNldHRpbmdzLCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVz
IGZvbnRGYWNlQ2FwYWJpbGl0aWVzLCBib29sIGNoZWNraW5nQWx0ZXJuYXRlTmFtZSkKIHsKICAg
ICBpZiAoIW1fcHVyZ2VUaW1lci5pc0FjdGl2ZSgpKQogICAgICAgICBtX3B1cmdlVGltZXIuc3Rh
cnRPbmVTaG90KDBfcyk7CkBAIC00OTIsNyArNDkyLDcgQEAgdm9pZCBGb250Q2FjaGU6OnByZXdh
cm0oY29uc3QgUHJld2FybUluZm9ybWF0aW9uJikKIHsKIH0KIAotUmVmUHRyPEZvbnQ+IEZvbnRD
YWNoZTo6c2ltaWxhckZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgY29uc3QgQXRvbWljU3Ry
aW5nJikKK1JlZlB0cjxGb250PiBGb250Q2FjaGU6OnNpbWlsYXJGb250KGNvbnN0IEZvbnREZXNj
cmlwdGlvbiYsIGNvbnN0IEF0b21TdHJpbmcmKQogewogICAgIHJldHVybiBudWxscHRyOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaAppbmRleCA1YWE0
MWRmOTUyNTAyN2IzZGY1Mjk2ODFhZTFlMzU2ZTVlMWU5MzE1Li5mNjViZjNhYzE0YjBhZGY1ODY3
NTVjYTc5OTQ5ZDliZDI4ZGM3NmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250Q2FjaGUuaApAQCAtNDAsNyArNDAsNyBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgot
I2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2guaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9BdG9tU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAj
aWYgUExBVEZPUk0oQ09DT0EpCkBAIC0xNjIsNyArMTYyLDcgQEAgcHJpdmF0ZToKICAgICB1bnNp
Z25lZCBtX3NpemUgeyAwIH07CiAgICAgRm9udFNlbGVjdGlvblJlcXVlc3QgbV9mb250U2VsZWN0
aW9uUmVxdWVzdDsKICAgICBzdGQ6OmFycmF5PHVuc2lnbmVkLCAyPiBtX2ZsYWdzIHt7IDAsIDAg
fX07Ci0gICAgQXRvbWljU3RyaW5nIG1fbG9jYWxlOworICAgIEF0b21TdHJpbmcgbV9sb2NhbGU7
CiAgICAgRm9udEZlYXR1cmVTZXR0aW5ncyBtX2ZlYXR1cmVTZXR0aW5nczsKICNpZiBFTkFCTEUo
VkFSSUFUSU9OX0ZPTlRTKQogICAgIEZvbnRWYXJpYXRpb25TZXR0aW5ncyBtX3ZhcmlhdGlvblNl
dHRpbmdzOwpAQCAtMjA4LDEyICsyMDgsMTIgQEAgcHVibGljOgogCiAgICAgLy8gVGhpcyBmdW5j
dGlvbiBleGlzdHMgc28gQ1NTRm9udFNlbGVjdG9yIGNhbiBoYXZlIGEgdW5pZmllZCBub3Rpb24g
b2YgcHJlaW5zdGFsbGVkIGZvbnRzIGFuZCBAZm9udC1mYWNlLgogICAgIC8vIEl0IGNvbWVzIGlu
dG8gcGxheSB3aGVuIHlvdSBjcmVhdGUgYW4gQGZvbnQtZmFjZSB3aGljaCBzaGFyZXMgYSBmYW1p
bHkgbmFtZSBhcyBhIHByZWluc3RhbGxlZCBmb250LgotICAgIFZlY3RvcjxGb250U2VsZWN0aW9u
Q2FwYWJpbGl0aWVzPiBnZXRGb250U2VsZWN0aW9uQ2FwYWJpbGl0aWVzSW5GYW1pbHkoY29uc3Qg
QXRvbWljU3RyaW5nJiwgQWxsb3dVc2VySW5zdGFsbGVkRm9udHMpOworICAgIFZlY3RvcjxGb250
U2VsZWN0aW9uQ2FwYWJpbGl0aWVzPiBnZXRGb250U2VsZWN0aW9uQ2FwYWJpbGl0aWVzSW5GYW1p
bHkoY29uc3QgQXRvbVN0cmluZyYsIEFsbG93VXNlckluc3RhbGxlZEZvbnRzKTsKIAotICAgIFdF
QkNPUkVfRVhQT1JUIFJlZlB0cjxGb250PiBmb250Rm9yRmFtaWx5KGNvbnN0IEZvbnREZXNjcmlw
dGlvbiYsIGNvbnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IEZvbnRGZWF0dXJlU2V0dGluZ3MqIGZv
bnRGYWNlRmVhdHVyZXMgPSBudWxscHRyLCBjb25zdCBGb250VmFyaWFudFNldHRpbmdzKiBmb250
RmFjZVZhcmlhbnRTZXR0aW5ncyA9IG51bGxwdHIsIEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBh
YmlsaXRpZXMgZm9udEZhY2VDYXBhYmlsaXRpZXMgPSB7IH0sIGJvb2wgY2hlY2tpbmdBbHRlcm5h
dGVOYW1lID0gZmFsc2UpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxGb250PiBmb250Rm9y
RmFtaWx5KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBG
b250RmVhdHVyZVNldHRpbmdzKiBmb250RmFjZUZlYXR1cmVzID0gbnVsbHB0ciwgY29uc3QgRm9u
dFZhcmlhbnRTZXR0aW5ncyogZm9udEZhY2VWYXJpYW50U2V0dGluZ3MgPSBudWxscHRyLCBGb250
U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzIGZvbnRGYWNlQ2FwYWJpbGl0aWVzID0geyB9
LCBib29sIGNoZWNraW5nQWx0ZXJuYXRlTmFtZSA9IGZhbHNlKTsKICAgICBXRUJDT1JFX0VYUE9S
VCBSZWY8Rm9udD4gbGFzdFJlc29ydEZhbGxiYWNrRm9udChjb25zdCBGb250RGVzY3JpcHRpb24m
KTsKICAgICBXRUJDT1JFX0VYUE9SVCBSZWY8Rm9udD4gZm9udEZvclBsYXRmb3JtRGF0YShjb25z
dCBGb250UGxhdGZvcm1EYXRhJik7Ci0gICAgUmVmUHRyPEZvbnQ+IHNpbWlsYXJGb250KGNvbnN0
IEZvbnREZXNjcmlwdGlvbiYsIGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5KTsKKyAgICBSZWZQ
dHI8Rm9udD4gc2ltaWxhckZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgY29uc3QgQXRvbVN0
cmluZyYgZmFtaWx5KTsKIAogICAgIHZvaWQgYWRkQ2xpZW50KEZvbnRTZWxlY3RvciYpOwogICAg
IHZvaWQgcmVtb3ZlQ2xpZW50KEZvbnRTZWxlY3RvciYpOwpAQCAtMjI3LDE0ICsyMjcsMTQgQEAg
cHVibGljOgogICAgIHZvaWQgcGxhdGZvcm1QdXJnZUluYWN0aXZlRm9udERhdGEoKTsKIAogI2lm
IFBMQVRGT1JNKFdJTikKLSAgICBSZWZQdHI8Rm9udD4gZm9udEZyb21EZXNjcmlwdGlvbkFuZExv
Z0ZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgY29uc3QgTE9HRk9OVCYsIEF0b21pY1N0cmlu
ZyYgb3V0Rm9udEZhbWlseU5hbWUpOworICAgIFJlZlB0cjxGb250PiBmb250RnJvbURlc2NyaXB0
aW9uQW5kTG9nRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mLCBjb25zdCBMT0dGT05UJiwgQXRv
bVN0cmluZyYgb3V0Rm9udEZhbWlseU5hbWUpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoT1BFTlRZ
UEVfVkVSVElDQUwpCiAgICAgUmVmUHRyPE9wZW5UeXBlVmVydGljYWxEYXRhPiB2ZXJ0aWNhbERh
dGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYpOwogI2VuZGlmCiAKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8Rm9udFBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udFBsYXRmb3JtRGF0YUZvclRlc3RpbmcoY29u
c3QgRm9udERlc2NyaXB0aW9uJiwgY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHkpOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxGb250UGxhdGZvcm1EYXRhPiBjcmVhdGVGb250UGxhdGZvcm1EYXRhRm9y
VGVzdGluZyhjb25zdCBGb250RGVzY3JpcHRpb24mLCBjb25zdCBBdG9tU3RyaW5nJiBmYW1pbHkp
OwogICAgIAogICAgIGJvb2wgc2hvdWxkTW9ja0JvbGRTeXN0ZW1Gb250Rm9yQWNjZXNzaWJpbGl0
eSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkTW9ja0JvbGRTeXN0ZW1Gb250Rm9yQWNjZXNzaWJp
bGl0eTsgfQogICAgIHZvaWQgc2V0U2hvdWxkTW9ja0JvbGRTeXN0ZW1Gb250Rm9yQWNjZXNzaWJp
bGl0eShib29sIHNob3VsZE1vY2tCb2xkU3lzdGVtRm9udEZvckFjY2Vzc2liaWxpdHkpIHsgbV9z
aG91bGRNb2NrQm9sZFN5c3RlbUZvbnRGb3JBY2Nlc3NpYmlsaXR5ID0gc2hvdWxkTW9ja0JvbGRT
eXN0ZW1Gb250Rm9yQWNjZXNzaWJpbGl0eTsgfQpAQCAtMjU5LDE2ICsyNTksMTYgQEAgcHJpdmF0
ZToKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHB1cmdlSW5hY3RpdmVGb250RGF0YUlmTmVlZGVk
KCk7CiAKICAgICAvLyBGSVhNRTogVGhpcyBtZXRob2Qgc2hvdWxkIGV2ZW50dWFsbHkgYmUgcmVt
b3ZlZC4KLSAgICBGb250UGxhdGZvcm1EYXRhKiBnZXRDYWNoZWRGb250UGxhdGZvcm1EYXRhKGNv
bnN0IEZvbnREZXNjcmlwdGlvbiYsIGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5LCBjb25zdCBG
b250RmVhdHVyZVNldHRpbmdzKiBmb250RmFjZUZlYXR1cmVzID0gbnVsbHB0ciwgY29uc3QgRm9u
dFZhcmlhbnRTZXR0aW5ncyogZm9udEZhY2VWYXJpYW50U2V0dGluZ3MgPSBudWxscHRyLCBGb250
U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzIGZvbnRGYWNlQ2FwYWJpbGl0aWVzID0geyB9
LCBib29sIGNoZWNraW5nQWx0ZXJuYXRlTmFtZSA9IGZhbHNlKTsKKyAgICBGb250UGxhdGZvcm1E
YXRhKiBnZXRDYWNoZWRGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGNv
bnN0IEF0b21TdHJpbmcmIGZhbWlseSwgY29uc3QgRm9udEZlYXR1cmVTZXR0aW5ncyogZm9udEZh
Y2VGZWF0dXJlcyA9IG51bGxwdHIsIGNvbnN0IEZvbnRWYXJpYW50U2V0dGluZ3MqIGZvbnRGYWNl
VmFyaWFudFNldHRpbmdzID0gbnVsbHB0ciwgRm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxp
dGllcyBmb250RmFjZUNhcGFiaWxpdGllcyA9IHsgfSwgYm9vbCBjaGVja2luZ0FsdGVybmF0ZU5h
bWUgPSBmYWxzZSk7CiAKICAgICAvLyBUaGVzZSBtZXRob2RzIGFyZSBpbXBsZW1lbnRlZCBieSBl
YWNoIHBsYXRmb3JtLgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIEZvbnRQbGF0Zm9ybURhdGEq
IGdldEN1c3RvbUZhbGxiYWNrRm9udChjb25zdCBVSW50MzIsIGNvbnN0IEZvbnREZXNjcmlwdGlv
biYpOwogI2VuZGlmCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RkOjp1bmlxdWVfcHRyPEZvbnRQbGF0
Zm9ybURhdGE+IGNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiwg
Y29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHksIGNvbnN0IEZvbnRGZWF0dXJlU2V0dGluZ3MqIGZv
bnRGYWNlRmVhdHVyZXMsIGNvbnN0IEZvbnRWYXJpYW50U2V0dGluZ3MqIGZvbnRGYWNlVmFyaWFu
dFNldHRpbmdzLCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzIGZvbnRGYWNlQ2Fw
YWJpbGl0aWVzKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udFBsYXRm
b3JtRGF0YT4gY3JlYXRlRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mLCBj
b25zdCBBdG9tU3RyaW5nJiBmYW1pbHksIGNvbnN0IEZvbnRGZWF0dXJlU2V0dGluZ3MqIGZvbnRG
YWNlRmVhdHVyZXMsIGNvbnN0IEZvbnRWYXJpYW50U2V0dGluZ3MqIGZvbnRGYWNlVmFyaWFudFNl
dHRpbmdzLCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzIGZvbnRGYWNlQ2FwYWJp
bGl0aWVzKTsKICAgICAKLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBhbHRlcm5hdGVG
YW1pbHlOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYpOwotICAgIHN0YXRpYyBjb25zdCBBdG9taWNT
dHJpbmcmIHBsYXRmb3JtQWx0ZXJuYXRlRmFtaWx5TmFtZShjb25zdCBBdG9taWNTdHJpbmcmKTsK
KyAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgYWx0ZXJuYXRlRmFtaWx5TmFtZShjb25zdCBB
dG9tU3RyaW5nJik7CisgICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIHBsYXRmb3JtQWx0ZXJu
YXRlRmFtaWx5TmFtZShjb25zdCBBdG9tU3RyaW5nJik7CiAKICAgICBUaW1lciBtX3B1cmdlVGlt
ZXI7CiAgICAgCkBAIC0yODQsNyArMjg0LDcgQEAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3Mg
Rm9udDsKIH07CiAKLWlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8Rm9udFBsYXRmb3JtRGF0YT4gRm9u
dENhY2hlOjpjcmVhdGVGb250UGxhdGZvcm1EYXRhRm9yVGVzdGluZyhjb25zdCBGb250RGVzY3Jp
cHRpb24mIGZvbnREZXNjcmlwdGlvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHkpCitpbmxp
bmUgc3RkOjp1bmlxdWVfcHRyPEZvbnRQbGF0Zm9ybURhdGE+IEZvbnRDYWNoZTo6Y3JlYXRlRm9u
dFBsYXRmb3JtRGF0YUZvclRlc3RpbmcoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3Jp
cHRpb24sIGNvbnN0IEF0b21TdHJpbmcmIGZhbWlseSkKIHsKICAgICByZXR1cm4gY3JlYXRlRm9u
dFBsYXRmb3JtRGF0YShmb250RGVzY3JpcHRpb24sIGZhbWlseSwgbnVsbHB0ciwgbnVsbHB0ciwg
eyB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRDYXNjYWRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNj
YWRlLmNwcAppbmRleCBiOTkxNzlhNGY1OThlNTdkMWJmMDMxOTRlNjIzZmI1NTlkNThmZjljLi43
Mjc0ZGIwZGIzMmIzYjQxYjNlMGUxYjFlZDBmYjJhZWE4YjM2YTNiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCkBAIC0zOCw3ICszOCw3
IEBACiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJh
cy5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0
L0F0b21pY1N0cmluZ0hhc2guaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nSGFzaC5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogI2lmIFBMQVRGT1JNKFdJ
TikKQEAgLTQ5LDE3ICs0OSwxNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVz
cGFjZSBXVEY6OlVuaWNvZGU7CiAKLXN0YXRpYyBib29sIHVzZUJhY2tzbGFzaEFzWWVuU2lnbkZv
ckZhbWlseShjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSkKK3N0YXRpYyBib29sIHVzZUJhY2tz
bGFzaEFzWWVuU2lnbkZvckZhbWlseShjb25zdCBBdG9tU3RyaW5nJiBmYW1pbHkpCiB7CiAgICAg
aWYgKGZhbWlseS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBzdGF0aWMg
Y29uc3QgYXV0byBzZXQgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10gewotICAgICAgICBIYXNoU2V0
PEF0b21pY1N0cmluZz4gc2V0OworICAgICAgICBIYXNoU2V0PEF0b21TdHJpbmc+IHNldDsKICAg
ICAgICAgYXV0byBhZGQgPSBbJnNldF0gKGNvbnN0IGNoYXIqIG5hbWUsIHN0ZDo6aW5pdGlhbGl6
ZXJfbGlzdDxVQ2hhcj4gdW5pY29kZU5hbWUpIHsKICAgICAgICAgICAgIHVuc2lnbmVkIG5hbWVM
ZW5ndGggPSBzdHJsZW4obmFtZSk7Ci0gICAgICAgICAgICBzZXQuYWRkKEF0b21pY1N0cmluZyB7
IG5hbWUsIG5hbWVMZW5ndGgsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwgfSk7
CisgICAgICAgICAgICBzZXQuYWRkKEF0b21TdHJpbmcgeyBuYW1lLCBuYW1lTGVuZ3RoLCBBdG9t
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCB9KTsKICAgICAgICAgICAgIHVuc2lnbmVkIHVu
aWNvZGVOYW1lTGVuZ3RoID0gdW5pY29kZU5hbWUuc2l6ZSgpOwotICAgICAgICAgICAgc2V0LmFk
ZChBdG9taWNTdHJpbmcgeyB1bmljb2RlTmFtZS5iZWdpbigpLCB1bmljb2RlTmFtZUxlbmd0aCB9
KTsKKyAgICAgICAgICAgIHNldC5hZGQoQXRvbVN0cmluZyB7IHVuaWNvZGVOYW1lLmJlZ2luKCks
IHVuaWNvZGVOYW1lTGVuZ3RoIH0pOwogICAgICAgICB9OwogICAgICAgICBhZGQoIk1TIFBHb3Ro
aWMiLCB7IDB4RkYyRCwgMHhGRjMzLCAweDAwMjAsIDB4RkYzMCwgMHgzMEI0LCAweDMwQjcsIDB4
MzBDMywgMHgzMEFGIH0pOwogICAgICAgICBhZGQoIk1TIFBNaW5jaG8iLCB7IDB4RkYyRCwgMHhG
RjMzLCAweDAwMjAsIDB4RkYzMCwgMHg2NjBFLCAweDY3MUQgfSk7CkBAIC0xNTIsNyArMTUyLDcg
QEAgYm9vbCBGb250Q2FzY2FkZTo6b3BlcmF0b3I9PShjb25zdCBGb250Q2FzY2FkZSYgb3RoZXIp
IGNvbnN0CiAKIHN0cnVjdCBGb250Q2FzY2FkZUNhY2hlS2V5IHsKICAgICBGb250RGVzY3JpcHRp
b25LZXkgZm9udERlc2NyaXB0aW9uS2V5OyAvLyBTaGFyZWQgd2l0aCB0aGUgbG93ZXIgbGV2ZWwg
Rm9udENhY2hlIChjYWNoaW5nIEZvbnQgb2JqZWN0cykKLSAgICBWZWN0b3I8QXRvbWljU3RyaW5n
LCAzPiBmYW1pbGllczsKKyAgICBWZWN0b3I8QXRvbVN0cmluZywgMz4gZmFtaWxpZXM7CiAgICAg
dW5zaWduZWQgZm9udFNlbGVjdG9ySWQ7CiAgICAgdW5zaWduZWQgZm9udFNlbGVjdG9yVmVyc2lv
bjsKIH07CkBAIC0yOTgsNyArMjk4LDcgQEAgZmxvYXQgRm9udENhc2NhZGU6OmRyYXdUZXh0KEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdAogICAgIHJl
dHVybiBzdGFydFBvaW50LngoKSAtIHN0YXJ0WDsKIH0KIAotdm9pZCBGb250Q2FzY2FkZTo6ZHJh
d0VtcGhhc2lzTWFya3MoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBy
dW4sIGNvbnN0IEF0b21pY1N0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIHVu
c2lnbmVkIGZyb20sIE9wdGlvbmFsPHVuc2lnbmVkPiB0bykgY29uc3QKK3ZvaWQgRm9udENhc2Nh
ZGU6OmRyYXdFbXBoYXNpc01hcmtzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgVGV4
dFJ1biYgcnVuLCBjb25zdCBBdG9tU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiBwb2lu
dCwgdW5zaWduZWQgZnJvbSwgT3B0aW9uYWw8dW5zaWduZWQ+IHRvKSBjb25zdAogewogICAgIGlm
IChpc0xvYWRpbmdDdXN0b21Gb250cygpKQogICAgICAgICByZXR1cm47CkBAIC00ODYsNyArNDg2
LDcgQEAgR2x5cGhEYXRhIEZvbnRDYXNjYWRlOjpnbHlwaERhdGFGb3JDaGFyYWN0ZXIoVUNoYXIz
MiBjLCBib29sIG1pcnJvciwgRm9udFZhcmlhbnQKIC8vIGFsbCBwbGF0Zm9ybXMuCiBib29sIEZv
bnRDYXNjYWRlOjpoYXNWYWxpZEF2ZXJhZ2VDaGFyV2lkdGgoKSBjb25zdAogewotICAgIGNvbnN0
IEF0b21pY1N0cmluZyYgZmFtaWx5ID0gZmlyc3RGYW1pbHkoKTsKKyAgICBjb25zdCBBdG9tU3Ry
aW5nJiBmYW1pbHkgPSBmaXJzdEZhbWlseSgpOwogICAgIGlmIChmYW1pbHkuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTQ5Niw3ICs0OTYsNyBAQCBib29sIEZvbnRDYXNj
YWRlOjpoYXNWYWxpZEF2ZXJhZ2VDaGFyV2lkdGgoKSBjb25zdAogICAgICAgICByZXR1cm4gZmFs
c2U7CiAjZW5kaWYKIAotICAgIHN0YXRpYyBjb25zdCBhdXRvIG1hcCA9IG1ha2VOZXZlckRlc3Ry
b3llZChIYXNoU2V0PEF0b21pY1N0cmluZz4geworICAgIHN0YXRpYyBjb25zdCBhdXRvIG1hcCA9
IG1ha2VOZXZlckRlc3Ryb3llZChIYXNoU2V0PEF0b21TdHJpbmc+IHsKICAgICAgICAgIkFtZXJp
Y2FuIFR5cGV3cml0ZXIiLAogICAgICAgICAiQXJpYWwgSGVicmV3IiwKICAgICAgICAgIkNoYWxr
Ym9hcmQiLApAQCAtMTMwNyw3ICsxMzA3LDcgQEAgc3RhdGljIEdseXBoVW5kZXJsaW5lVHlwZSBj
b21wdXRlVW5kZXJsaW5lVHlwZShjb25zdCBUZXh0UnVuJiB0ZXh0UnVuLCBjb25zdCBHbHkKIAog
Ly8gRklYTUU6IFRoaXMgZnVuY3Rpb24gbWF5IG5vdCB3b3JrIGlmIHRoZSBlbXBoYXNpcyBtYXJr
IHVzZXMgYSBjb21wbGV4IHNjcmlwdCwgYnV0IG5vbmUgb2YgdGhlCiAvLyBzdGFuZGFyZCBlbXBo
YXNpcyBtYXJrcyBkbyBzby4KLU9wdGlvbmFsPEdseXBoRGF0YT4gRm9udENhc2NhZGU6OmdldEVt
cGhhc2lzTWFya0dseXBoRGF0YShjb25zdCBBdG9taWNTdHJpbmcmIG1hcmspIGNvbnN0CitPcHRp
b25hbDxHbHlwaERhdGE+IEZvbnRDYXNjYWRlOjpnZXRFbXBoYXNpc01hcmtHbHlwaERhdGEoY29u
c3QgQXRvbVN0cmluZyYgbWFyaykgY29uc3QKIHsKICAgICBpZiAobWFyay5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CkBAIC0xMzI1LDcgKzEzMjUsNyBAQCBPcHRpb25h
bDxHbHlwaERhdGE+IEZvbnRDYXNjYWRlOjpnZXRFbXBoYXNpc01hcmtHbHlwaERhdGEoY29uc3Qg
QXRvbWljU3RyaW5nJiBtYQogICAgIHJldHVybiBnbHlwaERhdGEudmFsdWUoKS5pc1ZhbGlkKCkg
PyBnbHlwaERhdGEgOiBXVEY6Om51bGxvcHQ7CiB9CiAKLWludCBGb250Q2FzY2FkZTo6ZW1waGFz
aXNNYXJrQXNjZW50KGNvbnN0IEF0b21pY1N0cmluZyYgbWFyaykgY29uc3QKK2ludCBGb250Q2Fz
Y2FkZTo6ZW1waGFzaXNNYXJrQXNjZW50KGNvbnN0IEF0b21TdHJpbmcmIG1hcmspIGNvbnN0CiB7
CiAgICAgT3B0aW9uYWw8R2x5cGhEYXRhPiBtYXJrR2x5cGhEYXRhID0gZ2V0RW1waGFzaXNNYXJr
R2x5cGhEYXRhKG1hcmspOwogICAgIGlmICghbWFya0dseXBoRGF0YSkKQEAgLTEzMzksNyArMTMz
OSw3IEBAIGludCBGb250Q2FzY2FkZTo6ZW1waGFzaXNNYXJrQXNjZW50KGNvbnN0IEF0b21pY1N0
cmluZyYgbWFyaykgY29uc3QKICAgICByZXR1cm4gbWFya0ZvbnREYXRhLT5mb250TWV0cmljcygp
LmFzY2VudCgpOwogfQogCi1pbnQgRm9udENhc2NhZGU6OmVtcGhhc2lzTWFya0Rlc2NlbnQoY29u
c3QgQXRvbWljU3RyaW5nJiBtYXJrKSBjb25zdAoraW50IEZvbnRDYXNjYWRlOjplbXBoYXNpc01h
cmtEZXNjZW50KGNvbnN0IEF0b21TdHJpbmcmIG1hcmspIGNvbnN0CiB7CiAgICAgT3B0aW9uYWw8
R2x5cGhEYXRhPiBtYXJrR2x5cGhEYXRhID0gZ2V0RW1waGFzaXNNYXJrR2x5cGhEYXRhKG1hcmsp
OwogICAgIGlmICghbWFya0dseXBoRGF0YSkKQEAgLTEzNTMsNyArMTM1Myw3IEBAIGludCBGb250
Q2FzY2FkZTo6ZW1waGFzaXNNYXJrRGVzY2VudChjb25zdCBBdG9taWNTdHJpbmcmIG1hcmspIGNv
bnN0CiAgICAgcmV0dXJuIG1hcmtGb250RGF0YS0+Zm9udE1ldHJpY3MoKS5kZXNjZW50KCk7CiB9
CiAKLWludCBGb250Q2FzY2FkZTo6ZW1waGFzaXNNYXJrSGVpZ2h0KGNvbnN0IEF0b21pY1N0cmlu
ZyYgbWFyaykgY29uc3QKK2ludCBGb250Q2FzY2FkZTo6ZW1waGFzaXNNYXJrSGVpZ2h0KGNvbnN0
IEF0b21TdHJpbmcmIG1hcmspIGNvbnN0CiB7CiAgICAgT3B0aW9uYWw8R2x5cGhEYXRhPiBtYXJr
R2x5cGhEYXRhID0gZ2V0RW1waGFzaXNNYXJrR2x5cGhEYXRhKG1hcmspOwogICAgIGlmICghbWFy
a0dseXBoRGF0YSkKQEAgLTE0MjksNyArMTQyOSw3IEBAIGZsb2F0IEZvbnRDYXNjYWRlOjpnZXRH
bHlwaHNBbmRBZHZhbmNlc0ZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgdW5zaWdu
CiB9CiAjZW5kaWYKIAotdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFya3NGb3JTaW1w
bGVUZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25z
dCBBdG9taWNTdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCB1bnNpZ25lZCBm
cm9tLCB1bnNpZ25lZCB0bykgY29uc3QKK3ZvaWQgRm9udENhc2NhZGU6OmRyYXdFbXBoYXNpc01h
cmtzRm9yU2ltcGxlVGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFRleHRSdW4m
IHJ1biwgY29uc3QgQXRvbVN0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIHVu
c2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvKSBjb25zdAogewogICAgIEdseXBoQnVmZmVyIGdseXBo
QnVmZmVyOwogICAgIGZsb2F0IGluaXRpYWxBZHZhbmNlID0gZ2V0R2x5cGhzQW5kQWR2YW5jZXNG
b3JTaW1wbGVUZXh0KHJ1biwgZnJvbSwgdG8sIGdseXBoQnVmZmVyLCBGb3JUZXh0RW1waGFzaXMp
OwpAQCAtMTUwMCw3ICsxNTAwLDcgQEAgaW5saW5lIHN0YXRpYyBmbG9hdCBvZmZzZXRUb01pZGRs
ZU9mR2x5cGhBdEluZGV4KGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwKICAgICByZXR1
cm4gb2Zmc2V0VG9NaWRkbGVPZkdseXBoKGdseXBoQnVmZmVyLmZvbnRBdChpKSwgZ2x5cGhCdWZm
ZXIuZ2x5cGhBdChpKSk7CiB9CiAKLXZvaWQgRm9udENhc2NhZGU6OmRyYXdFbXBoYXNpc01hcmtz
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgR2x5cGhCdWZmZXImIGdseXBoQnVmZmVy
LCBjb25zdCBBdG9taWNTdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KSBjb25z
dAordm9pZCBGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFya3MoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIGNvbnN0IEF0b21TdHJpbmcm
IG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KSBjb25zdAogewogICAgIE9wdGlvbmFsPEds
eXBoRGF0YT4gbWFya0dseXBoRGF0YSA9IGdldEVtcGhhc2lzTWFya0dseXBoRGF0YShtYXJrKTsK
ICAgICBpZiAoIW1hcmtHbHlwaERhdGEpCkBAIC0xNjYxLDcgKzE2NjEsNyBAQCBjb25zdCBGb250
KiBGb250Q2FzY2FkZTo6Zm9udEZvckNvbWJpbmluZ0NoYXJhY3RlclNlcXVlbmNlKGNvbnN0IFVD
aGFyKiBjaGFyYWN0ZQogfQogI2VuZGlmCiAKLXZvaWQgRm9udENhc2NhZGU6OmRyYXdFbXBoYXNp
c01hcmtzRm9yQ29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBUZXh0
UnVuJiBydW4sIGNvbnN0IEF0b21pY1N0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYgcG9p
bnQsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvKSBjb25zdAordm9pZCBGb250Q2FzY2FkZTo6
ZHJhd0VtcGhhc2lzTWFya3NGb3JDb21wbGV4VGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgQXRvbVN0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQ
b2ludCYgcG9pbnQsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvKSBjb25zdAogewogICAgIEds
eXBoQnVmZmVyIGdseXBoQnVmZmVyOwogICAgIGZsb2F0IGluaXRpYWxBZHZhbmNlID0gZ2V0R2x5
cGhzQW5kQWR2YW5jZXNGb3JDb21wbGV4VGV4dChydW4sIGZyb20sIHRvLCBnbHlwaEJ1ZmZlciwg
Rm9yVGV4dEVtcGhhc2lzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnRDYXNjYWRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250Q2FzY2FkZS5oCmluZGV4IDIyYmU1ZWEyMTYxMGEwNDI1NjEzNzgwMjIwMDEwNjc1MWQzMDI2
MGMuLjJiY2RmMTA2ZTZjNGQ2YjNjOTQ3NzVkMmRkOGVlOTQ2OGY5NWY2Y2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaApAQCAtMTA5LDcgKzEw
OSw3IEBAIHB1YmxpYzoKICAgICBlbnVtIEN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbiB7IERvTm90
UGFpbnRJZkZvbnROb3RSZWFkeSwgVXNlRmFsbGJhY2tJZkZvbnROb3RSZWFkeSB9OwogICAgIFdF
QkNPUkVfRVhQT1JUIGZsb2F0IGRyYXdUZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFRleHRS
dW4mLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgZnJvbSA9IDAsIE9wdGlvbmFsPHVuc2ln
bmVkPiB0byA9IFdURjo6bnVsbG9wdCwgQ3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uID0gRG9Ob3RQ
YWludElmRm9udE5vdFJlYWR5KSBjb25zdDsKICAgICBzdGF0aWMgdm9pZCBkcmF3R2x5cGhzKEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlciYsIHVuc2lnbmVk
IGZyb20sIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYsIEZvbnRTbW9vdGhp
bmdNb2RlKTsKLSAgICB2b2lkIGRyYXdFbXBoYXNpc01hcmtzKEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IFRleHRSdW4mLCBjb25zdCBBdG9taWNTdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQm
LCB1bnNpZ25lZCBmcm9tID0gMCwgT3B0aW9uYWw8dW5zaWduZWQ+IHRvID0gV1RGOjpudWxsb3B0
KSBjb25zdDsKKyAgICB2b2lkIGRyYXdFbXBoYXNpc01hcmtzKEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IFRleHRSdW4mLCBjb25zdCBBdG9tU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50Jiwg
dW5zaWduZWQgZnJvbSA9IDAsIE9wdGlvbmFsPHVuc2lnbmVkPiB0byA9IFdURjo6bnVsbG9wdCkg
Y29uc3Q7CiAKICAgICBEYXNoQXJyYXkgZGFzaGVzRm9ySW50ZXJzZWN0aW9uc1dpdGhSZWN0KGNv
bnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50JiB0ZXh0T3JpZ2luLCBjb25zdCBGbG9hdFJl
Y3QmIGxpbmVFeHRlbnRzKSBjb25zdDsKIApAQCAtMTM2LDkgKzEzNiw5IEBAIHB1YmxpYzoKICAg
ICBib29sIGVuYWJsZUtlcm5pbmcoKSBjb25zdCB7IHJldHVybiBtX2VuYWJsZUtlcm5pbmc7IH0K
ICAgICBib29sIHJlcXVpcmVzU2hhcGluZygpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWlyZXNTaGFw
aW5nOyB9CiAKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGZpcnN0RmFtaWx5KCkgY29uc3QgeyBy
ZXR1cm4gbV9mb250RGVzY3JpcHRpb24uZmlyc3RGYW1pbHkoKTsgfQorICAgIGNvbnN0IEF0b21T
dHJpbmcmIGZpcnN0RmFtaWx5KCkgY29uc3QgeyByZXR1cm4gbV9mb250RGVzY3JpcHRpb24uZmly
c3RGYW1pbHkoKTsgfQogICAgIHVuc2lnbmVkIGZhbWlseUNvdW50KCkgY29uc3QgeyByZXR1cm4g
bV9mb250RGVzY3JpcHRpb24uZmFtaWx5Q291bnQoKTsgfQotICAgIGNvbnN0IEF0b21pY1N0cmlu
ZyYgZmFtaWx5QXQodW5zaWduZWQgaSkgY29uc3QgeyByZXR1cm4gbV9mb250RGVzY3JpcHRpb24u
ZmFtaWx5QXQoaSk7IH0KKyAgICBjb25zdCBBdG9tU3RyaW5nJiBmYW1pbHlBdCh1bnNpZ25lZCBp
KSBjb25zdCB7IHJldHVybiBtX2ZvbnREZXNjcmlwdGlvbi5mYW1pbHlBdChpKTsgfQogCiAgICAg
Ly8gQSBXVEY6Om51bGxvcHQgcmV0dXJuIHZhbHVlIGluZGljYXRlcyAiZm9udC1zdHlsZTogbm9y
bWFsIi4KICAgICBPcHRpb25hbDxGb250U2VsZWN0aW9uVmFsdWU+IGl0YWxpYygpIGNvbnN0IHsg
cmV0dXJuIG1fZm9udERlc2NyaXB0aW9uLml0YWxpYygpOyB9CkBAIC0xNTQsOSArMTU0LDkgQEAg
cHVibGljOgogICAgIGJvb2wgaGFzVmFsaWRBdmVyYWdlQ2hhcldpZHRoKCkgY29uc3Q7CiAgICAg
Ym9vbCBmYXN0QXZlcmFnZUNoYXJXaWR0aElmQXZhaWxhYmxlKGZsb2F0ICZ3aWR0aCkgY29uc3Q7
IC8vIHJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzCiAKLSAgICBpbnQgZW1waGFzaXNNYXJrQXNjZW50
KGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0OwotICAgIGludCBlbXBoYXNpc01hcmtEZXNjZW50
KGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0OwotICAgIGludCBlbXBoYXNpc01hcmtIZWlnaHQo
Y29uc3QgQXRvbWljU3RyaW5nJikgY29uc3Q7CisgICAgaW50IGVtcGhhc2lzTWFya0FzY2VudChj
b25zdCBBdG9tU3RyaW5nJikgY29uc3Q7CisgICAgaW50IGVtcGhhc2lzTWFya0Rlc2NlbnQoY29u
c3QgQXRvbVN0cmluZyYpIGNvbnN0OworICAgIGludCBlbXBoYXNpc01hcmtIZWlnaHQoY29uc3Qg
QXRvbVN0cmluZyYpIGNvbnN0OwogCiAgICAgY29uc3QgRm9udCYgcHJpbWFyeUZvbnQoKSBjb25z
dDsKICAgICBjb25zdCBGb250UmFuZ2VzJiBmYWxsYmFja1Jhbmdlc0F0KHVuc2lnbmVkKSBjb25z
dDsKQEAgLTIwNiwyMSArMjA2LDIxIEBAIHByaXZhdGU6CiAgICAgZmxvYXQgZ2x5cGhCdWZmZXJG
b3JUZXh0UnVuKENvZGVQYXRoLCBjb25zdCBUZXh0UnVuJiwgdW5zaWduZWQgZnJvbSwgdW5zaWdu
ZWQgdG8sIEdseXBoQnVmZmVyJikgY29uc3Q7CiAgICAgLy8gUmV0dXJucyB0aGUgaW5pdGlhbCBp
bi1zdHJlYW0gYWR2YW5jZS4KICAgICBmbG9hdCBnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvclNpbXBs
ZVRleHQoY29uc3QgVGV4dFJ1biYsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvLCBHbHlwaEJ1
ZmZlciYsIEZvclRleHRFbXBoYXNpc09yTm90ID0gTm90Rm9yVGV4dEVtcGhhc2lzKSBjb25zdDsK
LSAgICB2b2lkIGRyYXdFbXBoYXNpc01hcmtzRm9yU2ltcGxlVGV4dChHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBUZXh0UnVuJiwgY29uc3QgQXRvbWljU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBv
aW50JiwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8pIGNvbnN0OworICAgIHZvaWQgZHJhd0Vt
cGhhc2lzTWFya3NGb3JTaW1wbGVUZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFRleHRSdW4m
LCBjb25zdCBBdG9tU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgZnJv
bSwgdW5zaWduZWQgdG8pIGNvbnN0OwogICAgIHZvaWQgZHJhd0dseXBoQnVmZmVyKEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IEdseXBoQnVmZmVyJiwgRmxvYXRQb2ludCYsIEN1c3RvbUZvbnROb3RS
ZWFkeUFjdGlvbikgY29uc3Q7Ci0gICAgdm9pZCBkcmF3RW1waGFzaXNNYXJrcyhHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBHbHlwaEJ1ZmZlciYsIGNvbnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IEZs
b2F0UG9pbnQmKSBjb25zdDsKKyAgICB2b2lkIGRyYXdFbXBoYXNpc01hcmtzKEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEdseXBoQnVmZmVyJiwgY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IEZsb2F0
UG9pbnQmKSBjb25zdDsKICAgICBmbG9hdCBmbG9hdFdpZHRoRm9yU2ltcGxlVGV4dChjb25zdCBU
ZXh0UnVuJiwgSGFzaFNldDxjb25zdCBGb250Kj4qIGZhbGxiYWNrRm9udHMgPSAwLCBHbHlwaE92
ZXJmbG93KiA9IDApIGNvbnN0OwogICAgIGludCBvZmZzZXRGb3JQb3NpdGlvbkZvclNpbXBsZVRl
eHQoY29uc3QgVGV4dFJ1biYsIGZsb2F0IHBvc2l0aW9uLCBib29sIGluY2x1ZGVQYXJ0aWFsR2x5
cGhzKSBjb25zdDsKICAgICB2b2lkIGFkanVzdFNlbGVjdGlvblJlY3RGb3JTaW1wbGVUZXh0KGNv
bnN0IFRleHRSdW4mLCBMYXlvdXRSZWN0JiBzZWxlY3Rpb25SZWN0LCB1bnNpZ25lZCBmcm9tLCB1
bnNpZ25lZCB0bykgY29uc3Q7CiAKLSAgICBPcHRpb25hbDxHbHlwaERhdGE+IGdldEVtcGhhc2lz
TWFya0dseXBoRGF0YShjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdDsKKyAgICBPcHRpb25hbDxH
bHlwaERhdGE+IGdldEVtcGhhc2lzTWFya0dseXBoRGF0YShjb25zdCBBdG9tU3RyaW5nJikgY29u
c3Q7CiAKICAgICBzdGF0aWMgYm9vbCBjYW5SZXR1cm5GYWxsYmFja0ZvbnRzRm9yQ29tcGxleFRl
eHQoKTsKICAgICBzdGF0aWMgYm9vbCBjYW5FeHBhbmRBcm91bmRJZGVvZ3JhcGhzSW5Db21wbGV4
VGV4dCgpOwogCiAgICAgLy8gUmV0dXJucyB0aGUgaW5pdGlhbCBpbi1zdHJlYW0gYWR2YW5jZS4K
ICAgICBmbG9hdCBnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRS
dW4mLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bywgR2x5cGhCdWZmZXImLCBGb3JUZXh0RW1w
aGFzaXNPck5vdCA9IE5vdEZvclRleHRFbXBoYXNpcykgY29uc3Q7Ci0gICAgdm9pZCBkcmF3RW1w
aGFzaXNNYXJrc0ZvckNvbXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFRleHRSdW4m
LCBjb25zdCBBdG9taWNTdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCBm
cm9tLCB1bnNpZ25lZCB0bykgY29uc3Q7CisgICAgdm9pZCBkcmF3RW1waGFzaXNNYXJrc0ZvckNv
bXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9tU3Ry
aW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8p
IGNvbnN0OwogICAgIGZsb2F0IGZsb2F0V2lkdGhGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVu
JiwgSGFzaFNldDxjb25zdCBGb250Kj4qIGZhbGxiYWNrRm9udHMgPSAwLCBHbHlwaE92ZXJmbG93
KiA9IDApIGNvbnN0OwogICAgIGludCBvZmZzZXRGb3JQb3NpdGlvbkZvckNvbXBsZXhUZXh0KGNv
bnN0IFRleHRSdW4mLCBmbG9hdCBwb3NpdGlvbiwgYm9vbCBpbmNsdWRlUGFydGlhbEdseXBocykg
Y29uc3Q7CiAgICAgdm9pZCBhZGp1c3RTZWxlY3Rpb25SZWN0Rm9yQ29tcGxleFRleHQoY29uc3Qg
VGV4dFJ1biYsIExheW91dFJlY3QmIHNlbGVjdGlvblJlY3QsIHVuc2lnbmVkIGZyb20sIHVuc2ln
bmVkIHRvKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRDYXNjYWRlRGVzY3JpcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udENhc2NhZGVEZXNjcmlwdGlvbi5jcHAKaW5kZXggM2ZjOTZiZmY5Y2RmM2E1
NzA0N2Q3MzE4MGNkZDkzMWQzYTg3MzNkMC4uMzRlNWI4ZmNlOTliZmJlNjdjMjU2MzE3NDFiZTk2
OGE3NDY3MTMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udENhc2NhZGVEZXNjcmlwdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udENhc2NhZGVEZXNjcmlwdGlvbi5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgc3Ry
dWN0IFNhbWVTaXplQXNGb250Q2FzY2FkZURlc2NyaXB0aW9uIHsKICNlbHNlCiAgICAgY2hhciBj
OwogI2VuZGlmCi0gICAgQXRvbWljU3RyaW5nIHN0cmluZzsKKyAgICBBdG9tU3RyaW5nIHN0cmlu
ZzsKICAgICBpbnQxNl90IGZvbnRTZWxlY3Rpb25SZXF1ZXN0WzNdOwogICAgIGZsb2F0IHNpemU7
CiAgICAgdW5zaWduZWQgYml0ZmllbGRzMTsKQEAgLTExOCw3ICsxMTgsNyBAQCBib29sIEZvbnRD
YXNjYWRlRGVzY3JpcHRpb246OmZhbWlsaWVzRXF1YWxGb3JUZXh0QXV0b1NpemluZyhjb25zdCBG
b250Q2FzY2FkZURlcwogCiAjZW5kaWYgLy8gRU5BQkxFKFRFWFRfQVVUT1NJWklORykKIAotYm9v
bCBGb250Q2FzY2FkZURlc2NyaXB0aW9uOjpmYW1pbHlOYW1lc0FyZUVxdWFsKGNvbnN0IEF0b21p
Y1N0cmluZyYgZmFtaWx5MSwgY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHkyKQorYm9vbCBGb250
Q2FzY2FkZURlc2NyaXB0aW9uOjpmYW1pbHlOYW1lc0FyZUVxdWFsKGNvbnN0IEF0b21TdHJpbmcm
IGZhbWlseTEsIGNvbnN0IEF0b21TdHJpbmcmIGZhbWlseTIpCiB7CiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgaWYgKGZhbWlseTEuc3RhcnRzV2l0aCgnLicpKQpAQCAtMTI3LDcgKzEyNyw3IEBA
IGJvb2wgRm9udENhc2NhZGVEZXNjcmlwdGlvbjo6ZmFtaWx5TmFtZXNBcmVFcXVhbChjb25zdCBB
dG9taWNTdHJpbmcmIGZhbWlseTEsIGNvCiAgICAgcmV0dXJuIEFTQ0lJQ2FzZUluc2Vuc2l0aXZl
SGFzaDo6ZXF1YWwoZmFtaWx5MSwgZmFtaWx5Mik7CiB9CiAKLXVuc2lnbmVkIEZvbnRDYXNjYWRl
RGVzY3JpcHRpb246OmZhbWlseU5hbWVIYXNoKGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5KQor
dW5zaWduZWQgRm9udENhc2NhZGVEZXNjcmlwdGlvbjo6ZmFtaWx5TmFtZUhhc2goY29uc3QgQXRv
bVN0cmluZyYgZmFtaWx5KQogewogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGlmIChmYW1pbHku
c3RhcnRzV2l0aCgnLicpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udENhc2NhZGVEZXNjcmlwdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udENhc2NhZGVEZXNjcmlwdGlvbi5oCmluZGV4IDBkNTFjNWExODE5NTQ5YjQy
ZjQ1NjM4NDJjNTYyYjE1NjFjOWFiZGEuLjViMDQwNTJmYTY1NWRiODE4MDk4MzJiZTFmMTU0YzE2
YzYyOWIwOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRDYXNjYWRlRGVzY3JpcHRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250Q2FzY2FkZURlc2NyaXB0aW9uLmgKQEAgLTQzLDcgKzQzLDcgQEAgdHlwZWRlZiBG
b250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0IEZvbnRGYW1pbHlQbGF0Zm9ybVNwZWNpZmlj
YXRpb247CiB0eXBlZGVmIEZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uTnVsbCBGb250RmFtaWx5UGxh
dGZvcm1TcGVjaWZpY2F0aW9uOwogI2VuZGlmCiAKLXR5cGVkZWYgVmFyaWFudDxBdG9taWNTdHJp
bmcsIEZvbnRGYW1pbHlQbGF0Zm9ybVNwZWNpZmljYXRpb24+IEZvbnRGYW1pbHlTcGVjaWZpY2F0
aW9uOwordHlwZWRlZiBWYXJpYW50PEF0b21TdHJpbmcsIEZvbnRGYW1pbHlQbGF0Zm9ybVNwZWNp
ZmljYXRpb24+IEZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uOwogCiBjbGFzcyBGb250Q2FzY2FkZURl
c2NyaXB0aW9uIDogcHVibGljIEZvbnREZXNjcmlwdGlvbiB7CiBwdWJsaWM6CkBAIC01MywxMiAr
NTMsMTIgQEAgcHVibGljOgogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBGb250Q2FzY2FkZURl
c2NyaXB0aW9uJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KIAog
ICAgIHVuc2lnbmVkIGZhbWlseUNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9mYW1pbGllcy5zaXpl
KCk7IH0KLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGZpcnN0RmFtaWx5KCkgY29uc3QgeyByZXR1
cm4gZmFtaWx5QXQoMCk7IH0KLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseUF0KHVuc2ln
bmVkIGkpIGNvbnN0IHsgcmV0dXJuIG1fZmFtaWxpZXNbaV07IH0KLSAgICBjb25zdCBSZWZDb3Vu
dGVkQXJyYXk8QXRvbWljU3RyaW5nPiYgZmFtaWxpZXMoKSBjb25zdCB7IHJldHVybiBtX2ZhbWls
aWVzOyB9CisgICAgY29uc3QgQXRvbVN0cmluZyYgZmlyc3RGYW1pbHkoKSBjb25zdCB7IHJldHVy
biBmYW1pbHlBdCgwKTsgfQorICAgIGNvbnN0IEF0b21TdHJpbmcmIGZhbWlseUF0KHVuc2lnbmVk
IGkpIGNvbnN0IHsgcmV0dXJuIG1fZmFtaWxpZXNbaV07IH0KKyAgICBjb25zdCBSZWZDb3VudGVk
QXJyYXk8QXRvbVN0cmluZz4mIGZhbWlsaWVzKCkgY29uc3QgeyByZXR1cm4gbV9mYW1pbGllczsg
fQogCi0gICAgc3RhdGljIGJvb2wgZmFtaWx5TmFtZXNBcmVFcXVhbChjb25zdCBBdG9taWNTdHJp
bmcmLCBjb25zdCBBdG9taWNTdHJpbmcmKTsKLSAgICBzdGF0aWMgdW5zaWduZWQgZmFtaWx5TmFt
ZUhhc2goY29uc3QgQXRvbWljU3RyaW5nJik7CisgICAgc3RhdGljIGJvb2wgZmFtaWx5TmFtZXNB
cmVFcXVhbChjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgQXRvbVN0cmluZyYpOworICAgIHN0YXRp
YyB1bnNpZ25lZCBmYW1pbHlOYW1lSGFzaChjb25zdCBBdG9tU3RyaW5nJik7CiAgICAgc3RhdGlj
IFN0cmluZyBmb2xkZWRGYW1pbHlOYW1lKGNvbnN0IFN0cmluZyYpOwogCiAgICAgdW5zaWduZWQg
ZWZmZWN0aXZlRmFtaWx5Q291bnQoKSBjb25zdDsKQEAgLTg1LDkgKzg1LDkgQEAgcHVibGljOgog
ICAgIEZvbnRTbW9vdGhpbmdNb2RlIGZvbnRTbW9vdGhpbmcoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxGb250U21vb3RoaW5nTW9kZT4obV9mb250U21vb3RoaW5nKTsgfQogICAgIGJvb2wg
aXNTcGVjaWZpZWRGb250KCkgY29uc3QgeyByZXR1cm4gbV9pc1NwZWNpZmllZEZvbnQ7IH0KIAot
ICAgIHZvaWQgc2V0T25lRmFtaWx5KGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5KSB7IEFTU0VS
VChtX2ZhbWlsaWVzLnNpemUoKSA9PSAxKTsgbV9mYW1pbGllc1swXSA9IGZhbWlseTsgfQotICAg
IHZvaWQgc2V0RmFtaWxpZXMoY29uc3QgVmVjdG9yPEF0b21pY1N0cmluZz4mIGZhbWlsaWVzKSB7
IG1fZmFtaWxpZXMgPSBSZWZDb3VudGVkQXJyYXk8QXRvbWljU3RyaW5nPihmYW1pbGllcyk7IH0K
LSAgICB2b2lkIHNldEZhbWlsaWVzKGNvbnN0IFJlZkNvdW50ZWRBcnJheTxBdG9taWNTdHJpbmc+
JiBmYW1pbGllcykgeyBtX2ZhbWlsaWVzID0gZmFtaWxpZXM7IH0KKyAgICB2b2lkIHNldE9uZUZh
bWlseShjb25zdCBBdG9tU3RyaW5nJiBmYW1pbHkpIHsgQVNTRVJUKG1fZmFtaWxpZXMuc2l6ZSgp
ID09IDEpOyBtX2ZhbWlsaWVzWzBdID0gZmFtaWx5OyB9CisgICAgdm9pZCBzZXRGYW1pbGllcyhj
b25zdCBWZWN0b3I8QXRvbVN0cmluZz4mIGZhbWlsaWVzKSB7IG1fZmFtaWxpZXMgPSBSZWZDb3Vu
dGVkQXJyYXk8QXRvbVN0cmluZz4oZmFtaWxpZXMpOyB9CisgICAgdm9pZCBzZXRGYW1pbGllcyhj
b25zdCBSZWZDb3VudGVkQXJyYXk8QXRvbVN0cmluZz4mIGZhbWlsaWVzKSB7IG1fZmFtaWxpZXMg
PSBmYW1pbGllczsgfQogICAgIHZvaWQgc2V0U3BlY2lmaWVkU2l6ZShmbG9hdCBzKSB7IG1fc3Bl
Y2lmaWVkU2l6ZSA9IGNsYW1wVG9GbG9hdChzKTsgfQogICAgIHZvaWQgc2V0SXNBYnNvbHV0ZVNp
emUoYm9vbCBzKSB7IG1faXNBYnNvbHV0ZVNpemUgPSBzOyB9CiAgICAgdm9pZCBzZXRLZXJuaW5n
KEtlcm5pbmcga2VybmluZykgeyBtX2tlcm5pbmcgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oa2Vy
bmluZyk7IH0KQEAgLTEzMiwxMCArMTMyLDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgRm9udFZh
cmlhbnRDYXBzIGluaXRpYWxWYXJpYW50Q2FwcygpIHsgcmV0dXJuIEZvbnRWYXJpYW50Q2Fwczo6
Tm9ybWFsOyB9CiAgICAgc3RhdGljIEZvbnRWYXJpYW50QWx0ZXJuYXRlcyBpbml0aWFsVmFyaWFu
dEFsdGVybmF0ZXMoKSB7IHJldHVybiBGb250VmFyaWFudEFsdGVybmF0ZXM6Ok5vcm1hbDsgfQog
ICAgIHN0YXRpYyBGb250T3B0aWNhbFNpemluZyBpbml0aWFsT3B0aWNhbFNpemluZygpIHsgcmV0
dXJuIEZvbnRPcHRpY2FsU2l6aW5nOjpFbmFibGVkOyB9Ci0gICAgc3RhdGljIGNvbnN0IEF0b21p
Y1N0cmluZyYgaW5pdGlhbExvY2FsZSgpIHsgcmV0dXJuIG51bGxBdG9tKCk7IH0KKyAgICBzdGF0
aWMgY29uc3QgQXRvbVN0cmluZyYgaW5pdGlhbExvY2FsZSgpIHsgcmV0dXJuIG51bGxBdG9tKCk7
IH0KIAogcHJpdmF0ZToKLSAgICBSZWZDb3VudGVkQXJyYXk8QXRvbWljU3RyaW5nPiBtX2ZhbWls
aWVzIHsgMSB9OworICAgIFJlZkNvdW50ZWRBcnJheTxBdG9tU3RyaW5nPiBtX2ZhbWlsaWVzIHsg
MSB9OwogCiAgICAgLy8gU3BlY2lmaWVkIENTUyB2YWx1ZS4gSW5kZXBlbmRlbnQgb2YgcmVuZGVy
aW5nIGlzc3VlcyBzdWNoIGFzIGludGVnZXIgcm91bmRpbmcsIG1pbmltdW0gZm9udCBzaXplcywg
YW5kIHpvb21pbmcuCiAgICAgZmxvYXQgbV9zcGVjaWZpZWRTaXplIHsgMCB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVGb250cy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZUZvbnRzLmNwcApp
bmRleCBhOWY0MWUxNzczYjAwMTRkNWNiYmQyZjdlZTE0NDZkYWQ0ZGQ4MjFkLi42OTQ0NjljMGVi
NjJhZDljODRlOWJiZDA4ZmExMzQyNjQwOTA2OWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZUZvbnRzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZUZvbnRzLmNwcApAQCAtMTQwLDcgKzE0
MCw3IEBAIHN0YXRpYyBGb250UmFuZ2VzIHJlYWxpemVOZXh0RmFsbGJhY2soY29uc3QgRm9udENh
c2NhZGVEZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sCiAKICAgICBhdXRvJiBmb250Q2FjaGUgPSBG
b250Q2FjaGU6OnNpbmdsZXRvbigpOwogICAgIHdoaWxlIChpbmRleCA8IGRlc2NyaXB0aW9uLmVm
ZmVjdGl2ZUZhbWlseUNvdW50KCkpIHsKLSAgICAgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtl
VmlzaXRvcihbJl0oY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHkpIC0+IEZvbnRSYW5nZXMgewor
ICAgICAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9yKFsmXShjb25zdCBBdG9tU3Ry
aW5nJiBmYW1pbHkpIC0+IEZvbnRSYW5nZXMgewogICAgICAgICAgICAgaWYgKGZhbWlseS5pc0Vt
cHR5KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEZvbnRSYW5nZXMoKTsKICAgICAgICAgICAg
IGlmIChmb250U2VsZWN0b3IpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250RGVzY3JpcHRpb24uY3BwCmluZGV4IGI4YjQ2ZTc3NWNkOTFiMWM2ZmVlNjhj
MTQyMjk4NDUwZWMyZDYwY2YuLjhhOTI0ZjlhNjUwYzQ0ZDdlZjA1ODc5YWQzZmU1MTc1ZTJmZDA4
OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnREZXNj
cmlwdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udERl
c2NyaXB0aW9uLmNwcApAQCAtNjUsMTQgKzY1LDE0IEBAIEZvbnREZXNjcmlwdGlvbjo6Rm9udERl
c2NyaXB0aW9uKCkKIHsKIH0KIAotdm9pZCBGb250RGVzY3JpcHRpb246OnNldExvY2FsZShjb25z
dCBBdG9taWNTdHJpbmcmIGxvY2FsZSkKK3ZvaWQgRm9udERlc2NyaXB0aW9uOjpzZXRMb2NhbGUo
Y29uc3QgQXRvbVN0cmluZyYgbG9jYWxlKQogewogICAgIG1fbG9jYWxlID0gbG9jYWxlOwogICAg
IG1fc2NyaXB0ID0gbG9jYWxlVG9TY3JpcHRDb2RlRm9yRm9udFNlbGVjdGlvbihtX2xvY2FsZSk7
CiB9CiAKICNpZiAhUExBVEZPUk0oQ09DT0EpCi1BdG9taWNTdHJpbmcgRm9udERlc2NyaXB0aW9u
OjpwbGF0Zm9ybVJlc29sdmVHZW5lcmljRmFtaWx5KFVTY3JpcHRDb2RlLCBjb25zdCBBdG9taWNT
dHJpbmcmLCBjb25zdCBBdG9taWNTdHJpbmcmKQorQXRvbVN0cmluZyBGb250RGVzY3JpcHRpb246
OnBsYXRmb3JtUmVzb2x2ZUdlbmVyaWNGYW1pbHkoVVNjcmlwdENvZGUsIGNvbnN0IEF0b21TdHJp
bmcmLCBjb25zdCBBdG9tU3RyaW5nJikKIHsKICAgICByZXR1cm4gbnVsbEF0b20oKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnREZXNjcmlwdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udERlc2NyaXB0aW9uLmgK
aW5kZXggY2IwNWNmNWFlYjk1NTc4NTFiNGYzMDliZTZlZGI0Y2U2MzI4ZDA1Zi4uMThmMWRlMTg3
ZjUxZjFjYzdjN2NhMDhmOWE4ODE5M2RiODI3NDU2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udERlc2NyaXB0aW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udERlc2NyaXB0aW9uLmgKQEAgLTUzLDcgKzUzLDcgQEAg
cHVibGljOgogICAgIEZvbnRSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUoKSBjb25zdCB7IHJl
dHVybiBzdGF0aWNfY2FzdDxGb250UmVuZGVyaW5nTW9kZT4obV9yZW5kZXJpbmdNb2RlKTsgfQog
ICAgIFRleHRSZW5kZXJpbmdNb2RlIHRleHRSZW5kZXJpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8VGV4dFJlbmRlcmluZ01vZGU+KG1fdGV4dFJlbmRlcmluZyk7IH0KICAgICBV
U2NyaXB0Q29kZSBzY3JpcHQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxVU2NyaXB0Q29k
ZT4obV9zY3JpcHQpOyB9Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUoKSBjb25zdCB7
IHJldHVybiBtX2xvY2FsZTsgfQorICAgIGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbG9jYWxlOyB9CiAKICAgICBGb250T3JpZW50YXRpb24gb3JpZW50YXRpb24o
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxGb250T3JpZW50YXRpb24+KG1fb3JpZW50YXRp
b24pOyB9CiAgICAgTm9uQ0pLR2x5cGhPcmllbnRhdGlvbiBub25DSktHbHlwaE9yaWVudGF0aW9u
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Tm9uQ0pLR2x5cGhPcmllbnRhdGlvbj4obV9u
b25DSktHbHlwaE9yaWVudGF0aW9uKTsgfQpAQCAtMTA4LDcgKzEwOCw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldE9yaWVudGF0aW9uKEZvbnRPcmllbnRhdGlvbiBvcmllbnRhdGlvbikgeyBtX29y
aWVudGF0aW9uID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG9yaWVudGF0aW9uKTsgfQogICAgIHZv
aWQgc2V0Tm9uQ0pLR2x5cGhPcmllbnRhdGlvbihOb25DSktHbHlwaE9yaWVudGF0aW9uIG9yaWVu
dGF0aW9uKSB7IG1fbm9uQ0pLR2x5cGhPcmllbnRhdGlvbiA9IHN0YXRpY19jYXN0PHVuc2lnbmVk
PihvcmllbnRhdGlvbik7IH0KICAgICB2b2lkIHNldFdpZHRoVmFyaWFudChGb250V2lkdGhWYXJp
YW50IHdpZHRoVmFyaWFudCkgeyBtX3dpZHRoVmFyaWFudCA9IHN0YXRpY19jYXN0PHVuc2lnbmVk
Pih3aWR0aFZhcmlhbnQpOyB9IC8vIE1ha2Ugc3VyZSBuZXcgY2FsbGVycyBvZiB0aGlzIHN5bmMg
d2l0aCBGb250UGxhdGZvcm1EYXRhOjppc0ZvclRleHRDb21iaW5lKCkhCi0gICAgdm9pZCBzZXRM
b2NhbGUoY29uc3QgQXRvbWljU3RyaW5nJik7CisgICAgdm9pZCBzZXRMb2NhbGUoY29uc3QgQXRv
bVN0cmluZyYpOwogICAgIHZvaWQgc2V0RmVhdHVyZVNldHRpbmdzKEZvbnRGZWF0dXJlU2V0dGlu
Z3MmJiBzZXR0aW5ncykgeyBtX2ZlYXR1cmVTZXR0aW5ncyA9IFdURk1vdmUoc2V0dGluZ3MpOyB9
CiAjaWYgRU5BQkxFKFZBUklBVElPTl9GT05UUykKICAgICB2b2lkIHNldFZhcmlhdGlvblNldHRp
bmdzKEZvbnRWYXJpYXRpb25TZXR0aW5ncyYmIHNldHRpbmdzKSB7IG1fdmFyaWF0aW9uU2V0dGlu
Z3MgPSBXVEZNb3ZlKHNldHRpbmdzKTsgfQpAQCAtMTMzLDEzICsxMzMsMTMgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0Rm9udFN0eWxlQXhpcyhGb250U3R5bGVBeGlzIGF4aXMpIHsgbV9mb250U3R5
bGVBeGlzID0gYXhpcyA9PSBGb250U3R5bGVBeGlzOjppdGFsOyB9CiAgICAgdm9pZCBzZXRTaG91
bGRBbGxvd1VzZXJJbnN0YWxsZWRGb250cyhBbGxvd1VzZXJJbnN0YWxsZWRGb250cyBzaG91bGRB
bGxvd1VzZXJJbnN0YWxsZWRGb250cykgeyBtX3Nob3VsZEFsbG93VXNlckluc3RhbGxlZEZvbnRz
ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNob3VsZEFsbG93VXNlckluc3RhbGxlZEZvbnRzKTsg
fQogCi0gICAgc3RhdGljIEF0b21pY1N0cmluZyBwbGF0Zm9ybVJlc29sdmVHZW5lcmljRmFtaWx5
KFVTY3JpcHRDb2RlLCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSwgY29uc3QgQXRvbWljU3Ry
aW5nJiBmYW1pbHlOYW1lKTsKKyAgICBzdGF0aWMgQXRvbVN0cmluZyBwbGF0Zm9ybVJlc29sdmVH
ZW5lcmljRmFtaWx5KFVTY3JpcHRDb2RlLCBjb25zdCBBdG9tU3RyaW5nJiBsb2NhbGUsIGNvbnN0
IEF0b21TdHJpbmcmIGZhbWlseU5hbWUpOwogCiBwcml2YXRlOgogICAgIC8vIEZJWE1FOiBJbnZl
c3RpZ2F0ZSBtb3ZpbmcgdGhlc2UgaW50byB0aGVpciBvd24gb2JqZWN0IG9uIHRoZSBoZWFwICh0
byBzYXZlIG1lbW9yeSkuCiAgICAgRm9udEZlYXR1cmVTZXR0aW5ncyBtX2ZlYXR1cmVTZXR0aW5n
czsKICAgICBGb250VmFyaWF0aW9uU2V0dGluZ3MgbV92YXJpYXRpb25TZXR0aW5nczsKLSAgICBB
dG9taWNTdHJpbmcgbV9sb2NhbGU7CisgICAgQXRvbVN0cmluZyBtX2xvY2FsZTsKIAogICAgIEZv
bnRTZWxlY3Rpb25SZXF1ZXN0IG1fZm9udFNlbGVjdGlvblJlcXVlc3Q7CiAgICAgZmxvYXQgbV9j
b21wdXRlZFNpemUgeyAwIH07IC8vIENvbXB1dGVkIHNpemUgYWRqdXN0ZWQgZm9yIHRoZSBtaW5p
bXVtIGZvbnQgc2l6ZSBhbmQgdGhlIHpvb20gZmFjdG9yLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEZhbWlseVNwZWNpZmljYXRpb25OdWxsLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRGYW1pbHlTcGVjaWZpY2F0aW9u
TnVsbC5jcHAKaW5kZXggMTVjMDM4NzY5ODI2MGY0MDVlMjJlNWJmNTI3ODAwMzA4YzdmZTNiZi4u
ODFiYTE1OGQ5N2IwODJkNmNkZmJmMGMzMjE1ZDdkMjRlZWYwOTE1NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEZhbWlseVNwZWNpZmljYXRpb25OdWxs
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250RmFtaWx5U3Bl
Y2lmaWNhdGlvbk51bGwuY3BwCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSAiRm9udEZhbWls
eVNwZWNpZmljYXRpb25OdWxsLmgiCiAKICNpbmNsdWRlICJGb250U2VsZWN0b3IuaCIKLSNpbmNs
dWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRv
bVN0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250R2VuZXJpY0ZhbWlsaWVzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRHZW5lcmljRmFtaWxpZXMuY3BwCmlu
ZGV4IGQ0M2MwYmRiZGFmODRlYTEzMzkwZmJmNjAwM2UzODIzOWEyYzI0ZGMuLjE3MmI3MjFhY2Y1
ZTgyMWM0MzAxYzJmMjgyYTlmODIxNWZkYmFhYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRHZW5lcmljRmFtaWxpZXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRHZW5lcmljRmFtaWxpZXMuY3BwCkBAIC0zMCwx
MSArMzAsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgYm9vbCBzZXRHZW5l
cmljRm9udEZhbWlseUZvclNjcmlwdChTY3JpcHRGb250RmFtaWx5TWFwJiBmb250TWFwLCBjb25z
dCBBdG9taWNTdHJpbmcmIGZhbWlseSwgVVNjcmlwdENvZGUgc2NyaXB0KQorc3RhdGljIGJvb2wg
c2V0R2VuZXJpY0ZvbnRGYW1pbHlGb3JTY3JpcHQoU2NyaXB0Rm9udEZhbWlseU1hcCYgZm9udE1h
cCwgY29uc3QgQXRvbVN0cmluZyYgZmFtaWx5LCBVU2NyaXB0Q29kZSBzY3JpcHQpCiB7CiAgICAg
aWYgKGZhbWlseS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmb250TWFwLnJlbW92ZShzdGF0
aWNfY2FzdDxpbnQ+KHNjcmlwdCkpOwotICAgIGF1dG8mIGZhbWlseUluTWFwID0gZm9udE1hcC5h
ZGQoc3RhdGljX2Nhc3Q8aW50PihzY3JpcHQpLCBBdG9taWNTdHJpbmcgeyB9KS5pdGVyYXRvci0+
dmFsdWU7CisgICAgYXV0byYgZmFtaWx5SW5NYXAgPSBmb250TWFwLmFkZChzdGF0aWNfY2FzdDxp
bnQ+KHNjcmlwdCksIEF0b21TdHJpbmcgeyB9KS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKGZh
bWlseUluTWFwID09IGZhbWlseSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGZhbWlseUlu
TWFwID0gZmFtaWx5OwpAQCAtNjQsNyArNjQsNyBAQCBzdGF0aWMgdm9pZCBsYW5ndWFnZUNoYW5n
ZWQodm9pZCopCiAgICAgY2FjaGVkVXNlclByZWZlcnNTaW1wbGlmaWVkKCkgPSBjb21wdXRlVXNl
clByZWZlcnNTaW1wbGlmaWVkKCk7CiB9CiAKLXN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGdl
bmVyaWNGb250RmFtaWx5Rm9yU2NyaXB0KGNvbnN0IFNjcmlwdEZvbnRGYW1pbHlNYXAmIGZvbnRN
YXAsIFVTY3JpcHRDb2RlIHNjcmlwdCkKK3N0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBnZW5lcmlj
Rm9udEZhbWlseUZvclNjcmlwdChjb25zdCBTY3JpcHRGb250RmFtaWx5TWFwJiBmb250TWFwLCBV
U2NyaXB0Q29kZSBzY3JpcHQpCiB7CiAgICAgU2NyaXB0Rm9udEZhbWlseU1hcDo6Y29uc3RfaXRl
cmF0b3IgaXQgPSBmb250TWFwLmZpbmQoc3RhdGljX2Nhc3Q8aW50PihzY3JpcHQpKTsKICAgICBp
ZiAoaXQgIT0gZm9udE1hcC5lbmQoKSkKQEAgLTg3LDcyICs4Nyw3MiBAQCBGb250R2VuZXJpY0Zh
bWlsaWVzOjpGb250R2VuZXJpY0ZhbWlsaWVzKCkKICAgICBsYW5ndWFnZUNoYW5nZWQobnVsbHB0
cik7CiB9CiAKLWNvbnN0IEF0b21pY1N0cmluZyYgRm9udEdlbmVyaWNGYW1pbGllczo6c3RhbmRh
cmRGb250RmFtaWx5KFVTY3JpcHRDb2RlIHNjcmlwdCkgY29uc3QKK2NvbnN0IEF0b21TdHJpbmcm
IEZvbnRHZW5lcmljRmFtaWxpZXM6OnN0YW5kYXJkRm9udEZhbWlseShVU2NyaXB0Q29kZSBzY3Jp
cHQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGdlbmVyaWNGb250RmFtaWx5Rm9yU2NyaXB0KG1fc3Rh
bmRhcmRGb250RmFtaWx5TWFwLCBzY3JpcHQpOwogfQogCi1jb25zdCBBdG9taWNTdHJpbmcmIEZv
bnRHZW5lcmljRmFtaWxpZXM6OmZpeGVkRm9udEZhbWlseShVU2NyaXB0Q29kZSBzY3JpcHQpIGNv
bnN0Citjb25zdCBBdG9tU3RyaW5nJiBGb250R2VuZXJpY0ZhbWlsaWVzOjpmaXhlZEZvbnRGYW1p
bHkoVVNjcmlwdENvZGUgc2NyaXB0KSBjb25zdAogewogICAgIHJldHVybiBnZW5lcmljRm9udEZh
bWlseUZvclNjcmlwdChtX2ZpeGVkRm9udEZhbWlseU1hcCwgc2NyaXB0KTsKIH0KIAotY29uc3Qg
QXRvbWljU3RyaW5nJiBGb250R2VuZXJpY0ZhbWlsaWVzOjpzZXJpZkZvbnRGYW1pbHkoVVNjcmlw
dENvZGUgc2NyaXB0KSBjb25zdAorY29uc3QgQXRvbVN0cmluZyYgRm9udEdlbmVyaWNGYW1pbGll
czo6c2VyaWZGb250RmFtaWx5KFVTY3JpcHRDb2RlIHNjcmlwdCkgY29uc3QKIHsKICAgICByZXR1
cm4gZ2VuZXJpY0ZvbnRGYW1pbHlGb3JTY3JpcHQobV9zZXJpZkZvbnRGYW1pbHlNYXAsIHNjcmlw
dCk7CiB9CiAKLWNvbnN0IEF0b21pY1N0cmluZyYgRm9udEdlbmVyaWNGYW1pbGllczo6c2Fuc1Nl
cmlmRm9udEZhbWlseShVU2NyaXB0Q29kZSBzY3JpcHQpIGNvbnN0Citjb25zdCBBdG9tU3RyaW5n
JiBGb250R2VuZXJpY0ZhbWlsaWVzOjpzYW5zU2VyaWZGb250RmFtaWx5KFVTY3JpcHRDb2RlIHNj
cmlwdCkgY29uc3QKIHsKICAgICByZXR1cm4gZ2VuZXJpY0ZvbnRGYW1pbHlGb3JTY3JpcHQobV9z
YW5zU2VyaWZGb250RmFtaWx5TWFwLCBzY3JpcHQpOwogfQogCi1jb25zdCBBdG9taWNTdHJpbmcm
IEZvbnRHZW5lcmljRmFtaWxpZXM6OmN1cnNpdmVGb250RmFtaWx5KFVTY3JpcHRDb2RlIHNjcmlw
dCkgY29uc3QKK2NvbnN0IEF0b21TdHJpbmcmIEZvbnRHZW5lcmljRmFtaWxpZXM6OmN1cnNpdmVG
b250RmFtaWx5KFVTY3JpcHRDb2RlIHNjcmlwdCkgY29uc3QKIHsKICAgICByZXR1cm4gZ2VuZXJp
Y0ZvbnRGYW1pbHlGb3JTY3JpcHQobV9jdXJzaXZlRm9udEZhbWlseU1hcCwgc2NyaXB0KTsKIH0K
IAotY29uc3QgQXRvbWljU3RyaW5nJiBGb250R2VuZXJpY0ZhbWlsaWVzOjpmYW50YXN5Rm9udEZh
bWlseShVU2NyaXB0Q29kZSBzY3JpcHQpIGNvbnN0Citjb25zdCBBdG9tU3RyaW5nJiBGb250R2Vu
ZXJpY0ZhbWlsaWVzOjpmYW50YXN5Rm9udEZhbWlseShVU2NyaXB0Q29kZSBzY3JpcHQpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIGdlbmVyaWNGb250RmFtaWx5Rm9yU2NyaXB0KG1fZmFudGFzeUZvbnRG
YW1pbHlNYXAsIHNjcmlwdCk7CiB9CiAKLWNvbnN0IEF0b21pY1N0cmluZyYgRm9udEdlbmVyaWNG
YW1pbGllczo6cGljdG9ncmFwaEZvbnRGYW1pbHkoVVNjcmlwdENvZGUgc2NyaXB0KSBjb25zdAor
Y29uc3QgQXRvbVN0cmluZyYgRm9udEdlbmVyaWNGYW1pbGllczo6cGljdG9ncmFwaEZvbnRGYW1p
bHkoVVNjcmlwdENvZGUgc2NyaXB0KSBjb25zdAogewogICAgIHJldHVybiBnZW5lcmljRm9udEZh
bWlseUZvclNjcmlwdChtX3BpY3RvZ3JhcGhGb250RmFtaWx5TWFwLCBzY3JpcHQpOwogfQogCi1i
b29sIEZvbnRHZW5lcmljRmFtaWxpZXM6OnNldFN0YW5kYXJkRm9udEZhbWlseShjb25zdCBBdG9t
aWNTdHJpbmcmIGZhbWlseSwgVVNjcmlwdENvZGUgc2NyaXB0KQorYm9vbCBGb250R2VuZXJpY0Zh
bWlsaWVzOjpzZXRTdGFuZGFyZEZvbnRGYW1pbHkoY29uc3QgQXRvbVN0cmluZyYgZmFtaWx5LCBV
U2NyaXB0Q29kZSBzY3JpcHQpCiB7CiAgICAgcmV0dXJuIHNldEdlbmVyaWNGb250RmFtaWx5Rm9y
U2NyaXB0KG1fc3RhbmRhcmRGb250RmFtaWx5TWFwLCBmYW1pbHksIHNjcmlwdCk7CiB9CiAKLWJv
b2wgRm9udEdlbmVyaWNGYW1pbGllczo6c2V0Rml4ZWRGb250RmFtaWx5KGNvbnN0IEF0b21pY1N0
cmluZyYgZmFtaWx5LCBVU2NyaXB0Q29kZSBzY3JpcHQpCitib29sIEZvbnRHZW5lcmljRmFtaWxp
ZXM6OnNldEZpeGVkRm9udEZhbWlseShjb25zdCBBdG9tU3RyaW5nJiBmYW1pbHksIFVTY3JpcHRD
b2RlIHNjcmlwdCkKIHsKICAgICByZXR1cm4gc2V0R2VuZXJpY0ZvbnRGYW1pbHlGb3JTY3JpcHQo
bV9maXhlZEZvbnRGYW1pbHlNYXAsIGZhbWlseSwgc2NyaXB0KTsKIH0KIAotYm9vbCBGb250R2Vu
ZXJpY0ZhbWlsaWVzOjpzZXRTZXJpZkZvbnRGYW1pbHkoY29uc3QgQXRvbWljU3RyaW5nJiBmYW1p
bHksIFVTY3JpcHRDb2RlIHNjcmlwdCkKK2Jvb2wgRm9udEdlbmVyaWNGYW1pbGllczo6c2V0U2Vy
aWZGb250RmFtaWx5KGNvbnN0IEF0b21TdHJpbmcmIGZhbWlseSwgVVNjcmlwdENvZGUgc2NyaXB0
KQogewogICAgIHJldHVybiBzZXRHZW5lcmljRm9udEZhbWlseUZvclNjcmlwdChtX3NlcmlmRm9u
dEZhbWlseU1hcCwgZmFtaWx5LCBzY3JpcHQpOwogfQogCi1ib29sIEZvbnRHZW5lcmljRmFtaWxp
ZXM6OnNldFNhbnNTZXJpZkZvbnRGYW1pbHkoY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHksIFVT
Y3JpcHRDb2RlIHNjcmlwdCkKK2Jvb2wgRm9udEdlbmVyaWNGYW1pbGllczo6c2V0U2Fuc1Nlcmlm
Rm9udEZhbWlseShjb25zdCBBdG9tU3RyaW5nJiBmYW1pbHksIFVTY3JpcHRDb2RlIHNjcmlwdCkK
IHsKICAgICByZXR1cm4gc2V0R2VuZXJpY0ZvbnRGYW1pbHlGb3JTY3JpcHQobV9zYW5zU2VyaWZG
b250RmFtaWx5TWFwLCBmYW1pbHksIHNjcmlwdCk7CiB9CiAKLWJvb2wgRm9udEdlbmVyaWNGYW1p
bGllczo6c2V0Q3Vyc2l2ZUZvbnRGYW1pbHkoY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHksIFVT
Y3JpcHRDb2RlIHNjcmlwdCkKK2Jvb2wgRm9udEdlbmVyaWNGYW1pbGllczo6c2V0Q3Vyc2l2ZUZv
bnRGYW1pbHkoY29uc3QgQXRvbVN0cmluZyYgZmFtaWx5LCBVU2NyaXB0Q29kZSBzY3JpcHQpCiB7
CiAgICAgcmV0dXJuIHNldEdlbmVyaWNGb250RmFtaWx5Rm9yU2NyaXB0KG1fY3Vyc2l2ZUZvbnRG
YW1pbHlNYXAsIGZhbWlseSwgc2NyaXB0KTsKIH0KIAotYm9vbCBGb250R2VuZXJpY0ZhbWlsaWVz
OjpzZXRGYW50YXN5Rm9udEZhbWlseShjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSwgVVNjcmlw
dENvZGUgc2NyaXB0KQorYm9vbCBGb250R2VuZXJpY0ZhbWlsaWVzOjpzZXRGYW50YXN5Rm9udEZh
bWlseShjb25zdCBBdG9tU3RyaW5nJiBmYW1pbHksIFVTY3JpcHRDb2RlIHNjcmlwdCkKIHsKICAg
ICByZXR1cm4gc2V0R2VuZXJpY0ZvbnRGYW1pbHlGb3JTY3JpcHQobV9mYW50YXN5Rm9udEZhbWls
eU1hcCwgZmFtaWx5LCBzY3JpcHQpOwogfQogCi1ib29sIEZvbnRHZW5lcmljRmFtaWxpZXM6OnNl
dFBpY3RvZ3JhcGhGb250RmFtaWx5KGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5LCBVU2NyaXB0
Q29kZSBzY3JpcHQpCitib29sIEZvbnRHZW5lcmljRmFtaWxpZXM6OnNldFBpY3RvZ3JhcGhGb250
RmFtaWx5KGNvbnN0IEF0b21TdHJpbmcmIGZhbWlseSwgVVNjcmlwdENvZGUgc2NyaXB0KQogewog
ICAgIHJldHVybiBzZXRHZW5lcmljRm9udEZhbWlseUZvclNjcmlwdChtX3BpY3RvZ3JhcGhGb250
RmFtaWx5TWFwLCBmYW1pbHksIHNjcmlwdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250R2VuZXJpY0ZhbWlsaWVzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250R2VuZXJpY0ZhbWlsaWVzLmgKaW5kZXggNDJmNDJiMmU1
Y2QxMTIwNGY4YzZjMTU0MjY3ZTRiOGNlMjRjNWI3YS4uNjg1ODY4ZGRhNTI3ZmQ4YTBkMDZmMWRj
ZGVhNWJmNGExYjBmZGFkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udEdlbmVyaWNGYW1pbGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRHZW5lcmljRmFtaWxpZXMuaApAQCAtMjgsOCArMjgsOCBAQAogCiAjaW5j
bHVkZSA8dW5pY29kZS91c2NyaXB0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNs
dWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNT
dHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZy5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L0F0b21TdHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAt
NDIsMjggKzQyLDI4IEBAIHN0cnVjdCBVU2NyaXB0Q29kZUhhc2hUcmFpdHMgOiBXVEY6OkdlbmVy
aWNIYXNoVHJhaXRzPGludD4gewogICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKGludCB2
YWx1ZSkgeyByZXR1cm4gdmFsdWUgPT0gLTM7IH0KIH07CiAKLXR5cGVkZWYgSGFzaE1hcDxpbnQs
IEF0b21pY1N0cmluZywgRGVmYXVsdEhhc2g8aW50Pjo6SGFzaCwgVVNjcmlwdENvZGVIYXNoVHJh
aXRzPiBTY3JpcHRGb250RmFtaWx5TWFwOwordHlwZWRlZiBIYXNoTWFwPGludCwgQXRvbVN0cmlu
ZywgRGVmYXVsdEhhc2g8aW50Pjo6SGFzaCwgVVNjcmlwdENvZGVIYXNoVHJhaXRzPiBTY3JpcHRG
b250RmFtaWx5TWFwOwogCiBjbGFzcyBGb250R2VuZXJpY0ZhbWlsaWVzIHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBGb250R2VuZXJpY0ZhbWlsaWVzKCk7CiAK
LSAgICBjb25zdCBBdG9taWNTdHJpbmcmIHN0YW5kYXJkRm9udEZhbWlseShVU2NyaXB0Q29kZSA9
IFVTQ1JJUFRfQ09NTU9OKSBjb25zdDsKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGZpeGVkRm9u
dEZhbWlseShVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKSBjb25zdDsKLSAgICBjb25zdCBB
dG9taWNTdHJpbmcmIHNlcmlmRm9udEZhbWlseShVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9O
KSBjb25zdDsKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIHNhbnNTZXJpZkZvbnRGYW1pbHkoVVNj
cmlwdENvZGUgPSBVU0NSSVBUX0NPTU1PTikgY29uc3Q7Ci0gICAgY29uc3QgQXRvbWljU3RyaW5n
JiBjdXJzaXZlRm9udEZhbWlseShVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKSBjb25zdDsK
LSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGZhbnRhc3lGb250RmFtaWx5KFVTY3JpcHRDb2RlID0g
VVNDUklQVF9DT01NT04pIGNvbnN0OwotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgcGljdG9ncmFw
aEZvbnRGYW1pbHkoVVNjcmlwdENvZGUgPSBVU0NSSVBUX0NPTU1PTikgY29uc3Q7CisgICAgY29u
c3QgQXRvbVN0cmluZyYgc3RhbmRhcmRGb250RmFtaWx5KFVTY3JpcHRDb2RlID0gVVNDUklQVF9D
T01NT04pIGNvbnN0OworICAgIGNvbnN0IEF0b21TdHJpbmcmIGZpeGVkRm9udEZhbWlseShVU2Ny
aXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKSBjb25zdDsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBz
ZXJpZkZvbnRGYW1pbHkoVVNjcmlwdENvZGUgPSBVU0NSSVBUX0NPTU1PTikgY29uc3Q7CisgICAg
Y29uc3QgQXRvbVN0cmluZyYgc2Fuc1NlcmlmRm9udEZhbWlseShVU2NyaXB0Q29kZSA9IFVTQ1JJ
UFRfQ09NTU9OKSBjb25zdDsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBjdXJzaXZlRm9udEZhbWls
eShVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKSBjb25zdDsKKyAgICBjb25zdCBBdG9tU3Ry
aW5nJiBmYW50YXN5Rm9udEZhbWlseShVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKSBjb25z
dDsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBwaWN0b2dyYXBoRm9udEZhbWlseShVU2NyaXB0Q29k
ZSA9IFVTQ1JJUFRfQ09NTU9OKSBjb25zdDsKIAotICAgIGJvb2wgc2V0U3RhbmRhcmRGb250RmFt
aWx5KGNvbnN0IEF0b21pY1N0cmluZyYsIFVTY3JpcHRDb2RlKTsKLSAgICBib29sIHNldEZpeGVk
Rm9udEZhbWlseShjb25zdCBBdG9taWNTdHJpbmcmLCBVU2NyaXB0Q29kZSk7Ci0gICAgYm9vbCBz
ZXRTZXJpZkZvbnRGYW1pbHkoY29uc3QgQXRvbWljU3RyaW5nJiwgVVNjcmlwdENvZGUpOwotICAg
IGJvb2wgc2V0U2Fuc1NlcmlmRm9udEZhbWlseShjb25zdCBBdG9taWNTdHJpbmcmLCBVU2NyaXB0
Q29kZSk7Ci0gICAgYm9vbCBzZXRDdXJzaXZlRm9udEZhbWlseShjb25zdCBBdG9taWNTdHJpbmcm
LCBVU2NyaXB0Q29kZSk7Ci0gICAgYm9vbCBzZXRGYW50YXN5Rm9udEZhbWlseShjb25zdCBBdG9t
aWNTdHJpbmcmLCBVU2NyaXB0Q29kZSk7Ci0gICAgYm9vbCBzZXRQaWN0b2dyYXBoRm9udEZhbWls
eShjb25zdCBBdG9taWNTdHJpbmcmLCBVU2NyaXB0Q29kZSk7CisgICAgYm9vbCBzZXRTdGFuZGFy
ZEZvbnRGYW1pbHkoY29uc3QgQXRvbVN0cmluZyYsIFVTY3JpcHRDb2RlKTsKKyAgICBib29sIHNl
dEZpeGVkRm9udEZhbWlseShjb25zdCBBdG9tU3RyaW5nJiwgVVNjcmlwdENvZGUpOworICAgIGJv
b2wgc2V0U2VyaWZGb250RmFtaWx5KGNvbnN0IEF0b21TdHJpbmcmLCBVU2NyaXB0Q29kZSk7Cisg
ICAgYm9vbCBzZXRTYW5zU2VyaWZGb250RmFtaWx5KGNvbnN0IEF0b21TdHJpbmcmLCBVU2NyaXB0
Q29kZSk7CisgICAgYm9vbCBzZXRDdXJzaXZlRm9udEZhbWlseShjb25zdCBBdG9tU3RyaW5nJiwg
VVNjcmlwdENvZGUpOworICAgIGJvb2wgc2V0RmFudGFzeUZvbnRGYW1pbHkoY29uc3QgQXRvbVN0
cmluZyYsIFVTY3JpcHRDb2RlKTsKKyAgICBib29sIHNldFBpY3RvZ3JhcGhGb250RmFtaWx5KGNv
bnN0IEF0b21TdHJpbmcmLCBVU2NyaXB0Q29kZSk7CiAKIHByaXZhdGU6CiAgICAgU2NyaXB0Rm9u
dEZhbWlseU1hcCBtX3N0YW5kYXJkRm9udEZhbWlseU1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaAppbmRleCA2Y2QwMjJjZWVj
NjRlZjkzMDk3MDJiZDRhMzg4MThkYjc2MzQ2Y2VhLi4xY2E5NzVlOWY3ODhkM2IzMDQ5ZTMwMGVm
NDg0ZDNiMmI0NWM3YmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250UGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCkBAIC04MCw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICBG
b250UGxhdGZvcm1EYXRhKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSk7CiAgICAgRm9u
dFBsYXRmb3JtRGF0YSgpOwogCi0gICAgRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3Jp
cHRpb24mLCBjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSk7CisgICAgRm9udFBsYXRmb3JtRGF0
YShjb25zdCBGb250RGVzY3JpcHRpb24mLCBjb25zdCBBdG9tU3RyaW5nJiBmYW1pbHkpOwogICAg
IEZvbnRQbGF0Zm9ybURhdGEoZmxvYXQgc2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5
bnRoZXRpY09ibGlxdWUsIEZvbnRPcmllbnRhdGlvbiA9IEZvbnRPcmllbnRhdGlvbjo6SG9yaXpv
bnRhbCwgRm9udFdpZHRoVmFyaWFudCA9IEZvbnRXaWR0aFZhcmlhbnQ6OlJlZ3VsYXJXaWR0aCwg
VGV4dFJlbmRlcmluZ01vZGUgPSBUZXh0UmVuZGVyaW5nTW9kZTo6QXV0b1RleHRSZW5kZXJpbmcp
OwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250U2VsZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnRTZWxlY3Rvci5oCmluZGV4IDA0ZGQzM2VhNDgwNWFiY2UzNzI5NmJjMjczZjY4
ZGE1MDg5NzM1ZmEuLmFjOWMxNjk2ZDE0MzdmYzU0ODFhYTYzOTgwYjYxMDA2ZDg1YzJmNTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRTZWxlY3Rvci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRTZWxlY3Rvci5oCkBA
IC00NywxMiArNDcsMTIgQEAgY2xhc3MgRm9udFNlbGVjdG9yIDogcHVibGljIFJlZkNvdW50ZWQ8
Rm9udFNlbGVjdG9yPiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Rm9udFNlbGVjdG9yKCkgPSBk
ZWZhdWx0OwogCi0gICAgdmlydHVhbCBGb250UmFuZ2VzIGZvbnRSYW5nZXNGb3JGYW1pbHkoY29u
c3QgRm9udERlc2NyaXB0aW9uJiwgY29uc3QgQXRvbWljU3RyaW5nJikgPSAwOworICAgIHZpcnR1
YWwgRm9udFJhbmdlcyBmb250UmFuZ2VzRm9yRmFtaWx5KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYs
IGNvbnN0IEF0b21TdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCBSZWZQdHI8Rm9udD4gZmFsbGJh
Y2tGb250QXQoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgc2l6ZV90KSA9IDA7CiAKICAgICB2aXJ0
dWFsIHNpemVfdCBmYWxsYmFja0ZvbnRDb3VudCgpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBv
cHBvcnR1bmlzdGljYWxseVN0YXJ0Rm9udERhdGFVUkxMb2FkaW5nKGNvbnN0IEZvbnRDYXNjYWRl
RGVzY3JpcHRpb24mLCBjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBvcHBvcnR1bmlzdGljYWxseVN0YXJ0Rm9udERhdGFVUkxMb2FkaW5nKGNvbnN0IEZv
bnRDYXNjYWRlRGVzY3JpcHRpb24mLCBjb25zdCBBdG9tU3RyaW5nJiBmYW1pbHkpID0gMDsKIAog
ICAgIHZpcnR1YWwgdm9pZCBmb250Q2FjaGVJbnZhbGlkYXRlZCgpIHsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250VGFnZ2VkU2V0dGluZ3MuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFRhZ2dlZFNldHRpbmdzLmNw
cAppbmRleCBkMzVlYjE2YmE1MmFkMDNmMDdhNGVmZWQwNDFiZmJlODg0MDMzNjEwLi40ZTYwOGYx
OTI1YTU3OGFkYzA2YTgxOTc5OGFiNTU3Y2NkMzE1NzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250VGFnZ2VkU2V0dGluZ3MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRUYWdnZWRTZXR0aW5ncy5jcHAKQEAgLTI4
LDcgKzI4LDcgQEAKICNpbmNsdWRlICJGb250VGFnZ2VkU2V0dGluZ3MuaCIKIAogI2luY2x1ZGUg
PHd0Zi9IYXNoZXIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmdIYXNoLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZ0hhc2guaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9U
ZXh0U3RyZWFtLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCmluZGV4IDEzMzJjOTQw
ZmQxMDI3NjNkZjRkMDhkZDI2ZjhjYWEyNDFjZWZhZDUuLjdkMWRiN2QzZGIyYmU5NzE5NjIxOThk
NGY5MzZlOWE0MThiYTgxZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAtNjY2LDcgKzY2Niw3IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVm
ZmVyJiBidWZmZXIsIHVuCiAgICAgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMoKnRoaXMsIGZvbnQs
IGJ1ZmZlciwgZnJvbSwgbnVtR2x5cGhzLCBwb2ludCwgZm9udFNtb290aGluZ01vZGUpOwogfQog
Ci12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0VtcGhhc2lzTWFya3MoY29uc3QgRm9udENhc2Nh
ZGUmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgQXRvbWljU3RyaW5nJiBtYXJrLCBj
b25zdCBGbG9hdFBvaW50JiBwb2ludCwgdW5zaWduZWQgZnJvbSwgT3B0aW9uYWw8dW5zaWduZWQ+
IHRvKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdFbXBoYXNpc01hcmtzKGNvbnN0IEZvbnRD
YXNjYWRlJiBmb250LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEF0b21TdHJpbmcmIG1hcmss
IGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCB1bnNpZ25lZCBmcm9tLCBPcHRpb25hbDx1bnNpZ25l
ZD4gdG8pCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
aAppbmRleCA2MzhiNzY3MWM5ZWNiNTNhYjhlZmI1YjhmM2VkM2EyYzNmMzZlNGM0Li5iODQwN2Vm
OTM0NWY3YjdkNWUzODY1Y2M0NThmNDNkNDZlNDBkNWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtNDIzLDcgKzQyMyw3
IEBAIHB1YmxpYzoKIAogICAgIGZsb2F0IGRyYXdUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiwgY29u
c3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCBmcm9tID0gMCwgT3B0aW9u
YWw8dW5zaWduZWQ+IHRvID0gV1RGOjpudWxsb3B0KTsKICAgICB2b2lkIGRyYXdHbHlwaHMoY29u
c3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyJiwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgbnVt
R2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiwgRm9udFNtb290aGluZ01vZGUpOwotICAgIHZvaWQg
ZHJhd0VtcGhhc2lzTWFya3MoY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBUZXh0UnVuJiwgY29u
c3QgQXRvbWljU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgZnJvbSA9
IDAsIE9wdGlvbmFsPHVuc2lnbmVkPiB0byA9IFdURjo6bnVsbG9wdCk7CisgICAgdm9pZCBkcmF3
RW1waGFzaXNNYXJrcyhjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBB
dG9tU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgZnJvbSA9IDAsIE9w
dGlvbmFsPHVuc2lnbmVkPiB0byA9IFdURjo6bnVsbG9wdCk7CiAgICAgdm9pZCBkcmF3QmlkaVRl
eHQoY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2ludCYs
IEZvbnRDYXNjYWRlOjpDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24gPSBGb250Q2FzY2FkZTo6RG9O
b3RQYWludElmRm9udE5vdFJlYWR5KTsKIAogICAgIHZvaWQgYXBwbHlTdGF0ZShjb25zdCBHcmFw
aGljc0NvbnRleHRTdGF0ZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oCmluZGV4IDEzZjE4Nzg5M2I0NDBm
ZmI1OGQzYmViMWY2M2Y0YjRkMjEzYjU2ODUuLmIzMzQyMzU4M2RhNmI1YTRmN2JjYzU5ZDAxMDdm
Nzk2NmQ2ZTZmMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0luYmFuZFRleHRUcmFja1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlLmgKQEAgLTY5LDEwICs2OSwxMCBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBib29sIGlzTWFpblByb2dyYW1Db250ZW50KCkgY29uc3QgeyByZXR1
cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0Vhc3lUb1JlYWQoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0RlZmF1bHQoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQotICAgIEF0b21pY1N0cmluZyBsYWJlbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGVtcHR5QXRvbSgpOyB9Ci0gICAgQXRvbWljU3RyaW5nIGxhbmd1YWdlKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gZW1wdHlBdG9tKCk7IH0KLSAgICBBdG9taWNTdHJpbmcgaWQoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBlbXB0eUF0b20oKTsgfQotICAgIHZpcnR1YWwgQXRvbWljU3RyaW5n
IGluQmFuZE1ldGFkYXRhVHJhY2tEaXNwYXRjaFR5cGUoKSBjb25zdCB7IHJldHVybiBlbXB0eUF0
b20oKTsgfQorICAgIEF0b21TdHJpbmcgbGFiZWwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBl
bXB0eUF0b20oKTsgfQorICAgIEF0b21TdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBlbXB0eUF0b20oKTsgfQorICAgIEF0b21TdHJpbmcgaWQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBlbXB0eUF0b20oKTsgfQorICAgIHZpcnR1YWwgQXRvbVN0cmluZyBpbkJhbmRN
ZXRhZGF0YVRyYWNrRGlzcGF0Y2hUeXBlKCkgY29uc3QgeyByZXR1cm4gZW1wdHlBdG9tKCk7IH0K
IAogICAgIHZpcnR1YWwgaW50IHRleHRUcmFja0luZGV4KCkgY29uc3QgeyByZXR1cm4gMDsgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAK
aW5kZXggNWE3MDRiMzIyMmM1YmM2OGJhNGE2MTQwNmM5NWQ3OGNiYjQwODMzNC4uMDExNDljNDUy
ZTM3NzRiZTViZDc2YWQwZjllMzFlNGU2NjI4ZmU1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApAQCAtMjg3LDE1ICsyODcsMTUgQEAg
c3RhdGljIHZvaWQgYWRkTWVkaWFFbmdpbmUoQ3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXImJiBjb25z
dHJ1Y3RvciwgTWVkaWFFbmdpbmVTdXAKICAgICBtdXRhYmxlSW5zdGFsbGVkTWVkaWFFbmdpbmVz
VmVjdG9yKCkuYXBwZW5kKE1lZGlhUGxheWVyRmFjdG9yeSB7IFdURk1vdmUoY29uc3RydWN0b3Ip
LCBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBlLCBvcmlnaW5zSW5NZWRpYUNhY2hlLCBj
bGVhck1lZGlhQ2FjaGUsIGNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMsIHN1cHBvcnRzS2V5U3lz
dGVtIH0pOwogfQogCi1zdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBhcHBsaWNhdGlvbk9jdGV0
U3RyZWFtKCkKK3N0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBhcHBsaWNhdGlvbk9jdGV0U3RyZWFt
KCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBhcHBs
aWNhdGlvbk9jdGV0U3RyZWFtKCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29u
c3QgQXRvbVN0cmluZz4gYXBwbGljYXRpb25PY3RldFN0cmVhbSgiYXBwbGljYXRpb24vb2N0ZXQt
c3RyZWFtIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHJldHVybiBh
cHBsaWNhdGlvbk9jdGV0U3RyZWFtOwogfQogCi1zdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiB0
ZXh0UGxhaW4oKQorc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIHRleHRQbGFpbigpCiB7Ci0gICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gdGV4dFBsYWluKCJ0ZXh0
L3BsYWluIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHRleHRQbGFpbigidGV4dC9wbGFpbiIs
IEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gdGV4dFBsYWlu
OwogfQogCkBAIC0zOTAsNyArMzkwLDcgQEAgYm9vbCBNZWRpYVBsYXllcjo6bG9hZChjb25zdCBV
UkwmIHVybCwgY29uc3QgQ29udGVudFR5cGUmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHIKICNlbmRp
ZgogCiAgICAgLy8gSWYgdGhlIE1JTUUgdHlwZSBpcyBtaXNzaW5nIG9yIGlzIG5vdCBtZWFuaW5n
ZnVsLCB0cnkgdG8gZmlndXJlIGl0IG91dCBmcm9tIHRoZSBVUkwuCi0gICAgQXRvbWljU3RyaW5n
IGNvbnRhaW5lclR5cGUgPSBtX2NvbnRlbnRUeXBlLmNvbnRhaW5lclR5cGUoKTsKKyAgICBBdG9t
U3RyaW5nIGNvbnRhaW5lclR5cGUgPSBtX2NvbnRlbnRUeXBlLmNvbnRhaW5lclR5cGUoKTsKICAg
ICBpZiAoY29udGFpbmVyVHlwZS5pc0VtcHR5KCkgfHwgY29udGFpbmVyVHlwZSA9PSBhcHBsaWNh
dGlvbk9jdGV0U3RyZWFtKCkgfHwgY29udGFpbmVyVHlwZSA9PSB0ZXh0UGxhaW4oKSkgewogICAg
ICAgICBpZiAobV91cmwucHJvdG9jb2xJc0RhdGEoKSkKICAgICAgICAgICAgIG1fY29udGVudFR5
cGUgPSBDb250ZW50VHlwZShtaW1lVHlwZUZyb21EYXRhVVJMKG1fdXJsLnN0cmluZygpKSk7CkBA
IC05MjAsNyArOTIwLDcgQEAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllcjo6
c3VwcG9ydHNUeXBlKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmEKIHsKICAgICAvLyA0Ljgu
MTAuMyBNSU1FIHR5cGVzIC0gVGhlIGNhblBsYXlUeXBlKHR5cGUpIG1ldGhvZCBtdXN0IHJldHVy
biB0aGUgZW1wdHkgc3RyaW5nIGlmIHR5cGUgaXMgYSB0eXBlIHRoYXQgdGhlIAogICAgIC8vIHVz
ZXIgYWdlbnQga25vd3MgaXQgY2Fubm90IHJlbmRlciBvciBpcyB0aGUgdHlwZSAiYXBwbGljYXRp
b24vb2N0ZXQtc3RyZWFtIgotICAgIEF0b21pY1N0cmluZyBjb250YWluZXJUeXBlID0gcGFyYW1l
dGVycy50eXBlLmNvbnRhaW5lclR5cGUoKTsKKyAgICBBdG9tU3RyaW5nIGNvbnRhaW5lclR5cGUg
PSBwYXJhbWV0ZXJzLnR5cGUuY29udGFpbmVyVHlwZSgpOwogICAgIGlmIChjb250YWluZXJUeXBl
ID09IGFwcGxpY2F0aW9uT2N0ZXRTdHJlYW0oKSkKICAgICAgICAgcmV0dXJuIElzTm90U3VwcG9y
dGVkOwogCkBAIC0xNDk4LDcgKzE0OTgsNyBAQCB2b2lkIE1lZGlhUGxheWVyRmFjdG9yeVN1cHBv
cnQ6OmNhbGxSZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0ZXIgcmVnaQogICAg
IHJlZ2lzdGVyTWVkaWFFbmdpbmUoYWRkTWVkaWFFbmdpbmUpOwogfQogCi1ib29sIE1lZGlhUGxh
eWVyOjpkb2VzSGF2ZUF0dHJpYnV0ZShjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZSwgQXRv
bWljU3RyaW5nKiB2YWx1ZSkgY29uc3QKK2Jvb2wgTWVkaWFQbGF5ZXI6OmRvZXNIYXZlQXR0cmli
dXRlKGNvbnN0IEF0b21TdHJpbmcmIGF0dHJpYnV0ZSwgQXRvbVN0cmluZyogdmFsdWUpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIGNsaWVudCgpLmRvZXNIYXZlQXR0cmlidXRlKGF0dHJpYnV0ZSwgdmFs
dWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmgKaW5kZXggM2UxMjYzYmJiNjNhMzg3ZmUyYzJmYjRlMTZkMGQwN2Y3ZmNlNmRlNi4uN2ZlODRk
NzkzNzA2Y2Q0MDhjMGU1YWE3MWMzZDQ1OGYwNmU0ZWRmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBAIC0xOTQsNyArMTk0LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgYm9vbCBtZWRpYVBsYXllcklzTG9vcGluZygpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBDYWNoZWRSZXNvdXJjZUxvYWRlciogbWVkaWFQbGF5
ZXJDYWNoZWRSZXNvdXJjZUxvYWRlcigpIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICB2aXJ0dWFs
IFJlZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXI+IG1lZGlhUGxheWVyQ3JlYXRlUmVz
b3VyY2VMb2FkZXIoKSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCBib29sIGRvZXNI
YXZlQXR0cmlidXRlKGNvbnN0IEF0b21pY1N0cmluZyYsIEF0b21pY1N0cmluZyogPSBudWxscHRy
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBkb2VzSGF2ZUF0dHJp
YnV0ZShjb25zdCBBdG9tU3RyaW5nJiwgQXRvbVN0cmluZyogPSBudWxscHRyKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBtZWRpYVBsYXllclNob3VsZFVzZVBlcnNp
c3RlbnRDYWNoZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGNvbnN0IFN0
cmluZyYgbWVkaWFQbGF5ZXJNZWRpYUNhY2hlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gZW1w
dHlTdHJpbmcoKTsgfQogCkBAIC0yNjcsNyArMjY3LDcgQEAgcHVibGljOgogICAgIGJvb2wgc3Vw
cG9ydHNTY2FubmluZygpIGNvbnN0OwogICAgIGJvb2wgY2FuU2F2ZU1lZGlhRGF0YSgpIGNvbnN0
OwogICAgIGJvb2wgcmVxdWlyZXNJbW1lZGlhdGVDb21wb3NpdGluZygpIGNvbnN0OwotICAgIGJv
b2wgZG9lc0hhdmVBdHRyaWJ1dGUoY29uc3QgQXRvbWljU3RyaW5nJiwgQXRvbWljU3RyaW5nKiB2
YWx1ZSA9IG51bGxwdHIpIGNvbnN0OworICAgIGJvb2wgZG9lc0hhdmVBdHRyaWJ1dGUoY29uc3Qg
QXRvbVN0cmluZyYsIEF0b21TdHJpbmcqIHZhbHVlID0gbnVsbHB0cikgY29uc3Q7CiAgICAgUGxh
dGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0OwogCiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RF
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1
ZmZlclByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1
ZmZlclByaXZhdGUuaAppbmRleCA1OTQ3NzAzMzdkYTYwNDkwZDc3M2IyOTVkMjQ1NjAyZGUzZjc4
OTM0Li40NmUzMDJkMzE4ZTZiNWFkNjc3OTM5N2EyZThmZjE1ODNhMGQxMzFjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0
ZS5oCkBAIC01NSwxNCArNTUsMTQgQEAgcHVibGljOgogICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6
OlJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0
UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSkgPSAwOwogCi0gICAgdmlydHVhbCB2
b2lkIGZsdXNoKGNvbnN0IEF0b21pY1N0cmluZyYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBlbnF1
ZXVlU2FtcGxlKFJlZjxNZWRpYVNhbXBsZT4mJiwgY29uc3QgQXRvbWljU3RyaW5nJikgeyB9Ci0g
ICAgdmlydHVhbCB2b2lkIGFsbFNhbXBsZXNJblRyYWNrRW5xdWV1ZWQoY29uc3QgQXRvbWljU3Ry
aW5nJikgeyB9Ci0gICAgdmlydHVhbCBib29sIGlzUmVhZHlGb3JNb3JlU2FtcGxlcyhjb25zdCBB
dG9taWNTdHJpbmcmKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBmbHVzaChj
b25zdCBBdG9tU3RyaW5nJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGVucXVldWVTYW1wbGUoUmVm
PE1lZGlhU2FtcGxlPiYmLCBjb25zdCBBdG9tU3RyaW5nJikgeyB9CisgICAgdmlydHVhbCB2b2lk
IGFsbFNhbXBsZXNJblRyYWNrRW5xdWV1ZWQoY29uc3QgQXRvbVN0cmluZyYpIHsgfQorICAgIHZp
cnR1YWwgYm9vbCBpc1JlYWR5Rm9yTW9yZVNhbXBsZXMoY29uc3QgQXRvbVN0cmluZyYpIHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldEFjdGl2ZShib29sKSB7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgbm90aWZ5Q2xpZW50V2hlblJlYWR5Rm9yTW9yZVNhbXBsZXMoY29uc3QgQXRv
bWljU3RyaW5nJikgeyB9CisgICAgdmlydHVhbCB2b2lkIG5vdGlmeUNsaWVudFdoZW5SZWFkeUZv
ck1vcmVTYW1wbGVzKGNvbnN0IEF0b21TdHJpbmcmKSB7IH0KIAotICAgIHZpcnR1YWwgVmVjdG9y
PFN0cmluZz4gZW5xdWV1ZWRTYW1wbGVzRm9yVHJhY2tJRChjb25zdCBBdG9taWNTdHJpbmcmKSB7
IHJldHVybiB7IH07IH0KKyAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IGVucXVldWVkU2FtcGxl
c0ZvclRyYWNrSUQoY29uc3QgQXRvbVN0cmluZyYpIHsgcmV0dXJuIHsgfTsgfQogCiAgICAgdmly
dHVhbCBib29sIGNhblN3aXRjaFRvVHlwZShjb25zdCBDb250ZW50VHlwZSYpIHsgcmV0dXJuIGZh
bHNlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Nv
dXJjZUJ1ZmZlclByaXZhdGVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1NvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQuaAppbmRleCAwYjZhZGJlZWNhNDE0MTYwODA0
ZDIxYjlkN2EyOWMyYWE4M2EwODc4Li4wMDU2NWE5MWZlYTk4YTY0MThhNDQ2MjBjYmMzNjZlOWU4
ZjEwYWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3Vy
Y2VCdWZmZXJQcml2YXRlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudC5oCkBAIC02OCw4ICs2OCw4IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIGJvb2wgc291cmNlQnVmZmVyUHJpdmF0ZUhhc0F1ZGlvKCkgY29uc3Qg
PSAwOwogICAgIHZpcnR1YWwgYm9vbCBzb3VyY2VCdWZmZXJQcml2YXRlSGFzVmlkZW8oKSBjb25z
dCA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZVJlZW5xdWVTYW1w
bGVzKGNvbnN0IEF0b21pY1N0cmluZyYgdHJhY2tJRCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBz
b3VyY2VCdWZmZXJQcml2YXRlRGlkQmVjb21lUmVhZHlGb3JNb3JlU2FtcGxlcyhjb25zdCBBdG9t
aWNTdHJpbmcmIHRyYWNrSUQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc291cmNlQnVmZmVyUHJp
dmF0ZVJlZW5xdWVTYW1wbGVzKGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSUQpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZURpZEJlY29tZVJlYWR5Rm9yTW9yZVNhbXBs
ZXMoY29uc3QgQXRvbVN0cmluZyYgdHJhY2tJRCkgPSAwOwogCiAgICAgdmlydHVhbCBNZWRpYVRp
bWUgc291cmNlQnVmZmVyUHJpdmF0ZUZhc3RTZWVrVGltZUZvck1lZGlhVGltZShjb25zdCBNZWRp
YVRpbWUmLCBjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBNZWRpYVRpbWUmKSA9IDA7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RyYWNrUHJpdmF0ZUJhc2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RyYWNrUHJpdmF0ZUJhc2UuaApp
bmRleCA0NzY2NjIyYmJlYThjNDEzOThlOWI3NzE1NmJhNWNjNmQ0ZjZhNGYxLi5lZDc5OTNkOGFk
YTQ2NWFkZjM4NjI4NDg1YzQ3NzEzZjE0YzYyYmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9UcmFja1ByaXZhdGVCYXNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvVHJhY2tQcml2YXRlQmFzZS5oCkBAIC0zMiwxNiArMzIsMTYg
QEAKICNpbmNsdWRlIDx3dGYvTG9nZ2VySGVscGVyLmg+CiAjaW5jbHVkZSA8d3RmL01lZGlhVGlt
ZS5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0
Zi90ZXh0L0F0b21pY1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBUcmFja1ByaXZhdGVCYXNlQ2xpZW50IHsK
IHB1YmxpYzoKICAgICB2aXJ0dWFsIH5UcmFja1ByaXZhdGVCYXNlQ2xpZW50KCkgPSBkZWZhdWx0
OwotICAgIHZpcnR1YWwgdm9pZCBpZENoYW5nZWQoY29uc3QgQXRvbWljU3RyaW5nJikgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBsYWJlbENoYW5nZWQoY29uc3QgQXRvbWljU3RyaW5nJikgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBsYW5ndWFnZUNoYW5nZWQoY29uc3QgQXRvbWljU3RyaW5nJikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBpZENoYW5nZWQoY29uc3QgQXRvbVN0cmluZyYpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgbGFiZWxDaGFuZ2VkKGNvbnN0IEF0b21TdHJpbmcmKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGxhbmd1YWdlQ2hhbmdlZChjb25zdCBBdG9tU3RyaW5nJikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCB3aWxsUmVtb3ZlKCkgPSAwOwogfTsKIApAQCAtNTgsOSArNTgsOSBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIFRyYWNrUHJpdmF0ZUJhc2VDbGllbnQqIGNsaWVudCgpIGNv
bnN0ID0gMDsKIAotICAgIHZpcnR1YWwgQXRvbWljU3RyaW5nIGlkKCkgY29uc3QgeyByZXR1cm4g
ZW1wdHlBdG9tKCk7IH0KLSAgICB2aXJ0dWFsIEF0b21pY1N0cmluZyBsYWJlbCgpIGNvbnN0IHsg
cmV0dXJuIGVtcHR5QXRvbSgpOyB9Ci0gICAgdmlydHVhbCBBdG9taWNTdHJpbmcgbGFuZ3VhZ2Uo
KSBjb25zdCB7IHJldHVybiBlbXB0eUF0b20oKTsgfQorICAgIHZpcnR1YWwgQXRvbVN0cmluZyBp
ZCgpIGNvbnN0IHsgcmV0dXJuIGVtcHR5QXRvbSgpOyB9CisgICAgdmlydHVhbCBBdG9tU3RyaW5n
IGxhYmVsKCkgY29uc3QgeyByZXR1cm4gZW1wdHlBdG9tKCk7IH0KKyAgICB2aXJ0dWFsIEF0b21T
dHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCB7IHJldHVybiBlbXB0eUF0b20oKTsgfQogCiAgICAgdmly
dHVhbCBpbnQgdHJhY2tJbmRleCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0FWVHJhY2tQcml2
YXRlQVZGT2JqQ0ltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9BVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsLmgKaW5kZXggMzgxMGM1ZmE2MjY5ZjY5
OTAwZmMzY2NmNDQ0NmNmNjAzNzc2ZGQxZC4uYTllY2QzMjEzNmRhODc3MDJmNDc4YWZjZDhhY2M4
ZWI5N2MyMzk0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL0FWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQVZUcmFja1ByaXZhdGVBVkZPYmpD
SW1wbC5oCkBAIC02MSw5ICs2MSw5IEBAIHB1YmxpYzoKICAgICBWaWRlb1RyYWNrUHJpdmF0ZTo6
S2luZCB2aWRlb0tpbmQoKSBjb25zdDsKIAogICAgIGludCBpbmRleCgpIGNvbnN0OwotICAgIEF0
b21pY1N0cmluZyBpZCgpIGNvbnN0OwotICAgIEF0b21pY1N0cmluZyBsYWJlbCgpIGNvbnN0Owot
ICAgIEF0b21pY1N0cmluZyBsYW5ndWFnZSgpIGNvbnN0OworICAgIEF0b21TdHJpbmcgaWQoKSBj
b25zdDsKKyAgICBBdG9tU3RyaW5nIGxhYmVsKCkgY29uc3Q7CisgICAgQXRvbVN0cmluZyBsYW5n
dWFnZSgpIGNvbnN0OwogCiAgICAgaW50IHRyYWNrSUQoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0FWVHJhY2tQcml2
YXRlQVZGT2JqQ0ltcGwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbC5tbQppbmRleCAwMTUwMmNkYjBiZWFi
ZTM4ODBiZjMzZDU0MzJmMmY2NTI2ZjM2YzdmLi5jNWUzMjgwYmIxMTU3Y2YzZDMzZDdlMDY4ZDEx
ZWQ0YzAwZTU1YmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbC5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQVZUcmFja1ByaXZhdGVBVkZP
YmpDSW1wbC5tbQpAQCAtMTUzLDE3ICsxNTMsMTcgQEAgaW50IEFWVHJhY2tQcml2YXRlQVZGT2Jq
Q0ltcGw6OmluZGV4KCkgY29uc3QKICAgICByZXR1cm4gMDsKIH0KIAotQXRvbWljU3RyaW5nIEFW
VHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw6OmlkKCkgY29uc3QKK0F0b21TdHJpbmcgQVZUcmFja1By
aXZhdGVBVkZPYmpDSW1wbDo6aWQoKSBjb25zdAogewogICAgIGlmIChtX2Fzc2V0VHJhY2spCi0g
ICAgICAgIHJldHVybiBBdG9taWNTdHJpbmc6Om51bWJlcihbbV9hc3NldFRyYWNrIHRyYWNrSURd
KTsKKyAgICAgICAgcmV0dXJuIEF0b21TdHJpbmc6Om51bWJlcihbbV9hc3NldFRyYWNrIHRyYWNr
SURdKTsKICAgICBpZiAobV9tZWRpYVNlbGVjdGlvbk9wdGlvbikKICAgICAgICAgcmV0dXJuIFtb
bV9tZWRpYVNlbGVjdGlvbk9wdGlvbi0+YXZNZWRpYVNlbGVjdGlvbk9wdGlvbigpIG9wdGlvbklE
XSBzdHJpbmdWYWx1ZV07CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIGVt
cHR5QXRvbSgpOwogfQogCi1BdG9taWNTdHJpbmcgQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbDo6
bGFiZWwoKSBjb25zdAorQXRvbVN0cmluZyBBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsOjpsYWJl
bCgpIGNvbnN0CiB7CiAgICAgTlNBcnJheSAqY29tbW9uTWV0YWRhdGEgPSBuaWw7CiAgICAgaWYg
KG1fYXNzZXRUcmFjaykKQEAgLTE4NCw3ICsxODQsNyBAQCBBdG9taWNTdHJpbmcgQVZUcmFja1By
aXZhdGVBVkZPYmpDSW1wbDo6bGFiZWwoKSBjb25zdAogICAgIHJldHVybiBbW3RpdGxlcyBvYmpl
Y3RBdEluZGV4OjBdIHN0cmluZ1ZhbHVlXTsKIH0KIAotQXRvbWljU3RyaW5nIEFWVHJhY2tQcml2
YXRlQVZGT2JqQ0ltcGw6Omxhbmd1YWdlKCkgY29uc3QKK0F0b21TdHJpbmcgQVZUcmFja1ByaXZh
dGVBVkZPYmpDSW1wbDo6bGFuZ3VhZ2UoKSBjb25zdAogewogICAgIGlmIChtX2Fzc2V0VHJhY2sp
CiAgICAgICAgIHJldHVybiBsYW5ndWFnZUZvckFWQXNzZXRUcmFjayhtX2Fzc2V0VHJhY2suZ2V0
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL0F1ZGlvVHJhY2tQcml2YXRlQVZGLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vQXVkaW9UcmFja1ByaXZhdGVBVkYuaAppbmRleCAxOWI1NjBi
Y2NiYTU4MTk1Y2U0NWVmNmVmODFjOGRjZGVjMjk1YmM0Li44YzE1MDllYjJmZTM0NDY0MDA5MjIz
ZjM2YTI0ZGM1NmUwMzJjN2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vQXVkaW9UcmFja1ByaXZhdGVBVkYuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQXVkaW9UcmFja1ByaXZhdGVB
VkYuaApAQCAtMzUsMjIgKzM1LDIyIEBAIGNsYXNzIEF1ZGlvVHJhY2tQcml2YXRlQVZGIDogcHVi
bGljIEF1ZGlvVHJhY2tQcml2YXRlIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBdWRpb1Ry
YWNrUHJpdmF0ZUFWRikKIHB1YmxpYzoKICAgICB2aXJ0dWFsIEtpbmQga2luZCgpIGNvbnN0IHsg
cmV0dXJuIG1fa2luZDsgfQotICAgIHZpcnR1YWwgQXRvbWljU3RyaW5nIGlkKCkgY29uc3QgeyBy
ZXR1cm4gbV9pZDsgfQotICAgIHZpcnR1YWwgQXRvbWljU3RyaW5nIGxhYmVsKCkgY29uc3QgeyBy
ZXR1cm4gbV9sYWJlbDsgfQotICAgIHZpcnR1YWwgQXRvbWljU3RyaW5nIGxhbmd1YWdlKCkgY29u
c3QgeyByZXR1cm4gbV9sYW5ndWFnZTsgfQorICAgIHZpcnR1YWwgQXRvbVN0cmluZyBpZCgpIGNv
bnN0IHsgcmV0dXJuIG1faWQ7IH0KKyAgICB2aXJ0dWFsIEF0b21TdHJpbmcgbGFiZWwoKSBjb25z
dCB7IHJldHVybiBtX2xhYmVsOyB9CisgICAgdmlydHVhbCBBdG9tU3RyaW5nIGxhbmd1YWdlKCkg
Y29uc3QgeyByZXR1cm4gbV9sYW5ndWFnZTsgfQogICAgIHZpcnR1YWwgaW50IHRyYWNrSW5kZXgo
KSBjb25zdCB7IHJldHVybiBtX2luZGV4OyB9CiAKIHByb3RlY3RlZDoKICAgICB2b2lkIHNldEtp
bmQoS2luZCBraW5kKSB7IG1fa2luZCA9IGtpbmQ7IH0KLSAgICB2b2lkIHNldElkKGNvbnN0IEF0
b21pY1N0cmluZyYgbmV3SWQpIHsgbV9pZCA9IG5ld0lkOyB9Ci0gICAgdm9pZCBzZXRMYWJlbChj
b25zdCBBdG9taWNTdHJpbmcmIGxhYmVsKSB7IG1fbGFiZWwgPSBsYWJlbDsgfQotICAgIHZvaWQg
c2V0TGFuZ3VhZ2UoY29uc3QgQXRvbWljU3RyaW5nJiBsYW5ndWFnZSkgeyBtX2xhbmd1YWdlID0g
bGFuZ3VhZ2U7IH0KKyAgICB2b2lkIHNldElkKGNvbnN0IEF0b21TdHJpbmcmIG5ld0lkKSB7IG1f
aWQgPSBuZXdJZDsgfQorICAgIHZvaWQgc2V0TGFiZWwoY29uc3QgQXRvbVN0cmluZyYgbGFiZWwp
IHsgbV9sYWJlbCA9IGxhYmVsOyB9CisgICAgdm9pZCBzZXRMYW5ndWFnZShjb25zdCBBdG9tU3Ry
aW5nJiBsYW5ndWFnZSkgeyBtX2xhbmd1YWdlID0gbGFuZ3VhZ2U7IH0KICAgICB2b2lkIHNldFRy
YWNrSW5kZXgoaW50IGluZGV4KSB7IG1faW5kZXggPSBpbmRleDsgfQogCiAgICAgS2luZCBtX2tp
bmQgeyBOb25lIH07Ci0gICAgQXRvbWljU3RyaW5nIG1faWQ7Ci0gICAgQXRvbWljU3RyaW5nIG1f
bGFiZWw7Ci0gICAgQXRvbWljU3RyaW5nIG1fbGFuZ3VhZ2U7CisgICAgQXRvbVN0cmluZyBtX2lk
OworICAgIEF0b21TdHJpbmcgbV9sYWJlbDsKKyAgICBBdG9tU3RyaW5nIG1fbGFuZ3VhZ2U7CiAg
ICAgaW50IG1faW5kZXggeyAwIH07CiAKICAgICBBdWRpb1RyYWNrUHJpdmF0ZUFWRigpID0gZGVm
YXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCmluZGV4IDFi
ODUzNTQ4MGU0MjI4YjYxNTVhMTU1ZWZmODI2MTQ1ZTFjMjMyMGMuLjIxYjkzZGU4ODgxYjVkZTc2
N2ZhMDRjNjZiMTIwYTA5MzY4MzcxOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5
U3RyZWFtaW5nLmNwcApAQCAtNjIsMTUgKzYyLDE1IEBAIGNvbnN0IFZlY3RvcjxGb3VyQ0M+JiBD
RE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnZhbGlkRmFpclBsYXlTdHJlYW1pbmdTY2hlbWVz
CiAgICAgcmV0dXJuIHZhbGlkU2NoZW1lczsKIH0KIAotY29uc3QgQXRvbWljU3RyaW5nJiBDRE1Q
cml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNpbmZOYW1lKCkKK2NvbnN0IEF0b21TdHJpbmcmIENE
TVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2luZk5hbWUoKQogewotICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHNpbmYgeyBNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgi
c2luZiIpIH07CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21TdHJpbmc+IHNpbmYgeyBN
QUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgic2luZiIpIH07CiAgICAgcmV0dXJuIHNpbmY7CiB9CiAK
LWNvbnN0IEF0b21pY1N0cmluZyYgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpza2ROYW1l
KCkKK2NvbnN0IEF0b21TdHJpbmcmIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2tkTmFt
ZSgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gc2tkIHsgTUFL
RV9TVEFUSUNfU1RSSU5HX0lNUEwoInNrZCIpIH07CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEF0b21TdHJpbmc+IHNrZCB7IE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJza2QiKSB9OwogICAg
IHJldHVybiBza2Q7CiB9CiAKQEAgLTIwMCw5ICsyMDAsOSBAQCBPcHRpb25hbDxWZWN0b3I8UmVm
PFNoYXJlZEJ1ZmZlcj4+PiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OmV4dHJhY3RLZXlJ
RHNTawogICAgIHJldHVybiBrZXlJRHM7CiB9CiAKLXN0YXRpYyBjb25zdCBIYXNoU2V0PEF0b21p
Y1N0cmluZz4mIHZhbGlkSW5pdERhdGFUeXBlcygpCitzdGF0aWMgY29uc3QgSGFzaFNldDxBdG9t
U3RyaW5nPiYgdmFsaWRJbml0RGF0YVR5cGVzKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8SGFzaFNldDxBdG9taWNTdHJpbmc+PiB2YWxpZFR5cGVzID0gSGFzaFNldDxBdG9taWNTdHJp
bmc+KHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxBdG9tU3RyaW5nPj4gdmFs
aWRUeXBlcyA9IEhhc2hTZXQ8QXRvbVN0cmluZz4oewogICAgICAgICBDRE1Qcml2YXRlRmFpclBs
YXlTdHJlYW1pbmc6OnNpbmZOYW1lKCksCiAgICAgICAgIENETVByaXZhdGVGYWlyUGxheVN0cmVh
bWluZzo6c2tkTmFtZSgpLAogICAgIH0pOwpAQCAtMjQ1LDcgKzI0NSw3IEBAIGJvb2wgQ0RNRmFj
dG9yeUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtl
eVN5c3RlbSkKIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6Q0RNUHJpdmF0ZUZhaXJQbGF5
U3RyZWFtaW5nKCkgPSBkZWZhdWx0OwogQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjp+Q0RN
UHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nKCkgPSBkZWZhdWx0OwogCi1ib29sIENETVByaXZhdGVG
YWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNJbml0RGF0YVR5cGUoY29uc3QgQXRvbWljU3RyaW5n
JiBpbml0RGF0YVR5cGUpIGNvbnN0Citib29sIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6
c3VwcG9ydHNJbml0RGF0YVR5cGUoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlKSBjb25z
dAogewogICAgIHJldHVybiB2YWxpZEluaXREYXRhVHlwZXMoKS5jb250YWlucyhpbml0RGF0YVR5
cGUpOwogfQpAQCAtMzYyLDcgKzM2Miw3IEBAIGJvb2wgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFt
aW5nOjpzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRv
bWljU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpIGNv
bnN0Citib29sIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNJbml0RGF0YShj
b25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERh
dGEpIGNvbnN0CiB7CiAgICAgaWYgKCFzdXBwb3J0c0luaXREYXRhVHlwZShpbml0RGF0YVR5cGUp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVh
bWluZy5oCmluZGV4IDkxNjdiNmUxOGI0NjIyZmI4YTUyYTA0ZjI1ZTg0Y2JhNWU2YWE3MTUuLjRj
OGE2Y2UwYWNlZDU2OTAyYTdkMWQ1YzA4ZDQyNzExYzI4YTRkNzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVh
bWluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9DRE1GYWlyUGxheVN0cmVhbWluZy5oCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICBD
RE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmcoKTsKICAgICB2aXJ0dWFsIH5DRE1Qcml2YXRlRmFp
clBsYXlTdHJlYW1pbmcoKTsKIAotICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YVR5cGUoY29uc3Qg
QXRvbWljU3RyaW5nJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBzdXBwb3J0c0luaXREYXRh
VHlwZShjb25zdCBBdG9tU3RyaW5nJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBzdXBwb3J0
c0NvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0IG92
ZXJyaWRlOwogICAgIGJvb2wgc3VwcG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyhj
b25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgQ0RNUmVzdHJpY3Rpb25zJikg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3Vy
YXRpb24oQ0RNU2Vzc2lvblR5cGUmLCBjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikg
Y29uc3Qgb3ZlcnJpZGU7CkBAIC02NSwxNSArNjUsMTUgQEAgcHVibGljOgogICAgIHZvaWQgbG9h
ZEFuZEluaXRpYWxpemUoKSBvdmVycmlkZTsKICAgICBib29sIHN1cHBvcnRzU2VydmVyQ2VydGlm
aWNhdGVzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25zKCkgY29u
c3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21pY1N0cmlu
ZyYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgc3VwcG9y
dHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25z
dCBTaGFyZWRCdWZmZXImKSBjb25zdCBvdmVycmlkZTsKICAgICBPcHRpb25hbDxTdHJpbmc+IHNh
bml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgc3Rh
dGljIGNvbnN0IEF0b21pY1N0cmluZyYgc2luZk5hbWUoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRv
bVN0cmluZyYgc2luZk5hbWUoKTsKICAgICBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFy
ZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc1NpbmYoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAg
c3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplU2luZihjb25zdCBTaGFyZWRCdWZm
ZXImKTsKIAotICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHNrZE5hbWUoKTsKKyAgICBz
dGF0aWMgY29uc3QgQXRvbVN0cmluZyYgc2tkTmFtZSgpOwogICAgIHN0YXRpYyBPcHRpb25hbDxW
ZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzU2tkKGNvbnN0IFNoYXJlZEJ1
ZmZlciYpOwogICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVNrZChjb25z
dCBTaGFyZWRCdWZmZXImKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5k
TWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmNwcAppbmRleCBhYzM0MjJlN2M4MDMzMGI3NWVj
M2Y5ZmQ4YzMxMDU2NjRlYjYwNjI4Li4wMjYzYzY0ZmRmMDU3MzYyMTI4YTg2OTA5NTA4NTBmYmYx
NmZmZTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kTWV0YWRhdGFU
ZXh0VHJhY2tQcml2YXRlQVZGLmNwcApAQCAtMzgsMTIgKzM4LDEyIEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotUmVmPEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRj4gSW5iYW5k
TWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGOjpjcmVhdGUoSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZTo6S2luZCBraW5kLCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpDdWVGb3JtYXQgY3VlRm9ybWF0
LCBjb25zdCBBdG9taWNTdHJpbmcmIGlkKQorUmVmPEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJp
dmF0ZUFWRj4gSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGOjpjcmVhdGUoSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZTo6S2luZCBraW5kLCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpDdWVG
b3JtYXQgY3VlRm9ybWF0LCBjb25zdCBBdG9tU3RyaW5nJiBpZCkKIHsKICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYoa2luZCwgY3VlRm9y
bWF0LCBpZCkpOwogfQogCi1JbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkY6OkluYmFu
ZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRihJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpLaW5k
IGtpbmQsIEluYmFuZFRleHRUcmFja1ByaXZhdGU6OkN1ZUZvcm1hdCBjdWVGb3JtYXQsIGNvbnN0
IEF0b21pY1N0cmluZyYgaWQpCitJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkY6Oklu
YmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRihJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpL
aW5kIGtpbmQsIEluYmFuZFRleHRUcmFja1ByaXZhdGU6OkN1ZUZvcm1hdCBjdWVGb3JtYXQsIGNv
bnN0IEF0b21TdHJpbmcmIGlkKQogICAgIDogSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZShjdWVGb3Jt
YXQpCiAgICAgLCBtX2tpbmQoa2luZCkKICAgICAsIG1faWQoaWQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kTWV0YWRhdGFU
ZXh0VHJhY2tQcml2YXRlQVZGLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmgKaW5kZXggMTdj
OGI1MDQ1MmJmZmFiODExZmQ0N2FhZDY3MjA1NDNkZTc2ODQxNy4uMmVjN2Q1YzA1MzBkNzc4Yjk0
OTA3MzE2Y2FmN2FiZDFlY2IzODdhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFW
Ri5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9J
bmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuaApAQCAtNDEsMTQgKzQxLDE0IEBAIHN0
cnVjdCBJbmNvbXBsZXRlTWV0YURhdGFDdWUgewogCiBjbGFzcyBJbmJhbmRNZXRhZGF0YVRleHRU
cmFja1ByaXZhdGVBVkYgOiBwdWJsaWMgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZjxJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkY+IGNyZWF0
ZShLaW5kLCBDdWVGb3JtYXQsIGNvbnN0IEF0b21pY1N0cmluZyYgaWQgPSBlbXB0eUF0b20oKSk7
CisgICAgc3RhdGljIFJlZjxJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkY+IGNyZWF0
ZShLaW5kLCBDdWVGb3JtYXQsIGNvbnN0IEF0b21TdHJpbmcmIGlkID0gZW1wdHlBdG9tKCkpOwog
CiAgICAgfkluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRigpOwogCiAgICAgS2luZCBr
aW5kKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9raW5kOyB9Ci0gICAgQXRvbWljU3RyaW5n
IGlkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pZDsgfQotICAgIEF0b21pY1N0cmluZyBp
bkJhbmRNZXRhZGF0YVRyYWNrRGlzcGF0Y2hUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV9pbkJhbmRNZXRhZGF0YVRyYWNrRGlzcGF0Y2hUeXBlOyB9Ci0gICAgdm9pZCBzZXRJbkJhbmRN
ZXRhZGF0YVRyYWNrRGlzcGF0Y2hUeXBlKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpIHsgbV9p
bkJhbmRNZXRhZGF0YVRyYWNrRGlzcGF0Y2hUeXBlID0gdmFsdWU7IH0KKyAgICBBdG9tU3RyaW5n
IGlkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pZDsgfQorICAgIEF0b21TdHJpbmcgaW5C
YW5kTWV0YWRhdGFUcmFja0Rpc3BhdGNoVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
aW5CYW5kTWV0YWRhdGFUcmFja0Rpc3BhdGNoVHlwZTsgfQorICAgIHZvaWQgc2V0SW5CYW5kTWV0
YWRhdGFUcmFja0Rpc3BhdGNoVHlwZShjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkgeyBtX2luQmFu
ZE1ldGFkYXRhVHJhY2tEaXNwYXRjaFR5cGUgPSB2YWx1ZTsgfQogCiAjaWYgRU5BQkxFKERBVEFD
VUVfVkFMVUUpCiAgICAgdm9pZCBhZGREYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNv
bnN0IE1lZGlhVGltZSYgZW5kLCBSZWY8U2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24+
JiYsIGNvbnN0IFN0cmluZyYpOwpAQCAtNTgsMTUgKzU4LDE1IEBAIHB1YmxpYzoKICAgICB2b2lk
IGZsdXNoUGFydGlhbEN1ZXMoKTsKIAogcHJpdmF0ZToKLSAgICBJbmJhbmRNZXRhZGF0YVRleHRU
cmFja1ByaXZhdGVBVkYoS2luZCwgQ3VlRm9ybWF0LCBjb25zdCBBdG9taWNTdHJpbmcmKTsKKyAg
ICBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYoS2luZCwgQ3VlRm9ybWF0LCBjb25z
dCBBdG9tU3RyaW5nJik7CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBjb25zdCBj
aGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiSW5iYW5kTWV0YWRhdGFU
ZXh0VHJhY2tQcml2YXRlQVZGIjsgfQogI2VuZGlmCiAKICAgICBLaW5kIG1fa2luZDsKLSAgICBB
dG9taWNTdHJpbmcgbV9pZDsKLSAgICBBdG9taWNTdHJpbmcgbV9pbkJhbmRNZXRhZGF0YVRyYWNr
RGlzcGF0Y2hUeXBlOworICAgIEF0b21TdHJpbmcgbV9pZDsKKyAgICBBdG9tU3RyaW5nIG1faW5C
YW5kTWV0YWRhdGFUcmFja0Rpc3BhdGNoVHlwZTsKICAgICBNZWRpYVRpbWUgbV9jdXJyZW50Q3Vl
U3RhcnRUaW1lOwogI2lmIEVOQUJMRShEQVRBQ1VFX1ZBTFVFKQogICAgIFZlY3RvcjxJbmNvbXBs
ZXRlTWV0YURhdGFDdWU+IG1faW5jb21wbGV0ZUN1ZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vVmlkZW9UcmFja1ByaXZhdGVBVkYu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9WaWRlb1Ry
YWNrUHJpdmF0ZUFWRi5oCmluZGV4IGEzZjBmNGVjYTA1NzNkZDgyZmI5NDdmNGI5ZjlmMDcxYTBm
M2MyZmQuLmNiZWRiNTM0N2NiNzk0YzkzZjg0NTU4OTRkMGQ1NzkwNjEzMGNkMjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9WaWRlb1Ry
YWNrUHJpdmF0ZUFWRi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9WaWRlb1RyYWNrUHJpdmF0ZUFWRi5oCkBAIC0zNiwyMSArMzYsMjEgQEAgY2xh
c3MgVmlkZW9UcmFja1ByaXZhdGVBVkYgOiBwdWJsaWMgVmlkZW9UcmFja1ByaXZhdGUgewogcHVi
bGljOgogICAgIGludCB0cmFja0luZGV4KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pbmRl
eDsgfQogICAgIEtpbmQga2luZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fa2luZDsgfQot
ICAgIEF0b21pY1N0cmluZyBpZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faWQ7IH0KLSAg
ICBBdG9taWNTdHJpbmcgbGFiZWwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2xhYmVsOyB9
Ci0gICAgQXRvbWljU3RyaW5nIGxhbmd1YWdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9s
YW5ndWFnZTsgfQorICAgIEF0b21TdHJpbmcgaWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBt
X2lkOyB9CisgICAgQXRvbVN0cmluZyBsYWJlbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
bGFiZWw7IH0KKyAgICBBdG9tU3RyaW5nIGxhbmd1YWdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbV9sYW5ndWFnZTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzZXRLaW5kKEtpbmQga2lu
ZCkgeyBtX2tpbmQgPSBraW5kOyB9Ci0gICAgdm9pZCBzZXRJZChjb25zdCBBdG9taWNTdHJpbmcm
IG5ld0lkKSB7IG1faWQgPSBuZXdJZDsgfQotICAgIHZvaWQgc2V0TGFiZWwoY29uc3QgQXRvbWlj
U3RyaW5nJiBsYWJlbCkgeyBtX2xhYmVsID0gbGFiZWw7IH0KLSAgICB2b2lkIHNldExhbmd1YWdl
KGNvbnN0IEF0b21pY1N0cmluZyYgbGFuZ3VhZ2UpIHsgbV9sYW5ndWFnZSA9IGxhbmd1YWdlOyB9
CisgICAgdm9pZCBzZXRJZChjb25zdCBBdG9tU3RyaW5nJiBuZXdJZCkgeyBtX2lkID0gbmV3SWQ7
IH0KKyAgICB2b2lkIHNldExhYmVsKGNvbnN0IEF0b21TdHJpbmcmIGxhYmVsKSB7IG1fbGFiZWwg
PSBsYWJlbDsgfQorICAgIHZvaWQgc2V0TGFuZ3VhZ2UoY29uc3QgQXRvbVN0cmluZyYgbGFuZ3Vh
Z2UpIHsgbV9sYW5ndWFnZSA9IGxhbmd1YWdlOyB9CiAgICAgdm9pZCBzZXRUcmFja0luZGV4KGlu
dCBpbmRleCkgeyBtX2luZGV4ID0gaW5kZXg7IH0KIAogICAgIEtpbmQgbV9raW5kIHsgTm9uZSB9
OwotICAgIEF0b21pY1N0cmluZyBtX2lkOwotICAgIEF0b21pY1N0cmluZyBtX2xhYmVsOwotICAg
IEF0b21pY1N0cmluZyBtX2xhbmd1YWdlOworICAgIEF0b21TdHJpbmcgbV9pZDsKKyAgICBBdG9t
U3RyaW5nIG1fbGFiZWw7CisgICAgQXRvbVN0cmluZyBtX2xhbmd1YWdlOwogICAgIGludCBtX2lu
ZGV4IHsgMCB9OwogCiAgICAgVmlkZW9UcmFja1ByaXZhdGVBVkYoKSA9IGRlZmF1bHQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2Yv
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGLmNwcApp
bmRleCA5ZmI5NjU2YWVhMzA0YzExZThhYTkyMTg3NWJmYjM2MzQwNWM5ZmMwLi44YjVlYzE2ZDU4
ZGE2MDZlY2E3NmJiNjk5YzYyOTU2ZmZhMDY5Y2Q2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUFWQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRi5jcHAKQEAgLTEzNyw3ICsxMzcsNyBA
QCBib29sIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGOjppc0Vhc3lUb1JlYWQoKSBjb25zdAog
ICAgIHJldHVybiBBVkNGTWVkaWFTZWxlY3Rpb25PcHRpb25IYXNNZWRpYUNoYXJhY3RlcmlzdGlj
KG1lZGlhU2VsZWN0aW9uT3B0aW9uKCksIEFWQ0ZNZWRpYUNoYXJhY3RlcmlzdGljRWFzeVRvUmVh
ZCk7CiB9CiAKLUF0b21pY1N0cmluZyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRjo6bGFiZWwo
KSBjb25zdAorQXRvbVN0cmluZyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRjo6bGFiZWwoKSBj
b25zdAogewogICAgIGlmICghbV9tZWRpYVNlbGVjdGlvbk9wdGlvbikKICAgICAgICAgcmV0dXJu
IGVtcHR5QXRvbSgpOwpAQCAtMTY3LDEwICsxNjcsMTAgQEAgQXRvbWljU3RyaW5nIEluYmFuZFRl
eHRUcmFja1ByaXZhdGVBVkNGOjpsYWJlbCgpIGNvbnN0CiAgICAgICAgIHRpdGxlID0gYWRvcHRD
RihBVkNGTWV0YWRhdGFJdGVtQ29weVN0cmluZ1ZhbHVlKHRpdGxlTWV0YWRhdGEpKTsKICAgICB9
CiAKLSAgICByZXR1cm4gdGl0bGUgPyBBdG9taWNTdHJpbmcodGl0bGUuZ2V0KCkpIDogZW1wdHlB
dG9tKCk7CisgICAgcmV0dXJuIHRpdGxlID8gQXRvbVN0cmluZyh0aXRsZS5nZXQoKSkgOiBlbXB0
eUF0b20oKTsKIH0KIAotQXRvbWljU3RyaW5nIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGOjps
YW5ndWFnZSgpIGNvbnN0CitBdG9tU3RyaW5nIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGOjps
YW5ndWFnZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX21lZGlhU2VsZWN0aW9uT3B0aW9uKQogICAg
ICAgICByZXR1cm4gZW1wdHlBdG9tKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0Yu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJh
bmRUZXh0VHJhY2tQcml2YXRlQVZDRi5oCmluZGV4IDRiODA3MzVhYTI1MWNlZTEzMTNkOWZmMmVj
MDIxNDMyNmRjYTExYWUuLjlhYWRlNjE3ZTNkZTk3NWMxMzAwN2U1MTY3OTg2YWZiYTllZDIwZGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZD
Ri5oCkBAIC00OSw4ICs0OSw4IEBAIHB1YmxpYzoKICAgICBib29sIGNvbnRhaW5zT25seUZvcmNl
ZFN1YnRpdGxlcygpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgaXNNYWluUHJvZ3JhbUNvbnRl
bnQoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGlzRWFzeVRvUmVhZCgpIGNvbnN0IG92ZXJy
aWRlOwotICAgIEF0b21pY1N0cmluZyBsYWJlbCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIEF0b21p
Y1N0cmluZyBsYW5ndWFnZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIEF0b21TdHJpbmcgbGFiZWwo
KSBjb25zdCBvdmVycmlkZTsKKyAgICBBdG9tU3RyaW5nIGxhbmd1YWdlKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgYm9vbCBpc0RlZmF1bHQoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgZGlz
Y29ubmVjdCgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0luYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkNG
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9J
bmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZDRi5jcHAKaW5kZXggMTY5OTNkYmNmOTI1ZmEy
YmMwMDVmMmYxM2NhMzE2OTZkNTgyYjlmNi4uMTk3MDFjMDIyY2QzNGUwNTZiZTQyYjM1YjMxMDE4
YWEzYmI4MjdiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL2NmL0luYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0YuY3BwCkBAIC04Myw3ICs4Myw3IEBAIGJvb2wgSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0Y6OmlzRWFzeVRvUmVhZCgpIGNvbnN0CiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCi1BdG9taWNTdHJpbmcgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxl
Z2FjeUFWQ0Y6OmxhYmVsKCkgY29uc3QKK0F0b21TdHJpbmcgSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUxlZ2FjeUFWQ0Y6OmxhYmVsKCkgY29uc3QKIHsKICAgICBpZiAoIW1fcGxheWVySXRlbVRyYWNr
KQogICAgICAgICByZXR1cm4gZW1wdHlBdG9tKCk7CkBAIC0xMDksMTAgKzEwOSwxMCBAQCBBdG9t
aWNTdHJpbmcgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0Y6OmxhYmVsKCkgY29uc3QK
ICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiB0aXRsZSA/IEF0b21pY1N0cmluZyh0aXRs
ZS5nZXQoKSkgOiBlbXB0eUF0b20oKTsKKyAgICByZXR1cm4gdGl0bGUgPyBBdG9tU3RyaW5nKHRp
dGxlLmdldCgpKSA6IGVtcHR5QXRvbSgpOwogfQogCi1BdG9taWNTdHJpbmcgSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUxlZ2FjeUFWQ0Y6Omxhbmd1YWdlKCkgY29uc3QKK0F0b21TdHJpbmcgSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0Y6Omxhbmd1YWdlKCkgY29uc3QKIHsKICAgICBpZiAo
IW1fcGxheWVySXRlbVRyYWNrKQogICAgICAgICByZXR1cm4gZW1wdHlBdG9tKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0YuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZD
Ri5oCmluZGV4IDY1ZDQ1NTA2OTMxYWY1NGI5NTNiZGVjZjE2Yzk2Y2Q5Mjc2MjQyNmYuLjE3MDhl
OTk3MzU1MDYxZGIxNmZmMWY1OWEyMTZmY2NkYTdlMTkxNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQ
cml2YXRlTGVnYWN5QVZDRi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZDRi5oCkBAIC01
MCw4ICs1MCw4IEBAIHB1YmxpYzoKICAgICBib29sIGNvbnRhaW5zT25seUZvcmNlZFN1YnRpdGxl
cygpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgaXNNYWluUHJvZ3JhbUNvbnRlbnQoKSBjb25z
dCBvdmVycmlkZTsKICAgICBib29sIGlzRWFzeVRvUmVhZCgpIGNvbnN0IG92ZXJyaWRlOwotICAg
IEF0b21pY1N0cmluZyBsYWJlbCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIEF0b21pY1N0cmluZyBs
YW5ndWFnZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIEF0b21TdHJpbmcgbGFiZWwoKSBjb25zdCBv
dmVycmlkZTsKKyAgICBBdG9tU3RyaW5nIGxhbmd1YWdlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAg
ICB2b2lkIGRpc2Nvbm5lY3QoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmgKaW5k
ZXggNjFmZmM1MjA1YmQyYWQ0MmViYzg2YzMyN2Y1NTk0YmI2YzdkMTE3NC4uNjZmNGUyZmQ3OGEw
ZDMwMzlhZjhiMDdiNmE1YTJiYTljNGYwOGY0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0
cmVhbWluZ0FWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oCkBA
IC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DRE1JbnN0YW5jZVNlc3Npb25G
YWlyUGxheVN0cmVhbWluZ0FWRk9iakMoKTsKIAogICAgIC8vIENETUluc3RhbmNlU2Vzc2lvbgot
ICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21pY1N0cmluZyYg
aW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJh
Y2smJikgZmluYWw7CisgICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3Qg
QXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBM
aWNlbnNlQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0
cmluZyYsIExpY2Vuc2VUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImLCBMaWNlbnNlVXBkYXRlQ2Fs
bGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgTG9hZFNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAg
ICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBDbG9zZVNlc3Npb25DYWxsYmFjayYm
KSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5z
dGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0KaW5kZXggNDNlZjJjZDcwMDA0OTAyNjUz
ZTQzMWRkMmIwOGFjMzQyYWJlN2ViZC4uYmQ4YTYxNTNkZTNhOTE5YjcwMmEzMjc1ZGExNmVkMzcw
NzFkY2U1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RN
SW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0KQEAgLTI5NCw3ICsyOTQsNyBAQCBW
ZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6a2V5SURzKCkKICAgICByZXR1cm4ga2V5SURzOwogfQogCi12b2lkIENETUlu
c3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2UoTGlj
ZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0b21pY1N0cmluZyYgaW5pdERhdGFUeXBlLCBS
ZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykK
K3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0
TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERh
dGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBj
YWxsYmFjaykKIHsKICAgICBpZiAoIWlzTGljZW5zZVR5cGVTdXBwb3J0ZWQobGljZW5zZVR5cGUp
KSB7CiAgICAgICAgIGNhbGxiYWNrKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIGVtcHR5U3RyaW5n
KCksIGZhbHNlLCBGYWlsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0lu
YmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDLmgKaW5kZXggZDM1MzVlNDdkZTBlMjYxNWNjMjZl
YmJkZjQyNzk3Y2QyMWNhMjNjYy4uM2ZkMGZmOTNiYTNhNjlmNzI2YjkxNTIwOGRmNDNlMDJlZjVj
OWVkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJh
Y2tQcml2YXRlQVZGT2JqQy5oCkBAIC01MSw4ICs1MSw4IEBAIHB1YmxpYzoKICAgICBib29sIGNv
bnRhaW5zT25seUZvcmNlZFN1YnRpdGxlcygpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgaXNN
YWluUHJvZ3JhbUNvbnRlbnQoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGlzRWFzeVRvUmVh
ZCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIEF0b21pY1N0cmluZyBsYWJlbCgpIGNvbnN0IG92ZXJy
aWRlOwotICAgIEF0b21pY1N0cmluZyBsYW5ndWFnZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIEF0
b21TdHJpbmcgbGFiZWwoKSBjb25zdCBvdmVycmlkZTsKKyAgICBBdG9tU3RyaW5nIGxhbmd1YWdl
KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc0RlZmF1bHQoKSBjb25zdCBvdmVycmlkZTsK
IAogICAgIHZvaWQgZGlzY29ubmVjdCgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5tbQppbmRleCAzMDY3
MjczZWQ2MmU1YTFmYTZmZWM0YWRiZDIyODI1OGY1YzBiNTQwLi4zYTgzMjViNDdkOGY3ZTIxMjQ0
MTkzYTlmNGYwZjRiMzBmZTdhMDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2Jq
Qy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5tbQpAQCAtMTI5LDcgKzEyOSw3IEBA
IGJvb2wgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakM6OmlzRWFzeVRvUmVhZCgpIGNvbnN0
CiAgICAgcmV0dXJuIFttX21lZGlhU2VsZWN0aW9uT3B0aW9uIGhhc01lZGlhQ2hhcmFjdGVyaXN0
aWM6QVZNZWRpYUNoYXJhY3RlcmlzdGljRWFzeVRvUmVhZF07CiB9CiAKLUF0b21pY1N0cmluZyBJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQzo6bGFiZWwoKSBjb25zdAorQXRvbVN0cmluZyBJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQzo6bGFiZWwoKSBjb25zdAogewogICAgIGlmICgh
bV9tZWRpYVNlbGVjdGlvbk9wdGlvbikKICAgICAgICAgcmV0dXJuIGVtcHR5QXRvbSgpOwpAQCAt
MTQ3LDEwICsxNDcsMTAgQEAgQXRvbWljU3RyaW5nIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkZP
YmpDOjpsYWJlbCgpIGNvbnN0CiAgICAgICAgICAgICB0aXRsZSA9IFtbdGl0bGVzIG9iamVjdEF0
SW5kZXg6MF0gc3RyaW5nVmFsdWVdOwogICAgIH0KIAotICAgIHJldHVybiB0aXRsZSA/IEF0b21p
Y1N0cmluZyh0aXRsZSkgOiBlbXB0eUF0b20oKTsKKyAgICByZXR1cm4gdGl0bGUgPyBBdG9tU3Ry
aW5nKHRpdGxlKSA6IGVtcHR5QXRvbSgpOwogfQogCi1BdG9taWNTdHJpbmcgSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUFWRk9iakM6Omxhbmd1YWdlKCkgY29uc3QKK0F0b21TdHJpbmcgSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWRk9iakM6Omxhbmd1YWdlKCkgY29uc3QKIHsKICAgICBpZiAoIW1fbWVk
aWFTZWxlY3Rpb25PcHRpb24pCiAgICAgICAgIHJldHVybiBlbXB0eUF0b20oKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0lu
YmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVn
YWN5QVZGT2JqQy5oCmluZGV4IDYzMzQ4ODNkYTlhYjljNTA1NGFkMjA4ZTA0MmNmZTA5OTQwMzI4
NzkuLjU5Njg5NWM0ZGViM2Y4MzNhZTliOTE4MDliYjM5NjFmOWY5ZDEyY2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0luYmFu
ZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxl
Z2FjeUFWRk9iakMuaApAQCAtNTEsOCArNTEsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBjb250YWlu
c09ubHlGb3JjZWRTdWJ0aXRsZXMoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGlzTWFpblBy
b2dyYW1Db250ZW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc0Vhc3lUb1JlYWQoKSBj
b25zdCBvdmVycmlkZTsKLSAgICBBdG9taWNTdHJpbmcgbGFiZWwoKSBjb25zdCBvdmVycmlkZTsK
LSAgICBBdG9taWNTdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCBvdmVycmlkZTsKKyAgICBBdG9tU3Ry
aW5nIGxhYmVsKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQXRvbVN0cmluZyBsYW5ndWFnZSgpIGNv
bnN0IG92ZXJyaWRlOwogCiAgICAgdm9pZCBkaXNjb25uZWN0KCkgb3ZlcnJpZGU7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0luYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUxlZ2FjeUFWRk9iakMubW0KaW5kZXggYmEwZGZkZWEzZTRhYjQ1ZDcxYWI3OTBlOTMxZjQ3NjRh
MzFiYTQyNy4uNDBmYzMxNzFiZmRlNDJiYzZjNmE0ZTFlZjRhMDI2ODhlZjA4ZTEwOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUxlZ2FjeUFWRk9iakMubW0KQEAgLTc4LDcgKzc4LDcgQEAgYm9vbCBJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlTGVnYWN5QVZGT2JqQzo6aXNFYXN5VG9SZWFkKCkgY29uc3QKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLUF0b21pY1N0cmluZyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZG
T2JqQzo6bGFiZWwoKSBjb25zdAorQXRvbVN0cmluZyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVn
YWN5QVZGT2JqQzo6bGFiZWwoKSBjb25zdAogewogICAgIGlmICghbV9wbGF5ZXJJdGVtVHJhY2sp
CiAgICAgICAgIHJldHVybiBlbXB0eUF0b20oKTsKQEAgLTk2LDEwICs5NiwxMCBAQCBBdG9taWNT
dHJpbmcgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWRk9iakM6OmxhYmVsKCkgY29uc3QK
ICAgICAgICAgICAgIHRpdGxlID0gW1t0aXRsZXMgb2JqZWN0QXRJbmRleDowXSBzdHJpbmdWYWx1
ZV07CiAgICAgfQogCi0gICAgcmV0dXJuIHRpdGxlID8gQXRvbWljU3RyaW5nKHRpdGxlKSA6IGVt
cHR5QXRvbSgpOworICAgIHJldHVybiB0aXRsZSA/IEF0b21TdHJpbmcodGl0bGUpIDogZW1wdHlB
dG9tKCk7CiB9CiAKLUF0b21pY1N0cmluZyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZG
T2JqQzo6bGFuZ3VhZ2UoKSBjb25zdAorQXRvbVN0cmluZyBJbmJhbmRUZXh0VHJhY2tQcml2YXRl
TGVnYWN5QVZGT2JqQzo6bGFuZ3VhZ2UoKSBjb25zdAogewogICAgIGlmICghbV9wbGF5ZXJJdGVt
VHJhY2spCiAgICAgICAgIHJldHVybiBlbXB0eUF0b20oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1t
CmluZGV4IDk0MzY1ZmUxMGUyZjU3NDA3NTMwOGVhYTE1OGFlZDg5MDk5OGQxYWEuLjhiNDc0NjQ0
ZmQyYjViODZlNzNkMDRmOWU0MTA5MDJmYmQ1YTM0NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5t
bQpAQCAtMjkzNSwxMyArMjkzNSwxMyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OnNldEJ1ZmZlcmluZ1BvbGljeShNZWRpYVBsYXllcjo6QnVmZmVyaQogCiAjaWYg
RU5BQkxFKERBVEFDVUVfVkFMVUUpCiAKLXN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIG1ldGFk
YXRhVHlwZShOU1N0cmluZyAqYXZNZXRhZGF0YUtleVNwYWNlKQorc3RhdGljIGNvbnN0IEF0b21T
dHJpbmcmIG1ldGFkYXRhVHlwZShOU1N0cmluZyAqYXZNZXRhZGF0YUtleVNwYWNlKQogewotICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IHF1aWNrVGltZVVzZXJE
YXRhKCJjb20uYXBwbGUucXVpY2t0aW1lLnVkdGEiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5n
PiBpc29Vc2VyRGF0YSgib3JnLm1wNHJhIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCk7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gcXVp
Y2tUaW1lTWV0YWRhdGEoImNvbS5hcHBsZS5xdWlja3RpbWUubWR0YSIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBB
dG9taWNTdHJpbmc+IGlUdW5lc01ldGFkYXRhKCJjb20uYXBwbGUuaXR1bmVzIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNv
bnN0IEF0b21pY1N0cmluZz4gaWQzTWV0YWRhdGEoIm9yZy5pZDMiLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRv
bVN0cmluZz4gcXVpY2tUaW1lVXNlckRhdGEoImNvbS5hcHBsZS5xdWlja3RpbWUudWR0YSIsIEF0
b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8Y29uc3QgQXRvbVN0cmluZz4gaXNvVXNlckRhdGEoIm9yZy5tcDRyYSIsIEF0b21TdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3Qg
QXRvbVN0cmluZz4gcXVpY2tUaW1lTWV0YWRhdGEoImNvbS5hcHBsZS5xdWlja3RpbWUubWR0YSIs
IEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gaVR1bmVzTWV0YWRhdGEoImNvbS5hcHBsZS5pdHVuZXMi
LCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGlkM01ldGFkYXRhKCJvcmcuaWQzIiwgQXRvbVN0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogCiAgICAgaWYgKFthdk1ldGFkYXRhS2V5U3BhY2Ug
aXNFcXVhbFRvU3RyaW5nOkFWTWV0YWRhdGFLZXlTcGFjZVF1aWNrVGltZVVzZXJEYXRhXSkKICAg
ICAgICAgcmV0dXJuIHF1aWNrVGltZVVzZXJEYXRhOwpAQCAtMjk5Miw3ICsyOTkyLDcgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjptZXRhZGF0YURpZEFycml2ZShj
b25zdCBSZXRhaW5QdHI8TlNBcnIKICAgICAgICAgaWYgKENNVElNRV9JU19WQUxJRChpdGVtLmR1
cmF0aW9uKSkKICAgICAgICAgICAgIGVuZCA9IHN0YXJ0ICsgUEFMOjp0b01lZGlhVGltZShpdGVt
LmR1cmF0aW9uKTsKIAotICAgICAgICBBdG9taWNTdHJpbmcgdHlwZSA9IG51bGxBdG9tKCk7Cisg
ICAgICAgIEF0b21TdHJpbmcgdHlwZSA9IG51bGxBdG9tKCk7CiAgICAgICAgIGlmIChpdGVtLmtl
eVNwYWNlKQogICAgICAgICAgICAgdHlwZSA9IG1ldGFkYXRhVHlwZShpdGVtLmtleVNwYWNlKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMuaAppbmRleCAwNmVi
NDY4NGQ4OTFjYjRkZDA2YzcxNzNlN2ZlODY1MzZhMmQ5MGE1Li40Yjk3YTlhMGMzMGFlMmY3ZmY2
OGI0OWMyNzkxM2QwZDNlMjRhMTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNh
bXBsZUFWRk9iakMuaApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBNZWRpYVNhbXBsZUFWRk9iakMgOiBwdWJsaWMgTWVkaWFTYW1wbGUgewogcHVibGljOgogICAg
IHN0YXRpYyBSZWY8TWVkaWFTYW1wbGVBVkZPYmpDPiBjcmVhdGUoQ01TYW1wbGVCdWZmZXJSZWYg
c2FtcGxlLCBpbnQgdHJhY2tJRCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVNhbXBsZUFW
Rk9iakMoc2FtcGxlLCB0cmFja0lEKSk7IH0KLSAgICBzdGF0aWMgUmVmPE1lZGlhU2FtcGxlQVZG
T2JqQz4gY3JlYXRlKENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZSwgQXRvbWljU3RyaW5nIHRyYWNr
SUQpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFTYW1wbGVBVkZPYmpDKHNhbXBsZSwgdHJh
Y2tJRCkpOyB9CisgICAgc3RhdGljIFJlZjxNZWRpYVNhbXBsZUFWRk9iakM+IGNyZWF0ZShDTVNh
bXBsZUJ1ZmZlclJlZiBzYW1wbGUsIEF0b21TdHJpbmcgdHJhY2tJRCkgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBNZWRpYVNhbXBsZUFWRk9iakMoc2FtcGxlLCB0cmFja0lEKSk7IH0KICAgICBzdGF0
aWMgUmVmPE1lZGlhU2FtcGxlQVZGT2JqQz4gY3JlYXRlKENNU2FtcGxlQnVmZmVyUmVmIHNhbXBs
ZSwgVmlkZW9Sb3RhdGlvbiByb3RhdGlvbiA9IFZpZGVvUm90YXRpb246Ok5vbmUsIGJvb2wgbWly
cm9yZWQgPSBmYWxzZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVNhbXBsZUFWRk9iakMo
c2FtcGxlLCByb3RhdGlvbiwgbWlycm9yZWQpKTsgfQogICAgIHN0YXRpYyBSZWZQdHI8TWVkaWFT
YW1wbGVBVkZPYmpDPiBjcmVhdGVJbWFnZVNhbXBsZShWZWN0b3I8dWludDhfdD4mJiwgdW5zaWdu
ZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpOwogCkBAIC00Nyw3ICs0Nyw3IEBA
IHB1YmxpYzoKICAgICBNZWRpYVRpbWUgZHVyYXRpb24oKSBjb25zdCBvdmVycmlkZTsKICAgICBN
ZWRpYVRpbWUgb3V0cHV0RHVyYXRpb24oKSBjb25zdCBvdmVycmlkZTsKIAotICAgIEF0b21pY1N0
cmluZyB0cmFja0lEKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pZDsgfQorICAgIEF0b21T
dHJpbmcgdHJhY2tJRCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faWQ7IH0KICAgICB2b2lk
IHNldFRyYWNrSUQoY29uc3QgU3RyaW5nJiBpZCkgb3ZlcnJpZGUgeyBtX2lkID0gaWQ7IH0KIAog
ICAgIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0IG92ZXJyaWRlOwpAQCAtNzksMTQgKzc5LDE0
IEBAIHByb3RlY3RlZDoKICAgICAgICAgOiBtX3NhbXBsZShzYW1wbGUpCiAgICAgewogICAgIH0K
LSAgICBNZWRpYVNhbXBsZUFWRk9iakMoQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlLCBBdG9taWNT
dHJpbmcgdHJhY2tJRCkKKyAgICBNZWRpYVNhbXBsZUFWRk9iakMoQ01TYW1wbGVCdWZmZXJSZWYg
c2FtcGxlLCBBdG9tU3RyaW5nIHRyYWNrSUQpCiAgICAgICAgIDogbV9zYW1wbGUoc2FtcGxlKQog
ICAgICAgICAsIG1faWQodHJhY2tJRCkKICAgICB7CiAgICAgfQogICAgIE1lZGlhU2FtcGxlQVZG
T2JqQyhDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGUsIGludCB0cmFja0lEKQogICAgICAgICA6IG1f
c2FtcGxlKHNhbXBsZSkKLSAgICAgICAgLCBtX2lkKEF0b21pY1N0cmluZzo6bnVtYmVyKHRyYWNr
SUQpKQorICAgICAgICAsIG1faWQoQXRvbVN0cmluZzo6bnVtYmVyKHRyYWNrSUQpKQogICAgIHsK
ICAgICB9CiAgICAgTWVkaWFTYW1wbGVBVkZPYmpDKENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZSwg
VmlkZW9Sb3RhdGlvbiByb3RhdGlvbiwgYm9vbCBtaXJyb3JlZCkKQEAgLTk4LDcgKzk4LDcgQEAg
cHJvdGVjdGVkOgogCiAgICAgdmlydHVhbCB+TWVkaWFTYW1wbGVBVkZPYmpDKCkgPSBkZWZhdWx0
OwogICAgIFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gbV9zYW1wbGU7Ci0gICAgQXRvbWlj
U3RyaW5nIG1faWQ7CisgICAgQXRvbVN0cmluZyBtX2lkOwogICAgIFZpZGVvUm90YXRpb24gbV9y
b3RhdGlvbiB7IFZpZGVvUm90YXRpb246Ok5vbmUgfTsKICAgICBib29sIG1fbWlycm9yZWQgeyBm
YWxzZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVBy
aXZhdGVBVkZPYmpDLm1tCmluZGV4IDE2MzI5N2I1ZWJmMzE1YjViYjBhNGRhYzBmODVkZjA2MGE1
MjFiZGUuLjRkYTA5ZDJiMTc4YzIyZTYzZDFlZWU1YmYzYjFiOWZhN2VjYjI4ZTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5tbQpA
QCAtMzgsNyArMzgsNyBAQAogI2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+CiAjaW1wb3J0IDx3dGYv
QWxnb3JpdGhtcy5oPgogI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+Ci0jaW1wb3J0IDx3dGYv
dGV4dC9BdG9taWNTdHJpbmcuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaAppbmRleCA3MDUwODJlMmMxZDQ2YzY1NWFkMDA1ZDE2
ZDM2Y2Y0NzQyMDNiMmUxLi43Zjc1YWY5NTZiNjcyNDdlYzExZDI1YmU4MDE3Y2ZiMTM0MGNmYWNi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDLmgKQEAgLTM5LDcgKzM5LDcgQEAKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+Ci0jaW5jbHVk
ZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmlu
Zy5oPgogI2luY2x1ZGUgPHd0Zi90aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5oPgogCiBPQkpDX0NM
QVNTIEFWQXNzZXQ7CkBAIC0xNTgsMTEgKzE1OCwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVt
b3ZlZEZyb21NZWRpYVNvdXJjZSgpIGZpbmFsOwogICAgIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRl
IHJlYWR5U3RhdGUoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHNldFJlYWR5U3RhdGUoTWVkaWFQ
bGF5ZXI6OlJlYWR5U3RhdGUpIGZpbmFsOwotICAgIHZvaWQgZmx1c2goY29uc3QgQXRvbWljU3Ry
aW5nJiB0cmFja0lEKSBmaW5hbDsKLSAgICB2b2lkIGVucXVldWVTYW1wbGUoUmVmPE1lZGlhU2Ft
cGxlPiYmLCBjb25zdCBBdG9taWNTdHJpbmcmIHRyYWNrSUQpIGZpbmFsOwotICAgIGJvb2wgaXNS
ZWFkeUZvck1vcmVTYW1wbGVzKGNvbnN0IEF0b21pY1N0cmluZyYgdHJhY2tJRCkgZmluYWw7Cisg
ICAgdm9pZCBmbHVzaChjb25zdCBBdG9tU3RyaW5nJiB0cmFja0lEKSBmaW5hbDsKKyAgICB2b2lk
IGVucXVldWVTYW1wbGUoUmVmPE1lZGlhU2FtcGxlPiYmLCBjb25zdCBBdG9tU3RyaW5nJiB0cmFj
a0lEKSBmaW5hbDsKKyAgICBib29sIGlzUmVhZHlGb3JNb3JlU2FtcGxlcyhjb25zdCBBdG9tU3Ry
aW5nJiB0cmFja0lEKSBmaW5hbDsKICAgICB2b2lkIHNldEFjdGl2ZShib29sKSBmaW5hbDsKLSAg
ICB2b2lkIG5vdGlmeUNsaWVudFdoZW5SZWFkeUZvck1vcmVTYW1wbGVzKGNvbnN0IEF0b21pY1N0
cmluZyYgdHJhY2tJRCkgZmluYWw7CisgICAgdm9pZCBub3RpZnlDbGllbnRXaGVuUmVhZHlGb3JN
b3JlU2FtcGxlcyhjb25zdCBBdG9tU3RyaW5nJiB0cmFja0lEKSBmaW5hbDsKICAgICBib29sIGNh
blN3aXRjaFRvVHlwZShjb25zdCBDb250ZW50VHlwZSYpIGZpbmFsOwogCiAgICAgdm9pZCBkaWRC
ZWNvbWVSZWFkeUZvck1vcmVTYW1wbGVzKGludCB0cmFja0lEKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KaW5kZXggNGI4Nzdi
OTg2MjJiODBiNTUxYjFiNTM5ZGU2YTc5ZDJjZTlhMTAyZC4uN2Q4MjlmMDIzZWRjMWJjOTA0N2Q5
ZTk3Yjg5YTQ5MzA5ZmE1ODdmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KQEAgLTU5LDcgKzU5LDcgQEAKICNpbXBvcnQg
PHd0Zi9Tb2Z0TGlua2luZy5oPgogI2ltcG9ydCA8d3RmL1dURlNlbWFwaG9yZS5oPgogI2ltcG9y
dCA8d3RmL1dlYWtQdHIuaD4KLSNpbXBvcnQgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgorI2lt
cG9ydCA8d3RmL3RleHQvQXRvbVN0cmluZy5oPgogI2ltcG9ydCA8d3RmL3RleHQvQ1N0cmluZy5o
PgogCiAjcHJhZ21hIG1hcmsgLSBTb2Z0IExpbmtpbmcKQEAgLTM5Niw3ICszOTYsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIFJlZjxNZWRpYURlc2NyaXB0aW9uQVZGT2JqQz4gY3JlYXRlKEFWQXNz
ZXRUcmFjayogdHJhY2spIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFEZXNjcmlwdGlvbkFW
Rk9iakModHJhY2spKTsgfQogICAgIHZpcnR1YWwgfk1lZGlhRGVzY3JpcHRpb25BVkZPYmpDKCkg
eyB9CiAKLSAgICBBdG9taWNTdHJpbmcgY29kZWMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBt
X2NvZGVjOyB9CisgICAgQXRvbVN0cmluZyBjb2RlYygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1fY29kZWM7IH0KICAgICBib29sIGlzVmlkZW8oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBt
X2lzVmlkZW87IH0KICAgICBib29sIGlzQXVkaW8oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBt
X2lzQXVkaW87IH0KICAgICBib29sIGlzVGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
aXNUZXh0OyB9CkBAIC00MTEsMTEgKzQxMSwxMSBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIENNRm9y
bWF0RGVzY3JpcHRpb25SZWYgZGVzY3JpcHRpb24gPSBbZm9ybWF0RGVzY3JpcHRpb25zIGNvdW50
XSA/IChfX2JyaWRnZSBDTUZvcm1hdERlc2NyaXB0aW9uUmVmKVtmb3JtYXREZXNjcmlwdGlvbnMg
b2JqZWN0QXRJbmRleDowXSA6IDA7CiAgICAgICAgIGlmIChkZXNjcmlwdGlvbikgewogICAgICAg
ICAgICAgRm91ckNoYXJDb2RlIGNvZGVjID0gQ01Gb3JtYXREZXNjcmlwdGlvbkdldE1lZGlhU3Vi
VHlwZShkZXNjcmlwdGlvbik7Ci0gICAgICAgICAgICBtX2NvZGVjID0gQXRvbWljU3RyaW5nKHJl
aW50ZXJwcmV0X2Nhc3Q8TENoYXIqPigmY29kZWMpLCA0KTsKKyAgICAgICAgICAgIG1fY29kZWMg
PSBBdG9tU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8TENoYXIqPigmY29kZWMpLCA0KTsKICAgICAg
ICAgfQogICAgIH0KIAotICAgIEF0b21pY1N0cmluZyBtX2NvZGVjOworICAgIEF0b21TdHJpbmcg
bV9jb2RlYzsKICAgICBib29sIG1faXNWaWRlbzsKICAgICBib29sIG1faXNBdWRpbzsKICAgICBi
b29sIG1faXNUZXh0OwpAQCAtMTA0Niw3ICsxMDQ2LDcgQEAgQUxMT1dfTkVXX0FQSV9XSVRIT1VU
X0dVQVJEU19FTkQKICAgICAgICAgcmV0dXJuOwogfQogCi12b2lkIFNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDOjpmbHVzaChjb25zdCBBdG9taWNTdHJpbmcmIHRyYWNrSURTdHJpbmcpCit2b2lk
IFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpmbHVzaChjb25zdCBBdG9tU3RyaW5nJiB0cmFj
a0lEU3RyaW5nKQogewogICAgIGludCB0cmFja0lEID0gdHJhY2tJRFN0cmluZy50b0ludCgpOwog
ICAgIERFQlVHX0xPRyhMT0dJREVOVElGSUVSLCB0cmFja0lEKTsKQEAgLTEwODgsNyArMTA4OCw3
IEBAIEFMTE9XX05FV19BUElfV0lUSE9VVF9HVUFSRFNfRU5ECiAgICAgICAgIG1fbWVkaWFTb3Vy
Y2UtPnBsYXllcigpLT5zZXRIYXNBdmFpbGFibGVBdWRpb1NhbXBsZShyZW5kZXJlciwgZmFsc2Up
OwogfQogCi12b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjplbnF1ZXVlU2FtcGxlKFJl
ZjxNZWRpYVNhbXBsZT4mJiBzYW1wbGUsIGNvbnN0IEF0b21pY1N0cmluZyYgdHJhY2tJRFN0cmlu
ZykKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmVucXVldWVTYW1wbGUoUmVmPE1l
ZGlhU2FtcGxlPiYmIHNhbXBsZSwgY29uc3QgQXRvbVN0cmluZyYgdHJhY2tJRFN0cmluZykKIHsK
ICAgICBpbnQgdHJhY2tJRCA9IHRyYWNrSURTdHJpbmcudG9JbnQoKTsKICAgICBpZiAodHJhY2tJ
RCAhPSBtX2VuYWJsZWRWaWRlb1RyYWNrSUQgJiYgIW1fYXVkaW9SZW5kZXJlcnMuY29udGFpbnMo
dHJhY2tJRCkpCkBAIC0xMTY4LDcgKzExNjgsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDOjpidWZmZXJXYXNDb25zdW1lZCgpCiAgICAgICAgIG1fbWVkaWFTb3VyY2UtPnBsYXll
cigpLT5zZXRIYXNBdmFpbGFibGVWaWRlb0ZyYW1lKHRydWUpOwogfQogCi1ib29sIFNvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDOjppc1JlYWR5Rm9yTW9yZVNhbXBsZXMoY29uc3QgQXRvbWljU3Ry
aW5nJiB0cmFja0lEU3RyaW5nKQorYm9vbCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6aXNS
ZWFkeUZvck1vcmVTYW1wbGVzKGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSURTdHJpbmcpCiB7CiAg
ICAgaW50IHRyYWNrSUQgPSB0cmFja0lEU3RyaW5nLnRvSW50KCk7CiAgICAgaWYgKHRyYWNrSUQg
PT0gbV9lbmFibGVkVmlkZW9UcmFja0lEKSB7CkBAIC0xMjIzLDEwICsxMjIzLDEwIEBAIHZvaWQg
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZEJlY29tZVJlYWR5Rm9yTW9yZVNhbXBsZXMo
aW50IHRyYWNrSUQpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX2NsaWVudCkKLSAgICAg
ICAgbV9jbGllbnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRCZWNvbWVSZWFkeUZvck1vcmVTYW1w
bGVzKEF0b21pY1N0cmluZzo6bnVtYmVyKHRyYWNrSUQpKTsKKyAgICAgICAgbV9jbGllbnQtPnNv
dXJjZUJ1ZmZlclByaXZhdGVEaWRCZWNvbWVSZWFkeUZvck1vcmVTYW1wbGVzKEF0b21TdHJpbmc6
Om51bWJlcih0cmFja0lEKSk7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6
Om5vdGlmeUNsaWVudFdoZW5SZWFkeUZvck1vcmVTYW1wbGVzKGNvbnN0IEF0b21pY1N0cmluZyYg
dHJhY2tJRFN0cmluZykKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6Om5vdGlmeUNs
aWVudFdoZW5SZWFkeUZvck1vcmVTYW1wbGVzKGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSURTdHJp
bmcpCiB7CiAgICAgaW50IHRyYWNrSUQgPSB0cmFja0lEU3RyaW5nLnRvSW50KCk7CiAgICAgaWYg
KHRyYWNrSUQgPT0gbV9lbmFibGVkVmlkZW9UcmFja0lEKSB7CkBAIC0xMjg0LDcgKzEyODQsNyBA
QCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpzZXRWaWRlb0xheWVyKEFWU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyKiBsYXllcgogICAgICAgICB9XTsKICAgICAgICAgW21fZXJyb3JM
aXN0ZW5lciBiZWdpbk9ic2VydmluZ0xheWVyOm1fZGlzcGxheUxheWVyLmdldCgpXTsKICAgICAg
ICAgaWYgKG1fY2xpZW50KQotICAgICAgICAgICAgbV9jbGllbnQtPnNvdXJjZUJ1ZmZlclByaXZh
dGVSZWVucXVlU2FtcGxlcyhBdG9taWNTdHJpbmc6Om51bWJlcihtX2VuYWJsZWRWaWRlb1RyYWNr
SUQpKTsKKyAgICAgICAgICAgIG1fY2xpZW50LT5zb3VyY2VCdWZmZXJQcml2YXRlUmVlbnF1ZVNh
bXBsZXMoQXRvbVN0cmluZzo6bnVtYmVyKG1fZW5hYmxlZFZpZGVvVHJhY2tJRCkpOwogICAgIH0K
IH0KIApAQCAtMTMxNCw3ICsxMzE0LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qzo6c2V0RGVjb21wcmVzc2lvblNlc3Npb24oV2ViQ29yZURlY29tcHJlc3Npb25TZXMKICAgICAg
ICAgICAgIHdlYWtUaGlzLT5tX21lZGlhU291cmNlLT5wbGF5ZXIoKS0+c2V0SGFzQXZhaWxhYmxl
VmlkZW9GcmFtZSh0cnVlKTsKICAgICB9KTsKICAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1f
Y2xpZW50LT5zb3VyY2VCdWZmZXJQcml2YXRlUmVlbnF1ZVNhbXBsZXMoQXRvbWljU3RyaW5nOjpu
dW1iZXIobV9lbmFibGVkVmlkZW9UcmFja0lEKSk7CisgICAgICAgIG1fY2xpZW50LT5zb3VyY2VC
dWZmZXJQcml2YXRlUmVlbnF1ZVNhbXBsZXMoQXRvbVN0cmluZzo6bnVtYmVyKG1fZW5hYmxlZFZp
ZGVvVHJhY2tJRCkpOwogfQogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVD
b3JlVGV4dC5jcHAKaW5kZXggOGQ5ZDFmMGYzY2M2YWI5ZjUwNzRiYmUzNTUwYTk4YzA3ZWRmZmFh
MS4uY2YyODFhNzQ0NGY5ZTcyYTRlMWEwYTY2NDRlZTVkY2RmM2RiMzA4NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNo
ZUNvcmVUZXh0LmNwcApAQCAtNjkwLDcgKzY5MCw3IEBAIFJldGFpblB0cjxDVEZvbnRSZWY+IHBy
ZXBhcmVQbGF0Zm9ybUZvbnQoQ1RGb250UmVmIG9yaWdpbmFsRm9udCwgY29uc3QgRm9udERlc2Ny
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUmVmUHRyPEZvbnQ+IEZvbnRDYWNoZTo6c2ltaWxh
ckZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgY29uc3QgQXRvbWljU3Ry
aW5nJiBmYW1pbHkpCitSZWZQdHI8Rm9udD4gRm9udENhY2hlOjpzaW1pbGFyRm9udChjb25zdCBG
b250RGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBjb25zdCBBdG9tU3RyaW5nJiBmYW1pbHkpCiB7
CiAgICAgLy8gQXR0ZW1wdCB0byBmaW5kIGFuIGFwcHJvcHJpYXRlIGZvbnQgdXNpbmcgYSBtYXRj
aCBiYXNlZCBvbiB0aGUgcHJlc2VuY2Ugb2Yga2V5d29yZHMgaW4KICAgICAvLyB0aGUgcmVxdWVz
dGVkIG5hbWVzLiBGb3IgZXhhbXBsZSwgd2UnbGwgbWF0Y2ggYW55IG5hbWUgdGhhdCBjb250YWlu
cyAiQXJhYmljIiB0byBHZWV6YSBQcm8uCkBAIC03MDAsMTMgKzcwMCwxMyBAQCBSZWZQdHI8Rm9u
dD4gRm9udENhY2hlOjpzaW1pbGFyRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mIGRlc2NyaXB0
aW9uLCBjb25zdCBBdAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gU3Vic3RpdHV0
ZSB0aGUgZGVmYXVsdCBtb25vc3BhY2UgZm9udCBmb3Igd2VsbC1rbm93biBtb25vc3BhY2UgZm9u
dHMuCiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGZhbWlseSwgIm1vbmFj
byIpIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGZhbWlseSwgIm1lbmxvIikpIHsK
LSAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gY291cmllcigiY291
cmllciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgICAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbVN0cmluZz4gY291cmllcigiY291cmllciIsIEF0b21TdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICAgICAgcmV0dXJuIGZvbnRGb3JGYW1pbHko
ZGVzY3JpcHRpb24sIGNvdXJpZXIpOwogICAgIH0KIAogICAgIC8vIFN1YnN0aXR1dGUgVmVyZGFu
YSBmb3IgTHVjaWRhIEdyYW5kZS4KICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UoZmFtaWx5LCAibHVjaWRhIGdyYW5kZSIpKSB7Ci0gICAgICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxBdG9taWNTdHJpbmc+IHZlcmRhbmEoInZlcmRhbmEiLCBBdG9taWNTdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21TdHJp
bmc+IHZlcmRhbmEoInZlcmRhbmEiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7
CiAgICAgICAgIHJldHVybiBmb250Rm9yRmFtaWx5KGRlc2NyaXB0aW9uLCB2ZXJkYW5hKTsKICAg
ICB9CiAjZW5kaWYKQEAgLTcxNSw4ICs3MTUsOCBAQCBSZWZQdHI8Rm9udD4gRm9udENhY2hlOjpz
aW1pbGFyRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBjb25zdCBBdAog
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHBhc2h0byhNQUtFX1NUQVRJQ19TVFJJ
TkdfSU1QTCgiUGFzaHRvIikpOwogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHVy
ZHUoTUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwoIlVyZHUiKSk7CiAgICAgc3RhdGljIFN0cmluZyog
bWF0Y2hXb3Jkc1szXSA9IHsgJmFyYWJpYy5nZXQoKSwgJnBhc2h0by5nZXQoKSwgJnVyZHUuZ2V0
KCkgfTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBnZWV6YVBsYWlu
KCJHZWV6YVBybyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGdlZXphQm9sZCgiR2VlemFQcm8tQm9s
ZCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxBdG9tU3RyaW5nPiBnZWV6YVBsYWluKCJHZWV6YVBybyIsIEF0b21TdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbVN0
cmluZz4gZ2VlemFCb2xkKCJHZWV6YVByby1Cb2xkIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOwogICAgIGZvciAoU3RyaW5nKiBtYXRjaFdvcmQgOiBtYXRjaFdvcmRzKSB7CiAg
ICAgICAgIGlmIChmYW1pbHkuY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZSgqbWF0Y2hXb3JkKSkK
ICAgICAgICAgICAgIHJldHVybiBmb250Rm9yRmFtaWx5KGRlc2NyaXB0aW9uLCBpc0ZvbnRXZWln
aHRCb2xkKGRlc2NyaXB0aW9uLndlaWdodCgpKSA/IGdlZXphQm9sZCA6IGdlZXphUGxhaW4pOwpA
QCAtODMwLDkgKzgzMCw5IEBAIHZvaWQgRm9udENhY2hlOjpzZXRGb250V2hpdGVsaXN0KGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBpbnB1dFdoaXRlbGlzdCkKICAgICAgICAgd2hpdGVsaXN0LmFkZChp
dGVtKTsKIH0KIAotc3RhdGljIGlubGluZSBib29sIGlzU3lzdGVtRm9udChjb25zdCBBdG9taWNT
dHJpbmcmIGZhbWlseSkKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc1N5c3RlbUZvbnQoY29uc3QgQXRv
bVN0cmluZyYgZmFtaWx5KQogewotICAgIC8vIEF0b21pY1N0cmluZydzIG9wZXJhdG9yW10gaGFu
ZGxlcyBvdXQtb2YtYm91bmRzIGJ5IHJldHVybmluZyAwLgorICAgIC8vIEF0b21TdHJpbmcncyBv
cGVyYXRvcltdIGhhbmRsZXMgb3V0LW9mLWJvdW5kcyBieSByZXR1cm5pbmcgMC4KICAgICByZXR1
cm4gZmFtaWx5WzBdID09ICcuJzsKIH0KIApAQCAtOTQ1LDcgKzk0NSw3IEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIG1fZmFtaWx5TmFtZVRvRm9udERlc2NyaXB0b3JzLmFkZChmb2xkZWQuaXNv
bGF0ZWRDb3B5KCksIFdURk1vdmUoaW5zdGFsbGVkRm9udEZhbWlseSkpLml0ZXJhdG9yLT52YWx1
ZTsKICAgICB9CiAKLSAgICBjb25zdCBJbnN0YWxsZWRGb250JiBmb250Rm9yUG9zdFNjcmlwdE5h
bWUoY29uc3QgQXRvbWljU3RyaW5nJiBwb3N0U2NyaXB0TmFtZSkKKyAgICBjb25zdCBJbnN0YWxs
ZWRGb250JiBmb250Rm9yUG9zdFNjcmlwdE5hbWUoY29uc3QgQXRvbVN0cmluZyYgcG9zdFNjcmlw
dE5hbWUpCiAgICAgewogICAgICAgICBjb25zdCBhdXRvJiBmb2xkZWQgPSBGb250Q2FzY2FkZURl
c2NyaXB0aW9uOjpmb2xkZWRGYW1pbHlOYW1lKHBvc3RTY3JpcHROYW1lKTsKICAgICAgICAgcmV0
dXJuIG1fcG9zdFNjcmlwdE5hbWVUb0ZvbnREZXNjcmlwdG9ycy5lbnN1cmUoZm9sZGVkLCBbJl0g
ewpAQCAtMTE1Niw3ICsxMTU2LDcgQEAgc3RhdGljIGNvbnN0IEZvbnREYXRhYmFzZTo6SW5zdGFs
bGVkRm9udCogZmluZENsb3Nlc3RGb250KGNvbnN0IEZvbnREYXRhYmFzZTo6SW4KICAgICByZXR1
cm4gJmZhbWlseUZvbnRzLmluc3RhbGxlZEZvbnRzW2ZvbnRTZWxlY3Rpb25BbGdvcml0aG0uaW5k
ZXhPZkJlc3RDYXBhYmlsaXRpZXMoKV07CiB9CiAKLVZlY3RvcjxGb250U2VsZWN0aW9uQ2FwYWJp
bGl0aWVzPiBGb250Q2FjaGU6OmdldEZvbnRTZWxlY3Rpb25DYXBhYmlsaXRpZXNJbkZhbWlseShj
b25zdCBBdG9taWNTdHJpbmcmIGZhbWlseU5hbWUsIEFsbG93VXNlckluc3RhbGxlZEZvbnRzIGFs
bG93VXNlckluc3RhbGxlZEZvbnRzKQorVmVjdG9yPEZvbnRTZWxlY3Rpb25DYXBhYmlsaXRpZXM+
IEZvbnRDYWNoZTo6Z2V0Rm9udFNlbGVjdGlvbkNhcGFiaWxpdGllc0luRmFtaWx5KGNvbnN0IEF0
b21TdHJpbmcmIGZhbWlseU5hbWUsIEFsbG93VXNlckluc3RhbGxlZEZvbnRzIGFsbG93VXNlcklu
c3RhbGxlZEZvbnRzKQogewogICAgIGF1dG8mIGZvbnREYXRhYmFzZSA9IGFsbG93VXNlckluc3Rh
bGxlZEZvbnRzID09IEFsbG93VXNlckluc3RhbGxlZEZvbnRzOjpZZXMgPyBGb250RGF0YWJhc2U6
OnNpbmdsZXRvbkFsbG93aW5nVXNlckluc3RhbGxlZEZvbnRzKCkgOiBGb250RGF0YWJhc2U6OnNp
bmdsZXRvbkRpc2FsbG93aW5nVXNlckluc3RhbGxlZEZvbnRzKCk7CiAgICAgY29uc3QgYXV0byYg
Zm9udHMgPSBmb250RGF0YWJhc2UuY29sbGVjdGlvbkZvckZhbWlseShmYW1pbHlOYW1lLnN0cmlu
ZygpKTsKQEAgLTExNzUsNyArMTE3NSw3IEBAIHN0cnVjdCBGb250TG9va3VwIHsKICAgICBib29s
IGNyZWF0ZWRGcm9tUG9zdFNjcmlwdE5hbWUgeyBmYWxzZSB9OwogfTsKIAotc3RhdGljIEZvbnRM
b29rdXAgcGxhdGZvcm1Gb250TG9va3VwV2l0aEZhbWlseShjb25zdCBBdG9taWNTdHJpbmcmIGZh
bWlseSwgRm9udFNlbGVjdGlvblJlcXVlc3QgcmVxdWVzdCwgZmxvYXQgc2l6ZSwgQWxsb3dVc2Vy
SW5zdGFsbGVkRm9udHMgYWxsb3dVc2VySW5zdGFsbGVkRm9udHMpCitzdGF0aWMgRm9udExvb2t1
cCBwbGF0Zm9ybUZvbnRMb29rdXBXaXRoRmFtaWx5KGNvbnN0IEF0b21TdHJpbmcmIGZhbWlseSwg
Rm9udFNlbGVjdGlvblJlcXVlc3QgcmVxdWVzdCwgZmxvYXQgc2l6ZSwgQWxsb3dVc2VySW5zdGFs
bGVkRm9udHMgYWxsb3dVc2VySW5zdGFsbGVkRm9udHMpCiB7CiAgICAgY29uc3QgYXV0byYgd2hp
dGVsaXN0ID0gZm9udFdoaXRlbGlzdCgpOwogICAgIGlmICghaXNTeXN0ZW1Gb250KGZhbWlseSkg
JiYgd2hpdGVsaXN0LnNpemUoKSAmJiAhd2hpdGVsaXN0LmNvbnRhaW5zKGZhbWlseSkpCkBAIC0x
MjM4LDcgKzEyMzgsNyBAQCBzdGF0aWMgdm9pZCBpbnZhbGlkYXRlRm9udENhY2hlKCkKICAgICBG
b250Q2FjaGU6OnNpbmdsZXRvbigpLmludmFsaWRhdGUoKTsKIH0KIAotc3RhdGljIFJldGFpblB0
cjxDVEZvbnRSZWY+IGZvbnRXaXRoRmFtaWx5KGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5LCBj
b25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgY29uc3QgRm9udEZlYXR1cmVT
ZXR0aW5ncyogZm9udEZhY2VGZWF0dXJlcywgY29uc3QgRm9udFZhcmlhbnRTZXR0aW5ncyogZm9u
dEZhY2VWYXJpYW50U2V0dGluZ3MsIEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXMg
Zm9udEZhY2VDYXBhYmlsaXRpZXMsIGZsb2F0IHNpemUpCitzdGF0aWMgUmV0YWluUHRyPENURm9u
dFJlZj4gZm9udFdpdGhGYW1pbHkoY29uc3QgQXRvbVN0cmluZyYgZmFtaWx5LCBjb25zdCBGb250
RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgY29uc3QgRm9udEZlYXR1cmVTZXR0aW5ncyog
Zm9udEZhY2VGZWF0dXJlcywgY29uc3QgRm9udFZhcmlhbnRTZXR0aW5ncyogZm9udEZhY2VWYXJp
YW50U2V0dGluZ3MsIEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXMgZm9udEZhY2VD
YXBhYmlsaXRpZXMsIGZsb2F0IHNpemUpCiB7CiAgICAgaWYgKGZhbWlseS5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTI1Miw3ICsxMjUyLDcgQEAgc3RhdGljIFJldGFp
blB0cjxDVEZvbnRSZWY+IGZvbnRXaXRoRmFtaWx5KGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5
LCBjb25zdCBGb24KIH0KIAogI2lmIFBMQVRGT1JNKE1BQykKLXN0YXRpYyBib29sIHNob3VsZEF1
dG9BY3RpdmF0ZUZvbnRJZk5lZWRlZChjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSkKK3N0YXRp
YyBib29sIHNob3VsZEF1dG9BY3RpdmF0ZUZvbnRJZk5lZWRlZChjb25zdCBBdG9tU3RyaW5nJiBm
YW1pbHkpCiB7CiAjaWZuZGVmIE5ERUJVRwogICAgIC8vIFRoaXMgY2FjaGUgaXMgbm90IHRocmVh
ZCBzYWZlIHNvIHRoZSBmb2xsb3dpbmcgYXNzZXJ0aW9uIGlzIHRoZXJlIHRvCkBAIC0xMjYxLDcg
KzEyNjEsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRBdXRvQWN0aXZhdGVGb250SWZOZWVkZWQoY29u
c3QgQXRvbWljU3RyaW5nJiBmYW1pbHkpCiAgICAgQVNTRVJUKGluaXRUaHJlYWQgPT0gJlRocmVh
ZDo6Y3VycmVudCgpKTsKICNlbmRpZgogCi0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hT
ZXQ8QXRvbWljU3RyaW5nPj4ga25vd25GYW1pbGllczsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8SGFzaFNldDxBdG9tU3RyaW5nPj4ga25vd25GYW1pbGllczsKICAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgbWF4Q2FjaGVTaXplID0gMTI4OwogICAgIEFTU0VSVChrbm93bkZhbWlsaWVzLmdl
dCgpLnNpemUoKSA8PSBtYXhDYWNoZVNpemUpOwogICAgIGlmIChrbm93bkZhbWlsaWVzLmdldCgp
LnNpemUoKSA9PSBtYXhDYWNoZVNpemUpCkBAIC0xMjgzLDcgKzEyODMsNyBAQCBzdGF0aWMgdm9p
ZCBhdXRvQWN0aXZhdGVGb250KGNvbnN0IFN0cmluZyYgbmFtZSwgQ0dGbG9hdCBzaXplKQogfQog
I2VuZGlmCiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250UGxhdGZvcm1EYXRhPiBGb250Q2FjaGU6OmNy
ZWF0ZUZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRp
b24sIGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5LCBjb25zdCBGb250RmVhdHVyZVNldHRpbmdz
KiBmb250RmFjZUZlYXR1cmVzLCBjb25zdCBGb250VmFyaWFudFNldHRpbmdzKiBmb250RmFjZVZh
cmlhbnRTZXR0aW5ncywgRm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllcyBmb250RmFj
ZUNhcGFiaWxpdGllcykKK3N0ZDo6dW5pcXVlX3B0cjxGb250UGxhdGZvcm1EYXRhPiBGb250Q2Fj
aGU6OmNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVz
Y3JpcHRpb24sIGNvbnN0IEF0b21TdHJpbmcmIGZhbWlseSwgY29uc3QgRm9udEZlYXR1cmVTZXR0
aW5ncyogZm9udEZhY2VGZWF0dXJlcywgY29uc3QgRm9udFZhcmlhbnRTZXR0aW5ncyogZm9udEZh
Y2VWYXJpYW50U2V0dGluZ3MsIEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXMgZm9u
dEZhY2VDYXBhYmlsaXRpZXMpCiB7CiAgICAgZmxvYXQgc2l6ZSA9IGZvbnREZXNjcmlwdGlvbi5j
b21wdXRlZFBpeGVsU2l6ZSgpOwogCkBAIC0xMzM5LDcgKzEzMzksNyBAQCBzdGF0aWMgaW5saW5l
IGJvb2wgaXNBcmFiaWNDaGFyYWN0ZXIoVUNoYXIgY2hhcmFjdGVyKQogfQogI2VuZGlmCiAKLXN0
YXRpYyBSZXRhaW5QdHI8Q1RGb250UmVmPiBsb29rdXBGYWxsYmFja0ZvbnQoQ1RGb250UmVmIGZv
bnQsIEZvbnRTZWxlY3Rpb25WYWx1ZSBmb250V2VpZ2h0LCBjb25zdCBBdG9taWNTdHJpbmcmIGxv
Y2FsZSwgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKK3N0YXRpYyBS
ZXRhaW5QdHI8Q1RGb250UmVmPiBsb29rdXBGYWxsYmFja0ZvbnQoQ1RGb250UmVmIGZvbnQsIEZv
bnRTZWxlY3Rpb25WYWx1ZSBmb250V2VpZ2h0LCBjb25zdCBBdG9tU3RyaW5nJiBsb2NhbGUsIGNv
bnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCiB7CiAgICAgQVNTRVJUKGxl
bmd0aCA+IDApOwogCkBAIC0xNDE3LDcgKzE0MTcsNyBAQCBSZWZQdHI8Rm9udD4gRm9udENhY2hl
OjpzeXN0ZW1GYWxsYmFja0ZvckNoYXJhY3RlcnMoY29uc3QgRm9udERlc2NyaXB0aW9uJiBkZXNj
cgogICAgIHJldHVybiBmb250Rm9yUGxhdGZvcm1EYXRhKGFsdGVybmF0ZUZvbnQpOwogfQogCi1j
b25zdCBBdG9taWNTdHJpbmcmIEZvbnRDYWNoZTo6cGxhdGZvcm1BbHRlcm5hdGVGYW1pbHlOYW1l
KGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5TmFtZSkKK2NvbnN0IEF0b21TdHJpbmcmIEZvbnRD
YWNoZTo6cGxhdGZvcm1BbHRlcm5hdGVGYW1pbHlOYW1lKGNvbnN0IEF0b21TdHJpbmcmIGZhbWls
eU5hbWUpCiB7CiAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGhlaXRpU3RyaW5nW10gPSB7IDB4OWVk
MSwgMHg0ZjUzIH07CiAgICAgc3RhdGljIGNvbnN0IFVDaGFyIHNvbmd0aVN0cmluZ1tdID0geyAw
eDViOGIsIDB4NGY1MyB9OwpAQCAtMTQyNSwxMCArMTQyNSwxMCBAQCBjb25zdCBBdG9taWNTdHJp
bmcmIEZvbnRDYWNoZTo6cGxhdGZvcm1BbHRlcm5hdGVGYW1pbHlOYW1lKGNvbnN0IEF0b21pY1N0
cmluZyYgZgogICAgIHN0YXRpYyBjb25zdCBVQ2hhciB3ZWlydWFuWWFIZWlTdHJpbmdbXSA9IHsg
MHg1ZmFlLCAweDhmNmYsIDB4OTZjNSwgMHg5ZWQxIH07CiAgICAgc3RhdGljIGNvbnN0IFVDaGFy
IHdlaXJ1YW5aaGVuZ0hlaXRpU3RyaW5nW10gPSB7IDB4NWZhZSwgMHg4ZWRmLCAweDZiNjMsIDB4
OWVkMSwgMHg5YWQ0IH07CiAKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5n
PiBzb25ndGlTQygiU29uZ3RpIFNDIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCk7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gc29uZ3RpVEMoIlNv
bmd0aSBUQyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGhlaXRpU0NSZXBsYWNlbWVudCgiUGluZ0Zh
bmcgU0MiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBoZWl0aVRDUmVwbGFjZW1lbnQoIlBpbmdGYW5n
IFRDIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPEF0b21TdHJpbmc+IHNvbmd0aVNDKCJTb25ndGkgU0MiLCBBdG9tU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21T
dHJpbmc+IHNvbmd0aVRDKCJTb25ndGkgVEMiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21TdHJpbmc+IGhlaXRpU0NSZXBs
YWNlbWVudCgiUGluZ0ZhbmcgU0MiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21TdHJpbmc+IGhlaXRpVENSZXBsYWNlbWVu
dCgiUGluZ0ZhbmcgVEMiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAKICAg
ICBzd2l0Y2ggKGZhbWlseU5hbWUubGVuZ3RoKCkpIHsKICAgICBjYXNlIDI6CkBAIC0xNTM0LDcg
KzE1MzQsNyBAQCBSZWY8Rm9udD4gRm9udENhY2hlOjpsYXN0UmVzb3J0RmFsbGJhY2tGb250KGNv
bnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aQogewogICAgIC8vIEZJWE1FOiBXb3Vs
ZCBiZSBldmVuIGJldHRlciB0byBzb21laG93IGdldCB0aGUgdXNlcidzIGRlZmF1bHQgZm9udCBo
ZXJlLiAgRm9yIG5vdyB3ZSdsbCBwaWNrCiAgICAgLy8gdGhlIGRlZmF1bHQgdGhhdCB0aGUgdXNl
ciB3b3VsZCBnZXQgd2l0aG91dCBjaGFuZ2luZyBhbnkgcHJlZnMuCi0gICAgaWYgKGF1dG8gcmVz
dWx0ID0gZm9udEZvckZhbWlseShmb250RGVzY3JpcHRpb24sIEF0b21pY1N0cmluZygiVGltZXMi
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSkpCisgICAgaWYgKGF1dG8gcmVz
dWx0ID0gZm9udEZvckZhbWlseShmb250RGVzY3JpcHRpb24sIEF0b21TdHJpbmcoIlRpbWVzIiwg
QXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKSkKICAgICAgICAgcmV0dXJuICpyZXN1
bHQ7CiAKICAgICAvLyBMYXN0UmVzb3J0IGlzIGd1YXJhbnRlZWQgdG8gYmUgbm9uLW51bGwuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2Fj
aGVDb3JlVGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9u
dENhY2hlQ29yZVRleHQuaAppbmRleCBkMTFkYjk4MDc0M2Q1MThmYzJlYjM5ZWQ3ZjEzYWNlNjZi
ZjdlMDdiLi5iN2E4MDY2MTFmNzc4YmQxMzZkOGJmMGRkOGE4NGViNThjZDAyMzQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3Jl
VGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRD
YWNoZUNvcmVUZXh0LmgKQEAgLTUyLDggKzUyLDggQEAgc3RydWN0IFN5bnRoZXNpc1BhaXIgewog
CiBSZXRhaW5QdHI8Q1RGb250UmVmPiBwcmVwYXJlUGxhdGZvcm1Gb250KENURm9udFJlZiwgY29u
c3QgRm9udERlc2NyaXB0aW9uJiwgY29uc3QgRm9udEZlYXR1cmVTZXR0aW5ncyogZm9udEZhY2VG
ZWF0dXJlcywgY29uc3QgRm9udFZhcmlhbnRTZXR0aW5ncyogZm9udEZhY2VWYXJpYW50U2V0dGlu
Z3MsIEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXMgZm9udEZhY2VDYXBhYmlsaXRp
ZXMsIGJvb2wgYXBwbHlXZWlnaHRXaWR0aFNsb3BlVmFyaWF0aW9ucyA9IHRydWUpOwogU3ludGhl
c2lzUGFpciBjb21wdXRlTmVjZXNzYXJ5U3ludGhlc2lzKENURm9udFJlZiwgY29uc3QgRm9udERl
c2NyaXB0aW9uJiwgYm9vbCBpc1BsYXRmb3JtRm9udCA9IGZhbHNlKTsKLVJldGFpblB0cjxDVEZv
bnRSZWY+IHBsYXRmb3JtRm9udFdpdGhGYW1pbHlTcGVjaWFsQ2FzZShjb25zdCBBdG9taWNTdHJp
bmcmIGZhbWlseSwgRm9udFNlbGVjdGlvblJlcXVlc3QsIGZsb2F0IHNpemUsIEFsbG93VXNlcklu
c3RhbGxlZEZvbnRzKTsKLVJldGFpblB0cjxDVEZvbnRSZWY+IHBsYXRmb3JtRm9udFdpdGhGYW1p
bHkoY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHksIEZvbnRTZWxlY3Rpb25SZXF1ZXN0LCBUZXh0
UmVuZGVyaW5nTW9kZSwgZmxvYXQgc2l6ZSk7CitSZXRhaW5QdHI8Q1RGb250UmVmPiBwbGF0Zm9y
bUZvbnRXaXRoRmFtaWx5U3BlY2lhbENhc2UoY29uc3QgQXRvbVN0cmluZyYgZmFtaWx5LCBGb250
U2VsZWN0aW9uUmVxdWVzdCwgZmxvYXQgc2l6ZSwgQWxsb3dVc2VySW5zdGFsbGVkRm9udHMpOwor
UmV0YWluUHRyPENURm9udFJlZj4gcGxhdGZvcm1Gb250V2l0aEZhbWlseShjb25zdCBBdG9tU3Ry
aW5nJiBmYW1pbHksIEZvbnRTZWxlY3Rpb25SZXF1ZXN0LCBUZXh0UmVuZGVyaW5nTW9kZSwgZmxv
YXQgc2l6ZSk7CiBib29sIHJlcXVpcmVzQ3VzdG9tRmFsbGJhY2tGb250KFVDaGFyMzIgY2hhcmFj
dGVyKTsKIEZvbnRTZWxlY3Rpb25DYXBhYmlsaXRpZXMgY2FwYWJpbGl0aWVzRm9yRm9udERlc2Ny
aXB0b3IoQ1RGb250RGVzY3JpcHRvclJlZik7CiB2b2lkIGFkZEF0dHJpYnV0ZXNGb3JJbnN0YWxs
ZWRGb250cyhDRk11dGFibGVEaWN0aW9uYXJ5UmVmIGF0dHJpYnV0ZXMsIEFsbG93VXNlckluc3Rh
bGxlZEZvbnRzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0ZvbnREZXNjcmlwdGlvbkNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0ZvbnREZXNjcmlwdGlvbkNvY29hLmNwcAppbmRleCA4YjljNDM0OGQ0
NzQzMzU4Y2VmMGI2NThhNDJmNThmYTJlNmM5NzYxLi4xOWM3NjM2MDE2NWE0YmJiZThiOTU4ZTkz
NmIyNzNmOGExMTRiNWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Gb250RGVzY3JpcHRpb25Db2NvYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udERlc2NyaXB0aW9uQ29jb2EuY3BwCkBAIC0zNCw3
ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIFVTRV9QTEFURk9STV9TWVNURU1f
RkFMTEJBQ0tfTElTVAogCi1zdGF0aWMgaW5saW5lIGJvb2wgaXNTeXN0ZW1Gb250U3RyaW5nKGNv
bnN0IEF0b21pY1N0cmluZyYgc3RyaW5nKQorc3RhdGljIGlubGluZSBib29sIGlzU3lzdGVtRm9u
dFN0cmluZyhjb25zdCBBdG9tU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgcmV0dXJuIGVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHN0cmluZywgIi13ZWJraXQtc3lzdGVtLWZvbnQiKQogICAg
ICAgICB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcsICItYXBwbGUtc3lz
dGVtIikKQEAgLTU0LDcgKzU0LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwg
c3RkOjpzaXplX3Qgc2l6ZT4gaW5saW5lIHN0ZDo6YXJyYXk8VCwgc2l6ZT4gY28KICAgICByZXR1
cm4gY29udmVydEFycmF5PFQ+KGFycmF5LCBzdGQ6Om1ha2VfaW5kZXhfc2VxdWVuY2U8c2l6ZT4g
eyB9KTsKIH0KIAotc3RhdGljIGlubGluZSBib29sIGlzVUlGb250VGV4dFN0eWxlKGNvbnN0IEF0
b21pY1N0cmluZyYgc3RyaW5nKQorc3RhdGljIGlubGluZSBib29sIGlzVUlGb250VGV4dFN0eWxl
KGNvbnN0IEF0b21TdHJpbmcmIHN0cmluZykKIHsKICAgICBzdGF0aWMgY29uc3QgQ0ZTdHJpbmdS
ZWYgc3R5bGVzW10gPSB7CiAgICAgICAgIGtDVFVJRm9udFRleHRTdHlsZUhlYWRsaW5lLApAQCAt
NzgsMTIgKzc4LDEyIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1VJRm9udFRleHRTdHlsZShjb25z
dCBBdG9taWNTdHJpbmcmIHN0cmluZykKICNlbmRpZgogICAgIH07CiAgICAgCi0gICAgc3RhdGlj
IGF1dG8gc3RyaW5ncyB7IG1ha2VOZXZlckRlc3Ryb3llZChjb252ZXJ0QXJyYXk8QXRvbWljU3Ry
aW5nPihzdHlsZXMpKSB9OworICAgIHN0YXRpYyBhdXRvIHN0cmluZ3MgeyBtYWtlTmV2ZXJEZXN0
cm95ZWQoY29udmVydEFycmF5PEF0b21TdHJpbmc+KHN0eWxlcykpIH07CiAgICAgcmV0dXJuIHN0
ZDo6ZmluZChzdHJpbmdzLmdldCgpLmJlZ2luKCksIHN0cmluZ3MuZ2V0KCkuZW5kKCksIHN0cmlu
ZykgIT0gc3RyaW5ncy5nZXQoKS5lbmQoKTsKIH0KICNlbmRpZgogCi1zdGF0aWMgaW5saW5lIFZl
Y3RvcjxSZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRvclJlZj4+IHN5c3RlbUZvbnRDYXNjYWRlTGlz
dChjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgY29uc3QgQXRvbWlj
U3RyaW5nJiBjc3NGYW1pbHksIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpDbGllbnRVc2Ug
Y2xpZW50VXNlLCBBbGxvd1VzZXJJbnN0YWxsZWRGb250cyBhbGxvd1VzZXJJbnN0YWxsZWRGb250
cykKK3N0YXRpYyBpbmxpbmUgVmVjdG9yPFJldGFpblB0cjxDVEZvbnREZXNjcmlwdG9yUmVmPj4g
c3lzdGVtRm9udENhc2NhZGVMaXN0KGNvbnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mIGRlc2Ny
aXB0aW9uLCBjb25zdCBBdG9tU3RyaW5nJiBjc3NGYW1pbHksIFN5c3RlbUZvbnREYXRhYmFzZUNv
cmVUZXh0OjpDbGllbnRVc2UgY2xpZW50VXNlLCBBbGxvd1VzZXJJbnN0YWxsZWRGb250cyBhbGxv
d1VzZXJJbnN0YWxsZWRGb250cykKIHsKICAgICByZXR1cm4gU3lzdGVtRm9udERhdGFiYXNlQ29y
ZVRleHQ6OnNpbmdsZXRvbigpLmNhc2NhZGVMaXN0KGRlc2NyaXB0aW9uLCBjc3NGYW1pbHksIGNs
aWVudFVzZSwgYWxsb3dVc2VySW5zdGFsbGVkRm9udHMpOwogfQpAQCAtMTYzLDcgKzE2Myw3IEBA
IHN0YXRpYyB2b2lkIGxhbmd1YWdlQ2hhbmdlZCh2b2lkKikKICAgICBjYWNoZWRTcGVjaWFsaXpl
ZENoaW5lc2VMb2NhbGUoKSA9IGNvbXB1dGVTcGVjaWFsaXplZENoaW5lc2VMb2NhbGUoKTsKIH0K
IAotQXRvbWljU3RyaW5nIEZvbnREZXNjcmlwdGlvbjo6cGxhdGZvcm1SZXNvbHZlR2VuZXJpY0Zh
bWlseShVU2NyaXB0Q29kZSBzY3JpcHQsIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlLCBjb25z
dCBBdG9taWNTdHJpbmcmIGZhbWlseU5hbWUpCitBdG9tU3RyaW5nIEZvbnREZXNjcmlwdGlvbjo6
cGxhdGZvcm1SZXNvbHZlR2VuZXJpY0ZhbWlseShVU2NyaXB0Q29kZSBzY3JpcHQsIGNvbnN0IEF0
b21TdHJpbmcmIGxvY2FsZSwgY29uc3QgQXRvbVN0cmluZyYgZmFtaWx5TmFtZSkKIHsKICAgICBB
U1NFUlQoKGxvY2FsZS5pc051bGwoKSAmJiBzY3JpcHQgPT0gVVNDUklQVF9DT01NT04pIHx8ICFs
b2NhbGUuaXNOdWxsKCkpOwogICAgIGlmIChzY3JpcHQgPT0gVVNDUklQVF9DT01NT04pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9TeXN0ZW1Gb250
RGF0YWJhc2VDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9TeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5jcHAKaW5kZXggYjEzNDY4MTVlOWUwYzA0
OTQzM2NjNjYwOWEzY2U3YjJhOWIyZjczYi4uYjNkMDJmZjg1NWE4OWFlNDkzZGFiZTkzODA4NzAy
NDg5MTFmZDhhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1N5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0LmNwcApA
QCAtMTI5LDcgKzEyOSw3IEBAIFZlY3RvcjxSZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRvclJlZj4+
IFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0Ojpjb21wdXRlQ2FzY2FkCiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAotU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OkNhc2NhZGVMaXN0UGFyYW1l
dGVycyBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6c3lzdGVtRm9udFBhcmFtZXRlcnMoY29u
c3QgRm9udENhc2NhZGVEZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIGNvbnN0IEF0b21pY1N0cmlu
ZyYgZmFtaWx5TmFtZSwgQ2xpZW50VXNlIGNsaWVudFVzZSwgQWxsb3dVc2VySW5zdGFsbGVkRm9u
dHMgYWxsb3dVc2VySW5zdGFsbGVkRm9udHMpCitTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6
Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpzeXN0ZW1G
b250UGFyYW1ldGVycyhjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwg
Y29uc3QgQXRvbVN0cmluZyYgZmFtaWx5TmFtZSwgQ2xpZW50VXNlIGNsaWVudFVzZSwgQWxsb3dV
c2VySW5zdGFsbGVkRm9udHMgYWxsb3dVc2VySW5zdGFsbGVkRm9udHMpCiB7CiAgICAgQ2FzY2Fk
ZUxpc3RQYXJhbWV0ZXJzIHJlc3VsdDsKICAgICByZXN1bHQubG9jYWxlID0gZGVzY3JpcHRpb24u
bG9jYWxlKCk7CkBAIC0xNjAsNyArMTYwLDcgQEAgU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6
OkNhc2NhZGVMaXN0UGFyYW1ldGVycyBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6c3kKICAg
ICAgICAgcmVzdWx0LndlaWdodCA9IGtDVEZvbnRXZWlnaHRCbGFjazsKIAogICAgIGlmIChjbGll
bnRVc2UgPT0gQ2xpZW50VXNlOjpGb3JTeXN0ZW1VSSkgewotICAgICAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBzeXN0ZW1VSSA9IEF0b21pY1N0cmluZygic3lzdGVtLXVp
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxBdG9tU3RyaW5nPiBzeXN0ZW1VSSA9IEF0b21TdHJpbmcoInN5c3RlbS11
aSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICAgICAgcmVzdWx0LmZv
bnROYW1lID0gc3lzdGVtVUkuZ2V0KCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJUKGNs
aWVudFVzZSA9PSBDbGllbnRVc2U6OkZvclRleHRTdHlsZSk7CkBAIC0xNzIsNyArMTcyLDcgQEAg
U3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OkNhc2NhZGVMaXN0UGFyYW1ldGVycyBTeXN0ZW1G
b250RGF0YWJhc2VDb3JlVGV4dDo6c3kKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1WZWN0b3I8
UmV0YWluUHRyPENURm9udERlc2NyaXB0b3JSZWY+PiBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4
dDo6Y2FzY2FkZUxpc3QoY29uc3QgRm9udENhc2NhZGVEZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24s
IGNvbnN0IEF0b21pY1N0cmluZyYgY3NzRmFtaWx5LCBDbGllbnRVc2UgY2xpZW50VXNlLCBBbGxv
d1VzZXJJbnN0YWxsZWRGb250cyBhbGxvd1VzZXJJbnN0YWxsZWRGb250cykKK1ZlY3RvcjxSZXRh
aW5QdHI8Q1RGb250RGVzY3JpcHRvclJlZj4+IFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0Ojpj
YXNjYWRlTGlzdChjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgY29u
c3QgQXRvbVN0cmluZyYgY3NzRmFtaWx5LCBDbGllbnRVc2UgY2xpZW50VXNlLCBBbGxvd1VzZXJJ
bnN0YWxsZWRGb250cyBhbGxvd1VzZXJJbnN0YWxsZWRGb250cykKIHsKICAgICByZXR1cm4gY2Fz
Y2FkZUxpc3Qoc3lzdGVtRm9udFBhcmFtZXRlcnMoZGVzY3JpcHRpb24sIGNzc0ZhbWlseSwgY2xp
ZW50VXNlLCBhbGxvd1VzZXJJbnN0YWxsZWRGb250cyksIGNsaWVudFVzZSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9TeXN0ZW1Gb250RGF0
YWJhc2VDb3JlVGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
U3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuaAppbmRleCAzNWUzNTQ2NzBiNWRiYTRhYzU1NmUx
ZjhkMmRlN2U1MzIzNTc5ZTJjLi4zMjNhYjI5OGYwNjMyZWFhNzU1YzhmYTdjMDI4NWYwOGIxM2Zi
NmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9T
eXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1N5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0LmgKQEAgLTI5LDggKzI5
LDggQEAKICNpbmNsdWRlIDxwYWwvc3BpL2NvY29hL0NvcmVUZXh0U1BJLmg+CiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgotI2luY2x1ZGUgPHd0
Zi90ZXh0L0F0b21pY1N0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ0hh
c2guaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvQXRvbVN0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC03NCw3ICs3
NCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBoYXNoZXIuaGFzaCgpOwogICAgICAg
ICB9CiAKLSAgICAgICAgc3RydWN0IENhc2NhZGVMaXN0UGFyYW1ldGVyc0hhc2ggOiBXVEY6OlBh
aXJIYXNoPEF0b21pY1N0cmluZywgZmxvYXQ+IHsKKyAgICAgICAgc3RydWN0IENhc2NhZGVMaXN0
UGFyYW1ldGVyc0hhc2ggOiBXVEY6OlBhaXJIYXNoPEF0b21TdHJpbmcsIGZsb2F0PiB7CiAgICAg
ICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBDYXNjYWRlTGlzdFBhcmFtZXRlcnMm
IHBhcmFtZXRlcnMpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHBhcmFt
ZXRlcnMuaGFzaCgpOwpAQCAtODYsOCArODYsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBzdGF0
aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7CiAgICAg
ICAgIH07CiAKLSAgICAgICAgQXRvbWljU3RyaW5nIGZvbnROYW1lOwotICAgICAgICBBdG9taWNT
dHJpbmcgbG9jYWxlOworICAgICAgICBBdG9tU3RyaW5nIGZvbnROYW1lOworICAgICAgICBBdG9t
U3RyaW5nIGxvY2FsZTsKICAgICAgICAgQ0dGbG9hdCB3ZWlnaHQgeyAwIH07CiAgICAgICAgIGZs
b2F0IHNpemUgeyAwIH07CiAgICAgICAgIEFsbG93VXNlckluc3RhbGxlZEZvbnRzIGFsbG93VXNl
ckluc3RhbGxlZEZvbnRzIHsgQWxsb3dVc2VySW5zdGFsbGVkRm9udHM6Ok5vIH07CkBAIC05OCw3
ICs5OCw3IEBAIHB1YmxpYzoKIAogICAgIGVudW0gY2xhc3MgQ2xpZW50VXNlIHsgRm9yU3lzdGVt
VUksIEZvclRleHRTdHlsZSB9OwogCi0gICAgVmVjdG9yPFJldGFpblB0cjxDVEZvbnREZXNjcmlw
dG9yUmVmPj4gY2FzY2FkZUxpc3QoY29uc3QgRm9udENhc2NhZGVEZXNjcmlwdGlvbiYsIGNvbnN0
IEF0b21pY1N0cmluZyYgY3NzRmFtaWx5LCBDbGllbnRVc2UsIEFsbG93VXNlckluc3RhbGxlZEZv
bnRzKTsKKyAgICBWZWN0b3I8UmV0YWluUHRyPENURm9udERlc2NyaXB0b3JSZWY+PiBjYXNjYWRl
TGlzdChjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiwgY29uc3QgQXRvbVN0cmluZyYgY3Nz
RmFtaWx5LCBDbGllbnRVc2UsIEFsbG93VXNlckluc3RhbGxlZEZvbnRzKTsKIAogICAgIFN0cmlu
ZyBzZXJpZkZhbWlseShjb25zdCBTdHJpbmcmIGxvY2FsZSk7CiAgICAgU3RyaW5nIHNhbnNTZXJp
ZkZhbWlseShjb25zdCBTdHJpbmcmIGxvY2FsZSk7CkBAIC0xMTYsNyArMTE2LDcgQEAgcHJpdmF0
ZToKICAgICBzdGF0aWMgUmV0YWluUHRyPENURm9udFJlZj4gYXBwbHlXZWlnaHRJdGFsaWNzQW5k
RmFsbGJhY2tCZWhhdmlvcihDVEZvbnRSZWYsIENHRmxvYXQgd2VpZ2h0LCBib29sIGl0YWxpYywg
ZmxvYXQgc2l6ZSwgQWxsb3dVc2VySW5zdGFsbGVkRm9udHMpOwogICAgIHN0YXRpYyBSZXRhaW5Q
dHI8Q1RGb250RGVzY3JpcHRvclJlZj4gcmVtb3ZlQ2FzY2FkZUxpc3QoQ1RGb250RGVzY3JpcHRv
clJlZik7CiAgICAgc3RhdGljIFZlY3RvcjxSZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRvclJlZj4+
IGNvbXB1dGVDYXNjYWRlTGlzdChDVEZvbnRSZWYsIENGU3RyaW5nUmVmIGxvY2FsZSk7Ci0gICAg
c3RhdGljIENhc2NhZGVMaXN0UGFyYW1ldGVycyBzeXN0ZW1Gb250UGFyYW1ldGVycyhjb25zdCBG
b250Q2FzY2FkZURlc2NyaXB0aW9uJiwgY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHlOYW1lLCBD
bGllbnRVc2UsIEFsbG93VXNlckluc3RhbGxlZEZvbnRzKTsKKyAgICBzdGF0aWMgQ2FzY2FkZUxp
c3RQYXJhbWV0ZXJzIHN5c3RlbUZvbnRQYXJhbWV0ZXJzKGNvbnN0IEZvbnRDYXNjYWRlRGVzY3Jp
cHRpb24mLCBjb25zdCBBdG9tU3RyaW5nJiBmYW1pbHlOYW1lLCBDbGllbnRVc2UsIEFsbG93VXNl
ckluc3RhbGxlZEZvbnRzKTsKIAogICAgIEhhc2hNYXA8Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzLCBW
ZWN0b3I8UmV0YWluUHRyPENURm9udERlc2NyaXB0b3JSZWY+PiwgQ2FzY2FkZUxpc3RQYXJhbWV0
ZXJzOjpDYXNjYWRlTGlzdFBhcmFtZXRlcnNIYXNoLCBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8Q2Fz
Y2FkZUxpc3RQYXJhbWV0ZXJzPj4gbV9zeXN0ZW1Gb250Q2FjaGU7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5jcHAK
aW5kZXggYWNiNzM4MjNhN2E5ZTdiODEyMGQ4NzlmYTQ1ODFjYmQ0N2YxYjU1OS4uM2E2ODBhMjk4
NTM2ODU1ZTdiMTY1MWQxZmRlZDg0MTU4MDg5M2Y4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5jcHAKQEAgLTM1
LDkgKzM1LDkgQEAgUmVmPFNvdXJjZUFscGhhPiBTb3VyY2VBbHBoYTo6Y3JlYXRlKEZpbHRlckVm
ZmVjdCYgc291cmNlRWZmZWN0KQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNvdXJjZUFscGhh
KHNvdXJjZUVmZmVjdCkpOwogfQogCi1jb25zdCBBdG9taWNTdHJpbmcmIFNvdXJjZUFscGhhOjpl
ZmZlY3ROYW1lKCkKK2NvbnN0IEF0b21TdHJpbmcmIFNvdXJjZUFscGhhOjplZmZlY3ROYW1lKCkK
IHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBzX2VmZmVj
dE5hbWUoIlNvdXJjZUFscGhhIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHNfZWZmZWN0TmFt
ZSgiU291cmNlQWxwaGEiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAg
cmV0dXJuIHNfZWZmZWN0TmFtZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5oCmluZGV4IDdkMWEzMTFlZmE0MjY3
MmU2NmFkNTY2MWVlZjYzYTYyNTM2ZmI1ZDEuLjY2MjlhMzY3ZmQ0MzI0MmQxYzRhYWRlNjRjNTYx
ZTg2NGEzOTQ5MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvU291cmNlQWxwaGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmgKQEAgLTI4LDcgKzI4LDcgQEAgY2xhc3MgU291cmNl
QWxwaGEgOiBwdWJsaWMgRmlsdGVyRWZmZWN0IHsKIHB1YmxpYzogICAgICAgIAogICAgIHN0YXRp
YyBSZWY8U291cmNlQWxwaGE+IGNyZWF0ZShGaWx0ZXJFZmZlY3QmKTsKIAotICAgIHN0YXRpYyBj
b25zdCBBdG9taWNTdHJpbmcmIGVmZmVjdE5hbWUoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbVN0
cmluZyYgZWZmZWN0TmFtZSgpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFNvdXJjZUFscGhh
KEZpbHRlckVmZmVjdCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHAKaW5kZXggNzUyMWE1ZWI2MWIyMjE2
MmFmOTQ0OTQ4OTEyMDg4NjQ2NzRmNTk5Ny4uMDQ1ZWUwMWYyMjNlNDIyZmZmMDQ2ZmVhMmY0Y2Ey
ZGRlMGRkZDcxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwCkBAIC0zNCw5ICszNCw5IEBAIFJlZjxT
b3VyY2VHcmFwaGljPiBTb3VyY2VHcmFwaGljOjpjcmVhdGUoRmlsdGVyJiBmaWx0ZXIpCiAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgU291cmNlR3JhcGhpYyhmaWx0ZXIpKTsKIH0KIAotY29uc3Qg
QXRvbWljU3RyaW5nJiBTb3VyY2VHcmFwaGljOjplZmZlY3ROYW1lKCkKK2NvbnN0IEF0b21TdHJp
bmcmIFNvdXJjZUdyYXBoaWM6OmVmZmVjdE5hbWUoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxjb25zdCBBdG9taWNTdHJpbmc+IHNfZWZmZWN0TmFtZSgiU291cmNlR3JhcGhpYyIsIEF0
b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxjb25zdCBBdG9tU3RyaW5nPiBzX2VmZmVjdE5hbWUoIlNvdXJjZUdyYXBoaWMiLCBBdG9t
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHNfZWZmZWN0TmFtZTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9Tb3VyY2VHcmFwaGljLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL1NvdXJjZUdyYXBoaWMuaAppbmRleCAxYTBlOWM4MmE4MzE1YzM3N2Y1OTM3YTAyOTM3N2Q3
N2EwYWI3YTkxLi4zNjE1ZjBlOWI2MWE4MzNhYjFkNDY4N2FiYTY4YWIzMjE0NTU4ZmRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdy
YXBoaWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1Nv
dXJjZUdyYXBoaWMuaApAQCAtMzAsNyArMzAsNyBAQCBjbGFzcyBTb3VyY2VHcmFwaGljIDogcHVi
bGljIEZpbHRlckVmZmVjdCB7CiBwdWJsaWM6ICAgICAgICAKICAgICBzdGF0aWMgUmVmPFNvdXJj
ZUdyYXBoaWM+IGNyZWF0ZShGaWx0ZXImKTsKIAotICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJp
bmcmIGVmZmVjdE5hbWUoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgZWZmZWN0TmFt
ZSgpOwogCiBwcml2YXRlOgogICAgIFNvdXJjZUdyYXBoaWMoRmlsdGVyJiBmaWx0ZXIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q2Fj
aGVGcmVlVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlw
ZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAKaW5kZXggZGIwNDg1ZGJjMzNhZTg2YzAzYWJmMGYzZjc5
ZGQ4OWZiOWE4ZGU1Yi4uNTNiNzc3ZWE2YjdlYTczZjY3NWU2NTA1ZDIxZjU1YzgxMTJmNWMxYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9u
dENhY2hlRnJlZVR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcApAQCAtMTkwLDcgKzE5MCw3IEBAIFJlZjxG
b250PiBGb250Q2FjaGU6Omxhc3RSZXNvcnRGYWxsYmFja0ZvbnQoY29uc3QgRm9udERlc2NyaXB0
aW9uJiBmb250RGVzY3JpcHRpCiB7CiAgICAgLy8gV2Ugd2FudCB0byByZXR1cm4gYSBmYWxsYmFj
ayBmb250IGhlcmUsIG90aGVyd2lzZSB0aGUgbG9naWMgcHJldmVudGluZyBGb250Q29uZmlnCiAg
ICAgLy8gbWF0Y2hlcyBmb3Igbm9uLWZhbGxiYWNrIGZvbnRzIG1pZ2h0IHJldHVybiAwLiBTZWUg
aXNGYWxsYmFja0ZvbnRBbGxvd2VkLgotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgdGltZXNTdHIo
InNlcmlmIik7CisgICAgc3RhdGljIEF0b21TdHJpbmcgdGltZXNTdHIoInNlcmlmIik7CiAgICAg
aWYgKFJlZlB0cjxGb250PiBmb250ID0gZm9udEZvckZhbWlseShmb250RGVzY3JpcHRpb24sIHRp
bWVzU3RyKSkKICAgICAgICAgcmV0dXJuICpmb250OwogCkBAIC0xOTgsMTIgKzE5OCwxMiBAQCBS
ZWY8Rm9udD4gRm9udENhY2hlOjpsYXN0UmVzb3J0RmFsbGJhY2tGb250KGNvbnN0IEZvbnREZXNj
cmlwdGlvbiYgZm9udERlc2NyaXB0aQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiB9CiAKLVZlY3RvcjxGb250U2VsZWN0aW9uQ2FwYWJpbGl0aWVzPiBGb250Q2FjaGU6OmdldEZv
bnRTZWxlY3Rpb25DYXBhYmlsaXRpZXNJbkZhbWlseShjb25zdCBBdG9taWNTdHJpbmcmLCBBbGxv
d1VzZXJJbnN0YWxsZWRGb250cykKK1ZlY3RvcjxGb250U2VsZWN0aW9uQ2FwYWJpbGl0aWVzPiBG
b250Q2FjaGU6OmdldEZvbnRTZWxlY3Rpb25DYXBhYmlsaXRpZXNJbkZhbWlseShjb25zdCBBdG9t
U3RyaW5nJiwgQWxsb3dVc2VySW5zdGFsbGVkRm9udHMpCiB7CiAgICAgcmV0dXJuIHsgfTsKIH0K
IAotc3RhdGljIFN0cmluZyBnZXRGYW1pbHlOYW1lU3RyaW5nRnJvbUZhbWlseShjb25zdCBBdG9t
aWNTdHJpbmcmIGZhbWlseSkKK3N0YXRpYyBTdHJpbmcgZ2V0RmFtaWx5TmFtZVN0cmluZ0Zyb21G
YW1pbHkoY29uc3QgQXRvbVN0cmluZyYgZmFtaWx5KQogewogICAgIC8vIElmIHdlJ3JlIGNyZWF0
aW5nIGEgZmFsbGJhY2sgZm9udCAoZS5nLiAiLXdlYmtpdC1tb25vc3BhY2UiKSwgY29udmVydCB0
aGUgbmFtZSBpbnRvCiAgICAgLy8gdGhlIGZhbGxiYWNrIG5hbWUgKGxpa2UgIm1vbm9zcGFjZSIp
IHRoYXQgZm9udGNvbmZpZyB1bmRlcnN0YW5kcy4KQEAgLTM3MSw3ICszNzEsNyBAQCBzdGF0aWMg
aW5saW5lIGJvb2wgaXNDb21tb25seVVzZWRHZW5lcmljRmFtaWx5KGNvbnN0IFN0cmluZyYgZmFt
aWx5TmFtZVN0cmluZykKICAgICAgICAgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uo
ZmFtaWx5TmFtZVN0cmluZywgImN1cnNpdmUiKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRQ
bGF0Zm9ybURhdGE+IEZvbnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250
RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHks
IGNvbnN0IEZvbnRGZWF0dXJlU2V0dGluZ3MqLCBjb25zdCBGb250VmFyaWFudFNldHRpbmdzKiwg
Rm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllcykKK3N0ZDo6dW5pcXVlX3B0cjxGb250
UGxhdGZvcm1EYXRhPiBGb250Q2FjaGU6OmNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9u
dERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24sIGNvbnN0IEF0b21TdHJpbmcmIGZhbWlseSwg
Y29uc3QgRm9udEZlYXR1cmVTZXR0aW5ncyosIGNvbnN0IEZvbnRWYXJpYW50U2V0dGluZ3MqLCBG
b250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzKQogewogICAgIC8vIFRoZSBDU1MgZm9u
dCBtYXRjaGluZyBhbGdvcml0aG0gKGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtZm9udHMvI2Zv
bnQtbWF0Y2hpbmctYWxnb3JpdGhtKQogICAgIC8vIHNheXMgdGhhdCB3ZSBtdXN0IGZpbmQgYW4g
ZXhhY3QgbWF0Y2ggZm9yIGZvbnQgZmFtaWx5LCBzbGFudCAoaXRhbGljIG9yIG9ibGlxdWUgY2Fu
IGJlIHVzZWQpCkBAIC00NjAsNyArNDYwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEZvbnRQbGF0Zm9y
bURhdGE+IEZvbnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGUKICAg
ICByZXR1cm4gcGxhdGZvcm1EYXRhOwogfQogCi1jb25zdCBBdG9taWNTdHJpbmcmIEZvbnRDYWNo
ZTo6cGxhdGZvcm1BbHRlcm5hdGVGYW1pbHlOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYpCitjb25z
dCBBdG9tU3RyaW5nJiBGb250Q2FjaGU6OnBsYXRmb3JtQWx0ZXJuYXRlRmFtaWx5TmFtZShjb25z
dCBBdG9tU3RyaW5nJikKIHsKICAgICByZXR1cm4gbnVsbEF0b20oKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJp
dmF0ZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmgKaW5kZXggOGI5NTRhZTYwOWY4MDdjNmZm
NDgwODlkMmZhMDg1ZjlhYWE4ZDhjMy4uNGQ5OGRkNDhiMTlhNDM1ZDczZmFjMGNmOTllZDZkMmYy
NWU3ZTg1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmgK
QEAgLTYwLDkgKzYwLDkgQEAgcHVibGljOgogCiAgICAgaW50IHRyYWNrSW5kZXgoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtX2luZGV4OyB9CiAKLSAgICBBdG9taWNTdHJpbmcgaWQoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBtX2lkOyB9Ci0gICAgQXRvbWljU3RyaW5nIGxhYmVsKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9sYWJlbDsgfQotICAgIEF0b21pY1N0cmluZyBsYW5ndWFn
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fbGFuZ3VhZ2U7IH0KKyAgICBBdG9tU3RyaW5n
IGlkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pZDsgfQorICAgIEF0b21TdHJpbmcgbGFi
ZWwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2xhYmVsOyB9CisgICAgQXRvbVN0cmluZyBs
YW5ndWFnZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fbGFuZ3VhZ2U7IH0KIAogcHJpdmF0
ZToKICAgICBBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcihXZWFrUHRyPE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcj4sIGdpbnQgaW5kZXgsIEdSZWZQdHI8R3N0UGFkPik7CkBAIC03MCw3ICs3
MCw3IEBAIHByaXZhdGU6CiAgICAgQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIoV2Vha1B0cjxN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI+LCBnaW50IGluZGV4LCBHUmVmUHRyPEdzdFN0cmVh
bT4pOwogI2VuZGlmCiAKLSAgICBBdG9taWNTdHJpbmcgbV9pZDsKKyAgICBBdG9tU3RyaW5nIG1f
aWQ7CiAgICAgV2Vha1B0cjxNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI+IG1fcGxheWVyOwog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmNwcAppbmRleCA1
NWFkMGZmMTQ1MDE3NjE5ZWVjN2EwYzFkMjJhMTQzZjEzOGI0YjIzLi44NDg3MGNjYzk5YWQyMzMx
NTYxNmE2MTU5MWFmODQ1MjEyNTY1YjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVn
aXN0cnlTY2FubmVyLmNwcApAQCAtMTMxLDcgKzEzMSw3IEBAIHZvaWQgR1N0cmVhbWVyUmVnaXN0
cnlTY2FubmVyOjpmaWxsTWltZVR5cGVTZXRGcm9tQ2Fwc01hcHBpbmcoVmVjdG9yPEdzdENhcHNX
ZWJLCiAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBtaW1lVHlwZSA6IGN1cnJlbnQu
d2Via2l0TWltZVR5cGVzKQogICAgICAgICAgICAgICAgICAgICBtX21pbWVUeXBlU2V0LmFkZCht
aW1lVHlwZSk7CiAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBtX21pbWVUeXBl
U2V0LmFkZChBdG9taWNTdHJpbmcoY3VycmVudC5jYXBzU3RyaW5nKSk7CisgICAgICAgICAgICAg
ICAgbV9taW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZyhjdXJyZW50LmNhcHNTdHJpbmcpKTsKICAg
ICAgICAgfQogICAgIH0KIH0KQEAgLTEzOSwyNCArMTM5LDI0IEBAIHZvaWQgR1N0cmVhbWVyUmVn
aXN0cnlTY2FubmVyOjpmaWxsTWltZVR5cGVTZXRGcm9tQ2Fwc01hcHBpbmcoVmVjdG9yPEdzdENh
cHNXZWJLCiB2b2lkIEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6aW5pdGlhbGl6ZSgpCiB7CiAg
ICAgaWYgKGhhc0VsZW1lbnRGb3JNZWRpYVR5cGUobV9hdWRpb0RlY29kZXJGYWN0b3JpZXMsICJh
dWRpby9tcGVnLCBtcGVndmVyc2lvbj0oaW50KTQiKSkgewotICAgICAgICBtX21pbWVUeXBlU2V0
LmFkZChBdG9taWNTdHJpbmcoImF1ZGlvL2FhYyIpKTsKLSAgICAgICAgbV9taW1lVHlwZVNldC5h
ZGQoQXRvbWljU3RyaW5nKCJhdWRpby9tcDQiKSk7Ci0gICAgICAgIG1fbWltZVR5cGVTZXQuYWRk
KEF0b21pY1N0cmluZygiYXVkaW8veC1tNGEiKSk7Ci0gICAgICAgIG1fY29kZWNNYXAuYWRkKEF0
b21pY1N0cmluZygibXBlZyIpLCBmYWxzZSk7Ci0gICAgICAgIG1fY29kZWNNYXAuYWRkKEF0b21p
Y1N0cmluZygibXA0YSoiKSwgZmFsc2UpOworICAgICAgICBtX21pbWVUeXBlU2V0LmFkZChBdG9t
U3RyaW5nKCJhdWRpby9hYWMiKSk7CisgICAgICAgIG1fbWltZVR5cGVTZXQuYWRkKEF0b21TdHJp
bmcoImF1ZGlvL21wNCIpKTsKKyAgICAgICAgbV9taW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygi
YXVkaW8veC1tNGEiKSk7CisgICAgICAgIG1fY29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIm1wZWci
KSwgZmFsc2UpOworICAgICAgICBtX2NvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJtcDRhKiIpLCBm
YWxzZSk7CiAgICAgfQogCiAgICAgYXV0byBvcHVzU3VwcG9ydGVkID0gaGFzRWxlbWVudEZvck1l
ZGlhVHlwZShtX2F1ZGlvRGVjb2RlckZhY3RvcmllcywgImF1ZGlvL3gtb3B1cyIpOwogICAgIGlm
IChvcHVzU3VwcG9ydGVkICYmICghbV9pc01lZGlhU291cmNlIHx8IGhhc0VsZW1lbnRGb3JNZWRp
YVR5cGUobV9hdWRpb1BhcnNlckZhY3RvcmllcywgImF1ZGlvL3gtb3B1cyIpKSkgewotICAgICAg
ICBtX21pbWVUeXBlU2V0LmFkZChBdG9taWNTdHJpbmcoImF1ZGlvL29wdXMiKSk7Ci0gICAgICAg
IG1fY29kZWNNYXAuYWRkKEF0b21pY1N0cmluZygib3B1cyIpLCBmYWxzZSk7Ci0gICAgICAgIG1f
Y29kZWNNYXAuYWRkKEF0b21pY1N0cmluZygieC1vcHVzIiksIGZhbHNlKTsKKyAgICAgICAgbV9t
aW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vb3B1cyIpKTsKKyAgICAgICAgbV9jb2Rl
Y01hcC5hZGQoQXRvbVN0cmluZygib3B1cyIpLCBmYWxzZSk7CisgICAgICAgIG1fY29kZWNNYXAu
YWRkKEF0b21TdHJpbmcoIngtb3B1cyIpLCBmYWxzZSk7CiAgICAgfQogCiAgICAgYXV0byB2b3Ji
aXNTdXBwb3J0ZWQgPSBoYXNFbGVtZW50Rm9yTWVkaWFUeXBlKG1fYXVkaW9EZWNvZGVyRmFjdG9y
aWVzLCAiYXVkaW8veC12b3JiaXMiKTsKICAgICBpZiAodm9yYmlzU3VwcG9ydGVkICYmICghbV9p
c01lZGlhU291cmNlIHx8IGhhc0VsZW1lbnRGb3JNZWRpYVR5cGUobV9hdWRpb1BhcnNlckZhY3Rv
cmllcywgImF1ZGlvL3gtdm9yYmlzIikpKSB7Ci0gICAgICAgIG1fY29kZWNNYXAuYWRkKEF0b21p
Y1N0cmluZygidm9yYmlzIiksIGZhbHNlKTsKLSAgICAgICAgbV9jb2RlY01hcC5hZGQoQXRvbWlj
U3RyaW5nKCJ4LXZvcmJpcyIpLCBmYWxzZSk7CisgICAgICAgIG1fY29kZWNNYXAuYWRkKEF0b21T
dHJpbmcoInZvcmJpcyIpLCBmYWxzZSk7CisgICAgICAgIG1fY29kZWNNYXAuYWRkKEF0b21TdHJp
bmcoIngtdm9yYmlzIiksIGZhbHNlKTsKICAgICB9CiAKICAgICBpZiAoaGFzRWxlbWVudEZvck1l
ZGlhVHlwZShtX2RlbXV4ZXJGYWN0b3JpZXMsICJ2aWRlby94LW1hdHJvc2thIikpIHsKQEAgLTE2
NCwyOSArMTY0LDI5IEBAIHZvaWQgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppbml0aWFsaXpl
KCkKICAgICAgICAgYXV0byB2cDlEZWNvZGVyQXZhaWxhYmxlID0gaGFzRWxlbWVudEZvck1lZGlh
VHlwZShtX3ZpZGVvRGVjb2RlckZhY3RvcmllcywgInZpZGVvL3gtdnA5IiwgdHJ1ZSk7CiAKICAg
ICAgICAgaWYgKHZwOERlY29kZXJBdmFpbGFibGUgfHwgdnA5RGVjb2RlckF2YWlsYWJsZSkKLSAg
ICAgICAgICAgIG1fbWltZVR5cGVTZXQuYWRkKEF0b21pY1N0cmluZygidmlkZW8vd2VibSIpKTsK
KyAgICAgICAgICAgIG1fbWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoInZpZGVvL3dlYm0iKSk7
CiAKICAgICAgICAgaWYgKHZwOERlY29kZXJBdmFpbGFibGUpIHsKLSAgICAgICAgICAgIG1fY29k
ZWNNYXAuYWRkKEF0b21pY1N0cmluZygidnA4IiksIHZwOERlY29kZXJBdmFpbGFibGUuaXNVc2lu
Z0hhcmR3YXJlKTsKLSAgICAgICAgICAgIG1fY29kZWNNYXAuYWRkKEF0b21pY1N0cmluZygieC12
cDgiKSwgdnA4RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwotICAgICAgICAgICAg
bV9jb2RlY01hcC5hZGQoQXRvbWljU3RyaW5nKCJ2cDguMCIpLCB2cDhEZWNvZGVyQXZhaWxhYmxl
LmlzVXNpbmdIYXJkd2FyZSk7CisgICAgICAgICAgICBtX2NvZGVjTWFwLmFkZChBdG9tU3RyaW5n
KCJ2cDgiKSwgdnA4RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOworICAgICAgICAg
ICAgbV9jb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC12cDgiKSwgdnA4RGVjb2RlckF2YWlsYWJs
ZS5pc1VzaW5nSGFyZHdhcmUpOworICAgICAgICAgICAgbV9jb2RlY01hcC5hZGQoQXRvbVN0cmlu
ZygidnA4LjAiKSwgdnA4RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwogICAgICAg
ICB9CiAgICAgICAgIGlmICh2cDlEZWNvZGVyQXZhaWxhYmxlKSB7Ci0gICAgICAgICAgICBtX2Nv
ZGVjTWFwLmFkZChBdG9taWNTdHJpbmcoInZwOSIpLCB2cDlEZWNvZGVyQXZhaWxhYmxlLmlzVXNp
bmdIYXJkd2FyZSk7Ci0gICAgICAgICAgICBtX2NvZGVjTWFwLmFkZChBdG9taWNTdHJpbmcoIngt
dnA5IiksIHZwOURlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKLSAgICAgICAgICAg
IG1fY29kZWNNYXAuYWRkKEF0b21pY1N0cmluZygidnA5LjAiKSwgdnA5RGVjb2RlckF2YWlsYWJs
ZS5pc1VzaW5nSGFyZHdhcmUpOworICAgICAgICAgICAgbV9jb2RlY01hcC5hZGQoQXRvbVN0cmlu
ZygidnA5IiksIHZwOURlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKKyAgICAgICAg
ICAgIG1fY29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIngtdnA5IiksIHZwOURlY29kZXJBdmFpbGFi
bGUuaXNVc2luZ0hhcmR3YXJlKTsKKyAgICAgICAgICAgIG1fY29kZWNNYXAuYWRkKEF0b21TdHJp
bmcoInZwOS4wIiksIHZwOURlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKICAgICAg
ICAgfQogICAgICAgICBpZiAob3B1c1N1cHBvcnRlZCkKLSAgICAgICAgICAgIG1fbWltZVR5cGVT
ZXQuYWRkKEF0b21pY1N0cmluZygiYXVkaW8vd2VibSIpKTsKKyAgICAgICAgICAgIG1fbWltZVR5
cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL3dlYm0iKSk7CiAgICAgfQogCiAgICAgYXV0byBo
MjY0RGVjb2RlckF2YWlsYWJsZSA9IGhhc0VsZW1lbnRGb3JNZWRpYVR5cGUobV92aWRlb0RlY29k
ZXJGYWN0b3JpZXMsICJ2aWRlby94LWgyNjQsIHByb2ZpbGU9KHN0cmluZyl7IGNvbnN0cmFpbmVk
LWJhc2VsaW5lLCBiYXNlbGluZSwgaGlnaCB9IiwgdHJ1ZSk7CiAgICAgaWYgKGgyNjREZWNvZGVy
QXZhaWxhYmxlICYmICghbV9pc01lZGlhU291cmNlIHx8IGhhc0VsZW1lbnRGb3JNZWRpYVR5cGUo
bV92aWRlb1BhcnNlckZhY3RvcmllcywgInZpZGVvL3gtaDI2NCIpKSkgewotICAgICAgICBtX21p
bWVUeXBlU2V0LmFkZChBdG9taWNTdHJpbmcoInZpZGVvL21wNCIpKTsKLSAgICAgICAgbV9taW1l
VHlwZVNldC5hZGQoQXRvbWljU3RyaW5nKCJ2aWRlby94LW00diIpKTsKLSAgICAgICAgbV9jb2Rl
Y01hcC5hZGQoQXRvbWljU3RyaW5nKCJ4LWgyNjQiKSwgaDI2NERlY29kZXJBdmFpbGFibGUuaXNV
c2luZ0hhcmR3YXJlKTsKLSAgICAgICAgbV9jb2RlY01hcC5hZGQoQXRvbWljU3RyaW5nKCJhdmMq
IiksIGgyNjREZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7Ci0gICAgICAgIG1fY29k
ZWNNYXAuYWRkKEF0b21pY1N0cmluZygibXA0dioiKSwgaDI2NERlY29kZXJBdmFpbGFibGUuaXNV
c2luZ0hhcmR3YXJlKTsKKyAgICAgICAgbV9taW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygidmlk
ZW8vbXA0IikpOworICAgICAgICBtX21pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJ2aWRlby94
LW00diIpKTsKKyAgICAgICAgbV9jb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC1oMjY0IiksIGgy
NjREZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CisgICAgICAgIG1fY29kZWNNYXAu
YWRkKEF0b21TdHJpbmcoImF2YyoiKSwgaDI2NERlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3
YXJlKTsKKyAgICAgICAgbV9jb2RlY01hcC5hZGQoQXRvbVN0cmluZygibXA0dioiKSwgaDI2NERl
Y29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKICAgICB9CiAKICAgICBpZiAobV9pc01l
ZGlhU291cmNlKQpAQCAtMjIzLDU0ICsyMjMsNTQgQEAgdm9pZCBHU3RyZWFtZXJSZWdpc3RyeVNj
YW5uZXI6OmluaXRpYWxpemUoKQogICAgIGZpbGxNaW1lVHlwZVNldEZyb21DYXBzTWFwcGluZyht
YXBwaW5nKTsKIAogICAgIGlmIChoYXNFbGVtZW50Rm9yTWVkaWFUeXBlKG1fZGVtdXhlckZhY3Rv
cmllcywgImFwcGxpY2F0aW9uL29nZyIpKSB7Ci0gICAgICAgIG1fbWltZVR5cGVTZXQuYWRkKEF0
b21pY1N0cmluZygiYXBwbGljYXRpb24vb2dnIikpOworICAgICAgICBtX21pbWVUeXBlU2V0LmFk
ZChBdG9tU3RyaW5nKCJhcHBsaWNhdGlvbi9vZ2ciKSk7CiAKICAgICAgICAgaWYgKHZvcmJpc1N1
cHBvcnRlZCkgewotICAgICAgICAgICAgbV9taW1lVHlwZVNldC5hZGQoQXRvbWljU3RyaW5nKCJh
dWRpby9vZ2ciKSk7Ci0gICAgICAgICAgICBtX21pbWVUeXBlU2V0LmFkZChBdG9taWNTdHJpbmco
ImF1ZGlvL3gtdm9yYmlzK29nZyIpKTsKKyAgICAgICAgICAgIG1fbWltZVR5cGVTZXQuYWRkKEF0
b21TdHJpbmcoImF1ZGlvL29nZyIpKTsKKyAgICAgICAgICAgIG1fbWltZVR5cGVTZXQuYWRkKEF0
b21TdHJpbmcoImF1ZGlvL3gtdm9yYmlzK29nZyIpKTsKICAgICAgICAgfQogCiAgICAgICAgIGlm
IChoYXNFbGVtZW50Rm9yTWVkaWFUeXBlKG1fYXVkaW9EZWNvZGVyRmFjdG9yaWVzLCAiYXVkaW8v
eC1zcGVleCIpKSB7Ci0gICAgICAgICAgICBtX21pbWVUeXBlU2V0LmFkZChBdG9taWNTdHJpbmco
ImF1ZGlvL29nZyIpKTsKLSAgICAgICAgICAgIG1fY29kZWNNYXAuYWRkKEF0b21pY1N0cmluZygi
c3BlZXgiKSwgZmFsc2UpOworICAgICAgICAgICAgbV9taW1lVHlwZVNldC5hZGQoQXRvbVN0cmlu
ZygiYXVkaW8vb2dnIikpOworICAgICAgICAgICAgbV9jb2RlY01hcC5hZGQoQXRvbVN0cmluZygi
c3BlZXgiKSwgZmFsc2UpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGhhc0VsZW1lbnRGb3JN
ZWRpYVR5cGUobV92aWRlb0RlY29kZXJGYWN0b3JpZXMsICJ2aWRlby94LXRoZW9yYSIpKSB7Ci0g
ICAgICAgICAgICBtX21pbWVUeXBlU2V0LmFkZChBdG9taWNTdHJpbmcoInZpZGVvL29nZyIpKTsK
LSAgICAgICAgICAgIG1fY29kZWNNYXAuYWRkKEF0b21pY1N0cmluZygidGhlb3JhIiksIGZhbHNl
KTsKKyAgICAgICAgICAgIG1fbWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoInZpZGVvL29nZyIp
KTsKKyAgICAgICAgICAgIG1fY29kZWNNYXAuYWRkKEF0b21TdHJpbmcoInRoZW9yYSIpLCBmYWxz
ZSk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBib29sIGF1ZGlvTXBlZ1N1cHBvcnRlZCA9IGZh
bHNlOwogICAgIGlmIChoYXNFbGVtZW50Rm9yTWVkaWFUeXBlKG1fYXVkaW9EZWNvZGVyRmFjdG9y
aWVzLCAiYXVkaW8vbXBlZywgbXBlZ3ZlcnNpb249KGludCkxLCBsYXllcj0oaW50KVsxLCAzXSIp
KSB7CiAgICAgICAgIGF1ZGlvTXBlZ1N1cHBvcnRlZCA9IHRydWU7Ci0gICAgICAgIG1fbWltZVR5
cGVTZXQuYWRkKEF0b21pY1N0cmluZygiYXVkaW8vbXAxIikpOwotICAgICAgICBtX21pbWVUeXBl
U2V0LmFkZChBdG9taWNTdHJpbmcoImF1ZGlvL21wMyIpKTsKLSAgICAgICAgbV9taW1lVHlwZVNl
dC5hZGQoQXRvbWljU3RyaW5nKCJhdWRpby94LW1wMyIpKTsKLSAgICAgICAgbV9jb2RlY01hcC5h
ZGQoQXRvbWljU3RyaW5nKCJhdWRpby9tcDMiKSwgZmFsc2UpOworICAgICAgICBtX21pbWVUeXBl
U2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9tcDEiKSk7CisgICAgICAgIG1fbWltZVR5cGVTZXQu
YWRkKEF0b21TdHJpbmcoImF1ZGlvL21wMyIpKTsKKyAgICAgICAgbV9taW1lVHlwZVNldC5hZGQo
QXRvbVN0cmluZygiYXVkaW8veC1tcDMiKSk7CisgICAgICAgIG1fY29kZWNNYXAuYWRkKEF0b21T
dHJpbmcoImF1ZGlvL21wMyIpLCBmYWxzZSk7CiAgICAgfQogCiAgICAgaWYgKGhhc0VsZW1lbnRG
b3JNZWRpYVR5cGUobV9hdWRpb0RlY29kZXJGYWN0b3JpZXMsICJhdWRpby9tcGVnLCBtcGVndmVy
c2lvbj0oaW50KTIiKSkgewogICAgICAgICBhdWRpb01wZWdTdXBwb3J0ZWQgPSB0cnVlOwotICAg
ICAgICBtX21pbWVUeXBlU2V0LmFkZChBdG9taWNTdHJpbmcoImF1ZGlvL21wMiIpKTsKKyAgICAg
ICAgbV9taW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vbXAyIikpOwogICAgIH0KIAog
ICAgIGF1ZGlvTXBlZ1N1cHBvcnRlZCB8PSBpc0NvbnRhaW5lclR5cGVTdXBwb3J0ZWQoImF1ZGlv
L21wNCIpOwogICAgIGlmIChhdWRpb01wZWdTdXBwb3J0ZWQpIHsKLSAgICAgICAgbV9taW1lVHlw
ZVNldC5hZGQoQXRvbWljU3RyaW5nKCJhdWRpby9tcGVnIikpOwotICAgICAgICBtX21pbWVUeXBl
U2V0LmFkZChBdG9taWNTdHJpbmcoImF1ZGlvL3gtbXBlZyIpKTsKKyAgICAgICAgbV9taW1lVHlw
ZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vbXBlZyIpKTsKKyAgICAgICAgbV9taW1lVHlwZVNl
dC5hZGQoQXRvbVN0cmluZygiYXVkaW8veC1tcGVnIikpOwogICAgIH0KIAogICAgIGJvb2wgbWF0
cm9za2FTdXBwb3J0ZWQgPSBoYXNFbGVtZW50Rm9yTWVkaWFUeXBlKG1fZGVtdXhlckZhY3Rvcmll
cywgInZpZGVvL3gtbWF0cm9za2EiKTsKICAgICBpZiAobWF0cm9za2FTdXBwb3J0ZWQpIHsKLSAg
ICAgICAgbV9taW1lVHlwZVNldC5hZGQoQXRvbWljU3RyaW5nKCJ2aWRlby94LW1hdHJvc2thIikp
OworICAgICAgICBtX21pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJ2aWRlby94LW1hdHJvc2th
IikpOwogCiAgICAgICAgIGlmIChoYXNFbGVtZW50Rm9yTWVkaWFUeXBlKG1fdmlkZW9EZWNvZGVy
RmFjdG9yaWVzLCAidmlkZW8veC12cDEwIikpCi0gICAgICAgICAgICBtX21pbWVUeXBlU2V0LmFk
ZChBdG9taWNTdHJpbmcoInZpZGVvL3dlYm0iKSk7CisgICAgICAgICAgICBtX21pbWVUeXBlU2V0
LmFkZChBdG9tU3RyaW5nKCJ2aWRlby93ZWJtIikpOwogICAgIH0KIAogICAgIGlmICgobWF0cm9z
a2FTdXBwb3J0ZWQgfHwgaXNDb250YWluZXJUeXBlU3VwcG9ydGVkKCJ2aWRlby9tcDQiKSkgJiYg
aGFzRWxlbWVudEZvck1lZGlhVHlwZShtX3ZpZGVvRGVjb2RlckZhY3RvcmllcywgInZpZGVvL3gt
YXYxIikpCi0gICAgICAgIG1fY29kZWNNYXAuYWRkKEF0b21pY1N0cmluZygiYXYwMSoiKSwgZmFs
c2UpOworICAgICAgICBtX2NvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJhdjAxKiIpLCBmYWxzZSk7
CiB9CiAKIGJvb2wgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppc0NvZGVjU3VwcG9ydGVkKFN0
cmluZyBjb2RlYywgYm9vbCBzaG91bGRDaGVja0ZvckhhcmR3YXJlVXNlKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1l
clJlZ2lzdHJ5U2Nhbm5lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5oCmluZGV4IGVlODRkZjVmZjI5NTU5Njky
OWIzNDZjYjA3Njk5OWM5OGNlZjNlMDEuLjJkZGFlYzY5MDQ1Nzk5YTZhNThhYjQ5ZmFlM2Q3ZGE4
MzZlMTg0NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9HU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmgKQEAg
LTI2LDggKzI2LDggQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9B
dG9taWNTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmdIYXNoLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21T
dHJpbmdIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC02Nyw4ICs2Nyw4IEBAIHByb3RlY3RlZDoKICAgICBzdHJ1Y3QgR3N0
Q2Fwc1dlYktpdE1hcHBpbmcgewogICAgICAgICBFbGVtZW50VHlwZSBlbGVtZW50VHlwZTsKICAg
ICAgICAgY29uc3QgY2hhciogY2Fwc1N0cmluZzsKLSAgICAgICAgVmVjdG9yPEF0b21pY1N0cmlu
Zz4gd2Via2l0TWltZVR5cGVzOwotICAgICAgICBWZWN0b3I8QXRvbWljU3RyaW5nPiB3ZWJraXRD
b2RlY1BhdHRlcm5zOworICAgICAgICBWZWN0b3I8QXRvbVN0cmluZz4gd2Via2l0TWltZVR5cGVz
OworICAgICAgICBWZWN0b3I8QXRvbVN0cmluZz4gd2Via2l0Q29kZWNQYXR0ZXJuczsKICAgICB9
OwogICAgIHZvaWQgZmlsbE1pbWVUeXBlU2V0RnJvbUNhcHNNYXBwaW5nKFZlY3RvcjxHc3RDYXBz
V2ViS2l0TWFwcGluZz4mKTsKIApAQCAtODQsNyArODQsNyBAQCBwcml2YXRlOgogICAgIEdMaXN0
KiBtX3ZpZGVvUGFyc2VyRmFjdG9yaWVzOwogICAgIEdMaXN0KiBtX2RlbXV4ZXJGYWN0b3JpZXM7
CiAgICAgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4gbV9taW1lVHlw
ZVNldDsKLSAgICBIYXNoTWFwPEF0b21pY1N0cmluZywgYm9vbD4gbV9jb2RlY01hcDsKKyAgICBI
YXNoTWFwPEF0b21TdHJpbmcsIGJvb2w+IG1fY29kZWNNYXA7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kTWV0YWRhdGFUZXh0
VHJhY2tQcml2YXRlR1N0cmVhbWVyLmgKaW5kZXggMzEzYjQwZDFkYzJmYjVmMzMyYjQ1MTU0ZWJm
NTQ1Mzc4MTc5ZTNkOC4uODM0Njg5MjI2MjIyNzkwNjQyN2NhNTk0Nzk4NWFmNGJjZDQ5MjZmYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0lu
YmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRNZXRhZGF0YVRleHRUcmFja1By
aXZhdGVHU3RyZWFtZXIuaApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lciA6IHB1YmxpYyBJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEluYmFuZE1l
dGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcj4gY3JlYXRlKEtpbmQga2luZCwgQ3VlRm9y
bWF0IGN1ZUZvcm1hdCwgY29uc3QgQXRvbWljU3RyaW5nJiBpZCA9IGVtcHR5QXRvbSgpKQorICAg
IHN0YXRpYyBSZWY8SW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyPiBjcmVh
dGUoS2luZCBraW5kLCBDdWVGb3JtYXQgY3VlRm9ybWF0LCBjb25zdCBBdG9tU3RyaW5nJiBpZCA9
IGVtcHR5QXRvbSgpKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5iYW5k
TWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyKGtpbmQsIGN1ZUZvcm1hdCwgaWQpKTsK
ICAgICB9CkBAIC00MSw5ICs0MSw5IEBAIHB1YmxpYzoKICAgICB+SW5iYW5kTWV0YWRhdGFUZXh0
VHJhY2tQcml2YXRlR1N0cmVhbWVyKCkgPSBkZWZhdWx0OwogCiAgICAgS2luZCBraW5kKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9raW5kOyB9Ci0gICAgQXRvbWljU3RyaW5nIGlkKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pZDsgfQotICAgIEF0b21pY1N0cmluZyBpbkJhbmRNZXRh
ZGF0YVRyYWNrRGlzcGF0Y2hUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pbkJhbmRN
ZXRhZGF0YVRyYWNrRGlzcGF0Y2hUeXBlOyB9Ci0gICAgdm9pZCBzZXRJbkJhbmRNZXRhZGF0YVRy
YWNrRGlzcGF0Y2hUeXBlKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpIHsgbV9pbkJhbmRNZXRh
ZGF0YVRyYWNrRGlzcGF0Y2hUeXBlID0gdmFsdWU7IH0KKyAgICBBdG9tU3RyaW5nIGlkKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pZDsgfQorICAgIEF0b21TdHJpbmcgaW5CYW5kTWV0YWRh
dGFUcmFja0Rpc3BhdGNoVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faW5CYW5kTWV0
YWRhdGFUcmFja0Rpc3BhdGNoVHlwZTsgfQorICAgIHZvaWQgc2V0SW5CYW5kTWV0YWRhdGFUcmFj
a0Rpc3BhdGNoVHlwZShjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkgeyBtX2luQmFuZE1ldGFkYXRh
VHJhY2tEaXNwYXRjaFR5cGUgPSB2YWx1ZTsgfQogCiAgICAgdm9pZCBhZGREYXRhQ3VlKGNvbnN0
IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBjb25zdCB2b2lkKiBkYXRh
LCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgewpAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAg
fQogCiBwcml2YXRlOgotICAgIEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1l
cihLaW5kIGtpbmQsIEN1ZUZvcm1hdCBjdWVGb3JtYXQsIGNvbnN0IEF0b21pY1N0cmluZyYgaWQp
CisgICAgSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyKEtpbmQga2luZCwg
Q3VlRm9ybWF0IGN1ZUZvcm1hdCwgY29uc3QgQXRvbVN0cmluZyYgaWQpCiAgICAgICAgIDogSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZShjdWVGb3JtYXQpCiAgICAgICAgICwgbV9raW5kKGtpbmQpCiAg
ICAgICAgICwgbV9pZChpZCkKQEAgLTY3LDggKzY3LDggQEAgcHJpdmF0ZToKICAgICB9CiAKICAg
ICBLaW5kIG1fa2luZDsKLSAgICBBdG9taWNTdHJpbmcgbV9pZDsKLSAgICBBdG9taWNTdHJpbmcg
bV9pbkJhbmRNZXRhZGF0YVRyYWNrRGlzcGF0Y2hUeXBlOworICAgIEF0b21TdHJpbmcgbV9pZDsK
KyAgICBBdG9tU3RyaW5nIG1faW5CYW5kTWV0YWRhdGFUcmFja0Rpc3BhdGNoVHlwZTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IGU1NzM1YjQyOWYzMjdmYzZiYzI5ZTdiZjI4MjUx
NGNmZDViYjZmMWYuLmY0ZTJhOTc4OWRiMDc2MWNhYWQ0MGExYzViNjNmNjMyZTliMTVhMTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJh
bmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuaApA
QCAtNTMsOCArNTMsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRpc2Nvbm5lY3QoKSBvdmVycmlk
ZTsKIAotICAgIEF0b21pY1N0cmluZyBsYWJlbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
bGFiZWw7IH0KLSAgICBBdG9taWNTdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBtX2xhbmd1YWdlOyB9CisgICAgQXRvbVN0cmluZyBsYWJlbCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fbGFiZWw7IH0KKyAgICBBdG9tU3RyaW5nIGxhbmd1YWdlKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gbV9sYW5ndWFnZTsgfQogCiAgICAgaW50IHRyYWNrSW5kZXgoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBtX2luZGV4OyB9CiAgICAgU3RyaW5nIHN0cmVhbUlkKCkgY29u
c3QgeyByZXR1cm4gbV9zdHJlYW1JZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCA0YTZkYWJmYmQ0ODk1N2RkNDdiYjFjYTU1NDk2YTg5
NjQ2Zjg1OGQxLi4wZTA4MzViMDFmOGFjZDlkMDMzMDA1MjA2ODZmMDVhMjcwZTEzYjJkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMTQ4
NSw3ICsxNDg1LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnByb2Nlc3NN
cGVnVHNTZWN0aW9uKEdzdE1wZWd0c1NlY3Rpb24qIHNlY3Rpb24KICAgICAgICAgZm9yIChndWlu
dCBpID0gMDsgaSA8IHBtdC0+c3RyZWFtcy0+bGVuOyArK2kpIHsKICAgICAgICAgICAgIGNvbnN0
IEdzdE1wZWd0c1BNVFN0cmVhbSogc3RyZWFtID0gc3RhdGljX2Nhc3Q8Y29uc3QgR3N0TXBlZ3Rz
UE1UU3RyZWFtKj4oZ19wdHJfYXJyYXlfaW5kZXgocG10LT5zdHJlYW1zLCBpKSk7CiAgICAgICAg
ICAgICBpZiAoc3RyZWFtLT5zdHJlYW1fdHlwZSA9PSAweDA1IHx8IHN0cmVhbS0+c3RyZWFtX3R5
cGUgPj0gMHg4MCkgewotICAgICAgICAgICAgICAgIEF0b21pY1N0cmluZyBwaWQgPSBTdHJpbmc6
Om51bWJlcihzdHJlYW0tPnBpZCk7CisgICAgICAgICAgICAgICAgQXRvbVN0cmluZyBwaWQgPSBT
dHJpbmc6Om51bWJlcihzdHJlYW0tPnBpZCk7CiAgICAgICAgICAgICAgICAgYXV0byB0cmFjayA9
IEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlKAogICAgICAg
ICAgICAgICAgICAgICBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpNZXRhZGF0YSwgSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZTo6RGF0YSwgcGlkKTsKIApAQCAtMTUxMyw3ICsxNTEzLDcgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnByb2Nlc3NNcGVnVHNTZWN0aW9uKEdzdE1wZWd0
c1NlY3Rpb24qIHNlY3Rpb24KICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0gZWxzZSB7
Ci0gICAgICAgIEF0b21pY1N0cmluZyBwaWQgPSBTdHJpbmc6Om51bWJlcihzZWN0aW9uLT5waWQp
OworICAgICAgICBBdG9tU3RyaW5nIHBpZCA9IFN0cmluZzo6bnVtYmVyKHNlY3Rpb24tPnBpZCk7
CiAgICAgICAgIFJlZlB0cjxJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI+
IHRyYWNrID0gbV9tZXRhZGF0YVRyYWNrcy5nZXQocGlkKTsKICAgICAgICAgaWYgKCF0cmFjaykK
ICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIuaAppbmRleCAxNGQ5ZTIzZDBmYTA1NDA1ZmI3NDgyOGE2MzcyYmE0NTQyZmVlZWZl
Li4yZWQ3Yzg5ODk1NzVlZWRhMmY2YTdhY2ZjZjFiYzAxNjBhMzc2ODI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC0zOCw3ICszOCw3IEBACiAK
ICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAjaW5jbHVkZSAiVHJhY2tQcml2YXRlQmFzZUdTdHJl
YW1lci5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2guaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9BdG9tU3RyaW5nSGFzaC5oPgogI2VuZGlmCiAKIHR5cGVkZWYgc3RydWN0IF9H
c3RNcGVndHNTZWN0aW9uIEdzdE1wZWd0c1NlY3Rpb247CkBAIC0yNzcsMTIgKzI3NywxMiBAQCBw
cml2YXRlOgogICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gbV9kb3dubG9hZEJ1ZmZlcjsKICAgICBW
ZWN0b3I8UmVmUHRyPE1lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxi
YWNrPj4gbV9taXNzaW5nUGx1Z2luQ2FsbGJhY2tzOwogI2lmIEVOQUJMRShWSURFT19UUkFDSykK
LSAgICBIYXNoTWFwPEF0b21pY1N0cmluZywgUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlR1N0cmVh
bWVyPj4gbV9hdWRpb1RyYWNrczsKLSAgICBIYXNoTWFwPEF0b21pY1N0cmluZywgUmVmUHRyPElu
YmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI+PiBtX3RleHRUcmFja3M7Ci0gICAgSGFzaE1h
cDxBdG9taWNTdHJpbmcsIFJlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcj4+IG1fdmlk
ZW9UcmFja3M7CisgICAgSGFzaE1hcDxBdG9tU3RyaW5nLCBSZWZQdHI8QXVkaW9UcmFja1ByaXZh
dGVHU3RyZWFtZXI+PiBtX2F1ZGlvVHJhY2tzOworICAgIEhhc2hNYXA8QXRvbVN0cmluZywgUmVm
UHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI+PiBtX3RleHRUcmFja3M7CisgICAg
SGFzaE1hcDxBdG9tU3RyaW5nLCBSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXI+PiBt
X3ZpZGVvVHJhY2tzOwogICAgIFJlZlB0cjxJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVH
U3RyZWFtZXI+IG1fY2hhcHRlcnNUcmFjazsKICNpZiBVU0UoR1NUUkVBTUVSX01QRUdUUykKLSAg
ICBIYXNoTWFwPEF0b21pY1N0cmluZywgUmVmUHRyPEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJp
dmF0ZUdTdHJlYW1lcj4+IG1fbWV0YWRhdGFUcmFja3M7CisgICAgSGFzaE1hcDxBdG9tU3RyaW5n
LCBSZWZQdHI8SW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyPj4gbV9tZXRh
ZGF0YVRyYWNrczsKICNlbmRpZgogI2VuZGlmCiAgICAgdmlydHVhbCBib29sIGlzTWVkaWFTb3Vy
Y2UoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJh
c2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCmluZGV4IDQ5NjYxOWJjZjRlMDc5NDFmNDUz
ZjdmOTc4ZWQwZWIyMGFkOGNkODIuLjZlYTM2NTgwZjJkNTBlOGIzODBmN2Q1MTVjNmE0MDE3MzQz
YWE4ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyQmFzZS5jcHAKQEAgLTM4LDcgKzM4LDcgQEAKICNpbmNsdWRlICJWaWRlb1NpbmtHU3RyZWFt
ZXIuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuaCIKICNpbmNsdWRlIDx3
dGYvZ2xpYi9HVW5pcXVlUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9TdHJp
bmdQcmludFN0cmVhbS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVNhbXBsZUdTdHJlYW1lci5jcHAKaW5k
ZXggYjY2YzU1M2Y2OWMwZTZkMzEzZWZkOTdkNGJhZDQzM2NjMzlhZTUyNC4uZjVhN2RkNjZkMjE4
ZTQ3ZmJkNTlhMjM5NGE5MThjNTBkMjhhNTQyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFTYW1wbGVH
U3RyZWFtZXIuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
TWVkaWFTYW1wbGVHU3RyZWFtZXI6Ok1lZGlhU2FtcGxlR1N0cmVhbWVyKEdSZWZQdHI8R3N0U2Ft
cGxlPiYmIHNhbXBsZSwgY29uc3QgRmxvYXRTaXplJiBwcmVzZW50YXRpb25TaXplLCBjb25zdCBB
dG9taWNTdHJpbmcmIHRyYWNrSWQpCitNZWRpYVNhbXBsZUdTdHJlYW1lcjo6TWVkaWFTYW1wbGVH
U3RyZWFtZXIoR1JlZlB0cjxHc3RTYW1wbGU+JiYgc2FtcGxlLCBjb25zdCBGbG9hdFNpemUmIHBy
ZXNlbnRhdGlvblNpemUsIGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSWQpCiAgICAgOiBtX3B0cyhN
ZWRpYVRpbWU6Onplcm9UaW1lKCkpCiAgICAgLCBtX2R0cyhNZWRpYVRpbWU6Onplcm9UaW1lKCkp
CiAgICAgLCBtX2R1cmF0aW9uKE1lZGlhVGltZTo6emVyb1RpbWUoKSkKQEAgLTc2LDcgKzc2LDcg
QEAgTWVkaWFTYW1wbGVHU3RyZWFtZXI6Ok1lZGlhU2FtcGxlR1N0cmVhbWVyKEdSZWZQdHI8R3N0
U2FtcGxlPiYmIHNhbXBsZSwgY29uc3QgRmwKICAgICAgICAgbV9mbGFncyA9IHN0YXRpY19jYXN0
PE1lZGlhU2FtcGxlOjpTYW1wbGVGbGFncz4obV9mbGFncyB8IE1lZGlhU2FtcGxlOjpJc05vbkRp
c3BsYXlpbmcpOwogfQogCi1NZWRpYVNhbXBsZUdTdHJlYW1lcjo6TWVkaWFTYW1wbGVHU3RyZWFt
ZXIoY29uc3QgRmxvYXRTaXplJiBwcmVzZW50YXRpb25TaXplLCBjb25zdCBBdG9taWNTdHJpbmcm
IHRyYWNrSWQpCitNZWRpYVNhbXBsZUdTdHJlYW1lcjo6TWVkaWFTYW1wbGVHU3RyZWFtZXIoY29u
c3QgRmxvYXRTaXplJiBwcmVzZW50YXRpb25TaXplLCBjb25zdCBBdG9tU3RyaW5nJiB0cmFja0lk
KQogICAgIDogbV9wdHMoTWVkaWFUaW1lOjp6ZXJvVGltZSgpKQogICAgICwgbV9kdHMoTWVkaWFU
aW1lOjp6ZXJvVGltZSgpKQogICAgICwgbV9kdXJhdGlvbihNZWRpYVRpbWU6Onplcm9UaW1lKCkp
CkBAIC04NSw3ICs4NSw3IEBAIE1lZGlhU2FtcGxlR1N0cmVhbWVyOjpNZWRpYVNhbXBsZUdTdHJl
YW1lcihjb25zdCBGbG9hdFNpemUmIHByZXNlbnRhdGlvblNpemUsIGNvCiB7CiB9CiAKLVJlZjxN
ZWRpYVNhbXBsZUdTdHJlYW1lcj4gTWVkaWFTYW1wbGVHU3RyZWFtZXI6OmNyZWF0ZUZha2VTYW1w
bGUoR3N0Q2FwcyosIE1lZGlhVGltZSBwdHMsIE1lZGlhVGltZSBkdHMsIE1lZGlhVGltZSBkdXJh
dGlvbiwgY29uc3QgRmxvYXRTaXplJiBwcmVzZW50YXRpb25TaXplLCBjb25zdCBBdG9taWNTdHJp
bmcmIHRyYWNrSWQpCitSZWY8TWVkaWFTYW1wbGVHU3RyZWFtZXI+IE1lZGlhU2FtcGxlR1N0cmVh
bWVyOjpjcmVhdGVGYWtlU2FtcGxlKEdzdENhcHMqLCBNZWRpYVRpbWUgcHRzLCBNZWRpYVRpbWUg
ZHRzLCBNZWRpYVRpbWUgZHVyYXRpb24sIGNvbnN0IEZsb2F0U2l6ZSYgcHJlc2VudGF0aW9uU2l6
ZSwgY29uc3QgQXRvbVN0cmluZyYgdHJhY2tJZCkKIHsKICAgICBNZWRpYVNhbXBsZUdTdHJlYW1l
ciogZ3N0cmVhbWVyTWVkaWFTYW1wbGUgPSBuZXcgTWVkaWFTYW1wbGVHU3RyZWFtZXIocHJlc2Vu
dGF0aW9uU2l6ZSwgdHJhY2tJZCk7CiAgICAgZ3N0cmVhbWVyTWVkaWFTYW1wbGUtPm1fcHRzID0g
cHRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFtZXIuaAppbmRleCAyYjE1NmU5N2YyYjBm
OTVhOGY1MzAwMDliODVmMWUyYjExZGQ4MzdiLi4xZGY0NDM1YTc5M2Y4ZDBiOTM1N2I0ZWM2NzNl
Mzk3N2M2ZGU1ZDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFtZXIuaApAQCAtMjUs
MjQgKzI1LDI0IEBACiAjaW5jbHVkZSAiRmxvYXRTaXplLmgiCiAjaW5jbHVkZSAiR1N0cmVhbWVy
Q29tbW9uLmgiCiAjaW5jbHVkZSAiTWVkaWFTYW1wbGUuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9B
dG9taWNTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVkaWFTYW1wbGVHU3RyZWFtZXIgZmluYWwgOiBwdWJs
aWMgTWVkaWFTYW1wbGUgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8TWVkaWFTYW1wbGVHU3Ry
ZWFtZXI+IGNyZWF0ZShHUmVmUHRyPEdzdFNhbXBsZT4mJiBzYW1wbGUsIGNvbnN0IEZsb2F0U2l6
ZSYgcHJlc2VudGF0aW9uU2l6ZSwgY29uc3QgQXRvbWljU3RyaW5nJiB0cmFja0lkKQorICAgIHN0
YXRpYyBSZWY8TWVkaWFTYW1wbGVHU3RyZWFtZXI+IGNyZWF0ZShHUmVmUHRyPEdzdFNhbXBsZT4m
JiBzYW1wbGUsIGNvbnN0IEZsb2F0U2l6ZSYgcHJlc2VudGF0aW9uU2l6ZSwgY29uc3QgQXRvbVN0
cmluZyYgdHJhY2tJZCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlh
U2FtcGxlR1N0cmVhbWVyKFdURk1vdmUoc2FtcGxlKSwgcHJlc2VudGF0aW9uU2l6ZSwgdHJhY2tJ
ZCkpOwogICAgIH0KIAotICAgIHN0YXRpYyBSZWY8TWVkaWFTYW1wbGVHU3RyZWFtZXI+IGNyZWF0
ZUZha2VTYW1wbGUoR3N0Q2FwcyosIE1lZGlhVGltZSBwdHMsIE1lZGlhVGltZSBkdHMsIE1lZGlh
VGltZSBkdXJhdGlvbiwgY29uc3QgRmxvYXRTaXplJiBwcmVzZW50YXRpb25TaXplLCBjb25zdCBB
dG9taWNTdHJpbmcmIHRyYWNrSWQpOworICAgIHN0YXRpYyBSZWY8TWVkaWFTYW1wbGVHU3RyZWFt
ZXI+IGNyZWF0ZUZha2VTYW1wbGUoR3N0Q2FwcyosIE1lZGlhVGltZSBwdHMsIE1lZGlhVGltZSBk
dHMsIE1lZGlhVGltZSBkdXJhdGlvbiwgY29uc3QgRmxvYXRTaXplJiBwcmVzZW50YXRpb25TaXpl
LCBjb25zdCBBdG9tU3RyaW5nJiB0cmFja0lkKTsKIAogICAgIHZvaWQgYXBwbHlQdHNPZmZzZXQo
TWVkaWFUaW1lKTsKICAgICBNZWRpYVRpbWUgcHJlc2VudGF0aW9uVGltZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG1fcHRzOyB9CiAgICAgTWVkaWFUaW1lIGRlY29kZVRpbWUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtX2R0czsgfQogICAgIE1lZGlhVGltZSBkdXJhdGlvbigpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG1fZHVyYXRpb247IH0KLSAgICBBdG9taWNTdHJpbmcgdHJhY2tJ
RCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fdHJhY2tJZDsgfQorICAgIEF0b21TdHJpbmcg
dHJhY2tJRCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fdHJhY2tJZDsgfQogICAgIHZvaWQg
c2V0VHJhY2tJRChjb25zdCBTdHJpbmcmIHRyYWNrSWQpIG92ZXJyaWRlIHsgbV90cmFja0lkID0g
dHJhY2tJZDsgfQogICAgIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1fc2l6ZTsgfQogICAgIEZsb2F0U2l6ZSBwcmVzZW50YXRpb25TaXplKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gbV9wcmVzZW50YXRpb25TaXplOyB9CkBAIC01NiwxNCArNTYsMTQgQEAg
cHVibGljOgogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0IG92ZXJyaWRlOwogCiBw
cml2YXRlOgotICAgIE1lZGlhU2FtcGxlR1N0cmVhbWVyKEdSZWZQdHI8R3N0U2FtcGxlPiYmLCBj
b25zdCBGbG9hdFNpemUmIHByZXNlbnRhdGlvblNpemUsIGNvbnN0IEF0b21pY1N0cmluZyYgdHJh
Y2tJZCk7Ci0gICAgTWVkaWFTYW1wbGVHU3RyZWFtZXIoY29uc3QgRmxvYXRTaXplJiBwcmVzZW50
YXRpb25TaXplLCBjb25zdCBBdG9taWNTdHJpbmcmIHRyYWNrSWQpOworICAgIE1lZGlhU2FtcGxl
R1N0cmVhbWVyKEdSZWZQdHI8R3N0U2FtcGxlPiYmLCBjb25zdCBGbG9hdFNpemUmIHByZXNlbnRh
dGlvblNpemUsIGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSWQpOworICAgIE1lZGlhU2FtcGxlR1N0
cmVhbWVyKGNvbnN0IEZsb2F0U2l6ZSYgcHJlc2VudGF0aW9uU2l6ZSwgY29uc3QgQXRvbVN0cmlu
ZyYgdHJhY2tJZCk7CiAgICAgdmlydHVhbCB+TWVkaWFTYW1wbGVHU3RyZWFtZXIoKSA9IGRlZmF1
bHQ7CiAKICAgICBNZWRpYVRpbWUgbV9wdHM7CiAgICAgTWVkaWFUaW1lIG1fZHRzOwogICAgIE1l
ZGlhVGltZSBtX2R1cmF0aW9uOwotICAgIEF0b21pY1N0cmluZyBtX3RyYWNrSWQ7CisgICAgQXRv
bVN0cmluZyBtX3RyYWNrSWQ7CiAgICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsKICAgICBHUmVmUHRy
PEdzdFNhbXBsZT4gbV9zYW1wbGU7CiAgICAgRmxvYXRTaXplIG1fcHJlc2VudGF0aW9uU2l6ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9U
cmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcAppbmRleCAwNWJh
MWU1YjEyMzgzZDEyN2VjMGQ2NTUzNzdiZmFhZjZkZmQ5NzU4Li42ZGE0OTUxOGJkYTExYzQ3MGNh
MGFiNDcyOTNmMDkxMjBhNGViOTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJh
c2VHU3RyZWFtZXIuY3BwCkBAIC0xNDMsNyArMTQzLDcgQEAgdm9pZCBUcmFja1ByaXZhdGVCYXNl
R1N0cmVhbWVyOjpub3RpZnlUcmFja09mQWN0aXZlQ2hhbmdlZCgpCiAgICAgc2V0QWN0aXZlKGFj
dGl2ZSk7CiB9CiAKLWJvb2wgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6Z2V0TGFuZ3VhZ2VD
b2RlKEdzdFRhZ0xpc3QqIHRhZ3MsIEF0b21pY1N0cmluZyYgdmFsdWUpCitib29sIFRyYWNrUHJp
dmF0ZUJhc2VHU3RyZWFtZXI6OmdldExhbmd1YWdlQ29kZShHc3RUYWdMaXN0KiB0YWdzLCBBdG9t
U3RyaW5nJiB2YWx1ZSkKIHsKICAgICBTdHJpbmcgbGFuZ3VhZ2U7CiAgICAgaWYgKGdldFRhZyh0
YWdzLCBHU1RfVEFHX0xBTkdVQUdFX0NPREUsIGxhbmd1YWdlKSkgewpAQCAtMTg1LDcgKzE4NSw3
IEBAIHZvaWQgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6bm90aWZ5VHJhY2tPZlRhZ3NDaGFu
Z2VkKCkKICAgICBpZiAoZ2V0VGFnKHRhZ3MuZ2V0KCksIEdTVF9UQUdfVElUTEUsIG1fbGFiZWwp
ICYmIGNsaWVudCkKICAgICAgICAgY2xpZW50LT5sYWJlbENoYW5nZWQobV9sYWJlbCk7CiAKLSAg
ICBBdG9taWNTdHJpbmcgbGFuZ3VhZ2U7CisgICAgQXRvbVN0cmluZyBsYW5ndWFnZTsKICAgICBp
ZiAoIWdldExhbmd1YWdlQ29kZSh0YWdzLmdldCgpLCBsYW5ndWFnZSkpCiAgICAgICAgIHJldHVy
bjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmgKaW5kZXggZTgw
NTc2ZDkxYmQzZThjMDM3MGExMTMwNTEyYWE2ZTA1MGJiODlmYS4uYzhjZmViNTQzNTg1MTBmYTFi
M2M1N2Y5MTljMzc0OGJlOWU3ZDQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFz
ZUdTdHJlYW1lci5oCkBAIC04MCwxNSArODAsMTUgQEAgcHJvdGVjdGVkOgogCiAgICAgUmVmPE1h
aW5UaHJlYWROb3RpZmllcjxNYWluVGhyZWFkTm90aWZpY2F0aW9uPj4gbV9ub3RpZmllcjsKICAg
ICBnaW50IG1faW5kZXg7Ci0gICAgQXRvbWljU3RyaW5nIG1fbGFiZWw7Ci0gICAgQXRvbWljU3Ry
aW5nIG1fbGFuZ3VhZ2U7CisgICAgQXRvbVN0cmluZyBtX2xhYmVsOworICAgIEF0b21TdHJpbmcg
bV9sYW5ndWFnZTsKICAgICBHUmVmUHRyPEdzdFBhZD4gbV9wYWQ7CiAjaWYgR1NUX0NIRUNLX1ZF
UlNJT04oMSwgMTAsIDApCiAgICAgR1JlZlB0cjxHc3RTdHJlYW0+IG1fc3RyZWFtOwogI2VuZGlm
CiAKIHByaXZhdGU6Ci0gICAgYm9vbCBnZXRMYW5ndWFnZUNvZGUoR3N0VGFnTGlzdCogdGFncywg
QXRvbWljU3RyaW5nJiB2YWx1ZSk7CisgICAgYm9vbCBnZXRMYW5ndWFnZUNvZGUoR3N0VGFnTGlz
dCogdGFncywgQXRvbVN0cmluZyYgdmFsdWUpOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgU3RyaW5n
VHlwZT4KICAgICBib29sIGdldFRhZyhHc3RUYWdMaXN0KiB0YWdzLCBjb25zdCBnY2hhciogdGFn
TmFtZSwgU3RyaW5nVHlwZSYgdmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZh
dGVHU3RyZWFtZXIuaAppbmRleCA3NGJhNzE3NjIwMDFkMDUyMDQ2ZDkyOTRlY2M1Y2YxNTQ1NjI4
NzAzLi42ZTcxODhiMzQ1MzcxYmQ0NDljYjkwZWEyMDVmN2JkMGJmNWJjMjRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1By
aXZhdGVHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuaApAQCAtNTksMTYgKzU5LDE2IEBA
IHB1YmxpYzoKIAogICAgIGludCB0cmFja0luZGV4KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV9pbmRleDsgfQogCi0gICAgQXRvbWljU3RyaW5nIGlkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbV9pZDsgfQotICAgIEF0b21pY1N0cmluZyBsYWJlbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1fbGFiZWw7IH0KLSAgICBBdG9taWNTdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX2xhbmd1YWdlOyB9CisgICAgQXRvbVN0cmluZyBpZCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG1faWQ7IH0KKyAgICBBdG9tU3RyaW5nIGxhYmVsKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gbV9sYWJlbDsgfQorICAgIEF0b21TdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtX2xhbmd1YWdlOyB9CiAKIHByaXZhdGU6CiAgICAgVmlkZW9UcmFj
a1ByaXZhdGVHU3RyZWFtZXIoV2Vha1B0cjxNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI+LCBn
aW50IGluZGV4LCBHUmVmUHRyPEdzdFBhZD4pOwogI2lmIEdTVF9DSEVDS19WRVJTSU9OKDEsIDEw
LCAwKQogICAgIFZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyKFdlYWtQdHI8TWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyPiwgZ2ludCBpbmRleCwgR1JlZlB0cjxHc3RTdHJlYW0+KTsKICNlbmRp
ZgotICAgIEF0b21pY1N0cmluZyBtX2lkOworICAgIEF0b21TdHJpbmcgbV9pZDsKICAgICBXZWFr
UHRyPE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcj4gbV9wbGF5ZXI7CiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVu
ZFBpcGVsaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwCmluZGV4IGI3MmRkNWMyOTdmMzJmM2NjMjI4N2IwNWQ4
YmJjZWEwNWMxNGY3NjMuLjdiYjEwNTk2MjliNmQ5MmY5MjBlN2M5MjAxZGMyZGViYzA5NjMxZGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9t
c2UvQXBwZW5kUGlwZWxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwCkBAIC01MDksMTIgKzUwOSwxMiBA
QCB2b2lkIEFwcGVuZFBpcGVsaW5lOjpkaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KCkK
ICAgICBtX3NvdXJjZUJ1ZmZlclByaXZhdGUtPmRpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21l
bnQoaW5pdGlhbGl6YXRpb25TZWdtZW50KTsKIH0KIAotQXRvbWljU3RyaW5nIEFwcGVuZFBpcGVs
aW5lOjp0cmFja0lkKCkKK0F0b21TdHJpbmcgQXBwZW5kUGlwZWxpbmU6OnRyYWNrSWQoKQogewog
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICBpZiAoIW1fdHJhY2spCi0gICAgICAg
IHJldHVybiBBdG9taWNTdHJpbmcoKTsKKyAgICAgICAgcmV0dXJuIEF0b21TdHJpbmcoKTsKIAog
ICAgIHJldHVybiBtX3RyYWNrLT5pZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5o
CmluZGV4IDAwMjExYTY3ODgxNmIzMjU3Y2Q4NGQ5YmJkZmQwMjc2ZjlmMGRmOWQuLjA4MGQyZjc1
NmRiNmM0NjhiNjEwMzlhNTdkMjk5MTRiNmQ3OGFjNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBp
cGVsaW5lLmgKQEAgLTczLDcgKzczLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFwcHNpbmtOZXdT
YW1wbGUoR1JlZlB0cjxHc3RTYW1wbGU+JiYpOwogICAgIHZvaWQgaGFuZGxlRW5kT2ZBcHBlbmQo
KTsKICAgICB2b2lkIGRpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoKTsKLSAgICBBdG9t
aWNTdHJpbmcgdHJhY2tJZCgpOworICAgIEF0b21TdHJpbmcgdHJhY2tJZCgpOwogCiAgICAgR3N0
QnVzKiBidXMoKSB7IHJldHVybiBtX2J1cy5nZXQoKTsgfQogICAgIEdzdEVsZW1lbnQqIHBpcGVs
aW5lKCkgeyByZXR1cm4gbV9waXBlbGluZS5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9HU3RyZWFtZXJNZWRpYURlc2Ny
aXB0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9t
c2UvR1N0cmVhbWVyTWVkaWFEZXNjcmlwdGlvbi5jcHAKaW5kZXggMmI3NjZiYTM2NzFiMmI3YTU4
ZmRlMTFjY2NkZjAzNTgyMDdjODY4Zi4uZjFlYzYzMWE5N2UzYmRiMjliYTQxYjRjZDVmYzY2YTYx
MTAxMzRhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL21zZS9HU3RyZWFtZXJNZWRpYURlc2NyaXB0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0dTdHJlYW1lck1lZGlhRGVzY3Jp
cHRpb24uY3BwCkBAIC0yMywxNCArMjMsMTQgQEAKICNpbmNsdWRlICJHU3RyZWFtZXJDb21tb24u
aCIKIAogI2luY2x1ZGUgPGdzdC9wYnV0aWxzL3BidXRpbHMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4
dC9BdG9taWNTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShH
U1RSRUFNRVIpICYmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotQXRvbWljU3RyaW5nIEdTdHJlYW1lck1lZGlhRGVzY3JpcHRpb246OmNvZGVjKCkgY29uc3QK
K0F0b21TdHJpbmcgR1N0cmVhbWVyTWVkaWFEZXNjcmlwdGlvbjo6Y29kZWMoKSBjb25zdAogewog
ICAgIHJldHVybiBtX2NvZGVjTmFtZTsKIH0KQEAgLTUxLDcgKzUxLDcgQEAgYm9vbCBHU3RyZWFt
ZXJNZWRpYURlc2NyaXB0aW9uOjppc1RleHQoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotQXRvbWljU3RyaW5nIEdTdHJlYW1lck1lZGlhRGVzY3JpcHRpb246OmV4dHJhY3RDb2RlY05h
bWUoKQorQXRvbVN0cmluZyBHU3RyZWFtZXJNZWRpYURlc2NyaXB0aW9uOjpleHRyYWN0Q29kZWNO
YW1lKCkKIHsKICAgICBHUmVmUHRyPEdzdENhcHM+IG9yaWdpbmFsQ2FwcyA9IG1fY2FwczsKIApA
QCAtNjAsNyArNjAsNyBAQCBBdG9taWNTdHJpbmcgR1N0cmVhbWVyTWVkaWFEZXNjcmlwdGlvbjo6
ZXh0cmFjdENvZGVjTmFtZSgpCiAgICAgICAgIEdzdFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ3N0
X2NhcHNfZ2V0X3N0cnVjdHVyZShvcmlnaW5hbENhcHMuZ2V0KCksIDApOwogCiAgICAgICAgIGlm
ICghZ3N0X3N0cnVjdHVyZV9oYXNfZmllbGQoc3RydWN0dXJlLCAib3JpZ2luYWwtbWVkaWEtdHlw
ZSIpKQotICAgICAgICAgICAgcmV0dXJuIEF0b21pY1N0cmluZygpOworICAgICAgICAgICAgcmV0
dXJuIEF0b21TdHJpbmcoKTsKIAogICAgICAgICBnc3Rfc3RydWN0dXJlX3NldF9uYW1lKHN0cnVj
dHVyZSwgZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nKHN0cnVjdHVyZSwgIm9yaWdpbmFsLW1lZGlh
LXR5cGUiKSk7CiAgICAgICAgIC8vIFJlbW92ZSB0aGUgRFJNIHJlbGF0ZWQgZmllbGRzIGZyb20g
dGhlIGNhcHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvbXNlL0dTdHJlYW1lck1lZGlhRGVzY3JpcHRpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvR1N0cmVhbWVyTWVkaWFEZXNjcmlwdGlv
bi5oCmluZGV4IDg1YTg5YWFkODI0OGE0Yjk3YTU0MGZlNjZiODYzMjJmNTljZDE2NmMuLmRmY2E1
NTZhMmQzZWEzZGMyNDVmOTZhMzdmYzg4NjMzNDJjYTEzMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvR1N0cmVhbWVyTWVkaWFEZXNj
cmlwdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9tc2UvR1N0cmVhbWVyTWVkaWFEZXNjcmlwdGlvbi5oCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5j
bHVkZSAiTWVkaWFEZXNjcmlwdGlvbi5oIgogCiAjaW5jbHVkZSA8Z3N0L2dzdC5oPgotI2luY2x1
ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJp
bmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgfkdTdHJlYW1lck1lZGlhRGVzY3JpcHRpb24oKSA9IGRlZmF1bHQ7CiAK
LSAgICBBdG9taWNTdHJpbmcgY29kZWMoKSBjb25zdCBvdmVycmlkZTsKKyAgICBBdG9tU3RyaW5n
IGNvZGVjKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc1ZpZGVvKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgYm9vbCBpc0F1ZGlvKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc1RleHQo
KSBjb25zdCBvdmVycmlkZTsKQEAgLTUyLDkgKzUyLDkgQEAgcHJpdmF0ZToKICAgICAgICAgbV9j
b2RlY05hbWUgPSBleHRyYWN0Q29kZWNOYW1lKCk7CiAgICAgfQogCi0gICAgQXRvbWljU3RyaW5n
IGV4dHJhY3RDb2RlY05hbWUoKTsKKyAgICBBdG9tU3RyaW5nIGV4dHJhY3RDb2RlY05hbWUoKTsK
ICAgICBHUmVmUHRyPEdzdENhcHM+IG1fY2FwczsKLSAgICBBdG9taWNTdHJpbmcgbV9jb2RlY05h
bWU7CisgICAgQXRvbVN0cmluZyBtX2NvZGVjTmFtZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lck1TRS5jcHAKaW5kZXggNzE4MWIzODJiNzJhYzFmMTQ2YzI4M2E3ODI0NGJmNzFjYzhj
Mjg5NS4uYTg4ZmM4YjI1MmE2MjBiMzYxZjU2OWJlM2E4ZWYzMTNlYjMyYmE3NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNw
cApAQCAtNTIsOCArNTIsOCBAQAogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KLSNp
bmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9BdG9t
aWNTdHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZy5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmdIYXNoLmg+CiAKIHN0YXRpYyBjb25zdCBjaGFyKiBkdW1w
UmVhZHlTdGF0ZShXZWJDb3JlOjpNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSByZWFkeVN0YXRlKQog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L21zZS9NZWRpYVNvdXJjZUNsaWVudEdTdHJlYW1lck1TRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVy
TVNFLmNwcAppbmRleCA3NmZmYjBkNzcwMzA2M2YwYjdkNjIyYjQxOWEwMTUxNWU5OGUzYmEwLi5m
YWU3NGY0YmE0YzE3OTFkYzY1ZTUzNWZlZmYzMzNmNDJmMDZjMzM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291cmNlQ2xp
ZW50R1N0cmVhbWVyTVNFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvbXNlL01lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNFLmNwcApAQCAtMTU4
LDcgKzE1OCw3IEBAIHZvaWQgTWVkaWFTb3VyY2VDbGllbnRHU3RyZWFtZXJNU0U6OnJlbW92ZWRG
cm9tTWVkaWFTb3VyY2UoUmVmUHRyPFNvdXJjZUJ1ZmZlclByCiAgICAgbV9wbGF5ZXJQcml2YXRl
Lm1fcGxheWJhY2tQaXBlbGluZS0+cmVtb3ZlU291cmNlQnVmZmVyKHNvdXJjZUJ1ZmZlclByaXZh
dGUpOwogfQogCi12b2lkIE1lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNFOjpmbHVzaChBdG9t
aWNTdHJpbmcgdHJhY2tJZCkKK3ZvaWQgTWVkaWFTb3VyY2VDbGllbnRHU3RyZWFtZXJNU0U6OmZs
dXNoKEF0b21TdHJpbmcgdHJhY2tJZCkKIHsKICAgICBBU1NFUlQoV1RGOjppc01haW5UaHJlYWQo
KSk7CiAKQEAgLTE3NCw3ICsxNzQsNyBAQCB2b2lkIE1lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVy
TVNFOjplbnF1ZXVlU2FtcGxlKFJlZjxNZWRpYVNhbXBsZT4mJiBzYW1wbGUpCiAgICAgbV9wbGF5
ZXJQcml2YXRlLm1fcGxheWJhY2tQaXBlbGluZS0+ZW5xdWV1ZVNhbXBsZShXVEZNb3ZlKHNhbXBs
ZSkpOwogfQogCi12b2lkIE1lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNFOjphbGxTYW1wbGVz
SW5UcmFja0VucXVldWVkKGNvbnN0IEF0b21pY1N0cmluZyYgdHJhY2tJZCkKK3ZvaWQgTWVkaWFT
b3VyY2VDbGllbnRHU3RyZWFtZXJNU0U6OmFsbFNhbXBsZXNJblRyYWNrRW5xdWV1ZWQoY29uc3Qg
QXRvbVN0cmluZyYgdHJhY2tJZCkKIHsKICAgICBBU1NFUlQoV1RGOjppc01haW5UaHJlYWQoKSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9tc2UvTWVkaWFTb3VyY2VDbGllbnRHU3RyZWFtZXJNU0UuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFTb3VyY2VDbGllbnRHU3RyZWFtZXJN
U0UuaAppbmRleCBiMzgxZTY5YTE4MDgzNzRjNTc3Y2UzOWUyNjIzNTI1ZmQ0MWY0Mjc0Li41MDA4
YTA2MTNhY2NkNDA2MWIyZmNmZGUzNjIxYTI5YjRhMTViOTE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291cmNlQ2xpZW50
R1N0cmVhbWVyTVNFLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL21zZS9NZWRpYVNvdXJjZUNsaWVudEdTdHJlYW1lck1TRS5oCkBAIC01MCw5ICs1MCw5
IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc2V0UGFyc2VyU3RhdGUoUmVmUHRyPFNvdXJjZUJ1ZmZl
clByaXZhdGVHU3RyZWFtZXI+KTsKICAgICB2b2lkIGFwcGVuZChSZWZQdHI8U291cmNlQnVmZmVy
UHJpdmF0ZUdTdHJlYW1lcj4sIFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmKTsKICAgICB2b2lkIHJl
bW92ZWRGcm9tTWVkaWFTb3VyY2UoUmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI+
KTsKLSAgICB2b2lkIGZsdXNoKEF0b21pY1N0cmluZyk7CisgICAgdm9pZCBmbHVzaChBdG9tU3Ry
aW5nKTsKICAgICB2b2lkIGVucXVldWVTYW1wbGUoUmVmPE1lZGlhU2FtcGxlPiYmKTsKLSAgICB2
b2lkIGFsbFNhbXBsZXNJblRyYWNrRW5xdWV1ZWQoY29uc3QgQXRvbWljU3RyaW5nJik7CisgICAg
dm9pZCBhbGxTYW1wbGVzSW5UcmFja0VucXVldWVkKGNvbnN0IEF0b21TdHJpbmcmKTsKIAogICAg
IGNvbnN0IE1lZGlhVGltZSYgZHVyYXRpb24oKTsKICAgICBHUmVmUHRyPFdlYktpdE1lZGlhU3Jj
PiB3ZWJLaXRNZWRpYVNyYygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9QbGF5YmFja1BpcGVsaW5lLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvUGxheWJhY2tQaXBlbGluZS5jcHAK
aW5kZXggOGFiMDI1YWUyZDM2NjVhY2ZjY2I5OWRlYjVkZjQ3NjU5YWQ4NTdiZC4uYjAwNWQwZDMz
NTI2NjRmN2Y5YmVkOWY3MDIwOTc3MmFiMDAyNzQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9QbGF5YmFja1BpcGVsaW5lLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1BsYXli
YWNrUGlwZWxpbmUuY3BwCkBAIC0zNywxNSArMzcsMTUgQEAKICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvZ2xp
Yi9HVW5pcXVlUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZy5oPgogCiBHU1RfREVCVUdfQ0FURUdPUllfRVhURVJO
KHdlYmtpdF9tc2VfZGVidWcpOwogI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgd2Via2l0X21zZV9k
ZWJ1ZwogCi1zdGF0aWMgU3RyZWFtKiBnZXRTdHJlYW1CeVRyYWNrSWQoV2ViS2l0TWVkaWFTcmMq
LCBBdG9taWNTdHJpbmcpOworc3RhdGljIFN0cmVhbSogZ2V0U3RyZWFtQnlUcmFja0lkKFdlYktp
dE1lZGlhU3JjKiwgQXRvbVN0cmluZyk7CiBzdGF0aWMgU3RyZWFtKiBnZXRTdHJlYW1CeVNvdXJj
ZUJ1ZmZlclByaXZhdGUoV2ViS2l0TWVkaWFTcmMqLCBXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2
YXRlR1N0cmVhbWVyKik7CiAKLXN0YXRpYyBTdHJlYW0qIGdldFN0cmVhbUJ5VHJhY2tJZChXZWJL
aXRNZWRpYVNyYyogc291cmNlLCBBdG9taWNTdHJpbmcgdHJhY2tJZFN0cmluZykKK3N0YXRpYyBT
dHJlYW0qIGdldFN0cmVhbUJ5VHJhY2tJZChXZWJLaXRNZWRpYVNyYyogc291cmNlLCBBdG9tU3Ry
aW5nIHRyYWNrSWRTdHJpbmcpCiB7CiAgICAgLy8gV2ViS2l0TWVkaWFTcmMgc2hvdWxkIGJlIGxv
Y2tlZCBhdCB0aGlzIHBvaW50LgogICAgIGZvciAoU3RyZWFtKiBzdHJlYW0gOiBzb3VyY2UtPnBy
aXYtPnN0cmVhbXMpIHsKQEAgLTI4OSw3ICsyODksNyBAQCB2b2lkIFBsYXliYWNrUGlwZWxpbmU6
Om1hcmtFbmRPZlN0cmVhbShNZWRpYVNvdXJjZVByaXZhdGU6OkVuZE9mU3RyZWFtU3RhdHVzKQog
ICAgICAgICBnc3RfYXBwX3NyY19lbmRfb2Zfc3RyZWFtKGFwcHNyYyk7CiB9CiAKLXZvaWQgUGxh
eWJhY2tQaXBlbGluZTo6Zmx1c2goQXRvbWljU3RyaW5nIHRyYWNrSWQpCit2b2lkIFBsYXliYWNr
UGlwZWxpbmU6OmZsdXNoKEF0b21TdHJpbmcgdHJhY2tJZCkKIHsKICAgICBBU1NFUlQoV1RGOjpp
c01haW5UaHJlYWQoKSk7CiAKQEAgLTMzNyw3ICszMzcsNyBAQCB2b2lkIFBsYXliYWNrUGlwZWxp
bmU6OmVucXVldWVTYW1wbGUoUmVmPE1lZGlhU2FtcGxlPiYmIG1lZGlhU2FtcGxlKQogewogICAg
IEFTU0VSVChXVEY6OmlzTWFpblRocmVhZCgpKTsKIAotICAgIEF0b21pY1N0cmluZyB0cmFja0lk
ID0gbWVkaWFTYW1wbGUtPnRyYWNrSUQoKTsKKyAgICBBdG9tU3RyaW5nIHRyYWNrSWQgPSBtZWRp
YVNhbXBsZS0+dHJhY2tJRCgpOwogCiAgICAgR1NUX1RSQUNFKCJlbnF1ZWluZyBzYW1wbGUgdHJh
Y2tJZD0lcyBQVFM9JWYgcHJlc2VudGF0aW9uU2l6ZT0lLjBmeCUuMGYgYXQgJSIgR1NUX1RJTUVf
Rk9STUFUICIgZHVyYXRpb246ICUiIEdTVF9USU1FX0ZPUk1BVCwKICAgICAgICAgdHJhY2tJZC5z
dHJpbmcoKS51dGY4KCkuZGF0YSgpLCBtZWRpYVNhbXBsZS0+cHJlc2VudGF0aW9uVGltZSgpLnRv
RmxvYXQoKSwKQEAgLTM4MSw3ICszODEsNyBAQCB2b2lkIFBsYXliYWNrUGlwZWxpbmU6OmVucXVl
dWVTYW1wbGUoUmVmPE1lZGlhU2FtcGxlPiYmIG1lZGlhU2FtcGxlKQogICAgIH0KIH0KIAotdm9p
ZCBQbGF5YmFja1BpcGVsaW5lOjphbGxTYW1wbGVzSW5UcmFja0VucXVldWVkKGNvbnN0IEF0b21p
Y1N0cmluZyYgdHJhY2tJZCkKK3ZvaWQgUGxheWJhY2tQaXBlbGluZTo6YWxsU2FtcGxlc0luVHJh
Y2tFbnF1ZXVlZChjb25zdCBBdG9tU3RyaW5nJiB0cmFja0lkKQogewogICAgIFN0cmVhbSogc3Ry
ZWFtID0gZ2V0U3RyZWFtQnlUcmFja0lkKG1fd2ViS2l0TWVkaWFTcmMuZ2V0KCksIHRyYWNrSWQp
OwogICAgIGdzdF9hcHBfc3JjX2VuZF9vZl9zdHJlYW0oR1NUX0FQUF9TUkMoc3RyZWFtLT5hcHBz
cmMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9tc2UvUGxheWJhY2tQaXBlbGluZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL21zZS9QbGF5YmFja1BpcGVsaW5lLmgKaW5kZXggM2QyMTU4OGJmYTg2
OGJjZTI3OWEwMmZjNWY1ODE0Y2U2Y2Y1YjJiYi4uZmM3Y2EwZWFkNGYxYmVhMTFlMTRjN2Y0NzA5
OWQ1NzEyNzY1NTM2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL21zZS9QbGF5YmFja1BpcGVsaW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9QbGF5YmFja1BpcGVsaW5lLmgKQEAgLTY1
LDkgKzY1LDkgQEAgcHVibGljOgogICAgIHZvaWQgbWFya0VuZE9mU3RyZWFtKE1lZGlhU291cmNl
UHJpdmF0ZTo6RW5kT2ZTdHJlYW1TdGF0dXMpOwogCiAgICAgLy8gRnJvbSBTb3VyY2VCdWZmZXJQ
cml2YXRlR1N0cmVhbWVyLgotICAgIHZvaWQgZmx1c2goQXRvbWljU3RyaW5nKTsKKyAgICB2b2lk
IGZsdXNoKEF0b21TdHJpbmcpOwogICAgIHZvaWQgZW5xdWV1ZVNhbXBsZShSZWY8TWVkaWFTYW1w
bGU+JiYpOwotICAgIHZvaWQgYWxsU2FtcGxlc0luVHJhY2tFbnF1ZXVlZChjb25zdCBBdG9taWNT
dHJpbmcmKTsKKyAgICB2b2lkIGFsbFNhbXBsZXNJblRyYWNrRW5xdWV1ZWQoY29uc3QgQXRvbVN0
cmluZyYpOwogCiAgICAgR3N0RWxlbWVudCogcGlwZWxpbmUoKTsKIHByaXZhdGU6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1NvdXJj
ZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL21zZS9Tb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRl
eCA4ZmM5ZWUwMjAzZWQ0NDI1NzYyMjg4ZGZjNDNmOTkxN2Y2M2Y2ZjczLi43YzFlNzk5MTZkOTNm
OGFmMTExZGNhODNhZDUyYzVjNGU1YzhmN2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1NvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFt
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9t
c2UvU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTEwNCwyNCArMTA0LDI0IEBA
IHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcjo6c2V0UmVhZHlTdGF0ZShNZWRpYVBs
YXllcjo6UmVhZHlTdGF0ZSBzdGF0ZSkKICAgICBtX21lZGlhU291cmNlLT5zZXRSZWFkeVN0YXRl
KHN0YXRlKTsKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjpmbHVzaChj
b25zdCBBdG9taWNTdHJpbmcmIHRyYWNrSWQpCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVHU3Ry
ZWFtZXI6OmZsdXNoKGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSWQpCiB7CiAgICAgbV9jbGllbnQt
PmZsdXNoKHRyYWNrSWQpOwogfQogCi12b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6
OmVucXVldWVTYW1wbGUoUmVmPE1lZGlhU2FtcGxlPiYmIHNhbXBsZSwgY29uc3QgQXRvbWljU3Ry
aW5nJikKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcjo6ZW5xdWV1ZVNhbXBsZShS
ZWY8TWVkaWFTYW1wbGU+JiYgc2FtcGxlLCBjb25zdCBBdG9tU3RyaW5nJikKIHsKICAgICBtX25v
dGlmeVdoZW5SZWFkeUZvck1vcmVTYW1wbGVzID0gZmFsc2U7CiAKICAgICBtX2NsaWVudC0+ZW5x
dWV1ZVNhbXBsZShXVEZNb3ZlKHNhbXBsZSkpOwogfQogCi12b2lkIFNvdXJjZUJ1ZmZlclByaXZh
dGVHU3RyZWFtZXI6OmFsbFNhbXBsZXNJblRyYWNrRW5xdWV1ZWQoY29uc3QgQXRvbWljU3RyaW5n
JiB0cmFja0lkKQordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjphbGxTYW1wbGVz
SW5UcmFja0VucXVldWVkKGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSWQpCiB7CiAgICAgbV9jbGll
bnQtPmFsbFNhbXBsZXNJblRyYWNrRW5xdWV1ZWQodHJhY2tJZCk7CiB9CiAKLWJvb2wgU291cmNl
QnVmZmVyUHJpdmF0ZUdTdHJlYW1lcjo6aXNSZWFkeUZvck1vcmVTYW1wbGVzKGNvbnN0IEF0b21p
Y1N0cmluZyYpCitib29sIFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6OmlzUmVhZHlGb3JN
b3JlU2FtcGxlcyhjb25zdCBBdG9tU3RyaW5nJikKIHsKICAgICByZXR1cm4gbV9pc1JlYWR5Rm9y
TW9yZVNhbXBsZXM7CiB9CkBAIC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2
YXRlR1N0cmVhbWVyOjpzZXRBY3RpdmUoYm9vbCBpc0FjdGl2ZSkKICAgICAgICAgbV9tZWRpYVNv
dXJjZS0+c291cmNlQnVmZmVyUHJpdmF0ZURpZENoYW5nZUFjdGl2ZVN0YXRlKHRoaXMsIGlzQWN0
aXZlKTsKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlDbGll
bnRXaGVuUmVhZHlGb3JNb3JlU2FtcGxlcyhjb25zdCBBdG9taWNTdHJpbmcmIHRyYWNrSWQpCit2
b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeUNsaWVudFdoZW5SZWFkeUZv
ck1vcmVTYW1wbGVzKGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSWQpCiB7CiAgICAgQVNTRVJUKFdU
Rjo6aXNNYWluVGhyZWFkKCkpOwogICAgIG1fbm90aWZ5V2hlblJlYWR5Rm9yTW9yZVNhbXBsZXMg
PSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL21zZS9Tb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1NvdXJjZUJ1ZmZlclByaXZhdGVHU3Ry
ZWFtZXIuaAppbmRleCBlYWQxYWM0N2JhMzQ2ZGY0MWUxNDg4MjEyODc0YWU5NmQyNjQyZWRmLi5l
NWZlNDA2OGE4MmE3ZDIyZWNmOTQ1N2ZkZTJiOThlMTE3Y2I5MGI0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1NvdXJjZUJ1ZmZlclBy
aXZhdGVHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvbXNlL1NvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIuaApAQCAtNjIsMTIgKzYy
LDEyIEBAIHB1YmxpYzoKICAgICBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkg
Y29uc3QgZmluYWw7CiAgICAgdm9pZCBzZXRSZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpSZWFkeVN0
YXRlKSBmaW5hbDsKIAotICAgIHZvaWQgZmx1c2goY29uc3QgQXRvbWljU3RyaW5nJikgZmluYWw7
Ci0gICAgdm9pZCBlbnF1ZXVlU2FtcGxlKFJlZjxNZWRpYVNhbXBsZT4mJiwgY29uc3QgQXRvbWlj
U3RyaW5nJikgZmluYWw7Ci0gICAgdm9pZCBhbGxTYW1wbGVzSW5UcmFja0VucXVldWVkKGNvbnN0
IEF0b21pY1N0cmluZyYpIGZpbmFsOwotICAgIGJvb2wgaXNSZWFkeUZvck1vcmVTYW1wbGVzKGNv
bnN0IEF0b21pY1N0cmluZyYpIGZpbmFsOworICAgIHZvaWQgZmx1c2goY29uc3QgQXRvbVN0cmlu
ZyYpIGZpbmFsOworICAgIHZvaWQgZW5xdWV1ZVNhbXBsZShSZWY8TWVkaWFTYW1wbGU+JiYsIGNv
bnN0IEF0b21TdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIGFsbFNhbXBsZXNJblRyYWNrRW5xdWV1
ZWQoY29uc3QgQXRvbVN0cmluZyYpIGZpbmFsOworICAgIGJvb2wgaXNSZWFkeUZvck1vcmVTYW1w
bGVzKGNvbnN0IEF0b21TdHJpbmcmKSBmaW5hbDsKICAgICB2b2lkIHNldEFjdGl2ZShib29sKSBm
aW5hbDsKLSAgICB2b2lkIG5vdGlmeUNsaWVudFdoZW5SZWFkeUZvck1vcmVTYW1wbGVzKGNvbnN0
IEF0b21pY1N0cmluZyYpIGZpbmFsOworICAgIHZvaWQgbm90aWZ5Q2xpZW50V2hlblJlYWR5Rm9y
TW9yZVNhbXBsZXMoY29uc3QgQXRvbVN0cmluZyYpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRSZWFk
eUZvck1vcmVTYW1wbGVzKGJvb2wpOwogICAgIHZvaWQgbm90aWZ5UmVhZHlGb3JNb3JlU2FtcGxl
cygpOwpAQCAtODksNyArODksNyBAQCBwcml2YXRlOgogICAgIFNvdXJjZUJ1ZmZlclByaXZhdGVD
bGllbnQqIG1fc291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudCB7IG51bGxwdHIgfTsKICAgICBib29s
IG1faXNSZWFkeUZvck1vcmVTYW1wbGVzID0gdHJ1ZTsKICAgICBib29sIG1fbm90aWZ5V2hlblJl
YWR5Rm9yTW9yZVNhbXBsZXMgPSBmYWxzZTsKLSAgICBBdG9taWNTdHJpbmcgbV90cmFja0lkOwor
ICAgIEF0b21TdHJpbmcgbV90cmFja0lkOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ZvbnRDYWNoZUlPUy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9Gb250Q2FjaGVJT1MubW0KaW5kZXggOGZkYjhiYTFl
ZGY0MmVjZDQ3YThjNjc2ZTEyYTJjYjZkODMyMDg2OS4uOGJhMzk2MGIzODdlMzNkY2JlOTk0MmM0
NGU2YWI1MmE3MGZhNzUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvaW9zL0ZvbnRDYWNoZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9pb3MvRm9udENhY2hlSU9TLm1tCkBAIC01MiwxMCArNTIsMTAgQEAgRm9udFBsYXRm
b3JtRGF0YSogRm9udENhY2hlOjpnZXRDdXN0b21GYWxsYmFja0ZvbnQoY29uc3QgVUludDMyIGMs
IGNvbnN0IEZvbnREZXMKIHsKICAgICBBU1NFUlQocmVxdWlyZXNDdXN0b21GYWxsYmFja0ZvbnQo
YykpOwogCi0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gaGVsdmV0aWNh
RmFtaWx5KCJIZWx2ZXRpY2EgTmV1ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpOwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHRpbWVzTmV3Um9t
YW5QU01URmFtaWx5KCJUaW1lc05ld1JvbWFuUFNNVCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9tU3RyaW5nPiBoZWx2
ZXRpY2FGYW1pbHkoIkhlbHZldGljYSBOZXVlIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9tU3RyaW5nPiB0aW1lc05ld1Jv
bWFuUFNNVEZhbWlseSgiVGltZXNOZXdSb21hblBTTVQiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCk7CiAKLSAgICBBdG9taWNTdHJpbmcqIGZhbWlseSA9IG51bGxwdHI7CisgICAg
QXRvbVN0cmluZyogZmFtaWx5ID0gbnVsbHB0cjsKICAgICBzd2l0Y2ggKGMpIHsKICAgICBjYXNl
IEFwcGxlTG9nbzoKICAgICAgICAgZmFtaWx5ID0gJmhlbHZldGljYUZhbWlseS5nZXQoKTsKQEAg
LTEyOCw3ICsxMjgsNyBAQCBzdGF0aWMgUmV0YWluUHRyPENURm9udERlc2NyaXB0b3JSZWY+IHN5
c3RlbUZvbnREZXNjcmlwdG9yKEZvbnRTZWxlY3Rpb25WYWx1ZSB3ZQogICAgIHJldHVybiBhZG9w
dENGKENURm9udERlc2NyaXB0b3JDcmVhdGVDb3B5V2l0aEF0dHJpYnV0ZXMoZm9udERlc2NyaXB0
b3IuZ2V0KCksIHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4oYXR0cmlidXRlcy5nZXQoKSkp
KTsKIH0KIAotUmV0YWluUHRyPENURm9udFJlZj4gcGxhdGZvcm1Gb250V2l0aEZhbWlseVNwZWNp
YWxDYXNlKGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5LCBGb250U2VsZWN0aW9uUmVxdWVzdCBy
ZXF1ZXN0LCBmbG9hdCBzaXplLCBBbGxvd1VzZXJJbnN0YWxsZWRGb250cyBhbGxvd1VzZXJJbnN0
YWxsZWRGb250cykKK1JldGFpblB0cjxDVEZvbnRSZWY+IHBsYXRmb3JtRm9udFdpdGhGYW1pbHlT
cGVjaWFsQ2FzZShjb25zdCBBdG9tU3RyaW5nJiBmYW1pbHksIEZvbnRTZWxlY3Rpb25SZXF1ZXN0
IHJlcXVlc3QsIGZsb2F0IHNpemUsIEFsbG93VXNlckluc3RhbGxlZEZvbnRzIGFsbG93VXNlcklu
c3RhbGxlZEZvbnRzKQogewogICAgIC8vIEZJWE1FOiBTZWUgY29tbWVudCBpbiBGb250Q2FzY2Fk
ZURlc2NyaXB0aW9uOjplZmZlY3RpdmVGYW1pbHlBdCgpIGluIEZvbnREZXNjcmlwdGlvbkNvY29h
LmNwcAogICAgIGlmIChmYW1pbHkuc3RhcnRzV2l0aCgiVUlDVEZvbnRUZXh0U3R5bGUiKSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDYWNo
ZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q2FjaGVN
YWMubW0KaW5kZXggMjExZDg5OWNhYjdmYjVjYmI3NTk3MDg1YTg4NGQ2ZDFiMGM1ZWZjYS4uYjNk
Y2RjYzdmYjU2NThiNDYxMGZkMjE1YzM3ZmVjY2UwZmUzZTA4YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDYWNoZU1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udENhY2hlTWFjLm1tCkBAIC00Myw3
ICs0Myw3IEBACiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbXBvcnQgPHd0Zi9T
dGRMaWJFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi9UaHJlYWRpbmcuaD4KLSNpbXBvcnQgPHd0Zi90
ZXh0L0F0b21pY1N0cmluZ0hhc2guaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L0F0b21TdHJpbmdIYXNo
Lmg+CiAjZW5kaWYKIAogI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CkBAIC03Myw3ICs3Myw3
IEBAIHN0YXRpYyBDR0Zsb2F0IHRvTlNGb250V2VpZ2h0KEZvbnRTZWxlY3Rpb25WYWx1ZSBmb250
V2VpZ2h0KQogICAgIHJldHVybiBOU0ZvbnRXZWlnaHRCbGFjazsKIH0KIAotUmV0YWluUHRyPENU
Rm9udFJlZj4gcGxhdGZvcm1Gb250V2l0aEZhbWlseVNwZWNpYWxDYXNlKGNvbnN0IEF0b21pY1N0
cmluZyYgZmFtaWx5LCBGb250U2VsZWN0aW9uUmVxdWVzdCByZXF1ZXN0LCBmbG9hdCBzaXplLCBB
bGxvd1VzZXJJbnN0YWxsZWRGb250cyBhbGxvd1VzZXJJbnN0YWxsZWRGb250cykKK1JldGFpblB0
cjxDVEZvbnRSZWY+IHBsYXRmb3JtRm9udFdpdGhGYW1pbHlTcGVjaWFsQ2FzZShjb25zdCBBdG9t
U3RyaW5nJiBmYW1pbHksIEZvbnRTZWxlY3Rpb25SZXF1ZXN0IHJlcXVlc3QsIGZsb2F0IHNpemUs
IEFsbG93VXNlckluc3RhbGxlZEZvbnRzIGFsbG93VXNlckluc3RhbGxlZEZvbnRzKQogewogICAg
IC8vIEZJWE1FOiBTZWUgY29tbWVudCBpbiBGb250Q2FzY2FkZURlc2NyaXB0aW9uOjplZmZlY3Rp
dmVGYW1pbHlBdCgpIGluIEZvbnREZXNjcmlwdGlvbkNvY29hLmNwcAogICAgIGlmIChlcXVhbExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShmYW1pbHksICItd2Via2l0LXN5c3RlbS1mb250IikgfHwg
ZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZmFtaWx5LCAiLWFwcGxlLXN5c3RlbSIpIHx8
IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGZhbWlseSwgIi1hcHBsZS1zeXN0ZW0tZm9u
dCIpIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGZhbWlseSwgInN5c3RlbS11aSIp
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtLmNwcAppbmRleCBlMWM5
N2ZlNDJmN2RiN2ViMjBkMGNjMTNjMDQ0MmY1OTZjZmMxOWU1Li5lYjg3ODhkNGZmNWU4ODlmYmFm
NDZjNjAxNjk5NTMwMGE3OGQ3MTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVy
UHJvZ3JhbS5jcHAKQEAgLTUyNSw3ICs1MjUsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJTaGFkZXJQ
cm9ncmFtOjpzZXRNYXRyaXgoR0x1aW50IGxvY2F0aW9uLCBjb25zdCBUcmFuc2Zvcm1hdGlvbgog
ICAgIGdsVW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgMSwgZmFsc2UsIGZsb2F0TWF0cml4LmRh
dGEoKSk7CiB9CiAKLUdMdWludCBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6Z2V0TG9jYXRp
b24oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBWYXJpYWJsZVR5cGUgdHlwZSkKK0dMdWludCBU
ZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6Z2V0TG9jYXRpb24oY29uc3QgQXRvbVN0cmluZyYg
bmFtZSwgVmFyaWFibGVUeXBlIHR5cGUpCiB7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3Zhcmlh
Ymxlcy5lbnN1cmUobmFtZSwKICAgICAgICAgW3RoaXMsICZuYW1lLCB0eXBlXSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
clNoYWRlclByb2dyYW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5oCmluZGV4IDhkYTFlNDI4MTllMGQxNzQ3ODdi
MzdmYTBmNTZmNDFmMjFmMjZjZWQuLjRhMzQyMGMwNjAyY2I0ZDYwYTQ5OGI5NDc1YTNmMzk3ZDJk
NzFmMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5oCkBAIC0yOCwx
MyArMjgsMTMgQEAKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9B
dG9taWNTdHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZ0hhc2guaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjZGVmaW5lIFRFWE1BUF9ERUNMQVJFX1ZBUklBQkxF
KEFjY2Vzc29yLCBOYW1lLCBUeXBlKSBcCiAgICAgR0x1aW50IEFjY2Vzc29yIyNMb2NhdGlvbigp
IHsgXAotICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBu
YW1lKE5hbWUsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOyBcCisgICAgICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBuYW1lKE5hbWUsIEF0b21T
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsgXAogICAgICAgICByZXR1cm4gZ2V0TG9jYXRp
b24obmFtZS5nZXQoKSwgVHlwZSk7IFwKICAgICB9CiAKQEAgLTk4LDEwICs5OCwxMCBAQCBwcml2
YXRlOgogICAgIEdMdWludCBtX2ZyYWdtZW50U2hhZGVyOwogCiAgICAgZW51bSBWYXJpYWJsZVR5
cGUgeyBVbmlmb3JtVmFyaWFibGUsIEF0dHJpYlZhcmlhYmxlIH07Ci0gICAgR0x1aW50IGdldExv
Y2F0aW9uKGNvbnN0IEF0b21pY1N0cmluZyYsIFZhcmlhYmxlVHlwZSk7CisgICAgR0x1aW50IGdl
dExvY2F0aW9uKGNvbnN0IEF0b21TdHJpbmcmLCBWYXJpYWJsZVR5cGUpOwogCiAgICAgR0x1aW50
IG1faWQ7Ci0gICAgSGFzaE1hcDxBdG9taWNTdHJpbmcsIEdMdWludD4gbV92YXJpYWJsZXM7Cisg
ICAgSGFzaE1hcDxBdG9tU3RyaW5nLCBHTHVpbnQ+IG1fdmFyaWFibGVzOwogfTsKIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdp
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2lu
LmNwcAppbmRleCA5YTg1NjQwYmRmOTEwNzllYTM0MDM5NWI4ZTIyNzIwMWJkOTFkNDEyLi5kOTcy
MzgzOGUzYjYwNTBiOWE0Y2FhOGU5N2ZhNmMxMmNiYmRkYTdmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcApAQCAtMzI4
LDkgKzMyOCw5IEBAIFZlY3RvcjxTdHJpbmc+IEZvbnRDYWNoZTo6c3lzdGVtRm9udEZhbWlsaWVz
KCkKICAgICByZXR1cm4gZm9udEZhbWlsaWVzOwogfQogCi1SZWZQdHI8Rm9udD4gRm9udENhY2hl
Ojpmb250RnJvbURlc2NyaXB0aW9uQW5kTG9nRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mIGZv
bnREZXNjcmlwdGlvbiwgY29uc3QgTE9HRk9OVCYgZm9udCwgQXRvbWljU3RyaW5nJiBvdXRGb250
RmFtaWx5TmFtZSkKK1JlZlB0cjxGb250PiBGb250Q2FjaGU6OmZvbnRGcm9tRGVzY3JpcHRpb25B
bmRMb2dGb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uLCBjb25zdCBM
T0dGT05UJiBmb250LCBBdG9tU3RyaW5nJiBvdXRGb250RmFtaWx5TmFtZSkKIHsKLSAgICBBdG9t
aWNTdHJpbmcgZmFtaWx5TmFtZShmb250LmxmRmFjZU5hbWUsIHdjc25sZW4oZm9udC5sZkZhY2VO
YW1lLCBMRl9GQUNFU0laRSkpOworICAgIEF0b21TdHJpbmcgZmFtaWx5TmFtZShmb250LmxmRmFj
ZU5hbWUsIHdjc25sZW4oZm9udC5sZkZhY2VOYW1lLCBMRl9GQUNFU0laRSkpOwogICAgIFJlZlB0
cjxGb250PiBmb250RGF0YSA9IGZvbnRGb3JGYW1pbHkoZm9udERlc2NyaXB0aW9uLCBmYW1pbHlO
YW1lKTsKICAgICBpZiAoZm9udERhdGEpCiAgICAgICAgIG91dEZvbnRGYW1pbHlOYW1lID0gZmFt
aWx5TmFtZTsKQEAgLTMzOSw3ICszMzksNyBAQCBSZWZQdHI8Rm9udD4gRm9udENhY2hlOjpmb250
RnJvbURlc2NyaXB0aW9uQW5kTG9nRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbgogCiBS
ZWY8Rm9udD4gRm9udENhY2hlOjpsYXN0UmVzb3J0RmFsbGJhY2tGb250KGNvbnN0IEZvbnREZXNj
cmlwdGlvbiYgZm9udERlc2NyaXB0aW9uKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxB
dG9taWNTdHJpbmc+IGZhbGxiYWNrRm9udE5hbWU7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEF0b21TdHJpbmc+IGZhbGxiYWNrRm9udE5hbWU7CiAKICAgICBpZiAoIWZhbGxiYWNrRm9udE5h
bWUuZ2V0KCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gKmZvbnRGb3JGYW1pbHkoZm9udERl
c2NyaXB0aW9uLCBmYWxsYmFja0ZvbnROYW1lKTsKQEAgLTM1MCwxMiArMzUwLDEyIEBAIFJlZjxG
b250PiBGb250Q2FjaGU6Omxhc3RSZXNvcnRGYWxsYmFja0ZvbnQoY29uc3QgRm9udERlc2NyaXB0
aW9uJiBmb250RGVzY3JpcHRpCiAgICAgLy8gU2VhcmNoIGFsbCB0eXBpY2FsIFdpbmRvd3MtaW5z
dGFsbGVkIGZ1bGwgVW5pY29kZSBmb250cy4KICAgICAvLyBTb3J0ZWQgYnkgbW9zdCB0byBsZWFz
dCBnbHlwaHMgYWNjb3JkaW5nIHRvIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVW5pY29k
ZV90eXBlZmFjZXMKICAgICAvLyBTdGFydCB3aXRoIFRpbWVzIE5ldyBSb21hbiBhbHNvIHNpbmNl
IGl0IGlzIHRoZSBkZWZhdWx0IGlmIHRoZSB1c2VyIGRvZXNuJ3QgY2hhbmdlIHByZWZzLgotICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGZhbGxiYWNrRm9udHNbXSA9IHsK
LSAgICAgICAgQXRvbWljU3RyaW5nKCJUaW1lcyBOZXcgUm9tYW4iLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKSwKLSAgICAgICAgQXRvbWljU3RyaW5nKCJNaWNyb3NvZnQgU2Fu
cyBTZXJpZiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpLAotICAgICAgICBB
dG9taWNTdHJpbmcoIlRhaG9tYSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
LAotICAgICAgICBBdG9taWNTdHJpbmcoIkx1Y2lkYSBTYW5zIFVuaWNvZGUiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSwKLSAgICAgICAgQXRvbWljU3RyaW5nKCJBcmlhbCIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpCisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEF0b21TdHJpbmc+IGZhbGxiYWNrRm9udHNbXSA9IHsKKyAgICAgICAgQXRvbVN0cmlu
ZygiVGltZXMgTmV3IFJvbWFuIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpLAor
ICAgICAgICBBdG9tU3RyaW5nKCJNaWNyb3NvZnQgU2FucyBTZXJpZiIsIEF0b21TdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKSwKKyAgICAgICAgQXRvbVN0cmluZygiVGFob21hIiwgQXRvbVN0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpLAorICAgICAgICBBdG9tU3RyaW5nKCJMdWNpZGEg
U2FucyBVbmljb2RlIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpLAorICAgICAg
ICBBdG9tU3RyaW5nKCJBcmlhbCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKQog
ICAgIH07CiAgICAgUmVmUHRyPEZvbnQ+IHNpbXBsZUZvbnQ7CiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RIKGZhbGxiYWNrRm9udHMpOyArK2kpIHsKQEAgLTQ3Nyw3
ICs0NzcsNyBAQCBzdGF0aWMgaW50IENBTExCQUNLIG1hdGNoSW1wcm92aW5nRW51bVByb2MoQ09O
U1QgTE9HRk9OVCogY2FuZGlkYXRlLCBDT05TVCBURVhUTQogICAgIHJldHVybiAxOwogfQogCi1z
dGF0aWMgR0RJT2JqZWN0PEhGT05UPiBjcmVhdGVHRElGb250KGNvbnN0IEF0b21pY1N0cmluZyYg
ZmFtaWx5LCBMT05HIGRlc2lyZWRXZWlnaHQsIGJvb2wgZGVzaXJlZEl0YWxpYywgaW50IHNpemUs
IGJvb2wgc3ludGhlc2l6ZUl0YWxpYykKK3N0YXRpYyBHRElPYmplY3Q8SEZPTlQ+IGNyZWF0ZUdE
SUZvbnQoY29uc3QgQXRvbVN0cmluZyYgZmFtaWx5LCBMT05HIGRlc2lyZWRXZWlnaHQsIGJvb2wg
ZGVzaXJlZEl0YWxpYywgaW50IHNpemUsIGJvb2wgc3ludGhlc2l6ZUl0YWxpYykKIHsKICAgICBI
V25kREMgaGRjKDApOwogCkBAIC01MzUsMTIgKzUzNSwxMiBAQCBzdGF0aWMgR0RJT2JqZWN0PEhG
T05UPiBjcmVhdGVHRElGb250KGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5LCBMT05HIGRlc2ly
ZWRXZQogfQogCiBzdHJ1Y3QgVHJhaXRzSW5GYW1pbHlQcm9jRGF0YSB7Ci0gICAgVHJhaXRzSW5G
YW1pbHlQcm9jRGF0YShjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseU5hbWUpCisgICAgVHJhaXRz
SW5GYW1pbHlQcm9jRGF0YShjb25zdCBBdG9tU3RyaW5nJiBmYW1pbHlOYW1lKQogICAgICAgICA6
IG1fZmFtaWx5TmFtZShmYW1pbHlOYW1lKQogICAgIHsKICAgICB9CiAKLSAgICBjb25zdCBBdG9t
aWNTdHJpbmcmIG1fZmFtaWx5TmFtZTsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBtX2ZhbWlseU5h
bWU7CiAgICAgVmVjdG9yPEZvbnRTZWxlY3Rpb25DYXBhYmlsaXRpZXM+IG1fY2FwYWJpbGl0aWVz
OwogfTsKIApAQCAtNTkxLDcgKzU5MSw3IEBAIHN0YXRpYyBpbnQgQ0FMTEJBQ0sgdHJhaXRzSW5G
YW1pbHlFbnVtUHJvYyhDT05TVCBMT0dGT05UKiBsb2dGb250LCBDT05TVCBURVhUTUVUCiAgICAg
cmV0dXJuIDE7CiB9CiAKLVZlY3RvcjxGb250U2VsZWN0aW9uQ2FwYWJpbGl0aWVzPiBGb250Q2Fj
aGU6OmdldEZvbnRTZWxlY3Rpb25DYXBhYmlsaXRpZXNJbkZhbWlseShjb25zdCBBdG9taWNTdHJp
bmcmIGZhbWlseU5hbWUsIEFsbG93VXNlckluc3RhbGxlZEZvbnRzKQorVmVjdG9yPEZvbnRTZWxl
Y3Rpb25DYXBhYmlsaXRpZXM+IEZvbnRDYWNoZTo6Z2V0Rm9udFNlbGVjdGlvbkNhcGFiaWxpdGll
c0luRmFtaWx5KGNvbnN0IEF0b21TdHJpbmcmIGZhbWlseU5hbWUsIEFsbG93VXNlckluc3RhbGxl
ZEZvbnRzKQogewogICAgIEhXbmREQyBoZGMoMCk7CiAKQEAgLTYxMSw3ICs2MTEsNyBAQCBWZWN0
b3I8Rm9udFNlbGVjdGlvbkNhcGFiaWxpdGllcz4gRm9udENhY2hlOjpnZXRGb250U2VsZWN0aW9u
Q2FwYWJpbGl0aWVzSW5GYW1pbAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0ZDo6dW5pcXVl
X3B0cjxGb250UGxhdGZvcm1EYXRhPiBGb250Q2FjaGU6OmNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEo
Y29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24sIGNvbnN0IEF0b21pY1N0cmlu
ZyYgZmFtaWx5LCBjb25zdCBGb250RmVhdHVyZVNldHRpbmdzKiwgY29uc3QgRm9udFZhcmlhbnRT
ZXR0aW5ncyosIEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXMpCitzdGQ6OnVuaXF1
ZV9wdHI8Rm9udFBsYXRmb3JtRGF0YT4gRm9udENhY2hlOjpjcmVhdGVGb250UGxhdGZvcm1EYXRh
KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uLCBjb25zdCBBdG9tU3RyaW5n
JiBmYW1pbHksIGNvbnN0IEZvbnRGZWF0dXJlU2V0dGluZ3MqLCBjb25zdCBGb250VmFyaWFudFNl
dHRpbmdzKiwgRm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllcykKIHsKICAgICBib29s
IGlzTHVjaWRhR3JhbmRlID0gZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZmFtaWx5LCAi
bHVjaWRhIGdyYW5kZSIpOwogCkBAIC02NTcsMTAgKzY1NywxMCBAQCBzdGQ6OnVuaXF1ZV9wdHI8
Rm9udFBsYXRmb3JtRGF0YT4gRm9udENhY2hlOjpjcmVhdGVGb250UGxhdGZvcm1EYXRhKGNvbnN0
IEZvbnREZQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWNvbnN0IEF0b21pY1N0cmluZyYgRm9u
dENhY2hlOjpwbGF0Zm9ybUFsdGVybmF0ZUZhbWlseU5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBm
YW1pbHlOYW1lKQorY29uc3QgQXRvbVN0cmluZyYgRm9udENhY2hlOjpwbGF0Zm9ybUFsdGVybmF0
ZUZhbWlseU5hbWUoY29uc3QgQXRvbVN0cmluZyYgZmFtaWx5TmFtZSkKIHsKLSAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiB0aW1lc05ld1JvbWFuKCJUaW1lcyBOZXcgUm9t
YW4iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBtaWNyb3NvZnRTYW5zU2VyaWYoIk1pY3Jvc29mdCBT
YW5zIFNlcmlmIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPEF0b21TdHJpbmc+IHRpbWVzTmV3Um9tYW4oIlRpbWVzIE5ldyBS
b21hbiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8QXRvbVN0cmluZz4gbWljcm9zb2Z0U2Fuc1NlcmlmKCJNaWNyb3NvZnQgU2Fu
cyBTZXJpZiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKIAogICAgIHN3aXRj
aCAoZmFtaWx5TmFtZS5sZW5ndGgoKSkgewogICAgIC8vIE9uIFdpbmRvd3MsIHdlIGRvbid0IHN1
cHBvcnQgYml0bWFwIGZvbnRzLCBidXQgbGVnYWN5IGNvbnRlbnQgZXhwZWN0cyBzdXBwb3J0Lgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFk
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCmlu
ZGV4IDY2NDczNmY5NTA2ZTBmM2I1MTY3ZTFmY2ZiZTk1YWYwMDgxMjllZTkuLjE5NTQwOGRiZDdh
ZDQyNjk2MWRkNGM1MjExMTY1ZDIzY2M2ZWU5NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0KQEAgLTUwLDcgKzUwLDcgQEAKICNpbXBv
cnQgPHd0Zi9UaHJlYWRTcGVjaWZpYy5oPgogI2ltcG9ydCA8d3RmL1RocmVhZGluZy5oPgogI2lt
cG9ydCA8d3RmL3NwaS9jb2NvYS9vYmpjU1BJLmg+Ci0jaW1wb3J0IDx3dGYvdGV4dC9BdG9taWNT
dHJpbmcuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4KIAogI2RlZmluZSBMT0df
TUVTU0FHRVMgMAogI2RlZmluZSBMT0dfV0VCX0xPQ0sgMApAQCAtNjMyLDExICs2MzIsMTEgQEAg
c3RhdGljIHZvaWQgU3RhcnRXZWJUaHJlYWQoKQogewogICAgIHdlYlRocmVhZFN0YXJ0ZWQgPSBU
UlVFOwogCi0gICAgLy8gVGhyZWFkR2xvYmFsRGF0YSB0b3VjaGVzIEF0b21pY1N0cmluZywgd2hp
Y2ggcmVxdWlyZXMgVGhyZWFkaW5nIGluaXRpYWxpemF0aW9uLgorICAgIC8vIFRocmVhZEdsb2Jh
bERhdGEgdG91Y2hlcyBBdG9tU3RyaW5nLCB3aGljaCByZXF1aXJlcyBUaHJlYWRpbmcgaW5pdGlh
bGl6YXRpb24uCiAgICAgV1RGOjppbml0aWFsaXplVGhyZWFkaW5nKCk7CiAKLSAgICAvLyBJbml0
aWFsaXplIEF0b21pY1N0cmluZyBvbiB0aGUgbWFpbiB0aHJlYWQuCi0gICAgV1RGOjpBdG9taWNT
dHJpbmc6OmluaXQoKTsKKyAgICAvLyBJbml0aWFsaXplIEF0b21TdHJpbmcgb24gdGhlIG1haW4g
dGhyZWFkLgorICAgIFdURjo6QXRvbVN0cmluZzo6aW5pdCgpOwogCiAgICAgLy8gSW5pdGlhbGl6
ZSBUaHJlYWRHbG9iYWxEYXRhIG9uIHRoZSBtYWluIFVJIHRocmVhZCBzbyB0aGF0IHRoZSBXZWJD
b3JlIHRocmVhZAogICAgIC8vIGNhbiBsYXRlciBzZXQgaXQncyB0aHJlYWQtc3BlY2lmaWMgZGF0
YSB0byBwb2ludCB0byB0aGUgc2FtZSBvYmplY3RzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1RoZW1lTWFjLm1tCmluZGV4IGI0YTgxNjJkZGIzZTk0N2M3Zjc5YWRmMDNmZWViODU1MDNmMzc4
ZTkuLjI3MjgyNGVjODhiYmJjMTAzNjk0NzdlZDA5OGFjNDg0NDEzYWI5YWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KQEAgLTc3MSw3ICs3NzEsNyBAQCBPcHRpb25h
bDxGb250Q2FzY2FkZURlc2NyaXB0aW9uPiBUaGVtZU1hYzo6Y29udHJvbEZvbnQoQ29udHJvbFBh
cnQgcGFydCwgY29uc3QgRgogICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0SXNBYnNvbHV0ZVNp
emUodHJ1ZSk7CiAKICAgICAgICAgTlNGb250KiBuc0ZvbnQgPSBbTlNGb250IHN5c3RlbUZvbnRP
ZlNpemU6W05TRm9udCBzeXN0ZW1Gb250U2l6ZUZvckNvbnRyb2xTaXplOmNvbnRyb2xTaXplRm9y
Rm9udChmb250KV1dOwotICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KEF0b21p
Y1N0cmluZygiLWFwcGxlLXN5c3RlbSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpKTsKKyAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldE9uZUZhbWlseShBdG9tU3RyaW5nKCIt
YXBwbGUtc3lzdGVtIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKICAgICAg
ICAgZm9udERlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZShbbnNGb250IHBvaW50U2l6ZV0gKiB6
b29tRmFjdG9yKTsKICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldFNwZWNpZmllZFNpemUoW25z
Rm9udCBwb2ludFNpemVdICogem9vbUZhY3Rvcik7CiAgICAgICAgIHJldHVybiBmb250RGVzY3Jp
cHRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9B
dWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtLmgKaW5kZXggYmU0NzY5NWFj
M2IyZTJhNTljM2RmNzU2Y2Y0YjFiODJiZGFjYTYyYS4uZGNkM2FlYzI1NDlmMzZlZDNlYWM4MWIz
ZTA0OWQ2NDI0OWY4YjhmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0uaApA
QCAtNDEsOSArNDEsOSBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgS2luZCBraW5kKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gS2luZDo6TWFpbjsgfQotICAgIEF0b21pY1N0cmluZyBpZCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faWQ7IH0KLSAgICBBdG9taWNTdHJpbmcgbGFiZWwoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBtX2xhYmVsOyB9Ci0gICAgQXRvbWljU3RyaW5nIGxhbmd1
YWdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZW1wdHlBdG9tKCk7IH0KKyAgICBBdG9tU3Ry
aW5nIGlkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pZDsgfQorICAgIEF0b21TdHJpbmcg
bGFiZWwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2xhYmVsOyB9CisgICAgQXRvbVN0cmlu
ZyBsYW5ndWFnZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGVtcHR5QXRvbSgpOyB9CiAgICAg
aW50IHRyYWNrSW5kZXgoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2luZGV4OyB9CiAKICAg
ICB2b2lkIHNldFRyYWNrSW5kZXgoaW50IGluZGV4KSB7IG1faW5kZXggPSBpbmRleDsgfQpAQCAt
NjMsOCArNjMsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgfQogCiAgICAgUmVmPE1lZGlhU3RyZWFtVHJh
Y2tQcml2YXRlPiBtX3N0cmVhbVRyYWNrOwotICAgIEF0b21pY1N0cmluZyBtX2lkOwotICAgIEF0
b21pY1N0cmluZyBtX2xhYmVsOworICAgIEF0b21TdHJpbmcgbV9pZDsKKyAgICBBdG9tU3RyaW5n
IG1fbGFiZWw7CiAgICAgaW50IG1faW5kZXggeyAwIH07CiAgICAgTWVkaWFUaW1lIG1fdGltZWxp
bmVPZmZzZXQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcy5oCmlu
ZGV4IDE0MWVkMTE5ZGRmNzE0NDc2OWYwZGNjZjJhNzAxMDRiNmNmODc0ZGMuLjljMmJmNjUwYWUx
ZWY1Y2U3MWZmZDE0NDIxYzgyNGVhZmZjMDczN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291
cmNlQ2FwYWJpbGl0aWVzLmgKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlIDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9BdG9tU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTg0LDEy
ICsxODQsMTIgQEAgcHVibGljOgogICAgIHZvaWQgc2V0RWNob0NhbmNlbGxhdGlvbihFY2hvQ2Fu
Y2VsbGF0aW9uIGVjaG9DYW5jZWxsYXRpb24pIHsgbV9lY2hvQ2FuY2VsbGF0aW9uID0gZWNob0Nh
bmNlbGxhdGlvbjsgfQogCiAgICAgYm9vbCBzdXBwb3J0c0RldmljZUlkKCkgY29uc3QgeyByZXR1
cm4gbV9zdXBwb3J0ZWRDb25zdHJhaW50cy5zdXBwb3J0c0RldmljZUlkKCk7IH0KLSAgICBjb25z
dCBBdG9taWNTdHJpbmcmIGRldmljZUlkKCkgY29uc3QgeyByZXR1cm4gbV9kZXZpY2VJZDsgfQot
ICAgIHZvaWQgc2V0RGV2aWNlSWQoY29uc3QgQXRvbWljU3RyaW5nJiBpZCkgIHsgbV9kZXZpY2VJ
ZCA9IGlkOyB9CisgICAgY29uc3QgQXRvbVN0cmluZyYgZGV2aWNlSWQoKSBjb25zdCB7IHJldHVy
biBtX2RldmljZUlkOyB9CisgICAgdm9pZCBzZXREZXZpY2VJZChjb25zdCBBdG9tU3RyaW5nJiBp
ZCkgIHsgbV9kZXZpY2VJZCA9IGlkOyB9CiAKICAgICBib29sIHN1cHBvcnRzR3JvdXBJZCgpIGNv
bnN0IHsgcmV0dXJuIG1fc3VwcG9ydGVkQ29uc3RyYWludHMuc3VwcG9ydHNHcm91cElkKCk7IH0K
LSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGdyb3VwSWQoKSBjb25zdCB7IHJldHVybiBtX2dyb3Vw
SWQ7IH0KLSAgICB2b2lkIHNldEdyb3VwSWQoY29uc3QgQXRvbWljU3RyaW5nJiBpZCkgIHsgbV9n
cm91cElkID0gaWQ7IH0KKyAgICBjb25zdCBBdG9tU3RyaW5nJiBncm91cElkKCkgY29uc3QgeyBy
ZXR1cm4gbV9ncm91cElkOyB9CisgICAgdm9pZCBzZXRHcm91cElkKGNvbnN0IEF0b21TdHJpbmcm
IGlkKSAgeyBtX2dyb3VwSWQgPSBpZDsgfQogICAgIAogICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFT
b3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyYgc3VwcG9ydGVkQ29uc3RyYWludHMoKSBjb25zdCB7
IHJldHVybiBtX3N1cHBvcnRlZENvbnN0cmFpbnRzOyB9CiAgICAgdm9pZCBzZXRTdXBwb3J0ZWRD
b25zdHJhaW50cyhjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMm
IGNvbnN0cmFpbnRzKSB7IG1fc3VwcG9ydGVkQ29uc3RyYWludHMgPSBjb25zdHJhaW50czsgfQpA
QCAtMjA3LDggKzIwNyw4IEBAIHByaXZhdGU6CiAgICAgQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSBt
X3NhbXBsZVJhdGU7CiAgICAgQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSBtX3NhbXBsZVNpemU7CiAg
ICAgRWNob0NhbmNlbGxhdGlvbiBtX2VjaG9DYW5jZWxsYXRpb247Ci0gICAgQXRvbWljU3RyaW5n
IG1fZGV2aWNlSWQ7Ci0gICAgQXRvbWljU3RyaW5nIG1fZ3JvdXBJZDsKKyAgICBBdG9tU3RyaW5n
IG1fZGV2aWNlSWQ7CisgICAgQXRvbVN0cmluZyBtX2dyb3VwSWQ7CiAKICAgICBSZWFsdGltZU1l
ZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMgbV9zdXBwb3J0ZWRDb25zdHJhaW50czsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGlt
ZU1lZGlhU291cmNlU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5oCmluZGV4IDM5NWE2NGNiZDNjZmFlZTQw
NTU1NWYzNjcyMWFiM2MyNGUzMDE4NjQuLmYwNGRiNDU0MzY3Mzg2ZTQ3MDVkOGJkODU1NDc1ZjI5
OTkzYmE5MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L1JlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5oCkBAIC0zMSw3ICsz
MSw3IEBACiAjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21p
Y1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC0xMDIsMTIgKzEwMiwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRF
Y2hvQ2FuY2VsbGF0aW9uKGJvb2wgZWNob0NhbmNlbGxhdGlvbikgeyBtX2VjaG9DYW5jZWxsYXRp
b24gPSBlY2hvQ2FuY2VsbGF0aW9uOyB9CiAKICAgICBib29sIHN1cHBvcnRzRGV2aWNlSWQoKSBj
b25zdCB7IHJldHVybiBtX3N1cHBvcnRlZENvbnN0cmFpbnRzLnN1cHBvcnRzRGV2aWNlSWQoKTsg
fQotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZGV2aWNlSWQoKSBjb25zdCB7IHJldHVybiBtX2Rl
dmljZUlkOyB9Ci0gICAgdm9pZCBzZXREZXZpY2VJZChjb25zdCBBdG9taWNTdHJpbmcmIGRldmlj
ZUlkKSB7IG1fZGV2aWNlSWQgPSBkZXZpY2VJZDsgfQorICAgIGNvbnN0IEF0b21TdHJpbmcmIGRl
dmljZUlkKCkgY29uc3QgeyByZXR1cm4gbV9kZXZpY2VJZDsgfQorICAgIHZvaWQgc2V0RGV2aWNl
SWQoY29uc3QgQXRvbVN0cmluZyYgZGV2aWNlSWQpIHsgbV9kZXZpY2VJZCA9IGRldmljZUlkOyB9
CiAKICAgICBib29sIHN1cHBvcnRzR3JvdXBJZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcG9ydGVk
Q29uc3RyYWludHMuc3VwcG9ydHNHcm91cElkKCk7IH0KLSAgICBjb25zdCBBdG9taWNTdHJpbmcm
IGdyb3VwSWQoKSBjb25zdCB7IHJldHVybiBtX2dyb3VwSWQ7IH0KLSAgICB2b2lkIHNldEdyb3Vw
SWQoY29uc3QgQXRvbWljU3RyaW5nJiBncm91cElkKSB7IG1fZ3JvdXBJZCA9IGdyb3VwSWQ7IH0K
KyAgICBjb25zdCBBdG9tU3RyaW5nJiBncm91cElkKCkgY29uc3QgeyByZXR1cm4gbV9ncm91cElk
OyB9CisgICAgdm9pZCBzZXRHcm91cElkKGNvbnN0IEF0b21TdHJpbmcmIGdyb3VwSWQpIHsgbV9n
cm91cElkID0gZ3JvdXBJZDsgfQogCiAgICAgZW51bSBjbGFzcyBEaXNwbGF5U3VyZmFjZVR5cGUg
ewogICAgICAgICBNb25pdG9yLApAQCAtMTI4LDggKzEyOCw4IEBAIHB1YmxpYzoKICAgICBjb25z
dCBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMmIHN1cHBvcnRlZENvbnN0
cmFpbnRzKCkgY29uc3QgeyByZXR1cm4gbV9zdXBwb3J0ZWRDb25zdHJhaW50czsgfQogICAgIHZv
aWQgc2V0U3VwcG9ydGVkQ29uc3RyYWludHMoY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBv
cnRlZENvbnN0cmFpbnRzJiBzdXBwb3J0ZWRDb25zdHJhaW50cykgeyBtX3N1cHBvcnRlZENvbnN0
cmFpbnRzID0gc3VwcG9ydGVkQ29uc3RyYWludHM7IH0KIAotICAgIGNvbnN0IEF0b21pY1N0cmlu
ZyYgbGFiZWwoKSBjb25zdCB7IHJldHVybiBtX2xhYmVsOyB9Ci0gICAgdm9pZCBzZXRMYWJlbChj
b25zdCBBdG9taWNTdHJpbmcmIGxhYmVsKSB7IG1fbGFiZWwgPSBsYWJlbDsgfQorICAgIGNvbnN0
IEF0b21TdHJpbmcmIGxhYmVsKCkgY29uc3QgeyByZXR1cm4gbV9sYWJlbDsgfQorICAgIHZvaWQg
c2V0TGFiZWwoY29uc3QgQXRvbVN0cmluZyYgbGFiZWwpIHsgbV9sYWJlbCA9IGxhYmVsOyB9CiAK
ICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7
CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXIm
LCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmKTsKQEAgLTE0Nyw5ICsxNDcsOSBAQCBwcml2
YXRlOgogICAgIHVpbnQzMl90IG1fc2FtcGxlU2l6ZSB7IDAgfTsKICAgICBib29sIG1fZWNob0Nh
bmNlbGxhdGlvbiB7IDAgfTsKIAotICAgIEF0b21pY1N0cmluZyBtX2RldmljZUlkOwotICAgIEF0
b21pY1N0cmluZyBtX2dyb3VwSWQ7Ci0gICAgQXRvbWljU3RyaW5nIG1fbGFiZWw7CisgICAgQXRv
bVN0cmluZyBtX2RldmljZUlkOworICAgIEF0b21TdHJpbmcgbV9ncm91cElkOworICAgIEF0b21T
dHJpbmcgbV9sYWJlbDsKIAogICAgIERpc3BsYXlTdXJmYWNlVHlwZSBtX2Rpc3BsYXlTdXJmYWNl
IHsgRGlzcGxheVN1cmZhY2VUeXBlOjpJbnZhbGlkIH07CiAgICAgYm9vbCBtX2xvZ2ljYWxTdXJm
YWNlIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRD
b25zdHJhaW50cy5jcHAKaW5kZXggNjA1ZDM4ODdjYjRjMmUzMDZjY2ZmODMxMzhkZTUzZjMwYmNk
MDM0ZS4uM2U2MWNhZDM3ZDE4ZjFkNWFkZGQxMDBlNDkxOGJjYThlMmQ1MGM5NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJj
ZVN1cHBvcnRlZENvbnN0cmFpbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMuY3BwCkBA
IC0yOSw4ICsyOSw4IEBACiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAogI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+Ci0jaW5jbHVk
ZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nSGFzaC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21T
dHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nSGFzaC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0uaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0uaAppbmRleCA0
Yjg2YzFiYWM5MDcwMDczNzUxZTM3M2E5Y2YxZTMzZWNhNmZjMzY2Li4xMDYzMWYwNjJlMzdkZDJk
YzhlZTkyOGVmMGVkZjRmNTU1Zjg3YjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vVmlkZW9UcmFja1ByaXZhdGVNZWRpYVN0
cmVhbS5oCkBAIC01NywxNCArNTcsMTQgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICBLaW5kIGtp
bmQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBLaW5kOjpNYWluOyB9Ci0gICAgQXRvbWljU3RyaW5n
IGlkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pZDsgfQotICAgIEF0b21pY1N0cmluZyBsYWJl
bCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbGFiZWw7IH0KLSAgICBBdG9taWNTdHJpbmcgbGFu
Z3VhZ2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBlbXB0eUF0b20oKTsgfQorICAgIEF0b21TdHJp
bmcgaWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lkOyB9CisgICAgQXRvbVN0cmluZyBsYWJl
bCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbGFiZWw7IH0KKyAgICBBdG9tU3RyaW5nIGxhbmd1
YWdlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZW1wdHlBdG9tKCk7IH0KICAgICBpbnQgdHJhY2tJ
bmRleCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faW5kZXg7IH0KIAogICAgIFJlZjxNZWRpYVN0
cmVhbVRyYWNrUHJpdmF0ZT4gbV9zdHJlYW1UcmFjazsKLSAgICBBdG9taWNTdHJpbmcgbV9pZDsK
LSAgICBBdG9taWNTdHJpbmcgbV9sYWJlbDsKKyAgICBBdG9tU3RyaW5nIG1faWQ7CisgICAgQXRv
bVN0cmluZyBtX2xhYmVsOwogICAgIGludCBtX2luZGV4IHsgMCB9OwogICAgIE1lZGlhVGltZSBt
X3RpbWVsaW5lT2Zmc2V0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5j
cHAKaW5kZXggZDBmOWRjZTg1ZmU5NDUyNWFkY2Y4ZmY5ZmU5ZjJhODdiMjRiOWMzNi4uYjQyZjA0
YmVkZjAxZWQwN2FiZTA5YzUzZjliODlmNjEwZGJmYWZlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291
cmNlQnVmZmVyUHJpdmF0ZS5jcHAKQEAgLTQ5LDE0ICs0OSwxNCBAQCBwdWJsaWM6CiBwcml2YXRl
OgogICAgIE1vY2tNZWRpYVNhbXBsZShjb25zdCBNb2NrU2FtcGxlQm94JiBib3gpCiAgICAgICAg
IDogbV9ib3goYm94KQotICAgICAgICAsIG1faWQoQXRvbWljU3RyaW5nOjpudW1iZXIoYm94LnRy
YWNrSUQoKSkpCisgICAgICAgICwgbV9pZChBdG9tU3RyaW5nOjpudW1iZXIoYm94LnRyYWNrSUQo
KSkpCiAgICAgewogICAgIH0KIAogICAgIE1lZGlhVGltZSBwcmVzZW50YXRpb25UaW1lKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9ib3gucHJlc2VudGF0aW9uVGltZXN0YW1wKCk7IH0KICAg
ICBNZWRpYVRpbWUgZGVjb2RlVGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYm94LmRl
Y29kZVRpbWVzdGFtcCgpOyB9CiAgICAgTWVkaWFUaW1lIGR1cmF0aW9uKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gbV9ib3guZHVyYXRpb24oKTsgfQotICAgIEF0b21pY1N0cmluZyB0cmFja0lE
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pZDsgfQorICAgIEF0b21TdHJpbmcgdHJhY2tJ
RCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faWQ7IH0KICAgICB2b2lkIHNldFRyYWNrSUQo
Y29uc3QgU3RyaW5nJiBpZCkgb3ZlcnJpZGUgeyBtX2lkID0gaWQ7IH0KICAgICBzaXplX3Qgc2l6
ZUluQnl0ZXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzaXplb2YobV9ib3gpOyB9CiAgICAg
U2FtcGxlRmxhZ3MgZmxhZ3MoKSBjb25zdCBvdmVycmlkZTsKQEAgLTcyLDcgKzcyLDcgQEAgcHJp
dmF0ZToKICAgICB1bnNpZ25lZCBnZW5lcmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9ib3guZ2Vu
ZXJhdGlvbigpOyB9CiAKICAgICBNb2NrU2FtcGxlQm94IG1fYm94OwotICAgIEF0b21pY1N0cmlu
ZyBtX2lkOworICAgIEF0b21TdHJpbmcgbV9pZDsKIH07CiAKIE1lZGlhU2FtcGxlOjpTYW1wbGVG
bGFncyBNb2NrTWVkaWFTYW1wbGU6OmZsYWdzKCkgY29uc3QKQEAgLTEwOCw3ICsxMDgsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIFJlZjxNb2NrTWVkaWFEZXNjcmlwdGlvbj4gY3JlYXRlKGNvbnN0
IE1vY2tUcmFja0JveCYgYm94KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE1vY2tNZWRpYURlc2Ny
aXB0aW9uKGJveCkpOyB9CiAgICAgdmlydHVhbCB+TW9ja01lZGlhRGVzY3JpcHRpb24oKSA9IGRl
ZmF1bHQ7CiAKLSAgICBBdG9taWNTdHJpbmcgY29kZWMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtX2JveC5jb2RlYygpOyB9CisgICAgQXRvbVN0cmluZyBjb2RlYygpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fYm94LmNvZGVjKCk7IH0KICAgICBib29sIGlzVmlkZW8oKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX2JveC5raW5kKCkgPT0gTW9ja1RyYWNrQm94OjpWaWRlbzsgfQogICAg
IGJvb2wgaXNBdWRpbygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYm94LmtpbmQoKSA9PSBN
b2NrVHJhY2tCb3g6OkF1ZGlvOyB9CiAgICAgYm9vbCBpc1RleHQoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBtX2JveC5raW5kKCkgPT0gTW9ja1RyYWNrQm94OjpUZXh0OyB9CkBAIC0yMzUsNyAr
MjM1LDcgQEAgdm9pZCBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6c2V0QWN0aXZlKGJvb2wgaXNB
Y3RpdmUpCiAgICAgICAgIG1fbWVkaWFTb3VyY2UtPnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRDaGFu
Z2VBY3RpdmVTdGF0ZSh0aGlzLCBpc0FjdGl2ZSk7CiB9CiAKLVZlY3RvcjxTdHJpbmc+IE1vY2tT
b3VyY2VCdWZmZXJQcml2YXRlOjplbnF1ZXVlZFNhbXBsZXNGb3JUcmFja0lEKGNvbnN0IEF0b21p
Y1N0cmluZyYpCitWZWN0b3I8U3RyaW5nPiBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6ZW5xdWV1
ZWRTYW1wbGVzRm9yVHJhY2tJRChjb25zdCBBdG9tU3RyaW5nJikKIHsKICAgICByZXR1cm4gbV9l
bnF1ZXVlZFNhbXBsZXM7CiB9CkBAIC0yNDgsNyArMjQ4LDcgQEAgYm9vbCBNb2NrU291cmNlQnVm
ZmVyUHJpdmF0ZTo6Y2FuU3dpdGNoVG9UeXBlKGNvbnN0IENvbnRlbnRUeXBlJiBjb250ZW50VHlw
ZSkKICAgICByZXR1cm4gTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnN1cHBvcnRzVHlwZShw
YXJhbWV0ZXJzKSAhPSBNZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQ7CiB9CiAKLXZvaWQgTW9j
a1NvdXJjZUJ1ZmZlclByaXZhdGU6OmVucXVldWVTYW1wbGUoUmVmPE1lZGlhU2FtcGxlPiYmIHNh
bXBsZSwgY29uc3QgQXRvbWljU3RyaW5nJikKK3ZvaWQgTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6
OmVucXVldWVTYW1wbGUoUmVmPE1lZGlhU2FtcGxlPiYmIHNhbXBsZSwgY29uc3QgQXRvbVN0cmlu
ZyYpCiB7CiAgICAgaWYgKCFtX21lZGlhU291cmNlKQogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VC
dWZmZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNl
L01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmgKaW5kZXggZjg5YTgwYjUwZDA3NjFjNzE4NmZjOWNi
NGM5NzY3ZjBiNzY4ZDQwMC4uZTRiOTU5OWRlOWE5NmQ3OTA5MWZhMmM4NjUwYzVlZmJiZmJlMzE2
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9N
b2NrU291cmNlQnVmZmVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuaApAQCAtNjQsMTIgKzY0LDEy
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRSZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpSZWFkeVN0
YXRlKSBmaW5hbDsKICAgICBib29sIGNhblN3aXRjaFRvVHlwZShjb25zdCBDb250ZW50VHlwZSYp
IGZpbmFsOwogCi0gICAgdm9pZCBmbHVzaChjb25zdCBBdG9taWNTdHJpbmcmKSBmaW5hbCB7IG1f
ZW5xdWV1ZWRTYW1wbGVzLmNsZWFyKCk7IH0KLSAgICB2b2lkIGVucXVldWVTYW1wbGUoUmVmPE1l
ZGlhU2FtcGxlPiYmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBmaW5hbDsKLSAgICBib29sIGlzUmVh
ZHlGb3JNb3JlU2FtcGxlcyhjb25zdCBBdG9taWNTdHJpbmcmKSBmaW5hbCB7IHJldHVybiB0cnVl
OyB9CisgICAgdm9pZCBmbHVzaChjb25zdCBBdG9tU3RyaW5nJikgZmluYWwgeyBtX2VucXVldWVk
U2FtcGxlcy5jbGVhcigpOyB9CisgICAgdm9pZCBlbnF1ZXVlU2FtcGxlKFJlZjxNZWRpYVNhbXBs
ZT4mJiwgY29uc3QgQXRvbVN0cmluZyYpIGZpbmFsOworICAgIGJvb2wgaXNSZWFkeUZvck1vcmVT
YW1wbGVzKGNvbnN0IEF0b21TdHJpbmcmKSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9p
ZCBzZXRBY3RpdmUoYm9vbCkgZmluYWw7CiAKLSAgICBWZWN0b3I8U3RyaW5nPiBlbnF1ZXVlZFNh
bXBsZXNGb3JUcmFja0lEKGNvbnN0IEF0b21pY1N0cmluZyYpIGZpbmFsOworICAgIFZlY3RvcjxT
dHJpbmc+IGVucXVldWVkU2FtcGxlc0ZvclRyYWNrSUQoY29uc3QgQXRvbVN0cmluZyYpIGZpbmFs
OwogCiAgICAgdm9pZCBkaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KGNvbnN0IE1vY2tJ
bml0aWFsaXphdGlvbkJveCYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVNhbXBsZShjb25zdCBNb2Nr
U2FtcGxlQm94Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21l
ZGlhc291cmNlL01vY2tUcmFja3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVk
aWFzb3VyY2UvTW9ja1RyYWNrcy5oCmluZGV4IGY0YzAwOTIyOTQ4ODFhNGZhZWYxYzBkZjc1MjA4
MzRjNjllMjIwMjMuLjg2ZTI5MzYzZGE1YWYwYmIzYjdlNTEyZTE2ZDU5NjIyYTYyNDU2ZmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1Ry
YWNrcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9j
a1RyYWNrcy5oCkBAIC0zOSwxNiArMzksMTYgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8TW9j
a0F1ZGlvVHJhY2tQcml2YXRlPiBjcmVhdGUoY29uc3QgTW9ja1RyYWNrQm94JiBib3gpIHsgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgTW9ja0F1ZGlvVHJhY2tQcml2YXRlKGJveCkpOyB9CiAgICAgdmly
dHVhbCB+TW9ja0F1ZGlvVHJhY2tQcml2YXRlKCkgPSBkZWZhdWx0OwogCi0gICAgdmlydHVhbCBB
dG9taWNTdHJpbmcgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CisgICAgdmlydHVhbCBBdG9t
U3RyaW5nIGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgTW9j
a0F1ZGlvVHJhY2tQcml2YXRlKGNvbnN0IE1vY2tUcmFja0JveCYgYm94KQogICAgICAgICA6IG1f
Ym94KGJveCkKLSAgICAgICAgLCBtX2lkKEF0b21pY1N0cmluZzo6bnVtYmVyKGJveC50cmFja0lE
KCkpKQorICAgICAgICAsIG1faWQoQXRvbVN0cmluZzo6bnVtYmVyKGJveC50cmFja0lEKCkpKQog
ICAgIHsKICAgICB9CiAgICAgTW9ja1RyYWNrQm94IG1fYm94OwotICAgIEF0b21pY1N0cmluZyBt
X2lkOworICAgIEF0b21TdHJpbmcgbV9pZDsKIH07CiAKIGNsYXNzIE1vY2tUZXh0VHJhY2tQcml2
YXRlIDogcHVibGljIEluYmFuZFRleHRUcmFja1ByaXZhdGUgewpAQCAtNTYsMTcgKzU2LDE3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPE1vY2tUZXh0VHJhY2tQcml2YXRlPiBjcmVhdGUoY29u
c3QgTW9ja1RyYWNrQm94JiBib3gpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTW9ja1RleHRUcmFj
a1ByaXZhdGUoYm94KSk7IH0KICAgICB2aXJ0dWFsIH5Nb2NrVGV4dFRyYWNrUHJpdmF0ZSgpID0g
ZGVmYXVsdDsKIAotICAgIHZpcnR1YWwgQXRvbWljU3RyaW5nIGlkKCkgY29uc3QgeyByZXR1cm4g
bV9pZDsgfQorICAgIHZpcnR1YWwgQXRvbVN0cmluZyBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7
IH0KIAogcHJvdGVjdGVkOgogICAgIE1vY2tUZXh0VHJhY2tQcml2YXRlKGNvbnN0IE1vY2tUcmFj
a0JveCYgYm94KQogICAgICAgICA6IEluYmFuZFRleHRUcmFja1ByaXZhdGUoSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZTo6R2VuZXJpYykKICAgICAgICAgLCBtX2JveChib3gpCi0gICAgICAgICwgbV9p
ZChBdG9taWNTdHJpbmc6Om51bWJlcihib3gudHJhY2tJRCgpKSkKKyAgICAgICAgLCBtX2lkKEF0
b21TdHJpbmc6Om51bWJlcihib3gudHJhY2tJRCgpKSkKICAgICB7CiAgICAgfQogICAgIE1vY2tU
cmFja0JveCBtX2JveDsKLSAgICBBdG9taWNTdHJpbmcgbV9pZDsKKyAgICBBdG9tU3RyaW5nIG1f
aWQ7CiB9OwogCiAKQEAgLTc1LDE2ICs3NSwxNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxN
b2NrVmlkZW9UcmFja1ByaXZhdGU+IGNyZWF0ZShjb25zdCBNb2NrVHJhY2tCb3gmIGJveCkgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBNb2NrVmlkZW9UcmFja1ByaXZhdGUoYm94KSk7IH0KICAgICB2
aXJ0dWFsIH5Nb2NrVmlkZW9UcmFja1ByaXZhdGUoKSA9IGRlZmF1bHQ7CiAKLSAgICB2aXJ0dWFs
IEF0b21pY1N0cmluZyBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KKyAgICB2aXJ0dWFsIEF0
b21TdHJpbmcgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CiAKIHByb3RlY3RlZDoKICAgICBN
b2NrVmlkZW9UcmFja1ByaXZhdGUoY29uc3QgTW9ja1RyYWNrQm94JiBib3gpCiAgICAgICAgIDog
bV9ib3goYm94KQotICAgICAgICAsIG1faWQoQXRvbWljU3RyaW5nOjpudW1iZXIoYm94LnRyYWNr
SUQoKSkpCisgICAgICAgICwgbV9pZChBdG9tU3RyaW5nOjpudW1iZXIoYm94LnRyYWNrSUQoKSkp
CiAgICAgewogICAgIH0KICAgICBNb2NrVHJhY2tCb3ggbV9ib3g7Ci0gICAgQXRvbWljU3RyaW5n
IG1faWQ7CisgICAgQXRvbVN0cmluZyBtX2lkOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcAppbmRleCA0NzRhMWEyZTBjNTRhM2E3
NWUxZTZiNGJmYzc0NGMwMjgyYmNhMTBmLi41OGE1NWMwZmE5ZTY3MzhiNGU2Yzk1ODcyMjJjMGRj
MmQ5YTVmNmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hU
VFBQYXJzZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQ
YXJzZXJzLmNwcApAQCAtNDg1LDcgKzQ4NSw3IEBAIENvbnRlbnRUeXBlT3B0aW9uc0Rpc3Bvc2l0
aW9uIHBhcnNlQ29udGVudFR5cGVPcHRpb25zSGVhZGVyKFN0cmluZ1ZpZXcgaGVhZGVyKQogCiAv
LyBGb3IgZXhhbXBsZTogIkhUVFAvMS4xIDIwMCBPSyIgPT4gIk9LIi4KIC8vIE5vdGUgdGhhdCBI
VFRQLzIgZG9lcyBub3QgaW5jbHVkZSBhIHJlYXNvbiBwaHJhc2UsIHNvIHdlIHJldHVybiB0aGUg
ZW1wdHkgYXRvbS4KLUF0b21pY1N0cmluZyBleHRyYWN0UmVhc29uUGhyYXNlRnJvbUhUVFBTdGF0
dXNMaW5lKGNvbnN0IFN0cmluZyYgc3RhdHVzTGluZSkKK0F0b21TdHJpbmcgZXh0cmFjdFJlYXNv
blBocmFzZUZyb21IVFRQU3RhdHVzTGluZShjb25zdCBTdHJpbmcmIHN0YXR1c0xpbmUpCiB7CiAg
ICAgU3RyaW5nVmlldyB2aWV3ID0gc3RhdHVzTGluZTsKICAgICBzaXplX3Qgc3BhY2VQb3MgPSB2
aWV3LmZpbmQoJyAnKTsKQEAgLTQ5NSw3ICs0OTUsNyBAQCBBdG9taWNTdHJpbmcgZXh0cmFjdFJl
YXNvblBocmFzZUZyb21IVFRQU3RhdHVzTGluZShjb25zdCBTdHJpbmcmIHN0YXR1c0xpbmUpCiAg
ICAgaWYgKHNwYWNlUG9zID09IG5vdEZvdW5kKQogICAgICAgICByZXR1cm4gZW1wdHlBdG9tKCk7
CiAKLSAgICByZXR1cm4gdmlldy5zdWJzdHJpbmcoc3BhY2VQb3MgKyAxKS50b0F0b21pY1N0cmlu
ZygpOworICAgIHJldHVybiB2aWV3LnN1YnN0cmluZyhzcGFjZVBvcyArIDEpLnRvQXRvbVN0cmlu
ZygpOwogfQogCiBYRnJhbWVPcHRpb25zRGlzcG9zaXRpb24gcGFyc2VYRnJhbWVPcHRpb25zSGVh
ZGVyKGNvbnN0IFN0cmluZyYgaGVhZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9IVFRQUGFyc2Vycy5oCmluZGV4IGI3ZWUwNDViY2UzMTE1Yzg4YWI3ZjgwMzA5ZjkzZGJk
OTAzMDQ2MDUuLmUzZTE5MjcwNWM3MWZlMmIyZWYxMDc3MGRkZDEyNTYwNmZjM2RmOWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmgKQEAgLTgwLDcg
KzgwLDcgQEAgU3RyaW5nIGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUoY29uc3QgU3RyaW5n
Jik7CiBTdHJpbmcgZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGNvbnN0IFN0cmluZyYpOwog
dm9pZCBmaW5kQ2hhcnNldEluTWVkaWFUeXBlKGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlLCB1bnNp
Z25lZCBpbnQmIGNoYXJzZXRQb3MsIHVuc2lnbmVkIGludCYgY2hhcnNldExlbiwgdW5zaWduZWQg
aW50IHN0YXJ0ID0gMCk7CiBYU1NQcm90ZWN0aW9uRGlzcG9zaXRpb24gcGFyc2VYU1NQcm90ZWN0
aW9uSGVhZGVyKGNvbnN0IFN0cmluZyYgaGVhZGVyLCBTdHJpbmcmIGZhaWx1cmVSZWFzb24sIHVu
c2lnbmVkJiBmYWlsdXJlUG9zaXRpb24sIFN0cmluZyYgcmVwb3J0VVJMKTsKLUF0b21pY1N0cmlu
ZyBleHRyYWN0UmVhc29uUGhyYXNlRnJvbUhUVFBTdGF0dXNMaW5lKGNvbnN0IFN0cmluZyYpOwor
QXRvbVN0cmluZyBleHRyYWN0UmVhc29uUGhyYXNlRnJvbUhUVFBTdGF0dXNMaW5lKGNvbnN0IFN0
cmluZyYpOwogV0VCQ09SRV9FWFBPUlQgWEZyYW1lT3B0aW9uc0Rpc3Bvc2l0aW9uIHBhcnNlWEZy
YW1lT3B0aW9uc0hlYWRlcihjb25zdCBTdHJpbmcmKTsKIAogLy8gLTEgY291bGQgYmUgc2V0IHRv
IG9uZSBvZiB0aGUgcmV0dXJuIHBhcmFtZXRlcnMgdG8gaW5kaWNhdGUgdGhlIHZhbHVlIGlzIG5v
dCBzcGVjaWZpZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VIYW5kbGUuY3BwCmluZGV4IDcwZWU0ZTc3MTFmZDc0OGI2OGY3ZDlhMGYyYWEzNmJiMDNk
YzM1YjAuLjMwYzI3ZjU3NmExNzdlNmI2YWIxOTQ3NDBhN2Q5MDI1YjY1OWZjYWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCkBA
IC0zNiwxNCArMzYsMTQgQEAKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNp
bmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgotI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2guaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9BdG9tU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgYm9vbCBzaG91bGRGb3JjZUNvbnRlbnRTbmlm
ZmluZzsKIAotdHlwZWRlZiBIYXNoTWFwPEF0b21pY1N0cmluZywgUmVzb3VyY2VIYW5kbGU6OkJ1
aWx0aW5Db25zdHJ1Y3Rvcj4gQnVpbHRpblJlc291cmNlSGFuZGxlQ29uc3RydWN0b3JNYXA7Cit0
eXBlZGVmIEhhc2hNYXA8QXRvbVN0cmluZywgUmVzb3VyY2VIYW5kbGU6OkJ1aWx0aW5Db25zdHJ1
Y3Rvcj4gQnVpbHRpblJlc291cmNlSGFuZGxlQ29uc3RydWN0b3JNYXA7CiBzdGF0aWMgQnVpbHRp
blJlc291cmNlSGFuZGxlQ29uc3RydWN0b3JNYXAmIGJ1aWx0aW5SZXNvdXJjZUhhbmRsZUNvbnN0
cnVjdG9yTWFwKCkKIHsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtNTUsMTIgKzU1LDEy
IEBAIHN0YXRpYyBCdWlsdGluUmVzb3VyY2VIYW5kbGVDb25zdHJ1Y3Rvck1hcCYgYnVpbHRpblJl
c291cmNlSGFuZGxlQ29uc3RydWN0b3JNYXAoCiAgICAgcmV0dXJuIG1hcDsKIH0KIAotdm9pZCBS
ZXNvdXJjZUhhbmRsZTo6cmVnaXN0ZXJCdWlsdGluQ29uc3RydWN0b3IoY29uc3QgQXRvbWljU3Ry
aW5nJiBwcm90b2NvbCwgUmVzb3VyY2VIYW5kbGU6OkJ1aWx0aW5Db25zdHJ1Y3RvciBjb25zdHJ1
Y3RvcikKK3ZvaWQgUmVzb3VyY2VIYW5kbGU6OnJlZ2lzdGVyQnVpbHRpbkNvbnN0cnVjdG9yKGNv
bnN0IEF0b21TdHJpbmcmIHByb3RvY29sLCBSZXNvdXJjZUhhbmRsZTo6QnVpbHRpbkNvbnN0cnVj
dG9yIGNvbnN0cnVjdG9yKQogewogICAgIGJ1aWx0aW5SZXNvdXJjZUhhbmRsZUNvbnN0cnVjdG9y
TWFwKCkuYWRkKHByb3RvY29sLCBjb25zdHJ1Y3Rvcik7CiB9CiAKLXR5cGVkZWYgSGFzaE1hcDxB
dG9taWNTdHJpbmcsIFJlc291cmNlSGFuZGxlOjpCdWlsdGluU3luY2hyb25vdXNMb2FkZXI+IEJ1
aWx0aW5SZXNvdXJjZUhhbmRsZVN5bmNocm9ub3VzTG9hZGVyTWFwOwordHlwZWRlZiBIYXNoTWFw
PEF0b21TdHJpbmcsIFJlc291cmNlSGFuZGxlOjpCdWlsdGluU3luY2hyb25vdXNMb2FkZXI+IEJ1
aWx0aW5SZXNvdXJjZUhhbmRsZVN5bmNocm9ub3VzTG9hZGVyTWFwOwogc3RhdGljIEJ1aWx0aW5S
ZXNvdXJjZUhhbmRsZVN5bmNocm9ub3VzTG9hZGVyTWFwJiBidWlsdGluUmVzb3VyY2VIYW5kbGVT
eW5jaHJvbm91c0xvYWRlck1hcCgpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKQEAg
LTY4LDcgKzY4LDcgQEAgc3RhdGljIEJ1aWx0aW5SZXNvdXJjZUhhbmRsZVN5bmNocm9ub3VzTG9h
ZGVyTWFwJiBidWlsdGluUmVzb3VyY2VIYW5kbGVTeW5jaHJvbm8KICAgICByZXR1cm4gbWFwOwog
fQogCi12b2lkIFJlc291cmNlSGFuZGxlOjpyZWdpc3RlckJ1aWx0aW5TeW5jaHJvbm91c0xvYWRl
cihjb25zdCBBdG9taWNTdHJpbmcmIHByb3RvY29sLCBSZXNvdXJjZUhhbmRsZTo6QnVpbHRpblN5
bmNocm9ub3VzTG9hZGVyIGxvYWRlcikKK3ZvaWQgUmVzb3VyY2VIYW5kbGU6OnJlZ2lzdGVyQnVp
bHRpblN5bmNocm9ub3VzTG9hZGVyKGNvbnN0IEF0b21TdHJpbmcmIHByb3RvY29sLCBSZXNvdXJj
ZUhhbmRsZTo6QnVpbHRpblN5bmNocm9ub3VzTG9hZGVyIGxvYWRlcikKIHsKICAgICBidWlsdGlu
UmVzb3VyY2VIYW5kbGVTeW5jaHJvbm91c0xvYWRlck1hcCgpLmFkZChwcm90b2NvbCwgbG9hZGVy
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VIYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5k
bGUuaAppbmRleCA5ZTI1ZDllMmI0NDk2ZWQxNmM5YTkzZDJiYjg3MjUyZjE5YmU0YWQwLi45ODMw
MjRmZjVkODY3NDE1YzQwODNjYzdiOGZiZjU3Mzg4NWJjZDc0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCkBAIC0zMCw3ICszMCw3IEBA
CiAjaW5jbHVkZSA8d3RmL01vbm90b25pY1RpbWUuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNT
dHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+CiAKICNpZiBQTEFURk9S
TShDT0NPQSkgfHwgVVNFKENGVVJMQ09OTkVDVElPTikKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRy
Lmg+CkBAIC0yMDQsMTAgKzIwNCwxMCBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIHR5cGVkZWYg
UmVmPFJlc291cmNlSGFuZGxlPiAoKkJ1aWx0aW5Db25zdHJ1Y3RvcikoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUhhbmRsZUNsaWVudCogY2xpZW50KTsKLSAgICBzdGF0
aWMgdm9pZCByZWdpc3RlckJ1aWx0aW5Db25zdHJ1Y3Rvcihjb25zdCBBdG9taWNTdHJpbmcmIHBy
b3RvY29sLCBCdWlsdGluQ29uc3RydWN0b3IpOworICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQnVp
bHRpbkNvbnN0cnVjdG9yKGNvbnN0IEF0b21TdHJpbmcmIHByb3RvY29sLCBCdWlsdGluQ29uc3Ry
dWN0b3IpOwogCiAgICAgdHlwZWRlZiB2b2lkICgqQnVpbHRpblN5bmNocm9ub3VzTG9hZGVyKShO
ZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFN0b3JlZENyZWRlbnRp
YWxzUG9saWN5LCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFZlY3RvcjxjaGFy
PiYgZGF0YSk7Ci0gICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJCdWlsdGluU3luY2hyb25vdXNMb2Fk
ZXIoY29uc3QgQXRvbWljU3RyaW5nJiBwcm90b2NvbCwgQnVpbHRpblN5bmNocm9ub3VzTG9hZGVy
KTsKKyAgICBzdGF0aWMgdm9pZCByZWdpc3RlckJ1aWx0aW5TeW5jaHJvbm91c0xvYWRlcihjb25z
dCBBdG9tU3RyaW5nJiBwcm90b2NvbCwgQnVpbHRpblN5bmNocm9ub3VzTG9hZGVyKTsKIAogcHJv
dGVjdGVkOgogICAgIFJlc291cmNlSGFuZGxlKE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VIYW5kbGVDbGllbnQqLCBib29sIGRlZmVyc0xvYWRpbmcs
IGJvb2wgc2hvdWxkQ29udGVudFNuaWZmLCBib29sIHNob3VsZENvbnRlbnRFbmNvZGluZ1NuaWZm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VS
ZXNwb25zZUJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VS
ZXNwb25zZUJhc2UuaAppbmRleCBjZTc1ZTljODE0YmRhMGI3ZjQ2YmFmYTJlNTlkMjM3OGYzMGE3
N2JmLi45ZjFiM2IyZTdmYzY3OTM1YmY3ODhkNDk3NzE5MGRlZTUzMDU4NTVkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFz
ZS5oCkBAIC0yMDYsMTEgKzIwNiwxMSBAQCBwcml2YXRlOgogCiBwcm90ZWN0ZWQ6CiAgICAgVVJM
IG1fdXJsOwotICAgIEF0b21pY1N0cmluZyBtX21pbWVUeXBlOworICAgIEF0b21TdHJpbmcgbV9t
aW1lVHlwZTsKICAgICBsb25nIGxvbmcgbV9leHBlY3RlZENvbnRlbnRMZW5ndGggeyAwIH07Ci0g
ICAgQXRvbWljU3RyaW5nIG1fdGV4dEVuY29kaW5nTmFtZTsKLSAgICBBdG9taWNTdHJpbmcgbV9o
dHRwU3RhdHVzVGV4dDsKLSAgICBBdG9taWNTdHJpbmcgbV9odHRwVmVyc2lvbjsKKyAgICBBdG9t
U3RyaW5nIG1fdGV4dEVuY29kaW5nTmFtZTsKKyAgICBBdG9tU3RyaW5nIG1faHR0cFN0YXR1c1Rl
eHQ7CisgICAgQXRvbVN0cmluZyBtX2h0dHBWZXJzaW9uOwogICAgIEhUVFBIZWFkZXJNYXAgbV9o
dHRwSGVhZGVyRmllbGRzOwogICAgIG11dGFibGUgTmV0d29ya0xvYWRNZXRyaWNzIG1fbmV0d29y
a0xvYWRNZXRyaWNzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL1Jlc291cmNlUmVzcG9uc2VDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXNwb25zZUNvY29hLm1tCmluZGV4IDMyNDFjNjZi
MWJiMmUwMDM4NzhmYzQ1NGQ3MTBmZDExMzJjZjE2ZDIuLjVlZjlhYjlmMzJlYzg5MjA4OGUyYjA3
YjU3NDVmMDZjMjE4ODFhZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY29jb2EvUmVzb3VyY2VSZXNwb25zZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXNwb25zZUNvY29hLm1tCkBAIC0xMjQs
MTMgKzEyNCwxMyBAQCBzdGF0aWMgdm9pZCBhZGRUb0hUVFBIZWFkZXJNYXAoY29uc3Qgdm9pZCog
a2V5LCBjb25zdCB2b2lkKiB2YWx1ZSwgdm9pZCogY29udGV4dAogICAgIGh0dHBIZWFkZXJNYXAt
PnNldCgoQ0ZTdHJpbmdSZWYpa2V5LCAoQ0ZTdHJpbmdSZWYpdmFsdWUpOwogfQogCi1zdGF0aWMg
aW5saW5lIEF0b21pY1N0cmluZyBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0RvdWJsZVF1b3RlKGNv
bnN0IFN0cmluZyYgdmFsdWUpCitzdGF0aWMgaW5saW5lIEF0b21TdHJpbmcgc3RyaXBMZWFkaW5n
QW5kVHJhaWxpbmdEb3VibGVRdW90ZShjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIHVuc2ln
bmVkIGxlbmd0aCA9IHZhbHVlLmxlbmd0aCgpOwogICAgIGlmIChsZW5ndGggPCAyIHx8IHZhbHVl
WzB1XSAhPSAnIicgfHwgdmFsdWVbbGVuZ3RoIC0gMV0gIT0gJyInKQogICAgICAgICByZXR1cm4g
dmFsdWU7CiAKLSAgICByZXR1cm4gU3RyaW5nVmlldyh2YWx1ZSkuc3Vic3RyaW5nKDEsIGxlbmd0
aCAtIDIpLnRvQXRvbWljU3RyaW5nKCk7CisgICAgcmV0dXJuIFN0cmluZ1ZpZXcodmFsdWUpLnN1
YnN0cmluZygxLCBsZW5ndGggLSAyKS50b0F0b21TdHJpbmcoKTsKIH0KIAogc3RhdGljIGlubGlu
ZSBIVFRQSGVhZGVyTWFwIGluaXRpYWxpemVIVFRQSGVhZGVycyhDRkhUVFBNZXNzYWdlUmVmIG1l
c3NhZ2VSZWYpCkBAIC0xNDMsMTIgKzE0MywxMiBAQCBzdGF0aWMgaW5saW5lIEhUVFBIZWFkZXJN
YXAgaW5pdGlhbGl6ZUhUVFBIZWFkZXJzKENGSFRUUE1lc3NhZ2VSZWYgbWVzc2FnZVJlZikKICAg
ICByZXR1cm4gaGVhZGVyc01hcDsKIH0KIAotc3RhdGljIGlubGluZSBBdG9taWNTdHJpbmcgZXh0
cmFjdEhUVFBTdGF0dXNUZXh0KENGSFRUUE1lc3NhZ2VSZWYgbWVzc2FnZVJlZikKK3N0YXRpYyBp
bmxpbmUgQXRvbVN0cmluZyBleHRyYWN0SFRUUFN0YXR1c1RleHQoQ0ZIVFRQTWVzc2FnZVJlZiBt
ZXNzYWdlUmVmKQogewogICAgIGlmIChhdXRvIGh0dHBTdGF0dXNMaW5lID0gYWRvcHRDRihDRkhU
VFBNZXNzYWdlQ29weVJlc3BvbnNlU3RhdHVzTGluZShtZXNzYWdlUmVmKSkpCiAgICAgICAgIHJl
dHVybiBleHRyYWN0UmVhc29uUGhyYXNlRnJvbUhUVFBTdGF0dXNMaW5lKGh0dHBTdGF0dXNMaW5l
LmdldCgpKTsKIAotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGRlZmF1
bHRTdGF0dXNUZXh0KCJPSyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9tU3RyaW5nPiBkZWZhdWx0U3RhdHVzVGV4dCgi
T0siLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIGRlZmF1
bHRTdGF0dXNUZXh0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXNwb25zZVNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVzcG9uc2VTb3VwLmNwcAppbmRleCAwM2IzNTBk
YjNhMTc4ODYzYTVlYWFjYWU1MTFjMTcwZjQ2NzZjN2VmLi5iY2I0OTBlZGUzMjBlMzhlMTNhNGMy
ZjUxZDI0MGMwZWM2M2MyNjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXNwb25zZVNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlc3BvbnNlU291cC5jcHAKQEAgLTQ1LDEw
ICs0NSwxMCBAQCB2b2lkIFJlc291cmNlUmVzcG9uc2U6OnVwZGF0ZUZyb21Tb3VwTWVzc2FnZShT
b3VwTWVzc2FnZSogc291cE1lc3NhZ2UpCiAKICAgICBzd2l0Y2ggKHNvdXBfbWVzc2FnZV9nZXRf
aHR0cF92ZXJzaW9uKHNvdXBNZXNzYWdlKSkgewogICAgIGNhc2UgU09VUF9IVFRQXzFfMDoKLSAg
ICAgICAgbV9odHRwVmVyc2lvbiA9IEF0b21pY1N0cmluZygiSFRUUC8xLjAiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICAgICAgbV9odHRwVmVyc2lvbiA9IEF0b21T
dHJpbmcoIkhUVFAvMS4wIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIFNPVVBfSFRUUF8xXzE6Ci0gICAgICAgIG1faHR0cFZlcnNp
b24gPSBBdG9taWNTdHJpbmcoIkhUVFAvMS4xIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCk7CisgICAgICAgIG1faHR0cFZlcnNpb24gPSBBdG9tU3RyaW5nKCJIVFRQLzEuMSIs
IEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQogICAgIG1faHR0cFN0YXR1c0NvZGUgPSBzb3VwTWVzc2FnZS0+c3RhdHVzX2NvZGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0h5cGhlbmF0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvSHlwaGVuYXRpb24uY3BwCmluZGV4IGVjMDc2Mzdl
MTRkY2UyZjI0NmYyOGQxNmM2MDZmMGRjNjBhNGNhYjguLjMwZWQ3YjA2YzJjN2JmNmE4NWUyNDVh
M2FjZjQ1NzMxODkzOTViMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvSHlwaGVuYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvSHlw
aGVuYXRpb24uY3BwCkBAIC0zMywxMiArMzMsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1ib29sIGNhbkh5cGhlbmF0ZShjb25zdCBBdG9taWNTdHJpbmcmIC8qIGxvY2FsZUlkZW50aWZp
ZXIgKi8pCitib29sIGNhbkh5cGhlbmF0ZShjb25zdCBBdG9tU3RyaW5nJiAvKiBsb2NhbGVJZGVu
dGlmaWVyICovKQogewogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc2l6ZV90IGxhc3RIeXBoZW5M
b2NhdGlvbihTdHJpbmdWaWV3LCBzaXplX3QgLyogYmVmb3JlSW5kZXggKi8sIGNvbnN0IEF0b21p
Y1N0cmluZyYgLyogbG9jYWxlSWRlbnRpZmllciAqLykKK3NpemVfdCBsYXN0SHlwaGVuTG9jYXRp
b24oU3RyaW5nVmlldywgc2l6ZV90IC8qIGJlZm9yZUluZGV4ICovLCBjb25zdCBBdG9tU3RyaW5n
JiAvKiBsb2NhbGVJZGVudGlmaWVyICovKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9I
eXBoZW5hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9IeXBoZW5hdGlvbi5o
CmluZGV4IDI3ZjQzMDU5MTRhZDQ1MmJkOWQ3Zjc5MDc3OWU5NTk1YWFiNTY0MmEuLjQ1ZDFlNTlh
OTRlM2QyMjMyZTFiNzhiZjdjZmY2NGQwNjE0NDQ5ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvSHlwaGVuYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L0h5cGhlbmF0aW9uLmgKQEAgLTM4LDggKzM4LDggQEAgaW5saW5lIHN0YXRpYyBi
b29sIGVub3VnaFdpZHRoRm9ySHlwaGVuYXRpb24oZmxvYXQgYXZhaWxhYmxlV2lkdGgsIGZsb2F0
IGZvbnRQaXgKICAgICByZXR1cm4gYXZhaWxhYmxlV2lkdGggPiBmb250UGl4ZWxTaXplICogNSAv
IDQ7CiAKIH0KLWJvb2wgY2FuSHlwaGVuYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlSWRl
bnRpZmllcik7Ci1zaXplX3QgbGFzdEh5cGhlbkxvY2F0aW9uKFN0cmluZ1ZpZXcsIHNpemVfdCBi
ZWZvcmVJbmRleCwgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGVJZGVudGlmaWVyKTsKK2Jvb2wg
Y2FuSHlwaGVuYXRlKGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsZUlkZW50aWZpZXIpOworc2l6ZV90
IGxhc3RIeXBoZW5Mb2NhdGlvbihTdHJpbmdWaWV3LCBzaXplX3QgYmVmb3JlSW5kZXgsIGNvbnN0
IEF0b21TdHJpbmcmIGxvY2FsZUlkZW50aWZpZXIpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlSUNVLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlSUNVLmNwcAppbmRleCAxMTY4
NGI4MDY2YzllYjUwOWI0YWRkNDYxOGI3Mzg4ZmI1NWFjMWU1Li41OWUxZmM3MmEyYmYyOTY5NDVh
ODZmODU1MmI4NjM3NmE5ZWE1ODZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L0xvY2FsZUlDVS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9M
b2NhbGVJQ1UuY3BwCkBAIC00Miw3ICs0Miw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2lu
ZyBuYW1lc3BhY2UgaWN1OwogCi1zdGQ6OnVuaXF1ZV9wdHI8TG9jYWxlPiBMb2NhbGU6OmNyZWF0
ZShjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSkKK3N0ZDo6dW5pcXVlX3B0cjxMb2NhbGU+IExv
Y2FsZTo6Y3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsZSkKIHsKICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxMb2NhbGVJQ1U+KGxvY2FsZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlTm9uZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZU5vbmUuY3BwCmluZGV4IDc2
OTNlZDlhZjI0MmExN2FjZDg0Yjg0NzJmNzlhMWE0ODdmOWE2YjEuLmJiNmIyNmJhNTljYjM2Yjk4
OWI3ZTZmNTg2MzBjN2E3YjNiNTZlYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvTG9jYWxlTm9uZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9Mb2NhbGVOb25lLmNwcApAQCAtNTUsNyArNTUsNyBAQCBwcml2YXRlOgogI2VuZGlmCiB9Owog
Ci1zdGQ6OnVuaXF1ZV9wdHI8TG9jYWxlPiBMb2NhbGU6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJp
bmcmKQorc3RkOjp1bmlxdWVfcHRyPExvY2FsZT4gTG9jYWxlOjpjcmVhdGUoY29uc3QgQXRvbVN0
cmluZyYpCiB7CiAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TG9jYWxlTm9uZT4oKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvUGxhdGZvcm1Mb2NhbGUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvUGxhdGZvcm1Mb2NhbGUuaAppbmRleCBl
NmY1ZWI3NGMxZDZlNTVmMzM3MTNlZjJjMmQzYmU4OTI3NzkxOGQyLi5hMzY5ZWEzMTRhODc1YmE2
NTFhYzExYzJiNjdjYWMzYmQ1NzZkOWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L1BsYXRmb3JtTG9jYWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9QbGF0Zm9ybUxvY2FsZS5oCkBAIC00MCw3ICs0MCw3IEBAIGNsYXNzIExvY2FsZSB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTG9jYWxlKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiAKIHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPExvY2FsZT4gY3JlYXRlKGNv
bnN0IEF0b21pY1N0cmluZyYgbG9jYWxlSWRlbnRpZmllcik7CisgICAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxMb2NhbGU+IGNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJiBsb2NhbGVJZGVudGlmaWVy
KTsKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPExvY2FsZT4gY3JlYXRlRGVmYXVsdCgpOwog
CiAgICAgLy8gQ29udmVydHMgdGhlIHNwZWNpZmllZCBudW1iZXIgc3RyaW5nIHRvIGFub3RoZXIg
bnVtYmVyIHN0cmluZyBsb2NhbGl6ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvY2YvSHlwaGVuYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L2NmL0h5cGhlbmF0aW9uQ0YuY3BwCmluZGV4IDFjNzBjNDEzZDhjYzIyNTAwNGIxN2Q3YjJh
NjY5YTczNzA1N2YzNmQuLjNkMDJmMjhmNjg1ZDQzNzg0ZDM5NDY5NWZjYmUyNGY5ZTc2MjkxOGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2YvSHlwaGVuYXRpb25D
Ri5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jZi9IeXBoZW5hdGlvbkNG
LmNwcApAQCAtMzUsMTYgKzM1LDE2IEBACiBuYW1lc3BhY2UgV1RGIHsKIAogdGVtcGxhdGU8Pgot
Y2xhc3MgVGlueUxSVUNhY2hlUG9saWN5PEF0b21pY1N0cmluZywgUmV0YWluUHRyPENGTG9jYWxl
UmVmPj4KK2NsYXNzIFRpbnlMUlVDYWNoZVBvbGljeTxBdG9tU3RyaW5nLCBSZXRhaW5QdHI8Q0ZM
b2NhbGVSZWY+PgogewogcHVibGljOgotICAgIHN0YXRpYyBUaW55TFJVQ2FjaGU8QXRvbWljU3Ry
aW5nLCBSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+PiYgY2FjaGUoKQorICAgIHN0YXRpYyBUaW55TFJV
Q2FjaGU8QXRvbVN0cmluZywgUmV0YWluUHRyPENGTG9jYWxlUmVmPj4mIGNhY2hlKCkKICAgICB7
Ci0gICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxUaW55TFJVQ2FjaGU8QXRvbWljU3RyaW5n
LCBSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+Pj4gY2FjaGU7CisgICAgICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxUaW55TFJVQ2FjaGU8QXRvbVN0cmluZywgUmV0YWluUHRyPENGTG9jYWxlUmVmPj4+
IGNhY2hlOwogICAgICAgICByZXR1cm4gY2FjaGU7CiAgICAgfQogCi0gICAgc3RhdGljIGJvb2wg
aXNLZXlOdWxsKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlSWRlbnRpZmllcikKKyAgICBzdGF0
aWMgYm9vbCBpc0tleU51bGwoY29uc3QgQXRvbVN0cmluZyYgbG9jYWxlSWRlbnRpZmllcikKICAg
ICB7CiAgICAgICAgIHJldHVybiBsb2NhbGVJZGVudGlmaWVyLmlzTnVsbCgpOwogICAgIH0KQEAg
LTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gQ0ZTdHJpbmdJc0h5cGhlbmF0
aW9uQXZhaWxhYmxlRm9yTG9jYWxlKGxvY2FsZS5nZXQoKSkgPyBsb2NhbGUgOiBudWxscHRyOwog
ICAgIH0KIAotICAgIHN0YXRpYyBSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+IGNyZWF0ZVZhbHVlRm9y
S2V5KGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlSWRlbnRpZmllcikKKyAgICBzdGF0aWMgUmV0
YWluUHRyPENGTG9jYWxlUmVmPiBjcmVhdGVWYWx1ZUZvcktleShjb25zdCBBdG9tU3RyaW5nJiBs
b2NhbGVJZGVudGlmaWVyKQogICAgIHsKICAgICAgICAgUmV0YWluUHRyPENGTG9jYWxlUmVmPiBs
b2NhbGUgPSBhZG9wdENGKENGTG9jYWxlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGxvY2Fs
ZUlkZW50aWZpZXIuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOwogCkBAIC02OCwx
NCArNjgsMTQgQEAgcHVibGljOgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWJvb2wgY2FuSHlw
aGVuYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlSWRlbnRpZmllcikKK2Jvb2wgY2FuSHlw
aGVuYXRlKGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsZUlkZW50aWZpZXIpCiB7Ci0gICAgcmV0dXJu
IFRpbnlMUlVDYWNoZVBvbGljeTxBdG9taWNTdHJpbmcsIFJldGFpblB0cjxDRkxvY2FsZVJlZj4+
OjpjYWNoZSgpLmdldChsb2NhbGVJZGVudGlmaWVyKTsKKyAgICByZXR1cm4gVGlueUxSVUNhY2hl
UG9saWN5PEF0b21TdHJpbmcsIFJldGFpblB0cjxDRkxvY2FsZVJlZj4+OjpjYWNoZSgpLmdldChs
b2NhbGVJZGVudGlmaWVyKTsKIH0KIAotc2l6ZV90IGxhc3RIeXBoZW5Mb2NhdGlvbihTdHJpbmdW
aWV3IHRleHQsIHNpemVfdCBiZWZvcmVJbmRleCwgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGVJ
ZGVudGlmaWVyKQorc2l6ZV90IGxhc3RIeXBoZW5Mb2NhdGlvbihTdHJpbmdWaWV3IHRleHQsIHNp
emVfdCBiZWZvcmVJbmRleCwgY29uc3QgQXRvbVN0cmluZyYgbG9jYWxlSWRlbnRpZmllcikKIHsK
LSAgICBSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+IGxvY2FsZSA9IFRpbnlMUlVDYWNoZVBvbGljeTxB
dG9taWNTdHJpbmcsIFJldGFpblB0cjxDRkxvY2FsZVJlZj4+OjpjYWNoZSgpLmdldChsb2NhbGVJ
ZGVudGlmaWVyKTsKKyAgICBSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+IGxvY2FsZSA9IFRpbnlMUlVD
YWNoZVBvbGljeTxBdG9tU3RyaW5nLCBSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+Pjo6Y2FjaGUoKS5n
ZXQobG9jYWxlSWRlbnRpZmllcik7CiAKICAgICBDRk9wdGlvbkZsYWdzIHNlYXJjaEFjcm9zc1dv
cmRCb3VuZGFyaWVzID0gMTsKICAgICBDRkluZGV4IHJlc3VsdCA9IENGU3RyaW5nR2V0SHlwaGVu
YXRpb25Mb2NhdGlvbkJlZm9yZUluZGV4KHRleHQuY3JlYXRlQ0ZTdHJpbmdXaXRob3V0Q29weWlu
ZygpLmdldCgpLCBiZWZvcmVJbmRleCwgQ0ZSYW5nZU1ha2UoMCwgdGV4dC5sZW5ndGgoKSksIHNl
YXJjaEFjcm9zc1dvcmRCb3VuZGFyaWVzLCBsb2NhbGUuZ2V0KCksIG51bGxwdHIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9oeXBoZW4vSHlwaGVuYXRpb25MaWJI
eXBoZW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9oeXBoZW4vSHlwaGVuYXRp
b25MaWJIeXBoZW4uY3BwCmluZGV4IDVlZWI5YmZhNzQwMGY3MjE1YzAyNmM1NTJkODJhYTM4YTc2
M2Y5NDIuLmZlNDBmYjI1OWI5M2Y5ZDM0ZTU2ZjIzY2QxZGQxMTAzYzY1Y2M5YTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGliSHlw
aGVuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5h
dGlvbkxpYkh5cGhlbi5jcHAKQEAgLTM4LDcgKzM4LDcgQEAKICNpbmNsdWRlIDx3dGYvVGlueUxS
VUNhY2hlLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR0xpYlV0aWxpdGllcy5oPgogI2luY2x1ZGUg
PHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmdI
YXNoLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZ0hhc2guaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgogCkBA
IC01OSw3ICs1OSw3IEBAIHN0YXRpYyBTdHJpbmcgZXh0cmFjdExvY2FsZUZyb21EaWN0aW9uYXJ5
RmlsZVBhdGgoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKICAgICByZXR1cm4gZmlsZU5hbWUuc3Vi
c3RyaW5nKHByZWZpeExlbmd0aCwgZmlsZU5hbWUubGVuZ3RoKCkgLSBwcmVmaXhMZW5ndGggLSBz
dWZmaXhMZW5ndGgpOwogfQogCi1zdGF0aWMgdm9pZCBzY2FuRGlyZWN0b3J5Rm9yRGljdGlvbmFy
aWVzKGNvbnN0IGNoYXIqIGRpcmVjdG9yeVBhdGgsIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBWZWN0
b3I8U3RyaW5nPj4mIGF2YWlsYWJsZUxvY2FsZXMpCitzdGF0aWMgdm9pZCBzY2FuRGlyZWN0b3J5
Rm9yRGljdGlvbmFyaWVzKGNvbnN0IGNoYXIqIGRpcmVjdG9yeVBhdGgsIEhhc2hNYXA8QXRvbVN0
cmluZywgVmVjdG9yPFN0cmluZz4+JiBhdmFpbGFibGVMb2NhbGVzKQogewogICAgIGZvciAoYXV0
byYgZmlsZVBhdGggOiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KGRpcmVjdG9yeVBhdGgsICJo
eXBoXyouZGljIikpIHsKICAgICAgICAgU3RyaW5nIGxvY2FsZSA9IGV4dHJhY3RMb2NhbGVGcm9t
RGljdGlvbmFyeUZpbGVQYXRoKGZpbGVQYXRoKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwpA
QCAtMTA5LDcgKzEwOSw3IEBAIHN0YXRpYyBDU3RyaW5nIHdlYmtpdEJ1aWxkRGlyZWN0b3J5KCkK
ICAgICByZXR1cm4gb3V0cHV0RGlyLmdldCgpOwogfQogCi1zdGF0aWMgdm9pZCBzY2FuVGVzdERp
Y3Rpb25hcmllc0RpcmVjdG9yeUlmTmVjZXNzYXJ5KEhhc2hNYXA8QXRvbWljU3RyaW5nLCBWZWN0
b3I8U3RyaW5nPj4mIGF2YWlsYWJsZUxvY2FsZXMpCitzdGF0aWMgdm9pZCBzY2FuVGVzdERpY3Rp
b25hcmllc0RpcmVjdG9yeUlmTmVjZXNzYXJ5KEhhc2hNYXA8QXRvbVN0cmluZywgVmVjdG9yPFN0
cmluZz4+JiBhdmFpbGFibGVMb2NhbGVzKQogewogICAgIC8vIEl0J3MgdW5mb3J0dW5hdGUgdGhh
dCB3ZSBuZWVkIHRvIGxvb2sgZm9yIHRoZSBkaWN0aW9uYXJpZXMgdGhpcyB3YXksIGJ1dAogICAg
IC8vIGxpYmh5cGhlbiBkb2Vzbid0IGhhdmUgdGhlIGNvbmNlcHQgb2YgaW5zdGFsbGVkIGRpY3Rp
b25hcmllcy4gSW5zdGVhZCwKQEAgLTEzMywxMCArMTMzLDEwIEBAIHN0YXRpYyB2b2lkIHNjYW5U
ZXN0RGljdGlvbmFyaWVzRGlyZWN0b3J5SWZOZWNlc3NhcnkoSGFzaE1hcDxBdG9taWNTdHJpbmcs
IFZlY3RvCiB9CiAjZW5kaWYKIAotc3RhdGljIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBWZWN0b3I8
U3RyaW5nPj4mIGF2YWlsYWJsZUxvY2FsZXMoKQorc3RhdGljIEhhc2hNYXA8QXRvbVN0cmluZywg
VmVjdG9yPFN0cmluZz4+JiBhdmFpbGFibGVMb2NhbGVzKCkKIHsKICAgICBzdGF0aWMgYm9vbCBz
Y2FubmVkTG9jYWxlcyA9IGZhbHNlOwotICAgIHN0YXRpYyBIYXNoTWFwPEF0b21pY1N0cmluZywg
VmVjdG9yPFN0cmluZz4+IGF2YWlsYWJsZUxvY2FsZXM7CisgICAgc3RhdGljIEhhc2hNYXA8QXRv
bVN0cmluZywgVmVjdG9yPFN0cmluZz4+IGF2YWlsYWJsZUxvY2FsZXM7CiAKICAgICBpZiAoIXNj
YW5uZWRMb2NhbGVzKSB7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgV1RGX0FSUkFZ
X0xFTkdUSChnRGljdGlvbmFyeURpcmVjdG9yaWVzKTsgaSsrKQpAQCAtMTUyLDEzICsxNTIsMTMg
QEAgc3RhdGljIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBWZWN0b3I8U3RyaW5nPj4mIGF2YWlsYWJs
ZUxvY2FsZXMoKQogICAgIHJldHVybiBhdmFpbGFibGVMb2NhbGVzOwogfQogCi1ib29sIGNhbkh5
cGhlbmF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZUlkZW50aWZpZXIpCitib29sIGNhbkh5
cGhlbmF0ZShjb25zdCBBdG9tU3RyaW5nJiBsb2NhbGVJZGVudGlmaWVyKQogewogICAgIGlmIChs
b2NhbGVJZGVudGlmaWVyLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYg
KGF2YWlsYWJsZUxvY2FsZXMoKS5jb250YWlucyhsb2NhbGVJZGVudGlmaWVyKSkKICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIGF2YWlsYWJsZUxvY2FsZXMoKS5jb250YWlucyhBdG9t
aWNTdHJpbmcobG9jYWxlSWRlbnRpZmllci5zdHJpbmcoKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2Fz
ZSgpKSk7CisgICAgcmV0dXJuIGF2YWlsYWJsZUxvY2FsZXMoKS5jb250YWlucyhBdG9tU3RyaW5n
KGxvY2FsZUlkZW50aWZpZXIuc3RyaW5nKCkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSkpOwog
fQogCiBjbGFzcyBIeXBoZW5hdGlvbkRpY3Rpb25hcnkgOiBwdWJsaWMgUmVmQ291bnRlZDxIeXBo
ZW5hdGlvbkRpY3Rpb25hcnk+IHsKQEAgLTIwMywxNiArMjAzLDE2IEBAIHByaXZhdGU6CiBuYW1l
c3BhY2UgV1RGIHsKIAogdGVtcGxhdGU8PgotY2xhc3MgVGlueUxSVUNhY2hlUG9saWN5PEF0b21p
Y1N0cmluZywgUmVmUHRyPFdlYkNvcmU6Okh5cGhlbmF0aW9uRGljdGlvbmFyeT4+CitjbGFzcyBU
aW55TFJVQ2FjaGVQb2xpY3k8QXRvbVN0cmluZywgUmVmUHRyPFdlYkNvcmU6Okh5cGhlbmF0aW9u
RGljdGlvbmFyeT4+CiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFRpbnlMUlVDYWNoZTxBdG9taWNT
dHJpbmcsIFJlZlB0cjxXZWJDb3JlOjpIeXBoZW5hdGlvbkRpY3Rpb25hcnk+LCAzMj4mIGNhY2hl
KCkKKyAgICBzdGF0aWMgVGlueUxSVUNhY2hlPEF0b21TdHJpbmcsIFJlZlB0cjxXZWJDb3JlOjpI
eXBoZW5hdGlvbkRpY3Rpb25hcnk+LCAzMj4mIGNhY2hlKCkKICAgICB7Ci0gICAgICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxUaW55TFJVQ2FjaGU8QXRvbWljU3RyaW5nLCBSZWZQdHI8V2ViQ29y
ZTo6SHlwaGVuYXRpb25EaWN0aW9uYXJ5PiwgMzI+PiBjYWNoZTsKKyAgICAgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFRpbnlMUlVDYWNoZTxBdG9tU3RyaW5nLCBSZWZQdHI8V2ViQ29yZTo6SHlw
aGVuYXRpb25EaWN0aW9uYXJ5PiwgMzI+PiBjYWNoZTsKICAgICAgICAgcmV0dXJuIGNhY2hlOwog
ICAgIH0KIAotICAgIHN0YXRpYyBib29sIGlzS2V5TnVsbChjb25zdCBBdG9taWNTdHJpbmcmIGxv
Y2FsZUlkZW50aWZpZXIpCisgICAgc3RhdGljIGJvb2wgaXNLZXlOdWxsKGNvbnN0IEF0b21TdHJp
bmcmIGxvY2FsZUlkZW50aWZpZXIpCiAgICAgewogICAgICAgICByZXR1cm4gbG9jYWxlSWRlbnRp
Zmllci5pc051bGwoKTsKICAgICB9CkBAIC0yMjIsNyArMjIyLDcgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gV2ViQ29yZTo6SHlwaGVuYXRpb25EaWN0aW9uYXJ5OjpjcmVhdGVOdWxsKCk7CiAg
ICAgfQogCi0gICAgc3RhdGljIFJlZlB0cjxXZWJDb3JlOjpIeXBoZW5hdGlvbkRpY3Rpb25hcnk+
IGNyZWF0ZVZhbHVlRm9yS2V5KGNvbnN0IEF0b21pY1N0cmluZyYgZGljdGlvbmFyeVBhdGgpCisg
ICAgc3RhdGljIFJlZlB0cjxXZWJDb3JlOjpIeXBoZW5hdGlvbkRpY3Rpb25hcnk+IGNyZWF0ZVZh
bHVlRm9yS2V5KGNvbnN0IEF0b21TdHJpbmcmIGRpY3Rpb25hcnlQYXRoKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIFdlYkNvcmU6Okh5cGhlbmF0aW9uRGljdGlvbmFyeTo6Y3JlYXRlKEZpbGVTeXN0
ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihkaWN0aW9uYXJ5UGF0aC5zdHJpbmcoKSkpOwog
ICAgIH0KQEAgLTI1MCw3ICsyNTAsNyBAQCBzdGF0aWMgdm9pZCBjb3VudExlYWRpbmdTcGFjZXMo
Y29uc3QgQ1N0cmluZyYgdXRmOFN0cmluZywgaW50MzJfdCYgcG9pbnRlck9mZnNldAogICAgIH0K
IH0KIAotc2l6ZV90IGxhc3RIeXBoZW5Mb2NhdGlvbihTdHJpbmdWaWV3IHN0cmluZywgc2l6ZV90
IGJlZm9yZUluZGV4LCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZUlkZW50aWZpZXIpCitzaXpl
X3QgbGFzdEh5cGhlbkxvY2F0aW9uKFN0cmluZ1ZpZXcgc3RyaW5nLCBzaXplX3QgYmVmb3JlSW5k
ZXgsIGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsZUlkZW50aWZpZXIpCiB7CiAgICAgLy8gbGliaHlw
aGVuIGFjY2VwdHMgc3RyaW5ncyBpbiBVVEYtOCBmb3JtYXQsIGJ1dCBXZWJDb3JlIGNhbiBvbmx5
IHByb3ZpZGUgU3RyaW5nVmlldwogICAgIC8vIHdoaWNoIHN0b3JlcyBlaXRoZXIgVVRGLTE2IG9y
IExhdGluMSBkYXRhLiBUaGlzIGlzIHVuZm9ydHVuYXRlIGZvciBwZXJmb3JtYW5jZQpAQCAtMjcw
LDE0ICsyNzAsMTQgQEAgc2l6ZV90IGxhc3RIeXBoZW5Mb2NhdGlvbihTdHJpbmdWaWV3IHN0cmlu
Zywgc2l6ZV90IGJlZm9yZUluZGV4LCBjb25zdCBBdG9taWNTdHIKICAgICBWZWN0b3I8Y2hhcj4g
aHlwaGVuQXJyYXkodXRmOFN0cmluZ0NvcHkubGVuZ3RoKCkgLSBsZWFkaW5nU3BhY2VCeXRlcyAr
IDUpOwogICAgIGNoYXIqIGh5cGhlbkFycmF5RGF0YSA9IGh5cGhlbkFycmF5LmRhdGEoKTsKIAot
ICAgIFN0cmluZyBsb3dlcmNhc2VMb2NhbGVJZGVudGlmaWVyID0gQXRvbWljU3RyaW5nKGxvY2Fs
ZUlkZW50aWZpZXIuc3RyaW5nKCkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSk7CisgICAgU3Ry
aW5nIGxvd2VyY2FzZUxvY2FsZUlkZW50aWZpZXIgPSBBdG9tU3RyaW5nKGxvY2FsZUlkZW50aWZp
ZXIuc3RyaW5nKCkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSk7CiAKICAgICAvLyBXZWIgY29u
dGVudCBtYXkgc3BlY2lmeSBzdHJpbmdzIGZvciBsb2NhbGVzIHdoaWNoIGRvIG5vdCBleGlzdCBv
ciB0aGF0IHdlIGRvIG5vdCBoYXZlLgogICAgIGlmICghYXZhaWxhYmxlTG9jYWxlcygpLmNvbnRh
aW5zKGxvd2VyY2FzZUxvY2FsZUlkZW50aWZpZXIpKQogICAgICAgICByZXR1cm4gMDsKIAogICAg
IGZvciAoY29uc3QgYXV0byYgZGljdGlvbmFyeVBhdGggOiBhdmFpbGFibGVMb2NhbGVzKCkuZ2V0
KGxvd2VyY2FzZUxvY2FsZUlkZW50aWZpZXIpKSB7Ci0gICAgICAgIFJlZlB0cjxIeXBoZW5hdGlv
bkRpY3Rpb25hcnk+IGRpY3Rpb25hcnkgPSBXVEY6OlRpbnlMUlVDYWNoZVBvbGljeTxBdG9taWNT
dHJpbmcsIFJlZlB0cjxIeXBoZW5hdGlvbkRpY3Rpb25hcnk+Pjo6Y2FjaGUoKS5nZXQoQXRvbWlj
U3RyaW5nKGRpY3Rpb25hcnlQYXRoKSk7CisgICAgICAgIFJlZlB0cjxIeXBoZW5hdGlvbkRpY3Rp
b25hcnk+IGRpY3Rpb25hcnkgPSBXVEY6OlRpbnlMUlVDYWNoZVBvbGljeTxBdG9tU3RyaW5nLCBS
ZWZQdHI8SHlwaGVuYXRpb25EaWN0aW9uYXJ5Pj46OmNhY2hlKCkuZ2V0KEF0b21TdHJpbmcoZGlj
dGlvbmFyeVBhdGgpKTsKIAogICAgICAgICBjaGFyKiogcmVwbGFjZW1lbnRzID0gbnVsbHB0cjsK
ICAgICAgICAgaW50KiBwb3NpdGlvbnMgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvTG9jYWxlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9tYWMvTG9jYWxlTWFjLm1tCmluZGV4IGVmNTUzN2FkNmY4MDczY2E0NmQ0NTNm
ZmE3ZTczMDk1ZTE0ZjMzOGUuLmE1MTdiZTM0MWY2YWM0YmU4ZTg5M2NmYWQ3YzIyODg0NWQ2YTgy
ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL0xvY2FsZU1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMubW0K
QEAgLTY1LDcgKzY1LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU0xvY2FsZT4gZGV0ZXJtaW5lTG9j
YWxlKGNvbnN0IFN0cmluZyYgbG9jYWxlKQogICAgICByZXR1cm4gYWRvcHROUyhbW05TTG9jYWxl
IGFsbG9jXSBpbml0V2l0aExvY2FsZUlkZW50aWZpZXI6bG9jYWxlXSk7CiB9CiAKLXN0ZDo6dW5p
cXVlX3B0cjxMb2NhbGU+IExvY2FsZTo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxl
KQorc3RkOjp1bmlxdWVfcHRyPExvY2FsZT4gTG9jYWxlOjpjcmVhdGUoY29uc3QgQXRvbVN0cmlu
ZyYgbG9jYWxlKQogewogICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExvY2FsZU1hYz4oZGV0
ZXJtaW5lTG9jYWxlKGxvY2FsZS5zdHJpbmcoKSkuZ2V0KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvd2luL0xvY2FsZVdpbi5jcHAKaW5kZXggYTYxYWE4YzUzNjgyYWZk
ZDJlNDEwMDYzNTdkNmRjZmY0MjBjMWFkYi4uNmExNjBkZWNjZmM5MjZhZWYzN2RlMjNlOTdmNjJl
OGY1YzY3OTA2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4v
TG9jYWxlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2Nh
bGVXaW4uY3BwCkBAIC02Miw3ICs2Miw3IEBAIHN0YXRpYyBMQ0lEIExDSURGcm9tTG9jYWxlSW50
ZXJuYWwoTENJRCB1c2VyRGVmYXVsdExDSUQsIGNvbnN0IFN0cmluZyYgdXNlckRlZmF1CiAgICAg
cmV0dXJuIExvY2FsZU5hbWVUb0xDSUQobG9jYWxlLndpZGVDaGFyYWN0ZXJzKCkuZGF0YSgpLCAw
KTsKIH0KIAotc3RhdGljIExDSUQgTENJREZyb21Mb2NhbGUoY29uc3QgQXRvbWljU3RyaW5nJiBs
b2NhbGUpCitzdGF0aWMgTENJRCBMQ0lERnJvbUxvY2FsZShjb25zdCBBdG9tU3RyaW5nJiBsb2Nh
bGUpCiB7CiAgICAgLy8gQWNjb3JkaW5nIHRvIE1TRE4sIDkgaXMgZW5vdWdoIGZvciBMT0NBTEVf
U0lTTzYzOUxBTkdOQU1FLgogICAgIGNvbnN0IHNpemVfdCBsYW5ndWFnZUNvZGVCdWZmZXJTaXpl
ID0gOTsKQEAgLTc2LDcgKzc2LDcgQEAgc3RhdGljIExDSUQgTENJREZyb21Mb2NhbGUoY29uc3Qg
QXRvbWljU3RyaW5nJiBsb2NhbGUpCiAgICAgcmV0dXJuIGxjaWQ7CiB9CiAKLXN0ZDo6dW5pcXVl
X3B0cjxMb2NhbGU+IExvY2FsZTo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlKQor
c3RkOjp1bmlxdWVfcHRyPExvY2FsZT4gTG9jYWxlOjpjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYg
bG9jYWxlKQogewogICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExvY2FsZVdpbj4oTENJREZy
b21Mb2NhbGUobG9jYWxlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vQlN0cmluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQlN0cmluZy5j
cHAKaW5kZXggMDI3Y2RkZDMyYTdkNTdhMzA4YjQyYjg4ODNkMmI1YjM5NDEwNjhhMy4uZGI4YTFh
MTIxMWE0MTM0MjVmNjExZjFlYmY3Yjc0MDI3YjE3MjlkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL0JTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9CU3RyaW5nLmNwcApAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSA8d2luZG93
cy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJp
bmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nVmlldy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJh
cy5oPgogCkBAIC03Nyw3ICs3Nyw3IEBAIEJTdHJpbmc6OkJTdHJpbmcoY29uc3QgVVJMJiB1cmwp
CiAgICAgICAgIG1fYnN0ciA9IFN5c0FsbG9jU3RyaW5nTGVuKHdjaGFyRnJvbShTdHJpbmdWaWV3
KHVybC5zdHJpbmcoKSkudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCkpLCB1cmwuc3RyaW5nKCkubGVu
Z3RoKCkpOwogfQogCi1CU3RyaW5nOjpCU3RyaW5nKGNvbnN0IEF0b21pY1N0cmluZyYgcykKK0JT
dHJpbmc6OkJTdHJpbmcoY29uc3QgQXRvbVN0cmluZyYgcykKIHsKICAgICBpZiAocy5pc051bGwo
KSkKICAgICAgICAgbV9ic3RyID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9CU3RyaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQlN0cmluZy5o
CmluZGV4IDE4NGI1NTFkNDhlOWMyMzFlYTAyYTc4NzU2ZmU5NmZlZDNlNTY2NjUuLjZjZjIzODc3
M2NhNDU0NjljYzljOTQ1YmNmMjRkZTIyNmJhY2RkMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9CU3RyaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL0JTdHJpbmcuaApAQCAtNDYsNyArNDYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIEJTdHJpbmcoY29uc3Qgd2NoYXJfdCopOwogICAgICAgICBCU3RyaW5nKGNvbnN0IHdjaGFy
X3QqLCBzaXplX3QgbGVuZ3RoKTsKICAgICAgICAgQlN0cmluZyhjb25zdCBTdHJpbmcmKTsKLSAg
ICAgICAgQlN0cmluZyhjb25zdCBBdG9taWNTdHJpbmcmKTsKKyAgICAgICAgQlN0cmluZyhjb25z
dCBBdG9tU3RyaW5nJik7CiAgICAgICAgIEJTdHJpbmcoY29uc3QgVVJMJik7CiAjaWYgVVNFKENG
KQogICAgICAgICBCU3RyaW5nKENGU3RyaW5nUmVmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5jcHAKaW5kZXggOGU3NGIwNzY5MzVhYTBk
Y2NkN2VhODM3YWNlNjdiM2NlN2NlMTU1YS4uODcxOGM2OTM1MjkyNmI5MTU1ZTgzY2NmZGJkNzk0
MTQ1NjAxMjcwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJj
aFBvcHVwTWVudVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJj
aFBvcHVwTWVudVdpbi5jcHAKQEAgLTIyLDcgKzIyLDcgQEAKICNpbmNsdWRlICJTZWFyY2hQb3B1
cE1lbnVXaW4uaCIKIAogI2luY2x1ZGUgIlNlYXJjaFBvcHVwTWVudURCLmgiCi0jaW5jbHVkZSA8
d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZy5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQxLDcgKzQxLDcgQEAgYm9vbCBTZWFyY2hQ
b3B1cE1lbnVXaW46OmVuYWJsZWQoKQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFNlYXJj
aFBvcHVwTWVudVdpbjo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZSwgY29uc3QgVmVjdG9yPFJlY2VudFNlYXJjaD4mIHNlYXJjaEl0ZW1zKQordm9pZCBTZWFyY2hQ
b3B1cE1lbnVXaW46OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBj
b25zdCBWZWN0b3I8UmVjZW50U2VhcmNoPiYgc2VhcmNoSXRlbXMpCiB7CiAgICAgaWYgKG5hbWUu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CkBAIC00OSw3ICs0OSw3IEBAIHZvaWQgU2VhcmNo
UG9wdXBNZW51V2luOjpzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
LCBjb25zdCBWZWN0CiAgICAgU2VhcmNoUG9wdXBNZW51REI6OnNpbmdsZXRvbigpLnNhdmVSZWNl
bnRTZWFyY2hlcyhuYW1lLCBzZWFyY2hJdGVtcyk7CiB9CiAKLXZvaWQgU2VhcmNoUG9wdXBNZW51
V2luOjpsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8
UmVjZW50U2VhcmNoPiYgc2VhcmNoSXRlbXMpCit2b2lkIFNlYXJjaFBvcHVwTWVudVdpbjo6bG9h
ZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIFZlY3RvcjxSZWNlbnRTZWFy
Y2g+JiBzZWFyY2hJdGVtcykKIHsKICAgICBpZiAobmFtZS5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1
cE1lbnVXaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVX
aW4uaAppbmRleCA5YTdhZTg4MjNjNWM0M2ZmOTQ2YTYxNTdhZmM1N2I1OWRjMTU0M2UwLi41YjMw
NzVlYzU2ZjdiYWY0NWZkYzE2ZWU0NTExZGZiNWQ4YjZhMjJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5oCkBAIC0zMSw4ICszMSw4IEBA
IHB1YmxpYzoKICAgICBTZWFyY2hQb3B1cE1lbnVXaW4oUG9wdXBNZW51Q2xpZW50Kik7CiAKICAg
ICB2aXJ0dWFsIFBvcHVwTWVudSogcG9wdXBNZW51KCk7Ci0gICAgdmlydHVhbCB2b2lkIHNhdmVS
ZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxSZWNl
bnRTZWFyY2g+Jik7Ci0gICAgdmlydHVhbCB2b2lkIGxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWUsIFZlY3RvcjxSZWNlbnRTZWFyY2g+Jik7CisgICAgdmlydHVhbCB2
b2lkIHNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0
b3I8UmVjZW50U2VhcmNoPiYpOworICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVjZW50U2VhcmNoZXMo
Y29uc3QgQXRvbVN0cmluZyYgbmFtZSwgVmVjdG9yPFJlY2VudFNlYXJjaD4mKTsKICAgICB2aXJ0
dWFsIGJvb2wgZW5hYmxlZCgpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGx1Z2lucy9ET01NaW1lVHlwZUFycmF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMv
RE9NTWltZVR5cGVBcnJheS5jcHAKaW5kZXggOTg1MDNjMzhiZTYzNWMyMTdhYTRlNWUwMTg5ZjE5
OWJlMGU3OTNmOC4uZWI3OWEzNjk2Y2NkZmQ1ODk1OTAyM2JiOWNmMjc0Mzk5MmI3MDU1YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ET01NaW1lVHlwZUFycmF5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RPTU1pbWVUeXBlQXJyYXkuY3BwCkBAIC0yNSw3ICsy
NSw3IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBsdWdpbkRhdGEuaCIKICNpbmNs
dWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0
cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkBAIC02NSw3ICs2NSw3IEBAIFJlZlB0cjxET01NaW1lVHlwZT4gRE9NTWltZVR5
cGVBcnJheTo6aXRlbSh1bnNpZ25lZCBpbmRleCkKICAgICByZXR1cm4gRE9NTWltZVR5cGU6OmNy
ZWF0ZShkYXRhLCBmcmFtZSgpLCBpbmRleCk7CiB9CiAKLVJlZlB0cjxET01NaW1lVHlwZT4gRE9N
TWltZVR5cGVBcnJheTo6bmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgcHJvcGVydHlOYW1l
KQorUmVmUHRyPERPTU1pbWVUeXBlPiBET01NaW1lVHlwZUFycmF5OjpuYW1lZEl0ZW0oY29uc3Qg
QXRvbVN0cmluZyYgcHJvcGVydHlOYW1lKQogewogICAgIFBsdWdpbkRhdGEqIGRhdGEgPSBnZXRQ
bHVnaW5EYXRhKCk7CiAgICAgaWYgKCFkYXRhKQpAQCAtODEsNyArODEsNyBAQCBSZWZQdHI8RE9N
TWltZVR5cGU+IERPTU1pbWVUeXBlQXJyYXk6Om5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcm
IHByb3BlcnR5TmFtZQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1WZWN0b3I8QXRvbWljU3Ry
aW5nPiBET01NaW1lVHlwZUFycmF5OjpzdXBwb3J0ZWRQcm9wZXJ0eU5hbWVzKCkKK1ZlY3RvcjxB
dG9tU3RyaW5nPiBET01NaW1lVHlwZUFycmF5OjpzdXBwb3J0ZWRQcm9wZXJ0eU5hbWVzKCkKIHsK
ICAgICBQbHVnaW5EYXRhKiBkYXRhID0gZ2V0UGx1Z2luRGF0YSgpOwogICAgIGlmICghZGF0YSkK
QEAgLTkxLDcgKzkxLDcgQEAgVmVjdG9yPEF0b21pY1N0cmluZz4gRE9NTWltZVR5cGVBcnJheTo6
c3VwcG9ydGVkUHJvcGVydHlOYW1lcygpCiAgICAgVmVjdG9yPHNpemVfdD4gbWltZVBsdWdpbklu
ZGljZXM7CiAgICAgZGF0YS0+Z2V0V2ViVmlzaWJsZU1pbWVzQW5kUGx1Z2luSW5kaWNlcyhtaW1l
cywgbWltZVBsdWdpbkluZGljZXMpOwogCi0gICAgVmVjdG9yPEF0b21pY1N0cmluZz4gcmVzdWx0
OworICAgIFZlY3RvcjxBdG9tU3RyaW5nPiByZXN1bHQ7CiAgICAgcmVzdWx0LnJlc2VydmVJbml0
aWFsQ2FwYWNpdHkobWltZXMuc2l6ZSgpKTsKICAgICBmb3IgKGF1dG8mIGluZm8gOiBtaW1lcykK
ICAgICAgICAgcmVzdWx0LnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKGluZm8udHlwZSkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ET01NaW1lVHlwZUFycmF5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbHVnaW5zL0RPTU1pbWVUeXBlQXJyYXkuaAppbmRleCA1ZTFkNDFlMmU2YWE1
ZmU3YWUyNDk3YTNlZmY3N2NkNjA2YmUxMGMwLi5hNzg2ZDYzNGM2M2NkNjJlOTE5ZGI1MjM4Y2Vj
ZmI2MzI0OTZkNGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RPTU1pbWVU
eXBlQXJyYXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RPTU1pbWVUeXBlQXJyYXku
aApAQCAtMzcsOCArMzcsOCBAQCBwdWJsaWM6CiAKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25z
dDsKICAgICBSZWZQdHI8RE9NTWltZVR5cGU+IGl0ZW0odW5zaWduZWQgaW5kZXgpOwotICAgIFJl
ZlB0cjxET01NaW1lVHlwZT4gbmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgcHJvcGVydHlO
YW1lKTsKLSAgICBWZWN0b3I8QXRvbWljU3RyaW5nPiBzdXBwb3J0ZWRQcm9wZXJ0eU5hbWVzKCk7
CisgICAgUmVmUHRyPERPTU1pbWVUeXBlPiBuYW1lZEl0ZW0oY29uc3QgQXRvbVN0cmluZyYgcHJv
cGVydHlOYW1lKTsKKyAgICBWZWN0b3I8QXRvbVN0cmluZz4gc3VwcG9ydGVkUHJvcGVydHlOYW1l
cygpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IERPTU1pbWVUeXBlQXJyYXkoRE9NV2luZG93
Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RPTVBsdWdpbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RPTVBsdWdpbi5jcHAKaW5kZXggYTQ1Y2FmODZmNzNiNzMy
NTllNDRjM2M2MzhiYTgzMjk4YTBmYzZjMy4uOTQ0ODgwNmI4OTJkZWY5NGQxZWJjYjBmMTE3ZjQ2
YzExMGZlMmYzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ET01QbHVnaW4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvRE9NUGx1Z2luLmNwcApAQCAtMjIsNyAr
MjIsNyBAQAogI2luY2x1ZGUgIlBsdWdpbkRhdGEuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2lu
Y2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQXRvbWlj
U3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZy5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKQEAgLTc1LDcgKzc1LDcgQEAgUmVmUHRyPERPTU1pbWVUeXBlPiBET01QbHVn
aW46Oml0ZW0odW5zaWduZWQgaW5kZXgpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVJlZlB0
cjxET01NaW1lVHlwZT4gRE9NUGx1Z2luOjpuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBw
cm9wZXJ0eU5hbWUpCitSZWZQdHI8RE9NTWltZVR5cGU+IERPTVBsdWdpbjo6bmFtZWRJdGVtKGNv
bnN0IEF0b21TdHJpbmcmIHByb3BlcnR5TmFtZSkKIHsKICAgICBpZiAoIW1fZnJhbWUgfHwgIW1f
ZnJhbWUtPnBhZ2UoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC04OSwxMCArODksMTAg
QEAgUmVmUHRyPERPTU1pbWVUeXBlPiBET01QbHVnaW46Om5hbWVkSXRlbShjb25zdCBBdG9taWNT
dHJpbmcmIHByb3BlcnR5TmFtZSkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotVmVjdG9yPEF0
b21pY1N0cmluZz4gRE9NUGx1Z2luOjpzdXBwb3J0ZWRQcm9wZXJ0eU5hbWVzKCkKK1ZlY3RvcjxB
dG9tU3RyaW5nPiBET01QbHVnaW46OnN1cHBvcnRlZFByb3BlcnR5TmFtZXMoKQogewogICAgIC8v
IEZJWE1FOiBTaG91bGQgYmUgaW1wbGVtZW50ZWQuCi0gICAgcmV0dXJuIFZlY3RvcjxBdG9taWNT
dHJpbmc+KCk7CisgICAgcmV0dXJuIFZlY3RvcjxBdG9tU3RyaW5nPigpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RPTVBs
dWdpbi5oIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ET01QbHVnaW4uaAppbmRleCAzNTcwNmM4
ZDU5Y2IyNDIwMWNjNThkOTYzNWQwZmY4ZGQ4YmZlYTMyLi4xNjU0MzdkZDhiYzU5Mzg2ZDkxNDA3
YjJkYTA3NGVjZmViYzVjNDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RP
TVBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvRE9NUGx1Z2luLmgKQEAgLTQz
LDggKzQzLDggQEAgcHVibGljOgogICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0OwogCiAgICAg
UmVmUHRyPERPTU1pbWVUeXBlPiBpdGVtKHVuc2lnbmVkIGluZGV4KTsKLSAgICBSZWZQdHI8RE9N
TWltZVR5cGU+IG5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIHByb3BlcnR5TmFtZSk7Ci0g
ICAgVmVjdG9yPEF0b21pY1N0cmluZz4gc3VwcG9ydGVkUHJvcGVydHlOYW1lcygpOworICAgIFJl
ZlB0cjxET01NaW1lVHlwZT4gbmFtZWRJdGVtKGNvbnN0IEF0b21TdHJpbmcmIHByb3BlcnR5TmFt
ZSk7CisgICAgVmVjdG9yPEF0b21TdHJpbmc+IHN1cHBvcnRlZFByb3BlcnR5TmFtZXMoKTsKIAog
cHJpdmF0ZToKICAgICBET01QbHVnaW4oUGx1Z2luRGF0YSosIEZyYW1lKiwgUGx1Z2luSW5mbyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RPTVBsdWdpbkFycmF5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvRE9NUGx1Z2luQXJyYXkuY3BwCmluZGV4IDBkZmQzN2Fk
M2I4ZjMwYTg3NTA0MjEyNTQ3OGFjZGE1Y2UyNWU5YzEuLjQwMzYxZTIxOTQwY2UxYzY1ZjNjYWIz
MTNmNWY2NjUzZjE1YTA0OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvRE9N
UGx1Z2luQXJyYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvRE9NUGx1Z2luQXJy
YXkuY3BwCkBAIC0yNSw3ICsyNSw3IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBs
dWdpbkRhdGEuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgotI2luY2x1ZGUg
PHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01OSw3ICs1OSw3IEBAIFJlZlB0cjxET01Q
bHVnaW4+IERPTVBsdWdpbkFycmF5OjppdGVtKHVuc2lnbmVkIGluZGV4KQogICAgIHJldHVybiBE
T01QbHVnaW46OmNyZWF0ZShkYXRhLCBmcmFtZSgpLCBwbHVnaW5zW2luZGV4XSk7CiB9CiAKLVJl
ZlB0cjxET01QbHVnaW4+IERPTVBsdWdpbkFycmF5OjpuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3Ry
aW5nJiBwcm9wZXJ0eU5hbWUpCitSZWZQdHI8RE9NUGx1Z2luPiBET01QbHVnaW5BcnJheTo6bmFt
ZWRJdGVtKGNvbnN0IEF0b21TdHJpbmcmIHByb3BlcnR5TmFtZSkKIHsKICAgICBQbHVnaW5EYXRh
KiBkYXRhID0gcGx1Z2luRGF0YSgpOwogICAgIGlmICghZGF0YSkKQEAgLTcyLDcgKzcyLDcgQEAg
UmVmUHRyPERPTVBsdWdpbj4gRE9NUGx1Z2luQXJyYXk6Om5hbWVkSXRlbShjb25zdCBBdG9taWNT
dHJpbmcmIHByb3BlcnR5TmFtZSkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotVmVjdG9yPEF0
b21pY1N0cmluZz4gRE9NUGx1Z2luQXJyYXk6OnN1cHBvcnRlZFByb3BlcnR5TmFtZXMoKQorVmVj
dG9yPEF0b21TdHJpbmc+IERPTVBsdWdpbkFycmF5OjpzdXBwb3J0ZWRQcm9wZXJ0eU5hbWVzKCkK
IHsKICAgICBQbHVnaW5EYXRhKiBkYXRhID0gcGx1Z2luRGF0YSgpOwogICAgIGlmICghZGF0YSkK
QEAgLTgwLDcgKzgwLDcgQEAgVmVjdG9yPEF0b21pY1N0cmluZz4gRE9NUGx1Z2luQXJyYXk6OnN1
cHBvcnRlZFByb3BlcnR5TmFtZXMoKQogCiAgICAgY29uc3QgYXV0byYgcGx1Z2lucyA9IGRhdGEt
PnB1YmxpY2x5VmlzaWJsZVBsdWdpbnMoKTsKIAotICAgIFZlY3RvcjxBdG9taWNTdHJpbmc+IHJl
c3VsdDsKKyAgICBWZWN0b3I8QXRvbVN0cmluZz4gcmVzdWx0OwogICAgIHJlc3VsdC5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KHBsdWdpbnMuc2l6ZSgpKTsKICAgICBmb3IgKGF1dG8mIHBsdWdpbiA6
IHBsdWdpbnMpCiAgICAgICAgIHJlc3VsdC51bmNoZWNrZWRBcHBlbmQocGx1Z2luLm5hbWUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ET01QbHVnaW5BcnJheS5oIGIvU291
cmNlL1dlYkNvcmUvcGx1Z2lucy9ET01QbHVnaW5BcnJheS5oCmluZGV4IGQyYzdmYmRhNDdmOWQ2
YjU2MDE1MzMwZDIyYjU5NGI4ZTQ4MTZlNTkuLjhjYjFlMGE0NGViY2ZmZGM0YTQyYWM3MmVkMDMz
OGM2NjU1YmNjMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvRE9NUGx1Z2lu
QXJyYXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RPTVBsdWdpbkFycmF5LmgKQEAg
LTM3LDggKzM3LDggQEAgcHVibGljOgogCiAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7CiAg
ICAgUmVmUHRyPERPTVBsdWdpbj4gaXRlbSh1bnNpZ25lZCBpbmRleCk7Ci0gICAgUmVmUHRyPERP
TVBsdWdpbj4gbmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgcHJvcGVydHlOYW1lKTsKLSAg
ICBWZWN0b3I8QXRvbWljU3RyaW5nPiBzdXBwb3J0ZWRQcm9wZXJ0eU5hbWVzKCk7CisgICAgUmVm
UHRyPERPTVBsdWdpbj4gbmFtZWRJdGVtKGNvbnN0IEF0b21TdHJpbmcmIHByb3BlcnR5TmFtZSk7
CisgICAgVmVjdG9yPEF0b21TdHJpbmc+IHN1cHBvcnRlZFByb3BlcnR5TmFtZXMoKTsKIAogICAg
IHZvaWQgcmVmcmVzaChib29sIHJlbG9hZFBhZ2VzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0NvdW50ZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9Db3VudGVyTm9kZS5jcHAKaW5kZXggZGMwNzI2YTA3NjhiYTkyZjU5MWRhNWFkZWEyMWFkYWQz
M2ZmZjRmNC4uMjUwZGE4Nzc0YTU2NWYxNWU4YWQ4OTNhZjEwMWZlMTBhNDkxOTgwYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NvdW50ZXJOb2RlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvQ291bnRlck5vZGUuY3BwCkBAIC0yMTEsNyArMjExLDcgQEAg
dm9pZCBDb3VudGVyTm9kZTo6cmVjb3VudCgpCiAgICAgfQogfQogCi12b2lkIENvdW50ZXJOb2Rl
OjppbnNlcnRBZnRlcihDb3VudGVyTm9kZSYgbmV3Q2hpbGQsIENvdW50ZXJOb2RlKiBiZWZvcmVD
aGlsZCwgY29uc3QgQXRvbWljU3RyaW5nJiBpZGVudGlmaWVyKQordm9pZCBDb3VudGVyTm9kZTo6
aW5zZXJ0QWZ0ZXIoQ291bnRlck5vZGUmIG5ld0NoaWxkLCBDb3VudGVyTm9kZSogYmVmb3JlQ2hp
bGQsIGNvbnN0IEF0b21TdHJpbmcmIGlkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKCFuZXdDaGls
ZC5tX3BhcmVudCk7CiAgICAgQVNTRVJUKCFuZXdDaGlsZC5tX3ByZXZpb3VzU2libGluZyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ291bnRlck5vZGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9Db3VudGVyTm9kZS5oCmluZGV4IDI1NzVkZGE0ZTRiZDAyOTgx
OTVjNjg3ZWU1YmMzZWQxNjVjN2Y3ZWQuLmZlN2ViMjA3YTk3ZmZiZDdmNzQ4MTJhMDY2MzQ5YmZh
N2VkZDBhYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Db3VudGVyTm9k
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Db3VudGVyTm9kZS5oCkBAIC02Myw3
ICs2Myw3IEBAIHB1YmxpYzoKICAgICBDb3VudGVyTm9kZSogbmV4dEluUHJlT3JkZXIoY29uc3Qg
Q291bnRlck5vZGUqIHN0YXlXaXRoaW4gPSBudWxscHRyKSBjb25zdDsKICAgICBDb3VudGVyTm9k
ZSogbmV4dEluUHJlT3JkZXJBZnRlckNoaWxkcmVuKGNvbnN0IENvdW50ZXJOb2RlKiBzdGF5V2l0
aGluID0gbnVsbHB0cikgY29uc3Q7CiAKLSAgICB2b2lkIGluc2VydEFmdGVyKENvdW50ZXJOb2Rl
JiBuZXdDaGlsZCwgQ291bnRlck5vZGUqIGJlZm9yZUNoaWxkLCBjb25zdCBBdG9taWNTdHJpbmcm
IGlkZW50aWZpZXIpOworICAgIHZvaWQgaW5zZXJ0QWZ0ZXIoQ291bnRlck5vZGUmIG5ld0NoaWxk
LCBDb3VudGVyTm9kZSogYmVmb3JlQ2hpbGQsIGNvbnN0IEF0b21TdHJpbmcmIGlkZW50aWZpZXIp
OwogICAgIC8vIGlkZW50aWZpZXIgbXVzdCBtYXRjaCB0aGUgaWRlbnRpZmllciBvZiB0aGlzIGNv
dW50ZXIuCiAgICAgdm9pZCByZW1vdmVDaGlsZChDb3VudGVyTm9kZSYpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRWxsaXBzaXNCb3guY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0VsbGlwc2lzQm94LmNwcAppbmRleCAzNTcyOGQ4NzBjZGQxYzFlZjFlYTlh
YjY4OWU0Y2QwM2YyNTMyZjE4Li4yMjc0ZTdiNGJmYTZmMTFlZWU3NGU0M2U1NGFkMDI1YWE3YmYx
YjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRWxsaXBzaXNCb3guY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FbGxpcHNpc0JveC5jcHAKQEAgLTM0LDcg
KzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lN
UEwoRWxsaXBzaXNCb3gpOwogCi1FbGxpcHNpc0JveDo6RWxsaXBzaXNCb3goUmVuZGVyQmxvY2tG
bG93JiByZW5kZXJlciwgY29uc3QgQXRvbWljU3RyaW5nJiBlbGxpcHNpc1N0ciwgSW5saW5lRmxv
d0JveCogcGFyZW50LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGludCB5LCBib29sIGZpcnN0TGlu
ZSwgYm9vbCBpc0hvcml6b250YWwsIElubGluZUJveCogbWFya3VwQm94KQorRWxsaXBzaXNCb3g6
OkVsbGlwc2lzQm94KFJlbmRlckJsb2NrRmxvdyYgcmVuZGVyZXIsIGNvbnN0IEF0b21TdHJpbmcm
IGVsbGlwc2lzU3RyLCBJbmxpbmVGbG93Qm94KiBwYXJlbnQsIGludCB3aWR0aCwgaW50IGhlaWdo
dCwgaW50IHksIGJvb2wgZmlyc3RMaW5lLCBib29sIGlzSG9yaXpvbnRhbCwgSW5saW5lQm94KiBt
YXJrdXBCb3gpCiAgICAgOiBJbmxpbmVFbGVtZW50Qm94KHJlbmRlcmVyLCBGbG9hdFBvaW50KDAs
IHkpLCB3aWR0aCwgZmlyc3RMaW5lLCB0cnVlLCBmYWxzZSwgZmFsc2UsIGlzSG9yaXpvbnRhbCwg
MCwgMCwgcGFyZW50KQogICAgICwgbV9zaG91bGRQYWludE1hcmt1cEJveChtYXJrdXBCb3gpCiAg
ICAgLCBtX2hlaWdodChoZWlnaHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvRWxsaXBzaXNCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FbGxpcHNpc0JveC5o
CmluZGV4IGViZTE5NDE0NDFhOWYzZjU5YjlhNzVlNDE0YjU0M2YwMDc0MDc1MTQuLjNmOThiN2Q4
N2ZlMjJkNTI5MzI4NzczMGM4NmJjMjI4OGNhNDA2YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9FbGxpcHNpc0JveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9FbGxpcHNpc0JveC5oCkBAIC0zMCw3ICszMCw3IEBAIGNsYXNzIEhpdFRlc3RSZXN1bHQ7CiBj
bGFzcyBFbGxpcHNpc0JveCBmaW5hbCA6IHB1YmxpYyBJbmxpbmVFbGVtZW50Qm94IHsKICAgICBX
VEZfTUFLRV9JU09fQUxMT0NBVEVEKEVsbGlwc2lzQm94KTsKIHB1YmxpYzoKLSAgICBFbGxpcHNp
c0JveChSZW5kZXJCbG9ja0Zsb3cmLCBjb25zdCBBdG9taWNTdHJpbmcmIGVsbGlwc2lzU3RyLCBJ
bmxpbmVGbG93Qm94KiBwYXJlbnQsIGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IHksIGJvb2wg
Zmlyc3RMaW5lLCBib29sIGlzSG9yaXpvbnRhbCwgSW5saW5lQm94KiBtYXJrdXBCb3gpOworICAg
IEVsbGlwc2lzQm94KFJlbmRlckJsb2NrRmxvdyYsIGNvbnN0IEF0b21TdHJpbmcmIGVsbGlwc2lz
U3RyLCBJbmxpbmVGbG93Qm94KiBwYXJlbnQsIGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IHks
IGJvb2wgZmlyc3RMaW5lLCBib29sIGlzSG9yaXpvbnRhbCwgSW5saW5lQm94KiBtYXJrdXBCb3gp
OwogICAgIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmLCBMYXlvdXRV
bml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRvbSkgb3ZlcnJpZGU7CiAgICAgYm9vbCBu
b2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBI
aXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBh
Y2N1bXVsYXRlZE9mZnNldCwgTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVCb3R0
b20sIEhpdFRlc3RBY3Rpb24pIGZpbmFsOwogICAgIHZvaWQgc2V0U2VsZWN0aW9uU3RhdGUoUmVu
ZGVyT2JqZWN0OjpTZWxlY3Rpb25TdGF0ZSBzKSB7IG1fc2VsZWN0aW9uU3RhdGUgPSBzOyB9CkBA
IC00OCw3ICs0OCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Nob3VsZFBhaW50TWFya3VwQm94
OwogICAgIFJlbmRlck9iamVjdDo6U2VsZWN0aW9uU3RhdGUgbV9zZWxlY3Rpb25TdGF0ZSB7IFJl
bmRlck9iamVjdDo6U2VsZWN0aW9uTm9uZSB9OwogICAgIGludCBtX2hlaWdodDsKLSAgICBBdG9t
aWNTdHJpbmcgbV9zdHI7CisgICAgQXRvbVN0cmluZyBtX3N0cjsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0
UmVzdWx0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcApp
bmRleCBiODIxOGNhZGUwOWRhMjU2N2I5N2NjNjVlMWM0NzAwM2RkZjI3NWIxLi43M2IzNjU0NzY3
MTQwYTAzNzBlNGQ1Njk1NmU1NGYyNjc0YjU4YjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0hpdFRlc3RSZXN1bHQuY3BwCkBAIC0zNDksNyArMzQ5LDcgQEAgVVJMIEhpdFRlc3RSZXN1
bHQ6OmFic29sdXRlSW1hZ2VVUkwoKSBjb25zdAogICAgIGlmICghKG1faW5uZXJOb25TaGFyZWRO
b2RlLT5yZW5kZXJlcigpICYmIG1faW5uZXJOb25TaGFyZWROb2RlLT5yZW5kZXJlcigpLT5pc0lt
YWdlKCkpKQogICAgICAgICByZXR1cm4gVVJMKCk7CiAKLSAgICBBdG9taWNTdHJpbmcgdXJsU3Ry
aW5nOworICAgIEF0b21TdHJpbmcgdXJsU3RyaW5nOwogICAgIGlmIChpczxIVE1MRW1iZWRFbGVt
ZW50PigqbV9pbm5lck5vblNoYXJlZE5vZGUpCiAgICAgICAgIHx8IGlzPEhUTUxJbWFnZUVsZW1l
bnQ+KCptX2lubmVyTm9uU2hhcmVkTm9kZSkKICAgICAgICAgfHwgaXM8SFRNTElucHV0RWxlbWVu
dD4oKm1faW5uZXJOb25TaGFyZWROb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0lubGluZVRleHRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGlu
ZVRleHRCb3guY3BwCmluZGV4IDgzNTY2YWVlZGYyZDExZGVlYWVhM2YyOWQ2NmZjYzQ3NmM1MDQ3
MGQuLjVmNWJkNjI4MDJkMTU4MGYwMDVmZjZiZTAyZTAxY2VlYzcxY2NjNTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKQEAgLTEwMzksNyArMTAzOSw3IEBA
IHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnRNYXJrZWRUZXh0Rm9yZWdyb3VuZChQYWludEluZm8m
IHBhaW50SW5mbywgY29uc3QgRmxvYXRSCiAKICAgICBmbG9hdCBlbXBoYXNpc01hcmtPZmZzZXQg
PSAwOwogICAgIE9wdGlvbmFsPGJvb2w+IG1hcmtFeGlzdHNBbmRJc0Fib3ZlID0gZW1waGFzaXNN
YXJrRXhpc3RzQW5kSXNBYm92ZShsaW5lU3R5bGUpOwotICAgIGNvbnN0IEF0b21pY1N0cmluZyYg
ZW1waGFzaXNNYXJrID0gbWFya0V4aXN0c0FuZElzQWJvdmUgPyBsaW5lU3R5bGUudGV4dEVtcGhh
c2lzTWFya1N0cmluZygpIDogbnVsbEF0b20oKTsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBlbXBo
YXNpc01hcmsgPSBtYXJrRXhpc3RzQW5kSXNBYm92ZSA/IGxpbmVTdHlsZS50ZXh0RW1waGFzaXNN
YXJrU3RyaW5nKCkgOiBudWxsQXRvbSgpOwogICAgIGlmICghZW1waGFzaXNNYXJrLmlzRW1wdHko
KSkKICAgICAgICAgZW1waGFzaXNNYXJrT2Zmc2V0ID0gKm1hcmtFeGlzdHNBbmRJc0Fib3ZlID8g
LWZvbnQuZm9udE1ldHJpY3MoKS5hc2NlbnQoKSAtIGZvbnQuZW1waGFzaXNNYXJrRGVzY2VudChl
bXBoYXNpc01hcmspIDogZm9udC5mb250TWV0cmljcygpLmRlc2NlbnQoKSArIGZvbnQuZW1waGFz
aXNNYXJrQXNjZW50KGVtcGhhc2lzTWFyayk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suY3BwCmluZGV4IDE0YTE2ZTk5ZDhjMjM2NTA2NzU0MzJiZjEyZmQ0NzRjNDRjMWIx
YWQuLmExNDNlZDA0Nzc0ZDBjOTg5ODM2NGI3MGI0MWE5NWY3NDhiNjhiMTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAtMzEyOSw5ICszMTI5LDkgQEAgVGV4
dFJ1biBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihjb25zdCBTdHJpbmcmIHN0cmluZywg
Y29uc3QgUmVuZGVyU3R5bGUmIHMKICAgICByZXR1cm4gY29uc3RydWN0VGV4dFJ1bihTdHJpbmdW
aWV3KHN0cmluZyksIHN0eWxlLCBleHBhbnNpb24sIGZsYWdzKTsKIH0KIAotVGV4dFJ1biBSZW5k
ZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihjb25zdCBBdG9taWNTdHJpbmcmIGF0b21pY1N0cmlu
ZywgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBFeHBhbnNpb25CZWhhdmlvciBleHBhbnNpb24s
IFRleHRSdW5GbGFncyBmbGFncykKK1RleHRSdW4gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRS
dW4oY29uc3QgQXRvbVN0cmluZyYgYXRvbVN0cmluZywgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxl
LCBFeHBhbnNpb25CZWhhdmlvciBleHBhbnNpb24sIFRleHRSdW5GbGFncyBmbGFncykKIHsKLSAg
ICByZXR1cm4gY29uc3RydWN0VGV4dFJ1bihTdHJpbmdWaWV3KGF0b21pY1N0cmluZyksIHN0eWxl
LCBleHBhbnNpb24sIGZsYWdzKTsKKyAgICByZXR1cm4gY29uc3RydWN0VGV4dFJ1bihTdHJpbmdW
aWV3KGF0b21TdHJpbmcpLCBzdHlsZSwgZXhwYW5zaW9uLCBmbGFncyk7CiB9CiAKIFRleHRSdW4g
UmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oY29uc3QgUmVuZGVyVGV4dCYgdGV4dCwgY29u
c3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBFeHBhbnNpb25CZWhhdmlvciBleHBhbnNpb24pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCmluZGV4IGZkNzRhZjE3ODI0ZGIzZjdmOWMy
NDBmMmVkNjRhN2RkMzUyZjdkMzkuLjAxZmZjOGQwZGViMGYyZWIzZmYyOWQ1ZjA1MDU3ZTdmNDhk
OGEzNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCkBAIC0yMDEsNyAr
MjAxLDcgQEAgcHVibGljOgogICAgICAgICBFeHBhbnNpb25CZWhhdmlvciA9IERlZmF1bHRFeHBh
bnNpb24sIFRleHRSdW5GbGFncyA9IERlZmF1bHRUZXh0UnVuRmxhZ3MpOwogICAgIHN0YXRpYyBU
ZXh0UnVuIGNvbnN0cnVjdFRleHRSdW4oY29uc3QgU3RyaW5nJiwgY29uc3QgUmVuZGVyU3R5bGUm
LAogICAgICAgICBFeHBhbnNpb25CZWhhdmlvciA9IERlZmF1bHRFeHBhbnNpb24sIFRleHRSdW5G
bGFncyA9IERlZmF1bHRUZXh0UnVuRmxhZ3MpOwotICAgIHN0YXRpYyBUZXh0UnVuIGNvbnN0cnVj
dFRleHRSdW4oY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgUmVuZGVyU3R5bGUmLAorICAgIHN0
YXRpYyBUZXh0UnVuIGNvbnN0cnVjdFRleHRSdW4oY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFJl
bmRlclN0eWxlJiwKICAgICAgICAgRXhwYW5zaW9uQmVoYXZpb3IgPSBEZWZhdWx0RXhwYW5zaW9u
LCBUZXh0UnVuRmxhZ3MgPSBEZWZhdWx0VGV4dFJ1bkZsYWdzKTsKICAgICBzdGF0aWMgVGV4dFJ1
biBjb25zdHJ1Y3RUZXh0UnVuKGNvbnN0IFJlbmRlclRleHQmLCBjb25zdCBSZW5kZXJTdHlsZSYs
CiAgICAgICAgIEV4cGFuc2lvbkJlaGF2aW9yID0gRGVmYXVsdEV4cGFuc2lvbik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCmluZGV4
IDYxMmI1YTViNzI4N2UwYWMyOWFhZWM0MjQ1NDk1YTJkZjAyOGRmOWMuLmY5NDcyNWE2NTUxMGEx
MzgwNmZlZmRjOGRjMWUyYjMzYjY0MWE2NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCkBAIC0yMTI3LDcgKzIxMjcsNyBAQCB2
b2lkIFJlbmRlckJsb2NrRmxvdzo6Y2hlY2tMaW5lc0ZvclRleHRPdmVyZmxvdygpCiAgICAgLy8g
RGV0ZXJtaW5lIHRoZSB3aWR0aCBvZiB0aGUgZWxsaXBzaXMgdXNpbmcgdGhlIGN1cnJlbnQgZm9u
dC4KICAgICAvLyBGSVhNRTogQ1NTMyBzYXlzIHRoaXMgaXMgY29uZmlndXJhYmxlLCBhbHNvIG5l
ZWQgdG8gdXNlIDB4MDAyRSAoRlVMTCBTVE9QKSBpZiBob3Jpem9udGFsIGVsbGlwc2lzIGlzICJu
b3QgcmVuZGVyYWJsZSIKICAgICBjb25zdCBGb250Q2FzY2FkZSYgZm9udCA9IHN0eWxlKCkuZm9u
dENhc2NhZGUoKTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBlbGxp
cHNpc1N0cigmaG9yaXpvbnRhbEVsbGlwc2lzLCAxKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8QXRvbVN0cmluZz4gZWxsaXBzaXNTdHIoJmhvcml6b250YWxFbGxpcHNpcywgMSk7CiAgICAg
Y29uc3QgRm9udENhc2NhZGUmIGZpcnN0TGluZUZvbnQgPSBmaXJzdExpbmVTdHlsZSgpLmZvbnRD
YXNjYWRlKCk7CiAgICAgZmxvYXQgZmlyc3RMaW5lRWxsaXBzaXNXaWR0aCA9IGZpcnN0TGluZUZv
bnQud2lkdGgoY29uc3RydWN0VGV4dFJ1bigmaG9yaXpvbnRhbEVsbGlwc2lzLCAxLCBmaXJzdExp
bmVTdHlsZSgpKSk7CiAgICAgZmxvYXQgZWxsaXBzaXNXaWR0aCA9IChmb250ID09IGZpcnN0TGlu
ZUZvbnQpID8gZmlyc3RMaW5lRWxsaXBzaXNXaWR0aCA6IGZvbnQud2lkdGgoY29uc3RydWN0VGV4
dFJ1bigmaG9yaXpvbnRhbEVsbGlwc2lzLCAxLCBzdHlsZSgpKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAKaW5kZXggZTVjZGU0OTAwNjUyOWEzYWE3YzgzODhj
YWNjNzJjZGY2NTMyYzA3Zi4uMjIxMDQ0MzRlNDVkNmM5ODQ3NmZmZDI5YWI1NTBiZDYyYWM0MDhm
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcApAQCAtNDYs
MTAgKzQ2LDEwIEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIFdURl9NQUtFX0lTT19B
TExPQ0FURURfSU1QTChSZW5kZXJDb3VudGVyKTsKIAotdXNpbmcgQ291bnRlck1hcCA9IEhhc2hN
YXA8QXRvbWljU3RyaW5nLCBSZWY8Q291bnRlck5vZGU+PjsKK3VzaW5nIENvdW50ZXJNYXAgPSBI
YXNoTWFwPEF0b21TdHJpbmcsIFJlZjxDb3VudGVyTm9kZT4+OwogdXNpbmcgQ291bnRlck1hcHMg
PSBIYXNoTWFwPGNvbnN0IFJlbmRlckVsZW1lbnQqLCBzdGQ6OnVuaXF1ZV9wdHI8Q291bnRlck1h
cD4+OwogCi1zdGF0aWMgQ291bnRlck5vZGUqIG1ha2VDb3VudGVyTm9kZShSZW5kZXJFbGVtZW50
JiwgY29uc3QgQXRvbWljU3RyaW5nJiBpZGVudGlmaWVyLCBib29sIGFsd2F5c0NyZWF0ZUNvdW50
ZXIpOworc3RhdGljIENvdW50ZXJOb2RlKiBtYWtlQ291bnRlck5vZGUoUmVuZGVyRWxlbWVudCYs
IGNvbnN0IEF0b21TdHJpbmcmIGlkZW50aWZpZXIsIGJvb2wgYWx3YXlzQ3JlYXRlQ291bnRlcik7
CiAKIHN0YXRpYyBDb3VudGVyTWFwcyYgY291bnRlck1hcHMoKQogewpAQCAtMTMwLDcgKzEzMCw3
IEBAIHN0cnVjdCBDb3VudGVyUGxhbiB7CiAgICAgaW50IHZhbHVlOwogfTsKIAotc3RhdGljIE9w
dGlvbmFsPENvdW50ZXJQbGFuPiBwbGFuQ291bnRlcihSZW5kZXJFbGVtZW50JiByZW5kZXJlciwg
Y29uc3QgQXRvbWljU3RyaW5nJiBpZGVudGlmaWVyKQorc3RhdGljIE9wdGlvbmFsPENvdW50ZXJQ
bGFuPiBwbGFuQ291bnRlcihSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgQXRvbVN0cmlu
ZyYgaWRlbnRpZmllcikKIHsKICAgICAvLyBXZSBtdXN0IGhhdmUgYSBnZW5lcmF0aW5nIG5vZGUg
b3IgZWxzZSB3ZSBjYW5ub3QgaGF2ZSBhIGNvdW50ZXIuCiAgICAgRWxlbWVudCogZ2VuZXJhdGlu
Z0VsZW1lbnQgPSByZW5kZXJlci5nZW5lcmF0aW5nRWxlbWVudCgpOwpAQCAtMTk0LDcgKzE5NCw3
IEBAIHN0cnVjdCBDb3VudGVySW5zZXJ0aW9uUG9pbnQgewogICAgIFJlZlB0cjxDb3VudGVyTm9k
ZT4gcHJldmlvdXNTaWJsaW5nOwogfTsKIAotc3RhdGljIENvdW50ZXJJbnNlcnRpb25Qb2ludCBm
aW5kUGxhY2VGb3JDb3VudGVyKFJlbmRlckVsZW1lbnQmIGNvdW50ZXJPd25lciwgY29uc3QgQXRv
bWljU3RyaW5nJiBpZGVudGlmaWVyLCBib29sIGlzUmVzZXQpCitzdGF0aWMgQ291bnRlckluc2Vy
dGlvblBvaW50IGZpbmRQbGFjZUZvckNvdW50ZXIoUmVuZGVyRWxlbWVudCYgY291bnRlck93bmVy
LCBjb25zdCBBdG9tU3RyaW5nJiBpZGVudGlmaWVyLCBib29sIGlzUmVzZXQpCiB7CiAgICAgLy8g
V2UgY2Fubm90IHN0b3Agc2VhcmNoaW5nIGZvciBjb3VudGVycyB3aXRoIHRoZSBzYW1lIGlkZW50
aWZpZXIgYmVmb3JlIHdlIGFsc28KICAgICAvLyBjaGVjayB0aGlzIHJlbmRlcmVyLCBiZWNhdXNl
IGl0IG1heSBhZmZlY3QgdGhlIHBvc2l0aW9uaW5nIGluIHRoZSB0cmVlIG9mIG91ciBjb3VudGVy
LgpAQCAtMjkyLDcgKzI5Miw3IEBAIHN0YXRpYyBDb3VudGVySW5zZXJ0aW9uUG9pbnQgZmluZFBs
YWNlRm9yQ291bnRlcihSZW5kZXJFbGVtZW50JiBjb3VudGVyT3duZXIsIGNvCiAgICAgcmV0dXJu
IHsgfTsKIH0KIAotc3RhdGljIENvdW50ZXJOb2RlKiBtYWtlQ291bnRlck5vZGUoUmVuZGVyRWxl
bWVudCYgcmVuZGVyZXIsIGNvbnN0IEF0b21pY1N0cmluZyYgaWRlbnRpZmllciwgYm9vbCBhbHdh
eXNDcmVhdGVDb3VudGVyKQorc3RhdGljIENvdW50ZXJOb2RlKiBtYWtlQ291bnRlck5vZGUoUmVu
ZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IEF0b21TdHJpbmcmIGlkZW50aWZpZXIsIGJvb2wg
YWx3YXlzQ3JlYXRlQ291bnRlcikKIHsKICAgICBpZiAocmVuZGVyZXIuaGFzQ291bnRlck5vZGVN
YXAoKSkgewogICAgICAgICBBU1NFUlQoY291bnRlck1hcHMoKS5jb250YWlucygmcmVuZGVyZXIp
KTsKQEAgLTQzMCw3ICs0MzAsNyBAQCB2b2lkIFJlbmRlckNvdW50ZXI6OmNvbXB1dGVQcmVmZXJy
ZWRMb2dpY2FsV2lkdGhzKGZsb2F0IGxlYWQpCiAgICAgUmVuZGVyVGV4dDo6Y29tcHV0ZVByZWZl
cnJlZExvZ2ljYWxXaWR0aHMobGVhZCk7CiB9CiAKLXN0YXRpYyB2b2lkIGRlc3Ryb3lDb3VudGVy
Tm9kZVdpdGhvdXRNYXBSZW1vdmFsKGNvbnN0IEF0b21pY1N0cmluZyYgaWRlbnRpZmllciwgQ291
bnRlck5vZGUmIG5vZGUpCitzdGF0aWMgdm9pZCBkZXN0cm95Q291bnRlck5vZGVXaXRob3V0TWFw
UmVtb3ZhbChjb25zdCBBdG9tU3RyaW5nJiBpZGVudGlmaWVyLCBDb3VudGVyTm9kZSYgbm9kZSkK
IHsKICAgICBSZWZQdHI8Q291bnRlck5vZGU+IHByZXZpb3VzOwogICAgIGZvciAoUmVmUHRyPENv
dW50ZXJOb2RlPiBjaGlsZCA9IG5vZGUubGFzdERlc2NlbmRhbnQoKTsgY2hpbGQgJiYgY2hpbGQg
IT0gJm5vZGU7IGNoaWxkID0gV1RGTW92ZShwcmV2aW91cykpIHsKQEAgLTQ1NCw3ICs0NTQsNyBA
QCB2b2lkIFJlbmRlckNvdW50ZXI6OmRlc3Ryb3lDb3VudGVyTm9kZXMoUmVuZGVyRWxlbWVudCYg
b3duZXIpCiAgICAgb3duZXIuc2V0SGFzQ291bnRlck5vZGVNYXAoZmFsc2UpOwogfQogCi12b2lk
IFJlbmRlckNvdW50ZXI6OmRlc3Ryb3lDb3VudGVyTm9kZShSZW5kZXJFbGVtZW50JiBvd25lciwg
Y29uc3QgQXRvbWljU3RyaW5nJiBpZGVudGlmaWVyKQordm9pZCBSZW5kZXJDb3VudGVyOjpkZXN0
cm95Q291bnRlck5vZGUoUmVuZGVyRWxlbWVudCYgb3duZXIsIGNvbnN0IEF0b21TdHJpbmcmIGlk
ZW50aWZpZXIpCiB7CiAgICAgYXV0byBtYXAgPSBjb3VudGVyTWFwcygpLmZpbmQoJm93bmVyKTsK
ICAgICBpZiAobWFwID09IGNvdW50ZXJNYXBzKCkuZW5kKCkpCkBAIC01OTIsNyArNTkyLDcgQEAg
dm9pZCBzaG93Q291bnRlclJlbmRlcmVyVHJlZShjb25zdCBXZWJDb3JlOjpSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyLCBjb25zdCBjaGFyKgogICAgIHdoaWxlIChyb290LT5wYXJlbnQoKSkKICAgICAg
ICAgcm9vdCA9IHJvb3QtPnBhcmVudCgpOwogCi0gICAgQXRvbWljU3RyaW5nIGlkZW50aWZpZXIo
Y291bnRlck5hbWUpOworICAgIEF0b21TdHJpbmcgaWRlbnRpZmllcihjb3VudGVyTmFtZSk7CiAg
ICAgZm9yIChhdXRvKiBjdXJyZW50ID0gcm9vdDsgY3VycmVudDsgY3VycmVudCA9IGN1cnJlbnQt
Pm5leHRJblByZU9yZGVyKCkpIHsKICAgICAgICAgaWYgKCFpczxXZWJDb3JlOjpSZW5kZXJFbGVt
ZW50PigqY3VycmVudCkpCiAgICAgICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQ291bnRlci5oCmluZGV4IDhhOTAyMDJkNDUwOTYxYTE1ODcxMTQ5MWQ1NzA1
NTYyZTg1NDhiOTQuLmRkOTZhMmU0MTBmNmUzYTE3YTJlNzBlMGJlYTFjYmFjMmMwMTU2MjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuaApAQCAtMzUsNyArMzUsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB+UmVuZGVyQ291bnRlcigpOwogCiAgICAgc3RhdGljIHZv
aWQgZGVzdHJveUNvdW50ZXJOb2RlcyhSZW5kZXJFbGVtZW50Jik7Ci0gICAgc3RhdGljIHZvaWQg
ZGVzdHJveUNvdW50ZXJOb2RlKFJlbmRlckVsZW1lbnQmLCBjb25zdCBBdG9taWNTdHJpbmcmIGlk
ZW50aWZpZXIpOworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3lDb3VudGVyTm9kZShSZW5kZXJFbGVt
ZW50JiwgY29uc3QgQXRvbVN0cmluZyYgaWRlbnRpZmllcik7CiAgICAgc3RhdGljIHZvaWQgcmVu
ZGVyZXJTdWJ0cmVlQXR0YWNoZWQoUmVuZGVyRWxlbWVudCYpOwogICAgIHN0YXRpYyB2b2lkIHJl
bmRlcmVyUmVtb3ZlZEZyb21UcmVlKFJlbmRlckVsZW1lbnQmKTsKICAgICBzdGF0aWMgdm9pZCBy
ZW5kZXJlclN0eWxlQ2hhbmdlZChSZW5kZXJFbGVtZW50JiwgY29uc3QgUmVuZGVyU3R5bGUqIG9s
ZFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogbmV3U3R5bGUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcAppbmRl
eCA1ZTg0OGUyNzAwYzg2OGJlY2VmZjE4NDUxNDlhZjQxZmVlOGI3MTFjLi4wZTdlNDJiODRiMDk2
YmFmNTUyNjViMzc0Zjg3NmUxZTIwMTk4ZDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcApAQCAtOTkwLDgg
Kzk5MCw4IEBAIHZvaWQgUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94OjphcHBseUxpbmVDbGFt
cChGbGV4Qm94SXRlcmF0b3ImIGl0ZXJhdG9yLCBib29sCiAgICAgICAgICAgICBjb250aW51ZTsK
IAogICAgICAgICBjb25zdCBVQ2hhciBlbGxpcHNpc0FuZFNwYWNlWzJdID0geyBob3Jpem9udGFs
RWxsaXBzaXMsICcgJyB9OwotICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3Ry
aW5nPiBlbGxpcHNpc0FuZFNwYWNlU3RyKGVsbGlwc2lzQW5kU3BhY2UsIDIpOwotICAgICAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBlbGxpcHNpc1N0cigmaG9yaXpvbnRh
bEVsbGlwc2lzLCAxKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21TdHJpbmc+
IGVsbGlwc2lzQW5kU3BhY2VTdHIoZWxsaXBzaXNBbmRTcGFjZSwgMik7CisgICAgICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxBdG9tU3RyaW5nPiBlbGxpcHNpc1N0cigmaG9yaXpvbnRhbEVsbGlw
c2lzLCAxKTsKICAgICAgICAgY29uc3QgUmVuZGVyU3R5bGUmIGxpbmVTdHlsZSA9IG51bVZpc2li
bGVMaW5lcyA9PSAxID8gZmlyc3RMaW5lU3R5bGUoKSA6IHN0eWxlKCk7CiAgICAgICAgIGNvbnN0
IEZvbnRDYXNjYWRlJiBmb250ID0gbGluZVN0eWxlLmZvbnRDYXNjYWRlKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggYjkzMTBkZjJkNTBmNmYzOTAz
Y2JiZmY0NWE1ZGMwOTY4ZDJiODRkZS4uYWFiM2Y0NmVjNDAzZTJmNTQyMWU4MTU2NTQ1Y2E0NGQw
ZWNiMWI4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAg
LTY1Nyw3ICs2NTcsNyBAQCB2b2lkIFJlbmRlck9iamVjdDo6YWRkUERGVVJMUmVjdChQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50TwogICAgIGlmICghaXM8RWxl
bWVudD4obm9kZSkgfHwgIW5vZGUtPmlzTGluaygpKQogICAgICAgICByZXR1cm47CiAgICAgRWxl
bWVudCYgZWxlbWVudCA9IGRvd25jYXN0PEVsZW1lbnQ+KCpub2RlKTsKLSAgICBjb25zdCBBdG9t
aWNTdHJpbmcmIGhyZWYgPSBlbGVtZW50LmdldEF0dHJpYnV0ZShocmVmQXR0cik7CisgICAgY29u
c3QgQXRvbVN0cmluZyYgaHJlZiA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKGhyZWZBdHRyKTsKICAg
ICBpZiAoaHJlZi5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcAppbmRleCBiMzdmZWNjOGI5Y2Q0YmNj
NThjMmZlOWIyMDBlZDI4NTAwMDNlYjQyLi44ZTJkY2IwMzUzZWQ5NGY2MGJkNGM0YWRjZWIzNTNj
NjNjNzc3OTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Vh
cmNoRmllbGQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hG
aWVsZC5jcHAKQEAgLTEwNSw3ICsxMDUsNyBAQCB2b2lkIFJlbmRlclNlYXJjaEZpZWxkOjphZGRT
ZWFyY2hSZXN1bHQoKQogICAgIHdoaWxlIChzdGF0aWNfY2FzdDxpbnQ+KG1fcmVjZW50U2VhcmNo
ZXMuc2l6ZSgpKSA+IGlucHV0RWxlbWVudCgpLm1heFJlc3VsdHMoKSkKICAgICAgICAgbV9yZWNl
bnRTZWFyY2hlcy5yZW1vdmVMYXN0KCk7CiAKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUg
PSBhdXRvc2F2ZU5hbWUoKTsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBuYW1lID0gYXV0b3NhdmVO
YW1lKCk7CiAgICAgaWYgKCFtX3NlYXJjaFBvcHVwKQogICAgICAgICBtX3NlYXJjaFBvcHVwID0g
cGFnZSgpLmNocm9tZSgpLmNyZWF0ZVNlYXJjaFBvcHVwTWVudSgqdGhpcyk7CiAKQEAgLTEyNSw3
ICsxMjUsNyBAQCB2b2lkIFJlbmRlclNlYXJjaEZpZWxkOjpzaG93UG9wdXAoKQogCiAgICAgbV9z
ZWFyY2hQb3B1cElzVmlzaWJsZSA9IHRydWU7CiAKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5h
bWUgPSBhdXRvc2F2ZU5hbWUoKTsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBuYW1lID0gYXV0b3Nh
dmVOYW1lKCk7CiAgICAgbV9zZWFyY2hQb3B1cC0+bG9hZFJlY2VudFNlYXJjaGVzKG5hbWUsIG1f
cmVjZW50U2VhcmNoZXMpOwogCiAgICAgLy8gVHJpbSB0aGUgcmVjZW50IHNlYXJjaGVzIGxpc3Qg
aWYgdGhlIG1heGltdW0gc2l6ZSBoYXMgY2hhbmdlZCBzaW5jZSB3ZSBsYXN0IHNhdmVkLgpAQCAt
MTk5LDcgKzE5OSw3IEBAIFZpc2liaWxpdHkgUmVuZGVyU2VhcmNoRmllbGQ6OnZpc2liaWxpdHlG
b3JDYW5jZWxCdXR0b24oKSBjb25zdAogICAgIHJldHVybiAoc3R5bGUoKS52aXNpYmlsaXR5KCkg
PT0gVmlzaWJpbGl0eTo6SGlkZGVuIHx8IGlucHV0RWxlbWVudCgpLnZhbHVlKCkuaXNFbXB0eSgp
KSA/IFZpc2liaWxpdHk6OkhpZGRlbiA6IFZpc2liaWxpdHk6OlZpc2libGU7CiB9CiAKLWNvbnN0
IEF0b21pY1N0cmluZyYgUmVuZGVyU2VhcmNoRmllbGQ6OmF1dG9zYXZlTmFtZSgpIGNvbnN0Citj
b25zdCBBdG9tU3RyaW5nJiBSZW5kZXJTZWFyY2hGaWVsZDo6YXV0b3NhdmVOYW1lKCkgY29uc3QK
IHsKICAgICByZXR1cm4gaW5wdXRFbGVtZW50KCkuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXph
dGlvbihhdXRvc2F2ZUF0dHIpOwogfQpAQCAtMjExLDcgKzIxMSw3IEBAIHZvaWQgUmVuZGVyU2Vh
cmNoRmllbGQ6OnZhbHVlQ2hhbmdlZCh1bnNpZ25lZCBsaXN0SW5kZXgsIGJvb2wgZmlyZUV2ZW50
cykKICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50PihsaXN0SW5kZXgpID09IChsaXN0U2l6ZSgpIC0g
MSkpIHsKICAgICAgICAgaWYgKGZpcmVFdmVudHMpIHsKICAgICAgICAgICAgIG1fcmVjZW50U2Vh
cmNoZXMuY2xlYXIoKTsKLSAgICAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSA9IGF1
dG9zYXZlTmFtZSgpOworICAgICAgICAgICAgY29uc3QgQXRvbVN0cmluZyYgbmFtZSA9IGF1dG9z
YXZlTmFtZSgpOwogICAgICAgICAgICAgaWYgKCFuYW1lLmlzRW1wdHkoKSkgewogICAgICAgICAg
ICAgICAgIGlmICghbV9zZWFyY2hQb3B1cCkKICAgICAgICAgICAgICAgICAgICAgbV9zZWFyY2hQ
b3B1cCA9IHBhZ2UoKS5jaHJvbWUoKS5jcmVhdGVTZWFyY2hQb3B1cE1lbnUoKnRoaXMpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuaAppbmRleCA5MDk4NzE5
NmRhYTQzM2U1ODA2MWY3MTZlNTZmZmU5MTBlY2Q2Nzc0Li4yYWQ2MTZlYjU5NzEwODc0Y2JlMDRm
YmRkNDEzM2VjNzNjNjQ4ZjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU2VhcmNoRmllbGQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
U2VhcmNoRmllbGQuaApAQCAtNTIsNyArNTIsNyBAQCBwcml2YXRlOgogICAgIExheW91dFVuaXQg
Y29tcHV0ZUNvbnRyb2xMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbGluZUhlaWdodCwgTGF5b3V0
VW5pdCBub25Db250ZW50SGVpZ2h0KSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHVwZGF0ZUZy
b21FbGVtZW50KCkgb3ZlcnJpZGU7CiAgICAgVmlzaWJpbGl0eSB2aXNpYmlsaXR5Rm9yQ2FuY2Vs
QnV0dG9uKCkgY29uc3Q7Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBhdXRvc2F2ZU5hbWUoKSBj
b25zdDsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBhdXRvc2F2ZU5hbWUoKSBjb25zdDsKIAogICAg
IC8vIFBvcHVwTWVudUNsaWVudCBtZXRob2RzCiAgICAgdm9pZCB2YWx1ZUNoYW5nZWQodW5zaWdu
ZWQgbGlzdEluZGV4LCBib29sIGZpcmVFdmVudHMgPSB0cnVlKSBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGlu
ZS5jcHAKaW5kZXggYTMwMThmZDA3N2Q5OTYwYzI3YTA0MGViMGJlMzMxODkxMDkyYWFlZC4uOWVl
ODg4ODY3MTEwYjU2NjUyOWU4ZmJhMTAyNWNkNTE5MWUxYWMzOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAK
QEAgLTMxMiw3ICszMTIsNyBAQCBMYXlvdXRVbml0IFJlbmRlclRleHRDb250cm9sU2luZ2xlTGlu
ZTo6cHJlZmVycmVkQ29udGVudExvZ2ljYWxXaWR0aChmbG9hdCBjaGFyVwogICAgIGZsb2F0IG1h
eENoYXJXaWR0aCA9IDAuZjsKIAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGNvbnN0
IEF0b21pY1N0cmluZyYgZmFtaWx5ID0gc3R5bGUoKS5mb250Q2FzY2FkZSgpLmZpcnN0RmFtaWx5
KCk7CisgICAgY29uc3QgQXRvbVN0cmluZyYgZmFtaWx5ID0gc3R5bGUoKS5mb250Q2FzY2FkZSgp
LmZpcnN0RmFtaWx5KCk7CiAgICAgLy8gU2luY2UgTHVjaWRhIEdyYW5kZSBpcyB0aGUgZGVmYXVs
dCBmb250LCB3ZSB3YW50IHRoaXMgdG8gbWF0Y2ggdGhlIHdpZHRoCiAgICAgLy8gb2YgTVMgU2hl
bGwgRGxnLCB0aGUgZGVmYXVsdCBmb250IGZvciB0ZXh0YXJlYXMgaW4gRmlyZWZveCwgU2FmYXJp
IFdpbiBhbmQKICAgICAvLyBJRSBmb3Igc29tZSBlbmNvZGluZ3MgKGluIElFLCB0aGUgZGVmYXVs
dCBmb250IGlzIGVuY29kaW5nIHNwZWNpZmljKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lLmgKaW5kZXggMWQ2MWU0ODQ3MWVjOGRmNTc0MjFkNjhiY2E2MWVkMmM1YjliOWVkZC4u
M2FmNTZhZTU2Yjk0MTg4MjQyMTcwOWM3MDFkY2ZlZjhhNWE5ODFjZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lLmgKQEAgLTE0MCw3ICsxNDAsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBib29sIHN1cHBvcnRzSG92ZXIoY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogCiAgICAgLy8gQSBtZXRob2QgYXNraW5nIGlmIHRoZSBwbGF0Zm9ybSBp
cyBhYmxlIHRvIHNob3cgZGF0YWxpc3Qgc3VnZ2VzdGlvbnMgZm9yIGEgZ2l2ZW4gaW5wdXQgdHlw
ZS4KLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNEYXRhTGlzdFVJKGNvbnN0IEF0b21pY1N0cmlu
ZyYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRGF0
YUxpc3RVSShjb25zdCBBdG9tU3RyaW5nJikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAg
IC8vIFRleHQgc2VsZWN0aW9uIGNvbG9ycy4KICAgICBDb2xvciBhY3RpdmVTZWxlY3Rpb25CYWNr
Z3JvdW5kQ29sb3IoT3B0aW9uU2V0PFN0eWxlQ29sb3I6Ok9wdGlvbnM+KSBjb25zdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQppbmRleCAzZTM3OWNmNzUwZDhi
ZGQ3MTNlZmZhNzI0MDlkYWFmODE2ZDEyZDJmLi5lOGNhMjJmMGQ1MzAxY2JjODc3Yzk1Mzg2Mzc5
OGFlNjNmNzg3NTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFj
Lm1tCkBAIC01MzksMTggKzUzOSwxOCBAQCB2b2lkIFJlbmRlclRoZW1lTWFjOjp1cGRhdGVDYWNo
ZWRTeXN0ZW1Gb250RGVzY3JpcHRpb24oQ1NTVmFsdWVJRCBjc3NWYWx1ZUlkLCBGbwogICAgIC8v
IFN5c3RlbS1mb250LW5lc3MgY2FuJ3QgYmUgZW5jYXBzdWxhdGVkIGJ5IHNpbXBseSBhIGZvbnQg
bmFtZS4gSW5zdGVhZCwgd2UgbXVzdCB1c2UgYSB0b2tlbgogICAgIC8vIHdoaWNoIEZvbnRDYWNo
ZSB3aWxsIGxvb2sgZm9yLgogICAgIC8vIE1ha2Ugc3VyZSB3ZSBrZWVwIHRoaXMgbGlzdCBvZiBw
b3NzaWJsZSB0b2tlbnMgaW4gc3luYyB3aXRoIEZvbnRDYXNjYWRlOjpwcmltYXJ5Rm9udElzU3lz
dGVtRm9udCgpCi0gICAgQXRvbWljU3RyaW5nIGZvbnROYW1lOworICAgIEF0b21TdHJpbmcgZm9u
dE5hbWU7CiAgICAgc3dpdGNoIChjc3NWYWx1ZUlkKSB7CiAgICAgICAgIGNhc2UgQ1NTVmFsdWVT
bWFsbENhcHRpb246CiAgICAgICAgICAgICBmb250ID0gW05TRm9udCBzeXN0ZW1Gb250T2ZTaXpl
OltOU0ZvbnQgc21hbGxTeXN0ZW1Gb250U2l6ZV1dOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgQ1NTVmFsdWVNZW51OgogICAgICAgICAgICAgZm9udCA9IFtOU0ZvbnQgbWVudUZv
bnRPZlNpemU6W05TRm9udCBzeXN0ZW1Gb250U2l6ZV1dOwotICAgICAgICAgICAgZm9udE5hbWUg
PSBBdG9taWNTdHJpbmcoIi1hcHBsZS1tZW51IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCk7CisgICAgICAgICAgICBmb250TmFtZSA9IEF0b21TdHJpbmcoIi1hcHBsZS1tZW51
IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgQ1NTVmFsdWVTdGF0dXNCYXI6CiAgICAgICAgICAgICBmb250ID0gW05T
Rm9udCBsYWJlbEZvbnRPZlNpemU6W05TRm9udCBsYWJlbEZvbnRTaXplXV07Ci0gICAgICAgICAg
ICBmb250TmFtZSA9IEF0b21pY1N0cmluZygiLWFwcGxlLXN0YXR1cy1iYXIiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICAgICAgICAgIGZvbnROYW1lID0gQXRvbVN0
cmluZygiLWFwcGxlLXN0YXR1cy1iYXIiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NWYWx1ZVdlYmtpdE1pbmlD
b250cm9sOgogICAgICAgICAgICAgZm9udCA9IFtOU0ZvbnQgc3lzdGVtRm9udE9mU2l6ZTpbTlNG
b250IHN5c3RlbUZvbnRTaXplRm9yQ29udHJvbFNpemU6TlNDb250cm9sU2l6ZU1pbmldXTsKQEAg
LTU2OSw3ICs1NjksNyBAQCB2b2lkIFJlbmRlclRoZW1lTWFjOjp1cGRhdGVDYWNoZWRTeXN0ZW1G
b250RGVzY3JpcHRpb24oQ1NTVmFsdWVJRCBjc3NWYWx1ZUlkLCBGbwogICAgICAgICByZXR1cm47
CiAKICAgICBpZiAoZm9udE5hbWUuaXNOdWxsKCkpCi0gICAgICAgIGZvbnROYW1lID0gQXRvbWlj
U3RyaW5nKCJzeXN0ZW0tdWkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsK
KyAgICAgICAgZm9udE5hbWUgPSBBdG9tU3RyaW5nKCJzeXN0ZW0tdWkiLCBBdG9tU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAKICAgICBOU0ZvbnRNYW5hZ2VyICpmb250TWFuYWdlciA9
IFtOU0ZvbnRNYW5hZ2VyIHNoYXJlZEZvbnRNYW5hZ2VyXTsKICAgICBmb250RGVzY3JpcHRpb24u
c2V0SXNBYnNvbHV0ZVNpemUodHJ1ZSk7CkBAIC0xMDk2LDcgKzEwOTYsNyBAQCB2b2lkIFJlbmRl
clRoZW1lTWFjOjpzZXRGb250RnJvbUNvbnRyb2xTaXplKFN0eWxlUmVzb2x2ZXImLCBSZW5kZXJT
dHlsZSYgc3R5bGUsCiAgICAgZm9udERlc2NyaXB0aW9uLnNldElzQWJzb2x1dGVTaXplKHRydWUp
OwogCiAgICAgTlNGb250KiBmb250ID0gW05TRm9udCBzeXN0ZW1Gb250T2ZTaXplOltOU0ZvbnQg
c3lzdGVtRm9udFNpemVGb3JDb250cm9sU2l6ZTpjb250cm9sU2l6ZV1dOwotICAgIGZvbnREZXNj
cmlwdGlvbi5zZXRPbmVGYW1pbHkoQXRvbWljU3RyaW5nKCItYXBwbGUtc3lzdGVtIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRP
bmVGYW1pbHkoQXRvbVN0cmluZygiLWFwcGxlLXN5c3RlbSIsIEF0b21TdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKSk7CiAgICAgZm9udERlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZShbZm9u
dCBwb2ludFNpemVdICogc3R5bGUuZWZmZWN0aXZlWm9vbSgpKTsKICAgICBmb250RGVzY3JpcHRp
b24uc2V0U3BlY2lmaWVkU2l6ZShbZm9udCBwb2ludFNpemVdICogc3R5bGUuZWZmZWN0aXZlWm9v
bSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVC
b3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCmluZGV4
IGMyNTU0ZDQ2ZmM5N2Y5NzFlOGJhOWVlODhmMzhiOTVmYjk2M2E2OTguLmViNzZmNGIyNjlmYmFl
YzQ1OTQyNjM2Nzk3Zjk0MTA3ZDU0YjgyNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9Sb290SW5saW5lQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
Um9vdElubGluZUJveC5jcHAKQEAgLTEyMyw3ICsxMjMsNyBAQCBib29sIFJvb3RJbmxpbmVCb3g6
OmxpbmVDYW5BY2NvbW1vZGF0ZUVsbGlwc2lzKGJvb2wgbHRyLCBpbnQgYmxvY2tFZGdlLCBpbnQg
bGluZQogICAgIHJldHVybiBJbmxpbmVGbG93Qm94OjpjYW5BY2NvbW1vZGF0ZUVsbGlwc2lzKGx0
ciwgYmxvY2tFZGdlLCBlbGxpcHNpc1dpZHRoKTsKIH0KIAotZmxvYXQgUm9vdElubGluZUJveDo6
cGxhY2VFbGxpcHNpcyhjb25zdCBBdG9taWNTdHJpbmcmIGVsbGlwc2lzU3RyLCAgYm9vbCBsdHIs
IGZsb2F0IGJsb2NrTGVmdEVkZ2UsIGZsb2F0IGJsb2NrUmlnaHRFZGdlLCBmbG9hdCBlbGxpcHNp
c1dpZHRoLCBJbmxpbmVCb3gqIG1hcmt1cEJveCkKK2Zsb2F0IFJvb3RJbmxpbmVCb3g6OnBsYWNl
RWxsaXBzaXMoY29uc3QgQXRvbVN0cmluZyYgZWxsaXBzaXNTdHIsICBib29sIGx0ciwgZmxvYXQg
YmxvY2tMZWZ0RWRnZSwgZmxvYXQgYmxvY2tSaWdodEVkZ2UsIGZsb2F0IGVsbGlwc2lzV2lkdGgs
IElubGluZUJveCogbWFya3VwQm94KQogewogICAgIGlmICghZ0VsbGlwc2lzQm94TWFwKQogICAg
ICAgICBnRWxsaXBzaXNCb3hNYXAgPSBuZXcgRWxsaXBzaXNCb3hNYXAoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5oCmluZGV4IGE2Nzk1YTQwOTNiNjc0OWEwOTM1YTk0
OTkxNDgyMjU5MjExMmE5NjIuLjdkZjI4Mjg4YTRkNTVjMmM3ZDI2YWQ0YmMwMTc2ZDBiNzYxNzgz
NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guaApAQCAtMTA0LDcg
KzEwNCw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgbGluZUNhbkFjY29tbW9kYXRlRWxsaXBzaXMo
Ym9vbCBsdHIsIGludCBibG9ja0VkZ2UsIGludCBsaW5lQm94RWRnZSwgaW50IGVsbGlwc2lzV2lk
dGgpOwogICAgIC8vIFJldHVybiB0aGUgdHJ1bmNhdGVkV2lkdGgsIHRoZSB3aWR0aCBvZiB0aGUg
dHJ1bmNhdGVkIHRleHQgKyBlbGxpcHNpcy4KLSAgICBmbG9hdCBwbGFjZUVsbGlwc2lzKGNvbnN0
IEF0b21pY1N0cmluZyYgZWxsaXBzaXNTdHIsIGJvb2wgbHRyLCBmbG9hdCBibG9ja0xlZnRFZGdl
LCBmbG9hdCBibG9ja1JpZ2h0RWRnZSwgZmxvYXQgZWxsaXBzaXNXaWR0aCwgSW5saW5lQm94KiBt
YXJrdXBCb3ggPSBudWxscHRyKTsKKyAgICBmbG9hdCBwbGFjZUVsbGlwc2lzKGNvbnN0IEF0b21T
dHJpbmcmIGVsbGlwc2lzU3RyLCBib29sIGx0ciwgZmxvYXQgYmxvY2tMZWZ0RWRnZSwgZmxvYXQg
YmxvY2tSaWdodEVkZ2UsIGZsb2F0IGVsbGlwc2lzV2lkdGgsIElubGluZUJveCogbWFya3VwQm94
ID0gbnVsbHB0cik7CiAgICAgLy8gUmV0dXJuIHRoZSBwb3NpdGlvbiBvZiB0aGUgRWxsaXBzaXNC
b3ggb3IgLTEuCiAgICAgZmxvYXQgcGxhY2VFbGxpcHNpc0JveChib29sIGx0ciwgZmxvYXQgYmxv
Y2tMZWZ0RWRnZSwgZmxvYXQgYmxvY2tSaWdodEVkZ2UsIGZsb2F0IGVsbGlwc2lzV2lkdGgsIGZs
b2F0ICZ0cnVuY2F0ZWRXaWR0aCwgYm9vbCYgZm91bmRCb3gpIGZpbmFsOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFRleHRGcmFnbWVudEl0
ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFRleHRG
cmFnbWVudEl0ZXJhdG9yLmgKaW5kZXggOWVjZmQ5ZGYxZjg1MzkwMjVkM2ViMzY5MmU3ZjZmYWE3
NThmODgxZC4uY2ZjOWMzN2Q2M2NiZDE0OTM0ZDA0ZjU3ZTcyYWIxMzdhNjFmMDgzZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRUZXh0RnJhZ21l
bnRJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5
b3V0VGV4dEZyYWdtZW50SXRlcmF0b3IuaApAQCAtMTIzLDcgKzEyMyw3IEBAIHB1YmxpYzoKICAg
ICAgICAgZmxvYXQgaHlwaGVuU3RyaW5nV2lkdGg7CiAgICAgICAgIHVuc2lnbmVkIGh5cGhlbkxp
bWl0QmVmb3JlOwogICAgICAgICB1bnNpZ25lZCBoeXBoZW5MaW1pdEFmdGVyOwotICAgICAgICBB
dG9taWNTdHJpbmcgbG9jYWxlOworICAgICAgICBBdG9tU3RyaW5nIGxvY2FsZTsKICAgICAgICAg
T3B0aW9uYWw8dW5zaWduZWQ+IGh5cGhlbkxpbWl0TGluZXM7CiAgICAgfTsKICAgICBjb25zdCBT
dHlsZSYgc3R5bGUoKSBjb25zdCB7IHJldHVybiBtX3N0eWxlOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1RleHRQYWludGVyLmNwcAppbmRleCBiMGVjYjkyMDIwZjA5ODU3ZGU2NDNlMzU3ODIy
MWI2MGZiNjFhYWEyLi41YTFjOTg0ZTE5NjhiZDJhZWM2NzA3Y2RiNjQxNjQzYjczNzRmZGFiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRlci5jcHAKQEAgLTk5LDcgKzk5LDcg
QEAgVGV4dFBhaW50ZXI6OlRleHRQYWludGVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsK
IH0KIAotdm9pZCBUZXh0UGFpbnRlcjo6cGFpbnRUZXh0T3JFbXBoYXNpc01hcmtzKGNvbnN0IEZv
bnRDYXNjYWRlJiBmb250LCBjb25zdCBUZXh0UnVuJiB0ZXh0UnVuLCBjb25zdCBBdG9taWNTdHJp
bmcmIGVtcGhhc2lzTWFyaywKK3ZvaWQgVGV4dFBhaW50ZXI6OnBhaW50VGV4dE9yRW1waGFzaXNN
YXJrcyhjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgVGV4dFJ1biYgdGV4dFJ1biwgY29u
c3QgQXRvbVN0cmluZyYgZW1waGFzaXNNYXJrLAogICAgIGZsb2F0IGVtcGhhc2lzTWFya09mZnNl
dCwgY29uc3QgRmxvYXRQb2ludCYgdGV4dE9yaWdpbiwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVu
c2lnbmVkIGVuZE9mZnNldCkKIHsKICAgICBBU1NFUlQoc3RhcnRPZmZzZXQgPCBlbmRPZmZzZXQp
OwpAQCAtMTE4LDcgKzExOCw3IEBAIHZvaWQgVGV4dFBhaW50ZXI6OnBhaW50VGV4dE9yRW1waGFz
aXNNYXJrcyhjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgVGV4dFJ1CiB9CiAKIHZvaWQg
VGV4dFBhaW50ZXI6OnBhaW50VGV4dFdpdGhTaGFkb3dzKGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRv
dywgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyogY29sb3JGaWx0ZXIsIGNvbnN0IEZvbnRDYXNjYWRl
JiBmb250LCBjb25zdCBUZXh0UnVuJiB0ZXh0UnVuLCBjb25zdCBGbG9hdFJlY3QmIGJveFJlY3Qs
IGNvbnN0IEZsb2F0UG9pbnQmIHRleHRPcmlnaW4sCi0gICAgdW5zaWduZWQgc3RhcnRPZmZzZXQs
IHVuc2lnbmVkIGVuZE9mZnNldCwgY29uc3QgQXRvbWljU3RyaW5nJiBlbXBoYXNpc01hcmssIGZs
b2F0IGVtcGhhc2lzTWFya09mZnNldCwgYm9vbCBzdHJva2VkKQorICAgIHVuc2lnbmVkIHN0YXJ0
T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQsIGNvbnN0IEF0b21TdHJpbmcmIGVtcGhhc2lzTWFy
aywgZmxvYXQgZW1waGFzaXNNYXJrT2Zmc2V0LCBib29sIHN0cm9rZWQpCiB7CiAgICAgaWYgKCFz
aGFkb3cpIHsKICAgICAgICAgcGFpbnRUZXh0T3JFbXBoYXNpc01hcmtzKGZvbnQsIHRleHRSdW4s
IGVtcGhhc2lzTWFyaywgZW1waGFzaXNNYXJrT2Zmc2V0LCB0ZXh0T3JpZ2luLCBzdGFydE9mZnNl
dCwgZW5kT2Zmc2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0
UGFpbnRlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludGVyLmgKaW5kZXgg
MGVlMGM4NWI0YjA1MzE2NTk3ZGRlM2I1NjQyNTA2ZDZjNzBkNGYxNi4uZTQ1MzRjYmZiZjE4NzAx
NzY0NzQ3YTU4MzM4NWQ3OThkMDcxNTk4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1RleHRQYWludGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQ
YWludGVyLmgKQEAgLTI3LDcgKzI3LDcgQEAKICNpbmNsdWRlICJHbHlwaERpc3BsYXlMaXN0Q2Fj
aGUuaCIKICNpbmNsdWRlICJUZXh0RmxhZ3MuaCIKICNpbmNsdWRlICJUZXh0UGFpbnRTdHlsZS5o
IgotI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L0F0b21TdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01Niw3ICs1Niw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldFNoYWRvd0NvbG9yRmlsdGVyKGNvbnN0IEZpbHRlck9wZXJh
dGlvbnMqIGNvbG9yRmlsdGVyKSB7IG1fc2hhZG93Q29sb3JGaWx0ZXIgPSBjb2xvckZpbHRlcjsg
fQogICAgIHZvaWQgc2V0Rm9udChjb25zdCBGb250Q2FzY2FkZSYgZm9udCkgeyBtX2ZvbnQgPSAm
Zm9udDsgfQogICAgIHZvaWQgc2V0SXNIb3Jpem9udGFsKGJvb2wgaXNIb3Jpem9udGFsKSB7IG1f
dGV4dEJveElzSG9yaXpvbnRhbCA9IGlzSG9yaXpvbnRhbDsgfQotICAgIHZvaWQgc2V0RW1waGFz
aXNNYXJrKGNvbnN0IEF0b21pY1N0cmluZyYgbWFyaywgZmxvYXQgb2Zmc2V0LCBjb25zdCBSZW5k
ZXJDb21iaW5lVGV4dCopOworICAgIHZvaWQgc2V0RW1waGFzaXNNYXJrKGNvbnN0IEF0b21TdHJp
bmcmIG1hcmssIGZsb2F0IG9mZnNldCwgY29uc3QgUmVuZGVyQ29tYmluZVRleHQqKTsKIAogICAg
IHZvaWQgcGFpbnQoY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UmVjdCYgYm94UmVjdCwgY29u
c3QgRmxvYXRQb2ludCYgdGV4dE9yaWdpbik7CiAgICAgdm9pZCBwYWludFJhbmdlKGNvbnN0IFRl
eHRSdW4mLCBjb25zdCBGbG9hdFJlY3QmIGJveFJlY3QsIGNvbnN0IEZsb2F0UG9pbnQmIHRleHRP
cmlnaW4sIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBlbmQpOwpAQCAtNzcsMTcgKzc3LDE3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBzaG91bGRVc2VHbHlwaERpc3BsYXlMaXN0KGNvbnN0
IFBhaW50SW5mbyYpOwogCiBwcml2YXRlOgotICAgIHZvaWQgcGFpbnRUZXh0T3JFbXBoYXNpc01h
cmtzKGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgZW1waGFzaXNNYXJrLCBmbG9hdCBlbXBoYXNpc01hcmtPZmZzZXQsCisgICAgdm9pZCBwYWlu
dFRleHRPckVtcGhhc2lzTWFya3MoY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBUZXh0UnVuJiwg
Y29uc3QgQXRvbVN0cmluZyYgZW1waGFzaXNNYXJrLCBmbG9hdCBlbXBoYXNpc01hcmtPZmZzZXQs
CiAgICAgICAgIGNvbnN0IEZsb2F0UG9pbnQmIHRleHRPcmlnaW4sIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwogICAgIHZvaWQgcGFpbnRUZXh0V2l0aFNoYWRvd3Mo
Y29uc3QgU2hhZG93RGF0YSosIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMqLCBjb25zdCBGb250Q2Fz
Y2FkZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFJlY3QmIGJveFJlY3QsIGNvbnN0IEZs
b2F0UG9pbnQmIHRleHRPcmlnaW4sCi0gICAgICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNp
Z25lZCBlbmRPZmZzZXQsIGNvbnN0IEF0b21pY1N0cmluZyYgZW1waGFzaXNNYXJrLCBmbG9hdCBl
bXBoYXNpc01hcmtPZmZzZXQsIGJvb2wgc3Ryb2tlZCk7CisgICAgICAgIHVuc2lnbmVkIHN0YXJ0
T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQsIGNvbnN0IEF0b21TdHJpbmcmIGVtcGhhc2lzTWFy
aywgZmxvYXQgZW1waGFzaXNNYXJrT2Zmc2V0LCBib29sIHN0cm9rZWQpOwogICAgIHZvaWQgcGFp
bnRUZXh0QW5kRW1waGFzaXNNYXJrc0lmTmVlZGVkKGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9h
dFJlY3QmIGJveFJlY3QsIGNvbnN0IEZsb2F0UG9pbnQmIHRleHRPcmlnaW4sIHVuc2lnbmVkIHN0
YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQsCiAgICAgICAgIGNvbnN0IFRleHRQYWludFN0
eWxlJiwgY29uc3QgU2hhZG93RGF0YSosIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMqKTsKIAogICAg
IEdyYXBoaWNzQ29udGV4dCYgbV9jb250ZXh0OwogICAgIGNvbnN0IEZvbnRDYXNjYWRlKiBtX2Zv
bnQgeyBudWxscHRyIH07CiAgICAgVGV4dFBhaW50U3R5bGUgbV9zdHlsZTsKLSAgICBBdG9taWNT
dHJpbmcgbV9lbXBoYXNpc01hcms7CisgICAgQXRvbVN0cmluZyBtX2VtcGhhc2lzTWFyazsKICAg
ICBjb25zdCBTaGFkb3dEYXRhKiBtX3NoYWRvdyB7IG51bGxwdHIgfTsKICAgICBjb25zdCBGaWx0
ZXJPcGVyYXRpb25zKiBtX3NoYWRvd0NvbG9yRmlsdGVyIHsgbnVsbHB0ciB9OwogICAgIGNvbnN0
IFJlbmRlckNvbWJpbmVUZXh0KiBtX2NvbWJpbmVkVGV4dCB7IG51bGxwdHIgfTsKQEAgLTk2LDcg
Kzk2LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fdGV4dEJveElzSG9yaXpvbnRhbCB7IHRydWUg
fTsKIH07CiAKLWlubGluZSB2b2lkIFRleHRQYWludGVyOjpzZXRFbXBoYXNpc01hcmsoY29uc3Qg
QXRvbWljU3RyaW5nJiBtYXJrLCBmbG9hdCBvZmZzZXQsIGNvbnN0IFJlbmRlckNvbWJpbmVUZXh0
KiBjb21iaW5lZFRleHQpCitpbmxpbmUgdm9pZCBUZXh0UGFpbnRlcjo6c2V0RW1waGFzaXNNYXJr
KGNvbnN0IEF0b21TdHJpbmcmIG1hcmssIGZsb2F0IG9mZnNldCwgY29uc3QgUmVuZGVyQ29tYmlu
ZVRleHQqIGNvbWJpbmVkVGV4dCkKIHsKICAgICBtX2VtcGhhc2lzTWFyayA9IG1hcms7CiAgICAg
bV9lbXBoYXNpc01hcmtPZmZzZXQgPSBvZmZzZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbGluZS9CcmVha2luZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9saW5lL0JyZWFraW5nQ29udGV4dC5oCmluZGV4IGQ2ZjVjY2Q5OTU2ZjE0ZmY1Mjc0NGNk
ZDcyNWQ5OGNjMmY1ZjZkMzYuLmUxYWI4ZDlhNThkOThlNjA3MWM0NzY2M2JkZTRjODk2YjA2YzUy
YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0JyZWFraW5nQ29u
dGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0JyZWFraW5nQ29udGV4
dC5oCkBAIC01NzYsNyArNTc2LDcgQEAgaW5saW5lIHZvaWQgZW5zdXJlQ2hhcmFjdGVyR2V0c0xp
bmVCb3goTGluZVdoaXRlc3BhY2VDb2xsYXBzaW5nU3RhdGUmIGxpbmVXaGl0ZXMKICAgICBsaW5l
V2hpdGVzcGFjZUNvbGxhcHNpbmdTdGF0ZS5zdG9wSWdub3JpbmdTcGFjZXMoSW5saW5lSXRlcmF0
b3IoMCwgdGV4dFBhcmFncmFwaFNlcGFyYXRvci5yZW5kZXJlcigpLCB0ZXh0UGFyYWdyYXBoU2Vw
YXJhdG9yLm9mZnNldCgpKSk7CiB9CiAKLWlubGluZSB2b2lkIHRyeUh5cGhlbmF0aW5nKFJlbmRl
clRleHQmIHRleHQsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBBdG9taWNTdHJpbmcm
IGxvY2FsZUlkZW50aWZpZXIsIHVuc2lnbmVkIGNvbnNlY3V0aXZlSHlwaGVuYXRlZExpbmVzLCBp
bnQgY29uc2VjdXRpdmVIeXBoZW5hdGVkTGluZXNMaW1pdCwgaW50IG1pbmltdW1QcmVmaXhMaW1p
dCwgaW50IG1pbmltdW1TdWZmaXhMaW1pdCwgdW5zaWduZWQgbGFzdFNwYWNlLCB1bnNpZ25lZCBw
b3MsIGZsb2F0IHhQb3MsIGZsb2F0IGF2YWlsYWJsZVdpZHRoLCBib29sIGlzRml4ZWRQaXRjaCwg
Ym9vbCBjb2xsYXBzZVdoaXRlU3BhY2UsIGludCBsYXN0U3BhY2VXb3JkU3BhY2luZywgSW5saW5l
SXRlcmF0b3ImIGxpbmVCcmVhaywgT3B0aW9uYWw8dW5zaWduZWQ+IG5leHRCcmVha2FibGUsIGJv
b2wmIGh5cGhlbmF0ZWQpCitpbmxpbmUgdm9pZCB0cnlIeXBoZW5hdGluZyhSZW5kZXJUZXh0JiB0
ZXh0LCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgQXRvbVN0cmluZyYgbG9jYWxlSWRl
bnRpZmllciwgdW5zaWduZWQgY29uc2VjdXRpdmVIeXBoZW5hdGVkTGluZXMsIGludCBjb25zZWN1
dGl2ZUh5cGhlbmF0ZWRMaW5lc0xpbWl0LCBpbnQgbWluaW11bVByZWZpeExpbWl0LCBpbnQgbWlu
aW11bVN1ZmZpeExpbWl0LCB1bnNpZ25lZCBsYXN0U3BhY2UsIHVuc2lnbmVkIHBvcywgZmxvYXQg
eFBvcywgZmxvYXQgYXZhaWxhYmxlV2lkdGgsIGJvb2wgaXNGaXhlZFBpdGNoLCBib29sIGNvbGxh
cHNlV2hpdGVTcGFjZSwgaW50IGxhc3RTcGFjZVdvcmRTcGFjaW5nLCBJbmxpbmVJdGVyYXRvciYg
bGluZUJyZWFrLCBPcHRpb25hbDx1bnNpZ25lZD4gbmV4dEJyZWFrYWJsZSwgYm9vbCYgaHlwaGVu
YXRlZCkKIHsKICAgICAvLyBNYXAgJ2h5cGhlbmF0ZS1saW1pdC17YmVmb3JlLGFmdGVyfTogYXV0
bzsnIHRvIDIuCiAgICAgdW5zaWduZWQgbWluaW11bVByZWZpeExlbmd0aDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Db3VudGVyQ29udGVudC5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvdW50ZXJDb250ZW50LmgKaW5kZXggOWE3ZDY1OWYz
ZmIzZWNhZDIxZTJlZDRlY2Q3ZTBjMGY2NTM4M2JiOS4uZTkyODBjMDMxMWFkZGM1OThiY2RkMTVk
NDI3NTBlOWQzYzNkNjE2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL0NvdW50ZXJDb250ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L0NvdW50ZXJDb250ZW50LmgKQEAgLTI1LDI4ICsyNSwyOCBAQAogI3ByYWdtYSBvbmNlCiAKICNp
bmNsdWRlICJSZW5kZXJTdHlsZUNvbnN0YW50cy5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21p
Y1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBDb3VudGVyQ29udGVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgQ291bnRlckNvbnRlbnQoY29uc3QgQXRvbWljU3RyaW5n
JiBpZGVudGlmaWVyLCBMaXN0U3R5bGVUeXBlIHN0eWxlLCBjb25zdCBBdG9taWNTdHJpbmcmIHNl
cGFyYXRvcikKKyAgICBDb3VudGVyQ29udGVudChjb25zdCBBdG9tU3RyaW5nJiBpZGVudGlmaWVy
LCBMaXN0U3R5bGVUeXBlIHN0eWxlLCBjb25zdCBBdG9tU3RyaW5nJiBzZXBhcmF0b3IpCiAgICAg
ICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiAgICAgICAgICwgbV9saXN0U3R5bGUoc3R5
bGUpCiAgICAgICAgICwgbV9zZXBhcmF0b3Ioc2VwYXJhdG9yKQogICAgIHsKICAgICB9CiAKLSAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50
aWZpZXI7IH0KKyAgICBjb25zdCBBdG9tU3RyaW5nJiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1
cm4gbV9pZGVudGlmaWVyOyB9CiAgICAgTGlzdFN0eWxlVHlwZSBsaXN0U3R5bGUoKSBjb25zdCB7
IHJldHVybiBtX2xpc3RTdHlsZTsgfQotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgc2VwYXJhdG9y
KCkgY29uc3QgeyByZXR1cm4gbV9zZXBhcmF0b3I7IH0KKyAgICBjb25zdCBBdG9tU3RyaW5nJiBz
ZXBhcmF0b3IoKSBjb25zdCB7IHJldHVybiBtX3NlcGFyYXRvcjsgfQogCiBwcml2YXRlOgotICAg
IEF0b21pY1N0cmluZyBtX2lkZW50aWZpZXI7CisgICAgQXRvbVN0cmluZyBtX2lkZW50aWZpZXI7
CiAgICAgTGlzdFN0eWxlVHlwZSBtX2xpc3RTdHlsZTsKLSAgICBBdG9taWNTdHJpbmcgbV9zZXBh
cmF0b3I7CisgICAgQXRvbVN0cmluZyBtX3NlcGFyYXRvcjsKIH07CiAKIHN0YXRpYyBpbmxpbmUg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IENvdW50ZXJDb250ZW50JiBhLCBjb25zdCBDb3VudGVyQ29u
dGVudCYgYikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Db3Vu
dGVyRGlyZWN0aXZlcy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvdW50ZXJE
aXJlY3RpdmVzLmgKaW5kZXggNTUwM2U5ZmU0NjY3NzIwZTczMThmNzIzMTc2YzIyNjc0MTI4N2Jj
ZS4uMTQwMjQ5MWUwOGFmOTcwNDEyOGY3MTJlMmE4ZGRmMjI4ZDkzM2VkZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvdW50ZXJEaXJlY3RpdmVzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvdW50ZXJEaXJlY3RpdmVzLmgKQEAgLTIx
LDcgKzIxLDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNp
bmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
QXRvbVN0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00MCw2ICs0MCw2
IEBAIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3QgQ291bnRlckRpcmVjdGl2ZXMmIGEs
IGNvbnN0IENvdW50ZXJEaXJlY3RpdmVzJiBiCiAgICAgcmV0dXJuICEoYSA9PSBiKTsKIH0KIAot
dXNpbmcgQ291bnRlckRpcmVjdGl2ZU1hcCA9IEhhc2hNYXA8QXRvbWljU3RyaW5nLCBDb3VudGVy
RGlyZWN0aXZlcz47Cit1c2luZyBDb3VudGVyRGlyZWN0aXZlTWFwID0gSGFzaE1hcDxBdG9tU3Ry
aW5nLCBDb3VudGVyRGlyZWN0aXZlcz47CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9LZXlmcmFtZUxpc3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9LZXlmcmFtZUxpc3QuaAppbmRleCBkNjZmMjk4
ZmRjZGQ2MGU5NWNlMTZhYzllNmRkYmYxYWYzNDhkZjA3Li5jOTMyY2Q1NmFkMWFiYWJjMmQ2YzFi
OThkNDA4NzM2Y2ZlMWRlOWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvS2V5ZnJhbWVMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L0tleWZyYW1lTGlzdC5oCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlO
YW1lcy5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5o
PgotI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L0F0b21TdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02NCw3ICs2NCw3IEBA
IHByaXZhdGU6CiAKIGNsYXNzIEtleWZyYW1lTGlzdCB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQg
S2V5ZnJhbWVMaXN0KGNvbnN0IEF0b21pY1N0cmluZyYgYW5pbWF0aW9uTmFtZSkKKyAgICBleHBs
aWNpdCBLZXlmcmFtZUxpc3QoY29uc3QgQXRvbVN0cmluZyYgYW5pbWF0aW9uTmFtZSkKICAgICAg
ICAgOiBtX2FuaW1hdGlvbk5hbWUoYW5pbWF0aW9uTmFtZSkKICAgICB7CiAgICAgfQpAQCAtNzQs
NyArNzQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEtleWZyYW1lTGlz
dCYgbykgY29uc3Q7CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEtleWZyYW1lTGlzdCYgbykg
Y29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvKTsgfQogCi0gICAgY29uc3QgQXRvbWljU3RyaW5n
JiBhbmltYXRpb25OYW1lKCkgY29uc3QgeyByZXR1cm4gbV9hbmltYXRpb25OYW1lOyB9CisgICAg
Y29uc3QgQXRvbVN0cmluZyYgYW5pbWF0aW9uTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fYW5pbWF0
aW9uTmFtZTsgfQogICAgIAogICAgIHZvaWQgaW5zZXJ0KEtleWZyYW1lVmFsdWUmJik7CiAgICAg
CkBAIC04OSw3ICs4OSw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBWZWN0b3I8S2V5ZnJhbWVWYWx1
ZT4mIGtleWZyYW1lcygpIGNvbnN0IHsgcmV0dXJuIG1fa2V5ZnJhbWVzOyB9CiAKIHByaXZhdGU6
Ci0gICAgQXRvbWljU3RyaW5nIG1fYW5pbWF0aW9uTmFtZTsKKyAgICBBdG9tU3RyaW5nIG1fYW5p
bWF0aW9uTmFtZTsKICAgICBWZWN0b3I8S2V5ZnJhbWVWYWx1ZT4gbV9rZXlmcmFtZXM7IC8vIEtl
cHQgc29ydGVkIGJ5IGtleS4KICAgICBIYXNoU2V0PENTU1Byb3BlcnR5SUQ+IG1fcHJvcGVydGll
czsgLy8gVGhlIHByb3BlcnRpZXMgYmVpbmcgYW5pbWF0ZWQuCiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKaW5kZXggMGFhNzk3MTFlOWJlNDQ1
OGNhNzU2NzIzMzQ5MzI1MWJlZjhiN2Q5MC4uMTRiMWNhMDM4NzRiYzhkNzI2MTY3M2Q0MDcxYTIz
Yjc0ZmI2ZmY3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1Jl
bmRlclN0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuY3BwCkBAIC0xNDc3LDcgKzE0NzcsNyBAQCBDb3VudGVyRGlyZWN0aXZlTWFwJiBSZW5k
ZXJTdHlsZTo6YWNjZXNzQ291bnRlckRpcmVjdGl2ZXMoKQogICAgIHJldHVybiAqbWFwOwogfQog
Ci1jb25zdCBBdG9taWNTdHJpbmcmIFJlbmRlclN0eWxlOjpoeXBoZW5TdHJpbmcoKSBjb25zdAor
Y29uc3QgQXRvbVN0cmluZyYgUmVuZGVyU3R5bGU6Omh5cGhlblN0cmluZygpIGNvbnN0CiB7CiAg
ICAgQVNTRVJUKGh5cGhlbnMoKSAhPSBIeXBoZW5zOjpOb25lKTsKIApAQCAtMTQ4NiwxMiArMTQ4
NiwxMiBAQCBjb25zdCBBdG9taWNTdHJpbmcmIFJlbmRlclN0eWxlOjpoeXBoZW5TdHJpbmcoKSBj
b25zdAogICAgICAgICByZXR1cm4gaHlwaGVuYXRpb25TdHJpbmc7CiAKICAgICAvLyBGSVhNRTog
VGhpcyBzaG91bGQgZGVwZW5kIG9uIGxvY2FsZS4KLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
QXRvbWljU3RyaW5nPiBoeXBoZW5NaW51c1N0cmluZygmaHlwaGVuTWludXMsIDEpOwotICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGh5cGhlblN0cmluZygmaHlwaGVuLCAx
KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbVN0cmluZz4gaHlwaGVuTWludXNTdHJp
bmcoJmh5cGhlbk1pbnVzLCAxKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbVN0cmlu
Zz4gaHlwaGVuU3RyaW5nKCZoeXBoZW4sIDEpOwogICAgIHJldHVybiBmb250Q2FzY2FkZSgpLnBy
aW1hcnlGb250KCkuZ2x5cGhGb3JDaGFyYWN0ZXIoaHlwaGVuKSA/IGh5cGhlblN0cmluZyA6IGh5
cGhlbk1pbnVzU3RyaW5nOwogfQogCi1jb25zdCBBdG9taWNTdHJpbmcmIFJlbmRlclN0eWxlOjp0
ZXh0RW1waGFzaXNNYXJrU3RyaW5nKCkgY29uc3QKK2NvbnN0IEF0b21TdHJpbmcmIFJlbmRlclN0
eWxlOjp0ZXh0RW1waGFzaXNNYXJrU3RyaW5nKCkgY29uc3QKIHsKICAgICBzd2l0Y2ggKHRleHRF
bXBoYXNpc01hcmsoKSkgewogICAgIGNhc2UgVGV4dEVtcGhhc2lzTWFyazo6Tm9uZToKQEAgLTE0
OTksMjggKzE0OTksMjggQEAgY29uc3QgQXRvbWljU3RyaW5nJiBSZW5kZXJTdHlsZTo6dGV4dEVt
cGhhc2lzTWFya1N0cmluZygpIGNvbnN0CiAgICAgY2FzZSBUZXh0RW1waGFzaXNNYXJrOjpDdXN0
b206CiAgICAgICAgIHJldHVybiB0ZXh0RW1waGFzaXNDdXN0b21NYXJrKCk7CiAgICAgY2FzZSBU
ZXh0RW1waGFzaXNNYXJrOjpEb3Q6IHsKLSAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0
b21pY1N0cmluZz4gZmlsbGVkRG90U3RyaW5nKCZidWxsZXQsIDEpOwotICAgICAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBvcGVuRG90U3RyaW5nKCZ3aGl0ZUJ1bGxldCwg
MSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9tU3RyaW5nPiBmaWxsZWREb3RT
dHJpbmcoJmJ1bGxldCwgMSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9tU3Ry
aW5nPiBvcGVuRG90U3RyaW5nKCZ3aGl0ZUJ1bGxldCwgMSk7CiAgICAgICAgIHJldHVybiB0ZXh0
RW1waGFzaXNGaWxsKCkgPT0gVGV4dEVtcGhhc2lzRmlsbDo6RmlsbGVkID8gZmlsbGVkRG90U3Ry
aW5nIDogb3BlbkRvdFN0cmluZzsKICAgICB9CiAgICAgY2FzZSBUZXh0RW1waGFzaXNNYXJrOjpD
aXJjbGU6IHsKLSAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gZmls
bGVkQ2lyY2xlU3RyaW5nKCZibGFja0NpcmNsZSwgMSk7Ci0gICAgICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxBdG9taWNTdHJpbmc+IG9wZW5DaXJjbGVTdHJpbmcoJndoaXRlQ2lyY2xlLCAxKTsK
KyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21TdHJpbmc+IGZpbGxlZENpcmNsZVN0
cmluZygmYmxhY2tDaXJjbGUsIDEpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRv
bVN0cmluZz4gb3BlbkNpcmNsZVN0cmluZygmd2hpdGVDaXJjbGUsIDEpOwogICAgICAgICByZXR1
cm4gdGV4dEVtcGhhc2lzRmlsbCgpID09IFRleHRFbXBoYXNpc0ZpbGw6OkZpbGxlZCA/IGZpbGxl
ZENpcmNsZVN0cmluZyA6IG9wZW5DaXJjbGVTdHJpbmc7CiAgICAgfQogICAgIGNhc2UgVGV4dEVt
cGhhc2lzTWFyazo6RG91YmxlQ2lyY2xlOiB7Ci0gICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxBdG9taWNTdHJpbmc+IGZpbGxlZERvdWJsZUNpcmNsZVN0cmluZygmZmlzaGV5ZSwgMSk7Ci0g
ICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG9wZW5Eb3VibGVDaXJj
bGVTdHJpbmcoJmJ1bGxzZXllLCAxKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0
b21TdHJpbmc+IGZpbGxlZERvdWJsZUNpcmNsZVN0cmluZygmZmlzaGV5ZSwgMSk7CisgICAgICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9tU3RyaW5nPiBvcGVuRG91YmxlQ2lyY2xlU3RyaW5n
KCZidWxsc2V5ZSwgMSk7CiAgICAgICAgIHJldHVybiB0ZXh0RW1waGFzaXNGaWxsKCkgPT0gVGV4
dEVtcGhhc2lzRmlsbDo6RmlsbGVkID8gZmlsbGVkRG91YmxlQ2lyY2xlU3RyaW5nIDogb3BlbkRv
dWJsZUNpcmNsZVN0cmluZzsKICAgICB9CiAgICAgY2FzZSBUZXh0RW1waGFzaXNNYXJrOjpUcmlh
bmdsZTogewotICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBmaWxs
ZWRUcmlhbmdsZVN0cmluZygmYmxhY2tVcFBvaW50aW5nVHJpYW5nbGUsIDEpOwotICAgICAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBvcGVuVHJpYW5nbGVTdHJpbmcoJndo
aXRlVXBQb2ludGluZ1RyaWFuZ2xlLCAxKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEF0b21TdHJpbmc+IGZpbGxlZFRyaWFuZ2xlU3RyaW5nKCZibGFja1VwUG9pbnRpbmdUcmlhbmds
ZSwgMSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9tU3RyaW5nPiBvcGVuVHJp
YW5nbGVTdHJpbmcoJndoaXRlVXBQb2ludGluZ1RyaWFuZ2xlLCAxKTsKICAgICAgICAgcmV0dXJu
IHRleHRFbXBoYXNpc0ZpbGwoKSA9PSBUZXh0RW1waGFzaXNGaWxsOjpGaWxsZWQgPyBmaWxsZWRU
cmlhbmdsZVN0cmluZyA6IG9wZW5UcmlhbmdsZVN0cmluZzsKICAgICB9CiAgICAgY2FzZSBUZXh0
RW1waGFzaXNNYXJrOjpTZXNhbWU6IHsKLSAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0
b21pY1N0cmluZz4gZmlsbGVkU2VzYW1lU3RyaW5nKCZzZXNhbWVEb3QsIDEpOwotICAgICAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBvcGVuU2VzYW1lU3RyaW5nKCZ3aGl0
ZVNlc2FtZURvdCwgMSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9tU3RyaW5n
PiBmaWxsZWRTZXNhbWVTdHJpbmcoJnNlc2FtZURvdCwgMSk7CisgICAgICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxBdG9tU3RyaW5nPiBvcGVuU2VzYW1lU3RyaW5nKCZ3aGl0ZVNlc2FtZURvdCwg
MSk7CiAgICAgICAgIHJldHVybiB0ZXh0RW1waGFzaXNGaWxsKCkgPT0gVGV4dEVtcGhhc2lzRmls
bDo6RmlsbGVkID8gZmlsbGVkU2VzYW1lU3RyaW5nIDogb3BlblNlc2FtZVN0cmluZzsKICAgICB9
CiAgICAgY2FzZSBUZXh0RW1waGFzaXNNYXJrOjpBdXRvOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAppbmRleCAyYzU1ZDAxMmRlMmJlOGQ3OTAzOTA4ZDFl
NjQxZDJkYzUyZjc4YWZkLi5lYzMwZWE2M2ZhODUwNzk3MjM2M2UxZDRiOGExMTNmYjcxYjVlZWQ2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaApAQCAt
MTg2LDkgKzE4Niw5IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IEN1c3RvbVByb3BlcnR5VmFsdWVN
YXAmIGluaGVyaXRlZEN1c3RvbVByb3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiBtX3JhcmVJbmhl
cml0ZWREYXRhLT5jdXN0b21Qcm9wZXJ0aWVzLT52YWx1ZXM7IH0KICAgICBjb25zdCBDdXN0b21Q
cm9wZXJ0eVZhbHVlTWFwJiBub25Jbmhlcml0ZWRDdXN0b21Qcm9wZXJ0aWVzKCkgY29uc3QgeyBy
ZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Y3VzdG9tUHJvcGVydGllcy0+dmFsdWVzOyB9
Ci0gICAgY29uc3QgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZSogZ2V0Q3VzdG9tUHJvcGVydHkoY29u
c3QgQXRvbWljU3RyaW5nJikgY29uc3Q7Ci0gICAgdm9pZCBzZXRJbmhlcml0ZWRDdXN0b21Qcm9w
ZXJ0eVZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgUmVmPENTU0N1c3RvbVByb3BlcnR5
VmFsdWU+JiYgdmFsdWUpIHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEuYWNjZXNzKCkuY3Vz
dG9tUHJvcGVydGllcy5hY2Nlc3MoKS5zZXRDdXN0b21Qcm9wZXJ0eVZhbHVlKG5hbWUsIFdURk1v
dmUodmFsdWUpKTsgfQotICAgIHZvaWQgc2V0Tm9uSW5oZXJpdGVkQ3VzdG9tUHJvcGVydHlWYWx1
ZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIFJlZjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiYm
IHZhbHVlKSB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLmN1c3RvbVBy
b3BlcnRpZXMuYWNjZXNzKCkuc2V0Q3VzdG9tUHJvcGVydHlWYWx1ZShuYW1lLCBXVEZNb3ZlKHZh
bHVlKSk7IH0KKyAgICBjb25zdCBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlKiBnZXRDdXN0b21Qcm9w
ZXJ0eShjb25zdCBBdG9tU3RyaW5nJikgY29uc3Q7CisgICAgdm9pZCBzZXRJbmhlcml0ZWRDdXN0
b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIFJlZjxDU1NDdXN0b21Qcm9w
ZXJ0eVZhbHVlPiYmIHZhbHVlKSB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLmFjY2Vzcygp
LmN1c3RvbVByb3BlcnRpZXMuYWNjZXNzKCkuc2V0Q3VzdG9tUHJvcGVydHlWYWx1ZShuYW1lLCBX
VEZNb3ZlKHZhbHVlKSk7IH0KKyAgICB2b2lkIHNldE5vbkluaGVyaXRlZEN1c3RvbVByb3BlcnR5
VmFsdWUoY29uc3QgQXRvbVN0cmluZyYgbmFtZSwgUmVmPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+
JiYgdmFsdWUpIHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkuY3VzdG9t
UHJvcGVydGllcy5hY2Nlc3MoKS5zZXRDdXN0b21Qcm9wZXJ0eVZhbHVlKG5hbWUsIFdURk1vdmUo
dmFsdWUpKTsgfQogCiAgICAgdm9pZCBzZXRIYXNWaWV3cG9ydFVuaXRzKGJvb2wgdiA9IHRydWUp
IHsgbV9ub25Jbmhlcml0ZWRGbGFncy5oYXNWaWV3cG9ydFVuaXRzID0gdjsgfQogICAgIGJvb2wg
aGFzVmlld3BvcnRVbml0cygpIGNvbnN0IHsgcmV0dXJuIG1fbm9uSW5oZXJpdGVkRmxhZ3MuaGFz
Vmlld3BvcnRVbml0czsgfQpAQCAtNTk4LDggKzU5OCw4IEBAIHB1YmxpYzoKICAgICBzaG9ydCBo
eXBoZW5hdGlvbkxpbWl0QmVmb3JlKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5oZXJpdGVkRGF0
YS0+aHlwaGVuYXRpb25MaW1pdEJlZm9yZTsgfQogICAgIHNob3J0IGh5cGhlbmF0aW9uTGltaXRB
ZnRlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEtPmh5cGhlbmF0aW9uTGlt
aXRBZnRlcjsgfQogICAgIHNob3J0IGh5cGhlbmF0aW9uTGltaXRMaW5lcygpIGNvbnN0IHsgcmV0
dXJuIG1fcmFyZUluaGVyaXRlZERhdGEtPmh5cGhlbmF0aW9uTGltaXRMaW5lczsgfQotICAgIGNv
bnN0IEF0b21pY1N0cmluZyYgaHlwaGVuYXRpb25TdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3Jh
cmVJbmhlcml0ZWREYXRhLT5oeXBoZW5hdGlvblN0cmluZzsgfQotICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgbG9jYWxlKCkgY29uc3QgeyByZXR1cm4gZm9udERlc2NyaXB0aW9uKCkubG9jYWxlKCk7
IH0KKyAgICBjb25zdCBBdG9tU3RyaW5nJiBoeXBoZW5hdGlvblN0cmluZygpIGNvbnN0IHsgcmV0
dXJuIG1fcmFyZUluaGVyaXRlZERhdGEtPmh5cGhlbmF0aW9uU3RyaW5nOyB9CisgICAgY29uc3Qg
QXRvbVN0cmluZyYgbG9jYWxlKCkgY29uc3QgeyByZXR1cm4gZm9udERlc2NyaXB0aW9uKCkubG9j
YWxlKCk7IH0KICAgICBCb3JkZXJGaXQgYm9yZGVyRml0KCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8Qm9yZGVyRml0PihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5ib3JkZXJGaXQpOyB9CiAg
ICAgUmVzaXplIHJlc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFJlc2l6ZT4obV9y
YXJlTm9uSW5oZXJpdGVkRGF0YS0+cmVzaXplKTsgfQogICAgIENvbHVtbkF4aXMgY29sdW1uQXhp
cygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbHVtbkF4aXM+KG1fcmFyZU5vbkluaGVy
aXRlZERhdGEtPm11bHRpQ29sLT5heGlzKTsgfQpAQCAtNjI3LDkgKzYyNyw5IEBAIHB1YmxpYzoK
IAogICAgIFRleHRFbXBoYXNpc0ZpbGwgdGV4dEVtcGhhc2lzRmlsbCgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PFRleHRFbXBoYXNpc0ZpbGw+KG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRF
bXBoYXNpc0ZpbGwpOyB9CiAgICAgVGV4dEVtcGhhc2lzTWFyayB0ZXh0RW1waGFzaXNNYXJrKCkg
Y29uc3Q7Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiB0ZXh0RW1waGFzaXNDdXN0b21NYXJrKCkg
Y29uc3QgeyByZXR1cm4gbV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEVtcGhhc2lzQ3VzdG9tTWFy
azsgfQorICAgIGNvbnN0IEF0b21TdHJpbmcmIHRleHRFbXBoYXNpc0N1c3RvbU1hcmsoKSBjb25z
dCB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0RW1waGFzaXNDdXN0b21NYXJrOyB9
CiAgICAgT3B0aW9uU2V0PFRleHRFbXBoYXNpc1Bvc2l0aW9uPiB0ZXh0RW1waGFzaXNQb3NpdGlv
bigpIGNvbnN0IHsgcmV0dXJuIE9wdGlvblNldDxUZXh0RW1waGFzaXNQb3NpdGlvbj46OmZyb21S
YXcobV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEVtcGhhc2lzUG9zaXRpb24pOyB9Ci0gICAgY29u
c3QgQXRvbWljU3RyaW5nJiB0ZXh0RW1waGFzaXNNYXJrU3RyaW5nKCkgY29uc3Q7CisgICAgY29u
c3QgQXRvbVN0cmluZyYgdGV4dEVtcGhhc2lzTWFya1N0cmluZygpIGNvbnN0OwogCiAgICAgUnVi
eVBvc2l0aW9uIHJ1YnlQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFJ1YnlQ
b3NpdGlvbj4obV9yYXJlSW5oZXJpdGVkRGF0YS0+cnVieVBvc2l0aW9uKTsgfQogCkBAIC02NjEs
NyArNjYxLDcgQEAgcHVibGljOgogCiAgICAgLy8gRW5kIENTUzMgR2V0dGVycwogCi0gICAgY29u
c3QgQXRvbWljU3RyaW5nJiBsaW5lR3JpZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUluaGVyaXRl
ZERhdGEtPmxpbmVHcmlkOyB9CisgICAgY29uc3QgQXRvbVN0cmluZyYgbGluZUdyaWQoKSBjb25z
dCB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLT5saW5lR3JpZDsgfQogICAgIExpbmVTbmFw
IGxpbmVTbmFwKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8TGluZVNuYXA+KG1fcmFyZUlu
aGVyaXRlZERhdGEtPmxpbmVTbmFwKTsgfQogICAgIExpbmVBbGlnbiBsaW5lQWxpZ24oKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxMaW5lQWxpZ24+KG1fcmFyZUluaGVyaXRlZERhdGEtPmxp
bmVBbGlnbik7IH0KIApAQCAtMTEyOSw3ICsxMTI5LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0
SHlwaGVuYXRpb25MaW1pdEJlZm9yZShzaG9ydCBsaW1pdCkgeyBTRVRfVkFSKG1fcmFyZUluaGVy
aXRlZERhdGEsIGh5cGhlbmF0aW9uTGltaXRCZWZvcmUsIGxpbWl0KTsgfQogICAgIHZvaWQgc2V0
SHlwaGVuYXRpb25MaW1pdEFmdGVyKHNob3J0IGxpbWl0KSB7IFNFVF9WQVIobV9yYXJlSW5oZXJp
dGVkRGF0YSwgaHlwaGVuYXRpb25MaW1pdEFmdGVyLCBsaW1pdCk7IH0KICAgICB2b2lkIHNldEh5
cGhlbmF0aW9uTGltaXRMaW5lcyhzaG9ydCBsaW1pdCkgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRl
ZERhdGEsIGh5cGhlbmF0aW9uTGltaXRMaW5lcywgbGltaXQpOyB9Ci0gICAgdm9pZCBzZXRIeXBo
ZW5hdGlvblN0cmluZyhjb25zdCBBdG9taWNTdHJpbmcmIGgpIHsgU0VUX1ZBUihtX3JhcmVJbmhl
cml0ZWREYXRhLCBoeXBoZW5hdGlvblN0cmluZywgaCk7IH0KKyAgICB2b2lkIHNldEh5cGhlbmF0
aW9uU3RyaW5nKGNvbnN0IEF0b21TdHJpbmcmIGgpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWRE
YXRhLCBoeXBoZW5hdGlvblN0cmluZywgaCk7IH0KICAgICB2b2lkIHNldEJvcmRlckZpdChCb3Jk
ZXJGaXQgYikgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGJvcmRlckZpdCwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGIpKTsgfQogICAgIHZvaWQgc2V0UmVzaXplKFJlc2l6ZSByKSB7
IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgcmVzaXplLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4ocikpOyB9CiAgICAgdm9pZCBzZXRDb2x1bW5BeGlzKENvbHVtbkF4aXMgYXhpcykgeyBT
RVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBtdWx0aUNvbCwgYXhpcywgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGF4aXMpKTsgfQpAQCAtMTE2MCw3ICsxMTYwLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0VGV4dEVtcGhhc2lzQ29sb3IoY29uc3QgQ29sb3ImIGMpIHsgU0VUX1ZB
UihtX3JhcmVJbmhlcml0ZWREYXRhLCB0ZXh0RW1waGFzaXNDb2xvciwgYyk7IH0KICAgICB2b2lk
IHNldFRleHRFbXBoYXNpc0ZpbGwoVGV4dEVtcGhhc2lzRmlsbCBmaWxsKSB7IFNFVF9WQVIobV9y
YXJlSW5oZXJpdGVkRGF0YSwgdGV4dEVtcGhhc2lzRmlsbCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGZpbGwpKTsgfQogICAgIHZvaWQgc2V0VGV4dEVtcGhhc2lzTWFyayhUZXh0RW1waGFzaXNNYXJr
IG1hcmspIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCB0ZXh0RW1waGFzaXNNYXJrLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4obWFyaykpOyB9Ci0gICAgdm9pZCBzZXRUZXh0RW1waGFzaXND
dXN0b21NYXJrKGNvbnN0IEF0b21pY1N0cmluZyYgbWFyaykgeyBTRVRfVkFSKG1fcmFyZUluaGVy
aXRlZERhdGEsIHRleHRFbXBoYXNpc0N1c3RvbU1hcmssIG1hcmspOyB9CisgICAgdm9pZCBzZXRU
ZXh0RW1waGFzaXNDdXN0b21NYXJrKGNvbnN0IEF0b21TdHJpbmcmIG1hcmspIHsgU0VUX1ZBUiht
X3JhcmVJbmhlcml0ZWREYXRhLCB0ZXh0RW1waGFzaXNDdXN0b21NYXJrLCBtYXJrKTsgfQogICAg
IHZvaWQgc2V0VGV4dEVtcGhhc2lzUG9zaXRpb24oT3B0aW9uU2V0PFRleHRFbXBoYXNpc1Bvc2l0
aW9uPiBwb3NpdGlvbikgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHRleHRFbXBoYXNp
c1Bvc2l0aW9uLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocG9zaXRpb24udG9SYXcoKSkpOyB9CiAg
ICAgYm9vbCBzZXRUZXh0T3JpZW50YXRpb24oVGV4dE9yaWVudGF0aW9uKTsKIApAQCAtMTE5MCw3
ICsxMTkwLDcgQEAgcHVibGljOgogCiAgICAgLy8gRW5kIENTUzMgU2V0dGVycwogCi0gICAgdm9p
ZCBzZXRMaW5lR3JpZChjb25zdCBBdG9taWNTdHJpbmcmIGxpbmVHcmlkKSB7IFNFVF9WQVIobV9y
YXJlSW5oZXJpdGVkRGF0YSwgbGluZUdyaWQsIGxpbmVHcmlkKTsgfQorICAgIHZvaWQgc2V0TGlu
ZUdyaWQoY29uc3QgQXRvbVN0cmluZyYgbGluZUdyaWQpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0
ZWREYXRhLCBsaW5lR3JpZCwgbGluZUdyaWQpOyB9CiAgICAgdm9pZCBzZXRMaW5lU25hcChMaW5l
U25hcCBsaW5lU25hcCkgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIGxpbmVTbmFwLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4obGluZVNuYXApKTsgfQogICAgIHZvaWQgc2V0TGluZUFsaWdu
KExpbmVBbGlnbiBsaW5lQWxpZ24pIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBsaW5l
QWxpZ24sIHN0YXRpY19jYXN0PHVuc2lnbmVkPihsaW5lQWxpZ24pKTsgfQogCkBAIC0xMzk0LDcg
KzEzOTQsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIHdpbGxDaGFuZ2VDcmVhdGVzU3RhY2tpbmdD
b250ZXh0KCkgY29uc3Q7CiAKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGh5cGhlblN0cmluZygp
IGNvbnN0OworICAgIGNvbnN0IEF0b21TdHJpbmcmIGh5cGhlblN0cmluZygpIGNvbnN0OwogCiAg
ICAgYm9vbCBpbmhlcml0ZWROb3RFcXVhbChjb25zdCBSZW5kZXJTdHlsZSopIGNvbnN0OwogICAg
IGJvb2wgaW5oZXJpdGVkRGF0YVNoYXJlZChjb25zdCBSZW5kZXJTdHlsZSopIGNvbnN0OwpAQCAt
MTU0OCw3ICsxNTQ4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBzaG9ydCBpbml0aWFsSHlwaGVu
YXRpb25MaW1pdEJlZm9yZSgpIHsgcmV0dXJuIC0xOyB9CiAgICAgc3RhdGljIHNob3J0IGluaXRp
YWxIeXBoZW5hdGlvbkxpbWl0QWZ0ZXIoKSB7IHJldHVybiAtMTsgfQogICAgIHN0YXRpYyBzaG9y
dCBpbml0aWFsSHlwaGVuYXRpb25MaW1pdExpbmVzKCkgeyByZXR1cm4gLTE7IH0KLSAgICBzdGF0
aWMgY29uc3QgQXRvbWljU3RyaW5nJiBpbml0aWFsSHlwaGVuYXRpb25TdHJpbmcoKSB7IHJldHVy
biBudWxsQXRvbSgpOyB9CisgICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGluaXRpYWxIeXBo
ZW5hdGlvblN0cmluZygpIHsgcmV0dXJuIG51bGxBdG9tKCk7IH0KICAgICBzdGF0aWMgQm9yZGVy
Rml0IGluaXRpYWxCb3JkZXJGaXQoKSB7IHJldHVybiBCb3JkZXJGaXQ6OkJvcmRlcjsgfQogICAg
IHN0YXRpYyBSZXNpemUgaW5pdGlhbFJlc2l6ZSgpIHsgcmV0dXJuIFJlc2l6ZTo6Tm9uZTsgfQog
ICAgIHN0YXRpYyBDb250cm9sUGFydCBpbml0aWFsQXBwZWFyYW5jZSgpIHsgcmV0dXJuIE5vQ29u
dHJvbFBhcnQ7IH0KQEAgLTE1NzcsNyArMTU3Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgQ29s
b3IgaW5pdGlhbFRleHRFbXBoYXNpc0NvbG9yKCkgeyByZXR1cm4gQ29sb3IoKTsgfQogICAgIHN0
YXRpYyBUZXh0RW1waGFzaXNGaWxsIGluaXRpYWxUZXh0RW1waGFzaXNGaWxsKCkgeyByZXR1cm4g
VGV4dEVtcGhhc2lzRmlsbDo6RmlsbGVkOyB9CiAgICAgc3RhdGljIFRleHRFbXBoYXNpc01hcmsg
aW5pdGlhbFRleHRFbXBoYXNpc01hcmsoKSB7IHJldHVybiBUZXh0RW1waGFzaXNNYXJrOjpOb25l
OyB9Ci0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgaW5pdGlhbFRleHRFbXBoYXNpc0N1
c3RvbU1hcmsoKSB7IHJldHVybiBudWxsQXRvbSgpOyB9CisgICAgc3RhdGljIGNvbnN0IEF0b21T
dHJpbmcmIGluaXRpYWxUZXh0RW1waGFzaXNDdXN0b21NYXJrKCkgeyByZXR1cm4gbnVsbEF0b20o
KTsgfQogICAgIHN0YXRpYyBPcHRpb25TZXQ8VGV4dEVtcGhhc2lzUG9zaXRpb24+IGluaXRpYWxU
ZXh0RW1waGFzaXNQb3NpdGlvbigpIHsgcmV0dXJuIHsgVGV4dEVtcGhhc2lzUG9zaXRpb246Ok92
ZXIsIFRleHRFbXBoYXNpc1Bvc2l0aW9uOjpSaWdodCB9OyB9CiAgICAgc3RhdGljIFJ1YnlQb3Np
dGlvbiBpbml0aWFsUnVieVBvc2l0aW9uKCkgeyByZXR1cm4gUnVieVBvc2l0aW9uOjpCZWZvcmU7
IH0KICAgICBzdGF0aWMgTGluZUJveENvbnRhaW4gaW5pdGlhbExpbmVCb3hDb250YWluKCkgeyBy
ZXR1cm4gTGluZUJveENvbnRhaW5CbG9jayB8IExpbmVCb3hDb250YWluSW5saW5lIHwgTGluZUJv
eENvbnRhaW5SZXBsYWNlZDsgfQpAQCAtMTU5MCw3ICsxNTkwLDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBTdHlsZUltYWdlKiBpbml0aWFsTWFza0JveEltYWdlU291cmNlKCkgeyByZXR1cm4gbnVs
bHB0cjsgfQogICAgIHN0YXRpYyBQcmludENvbG9yQWRqdXN0IGluaXRpYWxQcmludENvbG9yQWRq
dXN0KCkgeyByZXR1cm4gUHJpbnRDb2xvckFkanVzdDo6RWNvbm9teTsgfQogICAgIHN0YXRpYyBR
dW90ZXNEYXRhKiBpbml0aWFsUXVvdGVzKCkgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHN0YXRp
YyBjb25zdCBBdG9taWNTdHJpbmcmIGluaXRpYWxDb250ZW50QWx0VGV4dCgpIHsgcmV0dXJuIGVt
cHR5QXRvbSgpOyB9CisgICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGluaXRpYWxDb250ZW50
QWx0VGV4dCgpIHsgcmV0dXJuIGVtcHR5QXRvbSgpOyB9CiAKICNpZiBFTkFCTEUoREFSS19NT0RF
X0NTUykKICAgICBzdGF0aWMgU3R5bGVDb2xvclNjaGVtZSBpbml0aWFsQ29sb3JTY2hlbWUoKSB7
IHJldHVybiB7IH07IH0KQEAgLTE2NjQsNyArMTY2NCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRp
YyBUYWJTaXplIGluaXRpYWxUYWJTaXplKCkgeyByZXR1cm4gODsgfQogCi0gICAgc3RhdGljIGNv
bnN0IEF0b21pY1N0cmluZyYgaW5pdGlhbExpbmVHcmlkKCkgeyByZXR1cm4gbnVsbEF0b20oKTsg
fQorICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBpbml0aWFsTGluZUdyaWQoKSB7IHJldHVy
biBudWxsQXRvbSgpOyB9CiAgICAgc3RhdGljIExpbmVTbmFwIGluaXRpYWxMaW5lU25hcCgpIHsg
cmV0dXJuIExpbmVTbmFwOjpOb25lOyB9CiAgICAgc3RhdGljIExpbmVBbGlnbiBpbml0aWFsTGlu
ZUFsaWduKCkgeyByZXR1cm4gTGluZUFsaWduOjpOb25lOyB9CiAKQEAgLTIwMjksNyArMjAyOSw3
IEBAIGlubGluZSBCb3JkZXJTdHlsZSBjb2xsYXBzZWRCb3JkZXJTdHlsZShCb3JkZXJTdHlsZSBz
dHlsZSkKICAgICByZXR1cm4gc3R5bGU7CiB9CiAKLWlubGluZSBjb25zdCBDU1NDdXN0b21Qcm9w
ZXJ0eVZhbHVlKiBSZW5kZXJTdHlsZTo6Z2V0Q3VzdG9tUHJvcGVydHkoY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lKSBjb25zdAoraW5saW5lIGNvbnN0IENTU0N1c3RvbVByb3BlcnR5VmFsdWUqIFJl
bmRlclN0eWxlOjpnZXRDdXN0b21Qcm9wZXJ0eShjb25zdCBBdG9tU3RyaW5nJiBuYW1lKSBjb25z
dAogewogICAgIGZvciAoYXV0byogbWFwIDogeyAmbm9uSW5oZXJpdGVkQ3VzdG9tUHJvcGVydGll
cygpLCAmaW5oZXJpdGVkQ3VzdG9tUHJvcGVydGllcygpIH0pIHsKICAgICAgICAgaWYgKGF1dG8q
IHZhbCA9IG1hcC0+Z2V0KG5hbWUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlQ3VzdG9tUHJvcGVydHlEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEuaAppbmRleCAxMzJlNmY1MjU2MGU2
NWNhYzU0ZTRjNWI1M2ZkN2Q0MTAzNWY3NWZhLi5lY2M3NzgyOTM5ODFlN2MyZDY1NjZhNWExN2Uw
ZjIwYmY1ZTEyMTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEuaApAQCAtMjcsNyArMjcsNyBAQAogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nSGFzaC5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIG9wZXJhdG9yIT0oY29u
c3QgU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEmIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlz
ID09IG90aGVyKTsgfQogICAgIAotICAgIHZvaWQgc2V0Q3VzdG9tUHJvcGVydHlWYWx1ZShjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWUsIFJlZjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiYmIHZhbHVl
KQorICAgIHZvaWQgc2V0Q3VzdG9tUHJvcGVydHlWYWx1ZShjb25zdCBBdG9tU3RyaW5nJiBuYW1l
LCBSZWY8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4mJiB2YWx1ZSkKICAgICB7CiAgICAgICAgIHZh
bHVlcy5zZXQobmFtZSwgV1RGTW92ZSh2YWx1ZSkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcApp
bmRleCAxNGUzMWI1YzUwNmFmZmQ1M2E2YmE5MzRhMGM1YzEyZTcwOWZiMDU4Li5hZDJjYmQ5NTdl
ZWY4MjU2MGNmYjM1MmU5ZjUwYjM5ZTYzM2EyNmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwCkBAIC00
Miw3ICs0Miw3IEBAIHN0cnVjdCBHcmVhdGVyVGhhbk9yU2FtZVNpemVBc1N0eWxlUmFyZUluaGVy
aXRlZERhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxHcmVhdGVyCiAgICAgZmxvYXQgZmlyc3RGbG9h
dDsKICAgICBDb2xvciBjb2xvcnNbOV07CiAgICAgdm9pZCogb3duUHRyc1sxXTsKLSAgICBBdG9t
aWNTdHJpbmcgYXRvbWljU3RyaW5nc1s1XTsKKyAgICBBdG9tU3RyaW5nIGF0b21TdHJpbmdzWzVd
OwogICAgIHZvaWQqIHJlZlB0cnNbM107CiAgICAgTGVuZ3RoIGxlbmd0aHNbMl07CiAgICAgZmxv
YXQgc2Vjb25kRmxvYXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuaAppbmRleCBlNWM1OTQzODRiZDY2ZDU0ODIwYjRj
NjQxYmJmYWE2YzM1ZTEzZDRiLi41YWU5OTNmMzcwNTU1MGQyOGZlMWUwMGY1NTBlNTM4ZmExNjgw
YmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJl
SW5oZXJpdGVkRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZVJhcmVJbmhlcml0ZWREYXRhLmgKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJUZXh0RGVj
b3JhdGlvblRoaWNrbmVzcy5oIgogI2luY2x1ZGUgIlRleHRVbmRlcmxpbmVPZmZzZXQuaCIKICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmlu
Zy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4KIAogI2lmIEVOQUJMRShURVhU
X0FVVE9TSVpJTkcpCiAjaW5jbHVkZSAiVGV4dFNpemVBZGp1c3RtZW50LmgiCkBAIC0xNjMsMTYg
KzE2MywxNiBAQCBwdWJsaWM6CiAgICAgQ29sb3IgdmlzaXRlZExpbmtTdHJva2VDb2xvcjsKICAg
ICBmbG9hdCBtaXRlckxpbWl0OwogCi0gICAgQXRvbWljU3RyaW5nIGh5cGhlbmF0aW9uU3RyaW5n
OworICAgIEF0b21TdHJpbmcgaHlwaGVuYXRpb25TdHJpbmc7CiAgICAgc2hvcnQgaHlwaGVuYXRp
b25MaW1pdEJlZm9yZTsKICAgICBzaG9ydCBoeXBoZW5hdGlvbkxpbWl0QWZ0ZXI7CiAgICAgc2hv
cnQgaHlwaGVuYXRpb25MaW1pdExpbmVzOwogCi0gICAgQXRvbWljU3RyaW5nIHRleHRFbXBoYXNp
c0N1c3RvbU1hcms7CisgICAgQXRvbVN0cmluZyB0ZXh0RW1waGFzaXNDdXN0b21NYXJrOwogICAg
IFJlZlB0cjxRdW90ZXNEYXRhPiBxdW90ZXM7CiAgICAgRGF0YVJlZjxTdHlsZUZpbHRlckRhdGE+
IGFwcGxlQ29sb3JGaWx0ZXI7CiAKLSAgICBBdG9taWNTdHJpbmcgbGluZUdyaWQ7CisgICAgQXRv
bVN0cmluZyBsaW5lR3JpZDsKICAgICBUYWJTaXplIHRhYlNpemU7CiAKICNpZiBFTkFCTEUoVEVY
VF9BVVRPU0laSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lci5oCmluZGV4IGY2MzdiNzE0ZGE1YjljOWFkYjcw
ZTg2MWM4MzA3NTNhMTdiY2M0MWMuLjg5NGI1N2RkNTEyM2JiNTVjNWQ5ZWY2NzQzMTI4MWFjNjFm
MWVlNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VDb250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlQ29udGFpbmVyLmgKQEAgLTcwLDE0ICs3MCwxNCBAQCBwcml2YXRlOgog
ICAgIHZvaWQgd2lsbEJlRGVzdHJveWVkKCkgZmluYWw7CiAgICAgdm9pZCByZWdpc3RlclJlc291
cmNlKCk7CiAKLSAgICBBdG9taWNTdHJpbmcgbV9pZDsKKyAgICBBdG9tU3RyaW5nIG1faWQ7CiAg
ICAgSGFzaFNldDxSZW5kZXJFbGVtZW50Kj4gbV9jbGllbnRzOwogICAgIEhhc2hTZXQ8UmVuZGVy
TGF5ZXIqPiBtX2NsaWVudExheWVyczsKICAgICBib29sIG1fcmVnaXN0ZXJlZCB7IGZhbHNlIH07
CiAgICAgYm9vbCBtX2lzSW52YWxpZGF0aW5nIHsgZmFsc2UgfTsKIH07CiAKLWlubGluZSBSZW5k
ZXJTVkdSZXNvdXJjZUNvbnRhaW5lciogZ2V0UmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXJCeUlk
KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBpZCkKK2lubGluZSBSZW5k
ZXJTVkdSZXNvdXJjZUNvbnRhaW5lciogZ2V0UmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXJCeUlk
KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgQXRvbVN0cmluZyYgaWQpCiB7CiAgICAgaWYgKGlk
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC04OSw3ICs4OSw3IEBAIGlu
bGluZSBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lciogZ2V0UmVuZGVyU1ZHUmVzb3VyY2VDb250
YWluZXJCeUlkKERvY3VtZW50JiBkCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFJlbmRlcmVyPgot
UmVuZGVyZXIqIGdldFJlbmRlclNWR1Jlc291cmNlQnlJZChEb2N1bWVudCYgZG9jdW1lbnQsIGNv
bnN0IEF0b21pY1N0cmluZyYgaWQpCitSZW5kZXJlciogZ2V0UmVuZGVyU1ZHUmVzb3VyY2VCeUlk
KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgQXRvbVN0cmluZyYgaWQpCiB7CiAgICAgLy8gVXNp
bmcgdGhlIFJlbmRlclNWR1Jlc291cmNlIHR5cGUgaGVyZSBhdm9pZHMgYW1iaWd1b3VzIGNhc3Rz
IGZvciB0eXBlcyB0aGF0CiAgICAgLy8gZGVzY2VuZCBmcm9tIGJvdGggUmVuZGVyT2JqZWN0IGFu
ZCBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvU1ZHUGF0aERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9TVkdQYXRoRGF0YS5jcHAKaW5kZXggZmU5NzY3NDM4NjE0M2E1ODNhZTExMGQ2ZjdlNTk4
ZmI4Mjk0ODE2My4uMGY4NDk5ZTUzYjAzMDVhZDAwOGNlYTQzODE4ZjNkNzFkZWZlY2U1NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdQYXRoRGF0YS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdQYXRoRGF0YS5jcHAKQEAgLTE3NCw5
ICsxNzQsOSBAQCBQYXRoIHBhdGhGcm9tR3JhcGhpY3NFbGVtZW50KGNvbnN0IFNWR0VsZW1lbnQq
IGVsZW1lbnQpCiAgICAgQVNTRVJUKGVsZW1lbnQpOwogCiAgICAgdHlwZWRlZiBQYXRoICgqUGF0
aEZyb21GdW5jdGlvbikoY29uc3QgU1ZHRWxlbWVudCYpOwotICAgIHN0YXRpYyBIYXNoTWFwPEF0
b21pY1N0cmluZ0ltcGwqLCBQYXRoRnJvbUZ1bmN0aW9uPiogbWFwID0gMDsKKyAgICBzdGF0aWMg
SGFzaE1hcDxBdG9tU3RyaW5nSW1wbCosIFBhdGhGcm9tRnVuY3Rpb24+KiBtYXAgPSAwOwogICAg
IGlmICghbWFwKSB7Ci0gICAgICAgIG1hcCA9IG5ldyBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwq
LCBQYXRoRnJvbUZ1bmN0aW9uPjsKKyAgICAgICAgbWFwID0gbmV3IEhhc2hNYXA8QXRvbVN0cmlu
Z0ltcGwqLCBQYXRoRnJvbUZ1bmN0aW9uPjsKICAgICAgICAgbWFwLT5zZXQoU1ZHTmFtZXM6OmNp
cmNsZVRhZy0+bG9jYWxOYW1lKCkuaW1wbCgpLCBwYXRoRnJvbUNpcmNsZUVsZW1lbnQpOwogICAg
ICAgICBtYXAtPnNldChTVkdOYW1lczo6ZWxsaXBzZVRhZy0+bG9jYWxOYW1lKCkuaW1wbCgpLCBw
YXRoRnJvbUVsbGlwc2VFbGVtZW50KTsKICAgICAgICAgbWFwLT5zZXQoU1ZHTmFtZXM6OmxpbmVU
YWctPmxvY2FsTmFtZSgpLmltcGwoKSwgcGF0aEZyb21MaW5lRWxlbWVudCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcAppbmRl
eCBiNDYyYjJjZmU5ZWEyN2EzMmQwMGQ2Nzg3ZmUyN2E0MWIzZmU3MDdkLi5jYzRmMDY4YWU0YmVk
ZGJjYmE1OTk5ZTJhY2Q4ZmRmYjEzMjg2MzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHAKQEAgLTQwOCw3ICs0MDgsNyBA
QCB2b2lkIHdyaXRlU1ZHUmVzb3VyY2VDb250YWluZXIoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFJl
bmRlclNWR1Jlc291cmNlQ29udGFpbmVyJgogewogICAgIHdyaXRlU3RhbmRhcmRQcmVmaXgodHMs
IHJlc291cmNlLCBiZWhhdmlvcik7CiAKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGlkID0gcmVz
b3VyY2UuZWxlbWVudCgpLmdldElkQXR0cmlidXRlKCk7CisgICAgY29uc3QgQXRvbVN0cmluZyYg
aWQgPSByZXNvdXJjZS5lbGVtZW50KCkuZ2V0SWRBdHRyaWJ1dGUoKTsKICAgICB3cml0ZU5hbWVB
bmRRdW90ZWRWYWx1ZSh0cywgImlkIiwgaWQpOyAgICAKIAogICAgIGlmIChyZXNvdXJjZS5yZXNv
dXJjZVR5cGUoKSA9PSBNYXNrZXJSZXNvdXJjZVR5cGUpIHsKQEAgLTU3OCw3ICs1NzgsNyBAQCB2
b2lkIHdyaXRlUmVzb3VyY2VzKFRleHRTdHJlYW0mIHRzLCBjb25zdCBSZW5kZXJPYmplY3QmIHJl
bmRlcmVyLCBPcHRpb25TZXQ8UmVuZAogICAgICAgICAgICAgY29uc3QgRmlsdGVyT3BlcmF0aW9u
JiBmaWx0ZXJPcGVyYXRpb24gPSAqZmlsdGVyT3BlcmF0aW9ucy5hdCgwKTsKICAgICAgICAgICAg
IGlmIChmaWx0ZXJPcGVyYXRpb24udHlwZSgpID09IEZpbHRlck9wZXJhdGlvbjo6UkVGRVJFTkNF
KSB7CiAgICAgICAgICAgICAgICAgY29uc3QgYXV0byYgcmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9u
ID0gZG93bmNhc3Q8UmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uPihmaWx0ZXJPcGVyYXRpb24pOwot
ICAgICAgICAgICAgICAgIEF0b21pY1N0cmluZyBpZCA9IFNWR1VSSVJlZmVyZW5jZTo6ZnJhZ21l
bnRJZGVudGlmaWVyRnJvbUlSSVN0cmluZyhyZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24udXJsKCks
IHJlbmRlcmVyLmRvY3VtZW50KCkpOworICAgICAgICAgICAgICAgIEF0b21TdHJpbmcgaWQgPSBT
VkdVUklSZWZlcmVuY2U6OmZyYWdtZW50SWRlbnRpZmllckZyb21JUklTdHJpbmcocmVmZXJlbmNl
RmlsdGVyT3BlcmF0aW9uLnVybCgpLCByZW5kZXJlci5kb2N1bWVudCgpKTsKICAgICAgICAgICAg
ICAgICBpZiAoUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlciA9IGdldFJlbmRlclNWR1Jl
c291cmNlQnlJZDxSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcj4ocmVuZGVyZXIuZG9jdW1lbnQoKSwg
aWQpKSB7CiAgICAgICAgICAgICAgICAgICAgIHRzIDw8IGluZGVudCA8PCAiICI7CiAgICAgICAg
ICAgICAgICAgICAgIHdyaXRlTmFtZUFuZFF1b3RlZFZhbHVlKHRzLCAiZmlsdGVyIiwgaWQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXMuY3BwCmluZGV4IDJi
MDY1MTdhZDc1ODI4YTc4YTNiMGVhMmU2N2NhYWI5MmM1NTlhZDAuLmJmNzg2NDQzZGRkNjBkNjIx
YmNkNTc5Yjg3NzBlZGNkOTFkMjlmYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHUmVzb3VyY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR1Jlc291cmNlcy5jcHAKQEAgLTQzLDkgKzQzLDkgQEAgU1ZHUmVzb3VyY2VzOjpTVkdS
ZXNvdXJjZXMoKQogewogfQogCi1zdGF0aWMgSGFzaFNldDxBdG9taWNTdHJpbmc+JiBjbGlwcGVy
RmlsdGVyTWFza2VyVGFncygpCitzdGF0aWMgSGFzaFNldDxBdG9tU3RyaW5nPiYgY2xpcHBlckZp
bHRlck1hc2tlclRhZ3MoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PEF0
b21pY1N0cmluZz4+IHNfdGFnTGlzdDsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNl
dDxBdG9tU3RyaW5nPj4gc190YWdMaXN0OwogICAgIGlmIChzX3RhZ0xpc3QuZ2V0KCkuaXNFbXB0
eSgpKSB7CiAgICAgICAgIC8vICJjb250YWluZXIgZWxlbWVudHMiOiBodHRwOi8vd3d3LnczLm9y
Zy9UUi9TVkcxMS9pbnRyby5odG1sI1Rlcm1Db250YWluZXJFbGVtZW50CiAgICAgICAgIC8vICJn
cmFwaGljcyBlbGVtZW50cyIgOiBodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9pbnRyby5odG1s
I1Rlcm1HcmFwaGljc0VsZW1lbnQKQEAgLTkyLDkgKzkyLDkgQEAgc3RhdGljIEhhc2hTZXQ8QXRv
bWljU3RyaW5nPiYgY2xpcHBlckZpbHRlck1hc2tlclRhZ3MoKQogICAgIHJldHVybiBzX3RhZ0xp
c3Q7CiB9CiAKLXN0YXRpYyBIYXNoU2V0PEF0b21pY1N0cmluZz4mIG1hcmtlclRhZ3MoKQorc3Rh
dGljIEhhc2hTZXQ8QXRvbVN0cmluZz4mIG1hcmtlclRhZ3MoKQogewotICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxIYXNoU2V0PEF0b21pY1N0cmluZz4+IHNfdGFnTGlzdDsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxBdG9tU3RyaW5nPj4gc190YWdMaXN0OwogICAgIGlmIChz
X3RhZ0xpc3QuZ2V0KCkuaXNFbXB0eSgpKSB7CiAgICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQo
U1ZHTmFtZXM6OmxpbmVUYWctPmxvY2FsTmFtZSgpKTsKICAgICAgICAgc190YWdMaXN0LmdldCgp
LmFkZChTVkdOYW1lczo6cGF0aFRhZy0+bG9jYWxOYW1lKCkpOwpAQCAtMTA1LDkgKzEwNSw5IEBA
IHN0YXRpYyBIYXNoU2V0PEF0b21pY1N0cmluZz4mIG1hcmtlclRhZ3MoKQogICAgIHJldHVybiBz
X3RhZ0xpc3Q7CiB9CiAKLXN0YXRpYyBIYXNoU2V0PEF0b21pY1N0cmluZz4mIGZpbGxBbmRTdHJv
a2VUYWdzKCkKK3N0YXRpYyBIYXNoU2V0PEF0b21TdHJpbmc+JiBmaWxsQW5kU3Ryb2tlVGFncygp
CiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8QXRvbWljU3RyaW5nPj4gc190
YWdMaXN0OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PEF0b21TdHJpbmc+PiBz
X3RhZ0xpc3Q7CiAgICAgaWYgKHNfdGFnTGlzdC5nZXQoKS5pc0VtcHR5KCkpIHsKICAgICAgICAg
c190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6YWx0R2x5cGhUYWctPmxvY2FsTmFtZSgpKTsK
ICAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6Y2lyY2xlVGFnLT5sb2NhbE5h
bWUoKSk7CkBAIC0xMjYsOSArMTI2LDkgQEAgc3RhdGljIEhhc2hTZXQ8QXRvbWljU3RyaW5nPiYg
ZmlsbEFuZFN0cm9rZVRhZ3MoKQogICAgIHJldHVybiBzX3RhZ0xpc3Q7CiB9CiAKLXN0YXRpYyBI
YXNoU2V0PEF0b21pY1N0cmluZz4mIGNoYWluYWJsZVJlc291cmNlVGFncygpCitzdGF0aWMgSGFz
aFNldDxBdG9tU3RyaW5nPiYgY2hhaW5hYmxlUmVzb3VyY2VUYWdzKCkKIHsKLSAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxBdG9taWNTdHJpbmc+PiBzX3RhZ0xpc3Q7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8QXRvbVN0cmluZz4+IHNfdGFnTGlzdDsKICAgICBp
ZiAoc190YWdMaXN0LmdldCgpLmlzRW1wdHkoKSkgewogICAgICAgICBzX3RhZ0xpc3QuZ2V0KCku
YWRkKFNWR05hbWVzOjpsaW5lYXJHcmFkaWVudFRhZy0+bG9jYWxOYW1lKCkpOwogICAgICAgICBz
X3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjpmaWx0ZXJUYWctPmxvY2FsTmFtZSgpKTsKQEAg
LTE2OSw3ICsxNjksNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNDaGFpbmFibGVSZXNvdXJjZShj
b25zdCBTVkdFbGVtZW50JiBlbGVtZW50LCBjb25zdCBTVkdFbGVtZQogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotc3RhdGljIGlubGluZSBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lciogcGFpbnRp
bmdSZXNvdXJjZUZyb21TVkdQYWludChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFNWR1BhaW50
VHlwZSYgcGFpbnRUeXBlLCBjb25zdCBTdHJpbmcmIHBhaW50VXJpLCBBdG9taWNTdHJpbmcmIGlk
LCBib29sJiBoYXNQZW5kaW5nUmVzb3VyY2UpCitzdGF0aWMgaW5saW5lIFJlbmRlclNWR1Jlc291
cmNlQ29udGFpbmVyKiBwYWludGluZ1Jlc291cmNlRnJvbVNWR1BhaW50KERvY3VtZW50JiBkb2N1
bWVudCwgY29uc3QgU1ZHUGFpbnRUeXBlJiBwYWludFR5cGUsIGNvbnN0IFN0cmluZyYgcGFpbnRV
cmksIEF0b21TdHJpbmcmIGlkLCBib29sJiBoYXNQZW5kaW5nUmVzb3VyY2UpCiB7CiAgICAgaWYg
KHBhaW50VHlwZSAhPSBTVkdQYWludFR5cGU6OlVSSSAmJiBwYWludFR5cGUgIT0gU1ZHUGFpbnRU
eXBlOjpVUklSR0JDb2xvciAmJiBwYWludFR5cGUgIT0gU1ZHUGFpbnRUeXBlOjpVUklDdXJyZW50
Q29sb3IpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTg4LDcgKzE4OCw3IEBAIHN0YXRp
YyBpbmxpbmUgUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIqIHBhaW50aW5nUmVzb3VyY2VGcm9t
U1ZHUGFpbnQoRG9jdW1lbnQmCiAgICAgcmV0dXJuIGNvbnRhaW5lcjsKIH0KIAotc3RhdGljIGlu
bGluZSB2b2lkIHJlZ2lzdGVyUGVuZGluZ1Jlc291cmNlKFNWR0RvY3VtZW50RXh0ZW5zaW9ucyYg
ZXh0ZW5zaW9ucywgY29uc3QgQXRvbWljU3RyaW5nJiBpZCwgU1ZHRWxlbWVudCYgZWxlbWVudCkK
K3N0YXRpYyBpbmxpbmUgdm9pZCByZWdpc3RlclBlbmRpbmdSZXNvdXJjZShTVkdEb2N1bWVudEV4
dGVuc2lvbnMmIGV4dGVuc2lvbnMsIGNvbnN0IEF0b21TdHJpbmcmIGlkLCBTVkdFbGVtZW50JiBl
bGVtZW50KQogewogICAgIGV4dGVuc2lvbnMuYWRkUGVuZGluZ1Jlc291cmNlKGlkLCBlbGVtZW50
KTsKIH0KQEAgLTIwNyw3ICsyMDcsNyBAQCBib29sIFNWR1Jlc291cmNlczo6YnVpbGRDYWNoZWRS
ZXNvdXJjZXMoY29uc3QgUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFJlbgogCiAgICAg
U1ZHRG9jdW1lbnRFeHRlbnNpb25zJiBleHRlbnNpb25zID0gZG9jdW1lbnQuYWNjZXNzU1ZHRXh0
ZW5zaW9ucygpOwogCi0gICAgY29uc3QgQXRvbWljU3RyaW5nJiB0YWdOYW1lID0gZWxlbWVudC5s
b2NhbE5hbWUoKTsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiB0YWdOYW1lID0gZWxlbWVudC5sb2Nh
bE5hbWUoKTsKICAgICBpZiAodGFnTmFtZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCkBAIC0yMTYsNyArMjE2LDcgQEAgYm9vbCBTVkdSZXNvdXJjZXM6OmJ1aWxkQ2FjaGVkUmVz
b3VyY2VzKGNvbnN0IFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBSZW4KICAgICBib29s
IGZvdW5kUmVzb3VyY2VzID0gZmFsc2U7CiAgICAgaWYgKGNsaXBwZXJGaWx0ZXJNYXNrZXJUYWdz
KCkuY29udGFpbnModGFnTmFtZSkpIHsKICAgICAgICAgaWYgKHN2Z1N0eWxlLmhhc0NsaXBwZXIo
KSkgewotICAgICAgICAgICAgQXRvbWljU3RyaW5nIGlkKHN2Z1N0eWxlLmNsaXBwZXJSZXNvdXJj
ZSgpKTsKKyAgICAgICAgICAgIEF0b21TdHJpbmcgaWQoc3ZnU3R5bGUuY2xpcHBlclJlc291cmNl
KCkpOwogICAgICAgICAgICAgaWYgKHNldENsaXBwZXIoZ2V0UmVuZGVyU1ZHUmVzb3VyY2VCeUlk
PFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcj4oZG9jdW1lbnQsIGlkKSkpCiAgICAgICAgICAgICAg
ICAgZm91bmRSZXNvdXJjZXMgPSB0cnVlOwogICAgICAgICAgICAgZWxzZQpAQCAtMjI1LDcgKzIy
NSw3IEBAIGJvb2wgU1ZHUmVzb3VyY2VzOjpidWlsZENhY2hlZFJlc291cmNlcyhjb25zdCBSZW5k
ZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgUmVuCiAgICAgICAgICAgICAvLyBGSVhNRTogLXdl
YmtpdC1jbGlwLXBhdGggc2hvdWxkIHN1cHBvcnQgZXh0ZXJuYWwgcmVzb3VyY2VzCiAgICAgICAg
ICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3MDMyCiAg
ICAgICAgICAgICBhdXRvJiBjbGlwUGF0aCA9IGRvd25jYXN0PFJlZmVyZW5jZUNsaXBQYXRoT3Bl
cmF0aW9uPigqc3R5bGUuY2xpcFBhdGgoKSk7Ci0gICAgICAgICAgICBBdG9taWNTdHJpbmcgaWQo
Y2xpcFBhdGguZnJhZ21lbnQoKSk7CisgICAgICAgICAgICBBdG9tU3RyaW5nIGlkKGNsaXBQYXRo
LmZyYWdtZW50KCkpOwogICAgICAgICAgICAgaWYgKHNldENsaXBwZXIoZ2V0UmVuZGVyU1ZHUmVz
b3VyY2VCeUlkPFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcj4oZG9jdW1lbnQsIGlkKSkpCiAgICAg
ICAgICAgICAgICAgZm91bmRSZXNvdXJjZXMgPSB0cnVlOwogICAgICAgICAgICAgZWxzZQpAQCAt
MjM4LDcgKzIzOCw3IEBAIGJvb2wgU1ZHUmVzb3VyY2VzOjpidWlsZENhY2hlZFJlc291cmNlcyhj
b25zdCBSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgUmVuCiAgICAgICAgICAgICAgICAg
Y29uc3QgRmlsdGVyT3BlcmF0aW9uJiBmaWx0ZXJPcGVyYXRpb24gPSAqZmlsdGVyT3BlcmF0aW9u
cy5hdCgwKTsKICAgICAgICAgICAgICAgICBpZiAoZmlsdGVyT3BlcmF0aW9uLnR5cGUoKSA9PSBG
aWx0ZXJPcGVyYXRpb246OlJFRkVSRU5DRSkgewogICAgICAgICAgICAgICAgICAgICBjb25zdCBh
dXRvJiByZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24gPSBkb3duY2FzdDxSZWZlcmVuY2VGaWx0ZXJP
cGVyYXRpb24+KGZpbHRlck9wZXJhdGlvbik7Ci0gICAgICAgICAgICAgICAgICAgIEF0b21pY1N0
cmluZyBpZCA9IFNWR1VSSVJlZmVyZW5jZTo6ZnJhZ21lbnRJZGVudGlmaWVyRnJvbUlSSVN0cmlu
ZyhyZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24udXJsKCksIGVsZW1lbnQuZG9jdW1lbnQoKSk7Cisg
ICAgICAgICAgICAgICAgICAgIEF0b21TdHJpbmcgaWQgPSBTVkdVUklSZWZlcmVuY2U6OmZyYWdt
ZW50SWRlbnRpZmllckZyb21JUklTdHJpbmcocmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uLnVybCgp
LCBlbGVtZW50LmRvY3VtZW50KCkpOwogICAgICAgICAgICAgICAgICAgICBpZiAoc2V0RmlsdGVy
KGdldFJlbmRlclNWR1Jlc291cmNlQnlJZDxSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcj4oZG9jdW1l
bnQsIGlkKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZFJlc291cmNlcyA9IHRydWU7
CiAgICAgICAgICAgICAgICAgICAgIGVsc2UKQEAgLTI0OCw3ICsyNDgsNyBAQCBib29sIFNWR1Jl
c291cmNlczo6YnVpbGRDYWNoZWRSZXNvdXJjZXMoY29uc3QgUmVuZGVyRWxlbWVudCYgcmVuZGVy
ZXIsIGNvbnN0IFJlbgogICAgICAgICB9CiAKICAgICAgICAgaWYgKHN2Z1N0eWxlLmhhc01hc2tl
cigpKSB7Ci0gICAgICAgICAgICBBdG9taWNTdHJpbmcgaWQoc3ZnU3R5bGUubWFza2VyUmVzb3Vy
Y2UoKSk7CisgICAgICAgICAgICBBdG9tU3RyaW5nIGlkKHN2Z1N0eWxlLm1hc2tlclJlc291cmNl
KCkpOwogICAgICAgICAgICAgaWYgKHNldE1hc2tlcihnZXRSZW5kZXJTVkdSZXNvdXJjZUJ5SWQ8
UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI+KGRvY3VtZW50LCBpZCkpKQogICAgICAgICAgICAgICAg
IGZvdW5kUmVzb3VyY2VzID0gdHJ1ZTsKICAgICAgICAgICAgIGVsc2UKQEAgLTI1NywxOSArMjU3
LDE5IEBAIGJvb2wgU1ZHUmVzb3VyY2VzOjpidWlsZENhY2hlZFJlc291cmNlcyhjb25zdCBSZW5k
ZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgUmVuCiAgICAgfQogCiAgICAgaWYgKG1hcmtlclRh
Z3MoKS5jb250YWlucyh0YWdOYW1lKSAmJiBzdmdTdHlsZS5oYXNNYXJrZXJzKCkpIHsKLSAgICAg
ICAgQXRvbWljU3RyaW5nIG1hcmtlclN0YXJ0SWQoc3ZnU3R5bGUubWFya2VyU3RhcnRSZXNvdXJj
ZSgpKTsKKyAgICAgICAgQXRvbVN0cmluZyBtYXJrZXJTdGFydElkKHN2Z1N0eWxlLm1hcmtlclN0
YXJ0UmVzb3VyY2UoKSk7CiAgICAgICAgIGlmIChzZXRNYXJrZXJTdGFydChnZXRSZW5kZXJTVkdS
ZXNvdXJjZUJ5SWQ8UmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXI+KGRvY3VtZW50LCBtYXJrZXJTdGFy
dElkKSkpCiAgICAgICAgICAgICBmb3VuZFJlc291cmNlcyA9IHRydWU7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIHJlZ2lzdGVyUGVuZGluZ1Jlc291cmNlKGV4dGVuc2lvbnMsIG1hcmtlclN0
YXJ0SWQsIGVsZW1lbnQpOwogCi0gICAgICAgIEF0b21pY1N0cmluZyBtYXJrZXJNaWRJZChzdmdT
dHlsZS5tYXJrZXJNaWRSZXNvdXJjZSgpKTsKKyAgICAgICAgQXRvbVN0cmluZyBtYXJrZXJNaWRJ
ZChzdmdTdHlsZS5tYXJrZXJNaWRSZXNvdXJjZSgpKTsKICAgICAgICAgaWYgKHNldE1hcmtlck1p
ZChnZXRSZW5kZXJTVkdSZXNvdXJjZUJ5SWQ8UmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXI+KGRvY3Vt
ZW50LCBtYXJrZXJNaWRJZCkpKQogICAgICAgICAgICAgZm91bmRSZXNvdXJjZXMgPSB0cnVlOwog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICByZWdpc3RlclBlbmRpbmdSZXNvdXJjZShleHRlbnNp
b25zLCBtYXJrZXJNaWRJZCwgZWxlbWVudCk7CiAKLSAgICAgICAgQXRvbWljU3RyaW5nIG1hcmtl
ckVuZElkKHN2Z1N0eWxlLm1hcmtlckVuZFJlc291cmNlKCkpOworICAgICAgICBBdG9tU3RyaW5n
IG1hcmtlckVuZElkKHN2Z1N0eWxlLm1hcmtlckVuZFJlc291cmNlKCkpOwogICAgICAgICBpZiAo
c2V0TWFya2VyRW5kKGdldFJlbmRlclNWR1Jlc291cmNlQnlJZDxSZW5kZXJTVkdSZXNvdXJjZU1h
cmtlcj4oZG9jdW1lbnQsIG1hcmtlckVuZElkKSkpCiAgICAgICAgICAgICBmb3VuZFJlc291cmNl
cyA9IHRydWU7CiAgICAgICAgIGVsc2UKQEAgLTI3OSw3ICsyNzksNyBAQCBib29sIFNWR1Jlc291
cmNlczo6YnVpbGRDYWNoZWRSZXNvdXJjZXMoY29uc3QgUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIs
IGNvbnN0IFJlbgogICAgIGlmIChmaWxsQW5kU3Ryb2tlVGFncygpLmNvbnRhaW5zKHRhZ05hbWUp
KSB7CiAgICAgICAgIGlmIChzdmdTdHlsZS5oYXNGaWxsKCkpIHsKICAgICAgICAgICAgIGJvb2wg
aGFzUGVuZGluZ1Jlc291cmNlID0gZmFsc2U7Ci0gICAgICAgICAgICBBdG9taWNTdHJpbmcgaWQ7
CisgICAgICAgICAgICBBdG9tU3RyaW5nIGlkOwogICAgICAgICAgICAgaWYgKHNldEZpbGwocGFp
bnRpbmdSZXNvdXJjZUZyb21TVkdQYWludChkb2N1bWVudCwgc3ZnU3R5bGUuZmlsbFBhaW50VHlw
ZSgpLCBzdmdTdHlsZS5maWxsUGFpbnRVcmkoKSwgaWQsIGhhc1BlbmRpbmdSZXNvdXJjZSkpKQog
ICAgICAgICAgICAgICAgIGZvdW5kUmVzb3VyY2VzID0gdHJ1ZTsKICAgICAgICAgICAgIGVsc2Ug
aWYgKGhhc1BlbmRpbmdSZXNvdXJjZSkKQEAgLTI4OCw3ICsyODgsNyBAQCBib29sIFNWR1Jlc291
cmNlczo6YnVpbGRDYWNoZWRSZXNvdXJjZXMoY29uc3QgUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIs
IGNvbnN0IFJlbgogCiAgICAgICAgIGlmIChzdmdTdHlsZS5oYXNTdHJva2UoKSkgewogICAgICAg
ICAgICAgYm9vbCBoYXNQZW5kaW5nUmVzb3VyY2UgPSBmYWxzZTsKLSAgICAgICAgICAgIEF0b21p
Y1N0cmluZyBpZDsKKyAgICAgICAgICAgIEF0b21TdHJpbmcgaWQ7CiAgICAgICAgICAgICBpZiAo
c2V0U3Ryb2tlKHBhaW50aW5nUmVzb3VyY2VGcm9tU1ZHUGFpbnQoZG9jdW1lbnQsIHN2Z1N0eWxl
LnN0cm9rZVBhaW50VHlwZSgpLCBzdmdTdHlsZS5zdHJva2VQYWludFVyaSgpLCBpZCwgaGFzUGVu
ZGluZ1Jlc291cmNlKSkpCiAgICAgICAgICAgICAgICAgZm91bmRSZXNvdXJjZXMgPSB0cnVlOwog
ICAgICAgICAgICAgZWxzZSBpZiAoaGFzUGVuZGluZ1Jlc291cmNlKQpAQCAtMjk3LDcgKzI5Nyw3
IEBAIGJvb2wgU1ZHUmVzb3VyY2VzOjpidWlsZENhY2hlZFJlc291cmNlcyhjb25zdCBSZW5kZXJF
bGVtZW50JiByZW5kZXJlciwgY29uc3QgUmVuCiAgICAgfQogCiAgICAgaWYgKGNoYWluYWJsZVJl
c291cmNlVGFncygpLmNvbnRhaW5zKHRhZ05hbWUpKSB7Ci0gICAgICAgIEF0b21pY1N0cmluZyBp
ZCh0YXJnZXRSZWZlcmVuY2VGcm9tUmVzb3VyY2UoZWxlbWVudCkpOworICAgICAgICBBdG9tU3Ry
aW5nIGlkKHRhcmdldFJlZmVyZW5jZUZyb21SZXNvdXJjZShlbGVtZW50KSk7CiAgICAgICAgIGF1
dG8qIGxpbmtlZFJlc291cmNlID0gZ2V0UmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXJCeUlkKGRv
Y3VtZW50LCBpZCk7CiAgICAgICAgIGlmICghbGlua2VkUmVzb3VyY2UpCiAgICAgICAgICAgICBy
ZWdpc3RlclBlbmRpbmdSZXNvdXJjZShleHRlbnNpb25zLCBpZCwgZWxlbWVudCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9TdG9yYWdlLmNwcAppbmRleCAwODYzZjA4N2VlMDdlN2Q1YjNkNzNlYWI0M2Q1MjFh
Yzk0YTNiOTc0Li40N2RiYjE3ZDlhZTZkMjY5YzE0NzAzYTFhNjJhNDkyZWU2NmRmNDE2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5jcHAKQEAgLTExNywxMSArMTE3LDExIEBAIGJvb2wgU3Rv
cmFnZTo6aXNTdXBwb3J0ZWRQcm9wZXJ0eU5hbWUoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUp
IGNvbnN0CiAgICAgcmV0dXJuIG1fc3RvcmFnZUFyZWEtPmNvbnRhaW5zKHByb3BlcnR5TmFtZSk7
CiB9CiAKLVZlY3RvcjxBdG9taWNTdHJpbmc+IFN0b3JhZ2U6OnN1cHBvcnRlZFByb3BlcnR5TmFt
ZXMoKSBjb25zdAorVmVjdG9yPEF0b21TdHJpbmc+IFN0b3JhZ2U6OnN1cHBvcnRlZFByb3BlcnR5
TmFtZXMoKSBjb25zdAogewogICAgIHVuc2lnbmVkIGxlbmd0aCA9IG1fc3RvcmFnZUFyZWEtPmxl
bmd0aCgpOwogCi0gICAgVmVjdG9yPEF0b21pY1N0cmluZz4gcmVzdWx0OworICAgIFZlY3RvcjxB
dG9tU3RyaW5nPiByZXN1bHQ7CiAgICAgcmVzdWx0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGVu
Z3RoKTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5oIGIvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9TdG9yYWdlLmgKaW5kZXggZjNiMmNhZWQxMWRmZTAwOTFhOWZjMTQ3NDhkNWVlOTgz
ZTYwYWY0NS4uMjhhYTlhYjE0ZTFiMjJhY2M1YmM1YjRmNmUxYzg0YzFhOTc0ZjY2MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9TdG9yYWdlLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogCiAgICAgLy8g
QmluZGluZ3Mgc3VwcG9ydCBmdW5jdGlvbnMuCiAgICAgYm9vbCBpc1N1cHBvcnRlZFByb3BlcnR5
TmFtZShjb25zdCBTdHJpbmcmKSBjb25zdDsKLSAgICBWZWN0b3I8QXRvbWljU3RyaW5nPiBzdXBw
b3J0ZWRQcm9wZXJ0eU5hbWVzKCkgY29uc3Q7CisgICAgVmVjdG9yPEF0b21TdHJpbmc+IHN1cHBv
cnRlZFByb3BlcnR5TmFtZXMoKSBjb25zdDsKIAogICAgIFN0b3JhZ2VBcmVhJiBhcmVhKCkgY29u
c3QgeyByZXR1cm4gbV9zdG9yYWdlQXJlYS5nZXQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdl
L1N0b3JhZ2VFdmVudC5jcHAKaW5kZXggYzcwNjhhZmQ5ODYzYWNkYTdjYTQxMTFkY2FlMDAxNTkx
YTk5ZWNmMS4uZjY2NzE1NmVkZTI1ZGI3Y2RhYmM5MGI3NmQzNjQzMzY4MTJlMDllNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlRXZlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUV2ZW50LmNwcApAQCAtMzksMTcgKzM5LDE3IEBAIFN0
b3JhZ2VFdmVudDo6U3RvcmFnZUV2ZW50KCkgPSBkZWZhdWx0OwogCiBTdG9yYWdlRXZlbnQ6On5T
dG9yYWdlRXZlbnQoKSA9IGRlZmF1bHQ7CiAKLVJlZjxTdG9yYWdlRXZlbnQ+IFN0b3JhZ2VFdmVu
dDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBrZXksIGNv
bnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIGNvbnN0IFN0cmlu
ZyYgdXJsLCBTdG9yYWdlKiBzdG9yYWdlQXJlYSkKK1JlZjxTdG9yYWdlRXZlbnQ+IFN0b3JhZ2VF
dmVudDo6Y3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYga2V5LCBj
b25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBjb25zdCBTdHJp
bmcmIHVybCwgU3RvcmFnZSogc3RvcmFnZUFyZWEpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU3RvcmFnZUV2ZW50KHR5cGUsIGtleSwgb2xkVmFsdWUsIG5ld1ZhbHVlLCB1cmwsIHN0b3Jh
Z2VBcmVhKSk7CiB9CiAKLVJlZjxTdG9yYWdlRXZlbnQ+IFN0b3JhZ2VFdmVudDo6Y3JlYXRlKGNv
bnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgSW5pdCYgaW5pdGlhbGl6ZXIsIElzVHJ1c3Rl
ZCBpc1RydXN0ZWQpCitSZWY8U3RvcmFnZUV2ZW50PiBTdG9yYWdlRXZlbnQ6OmNyZWF0ZShjb25z
dCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiBpbml0aWFsaXplciwgSXNUcnVzdGVkIGlz
VHJ1c3RlZCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdlRXZlbnQodHlwZSwg
aW5pdGlhbGl6ZXIsIGlzVHJ1c3RlZCkpOwogfQogCi1TdG9yYWdlRXZlbnQ6OlN0b3JhZ2VFdmVu
dChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJp
bmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBjb25zdCBTdHJpbmcmIHVybCwg
U3RvcmFnZSogc3RvcmFnZUFyZWEpCitTdG9yYWdlRXZlbnQ6OlN0b3JhZ2VFdmVudChjb25zdCBB
dG9tU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1
ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgU3RyaW5nJiB1cmwsIFN0b3JhZ2UqIHN0
b3JhZ2VBcmVhKQogICAgIDogRXZlbnQodHlwZSwgQ2FuQnViYmxlOjpObywgSXNDYW5jZWxhYmxl
OjpObykKICAgICAsIG1fa2V5KGtleSkKICAgICAsIG1fb2xkVmFsdWUob2xkVmFsdWUpCkBAIC01
OSw3ICs1OSw3IEBAIFN0b3JhZ2VFdmVudDo6U3RvcmFnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmlu
ZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0CiB7CiB9CiAKLVN0b3JhZ2VFdmVu
dDo6U3RvcmFnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgSW5pdCYgaW5p
dGlhbGl6ZXIsIElzVHJ1c3RlZCBpc1RydXN0ZWQpCitTdG9yYWdlRXZlbnQ6OlN0b3JhZ2VFdmVu
dChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiBpbml0aWFsaXplciwgSXNUcnVz
dGVkIGlzVHJ1c3RlZCkKICAgICA6IEV2ZW50KHR5cGUsIGluaXRpYWxpemVyLCBpc1RydXN0ZWQp
CiAgICAgLCBtX2tleShpbml0aWFsaXplci5rZXkpCiAgICAgLCBtX29sZFZhbHVlKGluaXRpYWxp
emVyLm9sZFZhbHVlKQpAQCAtNjksNyArNjksNyBAQCBTdG9yYWdlRXZlbnQ6OlN0b3JhZ2VFdmVu
dChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IEluaXQmIGluaXRpYWxpemVyLCBJcwog
ewogfQogCi12b2lkIFN0b3JhZ2VFdmVudDo6aW5pdFN0b3JhZ2VFdmVudChjb25zdCBBdG9taWNT
dHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIGNvbnN0IFN0cmlu
ZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBj
b25zdCBTdHJpbmcmIHVybCwgU3RvcmFnZSogc3RvcmFnZUFyZWEpCit2b2lkIFN0b3JhZ2VFdmVu
dDo6aW5pdFN0b3JhZ2VFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJs
ZSwgYm9vbCBjYW5jZWxhYmxlLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRW
YWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgU3RyaW5nJiB1cmwsIFN0b3JhZ2Uq
IHN0b3JhZ2VBcmVhKQogewogICAgIGlmIChpc0JlaW5nRGlzcGF0Y2hlZCgpKQogICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VFdmVudC5o
IGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlRXZlbnQuaAppbmRleCBhYzE4YWFjOWY4
ZjM4ZTVmZmM4OTIyY2ZlYzdmYTQzNjM2NjVmM2IyLi5jMmIzMmM2M2RjMWRhZDEzZWRjM2Q2ZDJi
MTQ1ODJiYTU1ZmQ1YmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3Jh
Z2VFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUV2ZW50LmgKQEAg
LTM0LDcgKzM0LDcgQEAgY2xhc3MgU3RvcmFnZTsKIAogY2xhc3MgU3RvcmFnZUV2ZW50IDogcHVi
bGljIEV2ZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFN0b3JhZ2VFdmVudD4gY3JlYXRl
KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmlu
ZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIGNvbnN0IFN0cmluZyYgdXJsLCBT
dG9yYWdlKiBzdG9yYWdlQXJlYSk7CisgICAgc3RhdGljIFJlZjxTdG9yYWdlRXZlbnQ+IGNyZWF0
ZShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5n
JiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgU3RyaW5nJiB1cmwsIFN0
b3JhZ2UqIHN0b3JhZ2VBcmVhKTsKICAgICBzdGF0aWMgUmVmPFN0b3JhZ2VFdmVudD4gY3JlYXRl
Rm9yQmluZGluZ3MoKTsKIAogICAgIHN0cnVjdCBJbml0IDogRXZlbnRJbml0IHsKQEAgLTQ1LDcg
KzQ1LDcgQEAgcHVibGljOgogICAgICAgICBSZWZQdHI8U3RvcmFnZT4gc3RvcmFnZUFyZWE7CiAg
ICAgfTsKIAotICAgIHN0YXRpYyBSZWY8U3RvcmFnZUV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWlj
U3RyaW5nJiwgY29uc3QgSW5pdCYsIElzVHJ1c3RlZCA9IElzVHJ1c3RlZDo6Tm8pOworICAgIHN0
YXRpYyBSZWY8U3RvcmFnZUV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IElu
aXQmLCBJc1RydXN0ZWQgPSBJc1RydXN0ZWQ6Ok5vKTsKICAgICB2aXJ0dWFsIH5TdG9yYWdlRXZl
bnQoKTsKIAogICAgIGNvbnN0IFN0cmluZyYga2V5KCkgY29uc3QgeyByZXR1cm4gbV9rZXk7IH0K
QEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgdXJsKCkgY29uc3Qg
eyByZXR1cm4gbV91cmw7IH0KICAgICBTdG9yYWdlKiBzdG9yYWdlQXJlYSgpIGNvbnN0IHsgcmV0
dXJuIG1fc3RvcmFnZUFyZWEuZ2V0KCk7IH0KIAotICAgIHZvaWQgaW5pdFN0b3JhZ2VFdmVudChj
b25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUs
IGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcm
IG5ld1ZhbHVlLCBjb25zdCBTdHJpbmcmIHVybCwgU3RvcmFnZSogc3RvcmFnZUFyZWEpOworICAg
IHZvaWQgaW5pdFN0b3JhZ2VFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1
YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBv
bGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgU3RyaW5nJiB1cmwsIFN0b3Jh
Z2UqIHN0b3JhZ2VBcmVhKTsKIAogICAgIC8vIE5lZWRlZCBvbmNlIHdlIHN1cHBvcnQgaW5pdDxi
bGFuaz5FdmVudE5TCiAgICAgLy8gdm9pZCBpbml0U3RvcmFnZUV2ZW50TlMoaW4gRE9NU3RyaW5n
IG5hbWVzcGFjZVVSSSwgaW4gRE9NU3RyaW5nIHR5cGVBcmcsIGluIGJvb2xlYW4gY2FuQnViYmxl
QXJnLCBpbiBib29sZWFuIGNhbmNlbGFibGVBcmcsIGluIERPTVN0cmluZyBrZXlBcmcsIGluIERP
TVN0cmluZyBvbGRWYWx1ZUFyZywgaW4gRE9NU3RyaW5nIG5ld1ZhbHVlQXJnLCBpbiBET01TdHJp
bmcgdXJsQXJnLCBTdG9yYWdlIHN0b3JhZ2VBcmVhQXJnKTsKQEAgLTYzLDggKzYzLDggQEAgcHVi
bGljOgogCiBwcml2YXRlOgogICAgIFN0b3JhZ2VFdmVudCgpOwotICAgIFN0b3JhZ2VFdmVudChj
b25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcm
IG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBjb25zdCBTdHJpbmcmIHVybCwgU3Rv
cmFnZSogc3RvcmFnZUFyZWEpOwotICAgIFN0b3JhZ2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcm
LCBjb25zdCBJbml0JiwgSXNUcnVzdGVkKTsKKyAgICBTdG9yYWdlRXZlbnQoY29uc3QgQXRvbVN0
cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNv
bnN0IFN0cmluZyYgbmV3VmFsdWUsIGNvbnN0IFN0cmluZyYgdXJsLCBTdG9yYWdlKiBzdG9yYWdl
QXJlYSk7CisgICAgU3RvcmFnZUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBJbml0Jiwg
SXNUcnVzdGVkKTsKIAogICAgIFN0cmluZyBtX2tleTsKICAgICBTdHJpbmcgbV9vbGRWYWx1ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0F0dHJpYnV0ZUNoYW5nZUludmFsaWRh
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9BdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRp
b24uY3BwCmluZGV4IGJlOGU1YmYyNjVkNzdmZGQzYThkOGMyODkxYzdjNmNhMjkyMjI0YWUuLjQ5
MWJhMmRhYjQ2MzYwODlhZDViODkxNWVkMGNlNDExY2YwMjJlZWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL0F0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3R5bGUvQXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uLmNwcApAQCAtMzks
NyArMzksNyBAQCBzdGF0aWMgYm9vbCBtYXlCZUFmZmVjdGVkQnlBdHRyaWJ1dGVDaGFuZ2UoY29u
c3QgUnVsZUZlYXR1cmVTZXQmIGZlYXR1cmVzLCBib29sCiAgICAgcmV0dXJuIG5hbWVTZXQuY29u
dGFpbnMoYXR0cmlidXRlTmFtZS5sb2NhbE5hbWUoKSk7CiB9CiAKLXZvaWQgQXR0cmlidXRlQ2hh
bmdlSW52YWxpZGF0aW9uOjppbnZhbGlkYXRlU3R5bGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
cmlidXRlTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3Ry
aW5nJiBuZXdWYWx1ZSkKK3ZvaWQgQXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uOjppbnZhbGlk
YXRlU3R5bGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgY29uc3QgQXRvbVN0
cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0b21TdHJpbmcmIG5ld1ZhbHVlKQogewogICAgIGlmIChu
ZXdWYWx1ZSA9PSBvbGRWYWx1ZSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3R5bGUvQXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9BdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24uaAppbmRleCAwMTdlMzg3Yzc4
ZDRkMDg1ODFlMjcwZWUxYzRiMjY5OWMwYjA1ODJlLi5jYWM3MTU5ZGRjY2I1MWJiNTVhOGFmMjk4
Zjk0YTc3NWIxM2RkNWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9BdHRyaWJ1
dGVDaGFuZ2VJbnZhbGlkYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9BdHRyaWJ1
dGVDaGFuZ2VJbnZhbGlkYXRpb24uaApAQCAtMzUsMTEgKzM1LDExIEBAIG5hbWVzcGFjZSBTdHls
ZSB7CiAKIGNsYXNzIEF0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlvbiB7CiBwdWJsaWM6Ci0gICAg
QXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uKEVsZW1lbnQmLCBjb25zdCBRdWFsaWZpZWROYW1l
JiwgY29uc3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdW
YWx1ZSk7CisgICAgQXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uKEVsZW1lbnQmLCBjb25zdCBR
dWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbVN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0b21TdHJp
bmcmIG5ld1ZhbHVlKTsKICAgICB+QXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uKCk7CiAKIHBy
aXZhdGU6Ci0gICAgdm9pZCBpbnZhbGlkYXRlU3R5bGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNv
bnN0IEF0b21pY1N0cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUp
OworICAgIHZvaWQgaW52YWxpZGF0ZVN0eWxlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBB
dG9tU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbVN0cmluZyYgbmV3VmFsdWUpOwogICAgIHZv
aWQgaW52YWxpZGF0ZVN0eWxlV2l0aFJ1bGVTZXRzKCk7CiAKICAgICBjb25zdCBib29sIG1faXNF
bmFibGVkOwpAQCAtNDgsNyArNDgsNyBAQCBwcml2YXRlOgogICAgIFZlY3Rvcjxjb25zdCBJbnZh
bGlkYXRpb25SdWxlU2V0KiwgND4gbV9pbnZhbGlkYXRpb25SdWxlU2V0czsKIH07CiAKLWlubGlu
ZSBBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb246OkF0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlv
bihFbGVtZW50JiBlbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBj
b25zdCBBdG9taWNTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVl
KQoraW5saW5lIEF0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlvbjo6QXR0cmlidXRlQ2hhbmdlSW52
YWxpZGF0aW9uKEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0
ZU5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBBdG9tU3RyaW5nJiBuZXdW
YWx1ZSkKICAgICA6IG1faXNFbmFibGVkKGVsZW1lbnQubmVlZHNTdHlsZUludmFsaWRhdGlvbigp
KQogICAgICwgbV9lbGVtZW50KGVsZW1lbnQpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdHlsZS9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHls
ZS9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi5jcHAKaW5kZXggY2QzMGRjNzM2ZmU2ZWZlMzI3Mjhj
Mzc5N2MyY2RjNmYzODg4MDVhOS4uYzkwYWMzM2E2ZDk5ZGE2ZTczZjhhZmRjNzI3NzUyZmNhZGI1
Mzg1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvQ2xhc3NDaGFuZ2VJbnZhbGlk
YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0NsYXNzQ2hhbmdlSW52YWxpZGF0
aW9uLmNwcApAQCAtMzUsNyArMzUsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNl
IFN0eWxlIHsKIAotdXNpbmcgQ2xhc3NDaGFuZ2VWZWN0b3IgPSBWZWN0b3I8QXRvbWljU3RyaW5n
SW1wbCosIDQ+OwordXNpbmcgQ2xhc3NDaGFuZ2VWZWN0b3IgPSBWZWN0b3I8QXRvbVN0cmluZ0lt
cGwqLCA0PjsKIAogc3RhdGljIENsYXNzQ2hhbmdlVmVjdG9yIGNvbGxlY3RDbGFzc2VzKGNvbnN0
IFNwYWNlU3BsaXRTdHJpbmcmIGNsYXNzZXMpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdHlsZS9JZENoYW5nZUludmFsaWRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9J
ZENoYW5nZUludmFsaWRhdGlvbi5jcHAKaW5kZXggOTY5MWE4ZDNlMTJlNjUwYThiMDEzOGM2OWIw
OWI0OWNmOTE2ODIyMy4uOGJlZTVlYjdjMzllMWFhYjJmNTRjODE1YmM5MTdlMjg4NTkzNzU2MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvSWRDaGFuZ2VJbnZhbGlkYXRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0lkQ2hhbmdlSW52YWxpZGF0aW9uLmNwcApAQCAt
MzIsNyArMzIsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIFN0eWxlIHsKIAot
dm9pZCBJZENoYW5nZUludmFsaWRhdGlvbjo6aW52YWxpZGF0ZVN0eWxlKGNvbnN0IEF0b21pY1N0
cmluZyYgY2hhbmdlZElkKQordm9pZCBJZENoYW5nZUludmFsaWRhdGlvbjo6aW52YWxpZGF0ZVN0
eWxlKGNvbnN0IEF0b21TdHJpbmcmIGNoYW5nZWRJZCkKIHsKICAgICBpZiAoY2hhbmdlZElkLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5
bGUvSWRDaGFuZ2VJbnZhbGlkYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0lkQ2hhbmdl
SW52YWxpZGF0aW9uLmgKaW5kZXggMGUzYmRlZjliM2Q3Y2RiN2U3MGQ1N2JjYWVhZmQ5YTY2Mzc0
YzgxZC4uNDM2MTk0ZDRlODg2ZjI1MzQ2ZmQ2NGVlMjZjMWU0NGU4MjMxZjNhMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvSWRDaGFuZ2VJbnZhbGlkYXRpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9JZENoYW5nZUludmFsaWRhdGlvbi5oCkBAIC0zMywxOSArMzMsMTkg
QEAgbmFtZXNwYWNlIFN0eWxlIHsKIAogY2xhc3MgSWRDaGFuZ2VJbnZhbGlkYXRpb24gewogcHVi
bGljOgotICAgIElkQ2hhbmdlSW52YWxpZGF0aW9uKEVsZW1lbnQmLCBjb25zdCBBdG9taWNTdHJp
bmcmIG9sZElkLCBjb25zdCBBdG9taWNTdHJpbmcmIG5ld0lkKTsKKyAgICBJZENoYW5nZUludmFs
aWRhdGlvbihFbGVtZW50JiwgY29uc3QgQXRvbVN0cmluZyYgb2xkSWQsIGNvbnN0IEF0b21TdHJp
bmcmIG5ld0lkKTsKICAgICB+SWRDaGFuZ2VJbnZhbGlkYXRpb24oKTsKIAogcHJpdmF0ZToKLSAg
ICB2b2lkIGludmFsaWRhdGVTdHlsZShjb25zdCBBdG9taWNTdHJpbmcmKTsKKyAgICB2b2lkIGlu
dmFsaWRhdGVTdHlsZShjb25zdCBBdG9tU3RyaW5nJik7CiAKICAgICBjb25zdCBib29sIG1faXNF
bmFibGVkOwogICAgIEVsZW1lbnQmIG1fZWxlbWVudDsKIAotICAgIEF0b21pY1N0cmluZyBtX25l
d0lkOworICAgIEF0b21TdHJpbmcgbV9uZXdJZDsKIH07CiAKLWlubGluZSBJZENoYW5nZUludmFs
aWRhdGlvbjo6SWRDaGFuZ2VJbnZhbGlkYXRpb24oRWxlbWVudCYgZWxlbWVudCwgY29uc3QgQXRv
bWljU3RyaW5nJiBvbGRJZCwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdJZCkKK2lubGluZSBJZENo
YW5nZUludmFsaWRhdGlvbjo6SWRDaGFuZ2VJbnZhbGlkYXRpb24oRWxlbWVudCYgZWxlbWVudCwg
Y29uc3QgQXRvbVN0cmluZyYgb2xkSWQsIGNvbnN0IEF0b21TdHJpbmcmIG5ld0lkKQogICAgIDog
bV9pc0VuYWJsZWQoZWxlbWVudC5uZWVkc1N0eWxlSW52YWxpZGF0aW9uKCkpCiAgICAgLCBtX2Vs
ZW1lbnQoZWxlbWVudCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxl
U2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5jcHAKaW5kZXggYTRm
ZTlhMjU4NjI3OGNkNTczMWM2N2JmZGU3ZGJlMjQxZWUxZDMwNi4uOWYwZDFhZDc0OTBiZmVhYjI0
MDdjZTdiYzg4YjA5NTExNmQwYjIyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUv
U3R5bGVTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5jcHAK
QEAgLTMyOCw3ICszMjgsNyBAQCB2b2lkIFNjb3BlOjpjb2xsZWN0QWN0aXZlU3R5bGVTaGVldHMo
VmVjdG9yPFJlZlB0cjxTdHlsZVNoZWV0Pj4mIHNoZWV0cykKICAgICAgICAgICAgIHNoZWV0ID0g
ZG93bmNhc3Q8UHJvY2Vzc2luZ0luc3RydWN0aW9uPigqbm9kZSkuc2hlZXQoKTsKICAgICAgICAg
fSBlbHNlIGlmIChpczxIVE1MTGlua0VsZW1lbnQ+KCpub2RlKSB8fCBpczxIVE1MU3R5bGVFbGVt
ZW50Pigqbm9kZSkgfHwgaXM8U1ZHU3R5bGVFbGVtZW50Pigqbm9kZSkpIHsKICAgICAgICAgICAg
IEVsZW1lbnQmIGVsZW1lbnQgPSBkb3duY2FzdDxFbGVtZW50Pigqbm9kZSk7Ci0gICAgICAgICAg
ICBBdG9taWNTdHJpbmcgdGl0bGUgPSBlbGVtZW50LmlzSW5TaGFkb3dUcmVlKCkgPyBudWxsQXRv
bSgpIDogZWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHRpdGxlQXR0cik7
CisgICAgICAgICAgICBBdG9tU3RyaW5nIHRpdGxlID0gZWxlbWVudC5pc0luU2hhZG93VHJlZSgp
ID8gbnVsbEF0b20oKSA6IGVsZW1lbnQuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih0
aXRsZUF0dHIpOwogICAgICAgICAgICAgYm9vbCBlbmFibGVkVmlhU2NyaXB0ID0gZmFsc2U7CiAg
ICAgICAgICAgICBpZiAoaXM8SFRNTExpbmtFbGVtZW50PihlbGVtZW50KSkgewogICAgICAgICAg
ICAgICAgIC8vIDxMSU5LPiBlbGVtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmNwcAppbmRl
eCBkNDYxOTUwNGUyYjZjMmQwNDFkMDgwMTRiMzJlOWFmZjYyNmVlZjNhLi4zZGQzZjNiNjNiZTIz
MmYwZWE5ZTEwYmZlNjlkOTk2Mzc4MjI4ZDRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5j
cHAKQEAgLTY3LDcgKzY3LDcgQEAgUmVmPFNWR0FFbGVtZW50PiBTVkdBRWxlbWVudDo6Y3JlYXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2MKIFN0cmluZyBTVkdB
RWxlbWVudDo6dGl0bGUoKSBjb25zdAogewogICAgIC8vIElmIHRoZSB4bGluazp0aXRsZSBpcyBz
ZXQgKG5vbi1lbXB0eSBzdHJpbmcpLCB1c2UgaXQuCi0gICAgY29uc3QgQXRvbWljU3RyaW5nJiB0
aXRsZSA9IGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oWExpbmtOYW1lczo6dGl0bGVB
dHRyKTsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiB0aXRsZSA9IGF0dHJpYnV0ZVdpdGhvdXRTeW5j
aHJvbml6YXRpb24oWExpbmtOYW1lczo6dGl0bGVBdHRyKTsKICAgICBpZiAoIXRpdGxlLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIHRpdGxlOwogCkBAIC03NSw3ICs3NSw3IEBAIFN0cmluZyBT
VkdBRWxlbWVudDo6dGl0bGUoKSBjb25zdAogICAgIHJldHVybiBTVkdFbGVtZW50Ojp0aXRsZSgp
OwogfQogCi12b2lkIFNWR0FFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQordm9pZCBTVkdBRWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmlu
ZyYgdmFsdWUpCiB7CiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnRhcmdldEF0dHIpIHsKICAg
ICAgICAgbV90YXJnZXQtPnNldEJhc2VWYWxJbnRlcm5hbCh2YWx1ZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
RWxlbWVudC5oCmluZGV4IDdlMWQyOTQ2NzA0ZTY3NTViZTM0ZTQwZTc5ODQ3NGZiMTRjNzAxYzYu
LmIwNDZlM2JlNTIzNjkxZDc2NDczMzg2NTY2MDBlOTgyODQ3ZGMxYjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBRWxlbWVudC5oCkBAIC00NSw3ICs0NSw3IEBAIHByaXZhdGU6CiAgICAgdXNpbmcgUHJvcGVy
dHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdBRWxlbWVudCwgU1ZHR3Jh
cGhpY3NFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBTVkdVUklSZWZlcmVu
Y2U+OwogICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KIAotICAgIHZvaWQgcGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIGZp
bmFsOworICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0
IEF0b21TdHJpbmcmKSBmaW5hbDsKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYpIGZpbmFsOwogCiAgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRp
b24mKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbHRHbHlwaEVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FsdEdseXBoRWxlbWVudC5jcHAKaW5k
ZXggOTVlZmNiMjc5YjE2ODZhMDhiZTZmMjlmZTdlNmU5OTMwYzM4MTY0Ny4uOWE5YzdjNzFhNGEx
NjAzOWMwNzE4ZmU3MDY5ZTNhODNiZDNkOWE1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FsdEdseXBoRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fs
dEdseXBoRWxlbWVudC5jcHAKQEAgLTQ5LDIyICs0OSwyMiBAQCBSZWY8U1ZHQWx0R2x5cGhFbGVt
ZW50PiBTVkdBbHRHbHlwaEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lLAogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR0FsdEdseXBoRWxlbWVudCh0YWdOYW1l
LCBkb2N1bWVudCkpOwogfQogCi1FeGNlcHRpb25Pcjx2b2lkPiBTVkdBbHRHbHlwaEVsZW1lbnQ6
OnNldEdseXBoUmVmKGNvbnN0IEF0b21pY1N0cmluZyYpCitFeGNlcHRpb25Pcjx2b2lkPiBTVkdB
bHRHbHlwaEVsZW1lbnQ6OnNldEdseXBoUmVmKGNvbnN0IEF0b21TdHJpbmcmKQogewogICAgIHJl
dHVybiBFeGNlcHRpb24geyBOb01vZGlmaWNhdGlvbkFsbG93ZWRFcnJvciB9OwogfQogCi1jb25z
dCBBdG9taWNTdHJpbmcmIFNWR0FsdEdseXBoRWxlbWVudDo6Z2x5cGhSZWYoKSBjb25zdAorY29u
c3QgQXRvbVN0cmluZyYgU1ZHQWx0R2x5cGhFbGVtZW50OjpnbHlwaFJlZigpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oU1ZHTmFtZXM6OmdseXBo
UmVmQXR0cik7CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IFNWR0FsdEdseXBoRWxlbWVudDo6c2V0
Rm9ybWF0KGNvbnN0IEF0b21pY1N0cmluZyYpCitFeGNlcHRpb25Pcjx2b2lkPiBTVkdBbHRHbHlw
aEVsZW1lbnQ6OnNldEZvcm1hdChjb25zdCBBdG9tU3RyaW5nJikKIHsKICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgTm9Nb2RpZmljYXRpb25BbGxvd2VkRXJyb3IgfTsKIH0KIAotY29uc3QgQXRvbWlj
U3RyaW5nJiBTVkdBbHRHbHlwaEVsZW1lbnQ6OmZvcm1hdCgpIGNvbnN0Citjb25zdCBBdG9tU3Ry
aW5nJiBTVkdBbHRHbHlwaEVsZW1lbnQ6OmZvcm1hdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGF0
dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oU1ZHTmFtZXM6OmZvcm1hdEF0dHIpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FsdEdseXBoRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FsdEdseXBoRWxlbWVudC5oCmluZGV4IDVkOTAyZjY3NTZjMzlj
N2EyY2ZlNzgzMGZjNDQ4MjUxOTA3ZTA3ZTAuLjRlZDgyNTk1OTU0NjQ4YWRkNDFiM2EwMmM0NmZl
ODFjOTgyNGE4OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbHRHbHlwaEVs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQWx0R2x5cGhFbGVtZW50LmgKQEAg
LTM1LDEwICszNSwxMCBAQCBjbGFzcyBTVkdBbHRHbHlwaEVsZW1lbnQgZmluYWwgOiBwdWJsaWMg
U1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCwgcHVibGljIFNWR1VSSQogcHVibGljOgogICAgIHN0
YXRpYyBSZWY8U1ZHQWx0R2x5cGhFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IERvY3VtZW50Jik7CiAKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGdseXBoUmVmKCkgY29uc3Q7
Ci0gICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0R2x5cGhSZWYoY29uc3QgQXRvbWljU3RyaW5nJik7
Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBmb3JtYXQoKSBjb25zdDsKLSAgICBFeGNlcHRpb25P
cjx2b2lkPiBzZXRGb3JtYXQoY29uc3QgQXRvbWljU3RyaW5nJik7CisgICAgY29uc3QgQXRvbVN0
cmluZyYgZ2x5cGhSZWYoKSBjb25zdDsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRHbHlwaFJl
Zihjb25zdCBBdG9tU3RyaW5nJik7CisgICAgY29uc3QgQXRvbVN0cmluZyYgZm9ybWF0KCkgY29u
c3Q7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0Rm9ybWF0KGNvbnN0IEF0b21TdHJpbmcmKTsK
IAogICAgIGJvb2wgaGFzVmFsaWRHbHlwaEVsZW1lbnRzKFZlY3RvcjxTdHJpbmc+JiBnbHlwaE5h
bWVzKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVN
b3Rpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxl
bWVudC5jcHAKaW5kZXggOGVjNDFiNzgwNGI2NTNjYmE5OTAzYjFkZDMyNGFlOTJiNTA2MzFlZi4u
MWRhYzY2MDA1MGZhMjZmZmU5YzhiM2Q2YzhjNjc5ZTI1MDYyYzQ5ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwCkBAIC05Niw3ICs5Niw3IEBA
IGJvb2wgU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6Omhhc1ZhbGlkQXR0cmlidXRlTmFtZSgpIGNv
bnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6
OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0
cmluZyYgdmFsdWUpCit2b2lkIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKIHsK
ICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6cGF0aEF0dHIpIHsKICAgICAgICAgbV9wYXRoID0g
YnVpbGRQYXRoRnJvbVN0cmluZyh2YWx1ZSk7CkBAIC0xMDksOSArMTA5LDkgQEAgdm9pZCBTVkdB
bmltYXRlTW90aW9uRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
bmFtZSwgY29uc3QgQXQKICAgICAKIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50OjpSb3RhdGVNb2Rl
IFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50Ojpyb3RhdGVNb2RlKCkgY29uc3QKIHsKLSAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBhdXRvVmFsKCJhdXRvIiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPGNvbnN0IEF0b21pY1N0cmluZz4gYXV0b1JldmVyc2UoImF1dG8tcmV2ZXJzZSIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIGNvbnN0IEF0b21pY1N0cmluZyYg
cm90YXRlID0gZ2V0QXR0cmlidXRlKFNWR05hbWVzOjpyb3RhdGVBdHRyKTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gYXV0b1ZhbCgiYXV0byIsIEF0b21TdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29u
c3QgQXRvbVN0cmluZz4gYXV0b1JldmVyc2UoImF1dG8tcmV2ZXJzZSIsIEF0b21TdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiByb3RhdGUgPSBnZXRB
dHRyaWJ1dGUoU1ZHTmFtZXM6OnJvdGF0ZUF0dHIpOwogICAgIGlmIChyb3RhdGUgPT0gYXV0b1Zh
bCkKICAgICAgICAgcmV0dXJuIFJvdGF0ZUF1dG87CiAgICAgaWYgKHJvdGF0ZSA9PSBhdXRvUmV2
ZXJzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmgKaW5k
ZXggMmE5MGQzYjgxYTQ3MTlmMGJjOTMxODYyNDhiYzkzOTg4ZmM0MDViZS4uZmFiYWFjNWQ3YzMz
NzJhZTZhOGQ1M2RhOTVjZDZiN2YzNTBhZjJhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FuaW1hdGVNb3Rpb25FbGVtZW50LmgKQEAgLTM5LDcgKzM5LDcgQEAgcHJpdmF0ZToKICAgICBi
b29sIGhhc1ZhbGlkQXR0cmlidXRlVHlwZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgaGFz
VmFsaWRBdHRyaWJ1dGVOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHBhcnNlQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBB
dG9tU3RyaW5nJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHJlc2V0QW5pbWF0ZWRUeXBlKCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBjbGVhckFuaW1hdGVkVHlwZShTVkdFbGVtZW50KiB0YXJnZXRFbGVt
ZW50KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRl
VHJhbnNmb3JtRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZVRyYW5z
Zm9ybUVsZW1lbnQuY3BwCmluZGV4IGFkNzUwYWVmNzg3OTY2ZGNkNjUzOWUyNzY4OTI0YTliMjdm
YTk1MmMuLmE1Y2QxMTNjM2FhOWUyNjJmNThmN2EzNzdkOWEyYmQ0ZGZmNjNkN2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LmNwcApAQCAt
NTQsNyArNTQsNyBAQCBib29sIFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50OjpoYXNWYWxpZEF0
dHJpYnV0ZVR5cGUoKSBjb25zdAogICAgIHJldHVybiBTVkdBbmltYXRlRWxlbWVudEJhc2U6Omhh
c1ZhbGlkQXR0cmlidXRlVHlwZSgpOwogfQogCi12b2lkIFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVt
ZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9t
aWNTdHJpbmcmIHZhbHVlKQordm9pZCBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYgdmFs
dWUpCiB7CiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnR5cGVBdHRyKSB7CiAgICAgICAgIG1f
dHlwZSA9IFNWR1RyYW5zZm9ybWFibGU6OnBhcnNlVHJhbnNmb3JtVHlwZSh2YWx1ZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudC5oCmluZGV4IDMw
MWVhODhhYjQ2NWQ1NDdiMTJkYjgxYjNhMWI2NTUzN2U1MjliN2EuLjk4ZGE3MGUyNmQ2Zjg0MTIz
MzNmMmJkMTNmZWIwMTk0MDExYTA5NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bmltYXRlVHJhbnNmb3JtRWxlbWVudC5oCkBAIC00MCw3ICs0MCw3IEBAIHByaXZhdGU6CiAgICAg
U1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50
Jik7CiAgICAgCiAgICAgYm9vbCBoYXNWYWxpZEF0dHJpYnV0ZVR5cGUoKSBjb25zdCBmaW5hbDsK
LSAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9t
aWNTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5nJikgZmluYWw7CiAgICAgU3RyaW5nIGFuaW1hdGVSYW5n
ZVN0cmluZyhjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKIAogICAgIFNWR1RyYW5zZm9ybVZh
bHVlOjpTVkdUcmFuc2Zvcm1UeXBlIG1fdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRpb25FbGVtZW50LmNwcAppbmRleCA1NDI0MjhiZDk4MTE1ZmRiZTgxMGM3OGFkYTg2Y2YyOGUx
NTMzNjVlLi5iOGI1MWYxNmY0MjI5OTllZDAxYWU2OTM5MTdlOWRiMjY3YjE2N2I1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwCkBAIC0xNTMsNyArMTUzLDcg
QEAgYm9vbCBTVkdBbmltYXRpb25FbGVtZW50Ojppc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICByZXR1cm4gc3VwcG9ydGVkQXR0cmlidXRlcy5n
ZXQoKS5jb250YWluczxTVkdBdHRyaWJ1dGVIYXNoVHJhbnNsYXRvcj4oYXR0ck5hbWUpOwogfQog
Ci12b2lkIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCit2b2lkIFNWR0FuaW1hdGlv
bkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0
IEF0b21TdHJpbmcmIHZhbHVlKQogewogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjp2YWx1ZXNB
dHRyKSB7CiAgICAgICAgIC8vIFBlciB0aGUgU01JTCBzcGVjaWZpY2F0aW9uLCBsZWFkaW5nIGFu
ZCB0cmFpbGluZyB3aGl0ZSBzcGFjZSwKQEAgLTI3NywxMiArMjc3LDEyIEBAIHZvaWQgU1ZHQW5p
bWF0aW9uRWxlbWVudDo6dXBkYXRlQW5pbWF0aW9uTW9kZSgpCiAgICAgICAgIHNldEFuaW1hdGlv
bk1vZGUoQW5pbWF0aW9uTW9kZTo6Tm9uZSk7CiB9CiAKLXZvaWQgU1ZHQW5pbWF0aW9uRWxlbWVu
dDo6c2V0Q2FsY01vZGUoY29uc3QgQXRvbWljU3RyaW5nJiBjYWxjTW9kZSkKK3ZvaWQgU1ZHQW5p
bWF0aW9uRWxlbWVudDo6c2V0Q2FsY01vZGUoY29uc3QgQXRvbVN0cmluZyYgY2FsY01vZGUpCiB7
Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gZGlzY3JldGUo
ImRpc2NyZXRlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gbGluZWFyKCJsaW5lYXIiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBwYWNlZCgicGFjZWQiLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRv
bWljU3RyaW5nPiBzcGxpbmUoInNwbGluZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBkaXNj
cmV0ZSgiZGlzY3JldGUiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGxpbmVhcigibGluZWFyIiwg
QXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxjb25zdCBBdG9tU3RyaW5nPiBwYWNlZCgicGFjZWQiLCBBdG9tU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJp
bmc+IHNwbGluZSgic3BsaW5lIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwog
ICAgIGlmIChjYWxjTW9kZSA9PSBkaXNjcmV0ZSkKICAgICAgICAgc2V0Q2FsY01vZGUoQ2FsY01v
ZGU6OkRpc2NyZXRlKTsKICAgICBlbHNlIGlmIChjYWxjTW9kZSA9PSBsaW5lYXIpCkBAIC0yOTUs
MTAgKzI5NSwxMCBAQCB2b2lkIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OnNldENhbGNNb2RlKGNvbnN0
IEF0b21pY1N0cmluZyYgY2FsY01vZGUpCiAgICAgICAgIHNldENhbGNNb2RlKGhhc1RhZ05hbWUo
U1ZHTmFtZXM6OmFuaW1hdGVNb3Rpb25UYWcpID8gQ2FsY01vZGU6OlBhY2VkIDogQ2FsY01vZGU6
OkxpbmVhcik7CiB9CiAKLXZvaWQgU1ZHQW5pbWF0aW9uRWxlbWVudDo6c2V0QXR0cmlidXRlVHlw
ZShjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVR5cGUpCit2b2lkIFNWR0FuaW1hdGlvbkVs
ZW1lbnQ6OnNldEF0dHJpYnV0ZVR5cGUoY29uc3QgQXRvbVN0cmluZyYgYXR0cmlidXRlVHlwZSkK
IHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBjc3MoIkNT
UyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IHhtbCgiWE1MIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0
b21TdHJpbmc+IGNzcygiQ1NTIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB4bWwoIlhNTCIsIEF0
b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBpZiAoYXR0cmlidXRlVHlwZSA9
PSBjc3MpCiAgICAgICAgIG1fYXR0cmlidXRlVHlwZSA9IEF0dHJpYnV0ZVR5cGU6OkNTUzsKICAg
ICBlbHNlIGlmIChhdHRyaWJ1dGVUeXBlID09IHhtbCkKQEAgLTMyNCwxNSArMzI0LDE1IEBAIFN0
cmluZyBTVkdBbmltYXRpb25FbGVtZW50Ojpmcm9tVmFsdWUoKSBjb25zdAogCiBib29sIFNWR0Fu
aW1hdGlvbkVsZW1lbnQ6OmlzQWRkaXRpdmUoKSBjb25zdAogewotICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IHN1bSgic3VtIiwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSA9IGF0dHJp
YnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oU1ZHTmFtZXM6OmFkZGl0aXZlQXR0cik7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHN1bSgic3VtIiwgQXRvbVN0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVl
ID0gYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihTVkdOYW1lczo6YWRkaXRpdmVBdHRy
KTsKICAgICByZXR1cm4gdmFsdWUgPT0gc3VtIHx8IGFuaW1hdGlvbk1vZGUoKSA9PSBBbmltYXRp
b25Nb2RlOjpCeTsKIH0KIAogYm9vbCBTVkdBbmltYXRpb25FbGVtZW50Ojppc0FjY3VtdWxhdGVk
KCkgY29uc3QKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5n
PiBzdW0oInN1bSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIGNv
bnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSBhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9u
KFNWR05hbWVzOjphY2N1bXVsYXRlQXR0cik7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNv
bnN0IEF0b21TdHJpbmc+IHN1bSgic3VtIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpOworICAgIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlID0gYXR0cmlidXRlV2l0aG91dFN5bmNo
cm9uaXphdGlvbihTVkdOYW1lczo6YWNjdW11bGF0ZUF0dHIpOwogICAgIHJldHVybiB2YWx1ZSA9
PSBzdW0gJiYgYW5pbWF0aW9uTW9kZSgpICE9IEFuaW1hdGlvbk1vZGU6OlRvOwogfQogCkBAIC02
MDksNyArNjA5LDcgQEAgdm9pZCBTVkdBbmltYXRpb25FbGVtZW50Ojpjb21wdXRlQ1NTUHJvcGVy
dHlWYWx1ZShTVkdFbGVtZW50KiBlbGVtZW50LCBDU1NQcm9wZXIKIAogc3RhdGljIGJvb2wgaW5o
ZXJpdHNGcm9tUHJvcGVydHkoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCwgY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBpbmhlcml0KCJpbmhlcml0Iiwg
QXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGluaGVyaXQoImluaGVyaXQiLCBBdG9tU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgCiAgICAgaWYgKHZhbHVlLmlzRW1wdHkoKSB8fCB2
YWx1ZSAhPSBpbmhlcml0KQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuaW1hdGlvbkVsZW1lbnQuaAppbmRleCA1NGU5MTI4MTI5Yzc5MmNmODExZTNkNjA1NzU2
MzkwZjA4MGFmZTM1Li5hYTUzYTBjNTRiZjRkMGI2OTg1NjRjNTc5YWI0Zjk0MjU0MmRhNTMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmgKQEAgLTkyLDcgKzkyLDcg
QEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCByZXNldEFuaW1hdGlvbigpOwogCiAgICAg
c3RhdGljIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwot
ICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21p
Y1N0cmluZyYpIG92ZXJyaWRlOworICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHN2Z0F0dHJp
YnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCiAgICAgU3RyaW5n
IHRvVmFsdWUoKSBjb25zdDsKQEAgLTExNiw3ICsxMTYsNyBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZh
dGU6CiAgICAgdm9pZCBhbmltYXRpb25BdHRyaWJ1dGVDaGFuZ2VkKCkgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBzZXRBdHRyaWJ1dGVUeXBlKGNvbnN0IEF0b21pY1N0cmluZyYpOworICAgIHZvaWQgc2V0
QXR0cmlidXRlVHlwZShjb25zdCBBdG9tU3RyaW5nJik7CiAKICAgICB2aXJ0dWFsIGJvb2wgY2Fs
Y3VsYXRlVG9BdEVuZE9mRHVyYXRpb25WYWx1ZShjb25zdCBTdHJpbmcmIHRvQXRFbmRPZkR1cmF0
aW9uU3RyaW5nKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVl
cyhjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpID0gMDsK
QEAgLTEzMiw3ICsxMzIsNyBAQCBwcml2YXRlOgogICAgIGZsb2F0IGNhbGN1bGF0ZVBlcmNlbnRG
b3JGcm9tVG8oZmxvYXQgcGVyY2VudCkgY29uc3Q7CiAgICAgdW5zaWduZWQgY2FsY3VsYXRlS2V5
VGltZXNJbmRleChmbG9hdCBwZXJjZW50KSBjb25zdDsKIAotICAgIHZvaWQgc2V0Q2FsY01vZGUo
Y29uc3QgQXRvbWljU3RyaW5nJik7CisgICAgdm9pZCBzZXRDYWxjTW9kZShjb25zdCBBdG9tU3Ry
aW5nJik7CiAKICAgICBib29sIG1fYW5pbWF0aW9uVmFsaWQgeyBmYWxzZSB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5jcHAKaW5kZXggMGJlNjgyN2ExNjFlNDRhODFkZjE1
ZjEyNWJlZjcyOWNiN2M3MWQxOS4uZDkzMDQwYTFmNTZhYWVmZjVjMjkyMWQ0NmFiNzNkYjEwOGFk
NzhmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmNwcApAQCAtNDksNyAr
NDksNyBAQCBSZWY8U1ZHQ2lyY2xlRWxlbWVudD4gU1ZHQ2lyY2xlRWxlbWVudDo6Y3JlYXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvYwogICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFNWR0NpcmNsZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotdm9pZCBTVkdDaXJj
bGVFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25z
dCBBdG9taWNTdHJpbmcmIHZhbHVlKQordm9pZCBTVkdDaXJjbGVFbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkK
IHsKICAgICBTVkdQYXJzaW5nRXJyb3IgcGFyc2VFcnJvciA9IE5vRXJyb3I7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5oCmluZGV4IDVmOTBjNzBmYTlkNmJiMDJlZGI3NTQ3MDYx
OWM0ZjkzMjQ4YmYwMGMuLjcyMGYzMTBlNjQwZjgyZGJlZTY2NzA2NDNmNzkzMTNiNGY1ZWZhODUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuaApAQCAtNDYsNyArNDYsNyBAQCBw
cml2YXRlOgogICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVn
aXN0cnk8U1ZHQ2lyY2xlRWxlbWVudCwgU1ZHR2VvbWV0cnlFbGVtZW50LCBTVkdFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkPjsKICAgICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0
eVJlZ2lzdHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CiAK
LSAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9t
aWNTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5nJikgZmluYWw7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVD
aGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBmaW5hbDsKIAogICAgIGJvb2wgaXNWYWxpZCgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIFNWR1Rlc3RzOjppc1ZhbGlkKCk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHAKaW5kZXggZTEwNGM1OTMyMWQ0MjMyNTE1ZWYw
YmE3NTkzMTA0OWFhODRkNmZiZi4uNzRmOTczY2Q5MjE2NTBmZmRiZDU5MjQxOWYyMjI4NmVhNmYx
MmUyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHAKQEAgLTUw
LDcgKzUwLDcgQEAgUmVmPFNWR0NsaXBQYXRoRWxlbWVudD4gU1ZHQ2xpcFBhdGhFbGVtZW50Ojpj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwKICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTVkdDbGlwUGF0aEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotdm9pZCBT
VkdDbGlwUGF0aEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5h
bWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCit2b2lkIFNWR0NsaXBQYXRoRWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmlu
ZyYgdmFsdWUpCiB7CiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmNsaXBQYXRoVW5pdHNBdHRy
KSB7CiAgICAgICAgIGF1dG8gcHJvcGVydHlWYWx1ZSA9IFNWR1Byb3BlcnR5VHJhaXRzPFNWR1Vu
aXRUeXBlczo6U1ZHVW5pdFR5cGU+Ojpmcm9tU3RyaW5nKHZhbHVlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdDbGlwUGF0aEVsZW1lbnQuaAppbmRleCAzZWYwMzY4Y2M5NGY0NGFkZjRkMDRmN2EzYWMy
OGRkM2NiYmJlMzk2Li5mYjNlZjE3ZWE0ODA3ZDQ0YzA4YzRlZDI4MWMzMjI4ODFiOTcyOWRkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5oCkBAIC00Myw3ICs0Myw3IEBA
IHByaXZhdGU6CiAgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJS
ZWdpc3RyeTxTVkdDbGlwUGF0aEVsZW1lbnQsIFNWR0dyYXBoaWNzRWxlbWVudCwgU1ZHRXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZD47CiAgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJv
cGVydHlSZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsg
fQogCi0gICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3Qg
QXRvbWljU3RyaW5nJikgZmluYWw7CisgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiwgY29uc3QgQXRvbVN0cmluZyYpIGZpbmFsOwogICAgIHZvaWQgc3ZnQXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgZmluYWw7CiAgICAgdm9pZCBjaGlsZHJl
bkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5jcHAK
aW5kZXggMDFjMDMyOTdlMmEwMGE2MWQ0MTE1MjdiYzAzZTliNGZkNGNmZjZkYi4uNjhmOTIyN2Fm
ZjViZjBkZWQ5ZGNlYmJiN2VjZmI2MzRlMTNkOGI1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuY3BwCkBA
IC00Niw3ICs0Niw3IEBAIFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50OjpTVkdD
b21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudChjb25zdCBRCiAgICAgfSk7CiB9CiAKLXZv
aWQgU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCit2b2lk
IFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBp
ZiAobmFtZSA9PSBTVkdOYW1lczo6dHlwZUF0dHIpIHsKICAgICAgICAgQ29tcG9uZW50VHJhbnNm
ZXJUeXBlIHByb3BlcnR5VmFsdWUgPSBTVkdQcm9wZXJ0eVRyYWl0czxDb21wb25lbnRUcmFuc2Zl
clR5cGU+Ojpmcm9tU3RyaW5nKHZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmgKaW5kZXggYTMzODhmODJl
MjgyMTk0NDZmMmYyMzFlNmIwZTc1M2FiZmRmNTEzMS4uZTU5MGYyYzYzMDhkZTRhZTAyZWIxYWNk
MDMzNDA2ZjY1ZjBlYzJiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbXBv
bmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmgKQEAgLTk0LDcgKzk0LDcgQEAgcHJv
dGVjdGVkOgogICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVn
aXN0cnk8U1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQsIFNWR0VsZW1lbnQ+Owog
ICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KIAotICAgIHZvaWQgcGFyc2VB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJy
aWRlOworICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0
IEF0b21TdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29u
c3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCiAgICAgYm9vbCByZW5kZXJlcklzTmVlZGVk
KGNvbnN0IFJlbmRlclN0eWxlJikgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcAppbmRleCBkMjBhM2E0NmI1ZjUwMzdhNmU4MTI5
ZDI1YzcxNmI1OTk5YmMzNzI2Li41Y2Q3ZDE5ZGU5Mzk1ZWUxZmY0NWQwYjdlNDZlODUzZTBiYmY3
NDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0N1cnNvckVsZW1lbnQuY3BwCkBAIC01OSw3ICs1
OSw3IEBAIFNWR0N1cnNvckVsZW1lbnQ6On5TVkdDdXJzb3JFbGVtZW50KCkKICAgICAgICAgY2xp
ZW50LT5jdXJzb3JFbGVtZW50UmVtb3ZlZCgqdGhpcyk7CiB9CiAKLXZvaWQgU1ZHQ3Vyc29yRWxl
bWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRv
bWljU3RyaW5nJiB2YWx1ZSkKK3ZvaWQgU1ZHQ3Vyc29yRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCiB7CiAg
ICAgU1ZHUGFyc2luZ0Vycm9yIHBhcnNlRXJyb3IgPSBOb0Vycm9yOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0N1cnNvckVsZW1lbnQuaAppbmRleCA5YjgxMmViYzhiNGYxMWJlOTcyMDI1YWFhNjQ0NTg2
NDJmYmE2YWVkLi5lZDY0ZDVmYTE5ZTgzNWY5MDgwNTMyNTU1ZjE3YzhjZjQ3NDRjMDIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmgKQEAgLTUyLDcgKzUyLDcgQEAgcHJpdmF0
ZToKICAgICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5
PFNWR0N1cnNvckVsZW1lbnQsIFNWR0VsZW1lbnQsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQsIFNWR1Rlc3RzLCBTVkdVUklSZWZlcmVuY2U+OwogICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVn
aXN0cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5
UmVnaXN0cnk7IH0KICAgICAKLSAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIHBhcnNlQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5nJikgZmluYWw7CiAgICAg
dm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBmaW5hbDsKIAog
ICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFNWR1Rlc3RzOjppc1ZhbGlk
KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lv
bnMuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAKaW5k
ZXggNWM0NTMzNWI1YTUzMzMwODhiNWRmZTQyZDQ2MjllYWQ2ZjVhOGRmOC4uYmM1MTQzNGIwYjJi
OGUwYmY3N2U1N2E0YTc2ZTRkNGJjZWVlOTk2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlICJTVkdT
VkdFbGVtZW50LmgiCiAjaW5jbHVkZSAiU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyLmgiCiAjaW5j
bHVkZSAiU2hhZG93Um9vdC5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpyZW1vdmVUaW1l
Q29udGFpbmVyKFNWR1NWR0VsZW1lbnQmIGVsZW1lbnQpCiAgICAgbV90aW1lQ29udGFpbmVycy5y
ZW1vdmUoJmVsZW1lbnQpOwogfQogCi12b2lkIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6YWRkUmVz
b3VyY2UoY29uc3QgQXRvbWljU3RyaW5nJiBpZCwgUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIm
IHJlc291cmNlKQordm9pZCBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OmFkZFJlc291cmNlKGNvbnN0
IEF0b21TdHJpbmcmIGlkLCBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lciYgcmVzb3VyY2UpCiB7
CiAgICAgaWYgKGlkLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNjksNyArNjksNyBA
QCB2b2lkIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6YWRkUmVzb3VyY2UoY29uc3QgQXRvbWljU3Ry
aW5nJiBpZCwgUmVuZGVyU1ZHUmVzb3VyYwogICAgIG1fcmVzb3VyY2VzLnNldChpZCwgJnJlc291
cmNlKTsKIH0KIAotdm9pZCBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnJlbW92ZVJlc291cmNlKGNv
bnN0IEF0b21pY1N0cmluZyYgaWQpCit2b2lkIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6cmVtb3Zl
UmVzb3VyY2UoY29uc3QgQXRvbVN0cmluZyYgaWQpCiB7CiAgICAgaWYgKGlkLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtNzcsNyArNzcsNyBAQCB2b2lkIFNWR0RvY3VtZW50RXh0ZW5z
aW9uczo6cmVtb3ZlUmVzb3VyY2UoY29uc3QgQXRvbWljU3RyaW5nJiBpZCkKICAgICBtX3Jlc291
cmNlcy5yZW1vdmUoaWQpOwogfQogCi1SZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lciogU1ZHRG9j
dW1lbnRFeHRlbnNpb25zOjpyZXNvdXJjZUJ5SWQoY29uc3QgQXRvbWljU3RyaW5nJiBpZCkgY29u
c3QKK1JlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyKiBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnJl
c291cmNlQnlJZChjb25zdCBBdG9tU3RyaW5nJiBpZCkgY29uc3QKIHsKICAgICBpZiAoaWQuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm4gMDsKQEAgLTEzOSw3ICsxMzksNyBAQCB2b2lkIFNWR0Rv
Y3VtZW50RXh0ZW5zaW9uczo6cmVwb3J0RXJyb3IoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAg
IHJlcG9ydE1lc3NhZ2UobV9kb2N1bWVudCwgTWVzc2FnZUxldmVsOjpFcnJvciwgIkVycm9yOiAi
ICsgbWVzc2FnZSk7CiB9CiAKLXZvaWQgU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjphZGRQZW5kaW5n
UmVzb3VyY2UoY29uc3QgQXRvbWljU3RyaW5nJiBpZCwgRWxlbWVudCYgZWxlbWVudCkKK3ZvaWQg
U1ZHRG9jdW1lbnRFeHRlbnNpb25zOjphZGRQZW5kaW5nUmVzb3VyY2UoY29uc3QgQXRvbVN0cmlu
ZyYgaWQsIEVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgaWYgKGlkLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgU1ZHRG9jdW1lbnRFeHRlbnNpb25z
OjphZGRQZW5kaW5nUmVzb3VyY2UoY29uc3QgQXRvbWljU3RyaW5nJiBpZCwgRWxlbWVudCYKICAg
ICBlbGVtZW50LnNldEhhc1BlbmRpbmdSZXNvdXJjZXMoKTsKIH0KIAotYm9vbCBTVkdEb2N1bWVu
dEV4dGVuc2lvbnM6OmlzSWRPZlBlbmRpbmdSZXNvdXJjZShjb25zdCBBdG9taWNTdHJpbmcmIGlk
KSBjb25zdAorYm9vbCBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OmlzSWRPZlBlbmRpbmdSZXNvdXJj
ZShjb25zdCBBdG9tU3RyaW5nJiBpZCkgY29uc3QKIHsKICAgICBpZiAoaWQuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNzIsNyArMTcyLDcgQEAgYm9vbCBTVkdEb2N1bWVu
dEV4dGVuc2lvbnM6OmlzRWxlbWVudFdpdGhQZW5kaW5nUmVzb3VyY2VzKEVsZW1lbnQmIGVsZW1l
bnQpIGNvbnMKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgU1ZHRG9jdW1lbnRFeHRlbnNp
b25zOjppc1BlbmRpbmdSZXNvdXJjZShFbGVtZW50JiBlbGVtZW50LCBjb25zdCBBdG9taWNTdHJp
bmcmIGlkKSBjb25zdAorYm9vbCBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OmlzUGVuZGluZ1Jlc291
cmNlKEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEF0b21TdHJpbmcmIGlkKSBjb25zdAogewogICAg
IGlmICghaXNJZE9mUGVuZGluZ1Jlc291cmNlKGlkKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtMTkwLDcgKzE5MCw3IEBAIHZvaWQgU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpyZW1vdmVFbGVt
ZW50RnJvbVBlbmRpbmdSZXNvdXJjZXMoRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICAvLyBSZW1v
dmUgdGhlIGVsZW1lbnQgZnJvbSBwZW5kaW5nIHJlc291cmNlcy4KICAgICBpZiAoIW1fcGVuZGlu
Z1Jlc291cmNlcy5pc0VtcHR5KCkgJiYgZWxlbWVudC5oYXNQZW5kaW5nUmVzb3VyY2VzKCkpIHsK
LSAgICAgICAgVmVjdG9yPEF0b21pY1N0cmluZz4gdG9CZVJlbW92ZWQ7CisgICAgICAgIFZlY3Rv
cjxBdG9tU3RyaW5nPiB0b0JlUmVtb3ZlZDsKICAgICAgICAgZm9yIChhdXRvJiByZXNvdXJjZSA6
IG1fcGVuZGluZ1Jlc291cmNlcykgewogICAgICAgICAgICAgUGVuZGluZ0VsZW1lbnRzKiBlbGVt
ZW50cyA9IHJlc291cmNlLnZhbHVlLmdldCgpOwogICAgICAgICAgICAgQVNTRVJUKGVsZW1lbnRz
KTsKQEAgLTIxMCw3ICsyMTAsNyBAQCB2b2lkIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6cmVtb3Zl
RWxlbWVudEZyb21QZW5kaW5nUmVzb3VyY2VzKEVsZW1lbnQmIGVsZW1lbnQpCiAKICAgICAvLyBS
ZW1vdmUgdGhlIGVsZW1lbnQgZnJvbSBwZW5kaW5nIHJlc291cmNlcyB0aGF0IHdlcmUgc2NoZWR1
bGVkIGZvciByZW1vdmFsLgogICAgIGlmICghbV9wZW5kaW5nUmVzb3VyY2VzRm9yUmVtb3ZhbC5p
c0VtcHR5KCkpIHsKLSAgICAgICAgVmVjdG9yPEF0b21pY1N0cmluZz4gdG9CZVJlbW92ZWQ7Cisg
ICAgICAgIFZlY3RvcjxBdG9tU3RyaW5nPiB0b0JlUmVtb3ZlZDsKICAgICAgICAgZm9yIChhdXRv
JiByZXNvdXJjZSA6IG1fcGVuZGluZ1Jlc291cmNlc0ZvclJlbW92YWwpIHsKICAgICAgICAgICAg
IFBlbmRpbmdFbGVtZW50cyogZWxlbWVudHMgPSByZXNvdXJjZS52YWx1ZS5nZXQoKTsKICAgICAg
ICAgICAgIEFTU0VSVChlbGVtZW50cyk7CkBAIC0yMjcsMTkgKzIyNywxOSBAQCB2b2lkIFNWR0Rv
Y3VtZW50RXh0ZW5zaW9uczo6cmVtb3ZlRWxlbWVudEZyb21QZW5kaW5nUmVzb3VyY2VzKEVsZW1l
bnQmIGVsZW1lbnQpCiAgICAgfQogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8U1ZHRG9jdW1lbnRFeHRl
bnNpb25zOjpQZW5kaW5nRWxlbWVudHM+IFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6cmVtb3ZlUGVu
ZGluZ1Jlc291cmNlKGNvbnN0IEF0b21pY1N0cmluZyYgaWQpCitzdGQ6OnVuaXF1ZV9wdHI8U1ZH
RG9jdW1lbnRFeHRlbnNpb25zOjpQZW5kaW5nRWxlbWVudHM+IFNWR0RvY3VtZW50RXh0ZW5zaW9u
czo6cmVtb3ZlUGVuZGluZ1Jlc291cmNlKGNvbnN0IEF0b21TdHJpbmcmIGlkKQogewogICAgIEFT
U0VSVChtX3BlbmRpbmdSZXNvdXJjZXMuY29udGFpbnMoaWQpKTsKICAgICByZXR1cm4gbV9wZW5k
aW5nUmVzb3VyY2VzLnRha2UoaWQpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8U1ZHRG9jdW1lbnRF
eHRlbnNpb25zOjpQZW5kaW5nRWxlbWVudHM+IFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6cmVtb3Zl
UGVuZGluZ1Jlc291cmNlRm9yUmVtb3ZhbChjb25zdCBBdG9taWNTdHJpbmcmIGlkKQorc3RkOjp1
bmlxdWVfcHRyPFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6UGVuZGluZ0VsZW1lbnRzPiBTVkdEb2N1
bWVudEV4dGVuc2lvbnM6OnJlbW92ZVBlbmRpbmdSZXNvdXJjZUZvclJlbW92YWwoY29uc3QgQXRv
bVN0cmluZyYgaWQpCiB7CiAgICAgQVNTRVJUKG1fcGVuZGluZ1Jlc291cmNlc0ZvclJlbW92YWwu
Y29udGFpbnMoaWQpKTsKICAgICByZXR1cm4gbV9wZW5kaW5nUmVzb3VyY2VzRm9yUmVtb3ZhbC50
YWtlKGlkKTsKIH0KIAotdm9pZCBTVkdEb2N1bWVudEV4dGVuc2lvbnM6Om1hcmtQZW5kaW5nUmVz
b3VyY2VzRm9yUmVtb3ZhbChjb25zdCBBdG9taWNTdHJpbmcmIGlkKQordm9pZCBTVkdEb2N1bWVu
dEV4dGVuc2lvbnM6Om1hcmtQZW5kaW5nUmVzb3VyY2VzRm9yUmVtb3ZhbChjb25zdCBBdG9tU3Ry
aW5nJiBpZCkKIHsKICAgICBpZiAoaWQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CkBAIC0y
NTEsNyArMjUxLDcgQEAgdm9pZCBTVkdEb2N1bWVudEV4dGVuc2lvbnM6Om1hcmtQZW5kaW5nUmVz
b3VyY2VzRm9yUmVtb3ZhbChjb25zdCBBdG9taWNTdHJpbmcmIGkKICAgICAgICAgbV9wZW5kaW5n
UmVzb3VyY2VzRm9yUmVtb3ZhbC5hZGQoaWQsIFdURk1vdmUoZXhpc3RpbmcpKTsKIH0KIAotUmVm
UHRyPEVsZW1lbnQ+IFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6cmVtb3ZlRWxlbWVudEZyb21QZW5k
aW5nUmVzb3VyY2VzRm9yUmVtb3ZhbE1hcChjb25zdCBBdG9taWNTdHJpbmcmIGlkKQorUmVmUHRy
PEVsZW1lbnQ+IFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6cmVtb3ZlRWxlbWVudEZyb21QZW5kaW5n
UmVzb3VyY2VzRm9yUmVtb3ZhbE1hcChjb25zdCBBdG9tU3RyaW5nJiBpZCkKIHsKICAgICBpZiAo
aWQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdE
b2N1bWVudEV4dGVuc2lvbnMuaAppbmRleCBjNDlmMmRjNzNkMjFhZWIzNmExMThjNzFhNzhlNTAy
NTRiZjlhMzM0Li44ZmJkZjNhM2E2M2I1NWUzN2UyODNhNjllODNkYzI0OTI2ZWVmNWQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5oCkBAIC0yMyw3ICsyMyw3
IEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgog
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5n
SGFzaC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtNDYsOSArNDYsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRUaW1l
Q29udGFpbmVyKFNWR1NWR0VsZW1lbnQmKTsKICAgICB2b2lkIHJlbW92ZVRpbWVDb250YWluZXIo
U1ZHU1ZHRWxlbWVudCYpOwogCi0gICAgdm9pZCBhZGRSZXNvdXJjZShjb25zdCBBdG9taWNTdHJp
bmcmIGlkLCBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lciYpOwotICAgIHZvaWQgcmVtb3ZlUmVz
b3VyY2UoY29uc3QgQXRvbWljU3RyaW5nJiBpZCk7Ci0gICAgUmVuZGVyU1ZHUmVzb3VyY2VDb250
YWluZXIqIHJlc291cmNlQnlJZChjb25zdCBBdG9taWNTdHJpbmcmIGlkKSBjb25zdDsKKyAgICB2
b2lkIGFkZFJlc291cmNlKGNvbnN0IEF0b21TdHJpbmcmIGlkLCBSZW5kZXJTVkdSZXNvdXJjZUNv
bnRhaW5lciYpOworICAgIHZvaWQgcmVtb3ZlUmVzb3VyY2UoY29uc3QgQXRvbVN0cmluZyYgaWQp
OworICAgIFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyKiByZXNvdXJjZUJ5SWQoY29uc3QgQXRv
bVN0cmluZyYgaWQpIGNvbnN0OwogCiAgICAgdm9pZCBzdGFydEFuaW1hdGlvbnMoKTsKICAgICB2
b2lkIHBhdXNlQW5pbWF0aW9ucygpOwpAQCAtODIsOSArODIsOSBAQCBwcml2YXRlOgogI2lmIEVO
QUJMRShTVkdfRk9OVFMpCiAgICAgSGFzaFNldDxTVkdGb250RmFjZUVsZW1lbnQqPiBtX3N2Z0Zv
bnRGYWNlRWxlbWVudHM7CiAjZW5kaWYKLSAgICBIYXNoTWFwPEF0b21pY1N0cmluZywgUmVuZGVy
U1ZHUmVzb3VyY2VDb250YWluZXIqPiBtX3Jlc291cmNlczsKLSAgICBIYXNoTWFwPEF0b21pY1N0
cmluZywgc3RkOjp1bmlxdWVfcHRyPFBlbmRpbmdFbGVtZW50cz4+IG1fcGVuZGluZ1Jlc291cmNl
czsgLy8gUmVzb3VyY2VzIHRoYXQgYXJlIHBlbmRpbmcuCi0gICAgSGFzaE1hcDxBdG9taWNTdHJp
bmcsIHN0ZDo6dW5pcXVlX3B0cjxQZW5kaW5nRWxlbWVudHM+PiBtX3BlbmRpbmdSZXNvdXJjZXNG
b3JSZW1vdmFsOyAvLyBSZXNvdXJjZXMgdGhhdCBhcmUgcGVuZGluZyBhbmQgc2NoZWR1bGVkIGZv
ciByZW1vdmFsLgorICAgIEhhc2hNYXA8QXRvbVN0cmluZywgUmVuZGVyU1ZHUmVzb3VyY2VDb250
YWluZXIqPiBtX3Jlc291cmNlczsKKyAgICBIYXNoTWFwPEF0b21TdHJpbmcsIHN0ZDo6dW5pcXVl
X3B0cjxQZW5kaW5nRWxlbWVudHM+PiBtX3BlbmRpbmdSZXNvdXJjZXM7IC8vIFJlc291cmNlcyB0
aGF0IGFyZSBwZW5kaW5nLgorICAgIEhhc2hNYXA8QXRvbVN0cmluZywgc3RkOjp1bmlxdWVfcHRy
PFBlbmRpbmdFbGVtZW50cz4+IG1fcGVuZGluZ1Jlc291cmNlc0ZvclJlbW92YWw7IC8vIFJlc291
cmNlcyB0aGF0IGFyZSBwZW5kaW5nIGFuZCBzY2hlZHVsZWQgZm9yIHJlbW92YWwuCiAgICAgSGFz
aE1hcDxTVkdFbGVtZW50Kiwgc3RkOjp1bmlxdWVfcHRyPEhhc2hTZXQ8U1ZHRWxlbWVudCo+Pj4g
bV9lbGVtZW50RGVwZW5kZW5jaWVzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTVkdSZXNvdXJjZXND
YWNoZT4gbV9yZXNvdXJjZXNDYWNoZTsKIApAQCAtOTUsMjAgKzk1LDIwIEBAIHB1YmxpYzoKICAg
ICAvLyBUaGlzIEhhc2hNYXAgY29udGFpbnMgYSBsaXN0IG9mIHBlbmRpbmcgcmVzb3VyY2VzLiBQ
ZW5kaW5nIHJlc291cmNlcywgYXJlIHN1Y2gKICAgICAvLyB3aGljaCBhcmUgcmVmZXJlbmNlZCBi
eSBhbnkgb2JqZWN0IGluIHRoZSBTVkcgZG9jdW1lbnQsIGJ1dCBkbyBOT1QgZXhpc3QgeWV0Lgog
ICAgIC8vIEZvciBpbnN0YW5jZSwgZHluYW1pY2FsbHkgYnVpbGQgZ3JhZGllbnRzIC8gcGF0dGVy
bnMgLyBjbGlwcGVycy4uLgotICAgIHZvaWQgYWRkUGVuZGluZ1Jlc291cmNlKGNvbnN0IEF0b21p
Y1N0cmluZyYgaWQsIEVsZW1lbnQmKTsKLSAgICBib29sIGlzSWRPZlBlbmRpbmdSZXNvdXJjZShj
b25zdCBBdG9taWNTdHJpbmcmIGlkKSBjb25zdDsKLSAgICBib29sIGlzUGVuZGluZ1Jlc291cmNl
KEVsZW1lbnQmLCBjb25zdCBBdG9taWNTdHJpbmcmIGlkKSBjb25zdDsKKyAgICB2b2lkIGFkZFBl
bmRpbmdSZXNvdXJjZShjb25zdCBBdG9tU3RyaW5nJiBpZCwgRWxlbWVudCYpOworICAgIGJvb2wg
aXNJZE9mUGVuZGluZ1Jlc291cmNlKGNvbnN0IEF0b21TdHJpbmcmIGlkKSBjb25zdDsKKyAgICBi
b29sIGlzUGVuZGluZ1Jlc291cmNlKEVsZW1lbnQmLCBjb25zdCBBdG9tU3RyaW5nJiBpZCkgY29u
c3Q7CiAgICAgdm9pZCBjbGVhckhhc1BlbmRpbmdSZXNvdXJjZXNJZlBvc3NpYmxlKEVsZW1lbnQm
KTsKICAgICB2b2lkIHJlbW92ZUVsZW1lbnRGcm9tUGVuZGluZ1Jlc291cmNlcyhFbGVtZW50Jik7
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFBlbmRpbmdFbGVtZW50cz4gcmVtb3ZlUGVuZGluZ1Jlc291
cmNlKGNvbnN0IEF0b21pY1N0cmluZyYgaWQpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxQZW5kaW5n
RWxlbWVudHM+IHJlbW92ZVBlbmRpbmdSZXNvdXJjZShjb25zdCBBdG9tU3RyaW5nJiBpZCk7CiAK
ICAgICAvLyBUaGUgZm9sbG93aW5nIHR3byBmdW5jdGlvbnMgYXJlIHVzZWQgZm9yIHNjaGVkdWxp
bmcgYSBwZW5kaW5nIHJlc291cmNlIHRvIGJlIHJlbW92ZWQuCi0gICAgdm9pZCBtYXJrUGVuZGlu
Z1Jlc291cmNlc0ZvclJlbW92YWwoY29uc3QgQXRvbWljU3RyaW5nJik7Ci0gICAgUmVmUHRyPEVs
ZW1lbnQ+IHJlbW92ZUVsZW1lbnRGcm9tUGVuZGluZ1Jlc291cmNlc0ZvclJlbW92YWxNYXAoY29u
c3QgQXRvbWljU3RyaW5nJik7CisgICAgdm9pZCBtYXJrUGVuZGluZ1Jlc291cmNlc0ZvclJlbW92
YWwoY29uc3QgQXRvbVN0cmluZyYpOworICAgIFJlZlB0cjxFbGVtZW50PiByZW1vdmVFbGVtZW50
RnJvbVBlbmRpbmdSZXNvdXJjZXNGb3JSZW1vdmFsTWFwKGNvbnN0IEF0b21TdHJpbmcmKTsKIAog
cHJpdmF0ZToKICAgICBib29sIGlzRWxlbWVudFdpdGhQZW5kaW5nUmVzb3VyY2VzKEVsZW1lbnQm
KSBjb25zdDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UGVuZGluZ0VsZW1lbnRzPiByZW1vdmVQZW5k
aW5nUmVzb3VyY2VGb3JSZW1vdmFsKGNvbnN0IEF0b21pY1N0cmluZyYpOworICAgIHN0ZDo6dW5p
cXVlX3B0cjxQZW5kaW5nRWxlbWVudHM+IHJlbW92ZVBlbmRpbmdSZXNvdXJjZUZvclJlbW92YWwo
Y29uc3QgQXRvbVN0cmluZyYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0VsZW1lbnQuY3BwCmluZGV4IGNjNWI2ZmQyNWU4NWI3ZjljYTllY2EyZTFhZWFkNGVm
NDU4ZjYxODkuLmE4MDk2ZGRhZGE4MWVhZDZhN2ExZWEzMjRjZDg1MDY3ZjVjMGIyOGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoU1ZHRWxlbWVudCk7CiAKLXN0YXRp
YyBORVZFUl9JTkxJTkUgSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgQ1NTUHJvcGVydHlJRD4g
Y3JlYXRlQXR0cmlidXRlTmFtZVRvQ1NTUHJvcGVydHlJRE1hcCgpCitzdGF0aWMgTkVWRVJfSU5M
SU5FIEhhc2hNYXA8QXRvbVN0cmluZ0ltcGwqLCBDU1NQcm9wZXJ0eUlEPiBjcmVhdGVBdHRyaWJ1
dGVOYW1lVG9DU1NQcm9wZXJ0eUlETWFwKCkKIHsKICAgICB1c2luZyBuYW1lc3BhY2UgSFRNTE5h
bWVzOwogICAgIHVzaW5nIG5hbWVzcGFjZSBTVkdOYW1lczsKQEAgLTE0NCwxMCArMTQ0LDEwIEBA
IHN0YXRpYyBORVZFUl9JTkxJTkUgSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgQ1NTUHJvcGVy
dHlJRD4gY3JlYXRlQXR0cmlidXRlTmFtCiAgICAgICAgICZ5QXR0ci5nZXQoKSwKICAgICB9Owog
Ci0gICAgSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgQ1NTUHJvcGVydHlJRD4gbWFwOworICAg
IEhhc2hNYXA8QXRvbVN0cmluZ0ltcGwqLCBDU1NQcm9wZXJ0eUlEPiBtYXA7CiAKICAgICBmb3Ig
KGF1dG8mIG5hbWUgOiBhdHRyaWJ1dGVOYW1lcykgewotICAgICAgICBjb25zdCBBdG9taWNTdHJp
bmcmIGxvY2FsTmFtZSA9IG5hbWUtPmxvY2FsTmFtZSgpOworICAgICAgICBjb25zdCBBdG9tU3Ry
aW5nJiBsb2NhbE5hbWUgPSBuYW1lLT5sb2NhbE5hbWUoKTsKICAgICAgICAgbWFwLmFkZChsb2Nh
bE5hbWUuaW1wbCgpLCBjc3NQcm9wZXJ0eUlEKGxvY2FsTmFtZSkpOwogICAgIH0KIApAQCAtMjMw
LDcgKzIzMCw3IEBAIGJvb2wgU1ZHRWxlbWVudDo6aXNPdXRlcm1vc3RTVkdTVkdFbGVtZW50KCkg
Y29uc3QKICAgICByZXR1cm4gIXBhcmVudE5vZGUoKS0+aXNTVkdFbGVtZW50KCk7CiB9CiAKLXZv
aWQgU1ZHRWxlbWVudDo6cmVwb3J0QXR0cmlidXRlUGFyc2luZ0Vycm9yKFNWR1BhcnNpbmdFcnJv
ciBlcnJvciwgY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2
YWx1ZSkKK3ZvaWQgU1ZHRWxlbWVudDo6cmVwb3J0QXR0cmlidXRlUGFyc2luZ0Vycm9yKFNWR1Bh
cnNpbmdFcnJvciBlcnJvciwgY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0
cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKGVycm9yID09IE5vRXJyb3IpCiAgICAgICAgIHJldHVy
bjsKQEAgLTM0MSw3ICszNDEsNyBAQCB2b2lkIFNWR0VsZW1lbnQ6OnNldENvcnJlc3BvbmRpbmdF
bGVtZW50KFNWR0VsZW1lbnQqIGNvcnJlc3BvbmRpbmdFbGVtZW50KQogICAgICAgICBjb3JyZXNw
b25kaW5nRWxlbWVudC0+ZW5zdXJlU1ZHUmFyZURhdGEoKS5pbnN0YW5jZXMoKS5hZGQodGhpcyk7
CiB9CiAKLXZvaWQgU1ZHRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKK3ZvaWQgU1ZHRWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYg
dmFsdWUpCiB7CiAgICAgaWYgKG5hbWUgPT0gSFRNTE5hbWVzOjpjbGFzc0F0dHIpIHsKICAgICAg
ICAgbV9jbGFzc05hbWUtPnNldEJhc2VWYWxJbnRlcm5hbCh2YWx1ZSk7CkBAIC0zNzQsNyArMzc0
LDcgQEAgYm9vbCBTVkdFbGVtZW50OjpoYXZlTG9hZGVkUmVxdWlyZWRSZXNvdXJjZXMoKQogICAg
IHJldHVybiB0cnVlOwogfQogCi1ib29sIFNWR0VsZW1lbnQ6OmFkZEV2ZW50TGlzdGVuZXIoY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVy
LCBjb25zdCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucyYgb3B0aW9ucykKK2Jvb2wgU1ZHRWxlbWVu
dDo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIFJlZjxFdmVu
dExpc3RlbmVyPiYmIGxpc3RlbmVyLCBjb25zdCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucyYgb3B0
aW9ucykKIHsgICAKICAgICAvLyBBZGQgZXZlbnQgbGlzdGVuZXIgdG8gcmVndWxhciBET00gZWxl
bWVudAogICAgIGlmICghTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3RlbmVy
LmNvcHlSZWYoKSwgb3B0aW9ucykpCkBAIC0zOTQsNyArMzk0LDcgQEAgYm9vbCBTVkdFbGVtZW50
OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZl
bnRMaXN0ZW4KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBTVkdFbGVtZW50OjpyZW1vdmVF
dmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVy
JiBsaXN0ZW5lciwgY29uc3QgTGlzdGVuZXJPcHRpb25zJiBvcHRpb25zKQorYm9vbCBTVkdFbGVt
ZW50OjpyZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgRXZl
bnRMaXN0ZW5lciYgbGlzdGVuZXIsIGNvbnN0IExpc3RlbmVyT3B0aW9ucyYgb3B0aW9ucykKIHsK
ICAgICBpZiAoY29udGFpbmluZ1NoYWRvd1Jvb3QoKSkKICAgICAgICAgcmV0dXJuIE5vZGU6OnJl
bW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lciwgb3B0aW9ucyk7CkBAIC01MzMs
NyArNTMzLDcgQEAgYm9vbCBTVkdFbGVtZW50OjpjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNv
bnN0IE5vZGUmIGNoaWxkKSBjb25zdAogICAgIHJldHVybiBzdmdDaGlsZC5pc1ZhbGlkKCk7CiB9
CiAKLXZvaWQgU1ZHRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1l
JiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBBdG9taWNTdHJpbmcm
IG5ld1ZhbHVlLCBBdHRyaWJ1dGVNb2RpZmljYXRpb25SZWFzb24pCit2b2lkIFNWR0VsZW1lbnQ6
OmF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0
cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0b21TdHJpbmcmIG5ld1ZhbHVlLCBBdHRyaWJ1dGVNb2Rp
ZmljYXRpb25SZWFzb24pCiB7CiAgICAgU3R5bGVkRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZChu
YW1lLCBvbGRWYWx1ZSwgbmV3VmFsdWUpOwogCkBAIC02NzUsNyArNjc1LDcgQEAgY29uc3QgUmVu
ZGVyU3R5bGUqIFNWR0VsZW1lbnQ6OmNvbXB1dGVkU3R5bGUoUHNldWRvSWQgcHNldWRvRWxlbWVu
dFNwZWNpZmllcikKICAgICByZXR1cm4gbV9zdmdSYXJlRGF0YS0+b3ZlcnJpZGVDb21wdXRlZFN0
eWxlKCp0aGlzLCBwYXJlbnRTdHlsZSk7CiB9CiAKLVF1YWxpZmllZE5hbWUgU1ZHRWxlbWVudDo6
YW5pbWF0YWJsZUF0dHJpYnV0ZUZvck5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUp
CitRdWFsaWZpZWROYW1lIFNWR0VsZW1lbnQ6OmFuaW1hdGFibGVBdHRyaWJ1dGVGb3JOYW1lKGNv
bnN0IEF0b21TdHJpbmcmIGxvY2FsTmFtZSkKIHsKICAgICBzdGF0aWMgY29uc3QgYXV0byBhbmlt
YXRhYmxlQXR0cmlidXRlcyA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CiAgICAgICAgIHN0YXRp
YyBjb25zdCBRdWFsaWZpZWROYW1lKiBjb25zdCBuYW1lc1tdID0gewpAQCAtNzczLDcgKzc3Myw3
IEBAIFF1YWxpZmllZE5hbWUgU1ZHRWxlbWVudDo6YW5pbWF0YWJsZUF0dHJpYnV0ZUZvck5hbWUo
Y29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hCiAgICAgICAgICAgICAmU1ZHTmFtZXM6OnpBdHRy
LmdldCgpLAogICAgICAgICAgICAgJlNWR05hbWVzOjpocmVmQXR0ci5nZXQoKSwKICAgICAgICAg
fTsKLSAgICAgICAgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFF1YWxpZmllZE5hbWU+IG1hcDsKKyAg
ICAgICAgSGFzaE1hcDxBdG9tU3RyaW5nLCBRdWFsaWZpZWROYW1lPiBtYXA7CiAgICAgICAgIGZv
ciAoYXV0byYgbmFtZSA6IG5hbWVzKSB7CiAgICAgICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1h
cC5hZGQobmFtZS0+bG9jYWxOYW1lKCksICpuYW1lKTsKICAgICAgICAgICAgIEFTU0VSVF9VTlVT
RUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CkBAIC04MzksNyArODM5LDcgQEAg
Ym9vbCBTVkdFbGVtZW50Ojppc1ByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBuYW1lKSBjb25zdAogICAgIHJldHVybiBTdHlsZWRFbGVtZW50Ojppc1ByZXNlbnRhdGlv
bkF0dHJpYnV0ZShuYW1lKTsKIH0KIAotdm9pZCBTVkdFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQ
cmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRv
bWljU3RyaW5nJiB2YWx1ZSwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYgc3R5bGUpCit2b2lkIFNW
R0VsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSwgTXV0YWJsZVN0eWxlUHJv
cGVydGllcyYgc3R5bGUpCiB7CiAgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEID0gY3NzUHJv
cGVydHlJZEZvclNWR0F0dHJpYnV0ZU5hbWUobmFtZSk7CiAgICAgaWYgKHByb3BlcnR5SUQgPiAw
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKaW5kZXggYjRhNzAxZDFlZDgyYTk0NDkwNmZlYzc1NTg5
N2I2MjVmOGJmNzE3MC4uZGQ0NTVkNmUzZThiNmQ2ZDM3MjA4N2Q2ODU0NjgxYWMzMjcwMGM5NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCkBAIC00NSw3ICs0NSw3IEBAIGNsYXNzIFNWR1Byb3Bl
cnR5QW5pbWF0b3JGYWN0b3J5OwogY2xhc3MgU1ZHU1ZHRWxlbWVudDsKIGNsYXNzIFNWR1VzZUVs
ZW1lbnQ7CiAKLXZvaWQgbWFwQXR0cmlidXRlVG9DU1NQcm9wZXJ0eShIYXNoTWFwPEF0b21pY1N0
cmluZ0ltcGwqLCBDU1NQcm9wZXJ0eUlEPiogcHJvcGVydHlOYW1lVG9JZE1hcCwgY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0ck5hbWUpOwordm9pZCBtYXBBdHRyaWJ1dGVUb0NTU1Byb3BlcnR5KEhh
c2hNYXA8QXRvbVN0cmluZ0ltcGwqLCBDU1NQcm9wZXJ0eUlEPiogcHJvcGVydHlOYW1lVG9JZE1h
cCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpOwogCiBjbGFzcyBTVkdFbGVtZW50IDog
cHVibGljIFN0eWxlZEVsZW1lbnQsIHB1YmxpYyBTVkdMYW5nU3BhY2UsIHB1YmxpYyBTVkdQcm9w
ZXJ0eU93bmVyIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFNWR0VsZW1lbnQpOwpAQCAt
MTAzLDcgKzEwMyw3IEBAIHB1YmxpYzoKIAogICAgIE9wdGlvbmFsPEVsZW1lbnRTdHlsZT4gcmVz
b2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgY29uc3QgUmVu
ZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkgb3ZlcnJpZGU7CiAKLSAgICBzdGF0aWMgUXVhbGlm
aWVkTmFtZSBhbmltYXRhYmxlQXR0cmlidXRlRm9yTmFtZShjb25zdCBBdG9taWNTdHJpbmcmKTsK
KyAgICBzdGF0aWMgUXVhbGlmaWVkTmFtZSBhbmltYXRhYmxlQXR0cmlidXRlRm9yTmFtZShjb25z
dCBBdG9tU3RyaW5nJik7CiAjaWZuZGVmIE5ERUJVRwogICAgIGJvb2wgaXNBbmltYXRhYmxlQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKICNlbmRpZgpAQCAtMTE0LDggKzEx
NCw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBoYXZlTG9hZGVkUmVxdWlyZWRSZXNv
dXJjZXMoKTsKIAotICAgIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcm
IGV2ZW50VHlwZSwgUmVmPEV2ZW50TGlzdGVuZXI+JiYsIGNvbnN0IEFkZEV2ZW50TGlzdGVuZXJP
cHRpb25zJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiwgY29uc3QgTGlzdGVuZXJPcHRp
b25zJikgb3ZlcnJpZGU7CisgICAgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21TdHJp
bmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50TGlzdGVuZXI+JiYsIGNvbnN0IEFkZEV2ZW50TGlzdGVu
ZXJPcHRpb25zJikgb3ZlcnJpZGU7CisgICAgYm9vbCByZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0
IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYsIGNvbnN0IExpc3RlbmVyT3B0
aW9ucyYpIG92ZXJyaWRlOwogICAgIGJvb2wgaGFzRm9jdXNFdmVudExpc3RlbmVycygpIGNvbnN0
OwogCiAgICAgYm9vbCBoYXNUYWdOYW1lKGNvbnN0IFNWR1F1YWxpZmllZE5hbWUmIG5hbWUpIGNv
bnN0IHsgcmV0dXJuIGhhc0xvY2FsTmFtZShuYW1lLmxvY2FsTmFtZSgpKTsgfQpAQCAtMTU4LDE5
ICsxNTgsMTkgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgc3VwcG9ydHNGb2N1cygpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBib29sIHJlbmRlcmVySXNOZWVkZWQoY29u
c3QgUmVuZGVyU3R5bGUmKSBvdmVycmlkZTsKLSAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKKyAgICB2b2lk
IHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5nJikg
b3ZlcnJpZGU7CiAKICAgICB2b2lkIGZpbmlzaFBhcnNpbmdDaGlsZHJlbigpIG92ZXJyaWRlOwot
ICAgIHZvaWQgYXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRv
bWljU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSwgQXR0cmli
dXRlTW9kaWZpY2F0aW9uUmVhc29uID0gTW9kaWZpZWREaXJlY3RseSkgb3ZlcnJpZGU7CisgICAg
dm9pZCBhdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9tU3Ry
aW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbVN0cmluZyYgbmV3VmFsdWUsIEF0dHJpYnV0ZU1vZGlm
aWNhdGlvblJlYXNvbiA9IE1vZGlmaWVkRGlyZWN0bHkpIG92ZXJyaWRlOwogICAgIGJvb2wgY2hp
bGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAg
ICBTVkdFbGVtZW50UmFyZURhdGEmIGVuc3VyZVNWR1JhcmVEYXRhKCk7CiAKLSAgICB2b2lkIHJl
cG9ydEF0dHJpYnV0ZVBhcnNpbmdFcnJvcihTVkdQYXJzaW5nRXJyb3IsIGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKTsKKyAgICB2b2lkIHJlcG9ydEF0dHJpYnV0ZVBh
cnNpbmdFcnJvcihTVkdQYXJzaW5nRXJyb3IsIGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBB
dG9tU3RyaW5nJik7CiAgICAgc3RhdGljIENTU1Byb3BlcnR5SUQgY3NzUHJvcGVydHlJZEZvclNW
R0F0dHJpYnV0ZU5hbWUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogCiAgICAgYm9vbCBpc1ByZXNl
bnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYsIE11dGFibGVTdHlsZVByb3BlcnRpZXMmKSBv
dmVycmlkZTsKKyAgICB2b2lkIGNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbVN0cmluZyYsIE11dGFibGVTdHlsZVByb3Bl
cnRpZXMmKSBvdmVycmlkZTsKICAgICBJbnNlcnRlZEludG9BbmNlc3RvclJlc3VsdCBpbnNlcnRl
ZEludG9BbmNlc3RvcihJbnNlcnRpb25UeXBlLCBDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCByZW1vdmVkRnJvbUFuY2VzdG9yKFJlbW92YWxUeXBlLCBDb250YWluZXJOb2RlJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKSBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuY3BwCmluZGV4IDIz
ZTRhZGFhNDA4MzgwMTExZTlhYzE5YjlkYmY3NmRmOTRjY2RjYjkuLjgzMzJlYjVkYmZjMjhmODYy
NzgyNGJmODg5ZjhmMzQ2MDY2ZDM0MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdFbGxpcHNlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VF
bGVtZW50LmNwcApAQCAtNTAsNyArNTAsNyBAQCBSZWY8U1ZHRWxsaXBzZUVsZW1lbnQ+IFNWR0Vs
bGlwc2VFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRAogICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFNWR0VsbGlwc2VFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50
KSk7CiB9CiAKLXZvaWQgU1ZHRWxsaXBzZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCit2b2lkIFNWR0Vs
bGlwc2VFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBj
b25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBTVkdQYXJzaW5nRXJyb3IgcGFyc2VFcnJv
ciA9IE5vRXJyb3I7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNl
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmgKaW5kZXgg
MGZkY2EzNzY3YzRiYjIzZmM2MjI0Njc3N2RjODNhODkxMTdlOTg4Ni4uMzAzNTU4ZTAyZTUzZmZh
Mjg4MWYxMzVmMGFlODE1OWU3MTVjM2MwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0VsbGlwc2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VF
bGVtZW50LmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHJpdmF0ZToKICAgICB1c2luZyBQcm9wZXJ0eVJl
Z2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR0VsbGlwc2VFbGVtZW50LCBTVkdH
ZW9tZXRyeUVsZW1lbnQsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ+OwogICAgIGNvbnN0
IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KIAotICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIGZpbmFsOworICAgIHZvaWQg
cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmKSBm
aW5hbDsKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYp
IGZpbmFsOwogCiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gU1ZHVGVz
dHM6OmlzVmFsaWQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0V4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0V4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQuY3BwCmluZGV4IDgwOTVmMmI5N2NkODdjYjM5OWJiZGRmYTk0OTY5
NGUzMWIzOGQ5ODAuLjFmMjNkOTBlZTFlZWMzODZhYmJlNTE2M2QxZTlkMGRhMzU5OWIzN2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZC5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6U1ZH
RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZChTVkdFbGVtZW50KiBjb250ZXh0RWwKICAgICB9KTsK
IH0KIAotdm9pZCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjpwYXJzZUF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQordm9p
ZCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAobmFt
ZSA9PSBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIpCiAgICAgICAgIG1f
ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC0+c2V0QmFzZVZhbEludGVybmFsKHZhbHVlID09ICJ0
cnVlIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0V4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQuaAppbmRleCA5OTE5YWY2ZDFmYTA3YzVkYzU1OWJjNzA4ODEwZmFmNDQ0ZWFlYTMwLi5m
OGZhZGMwNDkyYmQ0ZGNjNzk0NGRhZjRlYTBhYmYwZDg4ZGNlNGFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmgKQEAgLTM5LDcgKzM5
LDcgQEAgY2xhc3MgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCB7CiBwdWJsaWM6CiAgICAg
dmlydHVhbCB+U1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpID0gZGVmYXVsdDsKIAotICAg
IHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0
cmluZyYpOworICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNv
bnN0IEF0b21TdHJpbmcmKTsKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVh
bGlmaWVkTmFtZSYpOwogCiAgICAgc3RhdGljIHZvaWQgYWRkU3VwcG9ydGVkQXR0cmlidXRlcyhI
YXNoU2V0PFF1YWxpZmllZE5hbWU+Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVCbGVuZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVt
ZW50LmNwcAppbmRleCAzMzA4ZGM3NTExZWQ0NWVhNWE3NGNmN2U2YzJkZDE1ZTVlM2YxZWZjLi43
YmNmMDQxODAwZjc5OWYxMTc0Y2ZlMDRiODIyZDZkMDY0MzFmNjg2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgUmVmPFNWR0ZFQmxl
bmRFbGVtZW50PiBTVkdGRUJsZW5kRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hbWUsIEQKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdGRUJsZW5kRWxlbWVudCh0
YWdOYW1lLCBkb2N1bWVudCkpOwogfQogICAgIAotdm9pZCBTVkdGRUJsZW5kRWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5n
JiB2YWx1ZSkKK3ZvaWQgU1ZHRkVCbGVuZEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKQogewogICAgIGlmIChu
YW1lID09IFNWR05hbWVzOjptb2RlQXR0cikgewogICAgICAgICBCbGVuZE1vZGUgbW9kZSA9IEJs
ZW5kTW9kZTo6Tm9ybWFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxl
bmRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuaAppbmRl
eCBhOWM5OGU0Mjc2NjRiMmUxM2MxNjcwNzhmMWYwZGM3Y2Q1MDIzMGJhLi45MDM3Y2IxMjFmOTM2
N2I3ODhkOTIxNmUwYjk0MWZjOGIwNmRlYzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVCbGVuZEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVu
ZEVsZW1lbnQuaApAQCAtNjYsNyArNjYsNyBAQCBwcml2YXRlOgogICAgIHVzaW5nIFByb3BlcnR5
UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHRkVCbGVuZEVsZW1lbnQsIFNW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcz47CiAgICAgY29uc3QgU1ZHUHJvcGVy
dHlSZWdpc3RyeSYgcHJvcGVydHlSZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJv
cGVydHlSZWdpc3RyeTsgfQogCi0gICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgdm9pZCBwYXJzZUF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbVN0cmluZyYpIG92ZXJyaWRl
OwogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3Zl
cnJpZGU7CiAKICAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVy
KiwgRmlsdGVyJikgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
Q29sb3JNYXRyaXhFbGVtZW50LmNwcAppbmRleCA2NTk3NjcyYjMwNzQxNzk3ZTg4NzNhZGZjN2Fi
ODBhNjNhZTZjM2ZmLi5lMGM1OTdkZjkyYTViMzBmN2E3ZjlhNDkzNTY0M2ZjNTM0MGFlY2RiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAKQEAg
LTQ5LDcgKzQ5LDcgQEAgUmVmPFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50PiBTVkdGRUNvbG9yTWF0
cml4RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUKICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBTVkdGRUNvbG9yTWF0cml4RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQog
Ci12b2lkIFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQordm9pZCBTVkdGRUNv
bG9yTWF0cml4RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFt
ZSwgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6
OnR5cGVBdHRyKSB7CiAgICAgICAgIGF1dG8gcHJvcGVydHlWYWx1ZSA9IFNWR1Byb3BlcnR5VHJh
aXRzPENvbG9yTWF0cml4VHlwZT46OmZyb21TdHJpbmcodmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuaAppbmRleCAzZWYyNGM5NDIyNDg2OGRhNzdk
MGU4MGJjZGYwYzc0NjUzOTNmMjNlLi43YWI0YWE0MTgxZTdhYjE5OGIxMmU3N2JlMjA2YjljNWM0
MTAyM2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQu
aApAQCAtODIsNyArODIsNyBAQCBwcml2YXRlOgogICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkg
PSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQsIFNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcz47CiAgICAgY29uc3QgU1ZHUHJvcGVydHlS
ZWdpc3RyeSYgcHJvcGVydHlSZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVy
dHlSZWdpc3RyeTsgfQogCi0gICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgdm9pZCBwYXJzZUF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbVN0cmluZyYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJp
ZGU7CiAKICAgICBib29sIHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBj
b25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcAppbmRleCBlYzUxNWUxMTRhMmFj
ZjJhNzYwNTRlZTBhNTdhM2QxM2IzYmQ0ZmEzLi40OTFhMWI0NWU3YTc2ZjhhYTk0NjMzMjU3M2E2
OWQyYWQwYWQyMWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25l
bnRUcmFuc2ZlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBv
bmVudFRyYW5zZmVyRWxlbWVudC5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgUmVmPFNWR0ZFQ29tcG9u
ZW50VHJhbnNmZXJFbGVtZW50PiBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDo6Y3JlYXRl
KGNvbnN0IFEKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdGRUNvbXBvbmVudFRyYW5zZmVy
RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCi12b2lkIFNWR0ZFQ29tcG9uZW50VHJh
bnNmZXJFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBj
b25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQordm9pZCBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxl
bWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRv
bVN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0cikgewog
ICAgICAgICBtX2luMS0+c2V0QmFzZVZhbEludGVybmFsKHZhbHVlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmgKaW5kZXggNTI2MjE2
ZTU2MDE2ZmFiNTIyNGFhYmU5MTMyMDY0Y2RiMDNhZDBiYi4uYmI1ODkzNDdkODgyNmRmYjM2MDll
ZGFjNmU4Yjk5M2E0ZGQ1NDg2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
Q29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
Q29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmgKQEAgLTQxLDcgKzQxLDcgQEAgcHJpdmF0ZToKICAg
ICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CiAKICAgICAvLyBGSVhNRTogc3ZnQXR0
cmlidXRlQ2hhbmdlZCBtaXNzaW5nLgotICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOworICAgIHZvaWQgcGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmKSBvdmVy
cmlkZTsKIAogICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIq
LCBGaWx0ZXImKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVD
b21wb3NpdGVFbGVtZW50LmNwcAppbmRleCA5MDg4MGFiMWRkYzU1MmE3Nzg1YTQ2NmZkOTE3YjI1
ZjYzNWI4YWRlLi4zY2E5OWI4NzU3MDhiYmQ4YTZiYWY2NTNkYzA2ZmUyMDVhYzk4MjM1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcApAQCAtNTMsNyAr
NTMsNyBAQCBSZWY8U1ZHRkVDb21wb3NpdGVFbGVtZW50PiBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6
OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFNWR0ZFQ29tcG9zaXRlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCi12b2lkIFNW
R0ZFQ29tcG9zaXRlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
bmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKK3ZvaWQgU1ZHRkVDb21wb3NpdGVFbGVt
ZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9t
U3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6b3BlcmF0b3JBdHRy
KSB7CiAgICAgICAgIENvbXBvc2l0ZU9wZXJhdGlvblR5cGUgcHJvcGVydHlWYWx1ZSA9IFNWR1By
b3BlcnR5VHJhaXRzPENvbXBvc2l0ZU9wZXJhdGlvblR5cGU+Ojpmcm9tU3RyaW5nKHZhbHVlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuaAppbmRleCBhMzNjOTgy
YjM0OTVlM2FiZmQ0ZjE4NzU2YWExMTAyOTlmYzljMmM1Li44MWE3OGM4NjU3YTBmYTMwNDRkZjVi
N2M1YTA4MGQ2ZTc3OTcyMmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVD
b21wb3NpdGVFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRl
RWxlbWVudC5oCkBAIC0xMDUsNyArMTA1LDcgQEAgcHJpdmF0ZToKICAgICB1c2luZyBQcm9wZXJ0
eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR0ZFQ29tcG9zaXRlRWxlbWVu
dCwgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzPjsKICAgICBjb25zdCBTVkdQ
cm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4g
bV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CiAKLSAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKKyAgICB2b2lkIHBh
cnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5nJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUm
KSBvdmVycmlkZTsKIAogICAgIGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVm
ZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwCmluZGV4IGViOTE0ZmEzNDUw
Y2RlNTljZDk0N2QxOGY3YjFkMmYyMmExYzlkZTAuLjQzZDhkNmQ4N2MyZmM0ZmU3NzllMTRjMTNj
YThkNTg2ZTQ1YjFjNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZv
bHZlTWF0cml4RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9s
dmVNYXRyaXhFbGVtZW50LmNwcApAQCAtNTksNyArNTksNyBAQCBSZWY8U1ZHRkVDb252b2x2ZU1h
dHJpeEVsZW1lbnQ+IFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVh
bGlmaQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50
KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKLXZvaWQgU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1l
bnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21p
Y1N0cmluZyYgdmFsdWUpCit2b2lkIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1
ZSkKIHsKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyKSB7CiAgICAgICAgIG1faW4x
LT5zZXRCYXNlVmFsSW50ZXJuYWwodmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuaAppbmRleCBjZWExMTIzZmFhOTE4ZDVmMWYxNWQyZDQz
M2VjMDExZjcwMjExMDAyLi44NWMwMDI2OThjNjI3N2UwNDM3MGQzNTk4MmE5NWI4ZDkwNDliMzM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQu
aApAQCAtOTksNyArOTksNyBAQCBwcml2YXRlOgogICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkg
PSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQsIFNW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcz47CiAgICAgY29uc3QgU1ZHUHJvcGVy
dHlSZWdpc3RyeSYgcHJvcGVydHlSZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJv
cGVydHlSZWdpc3RyeTsgfQogCi0gICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgdm9pZCBwYXJzZUF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbVN0cmluZyYpIG92ZXJyaWRl
OwogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3Zl
cnJpZGU7CiAKICAgICBib29sIHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3Qq
LCBjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCmluZGV4IGUzZGY1YjhkNjVhYzY4
MTQzYjljZmRlNjgxZDBjNWE5NDQ2NjNlOWQuLmRkMGFlZTY4Mjg1NzRhYzBhMmM3Y2JiOGNjN2Uw
NzY1NGJlMWU2N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VM
aWdodGluZ0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VM
aWdodGluZ0VsZW1lbnQuY3BwCkBAIC01Myw3ICs1Myw3IEBAIFJlZjxTVkdGRURpZmZ1c2VMaWdo
dGluZ0VsZW1lbnQ+IFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1
YWxpCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50
KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKLXZvaWQgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVt
ZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9t
aWNTdHJpbmcmIHZhbHVlKQordm9pZCBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZh
bHVlKQogewogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjppbkF0dHIpIHsKICAgICAgICAgbV9p
bjEtPnNldEJhc2VWYWxJbnRlcm5hbCh2YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmgKaW5kZXggOGQ3OTU5OTBjZjIzZTBjNDE0OTIw
ZTJmMTdiMWNjZTc4NGM3ZjEzNS4uNjg5OTk2MDlmNGI2YjU2YTc2Yzg4ZWE1Njk1ZjFlMGU5ZTIw
NTU4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5n
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0Vs
ZW1lbnQuaApAQCAtNTQsNyArNTQsNyBAQCBwcml2YXRlOgogICAgIHVzaW5nIFByb3BlcnR5UmVn
aXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVt
ZW50LCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM+OwogICAgIGNvbnN0IFNW
R1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KICAgICAKLSAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKKyAgICB2
b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5n
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmll
ZE5hbWUmKSBvdmVycmlkZTsKIAogICAgIGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZp
bHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAKaW5kZXggODRi
ZWEwYjYyNzRhODk4NGUzNTI0ODQ1ZWQzNzJmYTExNGJiNDQ3NS4uMGM1ZTgyNWJjODI1NjBmMzZh
MjY5ZWE2ZDcyMmRmZDA1MTczZDhjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgUmVmPFNWR0ZF
RGlzcGxhY2VtZW50TWFwRWxlbWVudD4gU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjpjcmVh
dGUoY29uc3QgUXVhbGkKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdGRURpc3BsYWNlbWVu
dE1hcEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotdm9pZCBTVkdGRURpc3BsYWNl
bWVudE1hcEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUs
IGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCit2b2lkIFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxl
bWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRv
bVN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnhDaGFubmVsU2Vs
ZWN0b3JBdHRyKSB7CiAgICAgICAgIGF1dG8gcHJvcGVydHlWYWx1ZSA9IFNWR1Byb3BlcnR5VHJh
aXRzPENoYW5uZWxTZWxlY3RvclR5cGU+Ojpmcm9tU3RyaW5nKHZhbHVlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaAppbmRleCA0MjJmMGNm
N2VhOTUwNTQyN2IwN2JmMGFlZmZmYjNiODQ0NDE5N2ZhLi5hYTkxZGYzOGIzNjI5OGYxMjFhMTQx
MWM0ZDBhZTVlY2Q1ODY2NWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVE
aXNwbGFjZW1lbnRNYXBFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlz
cGxhY2VtZW50TWFwRWxlbWVudC5oCkBAIC04Nyw3ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgdXNp
bmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdGRURpc3Bs
YWNlbWVudE1hcEVsZW1lbnQsIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcz47
CiAgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdpc3RyeSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQogCi0gICAgdm9pZCBwYXJzZUF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3Qg
QXRvbVN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAKICAgICBib29sIHNldEZpbHRlckVmZmVjdEF0
dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkgb3Zl
cnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHAK
aW5kZXggZjYxZGM4YTkzOTUwOGJjMmMyZmZkNzc5YTc0NjMyMDRhNjdiMTNjZi4uNjYyNzAzZTU5
Y2NmMmQ0ODg1ZGZiNWRkODhjZGVkM2ZlNDEyZmQ4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcApAQCAtNTgsNyArNTgsNyBAQCB2b2lkIFNWR0ZF
RHJvcFNoYWRvd0VsZW1lbnQ6OnNldFN0ZERldmlhdGlvbihmbG9hdCB4LCBmbG9hdCB5KQogICAg
IGludmFsaWRhdGUoKTsKIH0KIAotdm9pZCBTVkdGRURyb3BTaGFkb3dFbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZh
bHVlKQordm9pZCBTVkdGRURyb3BTaGFkb3dFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAo
bmFtZSA9PSBTVkdOYW1lczo6c3RkRGV2aWF0aW9uQXR0cikgewogICAgICAgICBmbG9hdCB4LCB5
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmgKaW5kZXggMDYx
Y2NhMmJlZDk2YzFhYWIwNTM0ZDdhMDkxM2MzMTRjZTFiZTVmNC4uOWI2MmQyNGI0NTRiYjdkMjc1
OGU3MTJiNjIxYjhjYmU0MmY3NDUxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFRHJvcFNoYWRvd0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9w
U2hhZG93RWxlbWVudC5oCkBAIC01MCw3ICs1MCw3IEBAIHByaXZhdGU6CiAgICAgdXNpbmcgUHJv
cGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdGRURyb3BTaGFkb3dF
bGVtZW50LCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM+OwogICAgIGNvbnN0
IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KIAotICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOworICAgIHZv
aWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcm
KSBvdmVycmlkZTsKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVk
TmFtZSYpIG92ZXJyaWRlOwogCiAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmls
dGVyQnVpbGRlciosIEZpbHRlciYpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcAppbmRleCA5NWI2NjgzY2ExMWJhZWU3
Y2MyNzE5ZGJjZDMxZGY3YWJhNWU0NTE5Li41ZWY2YzM3NmY1ZjUwN2I5ZmM5ZDdlNjIyNzU0YjYx
ZGNlNTk5OWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJs
dXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJF
bGVtZW50LmNwcApAQCAtNTcsNyArNTcsNyBAQCB2b2lkIFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVu
dDo6c2V0U3RkRGV2aWF0aW9uKGZsb2F0IHgsIGZsb2F0IHkpCiAgICAgaW52YWxpZGF0ZSgpOwog
fQogCi12b2lkIFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKK3ZvaWQgU1ZH
RkVHYXVzc2lhbkJsdXJFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAobmFtZSA9PSBTVkdO
YW1lczo6c3RkRGV2aWF0aW9uQXR0cikgewogICAgICAgICBmbG9hdCB4LCB5OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5oCmluZGV4IGIyZDVlODNjZWNk
NmRhNDYzYjRhOGMwNTlmNGYzMGVjMmE0YjUzNjUuLmQ4OWUxYTc0OGZiMmM1MDllMjE0ZmU5NGFl
NDEwMDFjZTQ4ZWUwYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNz
aWFuQmx1ckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJs
dXJFbGVtZW50LmgKQEAgLTUwLDcgKzUwLDcgQEAgcHJpdmF0ZToKICAgICB1c2luZyBQcm9wZXJ0
eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR0ZFR2F1c3NpYW5CbHVyRWxl
bWVudCwgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzPjsKICAgICBjb25zdCBT
VkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CiAKLSAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKKyAgICB2b2lk
IHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5nJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5h
bWUmKSBvdmVycmlkZTsKIAogICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRl
ckJ1aWxkZXIqLCBGaWx0ZXImKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVJbWFnZUVsZW1lbnQuY3BwCmluZGV4IGJmM2YzOGY0NDRlY2UwMTBkODdhNDhhZDA3Y2VmYzhh
ZTNkMjI0ZDkuLmY0MzIxNzAxNzIzMGIxZDE0YzdhYTFiYjJlNjY0MzdhM2RmYTBiMWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcApAQCAtMTE1LDcgKzExNSw3IEBA
IHZvaWQgU1ZHRkVJbWFnZUVsZW1lbnQ6OmJ1aWxkUGVuZGluZ1Jlc291cmNlKCkKICAgICBpbnZh
bGlkYXRlKCk7CiB9CiAKLXZvaWQgU1ZHRkVJbWFnZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCit2b2lk
IFNWR0ZFSW1hZ2VFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBu
YW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAobmFtZSA9PSBTVkdOYW1l
czo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIpIHsKICAgICAgICAgU1ZHUHJlc2VydmVBc3BlY3RS
YXRpb1ZhbHVlIHByZXNlcnZlQXNwZWN0UmF0aW87CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdl
RWxlbWVudC5oCmluZGV4IDc2MjQ5OTBiMzU4YWI1MjdiNGQxOWU1N2Y5ZGNkY2ViZjlmNTMxMGUu
LjBiODY4YjNjYzVhODU2ZWVhOWRkYjRjOTYxODU3NmZlNzdmZTI0MTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRUltYWdlRWxlbWVudC5oCkBAIC00OCw3ICs0OCw3IEBAIHByaXZhdGU6CiAgICAg
dXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdGRUlt
YWdlRWxlbWVudCwgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLCBTVkdFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkLCBTVkdVUklSZWZlcmVuY2U+OwogICAgIGNvbnN0IFNWR1By
b3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X3Byb3BlcnR5UmVnaXN0cnk7IH0KIAotICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOworICAgIHZvaWQgcGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmKSBvdmVy
cmlkZTsKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYp
IG92ZXJyaWRlOwogCiAgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYpIGZp
bmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxlbWVudC5jcHAKaW5kZXggMmU2YjBl
YzI2YTgwOTExY2M0MTVmYTM4ZmQ2ZmQ2ZTQ4Y2VlMjUzOC4uMTAwMjg5NDA3ZTkzNzFkZDIwMWNm
ZDEzYTliNmYzOWNhMWQ1MDY0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
TGlnaHRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1l
bnQuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIFNWR0ZFTGlnaHRFbGVtZW50KiBTVkdGRUxpZ2h0RWxl
bWVudDo6ZmluZExpZ2h0RWxlbWVudChjb25zdCBTVkdFbGVtZW50KiBzdmdFbGVtCiAgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQgU1ZHRkVMaWdodEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCit2
b2lkIFNWR0ZFTGlnaHRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAobmFtZSA9PSBTVkdO
YW1lczo6YXppbXV0aEF0dHIpIHsKICAgICAgICAgbV9hemltdXRoLT5zZXRCYXNlVmFsSW50ZXJu
YWwodmFsdWUudG9GbG9hdCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RUxpZ2h0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmgK
aW5kZXggMjUzNGQxZDdhYzlkNTRlOGQwNjQ0NWU3YTdlMmY4NWFiZDBiNGM1ZS4uY2QwYmZiOWVk
Y2ZkN2I0ZTFhZjM5YjU1ZWRiYmJkNzg0YWFlYTg5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
TGlnaHRFbGVtZW50LmgKQEAgLTY2LDcgKzY2LDcgQEAgcHJpdmF0ZToKICAgICB1c2luZyBQcm9w
ZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR0ZFTGlnaHRFbGVtZW50
LCBTVkdFbGVtZW50PjsKICAgICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJl
Z2lzdHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CiAKLSAg
ICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNT
dHJpbmcmKSBvdmVycmlkZTsKKyAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdmdBdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKICAgICB2b2lkIGNoaWxk
cmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQuY3BwCmluZGV4IGU4MmJiZmM1NWY2NzVkNzA5
YjQ2ODNmMjY1NGU4NDFjYmNhNGFmZmUuLjRiZTkwNzgyNmRiYTA2MTkzNjg0ZTBhNGRhZjViYTJi
NWZhOTRhZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlTm9kZUVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQu
Y3BwCkBAIC00OCw3ICs0OCw3IEBAIFJlZjxTVkdGRU1lcmdlTm9kZUVsZW1lbnQ+IFNWR0ZFTWVy
Z2VOb2RlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhCiAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU1ZHRkVNZXJnZU5vZGVFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7
CiB9CiAKLXZvaWQgU1ZHRkVNZXJnZU5vZGVFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQordm9pZCBTVkdG
RU1lcmdlTm9kZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5h
bWUsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKQogewogICAgIGlmIChuYW1lID09IFNWR05hbWVz
OjppbkF0dHIpIHsKICAgICAgICAgbV9pbjEtPnNldEJhc2VWYWxJbnRlcm5hbCh2YWx1ZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50LmgKaW5kZXggOGRhOTIzNjE0
MDhhMjNiODhmMWE2YWYwNGI3YTUzMmIyYTljYjA3MC4uYTlkMmMwNzRjNTBmOTk5N2I4ODY1Nzlh
NmNhZWY4MjY5NGRiMTg0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVy
Z2VOb2RlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlTm9kZUVs
ZW1lbnQuaApAQCAtMzksNyArMzksNyBAQCBwcml2YXRlOgogICAgIHVzaW5nIFByb3BlcnR5UmVn
aXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHRkVNZXJnZU5vZGVFbGVtZW50LCBT
VkdFbGVtZW50PjsKICAgICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJlZ2lz
dHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CiAKLSAgICB2
b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJp
bmcmKSBmaW5hbDsKKyAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBjb25zdCBBdG9tU3RyaW5nJikgZmluYWw7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2Vk
KGNvbnN0IFF1YWxpZmllZE5hbWUmKSBmaW5hbDsKIAogICAgIGJvb2wgcmVuZGVyZXJJc05lZWRl
ZChjb25zdCBSZW5kZXJTdHlsZSYpIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAKaW5kZXggMTc2MzA1Y2FkZjNl
M2E0ZGZkYjM5MjVmYjlmNjRhMGJmZWU5NGExMS4uMDVkOGE1MmJkNDkzZmM4YTZiODgwZDNhMzFj
MGNlNzQ4OTAyNTQ2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhv
bG9neUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lF
bGVtZW50LmNwcApAQCAtNTYsNyArNTYsNyBAQCB2b2lkIFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6
OnNldFJhZGl1cyhmbG9hdCB4LCBmbG9hdCB5KQogICAgIGludmFsaWRhdGUoKTsKIH0KIAotdm9p
ZCBTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQordm9pZCBTVkdGRU1vcnBob2xv
Z3lFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25z
dCBBdG9tU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6b3BlcmF0
b3JBdHRyKSB7CiAgICAgICAgIE1vcnBob2xvZ3lPcGVyYXRvclR5cGUgcHJvcGVydHlWYWx1ZSA9
IFNWR1Byb3BlcnR5VHJhaXRzPE1vcnBob2xvZ3lPcGVyYXRvclR5cGU+Ojpmcm9tU3RyaW5nKHZh
bHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5oCmluZGV4
IDk5OTMzNTU1MzYxYTIwNTQxNTc3YjExMjQ1YjQ4MjM5YjZkMzNiMmQuLjFhOTA4OGI3NWNmOGQ4
NWFlMzhmMjkzZTExMTk4YTY2ZjY2YWE2NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
TW9ycGhvbG9neUVsZW1lbnQuaApAQCAtNzcsNyArNzcsNyBAQCBwcml2YXRlOgogICAgIHVzaW5n
IFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHRkVNb3JwaG9s
b2d5RWxlbWVudCwgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzPjsKICAgICBj
b25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CiAKLSAgICB2b2lkIHBhcnNlQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9tU3Ry
aW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxp
ZmllZE5hbWUmKSBvdmVycmlkZTsKIAogICAgIGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRl
KEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAKaW5kZXggZGIxMGRlODYzMTRmMzgxZTc0
ODE2MTA1NGJiMDMzODRjYjIxNDJmNC4uNDg1YzA2MDlkOTU3MDUyMDZjZTNiZjBhOGRlMzZlODNh
OWI2YzBmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAKQEAg
LTUwLDcgKzUwLDcgQEAgUmVmPFNWR0ZFT2Zmc2V0RWxlbWVudD4gU1ZHRkVPZmZzZXRFbGVtZW50
OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwKICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBTVkdGRU9mZnNldEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotdm9p
ZCBTVkdGRU9mZnNldEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCit2b2lkIFNWR0ZFT2Zmc2V0RWxlbWVu
dDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0
cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmR4QXR0cikgewogICAg
ICAgICBtX2R4LT5zZXRCYXNlVmFsSW50ZXJuYWwodmFsdWUudG9GbG9hdCgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuaAppbmRleCAzZDhkNzdkYmVmNzgzOTEwOWUzYjBi
YzcwYWYwMWE5ZjBlNjJiYTU0Li41NzQ3M2RjYzcyZGI2N2IxMjVlYTJlZDQ2NWUzNWI1NzM3MDQ5
YmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5oCkBAIC00NCw3ICs0
NCw3IEBAIHByaXZhdGU6CiAgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5
T3duZXJSZWdpc3RyeTxTVkdGRU9mZnNldEVsZW1lbnQsIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlcz47CiAgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlS
ZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQogCi0g
ICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWlj
U3RyaW5nJikgb3ZlcnJpZGU7CisgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiwgY29uc3QgQXRvbVN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgc3ZnQXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAKICAgICBSZWZQdHI8
RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyJikgY29uc3Qgb3Zl
cnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0
aW5nRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5n
RWxlbWVudC5jcHAKaW5kZXggNzY3MzgxZTM4MWE3Njg4ZTY4YWJhYjJkMDU3ZDM4OTNhZmEwOGMz
OS4uMWU5MzgyM2Q5ZWI4ZWIyZjYzZWFkNTczNjM2MzY2Y2YxYTM2ZWY2NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcApAQCAt
NTUsNyArNTUsNyBAQCBSZWY8U1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudD4gU1ZHRkVTcGVj
dWxhckxpZ2h0aW5nRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YQogICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsK
IH0KIAotdm9pZCBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQordm9p
ZCBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAobmFt
ZSA9PSBTVkdOYW1lczo6aW5BdHRyKSB7CiAgICAgICAgIG1faW4xLT5zZXRCYXNlVmFsSW50ZXJu
YWwodmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJM
aWdodGluZ0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRp
bmdFbGVtZW50LmgKaW5kZXggY2UyM2NiNWFlMjJjM2Y3NTFlMTE1YzcwODJhYmExNThiNWEzY2Mw
OS4uODk3YjhkZTE1NmQxYzc5YTFkM2ZkOGIzMTE4ZTJhYjYzYjQ3YjE0NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5oCkBAIC01NCw3
ICs1NCw3IEBAIHByaXZhdGU6CiAgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3Bl
cnR5T3duZXJSZWdpc3RyeTxTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LCBTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM+OwogICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0
cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVn
aXN0cnk7IH0KIAotICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOworICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmKSBvdmVycmlkZTsKICAgICB2
b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwog
CiAgICAgYm9vbCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3Qg
UXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFVGlsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1l
bnQuY3BwCmluZGV4IDk4ODdlNGEzODA4MWFkNjE3ZDQwZmQ3YjZkMGY3NzM5ZTczZDU5YzYuLjVj
NTlkNzhlZDA2ZDYwMmNkYWFkNDM0NDBmNTA1YjcyNjgyYzk0NzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVUaWxlRWxlbWVudC5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgUmVmPFNWR0ZFVGlsZUVs
ZW1lbnQ+IFNWR0ZFVGlsZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lLCBEb2MKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdGRVRpbGVFbGVtZW50KHRhZ05h
bWUsIGRvY3VtZW50KSk7CiB9CiAKLXZvaWQgU1ZHRkVUaWxlRWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkK
K3ZvaWQgU1ZHRkVUaWxlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKG5hbWUgPT0gU1ZH
TmFtZXM6OmluQXR0cikgewogICAgICAgICBtX2luMS0+c2V0QmFzZVZhbEludGVybmFsKHZhbHVl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5oCmluZGV4IGFkY2M3YThkMzA0Y2Iz
MzJkOWJhZTdiYTU4Mjg0OWMyNjFmNGI0ZDguLjQ1YjMyNzE4NTFkN2ZjMGRjMmQzYmNjODc5YTIy
ZGM0MmEzM2E5MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuaApAQCAtMzks
NyArMzksNyBAQCBwcml2YXRlOgogICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9w
ZXJ0eU93bmVyUmVnaXN0cnk8U1ZHRkVUaWxlRWxlbWVudCwgU1ZHRmlsdGVyUHJpbWl0aXZlU3Rh
bmRhcmRBdHRyaWJ1dGVzPjsKICAgICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0
eVJlZ2lzdHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CiAK
LSAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9t
aWNTdHJpbmcmKSBvdmVycmlkZTsKKyAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIAogICAgIFJlZlB0
cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXImKSBjb25zdCBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmNw
cAppbmRleCAzZTM1ZDIyMGU0OGExYWM1NzU3ZjkzN2JkMzNkMDZhZDRkMGQxZWI2Li5mMjYyOGJi
ZDBkMzdiZWJmNGI0NThiZWIxNzBmN2ZlZTk3OTQ2MDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwCkBAIC01MCw3ICs1MCw3IEBAIFJlZjxTVkdG
RVR1cmJ1bGVuY2VFbGVtZW50PiBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdGRVR1cmJ1bGVuY2VF
bGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKLXZvaWQgU1ZHRkVUdXJidWxlbmNlRWxl
bWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRv
bWljU3RyaW5nJiB2YWx1ZSkKK3ZvaWQgU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUp
CiB7CiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnR5cGVBdHRyKSB7CiAgICAgICAgIFR1cmJ1
bGVuY2VUeXBlIHByb3BlcnR5VmFsdWUgPSBTVkdQcm9wZXJ0eVRyYWl0czxUdXJidWxlbmNlVHlw
ZT46OmZyb21TdHJpbmcodmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFVHVyYnVsZW5jZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVu
Y2VFbGVtZW50LmgKaW5kZXggY2NhN2Y4NTc4M2Y0ODg2ZWM5ODFmNmZhMWRiOTYyYjljYjQxNmMy
ZS4uYmY5ZGEyMmFkNDJlNDEwYTEwNDM1ZTBhNDBlMzQyNjc3NjllMTk4YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5oCkBAIC0xMTUsNyArMTE1LDcgQEAg
cHJpdmF0ZToKICAgICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25lclJl
Z2lzdHJ5PFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQsIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlcz47CiAgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdp
c3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQogCi0gICAg
dm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3Ry
aW5nJikgb3ZlcnJpZGU7CisgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiwgY29uc3QgQXRvbVN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgc3ZnQXR0cmlidXRl
Q2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAKICAgICBib29sIHNldEZp
bHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyTmFtZSkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmls
dGVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHAK
aW5kZXggNzY1NWMwNzY5NzU3MDM5NmQ5ZTdiMWUxYTc2ZGNkMGNhN2Y4YWZmYy4uMjRjNmM1MmY0
ODM4ZjcyYWMzYjhlNmM3OTRhOGI1Yjc5NzAyNzFiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
aWx0ZXJFbGVtZW50LmNwcApAQCAtNjMsNyArNjMsNyBAQCBSZWY8U1ZHRmlsdGVyRWxlbWVudD4g
U1ZHRmlsdGVyRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERv
YwogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR0ZpbHRlckVsZW1lbnQodGFnTmFtZSwgZG9j
dW1lbnQpKTsKIH0KIAotdm9pZCBTVkdGaWx0ZXJFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQordm9pZCBT
VkdGaWx0ZXJFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1l
LCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBTVkdQYXJzaW5nRXJyb3IgcGFyc2VF
cnJvciA9IE5vRXJyb3I7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0
ZXJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5oCmluZGV4
IGUxZjJmNWJjZWM1NjNkZjE1YzI3ZjlmZDRmZTQ0YmM4OGEzNDY1N2MuLjE1ODlhNmM0MmJkYTg3
NzE0NWQ1ZTA3MzdlYzhmYTFmNGFiY2VlZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGaWx0ZXJFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVs
ZW1lbnQuaApAQCAtNTUsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIHVzaW5nIFByb3BlcnR5UmVn
aXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHRmlsdGVyRWxlbWVudCwgU1ZHRWxl
bWVudCwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgU1ZHVVJJUmVmZXJlbmNlPjsKICAg
ICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CiAKLSAgICB2b2lkIHBhcnNlQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBmaW5hbDsKKyAg
ICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9tU3Ry
aW5nJikgZmluYWw7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmll
ZE5hbWUmKSBmaW5hbDsKICAgICB2b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5n
ZSYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwCmluZGV4IDM1Y2VjOWNiNjY3NzAzODU4
ODQ5YTJiOTFlNWU5ODJjMjMyZDZlODYuLjM2NGNiMjgwZjMyNzlmMjBmNTI2YTYxYzhhMzIzMTAz
Y2M0N2JlYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwCkBAIC00Niw3ICs0Niw3IEBAIFNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzKGNvbnN0CiAgICAgfSk7CiB9CiAKLXZvaWQgU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzOjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBu
YW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQordm9pZCBTVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXM6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5h
bWUsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKQogewogICAgIFNWR1BhcnNpbmdFcnJvciBwYXJz
ZUVycm9yID0gTm9FcnJvcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oCmluZGV4IGViMjViNTNhOTRkOGU1
ZmRkODkyODViNTgzYjczMjMxM2UyMzIwMTAuLmMyODE2ZGEzNjM1ZDA2NTYzYjkxYzgzNTA4YmQ4
MTM4Y2IzOWFiOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGlj
OgogcHJvdGVjdGVkOgogICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyhj
b25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAotICAgIHZvaWQgcGFyc2VBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwor
ICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21T
dHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVh
bGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENo
aWxkQ2hhbmdlJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGaXRUb1ZpZXdCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpdFRvVmlld0JveC5j
cHAKaW5kZXggZDE1ZTM1NDZjMTIxM2UwMGRmYTU3YzgxYjRhMDBiMmVmZTMwYTk3My4uMWY0N2Qz
NjhlOTAzMWY0NGEwYmUwZmQyNDM1MGM3MmQxNDFmNjU0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZpdFRvVmlld0JveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZpdFRvVmlld0JveC5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgdm9pZCBTVkdGaXRUb1ZpZXdCb3g6
OnJlc2V0KCkKICAgICByZXNldFByZXNlcnZlQXNwZWN0UmF0aW8oKTsKIH0KIAotYm9vbCBTVkdG
aXRUb1ZpZXdCb3g6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNv
bnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCitib29sIFNWR0ZpdFRvVmlld0JveDo6cGFyc2VBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUp
CiB7CiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnZpZXdCb3hBdHRyKSB7CiAgICAgICAgIEZs
b2F0UmVjdCB2aWV3Qm94OwpAQCAtODQsNyArODQsNyBAQCBib29sIFNWR0ZpdFRvVmlld0JveDo6
cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3Ry
aQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBTVkdGaXRUb1ZpZXdCb3g6OnBhcnNlVmll
d0JveChjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlLCBGbG9hdFJlY3QmIHZpZXdCb3gpCitib29s
IFNWR0ZpdFRvVmlld0JveDo6cGFyc2VWaWV3Qm94KGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlLCBG
bG9hdFJlY3QmIHZpZXdCb3gpCiB7CiAgICAgYXV0byB1cGNvbnZlcnRlZENoYXJhY3RlcnMgPSBT
dHJpbmdWaWV3KHZhbHVlKS51cGNvbnZlcnRlZENoYXJhY3RlcnMoKTsKICAgICBjb25zdCBVQ2hh
ciogY2hhcmFjdGVycyA9IHVwY29udmVydGVkQ2hhcmFjdGVyczsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGaXRUb1ZpZXdCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
aXRUb1ZpZXdCb3guaAppbmRleCA3Y2M0MjMxNDE2MDE5MzE5ZDdlMmI0ZDJkN2Q3NjM2YzM3OWI4
YTRmLi45MDdkNjU1Y2QxYjFiOWIzNzJhMjBmODE4OTIzNjA0MmUyMGYwZmQwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRml0VG9WaWV3Qm94LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZpdFRvVmlld0JveC5oCkBAIC02NCw4ICs2NCw4IEBAIHByb3RlY3RlZDoKICAg
ICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJp
YnV0ZU5hbWUpIHsgcmV0dXJuIFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0
cmlidXRlTmFtZSk7IH0KIAogICAgIHZvaWQgcmVzZXQoKTsKLSAgICBib29sIHBhcnNlQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKTsKLSAgICBib29s
IHBhcnNlVmlld0JveChjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlLCBGbG9hdFJlY3QmIHZpZXdC
b3gpOworICAgIGJvb2wgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0
IEF0b21TdHJpbmcmKTsKKyAgICBib29sIHBhcnNlVmlld0JveChjb25zdCBBdG9tU3RyaW5nJiB2
YWx1ZSwgRmxvYXRSZWN0JiB2aWV3Qm94KTsKICAgICBib29sIHBhcnNlVmlld0JveChjb25zdCBV
Q2hhciomIHN0YXJ0LCBjb25zdCBVQ2hhciogZW5kLCBGbG9hdFJlY3QmIHZpZXdCb3gsIGJvb2wg
dmFsaWRhdGUgPSB0cnVlKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGb250RmFjZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRG
YWNlRWxlbWVudC5jcHAKaW5kZXggMzNiNmI3OGE4NTExMjRjM2QzYjdjZmU3OWI1MDk1OGEzNWIw
ZWM1Yy4uZWQ1MWMwN2Y1OTExZGQ5ZmU3MTdhNjE2ZmM0ODliOWE5OTYyYTJjZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRWxlbWVudC5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgUmVm
PFNWR0ZvbnRGYWNlRWxlbWVudD4gU1ZHRm9udEZhY2VFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdGb250RmFj
ZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotdm9pZCBTVkdGb250RmFjZUVsZW1l
bnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21p
Y1N0cmluZyYgdmFsdWUpCit2b2lkIFNWR0ZvbnRGYWNlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCiB7ICAg
IAogICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJZCA9IGNzc1Byb3BlcnR5SWRGb3JTVkdBdHRy
aWJ1dGVOYW1lKG5hbWUpOwogICAgIGlmIChwcm9wZXJ0eUlkID4gMCkgewpAQCAtOTgsNyArOTgs
NyBAQCB2b2lkIFNWR0ZvbnRGYWNlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljUwogCiB1bnNpZ25lZCBTVkdGb250RmFjZUVsZW1l
bnQ6OnVuaXRzUGVyRW0oKSBjb25zdAogewotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWVT
dHJpbmcgPSBhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHVuaXRzX3Blcl9lbUF0dHIp
OworICAgIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlU3RyaW5nID0gYXR0cmlidXRlV2l0aG91dFN5
bmNocm9uaXphdGlvbih1bml0c19wZXJfZW1BdHRyKTsKICAgICBpZiAodmFsdWVTdHJpbmcuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm4gRm9udE1ldHJpY3M6OmRlZmF1bHRVbml0c1BlckVtOwog
CkBAIC0xNjAsNyArMTYwLDcgQEAgZmxvYXQgU1ZHRm9udEZhY2VFbGVtZW50Ojp2ZXJ0aWNhbE9y
aWdpblgoKSBjb25zdAogICAgIC8vIFNwZWM6IFRoZSBkZWZhdWx0IFgtY29vcmRpbmF0ZSBpbiB0
aGUgZm9udCBjb29yZGluYXRlIHN5c3RlbSBvZiB0aGUgb3JpZ2luIG9mIGEgZ2x5cGggdG8gYmUg
dXNlZCB3aGVuCiAgICAgLy8gZHJhd2luZyB2ZXJ0aWNhbGx5IG9yaWVudGVkIHRleHQuIElmIHRo
ZSBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCwgdGhlIGVmZmVjdCBpcyBhcyBpZiB0aGUgYXR0
cmlidXRlCiAgICAgLy8gd2VyZSBzZXQgdG8gaGFsZiBvZiB0aGUgZWZmZWN0aXZlIHZhbHVlIG9m
IGF0dHJpYnV0ZSBob3Jpei1hZHYteC4KLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0g
bV9mb250RWxlbWVudC0+YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih2ZXJ0X29yaWdp
bl94QXR0cik7CisgICAgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUgPSBtX2ZvbnRFbGVtZW50LT5h
dHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHZlcnRfb3JpZ2luX3hBdHRyKTsKICAgICBp
ZiAodmFsdWUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gaG9yaXpvbnRhbEFkdmFuY2VYKCkg
LyAyLjBmOwogCkBAIC0xNzUsNyArMTc1LDcgQEAgZmxvYXQgU1ZHRm9udEZhY2VFbGVtZW50Ojp2
ZXJ0aWNhbE9yaWdpblkoKSBjb25zdAogICAgIC8vIFNwZWM6IFRoZSBkZWZhdWx0IFktY29vcmRp
bmF0ZSBpbiB0aGUgZm9udCBjb29yZGluYXRlIHN5c3RlbSBvZiB0aGUgb3JpZ2luIG9mIGEgZ2x5
cGggdG8gYmUgdXNlZCB3aGVuCiAgICAgLy8gZHJhd2luZyB2ZXJ0aWNhbGx5IG9yaWVudGVkIHRl
eHQuIElmIHRoZSBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCwgdGhlIGVmZmVjdCBpcyBhcyBp
ZiB0aGUgYXR0cmlidXRlCiAgICAgLy8gd2VyZSBzZXQgdG8gdGhlIHBvc2l0aW9uIHNwZWNpZmll
ZCBieSB0aGUgZm9udCdzIGFzY2VudCBhdHRyaWJ1dGUuICAgICAgICAgICAgIAotICAgIGNvbnN0
IEF0b21pY1N0cmluZyYgdmFsdWUgPSBtX2ZvbnRFbGVtZW50LT5hdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKHZlcnRfb3JpZ2luX3lBdHRyKTsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiB2
YWx1ZSA9IG1fZm9udEVsZW1lbnQtPmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24odmVy
dF9vcmlnaW5feUF0dHIpOwogICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biBhc2NlbnQoKTsKIApAQCAtMTg5LDcgKzE4OSw3IEBAIGZsb2F0IFNWR0ZvbnRGYWNlRWxlbWVu
dDo6dmVydGljYWxBZHZhbmNlWSgpIGNvbnN0CiAKICAgICAvLyBTcGVjOiBUaGUgZGVmYXVsdCB2
ZXJ0aWNhbCBhZHZhbmNlIGFmdGVyIHJlbmRlcmluZyBhIGdseXBoIGluIHZlcnRpY2FsIG9yaWVu
dGF0aW9uLiBJZiB0aGUgYXR0cmlidXRlIGlzCiAgICAgLy8gbm90IHNwZWNpZmllZCwgdGhlIGVm
ZmVjdCBpcyBhcyBpZiBhIHZhbHVlIGVxdWl2YWxlbnQgb2Ygb25lIGVtIHdlcmUgc3BlY2lmaWVk
IChzZWUgdW5pdHMtcGVyLWVtKS4gICAgICAgICAgICAgICAgICAgIAotICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgdmFsdWUgPSBtX2ZvbnRFbGVtZW50LT5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25p
emF0aW9uKHZlcnRfYWR2X3lBdHRyKTsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSA9IG1f
Zm9udEVsZW1lbnQtPmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24odmVydF9hZHZfeUF0
dHIpOwogICAgICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAxLjBmOwog
CkBAIC0yMDIsMTIgKzIwMiwxMiBAQCBpbnQgU1ZHRm9udEZhY2VFbGVtZW50Ojphc2NlbnQoKSBj
b25zdAogICAgIC8vIHVuYWNjZW50ZWQgaGVpZ2h0IG9mIHRoZSBmb250IHdpdGhpbiB0aGUgZm9u
dCBjb29yZGluYXRlIHN5c3RlbS4gSWYgdGhlIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLAog
ICAgIC8vIHRoZSBlZmZlY3QgaXMgYXMgaWYgdGhlIGF0dHJpYnV0ZSB3ZXJlIHNldCB0byB0aGUg
ZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSB1bml0cy1wZXItZW0gdmFsdWUgYW5kIHRoZQogICAgIC8v
IHZlcnQtb3JpZ2luLXkgdmFsdWUgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGZvbnQuCi0gICAgY29u
c3QgQXRvbWljU3RyaW5nJiBhc2NlbnRWYWx1ZSA9IGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6
YXRpb24oYXNjZW50QXR0cik7CisgICAgY29uc3QgQXRvbVN0cmluZyYgYXNjZW50VmFsdWUgPSBh
dHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGFzY2VudEF0dHIpOwogICAgIGlmICghYXNj
ZW50VmFsdWUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihjZWls
Zihhc2NlbnRWYWx1ZS50b0Zsb2F0KCkpKTsKIAogICAgIGlmIChtX2ZvbnRFbGVtZW50KSB7Ci0g
ICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmVydE9yaWdpblkgPSBtX2ZvbnRFbGVtZW50LT5h
dHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHZlcnRfb3JpZ2luX3lBdHRyKTsKKyAgICAg
ICAgY29uc3QgQXRvbVN0cmluZyYgdmVydE9yaWdpblkgPSBtX2ZvbnRFbGVtZW50LT5hdHRyaWJ1
dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHZlcnRfb3JpZ2luX3lBdHRyKTsKICAgICAgICAgaWYg
KCF2ZXJ0T3JpZ2luWS5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
aW50Pih1bml0c1BlckVtKCkpIC0gc3RhdGljX2Nhc3Q8aW50PihjZWlsZih2ZXJ0T3JpZ2luWS50
b0Zsb2F0KCkpKTsKICAgICB9CkBAIC0yMjEsNyArMjIxLDcgQEAgaW50IFNWR0ZvbnRGYWNlRWxl
bWVudDo6ZGVzY2VudCgpIGNvbnN0CiAgICAgLy8gU3BlYzogU2FtZSBzeW50YXggYW5kIHNlbWFu
dGljcyBhcyB0aGUgJ2Rlc2NlbnQnIGRlc2NyaXB0b3Igd2l0aGluIGFuIEBmb250LWZhY2UgcnVs
ZS4gVGhlIG1heGltdW0KICAgICAvLyB1bmFjY2VudGVkIGRlcHRoIG9mIHRoZSBmb250IHdpdGhp
biB0aGUgZm9udCBjb29yZGluYXRlIHN5c3RlbS4gSWYgdGhlIGF0dHJpYnV0ZSBpcyBub3Qgc3Bl
Y2lmaWVkLAogICAgIC8vIHRoZSBlZmZlY3QgaXMgYXMgaWYgdGhlIGF0dHJpYnV0ZSB3ZXJlIHNl
dCB0byB0aGUgdmVydC1vcmlnaW4teSB2YWx1ZSBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgZm9udC4K
LSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGRlc2NlbnRWYWx1ZSA9IGF0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24oZGVzY2VudEF0dHIpOworICAgIGNvbnN0IEF0b21TdHJpbmcmIGRlc2Nl
bnRWYWx1ZSA9IGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oZGVzY2VudEF0dHIpOwog
ICAgIGlmICghZGVzY2VudFZhbHVlLmlzRW1wdHkoKSkgewogICAgICAgICAvLyAxNCBkaWZmZXJl
bnQgVzNDIFNWRyAxLjEgdGVzdGNhc2VzIHVzZSBhIG5lZ2F0aXZlIGRlc2NlbnQgdmFsdWUsCiAg
ICAgICAgIC8vIHdoZXJlIGEgcG9zaXRpdmUgd2FzIG1lYW50IHRvIGJlIHVzZWQgIEluY2x1ZGlu
ZzoKQEAgLTIzMSw3ICsyMzEsNyBAQCBpbnQgU1ZHRm9udEZhY2VFbGVtZW50OjpkZXNjZW50KCkg
Y29uc3QKICAgICB9CiAKICAgICBpZiAobV9mb250RWxlbWVudCkgewotICAgICAgICBjb25zdCBB
dG9taWNTdHJpbmcmIHZlcnRPcmlnaW5ZID0gbV9mb250RWxlbWVudC0+YXR0cmlidXRlV2l0aG91
dFN5bmNocm9uaXphdGlvbih2ZXJ0X29yaWdpbl95QXR0cik7CisgICAgICAgIGNvbnN0IEF0b21T
dHJpbmcmIHZlcnRPcmlnaW5ZID0gbV9mb250RWxlbWVudC0+YXR0cmlidXRlV2l0aG91dFN5bmNo
cm9uaXphdGlvbih2ZXJ0X29yaWdpbl95QXR0cik7CiAgICAgICAgIGlmICghdmVydE9yaWdpblku
aXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oY2VpbGYodmVy
dE9yaWdpblkudG9GbG9hdCgpKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZvbnRGYWNlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNl
RWxlbWVudC5oCmluZGV4IDhmOGJhNTg5MmJlMjgwNzk4ZWU0MWRjMDBiZDFiM2NiN2QzMDk4YTku
LjlkYTA1ZjA5OTdlNDYxMGViYjNlMTlkMWJmMGJhYTc5YWNlMmZjMTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRm9udEZhY2VFbGVtZW50LmgKQEAgLTU3LDcgKzU3LDcgQEAgcHJpdmF0ZToKICAg
ICBTVkdGb250RmFjZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAg
ICAgflNWR0ZvbnRGYWNlRWxlbWVudCgpOwogCi0gICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgZmluYWw7CisgICAgdm9pZCBw
YXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbVN0cmluZyYpIGZp
bmFsOwogCiAgICAgdm9pZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKSBmaW5h
bDsKICAgICBJbnNlcnRlZEludG9BbmNlc3RvclJlc3VsdCBpbnNlcnRlZEludG9BbmNlc3RvcihJ
bnNlcnRpb25UeXBlLCBDb250YWluZXJOb2RlJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VVcmlFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQuY3BwCmluZGV4IDRjMjIyNWQ1OTYzYjBhNWNiMzY1OTdl
NzNlMTYyZjNiOGE2ZGY0YjguLjc1Y2JkZThjMzNjMmJlOWQwMTlhNzA2MmNkZGYzNTkwOTgwMGQ3
MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQuY3BwCkBA
IC01OSwxMiArNTksMTIgQEAgU1ZHRm9udEZhY2VVcmlFbGVtZW50Ojp+U1ZHRm9udEZhY2VVcmlF
bGVtZW50KCkKIFJlZjxDU1NGb250RmFjZVNyY1ZhbHVlPiBTVkdGb250RmFjZVVyaUVsZW1lbnQ6
OnNyY1ZhbHVlKCkgY29uc3QKIHsKICAgICBhdXRvIHNyYyA9IENTU0ZvbnRGYWNlU3JjVmFsdWU6
OmNyZWF0ZShnZXRBdHRyaWJ1dGUoU1ZHTmFtZXM6OmhyZWZBdHRyLCBYTGlua05hbWVzOjpocmVm
QXR0ciksIExvYWRlZEZyb21PcGFxdWVTb3VyY2U6Ok5vKTsKLSAgICBBdG9taWNTdHJpbmcgdmFs
dWUoYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihmb3JtYXRBdHRyKSk7CisgICAgQXRv
bVN0cmluZyB2YWx1ZShhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGZvcm1hdEF0dHIp
KTsKICAgICBzcmMuZ2V0KCkuc2V0Rm9ybWF0KHZhbHVlLmlzRW1wdHkoKSA/ICJzdmciIDogdmFs
dWUpOyAvLyBEZWZhdWx0IGZvcm1hdAogICAgIHJldHVybiBzcmM7CiB9CiAKLXZvaWQgU1ZHRm9u
dEZhY2VVcmlFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1l
LCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQordm9pZCBTVkdGb250RmFjZVVyaUVsZW1lbnQ6
OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJp
bmcmIHZhbHVlKQogewogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjpocmVmQXR0ciB8fCBuYW1l
ID09IFhMaW5rTmFtZXM6OmhyZWZBdHRyKQogICAgICAgICBsb2FkRm9udCgpOwpAQCAtMTAxLDcg
KzEwMSw3IEBAIHZvaWQgU1ZHRm9udEZhY2VVcmlFbGVtZW50Ojpsb2FkRm9udCgpCiAgICAgaWYg
KG1fY2FjaGVkRm9udCkKICAgICAgICAgbV9jYWNoZWRGb250LT5yZW1vdmVDbGllbnQoKnRoaXMp
OwogCi0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBocmVmID0gZ2V0QXR0cmlidXRlKFNWR05hbWVz
OjpocmVmQXR0ciwgWExpbmtOYW1lczo6aHJlZkF0dHIpOworICAgIGNvbnN0IEF0b21TdHJpbmcm
IGhyZWYgPSBnZXRBdHRyaWJ1dGUoU1ZHTmFtZXM6OmhyZWZBdHRyLCBYTGlua05hbWVzOjpocmVm
QXR0cik7CiAgICAgaWYgKCFocmVmLmlzTnVsbCgpKSB7CiAgICAgICAgIFJlc291cmNlTG9hZGVy
T3B0aW9ucyBvcHRpb25zID0gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRlZmF1bHRDYWNoZWRSZXNv
dXJjZU9wdGlvbnMoKTsKICAgICAgICAgb3B0aW9ucy5jb250ZW50U2VjdXJpdHlQb2xpY3lJbXBv
c2l0aW9uID0gaXNJblVzZXJBZ2VudFNoYWRvd1RyZWUoKSA/IENvbnRlbnRTZWN1cml0eVBvbGlj
eUltcG9zaXRpb246OlNraXBQb2xpY3lDaGVjayA6IENvbnRlbnRTZWN1cml0eVBvbGljeUltcG9z
aXRpb246OkRvUG9saWN5Q2hlY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
Rm9udEZhY2VVcmlFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VVcmlF
bGVtZW50LmgKaW5kZXggYzc4YTJiY2E5N2Y0ZmEzNTlkZjFhNjdmMGVkZTAwNDgxOTk4MTBiMy4u
NDhmY2YyZjg4Nzc4YmQwM2QyYjdlMzBiYjUyZmUwNzA0Mzg4MTY3NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlVXJpRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQuaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6
CiBwcml2YXRlOgogICAgIFNWR0ZvbnRGYWNlVXJpRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiwgRG9jdW1lbnQmKTsKICAgICAKLSAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIHBhcnNlQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5nJikgZmluYWw7CiAg
ICAgdm9pZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKSBmaW5hbDsKICAgICBJ
bnNlcnRlZEludG9BbmNlc3RvclJlc3VsdCBpbnNlcnRlZEludG9BbmNlc3RvcihJbnNlcnRpb25U
eXBlLCBDb250YWluZXJOb2RlJikgZmluYWw7CiAgICAgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNv
bnN0IFJlbmRlclN0eWxlJikgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwCmluZGV4IGJhNjkwZWQ2ZTI1MjBh
YThiNzI2ZDhiYTMzZGE5ZmEwNGNiYzI0MWYuLjVhY2Q1ZmNiMzE5ODBkZTdiOGU2NmIwOGQzYzVk
MzViNjA3YjI4MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2Jq
ZWN0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RF
bGVtZW50LmNwcApAQCAtNTQsNyArNTQsNyBAQCBSZWY8U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ+
IFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZQogICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50KHRhZ05hbWUsIGRv
Y3VtZW50KSk7CiB9CiAKLXZvaWQgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6OnBhcnNlQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUp
Cit2b2lkIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBTVkdQYXJz
aW5nRXJyb3IgcGFyc2VFcnJvciA9IE5vRXJyb3I7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZvcmVpZ25PYmplY3RFbGVtZW50LmgKaW5kZXggZmI1NzQ2OGEwNmZiYTEwOGE1MTJmOWJlNWUy
NjAxMWIyODc5ZjZmNy4uMDJhMTk0YzQxN2E3YWI3NzMwNDE0ODI3N2QzZjllNjQ5ZmIwNjhhNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmgKQEAgLTQ3
LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJv
cGVydHlPd25lclJlZ2lzdHJ5PFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50LCBTVkdHcmFwaGljc0Vs
ZW1lbnQsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ+OwogICAgIGNvbnN0IFNWR1Byb3Bl
cnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3By
b3BlcnR5UmVnaXN0cnk7IH0KIAotICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIGZpbmFsOworICAgIHZvaWQgcGFyc2VBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmKSBmaW5hbDsKICAg
ICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGZpbmFsOwog
CiAgICAgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikgZmluYWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR0VsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0dFbGVtZW50LmNwcAppbmRleCA3ZGY2ZWE2ZGNmMjFkMTIzYTAxMzA3NzVj
OTA2MTJhZjZlODQyNjY1Li43YzA1MGUwZmMzNGI0ZjIxMmM4MGI5MTdhZTgzMzI0ZTJkNzYyMzYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR0VsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdHRWxlbWVudC5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgUmVmPFNW
R0dFbGVtZW50PiBTVkdHRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCkKICAgICBy
ZXR1cm4gY3JlYXRlKFNWR05hbWVzOjpnVGFnLCBkb2N1bWVudCk7CiB9CiAKLXZvaWQgU1ZHR0Vs
ZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0
b21pY1N0cmluZyYgdmFsdWUpCit2b2lkIFNWR0dFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBT
VkdHcmFwaGljc0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKICAgICBTVkdF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdHRWxlbWVudC5oCmluZGV4IGNiMjA2YWUzNGFkMmNiYmJmMzQ4MDFjMTJhZTQw
MTk3OTAyYjZmNWYuLjY2OGNlZTk5NzUyMzZmMDkxNmFmOTBlNGY3MmE0MjJmZmZiOTJjNmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHRWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdHRWxlbWVudC5oCkBAIC00MCw3ICs0MCw3IEBAIHByaXZhdGU6CiAgICAg
dXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdHRWxl
bWVudCwgU1ZHR3JhcGhpY3NFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkPjsK
ICAgICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CiAKLSAgICB2b2lkIHBhcnNlQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBmaW5hbDsK
KyAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9t
U3RyaW5nJikgZmluYWw7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxp
ZmllZE5hbWUmKSBmaW5hbDsKIAogICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIFNWR1Rlc3RzOjppc1ZhbGlkKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdHZW9tZXRyeUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dlb21ldHJ5
RWxlbWVudC5jcHAKaW5kZXggYmRkN2EwMjc1NGFjZTU0MThhZDllOTgwZDEzMzgxZTY5ZWRmYWM1
Ni4uYjNkMzAxYzBmMGY3OTA5YTVjOWI4MTI4OGIxNzA1MDg3YTU5MDZmOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0dlb21ldHJ5RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0dlb21ldHJ5RWxlbWVudC5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgYm9vbCBT
VkdHZW9tZXRyeUVsZW1lbnQ6OmlzUG9pbnRJblN0cm9rZShET01Qb2ludEluaXQmJiBwb2ludElu
aXQpCiAgICAgcmV0dXJuIHJlbmRlcmVyLT5pc1BvaW50SW5TdHJva2UocG9pbnQpOwogfQogCi12
b2lkIFNWR0dlb21ldHJ5RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKK3ZvaWQgU1ZHR2VvbWV0cnlFbGVt
ZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9t
U3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6cGF0aExlbmd0aEF0
dHIpIHsKICAgICAgICAgbV9wYXRoTGVuZ3RoLT5zZXRCYXNlVmFsSW50ZXJuYWwodmFsdWUudG9G
bG9hdCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHZW9tZXRyeUVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHZW9tZXRyeUVsZW1lbnQuaAppbmRleCBkMjRl
NjIyZDFlMDJhMjU5ZDAzYmM4ZDZmZjUyZDFmMDZjYjg2ZjU2Li41NTVjYjE5OTQzYzE4NTA0N2Ni
MzVlNDBlMzk3ZjYxYjBjZDA2YjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
R2VvbWV0cnlFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dlb21ldHJ5RWxl
bWVudC5oCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBTVkdHZW9t
ZXRyeUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKLSAgICB2b2lk
IHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcm
KSBvdmVycmlkZTsKKyAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBjb25zdCBBdG9tU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFu
Z2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHbHlwaFJlZkVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0dseXBoUmVmRWxlbWVudC5jcHAKaW5kZXggNTEwOTdlNGMzMzdjMjZmNDg4
ODMyYmIxYmI1NTQ1MTc1NTRjOWM2Yy4uMWM0NTY4YWU3NDgzOTU0OWVjNjUwYjE1ZmRlMzc4MmU4
YzI4ZjIzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBoUmVmRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBoUmVmRWxlbWVudC5jcHAKQEAg
LTI4LDcgKzI4LDcgQEAKICNpbmNsdWRlICJTVkdQYXJzZXJVdGlsaXRpZXMuaCIKICNpbmNsdWRl
ICJYTGlua05hbWVzLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KLSNpbmNs
dWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3Ry
aW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTYsNyArNTYsNyBAQCBib29sIFNW
R0dseXBoUmVmRWxlbWVudDo6aGFzVmFsaWRHbHlwaEVsZW1lbnQoU3RyaW5nJiBnbHlwaE5hbWUp
IGNvbnN0CiAgICAgcmV0dXJuIGlzPFNWR0dseXBoRWxlbWVudD4odGFyZ2V0LmVsZW1lbnQpOwog
fQogCi1zdGF0aWMgZmxvYXQgcGFyc2VGbG9hdChjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQor
c3RhdGljIGZsb2F0IHBhcnNlRmxvYXQoY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCiB7CiAgICAg
ZmxvYXQgcmVzdWx0OwogICAgIGlmICghcGFyc2VOdW1iZXJGcm9tU3RyaW5nKHZhbHVlLCByZXN1
bHQpKQpAQCAtNjQsNyArNjQsNyBAQCBzdGF0aWMgZmxvYXQgcGFyc2VGbG9hdChjb25zdCBBdG9t
aWNTdHJpbmcmIHZhbHVlKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgU1ZHR2x5cGhS
ZWZFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25z
dCBBdG9taWNTdHJpbmcmIHZhbHVlKQordm9pZCBTVkdHbHlwaFJlZkVsZW1lbnQ6OnBhcnNlQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVl
KQogewogICAgIC8vIEZJWE1FOiBJcyB0aGUgZXJyb3IgaGFuZGxpbmcgaW4gcGFyc2VGbG9hdCBj
b3JyZWN0IGZvciB0aGVzZSBhdHRyaWJ1dGVzPwogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjp4
QXR0cikKQEAgLTgzLDIyICs4MywyMiBAQCB2b2lkIFNWR0dseXBoUmVmRWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljUwogCiB2b2lk
IFNWR0dseXBoUmVmRWxlbWVudDo6c2V0WChmbG9hdCB4KQogewotICAgIHNldEF0dHJpYnV0ZShT
VkdOYW1lczo6eEF0dHIsIEF0b21pY1N0cmluZzo6bnVtYmVyKHgpKTsKKyAgICBzZXRBdHRyaWJ1
dGUoU1ZHTmFtZXM6OnhBdHRyLCBBdG9tU3RyaW5nOjpudW1iZXIoeCkpOwogfQogCiB2b2lkIFNW
R0dseXBoUmVmRWxlbWVudDo6c2V0WShmbG9hdCB5KQogewotICAgIHNldEF0dHJpYnV0ZShTVkdO
YW1lczo6eUF0dHIsIEF0b21pY1N0cmluZzo6bnVtYmVyKHkpKTsKKyAgICBzZXRBdHRyaWJ1dGUo
U1ZHTmFtZXM6OnlBdHRyLCBBdG9tU3RyaW5nOjpudW1iZXIoeSkpOwogfQogCiB2b2lkIFNWR0ds
eXBoUmVmRWxlbWVudDo6c2V0RHgoZmxvYXQgZHgpCiB7Ci0gICAgc2V0QXR0cmlidXRlKFNWR05h
bWVzOjpkeEF0dHIsIEF0b21pY1N0cmluZzo6bnVtYmVyKGR4KSk7CisgICAgc2V0QXR0cmlidXRl
KFNWR05hbWVzOjpkeEF0dHIsIEF0b21TdHJpbmc6Om51bWJlcihkeCkpOwogfQogCiB2b2lkIFNW
R0dseXBoUmVmRWxlbWVudDo6c2V0RHkoZmxvYXQgZHkpCiB7Ci0gICAgc2V0QXR0cmlidXRlKFNW
R05hbWVzOjpkeUF0dHIsIEF0b21pY1N0cmluZzo6bnVtYmVyKGR5KSk7CisgICAgc2V0QXR0cmli
dXRlKFNWR05hbWVzOjpkeUF0dHIsIEF0b21TdHJpbmc6Om51bWJlcihkeSkpOwogfQogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2x5cGhSZWZFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHR2x5cGhSZWZFbGVtZW50LmgKaW5kZXggYmUwNDZlZTczNjI1YWVk
OTBiY2Q3ZGY1NmFiZTllMWQ3MTVkOTg2OS4uYjkwZWViODhmNmMzM2RlYzVlODZhYmQ4MTY4MTFl
YWZmOGVhNjE2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBoUmVmRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHbHlwaFJlZkVsZW1lbnQuaApAQCAt
NDksNyArNDksNyBAQCBwcml2YXRlOgogICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQ
cm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHR2x5cGhSZWZFbGVtZW50LCBTVkdFbGVtZW50LCBTVkdV
UklSZWZlcmVuY2U+OwogICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVn
aXN0cnkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KIAotICAg
IHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0
cmluZyYpIGZpbmFsOworICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIGNvbnN0IEF0b21TdHJpbmcmKSBmaW5hbDsKICAgICBib29sIHJlbmRlcmVySXNOZWVkZWQo
Y29uc3QgUmVuZGVyU3R5bGUmKSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgZmxvYXQg
bV94IHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmNwcAppbmRl
eCA4MDM3NGRkYTE2YmY0ZTVlNmI5NjI3YzJkMmNkNWM1NjM2MzU4NzRmLi5iZjNkODg2ZDE4ODE0
MGRmM2QxZjI5ZWExODhjYTkyMmZlMjdiYzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHR3JhZGllbnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3Jh
ZGllbnRFbGVtZW50LmNwcApAQCAtNTEsNyArNTEsNyBAQCBTVkdHcmFkaWVudEVsZW1lbnQ6OlNW
R0dyYWRpZW50RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYg
ZAogICAgIH0pOwogfQogCi12b2lkIFNWR0dyYWRpZW50RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKK3Zv
aWQgU1ZHR3JhZGllbnRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAobmFtZSA9PSBTVkdO
YW1lczo6Z3JhZGllbnRVbml0c0F0dHIpIHsKICAgICAgICAgYXV0byBwcm9wZXJ0eVZhbHVlID0g
U1ZHUHJvcGVydHlUcmFpdHM8U1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZT46OmZyb21TdHJpbmco
dmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5oCmluZGV4IDIxYjIx
MGM1OTUxZGNiMWNlYzVjNjQyZWE4OWVjMzYyMjQ4MWY3YWYuLjZmY2Y0NTI2OGZhYjY3MTBlNjUx
MmNlZWIzZDI0OTIwYTVlYTczMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdH
cmFkaWVudEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVt
ZW50LmgKQEAgLTk1LDcgKzk1LDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIFNWR0dyYWRp
ZW50RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAotICAgIHZvaWQg
cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYp
IG92ZXJyaWRlOworICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IGNvbnN0IEF0b21TdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5n
ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcAppbmRleCBmNzJlMTRiMTQwMmU1MmQ3OTQy
NDRiN2I0NmJkYzUyZTQ5YTU3ZTJjLi5hNzU4OTBmMzE4MDQ2OGQxNTI0YmVlODU0MzU5ZDAzNTZl
YjUyMjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcApAQCAt
MTIzLDcgKzEyMyw3IEBAIEFmZmluZVRyYW5zZm9ybSogU1ZHR3JhcGhpY3NFbGVtZW50OjpzdXBw
bGVtZW50YWxUcmFuc2Zvcm0oKQogICAgIHJldHVybiBtX3N1cHBsZW1lbnRhbFRyYW5zZm9ybS5n
ZXQoKTsKIH0KIAotdm9pZCBTVkdHcmFwaGljc0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCit2b2lkIFNW
R0dyYXBoaWNzRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFt
ZSwgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6
OnRyYW5zZm9ybUF0dHIpIHsKICAgICAgICAgbV90cmFuc2Zvcm0tPmJhc2VWYWwoKS0+cGFyc2Uo
dmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5oCmluZGV4IGQ1MTZl
NTliMzg1OTA2YjI4Nzk4MmNiOTBmZDhmNzYwZmZhNzc1NGEuLmE0NzU1YWQzMGZhMzdiYjk5YzQ4
YmFhMDE5YzNjMDU0MDQ2YjY2NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdH
cmFwaGljc0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVt
ZW50LmgKQEAgLTcyLDcgKzcyLDcgQEAgcHJvdGVjdGVkOgogCiAgICAgYm9vbCBzdXBwb3J0c0Zv
Y3VzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gRWxlbWVudDo6c3VwcG9ydHNGb2N1cygpIHx8
IGhhc0ZvY3VzRXZlbnRMaXN0ZW5lcnMoKTsgfQogCi0gICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CisgICAg
dm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbVN0cmlu
ZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZp
ZWROYW1lJikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVs
ZW1lbnQuY3BwCmluZGV4IGNhYTY1NjI4YzBhYzA3OTE3NTU5NmQxM2ViNjY3ZmY2ZmJlM2M3MzAu
Ljk2NzBlMjY0NDA2N2NmZGFiMzQ3MzAzNTE5YjE0ZjBmYzE4ZjE2YjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIGJvb2wgU1ZHSW1hZ2VF
bGVtZW50OjpoYXNTaW5nbGVTZWN1cml0eU9yaWdpbigpIGNvbnN0CiAgICAgcmV0dXJuICFpbWFn
ZSB8fCBpbWFnZS0+aGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4oKTsKIH0KIAotdm9pZCBTVkdJbWFn
ZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0
IEF0b21pY1N0cmluZyYgdmFsdWUpCit2b2lkIFNWR0ltYWdlRWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCiB7
CiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRyKSB7CiAg
ICAgICAgIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZSBwcmVzZXJ2ZUFzcGVjdFJhdGlvOwpA
QCAtMTYwLDcgKzE2MCw3IEBAIE5vZGU6Okluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0IFNWR0lt
YWdlRWxlbWVudDo6aW5zZXJ0ZWRJbnRvQW5jZXN0b3IoSW5zZXJ0aW9uCiAgICAgcmV0dXJuIElu
c2VydGVkSW50b0FuY2VzdG9yUmVzdWx0OjpEb25lOwogfQogCi1jb25zdCBBdG9taWNTdHJpbmcm
IFNWR0ltYWdlRWxlbWVudDo6aW1hZ2VTb3VyY2VVUkwoKSBjb25zdAorY29uc3QgQXRvbVN0cmlu
ZyYgU1ZHSW1hZ2VFbGVtZW50OjppbWFnZVNvdXJjZVVSTCgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IGdldEF0dHJpYnV0ZShTVkdOYW1lczo6aHJlZkF0dHIsIFhMaW5rTmFtZXM6OmhyZWZBdHRyKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuaAppbmRleCBkY2Q3YTA4MjZhZDQ5YTJl
ZmQ2ZDEwOGJiMTFhMjg5ZTk2Mzk1NGQ0Li45ZmI1Nzg2ODc1ZmIxMTRjNTIzMjg2NWU0ZTA4M2Fl
YjNmY2E4NDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5oCkBAIC0zNCw3ICsz
NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFNWR0ltYWdlRWxlbWVudD4gY3JlYXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCiAgICAgYm9vbCBoYXNTaW5nbGVTZWN1
cml0eU9yaWdpbigpIGNvbnN0OwotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgaW1hZ2VTb3VyY2VV
UkwoKSBjb25zdCBmaW5hbDsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBpbWFnZVNvdXJjZVVSTCgp
IGNvbnN0IGZpbmFsOwogCiAgICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIHgoKSBjb25zdCB7IHJl
dHVybiBtX3gtPmN1cnJlbnRWYWx1ZSgpOyB9CiAgICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIHko
KSBjb25zdCB7IHJldHVybiBtX3ktPmN1cnJlbnRWYWx1ZSgpOyB9CkBAIC01NCw3ICs1NCw3IEBA
IHByaXZhdGU6CiAgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJS
ZWdpc3RyeTxTVkdJbWFnZUVsZW1lbnQsIFNWR0dyYXBoaWNzRWxlbWVudCwgU1ZHRXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZCwgU1ZHVVJJUmVmZXJlbmNlPjsKICAgICBjb25zdCBTVkdQcm9wZXJ0
eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wcm9w
ZXJ0eVJlZ2lzdHJ5OyB9CiAKLSAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIHBhcnNlQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5nJikgZmluYWw7CiAgICAg
dm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBmaW5hbDsKIAog
ICAgIHZvaWQgZGlkQXR0YWNoUmVuZGVyZXJzKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHSW1hZ2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0lt
YWdlTG9hZGVyLmNwcAppbmRleCA3MjIxZGZjYjdkZGRlNTkwMzkyNzZhZGRjOWYzOWJkYTJkNzg5
MDQ1Li40MmEzNWQ0NTg5MmE4MGY4MGJjYmFkMTU3ZDZkZmVlZmUwZGViYTYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdJbWFnZUxvYWRlci5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgdm9pZCBTVkdJbWFn
ZUxvYWRlcjo6ZGlzcGF0Y2hMb2FkRXZlbnQoKQogICAgIH0KIH0KIAotU3RyaW5nIFNWR0ltYWdl
TG9hZGVyOjpzb3VyY2VVUkkoY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGUpIGNvbnN0CitT
dHJpbmcgU1ZHSW1hZ2VMb2FkZXI6OnNvdXJjZVVSSShjb25zdCBBdG9tU3RyaW5nJiBhdHRyaWJ1
dGUpIGNvbnN0CiB7CiAgICAgVVJMIGJhc2UgPSBlbGVtZW50KCkuYmFzZVVSSSgpOwogICAgIGlm
IChiYXNlICE9IFdURjo6YmxhbmtVUkwoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdJbWFnZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlTG9hZGVyLmgK
aW5kZXggOTRmYWJmMjBlODM2NmU5YmVkMDg4MDY3Njk0NTQzMzRmMWZjNmU1Yy4uMDQ4ZWEyMjE0
NTU1ZWYwNGRkMTBiZTUxODNiOWVjODEzYzJkMjQwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ltYWdlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdl
TG9hZGVyLmgKQEAgLTMyLDcgKzMyLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHZvaWQg
ZGlzcGF0Y2hMb2FkRXZlbnQoKSBvdmVycmlkZTsKLSAgICBTdHJpbmcgc291cmNlVVJJKGNvbnN0
IEF0b21pY1N0cmluZyYpIGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmluZyBzb3VyY2VVUkkoY29u
c3QgQXRvbVN0cmluZyYpIGNvbnN0IG92ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xhbmdTcGFjZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGFuZ1NwYWNlLmNwcAppbmRleCA5MjYxNzVhMjM0NWY1NDFm
NDAxYWMxNGMxNTk4MGQ1OTllYjBiZDA0Li5jNDY4Y2I1NDc3MDBjNDVjMzZlMWNiMzI5NWJiYzk4
NTM0N2U1ZGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGFuZ1NwYWNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGFuZ1NwYWNlLmNwcApAQCAtMzUsMTAgKzM1
LDEwIEBAIFNWR0xhbmdTcGFjZTo6U1ZHTGFuZ1NwYWNlKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVt
ZW50KQogewogfQogCi1jb25zdCBBdG9taWNTdHJpbmcmIFNWR0xhbmdTcGFjZTo6eG1sc3BhY2Uo
KSBjb25zdAorY29uc3QgQXRvbVN0cmluZyYgU1ZHTGFuZ1NwYWNlOjp4bWxzcGFjZSgpIGNvbnN0
CiB7CiAgICAgaWYgKCFtX3NwYWNlKSB7Ci0gICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxj
b25zdCBBdG9taWNTdHJpbmc+IGRlZmF1bHRTdHJpbmcoImRlZmF1bHQiLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNv
bnN0IEF0b21TdHJpbmc+IGRlZmF1bHRTdHJpbmcoImRlZmF1bHQiLCBBdG9tU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgICAgIHJldHVybiBkZWZhdWx0U3RyaW5nOwogICAgIH0K
ICAgICByZXR1cm4gbV9zcGFjZTsKQEAgLTQ5LDcgKzQ5LDcgQEAgYm9vbCBTVkdMYW5nU3BhY2U6
OmlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKICAg
ICByZXR1cm4gYXR0cmlidXRlTmFtZS5tYXRjaGVzKFhNTE5hbWVzOjpsYW5nQXR0cikgfHwgYXR0
cmlidXRlTmFtZS5tYXRjaGVzKFhNTE5hbWVzOjpzcGFjZUF0dHIpOwogfQogCi12b2lkIFNWR0xh
bmdTcGFjZTo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3Qg
QXRvbWljU3RyaW5nJiB2YWx1ZSkKK3ZvaWQgU1ZHTGFuZ1NwYWNlOjpwYXJzZUF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKIHsKICAg
ICBpZiAobmFtZS5tYXRjaGVzKFhNTE5hbWVzOjpsYW5nQXR0cikpCiAgICAgICAgIHNldFhtbGxh
bmcodmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xhbmdTcGFjZS5o
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xhbmdTcGFjZS5oCmluZGV4IDRlZmY3ZmIzNDRkNTE3
NTgxNWEzZTFkM2IyZTIwODkxZGE0ZjZjMDMuLmZjZGVlN2UzODdkOGY4OWNiMTI2MjgwNmU0MTU0
ZWIyMjY3NDY4OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMYW5nU3BhY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGFuZ1NwYWNlLmgKQEAgLTMwLDEzICszMCwx
MyBAQCBjbGFzcyBTVkdFbGVtZW50OwogCiBjbGFzcyBTVkdMYW5nU3BhY2UgewogcHVibGljOgot
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgeG1sbGFuZygpIGNvbnN0IHsgcmV0dXJuIG1fbGFuZzsg
fQotICAgIHZvaWQgc2V0WG1sbGFuZyhjb25zdCBBdG9taWNTdHJpbmcmIHhtbExhbmcpIHsgbV9s
YW5nID0geG1sTGFuZzsgfQorICAgIGNvbnN0IEF0b21TdHJpbmcmIHhtbGxhbmcoKSBjb25zdCB7
IHJldHVybiBtX2xhbmc7IH0KKyAgICB2b2lkIHNldFhtbGxhbmcoY29uc3QgQXRvbVN0cmluZyYg
eG1sTGFuZykgeyBtX2xhbmcgPSB4bWxMYW5nOyB9CiAKLSAgICBjb25zdCBBdG9taWNTdHJpbmcm
IHhtbHNwYWNlKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRYbWxzcGFjZShjb25zdCBBdG9taWNTdHJp
bmcmIHhtbFNwYWNlKSB7IG1fc3BhY2UgPSB4bWxTcGFjZTsgfQorICAgIGNvbnN0IEF0b21TdHJp
bmcmIHhtbHNwYWNlKCkgY29uc3Q7CisgICAgdm9pZCBzZXRYbWxzcGFjZShjb25zdCBBdG9tU3Ry
aW5nJiB4bWxTcGFjZSkgeyBtX3NwYWNlID0geG1sU3BhY2U7IH0KIAotICAgIHZvaWQgcGFyc2VB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpOworICAg
IHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJp
bmcmKTsKIAogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1l
Jik7CiAKQEAgLTQ3LDggKzQ3LDggQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAgIFNWR0Vs
ZW1lbnQmIG1fY29udGV4dEVsZW1lbnQ7Ci0gICAgQXRvbWljU3RyaW5nIG1fbGFuZzsKLSAgICBB
dG9taWNTdHJpbmcgbV9zcGFjZTsKKyAgICBBdG9tU3RyaW5nIG1fbGFuZzsKKyAgICBBdG9tU3Ry
aW5nIG1fc3BhY2U7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0xpbmVFbGVtZW50LmNwcAppbmRleCA4OTczNDRjYzljOTUzY2JiODIzNDg1ZTBhMGNmYzU5
YmZhNmM3ODkxLi42NWZlNTRmYTgwNDYxYTk3OWRmNjYxZGFkMWY5MTFkYTYxMTllOWZhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdMaW5lRWxlbWVudC5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgUmVmPFNW
R0xpbmVFbGVtZW50PiBTVkdMaW5lRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hbWUsIERvY3VtZW4KICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdMaW5lRWxlbWVu
dCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCi12b2lkIFNWR0xpbmVFbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZh
bHVlKQordm9pZCBTVkdMaW5lRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCiB7CiAgICAgU1ZHUGFyc2luZ0Vy
cm9yIHBhcnNlRXJyb3IgPSBOb0Vycm9yOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHTGluZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lRWxlbWVudC5o
CmluZGV4IGRkMDI5YTNkNWJlZDgyNTAyNDg3OTljOTRjY2M2Yzc4MWQyN2EyY2YuLjU4Mjc3N2E3
YWRmN2MzOWIyMWI2YjcwOGUwZWRlZmE0ZDhiYmMwMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdMaW5lRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5l
RWxlbWVudC5oCkBAIC00OCw3ICs0OCw3IEBAIHByaXZhdGU6CiAgICAgdXNpbmcgUHJvcGVydHlS
ZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdMaW5lRWxlbWVudCwgU1ZHR2Vv
bWV0cnlFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkPjsKICAgICBjb25zdCBT
VkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CiAKLSAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIHBh
cnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5nJikgZmlu
YWw7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBm
aW5hbDsKIAogICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFNWR1Rlc3Rz
Ojppc1ZhbGlkKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJH
cmFkaWVudEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50
RWxlbWVudC5jcHAKaW5kZXggMGM5ODA4MmM0Njc4MmNlMzVlNzllNDI3NzE1MzRlODdjODIyYjdl
ZS4uN2Q3ZDdjMjM2NGYyZTRjZjVlODI0ZGJmMDBkYzhkNDRhMjgzNzYxMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHAKQEAgLTU5LDcgKzU5
LDcgQEAgUmVmPFNWR0xpbmVhckdyYWRpZW50RWxlbWVudD4gU1ZHTGluZWFyR3JhZGllbnRFbGVt
ZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmEKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
VkdMaW5lYXJHcmFkaWVudEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotdm9pZCBT
VkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCit2b2lkIFNWR0xpbmVhckdyYWRp
ZW50RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29u
c3QgQXRvbVN0cmluZyYgdmFsdWUpCiB7CiAgICAgU1ZHUGFyc2luZ0Vycm9yIHBhcnNlRXJyb3Ig
PSBOb0Vycm9yOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3Jh
ZGllbnRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVt
ZW50LmgKaW5kZXggMDRhMzFkZDQ3YzBiMjE5MTYzODM4YWY1YzVlMDlhOTI4NWMzYTI2Zi4uYjBl
NmViNTBkNGVhNjg4MGY2YzkxYjBhYmM1MWQzNjUxYTQ5YjIyMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuaApAQCAtNTEsNyArNTEsNyBAQCBwcml2
YXRlOgogICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0
cnk8U1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LCBTVkdHcmFkaWVudEVsZW1lbnQ+OwogICAgIGNv
bnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KIAotICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOworICAg
IHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJp
bmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlm
aWVkTmFtZSYpIG92ZXJyaWRlOwogCiAgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24m
KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNUGF0aEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01QYXRoRWxlbWVudC5jcHAKaW5kZXggNTM3
NjVkOTkzZGMzMDVlMmFiNWE3NjVjNGNkMWRjY2E2MjE2YTVmYi4uZDgwMzkyNDJjNjUyMDM3M2Q0
MzJmMGQzMGRhOGI0YjhjYmVkZWRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R01QYXRoRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01QYXRoRWxlbWVu
dC5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIFNWR01QYXRoRWxlbWVudDo6cmVtb3ZlZEZy
b21BbmNlc3RvcihSZW1vdmFsVHlwZSByZW1vdmFsVHlwZSwgQ29udGFpbmVyTm9kZQogICAgICAg
ICBjbGVhclJlc291cmNlUmVmZXJlbmNlcygpOwogfQogCi12b2lkIFNWR01QYXRoRWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3Ry
aW5nJiB2YWx1ZSkKK3ZvaWQgU1ZHTVBhdGhFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBTVkdF
bGVtZW50OjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CiAgICAgU1ZHVVJJUmVmZXJlbmNl
OjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHTVBhdGhFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTVBhdGhFbGVt
ZW50LmgKaW5kZXggZDY1OTAzY2ViODNhOWJjZjYxNTRiNzhjY2FhNGE2YmEzNTRiM2ZlNi4uNjdk
MWRiMzU0ODMyNWIxNjlmZjI1NjIyODQxMTMxODgxNzQ1YjNkZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR01QYXRoRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdNUGF0aEVsZW1lbnQuaApAQCAtNDYsNyArNDYsNyBAQCBwcml2YXRlOgogICAgIHVzaW5nIFBy
b3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHTVBhdGhFbGVtZW50
LCBTVkdFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBTVkdVUklSZWZlcmVu
Y2U+OwogICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KIAotICAgIHZvaWQgcGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIGZp
bmFsOworICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0
IEF0b21TdHJpbmcmKSBmaW5hbDsKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYpIGZpbmFsOwogCiAgICAgdm9pZCBidWlsZFBlbmRpbmdSZXNvdXJjZSgp
IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCmluZGV4IGIzYzQ2
NzIwNmVmN2QxNmU2ZDRjNDFlZjU3YzJlYTc3OGUyMjFlOWEuLmY1MzQ2MjQwZjAxNjE1NTdiMmI5
ZTNmNjQ5NGFhNmYyZTE1ZGNkODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdN
YXJrZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVu
dC5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgQWZmaW5lVHJhbnNmb3JtIFNWR01hcmtlckVsZW1lbnQ6
OnZpZXdCb3hUb1ZpZXdUcmFuc2Zvcm0oZmxvYXQgdmlld1dpZHRoLCBmbG9hdAogICAgIHJldHVy
biBTVkdGaXRUb1ZpZXdCb3g6OnZpZXdCb3hUb1ZpZXdUcmFuc2Zvcm0odmlld0JveCgpLCBwcmVz
ZXJ2ZUFzcGVjdFJhdGlvKCksIHZpZXdXaWR0aCwgdmlld0hlaWdodCk7CiB9CiAKLXZvaWQgU1ZH
TWFya2VyRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwg
Y29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKK3ZvaWQgU1ZHTWFya2VyRWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYgdmFs
dWUpCiB7CiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6Om1hcmtlclVuaXRzQXR0cikgewogICAg
ICAgICBhdXRvIHByb3BlcnR5VmFsdWUgPSBTVkdQcm9wZXJ0eVRyYWl0czxTVkdNYXJrZXJVbml0
c1R5cGU+Ojpmcm9tU3RyaW5nKHZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdNYXJrZXJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVu
dC5oCmluZGV4IGYwMzQ1ODQ0MDNiYWJhMjYzZjE4YmVjMWMxNDM4Yzc2ZTg2ODFiNTAuLjFjODZl
NzU5NzhlZmU2MDAwYTE3NWEwNGExODhmMGExMmFmYmY2MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R01hcmtlckVsZW1lbnQuaApAQCAtNzQsNyArNzQsNyBAQCBwcml2YXRlOgogICAgIHVzaW5nIFBy
b3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHTWFya2VyRWxlbWVu
dCwgU1ZHRWxlbWVudCwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgU1ZHRml0VG9WaWV3
Qm94PjsKICAgICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CiAKLSAgICB2b2lkIHBh
cnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBv
dmVycmlkZTsKKyAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBj
b25zdCBBdG9tU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2Vk
KGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKICAgICB2b2lkIGNoaWxkcmVuQ2hhbmdl
ZChjb25zdCBDaGlsZENoYW5nZSYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tF
bGVtZW50LmNwcAppbmRleCA1NmUwY2QxYjA5NmViYjBhZDlmMTk1YmQ1MThiMDJiNGY3ZjIxZmRm
Li44ZjJhODAyYWVlMGZiZjQ4NzRlNDQ2ODRlMmE4NDZhYmYwZmM4NjdjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdNYXNrRWxlbWVudC5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgUmVmPFNWR01hc2tFbGVt
ZW50PiBTVkdNYXNrRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW4KICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdNYXNrRWxlbWVudCh0YWdOYW1l
LCBkb2N1bWVudCkpOwogfQogCi12b2lkIFNWR01hc2tFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQordm9p
ZCBTVkdNYXNrRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFt
ZSwgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6
Om1hc2tVbml0c0F0dHIpIHsKICAgICAgICAgYXV0byBwcm9wZXJ0eVZhbHVlID0gU1ZHUHJvcGVy
dHlUcmFpdHM8U1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZT46OmZyb21TdHJpbmcodmFsdWUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuaAppbmRleCBjNWUzNThkZmZiYTlkZTRkNzAzZjZj
NDgyMDdjZGYxYTM2YTRjMGJlLi45NTY0NjQ5YmM4M2MzNDEyYzQwNjRkMDMwM2Q4MmQ1ODRiMjM3
OTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuaApAQCAtNTMsNyArNTMsNyBAQCBw
cml2YXRlOgogICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVn
aXN0cnk8U1ZHTWFza0VsZW1lbnQsIFNWR0VsZW1lbnQsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQsIFNWR1Rlc3RzPjsKICAgICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0
eVJlZ2lzdHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CiAK
LSAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9t
aWNTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5nJikgZmluYWw7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVD
aGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBmaW5hbDsKICAgICB2b2lkIGNoaWxkcmVuQ2hh
bmdlZChjb25zdCBDaGlsZENoYW5nZSYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhF
bGVtZW50LmNwcAppbmRleCAwN2ZjMmE5YTMzZjQxODc1MzU0ZWM5ODE2Nzc2NDQ2OTEzYTI1M2E4
Li42YmExNDQwZDc1MjE4ZGZlNDlkYWVjNGI1ZWRhNzg0MTEwNWUxYWE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgUmVmPFNWR1BhdGhFbGVt
ZW50PiBTVkdQYXRoRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW4KICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdQYXRoRWxlbWVudCh0YWdOYW1l
LCBkb2N1bWVudCkpOwogfQogCi12b2lkIFNWR1BhdGhFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQordm9p
ZCBTVkdQYXRoRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFt
ZSwgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6
OmRBdHRyKSB7CiAgICAgICAgIGlmICghbV9wYXRoU2VnTGlzdC0+YmFzZVZhbCgpLT5wYXJzZSh2
YWx1ZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5oCmluZGV4IDY3NzRkMDY5OGFhNDJm
YjUzNzM3ZGUxZDg5NTA3MDgzMTM1OGU3YTcuLjNhNTk3NzNhMDNkMzBlNzc3ZWIzM2I1MGMzOWQx
MDlmZjViODVhYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5oCkBAIC0xMTEsNyAr
MTExLDcgQEAgcHJpdmF0ZToKICAgICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVy
dHlPd25lclJlZ2lzdHJ5PFNWR1BhdGhFbGVtZW50LCBTVkdHZW9tZXRyeUVsZW1lbnQsIFNWR0V4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ+OwogICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkm
IHByb3BlcnR5UmVnaXN0cnkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0
cnk7IH0KICAgICAKLSAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBjb25zdCBBdG9taWNTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5nJikgZmluYWw7CiAgICAgdm9pZCBz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBmaW5hbDsKIAogICAgIGJv
b2wgaXNWYWxpZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFNWR1Rlc3RzOjppc1ZhbGlkKCk7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwCmluZGV4IGY5ZTgyMDc5N2U5
ODIzMGM0ZGQwZWI5MWU2ZDdkNWQxNjJmNGE4YzQuLmNkZGMzYTNlOGIxMzgzZjA2MGY0OTFmZGU2
MzZiYzkxZWY2NDllODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJu
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNw
cApAQCAtNzEsNyArNzEsNyBAQCBSZWY8U1ZHUGF0dGVybkVsZW1lbnQ+IFNWR1BhdHRlcm5FbGVt
ZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRAogICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFNWR1BhdHRlcm5FbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAK
LXZvaWQgU1ZHUGF0dGVybkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCit2b2lkIFNWR1BhdHRlcm5FbGVt
ZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9t
U3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6cGF0dGVyblVuaXRz
QXR0cikgewogICAgICAgICBhdXRvIHByb3BlcnR5VmFsdWUgPSBTVkdQcm9wZXJ0eVRyYWl0czxT
VkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlPjo6ZnJvbVN0cmluZyh2YWx1ZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oCmluZGV4IDM2Y2RlZmIwYjc2MzRkYjI3ZGRkZWQ4MTY2
MDhjOWMxNzZjMWJlMGYuLmQxYWQ1OWM4ZGU0YmViOThhMDAzZTliMWFmZGY0NjMxYThhMWFkZmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oCkBAIC02NCw3ICs2NCw3IEBA
IHByaXZhdGU6CiAgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJS
ZWdpc3RyeTxTVkdQYXR0ZXJuRWxlbWVudCwgU1ZHRWxlbWVudCwgU1ZHRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCwgU1ZHRml0VG9WaWV3Qm94LCBTVkdUZXN0cywgU1ZHVVJJUmVmZXJlbmNlPjsK
ICAgICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CiAKLSAgICB2b2lkIHBhcnNlQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBmaW5hbDsK
KyAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9t
U3RyaW5nJikgZmluYWw7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxp
ZmllZE5hbWUmKSBmaW5hbDsKICAgICB2b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENo
YW5nZSYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9seUVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmNwcAppbmRleCBj
MmZlMmVhYTg5N2Q3OGI2OWIwOTVjNmRjZjM1MGMyOWYwZmNiYmI2Li42MmJmMzE0MDYyNzBmYzEw
YTBhYmU5ZTk0NGY2ZmNhZDJmNzNiODgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUG9seUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5RWxlbWVu
dC5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgU1ZHUG9seUVsZW1lbnQ6OlNWR1BvbHlFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKICAgICB9KTsK
IH0KIAotdm9pZCBTVkdQb2x5RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKK3ZvaWQgU1ZHUG9seUVsZW1l
bnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21T
dHJpbmcmIHZhbHVlKQogewogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjpwb2ludHNBdHRyKSB7
CiAgICAgICAgIGlmICghbV9wb2ludHMtPmJhc2VWYWwoKS0+cGFyc2UodmFsdWUpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHUG9seUVsZW1lbnQuaAppbmRleCA2NzIyNDkwM2VmNjMxMGUyYmQyYjE3OTEyMTg5
NjM0NDU5ZDI1ZjJiLi41ZWUzMTFmMzU0YzI3YWZlMTczMzgxNDZlMTJmOTFkYjcwNTI2YjY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuaApAQCAtNDQsNyArNDQsNyBAQCBwcml2YXRl
OgogICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8
U1ZHUG9seUVsZW1lbnQsIFNWR0dlb21ldHJ5RWxlbWVudCwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZD47CiAgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdpc3Ry
eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQogCi0gICAgdm9p
ZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5n
Jikgb3ZlcnJpZGU7IAorICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIGNvbnN0IEF0b21TdHJpbmcmKSBvdmVycmlkZTsgCiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVD
aGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIAogICAgIGJvb2wgaXNWYWxp
ZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFNWR1Rlc3RzOjppc1ZhbGlkKCk7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAKaW5kZXggOWFh
MjNhZTBiZDZiOTBkOTg2ZDMxZGNlYzYzNDRmNTU3ZDFjODk2NS4uYjExZDg3NTQ4MjY1NGFhNzU2
ODk0ODk0OTM1NmYxNDk2YWVjMDRjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Jh
ZGlhbEdyYWRpZW50RWxlbWVudC5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgUmVmPFNWR1JhZGlhbEdy
YWRpZW50RWxlbWVudD4gU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVh
bGlmaWVkTmEKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdSYWRpYWxHcmFkaWVudEVsZW1l
bnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotdm9pZCBTVkdSYWRpYWxHcmFkaWVudEVsZW1l
bnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21p
Y1N0cmluZyYgdmFsdWUpCit2b2lkIFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUp
CiB7CiAgICAgU1ZHUGFyc2luZ0Vycm9yIHBhcnNlRXJyb3IgPSBOb0Vycm9yOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmgKaW5kZXggYjg4YTM1YTQz
MjhhZjhjNjY0MGYyMmVkYTYxNGY5MWViZmU2YTU5Ny4uZjMxNWQ5NDgwOGM1ZGQ4Y2JmNDE5MmFi
YTFmZDA3NGU0NjVmYTAzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlh
bEdyYWRpZW50RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFk
aWVudEVsZW1lbnQuaApAQCAtNTUsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIHVzaW5nIFByb3Bl
cnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHUmFkaWFsR3JhZGllbnRF
bGVtZW50LCBTVkdHcmFkaWVudEVsZW1lbnQ+OwogICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0
cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVn
aXN0cnk7IH0KIAotICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOworICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmKSBvdmVycmlkZTsKICAgICB2
b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwog
CiAgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5k
ZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHUmVjdEVsZW1lbnQuY3BwCmluZGV4IDRlMTRjYzZkNzk4OGY1Yjg2MmJhNWZhODEy
MjNlYWNiYzhhMGRhMDYuLmViNTM5OTgwYjVlOTExNmIxZjI4YjI2MGYzMDhmMDE1ZWE4OTA2MTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmNwcApAQCAtNTMsNyArNTMsNyBAQCBS
ZWY8U1ZHUmVjdEVsZW1lbnQ+IFNWR1JlY3RFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbgogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR1JlY3RF
bGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKLXZvaWQgU1ZHUmVjdEVsZW1lbnQ6OnBh
cnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgdmFsdWUpCit2b2lkIFNWR1JlY3RFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBTVkdQYXJz
aW5nRXJyb3IgcGFyc2VFcnJvciA9IE5vRXJyb3I7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVt
ZW50LmgKaW5kZXggYzM5MmUxZTJlNWM2ZTQ5N2RkN2M4OWYyYjM3MDljYmY3NTc3NjA1Ni4uZmMy
NDc5Mjg2ZWU3YmE0NWJjNzY2OGJlZGU4M2I3NWY0Njc5Y2E0ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1JlY3RFbGVtZW50LmgKQEAgLTUyLDcgKzUyLDcgQEAgcHJpdmF0ZToKICAgICB1c2luZyBQcm9w
ZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR1JlY3RFbGVtZW50LCBT
VkdHZW9tZXRyeUVsZW1lbnQsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ+OwogICAgIGNv
bnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KIAotICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIGZpbmFsOworICAgIHZv
aWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcm
KSBmaW5hbDsKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpIGZpbmFsOwogCiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gU1ZH
VGVzdHM6OmlzVmFsaWQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NW
R0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCmluZGV4
IDliZjAzNDIzMzJhZWI0NGRjZGI0OWJhOTQzMmIxMWNiY2UwMjZiYWEuLmM1N2NmZmM1OTFhYTg3
ZDA0YTg2ZDU5MGUzZTY1NzA0MjBkZWI5MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdTVkdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVu
dC5jcHAKQEAgLTk0LDI2ICs5NCwyNiBAQCB2b2lkIFNWR1NWR0VsZW1lbnQ6OmRpZE1vdmVUb05l
d0RvY3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVudCwgRG9jdW1lbnQmIG5ld0RvYwogICAgIFNW
R0dyYXBoaWNzRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQob2xkRG9jdW1lbnQsIG5ld0Rv
Y3VtZW50KTsKIH0KIAotY29uc3QgQXRvbWljU3RyaW5nJiBTVkdTVkdFbGVtZW50Ojpjb250ZW50
U2NyaXB0VHlwZSgpIGNvbnN0Citjb25zdCBBdG9tU3RyaW5nJiBTVkdTVkdFbGVtZW50Ojpjb250
ZW50U2NyaXB0VHlwZSgpIGNvbnN0CiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21p
Y1N0cmluZz4gZGVmYXVsdFNjcmlwdFR5cGUgeyAidGV4dC9lY21hc2NyaXB0IiB9OwotICAgIGNv
bnN0IEF0b21pY1N0cmluZyYgdHlwZSA9IGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24o
U1ZHTmFtZXM6OmNvbnRlbnRTY3JpcHRUeXBlQXR0cik7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPEF0b21TdHJpbmc+IGRlZmF1bHRTY3JpcHRUeXBlIHsgInRleHQvZWNtYXNjcmlwdCIgfTsK
KyAgICBjb25zdCBBdG9tU3RyaW5nJiB0eXBlID0gYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXph
dGlvbihTVkdOYW1lczo6Y29udGVudFNjcmlwdFR5cGVBdHRyKTsKICAgICByZXR1cm4gdHlwZS5p
c051bGwoKSA/IGRlZmF1bHRTY3JpcHRUeXBlLmdldCgpIDogdHlwZTsKIH0KIAotdm9pZCBTVkdT
VkdFbGVtZW50OjpzZXRDb250ZW50U2NyaXB0VHlwZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUp
Cit2b2lkIFNWR1NWR0VsZW1lbnQ6OnNldENvbnRlbnRTY3JpcHRUeXBlKGNvbnN0IEF0b21TdHJp
bmcmIHR5cGUpCiB7CiAgICAgc2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihTVkdO
YW1lczo6Y29udGVudFNjcmlwdFR5cGVBdHRyLCB0eXBlKTsKIH0KIAotY29uc3QgQXRvbWljU3Ry
aW5nJiBTVkdTVkdFbGVtZW50Ojpjb250ZW50U3R5bGVUeXBlKCkgY29uc3QKK2NvbnN0IEF0b21T
dHJpbmcmIFNWR1NWR0VsZW1lbnQ6OmNvbnRlbnRTdHlsZVR5cGUoKSBjb25zdAogewotICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGRlZmF1bHRTdHlsZVR5cGUgeyAidGV4
dC9jc3MiIH07Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlID0gYXR0cmlidXRlV2l0aG91
dFN5bmNocm9uaXphdGlvbihTVkdOYW1lczo6Y29udGVudFN0eWxlVHlwZUF0dHIpOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9tU3RyaW5nPiBkZWZhdWx0U3R5bGVUeXBlIHsgInRleHQv
Y3NzIiB9OworICAgIGNvbnN0IEF0b21TdHJpbmcmIHR5cGUgPSBhdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKFNWR05hbWVzOjpjb250ZW50U3R5bGVUeXBlQXR0cik7CiAgICAgcmV0dXJu
IHR5cGUuaXNOdWxsKCkgPyBkZWZhdWx0U3R5bGVUeXBlLmdldCgpIDogdHlwZTsKIH0KIAotdm9p
ZCBTVkdTVkdFbGVtZW50OjpzZXRDb250ZW50U3R5bGVUeXBlKGNvbnN0IEF0b21pY1N0cmluZyYg
dHlwZSkKK3ZvaWQgU1ZHU1ZHRWxlbWVudDo6c2V0Q29udGVudFN0eWxlVHlwZShjb25zdCBBdG9t
U3RyaW5nJiB0eXBlKQogewogICAgIHNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24o
U1ZHTmFtZXM6OmNvbnRlbnRTdHlsZVR5cGVBdHRyLCB0eXBlKTsKIH0KQEAgLTE5Myw3ICsxOTMs
NyBAQCB2b2lkIFNWR1NWR0VsZW1lbnQ6OnVwZGF0ZUN1cnJlbnRUcmFuc2xhdGUoKQogICAgICAg
ICBkb2N1bWVudCgpLnJlbmRlclZpZXcoKS0+cmVwYWludCgpOwogfQogCi12b2lkIFNWR1NWR0Vs
ZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0
b21pY1N0cmluZyYgdmFsdWUpCit2b2lkIFNWR1NWR0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKQogewogICAg
IGlmICghbmVhcmVzdFZpZXdwb3J0RWxlbWVudCgpKSB7CiAgICAgICAgIC8vIEZvciB0aGVzZSBl
dmVudHMsIHRoZSBvdXRlcm1vc3QgPHN2Zz4gZWxlbWVudCB3b3JrcyBsaWtlIGEgPGJvZHk+IGVs
ZW1lbnQgZG9lcywKQEAgLTczNSw3ICs3MzUsNyBAQCB2b2lkIFNWR1NWR0VsZW1lbnQ6OnJlc3Vt
ZUZyb21Eb2N1bWVudFN1c3BlbnNpb24oKQogCiAvLyBnZXRFbGVtZW50QnlJZCBvbiBTVkdTVkdF
bGVtZW50IGlzIHJlc3RyaWN0ZWQgdG8gb25seSB0aGUgY2hpbGQgc3VidHJlZSBkZWZpbmVkIGJ5
IHRoZSA8c3ZnPiBlbGVtZW50LgogLy8gU2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL1NWRzExL3N0
cnVjdC5odG1sI0ludGVyZmFjZVNWR1NWR0VsZW1lbnQKLUVsZW1lbnQqIFNWR1NWR0VsZW1lbnQ6
OmdldEVsZW1lbnRCeUlkKGNvbnN0IEF0b21pY1N0cmluZyYgaWQpCitFbGVtZW50KiBTVkdTVkdF
bGVtZW50OjpnZXRFbGVtZW50QnlJZChjb25zdCBBdG9tU3RyaW5nJiBpZCkKIHsKICAgICBpZiAo
aWQuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdF
bGVtZW50LmgKaW5kZXggOTYwZjg1YWRhMGFmZWU1OGFjY2IwMGM0MWUwYjQ0ZmU3YjY3OThlMS4u
OWVhY2Q4MDkxZGMxMTk2MWE5NjkwMTk5NzYzZmMyMDI1ZDI1NzhjMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHU1ZHRWxlbWVudC5oCkBAIC00MSwxMSArNDEsMTEgQEAgY2xhc3MgU1ZHVmlld1NwZWM7CiBj
bGFzcyBTVkdTVkdFbGVtZW50IGZpbmFsIDogcHVibGljIFNWR0dyYXBoaWNzRWxlbWVudCwgcHVi
bGljIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIHB1YmxpYyBTVkdGaXRUb1ZpZXdCb3gs
IHB1YmxpYyBTVkdab29tQW5kUGFuIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFNWR1NW
R0VsZW1lbnQpOwogcHVibGljOiAvLyBET00KLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGNvbnRl
bnRTY3JpcHRUeXBlKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRDb250ZW50U2NyaXB0VHlwZShjb25z
dCBBdG9taWNTdHJpbmcmKTsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBjb250ZW50U2NyaXB0VHlw
ZSgpIGNvbnN0OworICAgIHZvaWQgc2V0Q29udGVudFNjcmlwdFR5cGUoY29uc3QgQXRvbVN0cmlu
ZyYpOwogCi0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBjb250ZW50U3R5bGVUeXBlKCkgY29uc3Q7
Ci0gICAgdm9pZCBzZXRDb250ZW50U3R5bGVUeXBlKGNvbnN0IEF0b21pY1N0cmluZyYpOworICAg
IGNvbnN0IEF0b21TdHJpbmcmIGNvbnRlbnRTdHlsZVR5cGUoKSBjb25zdDsKKyAgICB2b2lkIHNl
dENvbnRlbnRTdHlsZVR5cGUoY29uc3QgQXRvbVN0cmluZyYpOwogCiAgICAgUmVmPFNWR1JlY3Q+
IHZpZXdwb3J0KCkgY29uc3Q7CiAKQEAgLTkxLDcgKzkxLDcgQEAgcHVibGljOiAvLyBET00KICAg
ICBzdGF0aWMgUmVmPFNWR1RyYW5zZm9ybT4gY3JlYXRlU1ZHVHJhbnNmb3JtKCk7CiAgICAgc3Rh
dGljIFJlZjxTVkdUcmFuc2Zvcm0+IGNyZWF0ZVNWR1RyYW5zZm9ybUZyb21NYXRyaXgoU1ZHTWF0
cml4Jik7CiAKLSAgICBFbGVtZW50KiBnZXRFbGVtZW50QnlJZChjb25zdCBBdG9taWNTdHJpbmcm
KTsKKyAgICBFbGVtZW50KiBnZXRFbGVtZW50QnlJZChjb25zdCBBdG9tU3RyaW5nJik7CiAKIHB1
YmxpYzoKICAgICBzdGF0aWMgUmVmPFNWR1NWR0VsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiwgRG9jdW1lbnQmKTsKQEAgLTEzNCw3ICsxMzQsNyBAQCBwcml2YXRlOgogICAgIHVz
aW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHU1ZHRWxl
bWVudCwgU1ZHR3JhcGhpY3NFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBT
VkdGaXRUb1ZpZXdCb3g+OwogICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5
UmVnaXN0cnkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KICAg
ICAKLSAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBB
dG9taWNTdHJpbmcmKSBvdmVycmlkZTsKKyAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdmdB
dHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKICAgICBib29s
IHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGlzVmFs
aWQoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdT
VkdFbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmlkbAppbmRl
eCAzZGViMDVlYTE4NDY5YTM2MjI0N2NiYTYxOGNjODU4MTJmZGE4ZjYyLi40NGFhNTE5NmM2ZWM2
Mjc5YjAxZjU0NWM3ZjU1N2IzNzQ2MzQ4ZjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHU1ZHRWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1l
bnQuaWRsCkBAIC03NCw3ICs3NCw3IEBACiAgICAgW05ld09iamVjdF0gU1ZHVHJhbnNmb3JtIGNy
ZWF0ZVNWR1RyYW5zZm9ybSgpOwogICAgIFtOZXdPYmplY3RdIFNWR1RyYW5zZm9ybSBjcmVhdGVT
VkdUcmFuc2Zvcm1Gcm9tTWF0cml4KFNWR01hdHJpeCBtYXRyaXgpOwogCi0gICAgRWxlbWVudCBn
ZXRFbGVtZW50QnlJZChbUmVxdWlyZXNFeGlzdGluZ0F0b21pY1N0cmluZ10gRE9NU3RyaW5nIGVs
ZW1lbnRJZCk7CisgICAgRWxlbWVudCBnZXRFbGVtZW50QnlJZChbUmVxdWlyZXNFeGlzdGluZ0F0
b21TdHJpbmddIERPTVN0cmluZyBlbGVtZW50SWQpOwogfTsKIAogU1ZHU1ZHRWxlbWVudCBpbXBs
ZW1lbnRzIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
U2NyaXB0RWxlbWVudC5jcHAKaW5kZXggMWUwOTQ1NDI0N2VhMWFhNWU4OGZjNzVmNzkwNTIzYjkw
NmZiMzk0NS4uNmYzYTI5Yjk2ZTE5MDZkZDczMzZiNjQzMDdkNWRjNDIzN2I4NzQwYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmNwcApAQCAtNDUsNyArNDUsNyBAQCBSZWY8
U1ZHU2NyaXB0RWxlbWVudD4gU1ZHU2NyaXB0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvYwogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR1NjcmlwdEVs
ZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIGluc2VydGVkQnlQYXJzZXIsIGZhbHNlKSk7CiB9CiAK
LXZvaWQgU1ZHU2NyaXB0RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKK3ZvaWQgU1ZHU2NyaXB0RWxlbWVu
dDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0
cmluZyYgdmFsdWUpCiB7CiAgICAgU1ZHRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFs
dWUpOwogICAgIFNWR1VSSVJlZmVyZW5jZTo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmgKaW5kZXggZjE1ZjNiN2NmNmY5M2FmMTQ4
ZDUwMzJhMTBkZDJiMDE2N2FmYWJhZi4uMmJkNTdhNDIyNjBmNjY2NGQzMGU3OWM3MzQ0YmVjNjE2
M2VkZWJkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5oCkBAIC00Myw3ICs0
Myw3IEBAIHByaXZhdGU6CiAgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5
T3duZXJSZWdpc3RyeTxTVkdTY3JpcHRFbGVtZW50LCBTVkdFbGVtZW50LCBTVkdFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkLCBTVkdVUklSZWZlcmVuY2U+OwogICAgIGNvbnN0IFNWR1Byb3BlcnR5
UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3Bl
cnR5UmVnaXN0cnk7IH0KIAotICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIGZpbmFsOworICAgIHZvaWQgcGFyc2VBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmKSBmaW5hbDsKICAgICB2
b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGZpbmFsOwogCiAg
ICAgSW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQgaW5zZXJ0ZWRJbnRvQW5jZXN0b3IoSW5zZXJ0
aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1N0b3BFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdG9wRWxl
bWVudC5jcHAKaW5kZXggYmExZGFiMGZmMWQ4MzY3OWFkYjc5N2RmNTM2MDg1ODhhYzFkZDEwYi4u
ZTMxOTIzZDliYTM5ODFkMzNmYzI5Yzg4NzRmMzZkN2M5ZTE2MDc4MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHU3RvcEVsZW1lbnQuY3BwCkBAIC00OSw3ICs0OSw3IEBAIFJlZjxTVkdTdG9wRWxlbWVu
dD4gU1ZHU3RvcEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVuCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHU3RvcEVsZW1lbnQodGFnTmFtZSwg
ZG9jdW1lbnQpKTsKIH0KIAotdm9pZCBTVkdTdG9wRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKK3ZvaWQg
U1ZHU3RvcEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUs
IGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKQogewogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjpv
ZmZzZXRBdHRyKSB7CiAgICAgICAgIGlmICh2YWx1ZS5lbmRzV2l0aCgnJScpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHU3RvcEVsZW1lbnQuaAppbmRleCA4MTA0ZmJiZDdmNmNmY2RiNzNjNjBkMzcwM2Q0ZWU2
Njg3NDFhMzBhLi5lNjUxYzRhMjYyZjk3ODM0YmMyMzA2ODdlNjIxMjQzNTJmMDhiMTUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuaApAQCAtNDEsNyArNDEsNyBAQCBwcml2YXRlOgog
ICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZH
U3RvcEVsZW1lbnQsIFNWR0VsZW1lbnQ+OwogICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkm
IHByb3BlcnR5UmVnaXN0cnkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0
cnk7IH0KIAotICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNv
bnN0IEF0b21pY1N0cmluZyYpIGZpbmFsOworICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmKSBmaW5hbDsKICAgICB2b2lkIHN2Z0F0
dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGZpbmFsOwogCiAgICAgYm9vbCBp
c0dyYWRpZW50U3RvcCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1N0eWxlRWxlbWVudC5jcHAKaW5kZXggZDBjYTM5OTY1MWRhNmJhMDViN2Q4MjJjZDQ2
ZWU1YWE0YjE0ZWE2OS4uNDVkZTg3OTAxMThhNzBjNzA5NTU4ZTI2NWEzNTY4ZGE1YWI5ZWNjMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlRWxlbWVudC5jcHAKQEAgLTYyLDI2ICs2MiwyNiBA
QCB2b2lkIFNWR1N0eWxlRWxlbWVudDo6c2V0RGlzYWJsZWQoYm9vbCBzZXREaXNhYmxlZCkKICAg
ICAgICAgc3R5bGVTaGVldC0+c2V0RGlzYWJsZWQoc2V0RGlzYWJsZWQpOwogfQogCi1jb25zdCBB
dG9taWNTdHJpbmcmIFNWR1N0eWxlRWxlbWVudDo6dHlwZSgpIGNvbnN0Citjb25zdCBBdG9tU3Ry
aW5nJiBTVkdTdHlsZUVsZW1lbnQ6OnR5cGUoKSBjb25zdAogewotICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGRlZmF1bHRWYWx1ZSgidGV4dC9jc3MiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICBjb25zdCBBdG9taWNTdHJpbmcm
IG4gPSBnZXRBdHRyaWJ1dGUoU1ZHTmFtZXM6OnR5cGVBdHRyKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gZGVmYXVsdFZhbHVlKCJ0ZXh0L2NzcyIsIEF0b21T
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBuID0g
Z2V0QXR0cmlidXRlKFNWR05hbWVzOjp0eXBlQXR0cik7CiAgICAgcmV0dXJuIG4uaXNOdWxsKCkg
PyBkZWZhdWx0VmFsdWUuZ2V0KCkgOiBuOwogfQogCi12b2lkIFNWR1N0eWxlRWxlbWVudDo6c2V0
VHlwZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUpCit2b2lkIFNWR1N0eWxlRWxlbWVudDo6c2V0
VHlwZShjb25zdCBBdG9tU3RyaW5nJiB0eXBlKQogewogICAgIHNldEF0dHJpYnV0ZShTVkdOYW1l
czo6dHlwZUF0dHIsIHR5cGUpOwogfQogCi1jb25zdCBBdG9taWNTdHJpbmcmIFNWR1N0eWxlRWxl
bWVudDo6bWVkaWEoKSBjb25zdAorY29uc3QgQXRvbVN0cmluZyYgU1ZHU3R5bGVFbGVtZW50Ojpt
ZWRpYSgpIGNvbnN0CiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0
cmluZz4gZGVmYXVsdFZhbHVlKCJhbGwiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKTsKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIG4gPSBhdHRyaWJ1dGVXaXRob3V0U3luY2hy
b25pemF0aW9uKFNWR05hbWVzOjptZWRpYUF0dHIpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxjb25zdCBBdG9tU3RyaW5nPiBkZWZhdWx0VmFsdWUoImFsbCIsIEF0b21TdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKTsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBuID0gYXR0cmlidXRlV2l0
aG91dFN5bmNocm9uaXphdGlvbihTVkdOYW1lczo6bWVkaWFBdHRyKTsKICAgICByZXR1cm4gbi5p
c051bGwoKSA/IGRlZmF1bHRWYWx1ZS5nZXQoKSA6IG47CiB9CiAKLXZvaWQgU1ZHU3R5bGVFbGVt
ZW50OjpzZXRNZWRpYShjb25zdCBBdG9taWNTdHJpbmcmIG1lZGlhKQordm9pZCBTVkdTdHlsZUVs
ZW1lbnQ6OnNldE1lZGlhKGNvbnN0IEF0b21TdHJpbmcmIG1lZGlhKQogewogICAgIHNldEF0dHJp
YnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oU1ZHTmFtZXM6Om1lZGlhQXR0ciwgbWVkaWEpOwog
fQpAQCAtOTEsNyArOTEsNyBAQCBTdHJpbmcgU1ZHU3R5bGVFbGVtZW50Ojp0aXRsZSgpIGNvbnN0
CiAgICAgcmV0dXJuIGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oU1ZHTmFtZXM6OnRp
dGxlQXR0cik7CiB9CiAKLXZvaWQgU1ZHU3R5bGVFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQordm9pZCBT
VkdTdHlsZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUs
IGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKQogewogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjp0
aXRsZUF0dHIpIHsKICAgICAgICAgaWYgKHNoZWV0KCkgJiYgIWlzSW5TaGFkb3dUcmVlKCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHU3R5bGVFbGVtZW50LmgKaW5kZXggNDFhOTM3ZWQxOWU4NDllNTQwM2E0
MTc0ZjYzOTAzNDczNWZlMzQ2Mi4uMTcwMzk0Mzg3MDVkODc3ODg4MWFkM2Y0NzAyZTQ1ZTY0Mjc0
OThiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZUVsZW1lbnQuaApAQCAtMzcsMTYgKzM3LDE2
IEBAIHB1YmxpYzoKICAgICBib29sIGRpc2FibGVkKCkgY29uc3Q7CiAgICAgdm9pZCBzZXREaXNh
YmxlZChib29sKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRUeXBlKGNvbnN0IEF0b21pY1N0cmlu
ZyYpOworICAgIGNvbnN0IEF0b21TdHJpbmcmIHR5cGUoKSBjb25zdDsKKyAgICB2b2lkIHNldFR5
cGUoY29uc3QgQXRvbVN0cmluZyYpOwogCi0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBtZWRpYSgp
IGNvbnN0OwotICAgIHZvaWQgc2V0TWVkaWEoY29uc3QgQXRvbWljU3RyaW5nJik7CisgICAgY29u
c3QgQXRvbVN0cmluZyYgbWVkaWEoKSBjb25zdDsKKyAgICB2b2lkIHNldE1lZGlhKGNvbnN0IEF0
b21TdHJpbmcmKTsKIAogcHJpdmF0ZToKICAgICBTVkdTdHlsZUVsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIERvY3VtZW50JiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpOwogCi0gICAgdm9pZCBw
YXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikg
ZmluYWw7CisgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29u
c3QgQXRvbVN0cmluZyYpIGZpbmFsOwogICAgIEluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0IGlu
c2VydGVkSW50b0FuY2VzdG9yKEluc2VydGlvblR5cGUsIENvbnRhaW5lck5vZGUmKSBmaW5hbDsK
ICAgICB2b2lkIHJlbW92ZWRGcm9tQW5jZXN0b3IoUmVtb3ZhbFR5cGUsIENvbnRhaW5lck5vZGUm
KSBmaW5hbDsKICAgICB2b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYpIGZp
bmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N5bWJvbEVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N5bWJvbEVsZW1lbnQuY3BwCmluZGV4IDJlMzM5YTM2
YjE0ZmQ3ODUyMzkwZDcxMDMzZjcyN2IxYjNiNDZkOWMuLmM3Y2M0MTJiODBlOGQxOGQ4OWYzNGMx
NmY0MTZiMDk3MjJkMzdjMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTeW1i
b2xFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3ltYm9sRWxlbWVudC5j
cHAKQEAgLTQ0LDcgKzQ0LDcgQEAgUmVmPFNWR1N5bWJvbEVsZW1lbnQ+IFNWR1N5bWJvbEVsZW1l
bnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2MKICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBTVkdTeW1ib2xFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAK
LXZvaWQgU1ZHU3ltYm9sRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKK3ZvaWQgU1ZHU3ltYm9sRWxlbWVu
dDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0
cmluZyYgdmFsdWUpCiB7CiAgICAgU1ZHRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFs
dWUpOwogICAgIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OnBhcnNlQXR0cmlidXRlKG5h
bWUsIHZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTeW1ib2xFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3ltYm9sRWxlbWVudC5oCmluZGV4IDhjNGFm
ZGVkYzljMmJiMGZmYTJlZjBlY2YzODA2ZDNjM2Y0ODNiNzYuLjFmMGUzZTRkNTdhNGQzMjcxMWZj
ZDZhZmVmMWVhYjY3MTdlODViNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdT
eW1ib2xFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N5bWJvbEVsZW1lbnQu
aApAQCAtMzgsNyArMzgsNyBAQCBwcml2YXRlOgogICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkg
PSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHU3ltYm9sRWxlbWVudCwgU1ZHRWxlbWVudCwg
U1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgU1ZHRml0VG9WaWV3Qm94PjsKICAgICBjb25z
dCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CiAKLSAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKKyAgICB2
b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5n
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmll
ZE5hbWUmKSBvdmVycmlkZTsKICAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxl
bWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92
ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcAppbmRleCA4MjNmMWYw
MjM1MzJhMDYzODdlYTYxMzY1ZDA3OTdkZDViMDJjNTgxLi5hODYzOTZiODBhMzNlYzBlNjZlMGMw
MTA5ZDM0ZDM1MjM5OTQ2ZGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJl
ZkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAK
QEAgLTE3Miw3ICsxNzIsNyBAQCB2b2lkIFNWR1RSZWZFbGVtZW50OjpkZXRhY2hUYXJnZXQoKQog
ICAgICAgICBkb2N1bWVudCgpLmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS5hZGRQZW5kaW5nUmVzb3Vy
Y2UodGFyZ2V0LmlkZW50aWZpZXIsICp0aGlzKTsKIH0KIAotdm9pZCBTVkdUUmVmRWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3Ry
aW5nJiB2YWx1ZSkKK3ZvaWQgU1ZHVFJlZkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKQogewogICAgIFNWR1Rl
eHRQb3NpdGlvbmluZ0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKICAgICBT
VkdVUklSZWZlcmVuY2U6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1RSZWZFbGVtZW50LmgKaW5kZXggOGU4MTZmNTQ2OWJjZWM4YjlmNTMwODA0MDhhZTYzNDdh
NmMwNjEzYy4uMWJkMTNmOGE4NDI4MTI4MTg2NTM0ZjlhODRjOGQ0MTJjOTk1ZmY5NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmgKQEAgLTQyLDcgKzQyLDcgQEAgcHJpdmF0ZToKICAg
ICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR1RS
ZWZFbGVtZW50LCBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LCBTVkdVUklSZWZlcmVuY2U+Owog
ICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KIAotICAgIHZvaWQgcGFyc2VBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRl
OworICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0
b21TdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCiAgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+
IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9z
aXRpb24mKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXN0
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGVzdHMuY3BwCmluZGV4IDQ1NTIzMDQ0Zjg0
MDY2ZmUwMjJjMDNkMTU5NWU4ZjMyYTlmN2MwZDUuLjFhZjVkYWI1ZjQ0OTlhOGM2N2I1OTZmYmQ3
NTk5MWNjMTczOGZjNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXN0cy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rlc3RzLmNwcApAQCAtMTQ3LDcgKzE0Nyw3
IEBAIGJvb2wgU1ZHVGVzdHM6OmlzVmFsaWQoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQog
Ci12b2lkIFNWR1Rlc3RzOjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
aWJ1dGVOYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQordm9pZCBTVkdUZXN0czo6cGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgY29uc3QgQXRv
bVN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKGF0dHJpYnV0ZU5hbWUgPT0gcmVxdWlyZWRGZWF0
dXJlc0F0dHIpCiAgICAgICAgIG1fcmVxdWlyZWRGZWF0dXJlcy0+cmVzZXQodmFsdWUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rlc3RzLmggYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVGVzdHMuaAppbmRleCA0NDkyNzBkOWY5ZDBmODk3ZGRmZjllN2MxNWNjZWIwODA2NDdl
MTc0Li5hOWMyYWNlMGEzMGM0NTBlOWQ5ZDI4MTkxMTUyOTc2YzUyMmE4YzViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGVzdHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVGVzdHMuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAKICAgICB1c2luZyBQcm9wZXJ0
eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR1Rlc3RzPjsKIAotICAgIHZv
aWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmlu
ZyYpOworICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0
IEF0b21TdHJpbmcmKTsKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlm
aWVkTmFtZSYpOwogCiAgICAgc3RhdGljIHZvaWQgYWRkU3VwcG9ydGVkQXR0cmlidXRlcyhIYXNo
U2V0PFF1YWxpZmllZE5hbWU+Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VGV4dENvbnRlbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVu
dEVsZW1lbnQuY3BwCmluZGV4IDRlMTMxNmJkY2UzYmMwY2U0MmZhMjIyMDRmMzAxMWIzMjRlMjA0
ZTAuLjE4MjBiM2NjZDJlNTI2YzkyMTQzMWY0ZTQ3ZjYxMWM1OTIzZmYyYTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwCkBAIC0xNDgsNyArMTQ4LDcg
QEAgYm9vbCBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OmlzUHJlc2VudGF0aW9uQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGMKICAgICByZXR1cm4gU1ZHR3JhcGhpY3NFbGVtZW50
Ojppc1ByZXNlbnRhdGlvbkF0dHJpYnV0ZShuYW1lKTsKIH0KIAotdm9pZCBTVkdUZXh0Q29udGVu
dEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlLCBNdXRhYmxlU3R5bGVQ
cm9wZXJ0aWVzJiBzdHlsZSkKK3ZvaWQgU1ZHVGV4dENvbnRlbnRFbGVtZW50Ojpjb2xsZWN0U3R5
bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29u
c3QgQXRvbVN0cmluZyYgdmFsdWUsIE11dGFibGVTdHlsZVByb3BlcnRpZXMmIHN0eWxlKQogewog
ICAgIGlmIChuYW1lLm1hdGNoZXMoWE1MTmFtZXM6OnNwYWNlQXR0cikpIHsKICAgICAgICAgaWYg
KHZhbHVlID09ICJwcmVzZXJ2ZSIpCkBAIC0xNjEsNyArMTYxLDcgQEAgdm9pZCBTVkdUZXh0Q29u
dGVudEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWQKICAgICBTVkdHcmFwaGljc0VsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvclByZXNlbnRh
dGlvbkF0dHJpYnV0ZShuYW1lLCB2YWx1ZSwgc3R5bGUpOwogfQogCi12b2lkIFNWR1RleHRDb250
ZW50RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29u
c3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKK3ZvaWQgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2
YWx1ZSkKIHsKICAgICBTVkdQYXJzaW5nRXJyb3IgcGFyc2VFcnJvciA9IE5vRXJyb3I7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuaAppbmRleCAwZTZkYTVjNjc3
ODVjZjQxNjU3NDM0YWEyYjk1YzZmYzE3ZTBmMGRjLi41OGE3ZDM3NzE0ODdiZWQzZTY3MDkzMGI5
NWM2ZmZhOGI1NjFiNWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENv
bnRlbnRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxl
bWVudC5oCkBAIC05Nyw5ICs5Nyw5IEBAIHByb3RlY3RlZDoKIAogICAgIGJvb2wgaXNWYWxpZCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFNWR1Rlc3RzOjppc1ZhbGlkKCk7IH0KIAotICAgIHZv
aWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmlu
ZyYpIG92ZXJyaWRlOworICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIGNvbnN0IEF0b21TdHJpbmcmKSBvdmVycmlkZTsKICAgICBib29sIGlzUHJlc2VudGF0aW9u
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdCBvdmVycmlkZTsKLSAgICB2b2lk
IGNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiwgY29uc3QgQXRvbWljU3RyaW5nJiwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYpIG92ZXJyaWRl
OworICAgIHZvaWQgY29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5nJiwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYp
IG92ZXJyaWRlOwogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWRO
YW1lJikgb3ZlcnJpZGU7CiAKICAgICBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25z
dCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHAKaW5k
ZXggZjIwYzY3YmRlYWU0MTc3YzRiMzg1NDY5MmVkNDg1NDhmMjEyN2VlMS4uNzZmYmJhNzkyNmZj
ZDIwMTkwZWZlMmY3YzE1ZWJmN2JkMTc4ZjI4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rl
eHRQYXRoRWxlbWVudC5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBTVkdUZXh0UGF0aEVsZW1l
bnQ6OmNsZWFyUmVzb3VyY2VSZWZlcmVuY2VzKCkKICAgICBkb2N1bWVudCgpLmFjY2Vzc1NWR0V4
dGVuc2lvbnMoKS5yZW1vdmVBbGxUYXJnZXRSZWZlcmVuY2VzRm9yRWxlbWVudCgqdGhpcyk7CiB9
CiAKLXZvaWQgU1ZHVGV4dFBhdGhFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQordm9pZCBTVkdUZXh0UGF0
aEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0
IEF0b21TdHJpbmcmIHZhbHVlKQogewogICAgIFNWR1BhcnNpbmdFcnJvciBwYXJzZUVycm9yID0g
Tm9FcnJvcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5oCmluZGV4IDQz
NTM4N2JmYWY1N2JlNDM3ZjlkYTI1ZWJhNTY5N2M3N2ZiYTdjOWQuLjU2NzdmNWJlYjIzN2ZjMzgy
YjRjMGQyZWJiYThkYmEyZTRhOWQyODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdUZXh0UGF0aEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhF
bGVtZW50LmgKQEAgLTEyOSw3ICsxMjksNyBAQCBwcml2YXRlOgogICAgIHVzaW5nIFByb3BlcnR5
UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHVGV4dFBhdGhFbGVtZW50LCBT
VkdUZXh0Q29udGVudEVsZW1lbnQsIFNWR1VSSVJlZmVyZW5jZT47CiAgICAgY29uc3QgU1ZHUHJv
cGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
cHJvcGVydHlSZWdpc3RyeTsgfQogCi0gICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgdm9pZCBwYXJz
ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbVN0cmluZyYpIG92ZXJy
aWRlOwogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikg
b3ZlcnJpZGU7CiAKICAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJl
bmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQb3NpdGlvbmluZ0VsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuY3Bw
CmluZGV4IGE2NjQyYTAxNGNlNzEwN2EwZDlmYzQ0ZTFkMmQyNzZiNjk1ZmExYWYuLjI0ODhjYzM2
NDk5ZjRhOTQ5NGNmNDY2MWRiMWEzMWU0NTRlZTY0YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgU1ZH
VGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6U1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW0KICAgICB9KTsKIH0KIAotdm9pZCBTVkdUZXh0UG9zaXRpb25p
bmdFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25z
dCBBdG9taWNTdHJpbmcmIHZhbHVlKQordm9pZCBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50Ojpw
YXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5n
JiB2YWx1ZSkKIHsKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6eEF0dHIpIHsKICAgICAgICAg
bV94LT5iYXNlVmFsKCktPnBhcnNlKHZhbHVlKTsKQEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBTVkdU
ZXh0UG9zaXRpb25pbmdFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBuYW1lLCBjb25zdAogICAgIFNWR1RleHRDb250ZW50RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUo
bmFtZSwgdmFsdWUpOwogfQogCi12b2lkIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OmNvbGxl
Y3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1l
LCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlLCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJiBzdHls
ZSkKK3ZvaWQgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yUHJlc2Vu
dGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJp
bmcmIHZhbHVlLCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJiBzdHlsZSkKIHsKICAgICBpZiAobmFt
ZSA9PSBTVkdOYW1lczo6eEF0dHIgfHwgbmFtZSA9PSBTVkdOYW1lczo6eUF0dHIpCiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25p
bmdFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVu
dC5oCmluZGV4IGE0ODYyZWM0NzYyOTY1OTk3NDMwZmE4NGQ2OGQ5NzE5YjM0NzY1YmEuLjBlNzEz
NGMxMzgzNTdjNmNkYjNkYjU3YzFkNjI0MmYzMTMxN2Y5NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuaApAQCAtNDcsMTIgKzQ3LDEyIEBAIHB1
YmxpYzoKIHByb3RlY3RlZDoKICAgICBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCi0gICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbVN0cmluZyYp
IG92ZXJyaWRlOwogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWRO
YW1lJikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgYm9vbCBpc1ByZXNlbnRhdGlvbkF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3QgZmluYWw7Ci0gICAgdm9pZCBjb2xsZWN0
U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0
IEF0b21pY1N0cmluZyYsIE11dGFibGVTdHlsZVByb3BlcnRpZXMmKSBmaW5hbDsKKyAgICB2b2lk
IGNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiwgY29uc3QgQXRvbVN0cmluZyYsIE11dGFibGVTdHlsZVByb3BlcnRpZXMmKSBmaW5hbDsKIAog
ICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1VSSVJlZmVyZW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVVJJUmVmZXJlbmNlLmNwcAppbmRleCA0YzBlMjY2ZTA0MmViMjViZjY4YWRjZjgxNjEyYzdh
OTNjMDNhNzA0Li41M2RhNTljN2FiYzQ0NmFjM2ZkNmJiY2ZjYmEyNTUxYjFkMTc4YzBkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVVJJUmVmZXJlbmNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVVJJUmVmZXJlbmNlLmNwcApAQCAtNDUsNyArNDUsNyBAQCBib29s
IFNWR1VSSVJlZmVyZW5jZTo6aXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyaWJ1dGVOYW1lKQogICAgIHJldHVybiBQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmli
dXRlKGF0dHJpYnV0ZU5hbWUpOwogfQogCi12b2lkIFNWR1VSSVJlZmVyZW5jZTo6cGFyc2VBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1
ZSkKK3ZvaWQgU1ZHVVJJUmVmZXJlbmNlOjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAoaXNLbm93bkF0
dHJpYnV0ZShuYW1lKSkKICAgICAgICAgbV9ocmVmLT5zZXRCYXNlVmFsSW50ZXJuYWwodmFsdWUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VSSVJlZmVyZW5jZS5oIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1VSSVJlZmVyZW5jZS5oCmluZGV4IDIwMWI2YzcxYmVkNzEzOWE5
YzZlMmVkMDBkNjJiMmRmNDFmNmQ3NTAuLjBmZDEwNGZlNGU0M2FjOTdlOTg2MzQ3OTdkMDQxNDEz
NzE4NGY0MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVUklSZWZlcmVuY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVVJJUmVmZXJlbmNlLmgKQEAgLTM0LDcgKzM0
LDcgQEAgY2xhc3MgU1ZHVVJJUmVmZXJlbmNlIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5TVkdV
UklSZWZlcmVuY2UoKSA9IGRlZmF1bHQ7CiAKLSAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKTsKKyAgICB2b2lkIHBhcnNlQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5nJik7CiAKICAgICBz
dGF0aWMgU3RyaW5nIGZyYWdtZW50SWRlbnRpZmllckZyb21JUklTdHJpbmcoY29uc3QgU3RyaW5n
JiwgY29uc3QgRG9jdW1lbnQmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1VzZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCmlu
ZGV4IGUwOGFlNWE0YTlhOGY5MmViMDEwM2I0ZDk2NTJjNDBiYmExNTkzMjEuLjlhNzI5ODQyZWQy
ZDliNjY2OTkxMDBlYjc1ZGQzMThiNTgyYWQ5ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdVc2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxl
bWVudC5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgU1ZHVXNlRWxlbWVudDo6flNWR1VzZUVsZW1lbnQo
KQogICAgICAgICBtX2V4dGVybmFsRG9jdW1lbnQtPnJlbW92ZUNsaWVudCgqdGhpcyk7CiB9CiAK
LXZvaWQgU1ZHVXNlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
bmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKK3ZvaWQgU1ZHVXNlRWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYg
dmFsdWUpCiB7CiAgICAgU1ZHUGFyc2luZ0Vycm9yIHBhcnNlRXJyb3IgPSBOb0Vycm9yOwogCkBA
IC0xNDQsMTQgKzE0NCwxNCBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6OnRyYW5zZmVyU2l6ZUF0dHJp
YnV0ZXNUb1RhcmdldENsb25lKFNWR0VsZW1lbnQmIHNoYWRvd0VsZW1lbgogICAgICAgICAvLyBJ
ZiBhdHRyaWJ1dGVzIHdpZHRoIGFuZC9vciBoZWlnaHQgYXJlIHByb3ZpZGVkIG9uIHRoZSAndXNl
JyBlbGVtZW50LCB0aGVuIHRoZXNlIGF0dHJpYnV0ZXMKICAgICAgICAgLy8gd2lsbCBiZSB0cmFu
c2ZlcnJlZCB0byB0aGUgZ2VuZXJhdGVkICdzdmcnLiBJZiBhdHRyaWJ1dGVzIHdpZHRoIGFuZC9v
ciBoZWlnaHQgYXJlIG5vdCBzcGVjaWZpZWQsCiAgICAgICAgIC8vIHRoZSBnZW5lcmF0ZWQgJ3N2
ZycgZWxlbWVudCB3aWxsIHVzZSB2YWx1ZXMgb2YgMTAwJSBmb3IgdGhlc2UgYXR0cmlidXRlcy4K
LSAgICAgICAgc2hhZG93RWxlbWVudC5zZXRBdHRyaWJ1dGUoU1ZHTmFtZXM6OndpZHRoQXR0ciwg
d2lkdGgoKS52YWx1ZUluU3BlY2lmaWVkVW5pdHMoKSA/IEF0b21pY1N0cmluZyh3aWR0aCgpLnZh
bHVlQXNTdHJpbmcoKSkgOiAiMTAwJSIpOwotICAgICAgICBzaGFkb3dFbGVtZW50LnNldEF0dHJp
YnV0ZShTVkdOYW1lczo6aGVpZ2h0QXR0ciwgaGVpZ2h0KCkudmFsdWVJblNwZWNpZmllZFVuaXRz
KCkgPyBBdG9taWNTdHJpbmcoaGVpZ2h0KCkudmFsdWVBc1N0cmluZygpKSA6ICIxMDAlIik7Cisg
ICAgICAgIHNoYWRvd0VsZW1lbnQuc2V0QXR0cmlidXRlKFNWR05hbWVzOjp3aWR0aEF0dHIsIHdp
ZHRoKCkudmFsdWVJblNwZWNpZmllZFVuaXRzKCkgPyBBdG9tU3RyaW5nKHdpZHRoKCkudmFsdWVB
c1N0cmluZygpKSA6ICIxMDAlIik7CisgICAgICAgIHNoYWRvd0VsZW1lbnQuc2V0QXR0cmlidXRl
KFNWR05hbWVzOjpoZWlnaHRBdHRyLCBoZWlnaHQoKS52YWx1ZUluU3BlY2lmaWVkVW5pdHMoKSA/
IEF0b21TdHJpbmcoaGVpZ2h0KCkudmFsdWVBc1N0cmluZygpKSA6ICIxMDAlIik7CiAgICAgfSBl
bHNlIGlmIChpczxTVkdTVkdFbGVtZW50PihzaGFkb3dFbGVtZW50KSkgewogICAgICAgICAvLyBT
cGVjICg8dXNlPiBvbiA8c3ZnPik6IElmIGF0dHJpYnV0ZXMgd2lkdGggYW5kL29yIGhlaWdodCBh
cmUgcHJvdmlkZWQgb24gdGhlICd1c2UnIGVsZW1lbnQsIHRoZW4gdGhlc2UKICAgICAgICAgLy8g
dmFsdWVzIHdpbGwgb3ZlcnJpZGUgdGhlIGNvcnJlc3BvbmRpbmcgYXR0cmlidXRlcyBvbiB0aGUg
J3N2ZycgaW4gdGhlIGdlbmVyYXRlZCB0cmVlLgogICAgICAgICBhdXRvIGNvcnJlc3BvbmRpbmdF
bGVtZW50ID0gbWFrZVJlZlB0cihzaGFkb3dFbGVtZW50LmNvcnJlc3BvbmRpbmdFbGVtZW50KCkp
OwotICAgICAgICBzaGFkb3dFbGVtZW50LnNldEF0dHJpYnV0ZShTVkdOYW1lczo6d2lkdGhBdHRy
LCB3aWR0aCgpLnZhbHVlSW5TcGVjaWZpZWRVbml0cygpID8gQXRvbWljU3RyaW5nKHdpZHRoKCku
dmFsdWVBc1N0cmluZygpKSA6IChjb3JyZXNwb25kaW5nRWxlbWVudCA/IGNvcnJlc3BvbmRpbmdF
bGVtZW50LT5nZXRBdHRyaWJ1dGUoU1ZHTmFtZXM6OndpZHRoQXR0cikgOiBudWxsQXRvbSgpKSk7
Ci0gICAgICAgIHNoYWRvd0VsZW1lbnQuc2V0QXR0cmlidXRlKFNWR05hbWVzOjpoZWlnaHRBdHRy
LCBoZWlnaHQoKS52YWx1ZUluU3BlY2lmaWVkVW5pdHMoKSA/IEF0b21pY1N0cmluZyhoZWlnaHQo
KS52YWx1ZUFzU3RyaW5nKCkpIDogKGNvcnJlc3BvbmRpbmdFbGVtZW50ID8gY29ycmVzcG9uZGlu
Z0VsZW1lbnQtPmdldEF0dHJpYnV0ZShTVkdOYW1lczo6aGVpZ2h0QXR0cikgOiBudWxsQXRvbSgp
KSk7CisgICAgICAgIHNoYWRvd0VsZW1lbnQuc2V0QXR0cmlidXRlKFNWR05hbWVzOjp3aWR0aEF0
dHIsIHdpZHRoKCkudmFsdWVJblNwZWNpZmllZFVuaXRzKCkgPyBBdG9tU3RyaW5nKHdpZHRoKCku
dmFsdWVBc1N0cmluZygpKSA6IChjb3JyZXNwb25kaW5nRWxlbWVudCA/IGNvcnJlc3BvbmRpbmdF
bGVtZW50LT5nZXRBdHRyaWJ1dGUoU1ZHTmFtZXM6OndpZHRoQXR0cikgOiBudWxsQXRvbSgpKSk7
CisgICAgICAgIHNoYWRvd0VsZW1lbnQuc2V0QXR0cmlidXRlKFNWR05hbWVzOjpoZWlnaHRBdHRy
LCBoZWlnaHQoKS52YWx1ZUluU3BlY2lmaWVkVW5pdHMoKSA/IEF0b21TdHJpbmcoaGVpZ2h0KCku
dmFsdWVBc1N0cmluZygpKSA6IChjb3JyZXNwb25kaW5nRWxlbWVudCA/IGNvcnJlc3BvbmRpbmdF
bGVtZW50LT5nZXRBdHRyaWJ1dGUoU1ZHTmFtZXM6OmhlaWdodEF0dHIpIDogbnVsbEF0b20oKSkp
OwogICAgIH0KIH0KIApAQCAtMTg0LDE0ICsxODQsMTQgQEAgdm9pZCBTVkdVc2VFbGVtZW50Ojpz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgIFNW
R0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUp
OwogfQogCi1zdGF0aWMgSGFzaFNldDxBdG9taWNTdHJpbmc+IGNyZWF0ZUFsbG93ZWRFbGVtZW50
U2V0KCkKK3N0YXRpYyBIYXNoU2V0PEF0b21TdHJpbmc+IGNyZWF0ZUFsbG93ZWRFbGVtZW50U2V0
KCkKIHsKICAgICAvLyBTcGVjOiAiQW55ICdzdmcnLCAnc3ltYm9sJywgJ2cnLCBncmFwaGljcyBl
bGVtZW50IG9yIG90aGVyICd1c2UnIGlzIHBvdGVudGlhbGx5IGEgdGVtcGxhdGUgb2JqZWN0IHRo
YXQgY2FuIGJlIHJlLXVzZWQKICAgICAvLyAoaS5lLiwgImluc3RhbmNlZCIpIGluIHRoZSBTVkcg
ZG9jdW1lbnQgdmlhIGEgJ3VzZScgZWxlbWVudC4iCiAgICAgLy8gIkdyYXBoaWNzIEVsZW1lbnQi
IGlzIGRlZmluZWQgYXMgJ2NpcmNsZScsICdlbGxpcHNlJywgJ2ltYWdlJywgJ2xpbmUnLCAncGF0
aCcsICdwb2x5Z29uJywgJ3BvbHlsaW5lJywgJ3JlY3QnLCAndGV4dCcKICAgICAvLyBFeGNsdWRl
ZCBhcmUgYW55dGhpbmcgdGhhdCBpcyB1c2VkIGJ5IHJlZmVyZW5jZSBvciB0aGF0IG9ubHkgbWFr
ZSBzZW5zZSB0byBhcHBlYXIgb25jZSBpbiBhIGRvY3VtZW50LgogICAgIHVzaW5nIG5hbWVzcGFj
ZSBTVkdOYW1lczsKLSAgICBIYXNoU2V0PEF0b21pY1N0cmluZz4gc2V0OworICAgIEhhc2hTZXQ8
QXRvbVN0cmluZz4gc2V0OwogICAgIGZvciAoYXV0byYgdGFnIDogeyBhVGFnLmdldCgpLCBjaXJj
bGVUYWcuZ2V0KCksIGRlc2NUYWcuZ2V0KCksIGVsbGlwc2VUYWcuZ2V0KCksIGdUYWcuZ2V0KCks
IGltYWdlVGFnLmdldCgpLCBsaW5lVGFnLmdldCgpLCBtZXRhZGF0YVRhZy5nZXQoKSwgcGF0aFRh
Zy5nZXQoKSwgcG9seWdvblRhZy5nZXQoKSwgcG9seWxpbmVUYWcuZ2V0KCksIHJlY3RUYWcuZ2V0
KCksIHN2Z1RhZy5nZXQoKSwgc3dpdGNoVGFnLmdldCgpLCBzeW1ib2xUYWcuZ2V0KCksIHRleHRU
YWcuZ2V0KCksIHRleHRQYXRoVGFnLmdldCgpLCB0aXRsZVRhZy5nZXQoKSwgdHJlZlRhZy5nZXQo
KSwgdHNwYW5UYWcuZ2V0KCksIHVzZVRhZy5nZXQoKSB9KQogICAgICAgICBzZXQuYWRkKHRhZy5s
b2NhbE5hbWUoKSk7CiAgICAgcmV0dXJuIHNldDsKQEAgLTE5OSw3ICsxOTksNyBAQCBzdGF0aWMg
SGFzaFNldDxBdG9taWNTdHJpbmc+IGNyZWF0ZUFsbG93ZWRFbGVtZW50U2V0KCkKIAogc3RhdGlj
IGlubGluZSBib29sIGlzRGlzYWxsb3dlZEVsZW1lbnQoY29uc3QgU1ZHRWxlbWVudCYgZWxlbWVu
dCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxBdG9taWNTdHJpbmc+PiBz
ZXQgPSBjcmVhdGVBbGxvd2VkRWxlbWVudFNldCgpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxIYXNoU2V0PEF0b21TdHJpbmc+PiBzZXQgPSBjcmVhdGVBbGxvd2VkRWxlbWVudFNldCgpOwog
ICAgIHJldHVybiAhc2V0LmdldCgpLmNvbnRhaW5zKGVsZW1lbnQubG9jYWxOYW1lKCkpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuaAppbmRleCAwMzkwODFkMTY2ZWFkYTdiNTIwMGI2
MDRiNzBlMzljNGZlYWExYmRiLi4xZjUyYmMxZGNmMGQyMTkyMzA1YTY1YWY4MDViZTZkMzFkMDcw
Y2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmgKQEAgLTY2LDcgKzY2LDcgQEAgcHJp
dmF0ZToKICAgICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lz
dHJ5PFNWR1VzZUVsZW1lbnQsIFNWR0dyYXBoaWNzRWxlbWVudCwgU1ZHRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCwgU1ZHVVJJUmVmZXJlbmNlPjsKICAgICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lz
dHJ5JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wcm9wZXJ0eVJl
Z2lzdHJ5OyB9CiAKLSAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKKyAgICB2b2lkIHBhcnNlQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsK
IAogICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVu
ZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1ZpZXdFbGVtZW50LmNwcAppbmRleCAzMzk2YzZlOTgyMzZiNjRlODY5NWZmMDQx
OWU4MDI2OTU3N2I0NzNhLi4yNzMzODJjZTQwZjY4NmI4MGUzNmU5MzVhYmU2NTRiMmYyOWFjODcy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3RWxlbWVudC5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAg
UmVmPFNWR1ZpZXdFbGVtZW50PiBTVkdWaWV3RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW4KICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdWaWV3
RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCi12b2lkIFNWR1ZpZXdFbGVtZW50Ojpw
YXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJp
bmcmIHZhbHVlKQordm9pZCBTVkdWaWV3RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKG5h
bWUgPT0gU1ZHTmFtZXM6OnZpZXdUYXJnZXRBdHRyKSB7CiAgICAgICAgIG1fdmlld1RhcmdldC0+
cmVzZXQodmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1lbnQuaAppbmRleCBiMGVlZjE5
ZDdjNDk1MDUxODc4YTg4MTVhZTQ2MmRhOTUwODRlMDdjLi41MzhmODY0NDI0MzU5MWEwNDU3N2Mx
NTQ5NDQxNmY2MGJlMDdjNzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmll
d0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1lbnQuaApAQCAt
NDYsNyArNDYsNyBAQCBwcml2YXRlOgogICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHBy
b3BlcnR5UmVnaXN0cnkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7
IH0KIAogICAgIC8vIEZJWE1FKHdlYmtpdC5vcmcvYi8xOTY1NTQpOiBzdmdBdHRyaWJ1dGVDaGFu
Z2VkIG1pc3NpbmcuCi0gICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiwgY29uc3QgQXRvbWljU3RyaW5nJikgZmluYWw7CisgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbVN0cmluZyYpIGZpbmFsOwogCiAgICAgYm9v
bCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikgZmluYWwgeyByZXR1cm4gZmFs
c2U7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1pvb21BbmRQYW4uY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1pvb21BbmRQYW4uY3BwCmluZGV4IDE0ZDhmY2I3N2Vh
NTgwMWQ2NTEwOWY0NTNkYTI1MDM2MjMxMTI3NmQuLjc1YTgzMWMzYzg2YmI1MjFiNTljYzFiZGFh
M2M2NzQzOTYxODdmODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdab29tQW5k
UGFuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHWm9vbUFuZFBhbi5jcHAKQEAgLTQx
LDcgKzQxLDcgQEAgYm9vbCBTVkdab29tQW5kUGFuOjpwYXJzZVpvb21BbmRQYW4oY29uc3QgVUNo
YXIqJiBzdGFydCwgY29uc3QgVUNoYXIqIGVuZCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZv
aWQgU1ZHWm9vbUFuZFBhbjo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
cmlidXRlTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKK3ZvaWQgU1ZHWm9vbUFuZFBh
bjo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgY29u
c3QgQXRvbVN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKGF0dHJpYnV0ZU5hbWUgIT0gU1ZHTmFt
ZXM6Onpvb21BbmRQYW5BdHRyKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHWm9vbUFuZFBhbi5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1pvb21B
bmRQYW4uaAppbmRleCA5ZmJjZmIwOWFjM2FkMDE2YjhmZTJkMjkyZGFiMjM1NjJhNTI1NGE3Li4x
OTA0MTk0OTk5ZWIxY2RiZDA3OWY0ZTE4MzNjMzFmYmIyYzdjNWEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHWm9vbUFuZFBhbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
Vkdab29tQW5kUGFuLmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgIEV4Y2VwdGlvbk9y
PHZvaWQ+IHNldFpvb21BbmRQYW4odW5zaWduZWQpIHsgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vTW9k
aWZpY2F0aW9uQWxsb3dlZEVycm9yIH07IH0KICAgICB2b2lkIHJlc2V0KCkgeyBtX3pvb21BbmRQ
YW4gPSBTVkdQcm9wZXJ0eVRyYWl0czxTVkdab29tQW5kUGFuVHlwZT46OmluaXRpYWxWYWx1ZSgp
OyB9CiAKLSAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25z
dCBBdG9taWNTdHJpbmcmKTsKKyAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5nJik7CiAKIHByb3RlY3RlZDoKICAgICBTVkdab29tQW5k
UGFuKCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlv
bi9TVkdTTUlMRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NN
SUxFbGVtZW50LmNwcAppbmRleCA3NGQyYjIwOWEwZmZhZjhiYWIyZTZkYjk0NTk2NGRjOTc4MTc2
NjUzLi44MWQxN2Y0MDlhNzcyMTQ4M2UwMzAwODNmMWVmOTkzMjBlZTJkYzY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcApAQCAtMjE5LDcg
KzIxOSw3IEBAIGlubGluZSBRdWFsaWZpZWROYW1lIFNWR1NNSUxFbGVtZW50Ojpjb25zdHJ1Y3RB
dHRyaWJ1dGVOYW1lKCkgY29uc3QKICAgICBpZiAocGFyc2VSZXN1bHQuaGFzRXhjZXB0aW9uKCkp
CiAgICAgICAgIHJldHVybiBhbnlRTmFtZSgpOwogCi0gICAgQXRvbWljU3RyaW5nIHByZWZpeCwg
bG9jYWxOYW1lOworICAgIEF0b21TdHJpbmcgcHJlZml4LCBsb2NhbE5hbWU7CiAgICAgc3RkOjp0
aWUocHJlZml4LCBsb2NhbE5hbWUpID0gcGFyc2VSZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCk7
CiAKICAgICBpZiAocHJlZml4LmlzTnVsbCgpKQpAQCAtMzQxLDcgKzM0MSw3IEBAIFNNSUxUaW1l
IFNWR1NNSUxFbGVtZW50OjpwYXJzZUNsb2NrVmFsdWUoY29uc3QgU3RyaW5nJiBkYXRhKQogICAg
IAogICAgIFN0cmluZyBwYXJzZSA9IGRhdGEuc3RyaXBXaGl0ZVNwYWNlKCk7CiAKLSAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBpbmRlZmluaXRlVmFsdWUoImlu
ZGVmaW5pdGUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gaW5kZWZpbml0ZVZhbHVlKCJpbmRl
ZmluaXRlIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIGlmIChwYXJz
ZSA9PSBpbmRlZmluaXRlVmFsdWUpCiAgICAgICAgIHJldHVybiBTTUlMVGltZTo6aW5kZWZpbml0
ZSgpOwogCkBAIC00NzcsNyArNDc3LDcgQEAgYm9vbCBTVkdTTUlMRWxlbWVudDo6aXNTdXBwb3J0
ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgcmV0dXJuIHN1
cHBvcnRlZEF0dHJpYnV0ZXMuZ2V0KCkuY29udGFpbnM8U1ZHQXR0cmlidXRlSGFzaFRyYW5zbGF0
b3I+KGF0dHJOYW1lKTsKIH0KIAotdm9pZCBTVkdTTUlMRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKK3Zv
aWQgU1ZHU01JTEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5h
bWUsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKQogewogICAgIGlmIChuYW1lID09IFNWR05hbWVz
OjpiZWdpbkF0dHIpIHsKICAgICAgICAgaWYgKCFtX2NvbmRpdGlvbnMuaXNFbXB0eSgpKSB7CkBA
IC02NTMsOSArNjUzLDkgQEAgYm9vbCBTVkdTTUlMRWxlbWVudDo6aXNGcm96ZW4oKSBjb25zdAog
ICAgIAogU1ZHU01JTEVsZW1lbnQ6OlJlc3RhcnQgU1ZHU01JTEVsZW1lbnQ6OnJlc3RhcnQoKSBj
b25zdAogeyAgICAKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5n
PiBuZXZlcigibmV2ZXIiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiB3aGVuTm90QWN0aXZl
KCJ3aGVuTm90QWN0aXZlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0g
ICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSA9IGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6
YXRpb24oU1ZHTmFtZXM6OnJlc3RhcnRBdHRyKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
Y29uc3QgQXRvbVN0cmluZz4gbmV2ZXIoIm5ldmVyIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB3
aGVuTm90QWN0aXZlKCJ3aGVuTm90QWN0aXZlIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpOworICAgIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlID0gYXR0cmlidXRlV2l0aG91dFN5
bmNocm9uaXphdGlvbihTVkdOYW1lczo6cmVzdGFydEF0dHIpOwogICAgIGlmICh2YWx1ZSA9PSBu
ZXZlcikKICAgICAgICAgcmV0dXJuIFJlc3RhcnROZXZlcjsKICAgICBpZiAodmFsdWUgPT0gd2hl
bk5vdEFjdGl2ZSkKQEAgLTY2NSw4ICs2NjUsOCBAQCBTVkdTTUlMRWxlbWVudDo6UmVzdGFydCBT
VkdTTUlMRWxlbWVudDo6cmVzdGFydCgpIGNvbnN0CiAgICAgCiBTVkdTTUlMRWxlbWVudDo6Rmls
bE1vZGUgU1ZHU01JTEVsZW1lbnQ6OmZpbGwoKSBjb25zdAogeyAgIAotICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGZyZWV6ZSgiZnJlZXplIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1
ZSA9IGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oU1ZHTmFtZXM6OmZpbGxBdHRyKTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gZnJlZXplKCJmcmVl
emUiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgY29uc3QgQXRvbVN0
cmluZyYgdmFsdWUgPSBhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFNWR05hbWVzOjpm
aWxsQXR0cik7CiAgICAgcmV0dXJuIHZhbHVlID09IGZyZWV6ZSA/IEZpbGxGcmVlemUgOiBGaWxs
UmVtb3ZlOwogfQogICAgIApAQCAtNjc0LDcgKzY3NCw3IEBAIFNNSUxUaW1lIFNWR1NNSUxFbGVt
ZW50OjpkdXIoKSBjb25zdAogeyAgIAogICAgIGlmIChtX2NhY2hlZER1ciAhPSBpbnZhbGlkQ2Fj
aGVkVGltZSkKICAgICAgICAgcmV0dXJuIG1fY2FjaGVkRHVyOwotICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgdmFsdWUgPSBhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFNWR05hbWVzOjpk
dXJBdHRyKTsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSA9IGF0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24oU1ZHTmFtZXM6OmR1ckF0dHIpOwogICAgIFNNSUxUaW1lIGNsb2NrVmFs
dWUgPSBwYXJzZUNsb2NrVmFsdWUodmFsdWUpOwogICAgIHJldHVybiBtX2NhY2hlZER1ciA9IGNs
b2NrVmFsdWUgPD0gMCA/IFNNSUxUaW1lOjp1bnJlc29sdmVkKCkgOiBjbG9ja1ZhbHVlOwogfQpA
QCAtNjgzLDcgKzY4Myw3IEBAIFNNSUxUaW1lIFNWR1NNSUxFbGVtZW50OjpyZXBlYXREdXIoKSBj
b25zdAogeyAgICAKICAgICBpZiAobV9jYWNoZWRSZXBlYXREdXIgIT0gaW52YWxpZENhY2hlZFRp
bWUpCiAgICAgICAgIHJldHVybiBtX2NhY2hlZFJlcGVhdER1cjsKLSAgICBjb25zdCBBdG9taWNT
dHJpbmcmIHZhbHVlID0gYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihTVkdOYW1lczo6
cmVwZWF0RHVyQXR0cik7CisgICAgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUgPSBhdHRyaWJ1dGVX
aXRob3V0U3luY2hyb25pemF0aW9uKFNWR05hbWVzOjpyZXBlYXREdXJBdHRyKTsKICAgICBTTUlM
VGltZSBjbG9ja1ZhbHVlID0gcGFyc2VDbG9ja1ZhbHVlKHZhbHVlKTsKICAgICBtX2NhY2hlZFJl
cGVhdER1ciA9IGNsb2NrVmFsdWUgPD0gMCA/IFNNSUxUaW1lOjp1bnJlc29sdmVkKCkgOiBjbG9j
a1ZhbHVlOwogICAgIHJldHVybiBtX2NhY2hlZFJlcGVhdER1cjsKQEAgLTY5NCwxMSArNjk0LDEx
IEBAIFNNSUxUaW1lIFNWR1NNSUxFbGVtZW50OjpyZXBlYXRDb3VudCgpIGNvbnN0CiB7ICAgIAog
ICAgIGlmIChtX2NhY2hlZFJlcGVhdENvdW50ICE9IGludmFsaWRDYWNoZWRUaW1lKQogICAgICAg
ICByZXR1cm4gbV9jYWNoZWRSZXBlYXRDb3VudDsKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZh
bHVlID0gYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihTVkdOYW1lczo6cmVwZWF0Q291
bnRBdHRyKTsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSA9IGF0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24oU1ZHTmFtZXM6OnJlcGVhdENvdW50QXR0cik7CiAgICAgaWYgKHZhbHVl
LmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gU01JTFRpbWU6OnVucmVzb2x2ZWQoKTsKIAotICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGluZGVmaW5pdGVWYWx1
ZSgiaW5kZWZpbml0ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBpbmRlZmluaXRlVmFsdWUo
ImluZGVmaW5pdGUiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgaWYg
KHZhbHVlID09IGluZGVmaW5pdGVWYWx1ZSkKICAgICAgICAgcmV0dXJuIFNNSUxUaW1lOjppbmRl
ZmluaXRlKCk7CiAgICAgYm9vbCBvazsKQEAgLTcxMCw3ICs3MTAsNyBAQCBTTUlMVGltZSBTVkdT
TUlMRWxlbWVudDo6bWF4VmFsdWUoKSBjb25zdAogeyAgICAKICAgICBpZiAobV9jYWNoZWRNYXgg
IT0gaW52YWxpZENhY2hlZFRpbWUpCiAgICAgICAgIHJldHVybiBtX2NhY2hlZE1heDsKLSAgICBj
b25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0gYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlv
bihTVkdOYW1lczo6bWF4QXR0cik7CisgICAgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUgPSBhdHRy
aWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFNWR05hbWVzOjptYXhBdHRyKTsKICAgICBTTUlM
VGltZSByZXN1bHQgPSBwYXJzZUNsb2NrVmFsdWUodmFsdWUpOwogICAgIHJldHVybiBtX2NhY2hl
ZE1heCA9IChyZXN1bHQuaXNVbnJlc29sdmVkKCkgfHwgcmVzdWx0IDw9IDApID8gU01JTFRpbWU6
OmluZGVmaW5pdGUoKSA6IHJlc3VsdDsKIH0KQEAgLTcxOSw3ICs3MTksNyBAQCBTTUlMVGltZSBT
VkdTTUlMRWxlbWVudDo6bWluVmFsdWUoKSBjb25zdAogeyAgICAKICAgICBpZiAobV9jYWNoZWRN
aW4gIT0gaW52YWxpZENhY2hlZFRpbWUpCiAgICAgICAgIHJldHVybiBtX2NhY2hlZE1pbjsKLSAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0gYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXph
dGlvbihTVkdOYW1lczo6bWluQXR0cik7CisgICAgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUgPSBh
dHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFNWR05hbWVzOjptaW5BdHRyKTsKICAgICBT
TUlMVGltZSByZXN1bHQgPSBwYXJzZUNsb2NrVmFsdWUodmFsdWUpOwogICAgIHJldHVybiBtX2Nh
Y2hlZE1pbiA9IChyZXN1bHQuaXNVbnJlc29sdmVkKCkgfHwgcmVzdWx0IDwgMCkgPyAwIDogcmVz
dWx0OwogfQpAQCAtMTIyNSw3ICsxMjI1LDcgQEAgdm9pZCBTVkdTTUlMRWxlbWVudDo6ZW5kZWRB
Y3RpdmVJbnRlcnZhbCgpCiB2b2lkIFNWR1NNSUxFbGVtZW50OjpkaXNwYXRjaFBlbmRpbmdFdmVu
dChTTUlMRXZlbnRTZW5kZXIqIGV2ZW50U2VuZGVyKQogewogICAgIEFTU0VSVChldmVudFNlbmRl
ciA9PSAmc21pbEJlZ2luRXZlbnRTZW5kZXIoKSB8fCBldmVudFNlbmRlciA9PSAmc21pbEVuZEV2
ZW50U2VuZGVyKCkpOwotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlID0gZXZlbnRT
ZW5kZXItPmV2ZW50VHlwZSgpOworICAgIGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSA9IGV2
ZW50U2VuZGVyLT5ldmVudFR5cGUoKTsKICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUo
ZXZlbnRUeXBlLCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8p
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlM
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5o
CmluZGV4IGVmOTkyNGFmOTZhNTMxNzVkZjJjMDI2NWRkZTJlZWE5NmIwOTJlZjQuLjA2OWJjODMx
Y2IxMTEzOTAwMDY5NjdjYTI2N2E3MTNmODU4ZTc0MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgog
ICAgIFNWR1NNSUxFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogICAg
IHZpcnR1YWwgflNWR1NNSUxFbGVtZW50KCk7CiAKLSAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKKyAgICB2
b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5n
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmll
ZE5hbWUmKSBvdmVycmlkZTsKICAgICBJbnNlcnRlZEludG9BbmNlc3RvclJlc3VsdCBpbnNlcnRl
ZEludG9BbmNlc3RvcihJbnNlcnRpb25UeXBlLCBDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCByZW1vdmVkRnJvbUFuY2VzdG9yKFJlbW92YWxUeXBlLCBDb250YWluZXJOb2RlJikg
b3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVy
cy9TVkdGaWx0ZXJCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuY3BwCmluZGV4IDk3ZWE1NWU4YzA4Nzk3OGJkZWY1YjgyZGU4
NTdlNzBmOWY3ZjUyMmUuLmQyZTMyODU5Y2JmZTg3YzYzN2U1NjhjZGYxNDc2ZDkxYzA5YzdiMzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRl
ckJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NW
R0ZpbHRlckJ1aWxkZXIuY3BwCkBAIC0zMyw3ICszMyw3IEBAIFNWR0ZpbHRlckJ1aWxkZXI6OlNW
R0ZpbHRlckJ1aWxkZXIoUmVmUHRyPEZpbHRlckVmZmVjdD4gc291cmNlR3JhcGhpYykKICAgICBh
ZGRCdWlsdGluRWZmZWN0cygpOwogfQogCi12b2lkIFNWR0ZpbHRlckJ1aWxkZXI6OmFkZChjb25z
dCBBdG9taWNTdHJpbmcmIGlkLCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QpCit2b2lkIFNW
R0ZpbHRlckJ1aWxkZXI6OmFkZChjb25zdCBBdG9tU3RyaW5nJiBpZCwgUmVmUHRyPEZpbHRlckVm
ZmVjdD4gZWZmZWN0KQogewogICAgIGlmIChpZC5pc0VtcHR5KCkpIHsKICAgICAgICAgbV9sYXN0
RWZmZWN0ID0gZWZmZWN0OwpAQCAtNDcsNyArNDcsNyBAQCB2b2lkIFNWR0ZpbHRlckJ1aWxkZXI6
OmFkZChjb25zdCBBdG9taWNTdHJpbmcmIGlkLCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3Qp
CiAgICAgbV9uYW1lZEVmZmVjdHMuc2V0KGlkLCBtX2xhc3RFZmZlY3QpOwogfQogCi1SZWZQdHI8
RmlsdGVyRWZmZWN0PiBTVkdGaWx0ZXJCdWlsZGVyOjpnZXRFZmZlY3RCeUlkKGNvbnN0IEF0b21p
Y1N0cmluZyYgaWQpIGNvbnN0CitSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGaWx0ZXJCdWlsZGVy
OjpnZXRFZmZlY3RCeUlkKGNvbnN0IEF0b21TdHJpbmcmIGlkKSBjb25zdAogewogICAgIGlmIChp
ZC5pc0VtcHR5KCkpIHsKICAgICAgICAgaWYgKG1fbGFzdEVmZmVjdCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaAppbmRl
eCBmNjhhYmRiM2QwMDczNGQyNjNhYmRlOWY2Njk3MGM1NGViYWRhZmU5Li5kOTcwMzAyYWRmODY1
ODU1MDljNjUwOGQ1MDQ5NTJhMjU1MzIzNjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oCkBAIC0yNCw3ICsyNCw3
IEBACiAjaW5jbHVkZSAiU1ZHVW5pdFR5cGVzLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
ICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmlu
Z0hhc2guaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00NCw5ICs0
NCw5IEBAIHB1YmxpYzoKICAgICBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlIHByaW1pdGl2ZVVu
aXRzKCkgY29uc3QgeyByZXR1cm4gbV9wcmltaXRpdmVVbml0czsgfQogICAgIHZvaWQgc2V0UHJp
bWl0aXZlVW5pdHMoU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSB1bml0cykgeyBtX3ByaW1pdGl2
ZVVuaXRzID0gdW5pdHM7IH0KIAotICAgIHZvaWQgYWRkKGNvbnN0IEF0b21pY1N0cmluZyYgaWQs
IFJlZlB0cjxGaWx0ZXJFZmZlY3Q+KTsKKyAgICB2b2lkIGFkZChjb25zdCBBdG9tU3RyaW5nJiBp
ZCwgUmVmUHRyPEZpbHRlckVmZmVjdD4pOwogCi0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZ2V0
RWZmZWN0QnlJZChjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdDsKKyAgICBSZWZQdHI8RmlsdGVy
RWZmZWN0PiBnZXRFZmZlY3RCeUlkKGNvbnN0IEF0b21TdHJpbmcmKSBjb25zdDsKICAgICBGaWx0
ZXJFZmZlY3QqIGxhc3RFZmZlY3QoKSBjb25zdCB7IHJldHVybiBtX2xhc3RFZmZlY3QuZ2V0KCk7
IH0KIAogICAgIHZvaWQgYXBwZW5kRWZmZWN0VG9FZmZlY3RSZWZlcmVuY2VzKFJlZlB0cjxGaWx0
ZXJFZmZlY3Q+JiYsIFJlbmRlck9iamVjdCopOwpAQCAtNzEsOCArNzEsOCBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgbV9lZmZlY3RSZWZlcmVuY2VzLmFkZChlZmZlY3QsIEZpbHRlckVmZmVjdFNl
dCgpKTsKICAgICB9CiAKLSAgICBIYXNoTWFwPEF0b21pY1N0cmluZywgUmVmUHRyPEZpbHRlckVm
ZmVjdD4+IG1fYnVpbHRpbkVmZmVjdHM7Ci0gICAgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFJlZlB0
cjxGaWx0ZXJFZmZlY3Q+PiBtX25hbWVkRWZmZWN0czsKKyAgICBIYXNoTWFwPEF0b21TdHJpbmcs
IFJlZlB0cjxGaWx0ZXJFZmZlY3Q+PiBtX2J1aWx0aW5FZmZlY3RzOworICAgIEhhc2hNYXA8QXRv
bVN0cmluZywgUmVmUHRyPEZpbHRlckVmZmVjdD4+IG1fbmFtZWRFZmZlY3RzOwogICAgIC8vIFRo
ZSB2YWx1ZSBpcyBhIGxpc3QsIHdoaWNoIGNvbnRhaW5zIHRob3NlIGZpbHRlciBlZmZlY3RzLAog
ICAgIC8vIHdoaWNoIGRlcGVuZHMgb24gdGhlIGtleSBmaWx0ZXIgZWZmZWN0LgogICAgIEhhc2hN
YXA8UmVmUHRyPEZpbHRlckVmZmVjdD4sIEZpbHRlckVmZmVjdFNldD4gbV9lZmZlY3RSZWZlcmVu
Y2VzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0
ZWRQcm9wZXJ0eURlc2NyaXB0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9T
VkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRpb24uaAppbmRleCBmMWQ5YTA0YjBmZjNmNjFmNjJj
MmE5YTMyODM2M2NjYWUyNzMwYjVjLi43ZmE4MmM2MThkNmJiZTQ1NzY3NDBjYTY4NTAzZTE4NDJl
YjljZmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmlt
YXRlZFByb3BlcnR5RGVzY3JpcHRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVy
dGllcy9TVkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRpb24uaApAQCAtMjIsNyArMjIsNyBAQAog
I3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi90
ZXh0L0F0b21pY1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Nyw3ICs0Nyw3IEBAIHN0cnVjdCBTVkdBbmltYXRl
ZFByb3BlcnR5RGVzY3JpcHRpb24gewogICAgICAgICByZXR1cm4gbV9lbGVtZW50ID09IHJlaW50
ZXJwcmV0X2Nhc3Q8U1ZHRWxlbWVudCo+KC0xKTsKICAgICB9CiAKLSAgICBTVkdBbmltYXRlZFBy
b3BlcnR5RGVzY3JpcHRpb24oU1ZHRWxlbWVudCogZWxlbWVudCwgY29uc3QgQXRvbWljU3RyaW5n
JiBhdHRyaWJ1dGVOYW1lKQorICAgIFNWR0FuaW1hdGVkUHJvcGVydHlEZXNjcmlwdGlvbihTVkdF
bGVtZW50KiBlbGVtZW50LCBjb25zdCBBdG9tU3RyaW5nJiBhdHRyaWJ1dGVOYW1lKQogICAgICAg
ICA6IG1fZWxlbWVudChlbGVtZW50KQogICAgICAgICAsIG1fYXR0cmlidXRlTmFtZShhdHRyaWJ1
dGVOYW1lLmltcGwoKSkKICAgICB7CkBAIC02MSw3ICs2MSw3IEBAIHN0cnVjdCBTVkdBbmltYXRl
ZFByb3BlcnR5RGVzY3JpcHRpb24gewogICAgIH0KIAogICAgIFNWR0VsZW1lbnQqIG1fZWxlbWVu
dDsKLSAgICBBdG9taWNTdHJpbmdJbXBsKiBtX2F0dHJpYnV0ZU5hbWU7CisgICAgQXRvbVN0cmlu
Z0ltcGwqIG1fYXR0cmlidXRlTmFtZTsKIH07CiAKIHN0cnVjdCBTVkdBbmltYXRlZFByb3BlcnR5
RGVzY3JpcHRpb25IYXNoIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0
aWVzL1NWR0FuaW1hdGlvbkFkZGl0aXZlVmFsdWVGdW5jdGlvbkltcGwuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRkaXRpdmVWYWx1ZUZ1bmN0aW9uSW1w
bC5jcHAKaW5kZXggMWIxY2JlYjNhNTQ2MGVjMWM4ZDg0ODBlZjcwZGQ3YjIwNjA5ZmE3OC4uNzJi
MjViNWI4Y2MyZmMxZTcwMWM3OTE5ZTMzOTI3NjdjMjMxNDA1ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRkaXRpdmVWYWx1ZUZ1bmN0aW9u
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9u
QWRkaXRpdmVWYWx1ZUZ1bmN0aW9uSW1wbC5jcHAKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBDb2xvciBTVkdBbmltYXRpb25Db2xvckZ1bmN0aW9uOjpjb2xvckZyb21T
dHJpbmcoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7
Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gY3VycmVudENv
bG9yKCJjdXJyZW50Q29sb3IiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gY3VycmVudENvbG9y
KCJjdXJyZW50Q29sb3IiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAKICAg
ICBpZiAoc3RyaW5nICE9IGN1cnJlbnRDb2xvci5nZXQoKSkKICAgICAgICAgcmV0dXJuIFNWR1By
b3BlcnR5VHJhaXRzPENvbG9yPjo6ZnJvbVN0cmluZyhzdHJpbmcpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlBbmltYXRvci5oIGIvU291cmNl
L1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlBbmltYXRvci5oCmluZGV4IGY1ZThi
MWJkMzA0MTI2NWM0OWU1YTA1YWEyZjcyOWUzZjU1YTU4ZjcuLjIxZTg4M2ZlMjQ0ODM4ZmYzNzQ2
ODY5YmYxMWEzZGY0NmZmNGJlMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9w
ZXJ0aWVzL1NWR1Byb3BlcnR5QW5pbWF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJv
cGVydGllcy9TVkdQcm9wZXJ0eUFuaW1hdG9yLmgKQEAgLTcyLDcgKzcyLDcgQEAgcHJvdGVjdGVk
OgogCiAgICAgU3RyaW5nIGFkanVzdEZvckluaGVyaXRhbmNlKFNWR0VsZW1lbnQqIHRhcmdldEVs
ZW1lbnQsIGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0CiAgICAgewotICAgICAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBpbmhlcml0KCJpbmhlcml0IiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBpbmhlcml0KCJpbmhlcml0IiwgQXRvbVN0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgICAgICByZXR1cm4gdmFsdWUgPT0gaW5oZXJpdCA/
IGNvbXB1dGVJbmhlcml0ZWRDU1NQcm9wZXJ0eVZhbHVlKHRhcmdldEVsZW1lbnQpIDogdmFsdWU7
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0
dGluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5oCmluZGV4
IGZhNzMzOTRkMDZlODc1MWIzYzczZDA3MjRhYThjMjgwYzUwYmVmZjUuLmEwNGM0MDIxZjI4YzVj
M2NiMTk0ZDYzNTJjMGM0MWM1NmY4ZDJjZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxTZXR0aW5ncy5oCkBAIC0yNyw3ICsyNyw3IEBACiAjcHJhZ21hIG9uY2UKIAogLy8gRklY
TUUgKDEyMTkyNyk6IFRoaXMgaW5jbHVkZSBzaG91bGQgbm90IGJlIG5lZWRlZC4KLSNpbmNsdWRl
IDx3dGYvdGV4dC9BdG9taWNTdHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0
cmluZ0hhc2guaD4KIAogI2luY2x1ZGUgIkVkaXRpbmdCZWhhdmlvclR5cGVzLmgiCiAjaW5jbHVk
ZSAiRXhjZXB0aW9uT3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCAy
MmYxMDY1MjEyYTBmYTVjNWM2MmVhMGE1YmMwOWI4ZDNiZDQzNzg5Li43ZWZjN2M0NDY5NzEyZjA2
YzczNGZlZTJmYWRjNTM0NTMyMDQ3YzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwCkBAIC0xMDUzLDcgKzEwNTMsNyBAQCBFeGNlcHRpb25Pcjxib29sPiBJbnRlcm5hbHM6OnBh
dXNlQW5pbWF0aW9uQXRUaW1lT25FbGVtZW50KGNvbnN0IFN0cmluZyYgYW5pbWF0aQogewogICAg
IGlmIChwYXVzZVRpbWUgPCAwKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZEFj
Y2Vzc0Vycm9yIH07Ci0gICAgcmV0dXJuIGZyYW1lKCktPmFuaW1hdGlvbigpLnBhdXNlQW5pbWF0
aW9uQXRUaW1lKGVsZW1lbnQsIEF0b21pY1N0cmluZyhhbmltYXRpb25OYW1lKSwgcGF1c2VUaW1l
KTsKKyAgICByZXR1cm4gZnJhbWUoKS0+YW5pbWF0aW9uKCkucGF1c2VBbmltYXRpb25BdFRpbWUo
ZWxlbWVudCwgQXRvbVN0cmluZyhhbmltYXRpb25OYW1lKSwgcGF1c2VUaW1lKTsKIH0KIAogRXhj
ZXB0aW9uT3I8Ym9vbD4gSW50ZXJuYWxzOjpwYXVzZUFuaW1hdGlvbkF0VGltZU9uUHNldWRvRWxl
bWVudChjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGRvdWJsZSBwYXVzZVRpbWUsIEVsZW1l
bnQmIGVsZW1lbnQsIGNvbnN0IFN0cmluZyYgcHNldWRvSWQpCkBAIC0xMDY4LDcgKzEwNjgsNyBA
QCBFeGNlcHRpb25Pcjxib29sPiBJbnRlcm5hbHM6OnBhdXNlQW5pbWF0aW9uQXRUaW1lT25Qc2V1
ZG9FbGVtZW50KGNvbnN0IFN0cmluZyYgYQogICAgIGlmICghcHNldWRvRWxlbWVudCkKICAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRBY2Nlc3NFcnJvciB9OwogCi0gICAgcmV0dXJu
IGZyYW1lKCktPmFuaW1hdGlvbigpLnBhdXNlQW5pbWF0aW9uQXRUaW1lKCpwc2V1ZG9FbGVtZW50
LCBBdG9taWNTdHJpbmcoYW5pbWF0aW9uTmFtZSksIHBhdXNlVGltZSk7CisgICAgcmV0dXJuIGZy
YW1lKCktPmFuaW1hdGlvbigpLnBhdXNlQW5pbWF0aW9uQXRUaW1lKCpwc2V1ZG9FbGVtZW50LCBB
dG9tU3RyaW5nKGFuaW1hdGlvbk5hbWUpLCBwYXVzZVRpbWUpOwogfQogCiBFeGNlcHRpb25Pcjxi
b29sPiBJbnRlcm5hbHM6OnBhdXNlVHJhbnNpdGlvbkF0VGltZU9uRWxlbWVudChjb25zdCBTdHJp
bmcmIHByb3BlcnR5TmFtZSwgZG91YmxlIHBhdXNlVGltZSwgRWxlbWVudCYgZWxlbWVudCkKQEAg
LTM3MTUsMTIgKzM3MTUsMTIgQEAgdm9pZCBJbnRlcm5hbHM6OmluaXRpYWxpemVNb2NrTWVkaWFT
b3VyY2UoKQogICAgIE1lZGlhUGxheWVyRmFjdG9yeVN1cHBvcnQ6OmNhbGxSZWdpc3Rlck1lZGlh
RW5naW5lKE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpyZWdpc3Rlck1lZGlhRW5naW5lKTsK
IH0KIAotVmVjdG9yPFN0cmluZz4gSW50ZXJuYWxzOjpidWZmZXJlZFNhbXBsZXNGb3JUcmFja0lE
KFNvdXJjZUJ1ZmZlciYgYnVmZmVyLCBjb25zdCBBdG9taWNTdHJpbmcmIHRyYWNrSUQpCitWZWN0
b3I8U3RyaW5nPiBJbnRlcm5hbHM6OmJ1ZmZlcmVkU2FtcGxlc0ZvclRyYWNrSUQoU291cmNlQnVm
ZmVyJiBidWZmZXIsIGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSUQpCiB7CiAgICAgcmV0dXJuIGJ1
ZmZlci5idWZmZXJlZFNhbXBsZXNGb3JUcmFja0lEKHRyYWNrSUQpOwogfQogCi1WZWN0b3I8U3Ry
aW5nPiBJbnRlcm5hbHM6OmVucXVldWVkU2FtcGxlc0ZvclRyYWNrSUQoU291cmNlQnVmZmVyJiBi
dWZmZXIsIGNvbnN0IEF0b21pY1N0cmluZyYgdHJhY2tJRCkKK1ZlY3RvcjxTdHJpbmc+IEludGVy
bmFsczo6ZW5xdWV1ZWRTYW1wbGVzRm9yVHJhY2tJRChTb3VyY2VCdWZmZXImIGJ1ZmZlciwgY29u
c3QgQXRvbVN0cmluZyYgdHJhY2tJRCkKIHsKICAgICByZXR1cm4gYnVmZmVyLmVucXVldWVkU2Ft
cGxlc0ZvclRyYWNrSUQodHJhY2tJRCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApp
bmRleCAzOGU1ZjdiZjFlOTJjMzA0NzBkZDNmYTBjZTZlZTk0NmI5MTQyOTE3Li4wYzAzZDY4NjQ2
YWU2YjRjYzQyY2JlMTM5ZjBhN2MwYzY0NTMwOGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmgKQEAgLTU3MSw4ICs1NzEsOCBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoTUVESUFfU09V
UkNFKQogICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHZvaWQgaW5pdGlhbGl6ZU1vY2tN
ZWRpYVNvdXJjZSgpOwotICAgIFZlY3RvcjxTdHJpbmc+IGJ1ZmZlcmVkU2FtcGxlc0ZvclRyYWNr
SUQoU291cmNlQnVmZmVyJiwgY29uc3QgQXRvbWljU3RyaW5nJik7Ci0gICAgVmVjdG9yPFN0cmlu
Zz4gZW5xdWV1ZWRTYW1wbGVzRm9yVHJhY2tJRChTb3VyY2VCdWZmZXImLCBjb25zdCBBdG9taWNT
dHJpbmcmKTsKKyAgICBWZWN0b3I8U3RyaW5nPiBidWZmZXJlZFNhbXBsZXNGb3JUcmFja0lEKFNv
dXJjZUJ1ZmZlciYsIGNvbnN0IEF0b21TdHJpbmcmKTsKKyAgICBWZWN0b3I8U3RyaW5nPiBlbnF1
ZXVlZFNhbXBsZXNGb3JUcmFja0lEKFNvdXJjZUJ1ZmZlciYsIGNvbnN0IEF0b21TdHJpbmcmKTsK
ICAgICB2b2lkIHNldFNob3VsZEdlbmVyYXRlVGltZXN0YW1wcyhTb3VyY2VCdWZmZXImLCBib29s
KTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1G
YWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCmlu
ZGV4IDdkODY5YjRkNGE2MmRiZjRmMTNkZDAyNTYwNzQyOTI3MDc4ZmYyMmEuLjA0ZmJmMjc0MzAy
YmNmNWU5YjhiYzE3NGQwNDNlNDI1NWRhZjc0OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
TW9ja0NETUZhY3RvcnkuY3BwCkBAIC0xMDgsNyArMTA4LDcgQEAgTW9ja0NETTo6TW9ja0NETShX
ZWFrUHRyPE1vY2tDRE1GYWN0b3J5PiBmYWN0b3J5KQogewogfQogCi1ib29sIE1vY2tDRE06OnN1
cHBvcnRzSW5pdERhdGFUeXBlKGNvbnN0IEF0b21pY1N0cmluZyYgaW5pdERhdGFUeXBlKSBjb25z
dAorYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c0luaXREYXRhVHlwZShjb25zdCBBdG9tU3RyaW5nJiBp
bml0RGF0YVR5cGUpIGNvbnN0CiB7CiAgICAgaWYgKG1fZmFjdG9yeSkKICAgICAgICAgcmV0dXJu
IG1fZmFjdG9yeS0+c3VwcG9ydGVkRGF0YVR5cGVzKCkuY29udGFpbnMoaW5pdERhdGFUeXBlKTsK
QEAgLTE5Nyw3ICsxOTcsNyBAQCBib29sIE1vY2tDRE06OnN1cHBvcnRzU2Vzc2lvbnMoKSBjb25z
dAogICAgIHJldHVybiBtX2ZhY3RvcnkgJiYgbV9mYWN0b3J5LT5zdXBwb3J0c1Nlc3Npb25zKCk7
CiB9CiAKLWJvb2wgTW9ja0NETTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9taWNTdHJpbmcm
IGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkgY29uc3QKK2Jvb2wg
TW9ja0NETTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUs
IGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpIGNvbnN0CiB7CiAgICAgaWYgKCFzdXBwb3J0
c0luaXREYXRhVHlwZShpbml0RGF0YVR5cGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0y
OTksNyArMjk5LDcgQEAgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6TW9ja0NETUluc3RhbmNlU2Vz
c2lvbihXZWFrUHRyPE1vY2tDRE1JbnN0YW5jZT4mJiBpbnN0YW4KIHsKIH0KIAotdm9pZCBNb2Nr
Q0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlw
ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYg
aW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBNb2NrQ0RNSW5zdGFu
Y2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwgY29uc3Qg
QXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBM
aWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBNb2NrQ0RNRmFjdG9yeSogZmFjdG9y
eSA9IG1faW5zdGFuY2UgPyBtX2luc3RhbmNlLT5mYWN0b3J5KCkgOiBudWxscHRyOwogICAgIGlm
ICghZmFjdG9yeSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RN
RmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oCmluZGV4
IDVjYWRmMjhkNjU0YTFkZDAyYmRkMThhOGU4ODI2OWE3N2IwNDAwZDcuLjMzOTZjZDAyYWQwMmRk
MTRlOTJmMTU3OWUyNzUxNmU2YmMzZjQyOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvTW9ja0NETUZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tD
RE1GYWN0b3J5LmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8TW9j
a0NETUZhY3Rvcnk+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTW9ja0NETUZhY3Rv
cnkpOyB9CiAgICAgfk1vY2tDRE1GYWN0b3J5KCk7CiAKLSAgICBjb25zdCBWZWN0b3I8QXRvbWlj
U3RyaW5nPiYgc3VwcG9ydGVkRGF0YVR5cGVzKCkgY29uc3QgeyByZXR1cm4gbV9zdXBwb3J0ZWRE
YXRhVHlwZXM7IH0KKyAgICBjb25zdCBWZWN0b3I8QXRvbVN0cmluZz4mIHN1cHBvcnRlZERhdGFU
eXBlcygpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcG9ydGVkRGF0YVR5cGVzOyB9CiAgICAgdm9pZCBz
ZXRTdXBwb3J0ZWREYXRhVHlwZXMoVmVjdG9yPFN0cmluZz4mJik7CiAKICAgICBjb25zdCBWZWN0
b3I8TWVkaWFLZXlTZXNzaW9uVHlwZT4mIHN1cHBvcnRlZFNlc3Npb25UeXBlcygpIGNvbnN0IHsg
cmV0dXJuIG1fc3VwcG9ydGVkU2Vzc2lvblR5cGVzOyB9CkBAIC04OCw3ICs4OCw3IEBAIHByaXZh
dGU6CiAKICAgICBNZWRpYUtleXNSZXF1aXJlbWVudCBtX2Rpc3RpbmN0aXZlSWRlbnRpZmllcnNS
ZXF1aXJlbWVudCB7IE1lZGlhS2V5c1JlcXVpcmVtZW50OjpPcHRpb25hbCB9OwogICAgIE1lZGlh
S2V5c1JlcXVpcmVtZW50IG1fcGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQgeyBNZWRpYUtleXNS
ZXF1aXJlbWVudDo6T3B0aW9uYWwgfTsKLSAgICBWZWN0b3I8QXRvbWljU3RyaW5nPiBtX3N1cHBv
cnRlZERhdGFUeXBlczsKKyAgICBWZWN0b3I8QXRvbVN0cmluZz4gbV9zdXBwb3J0ZWREYXRhVHlw
ZXM7CiAgICAgVmVjdG9yPE1lZGlhS2V5U2Vzc2lvblR5cGU+IG1fc3VwcG9ydGVkU2Vzc2lvblR5
cGVzOwogICAgIFZlY3RvcjxTdHJpbmc+IG1fc3VwcG9ydGVkUm9idXN0bmVzczsKICAgICBWZWN0
b3I8TWVkaWFLZXlFbmNyeXB0aW9uU2NoZW1lPiBtX3N1cHBvcnRlZEVuY3J5cHRpb25TY2hlbWVz
OwpAQCAtMTA4LDcgKzEwOCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNz
IE1vY2tDRE1JbnN0YW5jZTsKIAotICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YVR5cGUoY29uc3Qg
QXRvbWljU3RyaW5nJikgY29uc3QgZmluYWw7CisgICAgYm9vbCBzdXBwb3J0c0luaXREYXRhVHlw
ZShjb25zdCBBdG9tU3RyaW5nJikgY29uc3QgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c0NvbmZp
Z3VyYXRpb24oY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QgZmluYWw7
CiAgICAgYm9vbCBzdXBwb3J0c0NvbmZpZ3VyYXRpb25XaXRoUmVzdHJpY3Rpb25zKGNvbnN0IE1l
ZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IE1lZGlhS2V5c1Jlc3RyaWN0aW9ucyYp
IGNvbnN0IGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0
aW9uKE1lZGlhS2V5U2Vzc2lvblR5cGUmLCBjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRp
b24mKSBjb25zdCBmaW5hbDsKQEAgLTEyMCw3ICsxMjAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
bG9hZEFuZEluaXRpYWxpemUoKSBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzU2VydmVyQ2VydGlm
aWNhdGVzKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3Qg
ZmluYWw7Ci0gICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21pY1N0cmluZyYsIGNv
bnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0
YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CiAg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZm
ZXImKSBjb25zdCBmaW5hbDsKICAgICBPcHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vzc2lvbklk
KGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOwogCkBAIC0xNTUsNyArMTU1LDcgQEAgcHVibGlj
OgogICAgIE1vY2tDRE1JbnN0YW5jZVNlc3Npb24oV2Vha1B0cjxNb2NrQ0RNSW5zdGFuY2U+JiYp
OwogCiBwcml2YXRlOgotICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0
IEF0b21pY1N0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRh
LCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNl
bnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVy
PiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVM
aWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImLCBM
aWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBsb2FkU2Vzc2lvbihMaWNl
bnNlVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgTG9hZFNlc3Npb25DYWxsYmFj
ayYmKSBmaW5hbDsKICAgICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBDbG9zZVNl
c3Npb25DYWxsYmFjayYmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5oCmluZGV4IGRmMTky
NTI2Y2U4ZmYzMjdhNzQ2NDEzMjcwNzg5ZWJmYjRmOTg0MGIuLjIzYzMxYTAwODQwODFhZDlhMGVl
MmNiMDgyZWYxMTg1ZmFlODQ5NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaApAQCAtMzQsNyAr
MzQsNyBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1J1bnRpbWVGbGFncy5oPgogI2luY2x1
ZGUgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+Ci0jaW5j
bHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nSGFzaC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0
b21TdHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgRXhlY1N0YXRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL0V4dGVuZGFibGVFdmVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRXh0ZW5kYWJsZUV2ZW50LmNwcApp
bmRleCA3OTY3OWY5YTBjMzYwMmMzMGI5YjM1Mzk5YWM3OWZmNjViZGZkOTczLi40YzFiYzZmODM5
MjI5YTdmNzMzZmRmNTkzYWY1MmQ0N2E5ZTAxOGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvRXh0ZW5kYWJsZUV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvRXh0ZW5kYWJsZUV2ZW50LmNwcApAQCAtMzQsMTIgKzM0LDEyIEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRXh0ZW5kYWJsZUV2ZW50OjpFeHRlbmRhYmxlRXZl
bnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBFeHRlbmRhYmxlRXZlbnRJbml0JiBp
bml0aWFsaXplciwgSXNUcnVzdGVkIGlzVHJ1c3RlZCkKK0V4dGVuZGFibGVFdmVudDo6RXh0ZW5k
YWJsZUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IEV4dGVuZGFibGVFdmVudElu
aXQmIGluaXRpYWxpemVyLCBJc1RydXN0ZWQgaXNUcnVzdGVkKQogICAgIDogRXZlbnQodHlwZSwg
aW5pdGlhbGl6ZXIsIGlzVHJ1c3RlZCkKIHsKIH0KIAotRXh0ZW5kYWJsZUV2ZW50OjpFeHRlbmRh
YmxlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBDYW5CdWJibGUgY2FuQnViYmxlLCBJ
c0NhbmNlbGFibGUgY2FuY2VsYWJsZSkKK0V4dGVuZGFibGVFdmVudDo6RXh0ZW5kYWJsZUV2ZW50
KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIENhbkJ1YmJsZSBjYW5CdWJibGUsIElzQ2FuY2VsYWJs
ZSBjYW5jZWxhYmxlKQogICAgIDogRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlKQog
ewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL0V4dGVuZGFi
bGVFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL0V4dGVuZGFibGVFdmVu
dC5oCmluZGV4IGJhYWYxM2VlNjBkZWE5MGQ2MGM4YjFjNmU2MGE0ODc1N2M0NWM3ODUuLjI1NjNj
OGQ3YzMzYmYxMWJhN2E1M2QyOTJiYzNhNWQyOGJlNTdkZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9FeHRlbmRhYmxlRXZlbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvRXh0ZW5kYWJsZUV2ZW50LmgKQEAgLTM3LDcgKzM3LDcgQEAg
Y2xhc3MgRE9NUHJvbWlzZTsKIAogY2xhc3MgRXh0ZW5kYWJsZUV2ZW50IDogcHVibGljIEV2ZW50
LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8RXh0ZW5kYWJsZUV2ZW50PiB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxFeHRlbmRhYmxlRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5
cGUsIGNvbnN0IEV4dGVuZGFibGVFdmVudEluaXQmIGluaXRpYWxpemVyLCBJc1RydXN0ZWQgaXNU
cnVzdGVkID0gSXNUcnVzdGVkOjpObykKKyAgICBzdGF0aWMgUmVmPEV4dGVuZGFibGVFdmVudD4g
Y3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IEV4dGVuZGFibGVFdmVudEluaXQm
IGluaXRpYWxpemVyLCBJc1RydXN0ZWQgaXNUcnVzdGVkID0gSXNUcnVzdGVkOjpObykKICAgICB7
CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEV4dGVuZGFibGVFdmVudCh0eXBlLCBpbml0
aWFsaXplciwgaXNUcnVzdGVkKSk7CiAgICAgfQpAQCAtNTIsOCArNTIsOCBAQCBwdWJsaWM6CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3aGVuQWxsRXh0ZW5kTGlmZXRpbWVQcm9taXNlc0FyZVNl
dHRsZWQoV1RGOjpGdW5jdGlvbjx2b2lkKEhhc2hTZXQ8UmVmPERPTVByb21pc2U+PiYmKT4mJik7
CiAKIHByb3RlY3RlZDoKLSAgICBXRUJDT1JFX0VYUE9SVCBFeHRlbmRhYmxlRXZlbnQoY29uc3Qg
QXRvbWljU3RyaW5nJiwgY29uc3QgRXh0ZW5kYWJsZUV2ZW50SW5pdCYsIElzVHJ1c3RlZCk7Ci0g
ICAgRXh0ZW5kYWJsZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYsIENhbkJ1YmJsZSwgSXNDYW5j
ZWxhYmxlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBFeHRlbmRhYmxlRXZlbnQoY29uc3QgQXRvbVN0
cmluZyYsIGNvbnN0IEV4dGVuZGFibGVFdmVudEluaXQmLCBJc1RydXN0ZWQpOworICAgIEV4dGVu
ZGFibGVFdmVudChjb25zdCBBdG9tU3RyaW5nJiwgQ2FuQnViYmxlLCBJc0NhbmNlbGFibGUpOwog
CiAgICAgdm9pZCBhZGRFeHRlbmRMaWZldGltZVByb21pc2UoUmVmPERPTVByb21pc2U+JiYpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRXh0ZW5kYWJsZU1l
c3NhZ2VFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRXh0ZW5kYWJs
ZU1lc3NhZ2VFdmVudC5jcHAKaW5kZXggN2IwNWZmZmMwMzExNGY3NzEyMzIzYWEzMDA5MjdjN2E3
N2U0NzExZi4uM2RjYWJjYjgwYzczNjRkZDI3ODUyYTQ3ZTM0OTZkYzU4YmZlZTJmNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL0V4dGVuZGFibGVNZXNzYWdlRXZl
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9FeHRlbmRhYmxlTWVz
c2FnZUV2ZW50LmNwcApAQCAtMzcsNyArMzcsNyBAQCBSZWY8RXh0ZW5kYWJsZU1lc3NhZ2VFdmVu
dD4gRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudDo6Y3JlYXRlKFZlY3RvcjxSZWZQdHI8TWVzc2FnZQog
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEV4dGVuZGFibGVNZXNzYWdlRXZlbnQoV1RGTW92ZShk
YXRhKSwgb3JpZ2luLCBsYXN0RXZlbnRJZCwgV1RGTW92ZShzb3VyY2UpLCBXVEZNb3ZlKHBvcnRz
KSkpOwogfQogCi1FeHRlbmRhYmxlTWVzc2FnZUV2ZW50OjpFeHRlbmRhYmxlTWVzc2FnZUV2ZW50
KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBJ
bml0JiBpbml0LCBJc1RydXN0ZWQgaXNUcnVzdGVkKQorRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudDo6
RXh0ZW5kYWJsZU1lc3NhZ2VFdmVudChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IEF0b21T
dHJpbmcmIHR5cGUsIGNvbnN0IEluaXQmIGluaXQsIElzVHJ1c3RlZCBpc1RydXN0ZWQpCiAgICAg
OiBFeHRlbmRhYmxlRXZlbnQodHlwZSwgaW5pdCwgaXNUcnVzdGVkKQogICAgICwgbV9kYXRhKFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHN0YXRlLCBpbml0LmRhdGEsIFNlcmlhbGl6YXRp
b25FcnJvck1vZGU6Ok5vblRocm93aW5nKSkKICAgICAsIG1fb3JpZ2luKGluaXQub3JpZ2luKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL0V4dGVuZGFibGVNZXNz
YWdlRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9FeHRlbmRhYmxlTWVz
c2FnZUV2ZW50LmgKaW5kZXggNGEwMWE3OWQyN2ZjNzdjNzYxZjI5YThiMWRmMDM1MWY1NDQxMTJm
NS4uMzQzMjNjOGI1MzVhYjFlNjZjODY5ZGFjNDRhYmU4NWEzZjhlNjdhMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL0V4dGVuZGFibGVNZXNzYWdlRXZlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRXh0ZW5kYWJsZU1lc3NhZ2VFdmVu
dC5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgVmVjdG9yPFJlZlB0cjxNZXNz
YWdlUG9ydD4+IHBvcnRzOwogICAgIH07CiAKLSAgICBzdGF0aWMgUmVmPEV4dGVuZGFibGVNZXNz
YWdlRXZlbnQ+IGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgdHlwZSwgY29uc3QgSW5pdCYgaW5pdGlhbGl6ZXIsIElzVHJ1c3RlZCBpc1RydXN0ZWQgPSBJ
c1RydXN0ZWQ6Ok5vKQorICAgIHN0YXRpYyBSZWY8RXh0ZW5kYWJsZU1lc3NhZ2VFdmVudD4gY3Jl
YXRlKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3Qg
SW5pdCYgaW5pdGlhbGl6ZXIsIElzVHJ1c3RlZCBpc1RydXN0ZWQgPSBJc1RydXN0ZWQ6Ok5vKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRXh0ZW5kYWJsZU1lc3NhZ2VFdmVu
dChzdGF0ZSwgdHlwZSwgaW5pdGlhbGl6ZXIsIGlzVHJ1c3RlZCkpOwogICAgIH0KQEAgLTc1LDcg
Kzc1LDcgQEAgcHVibGljOgogICAgIEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNlKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudEludGVyZmFjZVR5cGU7IH0K
IAogcHJpdmF0ZToKLSAgICBFeHRlbmRhYmxlTWVzc2FnZUV2ZW50KEpTQzo6RXhlY1N0YXRlJiwg
Y29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgSW5pdCYsIElzVHJ1c3RlZCk7CisgICAgRXh0ZW5k
YWJsZU1lc3NhZ2VFdmVudChKU0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IEF0b21TdHJpbmcmLCBjb25z
dCBJbml0JiwgSXNUcnVzdGVkKTsKICAgICBFeHRlbmRhYmxlTWVzc2FnZUV2ZW50KFJlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0
IFN0cmluZyYgbGFzdEV2ZW50SWQsIE9wdGlvbmFsPEV4dGVuZGFibGVNZXNzYWdlRXZlbnRTb3Vy
Y2U+JiYsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYmKTsKIAogICAgIFJlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IG1fZGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9GZXRjaEV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9GZXRjaEV2ZW50LmNwcAppbmRleCA3NzY3YWM3YWFiYzRmYmY2YzcwNWFlM2U3YzBjNjhl
ZWFlNzk3MTA3Li4xYmZlNjZjYjk1ZmI1NDNjMmM2NDQwNjFjYjE5ODE2YmM3YmEyZDExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRmV0Y2hFdmVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL0ZldGNoRXZlbnQuY3BwCkBAIC00MCw3
ICs0MCw3IEBAIFJlZjxGZXRjaEV2ZW50PiBGZXRjaEV2ZW50OjpjcmVhdGVGb3JUZXN0aW5nKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiAgICAgcmV0dXJuIEZldGNoRXZlbnQ6OmNy
ZWF0ZSgiZmV0Y2giLCBXVEZNb3ZlKGluaXQpLCBFdmVudDo6SXNUcnVzdGVkOjpZZXMpOwogfQog
Ci1GZXRjaEV2ZW50OjpGZXRjaEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgSW5pdCYm
IGluaXRpYWxpemVyLCBJc1RydXN0ZWQgaXNUcnVzdGVkKQorRmV0Y2hFdmVudDo6RmV0Y2hFdmVu
dChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBJbml0JiYgaW5pdGlhbGl6ZXIsIElzVHJ1c3RlZCBp
c1RydXN0ZWQpCiAgICAgOiBFeHRlbmRhYmxlRXZlbnQodHlwZSwgaW5pdGlhbGl6ZXIsIGlzVHJ1
c3RlZCkKICAgICAsIG1fcmVxdWVzdChpbml0aWFsaXplci5yZXF1ZXN0LnJlbGVhc2VOb25OdWxs
KCkpCiAgICAgLCBtX2NsaWVudElkKFdURk1vdmUoaW5pdGlhbGl6ZXIuY2xpZW50SWQpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL0ZldGNoRXZlbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9GZXRjaEV2ZW50LmgKaW5kZXggZjU3MGI4YTBk
ZDRiYzM4NmI3YjY2MzkwNjc0MGE0YTY0YjQyYzJmNi4uZTU4ODY0OGVmYTNlNjY5ODU0NjE0ZGEy
MjQ5YmE1NTg5ZTUxYTEzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL0ZldGNoRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRmV0
Y2hFdmVudC5oCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBSZWY8RmV0Y2hFdmVudD4gY3JlYXRlRm9yVGVzdGluZyhTY3JpcHRFeGVjdXRpb25D
b250ZXh0Jik7CiAKLSAgICBzdGF0aWMgUmVmPEZldGNoRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9t
aWNTdHJpbmcmIHR5cGUsIEluaXQmJiBpbml0aWFsaXplciwgSXNUcnVzdGVkIGlzVHJ1c3RlZCA9
IElzVHJ1c3RlZDo6Tm8pCisgICAgc3RhdGljIFJlZjxGZXRjaEV2ZW50PiBjcmVhdGUoY29uc3Qg
QXRvbVN0cmluZyYgdHlwZSwgSW5pdCYmIGluaXRpYWxpemVyLCBJc1RydXN0ZWQgaXNUcnVzdGVk
ID0gSXNUcnVzdGVkOjpObykKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZl
dGNoRXZlbnQodHlwZSwgV1RGTW92ZShpbml0aWFsaXplciksIGlzVHJ1c3RlZCkpOwogICAgIH0K
QEAgLTcxLDcgKzcxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZXNvdXJjZUVycm9yIGNyZWF0
ZVJlc3BvbnNlRXJyb3IoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJik7CiAKIHByaXZhdGU6Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgRmV0Y2hFdmVudChjb25zdCBBdG9taWNTdHJpbmcmLCBJbml0JiYs
IElzVHJ1c3RlZCk7CisgICAgV0VCQ09SRV9FWFBPUlQgRmV0Y2hFdmVudChjb25zdCBBdG9tU3Ry
aW5nJiwgSW5pdCYmLCBJc1RydXN0ZWQpOwogCiAgICAgdm9pZCBwcm9taXNlSXNTZXR0bGVkKCk7
CiAgICAgdm9pZCBwcm9jZXNzUmVzcG9uc2UoRXhwZWN0ZWQ8UmVmPEZldGNoUmVzcG9uc2U+LCBS
ZXNvdXJjZUVycm9yPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKaW5kZXggZjI3N2Vh
MzEzMmExNzBmN2E2NmIyYjRkNDczZTU3MDA0NjBhMGIyNC4uMDg2NjA2NzBhMzhmY2JjYmIyNzI4
MDI3NzIwYTcxY2Q2OWE4NDIyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKQEAgLTc3
LDcgKzc3LDcgQEAgU2VydmljZVdvcmtlclRocmVhZDo6U2VydmljZVdvcmtlclRocmVhZChjb25z
dCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmIGRhdGEsIFAKICAgICAsIG1fZGF0YShkYXRhLmlz
b2xhdGVkQ29weSgpKQogICAgICwgbV93b3JrZXJPYmplY3RQcm94eShEdW1teVNlcnZpY2VXb3Jr
ZXJUaHJlYWRQcm94eTo6c2hhcmVkKCkpCiB7Ci0gICAgQXRvbWljU3RyaW5nOjppbml0KCk7Cisg
ICAgQXRvbVN0cmluZzo6aW5pdCgpOwogfQogCiBTZXJ2aWNlV29ya2VyVGhyZWFkOjp+U2Vydmlj
ZVdvcmtlclRocmVhZCgpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmts
ZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcAppbmRleCA5YWVhYjk3YWM1NGRkMWI1NmMw
Y2VmMDU1NzdkMGJkYzNhNTRmODU2Li4yYjdhMmZlM2ZiYjU4ZDRjNGVlMzhmYzA0YjUzNmEzZTRl
MGM3N2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRH
bG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGUuY3BwCkBAIC01OSw3ICs1OSw3IEBAIGRvdWJsZSBQYWludFdvcmtsZXRHbG9i
YWxTY29wZTo6ZGV2aWNlUGl4ZWxSYXRpbygpIGNvbnN0CiAgICAgcmV0dXJuIHJlc3BvbnNpYmxl
RG9jdW1lbnQoKS0+ZG9tV2luZG93KCktPmRldmljZVBpeGVsUmF0aW8oKTsKIH0KIAotUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGU6OlBhaW50RGVmaW5pdGlvbjo6UGFpbnREZWZpbml0aW9uKGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZSwgSlNDOjpKU09iamVjdCogcGFpbnRDb25zdHJ1Y3RvciwgUmVm
PENTU1BhaW50Q2FsbGJhY2s+JiYgcGFpbnRDYWxsYmFjaywgVmVjdG9yPFN0cmluZz4mJiBpbnB1
dFByb3BlcnRpZXMsIFZlY3RvcjxTdHJpbmc+JiYgaW5wdXRBcmd1bWVudHMpCitQYWludFdvcmts
ZXRHbG9iYWxTY29wZTo6UGFpbnREZWZpbml0aW9uOjpQYWludERlZmluaXRpb24oY29uc3QgQXRv
bVN0cmluZyYgbmFtZSwgSlNDOjpKU09iamVjdCogcGFpbnRDb25zdHJ1Y3RvciwgUmVmPENTU1Bh
aW50Q2FsbGJhY2s+JiYgcGFpbnRDYWxsYmFjaywgVmVjdG9yPFN0cmluZz4mJiBpbnB1dFByb3Bl
cnRpZXMsIFZlY3RvcjxTdHJpbmc+JiYgaW5wdXRBcmd1bWVudHMpCiAgICAgOiBuYW1lKG5hbWUp
CiAgICAgLCBwYWludENvbnN0cnVjdG9yKHBhaW50Q29uc3RydWN0b3IpCiAgICAgLCBwYWludENh
bGxiYWNrKFdURk1vdmUocGFpbnRDYWxsYmFjaykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29y
a2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaAppbmRleCBmZTBlYjRjNWY2NTJkYjNjMDI3
NTlmYmQ5N2EyMWJmYWFiYmUwMDc0Li45NmNmMTg1MGIwY2FlM2FhZTk2MDdkYjEzNDE2NzM1OGI2
NzFjMWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRH
bG9iYWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEds
b2JhbFNjb3BlLmgKQEAgLTQ5LDkgKzQ5LDkgQEAgcHVibGljOgogCiAgICAgLy8gQWxsIHBhaW50
IGRlZmluaXRpb25zIG11c3QgYmUgZGVzdHJveWVkIGJlZm9yZSB0aGUgdm0gaXMgZGVzdHJveWVk
LCBiZWNhdXNlIG90aGVyd2lzZSB0aGV5IHdpbGwgcG9pbnQgdG8gZnJlZWQgbWVtb3J5LgogICAg
IHN0cnVjdCBQYWludERlZmluaXRpb24gOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UGFpbnREZWZp
bml0aW9uPiB7Ci0gICAgICAgIFBhaW50RGVmaW5pdGlvbihjb25zdCBBdG9taWNTdHJpbmcmIG5h
bWUsIEpTQzo6SlNPYmplY3QqIHBhaW50Q29uc3RydWN0b3IsIFJlZjxDU1NQYWludENhbGxiYWNr
PiYmLCBWZWN0b3I8U3RyaW5nPiYmIGlucHV0UHJvcGVydGllcywgVmVjdG9yPFN0cmluZz4mJiBp
bnB1dEFyZ3VtZW50cyk7CisgICAgICAgIFBhaW50RGVmaW5pdGlvbihjb25zdCBBdG9tU3RyaW5n
JiBuYW1lLCBKU0M6OkpTT2JqZWN0KiBwYWludENvbnN0cnVjdG9yLCBSZWY8Q1NTUGFpbnRDYWxs
YmFjaz4mJiwgVmVjdG9yPFN0cmluZz4mJiBpbnB1dFByb3BlcnRpZXMsIFZlY3RvcjxTdHJpbmc+
JiYgaW5wdXRBcmd1bWVudHMpOwogCi0gICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyBuYW1lOwor
ICAgICAgICBjb25zdCBBdG9tU3RyaW5nIG5hbWU7CiAgICAgICAgIGNvbnN0IEpTQzo6SlNPYmpl
Y3QqIGNvbnN0IHBhaW50Q29uc3RydWN0b3I7CiAgICAgICAgIGNvbnN0IFJlZjxDU1NQYWludENh
bGxiYWNrPiBwYWludENhbGxiYWNrOwogICAgICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiBpbnB1
dFByb3BlcnRpZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVl
c3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCAyY2Jm
YmZiMGU2NmYwZDA4NWMzMTNkNjg5NTUxZjNkZWNmOWU3N2ViLi41YzY0NzRmZjQ3ZjZkMDJhZGNi
ZGEyOWVjYWQ1NjRmNGI0NmIzMDI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1M
SHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5j
cHAKQEAgLTEwNzksNyArMTA3OSw3IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpc3BhdGNoRXZl
bnQoRXZlbnQmIGV2ZW50KQogICAgIEV2ZW50VGFyZ2V0OjpkaXNwYXRjaEV2ZW50KGV2ZW50KTsK
IH0KIAotdm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlzcGF0Y2hFcnJvckV2ZW50cyhjb25zdCBBdG9t
aWNTdHJpbmcmIHR5cGUpCit2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaXNwYXRjaEVycm9yRXZlbnRz
KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUpCiB7CiAgICAgaWYgKCFtX3VwbG9hZENvbXBsZXRlKSB7
CiAgICAgICAgIG1fdXBsb2FkQ29tcGxldGUgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJl
cXVlc3QuaAppbmRleCAxM2M4NmM4ODIxMmQxNjk5ZmVmM2Q0NWU4NTA1ZmY4ZjcyYjk5NjMwLi5k
NzBkM2U5YzVkNDg5YjIxM2U2YWY5NzM1MWU0ZDYyYjhmZjA2OTM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwv
WE1MSHR0cFJlcXVlc3QuaApAQCAtMTg0LDcgKzE4NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBu
ZXR3b3JrRXJyb3IoKTsKICAgICB2b2lkIGFib3J0RXJyb3IoKTsKIAotICAgIHZvaWQgZGlzcGF0
Y2hFcnJvckV2ZW50cyhjb25zdCBBdG9taWNTdHJpbmcmKTsKKyAgICB2b2lkIGRpc3BhdGNoRXJy
b3JFdmVudHMoY29uc3QgQXRvbVN0cmluZyYpOwogCiAgICAgdXNpbmcgRXZlbnRUYXJnZXQ6OmRp
c3BhdGNoRXZlbnQ7CiAgICAgdm9pZCBkaXNwYXRjaEV2ZW50KEV2ZW50Jikgb3ZlcnJpZGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmgKaW5k
ZXggYzBhZWRkZDJkZGUxMjk0MzUwOTRiNTJhMDE1M2E3NTIyMDliZWY4YS4uODVmODA3YzllMDU3
NGQyNTI4YTEyNDFmMzg4NzE0YThlOTExN2QxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
eG1sL1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuaApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudCA6IHB1Ymxp
YyBQcm9ncmVzc0V2ZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFhNTEh0dHBSZXF1ZXN0
UHJvZ3Jlc3NFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBsZW5n
dGhDb21wdXRhYmxlID0gZmFsc2UsIHVuc2lnbmVkIGxvbmcgbG9uZyBsb2FkZWQgPSAwLCB1bnNp
Z25lZCBsb25nIGxvbmcgdG90YWwgPSAwKQorICAgIHN0YXRpYyBSZWY8WE1MSHR0cFJlcXVlc3RQ
cm9ncmVzc0V2ZW50PiBjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgYm9vbCBsZW5ndGhD
b21wdXRhYmxlID0gZmFsc2UsIHVuc2lnbmVkIGxvbmcgbG9uZyBsb2FkZWQgPSAwLCB1bnNpZ25l
ZCBsb25nIGxvbmcgdG90YWwgPSAwKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50KHR5cGUsIGxlbmd0aENvbXB1dGFibGUsIGxv
YWRlZCwgdG90YWwpKTsKICAgICB9CkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICBFdmVu
dEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFhNTEh0
dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudEludGVyZmFjZVR5cGU7IH0KIAogcHJpdmF0ZToKLSAgICBY
TUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29s
IGxlbmd0aENvbXB1dGFibGUsIHVuc2lnbmVkIGxvbmcgbG9uZyBsb2FkZWQsIHVuc2lnbmVkIGxv
bmcgbG9uZyB0b3RhbCkKKyAgICBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQoY29uc3QgQXRv
bVN0cmluZyYgdHlwZSwgYm9vbCBsZW5ndGhDb21wdXRhYmxlLCB1bnNpZ25lZCBsb25nIGxvbmcg
bG9hZGVkLCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWwpCiAgICAgICAgIDogUHJvZ3Jlc3NFdmVu
dCh0eXBlLCBsZW5ndGhDb21wdXRhYmxlLCBsb2FkZWQsIHRvdGFsKQogICAgIHsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50
VGhyb3R0bGUuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NF
dmVudFRocm90dGxlLmNwcAppbmRleCA0YTE5YzQ3OWM3NjNjNzdjMzZkOTAyZmE0ZWI5MmZlODAw
NmZjMTY5Li5mOGY5ZjVlZTcwYjI3MTdlODhhYzVhYjBiNmUwYmJhODVjODVkOTg2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50VGhyb3R0
bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZl
bnRUaHJvdHRsZS5jcHAKQEAgLTk1LDcgKzk1LDcgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdFByb2dy
ZXNzRXZlbnRUaHJvdHRsZTo6ZGlzcGF0Y2hFdmVudChFdmVudCYgZXZlbnQpCiAgICAgICAgIG1f
dGFyZ2V0LT5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKIH0KIAotdm9pZCBYTUxIdHRwUmVxdWVzdFBy
b2dyZXNzRXZlbnRUaHJvdHRsZTo6ZGlzcGF0Y2hQcm9ncmVzc0V2ZW50KGNvbnN0IEF0b21pY1N0
cmluZyYgdHlwZSkKK3ZvaWQgWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50VGhyb3R0bGU6OmRp
c3BhdGNoUHJvZ3Jlc3NFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlKQogewogICAgIEFTU0VS
VCh0eXBlID09IGV2ZW50TmFtZXMoKS5sb2Fkc3RhcnRFdmVudCB8fCB0eXBlID09IGV2ZW50TmFt
ZXMoKS5wcm9ncmVzc0V2ZW50IHx8IHR5cGUgPT0gZXZlbnROYW1lcygpLmxvYWRFdmVudCB8fCB0
eXBlID09IGV2ZW50TmFtZXMoKS5sb2FkZW5kRXZlbnQgfHwgdHlwZSA9PSBldmVudE5hbWVzKCku
YWJvcnRFdmVudCB8fCB0eXBlID09IGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50IHx8IHR5cGUgPT0g
ZXZlbnROYW1lcygpLnRpbWVvdXRFdmVudCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3htbC9YTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnRUaHJvdHRsZS5oIGIvU291cmNlL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudFRocm90dGxlLmgKaW5kZXggNTUzZjEw
Mzk4YTRjMDc5OWQ4NjhmNjUxYmZjMDZhNDlhNmQyMjA5Ny4uMTk1MzE2YzQyODdmNmMwZDZjZTlk
M2ZiOTU2N2E2NzQyNTMyZjdmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0
dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudFRocm90dGxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1s
L1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudFRocm90dGxlLmgKQEAgLTQ5LDcgKzQ5LDcgQEAg
cHVibGljOgogCiAgICAgdm9pZCBkaXNwYXRjaFRocm90dGxlZFByb2dyZXNzRXZlbnQoYm9vbCBs
ZW5ndGhDb21wdXRhYmxlLCB1bnNpZ25lZCBsb25nIGxvbmcgbG9hZGVkLCB1bnNpZ25lZCBsb25n
IGxvbmcgdG90YWwpOwogICAgIHZvaWQgZGlzcGF0Y2hSZWFkeVN0YXRlQ2hhbmdlRXZlbnQoRXZl
bnQmLCBQcm9ncmVzc0V2ZW50QWN0aW9uID0gRG9Ob3RGbHVzaFByb2dyZXNzRXZlbnQpOwotICAg
IHZvaWQgZGlzcGF0Y2hQcm9ncmVzc0V2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYpOworICAgIHZv
aWQgZGlzcGF0Y2hQcm9ncmVzc0V2ZW50KGNvbnN0IEF0b21TdHJpbmcmKTsKIAogICAgIHZvaWQg
c3VzcGVuZCgpOwogICAgIHZvaWQgcmVzdW1lKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvWE1MSHR0cFJlcXVlc3RVcGxvYWQuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0
dHBSZXF1ZXN0VXBsb2FkLmNwcAppbmRleCBlOTJhNDlmMmY1MTQwN2I0ZTU0OWY0YmVhYTI2OGY3
NDJjYmNkNmUzLi45MjlhMzRjYjc2ZTAwY2I1MTMwYTFmMThhZTI0OTIxNTEzMzFiZTcxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3RVcGxvYWQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdFVwbG9hZC5jcHAKQEAgLTMwLDcgKzMw
LDcgQEAKICNpbmNsdWRlICJYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuaCIKICNpbmNsdWRl
IDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+Ci0j
aW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRv
bVN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQxLDcgKzQxLDcgQEAgWE1M
SHR0cFJlcXVlc3RVcGxvYWQ6OlhNTEh0dHBSZXF1ZXN0VXBsb2FkKFhNTEh0dHBSZXF1ZXN0JiBy
ZXF1ZXN0KQogewogfQogCi12b2lkIFhNTEh0dHBSZXF1ZXN0VXBsb2FkOjpkaXNwYXRjaFByb2dy
ZXNzRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCB1bnNpZ25lZCBsb25nIGxvbmcgbG9h
ZGVkLCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWwpCit2b2lkIFhNTEh0dHBSZXF1ZXN0VXBsb2Fk
OjpkaXNwYXRjaFByb2dyZXNzRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgdW5zaWduZWQg
bG9uZyBsb25nIGxvYWRlZCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsKQogewogICAgIEFTU0VS
VCh0eXBlID09IGV2ZW50TmFtZXMoKS5sb2Fkc3RhcnRFdmVudCB8fCB0eXBlID09IGV2ZW50TmFt
ZXMoKS5wcm9ncmVzc0V2ZW50IHx8IHR5cGUgPT0gZXZlbnROYW1lcygpLmxvYWRFdmVudCB8fCB0
eXBlID09IGV2ZW50TmFtZXMoKS5sb2FkZW5kRXZlbnQgfHwgdHlwZSA9PSBldmVudE5hbWVzKCku
YWJvcnRFdmVudCB8fCB0eXBlID09IGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50IHx8IHR5cGUgPT0g
ZXZlbnROYW1lcygpLnRpbWVvdXRFdmVudCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3htbC9YTUxIdHRwUmVxdWVzdFVwbG9hZC5oIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBS
ZXF1ZXN0VXBsb2FkLmgKaW5kZXggZDM5OWZkYjdmM2JiZThiMWRlYjMyNzk1OWI4NTUxMWQ2MjNh
NmRkOC4uZDA5OWQyYmEyYjQ0YTExY2E2ZTQ4YmYyOTI4N2U5MTk5ODc5ZWRjNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0VXBsb2FkLmgKKysrIGIvU291cmNl
L1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0VXBsb2FkLmgKQEAgLTM4LDcgKzM4LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgcmVmKCkgeyBtX3JlcXVlc3QucmVmKCk7IH0KICAgICB2b2lkIGRlcmVm
KCkgeyBtX3JlcXVlc3QuZGVyZWYoKTsgfQogCi0gICAgdm9pZCBkaXNwYXRjaFByb2dyZXNzRXZl
bnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCB1bnNpZ25lZCBsb25nIGxvbmcgbG9hZGVkLCB1
bnNpZ25lZCBsb25nIGxvbmcgdG90YWwpOworICAgIHZvaWQgZGlzcGF0Y2hQcm9ncmVzc0V2ZW50
KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIHVuc2lnbmVkIGxvbmcgbG9uZyBsb2FkZWQsIHVuc2ln
bmVkIGxvbmcgbG9uZyB0b3RhbCk7CiAKIHByaXZhdGU6CiAgICAgdm9pZCByZWZFdmVudFRhcmdl
dCgpIGZpbmFsIHsgcmVmKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxU
cmVlVmlld2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxUcmVlVmlld2VyLmNwcAppbmRl
eCA5M2RlYjhlNmQzYzQ0NDhlMWRhYmUwYzdlZTJhNDAzMDAyYTVlMWMzLi5mZTAxY2MxZmY0OTFj
MzY3ZmNhZDk3YmZkNGQ2YzRlNzMwZjZiZGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94
bWwvWE1MVHJlZVZpZXdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTFRyZWVWaWV3
ZXIuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgWE1MVHJlZVZpZXdlcjo6dHJhbnNmb3JtRG9j
dW1lbnRUb1RyZWVWaWV3KCkKIAogICAgIFN0cmluZyBzY3JpcHRTdHJpbmcgPSBTdHJpbmdJbXBs
OjpjcmVhdGVXaXRob3V0Q29weWluZyhYTUxWaWV3ZXJfanMsIHNpemVvZihYTUxWaWV3ZXJfanMp
KTsKICAgICBtX2RvY3VtZW50LmZyYW1lKCktPnNjcmlwdCgpLmV2YWx1YXRlKFNjcmlwdFNvdXJj
ZUNvZGUoc2NyaXB0U3RyaW5nKSk7Ci0gICAgbV9kb2N1bWVudC5mcmFtZSgpLT5zY3JpcHQoKS5l
dmFsdWF0ZShTY3JpcHRTb3VyY2VDb2RlKEF0b21pY1N0cmluZygicHJlcGFyZVdlYktpdFhNTFZp
ZXdlcignVGhpcyBYTUwgZmlsZSBkb2VzIG5vdCBhcHBlYXIgdG8gaGF2ZSBhbnkgc3R5bGUgaW5m
b3JtYXRpb24gYXNzb2NpYXRlZCB3aXRoIGl0LiBUaGUgZG9jdW1lbnQgdHJlZSBpcyBzaG93biBi
ZWxvdy4nKTsiKSkpOworICAgIG1fZG9jdW1lbnQuZnJhbWUoKS0+c2NyaXB0KCkuZXZhbHVhdGUo
U2NyaXB0U291cmNlQ29kZShBdG9tU3RyaW5nKCJwcmVwYXJlV2ViS2l0WE1MVmlld2VyKCdUaGlz
IFhNTCBmaWxlIGRvZXMgbm90IGFwcGVhciB0byBoYXZlIGFueSBzdHlsZSBpbmZvcm1hdGlvbiBh
c3NvY2lhdGVkIHdpdGggaXQuIFRoZSBkb2N1bWVudCB0cmVlIGlzIHNob3duIGJlbG93LicpOyIp
KSk7CiAKICAgICBTdHJpbmcgY3NzU3RyaW5nID0gU3RyaW5nSW1wbDo6Y3JlYXRlV2l0aG91dENv
cHlpbmcoWE1MVmlld2VyX2Nzcywgc2l6ZW9mKFhNTFZpZXdlcl9jc3MpKTsKICAgICBhdXRvIHRl
eHQgPSBtX2RvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNzc1N0cmluZyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS94bWwvWFBhdGhGdW5jdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUveG1s
L1hQYXRoRnVuY3Rpb25zLmNwcAppbmRleCA3MzUzNGE0NzRmNWIxYjQ3NjM5YTJjYWI3Y2QzNWQ4
YmFjMTdjYzdjLi5hZDdlMTNjOGExOTRhZDU2ZDYyMzQyMDAwMTdjYmE3N2ZlODBiNzQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3htbC9YUGF0aEZ1bmN0aW9ucy5jcHAKQEAgLTMwNCwxMyArMzA0LDEzIEBAIFZh
bHVlIEZ1blBvc2l0aW9uOjpldmFsdWF0ZSgpIGNvbnN0CiAgICAgcmV0dXJuIEV4cHJlc3Npb246
OmV2YWx1YXRpb25Db250ZXh0KCkucG9zaXRpb247CiB9CiAKLXN0YXRpYyBBdG9taWNTdHJpbmcg
YXRvbWljU3Vic3RyaW5nKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIHVuc2lnbmVkIHN0YXJ0LCB1
bnNpZ25lZCBsZW5ndGgpCitzdGF0aWMgQXRvbVN0cmluZyBhdG9taWNTdWJzdHJpbmcoU3RyaW5n
QnVpbGRlciYgYnVpbGRlciwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCkKIHsKICAg
ICBBU1NFUlQoc3RhcnQgPD0gYnVpbGRlci5sZW5ndGgoKSk7CiAgICAgQVNTRVJUKGxlbmd0aCA8
PSBidWlsZGVyLmxlbmd0aCgpIC0gc3RhcnQpOwogICAgIGlmIChidWlsZGVyLmlzOEJpdCgpKQot
ICAgICAgICByZXR1cm4gQXRvbWljU3RyaW5nKGJ1aWxkZXIuY2hhcmFjdGVyczgoKSArIHN0YXJ0
LCBsZW5ndGgpOwotICAgIHJldHVybiBBdG9taWNTdHJpbmcoYnVpbGRlci5jaGFyYWN0ZXJzMTYo
KSArIHN0YXJ0LCBsZW5ndGgpOworICAgICAgICByZXR1cm4gQXRvbVN0cmluZyhidWlsZGVyLmNo
YXJhY3RlcnM4KCkgKyBzdGFydCwgbGVuZ3RoKTsKKyAgICByZXR1cm4gQXRvbVN0cmluZyhidWls
ZGVyLmNoYXJhY3RlcnMxNigpICsgc3RhcnQsIGxlbmd0aCk7CiB9CiAKIFZhbHVlIEZ1bklkOjpl
dmFsdWF0ZSgpIGNvbnN0CkBAIC0zNjcsNyArMzY3LDcgQEAgc3RhdGljIGlubGluZSBTdHJpbmcg
ZXhwYW5kZWROYW1lTG9jYWxQYXJ0KE5vZGUqIG5vZGUpCiAKIHN0YXRpYyBpbmxpbmUgU3RyaW5n
IGV4cGFuZGVkTmFtZShOb2RlKiBub2RlKQogewotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgcHJl
Zml4ID0gbm9kZS0+cHJlZml4KCk7CisgICAgY29uc3QgQXRvbVN0cmluZyYgcHJlZml4ID0gbm9k
ZS0+cHJlZml4KCk7CiAgICAgcmV0dXJuIHByZWZpeC5pc0VtcHR5KCkgPyBleHBhbmRlZE5hbWVM
b2NhbFBhcnQobm9kZSkgOiBwcmVmaXggKyAiOiIgKyBleHBhbmRlZE5hbWVMb2NhbFBhcnQobm9k
ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFN0ZXAuY3BwIGIv
U291cmNlL1dlYkNvcmUveG1sL1hQYXRoU3RlcC5jcHAKaW5kZXggNGI1NTkxN2EzNzFiNmFhNmMy
NGYyZDM1MGZjZTk5N2QwZWQ5ZTlmNS4uNDAwM2NmMjdhODg5ZTJmNTc0NTUyMjU4M2M4M2E0ZTEz
NDg4NWYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoU3RlcC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoU3RlcC5jcHAKQEAgLTE2NSwxNCArMTY1LDE0IEBA
IGlubGluZSBib29sIG5vZGVNYXRjaGVzQmFzaWNUZXN0KE5vZGUmIG5vZGUsIFN0ZXA6OkF4aXMg
YXhpcywgY29uc3QgU3RlcDo6Tm9kZVRlCiAgICAgICAgIGNhc2UgU3RlcDo6Tm9kZVRlc3Q6OkNv
bW1lbnROb2RlVGVzdDoKICAgICAgICAgICAgIHJldHVybiBub2RlLm5vZGVUeXBlKCkgPT0gTm9k
ZTo6Q09NTUVOVF9OT0RFOwogICAgICAgICBjYXNlIFN0ZXA6Ok5vZGVUZXN0OjpQcm9jZXNzaW5n
SW5zdHJ1Y3Rpb25Ob2RlVGVzdDogewotICAgICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lID0gbm9kZVRlc3QubV9kYXRhOworICAgICAgICAgICAgY29uc3QgQXRvbVN0cmluZyYgbmFt
ZSA9IG5vZGVUZXN0Lm1fZGF0YTsKICAgICAgICAgICAgIHJldHVybiBub2RlLm5vZGVUeXBlKCkg
PT0gTm9kZTo6UFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RFICYmIChuYW1lLmlzRW1wdHkoKSB8
fCBub2RlLm5vZGVOYW1lKCkgPT0gbmFtZSk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBTdGVw
OjpOb2RlVGVzdDo6QW55Tm9kZVRlc3Q6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgY2FzZSBTdGVwOjpOb2RlVGVzdDo6TmFtZVRlc3Q6IHsKLSAgICAgICAgICAgIGNvbnN0IEF0
b21pY1N0cmluZyYgbmFtZSA9IG5vZGVUZXN0Lm1fZGF0YTsKLSAgICAgICAgICAgIGNvbnN0IEF0
b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJID0gbm9kZVRlc3QubV9uYW1lc3BhY2VVUkk7CisgICAg
ICAgICAgICBjb25zdCBBdG9tU3RyaW5nJiBuYW1lID0gbm9kZVRlc3QubV9kYXRhOworICAgICAg
ICAgICAgY29uc3QgQXRvbVN0cmluZyYgbmFtZXNwYWNlVVJJID0gbm9kZVRlc3QubV9uYW1lc3Bh
Y2VVUkk7CiAKICAgICAgICAgICAgIGlmIChheGlzID09IFN0ZXA6OkF0dHJpYnV0ZUF4aXMpIHsK
ICAgICAgICAgICAgICAgICBBU1NFUlQobm9kZS5pc0F0dHJpYnV0ZU5vZGUoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhTdGVwLmggYi9Tb3VyY2UvV2ViQ29yZS94bWwv
WFBhdGhTdGVwLmgKaW5kZXggMGU1ZmQ2MjljZGEyZDcwY2Y0OTkzMjJmOWUyOTA3MTRiYWEyNTZi
Ni4uZmJmZDkyZTExOGZmODRiZjg1MTIyNDYwM2M1ZmI0NjYwYjhjZWIxMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUveG1sL1hQYXRoU3RlcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9Y
UGF0aFN0ZXAuaApAQCAtMjcsNyArMjcsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvQXRvbVN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTU1
LDggKzU1LDggQEAgcHVibGljOgogICAgICAgICBlbnVtIEtpbmQgeyBUZXh0Tm9kZVRlc3QsIENv
bW1lbnROb2RlVGVzdCwgUHJvY2Vzc2luZ0luc3RydWN0aW9uTm9kZVRlc3QsIEFueU5vZGVUZXN0
LCBOYW1lVGVzdCB9OwogCiAgICAgICAgIGV4cGxpY2l0IE5vZGVUZXN0KEtpbmQga2luZCkgOiBt
X2tpbmQoa2luZCkgeyB9Ci0gICAgICAgIE5vZGVUZXN0KEtpbmQga2luZCwgY29uc3QgQXRvbWlj
U3RyaW5nJiBkYXRhKSA6IG1fa2luZChraW5kKSwgbV9kYXRhKGRhdGEpIHsgfQotICAgICAgICBO
b2RlVGVzdChLaW5kIGtpbmQsIGNvbnN0IEF0b21pY1N0cmluZyYgZGF0YSwgY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lc3BhY2VVUkkpIDogbV9raW5kKGtpbmQpLCBtX2RhdGEoZGF0YSksIG1fbmFt
ZXNwYWNlVVJJKG5hbWVzcGFjZVVSSSkgeyB9CisgICAgICAgIE5vZGVUZXN0KEtpbmQga2luZCwg
Y29uc3QgQXRvbVN0cmluZyYgZGF0YSkgOiBtX2tpbmQoa2luZCksIG1fZGF0YShkYXRhKSB7IH0K
KyAgICAgICAgTm9kZVRlc3QoS2luZCBraW5kLCBjb25zdCBBdG9tU3RyaW5nJiBkYXRhLCBjb25z
dCBBdG9tU3RyaW5nJiBuYW1lc3BhY2VVUkkpIDogbV9raW5kKGtpbmQpLCBtX2RhdGEoZGF0YSks
IG1fbmFtZXNwYWNlVVJJKG5hbWVzcGFjZVVSSSkgeyB9CiAKICAgICBwcml2YXRlOgogICAgICAg
ICBmcmllbmQgY2xhc3MgU3RlcDsKQEAgLTY1LDggKzY1LDggQEAgcHVibGljOgogICAgICAgICBm
cmllbmQgYm9vbCBub2RlTWF0Y2hlcyhOb2RlJiwgQXhpcywgY29uc3QgTm9kZVRlc3QmKTsKIAog
ICAgICAgICBLaW5kIG1fa2luZDsKLSAgICAgICAgQXRvbWljU3RyaW5nIG1fZGF0YTsKLSAgICAg
ICAgQXRvbWljU3RyaW5nIG1fbmFtZXNwYWNlVVJJOworICAgICAgICBBdG9tU3RyaW5nIG1fZGF0
YTsKKyAgICAgICAgQXRvbVN0cmluZyBtX25hbWVzcGFjZVVSSTsKICAgICAgICAgVmVjdG9yPHN0
ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPj4gbV9tZXJnZWRQcmVkaWNhdGVzOwogICAgIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuaAppbmRleCBl
ODIyYzIzYTBkYzhlNGMzNmUzMGNmM2M1YjBjNzY1OTA5NDBmNDlmLi5iM2Q5ZDkzYTdlYTI0MGU1
YzU0NmU1MWNiYWIwMzI5N2QzZDkyZmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwv
cGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNl
ci9YTUxEb2N1bWVudFBhcnNlci5oCkBAIC0zMiw3ICszMiw3IEBACiAjaW5jbHVkZSA8bGlieG1s
L3RyZWUuaD4KICNpbmNsdWRlIDxsaWJ4bWwveG1sc3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmdIYXNoLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvQXRvbVN0cmluZ0hhc2guaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE4MCw5ICsxODAsOSBAQCBwcml2YXRlOgog
ICAgIFRleHRQb3NpdGlvbiBtX3NjcmlwdFN0YXJ0UG9zaXRpb247CiAKICAgICBib29sIG1fcGFy
c2luZ0ZyYWdtZW50IHsgZmFsc2UgfTsKLSAgICBBdG9taWNTdHJpbmcgbV9kZWZhdWx0TmFtZXNw
YWNlVVJJOworICAgIEF0b21TdHJpbmcgbV9kZWZhdWx0TmFtZXNwYWNlVVJJOwogCi0gICAgSGFz
aE1hcDxBdG9taWNTdHJpbmcsIEF0b21pY1N0cmluZz4gbV9wcmVmaXhUb05hbWVzcGFjZU1hcDsK
KyAgICBIYXNoTWFwPEF0b21TdHJpbmcsIEF0b21TdHJpbmc+IG1fcHJlZml4VG9OYW1lc3BhY2VN
YXA7CiAgICAgU2VnbWVudGVkU3RyaW5nIG1fcGVuZGluZ1NyYzsKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcApp
bmRleCA5ZGMyY2IwOTYzODM2ZjBjNGFhZjhkMTljM2ExM2UzZDY4ZDgxYTFhLi5iOTMxMDFiOGFh
YzQ4MzlhMzliYjU0YjJiODlkZTg5OGM3OWI3NWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCkBAIC02NzMsMTQg
KzY3MywxNCBAQCBzdGF0aWMgaW5saW5lIFN0cmluZyB0b1N0cmluZyhjb25zdCB4bWxDaGFyKiBz
dHJpbmcpCiAgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBjaGFyKj4oc3RyaW5nKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgQXRvbWljU3RyaW5nIHRvQXRv
bWljU3RyaW5nKGNvbnN0IHhtbENoYXIqIHN0cmluZywgc2l6ZV90IHNpemUpCitzdGF0aWMgaW5s
aW5lIEF0b21TdHJpbmcgdG9BdG9tU3RyaW5nKGNvbnN0IHhtbENoYXIqIHN0cmluZywgc2l6ZV90
IHNpemUpCiB7Ci0gICAgcmV0dXJuIEF0b21pY1N0cmluZzo6ZnJvbVVURjgocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBjaGFyKj4oc3RyaW5nKSwgc2l6ZSk7CisgICAgcmV0dXJuIEF0b21TdHJpbmc6
OmZyb21VVEY4KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHN0cmluZyksIHNpemUpOwog
fQogCi1zdGF0aWMgaW5saW5lIEF0b21pY1N0cmluZyB0b0F0b21pY1N0cmluZyhjb25zdCB4bWxD
aGFyKiBzdHJpbmcpCitzdGF0aWMgaW5saW5lIEF0b21TdHJpbmcgdG9BdG9tU3RyaW5nKGNvbnN0
IHhtbENoYXIqIHN0cmluZykKIHsKLSAgICByZXR1cm4gQXRvbWljU3RyaW5nOjpmcm9tVVRGOChy
ZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihzdHJpbmcpKTsKKyAgICByZXR1cm4gQXRvbVN0
cmluZzo6ZnJvbVVURjgocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oc3RyaW5nKSk7CiB9
CiAKIHN0cnVjdCBfeG1sU0FYMk5hbWVzcGFjZSB7CkBAIC02OTMsOCArNjkzLDggQEAgc3RhdGlj
IGlubGluZSBib29sIGhhbmRsZU5hbWVzcGFjZUF0dHJpYnV0ZXMoVmVjdG9yPEF0dHJpYnV0ZT4m
IHByZWZpeGVkQXR0cmlidXQKIHsKICAgICB4bWxTQVgyTmFtZXNwYWNlKiBuYW1lc3BhY2VzID0g
cmVpbnRlcnByZXRfY2FzdDx4bWxTQVgyTmFtZXNwYWNlKj4obGlieG1sTmFtZXNwYWNlcyk7CiAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1OYW1lc3BhY2VzOyBpKyspIHsKLSAgICAgICAgQXRv
bWljU3RyaW5nIG5hbWVzcGFjZVFOYW1lID0geG1sbnNBdG9tKCk7Ci0gICAgICAgIEF0b21pY1N0
cmluZyBuYW1lc3BhY2VVUkkgPSB0b0F0b21pY1N0cmluZyhuYW1lc3BhY2VzW2ldLnVyaSk7Cisg
ICAgICAgIEF0b21TdHJpbmcgbmFtZXNwYWNlUU5hbWUgPSB4bWxuc0F0b20oKTsKKyAgICAgICAg
QXRvbVN0cmluZyBuYW1lc3BhY2VVUkkgPSB0b0F0b21TdHJpbmcobmFtZXNwYWNlc1tpXS51cmkp
OwogICAgICAgICBpZiAobmFtZXNwYWNlc1tpXS5wcmVmaXgpCiAgICAgICAgICAgICBuYW1lc3Bh
Y2VRTmFtZSA9ICJ4bWxuczoiICsgdG9TdHJpbmcobmFtZXNwYWNlc1tpXS5wcmVmaXgpOwogCkBA
IC03MjEsMTAgKzcyMSwxMCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaGFuZGxlRWxlbWVudEF0dHJp
YnV0ZXMoVmVjdG9yPEF0dHJpYnV0ZT4mIHByZWZpeGVkQXR0cmlidXRlcwogICAgIHhtbFNBWDJB
dHRyaWJ1dGVzKiBhdHRyaWJ1dGVzID0gcmVpbnRlcnByZXRfY2FzdDx4bWxTQVgyQXR0cmlidXRl
cyo+KGxpYnhtbEF0dHJpYnV0ZXMpOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtQXR0cmli
dXRlczsgaSsrKSB7CiAgICAgICAgIGludCB2YWx1ZUxlbmd0aCA9IHN0YXRpY19jYXN0PGludD4o
YXR0cmlidXRlc1tpXS5lbmQgLSBhdHRyaWJ1dGVzW2ldLnZhbHVlKTsKLSAgICAgICAgQXRvbWlj
U3RyaW5nIGF0dHJWYWx1ZSA9IHRvQXRvbWljU3RyaW5nKGF0dHJpYnV0ZXNbaV0udmFsdWUsIHZh
bHVlTGVuZ3RoKTsKKyAgICAgICAgQXRvbVN0cmluZyBhdHRyVmFsdWUgPSB0b0F0b21TdHJpbmco
YXR0cmlidXRlc1tpXS52YWx1ZSwgdmFsdWVMZW5ndGgpOwogICAgICAgICBTdHJpbmcgYXR0clBy
ZWZpeCA9IHRvU3RyaW5nKGF0dHJpYnV0ZXNbaV0ucHJlZml4KTsKLSAgICAgICAgQXRvbWljU3Ry
aW5nIGF0dHJVUkkgPSBhdHRyUHJlZml4LmlzRW1wdHkoKSA/IG51bGxBdG9tKCkgOiB0b0F0b21p
Y1N0cmluZyhhdHRyaWJ1dGVzW2ldLnVyaSk7Ci0gICAgICAgIEF0b21pY1N0cmluZyBhdHRyUU5h
bWUgPSBhdHRyUHJlZml4LmlzRW1wdHkoKSA/IHRvQXRvbWljU3RyaW5nKGF0dHJpYnV0ZXNbaV0u
bG9jYWxuYW1lKSA6IGF0dHJQcmVmaXggKyAiOiIgKyB0b1N0cmluZyhhdHRyaWJ1dGVzW2ldLmxv
Y2FsbmFtZSk7CisgICAgICAgIEF0b21TdHJpbmcgYXR0clVSSSA9IGF0dHJQcmVmaXguaXNFbXB0
eSgpID8gbnVsbEF0b20oKSA6IHRvQXRvbVN0cmluZyhhdHRyaWJ1dGVzW2ldLnVyaSk7CisgICAg
ICAgIEF0b21TdHJpbmcgYXR0clFOYW1lID0gYXR0clByZWZpeC5pc0VtcHR5KCkgPyB0b0F0b21T
dHJpbmcoYXR0cmlidXRlc1tpXS5sb2NhbG5hbWUpIDogYXR0clByZWZpeCArICI6IiArIHRvU3Ry
aW5nKGF0dHJpYnV0ZXNbaV0ubG9jYWxuYW1lKTsKIAogICAgICAgICBhdXRvIHJlc3VsdCA9IEVs
ZW1lbnQ6OnBhcnNlQXR0cmlidXRlTmFtZShhdHRyVVJJLCBhdHRyUU5hbWUpOwogICAgICAgICBp
ZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQpAQCAtNzYxLDkgKzc2MSw5IEBAIHZvaWQgWE1MRG9j
dW1lbnRQYXJzZXI6OnN0YXJ0RWxlbWVudE5zKGNvbnN0IHhtbENoYXIqIHhtbExvY2FsTmFtZSwg
Y29uc3QgeG1sQ2hhCiAgICAgaWYgKCF1cGRhdGVMZWFmVGV4dE5vZGUoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgQXRvbWljU3RyaW5nIGxvY2FsTmFtZSA9IHRvQXRvbWljU3RyaW5nKHhtbExv
Y2FsTmFtZSk7Ci0gICAgQXRvbWljU3RyaW5nIHVyaSA9IHRvQXRvbWljU3RyaW5nKHhtbFVSSSk7
Ci0gICAgQXRvbWljU3RyaW5nIHByZWZpeCA9IHRvQXRvbWljU3RyaW5nKHhtbFByZWZpeCk7Cisg
ICAgQXRvbVN0cmluZyBsb2NhbE5hbWUgPSB0b0F0b21TdHJpbmcoeG1sTG9jYWxOYW1lKTsKKyAg
ICBBdG9tU3RyaW5nIHVyaSA9IHRvQXRvbVN0cmluZyh4bWxVUkkpOworICAgIEF0b21TdHJpbmcg
cHJlZml4ID0gdG9BdG9tU3RyaW5nKHhtbFByZWZpeCk7CiAKICAgICBpZiAobV9wYXJzaW5nRnJh
Z21lbnQgJiYgdXJpLmlzTnVsbCgpKSB7CiAgICAgICAgIGlmICghcHJlZml4LmlzTnVsbCgpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRl
eCBkZDlhMWUzYThjNWQ3NmQyZGQ0MzUzMDNiN2I4MzY1Y2NhZTA5MmUyLi5mMjVlN2U2MDJkMDk2
NDY1MmU2ODFmNTNhYjFlZjliNDc5N2JmMmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtODUsNyArODUsNyBAQAogI2luY2x1ZGUg
PHd0Zi9PcHRpb25TZXQuaD4KICNpbmNsdWRlIDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9SdW5Mb29wLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZy5oPgogCiAjaWYgRU5BQkxFKFNFQ19JVEVN
X1NISU0pCiAjaW5jbHVkZSAiU2VjSXRlbVNoaW0uaCIKQEAgLTI4OCw3ICsyODgsNyBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMmJgogICAgIHBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNz
KHBhcmFtZXRlcnMpOwogCiAgICAgV1RGOjpUaHJlYWQ6OnNldEN1cnJlbnRUaHJlYWRJc1VzZXJJ
bml0aWF0ZWQoKTsKLSAgICBBdG9taWNTdHJpbmc6OmluaXQoKTsKKyAgICBBdG9tU3RyaW5nOjpp
bml0KCk7CiAKICAgICBtX3N1cHByZXNzTWVtb3J5UHJlc3N1cmVIYW5kbGVyID0gcGFyYW1ldGVy
cy5zaG91bGRTdXBwcmVzc01lbW9yeVByZXNzdXJlSGFuZGxlcjsKICAgICBpZiAoIW1fc3VwcHJl
c3NNZW1vcnlQcmVzc3VyZUhhbmRsZXIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAppbmRleCBlNWU2ODEzOGZmNTVlZmQxMjc0
M2I1ZmJkNjZhMDQ2ZmYzNGJhMjBiLi4xMzEwOTMxYjRiMGFmNzBkOGY2NWFkNzc0ZDJmNGQ5YWJk
NDcwMWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGUuY3BwCkBAIC01MiwxMCArNTIsMTAgQEAgbmFtZXNwYWNlIE5ldHdvcmtDYWNo
ZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBGaWxlU3lzdGVtOwogCi1zdGF0aWMgY29uc3QgQXRvbWlj
U3RyaW5nJiByZXNvdXJjZVR5cGUoKQorc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIHJlc291cmNl
VHlwZSgpCiB7CiAgICAgQVNTRVJUKFdURjo6UnVuTG9vcDo6aXNNYWluKCkpOwotICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IHJlc291cmNlKCJSZXNvdXJjZSIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiByZXNvdXJjZSgiUmVzb3VyY2UiLCBBdG9tU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHJlc291cmNlOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNw
ZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcAppbmRleCA0MGNjYzVl
MGM2ZmE5NDllMzZkY2FiNjY1OThmMjY4NGI5YzZkZWU4Li42MmY3ZGU1YTA3ZWMxZjUyOWE2YWEz
OTQ5Y2JjMzBiZTlmNmJkNjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVM
b2FkTWFuYWdlci5jcHAKQEAgLTczLDEwICs3MywxMCBAQCBzdGF0aWMgdm9pZCBsb2dTcGVjdWxh
dGl2ZUxvYWRpbmdEaWFnbm9zdGljTWVzc2FnZShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nl
cwogICAgIG5ldHdvcmtQcm9jZXNzLmxvZ0RpYWdub3N0aWNNZXNzYWdlKGZyYW1lSUQuZmlyc3Qs
IFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6bmV0d29ya0NhY2hlS2V5KCksIG1lc3Nh
Z2UsIFdlYkNvcmU6OlNob3VsZFNhbXBsZTo6WWVzKTsKIH0KIAotc3RhdGljIGNvbnN0IEF0b21p
Y1N0cmluZyYgc3VicmVzb3VyY2VzVHlwZSgpCitzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgc3Vi
cmVzb3VyY2VzVHlwZSgpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiByZXNvdXJjZSgiU3ViUmVz
b3VyY2VzIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHJlc291cmNlKCJTdWJSZXNvdXJjZXMi
LCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgcmV0dXJuIHJlc291cmNl
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENv
ZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5jcHAK
aW5kZXggMDJiZjRkY2Q3MGVkYjQxMWU4YzUzNWEzYWIxMzgwODViNjhhMTc5Mi4uNTZlNjYzOWI4
ZTgzNmMwM2NkODUwMGRiYjQ4MTg4YjMzYzYwMjhlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmNwcApAQCAtNTYsMTggKzU2LDE4IEBAIE9wdGlvbmFs
PFdhbGxUaW1lPiBBcmd1bWVudENvZGVyPFdhbGxUaW1lPjo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCiAgICAgcmV0dXJuIFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcygqdGltZSk7CiB9CiAKLXZv
aWQgQXJndW1lbnRDb2RlcjxBdG9taWNTdHJpbmc+OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlciwg
Y29uc3QgQXRvbWljU3RyaW5nJiBhdG9taWNTdHJpbmcpCit2b2lkIEFyZ3VtZW50Q29kZXI8QXRv
bVN0cmluZz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBBdG9tU3RyaW5nJiBhdG9t
U3RyaW5nKQogewotICAgIGVuY29kZXIgPDwgYXRvbWljU3RyaW5nLnN0cmluZygpOworICAgIGVu
Y29kZXIgPDwgYXRvbVN0cmluZy5zdHJpbmcoKTsKIH0KIAotYm9vbCBBcmd1bWVudENvZGVyPEF0
b21pY1N0cmluZz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBBdG9taWNTdHJpbmcmIGF0b21p
Y1N0cmluZykKK2Jvb2wgQXJndW1lbnRDb2RlcjxBdG9tU3RyaW5nPjo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIsIEF0b21TdHJpbmcmIGF0b21TdHJpbmcpCiB7CiAgICAgU3RyaW5nIHN0cmluZzsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0cmluZykpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIGF0b21pY1N0cmluZyA9IHN0cmluZzsKKyAgICBhdG9tU3RyaW5nID0gc3RyaW5nOwog
ICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9Bcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1l
bnRDb2RlcnMuaAppbmRleCBlZmEyZGI1NGIxMGM1YWJlNmI4Zjc3ODc3YWFjYWQ4MmI0ODM1NmI0
Li5hYTNmY2U2N2NiOTI3NDg4OTZiMzE0ZmI0YWJiMzAyZGVhNTdmZmMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKQEAgLTYxNSw5ICs2MTUsOSBAQCB0
ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdhbGxUaW1lPiB7CiAgICAgc3RhdGljIE9w
dGlvbmFsPFdhbGxUaW1lPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAotdGVtcGxhdGU8PiBzdHJ1
Y3QgQXJndW1lbnRDb2RlcjxBdG9taWNTdHJpbmc+IHsKLSAgICBzdGF0aWMgdm9pZCBlbmNvZGUo
RW5jb2RlciYsIGNvbnN0IEF0b21pY1N0cmluZyYpOwotICAgIHN0YXRpYyBib29sIGRlY29kZShE
ZWNvZGVyJiwgQXRvbWljU3RyaW5nJik7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVy
PEF0b21TdHJpbmc+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IEF0
b21TdHJpbmcmKTsKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYsIEF0b21TdHJpbmcm
KTsKIH07CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8Q1N0cmluZz4gewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0
b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RT
dG9yZS5jcHAKaW5kZXggMDMwNjU3YzBmYWUwOWM2MTJmMzI3NGFkOGM2NjFmMjcxNzViZDg5NS4u
ZDQwOWRhOThiN2E2YjEwNmI4NTBlMDBhNjE3ZWZlMmRiOTllMjg3OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3Bw
CkBAIC00NjcsNyArNDY3LDcgQEAgdm9pZCBDb250ZW50UnVsZUxpc3RTdG9yZTo6Z2V0QXZhaWxh
YmxlQ29udGVudFJ1bGVMaXN0SWRlbnRpZmllcnMoQ29tcGxldGlvbkhhbmQKIAogdm9pZCBDb250
ZW50UnVsZUxpc3RTdG9yZTo6Y29tcGlsZUNvbnRlbnRSdWxlTGlzdChjb25zdCBXVEY6OlN0cmlu
ZyYgaWRlbnRpZmllciwgV1RGOjpTdHJpbmcmJiBqc29uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFJlZlB0cjxBUEk6OkNvbnRlbnRSdWxlTGlzdD4sIHN0ZDo6ZXJyb3JfY29kZSk+IGNvbXBsZXRp
b25IYW5kbGVyKQogewotICAgIEF0b21pY1N0cmluZzo6aW5pdCgpOworICAgIEF0b21TdHJpbmc6
OmluaXQoKTsKICAgICBXZWJDb3JlOjpRdWFsaWZpZWROYW1lOjppbml0KCk7CiAgICAgCiAgICAg
YXV0byBwYXJzZWRSdWxlcyA9IFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpwYXJzZVJ1bGVM
aXN0KGpzb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRz
L0Rvd25sb2FkUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWRQcm94eS5tZXNzYWdlcy5pbgppbmRleCBlYTU2ZGFiMWQ2MjVkY2VmZjNi
MjcwOTdhYjg1MTJiYWRjZDZhNzllLi4zNzU3ZjhmMTI4YTMxODFhYTRiNDkyMjFmMWUzOWZkYjlm
MjgzMDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWRQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWRQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjEsNyArMjEsNyBAQAogIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogCiBtZXNzYWdlcyAtPiBEb3dubG9hZFByb3h5IHsKLSAgICBEaWRTdGFydChXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgQXRvbWljU3RyaW5nIHN1Z2dlc3RlZEZpbGVu
YW1lKQorICAgIERpZFN0YXJ0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBBdG9t
U3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lKQogICAgIERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBjaGFsbGVuZ2UsIHVpbnQ2
NF90IGNoYWxsZW5nZUlEKQogICAgIFdpbGxTZW5kUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0
UmVzcG9uc2UpKQogICAgIERlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQXN5
bmMoV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFt
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5LmNwcApp
bmRleCAzNDkxMzgzYTM3NTc5N2EzZmZjMmI2ZDk2ZDVlMzljYmQyNjRkOTBmLi5kNTlkOWMxYmRm
NzljZGI3MzM5ODA1Y2RhNzc4ODgzMjkyN2U1NDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90
ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuY3BwCkBAIC0xODIsNyArMTgyLDcgQEAgdm9pZCBS
ZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5OjpoYW5kbGVNb3VzZUV2ZW50KGNvbnN0IFdl
YkNvcmU6OlBsYXRmb3JtTW8KICAgICBtX3Njcm9sbGluZ1RyZWUtPmhhbmRsZU1vdXNlRXZlbnQo
ZXZlbnQpOwogfQogCi1UcmFja2luZ1R5cGUgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94
eTo6ZXZlbnRUcmFja2luZ1R5cGVGb3JQb2ludChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50TmFt
ZSwgSW50UG9pbnQgcCkgY29uc3QKK1RyYWNraW5nVHlwZSBSZW1vdGVTY3JvbGxpbmdDb29yZGlu
YXRvclByb3h5OjpldmVudFRyYWNraW5nVHlwZUZvclBvaW50KGNvbnN0IEF0b21TdHJpbmcmIGV2
ZW50TmFtZSwgSW50UG9pbnQgcCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9zY3JvbGxpbmdUcmVl
LT5ldmVudFRyYWNraW5nVHlwZUZvclBvaW50KGV2ZW50TmFtZSwgcCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5n
Q29vcmRpbmF0b3JQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuaAppbmRleCAzNWMyZmYxMDdmYzcw
YjA5NjQ3ZjQ5ODRkMGQ1YThkMzcxZjFiOTFkLi43MmE4ZWFjMmY3ZjY2MWQyMzE3YzBjNTEwNWYz
OWQ0MjNhMDRlM2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVM
YXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRv
clByb3h5LmgKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2Nyb2xsaW5nVHJl
ZU5vZGVEaWRTY3JvbGwoV2ViQ29yZTo6U2Nyb2xsaW5nTm9kZUlELCBjb25zdCBXZWJDb3JlOjpG
bG9hdFBvaW50JiBuZXdTY3JvbGxQb3NpdGlvbiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6Rmxv
YXRQb2ludD4mIGxheW91dFZpZXdwb3J0T3JpZ2luLCBXZWJDb3JlOjpTY3JvbGxpbmdMYXllclBv
c2l0aW9uQWN0aW9uKTsKICAgICB2b2lkIHNjcm9sbGluZ1RyZWVOb2RlUmVxdWVzdHNTY3JvbGwo
V2ViQ29yZTo6U2Nyb2xsaW5nTm9kZUlELCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBzY3Jv
bGxQb3NpdGlvbiwgYm9vbCByZXByZXNlbnRzUHJvZ3JhbW1hdGljU2Nyb2xsKTsKIAotICAgIFdl
YkNvcmU6OlRyYWNraW5nVHlwZSBldmVudFRyYWNraW5nVHlwZUZvclBvaW50KGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnROYW1lLCBXZWJDb3JlOjpJbnRQb2ludCkgY29uc3Q7CisgICAgV2ViQ29y
ZTo6VHJhY2tpbmdUeXBlIGV2ZW50VHJhY2tpbmdUeXBlRm9yUG9pbnQoY29uc3QgQXRvbVN0cmlu
ZyYgZXZlbnROYW1lLCBXZWJDb3JlOjpJbnRQb2ludCkgY29uc3Q7CiAKICAgICAvLyBDYWxsZWQg
ZXh0ZXJuYWxseSB3aGVuIG5hdGl2ZSB2aWV3cyBtb3ZlIGFyb3VuZC4KICAgICB2b2lkIHZpZXdw
b3J0Q2hhbmdlZFZpYURlbGVnYXRlZFNjcm9sbGluZyhjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50
JiBzY3JvbGxQb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBsYXlvdXRWaWV3cG9y
dCwgZG91YmxlIHNjYWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CmluZGV4IDMwM2U3NGZiNzNhZjhhYmZhZmRhMGE0YjNiMDcyMmFiM2M3NzExOTkuLjM4NDcwZTU0
NDEyNWJhZjE2ODRlN2UwZGQ1MzNmNjA3YWU0MjllYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMjUyNyw3ICsyNTI3LDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnVwZGF0ZVRvdWNoRXZlbnRUcmFja2luZyhjb25zdCBXZWJUb3VjaEV2ZW50JiB0b3VjaFN0
YXJ0RXZlbnQKICAgICBjb25zdCBFdmVudE5hbWVzJiBuYW1lcyA9IGV2ZW50TmFtZXMoKTsKICAg
ICBmb3IgKGF1dG8mIHRvdWNoUG9pbnQgOiB0b3VjaFN0YXJ0RXZlbnQudG91Y2hQb2ludHMoKSkg
ewogICAgICAgICBJbnRQb2ludCBsb2NhdGlvbiA9IHRvdWNoUG9pbnQubG9jYXRpb24oKTsKLSAg
ICAgICAgYXV0byB1cGRhdGVUcmFja2luZ1R5cGUgPSBbdGhpcywgbG9jYXRpb25dKFRyYWNraW5n
VHlwZSYgdHJhY2tpbmdUeXBlLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50TmFtZSkgeworICAg
ICAgICBhdXRvIHVwZGF0ZVRyYWNraW5nVHlwZSA9IFt0aGlzLCBsb2NhdGlvbl0oVHJhY2tpbmdU
eXBlJiB0cmFja2luZ1R5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50TmFtZSkgewogICAgICAg
ICAgICAgaWYgKHRyYWNraW5nVHlwZSA9PSBUcmFja2luZ1R5cGU6OlN5bmNocm9ub3VzKQogICAg
ICAgICAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAppbmRleCBmNTRmNjdmZTQ4NmVmMTg5OWIxMzI4NzU1Y2RhMDc4OGYxY2RiM2RhLi45MzM3NGFi
YmI2MmQwNzA4NGNhZGZlYmRjMjBmMzZlMTdlNWVjMjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaApAQCAtMTc4Niw3ICsxNzg2LDcgQEAgcHJpdmF0ZToKICNlbmRpZgog
CiAjaWYgUExBVEZPUk0oR1RLKQotICAgIHZvaWQgZ2V0RWRpdG9yQ29tbWFuZHNGb3JLZXlFdmVu
dChjb25zdCBBdG9taWNTdHJpbmcmLCBWZWN0b3I8U3RyaW5nPiYpOworICAgIHZvaWQgZ2V0RWRp
dG9yQ29tbWFuZHNGb3JLZXlFdmVudChjb25zdCBBdG9tU3RyaW5nJiwgVmVjdG9yPFN0cmluZz4m
KTsKICNlbmRpZgogCiAjaWYgVVNFKEFUSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5h
dmlnYXRpb25BY3Rpb24uaAppbmRleCA5NDgxYmQ4ZDMwZGNjZDdlZWNmYmIwYTNhODk3ZGQ4ODY0
ZWExOWQ5Li44ZTJkNmIxYTBlNjZmNDMxNTc5NGFlZmE3ZmRkNjQ3YTQwY2QwN2ZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVOYXZpZ2F0aW9uQWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5oCkBAIC02Miw3ICs2Miw3
IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgc2hvdWxkT3BlbkV4dGVybmFsVVJMcygpIGNvbnN0IHsg
cmV0dXJuIG1fc2hvdWxkT3BlbkV4dGVybmFsVVJMczsgfQogICAgIGJvb2wgc2hvdWxkVHJ5QXBw
TGlua3MoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZFRyeUFwcExpbmtzOyB9Ci0gICAgQXRvbWlj
U3RyaW5nIGRvd25sb2FkQXR0cmlidXRlKCkgY29uc3QgeyByZXR1cm4gbV9kb3dubG9hZEF0dHJp
YnV0ZTsgfQorICAgIEF0b21TdHJpbmcgZG93bmxvYWRBdHRyaWJ1dGUoKSBjb25zdCB7IHJldHVy
biBtX2Rvd25sb2FkQXR0cmlidXRlOyB9CiAKIHByaXZhdGU6CiAgICAgSW5qZWN0ZWRCdW5kbGVO
YXZpZ2F0aW9uQWN0aW9uKFdlYkZyYW1lKiwgY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlv
biYsIFJlZlB0cjxXZWJDb3JlOjpGb3JtU3RhdGU+JiYpOwpAQCAtNzQsNyArNzQsNyBAQCBwcml2
YXRlOgogICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgbV9jbGlja0xvY2F0aW9uSW5Sb290Vmlld0Nv
b3JkaW5hdGVzOwogICAgIFJlZlB0cjxJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQ+IG1faGl0
VGVzdFJlc3VsdDsKICAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlPiBtX2Zvcm1F
bGVtZW50OwotICAgIEF0b21pY1N0cmluZyBtX2Rvd25sb2FkQXR0cmlidXRlOworICAgIEF0b21T
dHJpbmcgbV9kb3dubG9hZEF0dHJpYnV0ZTsKICAgICBib29sIG1fc2hvdWxkT3BlbkV4dGVybmFs
VVJMczsKICAgICBib29sIG1fc2hvdWxkVHJ5QXBwTGlua3M7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbSBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KaW5kZXggMTU4OGJkMGUx
YzUwNzk4ODA0Y2UxNDE0ZmYwMzMyNzVmNDVjOWJjYS4uMGMyMmE2Yjc4MDE3MTkzNWQxZDIzNmYz
MjFiZDRjNDM3YjNhZDczNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERlBsdWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QREYvUERGUGx1Z2luLm1tCkBAIC02MzIsNyArNjMyLDcgQEAgaW5saW5lIFBERlBsdWdp
bjo6UERGUGx1Z2luKFdlYkZyYW1lJiBmcmFtZSkKICAgICBpZiAoc3VwcG9ydHNGb3JtcygpKSB7
CiAgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHdlYkZyYW1lKCktPmNvcmVGcmFtZSgpLT5k
b2N1bWVudCgpOwogICAgICAgICBtX2Fubm90YXRpb25Db250YWluZXIgPSBkb2N1bWVudC0+Y3Jl
YXRlRWxlbWVudChkaXZUYWcsIGZhbHNlKTsKLSAgICAgICAgbV9hbm5vdGF0aW9uQ29udGFpbmVy
LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGlkQXR0ciwgQXRvbWljU3RyaW5n
KCJhbm5vdGF0aW9uQ29udGFpbmVyIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCkpOworICAgICAgICBtX2Fubm90YXRpb25Db250YWluZXItPnNldEF0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24oaWRBdHRyLCBBdG9tU3RyaW5nKCJhbm5vdGF0aW9uQ29udGFpbmVyIiwg
QXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKIAogICAgICAgICBhdXRvIGFubm90
YXRpb25TdHlsZUVsZW1lbnQgPSBkb2N1bWVudC0+Y3JlYXRlRWxlbWVudChzdHlsZVRhZywgZmFs
c2UpOwogICAgICAgICBhbm5vdGF0aW9uU3R5bGVFbGVtZW50LT5zZXRUZXh0Q29udGVudChhbm5v
dGF0aW9uU3R5bGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERlBsdWdpbkFubm90YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvUERGUGx1Z2luQW5ub3RhdGlvbi5tbQppbmRleCA4NmRkYmQ5NTU5OTEzZDFm
M2ZjNDA0OTQ4ZGFhZmU2NTZlM2Q2ODJmLi44MTM0MmQzNTBmMjRhNzM1ZDg5NjRjODFmYzE1MDhi
NjA3MjJhMTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvUERGUGx1Z2luQW5ub3RhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvUERGUGx1Z2luQW5ub3RhdGlvbi5tbQpAQCAtNjcsOCArNjcsOCBAQCB2b2lk
IFBERlBsdWdpbkFubm90YXRpb246OmF0dGFjaChFbGVtZW50KiBwYXJlbnQpCiAgICAgbV9wYXJl
bnQgPSBwYXJlbnQ7CiAgICAgbV9lbGVtZW50ID0gY3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQoKTsK
IAotICAgIG1fZWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihjbGFz
c0F0dHIsIEF0b21pY1N0cmluZygiYW5ub3RhdGlvbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpKTsKLSAgICBtX2VsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24oeF9hcHBsZV9wZGZfYW5ub3RhdGlvbkF0dHIsIEF0b21pY1N0cmluZygidHJ1ZSIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBtX2VsZW1lbnQtPnNl
dEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oY2xhc3NBdHRyLCBBdG9tU3RyaW5nKCJh
bm5vdGF0aW9uIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBtX2Vs
ZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oeF9hcHBsZV9wZGZfYW5u
b3RhdGlvbkF0dHIsIEF0b21TdHJpbmcoInRydWUiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCkpOwogICAgIG1fZWxlbWVudC0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCku
Y2hhbmdlRXZlbnQsICptX2V2ZW50TGlzdGVuZXIsIGZhbHNlKTsKICAgICBtX2VsZW1lbnQtPmFk
ZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmJsdXJFdmVudCwgKm1fZXZlbnRMaXN0ZW5lciwg
ZmFsc2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvUERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uLm1tCmluZGV4IGQzNDRiY2Mz
ZmM2NjAzZGQ3OThlNzY0OGFlMzFiNDZmNzU5ODI5NGQuLjA3M2JiOTVhNjc3ZTNmMTBkYmQ1Y2E0
OTE0NTI1YjQ1YTlkN2E3NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uLm1tCkBA
IC04OCw3ICs4OCw3IEBAIFJlZjxFbGVtZW50PiBQREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uOjpj
cmVhdGVBbm5vdGF0aW9uRWxlbWVudCgpCiAgICAgICAgIGNob2ljZU9wdGlvbi0+c2V0VGV4dENv
bnRlbnQoY2hvaWNlKTsKIAogICAgICAgICBpZiAoY2hvaWNlID09IHNlbGVjdGVkQ2hvaWNlKQot
ICAgICAgICAgICAgY2hvaWNlT3B0aW9uLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKHNlbGVjdGVkQXR0ciwgQXRvbWljU3RyaW5nKCJzZWxlY3RlZCIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICAgICAgICAgIGNob2ljZU9wdGlvbi0+c2V0QXR0
cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihzZWxlY3RlZEF0dHIsIEF0b21TdHJpbmcoInNl
bGVjdGVkIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKIAogICAgICAgICBz
dHlsZWRFbGVtZW50LmFwcGVuZENoaWxkKGNob2ljZU9wdGlvbik7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNlYXJjaFBvcHVw
TWVudS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU2Vh
cmNoUG9wdXBNZW51LmNwcAppbmRleCAzM2Q0NzU2ZWRhMjc4NjFlYmNkYjMzZDFjOWI1OTFjY2M1
Mjk3ZGY1Li5kM2JkNDM4YzcxY2JmNjQxYTRhM2U1ZDQxMTMxYzNlZGQ1NzdjYTgwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU2VhcmNoUG9w
dXBNZW51LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViU2VhcmNoUG9wdXBNZW51LmNwcApAQCAtMjcsNyArMjcsNyBAQAogI2luY2x1ZGUgIldlYlBh
Z2UuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBy
b2Nlc3MuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9BdG9tU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CkBAIC00Nyw3ICs0Nyw3IEBAIFBvcHVwTWVudSogV2ViU2VhcmNoUG9wdXBN
ZW51Ojpwb3B1cE1lbnUoKQogICAgIHJldHVybiBtX3BvcHVwLmdldCgpOwogfQogCi12b2lkIFdl
YlNlYXJjaFBvcHVwTWVudTo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYg
bmFtZSwgY29uc3QgVmVjdG9yPFJlY2VudFNlYXJjaD4mIHNlYXJjaEl0ZW1zKQordm9pZCBXZWJT
ZWFyY2hQb3B1cE1lbnU6OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9tU3RyaW5nJiBuYW1l
LCBjb25zdCBWZWN0b3I8UmVjZW50U2VhcmNoPiYgc2VhcmNoSXRlbXMpCiB7CiAgICAgaWYgKG5h
bWUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CkBAIC01OSw3ICs1OSw3IEBAIHZvaWQgV2Vi
U2VhcmNoUG9wdXBNZW51OjpzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lLCBjb25zdCBWZWN0CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTYXZlUmVjZW50U2Vh
cmNoZXMobmFtZSwgc2VhcmNoSXRlbXMpLCBwYWdlLT5wYWdlSUQoKSk7CiB9CiAKLXZvaWQgV2Vi
U2VhcmNoUG9wdXBNZW51Ojpsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lLCBWZWN0b3I8UmVjZW50U2VhcmNoPiYgcmVzdWx0SXRlbXMpCit2b2lkIFdlYlNlYXJjaFBv
cHVwTWVudTo6bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIFZlY3Rv
cjxSZWNlbnRTZWFyY2g+JiByZXN1bHRJdGVtcykKIHsKICAgICBpZiAobmFtZS5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJTZWFyY2hQb3B1cE1lbnUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTZWFyY2hQb3B1cE1lbnUuaAppbmRleCA0ZTViM2I2NmM2
MTM1MmZlYTk3ODhkZTZkMjkyOTA4ZmZkZjEyM2EyLi41ODA2NjQ1MTViMDdlYzUyYTVkMjM2NDRl
YTU0ZWZjMjQ5OGJiZGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViU2VhcmNoUG9wdXBNZW51LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNlYXJjaFBvcHVwTWVudS5oCkBAIC0zMSw4ICszMSw4
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFdlYlNlYXJjaFBvcHVwTWVudT4gY3JlYXRlKFdl
YlBhZ2UqLCBXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqKTsKIAogICAgIFdlYkNvcmU6OlBvcHVw
TWVudSogcG9wdXBNZW51KCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzYXZlUmVjZW50U2VhcmNoZXMo
Y29uc3QgV1RGOjpBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpSZWNl
bnRTZWFyY2g+Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBsb2FkUmVjZW50U2VhcmNoZXMoY29uc3Qg
V1RGOjpBdG9taWNTdHJpbmcmIG5hbWUsIFZlY3RvcjxXZWJDb3JlOjpSZWNlbnRTZWFyY2g+Jikg
b3ZlcnJpZGU7CisgICAgdm9pZCBzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgV1RGOjpBdG9tU3Ry
aW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6UmVjZW50U2VhcmNoPiYpIG92ZXJyaWRl
OworICAgIHZvaWQgbG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IFdURjo6QXRvbVN0cmluZyYgbmFt
ZSwgVmVjdG9yPFdlYkNvcmU6OlJlY2VudFNlYXJjaD4mKSBvdmVycmlkZTsKICAgICBib29sIGVu
YWJsZWQoKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1Zpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1Zpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyLmNw
cAppbmRleCBhZTE3Y2IyNjIyNTg3OWE4OGY3MGJiNTc4OWRkNTA1MDUxYzg2NWNmLi5iYjEzMDZl
Mjk5ZjNmNzc4ZDllNjUyNWUzOTcwMDJhMTgxOWEyYWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlzaXRlZExpbmtUYWJsZUNvbnRy
b2xsZXIuY3BwCkBAIC03MCw3ICs3MCw3IEBAIFZpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyOjp+
VmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXIoKQogICAgIHZpc2l0ZWRMaW5rVGFibGVDb250cm9s
bGVycygpLnJlbW92ZShtX2lkZW50aWZpZXIpOwogfQogCi1ib29sIFZpc2l0ZWRMaW5rVGFibGVD
b250cm9sbGVyOjppc0xpbmtWaXNpdGVkKFBhZ2UmLCBTaGFyZWRTdHJpbmdIYXNoIGxpbmtIYXNo
LCBjb25zdCBVUkwmLCBjb25zdCBBdG9taWNTdHJpbmcmKQorYm9vbCBWaXNpdGVkTGlua1RhYmxl
Q29udHJvbGxlcjo6aXNMaW5rVmlzaXRlZChQYWdlJiwgU2hhcmVkU3RyaW5nSGFzaCBsaW5rSGFz
aCwgY29uc3QgVVJMJiwgY29uc3QgQXRvbVN0cmluZyYpCiB7CiAgICAgcmV0dXJuIG1fdmlzaXRl
ZExpbmtUYWJsZS5jb250YWlucyhsaW5rSGFzaCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlci5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXIu
aAppbmRleCAxN2ZhOGVjY2E3OGJhOGFjMjc2ODE2NTNhN2QyZTdmZGQ3MGZlMjczLi42NzI2YmNh
ZjJjYjViMzIwZWUyZTc0ZjY3ZjI3NjM2YWY2NDk1MTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1Zpc2l0ZWRMaW5rVGFibGVDb250cm9s
bGVyLmgKQEAgLTQxLDcgKzQxLDcgQEAgcHJpdmF0ZToKICAgICBleHBsaWNpdCBWaXNpdGVkTGlu
a1RhYmxlQ29udHJvbGxlcih1aW50NjRfdCBpZGVudGlmaWVyKTsKIAogICAgIC8vIFdlYkNvcmU6
OlZpc2l0ZWRMaW5rU3RvcmUuCi0gICAgYm9vbCBpc0xpbmtWaXNpdGVkKFdlYkNvcmU6OlBhZ2Um
LCBXZWJDb3JlOjpTaGFyZWRTdHJpbmdIYXNoLCBjb25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0IEF0
b21pY1N0cmluZyYgYXR0cmlidXRlVVJMKSBvdmVycmlkZTsKKyAgICBib29sIGlzTGlua1Zpc2l0
ZWQoV2ViQ29yZTo6UGFnZSYsIFdlYkNvcmU6OlNoYXJlZFN0cmluZ0hhc2gsIGNvbnN0IFVSTCYg
YmFzZVVSTCwgY29uc3QgQXRvbVN0cmluZyYgYXR0cmlidXRlVVJMKSBvdmVycmlkZTsKICAgICB2
b2lkIGFkZFZpc2l0ZWRMaW5rKFdlYkNvcmU6OlBhZ2UmLCBXZWJDb3JlOjpTaGFyZWRTdHJpbmdI
YXNoKSBvdmVycmlkZTsKIAogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCA3
NWQxMmY1NDFkODU3NjA4MDYzOThkZmI1MmVhZGU5N2U4YzBmM2RjLi5jNmRiZWU5ODIyZDVhODdm
YzRmYjQ3NzY2ZGFlZDU2Y2M1NDhmMzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtMjkwNiw3ICsyOTA2LDcgQEAgdm9p
ZCBXZWJQYWdlOjpnZXRGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uKEZvY3VzZWRFbGVtZW50SW5m
b3JtYXRpb24mIGluZm9ybWF0aW8KICAgICAgICAgZWxzZSBpZiAoZWxlbWVudC5pc1VSTEZpZWxk
KCkpCiAgICAgICAgICAgICBpbmZvcm1hdGlvbi5lbGVtZW50VHlwZSA9IElucHV0VHlwZTo6VVJM
OwogICAgICAgICBlbHNlIGlmIChlbGVtZW50LmlzVGV4dCgpKSB7Ci0gICAgICAgICAgICBjb25z
dCBBdG9taWNTdHJpbmcmIHBhdHRlcm4gPSBlbGVtZW50LmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24oSFRNTE5hbWVzOjpwYXR0ZXJuQXR0cik7CisgICAgICAgICAgICBjb25zdCBBdG9t
U3RyaW5nJiBwYXR0ZXJuID0gZWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9u
KEhUTUxOYW1lczo6cGF0dGVybkF0dHIpOwogICAgICAgICAgICAgaWYgKHBhdHRlcm4gPT0gIlxc
ZCoiIHx8IHBhdHRlcm4gPT0gIlswLTldKiIpCiAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24u
ZWxlbWVudFR5cGUgPSBJbnB1dFR5cGU6Ok51bWJlclBhZDsKICAgICAgICAgICAgIGVsc2Ugewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggODk5MDFjZWNmMGY5NmZiMjI4
ODM0NWQ1N2RhOGFhYWY0NmY0Y2ZiMS4uZDRjMDFiYWIxZjkzZGE5MDg1YjBmMjE5NGNkMzI3ZDQ3
MTg2NTBiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC01Miw4ICs1
Miw4IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQXRvbWlj
U3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nSGFzaC5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5n
SGFzaC5oPgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSA8ZGlzcGF0Y2gvZGlzcGF0
Y2guaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0
L1NlYXJjaFBvcHVwTWVudUlPUy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3Jl
U3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVJT1MuY3BwCmluZGV4IDgwNDliMWNjYzI3MmMzNDcyNTk5
ZTQ5NDJlNTAwNmNiODY4MTUxN2EuLmMwMWVjYmM1MzFjNDQ2ODM1Y2U4MzQ4MmJkOGJmYmUyYWM4
ODM0ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0
L1NlYXJjaFBvcHVwTWVudUlPUy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2Vi
Q29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9TLmNwcApAQCAtMTksNyArMTksNyBAQAogCiAj
aW5jbHVkZSAiU2VhcmNoUG9wdXBNZW51SU9TLmgiCiAKLSNpbmNsdWRlIDx3dGYvdGV4dC9BdG9t
aWNTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+CiAKICNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogCkBAIC0zNSwxMSArMzUsMTEgQEAgUG9wdXBNZW51KiBTZWFyY2hQ
b3B1cE1lbnVJT1M6OnBvcHVwTWVudSgpCiAgICAgcmV0dXJuIG1fcG9wdXAucHRyKCk7CiB9CiAK
LXZvaWQgU2VhcmNoUG9wdXBNZW51SU9TOjpzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWlj
U3RyaW5nJiwgY29uc3QgVmVjdG9yPFJlY2VudFNlYXJjaD4mIC8qc2VhcmNoSXRlbXMqLykKK3Zv
aWQgU2VhcmNoUG9wdXBNZW51SU9TOjpzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbVN0cmlu
ZyYsIGNvbnN0IFZlY3RvcjxSZWNlbnRTZWFyY2g+JiAvKnNlYXJjaEl0ZW1zKi8pCiB7CiB9CiAK
LXZvaWQgU2VhcmNoUG9wdXBNZW51SU9TOjpsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWlj
U3RyaW5nJiwgVmVjdG9yPFJlY2VudFNlYXJjaD4mIC8qc2VhcmNoSXRlbXMqLykKK3ZvaWQgU2Vh
cmNoUG9wdXBNZW51SU9TOjpsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbVN0cmluZyYsIFZl
Y3RvcjxSZWNlbnRTZWFyY2g+JiAvKnNlYXJjaEl0ZW1zKi8pCiB7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudUlP
Uy5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBN
ZW51SU9TLmgKaW5kZXggMGVmNDRiNDJhNjYwYWUzNTJjOGJlZTY5NTUwYWIyZGYwZjk1MzRlOS4u
MzY5Zjg2OTE4MTZmZmQwYTc3MTdhYjk0YmZkMWQ2ZjM4MGZiZmNhZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9TLmgK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBN
ZW51SU9TLmgKQEAgLTMzLDggKzMzLDggQEAgcHVibGljOgogICAgIFNlYXJjaFBvcHVwTWVudUlP
UyhXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqKTsKIAogICAgIFdlYkNvcmU6OlBvcHVwTWVudSog
cG9wdXBNZW51KCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzYXZlUmVjZW50U2VhcmNoZXMoY29uc3Qg
QXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6UmVjZW50U2VhcmNoPiYp
IG92ZXJyaWRlOwotICAgIHZvaWQgbG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZSwgVmVjdG9yPFdlYkNvcmU6OlJlY2VudFNlYXJjaD4mKSBvdmVycmlkZTsKKyAgICB2
b2lkIHNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0
b3I8V2ViQ29yZTo6UmVjZW50U2VhcmNoPiYpIG92ZXJyaWRlOworICAgIHZvaWQgbG9hZFJlY2Vu
dFNlYXJjaGVzKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIFZlY3RvcjxXZWJDb3JlOjpSZWNlbnRT
ZWFyY2g+Jikgb3ZlcnJpZGU7CiAgICAgYm9vbCBlbmFibGVkKCkgb3ZlcnJpZGU7CiAKIHByaXZh
dGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRG9jdW1lbnQu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRG9jdW1lbnQubW0KaW5kZXggN2Qz
M2M3ZWRiYjIwNmYzYjZlMjRkN2RjYmZkYTRlMTIzZWQyODVhNS4uMzE5OTMzZjhkNjdlNjk4OTNm
NWIwOTM0OTg1YmM1YzUwODYwZWI2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTURvY3VtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01Eb2N1bWVudC5tbQpAQCAtNzMxLDcgKzczMSw3IEBAIC0gKHZvaWQpd2Via2l0RXhpdEZ1bGxz
Y3JlZW4KIC0gKERPTUVsZW1lbnQgKilnZXRFbGVtZW50QnlJZDooTlNTdHJpbmcgKillbGVtZW50
SWQKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgcmV0
dXJuIGtpdChXVEY6OmdldFB0cihJTVBMLT5nZXRFbGVtZW50QnlJZChBdG9taWNTdHJpbmcoZWxl
bWVudElkKSkpKTsKKyAgICByZXR1cm4ga2l0KFdURjo6Z2V0UHRyKElNUEwtPmdldEVsZW1lbnRC
eUlkKEF0b21TdHJpbmcoZWxlbWVudElkKSkpKTsKIH0KIAogLSAoRE9NRWxlbWVudCAqKXF1ZXJ5
U2VsZWN0b3I6KE5TU3RyaW5nICopc2VsZWN0b3JzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NRG9jdW1lbnRGcmFnbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01Eb2N1bWVudEZyYWdtZW50Lm1tCmluZGV4IDJlZTJjZjg0YzYzOTQ4YzAw
MDJmOGE2NWQ4Y2Q2NjlhNzY3OWQyNGMuLmViMmVjMDE1Yjk1MGIzYTA4Njk3ZjkwOWQ4ZGI1ZmVj
MGQzNjFkNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Eb2N1
bWVudEZyYWdtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Eb2N1
bWVudEZyYWdtZW50Lm1tCkBAIC03Miw3ICs3Miw3IEBAIC0gKHVuc2lnbmVkKWNoaWxkRWxlbWVu
dENvdW50CiAtIChET01FbGVtZW50ICopZ2V0RWxlbWVudEJ5SWQ6KE5TU3RyaW5nICopZWxlbWVu
dElkCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIHJl
dHVybiBraXQoV1RGOjpnZXRQdHIoSU1QTC0+Z2V0RWxlbWVudEJ5SWQoQXRvbWljU3RyaW5nKGVs
ZW1lbnRJZCkpKSk7CisgICAgcmV0dXJuIGtpdChXVEY6OmdldFB0cihJTVBMLT5nZXRFbGVtZW50
QnlJZChBdG9tU3RyaW5nKGVsZW1lbnRJZCkpKSk7CiB9CiAKIC0gKERPTUVsZW1lbnQgKilxdWVy
eVNlbGVjdG9yOihOU1N0cmluZyAqKXNlbGVjdG9ycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51TWFjLmggYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVNYWMuaAppbmRl
eCA1NTNkYzdlNDkxZWUzNjEzNDcyMzc1NWQzMDkwZTU4YzM3MGJkYTc3Li4xYWMxN2M5Y2MzZTcx
ZGUyMWU0NTZiNDFmNDE2ZjY4ODAyODRkYjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVNYWMuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVNYWMuaApAQCAt
MzUsOCArMzUsOCBAQCBwdWJsaWM6CiAgICAgflNlYXJjaFBvcHVwTWVudU1hYygpOwogCiAgICAg
V2ViQ29yZTo6UG9wdXBNZW51KiBwb3B1cE1lbnUoKSBvdmVycmlkZTsKLSAgICB2b2lkIHNhdmVS
ZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxXZWJD
b3JlOjpSZWNlbnRTZWFyY2g+Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBsb2FkUmVjZW50U2VhcmNo
ZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8V2ViQ29yZTo6UmVjZW50U2VhcmNo
PiYpIG92ZXJyaWRlOworICAgIHZvaWQgc2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21TdHJp
bmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpSZWNlbnRTZWFyY2g+Jikgb3ZlcnJpZGU7
CisgICAgdm9pZCBsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbVN0cmluZyYgbmFtZSwgVmVj
dG9yPFdlYkNvcmU6OlJlY2VudFNlYXJjaD4mKSBvdmVycmlkZTsKICAgICBib29sIGVuYWJsZWQo
KSBvdmVycmlkZTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudU1hYy5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudU1hYy5tbQppbmRleCBhZWQ1
MWRhOTA0ZDU2MWI5ZmVmMTkzMWEzMmZmYWU1NDBlNjY5Yjc2Li5lZWZkMWQxZDg2YzZkMjczNTc3
ZTlmNDFjMGQwODg3ODBiNmJmYjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVNYWMubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51TWFjLm1tCkBAIC0yMSw3
ICsyMSw3IEBACiAjaW1wb3J0ICJTZWFyY2hQb3B1cE1lbnVNYWMuaCIKIAogI2luY2x1ZGUgIlBv
cHVwTWVudU1hYy5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4KIAogU2VhcmNoUG9wdXBNZW51TWFjOjpTZWFyY2hQ
b3B1cE1lbnVNYWMoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KiBjbGllbnQpCiAgICAgOiBtX3Bv
cHVwKGFkb3B0UmVmKG5ldyBQb3B1cE1lbnVNYWMoY2xpZW50KSkpCkBAIC00MiwxMiArNDIsMTIg
QEAgYm9vbCBTZWFyY2hQb3B1cE1lbnVNYWM6OmVuYWJsZWQoKQogICAgIHJldHVybiB0cnVlOwog
fQogCi12b2lkIFNlYXJjaFBvcHVwTWVudU1hYzo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0
b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlJlY2VudFNlYXJjaD4mIHNl
YXJjaEl0ZW1zKQordm9pZCBTZWFyY2hQb3B1cE1lbnVNYWM6OnNhdmVSZWNlbnRTZWFyY2hlcyhj
b25zdCBBdG9tU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6UmVjZW50U2VhcmNo
PiYgc2VhcmNoSXRlbXMpCiB7CiAgICAgV2ViQ29yZTo6c2F2ZVJlY2VudFNlYXJjaGVzKG5hbWUs
IHNlYXJjaEl0ZW1zKTsKIH0KIAotdm9pZCBTZWFyY2hQb3B1cE1lbnVNYWM6OmxvYWRSZWNlbnRT
ZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIFZlY3RvcjxXZWJDb3JlOjpSZWNlbnRT
ZWFyY2g+JiBzZWFyY2hJdGVtcykKK3ZvaWQgU2VhcmNoUG9wdXBNZW51TWFjOjpsb2FkUmVjZW50
U2VhcmNoZXMoY29uc3QgQXRvbVN0cmluZyYgbmFtZSwgVmVjdG9yPFdlYkNvcmU6OlJlY2VudFNl
YXJjaD4mIHNlYXJjaEl0ZW1zKQogewogICAgIHNlYXJjaEl0ZW1zID0gV2ViQ29yZTo6bG9hZFJl
Y2VudFNlYXJjaGVzKG5hbWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViVmlzaXRlZExpbmtTdG9yZS5oIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViVmlzaXRlZExpbmtTdG9yZS5oCmluZGV4IDIwZWU1
MTg3OTQ1NTk3MmFiNGIwM2M0NjJhZTMxZjM5NDllYzkxM2QuLjkwNTBjYTgyNjVkNTYxZjEwNzI2
M2QwYjJlMTEwZDUwZTgxOGVlMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYlZpc2l0ZWRMaW5rU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpdGVkTGlua1N0b3JlLmgKQEAgLTQ0LDcg
KzQ0LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBXZWJWaXNpdGVkTGlua1N0b3JlKCk7CiAK
LSAgICBib29sIGlzTGlua1Zpc2l0ZWQoV2ViQ29yZTo6UGFnZSYsIFdlYkNvcmU6OlNoYXJlZFN0
cmluZ0hhc2gsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1
dGVVUkwpIG92ZXJyaWRlOworICAgIGJvb2wgaXNMaW5rVmlzaXRlZChXZWJDb3JlOjpQYWdlJiwg
V2ViQ29yZTo6U2hhcmVkU3RyaW5nSGFzaCwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBBdG9t
U3RyaW5nJiBhdHRyaWJ1dGVVUkwpIG92ZXJyaWRlOwogICAgIHZvaWQgYWRkVmlzaXRlZExpbmso
V2ViQ29yZTo6UGFnZSYsIFdlYkNvcmU6OlNoYXJlZFN0cmluZ0hhc2gpIG92ZXJyaWRlOwogCiAg
ICAgdm9pZCBwb3B1bGF0ZVZpc2l0ZWRMaW5rc0lmTmVlZGVkKFdlYkNvcmU6OlBhZ2UmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2l0
ZWRMaW5rU3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJWaXNpdGVkTGlua1N0b3JlLm1tCmluZGV4IGFkM2NhMjc4YmJkNWU0NDA1MzE1MjgwZTU0NmQ0
M2JhNGNjNTA1MDQuLjA4NDRiMzlkMzY3MDU1M2EwOTMyMjcxY2VkYjczOTA3MGExODVjOGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2l0
ZWRMaW5rU3RvcmUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViVmlzaXRlZExpbmtTdG9yZS5tbQpAQCAtMTA1LDcgKzEwNSw3IEBAIHZvaWQgV2ViVmlz
aXRlZExpbmtTdG9yZTo6cmVtb3ZlVmlzaXRlZExpbmsoTlNTdHJpbmcgKnVybFN0cmluZykKICAg
ICBpbnZhbGlkYXRlU3R5bGVzRm9yTGluayhsaW5rSGFzaCk7CiB9CiAKLWJvb2wgV2ViVmlzaXRl
ZExpbmtTdG9yZTo6aXNMaW5rVmlzaXRlZChQYWdlJiBwYWdlLCBTaGFyZWRTdHJpbmdIYXNoIGxp
bmtIYXNoLCBjb25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRl
VVJMKQorYm9vbCBXZWJWaXNpdGVkTGlua1N0b3JlOjppc0xpbmtWaXNpdGVkKFBhZ2UmIHBhZ2Us
IFNoYXJlZFN0cmluZ0hhc2ggbGlua0hhc2gsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgQXRv
bVN0cmluZyYgYXR0cmlidXRlVVJMKQogewogICAgIHBvcHVsYXRlVmlzaXRlZExpbmtzSWZOZWVk
ZWQocGFnZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KaW5kZXggY2M0YWE2YzkwNDRkMTk4OWJhM2JlMDg0
ZGZjYzNmYTIwZjg1MzJmMy4uNzZhNTc1YWNkOTczYzMyNjUyYzI4NDBhOTExM2ZiZjBhODkzZjg0
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVw
cmVzZW50YXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJI
VE1MUmVwcmVzZW50YXRpb24ubW0KQEAgLTI4NSw3ICsyODUsNyBAQCAtIChET01FbGVtZW50ICop
ZWxlbWVudFdpdGhOYW1lOihOU1N0cmluZyAqKW5hbWUgaW5Gb3JtOihET01FbGVtZW50ICopZm9y
bQogCiAgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpJbk1haW5UaHJlYWQgc2NyaXB0RGlzYWxs
b3dlZFNjb3BlOwogICAgIGF1dG8mIGVsZW1lbnRzID0gZm9ybUVsZW1lbnQtPnVuc2FmZUFzc29j
aWF0ZWRFbGVtZW50cygpOwotICAgIEF0b21pY1N0cmluZyB0YXJnZXROYW1lID0gbmFtZTsKKyAg
ICBBdG9tU3RyaW5nIHRhcmdldE5hbWUgPSBuYW1lOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBlbGVtZW50cy5zaXplKCk7IGkrKykgewogICAgICAgICBGb3JtQXNzb2NpYXRlZEVsZW1l
bnQmIGVsZW1lbnQgPSAqZWxlbWVudHNbaV07CiAgICAgICAgIGlmIChlbGVtZW50Lm5hbWUoKSA9
PSB0YXJnZXROYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQWNjZXNz
aWJsZUJhc2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQWNjZXNzaWJsZUJhc2UuY3Bw
CmluZGV4IDU0MjQ3N2E5ZTllMGE5NDJkNjViZTBlZTJjOTBiNGQyOTY5YTZjMzguLmQ4MzkxYjUz
ZjY0ZTgxMWVmOTExM2Q4MmUzZGYyMjQyZGFjOTU0M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL0FjY2Vzc2libGVCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9BY2Nlc3NpYmxlQmFzZS5jcHAKQEAgLTE0Myw3ICsxNDMsNyBAQCBIUkVTVUxUIEFjY2Vz
c2libGVCYXNlOjpnZXRfYXR0cmlidXRlKF9Jbl8gQlNUUiBrZXksIF9PdXRfIFZBUklBTlQqIHZh
bHVlKQogICAgIGlmICghdmFsdWUpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAKLSAgICBB
dG9taWNTdHJpbmcga2V5QXRvbWljKGtleSwgOjpTeXNTdHJpbmdMZW4oa2V5KSk7CisgICAgQXRv
bVN0cmluZyBrZXlBdG9taWMoa2V5LCA6OlN5c1N0cmluZ0xlbihrZXkpKTsKIAogICAgIGFjY2Vz
c2liaWxpdHlBdHRyaWJ1dGVWYWx1ZShrZXlBdG9taWMsIHZhbHVlKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vQWNjZXNzaWJsZUltYWdlLmNwcCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL0FjY2Vzc2libGVJbWFnZS5jcHAKaW5kZXggNWZmNTIyNDRkOWEwNmMyMzAx
OWRiZmE1MGVkNzQyN2VjYzg4Zjg4NC4uNWI2NjY0NTY1MjBhZDA1ZDkxZGRkYTFiYWU3ZWY3ZmUw
YzhmNTg1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQWNjZXNzaWJsZUlt
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9BY2Nlc3NpYmxlSW1hZ2UuY3Bw
CkBAIC00OSw3ICs0OSw3IEBAIFN0cmluZyBBY2Nlc3NpYmxlSW1hZ2U6Om5hbWUoKSBjb25zdAog
ICAgIGlmICghYXJpYUxhYmVsLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGFyaWFMYWJlbDsK
IAotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYWx0VGV4dCA9IG9iai5nZXRBdHRyaWJ1dGUoSFRN
TE5hbWVzOjphbHRBdHRyKTsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBhbHRUZXh0ID0gb2JqLmdl
dEF0dHJpYnV0ZShIVE1MTmFtZXM6OmFsdEF0dHIpOwogICAgIGlmICghYWx0VGV4dC5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiBhbHRUZXh0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9ET01Db3JlQ2xhc3Nlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9E
T01Db3JlQ2xhc3Nlcy5jcHAKaW5kZXggZWFkYTNlNmJjNTVjMDAxN2ZlYzlmMGVjMTk1OGQ5YzQx
Yzc3ZWZhMS4uYjYyNjQzNzNkNjVjODk2NTllMDc1NDkyMzBhMmMxMTI5OGVlMmIxOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRE9NQ29yZUNsYXNzZXMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL0RPTUNvcmVDbGFzc2VzLmNwcApAQCAtNjYsNyArNjYsNyBA
QCBERUZJTkVfR1VJRChJSURfRE9NRWxlbWVudCwgMHgzYjBjMGVmZiwgMHg0NzhiLCAweDRiMGIs
IDB4ODIsIDB4OTAsIDB4ZDIsIDB4MzIsCiAvLyAiRE9NT2JqZWN0IiBleGlzdHMgYm90aCBpbiB0
aGUgV2ViQ29yZSBuYW1lc3BhY2UgYW5kIHVubmFtZXNwYWNlZCBpbiB0aGlzCiAvLyBmaWxlLCB3
aGljaCBsZWFkcyB0byBhbWJpZ3VpdGllcyBpZiB3ZSBzYXkgInVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlIi4KIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOjpIVE1MTmFtZXM7Ci11c2luZyBXVEY6OkF0
b21pY1N0cmluZzsKK3VzaW5nIFdURjo6QXRvbVN0cmluZzsKIHVzaW5nIFdlYkNvcmU6OkJTdHJp
bmc7CiB1c2luZyBXZWJDb3JlOjpFbGVtZW50OwogdXNpbmcgV2ViQ29yZTo6RXhjZXB0aW9uQ29k
ZTsKQEAgLTEyODYsNyArMTI4Niw3IEBAIEhSRVNVTFQgRE9NRWxlbWVudDo6Zm9udChfT3V0XyBX
ZWJGb250RGVzY3JpcHRpb24qIHdlYkZvbnREZXNjcmlwdGlvbikKICAgICAgICAgcmV0dXJuIEVf
RkFJTDsKIAogICAgIGF1dG8gZm9udERlc2NyaXB0aW9uID0gcmVuZGVyZXItPnN0eWxlKCkuZm9u
dENhc2NhZGUoKS5mb250RGVzY3JpcHRpb24oKTsKLSAgICBBdG9taWNTdHJpbmcgZmFtaWx5ID0g
Zm9udERlc2NyaXB0aW9uLmZpcnN0RmFtaWx5KCk7CisgICAgQXRvbVN0cmluZyBmYW1pbHkgPSBm
b250RGVzY3JpcHRpb24uZmlyc3RGYW1pbHkoKTsKIAogICAgIC8vIEZJWE1FOiBUaGlzIGxlYWtz
LiBEZWxldGUgdGhpcyB3aG9sZSBmdW5jdGlvbiB0byBnZXQgcmlkIG9mIHRoZSBsZWFrLgogICAg
IFVDaGFyKiBmYW1pbHlDaGFyYWN0ZXJzQnVmZmVyID0gbmV3IFVDaGFyW2ZhbWlseS5sZW5ndGgo
KV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9JbnRlcmZhY2VzL0RPTUV2
ZW50cy5pZGwgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9JbnRlcmZhY2VzL0RPTUV2ZW50cy5p
ZGwKaW5kZXggNmIwMTMwMzA4NDg5ZjYwNTQyYTIzMWE4ZTM0MGU5ZGFkYWEyMTE1NS4uNWM0NDMy
NjhhNDA3MjNlY2E2MmFhNzEzZGVlYjc2ZjFiYTI2NWRiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vSW50ZXJmYWNlcy9ET01FdmVudHMuaWRsCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL0ludGVyZmFjZXMvRE9NRXZlbnRzLmlkbApAQCAtMTk2LDcgKzE5Niw3IEBA
IGludGVyZmFjZSBJRE9NS2V5Ym9hcmRFdmVudCA6IElET01VSUV2ZW50CiAgICAgSFJFU1VMVCBn
ZXRNb2RpZmllclN0YXRlKFtpbl0gQlNUUiBrZXlJZGVudGlmaWVyQXJnLCBbb3V0LCByZXR2YWxd
IEJPT0wqIHJlc3VsdCk7CiAKICAgICAvLyBGSVhNRTogdGhpcyBkb2VzIG5vdCBtYXRjaCB0aGUg
dmVyc2lvbiBpbiB0aGUgRE9NIHNwZWMuCi0gICAgLy92b2lkIGluaXRLZXlib2FyZEV2ZW50KEF0
b21pY1N0cmluZyB0eXBlLCAKKyAgICAvL3ZvaWQgaW5pdEtleWJvYXJkRXZlbnQoQXRvbVN0cmlu
ZyB0eXBlLCAKICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiBjYW5CdWJibGUs
IAogICAgIC8vICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuIGNhbmNlbGFibGUsIAogICAg
IC8vICAgICAgICAgICAgICAgICAgICAgICBET01XaW5kb3cgdmlldywgCkBAIC0yMTYsNyArMjE2
LDcgQEAgaW50ZXJmYWNlIElET01LZXlib2FyZEV2ZW50IDogSURPTVVJRXZlbnQKICAgICAvL3Jl
YWRvbmx5IGF0dHJpYnV0ZSBsb25nICAgICAgICAgICAgIGNoYXJDb2RlOwogICAgIC8vSFJFU1VM
VCBjaGFyQ29kZShbb3V0LCByZXR2YWxdIGxvbmcqIHJlc3VsdCk7CiAKLSAgICAvL3ZvaWQgaW5p
dEtleWJvYXJkRXZlbnQoQXRvbWljU3RyaW5nIHR5cGUsIAorICAgIC8vdm9pZCBpbml0S2V5Ym9h
cmRFdmVudChBdG9tU3RyaW5nIHR5cGUsIAogICAgIC8vICAgICAgICAgICAgICAgICAgICAgICBi
b29sZWFuIGNhbkJ1YmJsZSwgCiAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4g
Y2FuY2VsYWJsZSwgCiAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgIERPTVdpbmRvdyB2aWV3
LCAKQEAgLTI2Niw3ICsyNjYsNyBAQCBpbnRlcmZhY2UgSURPTU1vdXNlRXZlbnQgOiBJRE9NVUlF
dmVudAogICAgIC8vcmVhZG9ubHkgYXR0cmlidXRlIEV2ZW50VGFyZ2V0ICAgICAgcmVsYXRlZFRh
cmdldDsKICAgICBIUkVTVUxUIHJlbGF0ZWRUYXJnZXQoW291dCwgcmV0dmFsXSBJRE9NRXZlbnRU
YXJnZXQqKiByZXN1bHQpOwogCi0gICAgLy9bT2xkU3R5bGVPYmpDXSB2b2lkIGluaXRNb3VzZUV2
ZW50KEF0b21pY1N0cmluZyB0eXBlLCAKKyAgICAvL1tPbGRTdHlsZU9iakNdIHZvaWQgaW5pdE1v
dXNlRXZlbnQoQXRvbVN0cmluZyB0eXBlLCAKICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbGVhbiBjYW5CdWJibGUsIAogICAgIC8vICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBib29sZWFuIGNhbmNlbGFibGUsIAogICAgIC8vICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBET01XaW5kb3cgdmlldywgCkBAIC0zMzEsNyArMzMxLDcg
QEAgaW50ZXJmYWNlIElET01NdXRhdGlvbkV2ZW50IDogSURPTUV2ZW50CiAgICAgLy9yZWFkb25s
eSBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQgYXR0ckNoYW5nZTsKICAgICBIUkVTVUxUIGF0dHJD
aGFuZ2UoW291dCwgcmV0dmFsXSB1bnNpZ25lZCBzaG9ydCogcmVzdWx0KTsKIAotICAgIC8vW09s
ZFN0eWxlT2JqQ10gdm9pZCBpbml0TXV0YXRpb25FdmVudChBdG9taWNTdHJpbmcgdHlwZSwgCisg
ICAgLy9bT2xkU3R5bGVPYmpDXSB2b2lkIGluaXRNdXRhdGlvbkV2ZW50KEF0b21TdHJpbmcgdHlw
ZSwgCiAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4g
Y2FuQnViYmxlLCAKICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbGVhbiBjYW5jZWxhYmxlLCAKICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgTm9kZSByZWxhdGVkTm9kZSwgCkBAIC0zNzgsNyArMzc4LDcgQEAgaW50ZXJmYWNl
IElET01VSUV2ZW50IDogSURPTUV2ZW50CiAgICAgLy9yZWFkb25seSBhdHRyaWJ1dGUgbG9uZyAg
ICAgICAgICAgICAgICAgZGV0YWlsOwogICAgIEhSRVNVTFQgZGV0YWlsKFtvdXQsIHJldHZhbF0g
bG9uZyogcmVzdWx0KTsKIAotICAgIC8vW09sZFN0eWxlT2JqQ10gdm9pZCBpbml0VUlFdmVudChB
dG9taWNTdHJpbmcgdHlwZSwgCisgICAgLy9bT2xkU3R5bGVPYmpDXSB2b2lkIGluaXRVSUV2ZW50
KEF0b21TdHJpbmcgdHlwZSwgCiAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJvb2xlYW4gY2FuQnViYmxlLCAKICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbGVhbiBjYW5jZWxhYmxlLCAKICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRE9NV2luZG93IHZpZXcsIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViVmlzaXRlZExpbmtTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpdGVkTGlua1N0b3JlLmNwcAppbmRleCAy
YTdhN2Q3ZTU3OGQ0NWNiNzNhNjM4YjI5OGRlZGE4NDZjNzkwNzM0Li4yYTVlMTA1MzY3YTBmZmY2
OTVmODA1MzFiYzRiNWM3Yjk5OTk5ZDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpdGVkTGlua1N0b3JlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpdGVkTGlua1N0b3JlLmNwcApA
QCAtNzgsNyArNzgsNyBAQCB2b2lkIFdlYlZpc2l0ZWRMaW5rU3RvcmU6OmFkZFZpc2l0ZWRMaW5r
KGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQogICAgIGFkZFZpc2l0ZWRMaW5rSGFzaChjb21wdXRl
U2hhcmVkU3RyaW5nSGFzaCh1cmxTdHJpbmcpKTsKIH0KIAotYm9vbCBXZWJWaXNpdGVkTGlua1N0
b3JlOjppc0xpbmtWaXNpdGVkKFBhZ2UmIHBhZ2UsIFNoYXJlZFN0cmluZ0hhc2ggbGlua0hhc2gs
IGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVVUkwpCiti
b29sIFdlYlZpc2l0ZWRMaW5rU3RvcmU6OmlzTGlua1Zpc2l0ZWQoUGFnZSYgcGFnZSwgU2hhcmVk
U3RyaW5nSGFzaCBsaW5rSGFzaCwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBBdG9tU3RyaW5n
JiBhdHRyaWJ1dGVVUkwpCiB7CiAgICAgcG9wdWxhdGVWaXNpdGVkTGlua3NJZk5lZWRlZChwYWdl
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViVmlzaXRlZExpbmtTdG9yZS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViVmlzaXRlZExpbmtTdG9yZS5oCmluZGV4IDhiZWRlOWUyNTgxOTE4MzIwMjcwZWFi
NjUyNzRhN2E5MDZkYjU4YTAuLmNmOGMzYThmOWIyMWMzYzI0ZjIzZTk0YzI4OGNjOTYwNjk1NDM2
ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YlZpc2l0ZWRMaW5rU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJWaXNpdGVkTGlua1N0b3JlLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICBXZWJWaXNpdGVkTGlua1N0b3JlKCk7CiAKLSAgICBib29sIGlzTGlua1Zp
c2l0ZWQoV2ViQ29yZTo6UGFnZSYsIFdlYkNvcmU6OlNoYXJlZFN0cmluZ0hhc2gsIGNvbnN0IFVS
TCYgYmFzZVVSTCwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVVUkwpIG92ZXJyaWRlOwor
ICAgIGJvb2wgaXNMaW5rVmlzaXRlZChXZWJDb3JlOjpQYWdlJiwgV2ViQ29yZTo6U2hhcmVkU3Ry
aW5nSGFzaCwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBBdG9tU3RyaW5nJiBhdHRyaWJ1dGVV
UkwpIG92ZXJyaWRlOwogICAgIHZvaWQgYWRkVmlzaXRlZExpbmsoV2ViQ29yZTo6UGFnZSYsIFdl
YkNvcmU6OlNoYXJlZFN0cmluZ0hhc2gpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBwb3B1bGF0ZVZp
c2l0ZWRMaW5rc0lmTmVlZGVkKFdlYkNvcmU6OlBhZ2UmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkZyYW1lLmNwcAppbmRleCAxMDBkMzkwNjE0YjU0NWQxMWFlMmFlZDZhNTExNWQwY2ZjZjMzMmFi
Li4yMjI0MjA5YTNmMjA2Mjk3NzljMDdjZmVlODAyZmYwZDBiYmM5YjkxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViRnJhbWUuY3BwCkBAIC03MzEsNyArNzMxLDcgQEAgSFJFU1VMVCBXZWJGcmFt
ZTo6ZmluZEZyYW1lTmFtZWQoX0luXyBCU1RSIG5hbWUsIF9DT01fT3V0cHRyX29wdF8gSVdlYkZy
YW1lKiogZnIKICAgICBpZiAoIWNvcmVGcmFtZSkKICAgICAgICAgcmV0dXJuIEVfVU5FWFBFQ1RF
RDsKIAotICAgIEZyYW1lKiBmb3VuZEZyYW1lID0gY29yZUZyYW1lLT50cmVlKCkuZmluZChBdG9t
aWNTdHJpbmcobmFtZSwgU3lzU3RyaW5nTGVuKG5hbWUpKSwgKmNvcmVGcmFtZSk7CisgICAgRnJh
bWUqIGZvdW5kRnJhbWUgPSBjb3JlRnJhbWUtPnRyZWUoKS5maW5kKEF0b21TdHJpbmcobmFtZSwg
U3lzU3RyaW5nTGVuKG5hbWUpKSwgKmNvcmVGcmFtZSk7CiAgICAgaWYgKCFmb3VuZEZyYW1lKQog
ICAgICAgICByZXR1cm4gU19PSzsKIApAQCAtMTEzMCw3ICsxMTMwLDcgQEAgSFJFU1VMVCBXZWJG
cmFtZTo6ZWxlbWVudFdpdGhOYW1lKEJTVFIgbmFtZSwgSURPTUVsZW1lbnQqIGZvcm0sIElET01F
bGVtZW50KiogZWwKIAogICAgIEhUTUxGb3JtRWxlbWVudCogZm9ybUVsZW1lbnQgPSBmb3JtRWxl
bWVudEZyb21ET01FbGVtZW50KGZvcm0pOwogICAgIGlmIChmb3JtRWxlbWVudCkgewotICAgICAg
ICBBdG9taWNTdHJpbmcgdGFyZ2V0TmFtZSgoVUNoYXIqKW5hbWUsIFN5c1N0cmluZ0xlbihuYW1l
KSk7CisgICAgICAgIEF0b21TdHJpbmcgdGFyZ2V0TmFtZSgoVUNoYXIqKW5hbWUsIFN5c1N0cmlu
Z0xlbihuYW1lKSk7CiAgICAgICAgIGZvciAoYXV0byYgYXNzb2NpYXRlZEVsZW1lbnQgOiBmb3Jt
RWxlbWVudC0+Y29weUFzc29jaWF0ZWRFbGVtZW50c1ZlY3RvcigpKSB7CiAgICAgICAgICAgICBp
ZiAoIWlzPEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ+KGFzc29jaWF0ZWRFbGVtZW50LmdldCgpKSkK
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYktpdEdyYXBoaWNzLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktp
dEdyYXBoaWNzLmNwcAppbmRleCBhZDFhYjE3OGU0MmY0NDJiZDFjNTUyM2ZmZWQ2Y2I4ZmZlNTE2
YmYwLi44NzU1NDhiYzRmYTVjNjJjZGIyMDNhY2E5ZTFjNWNiN2JlNTI0NWJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRHcmFwaGljcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViS2l0R3JhcGhpY3MuY3BwCkBAIC00Niw3ICs0Niw3IEBAIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBzdGF0aWMgRm9udENhc2NhZGUgbWFrZUZvbnQoY29u
c3QgV2ViRm9udERlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbikKIHsKLSAgICBBdG9taWNTdHJpbmc6
OmluaXQoKTsKKyAgICBBdG9tU3RyaW5nOjppbml0KCk7CiAKICAgICBTdHJpbmcgZm9udEZhbWls
eVN0cmluZyhkZXNjcmlwdGlvbi5mYW1pbHksIGRlc2NyaXB0aW9uLmZhbWlseUxlbmd0aCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0
LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcApp
bmRleCAxZmUxMTQ1YWVjMjAwODhhNmZiMWZiZjk4ZGIwMzJjMDZkMDliMjg1Li4zMzYyMzc5ODg0
YjNhNDg1NWQ2NmMxNzY4NDUzYzIyN2U3Yzc0MTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwCkBAIC0yNzIsNyArMjcyLDcgQEAgSFJF
U1VMVCBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6aXNFcXVhbChfSW5fb3B0XyBJV2ViVVJMUmVxdWVz
dCogb3RoZXIsIF9PdXRfIEJPT0wKIAogSFJFU1VMVCBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6YWRk
VmFsdWUoX0luXyBCU1RSIHZhbHVlLCBfSW5fIEJTVFIgZmllbGQpCiB7Ci0gICAgbV9yZXF1ZXN0
LmFkZEhUVFBIZWFkZXJGaWVsZChXVEY6OkF0b21pY1N0cmluZyh2YWx1ZSwgU3lzU3RyaW5nTGVu
KHZhbHVlKSksIFN0cmluZyhmaWVsZCwgU3lzU3RyaW5nTGVuKGZpZWxkKSkpOworICAgIG1fcmVx
dWVzdC5hZGRIVFRQSGVhZGVyRmllbGQoV1RGOjpBdG9tU3RyaW5nKHZhbHVlLCBTeXNTdHJpbmdM
ZW4odmFsdWUpKSwgU3RyaW5nKGZpZWxkLCBTeXNTdHJpbmdMZW4oZmllbGQpKSk7CiAgICAgcmV0
dXJuIFNfT0s7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZp
ZXcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKaW5kZXggYTg5YWNj
MDAwZDVlZTdiNDJlNzE3YzRlOWYzNmQyOGNkNWNhNGE4MS4uZDUxYWEzNDU3MTQ1ZDdmYTdjZTYx
NjFmODYwOTNhMzcyZGQzZGE5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKQEAg
LTI1NSw5ICsyNTUsOSBAQCBXZWJWaWV3KiBraXQoUGFnZSogcGFnZSkKICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8V2ViQ2hyb21lQ2xpZW50Jj4ocGFnZS0+Y2hyb21lKCkuY2xpZW50KCkpLndlYlZp
ZXcoKTsKIH0KIAotc3RhdGljIGlubGluZSBBdG9taWNTdHJpbmcgdG9BdG9taWNTdHJpbmcoQlNU
UiBic3RyKQorc3RhdGljIGlubGluZSBBdG9tU3RyaW5nIHRvQXRvbVN0cmluZyhCU1RSIGJzdHIp
CiB7Ci0gICAgcmV0dXJuIEF0b21pY1N0cmluZyhic3RyLCBTeXNTdHJpbmdMZW4oYnN0cikpOwor
ICAgIHJldHVybiBBdG9tU3RyaW5nKGJzdHIsIFN5c1N0cmluZ0xlbihic3RyKSk7CiB9CiAKIHN0
YXRpYyBpbmxpbmUgU3RyaW5nIHRvU3RyaW5nKEJTVFIgYnN0cikKQEAgLTUxMTUsNyArNTExNSw3
IEBAIEhSRVNVTFQgV2ViVmlldzo6bm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2VkKElXZWJOb3RpZmlj
YXRpb24qIG5vdGlmaWNhdGlvbikKICAgICBociA9IHByZWZlcmVuY2VzLT5jdXJzaXZlRm9udEZh
bWlseSgmc3RyKTsKICAgICBpZiAoRkFJTEVEKGhyKSkKICAgICAgICAgcmV0dXJuIGhyOwotICAg
IHNldHRpbmdzLnNldEN1cnNpdmVGb250RmFtaWx5KHRvQXRvbWljU3RyaW5nKHN0cikpOworICAg
IHNldHRpbmdzLnNldEN1cnNpdmVGb250RmFtaWx5KHRvQXRvbVN0cmluZyhzdHIpKTsKICAgICBz
dHIuY2xlYXIoKTsKIAogICAgIGhyID0gcHJlZmVyZW5jZXMtPmRlZmF1bHRGaXhlZEZvbnRTaXpl
KCZzaXplKTsKQEAgLTUxMzcsMTMgKzUxMzcsMTMgQEAgSFJFU1VMVCBXZWJWaWV3Ojpub3RpZnlQ
cmVmZXJlbmNlc0NoYW5nZWQoSVdlYk5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQogICAgIGhy
ID0gcHJlZmVyZW5jZXMtPmZhbnRhc3lGb250RmFtaWx5KCZzdHIpOwogICAgIGlmIChGQUlMRUQo
aHIpKQogICAgICAgICByZXR1cm4gaHI7Ci0gICAgc2V0dGluZ3Muc2V0RmFudGFzeUZvbnRGYW1p
bHkodG9BdG9taWNTdHJpbmcoc3RyKSk7CisgICAgc2V0dGluZ3Muc2V0RmFudGFzeUZvbnRGYW1p
bHkodG9BdG9tU3RyaW5nKHN0cikpOwogICAgIHN0ci5jbGVhcigpOwogCiAgICAgaHIgPSBwcmVm
ZXJlbmNlcy0+Zml4ZWRGb250RmFtaWx5KCZzdHIpOwogICAgIGlmIChGQUlMRUQoaHIpKQogICAg
ICAgICByZXR1cm4gaHI7Ci0gICAgc2V0dGluZ3Muc2V0Rml4ZWRGb250RmFtaWx5KHRvQXRvbWlj
U3RyaW5nKHN0cikpOworICAgIHNldHRpbmdzLnNldEZpeGVkRm9udEZhbWlseSh0b0F0b21TdHJp
bmcoc3RyKSk7CiAgICAgc3RyLmNsZWFyKCk7CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCkBA
IC01MTc1LDcgKzUxNzUsNyBAQCBIUkVTVUxUIFdlYlZpZXc6Om5vdGlmeVByZWZlcmVuY2VzQ2hh
bmdlZChJV2ViTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCiAgICAgaHIgPSBwcmVmZXJlbmNl
cy0+cGljdG9ncmFwaEZvbnRGYW1pbHkoJnN0cik7CiAgICAgaWYgKEZBSUxFRChocikpCiAgICAg
ICAgIHJldHVybiBocjsKLSAgICBzZXR0aW5ncy5zZXRQaWN0b2dyYXBoRm9udEZhbWlseSh0b0F0
b21pY1N0cmluZyhzdHIpKTsKKyAgICBzZXR0aW5ncy5zZXRQaWN0b2dyYXBoRm9udEZhbWlseSh0
b0F0b21TdHJpbmcoc3RyKSk7CiAgICAgc3RyLmNsZWFyKCk7CiAKICAgICBociA9IHByZWZlcmVu
Y2VzLT5pc0phdmFFbmFibGVkKCZlbmFibGVkKTsKQEAgLTUzMTEsMTkgKzUzMTEsMTkgQEAgSFJF
U1VMVCBXZWJWaWV3Ojpub3RpZnlQcmVmZXJlbmNlc0NoYW5nZWQoSVdlYk5vdGlmaWNhdGlvbiog
bm90aWZpY2F0aW9uKQogICAgIGhyID0gcHJlZmVyZW5jZXMtPnNhbnNTZXJpZkZvbnRGYW1pbHko
JnN0cik7CiAgICAgaWYgKEZBSUxFRChocikpCiAgICAgICAgIHJldHVybiBocjsKLSAgICBzZXR0
aW5ncy5zZXRTYW5zU2VyaWZGb250RmFtaWx5KHRvQXRvbWljU3RyaW5nKHN0cikpOworICAgIHNl
dHRpbmdzLnNldFNhbnNTZXJpZkZvbnRGYW1pbHkodG9BdG9tU3RyaW5nKHN0cikpOwogICAgIHN0
ci5jbGVhcigpOwogCiAgICAgaHIgPSBwcmVmZXJlbmNlcy0+c2VyaWZGb250RmFtaWx5KCZzdHIp
OwogICAgIGlmIChGQUlMRUQoaHIpKQogICAgICAgICByZXR1cm4gaHI7Ci0gICAgc2V0dGluZ3Mu
c2V0U2VyaWZGb250RmFtaWx5KHRvQXRvbWljU3RyaW5nKHN0cikpOworICAgIHNldHRpbmdzLnNl
dFNlcmlmRm9udEZhbWlseSh0b0F0b21TdHJpbmcoc3RyKSk7CiAgICAgc3RyLmNsZWFyKCk7CiAK
ICAgICBociA9IHByZWZlcmVuY2VzLT5zdGFuZGFyZEZvbnRGYW1pbHkoJnN0cik7CiAgICAgaWYg
KEZBSUxFRChocikpCiAgICAgICAgIHJldHVybiBocjsKLSAgICBzZXR0aW5ncy5zZXRTdGFuZGFy
ZEZvbnRGYW1pbHkodG9BdG9taWNTdHJpbmcoc3RyKSk7CisgICAgc2V0dGluZ3Muc2V0U3RhbmRh
cmRGb250RmFtaWx5KHRvQXRvbVN0cmluZyhzdHIpKTsKICAgICBzdHIuY2xlYXIoKTsKIAogICAg
IGhyID0gcHJlZmVyZW5jZXMtPmxvYWRzSW1hZ2VzQXV0b21hdGljYWxseSgmZW5hYmxlZCk7CmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZDM0NDgy
YWQzMzY1N2U5ZWEyMmUwNGViNWQxMzMzNGI4MzcwYzlhZC4uODQ4ZTQ4YTY2ZTliMWRmN2I0MDAz
YjVkYzM0ZTNjMmRjOTUzYWI4YiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE5LTA2LTE1ICBEYXJpbiBBZGxlciAg
PGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgQXRvbWljU3RyaW5nIHRvIEF0b21T
dHJpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
NTI3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
bWFueSBmaWxlczogTGV0IGRvLXdlYmNvcmUtcmVuYW1lIGRvIHRoZSByZW5hbWluZy4KKworICAg
ICAgICAqIFNjcmlwdHMvZG8td2ViY29yZS1yZW5hbWU6IFVwZGF0ZWQgd2l0aCBhIGxpc3Qgb2Yg
YWxsIHRoZSBpZGVudGlmaWVycworICAgICAgICB0aGF0IG1lbnRpb24gImF0b21pYyBzdHJpbmci
IGFuZCBjaGFuZ2VkIHRoZW0gdG8gaW5zdGVhZCBzYXkgImF0b20gc3RyaW5nIi4KKwogMjAxOS0w
Ni0xNCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIHNob3VsZCBub3QgdXNlIGl0cyBuZXR3b3JrIHNlc3Np
b24gaWYgaW52YWxpZGF0ZWQKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9B
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlcldpbi5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4v
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJXaW4uY3BwCmluZGV4IGI0MTQ2MTk4Nzk5NTViODc4NzBk
NjJjN2U0YTllNDYyNDQ0ZTljOTkuLjQzYWEzNjBkMTE4MjVlYmQzMjVkNmE2NWIwMWQwMGQzODI2
NTI5MWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9BY2Nlc3NpYmlsaXR5
Q29udHJvbGxlcldpbi5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0FjY2Vzc2li
aWxpdHlDb250cm9sbGVyV2luLmNwcApAQCAtNDAsNyArNDAsNyBAQAogI2luY2x1ZGUgPG9sZWFj
Yy5oPgogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgotI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21T
dHJpbmcuaD4KIAogQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OkFjY2Vzc2liaWxpdHlDb250cm9s
bGVyKCkgPSBkZWZhdWx0OwogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2RvLXdlYmNvcmUt
cmVuYW1lIGIvVG9vbHMvU2NyaXB0cy9kby13ZWJjb3JlLXJlbmFtZQppbmRleCA3YjdlZDM5NmJl
MjIwNmM4ZmI0ZjFjZmY2YzY5ZThkYzAzNzI1YzM4Li44OTk4Zjc2NzVlOGQ0Yzc1ZTNiZmMwMzYx
ODVhNjQzMDJjOTQyYmI3IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL2RvLXdlYmNvcmUtcmVu
YW1lCisrKyBiL1Rvb2xzL1NjcmlwdHMvZG8td2ViY29yZS1yZW5hbWUKQEAgLTc2LDYgKzc2LDgg
QEAgZmluZChcJndhbnRlZCwgIlNvdXJjZS9XVEYiKTsKIGZpbmQoXCZ3YW50ZWQsICJTb3VyY2Uv
V2ViQ29yZSIpOwogZmluZChcJndhbnRlZCwgIlNvdXJjZS9XZWJLaXRMZWdhY3kiKTsKIGZpbmQo
XCZ3YW50ZWQsICJTb3VyY2UvV2ViS2l0Iik7CitmaW5kKFwmd2FudGVkLCAiVG9vbHMvZ2RiIik7
CitmaW5kKFwmd2FudGVkLCAiVG9vbHMvbGxkYiIpOwogZmluZChcJndhbnRlZCwgIlRvb2xzL0R1
bXBSZW5kZXJUcmVlIik7CiBmaW5kKFwmd2FudGVkLCAiVG9vbHMvVGVzdFdlYktpdEFQSSIpOwog
CkBAIC0xMDAsMTMgKzEwMiw1OSBAQCBzdWIgd2FudGVkCiBteSAkaXNET01UeXBlUmVuYW1lID0g
MDsKIG15ICVyZW5hbWVzID0gKAogICAgICMgUmVuYW1lcyBnbyBoZXJlIGluIHRoZSBmb3JtIG9m
OgotICAgICJDb25zdHJ1Y3RvclJhaXNlc0V4Y2VwdGlvbiIgPT4gIkNvbnN0cnVjdG9yTWF5VGhy
b3dMZWdhY3lFeGNlcHRpb24iLAotICAgICJHZXR0ZXJSYWlzZXNFeGNlcHRpb24iID0+ICJHZXR0
ZXJNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbiIsCi0gICAgIkdldHRlclJhaXNlc0V4Y2VwdGlvbldp
dGhNZXNzYWdlIiA9PiAiR2V0dGVyTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25XaXRoTWVzc2FnZSIs
Ci0gICAgIlJhaXNlc0V4Y2VwdGlvbiIgPT4gIk1heVRocm93TGVnYWN5RXhjZXB0aW9uIiwKLSAg
ICAiUmFpc2VzRXhjZXB0aW9uV2l0aE1lc3NhZ2UiID0+ICJNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlv
bldpdGhNZXNzYWdlIiwKLSAgICAiU2V0dGVyUmFpc2VzRXhjZXB0aW9uIiA9PiAiU2V0dGVyTWF5
VGhyb3dMZWdhY3lFeGNlcHRpb24iLAotICAgICJTZXR0ZXJSYWlzZXNFeGNlcHRpb25XaXRoTWVz
c2FnZSIgPT4gIlNldHRlck1heVRocm93TGVnYWN5RXhjZXB0aW9uV2l0aE1lc3NhZ2UiLAorICAg
ICJBdG9taWNTdHJpbmciID0+ICJBdG9tU3RyaW5nIiwKKyAgICAiQXRvbWljU3RyaW5nQ3JlYXRp
b25Gcm9tTGl0ZXJhbCIgPT4gIkF0b21TdHJpbmdDcmVhdGlvbkZyb21MaXRlcmFsIiwKKyAgICAi
QXRvbWljU3RyaW5nQ3JlYXRpb25Gcm9tTGl0ZXJhbFVuaXF1ZW5lc3MiID0+ICJBdG9tU3RyaW5n
Q3JlYXRpb25Gcm9tTGl0ZXJhbFVuaXF1ZW5lc3MiLAorICAgICJBdG9taWNTdHJpbmdFeGlzdGlu
Z0hhc2giID0+ICJBdG9tU3RyaW5nRXhpc3RpbmdIYXNoIiwKKyAgICAiQXRvbWljU3RyaW5nRnJv
bUxpdGVyYWxDYW5ub3RPdmVyZmxvdyIgPT4gIkF0b21TdHJpbmdGcm9tTGl0ZXJhbENhbm5vdE92
ZXJmbG93IiwKKyAgICAiQXRvbWljU3RyaW5nRnJvbUxpdGVyYWxOb3RFbXB0eSIgPT4gIkF0b21T
dHJpbmdGcm9tTGl0ZXJhbE5vdEVtcHR5IiwKKyAgICAiQXRvbWljU3RyaW5nSGFzaCIgPT4gIkF0
b21TdHJpbmdIYXNoIiwKKyAgICAiQXRvbWljU3RyaW5nSW1wbCIgPT4gIkF0b21TdHJpbmdJbXBs
IiwKKyAgICAiQXRvbWljU3RyaW5nSW1wbENGIiA9PiAiQXRvbVN0cmluZ0ltcGxDRiIsCisgICAg
IkF0b21pY1N0cmluZ051bWJlckRvdWJsZSIgPT4gIkF0b21TdHJpbmdOdW1iZXJEb3VibGUiLAor
ICAgICJBdG9taWNTdHJpbmdUYWJsZSIgPT4gIkF0b21TdHJpbmdUYWJsZSIsCisgICAgIkF0b21p
Y1N0cmluZ1RhYmxlIiA9PiAiQXRvbVN0cmluZ1RhYmxlIiwKKyAgICAiQXRvbWljU3RyaW5nVGFi
bGVMb2NrZXIiID0+ICJBdG9tU3RyaW5nVGFibGVMb2NrZXIiLAorICAgICJBdG9taWNTdHJpbmdf
aCIgPT4gIkF0b21TdHJpbmdfaCIsCisgICAgIklETEF0b21pY1N0cmluZ0FkYXB0b3IiID0+ICJJ
RExBdG9tU3RyaW5nQWRhcHRvciIsCisgICAgIklETFJlcXVpcmVzRXhpc3RpbmdBdG9taWNTdHJp
bmdBZGFwdG9yIiA9PiAiSURMUmVxdWlyZXNFeGlzdGluZ0F0b21TdHJpbmdBZGFwdG9yIiwKKyAg
ICAiUmVxdWlyZXNFeGlzdGluZ0F0b21pY1N0cmluZyIgPT4gIlJlcXVpcmVzRXhpc3RpbmdBdG9t
U3RyaW5nIiwKKyAgICAiU3RyaW5nSW1wbE51bGxTeW1ib2xUb0F0b21pY1N0cmluZyIgPT4gIlN0
cmluZ0ltcGxOdWxsU3ltYm9sVG9BdG9tU3RyaW5nIiwKKyAgICAiU3RyaW5nSW1wbFN0YXRpY1Rv
QXRvbWljU3RyaW5nIiA9PiAiU3RyaW5nSW1wbFN0YXRpY1RvQXRvbVN0cmluZyIsCisgICAgIlN0
cmluZ0ltcGxTeW1ib2xUb0F0b21pY1N0cmluZyIgPT4gIlN0cmluZ0ltcGxTeW1ib2xUb0F0b21T
dHJpbmciLAorICAgICJUb0F0b21pY1N0cmluZyIgPT4gIlRvQXRvbVN0cmluZyIsCisgICAgIlRv
QXRvbWljU3RyaW5nT25FbXB0eSIgPT4gIlRvQXRvbVN0cmluZ09uRW1wdHkiLAorICAgICJUb2tl
bkF0b21pY1N0cmluZ0luaXRpYWxpemVyIiA9PiAiVG9rZW5BdG9tU3RyaW5nSW5pdGlhbGl6ZXIi
LAorICAgICJXVEZBdG9taWNTdHJpbmdQcmludGVyIiA9PiAiV1RGQXRvbVN0cmluZ1ByaW50ZXIi
LAorICAgICJXVEZBdG9taWNTdHJpbmdfU3VtbWFyeVByb3ZpZGVyIiA9PiAiV1RGQXRvbVN0cmlu
Z19TdW1tYXJ5UHJvdmlkZXIiLAorICAgICJhdG9taWNTdHJpbmciID0+ICJhdG9tU3RyaW5nIiwK
KyAgICAiYXRvbWljU3RyaW5nMSIgPT4gImF0b21TdHJpbmcxIiwKKyAgICAiYXRvbWljU3RyaW5n
MiIgPT4gImF0b21TdHJpbmcyIiwKKyAgICAiYXRvbWljU3RyaW5nVGFibGUiID0+ICJhdG9tU3Ry
aW5nVGFibGUiLAorICAgICJhdG9taWNTdHJpbmdXaXRoVGVtcGxhdGUiID0+ICJhdG9tU3RyaW5n
V2l0aFRlbXBsYXRlIiwKKyAgICAiYXRvbWljU3RyaW5ncyIgPT4gImF0b21TdHJpbmdzIiwKKyAg
ICAiY2hlY2tDdXJyZW50QXRvbWljU3RyaW5nVGFibGUiID0+ICJjaGVja0N1cnJlbnRBdG9tU3Ry
aW5nVGFibGUiLAorICAgICJleGlzdGluZ0F0b21pY1N0cmluZyIgPT4gImV4aXN0aW5nQXRvbVN0
cmluZyIsCisgICAgImV4aXN0aW5nRW50cnlBdG9taWNTdHJpbmdUYWJsZSIgPT4gImV4aXN0aW5n
RW50cnlBdG9tU3RyaW5nVGFibGUiLAorICAgICJnZXRQcm9wZXJ0eU5hbWVBdG9taWNTdHJpbmci
ID0+ICJnZXRQcm9wZXJ0eU5hbWVBdG9tU3RyaW5nIiwKKyAgICAiZ2V0VmFsdWVOYW1lQXRvbWlj
U3RyaW5nIiA9PiAiZ2V0VmFsdWVOYW1lQXRvbVN0cmluZyIsCisgICAgImlzQXRvbWljIiA9PiAi
aXNBdG9tIiwKKyAgICAiaXNBdG9taWNTdHJpbmciID0+ICJpc0F0b21TdHJpbmciLAorICAgICJp
c0luQXRvbWljU3RyaW5nVGFibGUiID0+ICJpc0luQXRvbVN0cmluZ1RhYmxlIiwKKyAgICAibV9h
dG9taWNTdHJpbmdUYWJsZSIgPT4gIm1fYXRvbVN0cmluZ1RhYmxlIiwKKyAgICAibV9jdXJyZW50
QXRvbWljU3RyaW5nVGFibGUiID0+ICJtX2N1cnJlbnRBdG9tU3RyaW5nVGFibGUiLAorICAgICJt
X2RlZmF1bHRBdG9taWNTdHJpbmdUYWJsZSIgPT4gIm1fZGVmYXVsdEF0b21TdHJpbmdUYWJsZSIs
CisgICAgIm1fZW50cnlBdG9taWNTdHJpbmdUYWJsZSIgPT4gIm1fZW50cnlBdG9tU3RyaW5nVGFi
bGUiLAorICAgICJvbGRBdG9taWNTdHJpbmdUYWJsZSIgPT4gIm9sZEF0b21TdHJpbmdUYWJsZSIs
CisgICAgInByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nIiA9PiAicHJvcGVydHlOYW1lVG9BdG9t
U3RyaW5nIiwKKyAgICAicmVzb2x2ZVJvcGVUb0F0b21pY1N0cmluZyIgPT4gInJlc29sdmVSb3Bl
VG9BdG9tU3RyaW5nIiwKKyAgICAicmVzb2x2ZVJvcGVUb0V4aXN0aW5nQXRvbWljU3RyaW5nIiA9
PiAicmVzb2x2ZVJvcGVUb0V4aXN0aW5nQXRvbVN0cmluZyIsCisgICAgInNldEN1cnJlbnRBdG9t
aWNTdHJpbmdUYWJsZSIgPT4gInNldEN1cnJlbnRBdG9tU3RyaW5nVGFibGUiLAorICAgICJzaG91
bGRVc2VBdG9taWNTdHJpbmciID0+ICJzaG91bGRVc2VBdG9tU3RyaW5nIiwKKyAgICAidGVzdEF0
b21pY1N0cmluZ051bWJlciIgPT4gInRlc3RBdG9tU3RyaW5nTnVtYmVyIiwKKyAgICAidG9BdG9t
aWNTdHJpbmciID0+ICJ0b0F0b21TdHJpbmciLAorICAgICJ0b0V4aXN0aW5nQXRvbWljU3RyaW5n
IiA9PiAidG9FeGlzdGluZ0F0b21TdHJpbmciLAorICAgICJ1c2VBdG9taWNTdHJpbmciID0+ICJ1
c2VBdG9tU3RyaW5nIiwKICk7CiAKIG15ICVyZW5hbWVzQ29udGVtcGxhdGVkRm9yVGhlRnV0dXJl
ID0gKApAQCAtMjE5LDE3ICsyNjcsMTAgQEAgZm9yIG15ICRmaWxlIChzb3J0IEBwYXRocykgewog
ICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgZm9yIG15ICRmcm9tIChAc29ydGVkUmVu
YW1lS2V5cykgewotICAgICAgICAgICAgJG5ld0NvbnRlbnRzID1+IHMvXGIkZnJvbSg/IVsiXHdd
KS8kcmVuYW1lc3skZnJvbX0vZzsgIyB0aGlzICIgdW5jb25mdXNlcyBYY29kZSBzeW50YXggaGln
aGxpZ2h0aW5nCisgICAgICAgICAgICAkbmV3Q29udGVudHMgPX4gcy9cYiRmcm9tXGIvJHJlbmFt
ZXN7JGZyb219L2c7ICMgdGhpcyAiIHVuY29uZnVzZXMgWGNvZGUgc3ludGF4IGhpZ2hsaWdodGlu
ZwogICAgICAgICB9CiAgICAgfQogCi0gICAgIyBSZW1vdmUgdGhlICJ2aXJ0dWFsIiBrZXl3b3Jk
IGZyb20gdmlydHVhbC9vdmVycmlkZSBsaW5lcy4KLSAgICAjIFNob3VsZCBiZSBhIG5vLW9wIGJ1
dCBhbHNvIE9LIHRvIHJlbW92ZSB0aGlzIGFueSB0aW1lLCBub3cgdGhhdCB3ZSBoYXZlIGRvbmUg
aXQgb25jZS4KLSAgICAkbmV3Q29udGVudHMgPX4gcy9eKFxzKihcdytFWFBPUlRcdypccyspPyl2
aXJ0dWFsIChbXns7XSsgb3ZlcnJpZGVcYikvJDEkMy9tZzsKLSAgICAkbmV3Q29udGVudHMgPX4g
cy9eKFxzKihcdytFWFBPUlRcdypccyspPyl2aXJ0dWFsIChbXns7XSsgZmluYWxcYikvJDEkMy9t
ZzsKLSAgICAkbmV3Q29udGVudHMgPX4gcy9cYm92ZXJyaWRlXHMrZmluYWxcYi9maW5hbC9nOwot
ICAgICRuZXdDb250ZW50cyA9fiBzL1xiZmluYWxccytvdmVycmlkZVxiL2ZpbmFsL2c7Ci0KICAg
ICBpZiAoJG5ld0NvbnRlbnRzIG5lICRjb250ZW50cykgewogICAgICAgICBvcGVuIEZJTEUsICI+
IiwgJGZpbGUgb3IgZGllICJGYWlsZWQgdG8gb3BlbiAkZmlsZSI7CiAgICAgICAgIHByaW50IEZJ
TEUgJG5ld0NvbnRlbnRzOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxp
c3RzLnR4dCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKaW5kZXggYzQ5ZDk3
YWVkYzNiMWExY2UyNDA0NjhiYTgzNzI1MTc4OGEyNzE4MC4uN2FkYjYwOGVlYWE2MTFiNjZiMWVk
NTA3NGE1OTE3ZDBhMGRmODU0OCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFr
ZUxpc3RzLnR4dAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CkBAIC0y
NCw3ICsyNCw3IEBAIHNldChUZXN0V1RGX1NPVVJDRVMKICAgICBDb3VudGVycy5jcHAKICAgICBU
ZXN0c0NvbnRyb2xsZXIuY3BwCiAKLSAgICBUZXN0cy9XVEYvQXRvbWljU3RyaW5nLmNwcAorICAg
IFRlc3RzL1dURi9BdG9tU3RyaW5nLmNwcAogICAgIFRlc3RzL1dURi9CbG9vbUZpbHRlci5jcHAK
ICAgICBUZXN0cy9XVEYvQ1N0cmluZy5jcHAKICAgICBUZXN0cy9XVEYvQ2hlY2tlZEFyaXRobWV0
aWNPcGVyYXRpb25zLmNwcApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmNjA2OWJkODg5NTNj
YzM1MTBiMDg3ZTFhMGUyYTJjN2RmYTQwZTU2Li5mZGJjZDk2OGFkMzNmMjZkYjE1YTRjZjQ4NDFl
ZDA2NGNkMTgzOTZjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDA2LDcgKzQwNiw3IEBA
CiAJCTdDM0RCOEU0MUQxMjEyOUIwMEFFOENDMyAvKiBDb21tYW5kQmFja0ZvcndhcmQubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzNEQjhFMjFEMTIx
MjlCMDBBRThDQzMgLyogQ29tbWFuZEJhY2tGb3J3YXJkLm1tICovOyB9OwogCQk3QzQxN0YzMzFE
MTlFMTQ4MDBCOEVGNTMgLyogV0tXZWJWaWV3RGVmYXVsdE5hdmlnYXRpb25EZWxlZ2F0ZS5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNDE3RjMxMUQx
OUUxNDgwMEI4RUY1MyAvKiBXS1dlYlZpZXdEZWZhdWx0TmF2aWdhdGlvbkRlbGVnYXRlLm1tICov
OyB9OwogCQk3QzQ4NkJBMTFBQTEyNTY3MDAzRjZGOUIgLyogYnVuZGxlLWZpbGUuaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzQ4NkJB
MDFBQTEyNTRCMDAzRjZGOUIgLyogYnVuZGxlLWZpbGUuaHRtbCAqLzsgfTsKLQkJN0M4M0RFOTkx
RDBBNTkwQzAwRkVCQ0YzIC8qIEF0b21pY1N0cmluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNkYxQjQ0MjE1Q0E0MzRGMDBEMUU0QkYgLyogQXRv
bWljU3RyaW5nLmNwcCAqLzsgfTsKKwkJN0M4M0RFOTkxRDBBNTkwQzAwRkVCQ0YzIC8qIEF0b21T
dHJpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MjZGMUI0NDIxNUNBNDM0RjAwRDFFNEJGIC8qIEF0b21TdHJpbmcuY3BwICovOyB9OwogCQk3Qzgz
REU5QzFEMEE1OTBDMDBGRUJDRjMgLyogQmxvb21GaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQwMDE5MzAxQUNFOUI1QzAwMUIwQTJBIC8q
IEJsb29tRmlsdGVyLmNwcCAqLzsgfTsKIAkJN0M4M0RFQTAxRDBBNTkwQzAwRkVCQ0YzIC8qIENo
ZWNrZWRBcml0aG1ldGljT3BlcmF0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBN0E5NjZEQTE0MEVDQ0M4MDA1RUY5QjQgLyogQ2hlY2tlZEFy
aXRobWV0aWNPcGVyYXRpb25zLmNwcCAqLzsgfTsKIAkJN0M4M0RFQTYxRDBBNTkwQzAwRkVCQ0Yz
IC8qIENvdW50ZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdDNkJCRDhCMTlDRUE2MzAwMEMxRjVFMCAvKiBDb3VudGVycy5jcHAgKi87IH07CkBA
IC0xNDYxLDcgKzE0NjEsNyBAQAogCQkyNkIyREZGODE1QkRFNTk5MDA0RjY5MUQgLyogSGFzaFNl
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIYXNoU2V0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjZERjVBNUQxNUEyOUJBQTAwMzY4OUMyIC8q
IENhbmNlbExvYWRGcm9tUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDYW5jZWxMb2FkRnJvbVJlc291cmNlTG9hZERlbGVnYXRl
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyNkRGNUE2MTE1QTJBMjJCMDAzNjg5
QzIgLyogQ2FuY2VsTG9hZEZyb21SZXNvdXJjZUxvYWREZWxlZ2F0ZS5odG1sICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC5odG1sOyBwYXRoID0gQ2FuY2VsTG9hZEZyb21SZXNvdXJjZUxvYWREZWxlZ2F0ZS5odG1s
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkyNkYxQjQ0MjE1Q0E0MzRGMDBEMUU0QkYg
LyogQXRvbWljU3RyaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEF0b21pY1N0cmluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI2RjFCNDQy
MTVDQTQzNEYwMEQxRTRCRiAvKiBBdG9tU3RyaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEF0b21TdHJpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkyNkYxQjQ0MzE1Q0E0MzRGMDBEMUU0QkYgLyogU3RyaW5nSW1wbC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJpbmdJbXBsLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMjZGNTJFQUExODI4NzI2MDAwMjNENDEyIC8qIEdlb2xvY2F0aW9u
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdlb2xvY2F0aW9uLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjZGNTJFQUMxODI4ODIwRTAwMjNENDEy
IC8qIGdlb2xvY2F0aW9uR2V0Q3VycmVudFBvc2l0aW9uLmh0bWwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0
bWw7IHBhdGggPSBnZW9sb2NhdGlvbkdldEN1cnJlbnRQb3NpdGlvbi5odG1sOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMzM5Miw3ICszMzkyLDcgQEAKIAkJCQlFM0MyMUE3ODIxQjI1
QzgyMDAzQjMxQTMgLyogY29jb2EgKi8sCiAJCQkJN0NCQkEwNzUxOUJCOEEwOTAwQkJGMDI1IC8q
IGRhcndpbiAqLywKIAkJCQlCQzAyOUIxQTE0ODZCMjM4MDA4MTdEQTkgLyogbnMgKi8sCi0JCQkJ
MjZGMUI0NDIxNUNBNDM0RjAwRDFFNEJGIC8qIEF0b21pY1N0cmluZy5jcHAgKi8sCisJCQkJMjZG
MUI0NDIxNUNBNDM0RjAwRDFFNEJGIC8qIEF0b21TdHJpbmcuY3BwICovLAogCQkJCUU0MDAxOTMw
MUFDRTlCNUMwMDFCMEEyQSAvKiBCbG9vbUZpbHRlci5jcHAgKi8sCiAJCQkJQTdBOTY2REExNDBF
Q0NDODAwNUVGOUI0IC8qIENoZWNrZWRBcml0aG1ldGljT3BlcmF0aW9ucy5jcHAgKi8sCiAJCQkJ
MEYzMENCNUIxRkNFMTc5MjAwNEI1MzIzIC8qIENvbmN1cnJlbnRQdHJIYXNoU2V0LmNwcCAqLywK
QEAgLTQwMTAsNyArNDAxMCw3IEBACiAJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKIAkJ
CWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKLQkJCQk3QzgzREU5
OTFEMEE1OTBDMDBGRUJDRjMgLyogQXRvbWljU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTdDODNERTk5MUQwQTU5MEMwMEZFQkNGMyAvKiBBdG9tU3RyaW5nLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTFBREFEMTUwMUQ3N0E5RjYwMDIxMjU4NiAvKiBCbG9ja1B0ci5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTdDODNERTlDMUQwQTU5MEMwMEZFQkNGMyAvKiBCbG9vbUZpbHRlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk3QzgzREVBMDFEMEE1OTBDMDBGRUJDRjMgLyogQ2hlY2tlZEFyaXRo
bWV0aWNPcGVyYXRpb25zLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvQXRvbVN0cmluZy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9BdG9tU3RyaW5nLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZTc0MTU0ZTM4OGJhN2M1NjQ2
MWVjOTZiYTcwMDNlMWQ5MmI2OGVhCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvQXRvbVN0cmluZy5jcHAKQEAgLTAsMCArMSwxMTMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTItMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21T
dHJpbmcuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitURVNUKFdURiwgQXRvbVN0
cmluZ0NyZWF0aW9uRnJvbUxpdGVyYWwpCit7CisgICAgQXRvbVN0cmluZyBzdHJpbmdXaXRoVGVt
cGxhdGUoIlRlbXBsYXRlIExpdGVyYWwiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCk7CisgICAgQVNTRVJUX0VRKHN0cmxlbigiVGVtcGxhdGUgTGl0ZXJhbCIpLCBzdHJpbmdXaXRo
VGVtcGxhdGUubGVuZ3RoKCkpOworICAgIEFTU0VSVF9UUlVFKHN0cmluZ1dpdGhUZW1wbGF0ZSA9
PSAiVGVtcGxhdGUgTGl0ZXJhbCIpOworICAgIEFTU0VSVF9UUlVFKHN0cmluZ1dpdGhUZW1wbGF0
ZS5zdHJpbmcoKS5pczhCaXQoKSk7CisKKyAgICBjb25zdCBjaGFyKiBwcm9ncmFtbWF0aWNTdHJp
bmdEYXRhID0gIkV4cGxpY2l0IFNpemUgTGl0ZXJhbCI7CisgICAgQXRvbVN0cmluZyBwcm9ncmFt
bWF0aWNTdHJpbmcocHJvZ3JhbW1hdGljU3RyaW5nRGF0YSwgc3RybGVuKHByb2dyYW1tYXRpY1N0
cmluZ0RhdGEpLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgQVNTRVJU
X0VRKHN0cmxlbihwcm9ncmFtbWF0aWNTdHJpbmdEYXRhKSwgcHJvZ3JhbW1hdGljU3RyaW5nLmxl
bmd0aCgpKTsKKyAgICBBU1NFUlRfVFJVRShwcm9ncmFtbWF0aWNTdHJpbmcuc3RyaW5nKCkuaXM4
Qml0KCkpOworICAgIEFTU0VSVF9FUShwcm9ncmFtbWF0aWNTdHJpbmdEYXRhLCByZWludGVycHJl
dF9jYXN0PGNvbnN0IGNoYXIqPihwcm9ncmFtbWF0aWNTdHJpbmcuc3RyaW5nKCkuY2hhcmFjdGVy
czgoKSkpOworfQorCitURVNUKFdURiwgQXRvbVN0cmluZ0NyZWF0aW9uRnJvbUxpdGVyYWxVbmlx
dWVuZXNzKQoreworICAgIEF0b21TdHJpbmcgc3RyaW5nMSgiVGVtcGxhdGUgTGl0ZXJhbCIsIEF0
b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBBdG9tU3RyaW5nIHN0cmluZzIo
IlRlbXBsYXRlIExpdGVyYWwiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Cisg
ICAgQVNTRVJUX0VRKHN0cmluZzEuaW1wbCgpLCBzdHJpbmcyLmltcGwoKSk7CisKKyAgICBBdG9t
U3RyaW5nIHN0cmluZzMoIlRlbXBsYXRlIExpdGVyYWwiKTsKKyAgICBBU1NFUlRfRVEoc3RyaW5n
MS5pbXBsKCksIHN0cmluZzMuaW1wbCgpKTsKK30KKworVEVTVChXVEYsIEF0b21TdHJpbmdFeGlz
dGluZ0hhc2gpCit7CisgICAgQXRvbVN0cmluZyBzdHJpbmcxKCJUZW1wbGF0ZSBMaXRlcmFsIiwg
QXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIEFTU0VSVF9FUShzdHJpbmcx
LmV4aXN0aW5nSGFzaCgpLCBzdHJpbmcxLmltcGwoKS0+ZXhpc3RpbmdIYXNoKCkpOworICAgIEF0
b21TdHJpbmcgc3RyaW5nMjsKKyAgICBBU1NFUlRfRVEoc3RyaW5nMi5leGlzdGluZ0hhc2goKSwg
MHUpOworfQorCitzdGF0aWMgaW5saW5lIGNvbnN0IGNoYXIqIHRlc3RBdG9tU3RyaW5nTnVtYmVy
KGRvdWJsZSBudW1iZXIpCit7CisgICAgc3RhdGljIGNoYXIgdGVzdEJ1ZmZlclsxMDBdID0geyB9
OworICAgIHN0ZDo6c3RybmNweSh0ZXN0QnVmZmVyLCBBdG9tU3RyaW5nOjpudW1iZXIobnVtYmVy
KS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCA5OSk7CisgICAgcmV0dXJuIHRlc3RCdWZmZXI7Cit9
CisKK1RFU1QoV1RGLCBBdG9tU3RyaW5nTnVtYmVyRG91YmxlKQoreworICAgIHVzaW5nIExpbWl0
cyA9IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjsKKworICAgIEVYUEVDVF9TVFJFUSgiSW5m
aW5pdHkiLCB0ZXN0QXRvbVN0cmluZ051bWJlcihMaW1pdHM6OmluZmluaXR5KCkpKTsKKyAgICBF
WFBFQ1RfU1RSRVEoIi1JbmZpbml0eSIsIHRlc3RBdG9tU3RyaW5nTnVtYmVyKC1MaW1pdHM6Omlu
ZmluaXR5KCkpKTsKKworICAgIEVYUEVDVF9TVFJFUSgiTmFOIiwgdGVzdEF0b21TdHJpbmdOdW1i
ZXIoLUxpbWl0czo6cXVpZXRfTmFOKCkpKTsKKworICAgIEVYUEVDVF9TVFJFUSgiMCIsIHRlc3RB
dG9tU3RyaW5nTnVtYmVyKDApKTsKKyAgICBFWFBFQ1RfU1RSRVEoIjAiLCB0ZXN0QXRvbVN0cmlu
Z051bWJlcigtMCkpOworCisgICAgRVhQRUNUX1NUUkVRKCIyLjIyNTA3Mzg1ODUwNzIwMTRlLTMw
OCIsIHRlc3RBdG9tU3RyaW5nTnVtYmVyKExpbWl0czo6bWluKCkpKTsKKyAgICBFWFBFQ1RfU1RS
RVEoIi0xLjc5NzY5MzEzNDg2MjMxNTdlKzMwOCIsIHRlc3RBdG9tU3RyaW5nTnVtYmVyKExpbWl0
czo6bG93ZXN0KCkpKTsKKyAgICBFWFBFQ1RfU1RSRVEoIjEuNzk3NjkzMTM0ODYyMzE1N2UrMzA4
IiwgdGVzdEF0b21TdHJpbmdOdW1iZXIoTGltaXRzOjptYXgoKSkpOworCisgICAgRVhQRUNUX1NU
UkVRKCIzLjE0MTU5MjY1MzU4OTc5MyIsIHRlc3RBdG9tU3RyaW5nTnVtYmVyKHBpRG91YmxlKSk7
CisgICAgRVhQRUNUX1NUUkVRKCIzLjE0MTU5Mjc0MTAxMjU3MzIiLCB0ZXN0QXRvbVN0cmluZ051
bWJlcihwaUZsb2F0KSk7CisgICAgRVhQRUNUX1NUUkVRKCIxLjU3MDc5NjMyNjc5NDg5NjYiLCB0
ZXN0QXRvbVN0cmluZ051bWJlcihwaU92ZXJUd29Eb3VibGUpKTsKKyAgICBFWFBFQ1RfU1RSRVEo
IjEuNTcwNzk2MzcwNTA2Mjg2NiIsIHRlc3RBdG9tU3RyaW5nTnVtYmVyKHBpT3ZlclR3b0Zsb2F0
KSk7CisgICAgRVhQRUNUX1NUUkVRKCIwLjc4NTM5ODE2MzM5NzQ0ODMiLCB0ZXN0QXRvbVN0cmlu
Z051bWJlcihwaU92ZXJGb3VyRG91YmxlKSk7CisgICAgRVhQRUNUX1NUUkVRKCIwLjc4NTM5ODE4
NTI1MzE0MzMiLCB0ZXN0QXRvbVN0cmluZ051bWJlcihwaU92ZXJGb3VyRmxvYXQpKTsKKworICAg
IEVYUEVDVF9TVFJFUSgiMi43MTgyODE4Mjg0NTkwNDUiLCB0ZXN0QXRvbVN0cmluZ051bWJlcigy
LjcxODI4MTgyODQ1OTA0NTIzNTM2MDI4NzQ3MTM1MjY2MjQ5Nzc1NzI0NzA5MzY5OTk1KSk7CisK
KyAgICBFWFBFQ1RfU1RSRVEoIjI5OTc5MjQ1OCIsIHRlc3RBdG9tU3RyaW5nTnVtYmVyKDI5OTc5
MjQ1OCkpOworCisgICAgRVhQRUNUX1NUUkVRKCIxLjYxODAzMzk4ODc0OTg5NSIsIHRlc3RBdG9t
U3RyaW5nTnVtYmVyKDEuNjE4MDMzOTg4NzQ5ODk0ODQ4MikpOworCisgICAgRVhQRUNUX1NUUkVR
KCIxMDAwIiwgdGVzdEF0b21TdHJpbmdOdW1iZXIoMWUzKSk7CisgICAgRVhQRUNUX1NUUkVRKCIx
MDAwMDAwMDAwMCIsIHRlc3RBdG9tU3RyaW5nTnVtYmVyKDFlMTApKTsKKyAgICBFWFBFQ1RfU1RS
RVEoIjEwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIHRlc3RBdG9tU3RyaW5nTnVtYmVyKDFlMjApKTsK
KyAgICBFWFBFQ1RfU1RSRVEoIjFlKzIxIiwgdGVzdEF0b21TdHJpbmdOdW1iZXIoMWUyMSkpOwor
ICAgIEVYUEVDVF9TVFJFUSgiMWUrMzAiLCB0ZXN0QXRvbVN0cmluZ051bWJlcigxZTMwKSk7CisK
KyAgICBFWFBFQ1RfU1RSRVEoIjExMDAiLCB0ZXN0QXRvbVN0cmluZ051bWJlcigxLjFlMykpOwor
ICAgIEVYUEVDVF9TVFJFUSgiMTEwMDAwMDAwMDAiLCB0ZXN0QXRvbVN0cmluZ051bWJlcigxLjFl
MTApKTsKKyAgICBFWFBFQ1RfU1RSRVEoIjExMDAwMDAwMDAwMDAwMDAwMDAwMCIsIHRlc3RBdG9t
U3RyaW5nTnVtYmVyKDEuMWUyMCkpOworICAgIEVYUEVDVF9TVFJFUSgiMS4xZSsyMSIsIHRlc3RB
dG9tU3RyaW5nTnVtYmVyKDEuMWUyMSkpOworICAgIEVYUEVDVF9TVFJFUSgiMS4xZSszMCIsIHRl
c3RBdG9tU3RyaW5nTnVtYmVyKDEuMWUzMCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2Vi
S2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9BdG9taWNT
dHJpbmcuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQXRvbWljU3RyaW5nLmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDhiMWY4MDUyMTUzNjFiMWMzZjJhZGQ5
MmI0N2NhZTA2OWQ5NzgyMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9BdG9taWNTdHJpbmcuY3BwCisr
KyAvZGV2L251bGwKQEAgLTEsMTEzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIt
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLQotI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgotCi1uYW1l
c3BhY2UgVGVzdFdlYktpdEFQSSB7Ci0KLVRFU1QoV1RGLCBBdG9taWNTdHJpbmdDcmVhdGlvbkZy
b21MaXRlcmFsKQotewotICAgIEF0b21pY1N0cmluZyBzdHJpbmdXaXRoVGVtcGxhdGUoIlRlbXBs
YXRlIExpdGVyYWwiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICBB
U1NFUlRfRVEoc3RybGVuKCJUZW1wbGF0ZSBMaXRlcmFsIiksIHN0cmluZ1dpdGhUZW1wbGF0ZS5s
ZW5ndGgoKSk7Ci0gICAgQVNTRVJUX1RSVUUoc3RyaW5nV2l0aFRlbXBsYXRlID09ICJUZW1wbGF0
ZSBMaXRlcmFsIik7Ci0gICAgQVNTRVJUX1RSVUUoc3RyaW5nV2l0aFRlbXBsYXRlLnN0cmluZygp
LmlzOEJpdCgpKTsKLQotICAgIGNvbnN0IGNoYXIqIHByb2dyYW1tYXRpY1N0cmluZ0RhdGEgPSAi
RXhwbGljaXQgU2l6ZSBMaXRlcmFsIjsKLSAgICBBdG9taWNTdHJpbmcgcHJvZ3JhbW1hdGljU3Ry
aW5nKHByb2dyYW1tYXRpY1N0cmluZ0RhdGEsIHN0cmxlbihwcm9ncmFtbWF0aWNTdHJpbmdEYXRh
KSwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgQVNTRVJUX0VRKHN0
cmxlbihwcm9ncmFtbWF0aWNTdHJpbmdEYXRhKSwgcHJvZ3JhbW1hdGljU3RyaW5nLmxlbmd0aCgp
KTsKLSAgICBBU1NFUlRfVFJVRShwcm9ncmFtbWF0aWNTdHJpbmcuc3RyaW5nKCkuaXM4Qml0KCkp
OwotICAgIEFTU0VSVF9FUShwcm9ncmFtbWF0aWNTdHJpbmdEYXRhLCByZWludGVycHJldF9jYXN0
PGNvbnN0IGNoYXIqPihwcm9ncmFtbWF0aWNTdHJpbmcuc3RyaW5nKCkuY2hhcmFjdGVyczgoKSkp
OwotfQotCi1URVNUKFdURiwgQXRvbWljU3RyaW5nQ3JlYXRpb25Gcm9tTGl0ZXJhbFVuaXF1ZW5l
c3MpCi17Ci0gICAgQXRvbWljU3RyaW5nIHN0cmluZzEoIlRlbXBsYXRlIExpdGVyYWwiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICBBdG9taWNTdHJpbmcgc3RyaW5n
MigiVGVtcGxhdGUgTGl0ZXJhbCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OwotICAgIEFTU0VSVF9FUShzdHJpbmcxLmltcGwoKSwgc3RyaW5nMi5pbXBsKCkpOwotCi0gICAg
QXRvbWljU3RyaW5nIHN0cmluZzMoIlRlbXBsYXRlIExpdGVyYWwiKTsKLSAgICBBU1NFUlRfRVEo
c3RyaW5nMS5pbXBsKCksIHN0cmluZzMuaW1wbCgpKTsKLX0KLQotVEVTVChXVEYsIEF0b21pY1N0
cmluZ0V4aXN0aW5nSGFzaCkKLXsKLSAgICBBdG9taWNTdHJpbmcgc3RyaW5nMSgiVGVtcGxhdGUg
TGl0ZXJhbCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIEFTU0VS
VF9FUShzdHJpbmcxLmV4aXN0aW5nSGFzaCgpLCBzdHJpbmcxLmltcGwoKS0+ZXhpc3RpbmdIYXNo
KCkpOwotICAgIEF0b21pY1N0cmluZyBzdHJpbmcyOwotICAgIEFTU0VSVF9FUShzdHJpbmcyLmV4
aXN0aW5nSGFzaCgpLCAwdSk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgY29uc3QgY2hhciogdGVzdEF0
b21pY1N0cmluZ051bWJlcihkb3VibGUgbnVtYmVyKQotewotICAgIHN0YXRpYyBjaGFyIHRlc3RC
dWZmZXJbMTAwXSA9IHsgfTsKLSAgICBzdGQ6OnN0cm5jcHkodGVzdEJ1ZmZlciwgQXRvbWljU3Ry
aW5nOjpudW1iZXIobnVtYmVyKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCA5OSk7Ci0gICAgcmV0
dXJuIHRlc3RCdWZmZXI7Ci19Ci0KLVRFU1QoV1RGLCBBdG9taWNTdHJpbmdOdW1iZXJEb3VibGUp
Ci17Ci0gICAgdXNpbmcgTGltaXRzID0gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OwotCi0g
ICAgRVhQRUNUX1NUUkVRKCJJbmZpbml0eSIsIHRlc3RBdG9taWNTdHJpbmdOdW1iZXIoTGltaXRz
OjppbmZpbml0eSgpKSk7Ci0gICAgRVhQRUNUX1NUUkVRKCItSW5maW5pdHkiLCB0ZXN0QXRvbWlj
U3RyaW5nTnVtYmVyKC1MaW1pdHM6OmluZmluaXR5KCkpKTsKLQotICAgIEVYUEVDVF9TVFJFUSgi
TmFOIiwgdGVzdEF0b21pY1N0cmluZ051bWJlcigtTGltaXRzOjpxdWlldF9OYU4oKSkpOwotCi0g
ICAgRVhQRUNUX1NUUkVRKCIwIiwgdGVzdEF0b21pY1N0cmluZ051bWJlcigwKSk7Ci0gICAgRVhQ
RUNUX1NUUkVRKCIwIiwgdGVzdEF0b21pY1N0cmluZ051bWJlcigtMCkpOwotCi0gICAgRVhQRUNU
X1NUUkVRKCIyLjIyNTA3Mzg1ODUwNzIwMTRlLTMwOCIsIHRlc3RBdG9taWNTdHJpbmdOdW1iZXIo
TGltaXRzOjptaW4oKSkpOwotICAgIEVYUEVDVF9TVFJFUSgiLTEuNzk3NjkzMTM0ODYyMzE1N2Ur
MzA4IiwgdGVzdEF0b21pY1N0cmluZ051bWJlcihMaW1pdHM6Omxvd2VzdCgpKSk7Ci0gICAgRVhQ
RUNUX1NUUkVRKCIxLjc5NzY5MzEzNDg2MjMxNTdlKzMwOCIsIHRlc3RBdG9taWNTdHJpbmdOdW1i
ZXIoTGltaXRzOjptYXgoKSkpOwotCi0gICAgRVhQRUNUX1NUUkVRKCIzLjE0MTU5MjY1MzU4OTc5
MyIsIHRlc3RBdG9taWNTdHJpbmdOdW1iZXIocGlEb3VibGUpKTsKLSAgICBFWFBFQ1RfU1RSRVEo
IjMuMTQxNTkyNzQxMDEyNTczMiIsIHRlc3RBdG9taWNTdHJpbmdOdW1iZXIocGlGbG9hdCkpOwot
ICAgIEVYUEVDVF9TVFJFUSgiMS41NzA3OTYzMjY3OTQ4OTY2IiwgdGVzdEF0b21pY1N0cmluZ051
bWJlcihwaU92ZXJUd29Eb3VibGUpKTsKLSAgICBFWFBFQ1RfU1RSRVEoIjEuNTcwNzk2MzcwNTA2
Mjg2NiIsIHRlc3RBdG9taWNTdHJpbmdOdW1iZXIocGlPdmVyVHdvRmxvYXQpKTsKLSAgICBFWFBF
Q1RfU1RSRVEoIjAuNzg1Mzk4MTYzMzk3NDQ4MyIsIHRlc3RBdG9taWNTdHJpbmdOdW1iZXIocGlP
dmVyRm91ckRvdWJsZSkpOwotICAgIEVYUEVDVF9TVFJFUSgiMC43ODUzOTgxODUyNTMxNDMzIiwg
dGVzdEF0b21pY1N0cmluZ051bWJlcihwaU92ZXJGb3VyRmxvYXQpKTsKLQotICAgIEVYUEVDVF9T
VFJFUSgiMi43MTgyODE4Mjg0NTkwNDUiLCB0ZXN0QXRvbWljU3RyaW5nTnVtYmVyKDIuNzE4Mjgx
ODI4NDU5MDQ1MjM1MzYwMjg3NDcxMzUyNjYyNDk3NzU3MjQ3MDkzNjk5OTUpKTsKLQotICAgIEVY
UEVDVF9TVFJFUSgiMjk5NzkyNDU4IiwgdGVzdEF0b21pY1N0cmluZ051bWJlcigyOTk3OTI0NTgp
KTsKLQotICAgIEVYUEVDVF9TVFJFUSgiMS42MTgwMzM5ODg3NDk4OTUiLCB0ZXN0QXRvbWljU3Ry
aW5nTnVtYmVyKDEuNjE4MDMzOTg4NzQ5ODk0ODQ4MikpOwotCi0gICAgRVhQRUNUX1NUUkVRKCIx
MDAwIiwgdGVzdEF0b21pY1N0cmluZ051bWJlcigxZTMpKTsKLSAgICBFWFBFQ1RfU1RSRVEoIjEw
MDAwMDAwMDAwIiwgdGVzdEF0b21pY1N0cmluZ051bWJlcigxZTEwKSk7Ci0gICAgRVhQRUNUX1NU
UkVRKCIxMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCB0ZXN0QXRvbWljU3RyaW5nTnVtYmVyKDFlMjAp
KTsKLSAgICBFWFBFQ1RfU1RSRVEoIjFlKzIxIiwgdGVzdEF0b21pY1N0cmluZ051bWJlcigxZTIx
KSk7Ci0gICAgRVhQRUNUX1NUUkVRKCIxZSszMCIsIHRlc3RBdG9taWNTdHJpbmdOdW1iZXIoMWUz
MCkpOwotCi0gICAgRVhQRUNUX1NUUkVRKCIxMTAwIiwgdGVzdEF0b21pY1N0cmluZ051bWJlcigx
LjFlMykpOwotICAgIEVYUEVDVF9TVFJFUSgiMTEwMDAwMDAwMDAiLCB0ZXN0QXRvbWljU3RyaW5n
TnVtYmVyKDEuMWUxMCkpOwotICAgIEVYUEVDVF9TVFJFUSgiMTEwMDAwMDAwMDAwMDAwMDAwMDAw
IiwgdGVzdEF0b21pY1N0cmluZ051bWJlcigxLjFlMjApKTsKLSAgICBFWFBFQ1RfU1RSRVEoIjEu
MWUrMjEiLCB0ZXN0QXRvbWljU3RyaW5nTnVtYmVyKDEuMWUyMSkpOwotICAgIEVYUEVDVF9TVFJF
USgiMS4xZSszMCIsIHRlc3RBdG9taWNTdHJpbmdOdW1iZXIoMS4xZTMwKSk7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL1N0cmluZ0J1aWxkZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvU3RyaW5nQnVpbGRlci5jcHAKaW5kZXggN2M5ZGY2Y2M1ZGE0ODcxZDVkNDY4NWZhZGZiYjJm
MjI2NmZlMmRkNS4uYWI2N2NlMTc1ZGExZWI2ZGE4NDAzNjc3ZDA0NWFlYTg3YmY3NDk2MCAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nQnVpbGRlci5jcHAK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nQnVpbGRlci5jcHAKQEAg
LTI3Niw3NyArMjc2LDc3IEBAIFRFU1QoU3RyaW5nQnVpbGRlclRlc3QsIENhblNocmluaykKICAg
ICBBU1NFUlRfRkFMU0UoYnVpbGRlci5jYW5TaHJpbmsoKSk7CiB9CiAKLVRFU1QoU3RyaW5nQnVp
bGRlclRlc3QsIFRvQXRvbWljU3RyaW5nKQorVEVTVChTdHJpbmdCdWlsZGVyVGVzdCwgVG9BdG9t
U3RyaW5nKQogewogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICBidWlsZGVyLmFwcGVu
ZCgiMTIzIik7Ci0gICAgQXRvbWljU3RyaW5nIGF0b21pY1N0cmluZyA9IGJ1aWxkZXIudG9BdG9t
aWNTdHJpbmcoKTsKLSAgICBBU1NFUlRfRVEoU3RyaW5nKCIxMjMiKSwgYXRvbWljU3RyaW5nKTsK
KyAgICBBdG9tU3RyaW5nIGF0b21TdHJpbmcgPSBidWlsZGVyLnRvQXRvbVN0cmluZygpOworICAg
IEFTU0VSVF9FUShTdHJpbmcoIjEyMyIpLCBhdG9tU3RyaW5nKTsKIAogICAgIGJ1aWxkZXIucmVz
ZXJ2ZUNhcGFjaXR5KDI1Nik7CiAgICAgQVNTRVJUX1RSVUUoYnVpbGRlci5jYW5TaHJpbmsoKSk7
CiAgICAgZm9yIChpbnQgaSA9IGJ1aWxkZXIubGVuZ3RoKCk7IGkgPCAxMjg7IGkrKykKICAgICAg
ICAgYnVpbGRlci5hcHBlbmQoJ3gnKTsKLSAgICBBdG9taWNTdHJpbmcgYXRvbWljU3RyaW5nMSA9
IGJ1aWxkZXIudG9BdG9taWNTdHJpbmcoKTsKLSAgICBBU1NFUlRfRVEoMTI4dSwgYXRvbWljU3Ry
aW5nMS5sZW5ndGgoKSk7Ci0gICAgQVNTRVJUX0VRKCd4JywgYXRvbWljU3RyaW5nMVsxMjddKTsK
KyAgICBBdG9tU3RyaW5nIGF0b21TdHJpbmcxID0gYnVpbGRlci50b0F0b21TdHJpbmcoKTsKKyAg
ICBBU1NFUlRfRVEoMTI4dSwgYXRvbVN0cmluZzEubGVuZ3RoKCkpOworICAgIEFTU0VSVF9FUSgn
eCcsIGF0b21TdHJpbmcxWzEyN10pOwogCiAgICAgLy8gTGF0ZXIgY2hhbmdlIG9mIGJ1aWxkZXIg
c2hvdWxkIG5vdCBhZmZlY3QgdGhlIGF0b21pYyBzdHJpbmcuCiAgICAgZm9yIChpbnQgaSA9IGJ1
aWxkZXIubGVuZ3RoKCk7IGkgPCAyNTY7IGkrKykKICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ3gn
KTsKLSAgICBBU1NFUlRfRVEoMTI4dSwgYXRvbWljU3RyaW5nMS5sZW5ndGgoKSk7CisgICAgQVNT
RVJUX0VRKDEyOHUsIGF0b21TdHJpbmcxLmxlbmd0aCgpKTsKIAogICAgIEFTU0VSVF9GQUxTRShi
dWlsZGVyLmNhblNocmluaygpKTsKICAgICBTdHJpbmcgc3RyaW5nID0gYnVpbGRlci50b1N0cmlu
ZygpOwotICAgIEF0b21pY1N0cmluZyBhdG9taWNTdHJpbmcyID0gYnVpbGRlci50b0F0b21pY1N0
cmluZygpOworICAgIEF0b21TdHJpbmcgYXRvbVN0cmluZzIgPSBidWlsZGVyLnRvQXRvbVN0cmlu
ZygpOwogICAgIC8vIFRoZXkgc2hvdWxkIHNoYXJlIHRoZSBzYW1lIFN0cmluZ0ltcGwuCi0gICAg
QVNTRVJUX0VRKGF0b21pY1N0cmluZzIuaW1wbCgpLCBzdHJpbmcuaW1wbCgpKTsKKyAgICBBU1NF
UlRfRVEoYXRvbVN0cmluZzIuaW1wbCgpLCBzdHJpbmcuaW1wbCgpKTsKIH0KIAotVEVTVChTdHJp
bmdCdWlsZGVyVGVzdCwgVG9BdG9taWNTdHJpbmdPbkVtcHR5KQorVEVTVChTdHJpbmdCdWlsZGVy
VGVzdCwgVG9BdG9tU3RyaW5nT25FbXB0eSkKIHsKICAgICB7IC8vIERlZmF1bHQgY29uc3RydWN0
ZWQuCiAgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICAgICAgQXRvbWljU3RyaW5n
IGF0b21pY1N0cmluZyA9IGJ1aWxkZXIudG9BdG9taWNTdHJpbmcoKTsKLSAgICAgICAgQVNTRVJU
X0VRKGVtcHR5QXRvbSgpLCBhdG9taWNTdHJpbmcpOworICAgICAgICBBdG9tU3RyaW5nIGF0b21T
dHJpbmcgPSBidWlsZGVyLnRvQXRvbVN0cmluZygpOworICAgICAgICBBU1NFUlRfRVEoZW1wdHlB
dG9tKCksIGF0b21TdHJpbmcpOwogICAgIH0KICAgICB7IC8vIFdpdGggY2FwYWNpdHkuCiAgICAg
ICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICAgICAgYnVpbGRlci5yZXNlcnZlQ2FwYWNp
dHkoNjQpOwotICAgICAgICBBdG9taWNTdHJpbmcgYXRvbWljU3RyaW5nID0gYnVpbGRlci50b0F0
b21pY1N0cmluZygpOwotICAgICAgICBBU1NFUlRfRVEoZW1wdHlBdG9tKCksIGF0b21pY1N0cmlu
Zyk7CisgICAgICAgIEF0b21TdHJpbmcgYXRvbVN0cmluZyA9IGJ1aWxkZXIudG9BdG9tU3RyaW5n
KCk7CisgICAgICAgIEFTU0VSVF9FUShlbXB0eUF0b20oKSwgYXRvbVN0cmluZyk7CiAgICAgfQot
ICAgIHsgLy8gQXRvbWljU3RyaW5nIGNvbnN0cnVjdGVkIGZyb20gYSBudWxsIHN0cmluZy4KKyAg
ICB7IC8vIEF0b21TdHJpbmcgY29uc3RydWN0ZWQgZnJvbSBhIG51bGwgc3RyaW5nLgogICAgICAg
ICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZygp
KTsKLSAgICAgICAgQXRvbWljU3RyaW5nIGF0b21pY1N0cmluZyA9IGJ1aWxkZXIudG9BdG9taWNT
dHJpbmcoKTsKLSAgICAgICAgQVNTRVJUX0VRKGVtcHR5QXRvbSgpLCBhdG9taWNTdHJpbmcpOwor
ICAgICAgICBBdG9tU3RyaW5nIGF0b21TdHJpbmcgPSBidWlsZGVyLnRvQXRvbVN0cmluZygpOwor
ICAgICAgICBBU1NFUlRfRVEoZW1wdHlBdG9tKCksIGF0b21TdHJpbmcpOwogICAgIH0KLSAgICB7
IC8vIEF0b21pY1N0cmluZyBjb25zdHJ1Y3RlZCBmcm9tIGFuIGVtcHR5IHN0cmluZy4KKyAgICB7
IC8vIEF0b21TdHJpbmcgY29uc3RydWN0ZWQgZnJvbSBhbiBlbXB0eSBzdHJpbmcuCiAgICAgICAg
IFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoZW1wdHlTdHJp
bmcoKSk7Ci0gICAgICAgIEF0b21pY1N0cmluZyBhdG9taWNTdHJpbmcgPSBidWlsZGVyLnRvQXRv
bWljU3RyaW5nKCk7Ci0gICAgICAgIEFTU0VSVF9FUShlbXB0eUF0b20oKSwgYXRvbWljU3RyaW5n
KTsKKyAgICAgICAgQXRvbVN0cmluZyBhdG9tU3RyaW5nID0gYnVpbGRlci50b0F0b21TdHJpbmco
KTsKKyAgICAgICAgQVNTRVJUX0VRKGVtcHR5QXRvbSgpLCBhdG9tU3RyaW5nKTsKICAgICB9Ci0g
ICAgeyAvLyBBdG9taWNTdHJpbmcgY29uc3RydWN0ZWQgZnJvbSBhbiBlbXB0eSBTdHJpbmdCdWls
ZGVyLgorICAgIHsgLy8gQXRvbVN0cmluZyBjb25zdHJ1Y3RlZCBmcm9tIGFuIGVtcHR5IFN0cmlu
Z0J1aWxkZXIuCiAgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICAgICAgU3RyaW5n
QnVpbGRlciBlbXB0eUJ1aWxkZXI7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGVtcHR5QnVpbGRl
cik7Ci0gICAgICAgIEF0b21pY1N0cmluZyBhdG9taWNTdHJpbmcgPSBidWlsZGVyLnRvQXRvbWlj
U3RyaW5nKCk7Ci0gICAgICAgIEFTU0VSVF9FUShlbXB0eUF0b20oKSwgYXRvbWljU3RyaW5nKTsK
KyAgICAgICAgQXRvbVN0cmluZyBhdG9tU3RyaW5nID0gYnVpbGRlci50b0F0b21TdHJpbmcoKTsK
KyAgICAgICAgQVNTRVJUX0VRKGVtcHR5QXRvbSgpLCBhdG9tU3RyaW5nKTsKICAgICB9Ci0gICAg
eyAvLyBBdG9taWNTdHJpbmcgY29uc3RydWN0ZWQgZnJvbSBhbiBlbXB0eSBjaGFyKiBzdHJpbmcu
CisgICAgeyAvLyBBdG9tU3RyaW5nIGNvbnN0cnVjdGVkIGZyb20gYW4gZW1wdHkgY2hhciogc3Ry
aW5nLgogICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKCIiLCAwKTsKLSAgICAgICAgQXRvbWljU3RyaW5nIGF0b21pY1N0cmluZyA9IGJ1aWxkZXIu
dG9BdG9taWNTdHJpbmcoKTsKLSAgICAgICAgQVNTRVJUX0VRKGVtcHR5QXRvbSgpLCBhdG9taWNT
dHJpbmcpOworICAgICAgICBBdG9tU3RyaW5nIGF0b21TdHJpbmcgPSBidWlsZGVyLnRvQXRvbVN0
cmluZygpOworICAgICAgICBBU1NFUlRfRVEoZW1wdHlBdG9tKCksIGF0b21TdHJpbmcpOwogICAg
IH0KICAgICB7IC8vIENsZWFyZWQgU3RyaW5nQnVpbGRlci4KICAgICAgICAgU3RyaW5nQnVpbGRl
ciBidWlsZGVyOwogICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIldlYktpdCIpOwogICAg
ICAgICBidWlsZGVyLmNsZWFyKCk7Ci0gICAgICAgIEF0b21pY1N0cmluZyBhdG9taWNTdHJpbmcg
PSBidWlsZGVyLnRvQXRvbWljU3RyaW5nKCk7Ci0gICAgICAgIEFTU0VSVF9FUShlbXB0eUF0b20o
KSwgYXRvbWljU3RyaW5nKTsKKyAgICAgICAgQXRvbVN0cmluZyBhdG9tU3RyaW5nID0gYnVpbGRl
ci50b0F0b21TdHJpbmcoKTsKKyAgICAgICAgQVNTRVJUX0VRKGVtcHR5QXRvbSgpLCBhdG9tU3Ry
aW5nKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL1N0cmluZ0ltcGwuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5n
SW1wbC5jcHAKaW5kZXggMDRmOTM4MmNkNzBlZDFiYThjMDVmYjgwNTI3MDNhYzNiMzA4MmJhZS4u
YzAxOTZlNDc4MTg3NjczMzdmYzIwYTZjNTdjNmYxMWMwYjFiODQ4MSAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nSW1wbC5jcHAKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nSW1wbC5jcHAKQEAgLTU3LDE0ICs1NywxNCBAQCBU
RVNUKFdURiwgU3RyaW5nSW1wbENyZWF0aW9uRnJvbUxpdGVyYWwpCiAgICAgQVNTRVJUX0VRKHN0
cmluZ1dpdGhvdXRMZW5ndGhMaXRlcmFsLCByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihw
cm9ncmFtbWF0aWNTdHJpbmdOb0xlbmd0aC0+Y2hhcmFjdGVyczgoKSkpOwogICAgIEFTU0VSVF9U
UlVFKHByb2dyYW1tYXRpY1N0cmluZ05vTGVuZ3RoLT5pczhCaXQoKSk7CiAKLSAgICAvLyBBdG9t
aWNTdHJpbmdJbXBsIGZyb20gY3JlYXRlRnJvbUxpdGVyYWwgc2hvdWxkIHVzZSB0aGUgc2FtZSB1
bmRlcmx5aW5nIHN0cmluZy4KLSAgICBhdXRvIGF0b21pY1N0cmluZ1dpdGhUZW1wbGF0ZSA9IEF0
b21pY1N0cmluZ0ltcGw6OmFkZChzdHJpbmdXaXRoVGVtcGxhdGUucHRyKCkpOwotICAgIEFTU0VS
VF9UUlVFKGF0b21pY1N0cmluZ1dpdGhUZW1wbGF0ZS0+aXM4Qml0KCkpOwotICAgIEFTU0VSVF9F
UShhdG9taWNTdHJpbmdXaXRoVGVtcGxhdGUtPmNoYXJhY3RlcnM4KCksIHN0cmluZ1dpdGhUZW1w
bGF0ZS0+Y2hhcmFjdGVyczgoKSk7Ci0gICAgYXV0byBhdG9taWNQcm9ncmFtbWF0aWNTdHJpbmcg
PSBBdG9taWNTdHJpbmdJbXBsOjphZGQocHJvZ3JhbW1hdGljU3RyaW5nLnB0cigpKTsKKyAgICAv
LyBBdG9tU3RyaW5nSW1wbCBmcm9tIGNyZWF0ZUZyb21MaXRlcmFsIHNob3VsZCB1c2UgdGhlIHNh
bWUgdW5kZXJseWluZyBzdHJpbmcuCisgICAgYXV0byBhdG9tU3RyaW5nV2l0aFRlbXBsYXRlID0g
QXRvbVN0cmluZ0ltcGw6OmFkZChzdHJpbmdXaXRoVGVtcGxhdGUucHRyKCkpOworICAgIEFTU0VS
VF9UUlVFKGF0b21TdHJpbmdXaXRoVGVtcGxhdGUtPmlzOEJpdCgpKTsKKyAgICBBU1NFUlRfRVEo
YXRvbVN0cmluZ1dpdGhUZW1wbGF0ZS0+Y2hhcmFjdGVyczgoKSwgc3RyaW5nV2l0aFRlbXBsYXRl
LT5jaGFyYWN0ZXJzOCgpKTsKKyAgICBhdXRvIGF0b21pY1Byb2dyYW1tYXRpY1N0cmluZyA9IEF0
b21TdHJpbmdJbXBsOjphZGQocHJvZ3JhbW1hdGljU3RyaW5nLnB0cigpKTsKICAgICBBU1NFUlRf
VFJVRShhdG9taWNQcm9ncmFtbWF0aWNTdHJpbmctPmlzOEJpdCgpKTsKICAgICBBU1NFUlRfRVEo
YXRvbWljUHJvZ3JhbW1hdGljU3RyaW5nLT5jaGFyYWN0ZXJzOCgpLCBwcm9ncmFtbWF0aWNTdHJp
bmctPmNoYXJhY3RlcnM4KCkpOwotICAgIGF1dG8gYXRvbWljUHJvZ3JhbW1hdGljU3RyaW5nTm9M
ZW5ndGggPSBBdG9taWNTdHJpbmdJbXBsOjphZGQocHJvZ3JhbW1hdGljU3RyaW5nTm9MZW5ndGgu
cHRyKCkpOworICAgIGF1dG8gYXRvbWljUHJvZ3JhbW1hdGljU3RyaW5nTm9MZW5ndGggPSBBdG9t
U3RyaW5nSW1wbDo6YWRkKHByb2dyYW1tYXRpY1N0cmluZ05vTGVuZ3RoLnB0cigpKTsKICAgICBB
U1NFUlRfVFJVRShhdG9taWNQcm9ncmFtbWF0aWNTdHJpbmdOb0xlbmd0aC0+aXM4Qml0KCkpOwog
ICAgIEFTU0VSVF9FUShhdG9taWNQcm9ncmFtbWF0aWNTdHJpbmdOb0xlbmd0aC0+Y2hhcmFjdGVy
czgoKSwgcHJvZ3JhbW1hdGljU3RyaW5nTm9MZW5ndGgtPmNoYXJhY3RlcnM4KCkpOwogfQpAQCAt
NTMzLDcgKzUzMyw3IEBAIFRFU1QoV1RGLCBTdHJpbmdJbXBsQ3JlYXRlTnVsbFN5bWJvbCkKICAg
ICBBU1NFUlRfVFJVRShyZWZlcmVuY2UtPmlzU3ltYm9sKCkpOwogICAgIEFTU0VSVF9GQUxTRShy
ZWZlcmVuY2UtPmlzUHJpdmF0ZSgpKTsKICAgICBBU1NFUlRfVFJVRShyZWZlcmVuY2UtPmlzTnVs
bFN5bWJvbCgpKTsKLSAgICBBU1NFUlRfRkFMU0UocmVmZXJlbmNlLT5pc0F0b21pYygpKTsKKyAg
ICBBU1NFUlRfRkFMU0UocmVmZXJlbmNlLT5pc0F0b20oKSk7CiAgICAgQVNTRVJUX0VRKDB1LCBy
ZWZlcmVuY2UtPmxlbmd0aCgpKTsKICAgICBBU1NFUlRfVFJVRShlcXVhbChyZWZlcmVuY2UucHRy
KCksICIiKSk7CiB9CkBAIC01NDUsOSArNTQ1LDkgQEAgVEVTVChXVEYsIFN0cmluZ0ltcGxDcmVh
dGVTeW1ib2wpCiAgICAgQVNTRVJUX1RSVUUocmVmZXJlbmNlLT5pc1N5bWJvbCgpKTsKICAgICBB
U1NFUlRfRkFMU0UocmVmZXJlbmNlLT5pc1ByaXZhdGUoKSk7CiAgICAgQVNTRVJUX0ZBTFNFKHJl
ZmVyZW5jZS0+aXNOdWxsU3ltYm9sKCkpOwotICAgIEFTU0VSVF9GQUxTRShyZWZlcmVuY2UtPmlz
QXRvbWljKCkpOworICAgIEFTU0VSVF9GQUxTRShyZWZlcmVuY2UtPmlzQXRvbSgpKTsKICAgICBB
U1NFUlRfRkFMU0Uob3JpZ2luYWwtPmlzU3ltYm9sKCkpOwotICAgIEFTU0VSVF9GQUxTRShvcmln
aW5hbC0+aXNBdG9taWMoKSk7CisgICAgQVNTRVJUX0ZBTFNFKG9yaWdpbmFsLT5pc0F0b20oKSk7
CiAgICAgQVNTRVJUX0VRKG9yaWdpbmFsLT5sZW5ndGgoKSwgcmVmZXJlbmNlLT5sZW5ndGgoKSk7
CiAgICAgQVNTRVJUX1RSVUUoZXF1YWwocmVmZXJlbmNlLnB0cigpLCAib3JpZ2luYWwiKSk7CiAK
QEAgLTU1Niw5ICs1NTYsOSBAQCBURVNUKFdURiwgU3RyaW5nSW1wbENyZWF0ZVN5bWJvbCkKICAg
ICBBU1NFUlRfVFJVRShlbXB0eVJlZmVyZW5jZS0+aXNTeW1ib2woKSk7CiAgICAgQVNTRVJUX0ZB
TFNFKGVtcHR5UmVmZXJlbmNlLT5pc1ByaXZhdGUoKSk7CiAgICAgQVNTRVJUX0ZBTFNFKGVtcHR5
UmVmZXJlbmNlLT5pc051bGxTeW1ib2woKSk7Ci0gICAgQVNTRVJUX0ZBTFNFKGVtcHR5UmVmZXJl
bmNlLT5pc0F0b21pYygpKTsKKyAgICBBU1NFUlRfRkFMU0UoZW1wdHlSZWZlcmVuY2UtPmlzQXRv
bSgpKTsKICAgICBBU1NFUlRfRkFMU0UoZW1wdHktPmlzU3ltYm9sKCkpOwotICAgIEFTU0VSVF9U
UlVFKGVtcHR5LT5pc0F0b21pYygpKTsKKyAgICBBU1NFUlRfVFJVRShlbXB0eS0+aXNBdG9tKCkp
OwogICAgIEFTU0VSVF9FUShlbXB0eS0+bGVuZ3RoKCksIGVtcHR5UmVmZXJlbmNlLT5sZW5ndGgo
KSk7CiAgICAgQVNTRVJUX1RSVUUoZXF1YWwoZW1wdHlSZWZlcmVuY2UucHRyKCksICIiKSk7CiB9
CkBAIC01NzAsOSArNTcwLDkgQEAgVEVTVChXVEYsIFN0cmluZ0ltcGxDcmVhdGVQcml2YXRlU3lt
Ym9sKQogICAgIEFTU0VSVF9UUlVFKHJlZmVyZW5jZS0+aXNTeW1ib2woKSk7CiAgICAgQVNTRVJU
X1RSVUUocmVmZXJlbmNlLT5pc1ByaXZhdGUoKSk7CiAgICAgQVNTRVJUX0ZBTFNFKHJlZmVyZW5j
ZS0+aXNOdWxsU3ltYm9sKCkpOwotICAgIEFTU0VSVF9GQUxTRShyZWZlcmVuY2UtPmlzQXRvbWlj
KCkpOworICAgIEFTU0VSVF9GQUxTRShyZWZlcmVuY2UtPmlzQXRvbSgpKTsKICAgICBBU1NFUlRf
RkFMU0Uob3JpZ2luYWwtPmlzU3ltYm9sKCkpOwotICAgIEFTU0VSVF9GQUxTRShvcmlnaW5hbC0+
aXNBdG9taWMoKSk7CisgICAgQVNTRVJUX0ZBTFNFKG9yaWdpbmFsLT5pc0F0b20oKSk7CiAgICAg
QVNTRVJUX0VRKG9yaWdpbmFsLT5sZW5ndGgoKSwgcmVmZXJlbmNlLT5sZW5ndGgoKSk7CiAgICAg
QVNTRVJUX1RSVUUoZXF1YWwocmVmZXJlbmNlLnB0cigpLCAib3JpZ2luYWwiKSk7CiAKQEAgLTU4
MSw4MCArNTgxLDgwIEBAIFRFU1QoV1RGLCBTdHJpbmdJbXBsQ3JlYXRlUHJpdmF0ZVN5bWJvbCkK
ICAgICBBU1NFUlRfVFJVRShlbXB0eVJlZmVyZW5jZS0+aXNTeW1ib2woKSk7CiAgICAgQVNTRVJU
X1RSVUUoZW1wdHlSZWZlcmVuY2UtPmlzUHJpdmF0ZSgpKTsKICAgICBBU1NFUlRfRkFMU0UoZW1w
dHlSZWZlcmVuY2UtPmlzTnVsbFN5bWJvbCgpKTsKLSAgICBBU1NFUlRfRkFMU0UoZW1wdHlSZWZl
cmVuY2UtPmlzQXRvbWljKCkpOworICAgIEFTU0VSVF9GQUxTRShlbXB0eVJlZmVyZW5jZS0+aXNB
dG9tKCkpOwogICAgIEFTU0VSVF9GQUxTRShlbXB0eS0+aXNTeW1ib2woKSk7Ci0gICAgQVNTRVJU
X1RSVUUoZW1wdHktPmlzQXRvbWljKCkpOworICAgIEFTU0VSVF9UUlVFKGVtcHR5LT5pc0F0b20o
KSk7CiAgICAgQVNTRVJUX0VRKGVtcHR5LT5sZW5ndGgoKSwgZW1wdHlSZWZlcmVuY2UtPmxlbmd0
aCgpKTsKICAgICBBU1NFUlRfVFJVRShlcXVhbChlbXB0eVJlZmVyZW5jZS5wdHIoKSwgIiIpKTsK
IH0KIAotVEVTVChXVEYsIFN0cmluZ0ltcGxTeW1ib2xUb0F0b21pY1N0cmluZykKK1RFU1QoV1RG
LCBTdHJpbmdJbXBsU3ltYm9sVG9BdG9tU3RyaW5nKQogewogICAgIGF1dG8gb3JpZ2luYWwgPSBz
dHJpbmdGcm9tVVRGOCgib3JpZ2luYWwiKTsKICAgICBhdXRvIHJlZmVyZW5jZSA9IFN5bWJvbElt
cGw6OmNyZWF0ZShvcmlnaW5hbCk7CiAgICAgQVNTRVJUX1RSVUUocmVmZXJlbmNlLT5pc1N5bWJv
bCgpKTsKICAgICBBU1NFUlRfRkFMU0UocmVmZXJlbmNlLT5pc1ByaXZhdGUoKSk7Ci0gICAgQVNT
RVJUX0ZBTFNFKHJlZmVyZW5jZS0+aXNBdG9taWMoKSk7CisgICAgQVNTRVJUX0ZBTFNFKHJlZmVy
ZW5jZS0+aXNBdG9tKCkpOwogCi0gICAgYXV0byByZXN1bHQgPSBBdG9taWNTdHJpbmdJbXBsOjps
b29rVXAocmVmZXJlbmNlLnB0cigpKTsKKyAgICBhdXRvIHJlc3VsdCA9IEF0b21TdHJpbmdJbXBs
Ojpsb29rVXAocmVmZXJlbmNlLnB0cigpKTsKICAgICBBU1NFUlRfRkFMU0UocmVzdWx0KTsKIAot
ICAgIGF1dG8gYXRvbWljID0gQXRvbWljU3RyaW5nSW1wbDo6YWRkKHJlZmVyZW5jZS5wdHIoKSk7
Ci0gICAgQVNTRVJUX1RSVUUoYXRvbWljLT5pc0F0b21pYygpKTsKKyAgICBhdXRvIGF0b21pYyA9
IEF0b21TdHJpbmdJbXBsOjphZGQocmVmZXJlbmNlLnB0cigpKTsKKyAgICBBU1NFUlRfVFJVRShh
dG9taWMtPmlzQXRvbSgpKTsKICAgICBBU1NFUlRfRkFMU0UoYXRvbWljLT5pc1N5bWJvbCgpKTsK
ICAgICBBU1NFUlRfVFJVRShyZWZlcmVuY2UtPmlzU3ltYm9sKCkpOwotICAgIEFTU0VSVF9GQUxT
RShyZWZlcmVuY2UtPmlzQXRvbWljKCkpOworICAgIEFTU0VSVF9GQUxTRShyZWZlcmVuY2UtPmlz
QXRvbSgpKTsKIAotICAgIGF1dG8gcmVzdWx0MiA9IEF0b21pY1N0cmluZ0ltcGw6Omxvb2tVcChy
ZWZlcmVuY2UucHRyKCkpOworICAgIGF1dG8gcmVzdWx0MiA9IEF0b21TdHJpbmdJbXBsOjpsb29r
VXAocmVmZXJlbmNlLnB0cigpKTsKICAgICBBU1NFUlRfVFJVRShyZXN1bHQyKTsKIH0KIAotVEVT
VChXVEYsIFN0cmluZ0ltcGxOdWxsU3ltYm9sVG9BdG9taWNTdHJpbmcpCitURVNUKFdURiwgU3Ry
aW5nSW1wbE51bGxTeW1ib2xUb0F0b21TdHJpbmcpCiB7CiAgICAgYXV0byByZWZlcmVuY2UgPSBT
eW1ib2xJbXBsOjpjcmVhdGVOdWxsU3ltYm9sKCk7CiAgICAgQVNTRVJUX1RSVUUocmVmZXJlbmNl
LT5pc1N5bWJvbCgpKTsKICAgICBBU1NFUlRfRkFMU0UocmVmZXJlbmNlLT5pc1ByaXZhdGUoKSk7
Ci0gICAgQVNTRVJUX0ZBTFNFKHJlZmVyZW5jZS0+aXNBdG9taWMoKSk7CisgICAgQVNTRVJUX0ZB
TFNFKHJlZmVyZW5jZS0+aXNBdG9tKCkpOwogCiAgICAgLy8gQmVjYXVzZSB0aGUgc3Vic3RyaW5n
IG9mIHRoZSByZWZlcmVuY2UgaXMgdGhlIGVtcHR5IHN0cmluZyB3aGljaCBpcyBhbHJlYWR5IGlu
dGVybmVkLgotICAgIGF1dG8gcmVzdWx0ID0gQXRvbWljU3RyaW5nSW1wbDo6bG9va1VwKHJlZmVy
ZW5jZS5wdHIoKSk7CisgICAgYXV0byByZXN1bHQgPSBBdG9tU3RyaW5nSW1wbDo6bG9va1VwKHJl
ZmVyZW5jZS5wdHIoKSk7CiAgICAgQVNTRVJUX1RSVUUocmVzdWx0KTsKIAotICAgIGF1dG8gYXRv
bWljID0gQXRvbWljU3RyaW5nSW1wbDo6YWRkKHJlZmVyZW5jZS5wdHIoKSk7Ci0gICAgQVNTRVJU
X1RSVUUoYXRvbWljLT5pc0F0b21pYygpKTsKKyAgICBhdXRvIGF0b21pYyA9IEF0b21TdHJpbmdJ
bXBsOjphZGQocmVmZXJlbmNlLnB0cigpKTsKKyAgICBBU1NFUlRfVFJVRShhdG9taWMtPmlzQXRv
bSgpKTsKICAgICBBU1NFUlRfRkFMU0UoYXRvbWljLT5pc1N5bWJvbCgpKTsKICAgICBBU1NFUlRf
VFJVRShyZWZlcmVuY2UtPmlzU3ltYm9sKCkpOwotICAgIEFTU0VSVF9GQUxTRShyZWZlcmVuY2Ut
PmlzQXRvbWljKCkpOworICAgIEFTU0VSVF9GQUxTRShyZWZlcmVuY2UtPmlzQXRvbSgpKTsKICAg
ICBBU1NFUlRfRVEoYXRvbWljLmdldCgpLCBTdHJpbmdJbXBsOjplbXB0eSgpKTsKIAotICAgIGF1
dG8gcmVzdWx0MiA9IEF0b21pY1N0cmluZ0ltcGw6Omxvb2tVcChyZWZlcmVuY2UucHRyKCkpOwor
ICAgIGF1dG8gcmVzdWx0MiA9IEF0b21TdHJpbmdJbXBsOjpsb29rVXAocmVmZXJlbmNlLnB0cigp
KTsKICAgICBBU1NFUlRfVFJVRShyZXN1bHQyKTsKIH0KIAogc3RhdGljIFN0cmluZ0ltcGw6OlN0
YXRpY1N0cmluZ0ltcGwgc3RhdGljU3RyaW5nIHsiQ29jb2EifTsKIAotVEVTVChXVEYsIFN0cmlu
Z0ltcGxTdGF0aWNUb0F0b21pY1N0cmluZykKK1RFU1QoV1RGLCBTdHJpbmdJbXBsU3RhdGljVG9B
dG9tU3RyaW5nKQogewogICAgIFN0cmluZ0ltcGwmIG9yaWdpbmFsID0gc3RhdGljU3RyaW5nOwog
ICAgIEFTU0VSVF9GQUxTRShvcmlnaW5hbC5pc1N5bWJvbCgpKTsKLSAgICBBU1NFUlRfRkFMU0Uo
b3JpZ2luYWwuaXNBdG9taWMoKSk7CisgICAgQVNTRVJUX0ZBTFNFKG9yaWdpbmFsLmlzQXRvbSgp
KTsKICAgICBBU1NFUlRfVFJVRShvcmlnaW5hbC5pc1N0YXRpYygpKTsKIAotICAgIGF1dG8gcmVz
dWx0ID0gQXRvbWljU3RyaW5nSW1wbDo6bG9va1VwKCZvcmlnaW5hbCk7CisgICAgYXV0byByZXN1
bHQgPSBBdG9tU3RyaW5nSW1wbDo6bG9va1VwKCZvcmlnaW5hbCk7CiAgICAgQVNTRVJUX0ZBTFNF
KHJlc3VsdCk7CiAKLSAgICBhdXRvIGF0b21pYyA9IEF0b21pY1N0cmluZ0ltcGw6OmFkZCgmb3Jp
Z2luYWwpOwotICAgIEFTU0VSVF9UUlVFKGF0b21pYy0+aXNBdG9taWMoKSk7CisgICAgYXV0byBh
dG9taWMgPSBBdG9tU3RyaW5nSW1wbDo6YWRkKCZvcmlnaW5hbCk7CisgICAgQVNTRVJUX1RSVUUo
YXRvbWljLT5pc0F0b20oKSk7CiAgICAgQVNTRVJUX0ZBTFNFKGF0b21pYy0+aXNTeW1ib2woKSk7
CiAgICAgQVNTRVJUX0ZBTFNFKGF0b21pYy0+aXNTdGF0aWMoKSk7CiAgICAgQVNTRVJUX0ZBTFNF
KG9yaWdpbmFsLmlzU3ltYm9sKCkpOwotICAgIEFTU0VSVF9GQUxTRShvcmlnaW5hbC5pc0F0b21p
YygpKTsKKyAgICBBU1NFUlRfRkFMU0Uob3JpZ2luYWwuaXNBdG9tKCkpOwogICAgIEFTU0VSVF9U
UlVFKG9yaWdpbmFsLmlzU3RhdGljKCkpOwogCiAgICAgQVNTRVJUX1RSVUUoYXRvbWljLT5pczhC
aXQoKSk7CiAgICAgQVNTRVJUX0VRKGF0b21pYy0+Y2hhcmFjdGVyczgoKSwgb3JpZ2luYWwuY2hh
cmFjdGVyczgoKSk7CiAKLSAgICBhdXRvIHJlc3VsdDIgPSBBdG9taWNTdHJpbmdJbXBsOjpsb29r
VXAoJm9yaWdpbmFsKTsKKyAgICBhdXRvIHJlc3VsdDIgPSBBdG9tU3RyaW5nSW1wbDo6bG9va1Vw
KCZvcmlnaW5hbCk7CiAgICAgQVNTRVJUX1RSVUUocmVzdWx0Mik7CiAgICAgQVNTRVJUX0VRKGF0
b21pYywgcmVzdWx0Mik7CiB9CkBAIC03NTIsNyArNzUyLDcgQEAgVEVTVChXVEYsIEV4dGVybmFs
U3RyaW5nSW1wbENyZWF0ZThiaXQpCiAgICAgICAgIEFTU0VSVF9UUlVFKGV4dGVybmFsLT5pc0V4
dGVybmFsKCkpOwogICAgICAgICBBU1NFUlRfVFJVRShleHRlcm5hbC0+aXM4Qml0KCkpOwogICAg
ICAgICBBU1NFUlRfRkFMU0UoZXh0ZXJuYWwtPmlzU3ltYm9sKCkpOwotICAgICAgICBBU1NFUlRf
RkFMU0UoZXh0ZXJuYWwtPmlzQXRvbWljKCkpOworICAgICAgICBBU1NFUlRfRkFMU0UoZXh0ZXJu
YWwtPmlzQXRvbSgpKTsKICAgICAgICAgQVNTRVJUX0VRKGV4dGVybmFsLT5sZW5ndGgoKSwgYnVm
ZmVyU3RyaW5nTGVuZ3RoKTsKICAgICAgICAgQVNTRVJUX0VRKGV4dGVybmFsLT5jaGFyYWN0ZXJz
OCgpLCBidWZmZXIpOwogICAgIH0KQEAgLTc3NCw3ICs3NzQsNyBAQCBURVNUKFdURiwgRXh0ZXJu
YWxTdHJpbmdJbXBsQ3JlYXRlMTZiaXQpCiAgICAgICAgIEFTU0VSVF9UUlVFKGV4dGVybmFsLT5p
c0V4dGVybmFsKCkpOwogICAgICAgICBBU1NFUlRfRkFMU0UoZXh0ZXJuYWwtPmlzOEJpdCgpKTsK
ICAgICAgICAgQVNTRVJUX0ZBTFNFKGV4dGVybmFsLT5pc1N5bWJvbCgpKTsKLSAgICAgICAgQVNT
RVJUX0ZBTFNFKGV4dGVybmFsLT5pc0F0b21pYygpKTsKKyAgICAgICAgQVNTRVJUX0ZBTFNFKGV4
dGVybmFsLT5pc0F0b20oKSk7CiAgICAgICAgIEFTU0VSVF9FUShleHRlcm5hbC0+bGVuZ3RoKCks
IGJ1ZmZlclN0cmluZ0xlbmd0aCk7CiAgICAgICAgIEFTU0VSVF9FUShleHRlcm5hbC0+Y2hhcmFj
dGVyczE2KCksIGJ1ZmZlcik7CiAgICAgfQpAQCAtODAxLDI0ICs4MDEsMjQgQEAgVEVTVChXVEYs
IEV4dGVybmFsU3RyaW5nQXRvbWljKQogICAgICAgICB9KTsgICAgCiAKICAgICAgICAgQVNTRVJU
X1RSVUUoZXh0ZXJuYWwtPmlzRXh0ZXJuYWwoKSk7Ci0gICAgICAgIEFTU0VSVF9GQUxTRShleHRl
cm5hbC0+aXNBdG9taWMoKSk7CisgICAgICAgIEFTU0VSVF9GQUxTRShleHRlcm5hbC0+aXNBdG9t
KCkpOwogICAgICAgICBBU1NFUlRfRkFMU0UoZXh0ZXJuYWwtPmlzU3ltYm9sKCkpOwogICAgICAg
ICBBU1NFUlRfVFJVRShleHRlcm5hbC0+aXM4Qml0KCkpOwogICAgICAgICBBU1NFUlRfRVEoZXh0
ZXJuYWwtPmxlbmd0aCgpLCBidWZmZXJTdHJpbmdMZW5ndGgpOwogICAgICAgICBBU1NFUlRfRVEo
ZXh0ZXJuYWwtPmNoYXJhY3RlcnM4KCksIGJ1ZmZlcik7CiAKLSAgICAgICAgYXV0byByZXN1bHQg
PSBBdG9taWNTdHJpbmdJbXBsOjpsb29rVXAoZXh0ZXJuYWwucHRyKCkpOworICAgICAgICBhdXRv
IHJlc3VsdCA9IEF0b21TdHJpbmdJbXBsOjpsb29rVXAoZXh0ZXJuYWwucHRyKCkpOwogICAgICAg
ICBBU1NFUlRfRkFMU0UocmVzdWx0KTsKIAotICAgICAgICBhdXRvIGF0b21pYyA9IEF0b21pY1N0
cmluZ0ltcGw6OmFkZChleHRlcm5hbC5wdHIoKSk7CisgICAgICAgIGF1dG8gYXRvbWljID0gQXRv
bVN0cmluZ0ltcGw6OmFkZChleHRlcm5hbC5wdHIoKSk7CiAgICAgICAgIEFTU0VSVF9UUlVFKGF0
b21pYy0+aXNFeHRlcm5hbCgpKTsKLSAgICAgICAgQVNTRVJUX1RSVUUoYXRvbWljLT5pc0F0b21p
YygpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUoYXRvbWljLT5pc0F0b20oKSk7CiAgICAgICAgIEFT
U0VSVF9GQUxTRShhdG9taWMtPmlzU3ltYm9sKCkpOwogICAgICAgICBBU1NFUlRfVFJVRShhdG9t
aWMtPmlzOEJpdCgpKTsKICAgICAgICAgQVNTRVJUX0VRKGF0b21pYy0+bGVuZ3RoKCksIGV4dGVy
bmFsLT5sZW5ndGgoKSk7CiAgICAgICAgIEFTU0VSVF9FUShhdG9taWMtPmNoYXJhY3RlcnM4KCks
IGV4dGVybmFsLT5jaGFyYWN0ZXJzOCgpKTsKIAotICAgICAgICBhdXRvIHJlc3VsdDIgPSBBdG9t
aWNTdHJpbmdJbXBsOjpsb29rVXAoZXh0ZXJuYWwucHRyKCkpOworICAgICAgICBhdXRvIHJlc3Vs
dDIgPSBBdG9tU3RyaW5nSW1wbDo6bG9va1VwKGV4dGVybmFsLnB0cigpKTsKICAgICAgICAgQVNT
RVJUX1RSVUUocmVzdWx0Mik7CiAgICAgICAgIEFTU0VSVF9FUShhdG9taWMsIHJlc3VsdDIpOwog
ICAgIH0KQEAgLTgzOSwxMiArODM5LDEyIEBAIFRFU1QoV1RGLCBFeHRlcm5hbFN0cmluZ1RvU3lt
Ym9sKQogCiAgICAgICAgIEFTU0VSVF9UUlVFKGV4dGVybmFsLT5pc0V4dGVybmFsKCkpOwogICAg
ICAgICBBU1NFUlRfRkFMU0UoZXh0ZXJuYWwtPmlzU3ltYm9sKCkpOwotICAgICAgICBBU1NFUlRf
RkFMU0UoZXh0ZXJuYWwtPmlzQXRvbWljKCkpOworICAgICAgICBBU1NFUlRfRkFMU0UoZXh0ZXJu
YWwtPmlzQXRvbSgpKTsKIAogICAgICAgICBhdXRvIHN5bWJvbCA9IFN5bWJvbEltcGw6OmNyZWF0
ZShleHRlcm5hbCk7CiAgICAgICAgIEFTU0VSVF9GQUxTRShzeW1ib2wtPmlzRXh0ZXJuYWwoKSk7
CiAgICAgICAgIEFTU0VSVF9UUlVFKHN5bWJvbC0+aXNTeW1ib2woKSk7Ci0gICAgICAgIEFTU0VS
VF9GQUxTRShzeW1ib2wtPmlzQXRvbWljKCkpOworICAgICAgICBBU1NFUlRfRkFMU0Uoc3ltYm9s
LT5pc0F0b20oKSk7CiAgICAgICAgIEFTU0VSVF9GQUxTRShzeW1ib2wtPmlzUHJpdmF0ZSgpKTsK
ICAgICAgICAgQVNTRVJUX0ZBTFNFKHN5bWJvbC0+aXNOdWxsU3ltYm9sKCkpOwogICAgICAgICBB
U1NFUlRfRVEoZXh0ZXJuYWwtPmxlbmd0aCgpLCBzeW1ib2wtPmxlbmd0aCgpKTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ09wZXJhdG9ycy5jcHAgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdPcGVyYXRvcnMuY3BwCmluZGV4IDBl
M2JmOThmODgyMTRmYzQ3YzliNTMzNWY3NGIwNmQzZTUzYTI5NmQuLjRiOTI3YThjOWI2MzNjMGJi
ZDg4MzZlMjY3MDg4ZmZkYzdjZjJjY2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL1N0cmluZ09wZXJhdG9ycy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvU3RyaW5nT3BlcmF0b3JzLmNwcApAQCAtNDUsNyArNDUsNyBAQCBuYW1lc3BhY2Ug
VGVzdFdlYktpdEFQSSB7CiBURVNUKFdURiwgU3RyaW5nT3BlcmF0b3JzKQogewogICAgIFN0cmlu
ZyBzdHJpbmcoIlN0cmluZyIpOwotICAgIEF0b21pY1N0cmluZyBhdG9taWNTdHJpbmcoIkF0b21p
Y1N0cmluZyIpOworICAgIEF0b21TdHJpbmcgYXRvbVN0cmluZygiQXRvbVN0cmluZyIpOwogICAg
IEFTQ0lJTGl0ZXJhbCBsaXRlcmFsIHsgIkFTQ0lJTGl0ZXJhbCJfcyB9OwogCiAgICAgU3RyaW5n
IHN0cmluZ1ZpZXdCYWNraW5nIHsgIlN0cmluZ1ZpZXciIH07CkBAIC01NCwyNSArNTQsMjUgQEAg
VEVTVChXVEYsIFN0cmluZ09wZXJhdG9ycykKICAgICBFWFBFQ1RfRVEoMCwgd3RmU3RyaW5nQ29w
eUNvdW50KTsKIAogICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIHN0cmluZyArIHN0
cmluZyk7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgc3RyaW5nICsgYXRvbWlj
U3RyaW5nKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBhdG9taWNTdHJpbmcg
KyBzdHJpbmcpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIGF0b21pY1N0cmlu
ZyArIGF0b21pY1N0cmluZyk7CisgICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgc3Ry
aW5nICsgYXRvbVN0cmluZyk7CisgICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgYXRv
bVN0cmluZyArIHN0cmluZyk7CisgICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgYXRv
bVN0cmluZyArIGF0b21TdHJpbmcpOwogICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDEs
IHN0cmluZ1ZpZXcgKyBzdHJpbmcpOwogICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDEs
IHN0cmluZyArIHN0cmluZ1ZpZXcpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDEs
IHN0cmluZ1ZpZXcgKyBhdG9taWNTdHJpbmcpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09Q
SUVTKDEsIGF0b21pY1N0cmluZyArIHN0cmluZ1ZpZXcpOworICAgIEVYUEVDVF9OX1dURl9TVFJJ
TkdfQ09QSUVTKDEsIHN0cmluZ1ZpZXcgKyBhdG9tU3RyaW5nKTsKKyAgICBFWFBFQ1RfTl9XVEZf
U1RSSU5HX0NPUElFUygxLCBhdG9tU3RyaW5nICsgc3RyaW5nVmlldyk7CiAKICAgICBFWFBFQ1Rf
Tl9XVEZfU1RSSU5HX0NPUElFUygxLCAiQyBzdHJpbmciICsgc3RyaW5nKTsKICAgICBFWFBFQ1Rf
Tl9XVEZfU1RSSU5HX0NPUElFUygxLCBzdHJpbmcgKyAiQyBzdHJpbmciKTsKLSAgICBFWFBFQ1Rf
Tl9XVEZfU1RSSU5HX0NPUElFUygxLCAiQyBzdHJpbmciICsgYXRvbWljU3RyaW5nKTsKLSAgICBF
WFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygxLCBhdG9taWNTdHJpbmcgKyAiQyBzdHJpbmciKTsK
KyAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygxLCAiQyBzdHJpbmciICsgYXRvbVN0cmlu
Zyk7CisgICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMSwgYXRvbVN0cmluZyArICJDIHN0
cmluZyIpOwogICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDAsICJDIHN0cmluZyIgKyBz
dHJpbmdWaWV3KTsKICAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygwLCBzdHJpbmdWaWV3
ICsgIkMgc3RyaW5nIik7CiAKICAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygxLCBsaXRl
cmFsICsgc3RyaW5nKTsKICAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygxLCBzdHJpbmcg
KyBsaXRlcmFsKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygxLCBsaXRlcmFsICsg
YXRvbWljU3RyaW5nKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygxLCBhdG9taWNT
dHJpbmcgKyBsaXRlcmFsKTsKKyAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygxLCBsaXRl
cmFsICsgYXRvbVN0cmluZyk7CisgICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMSwgYXRv
bVN0cmluZyArIGxpdGVyYWwpOwogICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDAsIGxp
dGVyYWwgKyBzdHJpbmdWaWV3KTsKICAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygwLCBz
dHJpbmdWaWV3ICsgbGl0ZXJhbCk7CiAKQEAgLTk3LDEyICs5NywxMiBAQCBURVNUKFdURiwgU3Ry
aW5nT3BlcmF0b3JzKQogICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsICJDIHN0cmlu
ZyIgKyAoc3RyaW5nICsgbGl0ZXJhbCArIHN0cmluZykpOwogICAgIEVYUEVDVF9OX1dURl9TVFJJ
TkdfQ09QSUVTKDIsICgiQyBzdHJpbmciICsgc3RyaW5nKSArIChsaXRlcmFsICsgc3RyaW5nKSk7
CiAKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBsaXRlcmFsICsgYXRvbWljU3Ry
aW5nICsgIkMgc3RyaW5nIiArIGF0b21pY1N0cmluZyk7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklO
R19DT1BJRVMoMiwgbGl0ZXJhbCArIChhdG9taWNTdHJpbmcgKyAiQyBzdHJpbmciICsgYXRvbWlj
U3RyaW5nKSk7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgKGxpdGVyYWwgKyBh
dG9taWNTdHJpbmcpICsgKCJDIHN0cmluZyIgKyBhdG9taWNTdHJpbmcpKTsKLSAgICBFWFBFQ1Rf
Tl9XVEZfU1RSSU5HX0NPUElFUygyLCAiQyBzdHJpbmciICsgYXRvbWljU3RyaW5nICsgbGl0ZXJh
bCArIGF0b21pY1N0cmluZyk7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgIkMg
c3RyaW5nIiArIChhdG9taWNTdHJpbmcgKyBsaXRlcmFsICsgYXRvbWljU3RyaW5nKSk7Ci0gICAg
RVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgKCJDIHN0cmluZyIgKyBhdG9taWNTdHJpbmcp
ICsgKGxpdGVyYWwgKyBhdG9taWNTdHJpbmcpKTsKKyAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NP
UElFUygyLCBsaXRlcmFsICsgYXRvbVN0cmluZyArICJDIHN0cmluZyIgKyBhdG9tU3RyaW5nKTsK
KyAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBsaXRlcmFsICsgKGF0b21TdHJpbmcg
KyAiQyBzdHJpbmciICsgYXRvbVN0cmluZykpOworICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09Q
SUVTKDIsIChsaXRlcmFsICsgYXRvbVN0cmluZykgKyAoIkMgc3RyaW5nIiArIGF0b21TdHJpbmcp
KTsKKyAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCAiQyBzdHJpbmciICsgYXRvbVN0
cmluZyArIGxpdGVyYWwgKyBhdG9tU3RyaW5nKTsKKyAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NP
UElFUygyLCAiQyBzdHJpbmciICsgKGF0b21TdHJpbmcgKyBsaXRlcmFsICsgYXRvbVN0cmluZykp
OworICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsICgiQyBzdHJpbmciICsgYXRvbVN0
cmluZykgKyAobGl0ZXJhbCArIGF0b21TdHJpbmcpKTsKIAogICAgIEVYUEVDVF9OX1dURl9TVFJJ
TkdfQ09QSUVTKDAsIGxpdGVyYWwgKyBzdHJpbmdWaWV3ICsgIkMgc3RyaW5nIiArIHN0cmluZ1Zp
ZXcpOwogICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDAsIGxpdGVyYWwgKyAoc3RyaW5n
VmlldyArICJDIHN0cmluZyIgKyBzdHJpbmdWaWV3KSk7CkBAIC0xMTEsMTQ1ICsxMTEsMTQ1IEBA
IFRFU1QoV1RGLCBTdHJpbmdPcGVyYXRvcnMpCiAgICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJ
RVMoMCwgIkMgc3RyaW5nIiArIChzdHJpbmdWaWV3ICsgbGl0ZXJhbCArIHN0cmluZ1ZpZXcpKTsK
ICAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygwLCAoIkMgc3RyaW5nIiArIHN0cmluZ1Zp
ZXcpICsgKGxpdGVyYWwgKyBzdHJpbmdWaWV3KSk7CiAKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5H
X0NPUElFUygyLCBsaXRlcmFsICsgYXRvbWljU3RyaW5nICsgIkMgc3RyaW5nIiArIHN0cmluZyAr
IGxpdGVyYWwgKyBzdHJpbmdWaWV3KTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygy
LCBsaXRlcmFsICsgKGF0b21pY1N0cmluZyArICJDIHN0cmluZyIgKyBzdHJpbmcgKyBsaXRlcmFs
ICsgc3RyaW5nVmlldykpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIChsaXRl
cmFsICsgYXRvbWljU3RyaW5nKSArICgiQyBzdHJpbmciICsgc3RyaW5nKSArIChsaXRlcmFsICsg
c3RyaW5nVmlldykpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsICJDIHN0cmlu
ZyIgKyBhdG9taWNTdHJpbmcgKyBsaXRlcmFsICsgc3RyaW5nICsgbGl0ZXJhbCArIHN0cmluZ1Zp
ZXcpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsICJDIHN0cmluZyIgKyAoYXRv
bWljU3RyaW5nICsgbGl0ZXJhbCArIHN0cmluZyArIGxpdGVyYWwgKyBzdHJpbmdWaWV3KSk7Ci0g
ICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgKCJDIHN0cmluZyIgKyBhdG9taWNTdHJp
bmcpICsgKGxpdGVyYWwgKyBzdHJpbmcpICsgKGxpdGVyYWwgKyBzdHJpbmdWaWV3KSk7Ci0KLSAg
ICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBsaXRlcmFsICsgYXRvbWljU3RyaW5nICsg
IkMgc3RyaW5nIiArIHN0cmluZ1ZpZXcgKyBsaXRlcmFsICsgc3RyaW5nKTsKLSAgICBFWFBFQ1Rf
Tl9XVEZfU1RSSU5HX0NPUElFUygyLCBsaXRlcmFsICsgKGF0b21pY1N0cmluZyArICJDIHN0cmlu
ZyIgKyBzdHJpbmdWaWV3ICsgbGl0ZXJhbCArIHN0cmluZykpOwotICAgIEVYUEVDVF9OX1dURl9T
VFJJTkdfQ09QSUVTKDIsIChsaXRlcmFsICsgYXRvbWljU3RyaW5nKSArICgiQyBzdHJpbmciICsg
c3RyaW5nVmlldykgKyAobGl0ZXJhbCArIHN0cmluZykpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJ
TkdfQ09QSUVTKDIsICJDIHN0cmluZyIgKyBhdG9taWNTdHJpbmcgKyBsaXRlcmFsICsgc3RyaW5n
VmlldyArIGxpdGVyYWwgKyBzdHJpbmcpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVT
KDIsICJDIHN0cmluZyIgKyAoYXRvbWljU3RyaW5nICsgbGl0ZXJhbCArIHN0cmluZ1ZpZXcgKyBs
aXRlcmFsICsgc3RyaW5nKSk7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgKCJD
IHN0cmluZyIgKyBhdG9taWNTdHJpbmcpICsgKGxpdGVyYWwgKyBzdHJpbmdWaWV3KSArIChsaXRl
cmFsICsgc3RyaW5nKSk7Ci0KLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBsaXRl
cmFsICsgc3RyaW5nICsgIkMgc3RyaW5nIiArIGF0b21pY1N0cmluZyArIGxpdGVyYWwgKyBzdHJp
bmdWaWV3KTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBsaXRlcmFsICsgKHN0
cmluZyArICJDIHN0cmluZyIgKyBhdG9taWNTdHJpbmcgKyBsaXRlcmFsICsgc3RyaW5nVmlldykp
OwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIChsaXRlcmFsICsgc3RyaW5nKSAr
ICgiQyBzdHJpbmciICsgYXRvbWljU3RyaW5nKSArIChsaXRlcmFsICsgc3RyaW5nVmlldykpOwot
ICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsICJDIHN0cmluZyIgKyBzdHJpbmcgKyBs
aXRlcmFsICsgYXRvbWljU3RyaW5nICsgbGl0ZXJhbCArIHN0cmluZ1ZpZXcpOwotICAgIEVYUEVD
VF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsICJDIHN0cmluZyIgKyAoc3RyaW5nICsgbGl0ZXJhbCAr
IGF0b21pY1N0cmluZyArIGxpdGVyYWwgKyBzdHJpbmdWaWV3KSk7Ci0gICAgRVhQRUNUX05fV1RG
X1NUUklOR19DT1BJRVMoMiwgKCJDIHN0cmluZyIgKyBzdHJpbmcpICsgKGxpdGVyYWwgKyBhdG9t
aWNTdHJpbmcpICsgKGxpdGVyYWwgKyBzdHJpbmdWaWV3KSk7Ci0KLSAgICBFWFBFQ1RfTl9XVEZf
U1RSSU5HX0NPUElFUygyLCBsaXRlcmFsICsgc3RyaW5nICsgIkMgc3RyaW5nIiArIHN0cmluZ1Zp
ZXcgKyBsaXRlcmFsICsgYXRvbWljU3RyaW5nKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NP
UElFUygyLCBsaXRlcmFsICsgKHN0cmluZyArICJDIHN0cmluZyIgKyBzdHJpbmdWaWV3ICsgbGl0
ZXJhbCArIGF0b21pY1N0cmluZykpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIs
IChsaXRlcmFsICsgc3RyaW5nKSArICgiQyBzdHJpbmciICsgc3RyaW5nVmlldykgKyAobGl0ZXJh
bCArIGF0b21pY1N0cmluZykpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsICJD
IHN0cmluZyIgKyBzdHJpbmcgKyBsaXRlcmFsICsgc3RyaW5nVmlldyArIGxpdGVyYWwgKyBhdG9t
aWNTdHJpbmcpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsICJDIHN0cmluZyIg
KyAoc3RyaW5nICsgbGl0ZXJhbCArIHN0cmluZ1ZpZXcgKyBsaXRlcmFsICsgYXRvbWljU3RyaW5n
KSk7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgKCJDIHN0cmluZyIgKyBzdHJp
bmcpICsgKGxpdGVyYWwgKyBzdHJpbmdWaWV3KSArIChsaXRlcmFsICsgYXRvbWljU3RyaW5nKSk7
Ci0KLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBsaXRlcmFsICsgc3RyaW5nVmll
dyArICJDIHN0cmluZyIgKyBhdG9taWNTdHJpbmcgKyBsaXRlcmFsICsgc3RyaW5nKTsKLSAgICBF
WFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBsaXRlcmFsICsgKHN0cmluZ1ZpZXcgKyAiQyBz
dHJpbmciICsgYXRvbWljU3RyaW5nICsgbGl0ZXJhbCArIHN0cmluZykpOwotICAgIEVYUEVDVF9O
X1dURl9TVFJJTkdfQ09QSUVTKDIsIChsaXRlcmFsICsgc3RyaW5nVmlldykgKyAoIkMgc3RyaW5n
IiArIGF0b21pY1N0cmluZykgKyAobGl0ZXJhbCArIHN0cmluZykpOwotICAgIEVYUEVDVF9OX1dU
Rl9TVFJJTkdfQ09QSUVTKDIsICJDIHN0cmluZyIgKyBzdHJpbmdWaWV3ICsgbGl0ZXJhbCArIGF0
b21pY1N0cmluZyArIGxpdGVyYWwgKyBzdHJpbmcpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdf
Q09QSUVTKDIsICJDIHN0cmluZyIgKyAoc3RyaW5nVmlldyArIGxpdGVyYWwgKyBhdG9taWNTdHJp
bmcgKyBsaXRlcmFsICsgc3RyaW5nKSk7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMo
MiwgKCJDIHN0cmluZyIgKyBzdHJpbmdWaWV3KSArIChsaXRlcmFsICsgYXRvbWljU3RyaW5nKSAr
IChsaXRlcmFsICsgc3RyaW5nKSk7Ci0KLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygy
LCBsaXRlcmFsICsgc3RyaW5nVmlldyArICJDIHN0cmluZyIgKyBzdHJpbmcgKyBsaXRlcmFsICsg
YXRvbWljU3RyaW5nKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBsaXRlcmFs
ICsgKHN0cmluZ1ZpZXcgKyAiQyBzdHJpbmciICsgc3RyaW5nICsgbGl0ZXJhbCArIGF0b21pY1N0
cmluZykpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIChsaXRlcmFsICsgc3Ry
aW5nVmlldykgKyAoIkMgc3RyaW5nIiArIHN0cmluZykgKyAobGl0ZXJhbCArIGF0b21pY1N0cmlu
ZykpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsICJDIHN0cmluZyIgKyBzdHJp
bmdWaWV3ICsgbGl0ZXJhbCArIHN0cmluZyArIGxpdGVyYWwgKyBhdG9taWNTdHJpbmcpOwotICAg
IEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsICJDIHN0cmluZyIgKyAoc3RyaW5nVmlldyAr
IGxpdGVyYWwgKyBzdHJpbmcgKyBsaXRlcmFsICsgYXRvbWljU3RyaW5nKSk7Ci0gICAgRVhQRUNU
X05fV1RGX1NUUklOR19DT1BJRVMoMiwgKCJDIHN0cmluZyIgKyBzdHJpbmdWaWV3KSArIChsaXRl
cmFsICsgc3RyaW5nKSArIChsaXRlcmFsICsgYXRvbWljU3RyaW5nKSk7Ci0KLSAgICBFWFBFQ1Rf
Tl9XVEZfU1RSSU5HX0NPUElFUygyLCAiQyBzdHJpbmciICsgYXRvbWljU3RyaW5nICsgIkMgc3Ry
aW5nIiArIGF0b21pY1N0cmluZyk7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwg
IkMgc3RyaW5nIiArIChhdG9taWNTdHJpbmcgKyAiQyBzdHJpbmciICsgYXRvbWljU3RyaW5nKSk7
Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgKCJDIHN0cmluZyIgKyBhdG9taWNT
dHJpbmcpICsgKCJDIHN0cmluZyIgKyBhdG9taWNTdHJpbmcpKTsKLSAgICBFWFBFQ1RfTl9XVEZf
U1RSSU5HX0NPUElFUygyLCBhdG9taWNTdHJpbmcgKyAiQyBzdHJpbmciICsgYXRvbWljU3RyaW5n
ICsgIkMgc3RyaW5nIik7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgYXRvbWlj
U3RyaW5nICsgKCJDIHN0cmluZyIgKyBhdG9taWNTdHJpbmcgKyAiQyBzdHJpbmciKSk7Ci0gICAg
RVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgKGF0b21pY1N0cmluZyArICJDIHN0cmluZyIp
ICsgKGF0b21pY1N0cmluZyArICJDIHN0cmluZyIpKTsKLQotICAgIEVYUEVDVF9OX1dURl9TVFJJ
TkdfQ09QSUVTKDIsIGxpdGVyYWwgKyBhdG9taWNTdHJpbmcgKyBsaXRlcmFsICsgYXRvbWljU3Ry
aW5nKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBsaXRlcmFsICsgKGF0b21p
Y1N0cmluZyArIGxpdGVyYWwgKyBhdG9taWNTdHJpbmcpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RS
SU5HX0NPUElFUygyLCAobGl0ZXJhbCArIGF0b21pY1N0cmluZykgKyAobGl0ZXJhbCArIGF0b21p
Y1N0cmluZykpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIGF0b21pY1N0cmlu
ZyArIGxpdGVyYWwgKyBhdG9taWNTdHJpbmcgKyBsaXRlcmFsKTsKLSAgICBFWFBFQ1RfTl9XVEZf
U1RSSU5HX0NPUElFUygyLCBhdG9taWNTdHJpbmcgKyAobGl0ZXJhbCArIGF0b21pY1N0cmluZyAr
IGxpdGVyYWwpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCAoYXRvbWljU3Ry
aW5nICsgbGl0ZXJhbCkgKyAoYXRvbWljU3RyaW5nICsgbGl0ZXJhbCkpOwotCi0gICAgRVhQRUNU
X05fV1RGX1NUUklOR19DT1BJRVMoMiwgIkMgc3RyaW5nIiArIHN0cmluZyArICJDIHN0cmluZyIg
KyBhdG9taWNTdHJpbmcgKyAiQyBzdHJpbmciICsgc3RyaW5nVmlldyk7Ci0gICAgRVhQRUNUX05f
V1RGX1NUUklOR19DT1BJRVMoMiwgIkMgc3RyaW5nIiArIChzdHJpbmcgKyAiQyBzdHJpbmciICsg
YXRvbWljU3RyaW5nICsgIkMgc3RyaW5nIiArIHN0cmluZ1ZpZXcpKTsKLSAgICBFWFBFQ1RfTl9X
VEZfU1RSSU5HX0NPUElFUygyLCAoIkMgc3RyaW5nIiArIHN0cmluZykgKyAoIkMgc3RyaW5nIiAr
IGF0b21pY1N0cmluZykgKyAoIkMgc3RyaW5nIiArIHN0cmluZ1ZpZXcpKTsKLSAgICBFWFBFQ1Rf
Tl9XVEZfU1RSSU5HX0NPUElFUygyLCBzdHJpbmcgKyAiQyBzdHJpbmciICsgYXRvbWljU3RyaW5n
ICsgIkMgc3RyaW5nIiArIHN0cmluZ1ZpZXcgKyAiQyBzdHJpbmciKTsKLSAgICBFWFBFQ1RfTl9X
VEZfU1RSSU5HX0NPUElFUygyLCBzdHJpbmcgKyAoIkMgc3RyaW5nIiArIGF0b21pY1N0cmluZyAr
ICJDIHN0cmluZyIgKyBzdHJpbmdWaWV3ICsgIkMgc3RyaW5nIikpOwotICAgIEVYUEVDVF9OX1dU
Rl9TVFJJTkdfQ09QSUVTKDIsIChzdHJpbmcgKyAiQyBzdHJpbmciKSArIChhdG9taWNTdHJpbmcg
KyAiQyBzdHJpbmciKSArIChzdHJpbmdWaWV3ICsgIkMgc3RyaW5nIikpOwotCi0gICAgRVhQRUNU
X05fV1RGX1NUUklOR19DT1BJRVMoMiwgbGl0ZXJhbCArIHN0cmluZyArIGxpdGVyYWwgKyBhdG9t
aWNTdHJpbmcgKyBsaXRlcmFsICsgc3RyaW5nVmlldyk7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklO
R19DT1BJRVMoMiwgbGl0ZXJhbCArIChzdHJpbmcgKyBsaXRlcmFsICsgYXRvbWljU3RyaW5nICsg
bGl0ZXJhbCArIHN0cmluZ1ZpZXcpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygy
LCAobGl0ZXJhbCArIHN0cmluZykgKyAobGl0ZXJhbCArIGF0b21pY1N0cmluZykgKyAobGl0ZXJh
bCArIHN0cmluZ1ZpZXcpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBzdHJp
bmcgKyBsaXRlcmFsICsgYXRvbWljU3RyaW5nICsgbGl0ZXJhbCArIHN0cmluZ1ZpZXcgKyBsaXRl
cmFsKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBzdHJpbmcgKyAobGl0ZXJh
bCArIGF0b21pY1N0cmluZyArIGxpdGVyYWwgKyBzdHJpbmdWaWV3ICsgbGl0ZXJhbCkpOwotICAg
IEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIChzdHJpbmcgKyBsaXRlcmFsKSArIChhdG9t
aWNTdHJpbmcgKyBsaXRlcmFsKSArIChzdHJpbmdWaWV3ICsgbGl0ZXJhbCkpOwotCi0gICAgRVhQ
RUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgIkMgc3RyaW5nIiArIHN0cmluZyArICJDIHN0cmlu
ZyIgKyBzdHJpbmdWaWV3ICsgIkMgc3RyaW5nIiArIGF0b21pY1N0cmluZyk7Ci0gICAgRVhQRUNU
X05fV1RGX1NUUklOR19DT1BJRVMoMiwgIkMgc3RyaW5nIiArIChzdHJpbmcgKyAiQyBzdHJpbmci
ICsgc3RyaW5nVmlldyArICJDIHN0cmluZyIgKyBhdG9taWNTdHJpbmcpKTsKLSAgICBFWFBFQ1Rf
Tl9XVEZfU1RSSU5HX0NPUElFUygyLCAoIkMgc3RyaW5nIiArIHN0cmluZykgKyAoIkMgc3RyaW5n
IiArIHN0cmluZ1ZpZXcpICsgKCJDIHN0cmluZyIgKyBhdG9taWNTdHJpbmcpKTsKLSAgICBFWFBF
Q1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBzdHJpbmcgKyAiQyBzdHJpbmciICsgc3RyaW5nVmll
dyArICJDIHN0cmluZyIgKyBhdG9taWNTdHJpbmcgKyAiQyBzdHJpbmciKTsKLSAgICBFWFBFQ1Rf
Tl9XVEZfU1RSSU5HX0NPUElFUygyLCBzdHJpbmcgKyAoIkMgc3RyaW5nIiArIHN0cmluZ1ZpZXcg
KyAiQyBzdHJpbmciICsgYXRvbWljU3RyaW5nICsgIkMgc3RyaW5nIikpOwotICAgIEVYUEVDVF9O
X1dURl9TVFJJTkdfQ09QSUVTKDIsIChzdHJpbmcgKyAiQyBzdHJpbmciKSArIChzdHJpbmdWaWV3
ICsgIkMgc3RyaW5nIikgKyAoYXRvbWljU3RyaW5nICsgIkMgc3RyaW5nIikpOwotCi0gICAgRVhQ
RUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgbGl0ZXJhbCArIHN0cmluZyArIGxpdGVyYWwgKyBz
dHJpbmdWaWV3ICsgbGl0ZXJhbCArIGF0b21pY1N0cmluZyk7Ci0gICAgRVhQRUNUX05fV1RGX1NU
UklOR19DT1BJRVMoMiwgbGl0ZXJhbCArIChzdHJpbmcgKyBsaXRlcmFsICsgc3RyaW5nVmlldyAr
IGxpdGVyYWwgKyBhdG9taWNTdHJpbmcpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElF
UygyLCAobGl0ZXJhbCArIHN0cmluZykgKyAobGl0ZXJhbCArIHN0cmluZ1ZpZXcpICsgKGxpdGVy
YWwgKyBhdG9taWNTdHJpbmcpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBz
dHJpbmcgKyBsaXRlcmFsICsgc3RyaW5nVmlldyArIGxpdGVyYWwgKyBhdG9taWNTdHJpbmcgKyBs
aXRlcmFsKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBzdHJpbmcgKyAobGl0
ZXJhbCArIHN0cmluZ1ZpZXcgKyBsaXRlcmFsICsgYXRvbWljU3RyaW5nICsgbGl0ZXJhbCkpOwot
ICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIChzdHJpbmcgKyBsaXRlcmFsKSArIChz
dHJpbmdWaWV3ICsgbGl0ZXJhbCkgKyAoYXRvbWljU3RyaW5nICsgbGl0ZXJhbCkpOwotCi0gICAg
RVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgIkMgc3RyaW5nIiArIGF0b21pY1N0cmluZyAr
ICJDIHN0cmluZyIgKyBzdHJpbmcgKyAiQyBzdHJpbmciICsgc3RyaW5nVmlldyk7Ci0gICAgRVhQ
RUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgIkMgc3RyaW5nIiArIChhdG9taWNTdHJpbmcgKyAi
QyBzdHJpbmciICsgc3RyaW5nICsgIkMgc3RyaW5nIiArIHN0cmluZ1ZpZXcpKTsKLSAgICBFWFBF
Q1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCAoIkMgc3RyaW5nIiArIGF0b21pY1N0cmluZykgKyAo
IkMgc3RyaW5nIiArIHN0cmluZykgKyAoIkMgc3RyaW5nIiArIHN0cmluZ1ZpZXcpKTsKLSAgICBF
WFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBhdG9taWNTdHJpbmcgKyAiQyBzdHJpbmciICsg
c3RyaW5nICsgIkMgc3RyaW5nIiArIHN0cmluZ1ZpZXcgKyAiQyBzdHJpbmciKTsKLSAgICBFWFBF
Q1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBhdG9taWNTdHJpbmcgKyAoIkMgc3RyaW5nIiArIHN0
cmluZyArICJDIHN0cmluZyIgKyBzdHJpbmdWaWV3ICsgIkMgc3RyaW5nIikpOwotICAgIEVYUEVD
VF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIChhdG9taWNTdHJpbmcgKyAiQyBzdHJpbmciKSArIChz
dHJpbmcgKyAiQyBzdHJpbmciKSArIChzdHJpbmdWaWV3ICsgIkMgc3RyaW5nIikpOwotCi0gICAg
RVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgbGl0ZXJhbCArIGF0b21pY1N0cmluZyArIGxp
dGVyYWwgKyBzdHJpbmcgKyBsaXRlcmFsICsgc3RyaW5nVmlldyk7Ci0gICAgRVhQRUNUX05fV1RG
X1NUUklOR19DT1BJRVMoMiwgbGl0ZXJhbCArIChhdG9taWNTdHJpbmcgKyBsaXRlcmFsICsgc3Ry
aW5nICsgbGl0ZXJhbCArIHN0cmluZ1ZpZXcpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NP
UElFUygyLCAobGl0ZXJhbCArIGF0b21pY1N0cmluZykgKyAobGl0ZXJhbCArIHN0cmluZykgKyAo
bGl0ZXJhbCArIHN0cmluZ1ZpZXcpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygy
LCBhdG9taWNTdHJpbmcgKyBsaXRlcmFsICsgc3RyaW5nICsgbGl0ZXJhbCArIHN0cmluZ1ZpZXcg
KyBsaXRlcmFsKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBhdG9taWNTdHJp
bmcgKyAobGl0ZXJhbCArIHN0cmluZyArIGxpdGVyYWwgKyBzdHJpbmdWaWV3ICsgbGl0ZXJhbCkp
OwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIChhdG9taWNTdHJpbmcgKyBsaXRl
cmFsKSArIChzdHJpbmcgKyBsaXRlcmFsKSArIChzdHJpbmdWaWV3ICsgbGl0ZXJhbCkpOwotCi0g
ICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgIkMgc3RyaW5nIiArIGF0b21pY1N0cmlu
ZyArICJDIHN0cmluZyIgKyBzdHJpbmdWaWV3ICsgIkMgc3RyaW5nIiArIHN0cmluZyk7Ci0gICAg
RVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgIkMgc3RyaW5nIiArIChhdG9taWNTdHJpbmcg
KyAiQyBzdHJpbmciICsgc3RyaW5nVmlldyArICJDIHN0cmluZyIgKyBzdHJpbmcpKTsKLSAgICBF
WFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCAoIkMgc3RyaW5nIiArIGF0b21pY1N0cmluZykg
KyAoIkMgc3RyaW5nIiArIHN0cmluZ1ZpZXcpICsgKCJDIHN0cmluZyIgKyBzdHJpbmcpKTsKLSAg
ICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBhdG9taWNTdHJpbmcgKyAiQyBzdHJpbmci
ICsgc3RyaW5nVmlldyArICJDIHN0cmluZyIgKyBzdHJpbmcgKyAiQyBzdHJpbmciKTsKLSAgICBF
WFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBhdG9taWNTdHJpbmcgKyAoIkMgc3RyaW5nIiAr
IHN0cmluZ1ZpZXcgKyAiQyBzdHJpbmciICsgc3RyaW5nICsgIkMgc3RyaW5nIikpOwotICAgIEVY
UEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIChhdG9taWNTdHJpbmcgKyAiQyBzdHJpbmciKSAr
IChzdHJpbmdWaWV3ICsgIkMgc3RyaW5nIikgKyAoc3RyaW5nICsgIkMgc3RyaW5nIikpOwotCi0g
ICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgbGl0ZXJhbCArIGF0b21pY1N0cmluZyAr
IGxpdGVyYWwgKyBzdHJpbmdWaWV3ICsgbGl0ZXJhbCArIHN0cmluZyk7Ci0gICAgRVhQRUNUX05f
V1RGX1NUUklOR19DT1BJRVMoMiwgbGl0ZXJhbCArIChhdG9taWNTdHJpbmcgKyBsaXRlcmFsICsg
c3RyaW5nVmlldyArIGxpdGVyYWwgKyBzdHJpbmcpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5H
X0NPUElFUygyLCAobGl0ZXJhbCArIGF0b21pY1N0cmluZykgKyAobGl0ZXJhbCArIHN0cmluZ1Zp
ZXcpICsgKGxpdGVyYWwgKyBzdHJpbmcpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElF
UygyLCBhdG9taWNTdHJpbmcgKyBsaXRlcmFsICsgc3RyaW5nVmlldyArIGxpdGVyYWwgKyBzdHJp
bmcgKyBsaXRlcmFsKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBhdG9taWNT
dHJpbmcgKyAobGl0ZXJhbCArIHN0cmluZ1ZpZXcgKyBsaXRlcmFsICsgc3RyaW5nICsgbGl0ZXJh
bCkpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIChhdG9taWNTdHJpbmcgKyBs
aXRlcmFsKSArIChzdHJpbmdWaWV3ICsgbGl0ZXJhbCkgKyAoc3RyaW5nICsgbGl0ZXJhbCkpOwot
Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgIkMgc3RyaW5nIiArIHN0cmluZ1Zp
ZXcgKyAiQyBzdHJpbmciICsgYXRvbWljU3RyaW5nICsgIkMgc3RyaW5nIiArIHN0cmluZyk7Ci0g
ICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgIkMgc3RyaW5nIiArIChzdHJpbmdWaWV3
ICsgIkMgc3RyaW5nIiArIGF0b21pY1N0cmluZyArICJDIHN0cmluZyIgKyBzdHJpbmcpKTsKLSAg
ICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCAoIkMgc3RyaW5nIiArIHN0cmluZ1ZpZXcp
ICsgKCJDIHN0cmluZyIgKyBhdG9taWNTdHJpbmcpICsgKCJDIHN0cmluZyIgKyBzdHJpbmcpKTsK
LSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBzdHJpbmdWaWV3ICsgIkMgc3RyaW5n
IiArIGF0b21pY1N0cmluZyArICJDIHN0cmluZyIgKyBzdHJpbmcgKyAiQyBzdHJpbmciKTsKLSAg
ICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBzdHJpbmdWaWV3ICsgKCJDIHN0cmluZyIg
KyBhdG9taWNTdHJpbmcgKyAiQyBzdHJpbmciICsgc3RyaW5nICsgIkMgc3RyaW5nIikpOwotICAg
IEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIChzdHJpbmdWaWV3ICsgIkMgc3RyaW5nIikg
KyAoYXRvbWljU3RyaW5nICsgIkMgc3RyaW5nIikgKyAoc3RyaW5nICsgIkMgc3RyaW5nIikpOwot
Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgbGl0ZXJhbCArIHN0cmluZ1ZpZXcg
KyBsaXRlcmFsICsgYXRvbWljU3RyaW5nICsgbGl0ZXJhbCArIHN0cmluZyk7Ci0gICAgRVhQRUNU
X05fV1RGX1NUUklOR19DT1BJRVMoMiwgbGl0ZXJhbCArIChzdHJpbmdWaWV3ICsgbGl0ZXJhbCAr
IGF0b21pY1N0cmluZyArIGxpdGVyYWwgKyBzdHJpbmcpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RS
SU5HX0NPUElFUygyLCAobGl0ZXJhbCArIHN0cmluZ1ZpZXcpICsgKGxpdGVyYWwgKyBhdG9taWNT
dHJpbmcpICsgKGxpdGVyYWwgKyBzdHJpbmcpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NP
UElFUygyLCBzdHJpbmdWaWV3ICsgbGl0ZXJhbCArIGF0b21pY1N0cmluZyArIGxpdGVyYWwgKyBz
dHJpbmcgKyBsaXRlcmFsKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBzdHJp
bmdWaWV3ICsgKGxpdGVyYWwgKyBhdG9taWNTdHJpbmcgKyBsaXRlcmFsICsgc3RyaW5nICsgbGl0
ZXJhbCkpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIChzdHJpbmdWaWV3ICsg
bGl0ZXJhbCkgKyAoYXRvbWljU3RyaW5nICsgbGl0ZXJhbCkgKyAoc3RyaW5nICsgbGl0ZXJhbCkp
OwotCi0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgIkMgc3RyaW5nIiArIHN0cmlu
Z1ZpZXcgKyAiQyBzdHJpbmciICsgc3RyaW5nICsgIkMgc3RyaW5nIiArIGF0b21pY1N0cmluZyk7
Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgIkMgc3RyaW5nIiArIChzdHJpbmdW
aWV3ICsgIkMgc3RyaW5nIiArIHN0cmluZyArICJDIHN0cmluZyIgKyBhdG9taWNTdHJpbmcpKTsK
LSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCAoIkMgc3RyaW5nIiArIHN0cmluZ1Zp
ZXcpICsgKCJDIHN0cmluZyIgKyBzdHJpbmcpICsgKCJDIHN0cmluZyIgKyBhdG9taWNTdHJpbmcp
KTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBzdHJpbmdWaWV3ICsgIkMgc3Ry
aW5nIiArIHN0cmluZyArICJDIHN0cmluZyIgKyBhdG9taWNTdHJpbmcgKyAiQyBzdHJpbmciKTsK
LSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBzdHJpbmdWaWV3ICsgKCJDIHN0cmlu
ZyIgKyBzdHJpbmcgKyAiQyBzdHJpbmciICsgYXRvbWljU3RyaW5nICsgIkMgc3RyaW5nIikpOwot
ICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIChzdHJpbmdWaWV3ICsgIkMgc3RyaW5n
IikgKyAoc3RyaW5nICsgIkMgc3RyaW5nIikgKyAoYXRvbWljU3RyaW5nICsgIkMgc3RyaW5nIikp
OwotCi0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgbGl0ZXJhbCArIHN0cmluZ1Zp
ZXcgKyBsaXRlcmFsICsgc3RyaW5nICsgbGl0ZXJhbCArIGF0b21pY1N0cmluZyk7Ci0gICAgRVhQ
RUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgbGl0ZXJhbCArIChzdHJpbmdWaWV3ICsgbGl0ZXJh
bCArIHN0cmluZyArIGxpdGVyYWwgKyBhdG9taWNTdHJpbmcpKTsKLSAgICBFWFBFQ1RfTl9XVEZf
U1RSSU5HX0NPUElFUygyLCAobGl0ZXJhbCArIHN0cmluZ1ZpZXcpICsgKGxpdGVyYWwgKyBzdHJp
bmcpICsgKGxpdGVyYWwgKyBhdG9taWNTdHJpbmcpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5H
X0NPUElFUygyLCBzdHJpbmdWaWV3ICsgbGl0ZXJhbCArIHN0cmluZyArIGxpdGVyYWwgKyBhdG9t
aWNTdHJpbmcgKyBsaXRlcmFsKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBz
dHJpbmdWaWV3ICsgKGxpdGVyYWwgKyBzdHJpbmcgKyBsaXRlcmFsICsgYXRvbWljU3RyaW5nICsg
bGl0ZXJhbCkpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIChzdHJpbmdWaWV3
ICsgbGl0ZXJhbCkgKyAoc3RyaW5nICsgbGl0ZXJhbCkgKyAoYXRvbWljU3RyaW5nICsgbGl0ZXJh
bCkpOworICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIGxpdGVyYWwgKyBhdG9tU3Ry
aW5nICsgIkMgc3RyaW5nIiArIHN0cmluZyArIGxpdGVyYWwgKyBzdHJpbmdWaWV3KTsKKyAgICBF
WFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBsaXRlcmFsICsgKGF0b21TdHJpbmcgKyAiQyBz
dHJpbmciICsgc3RyaW5nICsgbGl0ZXJhbCArIHN0cmluZ1ZpZXcpKTsKKyAgICBFWFBFQ1RfTl9X
VEZfU1RSSU5HX0NPUElFUygyLCAobGl0ZXJhbCArIGF0b21TdHJpbmcpICsgKCJDIHN0cmluZyIg
KyBzdHJpbmcpICsgKGxpdGVyYWwgKyBzdHJpbmdWaWV3KSk7CisgICAgRVhQRUNUX05fV1RGX1NU
UklOR19DT1BJRVMoMiwgIkMgc3RyaW5nIiArIGF0b21TdHJpbmcgKyBsaXRlcmFsICsgc3RyaW5n
ICsgbGl0ZXJhbCArIHN0cmluZ1ZpZXcpOworICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVT
KDIsICJDIHN0cmluZyIgKyAoYXRvbVN0cmluZyArIGxpdGVyYWwgKyBzdHJpbmcgKyBsaXRlcmFs
ICsgc3RyaW5nVmlldykpOworICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsICgiQyBz
dHJpbmciICsgYXRvbVN0cmluZykgKyAobGl0ZXJhbCArIHN0cmluZykgKyAobGl0ZXJhbCArIHN0
cmluZ1ZpZXcpKTsKKworICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIGxpdGVyYWwg
KyBhdG9tU3RyaW5nICsgIkMgc3RyaW5nIiArIHN0cmluZ1ZpZXcgKyBsaXRlcmFsICsgc3RyaW5n
KTsKKyAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBsaXRlcmFsICsgKGF0b21TdHJp
bmcgKyAiQyBzdHJpbmciICsgc3RyaW5nVmlldyArIGxpdGVyYWwgKyBzdHJpbmcpKTsKKyAgICBF
WFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCAobGl0ZXJhbCArIGF0b21TdHJpbmcpICsgKCJD
IHN0cmluZyIgKyBzdHJpbmdWaWV3KSArIChsaXRlcmFsICsgc3RyaW5nKSk7CisgICAgRVhQRUNU
X05fV1RGX1NUUklOR19DT1BJRVMoMiwgIkMgc3RyaW5nIiArIGF0b21TdHJpbmcgKyBsaXRlcmFs
ICsgc3RyaW5nVmlldyArIGxpdGVyYWwgKyBzdHJpbmcpOworICAgIEVYUEVDVF9OX1dURl9TVFJJ
TkdfQ09QSUVTKDIsICJDIHN0cmluZyIgKyAoYXRvbVN0cmluZyArIGxpdGVyYWwgKyBzdHJpbmdW
aWV3ICsgbGl0ZXJhbCArIHN0cmluZykpOworICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVT
KDIsICgiQyBzdHJpbmciICsgYXRvbVN0cmluZykgKyAobGl0ZXJhbCArIHN0cmluZ1ZpZXcpICsg
KGxpdGVyYWwgKyBzdHJpbmcpKTsKKworICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIs
IGxpdGVyYWwgKyBzdHJpbmcgKyAiQyBzdHJpbmciICsgYXRvbVN0cmluZyArIGxpdGVyYWwgKyBz
dHJpbmdWaWV3KTsKKyAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBsaXRlcmFsICsg
KHN0cmluZyArICJDIHN0cmluZyIgKyBhdG9tU3RyaW5nICsgbGl0ZXJhbCArIHN0cmluZ1ZpZXcp
KTsKKyAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCAobGl0ZXJhbCArIHN0cmluZykg
KyAoIkMgc3RyaW5nIiArIGF0b21TdHJpbmcpICsgKGxpdGVyYWwgKyBzdHJpbmdWaWV3KSk7Cisg
ICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgIkMgc3RyaW5nIiArIHN0cmluZyArIGxp
dGVyYWwgKyBhdG9tU3RyaW5nICsgbGl0ZXJhbCArIHN0cmluZ1ZpZXcpOworICAgIEVYUEVDVF9O
X1dURl9TVFJJTkdfQ09QSUVTKDIsICJDIHN0cmluZyIgKyAoc3RyaW5nICsgbGl0ZXJhbCArIGF0
b21TdHJpbmcgKyBsaXRlcmFsICsgc3RyaW5nVmlldykpOworICAgIEVYUEVDVF9OX1dURl9TVFJJ
TkdfQ09QSUVTKDIsICgiQyBzdHJpbmciICsgc3RyaW5nKSArIChsaXRlcmFsICsgYXRvbVN0cmlu
ZykgKyAobGl0ZXJhbCArIHN0cmluZ1ZpZXcpKTsKKworICAgIEVYUEVDVF9OX1dURl9TVFJJTkdf
Q09QSUVTKDIsIGxpdGVyYWwgKyBzdHJpbmcgKyAiQyBzdHJpbmciICsgc3RyaW5nVmlldyArIGxp
dGVyYWwgKyBhdG9tU3RyaW5nKTsKKyAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBs
aXRlcmFsICsgKHN0cmluZyArICJDIHN0cmluZyIgKyBzdHJpbmdWaWV3ICsgbGl0ZXJhbCArIGF0
b21TdHJpbmcpKTsKKyAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCAobGl0ZXJhbCAr
IHN0cmluZykgKyAoIkMgc3RyaW5nIiArIHN0cmluZ1ZpZXcpICsgKGxpdGVyYWwgKyBhdG9tU3Ry
aW5nKSk7CisgICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgIkMgc3RyaW5nIiArIHN0
cmluZyArIGxpdGVyYWwgKyBzdHJpbmdWaWV3ICsgbGl0ZXJhbCArIGF0b21TdHJpbmcpOworICAg
IEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsICJDIHN0cmluZyIgKyAoc3RyaW5nICsgbGl0
ZXJhbCArIHN0cmluZ1ZpZXcgKyBsaXRlcmFsICsgYXRvbVN0cmluZykpOworICAgIEVYUEVDVF9O
X1dURl9TVFJJTkdfQ09QSUVTKDIsICgiQyBzdHJpbmciICsgc3RyaW5nKSArIChsaXRlcmFsICsg
c3RyaW5nVmlldykgKyAobGl0ZXJhbCArIGF0b21TdHJpbmcpKTsKKworICAgIEVYUEVDVF9OX1dU
Rl9TVFJJTkdfQ09QSUVTKDIsIGxpdGVyYWwgKyBzdHJpbmdWaWV3ICsgIkMgc3RyaW5nIiArIGF0
b21TdHJpbmcgKyBsaXRlcmFsICsgc3RyaW5nKTsKKyAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NP
UElFUygyLCBsaXRlcmFsICsgKHN0cmluZ1ZpZXcgKyAiQyBzdHJpbmciICsgYXRvbVN0cmluZyAr
IGxpdGVyYWwgKyBzdHJpbmcpKTsKKyAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCAo
bGl0ZXJhbCArIHN0cmluZ1ZpZXcpICsgKCJDIHN0cmluZyIgKyBhdG9tU3RyaW5nKSArIChsaXRl
cmFsICsgc3RyaW5nKSk7CisgICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgIkMgc3Ry
aW5nIiArIHN0cmluZ1ZpZXcgKyBsaXRlcmFsICsgYXRvbVN0cmluZyArIGxpdGVyYWwgKyBzdHJp
bmcpOworICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsICJDIHN0cmluZyIgKyAoc3Ry
aW5nVmlldyArIGxpdGVyYWwgKyBhdG9tU3RyaW5nICsgbGl0ZXJhbCArIHN0cmluZykpOworICAg
IEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsICgiQyBzdHJpbmciICsgc3RyaW5nVmlldykg
KyAobGl0ZXJhbCArIGF0b21TdHJpbmcpICsgKGxpdGVyYWwgKyBzdHJpbmcpKTsKKworICAgIEVY
UEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIGxpdGVyYWwgKyBzdHJpbmdWaWV3ICsgIkMgc3Ry
aW5nIiArIHN0cmluZyArIGxpdGVyYWwgKyBhdG9tU3RyaW5nKTsKKyAgICBFWFBFQ1RfTl9XVEZf
U1RSSU5HX0NPUElFUygyLCBsaXRlcmFsICsgKHN0cmluZ1ZpZXcgKyAiQyBzdHJpbmciICsgc3Ry
aW5nICsgbGl0ZXJhbCArIGF0b21TdHJpbmcpKTsKKyAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NP
UElFUygyLCAobGl0ZXJhbCArIHN0cmluZ1ZpZXcpICsgKCJDIHN0cmluZyIgKyBzdHJpbmcpICsg
KGxpdGVyYWwgKyBhdG9tU3RyaW5nKSk7CisgICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMo
MiwgIkMgc3RyaW5nIiArIHN0cmluZ1ZpZXcgKyBsaXRlcmFsICsgc3RyaW5nICsgbGl0ZXJhbCAr
IGF0b21TdHJpbmcpOworICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsICJDIHN0cmlu
ZyIgKyAoc3RyaW5nVmlldyArIGxpdGVyYWwgKyBzdHJpbmcgKyBsaXRlcmFsICsgYXRvbVN0cmlu
ZykpOworICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsICgiQyBzdHJpbmciICsgc3Ry
aW5nVmlldykgKyAobGl0ZXJhbCArIHN0cmluZykgKyAobGl0ZXJhbCArIGF0b21TdHJpbmcpKTsK
KworICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsICJDIHN0cmluZyIgKyBhdG9tU3Ry
aW5nICsgIkMgc3RyaW5nIiArIGF0b21TdHJpbmcpOworICAgIEVYUEVDVF9OX1dURl9TVFJJTkdf
Q09QSUVTKDIsICJDIHN0cmluZyIgKyAoYXRvbVN0cmluZyArICJDIHN0cmluZyIgKyBhdG9tU3Ry
aW5nKSk7CisgICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgKCJDIHN0cmluZyIgKyBh
dG9tU3RyaW5nKSArICgiQyBzdHJpbmciICsgYXRvbVN0cmluZykpOworICAgIEVYUEVDVF9OX1dU
Rl9TVFJJTkdfQ09QSUVTKDIsIGF0b21TdHJpbmcgKyAiQyBzdHJpbmciICsgYXRvbVN0cmluZyAr
ICJDIHN0cmluZyIpOworICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIGF0b21TdHJp
bmcgKyAoIkMgc3RyaW5nIiArIGF0b21TdHJpbmcgKyAiQyBzdHJpbmciKSk7CisgICAgRVhQRUNU
X05fV1RGX1NUUklOR19DT1BJRVMoMiwgKGF0b21TdHJpbmcgKyAiQyBzdHJpbmciKSArIChhdG9t
U3RyaW5nICsgIkMgc3RyaW5nIikpOworCisgICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMo
MiwgbGl0ZXJhbCArIGF0b21TdHJpbmcgKyBsaXRlcmFsICsgYXRvbVN0cmluZyk7CisgICAgRVhQ
RUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgbGl0ZXJhbCArIChhdG9tU3RyaW5nICsgbGl0ZXJh
bCArIGF0b21TdHJpbmcpKTsKKyAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCAobGl0
ZXJhbCArIGF0b21TdHJpbmcpICsgKGxpdGVyYWwgKyBhdG9tU3RyaW5nKSk7CisgICAgRVhQRUNU
X05fV1RGX1NUUklOR19DT1BJRVMoMiwgYXRvbVN0cmluZyArIGxpdGVyYWwgKyBhdG9tU3RyaW5n
ICsgbGl0ZXJhbCk7CisgICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgYXRvbVN0cmlu
ZyArIChsaXRlcmFsICsgYXRvbVN0cmluZyArIGxpdGVyYWwpKTsKKyAgICBFWFBFQ1RfTl9XVEZf
U1RSSU5HX0NPUElFUygyLCAoYXRvbVN0cmluZyArIGxpdGVyYWwpICsgKGF0b21TdHJpbmcgKyBs
aXRlcmFsKSk7CisKKyAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCAiQyBzdHJpbmci
ICsgc3RyaW5nICsgIkMgc3RyaW5nIiArIGF0b21TdHJpbmcgKyAiQyBzdHJpbmciICsgc3RyaW5n
Vmlldyk7CisgICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgIkMgc3RyaW5nIiArIChz
dHJpbmcgKyAiQyBzdHJpbmciICsgYXRvbVN0cmluZyArICJDIHN0cmluZyIgKyBzdHJpbmdWaWV3
KSk7CisgICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgKCJDIHN0cmluZyIgKyBzdHJp
bmcpICsgKCJDIHN0cmluZyIgKyBhdG9tU3RyaW5nKSArICgiQyBzdHJpbmciICsgc3RyaW5nVmll
dykpOworICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIHN0cmluZyArICJDIHN0cmlu
ZyIgKyBhdG9tU3RyaW5nICsgIkMgc3RyaW5nIiArIHN0cmluZ1ZpZXcgKyAiQyBzdHJpbmciKTsK
KyAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBzdHJpbmcgKyAoIkMgc3RyaW5nIiAr
IGF0b21TdHJpbmcgKyAiQyBzdHJpbmciICsgc3RyaW5nVmlldyArICJDIHN0cmluZyIpKTsKKyAg
ICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCAoc3RyaW5nICsgIkMgc3RyaW5nIikgKyAo
YXRvbVN0cmluZyArICJDIHN0cmluZyIpICsgKHN0cmluZ1ZpZXcgKyAiQyBzdHJpbmciKSk7CisK
KyAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBsaXRlcmFsICsgc3RyaW5nICsgbGl0
ZXJhbCArIGF0b21TdHJpbmcgKyBsaXRlcmFsICsgc3RyaW5nVmlldyk7CisgICAgRVhQRUNUX05f
V1RGX1NUUklOR19DT1BJRVMoMiwgbGl0ZXJhbCArIChzdHJpbmcgKyBsaXRlcmFsICsgYXRvbVN0
cmluZyArIGxpdGVyYWwgKyBzdHJpbmdWaWV3KSk7CisgICAgRVhQRUNUX05fV1RGX1NUUklOR19D
T1BJRVMoMiwgKGxpdGVyYWwgKyBzdHJpbmcpICsgKGxpdGVyYWwgKyBhdG9tU3RyaW5nKSArIChs
aXRlcmFsICsgc3RyaW5nVmlldykpOworICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIs
IHN0cmluZyArIGxpdGVyYWwgKyBhdG9tU3RyaW5nICsgbGl0ZXJhbCArIHN0cmluZ1ZpZXcgKyBs
aXRlcmFsKTsKKyAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBzdHJpbmcgKyAobGl0
ZXJhbCArIGF0b21TdHJpbmcgKyBsaXRlcmFsICsgc3RyaW5nVmlldyArIGxpdGVyYWwpKTsKKyAg
ICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCAoc3RyaW5nICsgbGl0ZXJhbCkgKyAoYXRv
bVN0cmluZyArIGxpdGVyYWwpICsgKHN0cmluZ1ZpZXcgKyBsaXRlcmFsKSk7CisKKyAgICBFWFBF
Q1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCAiQyBzdHJpbmciICsgc3RyaW5nICsgIkMgc3RyaW5n
IiArIHN0cmluZ1ZpZXcgKyAiQyBzdHJpbmciICsgYXRvbVN0cmluZyk7CisgICAgRVhQRUNUX05f
V1RGX1NUUklOR19DT1BJRVMoMiwgIkMgc3RyaW5nIiArIChzdHJpbmcgKyAiQyBzdHJpbmciICsg
c3RyaW5nVmlldyArICJDIHN0cmluZyIgKyBhdG9tU3RyaW5nKSk7CisgICAgRVhQRUNUX05fV1RG
X1NUUklOR19DT1BJRVMoMiwgKCJDIHN0cmluZyIgKyBzdHJpbmcpICsgKCJDIHN0cmluZyIgKyBz
dHJpbmdWaWV3KSArICgiQyBzdHJpbmciICsgYXRvbVN0cmluZykpOworICAgIEVYUEVDVF9OX1dU
Rl9TVFJJTkdfQ09QSUVTKDIsIHN0cmluZyArICJDIHN0cmluZyIgKyBzdHJpbmdWaWV3ICsgIkMg
c3RyaW5nIiArIGF0b21TdHJpbmcgKyAiQyBzdHJpbmciKTsKKyAgICBFWFBFQ1RfTl9XVEZfU1RS
SU5HX0NPUElFUygyLCBzdHJpbmcgKyAoIkMgc3RyaW5nIiArIHN0cmluZ1ZpZXcgKyAiQyBzdHJp
bmciICsgYXRvbVN0cmluZyArICJDIHN0cmluZyIpKTsKKyAgICBFWFBFQ1RfTl9XVEZfU1RSSU5H
X0NPUElFUygyLCAoc3RyaW5nICsgIkMgc3RyaW5nIikgKyAoc3RyaW5nVmlldyArICJDIHN0cmlu
ZyIpICsgKGF0b21TdHJpbmcgKyAiQyBzdHJpbmciKSk7CisKKyAgICBFWFBFQ1RfTl9XVEZfU1RS
SU5HX0NPUElFUygyLCBsaXRlcmFsICsgc3RyaW5nICsgbGl0ZXJhbCArIHN0cmluZ1ZpZXcgKyBs
aXRlcmFsICsgYXRvbVN0cmluZyk7CisgICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwg
bGl0ZXJhbCArIChzdHJpbmcgKyBsaXRlcmFsICsgc3RyaW5nVmlldyArIGxpdGVyYWwgKyBhdG9t
U3RyaW5nKSk7CisgICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgKGxpdGVyYWwgKyBz
dHJpbmcpICsgKGxpdGVyYWwgKyBzdHJpbmdWaWV3KSArIChsaXRlcmFsICsgYXRvbVN0cmluZykp
OworICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIHN0cmluZyArIGxpdGVyYWwgKyBz
dHJpbmdWaWV3ICsgbGl0ZXJhbCArIGF0b21TdHJpbmcgKyBsaXRlcmFsKTsKKyAgICBFWFBFQ1Rf
Tl9XVEZfU1RSSU5HX0NPUElFUygyLCBzdHJpbmcgKyAobGl0ZXJhbCArIHN0cmluZ1ZpZXcgKyBs
aXRlcmFsICsgYXRvbVN0cmluZyArIGxpdGVyYWwpKTsKKyAgICBFWFBFQ1RfTl9XVEZfU1RSSU5H
X0NPUElFUygyLCAoc3RyaW5nICsgbGl0ZXJhbCkgKyAoc3RyaW5nVmlldyArIGxpdGVyYWwpICsg
KGF0b21TdHJpbmcgKyBsaXRlcmFsKSk7CisKKyAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElF
UygyLCAiQyBzdHJpbmciICsgYXRvbVN0cmluZyArICJDIHN0cmluZyIgKyBzdHJpbmcgKyAiQyBz
dHJpbmciICsgc3RyaW5nVmlldyk7CisgICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwg
IkMgc3RyaW5nIiArIChhdG9tU3RyaW5nICsgIkMgc3RyaW5nIiArIHN0cmluZyArICJDIHN0cmlu
ZyIgKyBzdHJpbmdWaWV3KSk7CisgICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgKCJD
IHN0cmluZyIgKyBhdG9tU3RyaW5nKSArICgiQyBzdHJpbmciICsgc3RyaW5nKSArICgiQyBzdHJp
bmciICsgc3RyaW5nVmlldykpOworICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIGF0
b21TdHJpbmcgKyAiQyBzdHJpbmciICsgc3RyaW5nICsgIkMgc3RyaW5nIiArIHN0cmluZ1ZpZXcg
KyAiQyBzdHJpbmciKTsKKyAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBhdG9tU3Ry
aW5nICsgKCJDIHN0cmluZyIgKyBzdHJpbmcgKyAiQyBzdHJpbmciICsgc3RyaW5nVmlldyArICJD
IHN0cmluZyIpKTsKKyAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCAoYXRvbVN0cmlu
ZyArICJDIHN0cmluZyIpICsgKHN0cmluZyArICJDIHN0cmluZyIpICsgKHN0cmluZ1ZpZXcgKyAi
QyBzdHJpbmciKSk7CisKKyAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBsaXRlcmFs
ICsgYXRvbVN0cmluZyArIGxpdGVyYWwgKyBzdHJpbmcgKyBsaXRlcmFsICsgc3RyaW5nVmlldyk7
CisgICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgbGl0ZXJhbCArIChhdG9tU3RyaW5n
ICsgbGl0ZXJhbCArIHN0cmluZyArIGxpdGVyYWwgKyBzdHJpbmdWaWV3KSk7CisgICAgRVhQRUNU
X05fV1RGX1NUUklOR19DT1BJRVMoMiwgKGxpdGVyYWwgKyBhdG9tU3RyaW5nKSArIChsaXRlcmFs
ICsgc3RyaW5nKSArIChsaXRlcmFsICsgc3RyaW5nVmlldykpOworICAgIEVYUEVDVF9OX1dURl9T
VFJJTkdfQ09QSUVTKDIsIGF0b21TdHJpbmcgKyBsaXRlcmFsICsgc3RyaW5nICsgbGl0ZXJhbCAr
IHN0cmluZ1ZpZXcgKyBsaXRlcmFsKTsKKyAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygy
LCBhdG9tU3RyaW5nICsgKGxpdGVyYWwgKyBzdHJpbmcgKyBsaXRlcmFsICsgc3RyaW5nVmlldyAr
IGxpdGVyYWwpKTsKKyAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCAoYXRvbVN0cmlu
ZyArIGxpdGVyYWwpICsgKHN0cmluZyArIGxpdGVyYWwpICsgKHN0cmluZ1ZpZXcgKyBsaXRlcmFs
KSk7CisKKyAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCAiQyBzdHJpbmciICsgYXRv
bVN0cmluZyArICJDIHN0cmluZyIgKyBzdHJpbmdWaWV3ICsgIkMgc3RyaW5nIiArIHN0cmluZyk7
CisgICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgIkMgc3RyaW5nIiArIChhdG9tU3Ry
aW5nICsgIkMgc3RyaW5nIiArIHN0cmluZ1ZpZXcgKyAiQyBzdHJpbmciICsgc3RyaW5nKSk7Cisg
ICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgKCJDIHN0cmluZyIgKyBhdG9tU3RyaW5n
KSArICgiQyBzdHJpbmciICsgc3RyaW5nVmlldykgKyAoIkMgc3RyaW5nIiArIHN0cmluZykpOwor
ICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIGF0b21TdHJpbmcgKyAiQyBzdHJpbmci
ICsgc3RyaW5nVmlldyArICJDIHN0cmluZyIgKyBzdHJpbmcgKyAiQyBzdHJpbmciKTsKKyAgICBF
WFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBhdG9tU3RyaW5nICsgKCJDIHN0cmluZyIgKyBz
dHJpbmdWaWV3ICsgIkMgc3RyaW5nIiArIHN0cmluZyArICJDIHN0cmluZyIpKTsKKyAgICBFWFBF
Q1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCAoYXRvbVN0cmluZyArICJDIHN0cmluZyIpICsgKHN0
cmluZ1ZpZXcgKyAiQyBzdHJpbmciKSArIChzdHJpbmcgKyAiQyBzdHJpbmciKSk7CisKKyAgICBF
WFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBsaXRlcmFsICsgYXRvbVN0cmluZyArIGxpdGVy
YWwgKyBzdHJpbmdWaWV3ICsgbGl0ZXJhbCArIHN0cmluZyk7CisgICAgRVhQRUNUX05fV1RGX1NU
UklOR19DT1BJRVMoMiwgbGl0ZXJhbCArIChhdG9tU3RyaW5nICsgbGl0ZXJhbCArIHN0cmluZ1Zp
ZXcgKyBsaXRlcmFsICsgc3RyaW5nKSk7CisgICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMo
MiwgKGxpdGVyYWwgKyBhdG9tU3RyaW5nKSArIChsaXRlcmFsICsgc3RyaW5nVmlldykgKyAobGl0
ZXJhbCArIHN0cmluZykpOworICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIGF0b21T
dHJpbmcgKyBsaXRlcmFsICsgc3RyaW5nVmlldyArIGxpdGVyYWwgKyBzdHJpbmcgKyBsaXRlcmFs
KTsKKyAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBhdG9tU3RyaW5nICsgKGxpdGVy
YWwgKyBzdHJpbmdWaWV3ICsgbGl0ZXJhbCArIHN0cmluZyArIGxpdGVyYWwpKTsKKyAgICBFWFBF
Q1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCAoYXRvbVN0cmluZyArIGxpdGVyYWwpICsgKHN0cmlu
Z1ZpZXcgKyBsaXRlcmFsKSArIChzdHJpbmcgKyBsaXRlcmFsKSk7CisKKyAgICBFWFBFQ1RfTl9X
VEZfU1RSSU5HX0NPUElFUygyLCAiQyBzdHJpbmciICsgc3RyaW5nVmlldyArICJDIHN0cmluZyIg
KyBhdG9tU3RyaW5nICsgIkMgc3RyaW5nIiArIHN0cmluZyk7CisgICAgRVhQRUNUX05fV1RGX1NU
UklOR19DT1BJRVMoMiwgIkMgc3RyaW5nIiArIChzdHJpbmdWaWV3ICsgIkMgc3RyaW5nIiArIGF0
b21TdHJpbmcgKyAiQyBzdHJpbmciICsgc3RyaW5nKSk7CisgICAgRVhQRUNUX05fV1RGX1NUUklO
R19DT1BJRVMoMiwgKCJDIHN0cmluZyIgKyBzdHJpbmdWaWV3KSArICgiQyBzdHJpbmciICsgYXRv
bVN0cmluZykgKyAoIkMgc3RyaW5nIiArIHN0cmluZykpOworICAgIEVYUEVDVF9OX1dURl9TVFJJ
TkdfQ09QSUVTKDIsIHN0cmluZ1ZpZXcgKyAiQyBzdHJpbmciICsgYXRvbVN0cmluZyArICJDIHN0
cmluZyIgKyBzdHJpbmcgKyAiQyBzdHJpbmciKTsKKyAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NP
UElFUygyLCBzdHJpbmdWaWV3ICsgKCJDIHN0cmluZyIgKyBhdG9tU3RyaW5nICsgIkMgc3RyaW5n
IiArIHN0cmluZyArICJDIHN0cmluZyIpKTsKKyAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElF
UygyLCAoc3RyaW5nVmlldyArICJDIHN0cmluZyIpICsgKGF0b21TdHJpbmcgKyAiQyBzdHJpbmci
KSArIChzdHJpbmcgKyAiQyBzdHJpbmciKSk7CisKKyAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NP
UElFUygyLCBsaXRlcmFsICsgc3RyaW5nVmlldyArIGxpdGVyYWwgKyBhdG9tU3RyaW5nICsgbGl0
ZXJhbCArIHN0cmluZyk7CisgICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgbGl0ZXJh
bCArIChzdHJpbmdWaWV3ICsgbGl0ZXJhbCArIGF0b21TdHJpbmcgKyBsaXRlcmFsICsgc3RyaW5n
KSk7CisgICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgKGxpdGVyYWwgKyBzdHJpbmdW
aWV3KSArIChsaXRlcmFsICsgYXRvbVN0cmluZykgKyAobGl0ZXJhbCArIHN0cmluZykpOworICAg
IEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIHN0cmluZ1ZpZXcgKyBsaXRlcmFsICsgYXRv
bVN0cmluZyArIGxpdGVyYWwgKyBzdHJpbmcgKyBsaXRlcmFsKTsKKyAgICBFWFBFQ1RfTl9XVEZf
U1RSSU5HX0NPUElFUygyLCBzdHJpbmdWaWV3ICsgKGxpdGVyYWwgKyBhdG9tU3RyaW5nICsgbGl0
ZXJhbCArIHN0cmluZyArIGxpdGVyYWwpKTsKKyAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElF
UygyLCAoc3RyaW5nVmlldyArIGxpdGVyYWwpICsgKGF0b21TdHJpbmcgKyBsaXRlcmFsKSArIChz
dHJpbmcgKyBsaXRlcmFsKSk7CisKKyAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCAi
QyBzdHJpbmciICsgc3RyaW5nVmlldyArICJDIHN0cmluZyIgKyBzdHJpbmcgKyAiQyBzdHJpbmci
ICsgYXRvbVN0cmluZyk7CisgICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgIkMgc3Ry
aW5nIiArIChzdHJpbmdWaWV3ICsgIkMgc3RyaW5nIiArIHN0cmluZyArICJDIHN0cmluZyIgKyBh
dG9tU3RyaW5nKSk7CisgICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgKCJDIHN0cmlu
ZyIgKyBzdHJpbmdWaWV3KSArICgiQyBzdHJpbmciICsgc3RyaW5nKSArICgiQyBzdHJpbmciICsg
YXRvbVN0cmluZykpOworICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIHN0cmluZ1Zp
ZXcgKyAiQyBzdHJpbmciICsgc3RyaW5nICsgIkMgc3RyaW5nIiArIGF0b21TdHJpbmcgKyAiQyBz
dHJpbmciKTsKKyAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBzdHJpbmdWaWV3ICsg
KCJDIHN0cmluZyIgKyBzdHJpbmcgKyAiQyBzdHJpbmciICsgYXRvbVN0cmluZyArICJDIHN0cmlu
ZyIpKTsKKyAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCAoc3RyaW5nVmlldyArICJD
IHN0cmluZyIpICsgKHN0cmluZyArICJDIHN0cmluZyIpICsgKGF0b21TdHJpbmcgKyAiQyBzdHJp
bmciKSk7CisKKyAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBsaXRlcmFsICsgc3Ry
aW5nVmlldyArIGxpdGVyYWwgKyBzdHJpbmcgKyBsaXRlcmFsICsgYXRvbVN0cmluZyk7CisgICAg
RVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgbGl0ZXJhbCArIChzdHJpbmdWaWV3ICsgbGl0
ZXJhbCArIHN0cmluZyArIGxpdGVyYWwgKyBhdG9tU3RyaW5nKSk7CisgICAgRVhQRUNUX05fV1RG
X1NUUklOR19DT1BJRVMoMiwgKGxpdGVyYWwgKyBzdHJpbmdWaWV3KSArIChsaXRlcmFsICsgc3Ry
aW5nKSArIChsaXRlcmFsICsgYXRvbVN0cmluZykpOworICAgIEVYUEVDVF9OX1dURl9TVFJJTkdf
Q09QSUVTKDIsIHN0cmluZ1ZpZXcgKyBsaXRlcmFsICsgc3RyaW5nICsgbGl0ZXJhbCArIGF0b21T
dHJpbmcgKyBsaXRlcmFsKTsKKyAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBzdHJp
bmdWaWV3ICsgKGxpdGVyYWwgKyBzdHJpbmcgKyBsaXRlcmFsICsgYXRvbVN0cmluZyArIGxpdGVy
YWwpKTsKKyAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCAoc3RyaW5nVmlldyArIGxp
dGVyYWwpICsgKHN0cmluZyArIGxpdGVyYWwpICsgKGF0b21TdHJpbmcgKyBsaXRlcmFsKSk7CiB9
CiAKIFRFU1QoV1RGLCBDb25jYXRlbmF0ZUNoYXJhY3RlckFycmF5QW5kRW1wdHlTdHJpbmcpCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29udGVudEV4dGVu
c2lvbnMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRl
bnNpb25zLmNwcAppbmRleCA2ZjkxNTcxM2MxNDFjNDNiMWMxMWIyNjliOThjYTY3Nzk4ZDAyYTk3
Li44ZTEzN2E4MDQ3N2ZmMDBiZTliMzU5MjcxOGEyM2YyNDE2OTMzMTdlIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29udGVudEV4dGVuc2lvbnMuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db250ZW50RXh0ZW5zaW9ucy5j
cHAKQEAgLTIxNyw3ICsyMTcsNyBAQCBzdGF0aWMgUmVzb3VyY2VMb2FkSW5mbyBzdWJSZXNvdXJj
ZVJlcXVlc3QoY29uc3QgY2hhciogdXJsLCBjb25zdCBjaGFyKiBtYWluRG9jdQogCiBDb250ZW50
RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvbnNCYWNrZW5kIG1ha2VCYWNrZW5kKGNvbnN0IGNo
YXIqIGpzb24pCiB7Ci0gICAgQXRvbWljU3RyaW5nOjppbml0KCk7CisgICAgQXRvbVN0cmluZzo6
aW5pdCgpOwogICAgIGF1dG8gZXh0ZW5zaW9uID0gSW5NZW1vcnlDb21waWxlZENvbnRlbnRFeHRl
bnNpb246OmNyZWF0ZShqc29uKTsKICAgICBDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVu
c2lvbnNCYWNrZW5kIGJhY2tlbmQ7CiAgICAgYmFja2VuZC5hZGRDb250ZW50RXh0ZW5zaW9uKCJ0
ZXN0RmlsdGVyIiwgV1RGTW92ZShleHRlbnNpb24pKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Gb250Q2FjaGUuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL0ZvbnRDYWNoZS5jcHAKaW5kZXggMTc2YjRhOTM4ZDE1NGIxOWI3MzUy
ODFiNTI2NGJjZjIwNzE5ZGIzNi4uN2JhYjFjNGU0NjMzYzc4N2U1YmRiYWJlNDZmMzJiMzQ5ZWEy
NmVhMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZvbnRD
YWNoZS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZvbnRDYWNo
ZS5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogCiBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PEZvbnRQbGF0Zm9ybURhdGE+IGNyZWF0ZVBsYXRmb3JtRm9udChjb25zdCBjaGFyKiBmYW1pbHlO
YW1lLCBmbG9hdCB3ZWlnaHQsIGZsb2F0IGl0YWxpYywgZmxvYXQgc3RyZXRjaCwgZmxvYXQgc2l6
ZSkKIHsKLSAgICBBdG9taWNTdHJpbmcgZmFtaWx5TmFtZVN0cmluZyhmYW1pbHlOYW1lKTsKKyAg
ICBBdG9tU3RyaW5nIGZhbWlseU5hbWVTdHJpbmcoZmFtaWx5TmFtZSk7CiAgICAgRm9udENhc2Nh
ZGVEZXNjcmlwdGlvbiBkZXNjcmlwdGlvbjsKICAgICBkZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHko
ZmFtaWx5TmFtZVN0cmluZyk7CiAgICAgZGVzY3JpcHRpb24uc2V0V2VpZ2h0KEZvbnRTZWxlY3Rp
b25WYWx1ZSh3ZWlnaHQpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9Mb2dnaW5nLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9M
b2dnaW5nLmNwcAppbmRleCAyYzBhZjhiZGNhMDc3OGVjNDMyY2Y0NzYwMGNiYjJhMzgwY2M1YmQw
Li42NTVmNmNiMWVkYjFlNTY1MzA5YjNkNTY4ZjJiM2MxYWI5MzZhOTc2IDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvTG9nZ2luZy5jcHAKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0xvZ2dpbmcuY3BwCkBAIC0zMTksMTAgKzMxOSwx
MCBAQCBURVNUX0YoTG9nZ2luZ1Rlc3QsIExvZ2dlcikKICAgICBFWFBFQ1RfRVEoMHUsIG91dHB1
dCgpLmxlbmd0aCgpKTsKIAogICAgIGxvZ2dlci0+c2V0RW5hYmxlZCh0aGlzLCB0cnVlKTsKLSAg
ICBBdG9taWNTdHJpbmcgc3RyaW5nMSgiQXRvbWljU3RyaW5nIiwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nIHN0cmluZzIoImNvbnN0
IEF0b21pY1N0cmluZyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAg
IEF0b21TdHJpbmcgc3RyaW5nMSgiQXRvbVN0cmluZyIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKTsKKyAgICBjb25zdCBBdG9tU3RyaW5nIHN0cmluZzIoImNvbnN0IEF0b21TdHJp
bmciLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgbG9nZ2VyLT5sb2dB
bHdheXMoVGVzdENoYW5uZWwxLCBzdHJpbmcxLCAiIGFuZCAiLCBzdHJpbmcyKTsKLSAgICBFWFBF
Q1RfVFJVRShvdXRwdXQoKS5jb250YWlucygiQXRvbWljU3RyaW5nIGFuZCBjb25zdCBBdG9taWNT
dHJpbmciLCBmYWxzZSkpOworICAgIEVYUEVDVF9UUlVFKG91dHB1dCgpLmNvbnRhaW5zKCJBdG9t
U3RyaW5nIGFuZCBjb25zdCBBdG9tU3RyaW5nIiwgZmFsc2UpKTsKIAogICAgIFN0cmluZyBzdHJp
bmczKCJTdHJpbmciKTsKICAgICBjb25zdCBTdHJpbmcgc3RyaW5nNCgiY29uc3QgU3RyaW5nIik7
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2FtcGxlTWFw
LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TYW1wbGVNYXAuY3BwCmlu
ZGV4IGM3OTdmNTBmMTgxMDEwOTFlZjI0MTViYmRiNDA3NzkxN2VmZjgxMjMuLmRiZWIzMjMxZTEz
YmQ1MDI2N2MzNGE4YWI1NmY0YjljNTYwMjUxZjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9TYW1wbGVNYXAuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9TYW1wbGVNYXAuY3BwCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoK
ICAgICBNZWRpYVRpbWUgcHJlc2VudGF0aW9uVGltZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
cHJlc2VudGF0aW9uVGltZTsgfQogICAgIE1lZGlhVGltZSBkZWNvZGVUaW1lKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9kZWNvZGVUaW1lOyB9CiAgICAgTWVkaWFUaW1lIGR1cmF0aW9uKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9kdXJhdGlvbjsgfQotICAgIEF0b21pY1N0cmluZyB0cmFja0lE
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV90cmFja0lEOyB9CisgICAgQXRvbVN0cmluZyB0cmFj
a0lEKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV90cmFja0lEOyB9CiAgICAgdm9pZCBzZXRUcmFj
a0lEKGNvbnN0IFN0cmluZyYgdHJhY2tJRCkgZmluYWwgeyBtX3RyYWNrSUQgPSB0cmFja0lEOyB9
CiAgICAgc2l6ZV90IHNpemVJbkJ5dGVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zaXplSW5C
eXRlczsgfQogICAgIEZsb2F0U2l6ZSBwcmVzZW50YXRpb25TaXplKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9wcmVzZW50YXRpb25TaXplOyB9CkBAIC04Nyw3ICs4Nyw3IEBAIHByaXZhdGU6CiAg
ICAgTWVkaWFUaW1lIG1fZGVjb2RlVGltZTsKICAgICBNZWRpYVRpbWUgbV9kdXJhdGlvbjsKICAg
ICBGbG9hdFNpemUgbV9wcmVzZW50YXRpb25TaXplOwotICAgIEF0b21pY1N0cmluZyBtX3RyYWNr
SUQ7CisgICAgQXRvbVN0cmluZyBtX3RyYWNrSUQ7CiAgICAgc2l6ZV90IG1fc2l6ZUluQnl0ZXMg
eyAwIH07CiAgICAgU2FtcGxlRmxhZ3MgbV9mbGFncyB7IE5vbmUgfTsKIH07CmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzQ29udHJvbGxlci5jcHAgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzQ29udHJvbGxlci5jcHAKaW5kZXggZjIyN2JlNGI2ZDA4MTg5MWQ0YzI1MjFj
MzhjY2ZmNDVlOTdjODFjOS4uYTU4ZTUwZTQxMmI3NzM0MjI0YmNmNTc5YTJlMmRhZTU1YjRkYzQ1
NCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0c0NvbnRyb2xsZXIuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHNDb250cm9sbGVyLmNwcApAQCAtMjksNyArMjks
NyBAQAogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1Byb2Nlc3NQ
cml2aWxlZ2UuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3Rl
eHQvQXRvbWljU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZy5oPgogCiBu
YW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKQEAgLTcyLDcgKzcyLDcgQEAgVGVzdHNDb250cm9s
bGVyOjpUZXN0c0NvbnRyb2xsZXIoKQogICAgIFdURjo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwog
ICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKICAgICBXVEY6OnNldFByb2Nlc3NQcml2
aWxlZ2VzKGFsbFByaXZpbGVnZXMoKSk7Ci0gICAgQXRvbWljU3RyaW5nOjppbml0KCk7CisgICAg
QXRvbVN0cmluZzo6aW5pdCgpOwogfQogCiBib29sIFRlc3RzQ29udHJvbGxlcjo6cnVuKGludCBh
cmdjLCBjaGFyKiogYXJndikKZGlmZiAtLWdpdCBhL1Rvb2xzL2dkYi93ZWJraXQucHkgYi9Ub29s
cy9nZGIvd2Via2l0LnB5CmluZGV4IDA2ZGU0MjgxZTNmMzNmOWJjNjllNWJlM2UwYTA1YTA5MWEz
YTVjODMuLjNhZDVkNGM4NjFmMjQwODgyNzljY2IyYjYwOGM2Yjk3YTNiMWQ0ZWMgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL2dkYi93ZWJraXQucHkKKysrIGIvVG9vbHMvZ2RiL3dlYmtpdC5weQpAQCAtMTA2
LDggKzEwNiw4IEBAIGNsYXNzIExDaGFyU3RyaW5nUHJpbnRlcihTdHJpbmdQcmludGVyKToKICAg
ICAgICAgcmV0dXJuIGxzdHJpbmdfdG9fc3RyaW5nKHNlbGYudmFsKQogCiAKLWNsYXNzIFdURkF0
b21pY1N0cmluZ1ByaW50ZXIoU3RyaW5nUHJpbnRlcik6Ci0gICAgIlByaW50IGEgV1RGOjpBdG9t
aWNTdHJpbmciCitjbGFzcyBXVEZBdG9tU3RyaW5nUHJpbnRlcihTdHJpbmdQcmludGVyKToKKyAg
ICAiUHJpbnQgYSBXVEY6OkF0b21TdHJpbmciCiAgICAgZGVmIHRvX3N0cmluZyhzZWxmKToKICAg
ICAgICAgcmV0dXJuIHNlbGYudmFsWydtX3N0cmluZyddCiAKQEAgLTI5NCw3ICsyOTQsNyBAQCBj
bGFzcyBXVEZWZWN0b3JQcmludGVyOgogZGVmIGFkZF9wcmV0dHlfcHJpbnRlcnMoKToKICAgICBw
cmV0dHlfcHJpbnRlcnMgPSAoCiAgICAgICAgIChyZS5jb21waWxlKCJeV1RGOjpWZWN0b3I8Lio+
JCIpLCBXVEZWZWN0b3JQcmludGVyKSwKLSAgICAgICAgKHJlLmNvbXBpbGUoIl5XVEY6OkF0b21p
Y1N0cmluZyQiKSwgV1RGQXRvbWljU3RyaW5nUHJpbnRlciksCisgICAgICAgIChyZS5jb21waWxl
KCJeV1RGOjpBdG9tU3RyaW5nJCIpLCBXVEZBdG9tU3RyaW5nUHJpbnRlciksCiAgICAgICAgIChy
ZS5jb21waWxlKCJeV1RGOjpDU3RyaW5nJCIpLCBXVEZDU3RyaW5nUHJpbnRlciksCiAgICAgICAg
IChyZS5jb21waWxlKCJeV1RGOjpTdHJpbmckIiksIFdURlN0cmluZ1ByaW50ZXIpLAogICAgICAg
ICAocmUuY29tcGlsZSgiXldURjo6U3RyaW5nSW1wbCQiKSwgV1RGU3RyaW5nSW1wbFByaW50ZXIp
LApkaWZmIC0tZ2l0IGEvVG9vbHMvbGxkYi9sbGRiX3dlYmtpdC5weSBiL1Rvb2xzL2xsZGIvbGxk
Yl93ZWJraXQucHkKaW5kZXggOGE2YzllNDdlMjEzMGQ1N2I0MmRjYjU3ODRmYmNjMmFhOTg5ZTRi
Yi4uZGJlNGYwMjllMjUxNTQ1YTJkY2E5ZDRjYjcxZWM5MGM4YmUxZjY3NCAxMDA2NDQKLS0tIGEv
VG9vbHMvbGxkYi9sbGRiX3dlYmtpdC5weQorKysgYi9Ub29scy9sbGRiL2xsZGJfd2Via2l0LnB5
CkBAIC01OSw3ICs1OSw3IEBAIGRlZiBfX2xsZGJfaW5pdF9tb2R1bGUoZGVidWdnZXIsIGRpY3Qp
OgogICAgIGRlYnVnZ2VyLkhhbmRsZUNvbW1hbmQoJ3R5cGUgc3VtbWFyeSBhZGQgLS1leHBhbmQg
LUYgbGxkYl93ZWJraXQuV1RGU3RyaW5nX1N1bW1hcnlQcm92aWRlciBXVEY6OlN0cmluZycpCiAg
ICAgZGVidWdnZXIuSGFuZGxlQ29tbWFuZCgndHlwZSBzdW1tYXJ5IGFkZCAtLWV4cGFuZCAtRiBs
bGRiX3dlYmtpdC5XVEZTdHJpbmdJbXBsX1N1bW1hcnlQcm92aWRlciBXVEY6OlN0cmluZ0ltcGwn
KQogICAgIGRlYnVnZ2VyLkhhbmRsZUNvbW1hbmQoJ3R5cGUgc3VtbWFyeSBhZGQgLS1leHBhbmQg
LUYgbGxkYl93ZWJraXQuV1RGU3RyaW5nVmlld19TdW1tYXJ5UHJvdmlkZXIgV1RGOjpTdHJpbmdW
aWV3JykKLSAgICBkZWJ1Z2dlci5IYW5kbGVDb21tYW5kKCd0eXBlIHN1bW1hcnkgYWRkIC0tZXhw
YW5kIC1GIGxsZGJfd2Via2l0LldURkF0b21pY1N0cmluZ19TdW1tYXJ5UHJvdmlkZXIgV1RGOjpB
dG9taWNTdHJpbmcnKQorICAgIGRlYnVnZ2VyLkhhbmRsZUNvbW1hbmQoJ3R5cGUgc3VtbWFyeSBh
ZGQgLS1leHBhbmQgLUYgbGxkYl93ZWJraXQuV1RGQXRvbVN0cmluZ19TdW1tYXJ5UHJvdmlkZXIg
V1RGOjpBdG9tU3RyaW5nJykKICAgICBkZWJ1Z2dlci5IYW5kbGVDb21tYW5kKCd0eXBlIHN1bW1h
cnkgYWRkIC0tZXhwYW5kIC1GIGxsZGJfd2Via2l0LldURlZlY3Rvcl9TdW1tYXJ5UHJvdmlkZXIg
LXggIl5XVEY6OlZlY3RvcjwuKz4kIicpCiAgICAgZGVidWdnZXIuSGFuZGxlQ29tbWFuZCgndHlw
ZSBzdW1tYXJ5IGFkZCAtLWV4cGFuZCAtRiBsbGRiX3dlYmtpdC5XVEZIYXNoVGFibGVfU3VtbWFy
eVByb3ZpZGVyIC14ICJeV1RGOjpIYXNoVGFibGU8Lis+JCInKQogICAgIGRlYnVnZ2VyLkhhbmRs
ZUNvbW1hbmQoJ3R5cGUgc3VtbWFyeSBhZGQgLS1leHBhbmQgLUYgbGxkYl93ZWJraXQuV1RGSGFz
aE1hcF9TdW1tYXJ5UHJvdmlkZXIgLXggIl5XVEY6Okhhc2hNYXA8Lis+JCInKQpAQCAtMTI0LDcg
KzEyNCw3IEBAIGRlZiBXVEZTdHJpbmdWaWV3X1N1bW1hcnlQcm92aWRlcih2YWxvYmosIGRpY3Qp
OgogICAgIHJldHVybiAieyBsZW5ndGggPSAlZCwgY29udGVudHMgPSAnJXMnIH0iICUgKHByb3Zp
ZGVyLmdldF9sZW5ndGgoKSwgcHJvdmlkZXIudG9fc3RyaW5nKCkpCiAKIAotZGVmIFdURkF0b21p
Y1N0cmluZ19TdW1tYXJ5UHJvdmlkZXIodmFsb2JqLCBkaWN0KToKK2RlZiBXVEZBdG9tU3RyaW5n
X1N1bW1hcnlQcm92aWRlcih2YWxvYmosIGRpY3QpOgogICAgIHJldHVybiBXVEZTdHJpbmdfU3Vt
bWFyeVByb3ZpZGVyKHZhbG9iai5HZXRDaGlsZE1lbWJlcldpdGhOYW1lKCdtX3N0cmluZycpLCBk
aWN0KQogCiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>