<?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>239289</bug_id>
          
          <creation_ts>2022-04-13 10:34:40 -0700</creation_ts>
          <short_desc>Drop inefficient String::append() overloads</short_desc>
          <delta_ts>2022-04-14 10:57:16 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>239306</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>achristensen</cc>
    
    <cc>alecflett</cc>
    
    <cc>andresg_22</cc>
    
    <cc>apinheiro</cc>
    
    <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>cfleizach</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>galpeter</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>jamesr</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>joepeck</cc>
    
    <cc>jsbell</cc>
    
    <cc>kangil.han</cc>
    
    <cc>keith_miller</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>luiz</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mifenton</cc>
    
    <cc>msaboff</cc>
    
    <cc>pangle</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>saam</cc>
    
    <cc>samuel_white</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>toyoshim</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>yutak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1861160</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-13 10:34:40 -0700</bug_when>
    <thetext>Drop inefficient String::append() overloads to push developers to use StringBuilder / makeString() instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861162</commentid>
    <comment_count>1</comment_count>
      <attachid>457545</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-13 10:40:09 -0700</bug_when>
    <thetext>Created attachment 457545
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861173</commentid>
    <comment_count>2</comment_count>
      <attachid>457547</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-13 11:04:41 -0700</bug_when>
    <thetext>Created attachment 457547
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861201</commentid>
    <comment_count>3</comment_count>
      <attachid>457553</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-13 12:03:36 -0700</bug_when>
    <thetext>Created attachment 457553
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861268</commentid>
    <comment_count>4</comment_count>
      <attachid>457553</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2022-04-13 14:53:38 -0700</bug_when>
    <thetext>Comment on attachment 457553
Patch

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

&gt; Source/WebCore/Modules/indexeddb/IDBKeyData.cpp:375
&gt; +        result = makeString(StringView(result).left(147), &quot;...&quot;_s);

This hurts me but its just a logging string so I will not be overly upset.

&gt; Source/WebCore/Modules/indexeddb/shared/IDBIndexInfo.cpp:65
&gt; +    return makeString(indentString.toString(), &quot;Index: &quot;, m_name, &quot; (&quot;, m_identifier, &quot;) keyPath: &quot;, WebCore::loggingString(m_keyPath), &apos;\n&apos;);

This should probably be:

indentString.append(&quot;Index: &quot;, m_name, &quot; (&quot;, m_identifier, &quot;) keyPath: &quot;, WebCore::loggingString(m_keyPath), &apos;\n&apos;);
return indentString.toString();

or just

makeString(WTF::Indentation&lt;1&gt; { indent }, &quot;Index: &quot;, m_name, &quot; (&quot;, m_identifier, &quot;) keyPath: &quot;, WebCore::loggingString(m_keyPath), &apos;\n&apos;);

&gt; Source/WebCore/inspector/agents/InspectorDOMAgent.cpp:1776
&gt; +            nodeValue = makeString(StringView(nodeValue).left(maxTextSize), ellipsisUChar);

We should probably be using ellipsisUChar everywhere we use &quot;...&quot; if we want to be good macOS citizens (don&apos;t ned to make that change now though).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861271</commentid>
    <comment_count>5</comment_count>
      <attachid>457553</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-04-13 14:59:40 -0700</bug_when>
    <thetext>Comment on attachment 457553
Patch

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

Seems like the substring(0, ...) changes to left() are not closely related to removing String::append overloads. Just a separate change included in the same patch but not mention in the title.

And many of those are cases where left often allocates a new String. Some of them could be using StringView instead.

&gt; Source/JavaScriptCore/runtime/IntlObject.cpp:961
&gt; +        foundLocale = makeString(foundLocaleView.left(matcherResult.extensionIndex), supportedExtension.toString(), foundLocaleView.substring(matcherResult.extensionIndex));

Not clear how cheap StringBuilder::toString is. If it’s at all expensive, we could make makeString support StringBuilder directly without doing any memory allocation, although obviously that work need not be done in this patch.

&gt; Source/WTF/wtf/text/StringBuilder.h:64
&gt; +    void append(ASCIILiteral);

We need to move the model to where the set of things supported by StringBuilder are the same as the set supported by makeString without so much repeated code.

&gt; Source/WebCore/Modules/indexeddb/IDBCursor.cpp:329
&gt; +    LOG(IndexedDB, &quot;IDBCursor::setGetResult - current key %s&quot;, getResult.keyData().loggingString().left(100).utf8().data());

Here’s one example I noticed before realizing the patter than the substring/left changes were following: Can this be done with StringView instead? Why allocate the truncated string just to use it to call utf8()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861306</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-13 16:08:11 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #5)
&gt; Comment on attachment 457553 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=457553&amp;action=review
&gt; 
&gt; Seems like the substring(0, ...) changes to left() are not closely related
&gt; to removing String::append overloads. Just a separate change included in the
&gt; same patch but not mention in the title.

Yes, I got a little too excited I think :) Splitting this part out into Bug 239306 and adopting more StringView in the process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861307</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-04-13 16:09:17 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #6)
&gt; Yes, I got a little too excited I think :)

Oh, I understand, believe me!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861492</commentid>
    <comment_count>8</comment_count>
      <attachid>457625</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-14 07:39:08 -0700</bug_when>
    <thetext>Created attachment 457625
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861495</commentid>
    <comment_count>9</comment_count>
      <attachid>457626</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-14 07:51:20 -0700</bug_when>
    <thetext>Created attachment 457626
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861572</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-04-14 10:56:29 -0700</bug_when>
    <thetext>Committed r292879 (249649@main): &lt;https://commits.webkit.org/249649@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 457626.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861573</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-04-14 10:57:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/91764586&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457545</attachid>
            <date>2022-04-13 10:40:09 -0700</date>
            <delta_ts>2022-04-13 11:49:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239289-20220413104008.patch</filename>
            <type>text/plain</type>
            <size>135076</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyODEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
Yjk0M2U2M2UxYzM4MjRjMjdlNmU2ZjE2Mjk2MjI5ZDNmNzY1MTZhLi44NjRhZTQyMGIwOTFjY2M2
ODQ4MzI3Njk4OWEwNDMxZDJkZWViNDYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOSBAQAorMjAyMi0wNC0xMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIERyb3AgaW5lZmZpY2llbnQgU3RyaW5nOjphcHBlbmQoKSBvdmVybG9hZHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTI4OQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERyb3AgaW5lZmZp
Y2llbnQgU3RyaW5nOjphcHBlbmQoKSBvdmVybG9hZHMgdG8gcHVzaCBkZXZlbG9wZXJzIHRvIHVz
ZSBTdHJpbmdCdWlsZGVyIC8gbWFrZVN0cmluZygpIGluc3RlYWQuCisKKyAgICAgICAgKiBoZWFw
L0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwOgorICAgICAgICAoSlNDOjpIZWFwU25hcHNob3RCdWls
ZGVyOjpqc29uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvU2NyaXB0QXJndW1lbnRzLmg6CisgICAg
ICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6Y2xhbXBF
cnJvck1lc3NhZ2UpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHA6Cisg
ICAgICAgIChKU0M6OndlbGxGb3JtZWRVbml0SWRlbnRpZmllcik6CisgICAgICAgICogcnVudGlt
ZS9JbnRsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6cmVzb2x2ZUxvY2FsZSk6CisgICAgICAg
ICogcnVudGltZS9JbnRsT2JqZWN0SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpiZXN0QXZhaWxh
YmxlTG9jYWxlKToKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcDoKKyAgICAg
ICAgKEpTQzo6ZWxsaXBzaXplQXQpOgorICAgICAgICAqIHRvb2xzL0Z1bmN0aW9uT3ZlcnJpZGVz
LmNwcDoKKyAgICAgICAgKEpTQzo6aW5pdGlhbGl6ZU92ZXJyaWRlSW5mbyk6CisgICAgICAgIChK
U0M6OnBhcnNlQ2xhdXNlKToKKwogMjAyMi0wNC0xMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgogCiAgICAgICAgIFJlcGxhY2UgQXRvbVN0cmluZyhjb25zdCBjaGFyKikgd2l0aCBB
dG9tU3RyaW5nOjpmcm9tTGF0aW4xKGNvbnN0IGNoYXIqKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCBkYmE0YWI1ZTA0ZjQ1OGFh
ZTBlMjk3NGRiNTg0MmJkMzVmYzEzMWMzLi5iOGFkNmNmNGQ2MDFhNTZhODUyM2IyYzVjNzVjZTU2
NmQwMTc5NzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDIyLTA0LTEzICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRHJvcCBpbmVmZmljaWVudCBTdHJpbmc6OmFw
cGVuZCgpIG92ZXJsb2FkcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjM5Mjg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgRHJvcCBpbmVmZmljaWVudCBTdHJpbmc6OmFwcGVuZCgpIG92ZXJsb2FkcyB0byBw
dXNoIGRldmVsb3BlcnMgdG8gdXNlIFN0cmluZ0J1aWxkZXIgLyBtYWtlU3RyaW5nKCkgaW5zdGVh
ZC4KKworICAgICAgICAqIHd0Zi9Bc3NlcnRpb25zLmNwcDoKKyAgICAgICAgKiB3dGYvVVJMLmNw
cDoKKyAgICAgICAgKFdURjo6VVJMOjpwcm90b2NvbCBjb25zdCk6CisgICAgICAgIChXVEY6OlVS
TDo6cHJvdG9jb2xIb3N0QW5kUG9ydCBjb25zdCk6CisgICAgICAgIChXVEY6OlVSTDo6c2V0UHJv
dG9jb2wpOgorICAgICAgICAoV1RGOjpVUkw6OnNldEhvc3QpOgorICAgICAgICAoV1RGOjpVUkw6
OnNldEhvc3RBbmRQb3J0KToKKyAgICAgICAgKFdURjo6VVJMOjpzdHJpcHBlZEZvclVzZUFzUmVm
ZXJyZXIgY29uc3QpOgorICAgICAgICAqIHd0Zi9VUkxQYXJzZXIuY3BwOgorICAgICAgICAoV1RG
OjpVUkxQYXJzZXI6OmFkZE5vblNwZWNpYWxEb3RTbGFzaCk6CisgICAgICAgIChXVEY6OlVSTFBh
cnNlcjo6cGFyc2VVUkxFbmNvZGVkRm9ybSk6CisgICAgICAgICogd3RmL1VVSUQuY3BwOgorICAg
ICAgICAoV1RGOjpVVUlEOjpwYXJzZSk6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nQnVpbGRl
ci5oOgorICAgICAgICAoV1RGOjpTdHJpbmdCdWlsZGVyOjphcHBlbmQpOgorICAgICAgICAqIHd0
Zi90ZXh0L1dURlN0cmluZy5jcHA6CisgICAgICAgIChXVEY6OlN0cmluZzo6aW5zZXJ0KToKKyAg
ICAgICAgKFdURjo6U3RyaW5nOjphcHBlbmQpOgorICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmlu
Zy5oOgorCiAyMDIyLTA0LTEzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmVwbGFjZSBBdG9tU3RyaW5nKGNvbnN0IGNoYXIqKSB3aXRoIEF0b21TdHJpbmc6OmZy
b21MYXRpbjEoY29uc3QgY2hhciopCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGRiZTJlNTZjMWU2NTgyYmFkZDlm
MDk0NmJjMTVmNGM0Zjc3MWE1MS4uZmQxMzk0M2MyZWJhZDhmOGIyOWNhOTVlMjc1NTkwNDU4OWFk
NGQxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2OCBAQAorMjAyMi0wNC0xMyAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIERyb3AgaW5lZmZpY2llbnQgU3RyaW5n
OjphcHBlbmQoKSBvdmVybG9hZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzOTI4OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIERyb3AgaW5lZmZpY2llbnQgU3RyaW5nOjphcHBlbmQoKSBvdmVybG9hZHMg
dG8gcHVzaCBkZXZlbG9wZXJzIHRvIHVzZSBTdHJpbmdCdWlsZGVyIC8gbWFrZVN0cmluZygpIGlu
c3RlYWQuCisKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnBhcnNlTUlNRVR5cGUpOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL0lEQkN1cnNvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6OnNldEdl
dFJlc3VsdCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5RGF0YS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJLZXlEYXRhOjpsb2dnaW5nU3RyaW5nIGNvbnN0KToKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlQYXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQktleVBhdGhMZXhlcjo6bGV4SWRlbnRpZmllcik6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCS2V5UmFuZ2VEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQktleVJhbmdl
RGF0YTo6bG9nZ2luZ1N0cmluZyBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
c2hhcmVkL0lEQkluZGV4SW5mby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleEluZm86
OmxvZ2dpbmdTdHJpbmcgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUGVl
ckNvbm5lY3Rpb25CYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNob3VsZElnbm9yZUlj
ZUNhbmRpZGF0ZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RUTUZTZW5kZXI6OnBsYXlOZXh0VG9uZSk6Cisg
ICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFFbmRw
b2ludC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJNZWRpYUVuZHBvaW50OjphZGRS
ZW1vdGVTdHJlYW0pOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xp
YldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b1J0
cENvZGVjQ2FwYWJpbGl0eSk6CisgICAgICAgICogTW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVn
aW5SZXBsYWNlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwcm9jZXNzQW5kQ3JlYXRlWW91
VHViZVVSTCk6CisgICAgICAgIChXZWJDb3JlOjpZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQ6Onlv
dVR1YmVVUkxGcm9tQWJzb2x1dGVVUkwpOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXRIYW5kc2hha2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dHJpbUlucHV0U2FtcGxl
KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmluaXRpYWxpemVBdHRy
aWJ1dGVEYXRhKToKKyAgICAgICAgKiBkaXNwbGF5L2Nzcy9EaXNwbGF5VGV4dEJveC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpUZXh0Qm94OjpkZWJ1Z0Rlc2NyaXB0aW9uIGNvbnN0
KToKKyAgICAgICAgKiBkb20vQ2hhcmFjdGVyRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
aGFyYWN0ZXJEYXRhOjpwYXJzZXJBcHBlbmREYXRhKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnBhcnNlUXVhbGlmaWVkTmFtZSk6Cisg
ICAgICAgICogZG9tL1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dDo6c3BsaXRUZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZFRleHRSZXByZXNlbnRhdGlvbik6CisgICAgICAg
ICogZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnZpZXdwb3J0
RXJyb3JNZXNzYWdlKToKKyAgICAgICAgKiBlZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjaGVja1RleHRPZlBhcmFncmFwaCk6CisgICAgICAgICogZWRp
dGluZy9UZXh0SXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoQnVmZmVyOjpw
cmVwZW5kQ29udGV4dCk6CisgICAgICAgICogZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6c3VmZml4TGVuZ3RoRm9yUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
c3RhcnRXb3JkQm91bmRhcnkpOgorICAgICAgICAoV2ViQ29yZTo6cHJldmlvdXNXb3JkUG9zaXRp
b25Cb3VuZGFyeSk6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YURldGVjdGlvbjo6ZGV0ZWN0Q29udGVudEluUmFuZ2UpOgor
ICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNob3VsZFBy
ZXNlcnZlTVNPTGlzdHMpOgorICAgICAgICAoV2ViQ29yZTo6ZmlsbENvbnRhaW5lckZyb21TdHJp
bmcpOgorICAgICAgICAqIGh0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OnBhcnNlQW5kQXBwZW5kT25lTGlu
ZSk6CisgICAgICAgIChXZWJDb3JlOjpGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6YXBwZW5k
KToKKyAgICAgICAgKFdlYkNvcmU6OkZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpmaW5pc2gp
OgorICAgICAgICAqIGh0bWwvRmVhdHVyZVBvbGljeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp1
cGRhdGVMaXN0KToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV1RGOjpMb2dBcmd1bWVudDxVUkw+Ojp0b1N0cmluZyk6CisgICAgICAgICogaHRtbC9IVE1M
VHJhY2tFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVybEZvckxvZ2dpbmdUcmFjayk6
CisgICAgICAgICogaHRtbC9VUkxEZWNvbXBvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlVSTERlY29tcG9zaXRpb246OnNldEhvc3QpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6Z2V0QWN0aXZlVW5pZm9ybSk6CisgICAgICAgICogaHRtbC9wYXJzZXIv
SFRNTFBhcnNlcklkaW9tcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUhUVFBSZWZyZXNo
SW50ZXJuYWwpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxTcmNzZXRQYXJzZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6cGFyc2VEZXNjcmlwdG9ycyk6CisgICAgICAgICogaHRtbC9wYXJz
ZXIvSFRNTFRyZWVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRl
cjo6RXh0ZXJuYWxDaGFyYWN0ZXJUb2tlbkJ1ZmZlcjo6Y2hhcmFjdGVyUHJlZGljYXRlKToKKyAg
ICAgICAgKiBodG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJWVFRQYXJzZXI6OmNoZWNrQW5kU3RvcmVTdHlsZVNoZWV0KToKKyAgICAgICAgKiBodG1sL3Ry
YWNrL1dlYlZUVFBhcnNlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRydW5jYXRlV2l0aEVsbGlwc2lzKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheUxhYmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvck92ZXJsYXlMYWJlbDo6ZHJhdyk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvclN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVTaGVldEhhbmRsZXI6
Om9ic2VydmVDb21tZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRP
TUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpidWlsZE9i
amVjdEZvck5vZGUpOgorICAgICAgICAqIGxheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWls
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6b3V0cHV0TGF5b3V0Qm94KToKKyAg
ICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0UGFyc2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Om1hbmlmZXN0UGF0aCk6CisgICAgICAgICogbWF0aG1sL01h
dGhNTFByZXNlbnRhdGlvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MUHJl
c2VudGF0aW9uRWxlbWVudDo6cGFyc2VOdW1iZXJBbmRVbml0KToKKyAgICAgICAgKiBwYWdlL0Zy
YW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVJlZ0V4cEZvckxhYmVscyk6CisgICAg
ICAgICogcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKToKKyAgICAgICAgKiBwYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVRyZWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsaW5nU3RhdGVUcmVlOjpzY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHQgY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL1NoYXJlZFN0cmluZ0hhc2guY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29t
cHV0ZVNoYXJlZFN0cmluZ0hhc2hJbmxpbmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0hFVkNVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSEVWQ0NvZGVjUGFy
YW1ldGVyc1N0cmluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU3RyaW5nVHJ1bmNh
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNlbnRlclRydW5jYXRlVG9CdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6cmlnaHRUcnVuY2F0ZVRvQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OnJpZ2h0Q2xpcFRvQ2hhcmFjdGVyQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OnJpZ2h0Q2xp
cFRvV29yZEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6OnNldFBsYXliaW5VUkwpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjpwbGF0Zm9y
bU1heGltdW1CdWZmZXJTaXplIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93
aW4vRm9udENhY2hlV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUdESUZvbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpnZXRGb250U2VsZWN0aW9uQ2FwYWJpbGl0aWVz
SW5GYW1pbHkpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9Vc2VyQWdlbnRJT1MubW06CisgICAg
ICAgIChXZWJDb3JlOjpkZXZpY2VOYW1lRm9yVXNlckFnZW50KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL0NhY2hlVmFsaWRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0cmltVG9O
ZXh0U2VwYXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlQ2FjaGVIZWFkZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6cHJvdGVjdGlvblNwYWNlTWFwS2V5RnJvbVVSTCk6CisgICAgICAgIChXZWJDb3Jl
OjpDcmVkZW50aWFsU3RvcmFnZTo6ZmluZERlZmF1bHRQcm90ZWN0aW9uU3BhY2VGb3JVUkwpOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YVVSTERlY29kZXI6OkRlY29kZVRhc2s6OnByb2Nlc3MpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dHJp
bUlucHV0U2FtcGxlKToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlU3RydWN0dXJlZEZpZWxkVmFs
dWUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpyZXRyaWV2ZUtleVZhbHVlUGFpcnMpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY3VybC9Db29raWVVdGlsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZVV0aWw6
OnBhcnNlQ29va2llQXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVVdGlsOjpw
YXJzZUNvb2tpZUhlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVVdGlsOjpkZWZhdWx0
UGF0aEZvclVSTCk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9Mb2NhbGVUb1NjcmlwdE1hcHBp
bmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bG9jYWxlVG9TY3JpcHRDb2RlRm9yRm9udFNlbGVj
dGlvbik6CisgICAgICAgICogcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6ZmlsZVN5c3RlbVBhdGhGcm9tVVJMT3JUaXRsZSk6CisgICAgICAgIChXZWJD
b3JlOjpQYXN0ZWJvYXJkOjp3cml0ZVVSTFRvRGF0YU9iamVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpjcmVhdGVHbG9iYWxJbWFnZUZpbGVEZXNjcmlwdG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS93
aW4vV2ViQ29yZVRleHRSZW5kZXJlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkb0RyYXdUZXh0
QXRQb2ludCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OmNyZWF0ZVByaW1hcnlHcmFwaGlj
c0xheWVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlck9iamVjdDo6b3V0cHV0UmVuZGVyT2JqZWN0IGNvbnN0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9uc1Jlc29sdmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok5hbWVkTGluZUNvbGxlY3Rpb25CYXNlOjpOYW1lZExpbmVDb2xsZWN0aW9uQmFz
ZSk6CisgICAgICAgICogc3ZnL1NWR1Rlc3RzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rl
c3RzOjppc1ZhbGlkIGNvbnN0KToKKyAgICAgICAgKiBzdmcvU1ZHVVJJUmVmZXJlbmNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1VSSVJlZmVyZW5jZTo6ZnJhZ21lbnRJZGVudGlmaWVyRnJv
bUlSSVN0cmluZyk6CisgICAgICAgICogc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdTTUlMRWxlbWVudDo6cGFyc2VDbG9ja1ZhbHVlKToKKyAg
ICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iOjp2YWxpZGF0ZVNlcnZpY2VXb3JrZXJSZXNwb25zZSk6
CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleTo6ZnJv
bURhdGFiYXNlS2V5KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpjYW5IYW5kbGVTY2hlbWUgY29uc3Qp
OgorCiAyMDIyLTA0LTEzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmVwbGFjZSBBdG9tU3RyaW5nKGNvbnN0IGNoYXIqKSB3aXRoIEF0b21TdHJpbmc6OmZyb21M
YXRpbjEoY29uc3QgY2hhciopCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9nCmluZGV4IDc0ODJhZTIzNDM0ZDAzYmExOGNl
ZjkyMjNhNzY4MDA4YjgxMzU1ZjUuLjZkMDEwZTQ3YjBmYmU1ZWI3ZWEzYzZiNWJkZWRmZWFjY2Nl
NzRiMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJEcml2ZXIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDQtMTMgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBEcm9wIGluZWZmaWNpZW50IFN0
cmluZzo6YXBwZW5kKCkgb3ZlcmxvYWRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzkyODkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBEcm9wIGluZWZmaWNpZW50IFN0cmluZzo6YXBwZW5kKCkgb3Zlcmxv
YWRzIHRvIHB1c2ggZGV2ZWxvcGVycyB0byB1c2UgU3RyaW5nQnVpbGRlciAvIG1ha2VTdHJpbmco
KSBpbnN0ZWFkLgorCisgICAgICAgICogQ29tbWFuZFJlc3VsdC5jcHA6CisgICAgICAgIChXZWJE
cml2ZXI6OkNvbW1hbmRSZXN1bHQ6OkNvbW1hbmRSZXN1bHQpOgorCiAyMDIyLTA0LTExICBEb24g
T2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CiAKICAgICAgICAgRml4IFBsYXlTdGF0
aW9uIGJ1aWxkIGFmdGVyIHIyOTI2OTYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYjgzNDhkZGQwNGVkYmI5OTAyNjI0
ODVlZGE3ODYyYjAxZTFlODYwMS4uZTE0YjFiZWU2ZDI4MjUwZTY3ZDQ4ZjQ4NzQxYzU4NDRmZGMy
NWExYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAyMi0wNC0xMyAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIERyb3AgaW5lZmZpY2llbnQgU3RyaW5nOjph
cHBlbmQoKSBvdmVybG9hZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzOTI4OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIERyb3AgaW5lZmZpY2llbnQgU3RyaW5nOjphcHBlbmQoKSBvdmVybG9hZHMgdG8g
cHVzaCBkZXZlbG9wZXJzIHRvIHVzZSBTdHJpbmdCdWlsZGVyIC8gbWFrZVN0cmluZygpIGluc3Rl
YWQuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURh
dGFiYXNlVHJhY2tlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsU3RvcmFnZURhdGFiYXNl
VHJhY2tlcjo6b3JpZ2lucyBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6
dHJhdmVyc2VSZWNvcmRzRmlsZXMpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2Uv
TG9jYWxTdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OmZpbGVOYW1lVG9Pcmln
aW4pOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS1N0cmluZy5jcHA6CisgICAgICAgIChXS1N0
cmluZ0dldENoYXJhY3RlcnMpOgorICAgICAgICAqIFNoYXJlZC9tYWMvQXV4aWxpYXJ5UHJvY2Vz
c01hYy5tbToKKyAgICAgICAgKFdlYktpdDo6cG9wdWxhdGVTYW5kYm94SW5pdGlhbGl6YXRpb25Q
YXJhbWV0ZXJzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvSW5wdXRNZXRob2RGaWx0
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbnB1dE1ldGhvZEZpbHRlcjo6bm90aWZ5U3Vycm91
bmRpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvR3RrU2V0dGluZ3NNYW5hZ2VyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6R3RrU2V0dGluZ3NNYW5hZ2VyOjp0aGVtZU5hbWUgY29uc3QpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvVGV4dENoZWNrZXJHdGsuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpUZXh0Q2hlY2tlcjo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy93aW4vV2ViUHJvY2Vzc1Bvb2xXaW4uY3BwOgorICAgICAgICAoV2ViS2l0Ojppbml0aWFs
aXplUmVtb3RlSW5zcGVjdG9yU2VydmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMv
UERGL1BERlBsdWdpbi5tbToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpzZXRTdWdnZXN0
ZWRGaWxlbmFtZSk6CisKIDIwMjItMDQtMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBSZXBsYWNlIEF0b21TdHJpbmcoY29uc3QgY2hhciopIHdpdGggQXRvbVN0
cmluZzo6ZnJvbUxhdGluMShjb25zdCBjaGFyKikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKaW5kZXggMTI5
OTQ1ZDhkNzRmMjQ3M2UzNTQwN2JiOGQxNTFjZmVmZWQxZmRmMS4uOTFlYWQ4ZTViMDljNDZhZjNh
Y2M0YzQxNTNhM2M5ZmY1YzllZjU1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NSBAQAorMjAyMi0wNC0xMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAg
ICAgIERyb3AgaW5lZmZpY2llbnQgU3RyaW5nOjphcHBlbmQoKSBvdmVybG9hZHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTI4OQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGRyb3BfU3RyaW5nX2FwcGVu
ZAorCisgICAgICAgICogU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlN0b3JhZ2VUcmFja2VyOjpzeW5jRmlsZVN5c3RlbUFuZFRyYWNrZXJEYXRhYmFzZSk6CisK
IDIwMjItMDQtMDUgIEVsbGlvdHQgV2lsbGlhbXMgIDxlbXdAYXBwbGUuY29tPgogCiAgICAgICAg
IEZpeCBTVFAgYnVpbGQgZXJyb3IgIm5vIHN1Y2ggZmlsZSBvciBkaXJlY3Rvcnk6ICdUZWNobm9s
b2d5JyIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA5NjdhMmQxMDI3ZjdkYzdiOThm
YjRmNTQxOWEwNjIzYTNhMGQ2Y2NmLi42ZWRlYTFhYmUxNDdiN2VlYWUzM2MxM2RiNGNhOTRkZDhk
YTBlOTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIw
MjItMDQtMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBEcm9w
IGluZWZmaWNpZW50IFN0cmluZzo6YXBwZW5kKCkgb3ZlcmxvYWRzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzkyODkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEcm9wIGluZWZmaWNpZW50IFN0cmluZzo6
YXBwZW5kKCkgb3ZlcmxvYWRzIHRvIHB1c2ggZGV2ZWxvcGVycyB0byB1c2UgU3RyaW5nQnVpbGRl
ciAvIG1ha2VTdHJpbmcoKSBpbnN0ZWFkLgorCisgICAgICAgICogV2ViVmlldy9XZWJIVE1MUmVw
cmVzZW50YXRpb24ubW06CisgICAgICAgIChyZWdFeHBGb3JMYWJlbHMpOgorCiAyMDIyLTA0LTEy
ICBFbGxpb3R0IFdpbGxpYW1zICA8ZW13QGFwcGxlLmNvbT4KIAogICAgICAgICBbWGNvZGVdIElu
IG9wZW4tc291cmNlIGJ1aWxkcywgZGlzYWJsZSBiaXRjb2RlIGluIHhjY29uZmlncyBpbnN0ZWFk
IG9mIGJ1aWxkLXdlYmtpdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcFNuYXBzaG90QnVpbGRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
U25hcHNob3RCdWlsZGVyLmNwcAppbmRleCA5ZDVjNjE5MjIxZWVlNWQ1MWNmZWYxNTg4ZWI3OTJi
NjU4YTJjMzU3Li5jYjE2YTAwNTI1NGY1ODI2YTU5ZmRmYzI1MjBmYjRhNDgwZmUxYTU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNw
cApAQCAtMzkwLDE1ICszOTAsMTUgQEAgU3RyaW5nIEhlYXBTbmFwc2hvdEJ1aWxkZXI6Ompzb24o
RnVuY3Rpb248Ym9vbCAoY29uc3QgSGVhcFNuYXBzaG90Tm9kZSYpPiBhbGxvd04KICAgICAgICAg
ICAgICAgICBmbGFncyB8PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTm9kZUZsYWdzOjpJbnRlcm5h
bCk7CiAKICAgICAgICAgICAgIGlmIChtX3NuYXBzaG90VHlwZSA9PSBTbmFwc2hvdFR5cGU6OkdD
RGVidWdnaW5nU25hcHNob3QpIHsKLSAgICAgICAgICAgICAgICBTdHJpbmcgbm9kZUxhYmVsOwor
ICAgICAgICAgICAgICAgIFN0cmluZ0J1aWxkZXIgbm9kZUxhYmVsOwogICAgICAgICAgICAgICAg
IGF1dG8gaXQgPSBtX2NlbGxMYWJlbHMuZmluZChub2RlLmNlbGwpOwogICAgICAgICAgICAgICAg
IGlmIChpdCAhPSBtX2NlbGxMYWJlbHMuZW5kKCkpCi0gICAgICAgICAgICAgICAgICAgIG5vZGVM
YWJlbCA9IGl0LT52YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgbm9kZUxhYmVsLmFwcGVuZChp
dC0+dmFsdWUpOwogCiAgICAgICAgICAgICAgICAgaWYgKG5vZGVMYWJlbC5pc0VtcHR5KCkpIHsK
ICAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIG9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNP
YmplY3QqPih2bSwgbm9kZS5jZWxsKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF1
dG8qIGZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4odm0sIG9iamVjdCkpCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZUxhYmVsID0gZnVuY3Rpb24tPmNhbGN1bGF0
ZWREaXNwbGF5TmFtZSh2bSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZUxhYmVs
LmFwcGVuZChmdW5jdGlvbi0+Y2FsY3VsYXRlZERpc3BsYXlOYW1lKHZtKSk7CiAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAKQEAgLTQxMCw3ICs0MTAsNyBAQCBTdHJp
bmcgSGVhcFNuYXBzaG90QnVpbGRlcjo6anNvbihGdW5jdGlvbjxib29sIChjb25zdCBIZWFwU25h
cHNob3ROb2RlJik+IGFsbG93TgogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAg
IGlmICghbm9kZUxhYmVsLmlzRW1wdHkoKSAmJiBtX3NuYXBzaG90VHlwZSA9PSBTbmFwc2hvdFR5
cGU6OkdDRGVidWdnaW5nU25hcHNob3QpIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byByZXN1
bHQgPSBsYWJlbEluZGV4ZXMuYWRkKG5vZGVMYWJlbCwgbmV4dExhYmVsSW5kZXgpOworICAgICAg
ICAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IGxhYmVsSW5kZXhlcy5hZGQobm9kZUxhYmVsLnRv
U3RyaW5nKCksIG5leHRMYWJlbEluZGV4KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3Vs
dC5pc05ld0VudHJ5KQogICAgICAgICAgICAgICAgICAgICAgICAgbmV4dExhYmVsSW5kZXgrKzsK
ICAgICAgICAgICAgICAgICAgICAgbGFiZWxJbmRleCA9IHJlc3VsdC5pdGVyYXRvci0+dmFsdWU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdEFyZ3Vt
ZW50cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMu
aAppbmRleCA3N2EwODE5MTZmNjFjMmY5YmQ3MTZhYzgzZjMwOWRkZGE3ZTgzMjc0Li4yMmRhN2Rk
MTk3OTE4OTcwNzEyMTIzZGM1NTE5NDI4MWYyOWY0YzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0QXJndW1lbnRzLmgKQEAgLTYyLDcgKzYyLDcgQEAg
cHVibGljOgogICAgICAgICBjb25zdGV4cHIgc2l6ZV90IG1heE1lc3NhZ2VMZW5ndGggPSAxMDAw
MDsKICAgICAgICAgaWYgKG1lc3NhZ2UubGVuZ3RoKCkgPD0gbWF4TWVzc2FnZUxlbmd0aCkKICAg
ICAgICAgICAgIHJldHVybiBtZXNzYWdlOwotICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhtZXNz
YWdlLnN1YnN0cmluZygwLCBtYXhNZXNzYWdlTGVuZ3RoKSwgIi4uLiJfcyk7CisgICAgICAgIHJl
dHVybiBtYWtlU3RyaW5nKFN0cmluZ1ZpZXcobWVzc2FnZSkubGVmdChtYXhNZXNzYWdlTGVuZ3Ro
KSwgIi4uLiJfcyk7CiAgICAgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAppbmRleCBkYzE2MDk3OWY5ZDg3MzY1
OWZiZjljODBkYjYzMzA2YWZkNWU5NDkxLi4xNjFmM2U2OWQ0M2I4OWQ4M2Y1N2ZjN2ZjMWYzMWMw
ZDIyYTA0OGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNl
cHRpb25IZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNl
cHRpb25IZWxwZXJzLmNwcApAQCAtNzgsNyArNzgsNyBAQCBzdGF0aWMgU3RyaW5nVmlldyBjbGFt
cEVycm9yTWVzc2FnZShjb25zdCBTdHJpbmcmIG9yaWdpbmFsTWVzc2FnZSkKIHsKICAgICAvLyBI
b3BlZnVsbHkgdGhpcyBpcyBzdWZmaWNpZW50bHkgbG9uZy4gTm90ZSwgdGhpcyBpcyB0aGUgbGVu
Z3RoIG9mIHRoZSBzdHJpbmcgbm90IHRoZSBudW1iZXIgb2YgYnl0ZXMgdXNlZC4KICAgICBjb25z
dGV4cHIgdW5zaWduZWQgbWF4TGVuZ3RoID0gMiAqIEtCOwotICAgIHJldHVybiBTdHJpbmdWaWV3
KG9yaWdpbmFsTWVzc2FnZSkuc3Vic3RyaW5nKDAsIG1heExlbmd0aCk7CisgICAgcmV0dXJuIFN0
cmluZ1ZpZXcob3JpZ2luYWxNZXNzYWdlKS5sZWZ0KG1heExlbmd0aCk7CiB9CiAKIHN0YXRpYyBT
dHJpbmcgZGVmYXVsdEFwcHJveGltYXRlU291cmNlRXJyb3IoY29uc3QgU3RyaW5nJiBvcmlnaW5h
bE1lc3NhZ2UsIFN0cmluZ1ZpZXcgc291cmNlVGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAKaW5kZXggODNlN2RhYzZmYmJiNWY4
YjRmNzM3M2ExM2FmZmFkNTc1Y2QzZDkxOC4uMzI4MGRhYzJkNzVkZDQ4MzYwY2Y4YzM0M2IyZGQ1
OGYyYjc4OTE1YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bE51bWJlckZvcm1hdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bE51bWJlckZvcm1hdC5jcHAKQEAgLTIyMyw3ICsyMjMsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25h
bDxXZWxsRm9ybWVkVW5pdD4gd2VsbEZvcm1lZFVuaXRJZGVudGlmaWVyKFN0cmluZ1ZpZXcgdW5p
dElkZQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gSWYgdGhlIHJlc3Vs
dCBvZiBJc1NhbmN0aW9uZWRTaW1wbGVVbml0SWRlbnRpZmllcihudW1lcmF0b3IpIGlzIGZhbHNl
LCB0aGVuIHJldHVybiBmYWxzZS4KLSAgICBhdXRvIG51bWVyYXRvciA9IHVuaXRJZGVudGlmaWVy
LnN1YnN0cmluZygwLCBwb3NpdGlvbik7CisgICAgYXV0byBudW1lcmF0b3IgPSB1bml0SWRlbnRp
Zmllci5sZWZ0KHBvc2l0aW9uKTsKICAgICBhdXRvIG51bWVyYXRvclVuaXQgPSBzYW5jdGlvbmVk
U2ltcGxlVW5pdElkZW50aWZpZXIobnVtZXJhdG9yKTsKICAgICBpZiAoIW51bWVyYXRvclVuaXQp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxPYmplY3QuY3BwCmluZGV4IDI5ZDZmOTM1ZjAyN2IyMDI3MGU5MWZlYjlkYjc2
ZGE1NGNhNGYxNjEuLmEyMmViZjQwOGYxYTY2ZGYwNDQ2MDMzYzE5M2Y5NjBmODZjNjgxMTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCkBAIC05MTcs
NyArOTE3LDggQEAgUmVzb2x2ZWRMb2NhbGUgcmVzb2x2ZUxvY2FsZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBjb25zdCBMb2NhbGVTZXQmIGF2YWkKICAgICBSZXNvbHZlZExvY2FsZSBy
ZXNvbHZlZDsKICAgICByZXNvbHZlZC5kYXRhTG9jYWxlID0gZm91bmRMb2NhbGU7CiAKLSAgICBT
dHJpbmcgc3VwcG9ydGVkRXh0ZW5zaW9uID0gIi11Il9zOworICAgIFN0cmluZ0J1aWxkZXIgc3Vw
cG9ydGVkRXh0ZW5zaW9uOworICAgIHN1cHBvcnRlZEV4dGVuc2lvbi5hcHBlbmQoIi11Il9zKTsK
ICAgICBmb3IgKFJlbGV2YW50RXh0ZW5zaW9uS2V5IGtleSA6IHJlbGV2YW50RXh0ZW5zaW9uS2V5
cykgewogICAgICAgICBBU0NJSUxpdGVyYWwga2V5U3RyaW5nID0gcmVsZXZhbnRFeHRlbnNpb25L
ZXlTdHJpbmcoa2V5KTsKICAgICAgICAgVmVjdG9yPFN0cmluZz4ga2V5TG9jYWxlRGF0YSA9IGxv
Y2FsZURhdGEoZm91bmRMb2NhbGUsIGtleSk7CkBAIC05NTcsNyArOTU4LDcgQEAgUmVzb2x2ZWRM
b2NhbGUgcmVzb2x2ZUxvY2FsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBM
b2NhbGVTZXQmIGF2YWkKIAogICAgIGlmIChzdXBwb3J0ZWRFeHRlbnNpb24ubGVuZ3RoKCkgPiAy
KSB7CiAgICAgICAgIFN0cmluZ1ZpZXcgZm91bmRMb2NhbGVWaWV3KGZvdW5kTG9jYWxlKTsKLSAg
ICAgICAgZm91bmRMb2NhbGUgPSBtYWtlU3RyaW5nKGZvdW5kTG9jYWxlVmlldy5zdWJzdHJpbmco
MCwgbWF0Y2hlclJlc3VsdC5leHRlbnNpb25JbmRleCksIHN1cHBvcnRlZEV4dGVuc2lvbiwgZm91
bmRMb2NhbGVWaWV3LnN1YnN0cmluZyhtYXRjaGVyUmVzdWx0LmV4dGVuc2lvbkluZGV4KSk7Cisg
ICAgICAgIGZvdW5kTG9jYWxlID0gbWFrZVN0cmluZyhmb3VuZExvY2FsZVZpZXcubGVmdChtYXRj
aGVyUmVzdWx0LmV4dGVuc2lvbkluZGV4KSwgc3VwcG9ydGVkRXh0ZW5zaW9uLnRvU3RyaW5nKCks
IGZvdW5kTG9jYWxlVmlldy5zdWJzdHJpbmcobWF0Y2hlclJlc3VsdC5leHRlbnNpb25JbmRleCkp
OwogICAgIH0KIAogICAgIHJlc29sdmVkLmxvY2FsZSA9IFdURk1vdmUoZm91bmRMb2NhbGUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdElubGlu
ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3RJbmxpbmVzLmgK
aW5kZXggNDFjMmJmZGY2ZWU1MTVjMjM0ZGNiY2U2MGNkYjMzMDNlYWIzMGFmZS4uZGM1NzhlMTli
ZDU1MjBlYzc0ZTdiYzNiMTMyMzUwOWExMmE5ZjJjZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0SW5saW5lcy5oCkBAIC01OCw3ICs1OCw3IEBAIHRl
bXBsYXRlPHR5cGVuYW1lIFByZWRpY2F0ZT4gU3RyaW5nIGJlc3RBdmFpbGFibGVMb2NhbGUoY29u
c3QgU3RyaW5nJiBsb2NhbGUsIFByCiAgICAgICAgIGlmIChwb3MgPj0gMiAmJiBjYW5kaWRhdGVb
cG9zIC0gMl0gPT0gJy0nKQogICAgICAgICAgICAgcG9zIC09IDI7CiAKLSAgICAgICAgY2FuZGlk
YXRlID0gY2FuZGlkYXRlLnN1YnN0cmluZygwLCBwb3MpOworICAgICAgICBjYW5kaWRhdGUgPSBj
YW5kaWRhdGUubGVmdChwb3MpOwogICAgIH0KIAogICAgIHJldHVybiBTdHJpbmcoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcAppbmRleCAx
NDgwMTQ5ZjA2ODc2OGI3MjVkNTYzZDMxMTFkMWJkMjZiM2FmNWViLi5jODgyZjRlODk3ZjJmZTY1
YTVjYjM0ZjI2YjVhOTBlY2E1NTQ4Yzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwCkBAIC0xNTEsMTIgKzE1MSw5IEBAIHN0YXRpYyBT
dHJpbmdWaWV3IHNpbmd1bGFyVW5pdChTdHJpbmdWaWV3IHVuaXQpCiAvLyBGb3IgdXNlIGluIGVy
cm9yIG1lc3NhZ2VzIHdoZXJlIGEgc3RyaW5nIHZhbHVlIGlzIHBvdGVudGlhbGx5IHVuYm91bmRl
ZAogV1RGOjpTdHJpbmcgZWxsaXBzaXplQXQodW5zaWduZWQgbWF4TGVuZ3RoLCBjb25zdCBXVEY6
OlN0cmluZyYgc3RyaW5nKQogewotICAgIFdURjo6U3RyaW5nIGNvcHkgeyBzdHJpbmcgfTsKLSAg
ICBpZiAoc3RyaW5nLmxlbmd0aCgpID4gbWF4TGVuZ3RoKSB7Ci0gICAgICAgIGNvcHkudHJ1bmNh
dGUobWF4TGVuZ3RoIC0gMSk7Ci0gICAgICAgIGNvcHkuYXBwZW5kKGhvcml6b250YWxFbGxpcHNp
cyk7Ci0gICAgfQotICAgIHJldHVybiBjb3B5OworICAgIGlmIChzdHJpbmcubGVuZ3RoKCkgPD0g
bWF4TGVuZ3RoKQorICAgICAgICByZXR1cm4gc3RyaW5nOworICAgIHJldHVybiBtYWtlU3RyaW5n
KFN0cmluZ1ZpZXcoc3RyaW5nKS5sZWZ0KG1heExlbmd0aCAtIDEpLCBob3Jpem9udGFsRWxsaXBz
aXMpOwogfQogCiBQcm9wZXJ0eU5hbWUgdGVtcG9yYWxVbml0UGx1cmFsUHJvcGVydHlOYW1lKFZN
JiB2bSwgVGVtcG9yYWxVbml0IHVuaXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdG9vbHMvRnVuY3Rpb25PdmVycmlkZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rv
b2xzL0Z1bmN0aW9uT3ZlcnJpZGVzLmNwcAppbmRleCA1ZTMyMDhjYjI2MDEwMzJjN2UzMGMyNmJj
OTMxNzVmZjc2ZmNiYTMyLi5iZTFmMjhmYTU0NGJmODg0MDAzN2ZlNDgxNDg1NTc4YjAyOGYzNmI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvRnVuY3Rpb25PdmVycmlk
ZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9GdW5jdGlvbk92ZXJyaWRl
cy5jcHAKQEAgLTEzNSwyMSArMTM1LDE5IEBAIHN0YXRpYyB2b2lkIGluaXRpYWxpemVPdmVycmlk
ZUluZm8oY29uc3QgU291cmNlQ29kZSYgb3JpZ0NvZGUsIGNvbnN0IFN0cmluZyYgbmV3CiAgICAg
dW5zaWduZWQgaGVhZGVyTGVuZ3RoID0gb3JpZ0JyYWNlU3RhcnQgLSBvcmlnRnVuY3Rpb25TdGFy
dDsKICAgICBTdHJpbmcgb3JpZ0hlYWRlciA9IG9yaWdQcm92aWRlclN0ci5zdWJzdHJpbmcob3Jp
Z0Z1bmN0aW9uU3RhcnQsIGhlYWRlckxlbmd0aCk7CiAKLSAgICBTdHJpbmcgbmV3UHJvdmlkZXJT
dHI7Ci0gICAgbmV3UHJvdmlkZXJTdHIuYXBwZW5kKG9yaWdIZWFkZXIpOwotICAgIG5ld1Byb3Zp
ZGVyU3RyLmFwcGVuZChuZXdCb2R5KTsKKyAgICBTdHJpbmcgbmV3UHJvdmlkZXJTdHJpbmcgPSBt
YWtlU3RyaW5nKG9yaWdIZWFkZXIsIG5ld0JvZHkpOwogCiAgICAgYXV0byBvdmVycmlkZGVuID0g
IjxvdmVycmlkZGVuPiJfczsKICAgICBVUkwgdXJsKHsgfSwgb3ZlcnJpZGRlbik7Ci0gICAgUmVm
PFNvdXJjZVByb3ZpZGVyPiBuZXdQcm92aWRlciA9IFN0cmluZ1NvdXJjZVByb3ZpZGVyOjpjcmVh
dGUobmV3UHJvdmlkZXJTdHIsIFNvdXJjZU9yaWdpbiB7IHVybCB9LCBvdmVycmlkZGVuKTsKKyAg
ICBSZWY8U291cmNlUHJvdmlkZXI+IG5ld1Byb3ZpZGVyID0gU3RyaW5nU291cmNlUHJvdmlkZXI6
OmNyZWF0ZShuZXdQcm92aWRlclN0cmluZywgU291cmNlT3JpZ2luIHsgdXJsIH0sIG92ZXJyaWRk
ZW4pOwogCiAgICAgaW5mby5maXJzdExpbmUgPSAxOwogICAgIGluZm8ubGluZUNvdW50ID0gMTsg
Ly8gRmFraW5nIGl0LiBUaGlzIGRvZXNuJ3QgcmVhbGx5IG1hdHRlciBmb3Igbm93LgogICAgIGlu
Zm8uc3RhcnRDb2x1bW4gPSAxOwogICAgIGluZm8uZW5kQ29sdW1uID0gMTsgLy8gRmFraW5nIGl0
LiBUaGlzIGRvZXNuJ3QgcmVhbGx5IG1hdHRlciBmb3Igbm93LgotICAgIGluZm8ucGFyYW1ldGVy
c1N0YXJ0T2Zmc2V0ID0gbmV3UHJvdmlkZXJTdHIuZmluZCgnKCcpOwotICAgIGluZm8udHlwZVBy
b2ZpbGluZ1N0YXJ0T2Zmc2V0ID0gbmV3UHJvdmlkZXJTdHIuZmluZCgneycpOwotICAgIGluZm8u
dHlwZVByb2ZpbGluZ0VuZE9mZnNldCA9IG5ld1Byb3ZpZGVyU3RyLmxlbmd0aCgpIC0gMTsKKyAg
ICBpbmZvLnBhcmFtZXRlcnNTdGFydE9mZnNldCA9IG5ld1Byb3ZpZGVyU3RyaW5nLmZpbmQoJygn
KTsKKyAgICBpbmZvLnR5cGVQcm9maWxpbmdTdGFydE9mZnNldCA9IG5ld1Byb3ZpZGVyU3RyaW5n
LmZpbmQoJ3snKTsKKyAgICBpbmZvLnR5cGVQcm9maWxpbmdFbmRPZmZzZXQgPSBuZXdQcm92aWRl
clN0cmluZy5sZW5ndGgoKSAtIDE7CiAKICAgICBpbmZvLnNvdXJjZUNvZGUgPQogICAgICAgICBT
b3VyY2VDb2RlKFdURk1vdmUobmV3UHJvdmlkZXIpLCBpbmZvLnBhcmFtZXRlcnNTdGFydE9mZnNl
dCwgaW5mby50eXBlUHJvZmlsaW5nRW5kT2Zmc2V0ICsgMSwgMSwgMSk7CkBAIC0yMjUsMTEgKzIy
Myw3IEBAIHN0YXRpYyBTdHJpbmcgcGFyc2VDbGF1c2UoY29uc3QgY2hhcioga2V5d29yZCwgc2l6
ZV90IGtleXdvcmRMZW5ndGgsIEZJTEUqIGZpbGUsCiAgICAgaWYgKGhhc0Rpc2FsbG93ZWRDaGFy
YWN0ZXJzKGRlbGltaXRlclN0YXJ0LCBkZWxpbWl0ZXJMZW5ndGgpKQogICAgICAgICBGQUlMX1dJ
VEhfRVJST1IoU1lOVEFYX0VSUk9SLCAoIkRlbGltaXRlciAnIiwgZGVsaW1pdGVyLCAiJyBjYW5u
b3QgaGF2ZSAneycsICd9Jywgb3Igd2hpdGVzcGFjZTpcbiIsIGxpbmUsICJcbiIpKTsKICAgICAK
LSAgICBTdHJpbmcgdGVybWluYXRvclN0cmluZzsKLSAgICB0ZXJtaW5hdG9yU3RyaW5nLmFwcGVu
ZCgnfScpOwotICAgIHRlcm1pbmF0b3JTdHJpbmcuYXBwZW5kKGRlbGltaXRlcik7Ci0KLSAgICBD
U3RyaW5nIHRlcm1pbmF0b3JDU3RyaW5nID0gdGVybWluYXRvclN0cmluZy5hc2NpaSgpOworICAg
IENTdHJpbmcgdGVybWluYXRvckNTdHJpbmcgPSBtYWtlU3RyaW5nKCd9JywgZGVsaW1pdGVyKS5h
c2NpaSgpOwogICAgIGNvbnN0IGNoYXIqIHRlcm1pbmF0b3IgPSB0ZXJtaW5hdG9yQ1N0cmluZy5k
YXRhKCk7CiAgICAgbGluZSA9IGRlbGltaXRlckVuZDsgLy8gU3RhcnQgZnJvbSB0aGUgey4KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQXNzZXJ0aW9ucy5jcHAgYi9Tb3VyY2UvV1RGL3d0
Zi9Bc3NlcnRpb25zLmNwcAppbmRleCBjOTNiYWY0MTMzYjZmMzg2YTczZjIwN2I2ZWY2NWYxOTIz
YTQ0NjM4Li4yY2QyNTE4OWIzZDc0MDkxZmRhNDhiMmFiY2EzYjBkMjFhY2IyMDM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9B
c3NlcnRpb25zLmNwcApAQCAtNDY2LDcgKzQ2Niw3IEBAIHN0YXRpYyB2b2lkIFdURkxvZ1ZhTGlz
dChXVEZMb2dDaGFubmVsKiBjaGFubmVsLCBjb25zdCBjaGFyKiBmb3JtYXQsIHZhX2xpc3QgYXJn
CiAgICAgQUxMT1dfTk9OTElURVJBTF9GT1JNQVRfRU5ECiAKICAgICBpZiAoIWxvZ2dpbmdTdHJp
bmcuZW5kc1dpdGgoJ1xuJykpCi0gICAgICAgIGxvZ2dpbmdTdHJpbmcuYXBwZW5kKCdcbicpOwor
ICAgICAgICBsb2dnaW5nU3RyaW5nID0gbWFrZVN0cmluZyhsb2dnaW5nU3RyaW5nLCAnXG4nKTsK
IAogICAgIGxvZ2dpbmdBY2N1bXVsYXRvcigpLmFjY3VtdWxhdGUobG9nZ2luZ1N0cmluZyk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9VUkwu
Y3BwCmluZGV4IDJjMjIxZjRlYjE5OGViMTdlNGZhOTBmZDIzOWQ0ODhlNTRlYmVhZGIuLjU3Njhl
Mzg4NzgxODc0NmU3NWNkYjQ1ZWI2NWQzMzg1ODE3ODdiMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL1VSTC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvVVJMLmNwcApAQCAtMTM1LDcgKzEz
NSw3IEBAIFN0cmluZ1ZpZXcgVVJMOjpwcm90b2NvbCgpIGNvbnN0CiAgICAgaWYgKCFtX2lzVmFs
aWQpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICByZXR1cm4gU3RyaW5nVmlldyhtX3N0cmlu
Zykuc3Vic3RyaW5nKDAsIG1fc2NoZW1lRW5kKTsKKyAgICByZXR1cm4gU3RyaW5nVmlldyhtX3N0
cmluZykubGVmdChtX3NjaGVtZUVuZCk7CiB9CiAKIFN0cmluZ1ZpZXcgVVJMOjpob3N0KCkgY29u
c3QKQEAgLTE2MiwxMCArMTYyLDEwIEBAIFN0cmluZyBVUkw6Omhvc3RBbmRQb3J0KCkgY29uc3QK
IFN0cmluZyBVUkw6OnByb3RvY29sSG9zdEFuZFBvcnQoKSBjb25zdAogewogICAgIGlmICghaGFz
Q3JlZGVudGlhbHMoKSkKLSAgICAgICAgcmV0dXJuIG1fc3RyaW5nLnN1YnN0cmluZygwLCBwYXRo
U3RhcnQoKSk7CisgICAgICAgIHJldHVybiBtX3N0cmluZy5sZWZ0KHBhdGhTdGFydCgpKTsKIAog
ICAgIHJldHVybiBtYWtlU3RyaW5nKAotICAgICAgICBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJz
dHJpbmcoMCwgbV91c2VyU3RhcnQpLAorICAgICAgICBTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0
KG1fdXNlclN0YXJ0KSwKICAgICAgICAgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKGhv
c3RTdGFydCgpLCBwYXRoU3RhcnQoKSAtIGhvc3RTdGFydCgpKQogICAgICk7CiB9CkBAIC0zNzcs
NyArMzc3LDcgQEAgU3RyaW5nVmlldyBVUkw6OnBhdGgoKSBjb25zdAogYm9vbCBVUkw6OnNldFBy
b3RvY29sKFN0cmluZ1ZpZXcgbmV3UHJvdG9jb2wpCiB7CiAgICAgLy8gRmlyZWZveCBhbmQgSUUg
cmVtb3ZlIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGZpcnN0ICc6Jy4KLSAgICBhdXRvIG5ld1Byb3Rv
Y29sUHJlZml4ID0gbmV3UHJvdG9jb2wuc3Vic3RyaW5nKDAsIG5ld1Byb3RvY29sLmZpbmQoJzon
KSk7CisgICAgYXV0byBuZXdQcm90b2NvbFByZWZpeCA9IG5ld1Byb3RvY29sLmxlZnQobmV3UHJv
dG9jb2wuZmluZCgnOicpKTsKICAgICBhdXRvIG5ld1Byb3RvY29sQ2Fub25pY2FsaXplZCA9IFVS
TFBhcnNlcjo6bWF5YmVDYW5vbmljYWxpemVTY2hlbWUobmV3UHJvdG9jb2xQcmVmaXgpOwogICAg
IGlmICghbmV3UHJvdG9jb2xDYW5vbmljYWxpemVkKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC00NTcsNyArNDU3LDcgQEAgdm9pZCBVUkw6OnNldEhvc3QoU3RyaW5nVmlldyBuZXdIb3N0KQog
ICAgICAgICByZXR1cm47CiAKICAgICBpZiAoYXV0byBpbmRleCA9IG5ld0hvc3QuZmluZChoYXNT
cGVjaWFsU2NoZW1lKCkgPyBzbGFzaEhhc2hPclF1ZXN0aW9uTWFyayA6IGZvcndhcmRTbGFzaEhh
c2hPclF1ZXN0aW9uTWFyayk7IGluZGV4ICE9IG5vdEZvdW5kKQotICAgICAgICBuZXdIb3N0ID0g
bmV3SG9zdC5zdWJzdHJpbmcoMCwgaW5kZXgpOworICAgICAgICBuZXdIb3N0ID0gbmV3SG9zdC5s
ZWZ0KGluZGV4KTsKIAogICAgIFZlY3RvcjxVQ2hhciwgNTEyPiBlbmNvZGVkSG9zdE5hbWU7CiAg
ICAgaWYgKGhhc1NwZWNpYWxTY2hlbWUoKSAmJiAhYXBwZW5kRW5jb2RlZEhvc3RuYW1lKGVuY29k
ZWRIb3N0TmFtZSwgbmV3SG9zdCkpCkBAIC01MDAsNyArNTAwLDcgQEAgdm9pZCBVUkw6OnNldEhv
c3RBbmRQb3J0KFN0cmluZ1ZpZXcgaG9zdEFuZFBvcnQpCiAgICAgYXV0byBjb2xvbkluZGV4ID0g
aG9zdE5hbWUucmV2ZXJzZUZpbmQoJzonKTsKICAgICBpZiAoY29sb25JbmRleCAhPSBub3RGb3Vu
ZCkgewogICAgICAgICBwb3J0U3RyaW5nID0gaG9zdE5hbWUuc3Vic3RyaW5nKGNvbG9uSW5kZXgg
KyAxKTsKLSAgICAgICAgaG9zdE5hbWUgPSBob3N0TmFtZS5zdWJzdHJpbmcoMCwgY29sb25JbmRl
eCk7CisgICAgICAgIGhvc3ROYW1lID0gaG9zdE5hbWUubGVmdChjb2xvbkluZGV4KTsKICAgICAg
ICAgLy8gTXVsdGlwbGUgY29sb25zIGFyZSBhY2NlcHRhYmxlIG9ubHkgaW4gY2FzZSBvZiBJUHY2
LgogICAgICAgICBpZiAoaG9zdE5hbWUuY29udGFpbnMoJzonKSAmJiAhaG9zdE5hbWUuc3RhcnRz
V2l0aCgnWycpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtODM3LDcgKzgzNyw3IEBAIFN0cmlu
ZyBVUkw6OnN0cmlwcGVkRm9yVXNlQXNSZWZlcnJlcigpIGNvbnN0CiAgICAgICAgIHJldHVybiBt
X3N0cmluZzsKIAogICAgIHJldHVybiBtYWtlU3RyaW5nKAotICAgICAgICBTdHJpbmdWaWV3KG1f
c3RyaW5nKS5zdWJzdHJpbmcoMCwgbV91c2VyU3RhcnQpLAorICAgICAgICBTdHJpbmdWaWV3KG1f
c3RyaW5nKS5sZWZ0KG1fdXNlclN0YXJ0KSwKICAgICAgICAgU3RyaW5nVmlldyhtX3N0cmluZyku
c3Vic3RyaW5nKGVuZCwgbV9xdWVyeUVuZCAtIGVuZCkKICAgICApOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvVVJMUGFyc2VyLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1VSTFBhcnNlci5j
cHAKaW5kZXggZmZkYzhkMzhmZWI1ZGQxMWU2Njk3NTA4YzI4ZGI0ODFjZDNmMDFkOS4uYmNkOWE3
Y2E2MzUyNDQ5NmQxODc1ZmM5MWE0ZTZmZDRkMTgwMWRlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvVVJMUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9VUkxQYXJzZXIuY3BwCkBA
IC0yNTEyLDcgKzI1MTIsNyBAQCB2b2lkIFVSTFBhcnNlcjo6YWRkTm9uU3BlY2lhbERvdFNsYXNo
KCkKIHsKICAgICBhdXRvIG9sZFBhdGhTdGFydCA9IG1fdXJsLm1faG9zdEVuZCArIG1fdXJsLm1f
cG9ydExlbmd0aDsKICAgICBhdXRvJiBvbGRTdHJpbmcgPSBtX3VybC5tX3N0cmluZzsKLSAgICBt
X3VybC5tX3N0cmluZyA9IG1ha2VTdHJpbmcob2xkU3RyaW5nLnN1YnN0cmluZygwLCBvbGRQYXRo
U3RhcnQgKyAxKSwgIi4vIiwgb2xkU3RyaW5nLnN1YnN0cmluZyhvbGRQYXRoU3RhcnQgKyAxKSk7
CisgICAgbV91cmwubV9zdHJpbmcgPSBtYWtlU3RyaW5nKG9sZFN0cmluZy5sZWZ0KG9sZFBhdGhT
dGFydCArIDEpLCAiLi8iLCBvbGRTdHJpbmcuc3Vic3RyaW5nKG9sZFBhdGhTdGFydCArIDEpKTsK
ICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCArPSAyOwogICAgIG1fdXJsLm1fcGF0aEVu
ZCArPSAyOwogICAgIG1fdXJsLm1fcXVlcnlFbmQgKz0gMjsKQEAgLTI4OTEsNyArMjg5MSw3IEBA
IGF1dG8gVVJMUGFyc2VyOjpwYXJzZVVSTEVuY29kZWRGb3JtKFN0cmluZ1ZpZXcgaW5wdXQpIC0+
IFVSTEVuY29kZWRGb3JtCiAgICAgICAgICAgICBpZiAobmFtZSkKICAgICAgICAgICAgICAgICBv
dXRwdXQuYXBwZW5kKHsgbmFtZS52YWx1ZSgpLCBlbXB0eVN0cmluZygpIH0pOwogICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgYXV0byBuYW1lID0gZm9ybVVSTERlY29kZShieXRlcy5zdWJz
dHJpbmcoMCwgZXF1YWxJbmRleCkudG9TdHJpbmcoKS5yZXBsYWNlKCcrJywgMHgyMCkpOworICAg
ICAgICAgICAgYXV0byBuYW1lID0gZm9ybVVSTERlY29kZShieXRlcy5sZWZ0KGVxdWFsSW5kZXgp
LnRvU3RyaW5nKCkucmVwbGFjZSgnKycsIDB4MjApKTsKICAgICAgICAgICAgIGF1dG8gdmFsdWUg
PSBmb3JtVVJMRGVjb2RlKGJ5dGVzLnN1YnN0cmluZyhlcXVhbEluZGV4ICsgMSkudG9TdHJpbmco
KS5yZXBsYWNlKCcrJywgMHgyMCkpOwogICAgICAgICAgICAgaWYgKG5hbWUgJiYgdmFsdWUpCiAg
ICAgICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCh7IG5hbWUudmFsdWUoKSwgdmFsdWUudmFsdWUo
KSB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VVSUQuY3BwIGIvU291cmNlL1dURi93
dGYvVVVJRC5jcHAKaW5kZXggNGI4OTAwMDQ3YmU5YjU2YjZhNmVjMTZlMTM5MTQ1NjZlZWZkOTFj
MC4uYTgwMTMwMDQ4MDcwZjE2MjVmNDgwNjU2NGU0M2RlYWMyNjVkNGJkZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvVVVJRC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvVVVJRC5jcHAKQEAg
LTExMyw3ICsxMTMsNyBAQCBzdGQ6Om9wdGlvbmFsPFVVSUQ+IFVVSUQ6OnBhcnNlKFN0cmluZ1Zp
ZXcgdmFsdWUpCiAgICAgaWYgKHZhbHVlWzBdID09ICcrJyB8fCB2YWx1ZVs5XSA9PSAnKycgIHx8
IHZhbHVlWzE5XSA9PSAnKycgfHwgdmFsdWVbMjRdID09ICcrJykKICAgICAgICAgcmV0dXJuIHsg
fTsKIAotICAgIGF1dG8gZmlyc3RWYWx1ZSA9IHBhcnNlSW50ZWdlcjx1aW50NjRfdD4odmFsdWUu
c3Vic3RyaW5nKDAsIDgpLCAxNik7CisgICAgYXV0byBmaXJzdFZhbHVlID0gcGFyc2VJbnRlZ2Vy
PHVpbnQ2NF90Pih2YWx1ZS5sZWZ0KDgpLCAxNik7CiAgICAgaWYgKCFmaXJzdFZhbHVlKQogICAg
ICAgICByZXR1cm4geyB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmlu
Z0J1aWxkZXIuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oCmluZGV4IGNh
ZDA5NTNiNTI4YTJkMDllNDIyYTg4MjliNzJjMzI4YmQxMjZkYmYuLmI0MTQzMmYxNzg4NTUwYWRl
NTI2NDRlYWM5OGZhYmNjNTk1YTYyNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
U3RyaW5nQnVpbGRlci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5o
CkBAIC02MSw2ICs2MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZChjb25zdCBBdG9tU3Ry
aW5nJiBzdHJpbmcpIHsgYXBwZW5kKHN0cmluZy5zdHJpbmcoKSk7IH0KICAgICB2b2lkIGFwcGVu
ZChjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIGFwcGVuZChTdHJpbmdWaWV3KTsKKyAgICB2b2lk
IGFwcGVuZChBU0NJSUxpdGVyYWwpOwogICAgIHZvaWQgYXBwZW5kKFVDaGFyKTsKICAgICB2b2lk
IGFwcGVuZChMQ2hhcik7CiAgICAgdm9pZCBhcHBlbmQoY2hhciBjaGFyYWN0ZXIpIHsgYXBwZW5k
KHN0YXRpY19jYXN0PExDaGFyPihjaGFyYWN0ZXIpKTsgfQpAQCAtMjIxLDYgKzIyMiwxMSBAQCBp
bmxpbmUgdm9pZCBTdHJpbmdCdWlsZGVyOjphcHBlbmQoU3RyaW5nVmlldyBzdHJpbmcpCiAgICAg
ICAgIGFwcGVuZENoYXJhY3RlcnMoc3RyaW5nLmNoYXJhY3RlcnMxNigpLCBzdHJpbmcubGVuZ3Ro
KCkpOwogfQogCitpbmxpbmUgdm9pZCBTdHJpbmdCdWlsZGVyOjphcHBlbmQoQVNDSUlMaXRlcmFs
IHN0cmluZykKK3sKKyAgICBhcHBlbmRDaGFyYWN0ZXJzKHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBz
dHJpbmcubGVuZ3RoKCkpOworfQorCiBpbmxpbmUgdm9pZCBTdHJpbmdCdWlsZGVyOjphcHBlbmRT
dWJzdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQg
bGVuZ3RoKQogewogICAgIGFwcGVuZChTdHJpbmdWaWV3IHsgc3RyaW5nIH0uc3Vic3RyaW5nKG9m
ZnNldCwgbGVuZ3RoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmlu
Zy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKaW5kZXggZDc3N2E5Nzlj
ODQ1ZWMxMjlmNGZmYTVlMWRlMjExODNhYmM2NTJjOC4uZGM5NDEwNGI1OTJkMTA4ZDAwYjgyNTgw
NzYyYjExNTE4ZjA3Y2RkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJp
bmcuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcApAQCAtNzMsODAg
KzczLDYgQEAgU3RyaW5nOjpTdHJpbmcoY29uc3QgY2hhciogbnVsbFRlcm1pbmF0ZWRTdHJpbmcp
CiAgICAgICAgIG1faW1wbCA9IFN0cmluZ0ltcGw6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNv
bnN0IExDaGFyKj4obnVsbFRlcm1pbmF0ZWRTdHJpbmcpKTsKIH0KIAotdm9pZCBTdHJpbmc6OmFw
cGVuZChjb25zdCBTdHJpbmcmIG90aGVyU3RyaW5nKQotewotICAgIC8vIEZJWE1FOiBUaGlzIGlz
IGV4dHJlbWVseSBpbmVmZmljaWVudC4gU28gbXVjaCBzbyB0aGF0IHdlIG1pZ2h0IHdhbnQgdG8g
dGFrZSB0aGlzIG91dCBvZiBTdHJpbmcncyBBUEkuCi0KLSAgICBpZiAoIW1faW1wbCkgewotICAg
ICAgICBtX2ltcGwgPSBvdGhlclN0cmluZy5tX2ltcGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBpZiAob3RoZXJTdHJpbmcuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBhdXRvIGxlbmd0aCA9IG1faW1wbC0+bGVuZ3RoKCk7Ci0gICAgYXV0byBvdGhlckxlbmd0aCA9
IG90aGVyU3RyaW5nLm1faW1wbC0+bGVuZ3RoKCk7Ci0gICAgaWYgKG90aGVyTGVuZ3RoID4gTWF4
TGVuZ3RoIC0gbGVuZ3RoKQotICAgICAgICBDUkFTSCgpOwotCi0gICAgaWYgKG1faW1wbC0+aXM4
Qml0KCkgJiYgb3RoZXJTdHJpbmcubV9pbXBsLT5pczhCaXQoKSkgewotICAgICAgICBMQ2hhciog
ZGF0YTsKLSAgICAgICAgYXV0byBuZXdJbXBsID0gU3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFs
aXplZChsZW5ndGggKyBvdGhlckxlbmd0aCwgZGF0YSk7Ci0gICAgICAgIFN0cmluZ0ltcGw6OmNv
cHlDaGFyYWN0ZXJzKGRhdGEsIG1faW1wbC0+Y2hhcmFjdGVyczgoKSwgbGVuZ3RoKTsKLSAgICAg
ICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoZGF0YSArIGxlbmd0aCwgb3RoZXJTdHJpbmcu
bV9pbXBsLT5jaGFyYWN0ZXJzOCgpLCBvdGhlckxlbmd0aCk7Ci0gICAgICAgIG1faW1wbCA9IFdU
Rk1vdmUobmV3SW1wbCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgVUNoYXIqIGRhdGE7
Ci0gICAgYXV0byBuZXdJbXBsID0gU3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFsaXplZChsZW5n
dGggKyBvdGhlckxlbmd0aCwgZGF0YSk7Ci0gICAgU3RyaW5nVmlldygqbV9pbXBsKS5nZXRDaGFy
YWN0ZXJzV2l0aFVwY29udmVydChkYXRhKTsKLSAgICBTdHJpbmdWaWV3KCpvdGhlclN0cmluZy5t
X2ltcGwpLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGRhdGEgKyBsZW5ndGgpOwotICAgIG1f
aW1wbCA9IFdURk1vdmUobmV3SW1wbCk7Ci19Ci0KLXZvaWQgU3RyaW5nOjphcHBlbmQoTENoYXIg
Y2hhcmFjdGVyKQotewotICAgIC8vIEZJWE1FOiBUaGlzIGlzIGV4dHJlbWVseSBpbmVmZmljaWVu
dC4gU28gbXVjaCBzbyB0aGF0IHdlIG1pZ2h0IHdhbnQgdG8gdGFrZSB0aGlzIG91dCBvZiBTdHJp
bmcncyBBUEkuCi0KLSAgICBpZiAoIW1faW1wbCkgewotICAgICAgICBtX2ltcGwgPSBTdHJpbmdJ
bXBsOjpjcmVhdGUoJmNoYXJhY3RlciwgMSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAg
aWYgKCFpczhCaXQoKSkgewotICAgICAgICBhcHBlbmQoc3RhdGljX2Nhc3Q8VUNoYXI+KGNoYXJh
Y3RlcikpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChtX2ltcGwtPmxlbmd0aCgp
ID49IE1heExlbmd0aCkKLSAgICAgICAgQ1JBU0goKTsKLSAgICBMQ2hhciogZGF0YTsKLSAgICBh
dXRvIG5ld0ltcGwgPSBTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRpYWxpemVkKG1faW1wbC0+bGVu
Z3RoKCkgKyAxLCBkYXRhKTsKLSAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhkYXRhLCBt
X2ltcGwtPmNoYXJhY3RlcnM4KCksIG1faW1wbC0+bGVuZ3RoKCkpOwotICAgIGRhdGFbbV9pbXBs
LT5sZW5ndGgoKV0gPSBjaGFyYWN0ZXI7Ci0gICAgbV9pbXBsID0gV1RGTW92ZShuZXdJbXBsKTsK
LX0KLQotdm9pZCBTdHJpbmc6OmFwcGVuZChVQ2hhciBjaGFyYWN0ZXIpCi17Ci0gICAgLy8gRklY
TUU6IFRoaXMgaXMgZXh0cmVtZWx5IGluZWZmaWNpZW50LiBTbyBtdWNoIHNvIHRoYXQgd2UgbWln
aHQgd2FudCB0byB0YWtlIHRoaXMgb3V0IG9mIFN0cmluZydzIEFQSS4KLQotICAgIGlmICghbV9p
bXBsKSB7Ci0gICAgICAgIG1faW1wbCA9IFN0cmluZ0ltcGw6OmNyZWF0ZSgmY2hhcmFjdGVyLCAx
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoaXNMYXRpbjEoY2hhcmFjdGVyKSAm
JiBpczhCaXQoKSkgewotICAgICAgICBhcHBlbmQoc3RhdGljX2Nhc3Q8TENoYXI+KGNoYXJhY3Rl
cikpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChtX2ltcGwtPmxlbmd0aCgpID49
IE1heExlbmd0aCkKLSAgICAgICAgQ1JBU0goKTsKLSAgICBVQ2hhciogZGF0YTsKLSAgICBhdXRv
IG5ld0ltcGwgPSBTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRpYWxpemVkKG1faW1wbC0+bGVuZ3Ro
KCkgKyAxLCBkYXRhKTsKLSAgICBTdHJpbmdWaWV3KCptX2ltcGwpLmdldENoYXJhY3RlcnNXaXRo
VXBjb252ZXJ0KGRhdGEpOwotICAgIGRhdGFbbV9pbXBsLT5sZW5ndGgoKV0gPSBjaGFyYWN0ZXI7
Ci0gICAgbV9pbXBsID0gV1RGTW92ZShuZXdJbXBsKTsKLX0KLQogaW50IGNvZGVQb2ludENvbXBh
cmUoY29uc3QgU3RyaW5nJiBhLCBjb25zdCBTdHJpbmcmIGIpCiB7CiAgICAgcmV0dXJuIGNvZGVQ
b2ludENvbXBhcmUoYS5pbXBsKCksIGIuaW1wbCgpKTsKQEAgLTE2Nyw3ICs5MywxMCBAQCB2b2lk
IFN0cmluZzo6aW5zZXJ0KGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25lZCBwb3NpdGlvbikK
ICAgICB9CiAKICAgICBpZiAocG9zaXRpb24gPj0gbGVuZ3RoKCkpIHsKLSAgICAgICAgYXBwZW5k
KHN0cmluZyk7CisgICAgICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCisgICAgICAgICAgICBhcHBl
bmQoc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5ndGgoKSk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIGFwcGVuZChzdHJpbmcuY2hhcmFjdGVyczE2KCksIHN0cmluZy5sZW5ndGgo
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE3NywxNCArMTA2LDE0IEBAIHZvaWQg
U3RyaW5nOjppbnNlcnQoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVuc2lnbmVkIHBvc2l0aW9uKQog
ICAgIGlmIChpczhCaXQoKSAmJiBzdHJpbmcuaXM4Qml0KCkpIHsKICAgICAgICAgTENoYXIqIGRh
dGE7CiAgICAgICAgIGF1dG8gbmV3U3RyaW5nID0gU3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFs
aXplZChsZW5ndGgoKSArIGxlbmd0aFRvSW5zZXJ0LCBkYXRhKTsKLSAgICAgICAgU3RyaW5nVmll
dygqbV9pbXBsKS5zdWJzdHJpbmcoMCwgcG9zaXRpb24pLmdldENoYXJhY3RlcnNXaXRoVXBjb252
ZXJ0KGRhdGEpOworICAgICAgICBTdHJpbmdWaWV3KCptX2ltcGwpLmxlZnQocG9zaXRpb24pLmdl
dENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGRhdGEpOwogICAgICAgICBTdHJpbmdWaWV3KHN0cmlu
ZykuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoZGF0YSArIHBvc2l0aW9uKTsKICAgICAgICAg
U3RyaW5nVmlldygqbV9pbXBsKS5zdWJzdHJpbmcocG9zaXRpb24pLmdldENoYXJhY3RlcnNXaXRo
VXBjb252ZXJ0KGRhdGEgKyBwb3NpdGlvbiArIGxlbmd0aFRvSW5zZXJ0KTsKICAgICAgICAgbV9p
bXBsID0gV1RGTW92ZShuZXdTdHJpbmcpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIFVDaGFyKiBk
YXRhOwogICAgICAgICBhdXRvIG5ld1N0cmluZyA9IFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlh
bGl6ZWQobGVuZ3RoKCkgKyBsZW5ndGhUb0luc2VydCwgZGF0YSk7Ci0gICAgICAgIFN0cmluZ1Zp
ZXcoKm1faW1wbCkuc3Vic3RyaW5nKDAsIHBvc2l0aW9uKS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29u
dmVydChkYXRhKTsKKyAgICAgICAgU3RyaW5nVmlldygqbV9pbXBsKS5sZWZ0KHBvc2l0aW9uKS5n
ZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChkYXRhKTsKICAgICAgICAgU3RyaW5nVmlldyhzdHJp
bmcpLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGRhdGEgKyBwb3NpdGlvbik7CiAgICAgICAg
IFN0cmluZ1ZpZXcoKm1faW1wbCkuc3Vic3RyaW5nKHBvc2l0aW9uKS5nZXRDaGFyYWN0ZXJzV2l0
aFVwY29udmVydChkYXRhICsgcG9zaXRpb24gKyBsZW5ndGhUb0luc2VydCk7CiAgICAgICAgIG1f
aW1wbCA9IFdURk1vdmUobmV3U3RyaW5nKTsKQEAgLTI0NCw3ICsxNzMsNyBAQCB2b2lkIFN0cmlu
Zzo6YXBwZW5kKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzVG9BcHBlbmQsIHVuc2lnbmVkIGxlbmd0
aFRvQXBwZW5kKQogICAgICAgICByZXR1cm47CiAKICAgICB1bnNpZ25lZCBzdHJMZW5ndGggPSBt
X2ltcGwtPmxlbmd0aCgpOwotICAgIAorCiAgICAgQVNTRVJUKGNoYXJhY3RlcnNUb0FwcGVuZCk7
CiAgICAgaWYgKGxlbmd0aFRvQXBwZW5kID4gTWF4TGVuZ3RoIC0gc3RyTGVuZ3RoKQogICAgICAg
ICBDUkFTSCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaCBi
L1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKaW5kZXggYjY0OTcwOTgwYWJlM2YzYzc5
Yjk0MmZhMDgyNjU2NjNjZTgyOWJkNS4uMDFiOGM0MDJkYWE3ZTIzNzFiMjkwYTFkMDRmNzg5YzU1
YTJhZmNmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCkBAIC0xOTAsMTIgKzE5MCw2IEBAIHB1
YmxpYzoKICAgICBib29sIGVuZHNXaXRoKGNoYXIgY2hhcmFjdGVyKSBjb25zdCB7IHJldHVybiBl
bmRzV2l0aChzdGF0aWNfY2FzdDxVQ2hhcj4oY2hhcmFjdGVyKSk7IH0KICAgICBib29sIGhhc0lu
Zml4RW5kaW5nQXQoU3RyaW5nVmlldyBzdWZmaXgsIHVuc2lnbmVkIGVuZCkgY29uc3Q7CiAKLSAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBlbmQoY29uc3QgU3RyaW5nJik7Ci0gICAgV1RG
X0VYUE9SVF9QUklWQVRFIHZvaWQgYXBwZW5kKExDaGFyKTsKLSAgICB2b2lkIGFwcGVuZChjaGFy
IGNoYXJhY3RlcikgeyBhcHBlbmQoc3RhdGljX2Nhc3Q8TENoYXI+KGNoYXJhY3RlcikpOyB9Owot
ICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGFwcGVuZChVQ2hhcik7Ci0gICAgV1RGX0VYUE9S
VF9QUklWQVRFIHZvaWQgYXBwZW5kKGNvbnN0IExDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKLSAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBlbmQoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBs
ZW5ndGgpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGluc2VydChjb25zdCBTdHJpbmcm
LCB1bnNpZ25lZCBwb3NpdGlvbik7CiAKICAgICBTdHJpbmcmIHJlcGxhY2UoVUNoYXIgdGFyZ2V0
LCBVQ2hhciByZXBsYWNlbWVudCk7CkBAIC0zMzgsNiArMzMyLDEwIEBAIHB1YmxpYzoKIHByaXZh
dGU6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCByZW1vdmVJbnRl
cm5hbChjb25zdCBDaGFyYWN0ZXJUeXBlKiwgdW5zaWduZWQsIHVuc2lnbmVkKTsKIAorICAgIC8v
IEZJWE1FOiBPbmx5IHVzZWQgYnkgaW5zZXJ0KCksIHdlIHNob3VsZCBjb25zaWRlciBkcm9wcGlu
ZyB0aGVtLgorICAgIHZvaWQgYXBwZW5kKGNvbnN0IExDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsK
KyAgICB2b2lkIGFwcGVuZChjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CisKICAgICB0
ZW1wbGF0ZTxib29sIGFsbG93RW1wdHlFbnRyaWVzPiB2b2lkIHNwbGl0SW50ZXJuYWwoVUNoYXIg
c2VwYXJhdG9yLCBjb25zdCBTcGxpdEZ1bmN0b3ImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxib29s
IGFsbG93RW1wdHlFbnRyaWVzPiBWZWN0b3I8U3RyaW5nPiBzcGxpdEludGVybmFsKFVDaGFyIHNl
cGFyYXRvcikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Ym9vbCBhbGxvd0VtcHR5RW50cmllcz4gVmVj
dG9yPFN0cmluZz4gc3BsaXRJbnRlcm5hbChTdHJpbmdWaWV3IHNlcGFyYXRvcikgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3Bw
CmluZGV4IDMyZWExZDQ5ZjdkZmU0YTIwMGQ5ZTVjMGM1ODM3MjYwN2I1ZGQyMDEuLjAzZTAxODJk
MzkyMTc4YWM2N2E0NmE1NTk0NzBmZjY1NzJkOTRlNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCkBAIC0xMTMsNyArMTEzLDcg
QEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWltZVR5cGU+IHBhcnNlTUlNRVR5cGUoY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSkKICAgICBpZiAoc2xhc2hJbmRleCA9PSBub3RGb3VuZCkKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIFN0cmluZyB0eXBlID0gaW5wdXQuc3Vic3Ry
aW5nKDAsIHNsYXNoSW5kZXgpOworICAgIFN0cmluZyB0eXBlID0gaW5wdXQubGVmdChzbGFzaElu
ZGV4KTsKICAgICBpZiAoIXR5cGUubGVuZ3RoKCkgfHwgIWlzVmFsaWRIVFRQVG9rZW4odHlwZSkp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcAppbmRleCBlNDM4MmIzZDM0YTI5NDc1ODBk
N2Q3OTBjYTQ0NWZlMDk1NmQyNTQxLi4wZTZjZDViMzFkNjNmM2YxOTJiMTAxNmFmMjQ0ZTE4ZWNj
ZjVhZDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJD
dXJzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNv
ci5jcHAKQEAgLTMyNiw3ICszMjYsNyBAQCBFeGNlcHRpb25PcjxSZWY8V2ViQ29yZTo6SURCUmVx
dWVzdD4+IElEQkN1cnNvcjo6ZGVsZXRlRnVuY3Rpb24oKQogCiBib29sIElEQkN1cnNvcjo6c2V0
R2V0UmVzdWx0KElEQlJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IElEQkdldFJlc3VsdCYgZ2V0UmVz
dWx0LCB1aW50NjRfdCBvcGVyYXRpb25JRCkKIHsKLSAgICBMT0coSW5kZXhlZERCLCAiSURCQ3Vy
c29yOjpzZXRHZXRSZXN1bHQgLSBjdXJyZW50IGtleSAlcyIsIGdldFJlc3VsdC5rZXlEYXRhKCku
bG9nZ2luZ1N0cmluZygpLnN1YnN0cmluZygwLCAxMDApLnV0ZjgoKS5kYXRhKCkpOworICAgIExP
RyhJbmRleGVkREIsICJJREJDdXJzb3I6OnNldEdldFJlc3VsdCAtIGN1cnJlbnQga2V5ICVzIiwg
Z2V0UmVzdWx0LmtleURhdGEoKS5sb2dnaW5nU3RyaW5nKCkubGVmdCgxMDApLnV0ZjgoKS5kYXRh
KCkpOwogICAgIEFTU0VSVChjYW5DdXJyZW50VGhyZWFkQWNjZXNzVGhyZWFkTG9jYWxEYXRhKGVm
ZmVjdGl2ZU9iamVjdFN0b3JlKCkudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVh
ZCgpKSk7CiAKICAgICBhdXRvKiBjb250ZXh0ID0gcmVxdWVzdC5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJL
ZXlEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleURhdGEu
Y3BwCmluZGV4IDQ2MGYxNzRhMzgxYWI2YWJhNGNhMjk4MzE0NTI2OThiNWQ1MjkwZDAuLjg1YjE3
ODJhYmViZjY3ZTE2M2NiNmNlOWQzM2I0NzkwYmYwNGJhZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleURhdGEuY3BwCkBAIC0zNzEsMTAgKzM3MSw4IEBA
IFN0cmluZyBJREJLZXlEYXRhOjpsb2dnaW5nU3RyaW5nKCkgY29uc3QKICAgICAgICAgcmV0dXJu
ICI8bWluaW11bT4iX3M7CiAgICAgfQogCi0gICAgaWYgKHJlc3VsdC5sZW5ndGgoKSA+IDE1MCkg
ewotICAgICAgICByZXN1bHQudHJ1bmNhdGUoMTQ3KTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZCgi
Li4uIl9zKTsKLSAgICB9CisgICAgaWYgKHJlc3VsdC5sZW5ndGgoKSA+IDE1MCkKKyAgICAgICAg
cmVzdWx0ID0gbWFrZVN0cmluZyhTdHJpbmdWaWV3KHJlc3VsdCkubGVmdCgxNDcpLCAiLi4uIl9z
KTsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJLZXlQYXRoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQktleVBhdGguY3BwCmluZGV4IGM4MjkxMTZlNjQ0NzU2Y2I3NjYxZDZjZThl
ZjY3ZjY1MjliYTkzMmMuLmJkMDA4YTFlMDczM2QyMzMyMTMxZDc3Yjk4MTZhNmZmZDI5NWY1OTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVBhdGgu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVBhdGguY3Bw
CkBAIC0xMTUsNyArMTE1LDcgQEAgSURCS2V5UGF0aExleGVyOjpUb2tlblR5cGUgSURCS2V5UGF0
aExleGVyOjpsZXhJZGVudGlmaWVyKFN0cmluZyYgZWxlbWVudCkKICAgICB3aGlsZSAoIW1fcmVt
YWluaW5nVGV4dC5pc0VtcHR5KCkgJiYgaXNJZGVudGlmaWVyQ2hhcmFjdGVyKG1fcmVtYWluaW5n
VGV4dFswXSkpCiAgICAgICAgIG1fcmVtYWluaW5nVGV4dCA9IG1fcmVtYWluaW5nVGV4dC5zdWJz
dHJpbmcoMSk7CiAKLSAgICBlbGVtZW50ID0gc3RhcnQuc3Vic3RyaW5nKDAsIHN0YXJ0Lmxlbmd0
aCgpIC0gbV9yZW1haW5pbmdUZXh0Lmxlbmd0aCgpKS50b1N0cmluZygpOworICAgIGVsZW1lbnQg
PSBzdGFydC5sZWZ0KHN0YXJ0Lmxlbmd0aCgpIC0gbV9yZW1haW5pbmdUZXh0Lmxlbmd0aCgpKS50
b1N0cmluZygpOwogICAgIHJldHVybiBUb2tlbklkZW50aWZpZXI7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVJhbmdlRGF0YS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZURhdGEuY3BwCmluZGV4
IDdjMmE4MWUyNDY0ZDRhYzZmNjkxZjZmN2FjZjliNmJhYWNiZTIxNTQuLjk0MzUxYWEyMDhmOTY4
MTQ0MGE3MWMxOTlkNjVkM2M5OGU5ZWQ5Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQktleVJhbmdlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UmFuZ2VEYXRhLmNwcApAQCAtMTExLDEwICsxMTEsOCBA
QCBib29sIElEQktleVJhbmdlRGF0YTo6aXNWYWxpZCgpIGNvbnN0CiBTdHJpbmcgSURCS2V5UmFu
Z2VEYXRhOjpsb2dnaW5nU3RyaW5nKCkgY29uc3QKIHsKICAgICBhdXRvIHJlc3VsdCA9IG1ha2VT
dHJpbmcobG93ZXJPcGVuID8gIiggIiA6ICJbICIsIGxvd2VyS2V5LmxvZ2dpbmdTdHJpbmcoKSwg
IiwgIiwgdXBwZXJLZXkubG9nZ2luZ1N0cmluZygpLCB1cHBlck9wZW4gPyAiICkiIDogIiBdIik7
Ci0gICAgaWYgKHJlc3VsdC5sZW5ndGgoKSA+IDQwMCkgewotICAgICAgICByZXN1bHQudHJ1bmNh
dGUoMzk3KTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZCgiLi4uIl9zKTsKLSAgICB9CisgICAgaWYg
KHJlc3VsdC5sZW5ndGgoKSA+IDQwMCkKKyAgICAgICAgcmVzdWx0ID0gbWFrZVN0cmluZyhTdHJp
bmdWaWV3KHJlc3VsdCkubGVmdCgzOTcpLCAiLi4uIl9zKTsKIAogICAgIHJldHVybiByZXN1bHQ7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQv
SURCSW5kZXhJbmZvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJl
ZC9JREJJbmRleEluZm8uY3BwCmluZGV4IDdhYmE4MzFkNzAwZWE5OGZlYjJjYzlhYTQ0Yzk2MmM0
YjU5NDQ3YjkuLjYwNDU0ZDVmZTVhNjI1NzA4MzhiNTM3NTMwMWZhNzVkNGRlM2M4OTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJJbmRleElu
Zm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJJ
bmRleEluZm8uY3BwCkBAIC01OSwxMCArNTksMTAgQEAgSURCSW5kZXhJbmZvIElEQkluZGV4SW5m
bzo6aXNvbGF0ZWRDb3B5KCkgJiYKIAogU3RyaW5nIElEQkluZGV4SW5mbzo6bG9nZ2luZ1N0cmlu
ZyhpbnQgaW5kZW50KSBjb25zdAogewotICAgIFN0cmluZyBpbmRlbnRTdHJpbmc7CisgICAgU3Ry
aW5nQnVpbGRlciBpbmRlbnRTdHJpbmc7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBpbmRlbnQ7
ICsraSkKICAgICAgICAgaW5kZW50U3RyaW5nLmFwcGVuZCgnICcpOwotICAgIHJldHVybiBtYWtl
U3RyaW5nKGluZGVudFN0cmluZywgIkluZGV4OiAiLCBtX25hbWUsICIgKCIsIG1faWRlbnRpZmll
ciwgIikga2V5UGF0aDogIiwgV2ViQ29yZTo6bG9nZ2luZ1N0cmluZyhtX2tleVBhdGgpLCAnXG4n
KTsKKyAgICByZXR1cm4gbWFrZVN0cmluZyhpbmRlbnRTdHJpbmcudG9TdHJpbmcoKSwgIkluZGV4
OiAiLCBtX25hbWUsICIgKCIsIG1faWRlbnRpZmllciwgIikga2V5UGF0aDogIiwgV2ViQ29yZTo6
bG9nZ2luZ1N0cmluZyhtX2tleVBhdGgpLCAnXG4nKTsKIH0KIAogU3RyaW5nIElEQkluZGV4SW5m
bzo6Y29uZGVuc2VkTG9nZ2luZ1N0cmluZygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAK
aW5kZXggMWMwMzQ1N2VkZjg4N2Y3NTk5N2M0NDQ1ZjBkMzRiZmFkYTIxN2IwZC4uNzVjMGEwOTc1
MTg1MWUwZWYxMzllZjRjNDc1OTQ1M2M1ZjIyNDZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNw
cApAQCAtMjk5LDcgKzI5OSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRJZ25vcmVJY2VD
YW5kaWRhdGUoY29uc3QgUlRDSWNlQ2FuZGlkYXRlJiBpY2VDYW5kaWRhdGUpCiAgICAgaWYgKCFh
ZGRyZXNzLmVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoIi5sb2NhbCIpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICBpZiAoIVdURjo6aXNWZXJzaW9uNFVVSUQoU3RyaW5nVmlldyB7IGFk
ZHJlc3MgfS5zdWJzdHJpbmcoMCwgYWRkcmVzcy5sZW5ndGgoKSAtIDYpKSkgeworICAgIGlmICgh
V1RGOjppc1ZlcnNpb240VVVJRChTdHJpbmdWaWV3IHsgYWRkcmVzcyB9LmxlZnQoYWRkcmVzcy5s
ZW5ndGgoKSAtIDYpKSkgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihXZWJSVEMsICJtRE5T
IGNhbmRpZGF0ZSBpcyBub3QgYSBWZXJzaW9uIDQgVVVJRCIpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ0RUTUZTZW5kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENEVE1GU2VuZGVyLmNwcAppbmRleCBhYzY2YzVlYWMzNzhjMjk3NjNhZTQyMzU1ZmNiMzdlYjJm
NDFiNWNlLi5hM2I2MWVjMGNlNWMwMTU0ZGI1OWZkNzcwNzM2ZmZiYTU0MTNjODllIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZTZW5kZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlci5j
cHAKQEAgLTEyNiw3ICsxMjYsNyBAQCB2b2lkIFJUQ0RUTUZTZW5kZXI6OnBsYXlOZXh0VG9uZSgp
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGN1cnJlbnRUb25lID0gbV90b25l
cy5zdWJzdHJpbmcoMCwgMSk7CisgICAgYXV0byBjdXJyZW50VG9uZSA9IG1fdG9uZXMubGVmdCgx
KTsKICAgICBtX3RvbmVzLnJlbW92ZSgwKTsKIAogICAgIG1fYmFja2VuZC0+cGxheVRvbmUoY3Vy
cmVudFRvbmUsIG1fZHVyYXRpb24sIG1faW50ZXJUb25lR2FwKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhRW5k
cG9pbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
R1N0cmVhbWVyTWVkaWFFbmRwb2ludC5jcHAKaW5kZXggZTE2NDcwYjhhNDI5ZDNhODUyYzRkN2Ji
MWI2NWYxZWI0M2EwMjU3Zi4uMWY5YTdmNWNmMmEyMTRmZWI5MTQwZTRhMGU1MTI5OTIxZmIyODU1
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFt
ZXIvR1N0cmVhbWVyTWVkaWFFbmRwb2ludC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFFbmRwb2ludC5jcHAKQEAgLTc0
MCw3ICs3NDAsNyBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OmFkZFJlbW90ZVN0cmVh
bShHc3RQYWQqIHBhZCkKICAgICAgICAgYXV0byBpID0gbGluZS5maW5kKGtleSk7CiAgICAgICAg
IGlmIChpICE9IG5vdEZvdW5kKSB7CiAgICAgICAgICAgICBhdXRvIHRtcCA9IGxpbmUuc3Vic3Ry
aW5nKGkgKyBrZXkuYXNjaWkoKS5sZW5ndGgoKSk7Ci0gICAgICAgICAgICBsYWJlbCA9IHRtcC5z
dWJzdHJpbmcoMCwgdG1wLmZpbmQoJyAnKSk7CisgICAgICAgICAgICBsYWJlbCA9IHRtcC5sZWZ0
KHRtcC5maW5kKCcgJykpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNw
cAppbmRleCA0MTc2ZThkNmY3ODNhNTI1YTgwZjdhNjBlYWRjNjdmNmJmZDcwMTZjLi45NDkzN2Yw
NGRiOGMzYjRkZDViZDgxZjU0M2ZmMTAwZjRmN2ZlYjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBUcmFuc2NlaXZl
ckJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGli
d2VicnRjL0xpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZC5jcHAKQEAgLTEwMCw3ICsxMDAs
NyBAQCBzdGF0aWMgaW5saW5lIEV4Y2VwdGlvbk9yPHdlYnJ0Yzo6UnRwQ29kZWNDYXBhYmlsaXR5
PiB0b1J0cENvZGVjQ2FwYWJpbGl0eShjb25zdAogICAgICAgICBhdXRvIHBvc2l0aW9uID0gcGFy
YW1ldGVyLmZpbmQoJz0nKTsKICAgICAgICAgaWYgKHBvc2l0aW9uID09IG5vdEZvdW5kKQogICAg
ICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRNb2RpZmljYXRpb25FcnJvciwgIlJU
Q1J0cENvZGVjQ2FwYWJpbGl0eSBzZHBGbXRMaW5lIGJhZGx5IGZvcm1hdGVkIl9zIH07Ci0gICAg
ICAgIHJ0Y0NvZGVjLnBhcmFtZXRlcnMuZW1wbGFjZShwYXJhbWV0ZXIuc3Vic3RyaW5nKDAsIHBv
c2l0aW9uKS51dGY4KCkuZGF0YSgpLCBwYXJhbWV0ZXIuc3Vic3RyaW5nKHBvc2l0aW9uICsgMSku
dXRmOCgpLmRhdGEoKSk7CisgICAgICAgIHJ0Y0NvZGVjLnBhcmFtZXRlcnMuZW1wbGFjZShwYXJh
bWV0ZXIubGVmdChwb3NpdGlvbikudXRmOCgpLmRhdGEoKSwgcGFyYW1ldGVyLnN1YnN0cmluZyhw
b3NpdGlvbiArIDEpLnV0ZjgoKS5kYXRhKCkpOwogICAgIH0KIAogICAgIHJldHVybiBydGNDb2Rl
YzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1
Z2luUmVwbGFjZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1lvdVR1
YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAKaW5kZXggODU3YzljMjRiYjhkZTQ2MGUyYzI3NWY5MmYz
OGExMjBiMDIwM2M1ZS4uY2JhZjQ2ZjBlZTVmZTdlNDA5MDVhNDk2ZGFkODdlNGU5ZmE5YWEyYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVnaW5S
ZXBsYWNlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1lvdVR1
YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAKQEAgLTIyMiw3ICsyMjIsNyBAQCBzdGF0aWMgVVJMIHBy
b2Nlc3NBbmRDcmVhdGVZb3VUdWJlVVJMKGNvbnN0IFVSTCYgdXJsLCBib29sJiBpc1lvdVR1YmVT
aG9ydGVuZWRVUgogICAgICAgICAgICAgcGF0aCA9IGZyYWdtZW50OwogICAgICAgICAgICAgcXVl
cnkgPSBlbXB0eVN0cmluZygpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcGF0aCA9
IGZyYWdtZW50LnN1YnN0cmluZygwLCBsb2NhdGlvbik7CisgICAgICAgICAgICBwYXRoID0gZnJh
Z21lbnQubGVmdChsb2NhdGlvbik7CiAgICAgICAgICAgICBxdWVyeSA9IGZyYWdtZW50LnN1YnN0
cmluZyhsb2NhdGlvbiArIDEpOwogICAgICAgICB9CiAgICAgICAgIGZyYWdtZW50ID0gZW1wdHlT
dHJpbmcoKTsKQEAgLTI2Miw3ICsyNjIsNyBAQCBzdGF0aWMgVVJMIHByb2Nlc3NBbmRDcmVhdGVZ
b3VUdWJlVVJMKGNvbnN0IFVSTCYgdXJsLCBib29sJiBpc1lvdVR1YmVTaG9ydGVuZWRVUgogICAg
ICAgICBzaXplX3QgYW1wZXJzYW5kTG9jYXRpb24gPSBsYXN0UGF0aENvbXBvbmVudC5maW5kKCcm
Jyk7CiAgICAgICAgIGlmIChhbXBlcnNhbmRMb2NhdGlvbiAhPSBub3RGb3VuZCkgewogICAgICAg
ICAgICAgLy8gU29tZSBVUkxzIHdlIGNhcmUgYWJvdXQgdXNlICYgaW4gcGxhY2Ugb2YgPyBmb3Ig
dGhlIGZpcnN0IHF1ZXJ5IHBhcmFtZXRlci4KLSAgICAgICAgICAgIHZpZGVvSUQgPSBsYXN0UGF0
aENvbXBvbmVudC5zdWJzdHJpbmcoMCwgYW1wZXJzYW5kTG9jYXRpb24pOworICAgICAgICAgICAg
dmlkZW9JRCA9IGxhc3RQYXRoQ29tcG9uZW50LmxlZnQoYW1wZXJzYW5kTG9jYXRpb24pOwogICAg
ICAgICAgICAgcGF0aEFmdGVyRmlyc3RBbXBlcnNhbmQgPSBsYXN0UGF0aENvbXBvbmVudC5zdWJz
dHJpbmcoYW1wZXJzYW5kTG9jYXRpb24gKyAxLCBsYXN0UGF0aENvbXBvbmVudC5sZW5ndGgoKSAt
IGFtcGVyc2FuZExvY2F0aW9uKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICB2aWRlb0lE
ID0gbGFzdFBhdGhDb21wb25lbnQ7CkBAIC0zMDQsNyArMzA0LDcgQEAgU3RyaW5nIFlvdVR1YmVQ
bHVnaW5SZXBsYWNlbWVudDo6eW91VHViZVVSTEZyb21BYnNvbHV0ZVVSTChjb25zdCBVUkwmIHNy
Y1VSTCwgY28KICAgICAgICAgQVNTRVJUKGxvY2F0aW9uT2ZWaWRlb0lESW5QYXRoKTsKICAgICAK
ICAgICAgICAgLy8gRnJvbSB0aGUgb3JpZ2luYWwgVVJMLCB3ZSBuZWVkIHRvIGdldCB0aGUgcGFy
dCBiZWZvcmUgL3BhdGgvVmlkZW9JZC4KLSAgICAgICAgbG9jYXRpb25PZlBhdGhCZWZvcmVWaWRl
b0lEID0gU3RyaW5nVmlldyhzcmNTdHJpbmcpLmZpbmQoc3JjUGF0aC5zdWJzdHJpbmcoMCwgbG9j
YXRpb25PZlZpZGVvSURJblBhdGgpKTsKKyAgICAgICAgbG9jYXRpb25PZlBhdGhCZWZvcmVWaWRl
b0lEID0gU3RyaW5nVmlldyhzcmNTdHJpbmcpLmZpbmQoc3JjUGF0aC5sZWZ0KGxvY2F0aW9uT2ZW
aWRlb0lESW5QYXRoKSk7CiAgICAgfSBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShzcmNQYXRoLCAiL3dhdGNoIikpIHsKICAgICAgICAgLy8gRnJvbSB0aGUgb3JpZ2luYWwg
VVJMLCB3ZSBuZWVkIHRvIGdldCB0aGUgcGFydCBiZWZvcmUgL3dhdGNoLyMhdj1WaWRlb0lECiAg
ICAgICAgIC8vIEZJWE1FOiBTaG91bGRuJ3QgdGhpcyBiZSBBU0NJSSBjYXNlLWluc2Vuc2l0aXZl
PwpAQCAtMzE0LDcgKzMxNCw3IEBAIFN0cmluZyBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQ6Onlv
dVR1YmVVUkxGcm9tQWJzb2x1dGVVUkwoY29uc3QgVVJMJiBzcmNVUkwsIGNvCiAKICAgICBBU1NF
UlQobG9jYXRpb25PZlBhdGhCZWZvcmVWaWRlb0lEICE9IG5vdEZvdW5kKTsKIAotICAgIGF1dG8g
c3JjVVJMUHJlZml4ID0gU3RyaW5nVmlldyhzcmNTdHJpbmcpLnN1YnN0cmluZygwLCBsb2NhdGlv
bk9mUGF0aEJlZm9yZVZpZGVvSUQpOworICAgIGF1dG8gc3JjVVJMUHJlZml4ID0gU3RyaW5nVmll
dyhzcmNTdHJpbmcpLmxlZnQobG9jYXRpb25PZlBhdGhCZWZvcmVWaWRlb0lEKTsKICAgICBhdXRv
IHF1ZXJ5ID0gc3JjVVJMLnF1ZXJ5KCk7CiAKICAgICAvLyBJZiB0aGUgVVJMIGhhcyBubyBxdWVy
eSwgdXNlIHRoZSBwb3NzaWJseSBtYWxmb3JtZWQgcXVlcnkgd2UgZm91bmQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2Uu
Y3BwCmluZGV4IGMzMDdhYzMzZTNhMWYwYzYxNzMwOWQwYzM4NThhMDRiN2Q5NTM5MTMuLjk4YjU2
OGNiMGVmMGQyMjdkNWRlYzZiYjVlZDJiZGUxYThjYmMyOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCkBA
IC04MywxMyArODMsMTIgQEAgc3RhdGljIFN0cmluZyBob3N0TmFtZShjb25zdCBVUkwmIHVybCwg
Ym9vbCBzZWN1cmUpCiAgICAgcmV0dXJuIGhvc3Q7CiB9CiAKLXN0YXRpYyBjb25zdCBzaXplX3Qg
bWF4SW5wdXRTYW1wbGVTaXplID0gMTI4Owotc3RhdGljIFN0cmluZyB0cmltSW5wdXRTYW1wbGUo
Y29uc3QgdWludDhfdCogcCwgc2l6ZV90IGxlbikKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1h
eElucHV0U2FtcGxlU2l6ZSA9IDEyODsKK3N0YXRpYyBTdHJpbmcgdHJpbUlucHV0U2FtcGxlKGNv
bnN0IHVpbnQ4X3QqIHAsIHNpemVfdCBsZW5ndGgpCiB7Ci0gICAgU3RyaW5nIHMgPSBTdHJpbmco
cCwgc3RkOjptaW48c2l6ZV90PihsZW4sIG1heElucHV0U2FtcGxlU2l6ZSkpOwotICAgIGlmIChs
ZW4gPiBtYXhJbnB1dFNhbXBsZVNpemUpCi0gICAgICAgIHMuYXBwZW5kKGhvcml6b250YWxFbGxp
cHNpcyk7Ci0gICAgcmV0dXJuIHM7CisgICAgaWYgKGxlbmd0aCA8PSBtYXhJbnB1dFNhbXBsZVNp
emUpCisgICAgICAgIHJldHVybiBTdHJpbmcocCwgbGVuZ3RoKTsKKyAgICByZXR1cm4gbWFrZVN0
cmluZyhTdHJpbmdWaWV3KHAsIGxlbmd0aCkubGVmdChtYXhJbnB1dFNhbXBsZVNpemUpLCBob3Jp
em9udGFsRWxsaXBzaXMpOwogfQogCiBzdGF0aWMgU3RyaW5nIGdlbmVyYXRlU2VjV2ViU29ja2V0
S2V5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0
cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
c29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAKaW5kZXggZGUyODUyMjYwOGRmMWI5YWY5
M2NkN2U5NGU4MzhkMzI0NTA3YmEwMC4uMWUxZjIzNTMwNzU2YTEwZTRiNDRjMTZhZWIxNTdhYWM0
ZjE3ZTY4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRl
ZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAKQEAgLTM1NSwxMiArMzU1LDEy
IEBAIHZvaWQgQVhJc29sYXRlZE9iamVjdDo6aW5pdGlhbGl6ZUF0dHJpYnV0ZURhdGEoQVhDb3Jl
T2JqZWN0JiBjb3JlT2JqZWN0LCBib29sIGlzCiAKICAgICBWZWN0b3I8U3RyaW5nPiBjbGFzc0xp
c3Q7CiAgICAgb2JqZWN0LmNsYXNzTGlzdChjbGFzc0xpc3QpOwotICAgIFN0cmluZyBjb21iaW5l
ZENsYXNzTGlzdDsKKyAgICBTdHJpbmdCdWlsZGVyIGNvbWJpbmVkQ2xhc3NMaXN0OwogICAgIGZv
ciAoYXV0byBpdCA9IGNsYXNzTGlzdC5iZWdpbigpLCBlbmQgPSBjbGFzc0xpc3QuZW5kKCk7IGl0
ICE9IGVuZDsgKytpdCkgewogICAgICAgICBjb21iaW5lZENsYXNzTGlzdC5hcHBlbmQoKml0KTsK
LSAgICAgICAgY29tYmluZWRDbGFzc0xpc3QuYXBwZW5kKCIgIl9zKTsKKyAgICAgICAgY29tYmlu
ZWRDbGFzc0xpc3QuYXBwZW5kKCcgJyk7CiAgICAgfQotICAgIHNldFByb3BlcnR5KEFYUHJvcGVy
dHlOYW1lOjpDbGFzc0xpc3QsIGNvbWJpbmVkQ2xhc3NMaXN0KTsKKyAgICBzZXRQcm9wZXJ0eShB
WFByb3BlcnR5TmFtZTo6Q2xhc3NMaXN0LCBjb21iaW5lZENsYXNzTGlzdC50b1N0cmluZygpKTsK
IAogICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpDb2xvclZhbHVlLCBvYmplY3QuY29s
b3JWYWx1ZSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlz
cGxheVRleHRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheVRleHRC
b3guY3BwCmluZGV4IGU1ODBjMzRiODgxZWE0ODEyYTI1MmMxMDY1MzhkMzI5NTEyMjA0MjAuLjVj
YTgyMjM1NmQ1M2JmZmFkZTVhZTE0ZWU1NzY1YTVlN2I1NTJlMmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlUZXh0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5VGV4dEJveC5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgU3Ry
aW5nIFRleHRCb3g6OmRlYnVnRGVzY3JpcHRpb24oKSBjb25zdAogICAgIHRleHRDb250ZW50LnJl
cGxhY2VXaXRoTGl0ZXJhbCgnXG4nLCAiXFxuIik7CiAgICAgY29uc3Qgc2l6ZV90IG1heFByaW50
ZWRMZW5ndGggPSA4MDsKICAgICBpZiAodGV4dENvbnRlbnQubGVuZ3RoKCkgPiBtYXhQcmludGVk
TGVuZ3RoKSB7Ci0gICAgICAgIGF1dG8gc3Vic3RyaW5nID0gdGV4dENvbnRlbnQuc3Vic3RyaW5n
KDAsIG1heFByaW50ZWRMZW5ndGgpOworICAgICAgICBhdXRvIHN1YnN0cmluZyA9IHRleHRDb250
ZW50LmxlZnQobWF4UHJpbnRlZExlbmd0aCk7CiAgICAgICAgIHN0cmVhbSA8PCAiIFwiIiA8PCBz
dWJzdHJpbmcgPDwgIlwi4oCmIjsKICAgICB9IGVsc2UKICAgICAgICAgc3RyZWFtIDw8ICIgXCIi
IDw8IHRleHRDb250ZW50IDw8ICJcIiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Q2hhcmFjdGVyRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAK
aW5kZXggM2M2NDA4Yzg2ZTRiYzA2OGQzMTIzZjkwN2QxNTk1ZjFlMzM3MzgyZS4uOTc1NTJlYWYx
MmVjNDQwZDk5YjhkMmJjOTg1YzZhYjc5ZGNmOGFhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0
ZXJEYXRhLmNwcApAQCAtMTEzLDEwICsxMTMsNyBAQCB1bnNpZ25lZCBDaGFyYWN0ZXJEYXRhOjpw
YXJzZXJBcHBlbmREYXRhKGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25lZCBvZmZzZXQsCiAg
ICAgICAgIHN0eWxlSW52YWxpZGF0aW9uLmVtcGxhY2UoKnBhcmVudCwgY2hpbGRDaGFuZ2UpOwog
CiAgICAgU3RyaW5nIG9sZERhdGEgPSBtX2RhdGE7Ci0gICAgaWYgKHN0cmluZy5pczhCaXQoKSkK
LSAgICAgICAgbV9kYXRhLmFwcGVuZChzdHJpbmcuY2hhcmFjdGVyczgoKSArIG9mZnNldCwgY2hh
cmFjdGVyTGVuZ3RoTGltaXQpOwotICAgIGVsc2UKLSAgICAgICAgbV9kYXRhLmFwcGVuZChzdHJp
bmcuY2hhcmFjdGVyczE2KCkgKyBvZmZzZXQsIGNoYXJhY3Rlckxlbmd0aExpbWl0KTsKKyAgICBt
X2RhdGEgPSBtYWtlU3RyaW5nKG1fZGF0YSwgU3RyaW5nVmlldyhzdHJpbmcpLnN1YnN0cmluZyhv
ZmZzZXQsIGNoYXJhY3Rlckxlbmd0aExpbWl0KSk7CiAKICAgICBBU1NFUlQoIXJlbmRlcmVyKCkg
fHwgaXM8VGV4dD4oKnRoaXMpKTsKICAgICBpZiAoYXV0byB0ZXh0ID0gZHluYW1pY0Rvd25jYXN0
PFRleHQ+KCp0aGlzKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDM4MDFiZWQzY2YyMjVi
YWIxODJhYmNhOTNmYjk3MWU4YmQ5NjY0ZTIuLjIxZWZjZGM1Y2Q0ZTNiMTYwN2QxNDAzMzA5Yjg0
YzNhOWRhZmM0NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNTU2OSw3ICs1NTY5LDcg
QEAgRXhjZXB0aW9uT3I8c3RkOjpwYWlyPEF0b21TdHJpbmcsIEF0b21TdHJpbmc+PiBEb2N1bWVu
dDo6cGFyc2VRdWFsaWZpZWROYW1lKGNvbnMKICAgICBpZiAoIWNvbG9uUG9zaXRpb24gfHwgbGVu
Z3RoIC0gY29sb25Qb3NpdGlvbiA8PSAxKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52
YWxpZENoYXJhY3RlckVycm9yIH07CiAKLSAgICByZXR1cm4gc3RkOjpwYWlyPEF0b21TdHJpbmcs
IEF0b21TdHJpbmc+IHsgU3RyaW5nVmlldyB7IHF1YWxpZmllZE5hbWUgfS5zdWJzdHJpbmcoMCwg
Y29sb25Qb3NpdGlvbikudG9BdG9tU3RyaW5nKCksIFN0cmluZ1ZpZXcgeyBxdWFsaWZpZWROYW1l
IH0uc3Vic3RyaW5nKGNvbG9uUG9zaXRpb24gKyAxKS50b0F0b21TdHJpbmcoKSB9OworICAgIHJl
dHVybiBzdGQ6OnBhaXI8QXRvbVN0cmluZywgQXRvbVN0cmluZz4geyBTdHJpbmdWaWV3IHsgcXVh
bGlmaWVkTmFtZSB9LmxlZnQoY29sb25Qb3NpdGlvbikudG9BdG9tU3RyaW5nKCksIFN0cmluZ1Zp
ZXcgeyBxdWFsaWZpZWROYW1lIH0uc3Vic3RyaW5nKGNvbG9uUG9zaXRpb24gKyAxKS50b0F0b21T
dHJpbmcoKSB9OwogfQogCiBFeGNlcHRpb25PcjxRdWFsaWZpZWROYW1lPiBEb2N1bWVudDo6cGFy
c2VRdWFsaWZpZWROYW1lKGNvbnN0IEF0b21TdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgU3Ry
aW5nJiBxdWFsaWZpZWROYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuY3BwCmluZGV4IDY4YTZmYmIzNTg0NDE0NDFh
MmIxMWI1OGZjNmYxOTQyOWYxZjBlZWEuLjRiOTAzZjhmZGYyYmFkOTM5ZGRhYmE4MGNkZTg4MDU0
NDEyOTc2ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vVGV4dC5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgRXhjZXB0aW9uT3I8
UmVmPFRleHQ+PiBUZXh0OjpzcGxpdFRleHQodW5zaWduZWQgb2Zmc2V0KQogICAgIEV2ZW50UXVl
dWVTY29wZSBzY29wZTsKICAgICBhdXRvIG9sZERhdGEgPSBkYXRhKCk7CiAgICAgYXV0byBuZXdU
ZXh0ID0gdmlydHVhbENyZWF0ZShvbGREYXRhLnN1YnN0cmluZyhvZmZzZXQpKTsKLSAgICBzZXRE
YXRhV2l0aG91dFVwZGF0ZShvbGREYXRhLnN1YnN0cmluZygwLCBvZmZzZXQpKTsKKyAgICBzZXRE
YXRhV2l0aG91dFVwZGF0ZShvbGREYXRhLmxlZnQob2Zmc2V0KSk7CiAKICAgICBkaXNwYXRjaE1v
ZGlmaWVkRXZlbnQob2xkRGF0YSk7CiAKQEAgLTIzMSwxMyArMjMxLDExIEBAIHN0YXRpYyB2b2lk
IGFwcGVuZFRleHRSZXByZXNlbnRhdGlvbihTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBjb25zdCBU
ZXh0JiB0ZXh0KQogICAgIHZhbHVlLnJlcGxhY2VXaXRoTGl0ZXJhbCgnXFwnLCAiXFxcXCIpOwog
ICAgIHZhbHVlLnJlcGxhY2VXaXRoTGl0ZXJhbCgnXG4nLCAiXFxuIik7CiAgICAgCi0gICAgY29u
c3Qgc2l6ZV90IG1heER1bXBMZW5ndGggPSAzMDsKLSAgICBpZiAodmFsdWUubGVuZ3RoKCkgPiBt
YXhEdW1wTGVuZ3RoKSB7Ci0gICAgICAgIHZhbHVlLnRydW5jYXRlKG1heER1bXBMZW5ndGggLSAx
MCk7Ci0gICAgICAgIHZhbHVlLmFwcGVuZCgiLi4uIl9zKTsKLSAgICB9Ci0KLSAgICBidWlsZGVy
LmFwcGVuZCgiIFwiIiwgdmFsdWUsICdcIicpOworICAgIGNvbnN0ZXhwciBzaXplX3QgbWF4RHVt
cExlbmd0aCA9IDMwOworICAgIGlmICh2YWx1ZS5sZW5ndGgoKSA+IG1heER1bXBMZW5ndGgpCisg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIgXCIiLCBTdHJpbmdWaWV3KHZhbHVlKS5sZWZ0KG1heER1
bXBMZW5ndGggLSAxMCksICIuLi5cIiIpOworICAgIGVsc2UKKyAgICAgICAgYnVpbGRlci5hcHBl
bmQoIiBcIiIsIHZhbHVlLCAnXCInKTsKIH0KIAogU3RyaW5nIFRleHQ6OmRlc2NyaXB0aW9uKCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuY3BwCmluZGV4IDUyNWRl
ZThkMTQwMDY4MmUyZTEwZmRhNTNhN2NlMjY4YTUxMzdmNGIuLmNiNDAxMmJjYjQxNDA4YTQ2YzRh
MWExM2Q5YjI4ODFmNzllODViNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9WaWV3
cG9ydEFyZ3VtZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1l
bnRzLmNwcApAQCAtNDMzLDcgKzQzMyw3IEBAIHN0YXRpYyBTdHJpbmcgdmlld3BvcnRFcnJvck1l
c3NhZ2UoVmlld3BvcnRFcnJvckNvZGUgZXJyb3JDb2RlLCBTdHJpbmdWaWV3IHJlcGxhCiAgICAg
ICAgIG1lc3NhZ2UucmVwbGFjZSgiJXJlcGxhY2VtZW50MiIsIHJlcGxhY2VtZW50Mik7CiAKICAg
ICBpZiAoKGVycm9yQ29kZSA9PSBVbnJlY29nbml6ZWRWaWV3cG9ydEFyZ3VtZW50VmFsdWVFcnJv
ciB8fCBlcnJvckNvZGUgPT0gVHJ1bmNhdGVkVmlld3BvcnRBcmd1bWVudFZhbHVlRXJyb3IpICYm
IHJlcGxhY2VtZW50MS5jb250YWlucygnOycpKQotICAgICAgICBtZXNzYWdlLmFwcGVuZCgiIE5v
dGUgdGhhdCAnOycgaXMgbm90IGEgc2VwYXJhdG9yIGluIHZpZXdwb3J0IHZhbHVlcy4gVGhlIGxp
c3Qgc2hvdWxkIGJlIGNvbW1hLXNlcGFyYXRlZC4iX3MpOworICAgICAgICBtZXNzYWdlID0gbWFr
ZVN0cmluZyhtZXNzYWdlLCAiIE5vdGUgdGhhdCAnOycgaXMgbm90IGEgc2VwYXJhdG9yIGluIHZp
ZXdwb3J0IHZhbHVlcy4gVGhlIGxpc3Qgc2hvdWxkIGJlIGNvbW1hLXNlcGFyYXRlZC4iX3MpOwog
CiAgICAgcmV0dXJuIG1lc3NhZ2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRD
aGVja2luZ0hlbHBlci5jcHAKaW5kZXggODBhODc4NmNmMzg3NWEzMzQ0NWZiMTQ2N2ViZDQ2YzI3
NDIxYTg0Mi4uMzE4MzQ0MWM4NTI2YTBjZGJlZTM5MGVjZDNmYjM5OTc2ZTdmZWQ0MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcApAQCAtNTgyLDcg
KzU4Miw3IEBAIHZvaWQgY2hlY2tUZXh0T2ZQYXJhZ3JhcGgoVGV4dENoZWNrZXJDbGllbnQmIGNs
aWVudCwgU3RyaW5nVmlldyB0ZXh0LCBPcHRpb25TZXQ8CiAgICAgICAgIHVuc2lnbmVkIGdyYW1t
YXJDaGVja0xlbmd0aCA9IHRleHQubGVuZ3RoKCk7CiAgICAgICAgIGZvciAoYXV0byYgbWlzc3Bl
bGxpbmcgOiBtaXNzcGVsbGluZ3MpCiAgICAgICAgICAgICBncmFtbWFyQ2hlY2tMZW5ndGggPSBz
dGQ6Om1pbjx1bnNpZ25lZD4oZ3JhbW1hckNoZWNrTGVuZ3RoLCBtaXNzcGVsbGluZy5yYW5nZS5s
b2NhdGlvbik7Ci0gICAgICAgIGZpbmRHcmFtbWF0aWNhbEVycm9ycyhjbGllbnQsIHRleHQuc3Vi
c3RyaW5nKDAsIGdyYW1tYXJDaGVja0xlbmd0aCksIGdyYW1tYXRpY2FsRXJyb3JzKTsKKyAgICAg
ICAgZmluZEdyYW1tYXRpY2FsRXJyb3JzKGNsaWVudCwgdGV4dC5sZWZ0KGdyYW1tYXJDaGVja0xl
bmd0aCksIGdyYW1tYXRpY2FsRXJyb3JzKTsKICAgICB9CiAKICAgICByZXN1bHRzID0gV1RGTW92
ZShncmFtbWF0aWNhbEVycm9ycyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1RleHRJdGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5j
cHAKaW5kZXggZTFhODkyNWU5ZmViOWNiZmIzZDU3ZWZmOTc5NzlkZTJlZjU4NmY4OC4uYmZhMjJl
M2ZlYTM5NTZjMDhmYjFlMmI0MGEwODdkMWMyNWVhNzQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVGV4dEl0ZXJhdG9yLmNwcApAQCAtMjAzMCw3ICsyMDMwLDcgQEAgaW5saW5lIHZvaWQgU2Vh
cmNoQnVmZmVyOjpwcmVwZW5kQ29udGV4dChTdHJpbmdWaWV3IHRleHQpCiAgICAgc2l6ZV90IHdv
cmRCb3VuZGFyeUNvbnRleHRTdGFydCA9IHRleHQubGVuZ3RoKCk7CiAgICAgaWYgKHdvcmRCb3Vu
ZGFyeUNvbnRleHRTdGFydCkgewogICAgICAgICBVMTZfQkFDS18xKHRleHQsIDAsIHdvcmRCb3Vu
ZGFyeUNvbnRleHRTdGFydCk7Ci0gICAgICAgIHdvcmRCb3VuZGFyeUNvbnRleHRTdGFydCA9IHN0
YXJ0T2ZMYXN0V29yZEJvdW5kYXJ5Q29udGV4dCh0ZXh0LnN1YnN0cmluZygwLCB3b3JkQm91bmRh
cnlDb250ZXh0U3RhcnQpKTsKKyAgICAgICAgd29yZEJvdW5kYXJ5Q29udGV4dFN0YXJ0ID0gc3Rh
cnRPZkxhc3RXb3JkQm91bmRhcnlDb250ZXh0KHRleHQubGVmdCh3b3JkQm91bmRhcnlDb250ZXh0
U3RhcnQpKTsKICAgICB9CiAKICAgICBzaXplX3QgdXNhYmxlTGVuZ3RoID0gc3RkOjptaW4obV9i
dWZmZXIuY2FwYWNpdHkoKSAtIG1fcHJlZml4TGVuZ3RoLCB0ZXh0Lmxlbmd0aCgpIC0gd29yZEJv
dW5kYXJ5Q29udGV4dFN0YXJ0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
VmlzaWJsZVVuaXRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNw
cAppbmRleCA0NTE4YWQ0MzkzMWM4NTI1YjhlZmYyMGM0MDliZDI2M2M4MDcyZWZkLi41YmVjODcx
NDA1MThiODM0MGM4NmFkNzQ5NGZmY2VhZDg3YWNiNjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9WaXNpYmxlVW5pdHMuY3BwCkBAIC00NTAsNyArNDUwLDcgQEAgdW5zaWduZWQgc3VmZml4TGVu
Z3RoRm9yUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmIGZvcndhcmRzU2NhblJhbmdlLCBWZWN0b3I8
VUNoYXIKICAgICB3aGlsZSAoIWZvcndhcmRzSXRlcmF0b3IuYXRFbmQoKSkgewogICAgICAgICBT
dHJpbmdWaWV3IHRleHQgPSBmb3J3YXJkc0l0ZXJhdG9yLnRleHQoKTsKICAgICAgICAgdW5zaWdu
ZWQgaSA9IGVuZE9mRmlyc3RXb3JkQm91bmRhcnlDb250ZXh0KHRleHQpOwotICAgICAgICBhcHBl
bmQoc3RyaW5nLCB0ZXh0LnN1YnN0cmluZygwLCBpKSk7CisgICAgICAgIGFwcGVuZChzdHJpbmcs
IHRleHQubGVmdChpKSk7CiAgICAgICAgIHN1ZmZpeExlbmd0aCArPSBpOwogICAgICAgICBpZiAo
aSA8IHRleHQubGVuZ3RoKCkpCiAgICAgICAgICAgICBicmVhazsKQEAgLTYzOCw3ICs2MzgsNyBA
QCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIG5leHRCb3VuZGFyeShjb25zdCBWaXNpYmxlUG9zaXRp
b24mIGMsIEJvdW5kYXJ5U2VhcmNoRnVuYwogdW5zaWduZWQgc3RhcnRXb3JkQm91bmRhcnkoU3Ry
aW5nVmlldyB0ZXh0LCB1bnNpZ25lZCBvZmZzZXQsIEJvdW5kYXJ5U2VhcmNoQ29udGV4dEF2YWls
YWJpbGl0eSBtYXlIYXZlTW9yZUNvbnRleHQsIGJvb2wmIG5lZWRNb3JlQ29udGV4dCkKIHsKICAg
ICBBU1NFUlQob2Zmc2V0KTsKLSAgICBpZiAobWF5SGF2ZU1vcmVDb250ZXh0ICYmICFzdGFydE9m
TGFzdFdvcmRCb3VuZGFyeUNvbnRleHQodGV4dC5zdWJzdHJpbmcoMCwgb2Zmc2V0KSkpIHsKKyAg
ICBpZiAobWF5SGF2ZU1vcmVDb250ZXh0ICYmICFzdGFydE9mTGFzdFdvcmRCb3VuZGFyeUNvbnRl
eHQodGV4dC5sZWZ0KG9mZnNldCkpKSB7CiAgICAgICAgIG5lZWRNb3JlQ29udGV4dCA9IHRydWU7
CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KQEAgLTY5Nyw3ICs2OTcsNyBAQCBWaXNpYmxlUG9z
aXRpb24gZW5kT2ZXb3JkKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYywgRVdvcmRTaWRlIHNpZGUp
CiAKIHN0YXRpYyB1bnNpZ25lZCBwcmV2aW91c1dvcmRQb3NpdGlvbkJvdW5kYXJ5KFN0cmluZ1Zp
ZXcgdGV4dCwgdW5zaWduZWQgb2Zmc2V0LCBCb3VuZGFyeVNlYXJjaENvbnRleHRBdmFpbGFiaWxp
dHkgbWF5SGF2ZU1vcmVDb250ZXh0LCBib29sJiBuZWVkTW9yZUNvbnRleHQpCiB7Ci0gICAgaWYg
KG1heUhhdmVNb3JlQ29udGV4dCAmJiAhc3RhcnRPZkxhc3RXb3JkQm91bmRhcnlDb250ZXh0KHRl
eHQuc3Vic3RyaW5nKDAsIG9mZnNldCkpKSB7CisgICAgaWYgKG1heUhhdmVNb3JlQ29udGV4dCAm
JiAhc3RhcnRPZkxhc3RXb3JkQm91bmRhcnlDb250ZXh0KHRleHQubGVmdChvZmZzZXQpKSkgewog
ICAgICAgICBuZWVkTW9yZUNvbnRleHQgPSB0cnVlOwogICAgICAgICByZXR1cm4gMDsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24u
bW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0KaW5kZXgg
ZWZlYzU3MmVkYjI4MGVlMWYzYTczNGUxN2YxZDZhYTAyODU5YjRkMC4uZDYzYmI5YTJhZjUyNjJm
MGUxNDcyMTU3YTQ2YjM0MzJlODBlNjdhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvRGF0YURldGVjdGlvbi5tbQpAQCAtNTc5LDcgKzU3OSw3IEBAIE5TQXJyYXkgKkRhdGFE
ZXRlY3Rpb246OmRldGVjdENvbnRlbnRJblJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiBjb250ZXh0
UmFuZ2UsIE9wCiAgICAgICAgICAgICAgICAgICAgIGxhc3RUZXh0Tm9kZVRvVXBkYXRlLT5zZXRE
YXRhKGxhc3ROb2RlQ29udGVudCk7CiAgICAgICAgICAgICAgICAgY29udGVudE9mZnNldCA9IDA7
CiAgICAgICAgICAgICAgICAgaWYgKHJhbmdlLnN0YXJ0Lm9mZnNldCA+IDApCi0gICAgICAgICAg
ICAgICAgICAgIHRleHROb2RlRGF0YSA9IGN1cnJlbnRUZXh0Tm9kZS5kYXRhKCkuc3Vic3RyaW5n
KDAsIHJhbmdlLnN0YXJ0Lm9mZnNldCk7CisgICAgICAgICAgICAgICAgICAgIHRleHROb2RlRGF0
YSA9IGN1cnJlbnRUZXh0Tm9kZS5kYXRhKCkubGVmdChyYW5nZS5zdGFydC5vZmZzZXQpOwogICAg
ICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgdGV4dE5vZGVEYXRhID0gY3VycmVudFRl
eHROb2RlLmRhdGEoKS5zdWJzdHJpbmcoY29udGVudE9mZnNldCwgcmFuZ2Uuc3RhcnQub2Zmc2V0
IC0gY29udGVudE9mZnNldCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bWFya3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAppbmRleCA3ZTU5
NTJiN2E5NjI4NzA3MGU4MDM3OThkNTlkOGZjMmY3YjM5YjliLi5iNGM5NjRkMjFhMDQzZWM3YWI5
NzkwNWJhY2U2NzQxOTBhOTU2ZjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L21hcmt1cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCkBAIC05
OTUsNyArOTk1LDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkUHJlc2VydmVNU09MaXN0cyhTdHJpbmdW
aWV3IG1hcmt1cCkKICAgICBhdXRvIHRhZ0Nsb3NlID0gbWFya3VwLmZpbmQoJz4nKTsKICAgICBp
ZiAodGFnQ2xvc2UgPT0gbm90Rm91bmQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBhdXRv
IHRhZyA9IG1hcmt1cC5zdWJzdHJpbmcoMCwgdGFnQ2xvc2UpOworICAgIGF1dG8gdGFnID0gbWFy
a3VwLmxlZnQodGFnQ2xvc2UpOwogICAgIHJldHVybiB0YWcuY29udGFpbnMoInhtbG5zOm89XCJ1
cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOm9mZmljZTpvZmZpY2VcIiIpCiAgICAgICAgICYmIHRh
Zy5jb250YWlucygieG1sbnM6dz1cInVybjpzY2hlbWFzLW1pY3Jvc29mdC1jb206b2ZmaWNlOndv
cmRcIiIpOwogfQpAQCAtMTEwMyw3ICsxMTAzLDcgQEAgc3RhdGljIHZvaWQgZmlsbENvbnRhaW5l
ckZyb21TdHJpbmcoQ29udGFpbmVyTm9kZSYgcGFyYWdyYXBoLCBjb25zdCBTdHJpbmcmIHN0cmkK
ICAgICBBU1NFUlQoc3RyaW5nLmZpbmQoJ1xuJykgPT0gbm90Rm91bmQpOwogCiAgICAgVmVjdG9y
PFN0cmluZz4gdGFiTGlzdCA9IHN0cmluZy5zcGxpdEFsbG93aW5nRW1wdHlFbnRyaWVzKCdcdCcp
OwotICAgIFN0cmluZyB0YWJUZXh0ID0gZW1wdHlTdHJpbmcoKTsKKyAgICBTdHJpbmdCdWlsZGVy
IHRhYlRleHQ7CiAgICAgYm9vbCBmaXJzdCA9IHRydWU7CiAgICAgc2l6ZV90IG51bUVudHJpZXMg
PSB0YWJMaXN0LnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bUVudHJpZXM7
ICsraSkgewpAQCAtMTExMiw4ICsxMTEyLDggQEAgc3RhdGljIHZvaWQgZmlsbENvbnRhaW5lckZy
b21TdHJpbmcoQ29udGFpbmVyTm9kZSYgcGFyYWdyYXBoLCBjb25zdCBTdHJpbmcmIHN0cmkKICAg
ICAgICAgLy8gYXBwZW5kIHRoZSBub24tdGFiIHRleHR1YWwgcGFydAogICAgICAgICBpZiAoIXMu
aXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBpZiAoIXRhYlRleHQuaXNFbXB0eSgpKSB7Ci0gICAg
ICAgICAgICAgICAgcGFyYWdyYXBoLmFwcGVuZENoaWxkKGNyZWF0ZVRhYlNwYW5FbGVtZW50KGRv
Y3VtZW50LCB0YWJUZXh0KSk7Ci0gICAgICAgICAgICAgICAgdGFiVGV4dCA9IGVtcHR5U3RyaW5n
KCk7CisgICAgICAgICAgICAgICAgcGFyYWdyYXBoLmFwcGVuZENoaWxkKGNyZWF0ZVRhYlNwYW5F
bGVtZW50KGRvY3VtZW50LCB0YWJUZXh0LnRvU3RyaW5nKCkpKTsKKyAgICAgICAgICAgICAgICB0
YWJUZXh0LmNsZWFyKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBSZWY8Tm9kZT4gdGV4
dE5vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShzdHJpbmdXaXRoUmViYWxhbmNlZFdoaXRl
c3BhY2UocywgZmlyc3QsIGkgKyAxID09IG51bUVudHJpZXMpKTsKICAgICAgICAgICAgIHBhcmFn
cmFwaC5hcHBlbmRDaGlsZCh0ZXh0Tm9kZSk7CkBAIC0xMTI0LDcgKzExMjQsNyBAQCBzdGF0aWMg
dm9pZCBmaWxsQ29udGFpbmVyRnJvbVN0cmluZyhDb250YWluZXJOb2RlJiBwYXJhZ3JhcGgsIGNv
bnN0IFN0cmluZyYgc3RyaQogICAgICAgICBpZiAoaSArIDEgIT0gbnVtRW50cmllcykKICAgICAg
ICAgICAgIHRhYlRleHQuYXBwZW5kKCdcdCcpOwogICAgICAgICBlbHNlIGlmICghdGFiVGV4dC5p
c0VtcHR5KCkpCi0gICAgICAgICAgICBwYXJhZ3JhcGguYXBwZW5kQ2hpbGQoY3JlYXRlVGFiU3Bh
bkVsZW1lbnQoZG9jdW1lbnQsIHRhYlRleHQpKTsKKyAgICAgICAgICAgIHBhcmFncmFwaC5hcHBl
bmRDaGlsZChjcmVhdGVUYWJTcGFuRWxlbWVudChkb2N1bWVudCwgdGFiVGV4dC50b1N0cmluZygp
KSk7CiAKICAgICAgICAgZmlyc3QgPSBmYWxzZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCmluZGV4IDdjMjJkZDU3MWY2YmMzMmIyM2ZiYmI1
Y2IwMTlmZmI5Yzc3MzFjNmQuLjE1NjI4ZDk1OWZiYmEyZWM3Yjg1NGQzNmU2OTAxMWIxMmU2M2Yz
ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCkBA
IC05Myw3ICs5Myw3IEBAIHByaXZhdGU6CiAgICAgaW50IG1fc2l6ZSB7IDI1NCB9OwogICAgIFVD
aGFyKiBtX2J1ZmZlcjsKICAgICBVQ2hhciogbV9kZXN0OwotICAgIFN0cmluZyBtX2NhcnJ5T3Zl
cjsKKyAgICBTdHJpbmdCdWlsZGVyIG1fY2FycnlPdmVyOwogICAgIAogICAgIExpc3RTdGF0ZSBt
X2xpc3RTdGF0ZTsKIH07CkBAIC0yNjIsMTQgKzI2MiwxNSBAQCB2b2lkIEZUUERpcmVjdG9yeURv
Y3VtZW50UGFyc2VyOjpwYXJzZUFuZEFwcGVuZE9uZUxpbmUoY29uc3QgU3RyaW5nJiBpbnB1dExp
bmUpCiAgICAgaWYgKHR5cGVSZXN1bHQgPT0gRlRQTWlzY0VudHJ5IHx8IHR5cGVSZXN1bHQgPT0g
RlRQSnVua0VudHJ5KQogICAgICAgICByZXR1cm47CiAKLSAgICBTdHJpbmcgZmlsZW5hbWUocmVz
dWx0LmZpbGVuYW1lLCByZXN1bHQuZmlsZW5hbWVMZW5ndGgpOworICAgIFN0cmluZyBmaWxlbmFt
ZTsKICAgICBpZiAocmVzdWx0LnR5cGUgPT0gRlRQRGlyZWN0b3J5RW50cnkpIHsKLSAgICAgICAg
ZmlsZW5hbWUuYXBwZW5kKCcvJyk7CisgICAgICAgIGZpbGVuYW1lID0gbWFrZVN0cmluZyhTdHJp
bmdWaWV3IHsgcmVzdWx0LmZpbGVuYW1lLCByZXN1bHQuZmlsZW5hbWVMZW5ndGggfSwgJy8nKTsK
IAogICAgICAgICAvLyBXZSBoYXZlIG5vIGludGVyZXN0IGluIGxpbmtpbmcgdG8gImN1cnJlbnQg
ZGlyZWN0b3J5IgogICAgICAgICBpZiAoZmlsZW5hbWUgPT0gIi4vIikKICAgICAgICAgICAgIHJl
dHVybjsKLSAgICB9CisgICAgfSBlbHNlCisgICAgICAgIGZpbGVuYW1lID0gU3RyaW5nKHJlc3Vs
dC5maWxlbmFtZSwgcmVzdWx0LmZpbGVuYW1lTGVuZ3RoKTsKIAogICAgIExPRyhGVFAsICJBcHBl
bmRpbmcgZW50cnkgLSAlcywgJXMiLCBmaWxlbmFtZS5hc2NpaSgpLmRhdGEoKSwgcmVzdWx0LmZp
bGVTaXplLmFzY2lpKCkuZGF0YSgpKTsKIApAQCAtMzg4LDEwICszODksMTAgQEAgdm9pZCBGVFBE
aXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6YXBwZW5kKFJlZlB0cjxTdHJpbmdJbXBsPiYmIGlucHV0
U291cmNlKQogCiAgICAgd2hpbGUgKGN1cnNvciA8IG1fZGVzdCkgewogICAgICAgICBpZiAoKmN1
cnNvciA9PSAnXG4nKSB7Ci0gICAgICAgICAgICBtX2NhcnJ5T3Zlci5hcHBlbmQoU3RyaW5nKHN0
YXJ0LCBjdXJzb3IgLSBzdGFydCkpOwotICAgICAgICAgICAgTE9HKEZUUCwgIiVzIiwgbV9jYXJy
eU92ZXIuYXNjaWkoKS5kYXRhKCkpOwotICAgICAgICAgICAgcGFyc2VBbmRBcHBlbmRPbmVMaW5l
KG1fY2FycnlPdmVyKTsKLSAgICAgICAgICAgIG1fY2FycnlPdmVyID0gU3RyaW5nKCk7CisgICAg
ICAgICAgICBtX2NhcnJ5T3Zlci5hcHBlbmQoU3RyaW5nVmlldyhzdGFydCwgY3Vyc29yIC0gc3Rh
cnQpKTsKKyAgICAgICAgICAgIExPRyhGVFAsICIlcyIsIG1fY2FycnlPdmVyLnRvU3RyaW5nKCku
YXNjaWkoKS5kYXRhKCkpOworICAgICAgICAgICAgcGFyc2VBbmRBcHBlbmRPbmVMaW5lKG1fY2Fy
cnlPdmVyLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgbV9jYXJyeU92ZXIuY2xlYXIoKTsKIAog
ICAgICAgICAgICAgc3RhcnQgPSArK2N1cnNvcjsKICAgICAgICAgfSBlbHNlIApAQCAtNDAwLDE1
ICs0MDEsMTUgQEAgdm9pZCBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6YXBwZW5kKFJlZlB0
cjxTdHJpbmdJbXBsPiYmIGlucHV0U291cmNlKQogCiAgICAgLy8gQ29weSB0aGUgcGFydGlhbCBs
aW5lIHdlIGhhdmUgbGVmdCB0byB0aGUgY2FycnlvdmVyIGJ1ZmZlcgogICAgIGlmIChjdXJzb3Ig
LSBzdGFydCA+IDEpCi0gICAgICAgIG1fY2FycnlPdmVyLmFwcGVuZChTdHJpbmcoc3RhcnQsIGN1
cnNvciAtIHN0YXJ0IC0gMSkpOworICAgICAgICBtX2NhcnJ5T3Zlci5hcHBlbmQoU3RyaW5nVmll
dyhzdGFydCwgY3Vyc29yIC0gc3RhcnQgLSAxKSk7CiB9CiAKIHZvaWQgRlRQRGlyZWN0b3J5RG9j
dW1lbnRQYXJzZXI6OmZpbmlzaCgpCiB7CiAgICAgLy8gUG9zc2libGUgdGhlIGxhc3QgbGluZSBp
biB0aGUgbGlzdGluZyBoYWQgbm8gbmV3bGluZSwgc28gdHJ5IHRvIHBhcnNlIGl0IG5vdwogICAg
IGlmICghbV9jYXJyeU92ZXIuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHBhcnNlQW5kQXBwZW5kT25l
TGluZShtX2NhcnJ5T3Zlcik7Ci0gICAgICAgIG1fY2FycnlPdmVyID0gU3RyaW5nKCk7CisgICAg
ICAgIHBhcnNlQW5kQXBwZW5kT25lTGluZShtX2NhcnJ5T3Zlci50b1N0cmluZygpKTsKKyAgICAg
ICAgbV9jYXJyeU92ZXIuY2xlYXIoKTsKICAgICB9CiAKICAgICBtX3RhYmxlRWxlbWVudCA9IG51
bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZlYXR1cmVQb2xpY3kuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9GZWF0dXJlUG9saWN5LmNwcAppbmRleCA1ODQ4ZDBhYjlj
MmQ3NTY0ZjA4ZjQ4NzUyYjkzNWUxODEwYjExODE3Li40MWUwMzFkNDYwMmNlMjUyMzgzNmQyMDMz
MDEyZTFhNzYzNjcwMWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZlYXR1cmVQ
b2xpY3kuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmVhdHVyZVBvbGljeS5jcHAKQEAg
LTE2Niw3ICsxNjYsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgdXBkYXRlTGlzdChEb2N1bWVudCYg
ZG9jdW1lbnQsIEZlYXR1cmVQb2xpY3k6OkFsbG93UnVsZSYgcnVsZQogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgcHJvY2Vzc09yaWdpbkl0ZW0oZG9jdW1lbnQsIHJ1
bGUsIHZhbHVlLnN1YnN0cmluZygwLCBwb3NpdGlvbikpOworICAgICAgICBwcm9jZXNzT3JpZ2lu
SXRlbShkb2N1bWVudCwgcnVsZSwgdmFsdWUubGVmdChwb3NpdGlvbikpOwogICAgICAgICB2YWx1
ZSA9IHZhbHVlLnN1YnN0cmluZyhwb3NpdGlvbiArIDEpLnN0cmlwTGVhZGluZ0FuZFRyYWlsaW5n
TWF0Y2hlZENoYXJhY3RlcnMoaXNIVE1MU3BhY2U8VUNoYXI+KTsKICAgICB9CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCBiNDJkOTYwNGYzNGNkZWJmNzRl
YzNjYmFmMDYyYTdlOTM3ZGU0ZDRhLi5jZjkzYzMyZDFiMDI1YWM3ZTcyMDU4OGIyMzVhNTVkZjEx
Y2Y0ZmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTE5
NCw3ICsxOTQsNyBAQCBzdHJ1Y3QgTG9nQXJndW1lbnQ8VVJMPiB7CiAKICAgICAgICAgaWYgKHVy
bC5zdHJpbmcoKS5sZW5ndGgoKSA8IG1heGltdW1VUkxMZW5ndGhGb3JMb2dnaW5nKQogICAgICAg
ICAgICAgcmV0dXJuIHVybC5zdHJpbmcoKTsKLSAgICAgICAgcmV0dXJuIHVybC5zdHJpbmcoKS5z
dWJzdHJpbmcoMCwgbWF4aW11bVVSTExlbmd0aEZvckxvZ2dpbmcpICsgIi4uLiI7CisgICAgICAg
IHJldHVybiB1cmwuc3RyaW5nKCkubGVmdChtYXhpbXVtVVJMTGVuZ3RoRm9yTG9nZ2luZykgKyAi
Li4uIjsKICNlbHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTSh1cmwpOwogICAgICAgICByZXR1cm4g
Ilt1cmxdIl9zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAKaW5kZXgg
ZTQ3YTViZDhiMzczZDViZDI1YTA0MjYwNmI2OWI0NDQ5OWU0MTc0NS4uNGVmYzQzZjViMjk0YWUy
NTA4ZWE1YWQ3ZGFmYjdkYWE4YzBhY2Y5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVHJhY2tFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFj
a0VsZW1lbnQuY3BwCkBAIC01NSw3ICs1NSw3IEBAIHN0YXRpYyBTdHJpbmcgdXJsRm9yTG9nZ2lu
Z1RyYWNrKGNvbnN0IFVSTCYgdXJsKQogICAgIAogICAgIGlmICh1cmwuc3RyaW5nKCkubGVuZ3Ro
KCkgPCBtYXhpbXVtVVJMTGVuZ3RoRm9yTG9nZ2luZykKICAgICAgICAgcmV0dXJuIHVybC5zdHJp
bmcoKTsKLSAgICByZXR1cm4gdXJsLnN0cmluZygpLnN1YnN0cmluZygwLCBtYXhpbXVtVVJMTGVu
Z3RoRm9yTG9nZ2luZykgKyAiLi4uIjsKKyAgICByZXR1cm4gdXJsLnN0cmluZygpLmxlZnQobWF4
aW11bVVSTExlbmd0aEZvckxvZ2dpbmcpICsgIi4uLiI7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxEZWNvbXBvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvVVJMRGVjb21wb3NpdGlvbi5jcHAKaW5kZXggZTRlMzBhOWI2MDRlZjFhODRkNzc1
MmJiZDhiMzcwODQ1MmExZTA4Zi4uOTM1Y2U1ZGNiNzI1OWE1ZWQ2MDk5NWEyODU3OGI2NjBjZTU5
MDRiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxEZWNvbXBvc2l0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTERlY29tcG9zaXRpb24uY3BwCkBAIC0xMTcs
MTMgKzExNywxMyBAQCB2b2lkIFVSTERlY29tcG9zaXRpb246OnNldEhvc3QoU3RyaW5nVmlldyB2
YWx1ZSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgdW5zaWduZWQgcG9ydExlbmd0aCA9
IGNvdW50QVNDSUlEaWdpdHModmFsdWUuc3Vic3RyaW5nKHNlcGFyYXRvciArIDEpKTsKICAgICAg
ICAgaWYgKCFwb3J0TGVuZ3RoKSB7Ci0gICAgICAgICAgICBmdWxsVVJMLnNldEhvc3QodmFsdWUu
c3Vic3RyaW5nKDAsIHNlcGFyYXRvcikpOworICAgICAgICAgICAgZnVsbFVSTC5zZXRIb3N0KHZh
bHVlLmxlZnQoc2VwYXJhdG9yKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBhdXRv
IHBvcnROdW1iZXIgPSBwYXJzZUludGVnZXI8dWludDE2X3Q+KHZhbHVlLnN1YnN0cmluZyhzZXBh
cmF0b3IgKyAxLCBwb3J0TGVuZ3RoKSk7CiAgICAgICAgICAgICBpZiAocG9ydE51bWJlciAmJiBX
VEY6OmlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbCgqcG9ydE51bWJlciwgZnVsbFVSTC5wcm90b2Nv
bCgpKSkKLSAgICAgICAgICAgICAgICBmdWxsVVJMLnNldEhvc3RBbmRQb3J0KHZhbHVlLnN1YnN0
cmluZygwLCBzZXBhcmF0b3IpKTsKKyAgICAgICAgICAgICAgICBmdWxsVVJMLnNldEhvc3RBbmRQ
b3J0KHZhbHVlLmxlZnQoc2VwYXJhdG9yKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgZnVsbFVSTC5zZXRIb3N0QW5kUG9ydCh2YWx1ZS5zdWJzdHJpbmcoMCwgc2VwYXJhdG9y
ICsgMSArIHBvcnRMZW5ndGgpKTsKKyAgICAgICAgICAgICAgICBmdWxsVVJMLnNldEhvc3RBbmRQ
b3J0KHZhbHVlLmxlZnQoc2VwYXJhdG9yICsgMSArIHBvcnRMZW5ndGgpKTsKICAgICAgICAgfQog
ICAgIH0KICAgICBpZiAoZnVsbFVSTC5pc1ZhbGlkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IDc3
M2Y2NzY0OGEzZDkwOGZiYTAzNzNhNzk5ZjQyOTI4YTc3OTJkOGYuLjFjNGUzNTI0YTFhNDIzODc0
NDFhMzQyZjFjYmFhMTFjMjgzMTNlOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCkBAIC0zMDc0LDcgKzMw
NzQsNyBAQCBSZWZQdHI8V2ViR0xBY3RpdmVJbmZvPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpnZXRBY3RpdmVVbmlmb3JtKFdlYkdMUHJvZ3JhbQogICAgIC8vIEZJWE1FOiBEbyB3ZSBzdGls
bCBuZWVkIHRoaXMgZm9yIHRoZSBBTkdMRSBiYWNrZW5kPwogICAgIGlmICghaXNHTEVTMkNvbXBs
aWFudCgpKQogICAgICAgICBpZiAoaW5mby5zaXplID4gMSAmJiAhaW5mby5uYW1lLmVuZHNXaXRo
KCJbMF0iKSkKLSAgICAgICAgICAgIGluZm8ubmFtZS5hcHBlbmQoIlswXSJfcyk7CisgICAgICAg
ICAgICBpbmZvLm5hbWUgPSBtYWtlU3RyaW5nKGluZm8ubmFtZSwgIlswXSJfcyk7CiAKICAgICBM
T0coV2ViR0wsICJSZXR1cm5pbmcgYWN0aXZlIHVuaWZvcm0gJWQ6ICVzIiwgaW5kZXgsIGluZm8u
bmFtZS51dGY4KCkuZGF0YSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MUGFyc2VySWRpb21zLmNwcAppbmRleCA2MWM2YTdiMzRhOTU0NGM4M2Q5ZDdlZjUwMTBjNDdm
YjY5MjdkYWIwLi41YzFlYzc0MWMyMWE0OTc5NGI0YTg2YWJiNTc1ODY3ODlhMTFjZWU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcApAQCAt
NDUyLDcgKzQ1Miw3IEBAIHN0YXRpYyBib29sIHBhcnNlSFRUUFJlZnJlc2hJbnRlcm5hbChjb25z
dCBDaGFyYWN0ZXJUeXBlKiBwb3NpdGlvbiwgY29uc3QgQ2hhcmFjCiAgICAgaWYgKHF1b3RlICE9
ICdcMCcpIHsKICAgICAgICAgc2l6ZV90IGluZGV4ID0gdXJsLmZpbmQocXVvdGUpOwogICAgICAg
ICBpZiAoaW5kZXggIT0gbm90Rm91bmQpCi0gICAgICAgICAgICB1cmwgPSB1cmwuc3Vic3RyaW5n
KDAsIGluZGV4KTsKKyAgICAgICAgICAgIHVybCA9IHVybC5sZWZ0KGluZGV4KTsKICAgICB9CiAK
ICAgICBwYXJzZWRVUkwgPSB1cmwudG9TdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxTcmNzZXRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFNyY3NldFBhcnNlci5jcHAKaW5kZXggNjA2MjBmNTZjNGViOGYwNGI0M2Rm
MmUxNTE4YTRmNmY2YmQ5Nzk4ZC4uYmFlZDMyZGM1ODlkNjM4ZWU2ZWY2MmNkOWIxNTgwMDE4YzQz
ZmM0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFNyY3NldFBh
cnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFNyY3NldFBhcnNl
ci5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCBzdGF0aWMgYm9vbCBwYXJzZURlc2NyaXB0b3JzKFZl
Y3RvcjxTdHJpbmdWaWV3PiYgZGVzY3JpcHRvcnMsIERlc2NyaXB0b3JQYXJzaW5nUgogICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgIHVuc2lnbmVkIGRlc2NyaXB0b3JDaGFyUG9zaXRpb24g
PSBkZXNjcmlwdG9yLmxlbmd0aCgpIC0gMTsKICAgICAgICAgVUNoYXIgZGVzY3JpcHRvckNoYXIg
PSBkZXNjcmlwdG9yW2Rlc2NyaXB0b3JDaGFyUG9zaXRpb25dOwotICAgICAgICBkZXNjcmlwdG9y
ID0gZGVzY3JpcHRvci5zdWJzdHJpbmcoMCwgZGVzY3JpcHRvckNoYXJQb3NpdGlvbik7CisgICAg
ICAgIGRlc2NyaXB0b3IgPSBkZXNjcmlwdG9yLmxlZnQoZGVzY3JpcHRvckNoYXJQb3NpdGlvbik7
CiAgICAgICAgIGlmIChkZXNjcmlwdG9yQ2hhciA9PSAneCcpIHsKICAgICAgICAgICAgIGlmIChy
ZXN1bHQuaGFzRGVuc2l0eSgpIHx8IHJlc3VsdC5oYXNIZWlnaHQoKSB8fCByZXN1bHQuaGFzV2lk
dGgoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcAppbmRleCBlZGNjNmFmZDZjNmYwMzhiODRj
NGU3MWY1NzhhNjg4ODQyN2M3MTAzLi5mNmFhOGE3Nzg5OWFlY2RlZDc1YzgzYzM0OGIxNWFlYjRh
ODE5YzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1
aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRl
ci5jcHAKQEAgLTI0MSw3ICsyNDEsNyBAQCBwcml2YXRlOgogICAgICAgICBza2lwTGVhZGluZzxj
aGFyYWN0ZXJQcmVkaWNhdGU+KCk7CiAgICAgICAgIGlmIChzdGFydC5sZW5ndGgoKSA9PSBtX3Rl
eHQubGVuZ3RoKCkpCiAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgICAgIHJldHVy
biBtYWtlU3RyaW5nKHN0YXJ0LnN1YnN0cmluZygwLCBzdGFydC5sZW5ndGgoKSAtIG1fdGV4dC5s
ZW5ndGgoKSkpOworICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhzdGFydC5sZWZ0KHN0YXJ0Lmxl
bmd0aCgpIC0gbV90ZXh0Lmxlbmd0aCgpKSk7CiAgICAgfQogCiAgICAgU3RyaW5nIG1ha2VTdHJp
bmcoU3RyaW5nVmlldyBzdHJpbmdWaWV3KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9XZWJWVFRQYXJzZXIuY3BwCmluZGV4IDlmNWRhNTFiZTc4ZmRhYTYxYjdlNTA5NTgzNDVkZjQz
YjVmMGJkMzYuLmE2MDNjMDgxZTkwYjQ2ZDUzNGU5MDNlZWVjY2EwNjRmNzYzZThjYWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKQEAgLTM2Miw3ICszNjIs
OCBAQCBib29sIFdlYlZUVFBhcnNlcjo6Y2hlY2tBbmRTdG9yZVN0eWxlU2hlZXQoY29uc3QgU3Ry
aW5nJiBsaW5lKQogICAgIGlmICghbGluZS5pc0VtcHR5KCkgJiYgIWxpbmUuY29udGFpbnMoIi0t
PiIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgYXV0byBzdHlsZVNoZWV0VGV4
dCA9IFdURk1vdmUobV9jdXJyZW50U291cmNlU3R5bGVTaGVldCk7CisgICAgYXV0byBzdHlsZVNo
ZWV0VGV4dCA9IG1fY3VycmVudFNvdXJjZVN0eWxlU2hlZXQudG9TdHJpbmcoKTsKKyAgICBtX2N1
cnJlbnRTb3VyY2VTdHlsZVNoZWV0LmNsZWFyKCk7CiAKICAgICAvLyBXZWJWVFRNb2RlIGRpc2Fs
bG93cyBub24tZGF0YSBVUkxzLgogICAgIGF1dG8gY29udGVudHMgPSBTdHlsZVNoZWV0Q29udGVu
dHM6OmNyZWF0ZShDU1NQYXJzZXJDb250ZXh0KFdlYlZUVE1vZGUpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1dlYlZUVFBhcnNlci5oCmluZGV4IDEyODU1MjA5MTc0Mzg1ZDA1MjA4ZGM3YTQw
NGRiYWEzMWZmMDY3NDguLjJmYjMwOTA1NDI0ZmNlOWZmMjM5MTNkYjNlOTc0YzEyM2E0NDY2M2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuaApAQCAtMTkyLDcgKzE5
Miw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fcHJldmlvdXNMaW5lOwogICAgIFN0cmluZyBt
X2N1cnJlbnRTZXR0aW5nczsKICAgICBSZWZQdHI8VlRUUmVnaW9uPiBtX2N1cnJlbnRSZWdpb247
Ci0gICAgU3RyaW5nIG1fY3VycmVudFNvdXJjZVN0eWxlU2hlZXQ7CisgICAgU3RyaW5nQnVpbGRl
ciBtX2N1cnJlbnRTb3VyY2VTdHlsZVNoZWV0OwogICAgIAogICAgIFdlYlZUVFBhcnNlckNsaWVu
dCYgbV9jbGllbnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JPdmVybGF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVy
bGF5LmNwcAppbmRleCA3NzEwYTFiNWQ4MmI0ZWNiYzZiOGZlNjI4NGNkNzZlNDQ5ODczZmM5Li5i
ZmU4YjY3OGEzMDQ1ZWM2MTMxOTgxMGExYzYxYzVkZWZhYzJiZGY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCkBAIC05NywxMCArOTcsOCBAQCBl
bnVtIGNsYXNzIEZsaXAgOiBib29sIHsgTm8sIFllcyB9OwogCiBzdGF0aWMgdm9pZCB0cnVuY2F0
ZVdpdGhFbGxpcHNpcyhTdHJpbmcmIHN0cmluZywgc2l6ZV90IGxlbmd0aCkKIHsKLSAgICBpZiAo
c3RyaW5nLmxlbmd0aCgpID4gbGVuZ3RoKSB7Ci0gICAgICAgIHN0cmluZy50cnVuY2F0ZShsZW5n
dGgpOwotICAgICAgICBzdHJpbmcuYXBwZW5kKGVsbGlwc2lzKTsKLSAgICB9CisgICAgaWYgKHN0
cmluZy5sZW5ndGgoKSA+IGxlbmd0aCkKKyAgICAgICAgc3RyaW5nID0gbWFrZVN0cmluZyhTdHJp
bmdWaWV3KHN0cmluZykubGVmdChsZW5ndGgpLCBlbGxpcHNpcyk7CiB9CiAKIHN0YXRpYyBGbG9h
dFBvaW50IGxvY2FsUG9pbnRUb1Jvb3RQb2ludChjb25zdCBGcmFtZVZpZXcqIHZpZXcsIGNvbnN0
IEZsb2F0UG9pbnQmIHBvaW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvck92ZXJsYXlMYWJlbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yT3ZlcmxheUxhYmVsLmNwcAppbmRleCBmNjExNDcxYTg1ZTNmZTY5M2RkNmYzYWNhNjNl
MjAyNDgyNjU3ODU2Li4zOGJmYWIyOTNjZWNkNTQxZDg4Y2UzZjllMDdmYWE4MGVhZmQzZWJhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheUxhYmVs
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheUxhYmVs
LmNwcApAQCAtMjM0LDggKzIzNCw5IEBAIFBhdGggSW5zcGVjdG9yT3ZlcmxheUxhYmVsOjpkcmF3
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgZmxvYXQgbWF4aW11bUxpbmVXaWR0CiAgICAgICAg
ICAgICBhdXRvIHRleHRSdW4gPSBUZXh0UnVuKHRleHQpOwogICAgICAgICAgICAgZmxvYXQgdGV4
dFdpZHRoID0gZm9udC53aWR0aCh0ZXh0UnVuKTsKIAorICAgICAgICAgICAgLy8gRklYTUU6IFRo
aXMgbG9va3MgdmVyeSBpbmVmZmljaWVudC4KICAgICAgICAgICAgIGlmIChtYXhpbXVtTGluZVdp
ZHRoICYmIGN1cnJlbnRMaW5lV2lkdGggKyB0ZXh0V2lkdGggKyAobGFiZWxQYWRkaW5nICogMikg
PiBtYXhpbXVtTGluZVdpZHRoKSB7Ci0gICAgICAgICAgICAgICAgdGV4dC5hcHBlbmQoZWxsaXBz
aXMpOworICAgICAgICAgICAgICAgIHRleHQgPSBtYWtlU3RyaW5nKHRleHQsIGVsbGlwc2lzKTsK
ICAgICAgICAgICAgICAgICB3aGlsZSAoY3VycmVudExpbmVXaWR0aCArIHRleHRXaWR0aCArIChs
YWJlbFBhZGRpbmcgKiAyKSA+IG1heGltdW1MaW5lV2lkdGggJiYgdGV4dC5sZW5ndGgoKSA+IDEp
IHsKICAgICAgICAgICAgICAgICAgICAgLy8gUmVtb3ZlIHRoZSBzZWNvbmQgZnJvbSBsYXN0IGNo
YXJhY3RlciAodGhlIGNoYXJhY3RlciBiZWZvcmUgdGhlIGVsbGlwc2lzKSBhbmQgcmVtZWFzdXJl
LgogICAgICAgICAgICAgICAgICAgICB0ZXh0LnJlbW92ZSh0ZXh0Lmxlbmd0aCgpIC0gMik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKaW5k
ZXggMjZlMThlYzA0YWE2ZjdkYWYzYzdiNDMzYTk2YjI2MWJiOTAyNDk0YS4uMDkwMTZlNWM3MTFk
NTY1MTNlMzVjMzg0ZDRkZDMwMDJkZDM0NjcyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcApAQCAtMzg0LDcgKzM4NCw3IEBAIHZvaWQg
U3R5bGVTaGVldEhhbmRsZXI6Om9ic2VydmVDb21tZW50KHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1
bnNpZ25lZCBlbmRPZmZzZXQpCiAgICAgLy8gUmVxdWlyZSB3ZWxsLWZvcm1lZCBjb21tZW50cy4K
ICAgICBpZiAoIWNvbW1lbnRUZXh0LmVuZHNXaXRoKCIqLyIpKQogICAgICAgICByZXR1cm47Ci0g
ICAgY29tbWVudFRleHQgPSBjb21tZW50VGV4dC5zdWJzdHJpbmcoMCwgY29tbWVudFRleHQubGVu
Z3RoKCkgLSAyKS5zdHJpcFdoaXRlU3BhY2UoKTsKKyAgICBjb21tZW50VGV4dCA9IGNvbW1lbnRU
ZXh0LmxlZnQoY29tbWVudFRleHQubGVuZ3RoKCkgLSAyKS5zdHJpcFdoaXRlU3BhY2UoKTsKICAg
ICBpZiAoY29tbWVudFRleHQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAgICAgCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQu
Y3BwCmluZGV4IDU3NjYyNDRlODVkNjI3ZWVhN2FiMWNjZDVkNmE2ZDM2ODhmMmJlN2UuLjlmNWVk
NGJjMmY4Mzc1YThkZTYyODhlODE3MjZiNDM2YmYyZmRlNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC0xNzcy
LDEwICsxNzcyLDggQEAgUmVmPFByb3RvY29sOjpET006Ok5vZGU+IEluc3BlY3RvckRPTUFnZW50
OjpidWlsZE9iamVjdEZvck5vZGUoTm9kZSogbm9kZSwgaW50IGQKICAgICBjYXNlIE5vZGU6OkNP
TU1FTlRfTk9ERToKICAgICBjYXNlIE5vZGU6OkNEQVRBX1NFQ1RJT05fTk9ERToKICAgICAgICAg
bm9kZVZhbHVlID0gbm9kZS0+bm9kZVZhbHVlKCk7Ci0gICAgICAgIGlmIChub2RlVmFsdWUubGVu
Z3RoKCkgPiBtYXhUZXh0U2l6ZSkgewotICAgICAgICAgICAgbm9kZVZhbHVlID0gbm9kZVZhbHVl
LmxlZnQobWF4VGV4dFNpemUpOwotICAgICAgICAgICAgbm9kZVZhbHVlLmFwcGVuZChlbGxpcHNp
c1VDaGFyKTsKLSAgICAgICAgfQorICAgICAgICBpZiAobm9kZVZhbHVlLmxlbmd0aCgpID4gbWF4
VGV4dFNpemUpCisgICAgICAgICAgICBub2RlVmFsdWUgPSBtYWtlU3RyaW5nKFN0cmluZ1ZpZXco
bm9kZVZhbHVlKS5sZWZ0KG1heFRleHRTaXplKSwgZWxsaXBzaXNVQ2hhcik7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgTm9kZTo6QVRUUklCVVRFX05PREU6CiAgICAgICAgIGxvY2FsTmFtZSA9
IG5vZGUtPmxvY2FsTmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xh
eW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xh
eW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCmluZGV4IDRkYzM1MWU0OTIyYjc1NDY3NmNk
MDhiODE0NGQxZWFlMDUwOWQ3ODcuLmRiMGQ4ZjAxMzQ1NDllNmNmMTBlYjc4NGIwOGEyYjk3MTg5
MjcxNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91
dFRyZWVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9M
YXlvdXRUcmVlQnVpbGRlci5jcHAKQEAgLTUwMyw3ICs1MDMsNyBAQCBzdGF0aWMgdm9pZCBvdXRw
dXRMYXlvdXRCb3goVGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBCb3gmIGxheW91dEJveCwgY29u
c3QgQm94RwogCiAgICAgICAgIGNvbnN0IHNpemVfdCBtYXhQcmludGVkTGVuZ3RoID0gODA7CiAg
ICAgICAgIGlmICh0ZXh0Q29udGVudC5sZW5ndGgoKSA+IG1heFByaW50ZWRMZW5ndGgpIHsKLSAg
ICAgICAgICAgIGF1dG8gc3Vic3RyaW5nID0gdGV4dENvbnRlbnQuc3Vic3RyaW5nKDAsIG1heFBy
aW50ZWRMZW5ndGgpOworICAgICAgICAgICAgYXV0byBzdWJzdHJpbmcgPSB0ZXh0Q29udGVudC5s
ZWZ0KG1heFByaW50ZWRMZW5ndGgpOwogICAgICAgICAgICAgc3RyZWFtIDw8ICIgXCIiIDw8IHN1
YnN0cmluZy51dGY4KCkuZGF0YSgpIDw8ICJcIi4uLiI7CiAgICAgICAgIH0gZWxzZQogICAgICAg
ICAgICAgc3RyZWFtIDw8ICIgXCIiIDw8IHRleHRDb250ZW50LnV0ZjgoKS5kYXRhKCkgPDwgIlwi
IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlTWFuaWZlc3RQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdFBhcnNlci5jcHAKaW5kZXggNGExMTQ0MjVlMTE2ZDJj
NDJkMTkwMzkyM2VkZjg4NjM4M2Q4ZjA2NC4uOGQ5OWI5MzhkOTlmYjQyZjgxN2U5MGMxZThkMDdi
YzJhOGZiOGMzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVNYW5pZmVzdFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdFBhcnNlci5jcHAKQEAgLTQwLDcg
KzQwLDcgQEAgc3RhdGljIFN0cmluZ1ZpZXcgbWFuaWZlc3RQYXRoKGNvbnN0IFVSTCYgbWFuaWZl
c3RVUkwpCiB7CiAgICAgYXV0byBtYW5pZmVzdFBhdGggPSBtYW5pZmVzdFVSTC5wYXRoKCk7CiAg
ICAgQVNTRVJUKG1hbmlmZXN0UGF0aFswXSA9PSAnLycpOwotICAgIG1hbmlmZXN0UGF0aCA9IG1h
bmlmZXN0UGF0aC5zdWJzdHJpbmcoMCwgbWFuaWZlc3RQYXRoLnJldmVyc2VGaW5kKCcvJykgKyAx
KTsKKyAgICBtYW5pZmVzdFBhdGggPSBtYW5pZmVzdFBhdGgubGVmdChtYW5pZmVzdFBhdGgucmV2
ZXJzZUZpbmQoJy8nKSArIDEpOwogICAgIEFTU0VSVChtYW5pZmVzdFBhdGhbMF0gPT0gbWFuaWZl
c3RQYXRoW21hbmlmZXN0UGF0aC5sZW5ndGgoKSAtIDFdKTsKICAgICByZXR1cm4gbWFuaWZlc3RQ
YXRoOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFByZXNlbnRh
dGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFByZXNlbnRhdGlv
bkVsZW1lbnQuY3BwCmluZGV4IDUxMDIyYzY3NWQyNGYwYmI4YTUzYjE5NWZlODhiMWFmMDNkMTM3
MDMuLjVlMDc2M2RmOTAxZTk3YjVhNWZlZjA4MjIxNDA0MmNlZmFkODc3NDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxQcmVzZW50YXRpb25FbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudC5jcHAKQEAg
LTIzNSw3ICsyMzUsNyBAQCBNYXRoTUxFbGVtZW50OjpMZW5ndGggTWF0aE1MUHJlc2VudGF0aW9u
RWxlbWVudDo6cGFyc2VOdW1iZXJBbmRVbml0KFN0cmluZ1ZpZXcgcwogICAgIH0KIAogICAgIGJv
b2wgb2s7Ci0gICAgZmxvYXQgbGVuZ3RoVmFsdWUgPSBzdHJpbmcuc3Vic3RyaW5nKDAsIHN0cmlu
Z0xlbmd0aCkudG9GbG9hdChvayk7CisgICAgZmxvYXQgbGVuZ3RoVmFsdWUgPSBzdHJpbmcubGVm
dChzdHJpbmdMZW5ndGgpLnRvRmxvYXQob2spOwogICAgIGlmICghb2spCiAgICAgICAgIHJldHVy
biBMZW5ndGgoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAppbmRleCA5ZmFmOGFkZjY5YjVjYzU1YzJi
M2FmYTdhYTYxY2UyYmRjMGEwNDdmLi4xY2FlY2NmOWY0MDRkYTNmZDAzMWUxM2RjZWZkZjVhNDI3
ZGQzMjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcApAQCAtMzg5LDcgKzM4OSw3IEBAIHN0YXRpYyBK
U0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uIGNyZWF0ZVJlZ0V4cEZvckxhYmVscyhjb25zdCBW
ZWN0b3I8U3RyaW5nPiYKICAgICAgICAgYm9vbCBzdGFydHNXaXRoV29yZENoYXJhY3RlciA9IGZh
bHNlOwogICAgICAgICBib29sIGVuZHNXaXRoV29yZENoYXJhY3RlciA9IGZhbHNlOwogICAgICAg
ICBpZiAobGFiZWwubGVuZ3RoKCkpIHsKLSAgICAgICAgICAgIHN0YXJ0c1dpdGhXb3JkQ2hhcmFj
dGVyID0gd29yZFJlZ0V4cC5nZXQoKS5tYXRjaChsYWJlbC5zdWJzdHJpbmcoMCwgMSkpID49IDA7
CisgICAgICAgICAgICBzdGFydHNXaXRoV29yZENoYXJhY3RlciA9IHdvcmRSZWdFeHAuZ2V0KCku
bWF0Y2gobGFiZWwubGVmdCgxKSkgPj0gMDsKICAgICAgICAgICAgIGVuZHNXaXRoV29yZENoYXJh
Y3RlciA9IHdvcmRSZWdFeHAuZ2V0KCkubWF0Y2gobGFiZWwuc3Vic3RyaW5nKGxhYmVsLmxlbmd0
aCgpIC0gMSwgMSkpID49IDA7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1
cml0eU9yaWdpbkRhdGEuY3BwCmluZGV4IGE2ODJjY2JhNzU0MjlkNzI4NTI2ZDhhY2Y4ZmIwZWU3
NTIyZDIyNWIuLjg1YWE2NDJkMTE2NjZhYTYyOGJiNWRlMTE1ZWU3NjZiNzE5ZWRkZGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAKQEAgLTExNSw3ICsxMTUs
NyBAQCBzdGQ6Om9wdGlvbmFsPFNlY3VyaXR5T3JpZ2luRGF0YT4gU2VjdXJpdHlPcmlnaW5EYXRh
Ojpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKFN0cgogICAgIGlmIChwb3J0ICYmICEqcG9ydCkKICAg
ICAgICAgcG9ydCA9IHN0ZDo6bnVsbG9wdDsKIAotICAgIGF1dG8gcHJvdG9jb2wgPSBkYXRhYmFz
ZUlkZW50aWZpZXIuc3Vic3RyaW5nKDAsIHNlcGFyYXRvcjEpOworICAgIGF1dG8gcHJvdG9jb2wg
PSBkYXRhYmFzZUlkZW50aWZpZXIubGVmdChzZXBhcmF0b3IxKTsKICAgICBhdXRvIGhvc3QgPSBk
YXRhYmFzZUlkZW50aWZpZXIuc3Vic3RyaW5nKHNlcGFyYXRvcjEgKyAxLCBzZXBhcmF0b3IyIC0g
c2VwYXJhdG9yMSAtIDEpOwogICAgIHJldHVybiBTZWN1cml0eU9yaWdpbkRhdGEgeyBwcm90b2Nv
bC50b1N0cmluZygpLCBob3N0LnRvU3RyaW5nKCksIHBvcnQgfTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlVHJlZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVRyZWUuY3BwCmluZGV4IGRm
NmJiMGI1ZjdlOTNiMTY5OWVhODliODFiNGNmM2NkMmZlZWE3OTkuLjhhMmVlZmJmYmUxNjFhZTdk
ZWJmYWRiYjE0MmViYjVhMTNmNGU1ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlVHJlZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVUcmVlLmNwcApAQCAtMzgxLDEwICszODEsMTEgQEAg
U3RyaW5nIFNjcm9sbGluZ1N0YXRlVHJlZTo6c2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0KE9wdGlv
blNldDxTY3JvbGxpbmdTdGF0ZVRyZWUKICAgICBpZiAoIXJvb3RTdGF0ZU5vZGUoKSkKICAgICAg
ICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKLSAgICBhdXRvIHN0YXRlVHJlZUFzU3RyaW5nID0g
cm9vdFN0YXRlTm9kZSgpLT5zY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHQoYmVoYXZpb3IpOworICAg
IFN0cmluZ0J1aWxkZXIgc3RhdGVUcmVlQXNTdHJpbmc7CisgICAgc3RhdGVUcmVlQXNTdHJpbmcu
YXBwZW5kKHJvb3RTdGF0ZU5vZGUoKS0+c2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0KGJlaGF2aW9y
KSk7CiAgICAgaWYgKCFtX3VucGFyZW50ZWROb2Rlcy5pc0VtcHR5KCkpCi0gICAgICAgIHN0YXRl
VHJlZUFzU3RyaW5nLmFwcGVuZChtYWtlU3RyaW5nKCJcbnVucGFyZW50ZWQgbm9kZSBjb3VudDog
IiwgbV91bnBhcmVudGVkTm9kZXMuc2l6ZSgpKSk7Ci0gICAgcmV0dXJuIHN0YXRlVHJlZUFzU3Ry
aW5nOworICAgICAgICBzdGF0ZVRyZWVBc1N0cmluZy5hcHBlbmQoIlxudW5wYXJlbnRlZCBub2Rl
IGNvdW50OiAiLCBtX3VucGFyZW50ZWROb2Rlcy5zaXplKCkpOworICAgIHJldHVybiBzdGF0ZVRy
ZWVBc1N0cmluZy50b1N0cmluZygpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRTdHJpbmdIYXNoLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFN0cmluZ0hhc2guY3BwCmluZGV4IGI5MzRlNmZh
M2FmM2ZjZmIxMWQ0OTcwMjM1NjAxNjJiZGI1YmZjNTIuLmE4NGYzNTljMzRiODQ0NjE3MGY4Yjlk
MGViZTFkZGM2YjgzZWQ4ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1No
YXJlZFN0cmluZ0hhc2guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFN0
cmluZ0hhc2guY3BwCkBAIC0yNTksMTMgKzI1OSwxMyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSB2
b2lkIGNvbXB1dGVTaGFyZWRTdHJpbmdIYXNoSW5saW5lKGNvbnN0IFVSTCYgYmFzZSwgY29uc3Qg
QwogICAgIGVsc2UgewogICAgICAgICBzd2l0Y2ggKGNoYXJhY3RlcnNbMF0pIHsKICAgICAgICAg
Y2FzZSAnLyc6Ci0gICAgICAgICAgICBhcHBlbmQoYnVmZmVyLCBTdHJpbmdWaWV3KGJhc2Uuc3Ry
aW5nKCkpLnN1YnN0cmluZygwLCBiYXNlLnBhdGhTdGFydCgpKSk7CisgICAgICAgICAgICBhcHBl
bmQoYnVmZmVyLCBTdHJpbmdWaWV3KGJhc2Uuc3RyaW5nKCkpLmxlZnQoYmFzZS5wYXRoU3RhcnQo
KSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgJyMnOgotICAgICAgICAgICAg
YXBwZW5kKGJ1ZmZlciwgU3RyaW5nVmlldyhiYXNlLnN0cmluZygpKS5zdWJzdHJpbmcoMCwgYmFz
ZS5wYXRoRW5kKCkpKTsKKyAgICAgICAgICAgIGFwcGVuZChidWZmZXIsIFN0cmluZ1ZpZXcoYmFz
ZS5zdHJpbmcoKSkubGVmdChiYXNlLnBhdGhFbmQoKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBhcHBlbmQoYnVmZmVyLCBTdHJpbmdWaWV3KGJh
c2Uuc3RyaW5nKCkpLnN1YnN0cmluZygwLCBiYXNlLnBhdGhBZnRlckxhc3RTbGFzaCgpKSk7Cisg
ICAgICAgICAgICBhcHBlbmQoYnVmZmVyLCBTdHJpbmdWaWV3KGJhc2Uuc3RyaW5nKCkpLmxlZnQo
YmFzZS5wYXRoQWZ0ZXJMYXN0U2xhc2goKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9I
RVZDVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0hFVkNV
dGlsaXRpZXMuY3BwCmluZGV4IGMyMGIwNjUwMThhZTdiZWRlMDQxN2ZlMzNlMWVlODQwYzk0NGU0
Y2EuLmZmMjc4ZTk1NzMxZjBhN2QwYTFkZTMzZjdkZmY4NTVlZTlhZTQ2NTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0hFVkNVdGlsaXRpZXMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0hFVkNVdGlsaXRpZXMuY3BwCkBAIC0y
MDIsMTMgKzIwMiw2IEBAIHN0ZDo6b3B0aW9uYWw8SEVWQ1BhcmFtZXRlcnM+IHBhcnNlSEVWQ0Nv
ZGVjUGFyYW1ldGVycyhTdHJpbmdWaWV3IGNvZGVjU3RyaW5nKQogCiBTdHJpbmcgY3JlYXRlSEVW
Q0NvZGVjUGFyYW1ldGVyc1N0cmluZyhjb25zdCBIRVZDUGFyYW1ldGVycyYgcGFyYW1ldGVycykK
IHsKLSAgICAvLyBUaGUgZm9ybWF0IG9mIHRoZSAnaGV2YycgY29kZWMgc3RyaW5nIGlzIHNwZWNp
ZmllZCBpbiBJU08vSUVDIDE0NDk2LTE1OjIwMTQsIEFubmV4IEUuMy4KLSAgICBjaGFyIHByb2Zp
bGVTcGFjZUNoYXJhY3RlciA9ICdBJyArIHBhcmFtZXRlcnMuZ2VuZXJhbFByb2ZpbGVTcGFjZSAt
IDE7Ci0KLSAgICBTdHJpbmcgcHJvZmlsZVNwYWNlU3RyaW5nOwotICAgIGlmIChwYXJhbWV0ZXJz
LmdlbmVyYWxQcm9maWxlU3BhY2UpCi0gICAgICAgIHByb2ZpbGVTcGFjZVN0cmluZy5hcHBlbmQo
cHJvZmlsZVNwYWNlQ2hhcmFjdGVyKTsKLQogICAgIC8vIEZvciB0aGUgc2Vjb25kIHBhcmFtZXRl
ciwgZnJvbSBJU08vSUVDIDE0NDk2LTE1OjIwMTQsIEFubmV4IEUuMy4KICAgICAvLyAqIHRoZSAz
MiBiaXRzIG9mIHRoZSBnZW5lcmFsX3Byb2ZpbGVfY29tcGF0aWJpbGl0eV9mbGFncywgYnV0IGlu
IHJldmVyc2UgYml0IG9yZGVyLCBpLmUuIHdpdGgKICAgICAvLyBnZW5lcmFsX3Byb2ZpbGVfY29t
cGF0aWJpbGl0eV9mbGFnWyAzMSBdIGFzIHRoZSBtb3N0IHNpZ25pZmljYW50IGJpdCwgZm9sbG93
ZWQgYnksIGdlbmVyYWxfcHJvZmlsZV9jb21wYXRpYmlsaXR5X2ZsYWdbIDMwIF0sCkBAIC0yMjYs
MTYgKzIxOSwxNiBAQCBTdHJpbmcgY3JlYXRlSEVWQ0NvZGVjUGFyYW1ldGVyc1N0cmluZyhjb25z
dCBIRVZDUGFyYW1ldGVycyYgcGFyYW1ldGVycykKICAgICAgICAgY29tcGF0aWJpbGl0eUZsYWdz
LmFwcGVuZChoZXgocGFyYW1ldGVycy5nZW5lcmFsQ29uc3RyYWludEluZGljYXRvckZsYWdzW2ld
LCAyKSk7CiAgICAgfQogCi0gICAgcmV0dXJuIG1ha2VTdHJpbmcocGFyYW1ldGVycy5jb2RlYyA9
PSBIRVZDUGFyYW1ldGVyczo6Q29kZWM6OkhldjEgPyAiaGV2MSIgOiAiaHZjMSIKLSAgICAgICAg
LCAnLicKLSAgICAgICAgLCBwcm9maWxlU3BhY2VTdHJpbmcKLSAgICAgICAgLCBwYXJhbWV0ZXJz
LmdlbmVyYWxQcm9maWxlSURDCi0gICAgICAgICwgJy4nCi0gICAgICAgICwgY29tcGF0RmxhZ1Bh
cmFtZXRlcgotICAgICAgICAsICcuJwotICAgICAgICAsIHBhcmFtZXRlcnMuZ2VuZXJhbFRpZXJG
bGFnID8gJ0gnIDogJ0wnCi0gICAgICAgICwgcGFyYW1ldGVycy5nZW5lcmFsTGV2ZWxJREMKLSAg
ICAgICAgLCBjb21wYXRpYmlsaXR5RmxhZ3MudG9TdHJpbmcoKSk7CisgICAgU3RyaW5nQnVpbGRl
ciByZXN1bHRCdWlsZGVyOworICAgIHJlc3VsdEJ1aWxkZXIuYXBwZW5kKHBhcmFtZXRlcnMuY29k
ZWMgPT0gSEVWQ1BhcmFtZXRlcnM6OkNvZGVjOjpIZXYxID8gImhldjEiIDogImh2YzEiLCAnLicp
OworICAgIGlmIChwYXJhbWV0ZXJzLmdlbmVyYWxQcm9maWxlU3BhY2UpIHsKKyAgICAgICAgLy8g
VGhlIGZvcm1hdCBvZiB0aGUgJ2hldmMnIGNvZGVjIHN0cmluZyBpcyBzcGVjaWZpZWQgaW4gSVNP
L0lFQyAxNDQ5Ni0xNToyMDE0LCBBbm5leCBFLjMuCisgICAgICAgIGNoYXIgcHJvZmlsZVNwYWNl
Q2hhcmFjdGVyID0gJ0EnICsgcGFyYW1ldGVycy5nZW5lcmFsUHJvZmlsZVNwYWNlIC0gMTsKKyAg
ICAgICAgcmVzdWx0QnVpbGRlci5hcHBlbmQocHJvZmlsZVNwYWNlQ2hhcmFjdGVyKTsKKyAgICB9
CisgICAgcmVzdWx0QnVpbGRlci5hcHBlbmQocGFyYW1ldGVycy5nZW5lcmFsUHJvZmlsZUlEQywg
Jy4nLCBjb21wYXRGbGFnUGFyYW1ldGVyLCAnLicsIHBhcmFtZXRlcnMuZ2VuZXJhbFRpZXJGbGFn
ID8gJ0gnIDogJ0wnLCBwYXJhbWV0ZXJzLmdlbmVyYWxMZXZlbElEQyk7CisgICAgcmVzdWx0QnVp
bGRlci5hcHBlbmQoY29tcGF0aWJpbGl0eUZsYWdzKTsKKyAgICByZXR1cm4gcmVzdWx0QnVpbGRl
ci50b1N0cmluZygpOwogfQogCiBzdGQ6Om9wdGlvbmFsPEhFVkNQYXJhbWV0ZXJzPiBwYXJzZUhF
VkNEZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZChGb3VyQ0MgY29kZWNDb2RlLCBjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1N0cmluZ1RydW5jYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9TdHJpbmdUcnVuY2F0b3IuY3BwCmluZGV4IGE2M2ZjOGE3M2VjYmUxZDQ0ZWU0N2I2M2Iw
YmNlMzlhMTE3Mzc2MGIuLjIzYjM5OTU4ZGRmNjUzODI2YmQ3YjI0MjcwNDJiMjc3ODU3ODhjYmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1N0cmluZ1RydW5j
YXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU3RyaW5nVHJ1
bmNhdG9yLmNwcApAQCAtNjUsNyArNjUsNyBAQCBzdGF0aWMgdW5zaWduZWQgY2VudGVyVHJ1bmNh
dGVUb0J1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgbGVuZ3RoLCB1bgogICAg
IEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGtlZXBDb3VudCA8IFNUUklOR19CVUZG
RVJfU0laRSk7CiAgICAgCiAgICAgdW5zaWduZWQgb21pdFN0YXJ0ID0gKGtlZXBDb3VudCArIDEp
IC8gMjsKLSAgICBOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yIGl0KFN0cmluZ1ZpZXco
c3RyaW5nKS5zdWJzdHJpbmcoMCwgbGVuZ3RoKSk7CisgICAgTm9uU2hhcmVkQ2hhcmFjdGVyQnJl
YWtJdGVyYXRvciBpdChTdHJpbmdWaWV3KHN0cmluZykubGVmdChsZW5ndGgpKTsKICAgICB1bnNp
Z25lZCBvbWl0RW5kID0gYm91bmRlZFRleHRCcmVha0ZvbGxvd2luZyhpdCwgb21pdFN0YXJ0ICsg
KGxlbmd0aCAtIGtlZXBDb3VudCkgLSAxLCBsZW5ndGgpOwogICAgIG9taXRTdGFydCA9IHRleHRC
cmVha0F0T3JQcmVjZWRpbmcoaXQsIG9taXRTdGFydCk7CiAKQEAgLTkzLDcgKzkzLDcgQEAgc3Rh
dGljIHVuc2lnbmVkIGNlbnRlclRydW5jYXRlVG9CdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcs
IHVuc2lnbmVkIGxlbmd0aCwgdW4KICAgICB1bnNpZ25lZCB0cnVuY2F0ZWRMZW5ndGggPSBvbWl0
U3RhcnQgKyBzaG91bGRJbnNlcnRFbGxpcHNpcyArIChsZW5ndGggLSBvbWl0RW5kKTsKICAgICBB
U1NFUlQodHJ1bmNhdGVkTGVuZ3RoIDw9IGxlbmd0aCk7CiAKLSAgICBTdHJpbmdWaWV3KHN0cmlu
Zykuc3Vic3RyaW5nKDAsIG9taXRTdGFydCkuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoYnVm
ZmVyKTsKKyAgICBTdHJpbmdWaWV3KHN0cmluZykubGVmdChvbWl0U3RhcnQpLmdldENoYXJhY3Rl
cnNXaXRoVXBjb252ZXJ0KGJ1ZmZlcik7CiAgICAgaWYgKHNob3VsZEluc2VydEVsbGlwc2lzKQog
ICAgICAgICBidWZmZXJbb21pdFN0YXJ0KytdID0gaG9yaXpvbnRhbEVsbGlwc2lzOwogICAgIFN0
cmluZ1ZpZXcoc3RyaW5nKS5zdWJzdHJpbmcob21pdEVuZCwgbGVuZ3RoIC0gb21pdEVuZCkuZ2V0
Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoJmJ1ZmZlcltvbWl0U3RhcnRdKTsKQEAgLTExOSwxMSAr
MTE5LDExIEBAIHN0YXRpYyB1bnNpZ25lZCByaWdodFRydW5jYXRlVG9CdWZmZXIoY29uc3QgU3Ry
aW5nJiBzdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCwgdW5zCiAgICAgICAgIC0ta2VlcENvdW50Owog
I2VuZGlmCiAKLSAgICBOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yIGl0KFN0cmluZ1Zp
ZXcoc3RyaW5nKS5zdWJzdHJpbmcoMCwgbGVuZ3RoKSk7CisgICAgTm9uU2hhcmVkQ2hhcmFjdGVy
QnJlYWtJdGVyYXRvciBpdChTdHJpbmdWaWV3KHN0cmluZykubGVmdChsZW5ndGgpKTsKICAgICB1
bnNpZ25lZCBrZWVwTGVuZ3RoID0gdGV4dEJyZWFrQXRPclByZWNlZGluZyhpdCwga2VlcENvdW50
KTsKICAgICB1bnNpZ25lZCB0cnVuY2F0ZWRMZW5ndGggPSBzaG91bGRJbnNlcnRFbGxpcHNpcyA/
IGtlZXBMZW5ndGggKyAxIDoga2VlcExlbmd0aDsKIAotICAgIFN0cmluZ1ZpZXcoc3RyaW5nKS5z
dWJzdHJpbmcoMCwga2VlcExlbmd0aCkuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoYnVmZmVy
KTsKKyAgICBTdHJpbmdWaWV3KHN0cmluZykubGVmdChrZWVwTGVuZ3RoKS5nZXRDaGFyYWN0ZXJz
V2l0aFVwY29udmVydChidWZmZXIpOwogICAgIGlmIChzaG91bGRJbnNlcnRFbGxpcHNpcykKICAg
ICAgICAgYnVmZmVyW2tlZXBMZW5ndGhdID0gaG9yaXpvbnRhbEVsbGlwc2lzOwogCkBAIC0xMzUs
OSArMTM1LDkgQEAgc3RhdGljIHVuc2lnbmVkIHJpZ2h0Q2xpcFRvQ2hhcmFjdGVyQnVmZmVyKGNv
bnN0IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgKICAgICBBU1NFUlQoa2VlcENvdW50
IDwgbGVuZ3RoKTsKICAgICBBU1NFUlQoa2VlcENvdW50IDwgU1RSSU5HX0JVRkZFUl9TSVpFKTsK
IAotICAgIE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IgaXQoU3RyaW5nVmlldyhzdHJp
bmcpLnN1YnN0cmluZygwLCBsZW5ndGgpKTsKKyAgICBOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0
ZXJhdG9yIGl0KFN0cmluZ1ZpZXcoc3RyaW5nKS5sZWZ0KGxlbmd0aCkpOwogICAgIHVuc2lnbmVk
IGtlZXBMZW5ndGggPSB0ZXh0QnJlYWtBdE9yUHJlY2VkaW5nKGl0LCBrZWVwQ291bnQpOwotICAg
IFN0cmluZ1ZpZXcoc3RyaW5nKS5zdWJzdHJpbmcoMCwga2VlcExlbmd0aCkuZ2V0Q2hhcmFjdGVy
c1dpdGhVcGNvbnZlcnQoYnVmZmVyKTsKKyAgICBTdHJpbmdWaWV3KHN0cmluZykubGVmdChrZWVw
TGVuZ3RoKS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChidWZmZXIpOwogCiAgICAgcmV0dXJu
IGtlZXBMZW5ndGg7CiB9CkBAIC0xNDcsOSArMTQ3LDkgQEAgc3RhdGljIHVuc2lnbmVkIHJpZ2h0
Q2xpcFRvV29yZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgbGVuZ3RoLCB1
bnMKICAgICBBU1NFUlQoa2VlcENvdW50IDwgbGVuZ3RoKTsKICAgICBBU1NFUlQoa2VlcENvdW50
IDwgU1RSSU5HX0JVRkZFUl9TSVpFKTsKIAotICAgIFVCcmVha0l0ZXJhdG9yKiBpdCA9IHdvcmRC
cmVha0l0ZXJhdG9yKFN0cmluZ1ZpZXcoc3RyaW5nKS5zdWJzdHJpbmcoMCwgbGVuZ3RoKSk7Cisg
ICAgVUJyZWFrSXRlcmF0b3IqIGl0ID0gd29yZEJyZWFrSXRlcmF0b3IoU3RyaW5nVmlldyhzdHJp
bmcpLmxlZnQobGVuZ3RoKSk7CiAgICAgdW5zaWduZWQga2VlcExlbmd0aCA9IHRleHRCcmVha0F0
T3JQcmVjZWRpbmcoaXQsIGtlZXBDb3VudCk7Ci0gICAgU3RyaW5nVmlldyhzdHJpbmcpLnN1YnN0
cmluZygwLCBrZWVwTGVuZ3RoKS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChidWZmZXIpOwor
ICAgIFN0cmluZ1ZpZXcoc3RyaW5nKS5sZWZ0KGtlZXBMZW5ndGgpLmdldENoYXJhY3RlcnNXaXRo
VXBjb252ZXJ0KGJ1ZmZlcik7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIEZJ
WE1FOiBXZSBzaG91bGQgZ3VhcmQgdGhpcyBjb2RlIGJlaGluZCBhbiBlZGl0aW5nIGJlaGF2aW9y
LiBUaGVuIHdlIGNhbiByZW1vdmUgdGhlIFBMQVRGT1JNKElPU19GQU1JTFkpLWd1YXJkLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCA1OThj
MWEwMWQ4YTM4OWM4NmIzMDlhZGM1ZmIyMmUwZWRhYmIwMmJmLi5hMzVhM2EyMDZhZjE0NmRkYjU3
MGVkNDQxYjYyNTQ1M2ZjZjkwNWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyLmNwcApAQCAtOTQxLDcgKzk0MSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjpzZXRQbGF5YmluVVJMKGNvbnN0IFVSTCYgdXJsKQogICAgIC8vIENs
ZWFuIG91dCBldmVyeXRoaW5nIGFmdGVyIGZpbGU6Ly8gdXJsIHBhdGguCiAgICAgU3RyaW5nIGNs
ZWFuVVJMU3RyaW5nKHVybC5zdHJpbmcoKSk7CiAgICAgaWYgKHVybC5pc0xvY2FsRmlsZSgpKQot
ICAgICAgICBjbGVhblVSTFN0cmluZyA9IGNsZWFuVVJMU3RyaW5nLnN1YnN0cmluZygwLCB1cmwu
cGF0aEVuZCgpKTsKKyAgICAgICAgY2xlYW5VUkxTdHJpbmcgPSBjbGVhblVSTFN0cmluZy5sZWZ0
KHVybC5wYXRoRW5kKCkpOwogCiAgICAgbV91cmwgPSBVUkwgeyBjbGVhblVSTFN0cmluZyB9Owog
ICAgIEdTVF9JTkZPX09CSkVDVChwaXBlbGluZSgpLCAiTG9hZCAlcyIsIG1fdXJsLnN0cmluZygp
LnV0ZjgoKS5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL21zZS9Tb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvU291cmNlQnVmZmVy
UHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNWQ1NDE5ZTg0OGVhNjZlNDVmNWQ4MzM1YjVjOTYy
Y2U2NDQ1OWQ1YS4uZWJhYjA5ZGUxNTA3NmVhMmFjOGMwNTAxOTM5NTM1ODQwMTU2YTJkNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9T
b3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1NvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIu
Y3BwCkBAIC0zMTAsNyArMzEwLDcgQEAgc2l6ZV90IFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFt
ZXI6OnBsYXRmb3JtTWF4aW11bUJ1ZmZlclNpemUoKSBjb25zdAogICAgICAgICAgICAgICAgIGVs
c2UgaWYgKHZhbHVlLmVuZHNXaXRoKCdtJykpCiAgICAgICAgICAgICAgICAgICAgIHVuaXRzID0g
MTAyNCAqIDEwMjQ7CiAgICAgICAgICAgICAgICAgaWYgKHVuaXRzICE9IDEpCi0gICAgICAgICAg
ICAgICAgICAgIHZhbHVlID0gdmFsdWUuc3Vic3RyaW5nKDAsIHZhbHVlLmxlbmd0aCgpLTEpOwor
ICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLmxlZnQodmFsdWUubGVuZ3RoKCktMSk7
CiAgICAgICAgICAgICAgICAgYXV0byBwYXJzZWRTaXplID0gcGFyc2VJbnRlZ2VyPHNpemVfdD4o
dmFsdWUpOwogICAgICAgICAgICAgICAgIGlmICghcGFyc2VkU2l6ZSkKICAgICAgICAgICAgICAg
ICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udENhY2hlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9Gb250Q2FjaGVXaW4uY3BwCmluZGV4IDQ1MDRkMDE4ZjFkNzdkMjQ0YjM3YzlhYjhl
ZTZiYmY0ODMyMTIxNGIuLjY2MTNmYzQxNmYyN2ExY2VlNjQ1YjVhM2ZiZjI1YTJjYTdjNjBjZjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q2Fj
aGVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250
Q2FjaGVXaW4uY3BwCkBAIC01MTcsNyArNTE3LDcgQEAgc3RhdGljIEdESU9iamVjdDxIRk9OVD4g
Y3JlYXRlR0RJRm9udChjb25zdCBBdG9tU3RyaW5nJiBmYW1pbHksIExPTkcgZGVzaXJlZFdlaWcK
IAogICAgIExPR0ZPTlQgbG9nRm9udDsKICAgICBsb2dGb250LmxmQ2hhclNldCA9IERFRkFVTFRf
Q0hBUlNFVDsKLSAgICBTdHJpbmdWaWV3IHRydW5jYXRlZEZhbWlseSA9IFN0cmluZ1ZpZXcoZmFt
aWx5KS5zdWJzdHJpbmcoMCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExGX0ZBQ0VTSVpFIC0gMSkp
OworICAgIFN0cmluZ1ZpZXcgdHJ1bmNhdGVkRmFtaWx5ID0gU3RyaW5nVmlldyhmYW1pbHkpLmxl
ZnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExGX0ZBQ0VTSVpFIC0gMSkpOwogICAgIHRydW5jYXRl
ZEZhbWlseS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydCh1Y2hhckZyb20obG9nRm9udC5sZkZh
Y2VOYW1lKSk7CiAgICAgbG9nRm9udC5sZkZhY2VOYW1lW3RydW5jYXRlZEZhbWlseS5sZW5ndGgo
KV0gPSAwOwogICAgIGxvZ0ZvbnQubGZQaXRjaEFuZEZhbWlseSA9IDA7CkBAIC02MzEsNyArNjMx
LDcgQEAgVmVjdG9yPEZvbnRTZWxlY3Rpb25DYXBhYmlsaXRpZXM+IEZvbnRDYWNoZTo6Z2V0Rm9u
dFNlbGVjdGlvbkNhcGFiaWxpdGllc0luRmFtaWwKIAogICAgIExPR0ZPTlQgbG9nRm9udDsKICAg
ICBsb2dGb250LmxmQ2hhclNldCA9IERFRkFVTFRfQ0hBUlNFVDsKLSAgICBTdHJpbmdWaWV3IHRy
dW5jYXRlZEZhbWlseSA9IFN0cmluZ1ZpZXcoZmFtaWx5TmFtZSkuc3Vic3RyaW5nKDAsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihMRl9GQUNFU0laRSAtIDEpKTsKKyAgICBTdHJpbmdWaWV3IHRydW5j
YXRlZEZhbWlseSA9IFN0cmluZ1ZpZXcoZmFtaWx5TmFtZSkubGVmdChzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oTEZfRkFDRVNJWkUgLSAxKSk7CiAgICAgdHJ1bmNhdGVkRmFtaWx5LmdldENoYXJhY3Rl
cnNXaXRoVXBjb252ZXJ0KHVjaGFyRnJvbShsb2dGb250LmxmRmFjZU5hbWUpKTsKICAgICBsb2dG
b250LmxmRmFjZU5hbWVbdHJ1bmNhdGVkRmFtaWx5Lmxlbmd0aCgpXSA9IDA7CiAgICAgbG9nRm9u
dC5sZlBpdGNoQW5kRmFtaWx5ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9Vc2VyQWdlbnRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNl
ckFnZW50SU9TLm1tCmluZGV4IDhkNWM0M2RlODM5NTU5OGMyMzk5YTM4YTgzZGVhMzhjMTRkMjk2
YTUuLjM3ZjE3MzQwNjNiNzhjMzE4NzM4OWQ2OTA1NWQzZDYxZWE2YjFkZjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Vc2VyQWdlbnRJT1MubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbQpAQCAtNzQsNyArNzQsNyBAQCBz
dGF0aWMgU3RyaW5nVmlldyBkZXZpY2VOYW1lRm9yVXNlckFnZW50KCkKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZX1NJTVVMQVRPUikKICAgICAgICAgc2l6ZV90IGxvY2F0aW9uID0gbmFtZS5maW5k
KCIgU2ltdWxhdG9yIik7CiAgICAgICAgIGlmIChsb2NhdGlvbiAhPSBub3RGb3VuZCkKLSAgICAg
ICAgICAgIHJldHVybiBuYW1lLnN1YnN0cmluZygwLCBsb2NhdGlvbik7CisgICAgICAgICAgICBy
ZXR1cm4gbmFtZS5sZWZ0KGxvY2F0aW9uKTsKICNlbmRpZgogICAgICAgICByZXR1cm4gbmFtZTsK
ICAgICB9KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Nh
Y2hlVmFsaWRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NhY2hl
VmFsaWRhdGlvbi5jcHAKaW5kZXggODVlMjRhNGE3ZmM4MGM2NTZjZjQ4ODhlOTI3YWIwYjViYjA0
ZjVhMS4uYzc0MzE4OTkyOGIzZjZhOWJiMzlmNmZmNGZjMDk5M2ZlMDkwY2I1NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ2FjaGVWYWxpZGF0aW9uLmNwcApA
QCAtMjEwLDcgKzIxMCw3IEBAIGlubGluZSBib29sIGlzQ29udHJvbENoYXJhY3Rlck9yU3BhY2Uo
VUNoYXIgY2hhcmFjdGVyKQogCiBpbmxpbmUgU3RyaW5nVmlldyB0cmltVG9OZXh0U2VwYXJhdG9y
KFN0cmluZ1ZpZXcgc3RyaW5nKQogewotICAgIHJldHVybiBzdHJpbmcuc3Vic3RyaW5nKDAsIHN0
cmluZy5maW5kKGlzQ2FjaGVIZWFkZXJTZXBhcmF0b3IpKTsKKyAgICByZXR1cm4gc3RyaW5nLmxl
ZnQoc3RyaW5nLmZpbmQoaXNDYWNoZUhlYWRlclNlcGFyYXRvcikpOwogfQogCiBzdGF0aWMgVmVj
dG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+IHBhcnNlQ2FjaGVIZWFkZXIoY29uc3QgU3Ry
aW5nJiBoZWFkZXIpCkBAIC0yNjYsNyArMjY2LDcgQEAgc3RhdGljIFZlY3RvcjxzdGQ6OnBhaXI8
U3RyaW5nLCBTdHJpbmc+PiBwYXJzZUNhY2hlSGVhZGVyKGNvbnN0IFN0cmluZyYgaGVhZGVyKQog
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogICAgICAgICAvLyBUaGUgdmFs
dWUgaXMgZGVsaW1pdGVkIGJ5IHRoZSBuZXh0IGNvbW1hCi0gICAgICAgIHJlc3VsdC5hcHBlbmQo
eyBkaXJlY3RpdmUsIHRyaW1Ub05leHRTZXBhcmF0b3IodmFsdWUuc3Vic3RyaW5nKDAsIG5leHRD
b21tYVBvc2l0aW9uMikpLnRvU3RyaW5nKCkgfSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoeyBk
aXJlY3RpdmUsIHRyaW1Ub05leHRTZXBhcmF0b3IodmFsdWUubGVmdChuZXh0Q29tbWFQb3NpdGlv
bjIpKS50b1N0cmluZygpIH0pOwogICAgICAgICBwb3MgKz0gKHNhZmVIZWFkZXIuZmluZCgnLCcs
IHBvcykgLSBwb3MpICsgMTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5jcHAKaW5k
ZXggNGVlN2JkMTBmY2MyY2QwMzk1NzU5YjM2ZTA0NTY2ZjAyYWIxYTRjNy4uNjU0YTZhNDBiZDQ0
OWI3NzhmMDJmOTliM2Q0NzdjNjdiZWM2MmU5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5jcHAKQEAgLTQ2LDEzICs0Niwx
MyBAQCBzdGF0aWMgU3RyaW5nIHByb3RlY3Rpb25TcGFjZU1hcEtleUZyb21VUkwoY29uc3QgVVJM
JiB1cmwpCiAKICAgICAvLyBSZW1vdmUgdGhlIGxhc3QgcGF0aCBjb21wb25lbnQgdGhhdCBpcyBu
b3QgYSBkaXJlY3RvcnkgdG8gZGV0ZXJtaW5lIHRoZSBzdWJ0cmVlIGZvciB3aGljaCBjcmVkZW50
aWFscyB3aWxsIGFwcGx5LgogICAgIC8vIFdlIGtlZXAgYSBsZWFkaW5nIHNsYXNoLCBidXQgcmVt
b3ZlIGEgdHJhaWxpbmcgb25lLgotICAgIFN0cmluZyBkaXJlY3RvcnlVUkwgPSB1cmwuc3RyaW5n
KCkuc3Vic3RyaW5nKDAsIHVybC5wYXRoRW5kKCkpOworICAgIFN0cmluZyBkaXJlY3RvcnlVUkwg
PSB1cmwuc3RyaW5nKCkubGVmdCh1cmwucGF0aEVuZCgpKTsKICAgICB1bnNpZ25lZCBkaXJlY3Rv
cnlVUkxQYXRoU3RhcnQgPSB1cmwucGF0aFN0YXJ0KCk7CiAgICAgQVNTRVJUKGRpcmVjdG9yeVVS
TFtkaXJlY3RvcnlVUkxQYXRoU3RhcnRdID09ICcvJyk7CiAgICAgaWYgKGRpcmVjdG9yeVVSTC5s
ZW5ndGgoKSA+IGRpcmVjdG9yeVVSTFBhdGhTdGFydCArIDEpIHsKICAgICAgICAgc2l6ZV90IGlu
ZGV4ID0gZGlyZWN0b3J5VVJMLnJldmVyc2VGaW5kKCcvJyk7CiAgICAgICAgIEFTU0VSVChpbmRl
eCAhPSBub3RGb3VuZCk7Ci0gICAgICAgIGRpcmVjdG9yeVVSTCA9IGRpcmVjdG9yeVVSTC5zdWJz
dHJpbmcoMCwgKGluZGV4ICE9IGRpcmVjdG9yeVVSTFBhdGhTdGFydCkgPyBpbmRleCA6IGRpcmVj
dG9yeVVSTFBhdGhTdGFydCArIDEpOworICAgICAgICBkaXJlY3RvcnlVUkwgPSBkaXJlY3RvcnlV
UkwubGVmdCgoaW5kZXggIT0gZGlyZWN0b3J5VVJMUGF0aFN0YXJ0KSA/IGluZGV4IDogZGlyZWN0
b3J5VVJMUGF0aFN0YXJ0ICsgMSk7CiAgICAgfQogCiAgICAgcmV0dXJuIGRpcmVjdG9yeVVSTDsK
QEAgLTE1NSw3ICsxNTUsNyBAQCBIYXNoTWFwPFN0cmluZywgUHJvdGVjdGlvblNwYWNlPjo6aXRl
cmF0b3IgQ3JlZGVudGlhbFN0b3JhZ2U6OmZpbmREZWZhdWx0UHJvdGVjdAogCiAgICAgICAgIHNp
emVfdCBpbmRleCA9IGRpcmVjdG9yeVVSTC5yZXZlcnNlRmluZCgnLycsIGRpcmVjdG9yeVVSTC5s
ZW5ndGgoKSAtIDIpOwogICAgICAgICBBU1NFUlQoaW5kZXggIT0gbm90Rm91bmQpOwotICAgICAg
ICBkaXJlY3RvcnlVUkwgPSBkaXJlY3RvcnlVUkwuc3Vic3RyaW5nKDAsIChpbmRleCA9PSBkaXJl
Y3RvcnlVUkxQYXRoU3RhcnQpID8gaW5kZXggKyAxIDogaW5kZXgpOworICAgICAgICBkaXJlY3Rv
cnlVUkwgPSBkaXJlY3RvcnlVUkwubGVmdCgoaW5kZXggPT0gZGlyZWN0b3J5VVJMUGF0aFN0YXJ0
KSA/IGluZGV4ICsgMSA6IGluZGV4KTsKICAgICAgICAgQVNTRVJUKGRpcmVjdG9yeVVSTC5sZW5n
dGgoKSA+IGRpcmVjdG9yeVVSTFBhdGhTdGFydCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcAppbmRleCBjY2I3MThj
MDYwMWE0NTY1NzZkNGE2Mzc1ZTRiNjFlNmY4ZTM3Mzg3Li42NzkyNDQwZjBhZjkzZDViNmJhZjhj
OWRkNzAxZWQ4ZTAyNGM5NTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIHB1YmxpYzoKICAg
ICAgICAgaXNCYXNlNjQgPSBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShmb3JtYXRUeXBl
LCAiYmFzZTY0Iik7CiAKICAgICAgICAgLy8gSWYgaGVhZGVyIGRvZXMgbm90IGVuZCB3aXRoICJi
YXNlNjQiLCBtZWRpYVR5cGUgc2hvdWxkIGJlIHRoZSB3aG9sZSBoZWFkZXIuCi0gICAgICAgIGF1
dG8gbWVkaWFUeXBlID0gKGlzQmFzZTY0ID8gaGVhZGVyLnN1YnN0cmluZygwLCBtZWRpYVR5cGVF
bmQpIDogaGVhZGVyKS50b1N0cmluZygpOworICAgICAgICBhdXRvIG1lZGlhVHlwZSA9IChpc0Jh
c2U2NCA/IGhlYWRlci5sZWZ0KG1lZGlhVHlwZUVuZCkgOiBoZWFkZXIpLnRvU3RyaW5nKCk7CiAg
ICAgICAgIG1lZGlhVHlwZSA9IHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRUUFNwYWNlcyhtZWRp
YVR5cGUpOwogICAgICAgICBpZiAobWVkaWFUeXBlLnN0YXJ0c1dpdGgoJzsnKSkKICAgICAgICAg
ICAgIG1lZGlhVHlwZS5pbnNlcnQoInRleHQvcGxhaW4iX3MsIDApOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcAppbmRleCAzNzEzNGQ5YTRmZTUw
NmM4ZTQ4OWUwMzk0YzYyMWJlNTg5YWM1MmU0Li4wNDg4MWRhMThhMGFjMzFmN2Q4NTkzNjFiN2Vj
ZTFlNjM4MzllY2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0hUVFBQYXJzZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hU
VFBQYXJzZXJzLmNwcApAQCAtMzExLDEwICszMTEsOSBAQCBzdGF0aWMgY29uc3Qgc2l6ZV90IG1h
eElucHV0U2FtcGxlU2l6ZSA9IDEyODsKIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJUeXBlPgogc3Rh
dGljIFN0cmluZyB0cmltSW5wdXRTYW1wbGUoQ2hhclR5cGUqIHAsIHNpemVfdCBsZW5ndGgpCiB7
Ci0gICAgU3RyaW5nIHMgPSBTdHJpbmcocCwgc3RkOjptaW48c2l6ZV90PihsZW5ndGgsIG1heElu
cHV0U2FtcGxlU2l6ZSkpOwotICAgIGlmIChsZW5ndGggPiBtYXhJbnB1dFNhbXBsZVNpemUpCi0g
ICAgICAgIHMuYXBwZW5kKGhvcml6b250YWxFbGxpcHNpcyk7Ci0gICAgcmV0dXJuIHM7CisgICAg
aWYgKGxlbmd0aCA8PSBtYXhJbnB1dFNhbXBsZVNpemUpCisgICAgICAgIHJldHVybiBTdHJpbmco
cCwgbGVuZ3RoKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZyhTdHJpbmdWaWV3KHAsIGxlbmd0aCku
bGVmdChtYXhJbnB1dFNhbXBsZVNpemUpLCBob3Jpem9udGFsRWxsaXBzaXMpOwogfQogCiBzdGQ6
Om9wdGlvbmFsPFdhbGxUaW1lPiBwYXJzZUhUVFBEYXRlKGNvbnN0IFN0cmluZyYgdmFsdWUpCkBA
IC01OTcsNyArNTk2LDcgQEAgc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8U3RyaW5nVmlldywgSGFz
aE1hcDxTdHJpbmcsIFN0cmluZz4+PiBwYXJzZVN0cnVjdHVyZWRGaWUKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICArK2luZGV4OwogICAgIH0KLSAgICBTdHJpbmdWaWV3IGJhcmVJdGVtID0g
aGVhZGVyLnN1YnN0cmluZygwLCBpbmRleCk7CisgICAgU3RyaW5nVmlldyBiYXJlSXRlbSA9IGhl
YWRlci5sZWZ0KGluZGV4KTsKIAogICAgIC8vIFBhcnNlIHBhcmFtZXRlcnMgKGh0dHBzOi8vZGF0
YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjODk0MSNzZWN0aW9uLTQuMi4zLjIpLgogICAg
IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IHBhcmFtZXRlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9NSU1FSGVhZGVyLmNwcAppbmRleCBiNDIzNzlmMzNiMzViZjJlNWQ3
MmIxMjdjMmUwM2I2NDBhY2ZjYjZkLi5lZjkzZGRmMWRjYmU1MjFlOTdlNWNhZjZiOGY1ZDBlZjk5
MWM3MmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVI
ZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRl
ci5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgc3RhdGljIEtleVZhbHVlTWFwIHJldHJpZXZlS2V5VmFs
dWVQYWlycyhXZWJDb3JlOjpTaGFyZWRCdWZmZXJDaHVua1JlYWRlciYgYnVmZmUKICAgICAgICAg
ICAgIC8vIFRoaXMgaXMgbm90IGEga2V5IHZhbHVlIHBhaXIsIGlnbm9yZS4KICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgICAgIGtleSA9IGxpbmUuc3Vic3RyaW5nKDAsIHNl
bWlDb2xvbkluZGV4KS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpLnN0cmlwV2hpdGVTcGFjZSgp
OworICAgICAgICBrZXkgPSBsaW5lLmxlZnQoc2VtaUNvbG9uSW5kZXgpLmNvbnZlcnRUb0FTQ0lJ
TG93ZXJjYXNlKCkuc3RyaXBXaGl0ZVNwYWNlKCk7CiAgICAgICAgIHZhbHVlLmFwcGVuZChsaW5l
LnN1YnN0cmluZyhzZW1pQ29sb25JbmRleCArIDEpKTsKICAgICB9CiAgICAgLy8gU3RvcmUgdGhl
IGxhc3QgcHJvcGVydHkgaWYgdGhlcmUgaXMgb25lLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwCmluZGV4IDA0ZTY0Y2QyYzdhOTBk
OWNlM2RjMjlmOGIyZDE2NzgyNDBmYTAzNGIuLjc1YjE2YjEyYzllMzJjMTc5NDE4MWIxZWQ5MTE2
NmNhZjU0MDZiNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9Db29raWVVdGlsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ29va2llVXRpbC5jcHAKQEAgLTk3LDcgKzk3LDcgQEAgc3RhdGljIHZvaWQgcGFyc2VD
b29raWVBdHRyaWJ1dGVzKGNvbnN0IFN0cmluZyYgYXR0cmlidXRlLCBib29sJiBoYXNNYXhBZ2Us
IENvb2sKICAgICBTdHJpbmcgYXR0cmlidXRlVmFsdWU7CiAKICAgICBpZiAoYXNzaWdubWVudFBv
c2l0aW9uICE9IG5vdEZvdW5kKSB7Ci0gICAgICAgIGF0dHJpYnV0ZU5hbWUgPSBhdHRyaWJ1dGUu
c3Vic3RyaW5nKDAsIGFzc2lnbm1lbnRQb3NpdGlvbikuc3RyaXBXaGl0ZVNwYWNlKCk7CisgICAg
ICAgIGF0dHJpYnV0ZU5hbWUgPSBhdHRyaWJ1dGUubGVmdChhc3NpZ25tZW50UG9zaXRpb24pLnN0
cmlwV2hpdGVTcGFjZSgpOwogICAgICAgICBhdHRyaWJ1dGVWYWx1ZSA9IGF0dHJpYnV0ZS5zdWJz
dHJpbmcoYXNzaWdubWVudFBvc2l0aW9uICsgMSkuc3RyaXBXaGl0ZVNwYWNlKCk7CiAgICAgfSBl
bHNlCiAgICAgICAgIGF0dHJpYnV0ZU5hbWUgPSBhdHRyaWJ1dGUuc3RyaXBXaGl0ZVNwYWNlKCk7
CkBAIC0xNTMsNyArMTUzLDcgQEAgc3RkOjpvcHRpb25hbDxDb29raWU+IHBhcnNlQ29va2llSGVh
ZGVyKGNvbnN0IFN0cmluZyYgY29va2llTGluZSkKIAogICAgIHNpemVfdCBzZXBhcmF0b3JQb3Np
dGlvbiA9IGNvb2tpZUxpbmUuZmluZCgnOycpOwogCi0gICAgU3RyaW5nIGNvb2tpZVBhaXIgPSBz
ZXBhcmF0b3JQb3NpdGlvbiA9PSBub3RGb3VuZCA/IGNvb2tpZUxpbmUgOiBjb29raWVMaW5lLnN1
YnN0cmluZygwLCBzZXBhcmF0b3JQb3NpdGlvbik7CisgICAgU3RyaW5nIGNvb2tpZVBhaXIgPSBz
ZXBhcmF0b3JQb3NpdGlvbiA9PSBub3RGb3VuZCA/IGNvb2tpZUxpbmUgOiBjb29raWVMaW5lLmxl
ZnQoc2VwYXJhdG9yUG9zaXRpb24pOwogCiAgICAgU3RyaW5nIGNvb2tpZU5hbWU7CiAgICAgU3Ry
aW5nIGNvb2tpZVZhbHVlOwpAQCAtMTY0LDcgKzE2NCw3IEBAIHN0ZDo6b3B0aW9uYWw8Q29va2ll
PiBwYXJzZUNvb2tpZUhlYWRlcihjb25zdCBTdHJpbmcmIGNvb2tpZUxpbmUpCiAgICAgaWYgKGFz
c2lnbm1lbnRQb3NpdGlvbiA9PSBub3RGb3VuZCkKICAgICAgICAgY29va2llVmFsdWUgPSBjb29r
aWVQYWlyOwogICAgIGVsc2UgewotICAgICAgICBjb29raWVOYW1lID0gY29va2llUGFpci5zdWJz
dHJpbmcoMCwgYXNzaWdubWVudFBvc2l0aW9uKTsKKyAgICAgICAgY29va2llTmFtZSA9IGNvb2tp
ZVBhaXIubGVmdChhc3NpZ25tZW50UG9zaXRpb24pOwogICAgICAgICBjb29raWVWYWx1ZSA9IGNv
b2tpZVBhaXIuc3Vic3RyaW5nKGFzc2lnbm1lbnRQb3NpdGlvbiArIDEpOwogICAgIH0KIApAQCAt
MTkzLDcgKzE5Myw3IEBAIFN0cmluZyBkZWZhdWx0UGF0aEZvclVSTChjb25zdCBVUkwmIHVybCkK
ICAgICBpZiAoIWxhc3RTbGFzaFBvc2l0aW9uKQogICAgICAgICByZXR1cm4gIi8iX3M7CiAKLSAg
ICByZXR1cm4gcGF0aC5zdWJzdHJpbmcoMCwgbGFzdFNsYXNoUG9zaXRpb24pOworICAgIHJldHVy
biBwYXRoLmxlZnQobGFzdFNsYXNoUG9zaXRpb24pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBDb29r
aWVVdGlsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZVRv
U2NyaXB0TWFwcGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZVRv
U2NyaXB0TWFwcGluZy5jcHAKaW5kZXggNzIzMDllYzBkYzFlNGZkM2I4MWYzZDU0MjE1OGE5ZWFh
MDJmYTcyYy4uODU3YjkzYmU1MzdlZGQxNmRiMDY5OGIzYzk4ZWM4YzQ5MzhhNTVjMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVUb1NjcmlwdE1hcHBpbmcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlVG9TY3JpcHRNYXBw
aW5nLmNwcApAQCAtMzc1LDcgKzM3NSw3IEBAIFVTY3JpcHRDb2RlIGxvY2FsZVRvU2NyaXB0Q29k
ZUZvckZvbnRTZWxlY3Rpb24oY29uc3QgU3RyaW5nJiBsb2NhbGUpCiAgICAgICAgIFVTY3JpcHRD
b2RlIGNvZGUgPSBzY3JpcHROYW1lVG9Db2RlKGNhbm9uaWNhbExvY2FsZS5zdWJzdHJpbmcodW5k
ZXJzY29yZVBvc2l0aW9uICsgMSkpOwogICAgICAgICBpZiAoY29kZSAhPSBVU0NSSVBUX0lOVkFM
SURfQ09ERSAmJiBjb2RlICE9IFVTQ1JJUFRfVU5LTk9XTikKICAgICAgICAgICAgIHJldHVybiBj
b2RlOwotICAgICAgICBjYW5vbmljYWxMb2NhbGUgPSBjYW5vbmljYWxMb2NhbGUuc3Vic3RyaW5n
KDAsIHVuZGVyc2NvcmVQb3NpdGlvbik7CisgICAgICAgIGNhbm9uaWNhbExvY2FsZSA9IGNhbm9u
aWNhbExvY2FsZS5sZWZ0KHVuZGVyc2NvcmVQb3NpdGlvbik7CiAgICAgfQogICAgIHJldHVybiBV
U0NSSVBUX0NPTU1PTjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9QYXN0ZWJvYXJkV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJv
YXJkV2luLmNwcAppbmRleCA0Y2UzMjhhODMxYzkwYmY2YmQyMjhlMWYwNzI0MDhkNjRiMzNhNDVl
Li43ZDE1MzZhN2Q2NGQzZmM4MzYyNzYyZjNhNzA0ZGE1MzhjNmY3YTYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCkBAIC02MDUsNyArNjA1LDcg
QEAgc3RhdGljIFN0cmluZyBmaWxlU3lzdGVtUGF0aEZyb21VUkxPclRpdGxlKGNvbnN0IFN0cmlu
ZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcKIAogICAgIGlmICghdGl0bGUuaXNFbXB0eSgpKSB7
CiAgICAgICAgIHNpemVfdCBsZW4gPSBzdGQ6Om1pbjxzaXplX3Q+KHRpdGxlLmxlbmd0aCgpLCBm
c1BhdGhNYXhMZW5ndGhFeGNsdWRpbmdFeHRlbnNpb24pOwotICAgICAgICBTdHJpbmdWaWV3KHRp
dGxlKS5zdWJzdHJpbmcoMCwgbGVuKS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChmc1BhdGhC
dWZmZXIpOworICAgICAgICBTdHJpbmdWaWV3KHRpdGxlKS5sZWZ0KGxlbikuZ2V0Q2hhcmFjdGVy
c1dpdGhVcGNvbnZlcnQoZnNQYXRoQnVmZmVyKTsKICAgICAgICAgZnNQYXRoQnVmZmVyW2xlbl0g
PSAwOwogICAgICAgICBwYXRoUmVtb3ZlQmFkRlNDaGFyYWN0ZXJzKHdjaGFyRnJvbShmc1BhdGhC
dWZmZXIpLCBsZW4pOwogICAgIH0KQEAgLTYyMCwxMCArNjIwLDEwIEBAIHN0YXRpYyBTdHJpbmcg
ZmlsZVN5c3RlbVBhdGhGcm9tVVJMT3JUaXRsZShjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29u
c3QgU3RyaW5nCiAgICAgICAgIGF1dG8gbGFzdENvbXBvbmVudCA9IHVybC5sYXN0UGF0aENvbXBv
bmVudCgpOwogICAgICAgICBpZiAodXJsLmlzTG9jYWxGaWxlKCkgfHwgKCFpc0xpbmsgJiYgIWxh
c3RDb21wb25lbnQuaXNFbXB0eSgpKSkgewogICAgICAgICAgICAgbGVuID0gc3RkOjptaW48RFdP
UkQ+KGZzUGF0aE1heExlbmd0aEV4Y2x1ZGluZ0V4dGVuc2lvbiwgbGFzdENvbXBvbmVudC5sZW5n
dGgoKSk7Ci0gICAgICAgICAgICBsYXN0Q29tcG9uZW50LnN1YnN0cmluZygwLCBsZW4pLmdldENo
YXJhY3RlcnNXaXRoVXBjb252ZXJ0KGZzUGF0aEJ1ZmZlcik7CisgICAgICAgICAgICBsYXN0Q29t
cG9uZW50LmxlZnQobGVuKS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChmc1BhdGhCdWZmZXIp
OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbGVuID0gc3RkOjptaW48RFdPUkQ+KGZz
UGF0aE1heExlbmd0aEV4Y2x1ZGluZ0V4dGVuc2lvbiwgdXJsU3RyaW5nLmxlbmd0aCgpKTsKLSAg
ICAgICAgICAgIFN0cmluZ1ZpZXcodXJsU3RyaW5nKS5zdWJzdHJpbmcoMCwgbGVuKS5nZXRDaGFy
YWN0ZXJzV2l0aFVwY29udmVydChmc1BhdGhCdWZmZXIpOworICAgICAgICAgICAgU3RyaW5nVmll
dyh1cmxTdHJpbmcpLmxlZnQobGVuKS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChmc1BhdGhC
dWZmZXIpOwogICAgICAgICB9CiAgICAgICAgIGZzUGF0aEJ1ZmZlcltsZW5dID0gMDsKICAgICAg
ICAgcGF0aFJlbW92ZUJhZEZTQ2hhcmFjdGVycyh3Y2hhckZyb20oZnNQYXRoQnVmZmVyKSwgbGVu
KTsKQEAgLTcyMSw3ICs3MjEsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlVVJMVG9EYXRhT2Jq
ZWN0KGNvbnN0IFVSTCYga3VybCwgY29uc3QgU3RyaW5nJiB0aXRsZVN0cikKICAgICBmZ2QtPmZn
ZFswXS5uRmlsZVNpemVMb3cgPSBjb250ZW50Lmxlbmd0aCgpOwogCiAgICAgdW5zaWduZWQgbWF4
U2l6ZSA9IHN0ZDo6bWluPHVuc2lnbmVkPihmc1BhdGgubGVuZ3RoKCksIFdURl9BUlJBWV9MRU5H
VEgoZmdkLT5mZ2RbMF0uY0ZpbGVOYW1lKSk7Ci0gICAgU3RyaW5nVmlldyhmc1BhdGgpLnN1YnN0
cmluZygwLCBtYXhTaXplKS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydCh1Y2hhckZyb20oZmdk
LT5mZ2RbMF0uY0ZpbGVOYW1lKSk7CisgICAgU3RyaW5nVmlldyhmc1BhdGgpLmxlZnQobWF4U2l6
ZSkuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQodWNoYXJGcm9tKGZnZC0+ZmdkWzBdLmNGaWxl
TmFtZSkpOwogICAgIEdsb2JhbFVubG9jayh1cmxGaWxlRGVzY3JpcHRvcik7CiAKICAgICBjaGFy
KiBmaWxlQ29udGVudHMgPSBzdGF0aWNfY2FzdDxjaGFyKj4oR2xvYmFsTG9jayh1cmxGaWxlQ29u
dGVudCkpOwpAQCAtOTYwLDcgKzk2MCw3IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbElt
YWdlRmlsZURlc2NyaXB0b3IoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYKICAgICB9
CiAKICAgICBpbnQgbWF4U2l6ZSA9IHN0ZDo6bWluPGludD4oZnNQYXRoLmxlbmd0aCgpLCBXVEZf
QVJSQVlfTEVOR1RIKGZnZC0+ZmdkWzBdLmNGaWxlTmFtZSkpOwotICAgIFN0cmluZ1ZpZXcoZnNQ
YXRoKS5zdWJzdHJpbmcoMCwgbWF4U2l6ZSkuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQodWNo
YXJGcm9tKGZnZC0+ZmdkWzBdLmNGaWxlTmFtZSkpOworICAgIFN0cmluZ1ZpZXcoZnNQYXRoKS5s
ZWZ0KG1heFNpemUpLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KHVjaGFyRnJvbShmZ2QtPmZn
ZFswXS5jRmlsZU5hbWUpKTsKICAgICBHbG9iYWxVbmxvY2sobWVtT2JqKTsKIAogICAgIHJldHVy
biBtZW1PYmo7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV2ViQ29y
ZVRleHRSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV2ViQ29yZVRl
eHRSZW5kZXJlci5jcHAKaW5kZXggZTljM2M5YWVmMDBiZjA3ZDMxMGM2YTk0YzYwNzRjMjlmM2M3
MzNmMi4uYmI4MGM2N2NhMTA2ZmIyMmRhZDY3YTcyOGRmODFiNGJhZmNiOWNmZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dlYkNvcmVUZXh0UmVuZGVyZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XZWJDb3JlVGV4dFJlbmRlcmVyLmNwcApA
QCAtNjAsNyArNjAsNyBAQCBzdGF0aWMgdm9pZCBkb0RyYXdUZXh0QXRQb2ludChHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdGV4dCwgY29ucwogCiAgICAgICAgIGludCBi
ZWZvcmVXaWR0aDsKICAgICAgICAgaWYgKHVuZGVybGluZWRJbmRleCA+IDApIHsKLSAgICAgICAg
ICAgIFRleHRSdW4gYmVmb3JlUnVuKFN0cmluZ1ZpZXcodGV4dCkuc3Vic3RyaW5nKDAsIHVuZGVy
bGluZWRJbmRleCkpOworICAgICAgICAgICAgVGV4dFJ1biBiZWZvcmVSdW4oU3RyaW5nVmlldyh0
ZXh0KS5sZWZ0KHVuZGVybGluZWRJbmRleCkpOwogICAgICAgICAgICAgYmVmb3JlV2lkdGggPSBm
b250LndpZHRoKGJlZm9yZVJ1bik7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgYmVmb3Jl
V2lkdGggPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNr
aW5nLmNwcAppbmRleCBkOTc3ODk1YWZkYzE3OGU2M2YzYTRjZGE5MTIwZjY2M2FiNWUxOTg1Li43
NzA1YWY1YzM3NWUxYzQ4YTYzZDQ5ZDUzYjZmMzVkZTRmZjJmZDIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtNTE1LDEwICs1MTUs
OCBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6Y3JlYXRlUHJpbWFyeUdyYXBoaWNzTGF5ZXIo
KQogewogICAgIFN0cmluZyBsYXllck5hbWUgPSBtX293bmluZ0xheWVyLm5hbWUoKTsKICAgICBj
b25zdCB1bnNpZ25lZCBtYXhMYXllck5hbWVMZW5ndGggPSAxMDA7Ci0gICAgaWYgKGxheWVyTmFt
ZS5sZW5ndGgoKSA+IG1heExheWVyTmFtZUxlbmd0aCkgewotICAgICAgICBsYXllck5hbWUudHJ1
bmNhdGUobWF4TGF5ZXJOYW1lTGVuZ3RoKTsKLSAgICAgICAgbGF5ZXJOYW1lLmFwcGVuZCgiLi4u
Il9zKTsKLSAgICB9CisgICAgaWYgKGxheWVyTmFtZS5sZW5ndGgoKSA+IG1heExheWVyTmFtZUxl
bmd0aCkKKyAgICAgICAgbGF5ZXJOYW1lID0gbWFrZVN0cmluZyhTdHJpbmdWaWV3KGxheWVyTmFt
ZSkubGVmdChtYXhMYXllck5hbWVMZW5ndGgpLCAiLi4uIl9zKTsKICAgICBtX2dyYXBoaWNzTGF5
ZXIgPSBjcmVhdGVHcmFwaGljc0xheWVyKGxheWVyTmFtZSwgbV9pc0ZyYW1lTGF5ZXJXaXRoVGls
ZWRCYWNraW5nID8gR3JhcGhpY3NMYXllcjo6VHlwZTo6UGFnZVRpbGVkQmFja2luZyA6IEdyYXBo
aWNzTGF5ZXI6OlR5cGU6Ok5vcm1hbCk7CiAKICAgICBpZiAobV9pc0ZyYW1lTGF5ZXJXaXRoVGls
ZWRCYWNraW5nKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmlu
ZGV4IDM4NjMyYjE0MjgzYmMwYTEzODA0MTE0NmFjYTljMDIzODY1NGFkZjcuLjk3MzMyM2U0OTJi
YTc3OTRmZGRhMTEwOTQ5ZjlkNDI0Mzk0YzIxYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuY3BwCkBAIC0xMjcwLDcgKzEyNzAsNyBAQCB2b2lkIFJlbmRlck9iamVj
dDo6b3V0cHV0UmVuZGVyT2JqZWN0KFRleHRTdHJlYW0mIHN0cmVhbSwgYm9vbCBtYXJrLCBpbnQg
ZGVwdGgpCiAgICAgICAgICAgICAKICAgICAgICAgICAgIGNvbnN0IGludCBtYXhQcmludGVkTGVu
Z3RoID0gODA7CiAgICAgICAgICAgICBpZiAodmFsdWUubGVuZ3RoKCkgPiBtYXhQcmludGVkTGVu
Z3RoKSB7Ci0gICAgICAgICAgICAgICAgU3RyaW5nIHN1YnN0cmluZyA9IHZhbHVlLnN1YnN0cmlu
ZygwLCBtYXhQcmludGVkTGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgc3Vic3RyaW5n
ID0gdmFsdWUubGVmdChtYXhQcmludGVkTGVuZ3RoKTsKICAgICAgICAgICAgICAgICBzdHJlYW0g
PDwgIiBcIiIgPDwgc3Vic3RyaW5nLnV0ZjgoKS5kYXRhKCkgPDwgIlwiLi4uIjsKICAgICAgICAg
ICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIHN0cmVhbSA8PCAiIFwiIiA8PCB2YWx1ZS51dGY4
KCkuZGF0YSgpIDw8ICJcIiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvR3JpZFBvc2l0aW9uc1Jlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9HcmlkUG9zaXRpb25zUmVzb2x2ZXIuY3BwCmluZGV4IGJjOGNkYmNjODk3YmE4ZTdk
YjUxODI5NDdjNjkzZGU5YzI5MGIwMzEuLjg2YzI2Zjg3NThhNGVjZDlhMmQyZWU1NTU4MmNlOTg4
MzZkOWJmNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Hcmlk
UG9zaXRpb25zUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9HcmlkUG9zaXRpb25zUmVzb2x2ZXIuY3BwCkBAIC0xNDcsNyArMTQ3LDcgQEAgTmFtZWRMaW5l
Q29sbGVjdGlvbkJhc2U6Ok5hbWVkTGluZUNvbGxlY3Rpb25CYXNlKGNvbnN0IFJlbmRlckdyaWQm
IGluaXRpYWxHcmlkLAogICAgICAgICAgICAgICAgIHN0YXJ0U2lkZSA9IGZhbHNlOwogICAgICAg
ICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgc3RhcnRTaWRlID0gdHJ1ZTsKLSAgICAgICAg
ICAgIGFyZWFOYW1lID0gbmFtZS5zdWJzdHJpbmcoMCwgc3VmZml4KTsKKyAgICAgICAgICAgIGFy
ZWFOYW1lID0gbmFtZS5sZWZ0KHN1ZmZpeCk7CiAgICAgICAgIH0KICAgICAgICAgYXV0byBpbXBs
aWNpdExpbmUgPSBjbGFtcGVkSW1wbGljaXRMaW5lRm9yQXJlYSgqZ3JpZENvbnRhaW5lclN0eWxl
LCBhcmVhTmFtZSwgMCwgbV9sYXN0TGluZSwgaXNSb3dBeGlzLCBzdGFydFNpZGUpOwogICAgICAg
ICBpZiAoaW1wbGljaXRMaW5lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rl
c3RzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXN0cy5jcHAKaW5kZXggZjA0YjRmYWYz
ZTc4MDViNWEzMmNkYzljN2MyMDc2MGY5NjZmOTc1MC4uNTI3OWViY2MyN2RjNjBmMTM1YjI3NWZm
NGQzNTllZjNlZDcxMTZmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rlc3Rz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGVzdHMuY3BwCkBAIC0xMTksNyArMTE5
LDcgQEAgYm9vbCBTVkdUZXN0czo6aXNWYWxpZCgpIGNvbnN0CiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogICAgIGZvciAoYXV0byYgbGFuZ3VhZ2UgOiBtX3N5c3RlbUxhbmd1YWdl
LT5pdGVtcygpKSB7Ci0gICAgICAgIGlmIChsYW5ndWFnZSAhPSBkZWZhdWx0TGFuZ3VhZ2UoKS5z
dWJzdHJpbmcoMCwgMikpCisgICAgICAgIGlmIChsYW5ndWFnZSAhPSBkZWZhdWx0TGFuZ3VhZ2Uo
KS5sZWZ0KDIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBmb3IgKGF1
dG8mIGV4dGVuc2lvbiA6IG1fcmVxdWlyZWRFeHRlbnNpb25zLT5pdGVtcygpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVVJJUmVmZXJlbmNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdVUklSZWZlcmVuY2UuY3BwCmluZGV4IGVlNDVhMjljYWUxZjE3ZmE3OGJmYjk3
ZTEzN2M0MDZlMGM1NzYwZWQuLjRhOWJmZTg5MzgzN2MxZDI5MTdkYTk1ZWNjOTMzODRmNmMyMDAy
NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVUklSZWZlcmVuY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVUklSZWZlcmVuY2UuY3BwCkBAIC02Nyw3ICs2Nyw3
IEBAIFN0cmluZyBTVkdVUklSZWZlcmVuY2U6OmZyYWdtZW50SWRlbnRpZmllckZyb21JUklTdHJp
bmcoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0CiAgICAgaWYgKCFzdGFydCkKICAgICAgICAgcmV0
dXJuIHVybC5zdWJzdHJpbmcoMSk7CiAKLSAgICBVUkwgYmFzZSA9IFVSTChkb2N1bWVudC5iYXNl
VVJMKCksIHVybC5zdWJzdHJpbmcoMCwgc3RhcnQpKTsKKyAgICBVUkwgYmFzZSA9IFVSTChkb2N1
bWVudC5iYXNlVVJMKCksIHVybC5sZWZ0KHN0YXJ0KSk7CiAgICAgU3RyaW5nIGZyYWdtZW50SWRl
bnRpZmllciA9IHVybC5zdWJzdHJpbmcoc3RhcnQpOwogICAgIFVSTCBrdXJsKGJhc2UsIGZyYWdt
ZW50SWRlbnRpZmllcik7CiAgICAgaWYgKGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIo
a3VybCwgZG9jdW1lbnQudXJsKCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2Fu
aW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9u
L1NWR1NNSUxFbGVtZW50LmNwcAppbmRleCBjNDM2ZWFlMjM0OWI4OWViZjA3ZjM5MDAwZGY1NjVk
MzRkMGIzNTAzLi4xNmVhYjY1MjBlODhiY2NjMzUzNzQwYjc3NzE3YWQ2ZTE5N2QzNjI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcApAQCAt
MzQ4LDEzICszNDgsMTMgQEAgU01JTFRpbWUgU1ZHU01JTEVsZW1lbnQ6OnBhcnNlQ2xvY2tWYWx1
ZShTdHJpbmdWaWV3IGRhdGEpCiAgICAgc2l6ZV90IGRvdWJsZVBvaW50T25lID0gcGFyc2UuZmlu
ZCgnOicpOwogICAgIHNpemVfdCBkb3VibGVQb2ludFR3byA9IHBhcnNlLmZpbmQoJzonLCBkb3Vi
bGVQb2ludE9uZSArIDEpOwogICAgIGlmIChkb3VibGVQb2ludE9uZSA9PSAyICYmIGRvdWJsZVBv
aW50VHdvID09IDUgJiYgcGFyc2UubGVuZ3RoKCkgPj0gOCkgewotICAgICAgICBhdXRvIGhvdXIg
PSBwYXJzZUludGVnZXI8dWludDhfdD4ocGFyc2Uuc3Vic3RyaW5nKDAsIDIpKTsKKyAgICAgICAg
YXV0byBob3VyID0gcGFyc2VJbnRlZ2VyPHVpbnQ4X3Q+KHBhcnNlLmxlZnQoMikpOwogICAgICAg
ICBhdXRvIG1pbnV0ZSA9IHBhcnNlSW50ZWdlcjx1aW50OF90PihwYXJzZS5zdWJzdHJpbmcoMywg
MikpOwogICAgICAgICBpZiAoIWhvdXIgfHwgIW1pbnV0ZSkKICAgICAgICAgICAgIHJldHVybiBT
TUlMVGltZTo6dW5yZXNvbHZlZCgpOwogICAgICAgICByZXN1bHQgPSAqaG91ciAqIDYwICogNjAg
KyAqbWludXRlICogNjAgKyBwYXJzZS5zdWJzdHJpbmcoNikudG9Eb3VibGUob2spOwogICAgIH0g
ZWxzZSBpZiAoZG91YmxlUG9pbnRPbmUgPT0gMiAmJiBkb3VibGVQb2ludFR3byA9PSBub3RGb3Vu
ZCAmJiBwYXJzZS5sZW5ndGgoKSA+PSA1KSB7IAotICAgICAgICBhdXRvIG1pbnV0ZSA9IHBhcnNl
SW50ZWdlcjx1aW50OF90PihwYXJzZS5zdWJzdHJpbmcoMCwgMikpOworICAgICAgICBhdXRvIG1p
bnV0ZSA9IHBhcnNlSW50ZWdlcjx1aW50OF90PihwYXJzZS5sZWZ0KDIpKTsKICAgICAgICAgaWYg
KCFtaW51dGUpCiAgICAgICAgICAgICByZXR1cm4gU01JTFRpbWU6OnVucmVzb2x2ZWQoKTsKICAg
ICAgICAgcmVzdWx0ID0gKm1pbnV0ZSAqIDYwICsgcGFyc2Uuc3Vic3RyaW5nKDMpLnRvRG91Ymxl
KG9rKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VySm9iLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VySm9iLmNwcAppbmRleCA4MDRlNmY0YzA4NGIwYjEzZTRkYWEwODUwYTUwODZhNjRhOTdiMjNh
Li5mZWM1ZjM5NjBkZTQ5YTliMDI4YjFmMDE0MzljMzBkYWY3ZWNhY2U1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2IuY3BwCkBAIC0x
MjksNyArMTI5LDcgQEAgUmVzb3VyY2VFcnJvciBTZXJ2aWNlV29ya2VySm9iOjp2YWxpZGF0ZVNl
cnZpY2VXb3JrZXJSZXNwb25zZShjb25zdCBTZXJ2aWNlV29ya2UKICAgICBpZiAoc2VydmljZVdv
cmtlckFsbG93ZWQuaXNOdWxsKCkpIHsKICAgICAgICAgYXV0byBwYXRoID0gam9iRGF0YS5zY3Jp
cHRVUkwucGF0aCgpOwogICAgICAgICAvLyBMYXN0IHBhcnQgb2YgdGhlIHBhdGggaXMgdGhlIHNj
cmlwdCdzIGZpbGVuYW1lLgotICAgICAgICBtYXhTY29wZVN0cmluZyA9IHBhdGguc3Vic3RyaW5n
KDAsIHBhdGgucmV2ZXJzZUZpbmQoJy8nKSArIDEpLnRvU3RyaW5nKCk7CisgICAgICAgIG1heFNj
b3BlU3RyaW5nID0gcGF0aC5sZWZ0KHBhdGgucmV2ZXJzZUZpbmQoJy8nKSArIDEpLnRvU3RyaW5n
KCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgYXV0byBtYXhTY29wZSA9IFVSTChqb2JEYXRhLnNj
cmlwdFVSTCwgc2VydmljZVdvcmtlckFsbG93ZWQpOwogICAgICAgICBpZiAoU2VjdXJpdHlPcmln
aW46OmNyZWF0ZShtYXhTY29wZSktPmlzU2FtZU9yaWdpbkFzKFNlY3VyaXR5T3JpZ2luOjpjcmVh
dGUoam9iRGF0YS5zY3JpcHRVUkwpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmNwcAppbmRl
eCA3YTg4ZmE3NzRlZGMxMmUyNWVkYmMyNTA0NDNjZWEzMTJhYmEyZWYyLi4zYThmYWMxOTM5MWVh
YzI5N2FmYWM3ZmUyMWZmOGY0NzEyMWQ2ZGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXku
Y3BwCkBAIC0xMTgsNyArMTE4LDcgQEAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uS2V5PiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5Ojpmcm9tRGEKICAgICBpZiAo
IXNjb3BlLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHJl
dHVybiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5IHsgeyBrZXkuc3Vic3RyaW5nKDAsIGZp
cnN0KSwga2V5LnN1YnN0cmluZyhmaXJzdCArIDEsIHNlY29uZCAtIGZpcnN0IC0gMSksIHNob3J0
UG9ydCB9LCBXVEZNb3ZlKHNjb3BlKSB9OworICAgIHJldHVybiBTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uS2V5IHsgeyBrZXkubGVmdChmaXJzdCksIGtleS5zdWJzdHJpbmcoZmlyc3QgKyAxLCBz
ZWNvbmQgLSBmaXJzdCAtIDEpLCBzaG9ydFBvcnQgfSwgV1RGTW92ZShzY29wZSkgfTsKIH0KIAog
I2lmICFMT0dfRElTQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlci5jcHAKaW5kZXggN2MzNjQyZmUzMzgxYzk2YTk0ZDE1NWNjNDdhYWJl
OWNlODU2YjdkNy4uODdhZDg5NTQ4YTFhNmExOGQwOGRmYWUzMjJmYjUyOTI1ZDVhYmM3MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5j
cHAKQEAgLTEyNjgsNyArMTI2OCw3IEBAIGJvb2wgU1dTZXJ2ZXI6OmNhbkhhbmRsZVNjaGVtZShT
dHJpbmdWaWV3IHNjaGVtZSkgY29uc3QKIHsKICAgICBpZiAoc2NoZW1lLmlzTnVsbCgpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZShzY2hlbWUuc3Vic3RyaW5nKDAsIDQpLCAiaHR0cCIpKQorICAgIGlmICghZXF1YWxMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2Uoc2NoZW1lLmxlZnQoNCksICJodHRwIikpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICBpZiAoc2NoZW1lLmxlbmd0aCgpID09IDUgJiYgaXNBU0NJSUFscGhhQ2Fz
ZWxlc3NFcXVhbChzY2hlbWVbNF0sICdzJykpCiAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmNwcCBiL1NvdXJjZS9XZWJEcml2
ZXIvQ29tbWFuZFJlc3VsdC5jcHAKaW5kZXggODM1OTY5YmZhMzZjZTE2ZjYzNTZjNmJhMTdjYTky
ZWExZTk4ZGVkZS4uMmIxYjdkYjEyMTRjOWZlNmNlYWI5NTFmMzYxNTAyYzE5ZWY5NGQyMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwCkBAIC03NCw3ICs3NCw3IEBAIENvbW1hbmRSZXN1
bHQ6OkNvbW1hbmRSZXN1bHQoUmVmUHRyPEpTT046OlZhbHVlPiYmIHJlc3VsdCwgc3RkOjpvcHRp
b25hbDxFcnJvckNvCiAgICAgICAgIFN0cmluZyBlcnJvck5hbWU7CiAgICAgICAgIGF1dG8gcG9z
aXRpb24gPSBlcnJvck1lc3NhZ2UuZmluZCgnOycpOwogICAgICAgICBpZiAocG9zaXRpb24gIT0g
bm90Rm91bmQpIHsKLSAgICAgICAgICAgIGVycm9yTmFtZSA9IGVycm9yTWVzc2FnZS5zdWJzdHJp
bmcoMCwgcG9zaXRpb24pOworICAgICAgICAgICAgZXJyb3JOYW1lID0gZXJyb3JNZXNzYWdlLmxl
ZnQocG9zaXRpb24pOwogICAgICAgICAgICAgbV9lcnJvck1lc3NhZ2UgPSBlcnJvck1lc3NhZ2Uu
c3Vic3RyaW5nKHBvc2l0aW9uICsgMSk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgZXJy
b3JOYW1lID0gZXJyb3JNZXNzYWdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VU
cmFja2VyLmNwcAppbmRleCBlMDlkMmU5ZjM2Y2FiMjVjMTc1NDFjODc0OTZmZjI5YjkxYTA1M2I1
Li43MmVkMzM3OWQzNmYyZTdmZjZmNTMwMGQ1ZTY2M2Q3NDAwN2FjMjljIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJh
c2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3Jh
Z2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIFZl
Y3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+IExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6b3Jp
Z2lucygpIGNvbnN0CiAgICAgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4gZGF0YWJhc2VPcmln
aW5zOwogICAgIGZvciAoYXV0byYgcGF0aCA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobG9j
YWxTdG9yYWdlRGlyZWN0b3J5KCkpKSB7CiAgICAgICAgIGF1dG8gZmlsZW5hbWUgPSBGaWxlU3lz
dGVtOjpwYXRoRmlsZU5hbWUocGF0aCk7Ci0gICAgICAgIGF1dG8gb3JpZ2luSWRlbnRpZmllciA9
IGZpbGVuYW1lLnN1YnN0cmluZygwLCBmaWxlbmFtZS5sZW5ndGgoKSAtIHN0cmxlbigiLmxvY2Fs
c3RvcmFnZSIpKTsKKyAgICAgICAgYXV0byBvcmlnaW5JZGVudGlmaWVyID0gZmlsZW5hbWUubGVm
dChmaWxlbmFtZS5sZW5ndGgoKSAtIHN0cmxlbigiLmxvY2Fsc3RvcmFnZSIpKTsKICAgICAgICAg
YXV0byBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZpZXIo
b3JpZ2luSWRlbnRpZmllcik7CiAgICAgICAgIGlmIChvcmlnaW4pCiAgICAgICAgICAgICBkYXRh
YmFzZU9yaWdpbnMuYXBwZW5kKG9yaWdpbi52YWx1ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCmlu
ZGV4IGIxZTZmZjNjMDc4YmU4NzFkOTUxMGZhMzc2YzQ3MDBlMzNjMTlmYTYuLjYxMTY3YThlYmE4
MDU5MTIwYzMxNGRlYjMyNzIyMDlkYzE2OGVkOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcApAQCAt
MjM1LDcgKzIzNSw3IEBAIHN0YXRpYyB2b2lkIHRyYXZlcnNlUmVjb3Jkc0ZpbGVzKGNvbnN0IFN0
cmluZyYgcmVjb3Jkc1BhdGgsIGNvbnN0IFN0cmluZyYgZXhwZWN0CiAgICAgICAgICAgICAgICAg
aWYgKGVudHJ5VHlwZSAhPSBEaXJlY3RvcnlFbnRyeVR5cGU6OkZpbGUgfHwgZmlsZU5hbWUubGVu
Z3RoKCkgPCBLZXk6Omhhc2hTdHJpbmdMZW5ndGgoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOwogCi0gICAgICAgICAgICAgICAgU3RyaW5nIGhhc2hTdHJpbmcgPSBmaWxlTmFtZS5zdWJz
dHJpbmcoMCwgS2V5OjpoYXNoU3RyaW5nTGVuZ3RoKCkpOworICAgICAgICAgICAgICAgIFN0cmlu
ZyBoYXNoU3RyaW5nID0gZmlsZU5hbWUubGVmdChLZXk6Omhhc2hTdHJpbmdMZW5ndGgoKSk7CiAg
ICAgICAgICAgICAgICAgYXV0byBpc0Jsb2IgPSBmaWxlTmFtZS5sZW5ndGgoKSA+IEtleTo6aGFz
aFN0cmluZ0xlbmd0aCgpICYmIGZpbGVOYW1lLmVuZHNXaXRoKGJsb2JTdWZmaXgpOwogICAgICAg
ICAgICAgICAgIGZ1bmN0aW9uKGZpbGVOYW1lLCBoYXNoU3RyaW5nLCBhY3R1YWxUeXBlLCBpc0Js
b2IsIHJlY29yZERpcmVjdG9yeVBhdGgpOwogICAgICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTG9jYWxTdG9yYWdlTWFuYWdlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTG9jYWxTdG9yYWdlTWFu
YWdlci5jcHAKaW5kZXggMjZiYzkwNzliYjJmOTZkZTc5YWQwNTE5ZDc3MmEwYzBiMTY1YWJiMy4u
MmIxMDg0NmY5NjA5OWEzYjI0ZWM0NjU0NWY1MTU3Y2ViNjkxZDdhNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0xvY2FsU3RvcmFnZU1hbmFnZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9Mb2NhbFN0b3JhZ2VN
YW5hZ2VyLmNwcApAQCAtNTAsNyArNTAsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGE+IGZpbGVOYW1lVG9PcmlnaW4oY29uc3QgU3RyaW5nJgogICAg
IGlmIChmaWxlTmFtZUxlbmd0aCA8PSBzdWZmaXhMZW5ndGgpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKLSAgICBhdXRvIG9yaWdpbklkZW50aWZpZXIgPSBmaWxlTmFtZS5zdWJzdHJp
bmcoMCwgZmlsZU5hbWVMZW5ndGggLSBzdWZmaXhMZW5ndGgpOworICAgIGF1dG8gb3JpZ2luSWRl
bnRpZmllciA9IGZpbGVOYW1lLmxlZnQoZmlsZU5hbWVMZW5ndGggLSBzdWZmaXhMZW5ndGgpOwog
ICAgIHJldHVybiBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50
aWZpZXIob3JpZ2luSWRlbnRpZmllcik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9jL1dLU3RyaW5nLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dL
U3RyaW5nLmNwcAppbmRleCA0ZWQzYjhhYTJkMjNlNTE1YTMwNDkwNWVjNDAyZjNlNDhhNGM0ZDYx
Li45ZDc1NWE3ZjNiYTRlOGRlMzYwNGY4ZjBhYTE5ODg4NWRmNzY5M2UwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1N0cmluZy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL2MvV0tTdHJpbmcuY3BwCkBAIC01OCw3ICs1OCw3IEBAIHNpemVfdCBXS1N0
cmluZ0dldENoYXJhY3RlcnMoV0tTdHJpbmdSZWYgc3RyaW5nUmVmLCBXS0NoYXIqIGJ1ZmZlciwg
c2l6ZV90IGJ1ZmZlCiAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoV0tDaGFyKSA9PSBzaXplb2Yo
VUNoYXIpLCAiU2l6ZSBvZiBXS0NoYXIgbXVzdCBtYXRjaCBzaXplIG9mIFVDaGFyIik7CiAKICAg
ICB1bnNpZ25lZCB1bnNpZ25lZEJ1ZmZlckxlbmd0aCA9IHN0ZDo6bWluPHNpemVfdD4oYnVmZmVy
TGVuZ3RoLCBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpOwotICAgIGF1dG8g
c3Vic3RyaW5nID0gV2ViS2l0Ojp0b0ltcGwoc3RyaW5nUmVmKS0+c3RyaW5nVmlldygpLnN1YnN0
cmluZygwLCB1bnNpZ25lZEJ1ZmZlckxlbmd0aCk7CisgICAgYXV0byBzdWJzdHJpbmcgPSBXZWJL
aXQ6OnRvSW1wbChzdHJpbmdSZWYpLT5zdHJpbmdWaWV3KCkubGVmdCh1bnNpZ25lZEJ1ZmZlckxl
bmd0aCk7CiAKICAgICBzdWJzdHJpbmcuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQocmVpbnRl
cnByZXRfY2FzdDxVQ2hhcio+KGJ1ZmZlcikpOwogICAgIHJldHVybiBzdWJzdHJpbmcubGVuZ3Ro
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQXV4aWxpYXJ5UHJvY2Vz
c01hYy5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9BdXhpbGlhcnlQcm9jZXNzTWFjLm1t
CmluZGV4IDhmMjU5ZGE2ZDUxMDI2Y2NkNjE4OWJiZWNhNDhkNTNkYjk4MWRiNWIuLjc2ZDIxODM1
ODdiMDYxYTE4YmY1OWZmOTE0YTczNTRlOGY2MzU5NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL21hYy9BdXhpbGlhcnlQcm9jZXNzTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL21hYy9BdXhpbGlhcnlQcm9jZXNzTWFjLm1tCkBAIC03MDMsMTAgKzcwMyw5IEBAIHN0
YXRpYyB2b2lkIHBvcHVsYXRlU2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1ldGVycyhTYW5kYm94
SW5pdGlhbGl6YXRpb25QYXJhbWV0CiAgICAgfQogCiAgICAgc2FuZGJveFBhcmFtZXRlcnMuYWRk
UGF0aFBhcmFtZXRlcigiSE9NRV9ESVIiLCBwd2QucHdfZGlyKTsKLSAgICBTdHJpbmcgcGF0aCA9
IFN0cmluZzo6ZnJvbVVURjgocHdkLnB3X2Rpcik7Ci0gICAgcGF0aC5hcHBlbmQoIi9MaWJyYXJ5
Il9zKTsKKyAgICBTdHJpbmcgcGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChTdHJpbmc6OmZyb21VVEY4KHB3ZC5wd19kaXIpLCAiTGlicmFyeSJfcyk7CiAgICAgc2Fu
ZGJveFBhcmFtZXRlcnMuYWRkUGF0aFBhcmFtZXRlcigiSE9NRV9MSUJSQVJZX0RJUiIsIEZpbGVT
eXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCkpOwotICAgIHBhdGgu
YXBwZW5kKCIvUHJlZmVyZW5jZXMiX3MpOworICAgIHBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQocGF0aCwgIi9QcmVmZXJlbmNlcyJfcyk7CiAgICAgc2FuZGJveFBh
cmFtZXRlcnMuYWRkUGF0aFBhcmFtZXRlcigiSE9NRV9MSUJSQVJZX1BSRUZFUkVOQ0VTX0RJUiIs
IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCkpOwogCiAj
aWYgQ1BVKFg4Nl82NCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL0lucHV0TWV0aG9kRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL0lucHV0TWV0aG9kRmlsdGVyLmNwcAppbmRleCBjNzhjMTgyZDMzY2NhYTFmZTc4ZDVkMzlm
ODUyY2FmOGJiMTE0MjNjLi5kZDk4NjFlMjgzMTI4MGJkZjk2YWRlMWIyYjdjZDA4NDMzZDQ3YmVj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JbnB1dE1ldGhv
ZEZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSW5wdXRN
ZXRob2RGaWx0ZXIuY3BwCkBAIC0yNDAsMTAgKzI0MCwxMCBAQCB2b2lkIElucHV0TWV0aG9kRmls
dGVyOjpub3RpZnlTdXJyb3VuZGluZyhjb25zdCBTdHJpbmcmIHRleHQsIHVpbnQ2NF90IGN1cnNv
clBvcwogICAgIG1fc3Vycm91bmRpbmcuc2VsZWN0aW9uUG9zaXRpb24gPSBzZWxlY3Rpb25Qb3Np
dGlvbjsKIAogICAgIGF1dG8gdGV4dFVURjggPSBtX3N1cnJvdW5kaW5nLnRleHQudXRmOCgpOwot
ICAgIGF1dG8gY3Vyc29yUG9zaXRpb25VVEY4ID0gY3Vyc29yUG9zaXRpb24gIT0gdGV4dC5sZW5n
dGgoKSA/IHRleHQuc3Vic3RyaW5nKDAsIGN1cnNvclBvc2l0aW9uKS51dGY4KCkubGVuZ3RoKCkg
OiB0ZXh0VVRGOC5sZW5ndGgoKTsKKyAgICBhdXRvIGN1cnNvclBvc2l0aW9uVVRGOCA9IGN1cnNv
clBvc2l0aW9uICE9IHRleHQubGVuZ3RoKCkgPyB0ZXh0LmxlZnQoY3Vyc29yUG9zaXRpb24pLnV0
ZjgoKS5sZW5ndGgoKSA6IHRleHRVVEY4Lmxlbmd0aCgpOwogICAgIGF1dG8gc2VsZWN0aW9uUG9z
aXRpb25VVEY4ID0gY3Vyc29yUG9zaXRpb25VVEY4OwogICAgIGlmIChjdXJzb3JQb3NpdGlvbiAh
PSBzZWxlY3Rpb25Qb3NpdGlvbikKLSAgICAgICAgc2VsZWN0aW9uUG9zaXRpb25VVEY4ID0gc2Vs
ZWN0aW9uUG9zaXRpb24gIT0gdGV4dC5sZW5ndGgoKSA/IHRleHQuc3Vic3RyaW5nKDAsIHNlbGVj
dGlvblBvc2l0aW9uKS51dGY4KCkubGVuZ3RoKCkgOiB0ZXh0VVRGOC5sZW5ndGgoKTsKKyAgICAg
ICAgc2VsZWN0aW9uUG9zaXRpb25VVEY4ID0gc2VsZWN0aW9uUG9zaXRpb24gIT0gdGV4dC5sZW5n
dGgoKSA/IHRleHQubGVmdChzZWxlY3Rpb25Qb3NpdGlvbikudXRmOCgpLmxlbmd0aCgpIDogdGV4
dFVURjgubGVuZ3RoKCk7CiAgICAgd2Via2l0X2lucHV0X21ldGhvZF9jb250ZXh0X25vdGlmeV9z
dXJyb3VuZGluZyhtX2NvbnRleHQuZ2V0KCksIHRleHRVVEY4LmRhdGEoKSwgdGV4dFVURjgubGVu
Z3RoKCksIGN1cnNvclBvc2l0aW9uVVRGOCwgc2VsZWN0aW9uUG9zaXRpb25VVEY4KTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0d0a1NldHRpbmdzTWFuYWdl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvR3RrU2V0dGluZ3NNYW5hZ2VyLmNw
cAppbmRleCBjNTAyZDJkYzUyZTdmN2Q0ODg5ZGYyNmViYmYzM2FmYzNiYzE0YjYzLi4wMDllZmU4
ZGU4NWM4OGZhZWI1YmYzNjE0YTVlYmI2NTIxZWUxYzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9ndGsvR3RrU2V0dGluZ3NNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9ndGsvR3RrU2V0dGluZ3NNYW5hZ2VyLmNwcApAQCAtNDMsNyArNDMsNyBA
QCBTdHJpbmcgR3RrU2V0dGluZ3NNYW5hZ2VyOjp0aGVtZU5hbWUoKSBjb25zdAogICAgIGlmIChh
dXRvKiB0aGVtZU5hbWVFbnYgPSBnX2dldGVudigiR1RLX1RIRU1FIikpIHsKICAgICAgICAgU3Ry
aW5nIG5hbWUgPSBTdHJpbmc6OmZyb21VVEY4KHRoZW1lTmFtZUVudik7CiAgICAgICAgIGlmIChu
YW1lLmVuZHNXaXRoKCItZGFyayIpIHx8IG5hbWUuZW5kc1dpdGgoIi1EYXJrIikgfHwgbmFtZS5l
bmRzV2l0aCgiOmRhcmsiKSkKLSAgICAgICAgICAgIHJldHVybiBuYW1lLnN1YnN0cmluZygwLCBu
YW1lLmxlbmd0aCgpIC0gNSk7CisgICAgICAgICAgICByZXR1cm4gbmFtZS5sZWZ0KG5hbWUubGVu
Z3RoKCkgLSA1KTsKICAgICAgICAgcmV0dXJuIG5hbWU7CiAgICAgfQogCkBAIC01MSw3ICs1MSw3
IEBAIFN0cmluZyBHdGtTZXR0aW5nc01hbmFnZXI6OnRoZW1lTmFtZSgpIGNvbnN0CiAgICAgZ19v
YmplY3RfZ2V0KG1fc2V0dGluZ3MsICJndGstdGhlbWUtbmFtZSIsICZ0aGVtZU5hbWVTZXR0aW5n
Lm91dFB0cigpLCBudWxscHRyKTsKICAgICBTdHJpbmcgbmFtZSA9IFN0cmluZzo6ZnJvbVVURjgo
dGhlbWVOYW1lU2V0dGluZy5nZXQoKSk7CiAgICAgaWYgKG5hbWUuZW5kc1dpdGgoIi1kYXJrIikg
fHwgbmFtZS5lbmRzV2l0aCgiLURhcmsiKSkKLSAgICAgICAgcmV0dXJuIG5hbWUuc3Vic3RyaW5n
KDAsIG5hbWUubGVuZ3RoKCkgLSA1KTsKKyAgICAgICAgcmV0dXJuIG5hbWUubGVmdChuYW1lLmxl
bmd0aCgpIC0gNSk7CiAgICAgcmV0dXJuIG5hbWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2d0ay9UZXh0Q2hlY2tlckd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9ndGsvVGV4dENoZWNrZXJHdGsuY3BwCmluZGV4IGJiMDk0NTg5MzZjNDY2ODA0NDYx
OWY3OGM2YWIxNGYwMmI1ZDZiMjIuLjAzNmE2NjNiMGJiZmYxZGU2NzIyMDMxMGU0NDY5MTJkZjQ0
MTExZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9UZXh0Q2hlY2tl
ckd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1RleHRDaGVja2VyR3Rr
LmNwcApAQCAtMjczLDcgKzI3Myw3IEBAIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IFRleHRD
aGVja2VyOjpjaGVja1RleHRPZlBhcmFncmFwaChTcGVsbERvY3VtZW50VGFnIHNwCiAgICAgICAg
IHBhcmFncmFwaENoZWNraW5nUmVzdWx0LmFwcGVuZChtaXNzcGVsbGluZ1Jlc3VsdCk7CiAgICAg
ICAgIG9mZnNldCArPSBtaXNzcGVsbGluZ0xvY2F0aW9uICsgbWlzc3BlbGxpbmdMZW5ndGg7CiAg
ICAgICAgIC8vIEdlbmVyYWxseSwgd2UgZW5kIHVwIGNoZWNraW5nIGF0IHRoZSB3b3JkIHNlcGFy
YXRvciwgbW92ZSB0byB0aGUgYWRqYWNlbnQgd29yZC4KLSAgICAgICAgb2Zmc2V0ID0gbmV4dFdv
cmRPZmZzZXQodGV4dC5zdWJzdHJpbmcoMCwgbGVuZ3RoU3RyaXApLCBvZmZzZXQpOworICAgICAg
ICBvZmZzZXQgPSBuZXh0V29yZE9mZnNldCh0ZXh0LmxlZnQobGVuZ3RoU3RyaXApLCBvZmZzZXQp
OwogICAgIH0KICAgICByZXR1cm4gcGFyYWdyYXBoQ2hlY2tpbmdSZXN1bHQ7CiAjZWxzZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlByb2Nlc3NQb29sV2luLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJQcm9jZXNzUG9vbFdpbi5jcHAKaW5k
ZXggZTMxODg5ZjM0NGM0YTYzZGY1ZTVlNjU5ZTI0MjFmNGM5MTA0OGNjNC4uMjNiM2VjYTY0NzVh
MGY3MDdkN2YwZGQyZTI2NmZjMjVlZGMzNTIzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3Mvd2luL1dlYlByb2Nlc3NQb29sV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1Bvb2xXaW4uY3BwCkBAIC02MSw3ICs2MSw3IEBAIHN0YXRp
YyB2b2lkIGluaXRpYWxpemVSZW1vdGVJbnNwZWN0b3JTZXJ2ZXIoU3RyaW5nVmlldyBhZGRyZXNz
KQogICAgIGlmIChwb3MgPT0gbm90Rm91bmQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8g
aG9zdCA9IGFkZHJlc3Muc3Vic3RyaW5nKDAsIHBvcyk7CisgICAgYXV0byBob3N0ID0gYWRkcmVz
cy5sZWZ0KHBvcyk7CiAgICAgYXV0byBwb3J0ID0gcGFyc2VJbnRlZ2VyPHVpbnQxNl90PihhZGRy
ZXNzLnN1YnN0cmluZyhwb3MgKyAxKSk7CiAgICAgaWYgKCFwb3J0KQogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1
Z2luLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5t
bQppbmRleCA2NzVlNzIzMzYxNjhiYzJmOGM4ZDIyNmQwMTFkZjk0MjU2MDU0ODMyLi4wYWZjMDE3
MmM5YjNjOGUyNzk2NTg1OTgzYzU1NWNmYjIyYWVjOWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KQEAgLTE2OTEsNyArMTY5MSw3
IEBAIHZvaWQgUERGUGx1Z2luOjpzZXRTdWdnZXN0ZWRGaWxlbmFtZShjb25zdCBTdHJpbmcmIHN1
Z2dlc3RlZEZpbGVuYW1lKQogICAgICAgICBtX3N1Z2dlc3RlZEZpbGVuYW1lID0gc3VnZ2VzdGVk
RmlsZW5hbWVXaXRoTUlNRVR5cGUobmlsLCAiYXBwbGljYXRpb24vcGRmIl9zKTsKIAogICAgIGlm
ICghbV9zdWdnZXN0ZWRGaWxlbmFtZS5lbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKCIucGRmIikp
Ci0gICAgICAgIG1fc3VnZ2VzdGVkRmlsZW5hbWUuYXBwZW5kKCIucGRmIl9zKTsKKyAgICAgICAg
bV9zdWdnZXN0ZWRGaWxlbmFtZSA9IG1ha2VTdHJpbmcobV9zdWdnZXN0ZWRGaWxlbmFtZSwgIi5w
ZGYiX3MpOwogfQogICAgIAogdm9pZCBQREZQbHVnaW46OnN0cmVhbURpZFJlY2VpdmVSZXNwb25z
ZSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgVVJMJiwgdWludDMyX3QsIHVpbnQzMl90LCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3Rl
ZEZpbGVuYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3Jh
Z2VUcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tl
ci5jcHAKaW5kZXggNWQ0ZWVjNWZlZDhiMzU0YzBmMWE2NzVkMGNiNGQ0MzI3ZDFkMjdiZC4uMzYz
NjE5NmNiNTZhYTJlNDMwYzNhM2IwNzQxOGUyODRmOTFlNzYwNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCkBAIC0yNjAsNyArMjYwLDcgQEAg
dm9pZCBTdG9yYWdlVHJhY2tlcjo6c3luY0ZpbGVTeXN0ZW1BbmRUcmFja2VyRGF0YWJhc2UoKQog
ICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgYXV0byBmaWxlUGF0aCA9IEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3N0b3JhZ2VEaXJlY3RvcnlQYXRoLCBmaWxl
TmFtZSk7Ci0gICAgICAgIFN0cmluZyBvcmlnaW5JZGVudGlmaWVyID0gZmlsZU5hbWUuc3Vic3Ry
aW5nKDAsIGZpbGVOYW1lLmxlbmd0aCgpIC0gZmlsZUV4dGVuc2lvbi5sZW5ndGgoKSk7CisgICAg
ICAgIFN0cmluZyBvcmlnaW5JZGVudGlmaWVyID0gZmlsZU5hbWUubGVmdChmaWxlTmFtZS5sZW5n
dGgoKSAtIGZpbGVFeHRlbnNpb24ubGVuZ3RoKCkpOwogICAgICAgICBpZiAoIW9yaWdpblNldENv
cHkuY29udGFpbnMob3JpZ2luSWRlbnRpZmllcikpCiAgICAgICAgICAgICBzeW5jU2V0T3JpZ2lu
RGV0YWlscyhvcmlnaW5JZGVudGlmaWVyLCBmaWxlUGF0aCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KaW5k
ZXggM2RiMjQ4OGQ2MGVjNDFiMDgxZjdhOTE3ZDBlMjYxYjI3ZTYyNGEyNy4uNmI5ZjJmZjhhOGQ4
OTU1NWUyMGU0MDIyNDdjNzEwNTI2MGI1MmEyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KQEAgLTM3NSw3
ICszNzUsNyBAQCBzdGF0aWMgUmVndWxhckV4cHJlc3Npb24qIHJlZ0V4cEZvckxhYmVscyhOU0Fy
cmF5ICpsYWJlbHMpCiAgICAgICAgICAgICBib29sIHN0YXJ0c1dpdGhXb3JkQ2hhcmFjdGVyID0g
ZmFsc2U7CiAgICAgICAgICAgICBib29sIGVuZHNXaXRoV29yZENoYXJhY3RlciA9IGZhbHNlOwog
ICAgICAgICAgICAgaWYgKGxhYmVsLmxlbmd0aCgpKSB7Ci0gICAgICAgICAgICAgICAgc3RhcnRz
V2l0aFdvcmRDaGFyYWN0ZXIgPSB3b3JkUmVnRXhwLmdldCgpLm1hdGNoKGxhYmVsLnN1YnN0cmlu
ZygwLCAxKSkgPj0gMDsKKyAgICAgICAgICAgICAgICBzdGFydHNXaXRoV29yZENoYXJhY3RlciA9
IHdvcmRSZWdFeHAuZ2V0KCkubWF0Y2gobGFiZWwubGVmdCgxKSkgPj0gMDsKICAgICAgICAgICAg
ICAgICBlbmRzV2l0aFdvcmRDaGFyYWN0ZXIgPSB3b3JkUmVnRXhwLmdldCgpLm1hdGNoKGxhYmVs
LnN1YnN0cmluZyhsYWJlbC5sZW5ndGgoKSAtIDEsIDEpKSA+PSAwOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VM
b2cKaW5kZXggMTI2ZTE4NzgwM2ZjZTVkNDcwNGUzYWVlNDRmNDFmNjBiZDE1NzY3NC4uZTYyZmNl
N2VlZjljY2ZiMmFiMWViOGE1ODJjNjc3ZmE2Zjg3ODcyZCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIyLTA0LTEz
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRHJvcCBpbmVmZmlj
aWVudCBTdHJpbmc6OmFwcGVuZCgpIG92ZXJsb2FkcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5Mjg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgRHJvcCBpbmVmZmljaWVudCBTdHJpbmc6OmFwcGVuZCgp
IG92ZXJsb2FkcyB0byBwdXNoIGRldmVsb3BlcnMgdG8gdXNlIFN0cmluZ0J1aWxkZXIgLyBtYWtl
U3RyaW5nKCkgaW5zdGVhZC4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVu
ZGVyVHJlZS5jcHA6CisgICAgICAgIChmaW5kRm9udEZhbGxiYWNrKToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OlRFU1RfRik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nQnVp
bGRlci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9VUkxQYXJzZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6aW5zZXJ0VGFiQXRMb2NhdGlvbik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL0ZpbGVNb25pdG9yLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnJlYWRDb250
ZW50c09mRmlsZSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0hUVFBI
ZWFkZXJGaWVsZC5jcHA6CisgICAgICAgIChjYW5vbmljYWxpemVIVFRQSGVhZGVyKToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVVJMUGFyc2VyVGV4dEVuY29kaW5nLmNw
cDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Omluc2VydFRhYkF0TG9jYXRpb24pOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNw
cDoKKyAgICAgICAgKFdUUjo6cGF0aFN1aXRhYmxlRm9yVGVzdFJlc3VsdCk6CisgICAgICAgIChX
VFI6OmR1bXBGcmFtZVRleHQpOgorICAgICAgICAoV1RSOjpzdHJpcFRyYWlsaW5nU3BhY2VzQWRk
TmV3bGluZSk6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6d2lsbEFkZE1lc3Nh
Z2VUb0NvbnNvbGUpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKToKKwogMjAyMi0wNC0xMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJlcGxhY2UgQXRvbVN0cmluZyhjb25zdCBjaGFyKikgd2l0aCBBdG9t
U3RyaW5nOjpmcm9tTGF0aW4xKGNvbnN0IGNoYXIqKQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dp
bi9EdW1wUmVuZGVyVHJlZS5jcHAKaW5kZXggMzZhZThmNTczYzQyOGFhZTRkNWQ1ZmIyYTdlNGEy
OTM3ZTRiY2M4Ny4uYjNlNzdlNGJlODI2ZmZjZTM0Y2UwZTc4YjFiNzdmMzRkYzZhYmFjNiAxMDA2
NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcAorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCkBAIC0xMTIzLDE0
ICsxMTIzLDE0IEBAIHN0YXRpYyBTdHJpbmcgZmluZEZvbnRGYWxsYmFjayhjb25zdCBjaGFyKiBw
YXRoT3JVcmwpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCiAgICAgU3RyaW5nIHBh
dGhUb1Rlc3QgPSBwYXRoVG9DaGVjay5zdWJzdHJpbmcobG9jYXRpb24gKyBsYXlvdXRUZXN0cy5s
ZW5ndGgoKSArIDEpOwotICAgIFN0cmluZyBwb3NzaWJsZVBhdGhUb0xvZ3VlID0gRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhdGhUb0NoZWNrLnN1YnN0cmluZygwLCBsb2Nh
dGlvbiArIGxheW91dFRlc3RzLmxlbmd0aCgpICsgMSksICJwbGF0Zm9ybVxcd2luIl9zKTsKKyAg
ICBTdHJpbmcgcG9zc2libGVQYXRoVG9Mb2d1ZSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChwYXRoVG9DaGVjay5sZWZ0KGxvY2F0aW9uICsgbGF5b3V0VGVzdHMubGVuZ3Ro
KCkgKyAxKSwgInBsYXRmb3JtXFx3aW4iX3MpOwogCiAgICAgVmVjdG9yPFN0cmluZz4gcG9zc2li
bGVQYXRoczsKICAgICBwb3NzaWJsZVBhdGhzLmFwcGVuZChGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQocG9zc2libGVQYXRoVG9Mb2d1ZSwgcGF0aFRvVGVzdCkpOwogCiAgICAg
c2l6ZV90IG5leHRDYW5kaWRhdGVFbmQgPSBwYXRoVG9UZXN0LnJldmVyc2VGaW5kKCdcXCcpOwog
ICAgIHdoaWxlIChuZXh0Q2FuZGlkYXRlRW5kICYmIG5leHRDYW5kaWRhdGVFbmQgIT0gV1RGOjpu
b3RGb3VuZCkgewotICAgICAgICBwYXRoVG9UZXN0ID0gcGF0aFRvVGVzdC5zdWJzdHJpbmcoMCwg
bmV4dENhbmRpZGF0ZUVuZCk7CisgICAgICAgIHBhdGhUb1Rlc3QgPSBwYXRoVG9UZXN0LmxlZnQo
bmV4dENhbmRpZGF0ZUVuZCk7CiAgICAgICAgIHBvc3NpYmxlUGF0aHMuYXBwZW5kKEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwb3NzaWJsZVBhdGhUb0xvZ3VlLCBwYXRoVG9U
ZXN0KSk7CiAgICAgICAgIG5leHRDYW5kaWRhdGVFbmQgPSBwYXRoVG9UZXN0LnJldmVyc2VGaW5k
KCdcXCcpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L0ZpbGVTeXN0ZW0uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3Rl
bS5jcHAKaW5kZXggZGIyNDY1MjM5Njg2NTE2ODg4MWI3NDE0N2NmM2M0YzNhODZhNGI4NC4uNjVm
ZWFhZjNkYmIyOTEyNzcyOTRmZWY4ZWMyOWE5ZWEzYWMyODVkYiAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAKQEAgLTQ4NSw5ICs0ODUsNyBAQCBURVNU
X0YoRmlsZVN5c3RlbVRlc3QsIG1ha2VBbGxEaXJlY3RvcmllcykKICAgICBFWFBFQ1RfRVEoRmls
ZVN5c3RlbTo6ZmlsZVR5cGUoc3ViRm9sZGVyUGF0aCksIEZpbGVTeXN0ZW06OkZpbGVUeXBlOjpE
aXJlY3RvcnkpOwogICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmRlbGV0ZU5vbkVtcHR5RGly
ZWN0b3J5KHRlbXBFbXB0eUZvbGRlclBhdGgoKSkpOwogICAgIEVYUEVDVF9GQUxTRShGaWxlU3lz
dGVtOjpmaWxlRXhpc3RzKHN1YkZvbGRlclBhdGgpKTsKLSAgICBTdHJpbmcgaW52YWxpZEZvbGRl
clBhdGg7Ci0gICAgaW52YWxpZEZvbGRlclBhdGguYXBwZW5kKCdcMCcpOwotICAgIGludmFsaWRG
b2xkZXJQYXRoLmFwcGVuZCgnYScpOworICAgIFN0cmluZyBpbnZhbGlkRm9sZGVyUGF0aCA9IG1h
a2VTdHJpbmcoJ1wwJywgJ2EnKTsKICAgICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3RlbTo6bWFrZUFs
bERpcmVjdG9yaWVzKGludmFsaWRGb2xkZXJQYXRoKSk7CiAgICAgRVhQRUNUX0ZBTFNFKEZpbGVT
eXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhlbXB0eVN0cmluZygpKSk7CiB9CmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdCdWlsZGVyLmNwcCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ0J1aWxkZXIuY3BwCmluZGV4IGE0ODdlNTdl
OWQwNDYxN2Q0OWRlOGRhMTkxMmJlNDgyNjE2ODMwNTkuLmFlMTUzYzU2MTU4NjhiOGIxZDUyNmJk
Zjk4ZDUyNzExNWJjYWZkY2EgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL1N0cmluZ0J1aWxkZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L1N0cmluZ0J1aWxkZXIuY3BwCkBAIC0yMDksOSArMjA5LDkgQEAgVEVTVChTdHJpbmdCdWlsZGVy
VGVzdCwgVG9TdHJpbmcpCiAgICAgLy8gQ2hhbmdpbmcgdGhlIG9yaWdpbmFsIHJlc3VsdCBvZiB0
b1N0cmluZygpIHNob3VsZCBub3QgYWZmZWN0IHRoZSBjb250ZW50IG9mIHRoZSBTdHJpbmdCdWls
ZGVyLgogICAgIFN0cmluZyBzdHJpbmcxID0gYnVpbGRlci50b1N0cmluZygpOwogICAgIEVYUEVD
VF9FUShTdHJpbmcoIjAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQyJfcyks
IHN0cmluZzEpOwotICAgIHN0cmluZzEuYXBwZW5kKCJERUYiX3MpOworICAgIHN0cmluZzEucmVw
bGFjZSgnMCcsICdhJyk7CiAgICAgRVhQRUNUX0VRKFN0cmluZygiMDEyMzQ1Njc4OWFiY2RlZmdo
aWprbG1ub3BxcnN0dXZ3eHl6QUJDIl9zKSwgYnVpbGRlci50b1N0cmluZygpKTsKLSAgICBFWFBF
Q1RfRVEoU3RyaW5nKCIwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUYi
X3MpLCBzdHJpbmcxKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCJhMTIzNDU2Nzg5YWJjZGVmZ2hp
amtsbW5vcHFyc3R1dnd4eXpBQkMiX3MpLCBzdHJpbmcxKTsKIAogICAgIC8vIFJlc2l6aW5nIHRo
ZSBTdHJpbmdCdWlsZGVyIHNob3VsZCBub3QgYWZmZWN0IHRoZSBvcmlnaW5hbCByZXN1bHQgb2Yg
dG9TdHJpbmcoKS4KICAgICBzdHJpbmcxID0gYnVpbGRlci50b1N0cmluZygpOwpAQCAtMjUxLDkg
KzI1MSw5IEBAIFRFU1QoU3RyaW5nQnVpbGRlclRlc3QsIFRvU3RyaW5nUHJlc2VydmVDYXBhY2l0
eSkKICAgICBFWFBFQ1RfRVEoY2FwYWNpdHksIGJ1aWxkZXIuY2FwYWNpdHkoKSk7CiAgICAgRVhQ
RUNUX0VRKHN0cmluZzEuY2hhcmFjdGVyczgoKSwgYnVpbGRlci5jaGFyYWN0ZXJzOCgpKTsKICAg
ICBFWFBFQ1RfRVEoU3RyaW5nKCIwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpB
QkMiX3MpLCBzdHJpbmcxKTsKLSAgICBzdHJpbmcxLmFwcGVuZCgiREVGIl9zKTsKKyAgICBzdHJp
bmcxLnJlcGxhY2UoJzAnLCAnYScpOwogICAgIEVYUEVDVF9FUShTdHJpbmcoIjAxMjM0NTY3ODlh
YmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQyJfcyksIGJ1aWxkZXIudG9TdHJpbmdQcmVzZXJ2
ZUNhcGFjaXR5KCkpOwotICAgIEVYUEVDVF9FUShTdHJpbmcoIjAxMjM0NTY3ODlhYmNkZWZnaGlq
a2xtbm9wcXJzdHV2d3h5ekFCQ0RFRiJfcyksIHN0cmluZzEpOworICAgIEVYUEVDVF9FUShTdHJp
bmcoImExMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQyJfcyksIHN0cmluZzEp
OwogCiAgICAgLy8gUmVzaXppbmcgdGhlIFN0cmluZ0J1aWxkZXIgc2hvdWxkIG5vdCBhZmZlY3Qg
dGhlIG9yaWdpbmFsIHJlc3VsdCBvZiB0b1N0cmluZ1ByZXNlcnZlQ2FwYWNpdHkoKS4KICAgICBj
YXBhY2l0eSA9IGJ1aWxkZXIuY2FwYWNpdHkoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL1VSTFBhcnNlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9VUkxQYXJzZXIuY3BwCmluZGV4IDkwZmZjOTk0NGU2YjI1YmQ0NTk4NTk2ZmRkODY1OTRi
MWIzYWRmNTkuLjNhZjM5M2NhMDNmYWIzM2UwODdjYzhmZGM5OTZiYmIwMDRiMTBhZmQgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VSTFBhcnNlci5jcHAKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVVJMUGFyc2VyLmNwcApAQCAtNzMsNyArNzMs
NyBAQCBib29sIGVxKFQmJiBzMSwgVSYmIHMyKQogc3RhdGljIFN0cmluZyBpbnNlcnRUYWJBdExv
Y2F0aW9uKFN0cmluZ1ZpZXcgc3RyaW5nLCBzaXplX3QgbG9jYXRpb24pCiB7CiAgICAgQVNTRVJU
KGxvY2F0aW9uIDw9IHN0cmluZy5sZW5ndGgoKSk7Ci0gICAgcmV0dXJuIG1ha2VTdHJpbmcoc3Ry
aW5nLnN1YnN0cmluZygwLCBsb2NhdGlvbiksICJcdCIsIHN0cmluZy5zdWJzdHJpbmcobG9jYXRp
b24pKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZyhzdHJpbmcubGVmdChsb2NhdGlvbiksICJcdCIs
IHN0cmluZy5zdWJzdHJpbmcobG9jYXRpb24pKTsKIH0KIAogc3RhdGljIEV4cGVjdGVkUGFydHMg
aW52YWxpZFBhcnRzKFN0cmluZ1ZpZXcgdXJsU3RyaW5nV2l0aFRhYikKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db250ZW50RXh0ZW5zaW9ucy5jcHAgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29udGVudEV4dGVuc2lvbnMuY3BwCmlu
ZGV4IGE5OTcxMjM0YzNjMjBjZjE0NWZlNTY3MGRiYWI5OWU2ZDNlMGM4MTQuLjdiNjg2OTdlNjRm
ZWRmZTg2OWM3MTg5OGJkZjNlM2U0YmI2MjlkNDkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9Db250ZW50RXh0ZW5zaW9ucy5jcHAKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNwcApAQCAtMTUwNywx
MCArMTUwNyw4IEBAIFRFU1RfRihDb250ZW50RXh0ZW5zaW9uVGVzdCwgSW52YWxpZEpTT04pCiAg
ICAgcnVsZXMuYXBwZW5kKCJbIl9zKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMTQ5
OTk5OyArK2kpCiAgICAgICAgIHJ1bGVzLmFwcGVuZCgie1wiYWN0aW9uXCI6e1widHlwZVwiOlwi
YmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiYVwifX0sIl9zKTsKLSAgICBT
dHJpbmcgcnVsZXMxNTAwMDAgPSBydWxlcy50b1N0cmluZygpOwotICAgIFN0cmluZyBydWxlczE1
MDAwMSA9IHJ1bGVzLnRvU3RyaW5nKCk7Ci0gICAgcnVsZXMxNTAwMDAuYXBwZW5kKCJ7XCJhY3Rp
b25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJh
XCJ9fV0iX3MpOwotICAgIHJ1bGVzMTUwMDAxLmFwcGVuZCgie1wiYWN0aW9uXCI6e1widHlwZVwi
OlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiYVwifX0se1wiYWN0aW9u
XCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiYVwi
fX1dIl9zKTsKKyAgICBTdHJpbmcgcnVsZXMxNTAwMDAgPSBtYWtlU3RyaW5nKHJ1bGVzLnRvU3Ry
aW5nKCksICJ7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1
cmwtZmlsdGVyXCI6XCJhXCJ9fV0iX3MpOworICAgIFN0cmluZyBydWxlczE1MDAwMSA9IG1ha2VT
dHJpbmcocnVsZXMudG9TdHJpbmcoKSwgIntcImFjdGlvblwiOntcInR5cGVcIjpcImJsb2NrXCJ9
LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcImFcIn19LHtcImFjdGlvblwiOntcInR5cGVc
IjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcImFcIn19XSJfcyk7CiAg
ICAgY2hlY2tDb21waWxlckVycm9yKFdURk1vdmUocnVsZXMxNTAwMDApLCB7IH0pOwogICAgIGNo
ZWNrQ29tcGlsZXJFcnJvcihXVEZNb3ZlKHJ1bGVzMTUwMDAxKSwgQ29udGVudEV4dGVuc2lvbkVy
cm9yOjpKU09OVG9vTWFueVJ1bGVzKTsKICAgICAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRvci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvRmlsZU1vbml0b3IuY3BwCmluZGV4IDllMzVkOTViYjUxYTA5YjAwODUz
NGQ3MzM1ZDgyOGEwMDBlYzJjNDIuLmZhZmFiMWNhZWZiNjM0ZjMxNmZjNDM4OGM1ZDg5MmUzMTgx
MTU4M2QgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxl
TW9uaXRvci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVN
b25pdG9yLmNwcApAQCAtMTEyLDcgKzExMiw3IEBAIHN0YXRpYyBTdHJpbmcgcmVhZENvbnRlbnRz
T2ZGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKIAogICAgIFN0cmluZyByZXN1bHQoc3RhdGljX2Nh
c3Q8Y29uc3QgTENoYXIqPihidWZmZXItPmRhdGEoKSksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICBp
ZiAocmVzdWx0LmVuZHNXaXRoKCJcbiIpKQotICAgICAgICByZXR1cm4gcmVzdWx0LnN1YnN0cmlu
ZygwLCByZXN1bHQubGVuZ3RoKCkgLSAxKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5sZWZ0KHJl
c3VsdC5sZW5ndGgoKSAtIDEpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9IVFRQSGVhZGVyRmllbGQuY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0hUVFBIZWFkZXJGaWVsZC5jcHAKaW5k
ZXggNzIzZDU4OGFhNDljODdlMzY2NGI0NmYzMTgwZGZkNzA3ZmMyNzVlYS4uMDQ5OWUxYTQyMWVj
NzFlZTg1OTZhNWE5YjVlNDU1NWQ4ZDA5OGI4MCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL0hUVFBIZWFkZXJGaWVsZC5jcHAKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL0hUVFBIZWFkZXJGaWVsZC5jcHAKQEAgLTMzLDcgKzMzLDcg
QEAgc3RhdGljIFN0cmluZyBjYW5vbmljYWxpemVIVFRQSGVhZGVyKGNvbnN0IFN0cmluZyYgc3Ry
aW5nKQogICAgIHNpemVfdCBjb2xvbkxvY2F0aW9uID0gc3RyaW5nLmZpbmQoJzonKTsKICAgICBp
ZiAoY29sb25Mb2NhdGlvbiA9PSBub3RGb3VuZCkKICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICBh
dXRvIGZpZWxkID0gV2ViQ29yZTo6SFRUUEhlYWRlckZpZWxkOjpjcmVhdGUoc3RyaW5nLnN1YnN0
cmluZygwLCBjb2xvbkxvY2F0aW9uKSwgc3RyaW5nLnN1YnN0cmluZyhjb2xvbkxvY2F0aW9uICsg
MSkpOworICAgIGF1dG8gZmllbGQgPSBXZWJDb3JlOjpIVFRQSGVhZGVyRmllbGQ6OmNyZWF0ZShz
dHJpbmcubGVmdChjb2xvbkxvY2F0aW9uKSwgc3RyaW5nLnN1YnN0cmluZyhjb2xvbkxvY2F0aW9u
ICsgMSkpOwogICAgIGlmICghZmllbGQpCiAgICAgICAgIHJldHVybiB7IH07CiAgICAgcmV0dXJu
IG1ha2VTdHJpbmcoZmllbGQtPm5hbWUoKSwgIjogIiwgZmllbGQtPnZhbHVlKCkpOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlclRleHRFbmNv
ZGluZy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVVJMUGFyc2VyVGV4
dEVuY29kaW5nLmNwcAppbmRleCA0ZDI3ZjRmZDRiNTUyMjg3NDNkM2UyZjdjYzk3ZmJjNDNmNDRh
OGViLi5mOGI4MTUxZjdkODc1ODQ5ZmU5NzQ3ODY3NmY4NzA0YWU5YmRlM2I3IDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVVJMUGFyc2VyVGV4dEVuY29kaW5n
LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVVJMUGFyc2VyVGV4
dEVuY29kaW5nLmNwcApAQCAtNzQsNyArNzQsNyBAQCBib29sIGVxKFQmJiBzMSwgVSYmIHMyKQog
c3RhdGljIFN0cmluZyBpbnNlcnRUYWJBdExvY2F0aW9uKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBz
aXplX3QgbG9jYXRpb24pCiB7CiAgICAgQVNTRVJUKGxvY2F0aW9uIDw9IHN0cmluZy5sZW5ndGgo
KSk7Ci0gICAgcmV0dXJuIG1ha2VTdHJpbmcoc3RyaW5nLnN1YnN0cmluZygwLCBsb2NhdGlvbiks
ICJcdCIsIHN0cmluZy5zdWJzdHJpbmcobG9jYXRpb24pKTsKKyAgICByZXR1cm4gbWFrZVN0cmlu
ZyhzdHJpbmcubGVmdChsb2NhdGlvbiksICJcdCIsIHN0cmluZy5zdWJzdHJpbmcobG9jYXRpb24p
KTsKIH0KIAogc3RhdGljIEV4cGVjdGVkUGFydHMgaW52YWxpZFBhcnRzKGNvbnN0IFN0cmluZyYg
dXJsU3RyaW5nV2l0aFRhYikKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAppbmRleCBkMDA2Yjc4OWNj
MTFjZTViYjk0YjQzMzFkMzljOWY2MDQxY2I2ZTc0Li44MzkzNjA0YWFjM2VjMWFjMTUyMDA3OGZl
YmRiNWY1OGJiNDgyYzg4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCkBAIC0yMDksNyArMjA5
LDcgQEAgc3RhdGljIGlubGluZSBXVEY6OlN0cmluZyBwYXRoU3VpdGFibGVGb3JUZXN0UmVzdWx0
KFdLVVJMUmVmIGZpbGVVcmwpCiAKICAgICBTdHJpbmcgcGF0aFN0cmluZyA9IHRvV1RGU3RyaW5n
KGFkb3B0V0soV0tVUkxDb3B5UGF0aChmaWxlVXJsKSkpOwogICAgIFN0cmluZyBtYWluRnJhbWVV
UkxQYXRoU3RyaW5nID0gdG9XVEZTdHJpbmcoYWRvcHRXSyhXS1VSTENvcHlQYXRoKG1haW5GcmFt
ZVVSTC5nZXQoKSkpKTsKLSAgICBTdHJpbmcgYmFzZVBhdGggPSBtYWluRnJhbWVVUkxQYXRoU3Ry
aW5nLnN1YnN0cmluZygwLCBtYWluRnJhbWVVUkxQYXRoU3RyaW5nLnJldmVyc2VGaW5kKGRpdmlk
ZXIpICsgMSk7CisgICAgU3RyaW5nIGJhc2VQYXRoID0gbWFpbkZyYW1lVVJMUGF0aFN0cmluZy5s
ZWZ0KG1haW5GcmFtZVVSTFBhdGhTdHJpbmcucmV2ZXJzZUZpbmQoZGl2aWRlcikgKyAxKTsKICAg
ICAKICAgICBpZiAoIWJhc2VQYXRoLmlzRW1wdHkoKSAmJiBwYXRoU3RyaW5nLnN0YXJ0c1dpdGgo
YmFzZVBhdGgpKQogICAgICAgICByZXR1cm4gcGF0aFN0cmluZy5zdWJzdHJpbmcoYmFzZVBhdGgu
bGVuZ3RoKCkpOwpAQCAtNzQ2LDcgKzc0Niw3IEBAIHN0YXRpYyB2b2lkIGR1bXBGcmFtZVRleHQo
V0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgU3RyaW5nQnVpbGRlciYgYnVpbGRlcikKICAgICBhdXRv
IHRleHQgPSB0b1dURlN0cmluZyhhZG9wdFdLKFdLQnVuZGxlRnJhbWVDb3B5SW5uZXJUZXh0KGZy
YW1lKSkpOwogICAgIGZvciAoYXV0byBsaW5lIDogU3RyaW5nVmlldyh0ZXh0KS5zcGxpdEFsbG93
aW5nRW1wdHlFbnRyaWVzKCdcbicpKSB7CiAgICAgICAgIHdoaWxlIChsaW5lLmVuZHNXaXRoKCcg
JykpCi0gICAgICAgICAgICBsaW5lID0gbGluZS5zdWJzdHJpbmcoMCwgbGluZS5sZW5ndGgoKSAt
IDEpOworICAgICAgICAgICAgbGluZSA9IGxpbmUubGVmdChsaW5lLmxlbmd0aCgpIC0gMSk7CiAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKGxpbmUsICdcbicpOwogICAgIH0KIH0KQEAgLTEzMDAsNyAr
MTMwMCw3IEBAIHN0YXRpYyBXVEY6OlN0cmluZyBzdHJpcFRyYWlsaW5nU3BhY2VzQWRkTmV3bGlu
ZShjb25zdCBXVEY6OlN0cmluZyYgc3RyaW5nKQogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsK
ICAgICBmb3IgKGF1dG8gbGluZSA6IFN0cmluZ1ZpZXcoc3RyaW5nKS5zcGxpdEFsbG93aW5nRW1w
dHlFbnRyaWVzKCdcbicpKSB7CiAgICAgICAgIHdoaWxlIChsaW5lLmVuZHNXaXRoKCcgJykpCi0g
ICAgICAgICAgICBsaW5lID0gbGluZS5zdWJzdHJpbmcoMCwgbGluZS5sZW5ndGgoKSAtIDEpOwor
ICAgICAgICAgICAgbGluZSA9IGxpbmUubGVmdChsaW5lLmxlbmd0aCgpIC0gMSk7CiAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKGxpbmUsICdcbicpOwogICAgIH0KICAgICByZXR1cm4gYnVpbGRlci50
b1N0cmluZygpOwpAQCAtMTM0Niw3ICsxMzQ2LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6
OndpbGxBZGRNZXNzYWdlVG9Db25zb2xlKFdLU3RyaW5nUmVmIG1lc3NhZ2UpCiAgICAgc2l6ZV90
IGZpbGVQcm90b2NvbFN0YXJ0ID0gbWVzc2FnZVN0cmluZy5maW5kKCJmaWxlOi8vIik7CiAgICAg
aWYgKGZpbGVQcm90b2NvbFN0YXJ0ICE9IFdURjo6bm90Rm91bmQpCiAgICAgICAgIC8vIEZJWE1F
OiBUaGUgY29kZSBiZWxvdyBkb2VzIG5vdCBoYW5kbGUgYWRkaXRpb25hbCB0ZXh0IGFmdGVyIHVy
bCBub3IgbXVsdGlwbGUgdXJscy4gVGhpcyBtYXRjaGVzIER1bXBSZW5kZXJUcmVlIGltcGxlbWVu
dGF0aW9uLgotICAgICAgICBtZXNzYWdlU3RyaW5nID0gbWVzc2FnZVN0cmluZy5zdWJzdHJpbmco
MCwgZmlsZVByb3RvY29sU3RhcnQpICsgbGFzdEZpbGVVUkxQYXRoQ29tcG9uZW50KG1lc3NhZ2VT
dHJpbmcuc3Vic3RyaW5nKGZpbGVQcm90b2NvbFN0YXJ0KSk7CisgICAgICAgIG1lc3NhZ2VTdHJp
bmcgPSBtZXNzYWdlU3RyaW5nLmxlZnQoZmlsZVByb3RvY29sU3RhcnQpICsgbGFzdEZpbGVVUkxQ
YXRoQ29tcG9uZW50KG1lc3NhZ2VTdHJpbmcuc3Vic3RyaW5nKGZpbGVQcm90b2NvbFN0YXJ0KSk7
CiAKICAgICBtZXNzYWdlU3RyaW5nID0gbWFrZVN0cmluZygiQ09OU09MRSBNRVNTQUdFOiIsIGFk
ZExlYWRpbmdTcGFjZVN0cmlwVHJhaWxpbmdTcGFjZXNBZGROZXdsaW5lKG1lc3NhZ2VTdHJpbmcp
KTsKICAgICBpZiAoaW5qZWN0ZWRCdW5kbGUuZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyKCkpCmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDkwYTE0ZWZmM2Nh
YzI2MTBmN2YyMGUyOWE3OTAwZDA3ZWEwNzFjMTMuLmExNTgyMDMwN2FhOGZiM2YxODRmOThkM2U1
Njg0NmJmNzdlNWE3OGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENv
bnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
Y3BwCkBAIC0yMjM2LDEyICsyMjM2LDEzIEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmRpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXS1BhZ2VSZWYgcGFnZSwgV0tBdXRoZW50CiAKICAg
ICBhdXRvIGhvc3QgPSB0b1dURlN0cmluZyhhZG9wdFdLKFdLUHJvdGVjdGlvblNwYWNlQ29weUhv
c3QocHJvdGVjdGlvblNwYWNlKSkuZ2V0KCkpOwogICAgIGludCBwb3J0ID0gV0tQcm90ZWN0aW9u
U3BhY2VHZXRQb3J0KHByb3RlY3Rpb25TcGFjZSk7Ci0gICAgU3RyaW5nIG1lc3NhZ2UgPSBtYWtl
U3RyaW5nKGhvc3QsICc6JywgcG9ydCwgIiAtIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSAtICIsIHRvU3RyaW5nKGF1dGhlbnRpY2F0aW9uU2NoZW1lKSwgIiAtICIpOworICAgIFN0
cmluZ0J1aWxkZXIgbWVzc2FnZTsKKyAgICBtZXNzYWdlLmFwcGVuZChob3N0LCAnOicsIHBvcnQs
ICIgLSBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgLSAiLCB0b1N0cmluZyhhdXRo
ZW50aWNhdGlvblNjaGVtZSksICIgLSAiKTsKICAgICBpZiAoIW1faGFuZGxlc0F1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlcykKICAgICAgICAgbWVzc2FnZS5hcHBlbmQoIlNpbXVsYXRpbmcgY2FuY2Vs
bGVkIGF1dGhlbnRpY2F0aW9uIHNoZWV0XG4iX3MpOwogICAgIGVsc2UKICAgICAgICAgbWVzc2Fn
ZS5hcHBlbmQoIlJlc3BvbmRpbmcgd2l0aCAiICsgbV9hdXRoZW50aWNhdGlvblVzZXJuYW1lICsg
IjoiICsgbV9hdXRoZW50aWNhdGlvblBhc3N3b3JkICsgIlxuIik7Ci0gICAgbV9jdXJyZW50SW52
b2NhdGlvbi0+b3V0cHV0VGV4dChtZXNzYWdlKTsKKyAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5v
dXRwdXRUZXh0KG1lc3NhZ2UudG9TdHJpbmcoKSk7CiAKICAgICBpZiAoIW1faGFuZGxlc0F1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlcykgewogICAgICAgICBXS0F1dGhlbnRpY2F0aW9uRGVjaXNpb25M
aXN0ZW5lclVzZUNyZWRlbnRpYWwoZGVjaXNpb25MaXN0ZW5lciwgMCk7Cg==
</data>
<flag name="commit-queue"
          id="486187"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457547</attachid>
            <date>2022-04-13 11:04:41 -0700</date>
            <delta_ts>2022-04-13 12:31:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239289-20220413110440.patch</filename>
            <type>text/plain</type>
            <size>138980</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyODEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
Yjk0M2U2M2UxYzM4MjRjMjdlNmU2ZjE2Mjk2MjI5ZDNmNzY1MTZhLi44NjRhZTQyMGIwOTFjY2M2
ODQ4MzI3Njk4OWEwNDMxZDJkZWViNDYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOSBAQAorMjAyMi0wNC0xMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIERyb3AgaW5lZmZpY2llbnQgU3RyaW5nOjphcHBlbmQoKSBvdmVybG9hZHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTI4OQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERyb3AgaW5lZmZp
Y2llbnQgU3RyaW5nOjphcHBlbmQoKSBvdmVybG9hZHMgdG8gcHVzaCBkZXZlbG9wZXJzIHRvIHVz
ZSBTdHJpbmdCdWlsZGVyIC8gbWFrZVN0cmluZygpIGluc3RlYWQuCisKKyAgICAgICAgKiBoZWFw
L0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwOgorICAgICAgICAoSlNDOjpIZWFwU25hcHNob3RCdWls
ZGVyOjpqc29uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvU2NyaXB0QXJndW1lbnRzLmg6CisgICAg
ICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6Y2xhbXBF
cnJvck1lc3NhZ2UpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHA6Cisg
ICAgICAgIChKU0M6OndlbGxGb3JtZWRVbml0SWRlbnRpZmllcik6CisgICAgICAgICogcnVudGlt
ZS9JbnRsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6cmVzb2x2ZUxvY2FsZSk6CisgICAgICAg
ICogcnVudGltZS9JbnRsT2JqZWN0SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpiZXN0QXZhaWxh
YmxlTG9jYWxlKToKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcDoKKyAgICAg
ICAgKEpTQzo6ZWxsaXBzaXplQXQpOgorICAgICAgICAqIHRvb2xzL0Z1bmN0aW9uT3ZlcnJpZGVz
LmNwcDoKKyAgICAgICAgKEpTQzo6aW5pdGlhbGl6ZU92ZXJyaWRlSW5mbyk6CisgICAgICAgIChK
U0M6OnBhcnNlQ2xhdXNlKToKKwogMjAyMi0wNC0xMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgogCiAgICAgICAgIFJlcGxhY2UgQXRvbVN0cmluZyhjb25zdCBjaGFyKikgd2l0aCBB
dG9tU3RyaW5nOjpmcm9tTGF0aW4xKGNvbnN0IGNoYXIqKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCBkYmE0YWI1ZTA0ZjQ1OGFh
ZTBlMjk3NGRiNTg0MmJkMzVmYzEzMWMzLi5iOGFkNmNmNGQ2MDFhNTZhODUyM2IyYzVjNzVjZTU2
NmQwMTc5NzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDIyLTA0LTEzICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRHJvcCBpbmVmZmljaWVudCBTdHJpbmc6OmFw
cGVuZCgpIG92ZXJsb2FkcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjM5Mjg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgRHJvcCBpbmVmZmljaWVudCBTdHJpbmc6OmFwcGVuZCgpIG92ZXJsb2FkcyB0byBw
dXNoIGRldmVsb3BlcnMgdG8gdXNlIFN0cmluZ0J1aWxkZXIgLyBtYWtlU3RyaW5nKCkgaW5zdGVh
ZC4KKworICAgICAgICAqIHd0Zi9Bc3NlcnRpb25zLmNwcDoKKyAgICAgICAgKiB3dGYvVVJMLmNw
cDoKKyAgICAgICAgKFdURjo6VVJMOjpwcm90b2NvbCBjb25zdCk6CisgICAgICAgIChXVEY6OlVS
TDo6cHJvdG9jb2xIb3N0QW5kUG9ydCBjb25zdCk6CisgICAgICAgIChXVEY6OlVSTDo6c2V0UHJv
dG9jb2wpOgorICAgICAgICAoV1RGOjpVUkw6OnNldEhvc3QpOgorICAgICAgICAoV1RGOjpVUkw6
OnNldEhvc3RBbmRQb3J0KToKKyAgICAgICAgKFdURjo6VVJMOjpzdHJpcHBlZEZvclVzZUFzUmVm
ZXJyZXIgY29uc3QpOgorICAgICAgICAqIHd0Zi9VUkxQYXJzZXIuY3BwOgorICAgICAgICAoV1RG
OjpVUkxQYXJzZXI6OmFkZE5vblNwZWNpYWxEb3RTbGFzaCk6CisgICAgICAgIChXVEY6OlVSTFBh
cnNlcjo6cGFyc2VVUkxFbmNvZGVkRm9ybSk6CisgICAgICAgICogd3RmL1VVSUQuY3BwOgorICAg
ICAgICAoV1RGOjpVVUlEOjpwYXJzZSk6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nQnVpbGRl
ci5oOgorICAgICAgICAoV1RGOjpTdHJpbmdCdWlsZGVyOjphcHBlbmQpOgorICAgICAgICAqIHd0
Zi90ZXh0L1dURlN0cmluZy5jcHA6CisgICAgICAgIChXVEY6OlN0cmluZzo6aW5zZXJ0KToKKyAg
ICAgICAgKFdURjo6U3RyaW5nOjphcHBlbmQpOgorICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmlu
Zy5oOgorCiAyMDIyLTA0LTEzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmVwbGFjZSBBdG9tU3RyaW5nKGNvbnN0IGNoYXIqKSB3aXRoIEF0b21TdHJpbmc6OmZy
b21MYXRpbjEoY29uc3QgY2hhciopCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGRiZTJlNTZjMWU2NTgyYmFkZDlm
MDk0NmJjMTVmNGM0Zjc3MWE1MS4uZmQxMzk0M2MyZWJhZDhmOGIyOWNhOTVlMjc1NTkwNDU4OWFk
NGQxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2OCBAQAorMjAyMi0wNC0xMyAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIERyb3AgaW5lZmZpY2llbnQgU3RyaW5n
OjphcHBlbmQoKSBvdmVybG9hZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzOTI4OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIERyb3AgaW5lZmZpY2llbnQgU3RyaW5nOjphcHBlbmQoKSBvdmVybG9hZHMg
dG8gcHVzaCBkZXZlbG9wZXJzIHRvIHVzZSBTdHJpbmdCdWlsZGVyIC8gbWFrZVN0cmluZygpIGlu
c3RlYWQuCisKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnBhcnNlTUlNRVR5cGUpOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL0lEQkN1cnNvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6OnNldEdl
dFJlc3VsdCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5RGF0YS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJLZXlEYXRhOjpsb2dnaW5nU3RyaW5nIGNvbnN0KToKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlQYXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQktleVBhdGhMZXhlcjo6bGV4SWRlbnRpZmllcik6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCS2V5UmFuZ2VEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQktleVJhbmdl
RGF0YTo6bG9nZ2luZ1N0cmluZyBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
c2hhcmVkL0lEQkluZGV4SW5mby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleEluZm86
OmxvZ2dpbmdTdHJpbmcgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUGVl
ckNvbm5lY3Rpb25CYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNob3VsZElnbm9yZUlj
ZUNhbmRpZGF0ZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RUTUZTZW5kZXI6OnBsYXlOZXh0VG9uZSk6Cisg
ICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFFbmRw
b2ludC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJNZWRpYUVuZHBvaW50OjphZGRS
ZW1vdGVTdHJlYW0pOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xp
YldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b1J0
cENvZGVjQ2FwYWJpbGl0eSk6CisgICAgICAgICogTW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVn
aW5SZXBsYWNlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwcm9jZXNzQW5kQ3JlYXRlWW91
VHViZVVSTCk6CisgICAgICAgIChXZWJDb3JlOjpZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQ6Onlv
dVR1YmVVUkxGcm9tQWJzb2x1dGVVUkwpOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXRIYW5kc2hha2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dHJpbUlucHV0U2FtcGxl
KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmluaXRpYWxpemVBdHRy
aWJ1dGVEYXRhKToKKyAgICAgICAgKiBkaXNwbGF5L2Nzcy9EaXNwbGF5VGV4dEJveC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpUZXh0Qm94OjpkZWJ1Z0Rlc2NyaXB0aW9uIGNvbnN0
KToKKyAgICAgICAgKiBkb20vQ2hhcmFjdGVyRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
aGFyYWN0ZXJEYXRhOjpwYXJzZXJBcHBlbmREYXRhKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnBhcnNlUXVhbGlmaWVkTmFtZSk6Cisg
ICAgICAgICogZG9tL1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dDo6c3BsaXRUZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZFRleHRSZXByZXNlbnRhdGlvbik6CisgICAgICAg
ICogZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnZpZXdwb3J0
RXJyb3JNZXNzYWdlKToKKyAgICAgICAgKiBlZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjaGVja1RleHRPZlBhcmFncmFwaCk6CisgICAgICAgICogZWRp
dGluZy9UZXh0SXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoQnVmZmVyOjpw
cmVwZW5kQ29udGV4dCk6CisgICAgICAgICogZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6c3VmZml4TGVuZ3RoRm9yUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
c3RhcnRXb3JkQm91bmRhcnkpOgorICAgICAgICAoV2ViQ29yZTo6cHJldmlvdXNXb3JkUG9zaXRp
b25Cb3VuZGFyeSk6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YURldGVjdGlvbjo6ZGV0ZWN0Q29udGVudEluUmFuZ2UpOgor
ICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNob3VsZFBy
ZXNlcnZlTVNPTGlzdHMpOgorICAgICAgICAoV2ViQ29yZTo6ZmlsbENvbnRhaW5lckZyb21TdHJp
bmcpOgorICAgICAgICAqIGh0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OnBhcnNlQW5kQXBwZW5kT25lTGlu
ZSk6CisgICAgICAgIChXZWJDb3JlOjpGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6YXBwZW5k
KToKKyAgICAgICAgKFdlYkNvcmU6OkZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpmaW5pc2gp
OgorICAgICAgICAqIGh0bWwvRmVhdHVyZVBvbGljeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp1
cGRhdGVMaXN0KToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV1RGOjpMb2dBcmd1bWVudDxVUkw+Ojp0b1N0cmluZyk6CisgICAgICAgICogaHRtbC9IVE1M
VHJhY2tFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVybEZvckxvZ2dpbmdUcmFjayk6
CisgICAgICAgICogaHRtbC9VUkxEZWNvbXBvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlVSTERlY29tcG9zaXRpb246OnNldEhvc3QpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6Z2V0QWN0aXZlVW5pZm9ybSk6CisgICAgICAgICogaHRtbC9wYXJzZXIv
SFRNTFBhcnNlcklkaW9tcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUhUVFBSZWZyZXNo
SW50ZXJuYWwpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxTcmNzZXRQYXJzZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6cGFyc2VEZXNjcmlwdG9ycyk6CisgICAgICAgICogaHRtbC9wYXJz
ZXIvSFRNTFRyZWVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRl
cjo6RXh0ZXJuYWxDaGFyYWN0ZXJUb2tlbkJ1ZmZlcjo6Y2hhcmFjdGVyUHJlZGljYXRlKToKKyAg
ICAgICAgKiBodG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJWVFRQYXJzZXI6OmNoZWNrQW5kU3RvcmVTdHlsZVNoZWV0KToKKyAgICAgICAgKiBodG1sL3Ry
YWNrL1dlYlZUVFBhcnNlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRydW5jYXRlV2l0aEVsbGlwc2lzKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheUxhYmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvck92ZXJsYXlMYWJlbDo6ZHJhdyk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvclN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVTaGVldEhhbmRsZXI6
Om9ic2VydmVDb21tZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRP
TUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpidWlsZE9i
amVjdEZvck5vZGUpOgorICAgICAgICAqIGxheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWls
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6b3V0cHV0TGF5b3V0Qm94KToKKyAg
ICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0UGFyc2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Om1hbmlmZXN0UGF0aCk6CisgICAgICAgICogbWF0aG1sL01h
dGhNTFByZXNlbnRhdGlvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MUHJl
c2VudGF0aW9uRWxlbWVudDo6cGFyc2VOdW1iZXJBbmRVbml0KToKKyAgICAgICAgKiBwYWdlL0Zy
YW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVJlZ0V4cEZvckxhYmVscyk6CisgICAg
ICAgICogcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKToKKyAgICAgICAgKiBwYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVRyZWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsaW5nU3RhdGVUcmVlOjpzY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHQgY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL1NoYXJlZFN0cmluZ0hhc2guY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29t
cHV0ZVNoYXJlZFN0cmluZ0hhc2hJbmxpbmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0hFVkNVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSEVWQ0NvZGVjUGFy
YW1ldGVyc1N0cmluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU3RyaW5nVHJ1bmNh
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNlbnRlclRydW5jYXRlVG9CdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6cmlnaHRUcnVuY2F0ZVRvQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OnJpZ2h0Q2xpcFRvQ2hhcmFjdGVyQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OnJpZ2h0Q2xp
cFRvV29yZEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6OnNldFBsYXliaW5VUkwpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjpwbGF0Zm9y
bU1heGltdW1CdWZmZXJTaXplIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93
aW4vRm9udENhY2hlV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUdESUZvbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpnZXRGb250U2VsZWN0aW9uQ2FwYWJpbGl0aWVz
SW5GYW1pbHkpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9Vc2VyQWdlbnRJT1MubW06CisgICAg
ICAgIChXZWJDb3JlOjpkZXZpY2VOYW1lRm9yVXNlckFnZW50KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL0NhY2hlVmFsaWRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0cmltVG9O
ZXh0U2VwYXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlQ2FjaGVIZWFkZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6cHJvdGVjdGlvblNwYWNlTWFwS2V5RnJvbVVSTCk6CisgICAgICAgIChXZWJDb3Jl
OjpDcmVkZW50aWFsU3RvcmFnZTo6ZmluZERlZmF1bHRQcm90ZWN0aW9uU3BhY2VGb3JVUkwpOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YVVSTERlY29kZXI6OkRlY29kZVRhc2s6OnByb2Nlc3MpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dHJp
bUlucHV0U2FtcGxlKToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlU3RydWN0dXJlZEZpZWxkVmFs
dWUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpyZXRyaWV2ZUtleVZhbHVlUGFpcnMpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY3VybC9Db29raWVVdGlsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZVV0aWw6
OnBhcnNlQ29va2llQXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVVdGlsOjpw
YXJzZUNvb2tpZUhlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVVdGlsOjpkZWZhdWx0
UGF0aEZvclVSTCk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9Mb2NhbGVUb1NjcmlwdE1hcHBp
bmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bG9jYWxlVG9TY3JpcHRDb2RlRm9yRm9udFNlbGVj
dGlvbik6CisgICAgICAgICogcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6ZmlsZVN5c3RlbVBhdGhGcm9tVVJMT3JUaXRsZSk6CisgICAgICAgIChXZWJD
b3JlOjpQYXN0ZWJvYXJkOjp3cml0ZVVSTFRvRGF0YU9iamVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpjcmVhdGVHbG9iYWxJbWFnZUZpbGVEZXNjcmlwdG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS93
aW4vV2ViQ29yZVRleHRSZW5kZXJlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkb0RyYXdUZXh0
QXRQb2ludCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OmNyZWF0ZVByaW1hcnlHcmFwaGlj
c0xheWVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlck9iamVjdDo6b3V0cHV0UmVuZGVyT2JqZWN0IGNvbnN0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9uc1Jlc29sdmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok5hbWVkTGluZUNvbGxlY3Rpb25CYXNlOjpOYW1lZExpbmVDb2xsZWN0aW9uQmFz
ZSk6CisgICAgICAgICogc3ZnL1NWR1Rlc3RzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rl
c3RzOjppc1ZhbGlkIGNvbnN0KToKKyAgICAgICAgKiBzdmcvU1ZHVVJJUmVmZXJlbmNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1VSSVJlZmVyZW5jZTo6ZnJhZ21lbnRJZGVudGlmaWVyRnJv
bUlSSVN0cmluZyk6CisgICAgICAgICogc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdTTUlMRWxlbWVudDo6cGFyc2VDbG9ja1ZhbHVlKToKKyAg
ICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iOjp2YWxpZGF0ZVNlcnZpY2VXb3JrZXJSZXNwb25zZSk6
CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleTo6ZnJv
bURhdGFiYXNlS2V5KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpjYW5IYW5kbGVTY2hlbWUgY29uc3Qp
OgorCiAyMDIyLTA0LTEzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmVwbGFjZSBBdG9tU3RyaW5nKGNvbnN0IGNoYXIqKSB3aXRoIEF0b21TdHJpbmc6OmZyb21M
YXRpbjEoY29uc3QgY2hhciopCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9nCmluZGV4IDc0ODJhZTIzNDM0ZDAzYmExOGNl
ZjkyMjNhNzY4MDA4YjgxMzU1ZjUuLjZkMDEwZTQ3YjBmYmU1ZWI3ZWEzYzZiNWJkZWRmZWFjY2Nl
NzRiMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJEcml2ZXIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDQtMTMgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBEcm9wIGluZWZmaWNpZW50IFN0
cmluZzo6YXBwZW5kKCkgb3ZlcmxvYWRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzkyODkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBEcm9wIGluZWZmaWNpZW50IFN0cmluZzo6YXBwZW5kKCkgb3Zlcmxv
YWRzIHRvIHB1c2ggZGV2ZWxvcGVycyB0byB1c2UgU3RyaW5nQnVpbGRlciAvIG1ha2VTdHJpbmco
KSBpbnN0ZWFkLgorCisgICAgICAgICogQ29tbWFuZFJlc3VsdC5jcHA6CisgICAgICAgIChXZWJE
cml2ZXI6OkNvbW1hbmRSZXN1bHQ6OkNvbW1hbmRSZXN1bHQpOgorCiAyMDIyLTA0LTExICBEb24g
T2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CiAKICAgICAgICAgRml4IFBsYXlTdGF0
aW9uIGJ1aWxkIGFmdGVyIHIyOTI2OTYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYjgzNDhkZGQwNGVkYmI5OTAyNjI0
ODVlZGE3ODYyYjAxZTFlODYwMS4uZTE0YjFiZWU2ZDI4MjUwZTY3ZDQ4ZjQ4NzQxYzU4NDRmZGMy
NWExYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAyMi0wNC0xMyAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIERyb3AgaW5lZmZpY2llbnQgU3RyaW5nOjph
cHBlbmQoKSBvdmVybG9hZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzOTI4OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIERyb3AgaW5lZmZpY2llbnQgU3RyaW5nOjphcHBlbmQoKSBvdmVybG9hZHMgdG8g
cHVzaCBkZXZlbG9wZXJzIHRvIHVzZSBTdHJpbmdCdWlsZGVyIC8gbWFrZVN0cmluZygpIGluc3Rl
YWQuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURh
dGFiYXNlVHJhY2tlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsU3RvcmFnZURhdGFiYXNl
VHJhY2tlcjo6b3JpZ2lucyBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6
dHJhdmVyc2VSZWNvcmRzRmlsZXMpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2Uv
TG9jYWxTdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OmZpbGVOYW1lVG9Pcmln
aW4pOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS1N0cmluZy5jcHA6CisgICAgICAgIChXS1N0
cmluZ0dldENoYXJhY3RlcnMpOgorICAgICAgICAqIFNoYXJlZC9tYWMvQXV4aWxpYXJ5UHJvY2Vz
c01hYy5tbToKKyAgICAgICAgKFdlYktpdDo6cG9wdWxhdGVTYW5kYm94SW5pdGlhbGl6YXRpb25Q
YXJhbWV0ZXJzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvSW5wdXRNZXRob2RGaWx0
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbnB1dE1ldGhvZEZpbHRlcjo6bm90aWZ5U3Vycm91
bmRpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvR3RrU2V0dGluZ3NNYW5hZ2VyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6R3RrU2V0dGluZ3NNYW5hZ2VyOjp0aGVtZU5hbWUgY29uc3QpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvVGV4dENoZWNrZXJHdGsuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpUZXh0Q2hlY2tlcjo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy93aW4vV2ViUHJvY2Vzc1Bvb2xXaW4uY3BwOgorICAgICAgICAoV2ViS2l0Ojppbml0aWFs
aXplUmVtb3RlSW5zcGVjdG9yU2VydmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMv
UERGL1BERlBsdWdpbi5tbToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpzZXRTdWdnZXN0
ZWRGaWxlbmFtZSk6CisKIDIwMjItMDQtMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBSZXBsYWNlIEF0b21TdHJpbmcoY29uc3QgY2hhciopIHdpdGggQXRvbVN0
cmluZzo6ZnJvbUxhdGluMShjb25zdCBjaGFyKikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKaW5kZXggMTI5
OTQ1ZDhkNzRmMjQ3M2UzNTQwN2JiOGQxNTFjZmVmZWQxZmRmMS4uOTFlYWQ4ZTViMDljNDZhZjNh
Y2M0YzQxNTNhM2M5ZmY1YzllZjU1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NSBAQAorMjAyMi0wNC0xMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAg
ICAgIERyb3AgaW5lZmZpY2llbnQgU3RyaW5nOjphcHBlbmQoKSBvdmVybG9hZHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTI4OQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGRyb3BfU3RyaW5nX2FwcGVu
ZAorCisgICAgICAgICogU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlN0b3JhZ2VUcmFja2VyOjpzeW5jRmlsZVN5c3RlbUFuZFRyYWNrZXJEYXRhYmFzZSk6CisK
IDIwMjItMDQtMDUgIEVsbGlvdHQgV2lsbGlhbXMgIDxlbXdAYXBwbGUuY29tPgogCiAgICAgICAg
IEZpeCBTVFAgYnVpbGQgZXJyb3IgIm5vIHN1Y2ggZmlsZSBvciBkaXJlY3Rvcnk6ICdUZWNobm9s
b2d5JyIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA5NjdhMmQxMDI3ZjdkYzdiOThm
YjRmNTQxOWEwNjIzYTNhMGQ2Y2NmLi42ZWRlYTFhYmUxNDdiN2VlYWUzM2MxM2RiNGNhOTRkZDhk
YTBlOTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIw
MjItMDQtMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBEcm9w
IGluZWZmaWNpZW50IFN0cmluZzo6YXBwZW5kKCkgb3ZlcmxvYWRzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzkyODkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEcm9wIGluZWZmaWNpZW50IFN0cmluZzo6
YXBwZW5kKCkgb3ZlcmxvYWRzIHRvIHB1c2ggZGV2ZWxvcGVycyB0byB1c2UgU3RyaW5nQnVpbGRl
ciAvIG1ha2VTdHJpbmcoKSBpbnN0ZWFkLgorCisgICAgICAgICogV2ViVmlldy9XZWJIVE1MUmVw
cmVzZW50YXRpb24ubW06CisgICAgICAgIChyZWdFeHBGb3JMYWJlbHMpOgorCiAyMDIyLTA0LTEy
ICBFbGxpb3R0IFdpbGxpYW1zICA8ZW13QGFwcGxlLmNvbT4KIAogICAgICAgICBbWGNvZGVdIElu
IG9wZW4tc291cmNlIGJ1aWxkcywgZGlzYWJsZSBiaXRjb2RlIGluIHhjY29uZmlncyBpbnN0ZWFk
IG9mIGJ1aWxkLXdlYmtpdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcFNuYXBzaG90QnVpbGRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
U25hcHNob3RCdWlsZGVyLmNwcAppbmRleCA5ZDVjNjE5MjIxZWVlNWQ1MWNmZWYxNTg4ZWI3OTJi
NjU4YTJjMzU3Li5jYjE2YTAwNTI1NGY1ODI2YTU5ZmRmYzI1MjBmYjRhNDgwZmUxYTU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNw
cApAQCAtMzkwLDE1ICszOTAsMTUgQEAgU3RyaW5nIEhlYXBTbmFwc2hvdEJ1aWxkZXI6Ompzb24o
RnVuY3Rpb248Ym9vbCAoY29uc3QgSGVhcFNuYXBzaG90Tm9kZSYpPiBhbGxvd04KICAgICAgICAg
ICAgICAgICBmbGFncyB8PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTm9kZUZsYWdzOjpJbnRlcm5h
bCk7CiAKICAgICAgICAgICAgIGlmIChtX3NuYXBzaG90VHlwZSA9PSBTbmFwc2hvdFR5cGU6OkdD
RGVidWdnaW5nU25hcHNob3QpIHsKLSAgICAgICAgICAgICAgICBTdHJpbmcgbm9kZUxhYmVsOwor
ICAgICAgICAgICAgICAgIFN0cmluZ0J1aWxkZXIgbm9kZUxhYmVsOwogICAgICAgICAgICAgICAg
IGF1dG8gaXQgPSBtX2NlbGxMYWJlbHMuZmluZChub2RlLmNlbGwpOwogICAgICAgICAgICAgICAg
IGlmIChpdCAhPSBtX2NlbGxMYWJlbHMuZW5kKCkpCi0gICAgICAgICAgICAgICAgICAgIG5vZGVM
YWJlbCA9IGl0LT52YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgbm9kZUxhYmVsLmFwcGVuZChp
dC0+dmFsdWUpOwogCiAgICAgICAgICAgICAgICAgaWYgKG5vZGVMYWJlbC5pc0VtcHR5KCkpIHsK
ICAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIG9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNP
YmplY3QqPih2bSwgbm9kZS5jZWxsKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF1
dG8qIGZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4odm0sIG9iamVjdCkpCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZUxhYmVsID0gZnVuY3Rpb24tPmNhbGN1bGF0
ZWREaXNwbGF5TmFtZSh2bSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZUxhYmVs
LmFwcGVuZChmdW5jdGlvbi0+Y2FsY3VsYXRlZERpc3BsYXlOYW1lKHZtKSk7CiAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAKQEAgLTQxMCw3ICs0MTAsNyBAQCBTdHJp
bmcgSGVhcFNuYXBzaG90QnVpbGRlcjo6anNvbihGdW5jdGlvbjxib29sIChjb25zdCBIZWFwU25h
cHNob3ROb2RlJik+IGFsbG93TgogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAg
IGlmICghbm9kZUxhYmVsLmlzRW1wdHkoKSAmJiBtX3NuYXBzaG90VHlwZSA9PSBTbmFwc2hvdFR5
cGU6OkdDRGVidWdnaW5nU25hcHNob3QpIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byByZXN1
bHQgPSBsYWJlbEluZGV4ZXMuYWRkKG5vZGVMYWJlbCwgbmV4dExhYmVsSW5kZXgpOworICAgICAg
ICAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IGxhYmVsSW5kZXhlcy5hZGQobm9kZUxhYmVsLnRv
U3RyaW5nKCksIG5leHRMYWJlbEluZGV4KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3Vs
dC5pc05ld0VudHJ5KQogICAgICAgICAgICAgICAgICAgICAgICAgbmV4dExhYmVsSW5kZXgrKzsK
ICAgICAgICAgICAgICAgICAgICAgbGFiZWxJbmRleCA9IHJlc3VsdC5pdGVyYXRvci0+dmFsdWU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdEFyZ3Vt
ZW50cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMu
aAppbmRleCA3N2EwODE5MTZmNjFjMmY5YmQ3MTZhYzgzZjMwOWRkZGE3ZTgzMjc0Li4yMmRhN2Rk
MTk3OTE4OTcwNzEyMTIzZGM1NTE5NDI4MWYyOWY0YzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0QXJndW1lbnRzLmgKQEAgLTYyLDcgKzYyLDcgQEAg
cHVibGljOgogICAgICAgICBjb25zdGV4cHIgc2l6ZV90IG1heE1lc3NhZ2VMZW5ndGggPSAxMDAw
MDsKICAgICAgICAgaWYgKG1lc3NhZ2UubGVuZ3RoKCkgPD0gbWF4TWVzc2FnZUxlbmd0aCkKICAg
ICAgICAgICAgIHJldHVybiBtZXNzYWdlOwotICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhtZXNz
YWdlLnN1YnN0cmluZygwLCBtYXhNZXNzYWdlTGVuZ3RoKSwgIi4uLiJfcyk7CisgICAgICAgIHJl
dHVybiBtYWtlU3RyaW5nKFN0cmluZ1ZpZXcobWVzc2FnZSkubGVmdChtYXhNZXNzYWdlTGVuZ3Ro
KSwgIi4uLiJfcyk7CiAgICAgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAppbmRleCBkYzE2MDk3OWY5ZDg3MzY1
OWZiZjljODBkYjYzMzA2YWZkNWU5NDkxLi4xNjFmM2U2OWQ0M2I4OWQ4M2Y1N2ZjN2ZjMWYzMWMw
ZDIyYTA0OGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNl
cHRpb25IZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNl
cHRpb25IZWxwZXJzLmNwcApAQCAtNzgsNyArNzgsNyBAQCBzdGF0aWMgU3RyaW5nVmlldyBjbGFt
cEVycm9yTWVzc2FnZShjb25zdCBTdHJpbmcmIG9yaWdpbmFsTWVzc2FnZSkKIHsKICAgICAvLyBI
b3BlZnVsbHkgdGhpcyBpcyBzdWZmaWNpZW50bHkgbG9uZy4gTm90ZSwgdGhpcyBpcyB0aGUgbGVu
Z3RoIG9mIHRoZSBzdHJpbmcgbm90IHRoZSBudW1iZXIgb2YgYnl0ZXMgdXNlZC4KICAgICBjb25z
dGV4cHIgdW5zaWduZWQgbWF4TGVuZ3RoID0gMiAqIEtCOwotICAgIHJldHVybiBTdHJpbmdWaWV3
KG9yaWdpbmFsTWVzc2FnZSkuc3Vic3RyaW5nKDAsIG1heExlbmd0aCk7CisgICAgcmV0dXJuIFN0
cmluZ1ZpZXcob3JpZ2luYWxNZXNzYWdlKS5sZWZ0KG1heExlbmd0aCk7CiB9CiAKIHN0YXRpYyBT
dHJpbmcgZGVmYXVsdEFwcHJveGltYXRlU291cmNlRXJyb3IoY29uc3QgU3RyaW5nJiBvcmlnaW5h
bE1lc3NhZ2UsIFN0cmluZ1ZpZXcgc291cmNlVGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAKaW5kZXggODNlN2RhYzZmYmJiNWY4
YjRmNzM3M2ExM2FmZmFkNTc1Y2QzZDkxOC4uMzI4MGRhYzJkNzVkZDQ4MzYwY2Y4YzM0M2IyZGQ1
OGYyYjc4OTE1YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bE51bWJlckZvcm1hdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bE51bWJlckZvcm1hdC5jcHAKQEAgLTIyMyw3ICsyMjMsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25h
bDxXZWxsRm9ybWVkVW5pdD4gd2VsbEZvcm1lZFVuaXRJZGVudGlmaWVyKFN0cmluZ1ZpZXcgdW5p
dElkZQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gSWYgdGhlIHJlc3Vs
dCBvZiBJc1NhbmN0aW9uZWRTaW1wbGVVbml0SWRlbnRpZmllcihudW1lcmF0b3IpIGlzIGZhbHNl
LCB0aGVuIHJldHVybiBmYWxzZS4KLSAgICBhdXRvIG51bWVyYXRvciA9IHVuaXRJZGVudGlmaWVy
LnN1YnN0cmluZygwLCBwb3NpdGlvbik7CisgICAgYXV0byBudW1lcmF0b3IgPSB1bml0SWRlbnRp
Zmllci5sZWZ0KHBvc2l0aW9uKTsKICAgICBhdXRvIG51bWVyYXRvclVuaXQgPSBzYW5jdGlvbmVk
U2ltcGxlVW5pdElkZW50aWZpZXIobnVtZXJhdG9yKTsKICAgICBpZiAoIW51bWVyYXRvclVuaXQp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxPYmplY3QuY3BwCmluZGV4IDI5ZDZmOTM1ZjAyN2IyMDI3MGU5MWZlYjlkYjc2
ZGE1NGNhNGYxNjEuLmEyMmViZjQwOGYxYTY2ZGYwNDQ2MDMzYzE5M2Y5NjBmODZjNjgxMTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCkBAIC05MTcs
NyArOTE3LDggQEAgUmVzb2x2ZWRMb2NhbGUgcmVzb2x2ZUxvY2FsZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBjb25zdCBMb2NhbGVTZXQmIGF2YWkKICAgICBSZXNvbHZlZExvY2FsZSBy
ZXNvbHZlZDsKICAgICByZXNvbHZlZC5kYXRhTG9jYWxlID0gZm91bmRMb2NhbGU7CiAKLSAgICBT
dHJpbmcgc3VwcG9ydGVkRXh0ZW5zaW9uID0gIi11Il9zOworICAgIFN0cmluZ0J1aWxkZXIgc3Vw
cG9ydGVkRXh0ZW5zaW9uOworICAgIHN1cHBvcnRlZEV4dGVuc2lvbi5hcHBlbmQoIi11Il9zKTsK
ICAgICBmb3IgKFJlbGV2YW50RXh0ZW5zaW9uS2V5IGtleSA6IHJlbGV2YW50RXh0ZW5zaW9uS2V5
cykgewogICAgICAgICBBU0NJSUxpdGVyYWwga2V5U3RyaW5nID0gcmVsZXZhbnRFeHRlbnNpb25L
ZXlTdHJpbmcoa2V5KTsKICAgICAgICAgVmVjdG9yPFN0cmluZz4ga2V5TG9jYWxlRGF0YSA9IGxv
Y2FsZURhdGEoZm91bmRMb2NhbGUsIGtleSk7CkBAIC05NTcsNyArOTU4LDcgQEAgUmVzb2x2ZWRM
b2NhbGUgcmVzb2x2ZUxvY2FsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBM
b2NhbGVTZXQmIGF2YWkKIAogICAgIGlmIChzdXBwb3J0ZWRFeHRlbnNpb24ubGVuZ3RoKCkgPiAy
KSB7CiAgICAgICAgIFN0cmluZ1ZpZXcgZm91bmRMb2NhbGVWaWV3KGZvdW5kTG9jYWxlKTsKLSAg
ICAgICAgZm91bmRMb2NhbGUgPSBtYWtlU3RyaW5nKGZvdW5kTG9jYWxlVmlldy5zdWJzdHJpbmco
MCwgbWF0Y2hlclJlc3VsdC5leHRlbnNpb25JbmRleCksIHN1cHBvcnRlZEV4dGVuc2lvbiwgZm91
bmRMb2NhbGVWaWV3LnN1YnN0cmluZyhtYXRjaGVyUmVzdWx0LmV4dGVuc2lvbkluZGV4KSk7Cisg
ICAgICAgIGZvdW5kTG9jYWxlID0gbWFrZVN0cmluZyhmb3VuZExvY2FsZVZpZXcubGVmdChtYXRj
aGVyUmVzdWx0LmV4dGVuc2lvbkluZGV4KSwgc3VwcG9ydGVkRXh0ZW5zaW9uLnRvU3RyaW5nKCks
IGZvdW5kTG9jYWxlVmlldy5zdWJzdHJpbmcobWF0Y2hlclJlc3VsdC5leHRlbnNpb25JbmRleCkp
OwogICAgIH0KIAogICAgIHJlc29sdmVkLmxvY2FsZSA9IFdURk1vdmUoZm91bmRMb2NhbGUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdElubGlu
ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3RJbmxpbmVzLmgK
aW5kZXggNDFjMmJmZGY2ZWU1MTVjMjM0ZGNiY2U2MGNkYjMzMDNlYWIzMGFmZS4uZGM1NzhlMTli
ZDU1MjBlYzc0ZTdiYzNiMTMyMzUwOWExMmE5ZjJjZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0SW5saW5lcy5oCkBAIC01OCw3ICs1OCw3IEBAIHRl
bXBsYXRlPHR5cGVuYW1lIFByZWRpY2F0ZT4gU3RyaW5nIGJlc3RBdmFpbGFibGVMb2NhbGUoY29u
c3QgU3RyaW5nJiBsb2NhbGUsIFByCiAgICAgICAgIGlmIChwb3MgPj0gMiAmJiBjYW5kaWRhdGVb
cG9zIC0gMl0gPT0gJy0nKQogICAgICAgICAgICAgcG9zIC09IDI7CiAKLSAgICAgICAgY2FuZGlk
YXRlID0gY2FuZGlkYXRlLnN1YnN0cmluZygwLCBwb3MpOworICAgICAgICBjYW5kaWRhdGUgPSBj
YW5kaWRhdGUubGVmdChwb3MpOwogICAgIH0KIAogICAgIHJldHVybiBTdHJpbmcoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcAppbmRleCAx
NDgwMTQ5ZjA2ODc2OGI3MjVkNTYzZDMxMTFkMWJkMjZiM2FmNWViLi5jODgyZjRlODk3ZjJmZTY1
YTVjYjM0ZjI2YjVhOTBlY2E1NTQ4Yzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwCkBAIC0xNTEsMTIgKzE1MSw5IEBAIHN0YXRpYyBT
dHJpbmdWaWV3IHNpbmd1bGFyVW5pdChTdHJpbmdWaWV3IHVuaXQpCiAvLyBGb3IgdXNlIGluIGVy
cm9yIG1lc3NhZ2VzIHdoZXJlIGEgc3RyaW5nIHZhbHVlIGlzIHBvdGVudGlhbGx5IHVuYm91bmRl
ZAogV1RGOjpTdHJpbmcgZWxsaXBzaXplQXQodW5zaWduZWQgbWF4TGVuZ3RoLCBjb25zdCBXVEY6
OlN0cmluZyYgc3RyaW5nKQogewotICAgIFdURjo6U3RyaW5nIGNvcHkgeyBzdHJpbmcgfTsKLSAg
ICBpZiAoc3RyaW5nLmxlbmd0aCgpID4gbWF4TGVuZ3RoKSB7Ci0gICAgICAgIGNvcHkudHJ1bmNh
dGUobWF4TGVuZ3RoIC0gMSk7Ci0gICAgICAgIGNvcHkuYXBwZW5kKGhvcml6b250YWxFbGxpcHNp
cyk7Ci0gICAgfQotICAgIHJldHVybiBjb3B5OworICAgIGlmIChzdHJpbmcubGVuZ3RoKCkgPD0g
bWF4TGVuZ3RoKQorICAgICAgICByZXR1cm4gc3RyaW5nOworICAgIHJldHVybiBtYWtlU3RyaW5n
KFN0cmluZ1ZpZXcoc3RyaW5nKS5sZWZ0KG1heExlbmd0aCAtIDEpLCBob3Jpem9udGFsRWxsaXBz
aXMpOwogfQogCiBQcm9wZXJ0eU5hbWUgdGVtcG9yYWxVbml0UGx1cmFsUHJvcGVydHlOYW1lKFZN
JiB2bSwgVGVtcG9yYWxVbml0IHVuaXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdG9vbHMvRnVuY3Rpb25PdmVycmlkZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rv
b2xzL0Z1bmN0aW9uT3ZlcnJpZGVzLmNwcAppbmRleCA1ZTMyMDhjYjI2MDEwMzJjN2UzMGMyNmJj
OTMxNzVmZjc2ZmNiYTMyLi5iZTFmMjhmYTU0NGJmODg0MDAzN2ZlNDgxNDg1NTc4YjAyOGYzNmI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvRnVuY3Rpb25PdmVycmlk
ZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9GdW5jdGlvbk92ZXJyaWRl
cy5jcHAKQEAgLTEzNSwyMSArMTM1LDE5IEBAIHN0YXRpYyB2b2lkIGluaXRpYWxpemVPdmVycmlk
ZUluZm8oY29uc3QgU291cmNlQ29kZSYgb3JpZ0NvZGUsIGNvbnN0IFN0cmluZyYgbmV3CiAgICAg
dW5zaWduZWQgaGVhZGVyTGVuZ3RoID0gb3JpZ0JyYWNlU3RhcnQgLSBvcmlnRnVuY3Rpb25TdGFy
dDsKICAgICBTdHJpbmcgb3JpZ0hlYWRlciA9IG9yaWdQcm92aWRlclN0ci5zdWJzdHJpbmcob3Jp
Z0Z1bmN0aW9uU3RhcnQsIGhlYWRlckxlbmd0aCk7CiAKLSAgICBTdHJpbmcgbmV3UHJvdmlkZXJT
dHI7Ci0gICAgbmV3UHJvdmlkZXJTdHIuYXBwZW5kKG9yaWdIZWFkZXIpOwotICAgIG5ld1Byb3Zp
ZGVyU3RyLmFwcGVuZChuZXdCb2R5KTsKKyAgICBTdHJpbmcgbmV3UHJvdmlkZXJTdHJpbmcgPSBt
YWtlU3RyaW5nKG9yaWdIZWFkZXIsIG5ld0JvZHkpOwogCiAgICAgYXV0byBvdmVycmlkZGVuID0g
IjxvdmVycmlkZGVuPiJfczsKICAgICBVUkwgdXJsKHsgfSwgb3ZlcnJpZGRlbik7Ci0gICAgUmVm
PFNvdXJjZVByb3ZpZGVyPiBuZXdQcm92aWRlciA9IFN0cmluZ1NvdXJjZVByb3ZpZGVyOjpjcmVh
dGUobmV3UHJvdmlkZXJTdHIsIFNvdXJjZU9yaWdpbiB7IHVybCB9LCBvdmVycmlkZGVuKTsKKyAg
ICBSZWY8U291cmNlUHJvdmlkZXI+IG5ld1Byb3ZpZGVyID0gU3RyaW5nU291cmNlUHJvdmlkZXI6
OmNyZWF0ZShuZXdQcm92aWRlclN0cmluZywgU291cmNlT3JpZ2luIHsgdXJsIH0sIG92ZXJyaWRk
ZW4pOwogCiAgICAgaW5mby5maXJzdExpbmUgPSAxOwogICAgIGluZm8ubGluZUNvdW50ID0gMTsg
Ly8gRmFraW5nIGl0LiBUaGlzIGRvZXNuJ3QgcmVhbGx5IG1hdHRlciBmb3Igbm93LgogICAgIGlu
Zm8uc3RhcnRDb2x1bW4gPSAxOwogICAgIGluZm8uZW5kQ29sdW1uID0gMTsgLy8gRmFraW5nIGl0
LiBUaGlzIGRvZXNuJ3QgcmVhbGx5IG1hdHRlciBmb3Igbm93LgotICAgIGluZm8ucGFyYW1ldGVy
c1N0YXJ0T2Zmc2V0ID0gbmV3UHJvdmlkZXJTdHIuZmluZCgnKCcpOwotICAgIGluZm8udHlwZVBy
b2ZpbGluZ1N0YXJ0T2Zmc2V0ID0gbmV3UHJvdmlkZXJTdHIuZmluZCgneycpOwotICAgIGluZm8u
dHlwZVByb2ZpbGluZ0VuZE9mZnNldCA9IG5ld1Byb3ZpZGVyU3RyLmxlbmd0aCgpIC0gMTsKKyAg
ICBpbmZvLnBhcmFtZXRlcnNTdGFydE9mZnNldCA9IG5ld1Byb3ZpZGVyU3RyaW5nLmZpbmQoJygn
KTsKKyAgICBpbmZvLnR5cGVQcm9maWxpbmdTdGFydE9mZnNldCA9IG5ld1Byb3ZpZGVyU3RyaW5n
LmZpbmQoJ3snKTsKKyAgICBpbmZvLnR5cGVQcm9maWxpbmdFbmRPZmZzZXQgPSBuZXdQcm92aWRl
clN0cmluZy5sZW5ndGgoKSAtIDE7CiAKICAgICBpbmZvLnNvdXJjZUNvZGUgPQogICAgICAgICBT
b3VyY2VDb2RlKFdURk1vdmUobmV3UHJvdmlkZXIpLCBpbmZvLnBhcmFtZXRlcnNTdGFydE9mZnNl
dCwgaW5mby50eXBlUHJvZmlsaW5nRW5kT2Zmc2V0ICsgMSwgMSwgMSk7CkBAIC0yMjUsMTEgKzIy
Myw3IEBAIHN0YXRpYyBTdHJpbmcgcGFyc2VDbGF1c2UoY29uc3QgY2hhcioga2V5d29yZCwgc2l6
ZV90IGtleXdvcmRMZW5ndGgsIEZJTEUqIGZpbGUsCiAgICAgaWYgKGhhc0Rpc2FsbG93ZWRDaGFy
YWN0ZXJzKGRlbGltaXRlclN0YXJ0LCBkZWxpbWl0ZXJMZW5ndGgpKQogICAgICAgICBGQUlMX1dJ
VEhfRVJST1IoU1lOVEFYX0VSUk9SLCAoIkRlbGltaXRlciAnIiwgZGVsaW1pdGVyLCAiJyBjYW5u
b3QgaGF2ZSAneycsICd9Jywgb3Igd2hpdGVzcGFjZTpcbiIsIGxpbmUsICJcbiIpKTsKICAgICAK
LSAgICBTdHJpbmcgdGVybWluYXRvclN0cmluZzsKLSAgICB0ZXJtaW5hdG9yU3RyaW5nLmFwcGVu
ZCgnfScpOwotICAgIHRlcm1pbmF0b3JTdHJpbmcuYXBwZW5kKGRlbGltaXRlcik7Ci0KLSAgICBD
U3RyaW5nIHRlcm1pbmF0b3JDU3RyaW5nID0gdGVybWluYXRvclN0cmluZy5hc2NpaSgpOworICAg
IENTdHJpbmcgdGVybWluYXRvckNTdHJpbmcgPSBtYWtlU3RyaW5nKCd9JywgZGVsaW1pdGVyKS5h
c2NpaSgpOwogICAgIGNvbnN0IGNoYXIqIHRlcm1pbmF0b3IgPSB0ZXJtaW5hdG9yQ1N0cmluZy5k
YXRhKCk7CiAgICAgbGluZSA9IGRlbGltaXRlckVuZDsgLy8gU3RhcnQgZnJvbSB0aGUgey4KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQXNzZXJ0aW9ucy5jcHAgYi9Tb3VyY2UvV1RGL3d0
Zi9Bc3NlcnRpb25zLmNwcAppbmRleCBjOTNiYWY0MTMzYjZmMzg2YTczZjIwN2I2ZWY2NWYxOTIz
YTQ0NjM4Li4yY2QyNTE4OWIzZDc0MDkxZmRhNDhiMmFiY2EzYjBkMjFhY2IyMDM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9B
c3NlcnRpb25zLmNwcApAQCAtNDY2LDcgKzQ2Niw3IEBAIHN0YXRpYyB2b2lkIFdURkxvZ1ZhTGlz
dChXVEZMb2dDaGFubmVsKiBjaGFubmVsLCBjb25zdCBjaGFyKiBmb3JtYXQsIHZhX2xpc3QgYXJn
CiAgICAgQUxMT1dfTk9OTElURVJBTF9GT1JNQVRfRU5ECiAKICAgICBpZiAoIWxvZ2dpbmdTdHJp
bmcuZW5kc1dpdGgoJ1xuJykpCi0gICAgICAgIGxvZ2dpbmdTdHJpbmcuYXBwZW5kKCdcbicpOwor
ICAgICAgICBsb2dnaW5nU3RyaW5nID0gbWFrZVN0cmluZyhsb2dnaW5nU3RyaW5nLCAnXG4nKTsK
IAogICAgIGxvZ2dpbmdBY2N1bXVsYXRvcigpLmFjY3VtdWxhdGUobG9nZ2luZ1N0cmluZyk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9VUkwu
Y3BwCmluZGV4IDJjMjIxZjRlYjE5OGViMTdlNGZhOTBmZDIzOWQ0ODhlNTRlYmVhZGIuLjU3Njhl
Mzg4NzgxODc0NmU3NWNkYjQ1ZWI2NWQzMzg1ODE3ODdiMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL1VSTC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvVVJMLmNwcApAQCAtMTM1LDcgKzEz
NSw3IEBAIFN0cmluZ1ZpZXcgVVJMOjpwcm90b2NvbCgpIGNvbnN0CiAgICAgaWYgKCFtX2lzVmFs
aWQpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICByZXR1cm4gU3RyaW5nVmlldyhtX3N0cmlu
Zykuc3Vic3RyaW5nKDAsIG1fc2NoZW1lRW5kKTsKKyAgICByZXR1cm4gU3RyaW5nVmlldyhtX3N0
cmluZykubGVmdChtX3NjaGVtZUVuZCk7CiB9CiAKIFN0cmluZ1ZpZXcgVVJMOjpob3N0KCkgY29u
c3QKQEAgLTE2MiwxMCArMTYyLDEwIEBAIFN0cmluZyBVUkw6Omhvc3RBbmRQb3J0KCkgY29uc3QK
IFN0cmluZyBVUkw6OnByb3RvY29sSG9zdEFuZFBvcnQoKSBjb25zdAogewogICAgIGlmICghaGFz
Q3JlZGVudGlhbHMoKSkKLSAgICAgICAgcmV0dXJuIG1fc3RyaW5nLnN1YnN0cmluZygwLCBwYXRo
U3RhcnQoKSk7CisgICAgICAgIHJldHVybiBtX3N0cmluZy5sZWZ0KHBhdGhTdGFydCgpKTsKIAog
ICAgIHJldHVybiBtYWtlU3RyaW5nKAotICAgICAgICBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJz
dHJpbmcoMCwgbV91c2VyU3RhcnQpLAorICAgICAgICBTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0
KG1fdXNlclN0YXJ0KSwKICAgICAgICAgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKGhv
c3RTdGFydCgpLCBwYXRoU3RhcnQoKSAtIGhvc3RTdGFydCgpKQogICAgICk7CiB9CkBAIC0zNzcs
NyArMzc3LDcgQEAgU3RyaW5nVmlldyBVUkw6OnBhdGgoKSBjb25zdAogYm9vbCBVUkw6OnNldFBy
b3RvY29sKFN0cmluZ1ZpZXcgbmV3UHJvdG9jb2wpCiB7CiAgICAgLy8gRmlyZWZveCBhbmQgSUUg
cmVtb3ZlIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGZpcnN0ICc6Jy4KLSAgICBhdXRvIG5ld1Byb3Rv
Y29sUHJlZml4ID0gbmV3UHJvdG9jb2wuc3Vic3RyaW5nKDAsIG5ld1Byb3RvY29sLmZpbmQoJzon
KSk7CisgICAgYXV0byBuZXdQcm90b2NvbFByZWZpeCA9IG5ld1Byb3RvY29sLmxlZnQobmV3UHJv
dG9jb2wuZmluZCgnOicpKTsKICAgICBhdXRvIG5ld1Byb3RvY29sQ2Fub25pY2FsaXplZCA9IFVS
TFBhcnNlcjo6bWF5YmVDYW5vbmljYWxpemVTY2hlbWUobmV3UHJvdG9jb2xQcmVmaXgpOwogICAg
IGlmICghbmV3UHJvdG9jb2xDYW5vbmljYWxpemVkKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC00NTcsNyArNDU3LDcgQEAgdm9pZCBVUkw6OnNldEhvc3QoU3RyaW5nVmlldyBuZXdIb3N0KQog
ICAgICAgICByZXR1cm47CiAKICAgICBpZiAoYXV0byBpbmRleCA9IG5ld0hvc3QuZmluZChoYXNT
cGVjaWFsU2NoZW1lKCkgPyBzbGFzaEhhc2hPclF1ZXN0aW9uTWFyayA6IGZvcndhcmRTbGFzaEhh
c2hPclF1ZXN0aW9uTWFyayk7IGluZGV4ICE9IG5vdEZvdW5kKQotICAgICAgICBuZXdIb3N0ID0g
bmV3SG9zdC5zdWJzdHJpbmcoMCwgaW5kZXgpOworICAgICAgICBuZXdIb3N0ID0gbmV3SG9zdC5s
ZWZ0KGluZGV4KTsKIAogICAgIFZlY3RvcjxVQ2hhciwgNTEyPiBlbmNvZGVkSG9zdE5hbWU7CiAg
ICAgaWYgKGhhc1NwZWNpYWxTY2hlbWUoKSAmJiAhYXBwZW5kRW5jb2RlZEhvc3RuYW1lKGVuY29k
ZWRIb3N0TmFtZSwgbmV3SG9zdCkpCkBAIC01MDAsNyArNTAwLDcgQEAgdm9pZCBVUkw6OnNldEhv
c3RBbmRQb3J0KFN0cmluZ1ZpZXcgaG9zdEFuZFBvcnQpCiAgICAgYXV0byBjb2xvbkluZGV4ID0g
aG9zdE5hbWUucmV2ZXJzZUZpbmQoJzonKTsKICAgICBpZiAoY29sb25JbmRleCAhPSBub3RGb3Vu
ZCkgewogICAgICAgICBwb3J0U3RyaW5nID0gaG9zdE5hbWUuc3Vic3RyaW5nKGNvbG9uSW5kZXgg
KyAxKTsKLSAgICAgICAgaG9zdE5hbWUgPSBob3N0TmFtZS5zdWJzdHJpbmcoMCwgY29sb25JbmRl
eCk7CisgICAgICAgIGhvc3ROYW1lID0gaG9zdE5hbWUubGVmdChjb2xvbkluZGV4KTsKICAgICAg
ICAgLy8gTXVsdGlwbGUgY29sb25zIGFyZSBhY2NlcHRhYmxlIG9ubHkgaW4gY2FzZSBvZiBJUHY2
LgogICAgICAgICBpZiAoaG9zdE5hbWUuY29udGFpbnMoJzonKSAmJiAhaG9zdE5hbWUuc3RhcnRz
V2l0aCgnWycpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtODM3LDcgKzgzNyw3IEBAIFN0cmlu
ZyBVUkw6OnN0cmlwcGVkRm9yVXNlQXNSZWZlcnJlcigpIGNvbnN0CiAgICAgICAgIHJldHVybiBt
X3N0cmluZzsKIAogICAgIHJldHVybiBtYWtlU3RyaW5nKAotICAgICAgICBTdHJpbmdWaWV3KG1f
c3RyaW5nKS5zdWJzdHJpbmcoMCwgbV91c2VyU3RhcnQpLAorICAgICAgICBTdHJpbmdWaWV3KG1f
c3RyaW5nKS5sZWZ0KG1fdXNlclN0YXJ0KSwKICAgICAgICAgU3RyaW5nVmlldyhtX3N0cmluZyku
c3Vic3RyaW5nKGVuZCwgbV9xdWVyeUVuZCAtIGVuZCkKICAgICApOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvVVJMUGFyc2VyLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1VSTFBhcnNlci5j
cHAKaW5kZXggZmZkYzhkMzhmZWI1ZGQxMWU2Njk3NTA4YzI4ZGI0ODFjZDNmMDFkOS4uYmNkOWE3
Y2E2MzUyNDQ5NmQxODc1ZmM5MWE0ZTZmZDRkMTgwMWRlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvVVJMUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9VUkxQYXJzZXIuY3BwCkBA
IC0yNTEyLDcgKzI1MTIsNyBAQCB2b2lkIFVSTFBhcnNlcjo6YWRkTm9uU3BlY2lhbERvdFNsYXNo
KCkKIHsKICAgICBhdXRvIG9sZFBhdGhTdGFydCA9IG1fdXJsLm1faG9zdEVuZCArIG1fdXJsLm1f
cG9ydExlbmd0aDsKICAgICBhdXRvJiBvbGRTdHJpbmcgPSBtX3VybC5tX3N0cmluZzsKLSAgICBt
X3VybC5tX3N0cmluZyA9IG1ha2VTdHJpbmcob2xkU3RyaW5nLnN1YnN0cmluZygwLCBvbGRQYXRo
U3RhcnQgKyAxKSwgIi4vIiwgb2xkU3RyaW5nLnN1YnN0cmluZyhvbGRQYXRoU3RhcnQgKyAxKSk7
CisgICAgbV91cmwubV9zdHJpbmcgPSBtYWtlU3RyaW5nKG9sZFN0cmluZy5sZWZ0KG9sZFBhdGhT
dGFydCArIDEpLCAiLi8iLCBvbGRTdHJpbmcuc3Vic3RyaW5nKG9sZFBhdGhTdGFydCArIDEpKTsK
ICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCArPSAyOwogICAgIG1fdXJsLm1fcGF0aEVu
ZCArPSAyOwogICAgIG1fdXJsLm1fcXVlcnlFbmQgKz0gMjsKQEAgLTI4OTEsNyArMjg5MSw3IEBA
IGF1dG8gVVJMUGFyc2VyOjpwYXJzZVVSTEVuY29kZWRGb3JtKFN0cmluZ1ZpZXcgaW5wdXQpIC0+
IFVSTEVuY29kZWRGb3JtCiAgICAgICAgICAgICBpZiAobmFtZSkKICAgICAgICAgICAgICAgICBv
dXRwdXQuYXBwZW5kKHsgbmFtZS52YWx1ZSgpLCBlbXB0eVN0cmluZygpIH0pOwogICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgYXV0byBuYW1lID0gZm9ybVVSTERlY29kZShieXRlcy5zdWJz
dHJpbmcoMCwgZXF1YWxJbmRleCkudG9TdHJpbmcoKS5yZXBsYWNlKCcrJywgMHgyMCkpOworICAg
ICAgICAgICAgYXV0byBuYW1lID0gZm9ybVVSTERlY29kZShieXRlcy5sZWZ0KGVxdWFsSW5kZXgp
LnRvU3RyaW5nKCkucmVwbGFjZSgnKycsIDB4MjApKTsKICAgICAgICAgICAgIGF1dG8gdmFsdWUg
PSBmb3JtVVJMRGVjb2RlKGJ5dGVzLnN1YnN0cmluZyhlcXVhbEluZGV4ICsgMSkudG9TdHJpbmco
KS5yZXBsYWNlKCcrJywgMHgyMCkpOwogICAgICAgICAgICAgaWYgKG5hbWUgJiYgdmFsdWUpCiAg
ICAgICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCh7IG5hbWUudmFsdWUoKSwgdmFsdWUudmFsdWUo
KSB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VVSUQuY3BwIGIvU291cmNlL1dURi93
dGYvVVVJRC5jcHAKaW5kZXggNGI4OTAwMDQ3YmU5YjU2YjZhNmVjMTZlMTM5MTQ1NjZlZWZkOTFj
MC4uYTgwMTMwMDQ4MDcwZjE2MjVmNDgwNjU2NGU0M2RlYWMyNjVkNGJkZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvVVVJRC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvVVVJRC5jcHAKQEAg
LTExMyw3ICsxMTMsNyBAQCBzdGQ6Om9wdGlvbmFsPFVVSUQ+IFVVSUQ6OnBhcnNlKFN0cmluZ1Zp
ZXcgdmFsdWUpCiAgICAgaWYgKHZhbHVlWzBdID09ICcrJyB8fCB2YWx1ZVs5XSA9PSAnKycgIHx8
IHZhbHVlWzE5XSA9PSAnKycgfHwgdmFsdWVbMjRdID09ICcrJykKICAgICAgICAgcmV0dXJuIHsg
fTsKIAotICAgIGF1dG8gZmlyc3RWYWx1ZSA9IHBhcnNlSW50ZWdlcjx1aW50NjRfdD4odmFsdWUu
c3Vic3RyaW5nKDAsIDgpLCAxNik7CisgICAgYXV0byBmaXJzdFZhbHVlID0gcGFyc2VJbnRlZ2Vy
PHVpbnQ2NF90Pih2YWx1ZS5sZWZ0KDgpLCAxNik7CiAgICAgaWYgKCFmaXJzdFZhbHVlKQogICAg
ICAgICByZXR1cm4geyB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmlu
Z0J1aWxkZXIuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oCmluZGV4IGNh
ZDA5NTNiNTI4YTJkMDllNDIyYTg4MjliNzJjMzI4YmQxMjZkYmYuLmI0MTQzMmYxNzg4NTUwYWRl
NTI2NDRlYWM5OGZhYmNjNTk1YTYyNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
U3RyaW5nQnVpbGRlci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5o
CkBAIC02MSw2ICs2MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZChjb25zdCBBdG9tU3Ry
aW5nJiBzdHJpbmcpIHsgYXBwZW5kKHN0cmluZy5zdHJpbmcoKSk7IH0KICAgICB2b2lkIGFwcGVu
ZChjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIGFwcGVuZChTdHJpbmdWaWV3KTsKKyAgICB2b2lk
IGFwcGVuZChBU0NJSUxpdGVyYWwpOwogICAgIHZvaWQgYXBwZW5kKFVDaGFyKTsKICAgICB2b2lk
IGFwcGVuZChMQ2hhcik7CiAgICAgdm9pZCBhcHBlbmQoY2hhciBjaGFyYWN0ZXIpIHsgYXBwZW5k
KHN0YXRpY19jYXN0PExDaGFyPihjaGFyYWN0ZXIpKTsgfQpAQCAtMjIxLDYgKzIyMiwxMSBAQCBp
bmxpbmUgdm9pZCBTdHJpbmdCdWlsZGVyOjphcHBlbmQoU3RyaW5nVmlldyBzdHJpbmcpCiAgICAg
ICAgIGFwcGVuZENoYXJhY3RlcnMoc3RyaW5nLmNoYXJhY3RlcnMxNigpLCBzdHJpbmcubGVuZ3Ro
KCkpOwogfQogCitpbmxpbmUgdm9pZCBTdHJpbmdCdWlsZGVyOjphcHBlbmQoQVNDSUlMaXRlcmFs
IHN0cmluZykKK3sKKyAgICBhcHBlbmRDaGFyYWN0ZXJzKHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBz
dHJpbmcubGVuZ3RoKCkpOworfQorCiBpbmxpbmUgdm9pZCBTdHJpbmdCdWlsZGVyOjphcHBlbmRT
dWJzdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQg
bGVuZ3RoKQogewogICAgIGFwcGVuZChTdHJpbmdWaWV3IHsgc3RyaW5nIH0uc3Vic3RyaW5nKG9m
ZnNldCwgbGVuZ3RoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmlu
Zy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKaW5kZXggZDc3N2E5Nzlj
ODQ1ZWMxMjlmNGZmYTVlMWRlMjExODNhYmM2NTJjOC4uZGM5NDEwNGI1OTJkMTA4ZDAwYjgyNTgw
NzYyYjExNTE4ZjA3Y2RkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJp
bmcuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcApAQCAtNzMsODAg
KzczLDYgQEAgU3RyaW5nOjpTdHJpbmcoY29uc3QgY2hhciogbnVsbFRlcm1pbmF0ZWRTdHJpbmcp
CiAgICAgICAgIG1faW1wbCA9IFN0cmluZ0ltcGw6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNv
bnN0IExDaGFyKj4obnVsbFRlcm1pbmF0ZWRTdHJpbmcpKTsKIH0KIAotdm9pZCBTdHJpbmc6OmFw
cGVuZChjb25zdCBTdHJpbmcmIG90aGVyU3RyaW5nKQotewotICAgIC8vIEZJWE1FOiBUaGlzIGlz
IGV4dHJlbWVseSBpbmVmZmljaWVudC4gU28gbXVjaCBzbyB0aGF0IHdlIG1pZ2h0IHdhbnQgdG8g
dGFrZSB0aGlzIG91dCBvZiBTdHJpbmcncyBBUEkuCi0KLSAgICBpZiAoIW1faW1wbCkgewotICAg
ICAgICBtX2ltcGwgPSBvdGhlclN0cmluZy5tX2ltcGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBpZiAob3RoZXJTdHJpbmcuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBhdXRvIGxlbmd0aCA9IG1faW1wbC0+bGVuZ3RoKCk7Ci0gICAgYXV0byBvdGhlckxlbmd0aCA9
IG90aGVyU3RyaW5nLm1faW1wbC0+bGVuZ3RoKCk7Ci0gICAgaWYgKG90aGVyTGVuZ3RoID4gTWF4
TGVuZ3RoIC0gbGVuZ3RoKQotICAgICAgICBDUkFTSCgpOwotCi0gICAgaWYgKG1faW1wbC0+aXM4
Qml0KCkgJiYgb3RoZXJTdHJpbmcubV9pbXBsLT5pczhCaXQoKSkgewotICAgICAgICBMQ2hhciog
ZGF0YTsKLSAgICAgICAgYXV0byBuZXdJbXBsID0gU3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFs
aXplZChsZW5ndGggKyBvdGhlckxlbmd0aCwgZGF0YSk7Ci0gICAgICAgIFN0cmluZ0ltcGw6OmNv
cHlDaGFyYWN0ZXJzKGRhdGEsIG1faW1wbC0+Y2hhcmFjdGVyczgoKSwgbGVuZ3RoKTsKLSAgICAg
ICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoZGF0YSArIGxlbmd0aCwgb3RoZXJTdHJpbmcu
bV9pbXBsLT5jaGFyYWN0ZXJzOCgpLCBvdGhlckxlbmd0aCk7Ci0gICAgICAgIG1faW1wbCA9IFdU
Rk1vdmUobmV3SW1wbCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgVUNoYXIqIGRhdGE7
Ci0gICAgYXV0byBuZXdJbXBsID0gU3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFsaXplZChsZW5n
dGggKyBvdGhlckxlbmd0aCwgZGF0YSk7Ci0gICAgU3RyaW5nVmlldygqbV9pbXBsKS5nZXRDaGFy
YWN0ZXJzV2l0aFVwY29udmVydChkYXRhKTsKLSAgICBTdHJpbmdWaWV3KCpvdGhlclN0cmluZy5t
X2ltcGwpLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGRhdGEgKyBsZW5ndGgpOwotICAgIG1f
aW1wbCA9IFdURk1vdmUobmV3SW1wbCk7Ci19Ci0KLXZvaWQgU3RyaW5nOjphcHBlbmQoTENoYXIg
Y2hhcmFjdGVyKQotewotICAgIC8vIEZJWE1FOiBUaGlzIGlzIGV4dHJlbWVseSBpbmVmZmljaWVu
dC4gU28gbXVjaCBzbyB0aGF0IHdlIG1pZ2h0IHdhbnQgdG8gdGFrZSB0aGlzIG91dCBvZiBTdHJp
bmcncyBBUEkuCi0KLSAgICBpZiAoIW1faW1wbCkgewotICAgICAgICBtX2ltcGwgPSBTdHJpbmdJ
bXBsOjpjcmVhdGUoJmNoYXJhY3RlciwgMSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAg
aWYgKCFpczhCaXQoKSkgewotICAgICAgICBhcHBlbmQoc3RhdGljX2Nhc3Q8VUNoYXI+KGNoYXJh
Y3RlcikpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChtX2ltcGwtPmxlbmd0aCgp
ID49IE1heExlbmd0aCkKLSAgICAgICAgQ1JBU0goKTsKLSAgICBMQ2hhciogZGF0YTsKLSAgICBh
dXRvIG5ld0ltcGwgPSBTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRpYWxpemVkKG1faW1wbC0+bGVu
Z3RoKCkgKyAxLCBkYXRhKTsKLSAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhkYXRhLCBt
X2ltcGwtPmNoYXJhY3RlcnM4KCksIG1faW1wbC0+bGVuZ3RoKCkpOwotICAgIGRhdGFbbV9pbXBs
LT5sZW5ndGgoKV0gPSBjaGFyYWN0ZXI7Ci0gICAgbV9pbXBsID0gV1RGTW92ZShuZXdJbXBsKTsK
LX0KLQotdm9pZCBTdHJpbmc6OmFwcGVuZChVQ2hhciBjaGFyYWN0ZXIpCi17Ci0gICAgLy8gRklY
TUU6IFRoaXMgaXMgZXh0cmVtZWx5IGluZWZmaWNpZW50LiBTbyBtdWNoIHNvIHRoYXQgd2UgbWln
aHQgd2FudCB0byB0YWtlIHRoaXMgb3V0IG9mIFN0cmluZydzIEFQSS4KLQotICAgIGlmICghbV9p
bXBsKSB7Ci0gICAgICAgIG1faW1wbCA9IFN0cmluZ0ltcGw6OmNyZWF0ZSgmY2hhcmFjdGVyLCAx
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoaXNMYXRpbjEoY2hhcmFjdGVyKSAm
JiBpczhCaXQoKSkgewotICAgICAgICBhcHBlbmQoc3RhdGljX2Nhc3Q8TENoYXI+KGNoYXJhY3Rl
cikpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChtX2ltcGwtPmxlbmd0aCgpID49
IE1heExlbmd0aCkKLSAgICAgICAgQ1JBU0goKTsKLSAgICBVQ2hhciogZGF0YTsKLSAgICBhdXRv
IG5ld0ltcGwgPSBTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRpYWxpemVkKG1faW1wbC0+bGVuZ3Ro
KCkgKyAxLCBkYXRhKTsKLSAgICBTdHJpbmdWaWV3KCptX2ltcGwpLmdldENoYXJhY3RlcnNXaXRo
VXBjb252ZXJ0KGRhdGEpOwotICAgIGRhdGFbbV9pbXBsLT5sZW5ndGgoKV0gPSBjaGFyYWN0ZXI7
Ci0gICAgbV9pbXBsID0gV1RGTW92ZShuZXdJbXBsKTsKLX0KLQogaW50IGNvZGVQb2ludENvbXBh
cmUoY29uc3QgU3RyaW5nJiBhLCBjb25zdCBTdHJpbmcmIGIpCiB7CiAgICAgcmV0dXJuIGNvZGVQ
b2ludENvbXBhcmUoYS5pbXBsKCksIGIuaW1wbCgpKTsKQEAgLTE2Nyw3ICs5MywxMCBAQCB2b2lk
IFN0cmluZzo6aW5zZXJ0KGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25lZCBwb3NpdGlvbikK
ICAgICB9CiAKICAgICBpZiAocG9zaXRpb24gPj0gbGVuZ3RoKCkpIHsKLSAgICAgICAgYXBwZW5k
KHN0cmluZyk7CisgICAgICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCisgICAgICAgICAgICBhcHBl
bmQoc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5ndGgoKSk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIGFwcGVuZChzdHJpbmcuY2hhcmFjdGVyczE2KCksIHN0cmluZy5sZW5ndGgo
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE3NywxNCArMTA2LDE0IEBAIHZvaWQg
U3RyaW5nOjppbnNlcnQoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVuc2lnbmVkIHBvc2l0aW9uKQog
ICAgIGlmIChpczhCaXQoKSAmJiBzdHJpbmcuaXM4Qml0KCkpIHsKICAgICAgICAgTENoYXIqIGRh
dGE7CiAgICAgICAgIGF1dG8gbmV3U3RyaW5nID0gU3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFs
aXplZChsZW5ndGgoKSArIGxlbmd0aFRvSW5zZXJ0LCBkYXRhKTsKLSAgICAgICAgU3RyaW5nVmll
dygqbV9pbXBsKS5zdWJzdHJpbmcoMCwgcG9zaXRpb24pLmdldENoYXJhY3RlcnNXaXRoVXBjb252
ZXJ0KGRhdGEpOworICAgICAgICBTdHJpbmdWaWV3KCptX2ltcGwpLmxlZnQocG9zaXRpb24pLmdl
dENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGRhdGEpOwogICAgICAgICBTdHJpbmdWaWV3KHN0cmlu
ZykuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoZGF0YSArIHBvc2l0aW9uKTsKICAgICAgICAg
U3RyaW5nVmlldygqbV9pbXBsKS5zdWJzdHJpbmcocG9zaXRpb24pLmdldENoYXJhY3RlcnNXaXRo
VXBjb252ZXJ0KGRhdGEgKyBwb3NpdGlvbiArIGxlbmd0aFRvSW5zZXJ0KTsKICAgICAgICAgbV9p
bXBsID0gV1RGTW92ZShuZXdTdHJpbmcpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIFVDaGFyKiBk
YXRhOwogICAgICAgICBhdXRvIG5ld1N0cmluZyA9IFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlh
bGl6ZWQobGVuZ3RoKCkgKyBsZW5ndGhUb0luc2VydCwgZGF0YSk7Ci0gICAgICAgIFN0cmluZ1Zp
ZXcoKm1faW1wbCkuc3Vic3RyaW5nKDAsIHBvc2l0aW9uKS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29u
dmVydChkYXRhKTsKKyAgICAgICAgU3RyaW5nVmlldygqbV9pbXBsKS5sZWZ0KHBvc2l0aW9uKS5n
ZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChkYXRhKTsKICAgICAgICAgU3RyaW5nVmlldyhzdHJp
bmcpLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGRhdGEgKyBwb3NpdGlvbik7CiAgICAgICAg
IFN0cmluZ1ZpZXcoKm1faW1wbCkuc3Vic3RyaW5nKHBvc2l0aW9uKS5nZXRDaGFyYWN0ZXJzV2l0
aFVwY29udmVydChkYXRhICsgcG9zaXRpb24gKyBsZW5ndGhUb0luc2VydCk7CiAgICAgICAgIG1f
aW1wbCA9IFdURk1vdmUobmV3U3RyaW5nKTsKQEAgLTI0NCw3ICsxNzMsNyBAQCB2b2lkIFN0cmlu
Zzo6YXBwZW5kKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzVG9BcHBlbmQsIHVuc2lnbmVkIGxlbmd0
aFRvQXBwZW5kKQogICAgICAgICByZXR1cm47CiAKICAgICB1bnNpZ25lZCBzdHJMZW5ndGggPSBt
X2ltcGwtPmxlbmd0aCgpOwotICAgIAorCiAgICAgQVNTRVJUKGNoYXJhY3RlcnNUb0FwcGVuZCk7
CiAgICAgaWYgKGxlbmd0aFRvQXBwZW5kID4gTWF4TGVuZ3RoIC0gc3RyTGVuZ3RoKQogICAgICAg
ICBDUkFTSCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaCBi
L1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKaW5kZXggYjY0OTcwOTgwYWJlM2YzYzc5
Yjk0MmZhMDgyNjU2NjNjZTgyOWJkNS4uMDFiOGM0MDJkYWE3ZTIzNzFiMjkwYTFkMDRmNzg5YzU1
YTJhZmNmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCkBAIC0xOTAsMTIgKzE5MCw2IEBAIHB1
YmxpYzoKICAgICBib29sIGVuZHNXaXRoKGNoYXIgY2hhcmFjdGVyKSBjb25zdCB7IHJldHVybiBl
bmRzV2l0aChzdGF0aWNfY2FzdDxVQ2hhcj4oY2hhcmFjdGVyKSk7IH0KICAgICBib29sIGhhc0lu
Zml4RW5kaW5nQXQoU3RyaW5nVmlldyBzdWZmaXgsIHVuc2lnbmVkIGVuZCkgY29uc3Q7CiAKLSAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBlbmQoY29uc3QgU3RyaW5nJik7Ci0gICAgV1RG
X0VYUE9SVF9QUklWQVRFIHZvaWQgYXBwZW5kKExDaGFyKTsKLSAgICB2b2lkIGFwcGVuZChjaGFy
IGNoYXJhY3RlcikgeyBhcHBlbmQoc3RhdGljX2Nhc3Q8TENoYXI+KGNoYXJhY3RlcikpOyB9Owot
ICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGFwcGVuZChVQ2hhcik7Ci0gICAgV1RGX0VYUE9S
VF9QUklWQVRFIHZvaWQgYXBwZW5kKGNvbnN0IExDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKLSAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBlbmQoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBs
ZW5ndGgpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGluc2VydChjb25zdCBTdHJpbmcm
LCB1bnNpZ25lZCBwb3NpdGlvbik7CiAKICAgICBTdHJpbmcmIHJlcGxhY2UoVUNoYXIgdGFyZ2V0
LCBVQ2hhciByZXBsYWNlbWVudCk7CkBAIC0zMzgsNiArMzMyLDEwIEBAIHB1YmxpYzoKIHByaXZh
dGU6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCByZW1vdmVJbnRl
cm5hbChjb25zdCBDaGFyYWN0ZXJUeXBlKiwgdW5zaWduZWQsIHVuc2lnbmVkKTsKIAorICAgIC8v
IEZJWE1FOiBPbmx5IHVzZWQgYnkgaW5zZXJ0KCksIHdlIHNob3VsZCBjb25zaWRlciBkcm9wcGlu
ZyB0aGVtLgorICAgIHZvaWQgYXBwZW5kKGNvbnN0IExDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsK
KyAgICB2b2lkIGFwcGVuZChjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CisKICAgICB0
ZW1wbGF0ZTxib29sIGFsbG93RW1wdHlFbnRyaWVzPiB2b2lkIHNwbGl0SW50ZXJuYWwoVUNoYXIg
c2VwYXJhdG9yLCBjb25zdCBTcGxpdEZ1bmN0b3ImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxib29s
IGFsbG93RW1wdHlFbnRyaWVzPiBWZWN0b3I8U3RyaW5nPiBzcGxpdEludGVybmFsKFVDaGFyIHNl
cGFyYXRvcikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Ym9vbCBhbGxvd0VtcHR5RW50cmllcz4gVmVj
dG9yPFN0cmluZz4gc3BsaXRJbnRlcm5hbChTdHJpbmdWaWV3IHNlcGFyYXRvcikgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3Bw
CmluZGV4IDMyZWExZDQ5ZjdkZmU0YTIwMGQ5ZTVjMGM1ODM3MjYwN2I1ZGQyMDEuLjAzZTAxODJk
MzkyMTc4YWM2N2E0NmE1NTk0NzBmZjY1NzJkOTRlNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCkBAIC0xMTMsNyArMTEzLDcg
QEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWltZVR5cGU+IHBhcnNlTUlNRVR5cGUoY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSkKICAgICBpZiAoc2xhc2hJbmRleCA9PSBub3RGb3VuZCkKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIFN0cmluZyB0eXBlID0gaW5wdXQuc3Vic3Ry
aW5nKDAsIHNsYXNoSW5kZXgpOworICAgIFN0cmluZyB0eXBlID0gaW5wdXQubGVmdChzbGFzaElu
ZGV4KTsKICAgICBpZiAoIXR5cGUubGVuZ3RoKCkgfHwgIWlzVmFsaWRIVFRQVG9rZW4odHlwZSkp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcAppbmRleCBlNDM4MmIzZDM0YTI5NDc1ODBk
N2Q3OTBjYTQ0NWZlMDk1NmQyNTQxLi4wZTZjZDViMzFkNjNmM2YxOTJiMTAxNmFmMjQ0ZTE4ZWNj
ZjVhZDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJD
dXJzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNv
ci5jcHAKQEAgLTMyNiw3ICszMjYsNyBAQCBFeGNlcHRpb25PcjxSZWY8V2ViQ29yZTo6SURCUmVx
dWVzdD4+IElEQkN1cnNvcjo6ZGVsZXRlRnVuY3Rpb24oKQogCiBib29sIElEQkN1cnNvcjo6c2V0
R2V0UmVzdWx0KElEQlJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IElEQkdldFJlc3VsdCYgZ2V0UmVz
dWx0LCB1aW50NjRfdCBvcGVyYXRpb25JRCkKIHsKLSAgICBMT0coSW5kZXhlZERCLCAiSURCQ3Vy
c29yOjpzZXRHZXRSZXN1bHQgLSBjdXJyZW50IGtleSAlcyIsIGdldFJlc3VsdC5rZXlEYXRhKCku
bG9nZ2luZ1N0cmluZygpLnN1YnN0cmluZygwLCAxMDApLnV0ZjgoKS5kYXRhKCkpOworICAgIExP
RyhJbmRleGVkREIsICJJREJDdXJzb3I6OnNldEdldFJlc3VsdCAtIGN1cnJlbnQga2V5ICVzIiwg
Z2V0UmVzdWx0LmtleURhdGEoKS5sb2dnaW5nU3RyaW5nKCkubGVmdCgxMDApLnV0ZjgoKS5kYXRh
KCkpOwogICAgIEFTU0VSVChjYW5DdXJyZW50VGhyZWFkQWNjZXNzVGhyZWFkTG9jYWxEYXRhKGVm
ZmVjdGl2ZU9iamVjdFN0b3JlKCkudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVh
ZCgpKSk7CiAKICAgICBhdXRvKiBjb250ZXh0ID0gcmVxdWVzdC5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJL
ZXlEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleURhdGEu
Y3BwCmluZGV4IDQ2MGYxNzRhMzgxYWI2YWJhNGNhMjk4MzE0NTI2OThiNWQ1MjkwZDAuLjg1YjE3
ODJhYmViZjY3ZTE2M2NiNmNlOWQzM2I0NzkwYmYwNGJhZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleURhdGEuY3BwCkBAIC0zNzEsMTAgKzM3MSw4IEBA
IFN0cmluZyBJREJLZXlEYXRhOjpsb2dnaW5nU3RyaW5nKCkgY29uc3QKICAgICAgICAgcmV0dXJu
ICI8bWluaW11bT4iX3M7CiAgICAgfQogCi0gICAgaWYgKHJlc3VsdC5sZW5ndGgoKSA+IDE1MCkg
ewotICAgICAgICByZXN1bHQudHJ1bmNhdGUoMTQ3KTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZCgi
Li4uIl9zKTsKLSAgICB9CisgICAgaWYgKHJlc3VsdC5sZW5ndGgoKSA+IDE1MCkKKyAgICAgICAg
cmVzdWx0ID0gbWFrZVN0cmluZyhTdHJpbmdWaWV3KHJlc3VsdCkubGVmdCgxNDcpLCAiLi4uIl9z
KTsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJLZXlQYXRoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQktleVBhdGguY3BwCmluZGV4IGM4MjkxMTZlNjQ0NzU2Y2I3NjYxZDZjZThl
ZjY3ZjY1MjliYTkzMmMuLmJkMDA4YTFlMDczM2QyMzMyMTMxZDc3Yjk4MTZhNmZmZDI5NWY1OTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVBhdGgu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVBhdGguY3Bw
CkBAIC0xMTUsNyArMTE1LDcgQEAgSURCS2V5UGF0aExleGVyOjpUb2tlblR5cGUgSURCS2V5UGF0
aExleGVyOjpsZXhJZGVudGlmaWVyKFN0cmluZyYgZWxlbWVudCkKICAgICB3aGlsZSAoIW1fcmVt
YWluaW5nVGV4dC5pc0VtcHR5KCkgJiYgaXNJZGVudGlmaWVyQ2hhcmFjdGVyKG1fcmVtYWluaW5n
VGV4dFswXSkpCiAgICAgICAgIG1fcmVtYWluaW5nVGV4dCA9IG1fcmVtYWluaW5nVGV4dC5zdWJz
dHJpbmcoMSk7CiAKLSAgICBlbGVtZW50ID0gc3RhcnQuc3Vic3RyaW5nKDAsIHN0YXJ0Lmxlbmd0
aCgpIC0gbV9yZW1haW5pbmdUZXh0Lmxlbmd0aCgpKS50b1N0cmluZygpOworICAgIGVsZW1lbnQg
PSBzdGFydC5sZWZ0KHN0YXJ0Lmxlbmd0aCgpIC0gbV9yZW1haW5pbmdUZXh0Lmxlbmd0aCgpKS50
b1N0cmluZygpOwogICAgIHJldHVybiBUb2tlbklkZW50aWZpZXI7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVJhbmdlRGF0YS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZURhdGEuY3BwCmluZGV4
IDdjMmE4MWUyNDY0ZDRhYzZmNjkxZjZmN2FjZjliNmJhYWNiZTIxNTQuLjk0MzUxYWEyMDhmOTY4
MTQ0MGE3MWMxOTlkNjVkM2M5OGU5ZWQ5Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQktleVJhbmdlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UmFuZ2VEYXRhLmNwcApAQCAtMTExLDEwICsxMTEsOCBA
QCBib29sIElEQktleVJhbmdlRGF0YTo6aXNWYWxpZCgpIGNvbnN0CiBTdHJpbmcgSURCS2V5UmFu
Z2VEYXRhOjpsb2dnaW5nU3RyaW5nKCkgY29uc3QKIHsKICAgICBhdXRvIHJlc3VsdCA9IG1ha2VT
dHJpbmcobG93ZXJPcGVuID8gIiggIiA6ICJbICIsIGxvd2VyS2V5LmxvZ2dpbmdTdHJpbmcoKSwg
IiwgIiwgdXBwZXJLZXkubG9nZ2luZ1N0cmluZygpLCB1cHBlck9wZW4gPyAiICkiIDogIiBdIik7
Ci0gICAgaWYgKHJlc3VsdC5sZW5ndGgoKSA+IDQwMCkgewotICAgICAgICByZXN1bHQudHJ1bmNh
dGUoMzk3KTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZCgiLi4uIl9zKTsKLSAgICB9CisgICAgaWYg
KHJlc3VsdC5sZW5ndGgoKSA+IDQwMCkKKyAgICAgICAgcmVzdWx0ID0gbWFrZVN0cmluZyhTdHJp
bmdWaWV3KHJlc3VsdCkubGVmdCgzOTcpLCAiLi4uIl9zKTsKIAogICAgIHJldHVybiByZXN1bHQ7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQv
SURCSW5kZXhJbmZvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJl
ZC9JREJJbmRleEluZm8uY3BwCmluZGV4IDdhYmE4MzFkNzAwZWE5OGZlYjJjYzlhYTQ0Yzk2MmM0
YjU5NDQ3YjkuLjYwNDU0ZDVmZTVhNjI1NzA4MzhiNTM3NTMwMWZhNzVkNGRlM2M4OTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJJbmRleElu
Zm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJJ
bmRleEluZm8uY3BwCkBAIC01OSwxMCArNTksMTAgQEAgSURCSW5kZXhJbmZvIElEQkluZGV4SW5m
bzo6aXNvbGF0ZWRDb3B5KCkgJiYKIAogU3RyaW5nIElEQkluZGV4SW5mbzo6bG9nZ2luZ1N0cmlu
ZyhpbnQgaW5kZW50KSBjb25zdAogewotICAgIFN0cmluZyBpbmRlbnRTdHJpbmc7CisgICAgU3Ry
aW5nQnVpbGRlciBpbmRlbnRTdHJpbmc7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBpbmRlbnQ7
ICsraSkKICAgICAgICAgaW5kZW50U3RyaW5nLmFwcGVuZCgnICcpOwotICAgIHJldHVybiBtYWtl
U3RyaW5nKGluZGVudFN0cmluZywgIkluZGV4OiAiLCBtX25hbWUsICIgKCIsIG1faWRlbnRpZmll
ciwgIikga2V5UGF0aDogIiwgV2ViQ29yZTo6bG9nZ2luZ1N0cmluZyhtX2tleVBhdGgpLCAnXG4n
KTsKKyAgICByZXR1cm4gbWFrZVN0cmluZyhpbmRlbnRTdHJpbmcudG9TdHJpbmcoKSwgIkluZGV4
OiAiLCBtX25hbWUsICIgKCIsIG1faWRlbnRpZmllciwgIikga2V5UGF0aDogIiwgV2ViQ29yZTo6
bG9nZ2luZ1N0cmluZyhtX2tleVBhdGgpLCAnXG4nKTsKIH0KIAogU3RyaW5nIElEQkluZGV4SW5m
bzo6Y29uZGVuc2VkTG9nZ2luZ1N0cmluZygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAK
aW5kZXggMWMwMzQ1N2VkZjg4N2Y3NTk5N2M0NDQ1ZjBkMzRiZmFkYTIxN2IwZC4uNzVjMGEwOTc1
MTg1MWUwZWYxMzllZjRjNDc1OTQ1M2M1ZjIyNDZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNw
cApAQCAtMjk5LDcgKzI5OSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRJZ25vcmVJY2VD
YW5kaWRhdGUoY29uc3QgUlRDSWNlQ2FuZGlkYXRlJiBpY2VDYW5kaWRhdGUpCiAgICAgaWYgKCFh
ZGRyZXNzLmVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoIi5sb2NhbCIpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICBpZiAoIVdURjo6aXNWZXJzaW9uNFVVSUQoU3RyaW5nVmlldyB7IGFk
ZHJlc3MgfS5zdWJzdHJpbmcoMCwgYWRkcmVzcy5sZW5ndGgoKSAtIDYpKSkgeworICAgIGlmICgh
V1RGOjppc1ZlcnNpb240VVVJRChTdHJpbmdWaWV3IHsgYWRkcmVzcyB9LmxlZnQoYWRkcmVzcy5s
ZW5ndGgoKSAtIDYpKSkgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihXZWJSVEMsICJtRE5T
IGNhbmRpZGF0ZSBpcyBub3QgYSBWZXJzaW9uIDQgVVVJRCIpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ0RUTUZTZW5kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENEVE1GU2VuZGVyLmNwcAppbmRleCBhYzY2YzVlYWMzNzhjMjk3NjNhZTQyMzU1ZmNiMzdlYjJm
NDFiNWNlLi5hM2I2MWVjMGNlNWMwMTU0ZGI1OWZkNzcwNzM2ZmZiYTU0MTNjODllIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZTZW5kZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlci5j
cHAKQEAgLTEyNiw3ICsxMjYsNyBAQCB2b2lkIFJUQ0RUTUZTZW5kZXI6OnBsYXlOZXh0VG9uZSgp
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGN1cnJlbnRUb25lID0gbV90b25l
cy5zdWJzdHJpbmcoMCwgMSk7CisgICAgYXV0byBjdXJyZW50VG9uZSA9IG1fdG9uZXMubGVmdCgx
KTsKICAgICBtX3RvbmVzLnJlbW92ZSgwKTsKIAogICAgIG1fYmFja2VuZC0+cGxheVRvbmUoY3Vy
cmVudFRvbmUsIG1fZHVyYXRpb24sIG1faW50ZXJUb25lR2FwKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhRW5k
cG9pbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
R1N0cmVhbWVyTWVkaWFFbmRwb2ludC5jcHAKaW5kZXggZTE2NDcwYjhhNDI5ZDNhODUyYzRkN2Ji
MWI2NWYxZWI0M2EwMjU3Zi4uMWY5YTdmNWNmMmEyMTRmZWI5MTQwZTRhMGU1MTI5OTIxZmIyODU1
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFt
ZXIvR1N0cmVhbWVyTWVkaWFFbmRwb2ludC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFFbmRwb2ludC5jcHAKQEAgLTc0
MCw3ICs3NDAsNyBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OmFkZFJlbW90ZVN0cmVh
bShHc3RQYWQqIHBhZCkKICAgICAgICAgYXV0byBpID0gbGluZS5maW5kKGtleSk7CiAgICAgICAg
IGlmIChpICE9IG5vdEZvdW5kKSB7CiAgICAgICAgICAgICBhdXRvIHRtcCA9IGxpbmUuc3Vic3Ry
aW5nKGkgKyBrZXkuYXNjaWkoKS5sZW5ndGgoKSk7Ci0gICAgICAgICAgICBsYWJlbCA9IHRtcC5z
dWJzdHJpbmcoMCwgdG1wLmZpbmQoJyAnKSk7CisgICAgICAgICAgICBsYWJlbCA9IHRtcC5sZWZ0
KHRtcC5maW5kKCcgJykpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNw
cAppbmRleCA0MTc2ZThkNmY3ODNhNTI1YTgwZjdhNjBlYWRjNjdmNmJmZDcwMTZjLi45NDkzN2Yw
NGRiOGMzYjRkZDViZDgxZjU0M2ZmMTAwZjRmN2ZlYjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBUcmFuc2NlaXZl
ckJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGli
d2VicnRjL0xpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZC5jcHAKQEAgLTEwMCw3ICsxMDAs
NyBAQCBzdGF0aWMgaW5saW5lIEV4Y2VwdGlvbk9yPHdlYnJ0Yzo6UnRwQ29kZWNDYXBhYmlsaXR5
PiB0b1J0cENvZGVjQ2FwYWJpbGl0eShjb25zdAogICAgICAgICBhdXRvIHBvc2l0aW9uID0gcGFy
YW1ldGVyLmZpbmQoJz0nKTsKICAgICAgICAgaWYgKHBvc2l0aW9uID09IG5vdEZvdW5kKQogICAg
ICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRNb2RpZmljYXRpb25FcnJvciwgIlJU
Q1J0cENvZGVjQ2FwYWJpbGl0eSBzZHBGbXRMaW5lIGJhZGx5IGZvcm1hdGVkIl9zIH07Ci0gICAg
ICAgIHJ0Y0NvZGVjLnBhcmFtZXRlcnMuZW1wbGFjZShwYXJhbWV0ZXIuc3Vic3RyaW5nKDAsIHBv
c2l0aW9uKS51dGY4KCkuZGF0YSgpLCBwYXJhbWV0ZXIuc3Vic3RyaW5nKHBvc2l0aW9uICsgMSku
dXRmOCgpLmRhdGEoKSk7CisgICAgICAgIHJ0Y0NvZGVjLnBhcmFtZXRlcnMuZW1wbGFjZShwYXJh
bWV0ZXIubGVmdChwb3NpdGlvbikudXRmOCgpLmRhdGEoKSwgcGFyYW1ldGVyLnN1YnN0cmluZyhw
b3NpdGlvbiArIDEpLnV0ZjgoKS5kYXRhKCkpOwogICAgIH0KIAogICAgIHJldHVybiBydGNDb2Rl
YzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1
Z2luUmVwbGFjZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1lvdVR1
YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAKaW5kZXggODU3YzljMjRiYjhkZTQ2MGUyYzI3NWY5MmYz
OGExMjBiMDIwM2M1ZS4uY2JhZjQ2ZjBlZTVmZTdlNDA5MDVhNDk2ZGFkODdlNGU5ZmE5YWEyYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVnaW5S
ZXBsYWNlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1lvdVR1
YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAKQEAgLTIyMiw3ICsyMjIsNyBAQCBzdGF0aWMgVVJMIHBy
b2Nlc3NBbmRDcmVhdGVZb3VUdWJlVVJMKGNvbnN0IFVSTCYgdXJsLCBib29sJiBpc1lvdVR1YmVT
aG9ydGVuZWRVUgogICAgICAgICAgICAgcGF0aCA9IGZyYWdtZW50OwogICAgICAgICAgICAgcXVl
cnkgPSBlbXB0eVN0cmluZygpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcGF0aCA9
IGZyYWdtZW50LnN1YnN0cmluZygwLCBsb2NhdGlvbik7CisgICAgICAgICAgICBwYXRoID0gZnJh
Z21lbnQubGVmdChsb2NhdGlvbik7CiAgICAgICAgICAgICBxdWVyeSA9IGZyYWdtZW50LnN1YnN0
cmluZyhsb2NhdGlvbiArIDEpOwogICAgICAgICB9CiAgICAgICAgIGZyYWdtZW50ID0gZW1wdHlT
dHJpbmcoKTsKQEAgLTI2Miw3ICsyNjIsNyBAQCBzdGF0aWMgVVJMIHByb2Nlc3NBbmRDcmVhdGVZ
b3VUdWJlVVJMKGNvbnN0IFVSTCYgdXJsLCBib29sJiBpc1lvdVR1YmVTaG9ydGVuZWRVUgogICAg
ICAgICBzaXplX3QgYW1wZXJzYW5kTG9jYXRpb24gPSBsYXN0UGF0aENvbXBvbmVudC5maW5kKCcm
Jyk7CiAgICAgICAgIGlmIChhbXBlcnNhbmRMb2NhdGlvbiAhPSBub3RGb3VuZCkgewogICAgICAg
ICAgICAgLy8gU29tZSBVUkxzIHdlIGNhcmUgYWJvdXQgdXNlICYgaW4gcGxhY2Ugb2YgPyBmb3Ig
dGhlIGZpcnN0IHF1ZXJ5IHBhcmFtZXRlci4KLSAgICAgICAgICAgIHZpZGVvSUQgPSBsYXN0UGF0
aENvbXBvbmVudC5zdWJzdHJpbmcoMCwgYW1wZXJzYW5kTG9jYXRpb24pOworICAgICAgICAgICAg
dmlkZW9JRCA9IGxhc3RQYXRoQ29tcG9uZW50LmxlZnQoYW1wZXJzYW5kTG9jYXRpb24pOwogICAg
ICAgICAgICAgcGF0aEFmdGVyRmlyc3RBbXBlcnNhbmQgPSBsYXN0UGF0aENvbXBvbmVudC5zdWJz
dHJpbmcoYW1wZXJzYW5kTG9jYXRpb24gKyAxLCBsYXN0UGF0aENvbXBvbmVudC5sZW5ndGgoKSAt
IGFtcGVyc2FuZExvY2F0aW9uKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICB2aWRlb0lE
ID0gbGFzdFBhdGhDb21wb25lbnQ7CkBAIC0zMDQsNyArMzA0LDcgQEAgU3RyaW5nIFlvdVR1YmVQ
bHVnaW5SZXBsYWNlbWVudDo6eW91VHViZVVSTEZyb21BYnNvbHV0ZVVSTChjb25zdCBVUkwmIHNy
Y1VSTCwgY28KICAgICAgICAgQVNTRVJUKGxvY2F0aW9uT2ZWaWRlb0lESW5QYXRoKTsKICAgICAK
ICAgICAgICAgLy8gRnJvbSB0aGUgb3JpZ2luYWwgVVJMLCB3ZSBuZWVkIHRvIGdldCB0aGUgcGFy
dCBiZWZvcmUgL3BhdGgvVmlkZW9JZC4KLSAgICAgICAgbG9jYXRpb25PZlBhdGhCZWZvcmVWaWRl
b0lEID0gU3RyaW5nVmlldyhzcmNTdHJpbmcpLmZpbmQoc3JjUGF0aC5zdWJzdHJpbmcoMCwgbG9j
YXRpb25PZlZpZGVvSURJblBhdGgpKTsKKyAgICAgICAgbG9jYXRpb25PZlBhdGhCZWZvcmVWaWRl
b0lEID0gU3RyaW5nVmlldyhzcmNTdHJpbmcpLmZpbmQoc3JjUGF0aC5sZWZ0KGxvY2F0aW9uT2ZW
aWRlb0lESW5QYXRoKSk7CiAgICAgfSBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShzcmNQYXRoLCAiL3dhdGNoIikpIHsKICAgICAgICAgLy8gRnJvbSB0aGUgb3JpZ2luYWwg
VVJMLCB3ZSBuZWVkIHRvIGdldCB0aGUgcGFydCBiZWZvcmUgL3dhdGNoLyMhdj1WaWRlb0lECiAg
ICAgICAgIC8vIEZJWE1FOiBTaG91bGRuJ3QgdGhpcyBiZSBBU0NJSSBjYXNlLWluc2Vuc2l0aXZl
PwpAQCAtMzE0LDcgKzMxNCw3IEBAIFN0cmluZyBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQ6Onlv
dVR1YmVVUkxGcm9tQWJzb2x1dGVVUkwoY29uc3QgVVJMJiBzcmNVUkwsIGNvCiAKICAgICBBU1NF
UlQobG9jYXRpb25PZlBhdGhCZWZvcmVWaWRlb0lEICE9IG5vdEZvdW5kKTsKIAotICAgIGF1dG8g
c3JjVVJMUHJlZml4ID0gU3RyaW5nVmlldyhzcmNTdHJpbmcpLnN1YnN0cmluZygwLCBsb2NhdGlv
bk9mUGF0aEJlZm9yZVZpZGVvSUQpOworICAgIGF1dG8gc3JjVVJMUHJlZml4ID0gU3RyaW5nVmll
dyhzcmNTdHJpbmcpLmxlZnQobG9jYXRpb25PZlBhdGhCZWZvcmVWaWRlb0lEKTsKICAgICBhdXRv
IHF1ZXJ5ID0gc3JjVVJMLnF1ZXJ5KCk7CiAKICAgICAvLyBJZiB0aGUgVVJMIGhhcyBubyBxdWVy
eSwgdXNlIHRoZSBwb3NzaWJseSBtYWxmb3JtZWQgcXVlcnkgd2UgZm91bmQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2Uu
Y3BwCmluZGV4IGMzMDdhYzMzZTNhMWYwYzYxNzMwOWQwYzM4NThhMDRiN2Q5NTM5MTMuLjk4YjU2
OGNiMGVmMGQyMjdkNWRlYzZiYjVlZDJiZGUxYThjYmMyOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCkBA
IC04MywxMyArODMsMTIgQEAgc3RhdGljIFN0cmluZyBob3N0TmFtZShjb25zdCBVUkwmIHVybCwg
Ym9vbCBzZWN1cmUpCiAgICAgcmV0dXJuIGhvc3Q7CiB9CiAKLXN0YXRpYyBjb25zdCBzaXplX3Qg
bWF4SW5wdXRTYW1wbGVTaXplID0gMTI4Owotc3RhdGljIFN0cmluZyB0cmltSW5wdXRTYW1wbGUo
Y29uc3QgdWludDhfdCogcCwgc2l6ZV90IGxlbikKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1h
eElucHV0U2FtcGxlU2l6ZSA9IDEyODsKK3N0YXRpYyBTdHJpbmcgdHJpbUlucHV0U2FtcGxlKGNv
bnN0IHVpbnQ4X3QqIHAsIHNpemVfdCBsZW5ndGgpCiB7Ci0gICAgU3RyaW5nIHMgPSBTdHJpbmco
cCwgc3RkOjptaW48c2l6ZV90PihsZW4sIG1heElucHV0U2FtcGxlU2l6ZSkpOwotICAgIGlmIChs
ZW4gPiBtYXhJbnB1dFNhbXBsZVNpemUpCi0gICAgICAgIHMuYXBwZW5kKGhvcml6b250YWxFbGxp
cHNpcyk7Ci0gICAgcmV0dXJuIHM7CisgICAgaWYgKGxlbmd0aCA8PSBtYXhJbnB1dFNhbXBsZVNp
emUpCisgICAgICAgIHJldHVybiBTdHJpbmcocCwgbGVuZ3RoKTsKKyAgICByZXR1cm4gbWFrZVN0
cmluZyhTdHJpbmdWaWV3KHAsIGxlbmd0aCkubGVmdChtYXhJbnB1dFNhbXBsZVNpemUpLCBob3Jp
em9udGFsRWxsaXBzaXMpOwogfQogCiBzdGF0aWMgU3RyaW5nIGdlbmVyYXRlU2VjV2ViU29ja2V0
S2V5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0
cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
c29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAKaW5kZXggZGUyODUyMjYwOGRmMWI5YWY5
M2NkN2U5NGU4MzhkMzI0NTA3YmEwMC4uMWUxZjIzNTMwNzU2YTEwZTRiNDRjMTZhZWIxNTdhYWM0
ZjE3ZTY4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRl
ZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAKQEAgLTM1NSwxMiArMzU1LDEy
IEBAIHZvaWQgQVhJc29sYXRlZE9iamVjdDo6aW5pdGlhbGl6ZUF0dHJpYnV0ZURhdGEoQVhDb3Jl
T2JqZWN0JiBjb3JlT2JqZWN0LCBib29sIGlzCiAKICAgICBWZWN0b3I8U3RyaW5nPiBjbGFzc0xp
c3Q7CiAgICAgb2JqZWN0LmNsYXNzTGlzdChjbGFzc0xpc3QpOwotICAgIFN0cmluZyBjb21iaW5l
ZENsYXNzTGlzdDsKKyAgICBTdHJpbmdCdWlsZGVyIGNvbWJpbmVkQ2xhc3NMaXN0OwogICAgIGZv
ciAoYXV0byBpdCA9IGNsYXNzTGlzdC5iZWdpbigpLCBlbmQgPSBjbGFzc0xpc3QuZW5kKCk7IGl0
ICE9IGVuZDsgKytpdCkgewogICAgICAgICBjb21iaW5lZENsYXNzTGlzdC5hcHBlbmQoKml0KTsK
LSAgICAgICAgY29tYmluZWRDbGFzc0xpc3QuYXBwZW5kKCIgIl9zKTsKKyAgICAgICAgY29tYmlu
ZWRDbGFzc0xpc3QuYXBwZW5kKCcgJyk7CiAgICAgfQotICAgIHNldFByb3BlcnR5KEFYUHJvcGVy
dHlOYW1lOjpDbGFzc0xpc3QsIGNvbWJpbmVkQ2xhc3NMaXN0KTsKKyAgICBzZXRQcm9wZXJ0eShB
WFByb3BlcnR5TmFtZTo6Q2xhc3NMaXN0LCBjb21iaW5lZENsYXNzTGlzdC50b1N0cmluZygpKTsK
IAogICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpDb2xvclZhbHVlLCBvYmplY3QuY29s
b3JWYWx1ZSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlz
cGxheVRleHRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheVRleHRC
b3guY3BwCmluZGV4IGU1ODBjMzRiODgxZWE0ODEyYTI1MmMxMDY1MzhkMzI5NTEyMjA0MjAuLjVj
YTgyMjM1NmQ1M2JmZmFkZTVhZTE0ZWU1NzY1YTVlN2I1NTJlMmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlUZXh0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5VGV4dEJveC5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgU3Ry
aW5nIFRleHRCb3g6OmRlYnVnRGVzY3JpcHRpb24oKSBjb25zdAogICAgIHRleHRDb250ZW50LnJl
cGxhY2VXaXRoTGl0ZXJhbCgnXG4nLCAiXFxuIik7CiAgICAgY29uc3Qgc2l6ZV90IG1heFByaW50
ZWRMZW5ndGggPSA4MDsKICAgICBpZiAodGV4dENvbnRlbnQubGVuZ3RoKCkgPiBtYXhQcmludGVk
TGVuZ3RoKSB7Ci0gICAgICAgIGF1dG8gc3Vic3RyaW5nID0gdGV4dENvbnRlbnQuc3Vic3RyaW5n
KDAsIG1heFByaW50ZWRMZW5ndGgpOworICAgICAgICBhdXRvIHN1YnN0cmluZyA9IHRleHRDb250
ZW50LmxlZnQobWF4UHJpbnRlZExlbmd0aCk7CiAgICAgICAgIHN0cmVhbSA8PCAiIFwiIiA8PCBz
dWJzdHJpbmcgPDwgIlwi4oCmIjsKICAgICB9IGVsc2UKICAgICAgICAgc3RyZWFtIDw8ICIgXCIi
IDw8IHRleHRDb250ZW50IDw8ICJcIiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Q2hhcmFjdGVyRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAK
aW5kZXggM2M2NDA4Yzg2ZTRiYzA2OGQzMTIzZjkwN2QxNTk1ZjFlMzM3MzgyZS4uOTc1NTJlYWYx
MmVjNDQwZDk5YjhkMmJjOTg1YzZhYjc5ZGNmOGFhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0
ZXJEYXRhLmNwcApAQCAtMTEzLDEwICsxMTMsNyBAQCB1bnNpZ25lZCBDaGFyYWN0ZXJEYXRhOjpw
YXJzZXJBcHBlbmREYXRhKGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25lZCBvZmZzZXQsCiAg
ICAgICAgIHN0eWxlSW52YWxpZGF0aW9uLmVtcGxhY2UoKnBhcmVudCwgY2hpbGRDaGFuZ2UpOwog
CiAgICAgU3RyaW5nIG9sZERhdGEgPSBtX2RhdGE7Ci0gICAgaWYgKHN0cmluZy5pczhCaXQoKSkK
LSAgICAgICAgbV9kYXRhLmFwcGVuZChzdHJpbmcuY2hhcmFjdGVyczgoKSArIG9mZnNldCwgY2hh
cmFjdGVyTGVuZ3RoTGltaXQpOwotICAgIGVsc2UKLSAgICAgICAgbV9kYXRhLmFwcGVuZChzdHJp
bmcuY2hhcmFjdGVyczE2KCkgKyBvZmZzZXQsIGNoYXJhY3Rlckxlbmd0aExpbWl0KTsKKyAgICBt
X2RhdGEgPSBtYWtlU3RyaW5nKG1fZGF0YSwgU3RyaW5nVmlldyhzdHJpbmcpLnN1YnN0cmluZyhv
ZmZzZXQsIGNoYXJhY3Rlckxlbmd0aExpbWl0KSk7CiAKICAgICBBU1NFUlQoIXJlbmRlcmVyKCkg
fHwgaXM8VGV4dD4oKnRoaXMpKTsKICAgICBpZiAoYXV0byB0ZXh0ID0gZHluYW1pY0Rvd25jYXN0
PFRleHQ+KCp0aGlzKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDM4MDFiZWQzY2YyMjVi
YWIxODJhYmNhOTNmYjk3MWU4YmQ5NjY0ZTIuLjIxZWZjZGM1Y2Q0ZTNiMTYwN2QxNDAzMzA5Yjg0
YzNhOWRhZmM0NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNTU2OSw3ICs1NTY5LDcg
QEAgRXhjZXB0aW9uT3I8c3RkOjpwYWlyPEF0b21TdHJpbmcsIEF0b21TdHJpbmc+PiBEb2N1bWVu
dDo6cGFyc2VRdWFsaWZpZWROYW1lKGNvbnMKICAgICBpZiAoIWNvbG9uUG9zaXRpb24gfHwgbGVu
Z3RoIC0gY29sb25Qb3NpdGlvbiA8PSAxKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52
YWxpZENoYXJhY3RlckVycm9yIH07CiAKLSAgICByZXR1cm4gc3RkOjpwYWlyPEF0b21TdHJpbmcs
IEF0b21TdHJpbmc+IHsgU3RyaW5nVmlldyB7IHF1YWxpZmllZE5hbWUgfS5zdWJzdHJpbmcoMCwg
Y29sb25Qb3NpdGlvbikudG9BdG9tU3RyaW5nKCksIFN0cmluZ1ZpZXcgeyBxdWFsaWZpZWROYW1l
IH0uc3Vic3RyaW5nKGNvbG9uUG9zaXRpb24gKyAxKS50b0F0b21TdHJpbmcoKSB9OworICAgIHJl
dHVybiBzdGQ6OnBhaXI8QXRvbVN0cmluZywgQXRvbVN0cmluZz4geyBTdHJpbmdWaWV3IHsgcXVh
bGlmaWVkTmFtZSB9LmxlZnQoY29sb25Qb3NpdGlvbikudG9BdG9tU3RyaW5nKCksIFN0cmluZ1Zp
ZXcgeyBxdWFsaWZpZWROYW1lIH0uc3Vic3RyaW5nKGNvbG9uUG9zaXRpb24gKyAxKS50b0F0b21T
dHJpbmcoKSB9OwogfQogCiBFeGNlcHRpb25PcjxRdWFsaWZpZWROYW1lPiBEb2N1bWVudDo6cGFy
c2VRdWFsaWZpZWROYW1lKGNvbnN0IEF0b21TdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgU3Ry
aW5nJiBxdWFsaWZpZWROYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuY3BwCmluZGV4IDY4YTZmYmIzNTg0NDE0NDFh
MmIxMWI1OGZjNmYxOTQyOWYxZjBlZWEuLjRiOTAzZjhmZGYyYmFkOTM5ZGRhYmE4MGNkZTg4MDU0
NDEyOTc2ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vVGV4dC5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgRXhjZXB0aW9uT3I8
UmVmPFRleHQ+PiBUZXh0OjpzcGxpdFRleHQodW5zaWduZWQgb2Zmc2V0KQogICAgIEV2ZW50UXVl
dWVTY29wZSBzY29wZTsKICAgICBhdXRvIG9sZERhdGEgPSBkYXRhKCk7CiAgICAgYXV0byBuZXdU
ZXh0ID0gdmlydHVhbENyZWF0ZShvbGREYXRhLnN1YnN0cmluZyhvZmZzZXQpKTsKLSAgICBzZXRE
YXRhV2l0aG91dFVwZGF0ZShvbGREYXRhLnN1YnN0cmluZygwLCBvZmZzZXQpKTsKKyAgICBzZXRE
YXRhV2l0aG91dFVwZGF0ZShvbGREYXRhLmxlZnQob2Zmc2V0KSk7CiAKICAgICBkaXNwYXRjaE1v
ZGlmaWVkRXZlbnQob2xkRGF0YSk7CiAKQEAgLTIzMSwxMyArMjMxLDExIEBAIHN0YXRpYyB2b2lk
IGFwcGVuZFRleHRSZXByZXNlbnRhdGlvbihTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBjb25zdCBU
ZXh0JiB0ZXh0KQogICAgIHZhbHVlLnJlcGxhY2VXaXRoTGl0ZXJhbCgnXFwnLCAiXFxcXCIpOwog
ICAgIHZhbHVlLnJlcGxhY2VXaXRoTGl0ZXJhbCgnXG4nLCAiXFxuIik7CiAgICAgCi0gICAgY29u
c3Qgc2l6ZV90IG1heER1bXBMZW5ndGggPSAzMDsKLSAgICBpZiAodmFsdWUubGVuZ3RoKCkgPiBt
YXhEdW1wTGVuZ3RoKSB7Ci0gICAgICAgIHZhbHVlLnRydW5jYXRlKG1heER1bXBMZW5ndGggLSAx
MCk7Ci0gICAgICAgIHZhbHVlLmFwcGVuZCgiLi4uIl9zKTsKLSAgICB9Ci0KLSAgICBidWlsZGVy
LmFwcGVuZCgiIFwiIiwgdmFsdWUsICdcIicpOworICAgIGNvbnN0ZXhwciBzaXplX3QgbWF4RHVt
cExlbmd0aCA9IDMwOworICAgIGlmICh2YWx1ZS5sZW5ndGgoKSA+IG1heER1bXBMZW5ndGgpCisg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIgXCIiLCBTdHJpbmdWaWV3KHZhbHVlKS5sZWZ0KG1heER1
bXBMZW5ndGggLSAxMCksICIuLi5cIiIpOworICAgIGVsc2UKKyAgICAgICAgYnVpbGRlci5hcHBl
bmQoIiBcIiIsIHZhbHVlLCAnXCInKTsKIH0KIAogU3RyaW5nIFRleHQ6OmRlc2NyaXB0aW9uKCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuY3BwCmluZGV4IDUyNWRl
ZThkMTQwMDY4MmUyZTEwZmRhNTNhN2NlMjY4YTUxMzdmNGIuLmNiNDAxMmJjYjQxNDA4YTQ2YzRh
MWExM2Q5YjI4ODFmNzllODViNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9WaWV3
cG9ydEFyZ3VtZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1l
bnRzLmNwcApAQCAtNDMzLDcgKzQzMyw3IEBAIHN0YXRpYyBTdHJpbmcgdmlld3BvcnRFcnJvck1l
c3NhZ2UoVmlld3BvcnRFcnJvckNvZGUgZXJyb3JDb2RlLCBTdHJpbmdWaWV3IHJlcGxhCiAgICAg
ICAgIG1lc3NhZ2UucmVwbGFjZSgiJXJlcGxhY2VtZW50MiIsIHJlcGxhY2VtZW50Mik7CiAKICAg
ICBpZiAoKGVycm9yQ29kZSA9PSBVbnJlY29nbml6ZWRWaWV3cG9ydEFyZ3VtZW50VmFsdWVFcnJv
ciB8fCBlcnJvckNvZGUgPT0gVHJ1bmNhdGVkVmlld3BvcnRBcmd1bWVudFZhbHVlRXJyb3IpICYm
IHJlcGxhY2VtZW50MS5jb250YWlucygnOycpKQotICAgICAgICBtZXNzYWdlLmFwcGVuZCgiIE5v
dGUgdGhhdCAnOycgaXMgbm90IGEgc2VwYXJhdG9yIGluIHZpZXdwb3J0IHZhbHVlcy4gVGhlIGxp
c3Qgc2hvdWxkIGJlIGNvbW1hLXNlcGFyYXRlZC4iX3MpOworICAgICAgICBtZXNzYWdlID0gbWFr
ZVN0cmluZyhtZXNzYWdlLCAiIE5vdGUgdGhhdCAnOycgaXMgbm90IGEgc2VwYXJhdG9yIGluIHZp
ZXdwb3J0IHZhbHVlcy4gVGhlIGxpc3Qgc2hvdWxkIGJlIGNvbW1hLXNlcGFyYXRlZC4iX3MpOwog
CiAgICAgcmV0dXJuIG1lc3NhZ2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRD
aGVja2luZ0hlbHBlci5jcHAKaW5kZXggODBhODc4NmNmMzg3NWEzMzQ0NWZiMTQ2N2ViZDQ2YzI3
NDIxYTg0Mi4uMzE4MzQ0MWM4NTI2YTBjZGJlZTM5MGVjZDNmYjM5OTc2ZTdmZWQ0MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcApAQCAtNTgyLDcg
KzU4Miw3IEBAIHZvaWQgY2hlY2tUZXh0T2ZQYXJhZ3JhcGgoVGV4dENoZWNrZXJDbGllbnQmIGNs
aWVudCwgU3RyaW5nVmlldyB0ZXh0LCBPcHRpb25TZXQ8CiAgICAgICAgIHVuc2lnbmVkIGdyYW1t
YXJDaGVja0xlbmd0aCA9IHRleHQubGVuZ3RoKCk7CiAgICAgICAgIGZvciAoYXV0byYgbWlzc3Bl
bGxpbmcgOiBtaXNzcGVsbGluZ3MpCiAgICAgICAgICAgICBncmFtbWFyQ2hlY2tMZW5ndGggPSBz
dGQ6Om1pbjx1bnNpZ25lZD4oZ3JhbW1hckNoZWNrTGVuZ3RoLCBtaXNzcGVsbGluZy5yYW5nZS5s
b2NhdGlvbik7Ci0gICAgICAgIGZpbmRHcmFtbWF0aWNhbEVycm9ycyhjbGllbnQsIHRleHQuc3Vi
c3RyaW5nKDAsIGdyYW1tYXJDaGVja0xlbmd0aCksIGdyYW1tYXRpY2FsRXJyb3JzKTsKKyAgICAg
ICAgZmluZEdyYW1tYXRpY2FsRXJyb3JzKGNsaWVudCwgdGV4dC5sZWZ0KGdyYW1tYXJDaGVja0xl
bmd0aCksIGdyYW1tYXRpY2FsRXJyb3JzKTsKICAgICB9CiAKICAgICByZXN1bHRzID0gV1RGTW92
ZShncmFtbWF0aWNhbEVycm9ycyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1RleHRJdGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5j
cHAKaW5kZXggZTFhODkyNWU5ZmViOWNiZmIzZDU3ZWZmOTc5NzlkZTJlZjU4NmY4OC4uYmZhMjJl
M2ZlYTM5NTZjMDhmYjFlMmI0MGEwODdkMWMyNWVhNzQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVGV4dEl0ZXJhdG9yLmNwcApAQCAtMjAzMCw3ICsyMDMwLDcgQEAgaW5saW5lIHZvaWQgU2Vh
cmNoQnVmZmVyOjpwcmVwZW5kQ29udGV4dChTdHJpbmdWaWV3IHRleHQpCiAgICAgc2l6ZV90IHdv
cmRCb3VuZGFyeUNvbnRleHRTdGFydCA9IHRleHQubGVuZ3RoKCk7CiAgICAgaWYgKHdvcmRCb3Vu
ZGFyeUNvbnRleHRTdGFydCkgewogICAgICAgICBVMTZfQkFDS18xKHRleHQsIDAsIHdvcmRCb3Vu
ZGFyeUNvbnRleHRTdGFydCk7Ci0gICAgICAgIHdvcmRCb3VuZGFyeUNvbnRleHRTdGFydCA9IHN0
YXJ0T2ZMYXN0V29yZEJvdW5kYXJ5Q29udGV4dCh0ZXh0LnN1YnN0cmluZygwLCB3b3JkQm91bmRh
cnlDb250ZXh0U3RhcnQpKTsKKyAgICAgICAgd29yZEJvdW5kYXJ5Q29udGV4dFN0YXJ0ID0gc3Rh
cnRPZkxhc3RXb3JkQm91bmRhcnlDb250ZXh0KHRleHQubGVmdCh3b3JkQm91bmRhcnlDb250ZXh0
U3RhcnQpKTsKICAgICB9CiAKICAgICBzaXplX3QgdXNhYmxlTGVuZ3RoID0gc3RkOjptaW4obV9i
dWZmZXIuY2FwYWNpdHkoKSAtIG1fcHJlZml4TGVuZ3RoLCB0ZXh0Lmxlbmd0aCgpIC0gd29yZEJv
dW5kYXJ5Q29udGV4dFN0YXJ0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
VmlzaWJsZVVuaXRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNw
cAppbmRleCA0NTE4YWQ0MzkzMWM4NTI1YjhlZmYyMGM0MDliZDI2M2M4MDcyZWZkLi41YmVjODcx
NDA1MThiODM0MGM4NmFkNzQ5NGZmY2VhZDg3YWNiNjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9WaXNpYmxlVW5pdHMuY3BwCkBAIC00NTAsNyArNDUwLDcgQEAgdW5zaWduZWQgc3VmZml4TGVu
Z3RoRm9yUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmIGZvcndhcmRzU2NhblJhbmdlLCBWZWN0b3I8
VUNoYXIKICAgICB3aGlsZSAoIWZvcndhcmRzSXRlcmF0b3IuYXRFbmQoKSkgewogICAgICAgICBT
dHJpbmdWaWV3IHRleHQgPSBmb3J3YXJkc0l0ZXJhdG9yLnRleHQoKTsKICAgICAgICAgdW5zaWdu
ZWQgaSA9IGVuZE9mRmlyc3RXb3JkQm91bmRhcnlDb250ZXh0KHRleHQpOwotICAgICAgICBhcHBl
bmQoc3RyaW5nLCB0ZXh0LnN1YnN0cmluZygwLCBpKSk7CisgICAgICAgIGFwcGVuZChzdHJpbmcs
IHRleHQubGVmdChpKSk7CiAgICAgICAgIHN1ZmZpeExlbmd0aCArPSBpOwogICAgICAgICBpZiAo
aSA8IHRleHQubGVuZ3RoKCkpCiAgICAgICAgICAgICBicmVhazsKQEAgLTYzOCw3ICs2MzgsNyBA
QCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIG5leHRCb3VuZGFyeShjb25zdCBWaXNpYmxlUG9zaXRp
b24mIGMsIEJvdW5kYXJ5U2VhcmNoRnVuYwogdW5zaWduZWQgc3RhcnRXb3JkQm91bmRhcnkoU3Ry
aW5nVmlldyB0ZXh0LCB1bnNpZ25lZCBvZmZzZXQsIEJvdW5kYXJ5U2VhcmNoQ29udGV4dEF2YWls
YWJpbGl0eSBtYXlIYXZlTW9yZUNvbnRleHQsIGJvb2wmIG5lZWRNb3JlQ29udGV4dCkKIHsKICAg
ICBBU1NFUlQob2Zmc2V0KTsKLSAgICBpZiAobWF5SGF2ZU1vcmVDb250ZXh0ICYmICFzdGFydE9m
TGFzdFdvcmRCb3VuZGFyeUNvbnRleHQodGV4dC5zdWJzdHJpbmcoMCwgb2Zmc2V0KSkpIHsKKyAg
ICBpZiAobWF5SGF2ZU1vcmVDb250ZXh0ICYmICFzdGFydE9mTGFzdFdvcmRCb3VuZGFyeUNvbnRl
eHQodGV4dC5sZWZ0KG9mZnNldCkpKSB7CiAgICAgICAgIG5lZWRNb3JlQ29udGV4dCA9IHRydWU7
CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KQEAgLTY5Nyw3ICs2OTcsNyBAQCBWaXNpYmxlUG9z
aXRpb24gZW5kT2ZXb3JkKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYywgRVdvcmRTaWRlIHNpZGUp
CiAKIHN0YXRpYyB1bnNpZ25lZCBwcmV2aW91c1dvcmRQb3NpdGlvbkJvdW5kYXJ5KFN0cmluZ1Zp
ZXcgdGV4dCwgdW5zaWduZWQgb2Zmc2V0LCBCb3VuZGFyeVNlYXJjaENvbnRleHRBdmFpbGFiaWxp
dHkgbWF5SGF2ZU1vcmVDb250ZXh0LCBib29sJiBuZWVkTW9yZUNvbnRleHQpCiB7Ci0gICAgaWYg
KG1heUhhdmVNb3JlQ29udGV4dCAmJiAhc3RhcnRPZkxhc3RXb3JkQm91bmRhcnlDb250ZXh0KHRl
eHQuc3Vic3RyaW5nKDAsIG9mZnNldCkpKSB7CisgICAgaWYgKG1heUhhdmVNb3JlQ29udGV4dCAm
JiAhc3RhcnRPZkxhc3RXb3JkQm91bmRhcnlDb250ZXh0KHRleHQubGVmdChvZmZzZXQpKSkgewog
ICAgICAgICBuZWVkTW9yZUNvbnRleHQgPSB0cnVlOwogICAgICAgICByZXR1cm4gMDsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24u
bW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0KaW5kZXgg
ZWZlYzU3MmVkYjI4MGVlMWYzYTczNGUxN2YxZDZhYTAyODU5YjRkMC4uZDYzYmI5YTJhZjUyNjJm
MGUxNDcyMTU3YTQ2YjM0MzJlODBlNjdhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvRGF0YURldGVjdGlvbi5tbQpAQCAtNTc5LDcgKzU3OSw3IEBAIE5TQXJyYXkgKkRhdGFE
ZXRlY3Rpb246OmRldGVjdENvbnRlbnRJblJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiBjb250ZXh0
UmFuZ2UsIE9wCiAgICAgICAgICAgICAgICAgICAgIGxhc3RUZXh0Tm9kZVRvVXBkYXRlLT5zZXRE
YXRhKGxhc3ROb2RlQ29udGVudCk7CiAgICAgICAgICAgICAgICAgY29udGVudE9mZnNldCA9IDA7
CiAgICAgICAgICAgICAgICAgaWYgKHJhbmdlLnN0YXJ0Lm9mZnNldCA+IDApCi0gICAgICAgICAg
ICAgICAgICAgIHRleHROb2RlRGF0YSA9IGN1cnJlbnRUZXh0Tm9kZS5kYXRhKCkuc3Vic3RyaW5n
KDAsIHJhbmdlLnN0YXJ0Lm9mZnNldCk7CisgICAgICAgICAgICAgICAgICAgIHRleHROb2RlRGF0
YSA9IGN1cnJlbnRUZXh0Tm9kZS5kYXRhKCkubGVmdChyYW5nZS5zdGFydC5vZmZzZXQpOwogICAg
ICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgdGV4dE5vZGVEYXRhID0gY3VycmVudFRl
eHROb2RlLmRhdGEoKS5zdWJzdHJpbmcoY29udGVudE9mZnNldCwgcmFuZ2Uuc3RhcnQub2Zmc2V0
IC0gY29udGVudE9mZnNldCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bWFya3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAppbmRleCA3ZTU5
NTJiN2E5NjI4NzA3MGU4MDM3OThkNTlkOGZjMmY3YjM5YjliLi5iNGM5NjRkMjFhMDQzZWM3YWI5
NzkwNWJhY2U2NzQxOTBhOTU2ZjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L21hcmt1cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCkBAIC05
OTUsNyArOTk1LDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkUHJlc2VydmVNU09MaXN0cyhTdHJpbmdW
aWV3IG1hcmt1cCkKICAgICBhdXRvIHRhZ0Nsb3NlID0gbWFya3VwLmZpbmQoJz4nKTsKICAgICBp
ZiAodGFnQ2xvc2UgPT0gbm90Rm91bmQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBhdXRv
IHRhZyA9IG1hcmt1cC5zdWJzdHJpbmcoMCwgdGFnQ2xvc2UpOworICAgIGF1dG8gdGFnID0gbWFy
a3VwLmxlZnQodGFnQ2xvc2UpOwogICAgIHJldHVybiB0YWcuY29udGFpbnMoInhtbG5zOm89XCJ1
cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOm9mZmljZTpvZmZpY2VcIiIpCiAgICAgICAgICYmIHRh
Zy5jb250YWlucygieG1sbnM6dz1cInVybjpzY2hlbWFzLW1pY3Jvc29mdC1jb206b2ZmaWNlOndv
cmRcIiIpOwogfQpAQCAtMTEwMyw3ICsxMTAzLDcgQEAgc3RhdGljIHZvaWQgZmlsbENvbnRhaW5l
ckZyb21TdHJpbmcoQ29udGFpbmVyTm9kZSYgcGFyYWdyYXBoLCBjb25zdCBTdHJpbmcmIHN0cmkK
ICAgICBBU1NFUlQoc3RyaW5nLmZpbmQoJ1xuJykgPT0gbm90Rm91bmQpOwogCiAgICAgVmVjdG9y
PFN0cmluZz4gdGFiTGlzdCA9IHN0cmluZy5zcGxpdEFsbG93aW5nRW1wdHlFbnRyaWVzKCdcdCcp
OwotICAgIFN0cmluZyB0YWJUZXh0ID0gZW1wdHlTdHJpbmcoKTsKKyAgICBTdHJpbmdCdWlsZGVy
IHRhYlRleHQ7CiAgICAgYm9vbCBmaXJzdCA9IHRydWU7CiAgICAgc2l6ZV90IG51bUVudHJpZXMg
PSB0YWJMaXN0LnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bUVudHJpZXM7
ICsraSkgewpAQCAtMTExMiw4ICsxMTEyLDggQEAgc3RhdGljIHZvaWQgZmlsbENvbnRhaW5lckZy
b21TdHJpbmcoQ29udGFpbmVyTm9kZSYgcGFyYWdyYXBoLCBjb25zdCBTdHJpbmcmIHN0cmkKICAg
ICAgICAgLy8gYXBwZW5kIHRoZSBub24tdGFiIHRleHR1YWwgcGFydAogICAgICAgICBpZiAoIXMu
aXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBpZiAoIXRhYlRleHQuaXNFbXB0eSgpKSB7Ci0gICAg
ICAgICAgICAgICAgcGFyYWdyYXBoLmFwcGVuZENoaWxkKGNyZWF0ZVRhYlNwYW5FbGVtZW50KGRv
Y3VtZW50LCB0YWJUZXh0KSk7Ci0gICAgICAgICAgICAgICAgdGFiVGV4dCA9IGVtcHR5U3RyaW5n
KCk7CisgICAgICAgICAgICAgICAgcGFyYWdyYXBoLmFwcGVuZENoaWxkKGNyZWF0ZVRhYlNwYW5F
bGVtZW50KGRvY3VtZW50LCB0YWJUZXh0LnRvU3RyaW5nKCkpKTsKKyAgICAgICAgICAgICAgICB0
YWJUZXh0LmNsZWFyKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBSZWY8Tm9kZT4gdGV4
dE5vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShzdHJpbmdXaXRoUmViYWxhbmNlZFdoaXRl
c3BhY2UocywgZmlyc3QsIGkgKyAxID09IG51bUVudHJpZXMpKTsKICAgICAgICAgICAgIHBhcmFn
cmFwaC5hcHBlbmRDaGlsZCh0ZXh0Tm9kZSk7CkBAIC0xMTI0LDcgKzExMjQsNyBAQCBzdGF0aWMg
dm9pZCBmaWxsQ29udGFpbmVyRnJvbVN0cmluZyhDb250YWluZXJOb2RlJiBwYXJhZ3JhcGgsIGNv
bnN0IFN0cmluZyYgc3RyaQogICAgICAgICBpZiAoaSArIDEgIT0gbnVtRW50cmllcykKICAgICAg
ICAgICAgIHRhYlRleHQuYXBwZW5kKCdcdCcpOwogICAgICAgICBlbHNlIGlmICghdGFiVGV4dC5p
c0VtcHR5KCkpCi0gICAgICAgICAgICBwYXJhZ3JhcGguYXBwZW5kQ2hpbGQoY3JlYXRlVGFiU3Bh
bkVsZW1lbnQoZG9jdW1lbnQsIHRhYlRleHQpKTsKKyAgICAgICAgICAgIHBhcmFncmFwaC5hcHBl
bmRDaGlsZChjcmVhdGVUYWJTcGFuRWxlbWVudChkb2N1bWVudCwgdGFiVGV4dC50b1N0cmluZygp
KSk7CiAKICAgICAgICAgZmlyc3QgPSBmYWxzZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCmluZGV4IDdjMjJkZDU3MWY2YmMzMmIyM2ZiYmI1
Y2IwMTlmZmI5Yzc3MzFjNmQuLjE1NjI4ZDk1OWZiYmEyZWM3Yjg1NGQzNmU2OTAxMWIxMmU2M2Yz
ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCkBA
IC05Myw3ICs5Myw3IEBAIHByaXZhdGU6CiAgICAgaW50IG1fc2l6ZSB7IDI1NCB9OwogICAgIFVD
aGFyKiBtX2J1ZmZlcjsKICAgICBVQ2hhciogbV9kZXN0OwotICAgIFN0cmluZyBtX2NhcnJ5T3Zl
cjsKKyAgICBTdHJpbmdCdWlsZGVyIG1fY2FycnlPdmVyOwogICAgIAogICAgIExpc3RTdGF0ZSBt
X2xpc3RTdGF0ZTsKIH07CkBAIC0yNjIsMTQgKzI2MiwxNSBAQCB2b2lkIEZUUERpcmVjdG9yeURv
Y3VtZW50UGFyc2VyOjpwYXJzZUFuZEFwcGVuZE9uZUxpbmUoY29uc3QgU3RyaW5nJiBpbnB1dExp
bmUpCiAgICAgaWYgKHR5cGVSZXN1bHQgPT0gRlRQTWlzY0VudHJ5IHx8IHR5cGVSZXN1bHQgPT0g
RlRQSnVua0VudHJ5KQogICAgICAgICByZXR1cm47CiAKLSAgICBTdHJpbmcgZmlsZW5hbWUocmVz
dWx0LmZpbGVuYW1lLCByZXN1bHQuZmlsZW5hbWVMZW5ndGgpOworICAgIFN0cmluZyBmaWxlbmFt
ZTsKICAgICBpZiAocmVzdWx0LnR5cGUgPT0gRlRQRGlyZWN0b3J5RW50cnkpIHsKLSAgICAgICAg
ZmlsZW5hbWUuYXBwZW5kKCcvJyk7CisgICAgICAgIGZpbGVuYW1lID0gbWFrZVN0cmluZyhTdHJp
bmdWaWV3IHsgcmVzdWx0LmZpbGVuYW1lLCByZXN1bHQuZmlsZW5hbWVMZW5ndGggfSwgJy8nKTsK
IAogICAgICAgICAvLyBXZSBoYXZlIG5vIGludGVyZXN0IGluIGxpbmtpbmcgdG8gImN1cnJlbnQg
ZGlyZWN0b3J5IgogICAgICAgICBpZiAoZmlsZW5hbWUgPT0gIi4vIikKICAgICAgICAgICAgIHJl
dHVybjsKLSAgICB9CisgICAgfSBlbHNlCisgICAgICAgIGZpbGVuYW1lID0gU3RyaW5nKHJlc3Vs
dC5maWxlbmFtZSwgcmVzdWx0LmZpbGVuYW1lTGVuZ3RoKTsKIAogICAgIExPRyhGVFAsICJBcHBl
bmRpbmcgZW50cnkgLSAlcywgJXMiLCBmaWxlbmFtZS5hc2NpaSgpLmRhdGEoKSwgcmVzdWx0LmZp
bGVTaXplLmFzY2lpKCkuZGF0YSgpKTsKIApAQCAtMzg4LDEwICszODksMTAgQEAgdm9pZCBGVFBE
aXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6YXBwZW5kKFJlZlB0cjxTdHJpbmdJbXBsPiYmIGlucHV0
U291cmNlKQogCiAgICAgd2hpbGUgKGN1cnNvciA8IG1fZGVzdCkgewogICAgICAgICBpZiAoKmN1
cnNvciA9PSAnXG4nKSB7Ci0gICAgICAgICAgICBtX2NhcnJ5T3Zlci5hcHBlbmQoU3RyaW5nKHN0
YXJ0LCBjdXJzb3IgLSBzdGFydCkpOwotICAgICAgICAgICAgTE9HKEZUUCwgIiVzIiwgbV9jYXJy
eU92ZXIuYXNjaWkoKS5kYXRhKCkpOwotICAgICAgICAgICAgcGFyc2VBbmRBcHBlbmRPbmVMaW5l
KG1fY2FycnlPdmVyKTsKLSAgICAgICAgICAgIG1fY2FycnlPdmVyID0gU3RyaW5nKCk7CisgICAg
ICAgICAgICBtX2NhcnJ5T3Zlci5hcHBlbmQoU3RyaW5nVmlldyhzdGFydCwgY3Vyc29yIC0gc3Rh
cnQpKTsKKyAgICAgICAgICAgIExPRyhGVFAsICIlcyIsIG1fY2FycnlPdmVyLnRvU3RyaW5nKCku
YXNjaWkoKS5kYXRhKCkpOworICAgICAgICAgICAgcGFyc2VBbmRBcHBlbmRPbmVMaW5lKG1fY2Fy
cnlPdmVyLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgbV9jYXJyeU92ZXIuY2xlYXIoKTsKIAog
ICAgICAgICAgICAgc3RhcnQgPSArK2N1cnNvcjsKICAgICAgICAgfSBlbHNlIApAQCAtNDAwLDE1
ICs0MDEsMTUgQEAgdm9pZCBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6YXBwZW5kKFJlZlB0
cjxTdHJpbmdJbXBsPiYmIGlucHV0U291cmNlKQogCiAgICAgLy8gQ29weSB0aGUgcGFydGlhbCBs
aW5lIHdlIGhhdmUgbGVmdCB0byB0aGUgY2FycnlvdmVyIGJ1ZmZlcgogICAgIGlmIChjdXJzb3Ig
LSBzdGFydCA+IDEpCi0gICAgICAgIG1fY2FycnlPdmVyLmFwcGVuZChTdHJpbmcoc3RhcnQsIGN1
cnNvciAtIHN0YXJ0IC0gMSkpOworICAgICAgICBtX2NhcnJ5T3Zlci5hcHBlbmQoU3RyaW5nVmll
dyhzdGFydCwgY3Vyc29yIC0gc3RhcnQgLSAxKSk7CiB9CiAKIHZvaWQgRlRQRGlyZWN0b3J5RG9j
dW1lbnRQYXJzZXI6OmZpbmlzaCgpCiB7CiAgICAgLy8gUG9zc2libGUgdGhlIGxhc3QgbGluZSBp
biB0aGUgbGlzdGluZyBoYWQgbm8gbmV3bGluZSwgc28gdHJ5IHRvIHBhcnNlIGl0IG5vdwogICAg
IGlmICghbV9jYXJyeU92ZXIuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHBhcnNlQW5kQXBwZW5kT25l
TGluZShtX2NhcnJ5T3Zlcik7Ci0gICAgICAgIG1fY2FycnlPdmVyID0gU3RyaW5nKCk7CisgICAg
ICAgIHBhcnNlQW5kQXBwZW5kT25lTGluZShtX2NhcnJ5T3Zlci50b1N0cmluZygpKTsKKyAgICAg
ICAgbV9jYXJyeU92ZXIuY2xlYXIoKTsKICAgICB9CiAKICAgICBtX3RhYmxlRWxlbWVudCA9IG51
bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZlYXR1cmVQb2xpY3kuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9GZWF0dXJlUG9saWN5LmNwcAppbmRleCA1ODQ4ZDBhYjlj
MmQ3NTY0ZjA4ZjQ4NzUyYjkzNWUxODEwYjExODE3Li40MWUwMzFkNDYwMmNlMjUyMzgzNmQyMDMz
MDEyZTFhNzYzNjcwMWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZlYXR1cmVQ
b2xpY3kuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmVhdHVyZVBvbGljeS5jcHAKQEAg
LTE2Niw3ICsxNjYsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgdXBkYXRlTGlzdChEb2N1bWVudCYg
ZG9jdW1lbnQsIEZlYXR1cmVQb2xpY3k6OkFsbG93UnVsZSYgcnVsZQogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgcHJvY2Vzc09yaWdpbkl0ZW0oZG9jdW1lbnQsIHJ1
bGUsIHZhbHVlLnN1YnN0cmluZygwLCBwb3NpdGlvbikpOworICAgICAgICBwcm9jZXNzT3JpZ2lu
SXRlbShkb2N1bWVudCwgcnVsZSwgdmFsdWUubGVmdChwb3NpdGlvbikpOwogICAgICAgICB2YWx1
ZSA9IHZhbHVlLnN1YnN0cmluZyhwb3NpdGlvbiArIDEpLnN0cmlwTGVhZGluZ0FuZFRyYWlsaW5n
TWF0Y2hlZENoYXJhY3RlcnMoaXNIVE1MU3BhY2U8VUNoYXI+KTsKICAgICB9CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCBiNDJkOTYwNGYzNGNkZWJmNzRl
YzNjYmFmMDYyYTdlOTM3ZGU0ZDRhLi5jZjkzYzMyZDFiMDI1YWM3ZTcyMDU4OGIyMzVhNTVkZjEx
Y2Y0ZmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTE5
NCw3ICsxOTQsNyBAQCBzdHJ1Y3QgTG9nQXJndW1lbnQ8VVJMPiB7CiAKICAgICAgICAgaWYgKHVy
bC5zdHJpbmcoKS5sZW5ndGgoKSA8IG1heGltdW1VUkxMZW5ndGhGb3JMb2dnaW5nKQogICAgICAg
ICAgICAgcmV0dXJuIHVybC5zdHJpbmcoKTsKLSAgICAgICAgcmV0dXJuIHVybC5zdHJpbmcoKS5z
dWJzdHJpbmcoMCwgbWF4aW11bVVSTExlbmd0aEZvckxvZ2dpbmcpICsgIi4uLiI7CisgICAgICAg
IHJldHVybiB1cmwuc3RyaW5nKCkubGVmdChtYXhpbXVtVVJMTGVuZ3RoRm9yTG9nZ2luZykgKyAi
Li4uIjsKICNlbHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTSh1cmwpOwogICAgICAgICByZXR1cm4g
Ilt1cmxdIl9zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAKaW5kZXgg
ZTQ3YTViZDhiMzczZDViZDI1YTA0MjYwNmI2OWI0NDQ5OWU0MTc0NS4uNGVmYzQzZjViMjk0YWUy
NTA4ZWE1YWQ3ZGFmYjdkYWE4YzBhY2Y5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVHJhY2tFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFj
a0VsZW1lbnQuY3BwCkBAIC01NSw3ICs1NSw3IEBAIHN0YXRpYyBTdHJpbmcgdXJsRm9yTG9nZ2lu
Z1RyYWNrKGNvbnN0IFVSTCYgdXJsKQogICAgIAogICAgIGlmICh1cmwuc3RyaW5nKCkubGVuZ3Ro
KCkgPCBtYXhpbXVtVVJMTGVuZ3RoRm9yTG9nZ2luZykKICAgICAgICAgcmV0dXJuIHVybC5zdHJp
bmcoKTsKLSAgICByZXR1cm4gdXJsLnN0cmluZygpLnN1YnN0cmluZygwLCBtYXhpbXVtVVJMTGVu
Z3RoRm9yTG9nZ2luZykgKyAiLi4uIjsKKyAgICByZXR1cm4gdXJsLnN0cmluZygpLmxlZnQobWF4
aW11bVVSTExlbmd0aEZvckxvZ2dpbmcpICsgIi4uLiI7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxEZWNvbXBvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvVVJMRGVjb21wb3NpdGlvbi5jcHAKaW5kZXggZTRlMzBhOWI2MDRlZjFhODRkNzc1
MmJiZDhiMzcwODQ1MmExZTA4Zi4uOTM1Y2U1ZGNiNzI1OWE1ZWQ2MDk5NWEyODU3OGI2NjBjZTU5
MDRiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxEZWNvbXBvc2l0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTERlY29tcG9zaXRpb24uY3BwCkBAIC0xMTcs
MTMgKzExNywxMyBAQCB2b2lkIFVSTERlY29tcG9zaXRpb246OnNldEhvc3QoU3RyaW5nVmlldyB2
YWx1ZSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgdW5zaWduZWQgcG9ydExlbmd0aCA9
IGNvdW50QVNDSUlEaWdpdHModmFsdWUuc3Vic3RyaW5nKHNlcGFyYXRvciArIDEpKTsKICAgICAg
ICAgaWYgKCFwb3J0TGVuZ3RoKSB7Ci0gICAgICAgICAgICBmdWxsVVJMLnNldEhvc3QodmFsdWUu
c3Vic3RyaW5nKDAsIHNlcGFyYXRvcikpOworICAgICAgICAgICAgZnVsbFVSTC5zZXRIb3N0KHZh
bHVlLmxlZnQoc2VwYXJhdG9yKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBhdXRv
IHBvcnROdW1iZXIgPSBwYXJzZUludGVnZXI8dWludDE2X3Q+KHZhbHVlLnN1YnN0cmluZyhzZXBh
cmF0b3IgKyAxLCBwb3J0TGVuZ3RoKSk7CiAgICAgICAgICAgICBpZiAocG9ydE51bWJlciAmJiBX
VEY6OmlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbCgqcG9ydE51bWJlciwgZnVsbFVSTC5wcm90b2Nv
bCgpKSkKLSAgICAgICAgICAgICAgICBmdWxsVVJMLnNldEhvc3RBbmRQb3J0KHZhbHVlLnN1YnN0
cmluZygwLCBzZXBhcmF0b3IpKTsKKyAgICAgICAgICAgICAgICBmdWxsVVJMLnNldEhvc3RBbmRQ
b3J0KHZhbHVlLmxlZnQoc2VwYXJhdG9yKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgZnVsbFVSTC5zZXRIb3N0QW5kUG9ydCh2YWx1ZS5zdWJzdHJpbmcoMCwgc2VwYXJhdG9y
ICsgMSArIHBvcnRMZW5ndGgpKTsKKyAgICAgICAgICAgICAgICBmdWxsVVJMLnNldEhvc3RBbmRQ
b3J0KHZhbHVlLmxlZnQoc2VwYXJhdG9yICsgMSArIHBvcnRMZW5ndGgpKTsKICAgICAgICAgfQog
ICAgIH0KICAgICBpZiAoZnVsbFVSTC5pc1ZhbGlkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IDc3
M2Y2NzY0OGEzZDkwOGZiYTAzNzNhNzk5ZjQyOTI4YTc3OTJkOGYuLjFjNGUzNTI0YTFhNDIzODc0
NDFhMzQyZjFjYmFhMTFjMjgzMTNlOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCkBAIC0zMDc0LDcgKzMw
NzQsNyBAQCBSZWZQdHI8V2ViR0xBY3RpdmVJbmZvPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpnZXRBY3RpdmVVbmlmb3JtKFdlYkdMUHJvZ3JhbQogICAgIC8vIEZJWE1FOiBEbyB3ZSBzdGls
bCBuZWVkIHRoaXMgZm9yIHRoZSBBTkdMRSBiYWNrZW5kPwogICAgIGlmICghaXNHTEVTMkNvbXBs
aWFudCgpKQogICAgICAgICBpZiAoaW5mby5zaXplID4gMSAmJiAhaW5mby5uYW1lLmVuZHNXaXRo
KCJbMF0iKSkKLSAgICAgICAgICAgIGluZm8ubmFtZS5hcHBlbmQoIlswXSJfcyk7CisgICAgICAg
ICAgICBpbmZvLm5hbWUgPSBtYWtlU3RyaW5nKGluZm8ubmFtZSwgIlswXSJfcyk7CiAKICAgICBM
T0coV2ViR0wsICJSZXR1cm5pbmcgYWN0aXZlIHVuaWZvcm0gJWQ6ICVzIiwgaW5kZXgsIGluZm8u
bmFtZS51dGY4KCkuZGF0YSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MUGFyc2VySWRpb21zLmNwcAppbmRleCA2MWM2YTdiMzRhOTU0NGM4M2Q5ZDdlZjUwMTBjNDdm
YjY5MjdkYWIwLi41YzFlYzc0MWMyMWE0OTc5NGI0YTg2YWJiNTc1ODY3ODlhMTFjZWU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcApAQCAt
NDUyLDcgKzQ1Miw3IEBAIHN0YXRpYyBib29sIHBhcnNlSFRUUFJlZnJlc2hJbnRlcm5hbChjb25z
dCBDaGFyYWN0ZXJUeXBlKiBwb3NpdGlvbiwgY29uc3QgQ2hhcmFjCiAgICAgaWYgKHF1b3RlICE9
ICdcMCcpIHsKICAgICAgICAgc2l6ZV90IGluZGV4ID0gdXJsLmZpbmQocXVvdGUpOwogICAgICAg
ICBpZiAoaW5kZXggIT0gbm90Rm91bmQpCi0gICAgICAgICAgICB1cmwgPSB1cmwuc3Vic3RyaW5n
KDAsIGluZGV4KTsKKyAgICAgICAgICAgIHVybCA9IHVybC5sZWZ0KGluZGV4KTsKICAgICB9CiAK
ICAgICBwYXJzZWRVUkwgPSB1cmwudG9TdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxTcmNzZXRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFNyY3NldFBhcnNlci5jcHAKaW5kZXggNjA2MjBmNTZjNGViOGYwNGI0M2Rm
MmUxNTE4YTRmNmY2YmQ5Nzk4ZC4uYmFlZDMyZGM1ODlkNjM4ZWU2ZWY2MmNkOWIxNTgwMDE4YzQz
ZmM0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFNyY3NldFBh
cnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFNyY3NldFBhcnNl
ci5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCBzdGF0aWMgYm9vbCBwYXJzZURlc2NyaXB0b3JzKFZl
Y3RvcjxTdHJpbmdWaWV3PiYgZGVzY3JpcHRvcnMsIERlc2NyaXB0b3JQYXJzaW5nUgogICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgIHVuc2lnbmVkIGRlc2NyaXB0b3JDaGFyUG9zaXRpb24g
PSBkZXNjcmlwdG9yLmxlbmd0aCgpIC0gMTsKICAgICAgICAgVUNoYXIgZGVzY3JpcHRvckNoYXIg
PSBkZXNjcmlwdG9yW2Rlc2NyaXB0b3JDaGFyUG9zaXRpb25dOwotICAgICAgICBkZXNjcmlwdG9y
ID0gZGVzY3JpcHRvci5zdWJzdHJpbmcoMCwgZGVzY3JpcHRvckNoYXJQb3NpdGlvbik7CisgICAg
ICAgIGRlc2NyaXB0b3IgPSBkZXNjcmlwdG9yLmxlZnQoZGVzY3JpcHRvckNoYXJQb3NpdGlvbik7
CiAgICAgICAgIGlmIChkZXNjcmlwdG9yQ2hhciA9PSAneCcpIHsKICAgICAgICAgICAgIGlmIChy
ZXN1bHQuaGFzRGVuc2l0eSgpIHx8IHJlc3VsdC5oYXNIZWlnaHQoKSB8fCByZXN1bHQuaGFzV2lk
dGgoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcAppbmRleCBlZGNjNmFmZDZjNmYwMzhiODRj
NGU3MWY1NzhhNjg4ODQyN2M3MTAzLi5mNmFhOGE3Nzg5OWFlY2RlZDc1YzgzYzM0OGIxNWFlYjRh
ODE5YzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1
aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRl
ci5jcHAKQEAgLTI0MSw3ICsyNDEsNyBAQCBwcml2YXRlOgogICAgICAgICBza2lwTGVhZGluZzxj
aGFyYWN0ZXJQcmVkaWNhdGU+KCk7CiAgICAgICAgIGlmIChzdGFydC5sZW5ndGgoKSA9PSBtX3Rl
eHQubGVuZ3RoKCkpCiAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgICAgIHJldHVy
biBtYWtlU3RyaW5nKHN0YXJ0LnN1YnN0cmluZygwLCBzdGFydC5sZW5ndGgoKSAtIG1fdGV4dC5s
ZW5ndGgoKSkpOworICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhzdGFydC5sZWZ0KHN0YXJ0Lmxl
bmd0aCgpIC0gbV90ZXh0Lmxlbmd0aCgpKSk7CiAgICAgfQogCiAgICAgU3RyaW5nIG1ha2VTdHJp
bmcoU3RyaW5nVmlldyBzdHJpbmdWaWV3KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9XZWJWVFRQYXJzZXIuY3BwCmluZGV4IDlmNWRhNTFiZTc4ZmRhYTYxYjdlNTA5NTgzNDVkZjQz
YjVmMGJkMzYuLmE2MDNjMDgxZTkwYjQ2ZDUzNGU5MDNlZWVjY2EwNjRmNzYzZThjYWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKQEAgLTM2Miw3ICszNjIs
OCBAQCBib29sIFdlYlZUVFBhcnNlcjo6Y2hlY2tBbmRTdG9yZVN0eWxlU2hlZXQoY29uc3QgU3Ry
aW5nJiBsaW5lKQogICAgIGlmICghbGluZS5pc0VtcHR5KCkgJiYgIWxpbmUuY29udGFpbnMoIi0t
PiIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgYXV0byBzdHlsZVNoZWV0VGV4
dCA9IFdURk1vdmUobV9jdXJyZW50U291cmNlU3R5bGVTaGVldCk7CisgICAgYXV0byBzdHlsZVNo
ZWV0VGV4dCA9IG1fY3VycmVudFNvdXJjZVN0eWxlU2hlZXQudG9TdHJpbmcoKTsKKyAgICBtX2N1
cnJlbnRTb3VyY2VTdHlsZVNoZWV0LmNsZWFyKCk7CiAKICAgICAvLyBXZWJWVFRNb2RlIGRpc2Fs
bG93cyBub24tZGF0YSBVUkxzLgogICAgIGF1dG8gY29udGVudHMgPSBTdHlsZVNoZWV0Q29udGVu
dHM6OmNyZWF0ZShDU1NQYXJzZXJDb250ZXh0KFdlYlZUVE1vZGUpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1dlYlZUVFBhcnNlci5oCmluZGV4IDEyODU1MjA5MTc0Mzg1ZDA1MjA4ZGM3YTQw
NGRiYWEzMWZmMDY3NDguLjJmYjMwOTA1NDI0ZmNlOWZmMjM5MTNkYjNlOTc0YzEyM2E0NDY2M2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuaApAQCAtMTkyLDcgKzE5
Miw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fcHJldmlvdXNMaW5lOwogICAgIFN0cmluZyBt
X2N1cnJlbnRTZXR0aW5nczsKICAgICBSZWZQdHI8VlRUUmVnaW9uPiBtX2N1cnJlbnRSZWdpb247
Ci0gICAgU3RyaW5nIG1fY3VycmVudFNvdXJjZVN0eWxlU2hlZXQ7CisgICAgU3RyaW5nQnVpbGRl
ciBtX2N1cnJlbnRTb3VyY2VTdHlsZVNoZWV0OwogICAgIAogICAgIFdlYlZUVFBhcnNlckNsaWVu
dCYgbV9jbGllbnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JPdmVybGF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVy
bGF5LmNwcAppbmRleCA3NzEwYTFiNWQ4MmI0ZWNiYzZiOGZlNjI4NGNkNzZlNDQ5ODczZmM5Li5i
ZmU4YjY3OGEzMDQ1ZWM2MTMxOTgxMGExYzYxYzVkZWZhYzJiZGY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCkBAIC05NywxMCArOTcsOCBAQCBl
bnVtIGNsYXNzIEZsaXAgOiBib29sIHsgTm8sIFllcyB9OwogCiBzdGF0aWMgdm9pZCB0cnVuY2F0
ZVdpdGhFbGxpcHNpcyhTdHJpbmcmIHN0cmluZywgc2l6ZV90IGxlbmd0aCkKIHsKLSAgICBpZiAo
c3RyaW5nLmxlbmd0aCgpID4gbGVuZ3RoKSB7Ci0gICAgICAgIHN0cmluZy50cnVuY2F0ZShsZW5n
dGgpOwotICAgICAgICBzdHJpbmcuYXBwZW5kKGVsbGlwc2lzKTsKLSAgICB9CisgICAgaWYgKHN0
cmluZy5sZW5ndGgoKSA+IGxlbmd0aCkKKyAgICAgICAgc3RyaW5nID0gbWFrZVN0cmluZyhTdHJp
bmdWaWV3KHN0cmluZykubGVmdChsZW5ndGgpLCBlbGxpcHNpcyk7CiB9CiAKIHN0YXRpYyBGbG9h
dFBvaW50IGxvY2FsUG9pbnRUb1Jvb3RQb2ludChjb25zdCBGcmFtZVZpZXcqIHZpZXcsIGNvbnN0
IEZsb2F0UG9pbnQmIHBvaW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvck92ZXJsYXlMYWJlbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yT3ZlcmxheUxhYmVsLmNwcAppbmRleCBmNjExNDcxYTg1ZTNmZTY5M2RkNmYzYWNhNjNl
MjAyNDgyNjU3ODU2Li4zOGJmYWIyOTNjZWNkNTQxZDg4Y2UzZjllMDdmYWE4MGVhZmQzZWJhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheUxhYmVs
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheUxhYmVs
LmNwcApAQCAtMjM0LDggKzIzNCw5IEBAIFBhdGggSW5zcGVjdG9yT3ZlcmxheUxhYmVsOjpkcmF3
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgZmxvYXQgbWF4aW11bUxpbmVXaWR0CiAgICAgICAg
ICAgICBhdXRvIHRleHRSdW4gPSBUZXh0UnVuKHRleHQpOwogICAgICAgICAgICAgZmxvYXQgdGV4
dFdpZHRoID0gZm9udC53aWR0aCh0ZXh0UnVuKTsKIAorICAgICAgICAgICAgLy8gRklYTUU6IFRo
aXMgbG9va3MgdmVyeSBpbmVmZmljaWVudC4KICAgICAgICAgICAgIGlmIChtYXhpbXVtTGluZVdp
ZHRoICYmIGN1cnJlbnRMaW5lV2lkdGggKyB0ZXh0V2lkdGggKyAobGFiZWxQYWRkaW5nICogMikg
PiBtYXhpbXVtTGluZVdpZHRoKSB7Ci0gICAgICAgICAgICAgICAgdGV4dC5hcHBlbmQoZWxsaXBz
aXMpOworICAgICAgICAgICAgICAgIHRleHQgPSBtYWtlU3RyaW5nKHRleHQsIGVsbGlwc2lzKTsK
ICAgICAgICAgICAgICAgICB3aGlsZSAoY3VycmVudExpbmVXaWR0aCArIHRleHRXaWR0aCArIChs
YWJlbFBhZGRpbmcgKiAyKSA+IG1heGltdW1MaW5lV2lkdGggJiYgdGV4dC5sZW5ndGgoKSA+IDEp
IHsKICAgICAgICAgICAgICAgICAgICAgLy8gUmVtb3ZlIHRoZSBzZWNvbmQgZnJvbSBsYXN0IGNo
YXJhY3RlciAodGhlIGNoYXJhY3RlciBiZWZvcmUgdGhlIGVsbGlwc2lzKSBhbmQgcmVtZWFzdXJl
LgogICAgICAgICAgICAgICAgICAgICB0ZXh0LnJlbW92ZSh0ZXh0Lmxlbmd0aCgpIC0gMik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKaW5k
ZXggMjZlMThlYzA0YWE2ZjdkYWYzYzdiNDMzYTk2YjI2MWJiOTAyNDk0YS4uMDkwMTZlNWM3MTFk
NTY1MTNlMzVjMzg0ZDRkZDMwMDJkZDM0NjcyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcApAQCAtMzg0LDcgKzM4NCw3IEBAIHZvaWQg
U3R5bGVTaGVldEhhbmRsZXI6Om9ic2VydmVDb21tZW50KHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1
bnNpZ25lZCBlbmRPZmZzZXQpCiAgICAgLy8gUmVxdWlyZSB3ZWxsLWZvcm1lZCBjb21tZW50cy4K
ICAgICBpZiAoIWNvbW1lbnRUZXh0LmVuZHNXaXRoKCIqLyIpKQogICAgICAgICByZXR1cm47Ci0g
ICAgY29tbWVudFRleHQgPSBjb21tZW50VGV4dC5zdWJzdHJpbmcoMCwgY29tbWVudFRleHQubGVu
Z3RoKCkgLSAyKS5zdHJpcFdoaXRlU3BhY2UoKTsKKyAgICBjb21tZW50VGV4dCA9IGNvbW1lbnRU
ZXh0LmxlZnQoY29tbWVudFRleHQubGVuZ3RoKCkgLSAyKS5zdHJpcFdoaXRlU3BhY2UoKTsKICAg
ICBpZiAoY29tbWVudFRleHQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAgICAgCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQu
Y3BwCmluZGV4IDU3NjYyNDRlODVkNjI3ZWVhN2FiMWNjZDVkNmE2ZDM2ODhmMmJlN2UuLjlmNWVk
NGJjMmY4Mzc1YThkZTYyODhlODE3MjZiNDM2YmYyZmRlNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC0xNzcy
LDEwICsxNzcyLDggQEAgUmVmPFByb3RvY29sOjpET006Ok5vZGU+IEluc3BlY3RvckRPTUFnZW50
OjpidWlsZE9iamVjdEZvck5vZGUoTm9kZSogbm9kZSwgaW50IGQKICAgICBjYXNlIE5vZGU6OkNP
TU1FTlRfTk9ERToKICAgICBjYXNlIE5vZGU6OkNEQVRBX1NFQ1RJT05fTk9ERToKICAgICAgICAg
bm9kZVZhbHVlID0gbm9kZS0+bm9kZVZhbHVlKCk7Ci0gICAgICAgIGlmIChub2RlVmFsdWUubGVu
Z3RoKCkgPiBtYXhUZXh0U2l6ZSkgewotICAgICAgICAgICAgbm9kZVZhbHVlID0gbm9kZVZhbHVl
LmxlZnQobWF4VGV4dFNpemUpOwotICAgICAgICAgICAgbm9kZVZhbHVlLmFwcGVuZChlbGxpcHNp
c1VDaGFyKTsKLSAgICAgICAgfQorICAgICAgICBpZiAobm9kZVZhbHVlLmxlbmd0aCgpID4gbWF4
VGV4dFNpemUpCisgICAgICAgICAgICBub2RlVmFsdWUgPSBtYWtlU3RyaW5nKFN0cmluZ1ZpZXco
bm9kZVZhbHVlKS5sZWZ0KG1heFRleHRTaXplKSwgZWxsaXBzaXNVQ2hhcik7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgTm9kZTo6QVRUUklCVVRFX05PREU6CiAgICAgICAgIGxvY2FsTmFtZSA9
IG5vZGUtPmxvY2FsTmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xh
eW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xh
eW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCmluZGV4IDRkYzM1MWU0OTIyYjc1NDY3NmNk
MDhiODE0NGQxZWFlMDUwOWQ3ODcuLmRiMGQ4ZjAxMzQ1NDllNmNmMTBlYjc4NGIwOGEyYjk3MTg5
MjcxNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91
dFRyZWVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9M
YXlvdXRUcmVlQnVpbGRlci5jcHAKQEAgLTUwMyw3ICs1MDMsNyBAQCBzdGF0aWMgdm9pZCBvdXRw
dXRMYXlvdXRCb3goVGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBCb3gmIGxheW91dEJveCwgY29u
c3QgQm94RwogCiAgICAgICAgIGNvbnN0IHNpemVfdCBtYXhQcmludGVkTGVuZ3RoID0gODA7CiAg
ICAgICAgIGlmICh0ZXh0Q29udGVudC5sZW5ndGgoKSA+IG1heFByaW50ZWRMZW5ndGgpIHsKLSAg
ICAgICAgICAgIGF1dG8gc3Vic3RyaW5nID0gdGV4dENvbnRlbnQuc3Vic3RyaW5nKDAsIG1heFBy
aW50ZWRMZW5ndGgpOworICAgICAgICAgICAgYXV0byBzdWJzdHJpbmcgPSB0ZXh0Q29udGVudC5s
ZWZ0KG1heFByaW50ZWRMZW5ndGgpOwogICAgICAgICAgICAgc3RyZWFtIDw8ICIgXCIiIDw8IHN1
YnN0cmluZy51dGY4KCkuZGF0YSgpIDw8ICJcIi4uLiI7CiAgICAgICAgIH0gZWxzZQogICAgICAg
ICAgICAgc3RyZWFtIDw8ICIgXCIiIDw8IHRleHRDb250ZW50LnV0ZjgoKS5kYXRhKCkgPDwgIlwi
IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlTWFuaWZlc3RQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdFBhcnNlci5jcHAKaW5kZXggNGExMTQ0MjVlMTE2ZDJj
NDJkMTkwMzkyM2VkZjg4NjM4M2Q4ZjA2NC4uOGQ5OWI5MzhkOTlmYjQyZjgxN2U5MGMxZThkMDdi
YzJhOGZiOGMzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVNYW5pZmVzdFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdFBhcnNlci5jcHAKQEAgLTQwLDcg
KzQwLDcgQEAgc3RhdGljIFN0cmluZ1ZpZXcgbWFuaWZlc3RQYXRoKGNvbnN0IFVSTCYgbWFuaWZl
c3RVUkwpCiB7CiAgICAgYXV0byBtYW5pZmVzdFBhdGggPSBtYW5pZmVzdFVSTC5wYXRoKCk7CiAg
ICAgQVNTRVJUKG1hbmlmZXN0UGF0aFswXSA9PSAnLycpOwotICAgIG1hbmlmZXN0UGF0aCA9IG1h
bmlmZXN0UGF0aC5zdWJzdHJpbmcoMCwgbWFuaWZlc3RQYXRoLnJldmVyc2VGaW5kKCcvJykgKyAx
KTsKKyAgICBtYW5pZmVzdFBhdGggPSBtYW5pZmVzdFBhdGgubGVmdChtYW5pZmVzdFBhdGgucmV2
ZXJzZUZpbmQoJy8nKSArIDEpOwogICAgIEFTU0VSVChtYW5pZmVzdFBhdGhbMF0gPT0gbWFuaWZl
c3RQYXRoW21hbmlmZXN0UGF0aC5sZW5ndGgoKSAtIDFdKTsKICAgICByZXR1cm4gbWFuaWZlc3RQ
YXRoOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFByZXNlbnRh
dGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFByZXNlbnRhdGlv
bkVsZW1lbnQuY3BwCmluZGV4IDUxMDIyYzY3NWQyNGYwYmI4YTUzYjE5NWZlODhiMWFmMDNkMTM3
MDMuLjVlMDc2M2RmOTAxZTk3YjVhNWZlZjA4MjIxNDA0MmNlZmFkODc3NDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxQcmVzZW50YXRpb25FbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudC5jcHAKQEAg
LTIzNSw3ICsyMzUsNyBAQCBNYXRoTUxFbGVtZW50OjpMZW5ndGggTWF0aE1MUHJlc2VudGF0aW9u
RWxlbWVudDo6cGFyc2VOdW1iZXJBbmRVbml0KFN0cmluZ1ZpZXcgcwogICAgIH0KIAogICAgIGJv
b2wgb2s7Ci0gICAgZmxvYXQgbGVuZ3RoVmFsdWUgPSBzdHJpbmcuc3Vic3RyaW5nKDAsIHN0cmlu
Z0xlbmd0aCkudG9GbG9hdChvayk7CisgICAgZmxvYXQgbGVuZ3RoVmFsdWUgPSBzdHJpbmcubGVm
dChzdHJpbmdMZW5ndGgpLnRvRmxvYXQob2spOwogICAgIGlmICghb2spCiAgICAgICAgIHJldHVy
biBMZW5ndGgoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAppbmRleCA5ZmFmOGFkZjY5YjVjYzU1YzJi
M2FmYTdhYTYxY2UyYmRjMGEwNDdmLi4xY2FlY2NmOWY0MDRkYTNmZDAzMWUxM2RjZWZkZjVhNDI3
ZGQzMjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcApAQCAtMzg5LDcgKzM4OSw3IEBAIHN0YXRpYyBK
U0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uIGNyZWF0ZVJlZ0V4cEZvckxhYmVscyhjb25zdCBW
ZWN0b3I8U3RyaW5nPiYKICAgICAgICAgYm9vbCBzdGFydHNXaXRoV29yZENoYXJhY3RlciA9IGZh
bHNlOwogICAgICAgICBib29sIGVuZHNXaXRoV29yZENoYXJhY3RlciA9IGZhbHNlOwogICAgICAg
ICBpZiAobGFiZWwubGVuZ3RoKCkpIHsKLSAgICAgICAgICAgIHN0YXJ0c1dpdGhXb3JkQ2hhcmFj
dGVyID0gd29yZFJlZ0V4cC5nZXQoKS5tYXRjaChsYWJlbC5zdWJzdHJpbmcoMCwgMSkpID49IDA7
CisgICAgICAgICAgICBzdGFydHNXaXRoV29yZENoYXJhY3RlciA9IHdvcmRSZWdFeHAuZ2V0KCku
bWF0Y2gobGFiZWwubGVmdCgxKSkgPj0gMDsKICAgICAgICAgICAgIGVuZHNXaXRoV29yZENoYXJh
Y3RlciA9IHdvcmRSZWdFeHAuZ2V0KCkubWF0Y2gobGFiZWwuc3Vic3RyaW5nKGxhYmVsLmxlbmd0
aCgpIC0gMSwgMSkpID49IDA7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1
cml0eU9yaWdpbkRhdGEuY3BwCmluZGV4IGE2ODJjY2JhNzU0MjlkNzI4NTI2ZDhhY2Y4ZmIwZWU3
NTIyZDIyNWIuLjg1YWE2NDJkMTE2NjZhYTYyOGJiNWRlMTE1ZWU3NjZiNzE5ZWRkZGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAKQEAgLTExNSw3ICsxMTUs
NyBAQCBzdGQ6Om9wdGlvbmFsPFNlY3VyaXR5T3JpZ2luRGF0YT4gU2VjdXJpdHlPcmlnaW5EYXRh
Ojpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKFN0cgogICAgIGlmIChwb3J0ICYmICEqcG9ydCkKICAg
ICAgICAgcG9ydCA9IHN0ZDo6bnVsbG9wdDsKIAotICAgIGF1dG8gcHJvdG9jb2wgPSBkYXRhYmFz
ZUlkZW50aWZpZXIuc3Vic3RyaW5nKDAsIHNlcGFyYXRvcjEpOworICAgIGF1dG8gcHJvdG9jb2wg
PSBkYXRhYmFzZUlkZW50aWZpZXIubGVmdChzZXBhcmF0b3IxKTsKICAgICBhdXRvIGhvc3QgPSBk
YXRhYmFzZUlkZW50aWZpZXIuc3Vic3RyaW5nKHNlcGFyYXRvcjEgKyAxLCBzZXBhcmF0b3IyIC0g
c2VwYXJhdG9yMSAtIDEpOwogICAgIHJldHVybiBTZWN1cml0eU9yaWdpbkRhdGEgeyBwcm90b2Nv
bC50b1N0cmluZygpLCBob3N0LnRvU3RyaW5nKCksIHBvcnQgfTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlVHJlZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVRyZWUuY3BwCmluZGV4IGRm
NmJiMGI1ZjdlOTNiMTY5OWVhODliODFiNGNmM2NkMmZlZWE3OTkuLjhhMmVlZmJmYmUxNjFhZTdk
ZWJmYWRiYjE0MmViYjVhMTNmNGU1ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlVHJlZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVUcmVlLmNwcApAQCAtMzgxLDEwICszODEsMTEgQEAg
U3RyaW5nIFNjcm9sbGluZ1N0YXRlVHJlZTo6c2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0KE9wdGlv
blNldDxTY3JvbGxpbmdTdGF0ZVRyZWUKICAgICBpZiAoIXJvb3RTdGF0ZU5vZGUoKSkKICAgICAg
ICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKLSAgICBhdXRvIHN0YXRlVHJlZUFzU3RyaW5nID0g
cm9vdFN0YXRlTm9kZSgpLT5zY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHQoYmVoYXZpb3IpOworICAg
IFN0cmluZ0J1aWxkZXIgc3RhdGVUcmVlQXNTdHJpbmc7CisgICAgc3RhdGVUcmVlQXNTdHJpbmcu
YXBwZW5kKHJvb3RTdGF0ZU5vZGUoKS0+c2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0KGJlaGF2aW9y
KSk7CiAgICAgaWYgKCFtX3VucGFyZW50ZWROb2Rlcy5pc0VtcHR5KCkpCi0gICAgICAgIHN0YXRl
VHJlZUFzU3RyaW5nLmFwcGVuZChtYWtlU3RyaW5nKCJcbnVucGFyZW50ZWQgbm9kZSBjb3VudDog
IiwgbV91bnBhcmVudGVkTm9kZXMuc2l6ZSgpKSk7Ci0gICAgcmV0dXJuIHN0YXRlVHJlZUFzU3Ry
aW5nOworICAgICAgICBzdGF0ZVRyZWVBc1N0cmluZy5hcHBlbmQoIlxudW5wYXJlbnRlZCBub2Rl
IGNvdW50OiAiLCBtX3VucGFyZW50ZWROb2Rlcy5zaXplKCkpOworICAgIHJldHVybiBzdGF0ZVRy
ZWVBc1N0cmluZy50b1N0cmluZygpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRTdHJpbmdIYXNoLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFN0cmluZ0hhc2guY3BwCmluZGV4IGI5MzRlNmZh
M2FmM2ZjZmIxMWQ0OTcwMjM1NjAxNjJiZGI1YmZjNTIuLmE4NGYzNTljMzRiODQ0NjE3MGY4Yjlk
MGViZTFkZGM2YjgzZWQ4ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1No
YXJlZFN0cmluZ0hhc2guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFN0
cmluZ0hhc2guY3BwCkBAIC0yNTksMTMgKzI1OSwxMyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSB2
b2lkIGNvbXB1dGVTaGFyZWRTdHJpbmdIYXNoSW5saW5lKGNvbnN0IFVSTCYgYmFzZSwgY29uc3Qg
QwogICAgIGVsc2UgewogICAgICAgICBzd2l0Y2ggKGNoYXJhY3RlcnNbMF0pIHsKICAgICAgICAg
Y2FzZSAnLyc6Ci0gICAgICAgICAgICBhcHBlbmQoYnVmZmVyLCBTdHJpbmdWaWV3KGJhc2Uuc3Ry
aW5nKCkpLnN1YnN0cmluZygwLCBiYXNlLnBhdGhTdGFydCgpKSk7CisgICAgICAgICAgICBhcHBl
bmQoYnVmZmVyLCBTdHJpbmdWaWV3KGJhc2Uuc3RyaW5nKCkpLmxlZnQoYmFzZS5wYXRoU3RhcnQo
KSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgJyMnOgotICAgICAgICAgICAg
YXBwZW5kKGJ1ZmZlciwgU3RyaW5nVmlldyhiYXNlLnN0cmluZygpKS5zdWJzdHJpbmcoMCwgYmFz
ZS5wYXRoRW5kKCkpKTsKKyAgICAgICAgICAgIGFwcGVuZChidWZmZXIsIFN0cmluZ1ZpZXcoYmFz
ZS5zdHJpbmcoKSkubGVmdChiYXNlLnBhdGhFbmQoKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBhcHBlbmQoYnVmZmVyLCBTdHJpbmdWaWV3KGJh
c2Uuc3RyaW5nKCkpLnN1YnN0cmluZygwLCBiYXNlLnBhdGhBZnRlckxhc3RTbGFzaCgpKSk7Cisg
ICAgICAgICAgICBhcHBlbmQoYnVmZmVyLCBTdHJpbmdWaWV3KGJhc2Uuc3RyaW5nKCkpLmxlZnQo
YmFzZS5wYXRoQWZ0ZXJMYXN0U2xhc2goKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9I
RVZDVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0hFVkNV
dGlsaXRpZXMuY3BwCmluZGV4IGMyMGIwNjUwMThhZTdiZWRlMDQxN2ZlMzNlMWVlODQwYzk0NGU0
Y2EuLmZmMjc4ZTk1NzMxZjBhN2QwYTFkZTMzZjdkZmY4NTVlZTlhZTQ2NTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0hFVkNVdGlsaXRpZXMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0hFVkNVdGlsaXRpZXMuY3BwCkBAIC0y
MDIsMTMgKzIwMiw2IEBAIHN0ZDo6b3B0aW9uYWw8SEVWQ1BhcmFtZXRlcnM+IHBhcnNlSEVWQ0Nv
ZGVjUGFyYW1ldGVycyhTdHJpbmdWaWV3IGNvZGVjU3RyaW5nKQogCiBTdHJpbmcgY3JlYXRlSEVW
Q0NvZGVjUGFyYW1ldGVyc1N0cmluZyhjb25zdCBIRVZDUGFyYW1ldGVycyYgcGFyYW1ldGVycykK
IHsKLSAgICAvLyBUaGUgZm9ybWF0IG9mIHRoZSAnaGV2YycgY29kZWMgc3RyaW5nIGlzIHNwZWNp
ZmllZCBpbiBJU08vSUVDIDE0NDk2LTE1OjIwMTQsIEFubmV4IEUuMy4KLSAgICBjaGFyIHByb2Zp
bGVTcGFjZUNoYXJhY3RlciA9ICdBJyArIHBhcmFtZXRlcnMuZ2VuZXJhbFByb2ZpbGVTcGFjZSAt
IDE7Ci0KLSAgICBTdHJpbmcgcHJvZmlsZVNwYWNlU3RyaW5nOwotICAgIGlmIChwYXJhbWV0ZXJz
LmdlbmVyYWxQcm9maWxlU3BhY2UpCi0gICAgICAgIHByb2ZpbGVTcGFjZVN0cmluZy5hcHBlbmQo
cHJvZmlsZVNwYWNlQ2hhcmFjdGVyKTsKLQogICAgIC8vIEZvciB0aGUgc2Vjb25kIHBhcmFtZXRl
ciwgZnJvbSBJU08vSUVDIDE0NDk2LTE1OjIwMTQsIEFubmV4IEUuMy4KICAgICAvLyAqIHRoZSAz
MiBiaXRzIG9mIHRoZSBnZW5lcmFsX3Byb2ZpbGVfY29tcGF0aWJpbGl0eV9mbGFncywgYnV0IGlu
IHJldmVyc2UgYml0IG9yZGVyLCBpLmUuIHdpdGgKICAgICAvLyBnZW5lcmFsX3Byb2ZpbGVfY29t
cGF0aWJpbGl0eV9mbGFnWyAzMSBdIGFzIHRoZSBtb3N0IHNpZ25pZmljYW50IGJpdCwgZm9sbG93
ZWQgYnksIGdlbmVyYWxfcHJvZmlsZV9jb21wYXRpYmlsaXR5X2ZsYWdbIDMwIF0sCkBAIC0yMjYs
MTYgKzIxOSwxNiBAQCBTdHJpbmcgY3JlYXRlSEVWQ0NvZGVjUGFyYW1ldGVyc1N0cmluZyhjb25z
dCBIRVZDUGFyYW1ldGVycyYgcGFyYW1ldGVycykKICAgICAgICAgY29tcGF0aWJpbGl0eUZsYWdz
LmFwcGVuZChoZXgocGFyYW1ldGVycy5nZW5lcmFsQ29uc3RyYWludEluZGljYXRvckZsYWdzW2ld
LCAyKSk7CiAgICAgfQogCi0gICAgcmV0dXJuIG1ha2VTdHJpbmcocGFyYW1ldGVycy5jb2RlYyA9
PSBIRVZDUGFyYW1ldGVyczo6Q29kZWM6OkhldjEgPyAiaGV2MSIgOiAiaHZjMSIKLSAgICAgICAg
LCAnLicKLSAgICAgICAgLCBwcm9maWxlU3BhY2VTdHJpbmcKLSAgICAgICAgLCBwYXJhbWV0ZXJz
LmdlbmVyYWxQcm9maWxlSURDCi0gICAgICAgICwgJy4nCi0gICAgICAgICwgY29tcGF0RmxhZ1Bh
cmFtZXRlcgotICAgICAgICAsICcuJwotICAgICAgICAsIHBhcmFtZXRlcnMuZ2VuZXJhbFRpZXJG
bGFnID8gJ0gnIDogJ0wnCi0gICAgICAgICwgcGFyYW1ldGVycy5nZW5lcmFsTGV2ZWxJREMKLSAg
ICAgICAgLCBjb21wYXRpYmlsaXR5RmxhZ3MudG9TdHJpbmcoKSk7CisgICAgU3RyaW5nQnVpbGRl
ciByZXN1bHRCdWlsZGVyOworICAgIHJlc3VsdEJ1aWxkZXIuYXBwZW5kKHBhcmFtZXRlcnMuY29k
ZWMgPT0gSEVWQ1BhcmFtZXRlcnM6OkNvZGVjOjpIZXYxID8gImhldjEiIDogImh2YzEiLCAnLicp
OworICAgIGlmIChwYXJhbWV0ZXJzLmdlbmVyYWxQcm9maWxlU3BhY2UpIHsKKyAgICAgICAgLy8g
VGhlIGZvcm1hdCBvZiB0aGUgJ2hldmMnIGNvZGVjIHN0cmluZyBpcyBzcGVjaWZpZWQgaW4gSVNP
L0lFQyAxNDQ5Ni0xNToyMDE0LCBBbm5leCBFLjMuCisgICAgICAgIGNoYXIgcHJvZmlsZVNwYWNl
Q2hhcmFjdGVyID0gJ0EnICsgcGFyYW1ldGVycy5nZW5lcmFsUHJvZmlsZVNwYWNlIC0gMTsKKyAg
ICAgICAgcmVzdWx0QnVpbGRlci5hcHBlbmQocHJvZmlsZVNwYWNlQ2hhcmFjdGVyKTsKKyAgICB9
CisgICAgcmVzdWx0QnVpbGRlci5hcHBlbmQocGFyYW1ldGVycy5nZW5lcmFsUHJvZmlsZUlEQywg
Jy4nLCBjb21wYXRGbGFnUGFyYW1ldGVyLCAnLicsIHBhcmFtZXRlcnMuZ2VuZXJhbFRpZXJGbGFn
ID8gJ0gnIDogJ0wnLCBwYXJhbWV0ZXJzLmdlbmVyYWxMZXZlbElEQyk7CisgICAgcmVzdWx0QnVp
bGRlci5hcHBlbmQoY29tcGF0aWJpbGl0eUZsYWdzKTsKKyAgICByZXR1cm4gcmVzdWx0QnVpbGRl
ci50b1N0cmluZygpOwogfQogCiBzdGQ6Om9wdGlvbmFsPEhFVkNQYXJhbWV0ZXJzPiBwYXJzZUhF
VkNEZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZChGb3VyQ0MgY29kZWNDb2RlLCBjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1N0cmluZ1RydW5jYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9TdHJpbmdUcnVuY2F0b3IuY3BwCmluZGV4IGE2M2ZjOGE3M2VjYmUxZDQ0ZWU0N2I2M2Iw
YmNlMzlhMTE3Mzc2MGIuLjIzYjM5OTU4ZGRmNjUzODI2YmQ3YjI0MjcwNDJiMjc3ODU3ODhjYmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1N0cmluZ1RydW5j
YXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU3RyaW5nVHJ1
bmNhdG9yLmNwcApAQCAtNjUsNyArNjUsNyBAQCBzdGF0aWMgdW5zaWduZWQgY2VudGVyVHJ1bmNh
dGVUb0J1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgbGVuZ3RoLCB1bgogICAg
IEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGtlZXBDb3VudCA8IFNUUklOR19CVUZG
RVJfU0laRSk7CiAgICAgCiAgICAgdW5zaWduZWQgb21pdFN0YXJ0ID0gKGtlZXBDb3VudCArIDEp
IC8gMjsKLSAgICBOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yIGl0KFN0cmluZ1ZpZXco
c3RyaW5nKS5zdWJzdHJpbmcoMCwgbGVuZ3RoKSk7CisgICAgTm9uU2hhcmVkQ2hhcmFjdGVyQnJl
YWtJdGVyYXRvciBpdChTdHJpbmdWaWV3KHN0cmluZykubGVmdChsZW5ndGgpKTsKICAgICB1bnNp
Z25lZCBvbWl0RW5kID0gYm91bmRlZFRleHRCcmVha0ZvbGxvd2luZyhpdCwgb21pdFN0YXJ0ICsg
KGxlbmd0aCAtIGtlZXBDb3VudCkgLSAxLCBsZW5ndGgpOwogICAgIG9taXRTdGFydCA9IHRleHRC
cmVha0F0T3JQcmVjZWRpbmcoaXQsIG9taXRTdGFydCk7CiAKQEAgLTkzLDcgKzkzLDcgQEAgc3Rh
dGljIHVuc2lnbmVkIGNlbnRlclRydW5jYXRlVG9CdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcs
IHVuc2lnbmVkIGxlbmd0aCwgdW4KICAgICB1bnNpZ25lZCB0cnVuY2F0ZWRMZW5ndGggPSBvbWl0
U3RhcnQgKyBzaG91bGRJbnNlcnRFbGxpcHNpcyArIChsZW5ndGggLSBvbWl0RW5kKTsKICAgICBB
U1NFUlQodHJ1bmNhdGVkTGVuZ3RoIDw9IGxlbmd0aCk7CiAKLSAgICBTdHJpbmdWaWV3KHN0cmlu
Zykuc3Vic3RyaW5nKDAsIG9taXRTdGFydCkuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoYnVm
ZmVyKTsKKyAgICBTdHJpbmdWaWV3KHN0cmluZykubGVmdChvbWl0U3RhcnQpLmdldENoYXJhY3Rl
cnNXaXRoVXBjb252ZXJ0KGJ1ZmZlcik7CiAgICAgaWYgKHNob3VsZEluc2VydEVsbGlwc2lzKQog
ICAgICAgICBidWZmZXJbb21pdFN0YXJ0KytdID0gaG9yaXpvbnRhbEVsbGlwc2lzOwogICAgIFN0
cmluZ1ZpZXcoc3RyaW5nKS5zdWJzdHJpbmcob21pdEVuZCwgbGVuZ3RoIC0gb21pdEVuZCkuZ2V0
Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoJmJ1ZmZlcltvbWl0U3RhcnRdKTsKQEAgLTExOSwxMSAr
MTE5LDExIEBAIHN0YXRpYyB1bnNpZ25lZCByaWdodFRydW5jYXRlVG9CdWZmZXIoY29uc3QgU3Ry
aW5nJiBzdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCwgdW5zCiAgICAgICAgIC0ta2VlcENvdW50Owog
I2VuZGlmCiAKLSAgICBOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yIGl0KFN0cmluZ1Zp
ZXcoc3RyaW5nKS5zdWJzdHJpbmcoMCwgbGVuZ3RoKSk7CisgICAgTm9uU2hhcmVkQ2hhcmFjdGVy
QnJlYWtJdGVyYXRvciBpdChTdHJpbmdWaWV3KHN0cmluZykubGVmdChsZW5ndGgpKTsKICAgICB1
bnNpZ25lZCBrZWVwTGVuZ3RoID0gdGV4dEJyZWFrQXRPclByZWNlZGluZyhpdCwga2VlcENvdW50
KTsKICAgICB1bnNpZ25lZCB0cnVuY2F0ZWRMZW5ndGggPSBzaG91bGRJbnNlcnRFbGxpcHNpcyA/
IGtlZXBMZW5ndGggKyAxIDoga2VlcExlbmd0aDsKIAotICAgIFN0cmluZ1ZpZXcoc3RyaW5nKS5z
dWJzdHJpbmcoMCwga2VlcExlbmd0aCkuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoYnVmZmVy
KTsKKyAgICBTdHJpbmdWaWV3KHN0cmluZykubGVmdChrZWVwTGVuZ3RoKS5nZXRDaGFyYWN0ZXJz
V2l0aFVwY29udmVydChidWZmZXIpOwogICAgIGlmIChzaG91bGRJbnNlcnRFbGxpcHNpcykKICAg
ICAgICAgYnVmZmVyW2tlZXBMZW5ndGhdID0gaG9yaXpvbnRhbEVsbGlwc2lzOwogCkBAIC0xMzUs
OSArMTM1LDkgQEAgc3RhdGljIHVuc2lnbmVkIHJpZ2h0Q2xpcFRvQ2hhcmFjdGVyQnVmZmVyKGNv
bnN0IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgKICAgICBBU1NFUlQoa2VlcENvdW50
IDwgbGVuZ3RoKTsKICAgICBBU1NFUlQoa2VlcENvdW50IDwgU1RSSU5HX0JVRkZFUl9TSVpFKTsK
IAotICAgIE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IgaXQoU3RyaW5nVmlldyhzdHJp
bmcpLnN1YnN0cmluZygwLCBsZW5ndGgpKTsKKyAgICBOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0
ZXJhdG9yIGl0KFN0cmluZ1ZpZXcoc3RyaW5nKS5sZWZ0KGxlbmd0aCkpOwogICAgIHVuc2lnbmVk
IGtlZXBMZW5ndGggPSB0ZXh0QnJlYWtBdE9yUHJlY2VkaW5nKGl0LCBrZWVwQ291bnQpOwotICAg
IFN0cmluZ1ZpZXcoc3RyaW5nKS5zdWJzdHJpbmcoMCwga2VlcExlbmd0aCkuZ2V0Q2hhcmFjdGVy
c1dpdGhVcGNvbnZlcnQoYnVmZmVyKTsKKyAgICBTdHJpbmdWaWV3KHN0cmluZykubGVmdChrZWVw
TGVuZ3RoKS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChidWZmZXIpOwogCiAgICAgcmV0dXJu
IGtlZXBMZW5ndGg7CiB9CkBAIC0xNDcsOSArMTQ3LDkgQEAgc3RhdGljIHVuc2lnbmVkIHJpZ2h0
Q2xpcFRvV29yZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgbGVuZ3RoLCB1
bnMKICAgICBBU1NFUlQoa2VlcENvdW50IDwgbGVuZ3RoKTsKICAgICBBU1NFUlQoa2VlcENvdW50
IDwgU1RSSU5HX0JVRkZFUl9TSVpFKTsKIAotICAgIFVCcmVha0l0ZXJhdG9yKiBpdCA9IHdvcmRC
cmVha0l0ZXJhdG9yKFN0cmluZ1ZpZXcoc3RyaW5nKS5zdWJzdHJpbmcoMCwgbGVuZ3RoKSk7Cisg
ICAgVUJyZWFrSXRlcmF0b3IqIGl0ID0gd29yZEJyZWFrSXRlcmF0b3IoU3RyaW5nVmlldyhzdHJp
bmcpLmxlZnQobGVuZ3RoKSk7CiAgICAgdW5zaWduZWQga2VlcExlbmd0aCA9IHRleHRCcmVha0F0
T3JQcmVjZWRpbmcoaXQsIGtlZXBDb3VudCk7Ci0gICAgU3RyaW5nVmlldyhzdHJpbmcpLnN1YnN0
cmluZygwLCBrZWVwTGVuZ3RoKS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChidWZmZXIpOwor
ICAgIFN0cmluZ1ZpZXcoc3RyaW5nKS5sZWZ0KGtlZXBMZW5ndGgpLmdldENoYXJhY3RlcnNXaXRo
VXBjb252ZXJ0KGJ1ZmZlcik7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIEZJ
WE1FOiBXZSBzaG91bGQgZ3VhcmQgdGhpcyBjb2RlIGJlaGluZCBhbiBlZGl0aW5nIGJlaGF2aW9y
LiBUaGVuIHdlIGNhbiByZW1vdmUgdGhlIFBMQVRGT1JNKElPU19GQU1JTFkpLWd1YXJkLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCA1OThj
MWEwMWQ4YTM4OWM4NmIzMDlhZGM1ZmIyMmUwZWRhYmIwMmJmLi5hMzVhM2EyMDZhZjE0NmRkYjU3
MGVkNDQxYjYyNTQ1M2ZjZjkwNWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyLmNwcApAQCAtOTQxLDcgKzk0MSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjpzZXRQbGF5YmluVVJMKGNvbnN0IFVSTCYgdXJsKQogICAgIC8vIENs
ZWFuIG91dCBldmVyeXRoaW5nIGFmdGVyIGZpbGU6Ly8gdXJsIHBhdGguCiAgICAgU3RyaW5nIGNs
ZWFuVVJMU3RyaW5nKHVybC5zdHJpbmcoKSk7CiAgICAgaWYgKHVybC5pc0xvY2FsRmlsZSgpKQot
ICAgICAgICBjbGVhblVSTFN0cmluZyA9IGNsZWFuVVJMU3RyaW5nLnN1YnN0cmluZygwLCB1cmwu
cGF0aEVuZCgpKTsKKyAgICAgICAgY2xlYW5VUkxTdHJpbmcgPSBjbGVhblVSTFN0cmluZy5sZWZ0
KHVybC5wYXRoRW5kKCkpOwogCiAgICAgbV91cmwgPSBVUkwgeyBjbGVhblVSTFN0cmluZyB9Owog
ICAgIEdTVF9JTkZPX09CSkVDVChwaXBlbGluZSgpLCAiTG9hZCAlcyIsIG1fdXJsLnN0cmluZygp
LnV0ZjgoKS5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL21zZS9Tb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvU291cmNlQnVmZmVy
UHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNWQ1NDE5ZTg0OGVhNjZlNDVmNWQ4MzM1YjVjOTYy
Y2U2NDQ1OWQ1YS4uZWJhYjA5ZGUxNTA3NmVhMmFjOGMwNTAxOTM5NTM1ODQwMTU2YTJkNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9T
b3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1NvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIu
Y3BwCkBAIC0zMTAsNyArMzEwLDcgQEAgc2l6ZV90IFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFt
ZXI6OnBsYXRmb3JtTWF4aW11bUJ1ZmZlclNpemUoKSBjb25zdAogICAgICAgICAgICAgICAgIGVs
c2UgaWYgKHZhbHVlLmVuZHNXaXRoKCdtJykpCiAgICAgICAgICAgICAgICAgICAgIHVuaXRzID0g
MTAyNCAqIDEwMjQ7CiAgICAgICAgICAgICAgICAgaWYgKHVuaXRzICE9IDEpCi0gICAgICAgICAg
ICAgICAgICAgIHZhbHVlID0gdmFsdWUuc3Vic3RyaW5nKDAsIHZhbHVlLmxlbmd0aCgpLTEpOwor
ICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLmxlZnQodmFsdWUubGVuZ3RoKCktMSk7
CiAgICAgICAgICAgICAgICAgYXV0byBwYXJzZWRTaXplID0gcGFyc2VJbnRlZ2VyPHNpemVfdD4o
dmFsdWUpOwogICAgICAgICAgICAgICAgIGlmICghcGFyc2VkU2l6ZSkKICAgICAgICAgICAgICAg
ICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udENhY2hlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9Gb250Q2FjaGVXaW4uY3BwCmluZGV4IDQ1MDRkMDE4ZjFkNzdkMjQ0YjM3YzlhYjhl
ZTZiYmY0ODMyMTIxNGIuLjY2MTNmYzQxNmYyN2ExY2VlNjQ1YjVhM2ZiZjI1YTJjYTdjNjBjZjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q2Fj
aGVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250
Q2FjaGVXaW4uY3BwCkBAIC01MTcsNyArNTE3LDcgQEAgc3RhdGljIEdESU9iamVjdDxIRk9OVD4g
Y3JlYXRlR0RJRm9udChjb25zdCBBdG9tU3RyaW5nJiBmYW1pbHksIExPTkcgZGVzaXJlZFdlaWcK
IAogICAgIExPR0ZPTlQgbG9nRm9udDsKICAgICBsb2dGb250LmxmQ2hhclNldCA9IERFRkFVTFRf
Q0hBUlNFVDsKLSAgICBTdHJpbmdWaWV3IHRydW5jYXRlZEZhbWlseSA9IFN0cmluZ1ZpZXcoZmFt
aWx5KS5zdWJzdHJpbmcoMCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExGX0ZBQ0VTSVpFIC0gMSkp
OworICAgIFN0cmluZ1ZpZXcgdHJ1bmNhdGVkRmFtaWx5ID0gU3RyaW5nVmlldyhmYW1pbHkpLmxl
ZnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExGX0ZBQ0VTSVpFIC0gMSkpOwogICAgIHRydW5jYXRl
ZEZhbWlseS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydCh1Y2hhckZyb20obG9nRm9udC5sZkZh
Y2VOYW1lKSk7CiAgICAgbG9nRm9udC5sZkZhY2VOYW1lW3RydW5jYXRlZEZhbWlseS5sZW5ndGgo
KV0gPSAwOwogICAgIGxvZ0ZvbnQubGZQaXRjaEFuZEZhbWlseSA9IDA7CkBAIC02MzEsNyArNjMx
LDcgQEAgVmVjdG9yPEZvbnRTZWxlY3Rpb25DYXBhYmlsaXRpZXM+IEZvbnRDYWNoZTo6Z2V0Rm9u
dFNlbGVjdGlvbkNhcGFiaWxpdGllc0luRmFtaWwKIAogICAgIExPR0ZPTlQgbG9nRm9udDsKICAg
ICBsb2dGb250LmxmQ2hhclNldCA9IERFRkFVTFRfQ0hBUlNFVDsKLSAgICBTdHJpbmdWaWV3IHRy
dW5jYXRlZEZhbWlseSA9IFN0cmluZ1ZpZXcoZmFtaWx5TmFtZSkuc3Vic3RyaW5nKDAsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihMRl9GQUNFU0laRSAtIDEpKTsKKyAgICBTdHJpbmdWaWV3IHRydW5j
YXRlZEZhbWlseSA9IFN0cmluZ1ZpZXcoZmFtaWx5TmFtZSkubGVmdChzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oTEZfRkFDRVNJWkUgLSAxKSk7CiAgICAgdHJ1bmNhdGVkRmFtaWx5LmdldENoYXJhY3Rl
cnNXaXRoVXBjb252ZXJ0KHVjaGFyRnJvbShsb2dGb250LmxmRmFjZU5hbWUpKTsKICAgICBsb2dG
b250LmxmRmFjZU5hbWVbdHJ1bmNhdGVkRmFtaWx5Lmxlbmd0aCgpXSA9IDA7CiAgICAgbG9nRm9u
dC5sZlBpdGNoQW5kRmFtaWx5ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9Vc2VyQWdlbnRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNl
ckFnZW50SU9TLm1tCmluZGV4IDhkNWM0M2RlODM5NTU5OGMyMzk5YTM4YTgzZGVhMzhjMTRkMjk2
YTUuLjM3ZjE3MzQwNjNiNzhjMzE4NzM4OWQ2OTA1NWQzZDYxZWE2YjFkZjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Vc2VyQWdlbnRJT1MubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbQpAQCAtNzQsNyArNzQsNyBAQCBz
dGF0aWMgU3RyaW5nVmlldyBkZXZpY2VOYW1lRm9yVXNlckFnZW50KCkKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZX1NJTVVMQVRPUikKICAgICAgICAgc2l6ZV90IGxvY2F0aW9uID0gbmFtZS5maW5k
KCIgU2ltdWxhdG9yIik7CiAgICAgICAgIGlmIChsb2NhdGlvbiAhPSBub3RGb3VuZCkKLSAgICAg
ICAgICAgIHJldHVybiBuYW1lLnN1YnN0cmluZygwLCBsb2NhdGlvbik7CisgICAgICAgICAgICBy
ZXR1cm4gbmFtZS5sZWZ0KGxvY2F0aW9uKTsKICNlbmRpZgogICAgICAgICByZXR1cm4gbmFtZTsK
ICAgICB9KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Nh
Y2hlVmFsaWRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NhY2hl
VmFsaWRhdGlvbi5jcHAKaW5kZXggODVlMjRhNGE3ZmM4MGM2NTZjZjQ4ODhlOTI3YWIwYjViYjA0
ZjVhMS4uYzc0MzE4OTkyOGIzZjZhOWJiMzlmNmZmNGZjMDk5M2ZlMDkwY2I1NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ2FjaGVWYWxpZGF0aW9uLmNwcApA
QCAtMjEwLDcgKzIxMCw3IEBAIGlubGluZSBib29sIGlzQ29udHJvbENoYXJhY3Rlck9yU3BhY2Uo
VUNoYXIgY2hhcmFjdGVyKQogCiBpbmxpbmUgU3RyaW5nVmlldyB0cmltVG9OZXh0U2VwYXJhdG9y
KFN0cmluZ1ZpZXcgc3RyaW5nKQogewotICAgIHJldHVybiBzdHJpbmcuc3Vic3RyaW5nKDAsIHN0
cmluZy5maW5kKGlzQ2FjaGVIZWFkZXJTZXBhcmF0b3IpKTsKKyAgICByZXR1cm4gc3RyaW5nLmxl
ZnQoc3RyaW5nLmZpbmQoaXNDYWNoZUhlYWRlclNlcGFyYXRvcikpOwogfQogCiBzdGF0aWMgVmVj
dG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+IHBhcnNlQ2FjaGVIZWFkZXIoY29uc3QgU3Ry
aW5nJiBoZWFkZXIpCkBAIC0yNjYsNyArMjY2LDcgQEAgc3RhdGljIFZlY3RvcjxzdGQ6OnBhaXI8
U3RyaW5nLCBTdHJpbmc+PiBwYXJzZUNhY2hlSGVhZGVyKGNvbnN0IFN0cmluZyYgaGVhZGVyKQog
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogICAgICAgICAvLyBUaGUgdmFs
dWUgaXMgZGVsaW1pdGVkIGJ5IHRoZSBuZXh0IGNvbW1hCi0gICAgICAgIHJlc3VsdC5hcHBlbmQo
eyBkaXJlY3RpdmUsIHRyaW1Ub05leHRTZXBhcmF0b3IodmFsdWUuc3Vic3RyaW5nKDAsIG5leHRD
b21tYVBvc2l0aW9uMikpLnRvU3RyaW5nKCkgfSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoeyBk
aXJlY3RpdmUsIHRyaW1Ub05leHRTZXBhcmF0b3IodmFsdWUubGVmdChuZXh0Q29tbWFQb3NpdGlv
bjIpKS50b1N0cmluZygpIH0pOwogICAgICAgICBwb3MgKz0gKHNhZmVIZWFkZXIuZmluZCgnLCcs
IHBvcykgLSBwb3MpICsgMTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5jcHAKaW5k
ZXggNGVlN2JkMTBmY2MyY2QwMzk1NzU5YjM2ZTA0NTY2ZjAyYWIxYTRjNy4uNjU0YTZhNDBiZDQ0
OWI3NzhmMDJmOTliM2Q0NzdjNjdiZWM2MmU5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5jcHAKQEAgLTQ2LDEzICs0Niwx
MyBAQCBzdGF0aWMgU3RyaW5nIHByb3RlY3Rpb25TcGFjZU1hcEtleUZyb21VUkwoY29uc3QgVVJM
JiB1cmwpCiAKICAgICAvLyBSZW1vdmUgdGhlIGxhc3QgcGF0aCBjb21wb25lbnQgdGhhdCBpcyBu
b3QgYSBkaXJlY3RvcnkgdG8gZGV0ZXJtaW5lIHRoZSBzdWJ0cmVlIGZvciB3aGljaCBjcmVkZW50
aWFscyB3aWxsIGFwcGx5LgogICAgIC8vIFdlIGtlZXAgYSBsZWFkaW5nIHNsYXNoLCBidXQgcmVt
b3ZlIGEgdHJhaWxpbmcgb25lLgotICAgIFN0cmluZyBkaXJlY3RvcnlVUkwgPSB1cmwuc3RyaW5n
KCkuc3Vic3RyaW5nKDAsIHVybC5wYXRoRW5kKCkpOworICAgIFN0cmluZyBkaXJlY3RvcnlVUkwg
PSB1cmwuc3RyaW5nKCkubGVmdCh1cmwucGF0aEVuZCgpKTsKICAgICB1bnNpZ25lZCBkaXJlY3Rv
cnlVUkxQYXRoU3RhcnQgPSB1cmwucGF0aFN0YXJ0KCk7CiAgICAgQVNTRVJUKGRpcmVjdG9yeVVS
TFtkaXJlY3RvcnlVUkxQYXRoU3RhcnRdID09ICcvJyk7CiAgICAgaWYgKGRpcmVjdG9yeVVSTC5s
ZW5ndGgoKSA+IGRpcmVjdG9yeVVSTFBhdGhTdGFydCArIDEpIHsKICAgICAgICAgc2l6ZV90IGlu
ZGV4ID0gZGlyZWN0b3J5VVJMLnJldmVyc2VGaW5kKCcvJyk7CiAgICAgICAgIEFTU0VSVChpbmRl
eCAhPSBub3RGb3VuZCk7Ci0gICAgICAgIGRpcmVjdG9yeVVSTCA9IGRpcmVjdG9yeVVSTC5zdWJz
dHJpbmcoMCwgKGluZGV4ICE9IGRpcmVjdG9yeVVSTFBhdGhTdGFydCkgPyBpbmRleCA6IGRpcmVj
dG9yeVVSTFBhdGhTdGFydCArIDEpOworICAgICAgICBkaXJlY3RvcnlVUkwgPSBkaXJlY3RvcnlV
UkwubGVmdCgoaW5kZXggIT0gZGlyZWN0b3J5VVJMUGF0aFN0YXJ0KSA/IGluZGV4IDogZGlyZWN0
b3J5VVJMUGF0aFN0YXJ0ICsgMSk7CiAgICAgfQogCiAgICAgcmV0dXJuIGRpcmVjdG9yeVVSTDsK
QEAgLTE1NSw3ICsxNTUsNyBAQCBIYXNoTWFwPFN0cmluZywgUHJvdGVjdGlvblNwYWNlPjo6aXRl
cmF0b3IgQ3JlZGVudGlhbFN0b3JhZ2U6OmZpbmREZWZhdWx0UHJvdGVjdAogCiAgICAgICAgIHNp
emVfdCBpbmRleCA9IGRpcmVjdG9yeVVSTC5yZXZlcnNlRmluZCgnLycsIGRpcmVjdG9yeVVSTC5s
ZW5ndGgoKSAtIDIpOwogICAgICAgICBBU1NFUlQoaW5kZXggIT0gbm90Rm91bmQpOwotICAgICAg
ICBkaXJlY3RvcnlVUkwgPSBkaXJlY3RvcnlVUkwuc3Vic3RyaW5nKDAsIChpbmRleCA9PSBkaXJl
Y3RvcnlVUkxQYXRoU3RhcnQpID8gaW5kZXggKyAxIDogaW5kZXgpOworICAgICAgICBkaXJlY3Rv
cnlVUkwgPSBkaXJlY3RvcnlVUkwubGVmdCgoaW5kZXggPT0gZGlyZWN0b3J5VVJMUGF0aFN0YXJ0
KSA/IGluZGV4ICsgMSA6IGluZGV4KTsKICAgICAgICAgQVNTRVJUKGRpcmVjdG9yeVVSTC5sZW5n
dGgoKSA+IGRpcmVjdG9yeVVSTFBhdGhTdGFydCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcAppbmRleCBjY2I3MThj
MDYwMWE0NTY1NzZkNGE2Mzc1ZTRiNjFlNmY4ZTM3Mzg3Li42NzkyNDQwZjBhZjkzZDViNmJhZjhj
OWRkNzAxZWQ4ZTAyNGM5NTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIHB1YmxpYzoKICAg
ICAgICAgaXNCYXNlNjQgPSBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShmb3JtYXRUeXBl
LCAiYmFzZTY0Iik7CiAKICAgICAgICAgLy8gSWYgaGVhZGVyIGRvZXMgbm90IGVuZCB3aXRoICJi
YXNlNjQiLCBtZWRpYVR5cGUgc2hvdWxkIGJlIHRoZSB3aG9sZSBoZWFkZXIuCi0gICAgICAgIGF1
dG8gbWVkaWFUeXBlID0gKGlzQmFzZTY0ID8gaGVhZGVyLnN1YnN0cmluZygwLCBtZWRpYVR5cGVF
bmQpIDogaGVhZGVyKS50b1N0cmluZygpOworICAgICAgICBhdXRvIG1lZGlhVHlwZSA9IChpc0Jh
c2U2NCA/IGhlYWRlci5sZWZ0KG1lZGlhVHlwZUVuZCkgOiBoZWFkZXIpLnRvU3RyaW5nKCk7CiAg
ICAgICAgIG1lZGlhVHlwZSA9IHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRUUFNwYWNlcyhtZWRp
YVR5cGUpOwogICAgICAgICBpZiAobWVkaWFUeXBlLnN0YXJ0c1dpdGgoJzsnKSkKICAgICAgICAg
ICAgIG1lZGlhVHlwZS5pbnNlcnQoInRleHQvcGxhaW4iX3MsIDApOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcAppbmRleCAzNzEzNGQ5YTRmZTUw
NmM4ZTQ4OWUwMzk0YzYyMWJlNTg5YWM1MmU0Li4wNDg4MWRhMThhMGFjMzFmN2Q4NTkzNjFiN2Vj
ZTFlNjM4MzllY2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0hUVFBQYXJzZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hU
VFBQYXJzZXJzLmNwcApAQCAtMzExLDEwICszMTEsOSBAQCBzdGF0aWMgY29uc3Qgc2l6ZV90IG1h
eElucHV0U2FtcGxlU2l6ZSA9IDEyODsKIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJUeXBlPgogc3Rh
dGljIFN0cmluZyB0cmltSW5wdXRTYW1wbGUoQ2hhclR5cGUqIHAsIHNpemVfdCBsZW5ndGgpCiB7
Ci0gICAgU3RyaW5nIHMgPSBTdHJpbmcocCwgc3RkOjptaW48c2l6ZV90PihsZW5ndGgsIG1heElu
cHV0U2FtcGxlU2l6ZSkpOwotICAgIGlmIChsZW5ndGggPiBtYXhJbnB1dFNhbXBsZVNpemUpCi0g
ICAgICAgIHMuYXBwZW5kKGhvcml6b250YWxFbGxpcHNpcyk7Ci0gICAgcmV0dXJuIHM7CisgICAg
aWYgKGxlbmd0aCA8PSBtYXhJbnB1dFNhbXBsZVNpemUpCisgICAgICAgIHJldHVybiBTdHJpbmco
cCwgbGVuZ3RoKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZyhTdHJpbmdWaWV3KHAsIGxlbmd0aCku
bGVmdChtYXhJbnB1dFNhbXBsZVNpemUpLCBob3Jpem9udGFsRWxsaXBzaXMpOwogfQogCiBzdGQ6
Om9wdGlvbmFsPFdhbGxUaW1lPiBwYXJzZUhUVFBEYXRlKGNvbnN0IFN0cmluZyYgdmFsdWUpCkBA
IC01OTcsNyArNTk2LDcgQEAgc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8U3RyaW5nVmlldywgSGFz
aE1hcDxTdHJpbmcsIFN0cmluZz4+PiBwYXJzZVN0cnVjdHVyZWRGaWUKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICArK2luZGV4OwogICAgIH0KLSAgICBTdHJpbmdWaWV3IGJhcmVJdGVtID0g
aGVhZGVyLnN1YnN0cmluZygwLCBpbmRleCk7CisgICAgU3RyaW5nVmlldyBiYXJlSXRlbSA9IGhl
YWRlci5sZWZ0KGluZGV4KTsKIAogICAgIC8vIFBhcnNlIHBhcmFtZXRlcnMgKGh0dHBzOi8vZGF0
YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjODk0MSNzZWN0aW9uLTQuMi4zLjIpLgogICAg
IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IHBhcmFtZXRlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9NSU1FSGVhZGVyLmNwcAppbmRleCBiNDIzNzlmMzNiMzViZjJlNWQ3
MmIxMjdjMmUwM2I2NDBhY2ZjYjZkLi5lZjkzZGRmMWRjYmU1MjFlOTdlNWNhZjZiOGY1ZDBlZjk5
MWM3MmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVI
ZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRl
ci5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgc3RhdGljIEtleVZhbHVlTWFwIHJldHJpZXZlS2V5VmFs
dWVQYWlycyhXZWJDb3JlOjpTaGFyZWRCdWZmZXJDaHVua1JlYWRlciYgYnVmZmUKICAgICAgICAg
ICAgIC8vIFRoaXMgaXMgbm90IGEga2V5IHZhbHVlIHBhaXIsIGlnbm9yZS4KICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgICAgIGtleSA9IGxpbmUuc3Vic3RyaW5nKDAsIHNl
bWlDb2xvbkluZGV4KS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpLnN0cmlwV2hpdGVTcGFjZSgp
OworICAgICAgICBrZXkgPSBsaW5lLmxlZnQoc2VtaUNvbG9uSW5kZXgpLmNvbnZlcnRUb0FTQ0lJ
TG93ZXJjYXNlKCkuc3RyaXBXaGl0ZVNwYWNlKCk7CiAgICAgICAgIHZhbHVlLmFwcGVuZChsaW5l
LnN1YnN0cmluZyhzZW1pQ29sb25JbmRleCArIDEpKTsKICAgICB9CiAgICAgLy8gU3RvcmUgdGhl
IGxhc3QgcHJvcGVydHkgaWYgdGhlcmUgaXMgb25lLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwCmluZGV4IDA0ZTY0Y2QyYzdhOTBk
OWNlM2RjMjlmOGIyZDE2NzgyNDBmYTAzNGIuLjc1YjE2YjEyYzllMzJjMTc5NDE4MWIxZWQ5MTE2
NmNhZjU0MDZiNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9Db29raWVVdGlsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ29va2llVXRpbC5jcHAKQEAgLTk3LDcgKzk3LDcgQEAgc3RhdGljIHZvaWQgcGFyc2VD
b29raWVBdHRyaWJ1dGVzKGNvbnN0IFN0cmluZyYgYXR0cmlidXRlLCBib29sJiBoYXNNYXhBZ2Us
IENvb2sKICAgICBTdHJpbmcgYXR0cmlidXRlVmFsdWU7CiAKICAgICBpZiAoYXNzaWdubWVudFBv
c2l0aW9uICE9IG5vdEZvdW5kKSB7Ci0gICAgICAgIGF0dHJpYnV0ZU5hbWUgPSBhdHRyaWJ1dGUu
c3Vic3RyaW5nKDAsIGFzc2lnbm1lbnRQb3NpdGlvbikuc3RyaXBXaGl0ZVNwYWNlKCk7CisgICAg
ICAgIGF0dHJpYnV0ZU5hbWUgPSBhdHRyaWJ1dGUubGVmdChhc3NpZ25tZW50UG9zaXRpb24pLnN0
cmlwV2hpdGVTcGFjZSgpOwogICAgICAgICBhdHRyaWJ1dGVWYWx1ZSA9IGF0dHJpYnV0ZS5zdWJz
dHJpbmcoYXNzaWdubWVudFBvc2l0aW9uICsgMSkuc3RyaXBXaGl0ZVNwYWNlKCk7CiAgICAgfSBl
bHNlCiAgICAgICAgIGF0dHJpYnV0ZU5hbWUgPSBhdHRyaWJ1dGUuc3RyaXBXaGl0ZVNwYWNlKCk7
CkBAIC0xNTMsNyArMTUzLDcgQEAgc3RkOjpvcHRpb25hbDxDb29raWU+IHBhcnNlQ29va2llSGVh
ZGVyKGNvbnN0IFN0cmluZyYgY29va2llTGluZSkKIAogICAgIHNpemVfdCBzZXBhcmF0b3JQb3Np
dGlvbiA9IGNvb2tpZUxpbmUuZmluZCgnOycpOwogCi0gICAgU3RyaW5nIGNvb2tpZVBhaXIgPSBz
ZXBhcmF0b3JQb3NpdGlvbiA9PSBub3RGb3VuZCA/IGNvb2tpZUxpbmUgOiBjb29raWVMaW5lLnN1
YnN0cmluZygwLCBzZXBhcmF0b3JQb3NpdGlvbik7CisgICAgU3RyaW5nIGNvb2tpZVBhaXIgPSBz
ZXBhcmF0b3JQb3NpdGlvbiA9PSBub3RGb3VuZCA/IGNvb2tpZUxpbmUgOiBjb29raWVMaW5lLmxl
ZnQoc2VwYXJhdG9yUG9zaXRpb24pOwogCiAgICAgU3RyaW5nIGNvb2tpZU5hbWU7CiAgICAgU3Ry
aW5nIGNvb2tpZVZhbHVlOwpAQCAtMTY0LDcgKzE2NCw3IEBAIHN0ZDo6b3B0aW9uYWw8Q29va2ll
PiBwYXJzZUNvb2tpZUhlYWRlcihjb25zdCBTdHJpbmcmIGNvb2tpZUxpbmUpCiAgICAgaWYgKGFz
c2lnbm1lbnRQb3NpdGlvbiA9PSBub3RGb3VuZCkKICAgICAgICAgY29va2llVmFsdWUgPSBjb29r
aWVQYWlyOwogICAgIGVsc2UgewotICAgICAgICBjb29raWVOYW1lID0gY29va2llUGFpci5zdWJz
dHJpbmcoMCwgYXNzaWdubWVudFBvc2l0aW9uKTsKKyAgICAgICAgY29va2llTmFtZSA9IGNvb2tp
ZVBhaXIubGVmdChhc3NpZ25tZW50UG9zaXRpb24pOwogICAgICAgICBjb29raWVWYWx1ZSA9IGNv
b2tpZVBhaXIuc3Vic3RyaW5nKGFzc2lnbm1lbnRQb3NpdGlvbiArIDEpOwogICAgIH0KIApAQCAt
MTkzLDcgKzE5Myw3IEBAIFN0cmluZyBkZWZhdWx0UGF0aEZvclVSTChjb25zdCBVUkwmIHVybCkK
ICAgICBpZiAoIWxhc3RTbGFzaFBvc2l0aW9uKQogICAgICAgICByZXR1cm4gIi8iX3M7CiAKLSAg
ICByZXR1cm4gcGF0aC5zdWJzdHJpbmcoMCwgbGFzdFNsYXNoUG9zaXRpb24pOworICAgIHJldHVy
biBwYXRoLmxlZnQobGFzdFNsYXNoUG9zaXRpb24pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBDb29r
aWVVdGlsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybENhY2hlRW50cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxDYWNoZUVudHJ5LmNwcAppbmRleCBjMGJjMzU2MjcxODZiNGQ2NjM4MTQ1ODY3OTI3MzRm
NTUxNTYyZGI1Li42MDA0Y2MzZTM2MTEyNzY1ZjczM2JmMDU0YTEzNjUwODc3ZTNmOGE5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50
cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2Fj
aGVFbnRyeS5jcHAKQEAgLTQ5LDkgKzQ5LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQ3Vy
bENhY2hlRW50cnk6OkN1cmxDYWNoZUVudHJ5KGNvbnN0IFN0cmluZyYgdXJsLCBSZXNvdXJjZUhh
bmRsZSogam9iLCBjb25zdCBTdHJpbmcmIGNhY2hlRGlyKQotICAgIDogbV9oZWFkZXJGaWxlbmFt
ZShjYWNoZURpcikKLSAgICAsIG1fY29udGVudEZpbGVuYW1lKGNhY2hlRGlyKQotICAgICwgbV9j
b250ZW50RmlsZShGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQorICAgIDog
bV9jb250ZW50RmlsZShGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQogICAg
ICwgbV9lbnRyeVNpemUoMCkKICAgICAsIG1fZXhwaXJlRGF0ZShXYWxsVGltZTo6ZnJvbVJhd1Nl
Y29uZHMoLTEpKQogICAgICwgbV9oZWFkZXJQYXJzZWQoZmFsc2UpCkBAIC02MCwxMSArNTgsOCBA
QCBDdXJsQ2FjaGVFbnRyeTo6Q3VybENhY2hlRW50cnkoY29uc3QgU3RyaW5nJiB1cmwsIFJlc291
cmNlSGFuZGxlKiBqb2IsIGNvbnN0IFN0cgogewogICAgIGdlbmVyYXRlQmFzZUZpbGVuYW1lKHVy
bC5sYXRpbjEoKSk7CiAKLSAgICBtX2hlYWRlckZpbGVuYW1lLmFwcGVuZChtX2Jhc2VuYW1lKTsK
LSAgICBtX2hlYWRlckZpbGVuYW1lLmFwcGVuZCgiLmhlYWRlciJfcyk7Ci0KLSAgICBtX2NvbnRl
bnRGaWxlbmFtZS5hcHBlbmQobV9iYXNlbmFtZSk7Ci0gICAgbV9jb250ZW50RmlsZW5hbWUuYXBw
ZW5kKCIuY29udGVudCJfcyk7CisgICAgbV9oZWFkZXJGaWxlbmFtZSA9IG1ha2VTdHJpbmcoY2Fj
aGVEaXIsIG1fYmFzZW5hbWUsICIuaGVhZGVyIl9zKTsKKyAgICBtX2NvbnRlbnRGaWxlbmFtZSA9
IG1ha2VTdHJpbmcoY2FjaGVEaXIsIG1fYmFzZW5hbWUsICIuY29udGVudCJfcyk7CiB9CiAKIEN1
cmxDYWNoZUVudHJ5Ojp+Q3VybENhY2hlRW50cnkoKQpAQCAtMTM4LDEyICsxMzMsOCBAQCBib29s
IEN1cmxDYWNoZUVudHJ5OjpzYXZlUmVzcG9uc2VIZWFkZXJzKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlKQogICAgIEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcmVz
cG9uc2UuaHR0cEhlYWRlckZpZWxkcygpLmJlZ2luKCk7CiAgICAgSFRUUEhlYWRlck1hcDo6Y29u
c3RfaXRlcmF0b3IgZW5kID0gcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkcygpLmVuZCgpOwogICAg
IHdoaWxlIChpdCAhPSBlbmQpIHsKLSAgICAgICAgU3RyaW5nIGhlYWRlckZpZWxkID0gaXQtPmtl
eTsKLSAgICAgICAgaGVhZGVyRmllbGQuYXBwZW5kKCI6ICJfcyk7Ci0gICAgICAgIGhlYWRlckZp
ZWxkLmFwcGVuZChpdC0+dmFsdWUpOwotICAgICAgICBoZWFkZXJGaWVsZC5hcHBlbmQoIlxuIl9z
KTsKLSAgICAgICAgQ1N0cmluZyBoZWFkZXJGaWVsZExhdGluMSA9IGhlYWRlckZpZWxkLmxhdGlu
MSgpOwotICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShoZWFkZXJGaWxlLCBoZWFkZXJG
aWVsZExhdGluMS5kYXRhKCksIGhlYWRlckZpZWxkTGF0aW4xLmxlbmd0aCgpKTsKKyAgICAgICAg
YXV0byBoZWFkZXJGaWVsZCA9IG1ha2VTdHJpbmcoaXQtPmtleSwgIjogIiwgaXQtPnZhbHVlLCAn
XG4nKS5sYXRpbjEoKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoaGVhZGVyRmls
ZSwgaGVhZGVyRmllbGQuZGF0YSgpLCBoZWFkZXJGaWVsZC5sZW5ndGgoKSk7CiAgICAgICAgIG1f
Y2FjaGVkUmVzcG9uc2Uuc2V0SFRUUEhlYWRlckZpZWxkKGl0LT5rZXksIGl0LT52YWx1ZSk7CiAg
ICAgICAgICsraXQ7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCmluZGV4IDcwMmM1YjMxYTAxZWUy
NDZjN2M3NWQ3YjU1NTg0YWVhZDZmYjA1MzkuLmZkM2RmOTRkZGJhMjcxMjI3Mjg4ZDE1MmJlYWQ5
YjY0YmU5ZWYxYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgdm9pZCBD
dXJsQ2FjaGVNYW5hZ2VyOjpzZXRDYWNoZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIGRpcmVjdG9y
eSkKICAgICAgICAgfQogICAgIH0KIAotICAgIG1fY2FjaGVEaXIuYXBwZW5kKCIvIl9zKTsKKyAg
ICBtX2NhY2hlRGlyID0gbWFrZVN0cmluZyhtX2NhY2hlRGlyLCAnLycpOwogCiAgICAgbV9kaXNh
YmxlZCA9IGZhbHNlOwogICAgIGxvYWRJbmRleCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5jcHAKaW5kZXggN2RlODZjMDhlMzQ5
NmRmMzBmZTE0MDZiOGNiMzJkZmZlMjBjZWNmMC4uOTgxODQ5ZGYwM2MxMDA5NWExODU2ZmJjOTA5
OGVjZDE5MmRjMzM1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSA8d3Rm
L01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5h
dGVOdW1iZXJzLmg+CiAKICNpZiBPUyhXSU5ET1dTKQogI2luY2x1ZGUgIldlYkNvcmVCdW5kbGVX
aW4uaCIKQEAgLTg5MCwxMSArODkxLDggQEAgdm9pZCBDdXJsSGFuZGxlOjphZGRFeHRyYU5ldHdv
cmtMb2FkTWV0cmljcyhOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmkKICAgICBh
ZGRpdGlvbmFsTWV0cmljcy0+cmVxdWVzdEJvZHlCeXRlc1NlbnQgPSByZXF1ZXN0Qm9keVNpemU7
CiAgICAgYWRkaXRpb25hbE1ldHJpY3MtPnJlc3BvbnNlSGVhZGVyQnl0ZXNSZWNlaXZlZCA9IHJl
c3BvbnNlSGVhZGVyU2l6ZTsKIAotICAgIGlmIChpcCkgewotICAgICAgICBhZGRpdGlvbmFsTWV0
cmljcy0+cmVtb3RlQWRkcmVzcyA9IFN0cmluZzo6ZnJvbUxhdGluMShpcCk7Ci0gICAgICAgIGlm
IChwb3J0KQotICAgICAgICAgICAgYWRkaXRpb25hbE1ldHJpY3MtPnJlbW90ZUFkZHJlc3MuYXBw
ZW5kKCI6IiArIFN0cmluZzo6bnVtYmVyKHBvcnQpKTsKLSAgICB9CisgICAgaWYgKGlwKQorICAg
ICAgICBhZGRpdGlvbmFsTWV0cmljcy0+cmVtb3RlQWRkcmVzcyA9IHBvcnQgPyBtYWtlU3RyaW5n
KGlwLCAnOicsIHBvcnQpIDogU3RyaW5nOjpmcm9tTGF0aW4xKGlwKTsKIAogICAgIGlmIChtX3Rs
c0Nvbm5lY3Rpb25JbmZvKSB7CiAgICAgICAgIGFkZGl0aW9uYWxNZXRyaWNzLT50bHNQcm90b2Nv
bCA9IG1fdGxzQ29ubmVjdGlvbkluZm8tPnByb3RvY29sOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVUb1NjcmlwdE1hcHBpbmcuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVUb1NjcmlwdE1hcHBpbmcuY3BwCmluZGV4IDcyMzA5
ZWMwZGMxZTRmZDNiODFmM2Q1NDIxNThhOWVhYTAyZmE3MmMuLjg1N2I5M2JlNTM3ZWRkMTZkYjA2
OThiM2M5OGVjOGM0OTM4YTU1YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvTG9jYWxlVG9TY3JpcHRNYXBwaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L0xvY2FsZVRvU2NyaXB0TWFwcGluZy5jcHAKQEAgLTM3NSw3ICszNzUsNyBAQCBV
U2NyaXB0Q29kZSBsb2NhbGVUb1NjcmlwdENvZGVGb3JGb250U2VsZWN0aW9uKGNvbnN0IFN0cmlu
ZyYgbG9jYWxlKQogICAgICAgICBVU2NyaXB0Q29kZSBjb2RlID0gc2NyaXB0TmFtZVRvQ29kZShj
YW5vbmljYWxMb2NhbGUuc3Vic3RyaW5nKHVuZGVyc2NvcmVQb3NpdGlvbiArIDEpKTsKICAgICAg
ICAgaWYgKGNvZGUgIT0gVVNDUklQVF9JTlZBTElEX0NPREUgJiYgY29kZSAhPSBVU0NSSVBUX1VO
S05PV04pCiAgICAgICAgICAgICByZXR1cm4gY29kZTsKLSAgICAgICAgY2Fub25pY2FsTG9jYWxl
ID0gY2Fub25pY2FsTG9jYWxlLnN1YnN0cmluZygwLCB1bmRlcnNjb3JlUG9zaXRpb24pOworICAg
ICAgICBjYW5vbmljYWxMb2NhbGUgPSBjYW5vbmljYWxMb2NhbGUubGVmdCh1bmRlcnNjb3JlUG9z
aXRpb24pOwogICAgIH0KICAgICByZXR1cm4gVVNDUklQVF9DT01NT047CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKaW5kZXggNGNlMzI4YTgzMWM5
MGJmNmJkMjI4ZTFmMDcyNDA4ZDY0YjMzYTQ1ZS4uN2QxNTM2YTdkNjRkM2ZjODM2Mjc2MmYzYTcw
NGRhNTM4YzZmN2E2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bh
c3RlYm9hcmRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJv
YXJkV2luLmNwcApAQCAtNjA1LDcgKzYwNSw3IEBAIHN0YXRpYyBTdHJpbmcgZmlsZVN5c3RlbVBh
dGhGcm9tVVJMT3JUaXRsZShjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nCiAK
ICAgICBpZiAoIXRpdGxlLmlzRW1wdHkoKSkgewogICAgICAgICBzaXplX3QgbGVuID0gc3RkOjpt
aW48c2l6ZV90Pih0aXRsZS5sZW5ndGgoKSwgZnNQYXRoTWF4TGVuZ3RoRXhjbHVkaW5nRXh0ZW5z
aW9uKTsKLSAgICAgICAgU3RyaW5nVmlldyh0aXRsZSkuc3Vic3RyaW5nKDAsIGxlbikuZ2V0Q2hh
cmFjdGVyc1dpdGhVcGNvbnZlcnQoZnNQYXRoQnVmZmVyKTsKKyAgICAgICAgU3RyaW5nVmlldyh0
aXRsZSkubGVmdChsZW4pLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGZzUGF0aEJ1ZmZlcik7
CiAgICAgICAgIGZzUGF0aEJ1ZmZlcltsZW5dID0gMDsKICAgICAgICAgcGF0aFJlbW92ZUJhZEZT
Q2hhcmFjdGVycyh3Y2hhckZyb20oZnNQYXRoQnVmZmVyKSwgbGVuKTsKICAgICB9CkBAIC02MjAs
MTAgKzYyMCwxMCBAQCBzdGF0aWMgU3RyaW5nIGZpbGVTeXN0ZW1QYXRoRnJvbVVSTE9yVGl0bGUo
Y29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZwogICAgICAgICBhdXRvIGxhc3RD
b21wb25lbnQgPSB1cmwubGFzdFBhdGhDb21wb25lbnQoKTsKICAgICAgICAgaWYgKHVybC5pc0xv
Y2FsRmlsZSgpIHx8ICghaXNMaW5rICYmICFsYXN0Q29tcG9uZW50LmlzRW1wdHkoKSkpIHsKICAg
ICAgICAgICAgIGxlbiA9IHN0ZDo6bWluPERXT1JEPihmc1BhdGhNYXhMZW5ndGhFeGNsdWRpbmdF
eHRlbnNpb24sIGxhc3RDb21wb25lbnQubGVuZ3RoKCkpOwotICAgICAgICAgICAgbGFzdENvbXBv
bmVudC5zdWJzdHJpbmcoMCwgbGVuKS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChmc1BhdGhC
dWZmZXIpOworICAgICAgICAgICAgbGFzdENvbXBvbmVudC5sZWZ0KGxlbikuZ2V0Q2hhcmFjdGVy
c1dpdGhVcGNvbnZlcnQoZnNQYXRoQnVmZmVyKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgIGxlbiA9IHN0ZDo6bWluPERXT1JEPihmc1BhdGhNYXhMZW5ndGhFeGNsdWRpbmdFeHRlbnNp
b24sIHVybFN0cmluZy5sZW5ndGgoKSk7Ci0gICAgICAgICAgICBTdHJpbmdWaWV3KHVybFN0cmlu
Zykuc3Vic3RyaW5nKDAsIGxlbikuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoZnNQYXRoQnVm
ZmVyKTsKKyAgICAgICAgICAgIFN0cmluZ1ZpZXcodXJsU3RyaW5nKS5sZWZ0KGxlbikuZ2V0Q2hh
cmFjdGVyc1dpdGhVcGNvbnZlcnQoZnNQYXRoQnVmZmVyKTsKICAgICAgICAgfQogICAgICAgICBm
c1BhdGhCdWZmZXJbbGVuXSA9IDA7CiAgICAgICAgIHBhdGhSZW1vdmVCYWRGU0NoYXJhY3RlcnMo
d2NoYXJGcm9tKGZzUGF0aEJ1ZmZlciksIGxlbik7CkBAIC03MjEsNyArNzIxLDcgQEAgdm9pZCBQ
YXN0ZWJvYXJkOjp3cml0ZVVSTFRvRGF0YU9iamVjdChjb25zdCBVUkwmIGt1cmwsIGNvbnN0IFN0
cmluZyYgdGl0bGVTdHIpCiAgICAgZmdkLT5mZ2RbMF0ubkZpbGVTaXplTG93ID0gY29udGVudC5s
ZW5ndGgoKTsKIAogICAgIHVuc2lnbmVkIG1heFNpemUgPSBzdGQ6Om1pbjx1bnNpZ25lZD4oZnNQ
YXRoLmxlbmd0aCgpLCBXVEZfQVJSQVlfTEVOR1RIKGZnZC0+ZmdkWzBdLmNGaWxlTmFtZSkpOwot
ICAgIFN0cmluZ1ZpZXcoZnNQYXRoKS5zdWJzdHJpbmcoMCwgbWF4U2l6ZSkuZ2V0Q2hhcmFjdGVy
c1dpdGhVcGNvbnZlcnQodWNoYXJGcm9tKGZnZC0+ZmdkWzBdLmNGaWxlTmFtZSkpOworICAgIFN0
cmluZ1ZpZXcoZnNQYXRoKS5sZWZ0KG1heFNpemUpLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0
KHVjaGFyRnJvbShmZ2QtPmZnZFswXS5jRmlsZU5hbWUpKTsKICAgICBHbG9iYWxVbmxvY2sodXJs
RmlsZURlc2NyaXB0b3IpOwogCiAgICAgY2hhciogZmlsZUNvbnRlbnRzID0gc3RhdGljX2Nhc3Q8
Y2hhcio+KEdsb2JhbExvY2sodXJsRmlsZUNvbnRlbnQpKTsKQEAgLTk2MCw3ICs5NjAsNyBAQCBz
dGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxJbWFnZUZpbGVEZXNjcmlwdG9yKGNvbnN0IFN0cmlu
ZyYgdXJsLCBjb25zdCBTdHJpbmcmCiAgICAgfQogCiAgICAgaW50IG1heFNpemUgPSBzdGQ6Om1p
bjxpbnQ+KGZzUGF0aC5sZW5ndGgoKSwgV1RGX0FSUkFZX0xFTkdUSChmZ2QtPmZnZFswXS5jRmls
ZU5hbWUpKTsKLSAgICBTdHJpbmdWaWV3KGZzUGF0aCkuc3Vic3RyaW5nKDAsIG1heFNpemUpLmdl
dENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KHVjaGFyRnJvbShmZ2QtPmZnZFswXS5jRmlsZU5hbWUp
KTsKKyAgICBTdHJpbmdWaWV3KGZzUGF0aCkubGVmdChtYXhTaXplKS5nZXRDaGFyYWN0ZXJzV2l0
aFVwY29udmVydCh1Y2hhckZyb20oZmdkLT5mZ2RbMF0uY0ZpbGVOYW1lKSk7CiAgICAgR2xvYmFs
VW5sb2NrKG1lbU9iaik7CiAKICAgICByZXR1cm4gbWVtT2JqOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL1dlYkNvcmVUZXh0UmVuZGVyZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL1dlYkNvcmVUZXh0UmVuZGVyZXIuY3BwCmluZGV4IGU5YzNjOWFl
ZjAwYmYwN2QzMTBjNmE5NGM2MDc0YzI5ZjNjNzMzZjIuLmJiODBjNjdjYTEwNmZiMjJkYWQ2N2E3
MjhkZjgxYjRiYWZjYjljZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9XZWJDb3JlVGV4dFJlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vV2ViQ29yZVRleHRSZW5kZXJlci5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgc3RhdGljIHZvaWQg
ZG9EcmF3VGV4dEF0UG9pbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcm
IHRleHQsIGNvbnMKIAogICAgICAgICBpbnQgYmVmb3JlV2lkdGg7CiAgICAgICAgIGlmICh1bmRl
cmxpbmVkSW5kZXggPiAwKSB7Ci0gICAgICAgICAgICBUZXh0UnVuIGJlZm9yZVJ1bihTdHJpbmdW
aWV3KHRleHQpLnN1YnN0cmluZygwLCB1bmRlcmxpbmVkSW5kZXgpKTsKKyAgICAgICAgICAgIFRl
eHRSdW4gYmVmb3JlUnVuKFN0cmluZ1ZpZXcodGV4dCkubGVmdCh1bmRlcmxpbmVkSW5kZXgpKTsK
ICAgICAgICAgICAgIGJlZm9yZVdpZHRoID0gZm9udC53aWR0aChiZWZvcmVSdW4pOwogICAgICAg
ICB9IGVsc2UKICAgICAgICAgICAgIGJlZm9yZVdpZHRoID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggZDk3Nzg5NWFmZGMxNzhl
NjNmM2E0Y2RhOTEyMGY2NjNhYjVlMTk4NS4uNzcwNWFmNWMzNzVlMWM0OGE2M2Q0OWQ1M2I2ZjM1
ZGU0ZmYyZmQyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQmFja2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
QmFja2luZy5jcHAKQEAgLTUxNSwxMCArNTE1LDggQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6
OmNyZWF0ZVByaW1hcnlHcmFwaGljc0xheWVyKCkKIHsKICAgICBTdHJpbmcgbGF5ZXJOYW1lID0g
bV9vd25pbmdMYXllci5uYW1lKCk7CiAgICAgY29uc3QgdW5zaWduZWQgbWF4TGF5ZXJOYW1lTGVu
Z3RoID0gMTAwOwotICAgIGlmIChsYXllck5hbWUubGVuZ3RoKCkgPiBtYXhMYXllck5hbWVMZW5n
dGgpIHsKLSAgICAgICAgbGF5ZXJOYW1lLnRydW5jYXRlKG1heExheWVyTmFtZUxlbmd0aCk7Ci0g
ICAgICAgIGxheWVyTmFtZS5hcHBlbmQoIi4uLiJfcyk7Ci0gICAgfQorICAgIGlmIChsYXllck5h
bWUubGVuZ3RoKCkgPiBtYXhMYXllck5hbWVMZW5ndGgpCisgICAgICAgIGxheWVyTmFtZSA9IG1h
a2VTdHJpbmcoU3RyaW5nVmlldyhsYXllck5hbWUpLmxlZnQobWF4TGF5ZXJOYW1lTGVuZ3RoKSwg
Ii4uLiJfcyk7CiAgICAgbV9ncmFwaGljc0xheWVyID0gY3JlYXRlR3JhcGhpY3NMYXllcihsYXll
ck5hbWUsIG1faXNGcmFtZUxheWVyV2l0aFRpbGVkQmFja2luZyA/IEdyYXBoaWNzTGF5ZXI6OlR5
cGU6OlBhZ2VUaWxlZEJhY2tpbmcgOiBHcmFwaGljc0xheWVyOjpUeXBlOjpOb3JtYWwpOwogCiAg
ICAgaWYgKG1faXNGcmFtZUxheWVyV2l0aFRpbGVkQmFja2luZykgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCAzODYzMmIxNDI4M2JjMGExMzgwNDExNDZh
Y2E5YzAyMzg2NTRhZGY3Li45NzMzMjNlNDkyYmE3Nzk0ZmRkYTExMDk0OWY5ZDQyNDM5NGMyMWE3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMTI3MCw3
ICsxMjcwLDcgQEAgdm9pZCBSZW5kZXJPYmplY3Q6Om91dHB1dFJlbmRlck9iamVjdChUZXh0U3Ry
ZWFtJiBzdHJlYW0sIGJvb2wgbWFyaywgaW50IGRlcHRoKQogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBjb25zdCBpbnQgbWF4UHJpbnRlZExlbmd0aCA9IDgwOwogICAgICAgICAgICAgaWYgKHZh
bHVlLmxlbmd0aCgpID4gbWF4UHJpbnRlZExlbmd0aCkgewotICAgICAgICAgICAgICAgIFN0cmlu
ZyBzdWJzdHJpbmcgPSB2YWx1ZS5zdWJzdHJpbmcoMCwgbWF4UHJpbnRlZExlbmd0aCk7CisgICAg
ICAgICAgICAgICAgU3RyaW5nIHN1YnN0cmluZyA9IHZhbHVlLmxlZnQobWF4UHJpbnRlZExlbmd0
aCk7CiAgICAgICAgICAgICAgICAgc3RyZWFtIDw8ICIgXCIiIDw8IHN1YnN0cmluZy51dGY4KCku
ZGF0YSgpIDw8ICJcIi4uLiI7CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBz
dHJlYW0gPDwgIiBcIiIgPDwgdmFsdWUudXRmOCgpLmRhdGEoKSA8PCAiXCIiOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRQb3NpdGlvbnNSZXNvbHZlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9uc1Jlc29sdmVy
LmNwcAppbmRleCBiYzhjZGJjYzg5N2JhOGU3ZGI1MTgyOTQ3YzY5M2RlOWMyOTBiMDMxLi44NmMy
NmY4NzU4YTRlY2Q5YTJkMmVlNTU1ODJjZTk4ODM2ZDliZjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9uc1Jlc29sdmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9uc1Jlc29sdmVyLmNwcApA
QCAtMTQ3LDcgKzE0Nyw3IEBAIE5hbWVkTGluZUNvbGxlY3Rpb25CYXNlOjpOYW1lZExpbmVDb2xs
ZWN0aW9uQmFzZShjb25zdCBSZW5kZXJHcmlkJiBpbml0aWFsR3JpZCwKICAgICAgICAgICAgICAg
ICBzdGFydFNpZGUgPSBmYWxzZTsKICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAg
IHN0YXJ0U2lkZSA9IHRydWU7Ci0gICAgICAgICAgICBhcmVhTmFtZSA9IG5hbWUuc3Vic3RyaW5n
KDAsIHN1ZmZpeCk7CisgICAgICAgICAgICBhcmVhTmFtZSA9IG5hbWUubGVmdChzdWZmaXgpOwog
ICAgICAgICB9CiAgICAgICAgIGF1dG8gaW1wbGljaXRMaW5lID0gY2xhbXBlZEltcGxpY2l0TGlu
ZUZvckFyZWEoKmdyaWRDb250YWluZXJTdHlsZSwgYXJlYU5hbWUsIDAsIG1fbGFzdExpbmUsIGlz
Um93QXhpcywgc3RhcnRTaWRlKTsKICAgICAgICAgaWYgKGltcGxpY2l0TGluZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXN0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVGVzdHMuY3BwCmluZGV4IGYwNGI0ZmFmM2U3ODA1YjVhMzJjZGM5YzdjMjA3NjBmOTY2Zjk3
NTAuLjUyNzllYmNjMjdkYzYwZjEzNWIyNzVmZjRkMzU5ZWYzZWQ3MTE2ZmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXN0cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1Rlc3RzLmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIGJvb2wgU1ZHVGVzdHM6OmlzVmFsaWQo
KSBjb25zdAogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBmb3IgKGF1dG8m
IGxhbmd1YWdlIDogbV9zeXN0ZW1MYW5ndWFnZS0+aXRlbXMoKSkgewotICAgICAgICBpZiAobGFu
Z3VhZ2UgIT0gZGVmYXVsdExhbmd1YWdlKCkuc3Vic3RyaW5nKDAsIDIpKQorICAgICAgICBpZiAo
bGFuZ3VhZ2UgIT0gZGVmYXVsdExhbmd1YWdlKCkubGVmdCgyKSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAgICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiBtX3JlcXVpcmVkRXh0
ZW5zaW9ucy0+aXRlbXMoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VS
SVJlZmVyZW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVVJJUmVmZXJlbmNlLmNwcApp
bmRleCBlZTQ1YTI5Y2FlMWYxN2ZhNzhiZmI5N2UxMzdjNDA2ZTBjNTc2MGVkLi40YTliZmU4OTM4
MzdjMWQyOTE3ZGE5NWVjYzkzMzg0ZjZjMjAwMjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVVJJUmVmZXJlbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVVJJ
UmVmZXJlbmNlLmNwcApAQCAtNjcsNyArNjcsNyBAQCBTdHJpbmcgU1ZHVVJJUmVmZXJlbmNlOjpm
cmFnbWVudElkZW50aWZpZXJGcm9tSVJJU3RyaW5nKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdAog
ICAgIGlmICghc3RhcnQpCiAgICAgICAgIHJldHVybiB1cmwuc3Vic3RyaW5nKDEpOwogCi0gICAg
VVJMIGJhc2UgPSBVUkwoZG9jdW1lbnQuYmFzZVVSTCgpLCB1cmwuc3Vic3RyaW5nKDAsIHN0YXJ0
KSk7CisgICAgVVJMIGJhc2UgPSBVUkwoZG9jdW1lbnQuYmFzZVVSTCgpLCB1cmwubGVmdChzdGFy
dCkpOwogICAgIFN0cmluZyBmcmFnbWVudElkZW50aWZpZXIgPSB1cmwuc3Vic3RyaW5nKHN0YXJ0
KTsKICAgICBVUkwga3VybChiYXNlLCBmcmFnbWVudElkZW50aWZpZXIpOwogICAgIGlmIChlcXVh
bElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKGt1cmwsIGRvY3VtZW50LnVybCgpKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAKaW5kZXggYzQz
NmVhZTIzNDliODllYmYwN2YzOTAwMGRmNTY1ZDM0ZDBiMzUwMy4uMTZlYWI2NTIwZTg4YmNjYzM1
Mzc0MGI3NzcxN2FkNmUxOTdkMzYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2Fu
aW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1h
dGlvbi9TVkdTTUlMRWxlbWVudC5jcHAKQEAgLTM0OCwxMyArMzQ4LDEzIEBAIFNNSUxUaW1lIFNW
R1NNSUxFbGVtZW50OjpwYXJzZUNsb2NrVmFsdWUoU3RyaW5nVmlldyBkYXRhKQogICAgIHNpemVf
dCBkb3VibGVQb2ludE9uZSA9IHBhcnNlLmZpbmQoJzonKTsKICAgICBzaXplX3QgZG91YmxlUG9p
bnRUd28gPSBwYXJzZS5maW5kKCc6JywgZG91YmxlUG9pbnRPbmUgKyAxKTsKICAgICBpZiAoZG91
YmxlUG9pbnRPbmUgPT0gMiAmJiBkb3VibGVQb2ludFR3byA9PSA1ICYmIHBhcnNlLmxlbmd0aCgp
ID49IDgpIHsKLSAgICAgICAgYXV0byBob3VyID0gcGFyc2VJbnRlZ2VyPHVpbnQ4X3Q+KHBhcnNl
LnN1YnN0cmluZygwLCAyKSk7CisgICAgICAgIGF1dG8gaG91ciA9IHBhcnNlSW50ZWdlcjx1aW50
OF90PihwYXJzZS5sZWZ0KDIpKTsKICAgICAgICAgYXV0byBtaW51dGUgPSBwYXJzZUludGVnZXI8
dWludDhfdD4ocGFyc2Uuc3Vic3RyaW5nKDMsIDIpKTsKICAgICAgICAgaWYgKCFob3VyIHx8ICFt
aW51dGUpCiAgICAgICAgICAgICByZXR1cm4gU01JTFRpbWU6OnVucmVzb2x2ZWQoKTsKICAgICAg
ICAgcmVzdWx0ID0gKmhvdXIgKiA2MCAqIDYwICsgKm1pbnV0ZSAqIDYwICsgcGFyc2Uuc3Vic3Ry
aW5nKDYpLnRvRG91YmxlKG9rKTsKICAgICB9IGVsc2UgaWYgKGRvdWJsZVBvaW50T25lID09IDIg
JiYgZG91YmxlUG9pbnRUd28gPT0gbm90Rm91bmQgJiYgcGFyc2UubGVuZ3RoKCkgPj0gNSkgeyAK
LSAgICAgICAgYXV0byBtaW51dGUgPSBwYXJzZUludGVnZXI8dWludDhfdD4ocGFyc2Uuc3Vic3Ry
aW5nKDAsIDIpKTsKKyAgICAgICAgYXV0byBtaW51dGUgPSBwYXJzZUludGVnZXI8dWludDhfdD4o
cGFyc2UubGVmdCgyKSk7CiAgICAgICAgIGlmICghbWludXRlKQogICAgICAgICAgICAgcmV0dXJu
IFNNSUxUaW1lOjp1bnJlc29sdmVkKCk7CiAgICAgICAgIHJlc3VsdCA9ICptaW51dGUgKiA2MCAr
IHBhcnNlLnN1YnN0cmluZygzKS50b0RvdWJsZShvayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYi5jcHAKaW5kZXggODA0ZTZmNGMwODRi
MGIxM2U0ZGFhMDg1MGE1MDg2YTY0YTk3YjIzYS4uZmVjNWYzOTYwZGU0OWE5YjAyOGIxZjAxNDM5
YzMwZGFmN2VjYWNlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJKb2IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VySm9iLmNwcApAQCAtMTI5LDcgKzEyOSw3IEBAIFJlc291cmNlRXJyb3Ig
U2VydmljZVdvcmtlckpvYjo6dmFsaWRhdGVTZXJ2aWNlV29ya2VyUmVzcG9uc2UoY29uc3QgU2Vy
dmljZVdvcmtlCiAgICAgaWYgKHNlcnZpY2VXb3JrZXJBbGxvd2VkLmlzTnVsbCgpKSB7CiAgICAg
ICAgIGF1dG8gcGF0aCA9IGpvYkRhdGEuc2NyaXB0VVJMLnBhdGgoKTsKICAgICAgICAgLy8gTGFz
dCBwYXJ0IG9mIHRoZSBwYXRoIGlzIHRoZSBzY3JpcHQncyBmaWxlbmFtZS4KLSAgICAgICAgbWF4
U2NvcGVTdHJpbmcgPSBwYXRoLnN1YnN0cmluZygwLCBwYXRoLnJldmVyc2VGaW5kKCcvJykgKyAx
KS50b1N0cmluZygpOworICAgICAgICBtYXhTY29wZVN0cmluZyA9IHBhdGgubGVmdChwYXRoLnJl
dmVyc2VGaW5kKCcvJykgKyAxKS50b1N0cmluZygpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGF1
dG8gbWF4U2NvcGUgPSBVUkwoam9iRGF0YS5zY3JpcHRVUkwsIHNlcnZpY2VXb3JrZXJBbGxvd2Vk
KTsKICAgICAgICAgaWYgKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUobWF4U2NvcGUpLT5pc1NhbWVP
cmlnaW5BcyhTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKGpvYkRhdGEuc2NyaXB0VVJMKSkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbktleS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbktleS5jcHAKaW5kZXggN2E4OGZhNzc0ZWRjMTJlMjVlZGJjMjUwNDQz
Y2VhMzEyYWJhMmVmMi4uM2E4ZmFjMTkzOTFlYWMyOTdhZmFjN2ZlMjFmZjhmNDcxMjFkNmRmZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25LZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmNwcApAQCAtMTE4LDcgKzExOCw3IEBAIHN0ZDo6
b3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleT4gU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbktleTo6ZnJvbURhCiAgICAgaWYgKCFzY29wZS5pc1ZhbGlkKCkpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bktleSB7IHsga2V5LnN1YnN0cmluZygwLCBmaXJzdCksIGtleS5zdWJzdHJpbmcoZmlyc3QgKyAx
LCBzZWNvbmQgLSBmaXJzdCAtIDEpLCBzaG9ydFBvcnQgfSwgV1RGTW92ZShzY29wZSkgfTsKKyAg
ICByZXR1cm4gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSB7IHsga2V5LmxlZnQoZmlyc3Qp
LCBrZXkuc3Vic3RyaW5nKGZpcnN0ICsgMSwgc2Vjb25kIC0gZmlyc3QgLSAxKSwgc2hvcnRQb3J0
IH0sIFdURk1vdmUoc2NvcGUpIH07CiB9CiAKICNpZiAhTE9HX0RJU0FCTEVECmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCmluZGV4IDdj
MzY0MmZlMzM4MWM5NmE5NGQxNTVjYzQ3YWFiZTljZTg1NmI3ZDcuLjg3YWQ4OTU0OGExYTZhMThk
MDhkZmFlMzIyZmI1MjkyNWQ1YWJjNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCkBAIC0xMjY4LDcgKzEyNjgsNyBAQCBib29s
IFNXU2VydmVyOjpjYW5IYW5kbGVTY2hlbWUoU3RyaW5nVmlldyBzY2hlbWUpIGNvbnN0CiB7CiAg
ICAgaWYgKHNjaGVtZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICgh
ZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc2NoZW1lLnN1YnN0cmluZygwLCA0KSwgImh0
dHAiKSkKKyAgICBpZiAoIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHNjaGVtZS5sZWZ0
KDQpLCAiaHR0cCIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKHNjaGVtZS5sZW5n
dGgoKSA9PSA1ICYmIGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwoc2NoZW1lWzRdLCAncycpKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvQ29tbWFu
ZFJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwCmluZGV4IDgz
NTk2OWJmYTM2Y2UxNmY2MzU2YzZiYTE3Y2E5MmVhMWU5OGRlZGUuLjJiMWI3ZGIxMjE0YzlmZTZj
ZWFiOTUxZjM2MTUwMmMxOWVmOTRkMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvQ29t
bWFuZFJlc3VsdC5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmNwcApA
QCAtNzQsNyArNzQsNyBAQCBDb21tYW5kUmVzdWx0OjpDb21tYW5kUmVzdWx0KFJlZlB0cjxKU09O
OjpWYWx1ZT4mJiByZXN1bHQsIHN0ZDo6b3B0aW9uYWw8RXJyb3JDbwogICAgICAgICBTdHJpbmcg
ZXJyb3JOYW1lOwogICAgICAgICBhdXRvIHBvc2l0aW9uID0gZXJyb3JNZXNzYWdlLmZpbmQoJzsn
KTsKICAgICAgICAgaWYgKHBvc2l0aW9uICE9IG5vdEZvdW5kKSB7Ci0gICAgICAgICAgICBlcnJv
ck5hbWUgPSBlcnJvck1lc3NhZ2Uuc3Vic3RyaW5nKDAsIHBvc2l0aW9uKTsKKyAgICAgICAgICAg
IGVycm9yTmFtZSA9IGVycm9yTWVzc2FnZS5sZWZ0KHBvc2l0aW9uKTsKICAgICAgICAgICAgIG1f
ZXJyb3JNZXNzYWdlID0gZXJyb3JNZXNzYWdlLnN1YnN0cmluZyhwb3NpdGlvbiArIDEpOwogICAg
ICAgICB9IGVsc2UKICAgICAgICAgICAgIGVycm9yTmFtZSA9IGVycm9yTWVzc2FnZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3Jh
Z2VEYXRhYmFzZVRyYWNrZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJT
dG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5jcHAKaW5kZXggZTA5ZDJlOWYzNmNh
YjI1YzE3NTQxYzg3NDk2ZmYyOWI5MWEwNTNiNS4uNzJlZDMzNzlkMzZmMmU3ZmY2ZjUzMDBkNWU2
NjNkNzQwMDdhYzI5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9X
ZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tl
ci5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiBMb2Nh
bFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6Om9yaWdpbnMoKSBjb25zdAogICAgIFZlY3RvcjxTZWN1
cml0eU9yaWdpbkRhdGE+IGRhdGFiYXNlT3JpZ2luczsKICAgICBmb3IgKGF1dG8mIHBhdGggOiBG
aWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KGxvY2FsU3RvcmFnZURpcmVjdG9yeSgpKSkgewogICAg
ICAgICBhdXRvIGZpbGVuYW1lID0gRmlsZVN5c3RlbTo6cGF0aEZpbGVOYW1lKHBhdGgpOwotICAg
ICAgICBhdXRvIG9yaWdpbklkZW50aWZpZXIgPSBmaWxlbmFtZS5zdWJzdHJpbmcoMCwgZmlsZW5h
bWUubGVuZ3RoKCkgLSBzdHJsZW4oIi5sb2NhbHN0b3JhZ2UiKSk7CisgICAgICAgIGF1dG8gb3Jp
Z2luSWRlbnRpZmllciA9IGZpbGVuYW1lLmxlZnQoZmlsZW5hbWUubGVuZ3RoKCkgLSBzdHJsZW4o
Ii5sb2NhbHN0b3JhZ2UiKSk7CiAgICAgICAgIGF1dG8gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW5E
YXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKG9yaWdpbklkZW50aWZpZXIpOwogICAgICAgICBp
ZiAob3JpZ2luKQogICAgICAgICAgICAgZGF0YWJhc2VPcmlnaW5zLmFwcGVuZChvcmlnaW4udmFs
dWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAppbmRleCBiMWU2ZmYzYzA3OGJlODcxZDk1MTBmYTM3
NmM0NzAwZTMzYzE5ZmE2Li42MTE2N2E4ZWJhODA1OTEyMGMzMTRkZWIzMjcyMjA5ZGMxNjhlZDky
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKQEAgLTIzNSw3ICsyMzUsNyBAQCBzdGF0aWMgdm9pZCB0
cmF2ZXJzZVJlY29yZHNGaWxlcyhjb25zdCBTdHJpbmcmIHJlY29yZHNQYXRoLCBjb25zdCBTdHJp
bmcmIGV4cGVjdAogICAgICAgICAgICAgICAgIGlmIChlbnRyeVR5cGUgIT0gRGlyZWN0b3J5RW50
cnlUeXBlOjpGaWxlIHx8IGZpbGVOYW1lLmxlbmd0aCgpIDwgS2V5OjpoYXNoU3RyaW5nTGVuZ3Ro
KCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgICAgIFN0cmlu
ZyBoYXNoU3RyaW5nID0gZmlsZU5hbWUuc3Vic3RyaW5nKDAsIEtleTo6aGFzaFN0cmluZ0xlbmd0
aCgpKTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgaGFzaFN0cmluZyA9IGZpbGVOYW1lLmxlZnQo
S2V5OjpoYXNoU3RyaW5nTGVuZ3RoKCkpOwogICAgICAgICAgICAgICAgIGF1dG8gaXNCbG9iID0g
ZmlsZU5hbWUubGVuZ3RoKCkgPiBLZXk6Omhhc2hTdHJpbmdMZW5ndGgoKSAmJiBmaWxlTmFtZS5l
bmRzV2l0aChibG9iU3VmZml4KTsKICAgICAgICAgICAgICAgICBmdW5jdGlvbihmaWxlTmFtZSwg
aGFzaFN0cmluZywgYWN0dWFsVHlwZSwgaXNCbG9iLCByZWNvcmREaXJlY3RvcnlQYXRoKTsKICAg
ICAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
dG9yYWdlL0xvY2FsU3RvcmFnZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zdG9yYWdlL0xvY2FsU3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IDI2YmM5MDc5YmIyZjk2
ZGU3OWFkMDUxOWQ3NzJhMGMwYjE2NWFiYjMuLjJiMTA4NDZmOTYwOTlhM2IyNGVjNDY1NDVmNTE1
N2NlYjY5MWQ3YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3Rv
cmFnZS9Mb2NhbFN0b3JhZ2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3N0b3JhZ2UvTG9jYWxTdG9yYWdlTWFuYWdlci5jcHAKQEAgLTUwLDcgKzUwLDcgQEAg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBmaWxlTmFt
ZVRvT3JpZ2luKGNvbnN0IFN0cmluZyYKICAgICBpZiAoZmlsZU5hbWVMZW5ndGggPD0gc3VmZml4
TGVuZ3RoKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgYXV0byBvcmlnaW5J
ZGVudGlmaWVyID0gZmlsZU5hbWUuc3Vic3RyaW5nKDAsIGZpbGVOYW1lTGVuZ3RoIC0gc3VmZml4
TGVuZ3RoKTsKKyAgICBhdXRvIG9yaWdpbklkZW50aWZpZXIgPSBmaWxlTmFtZS5sZWZ0KGZpbGVO
YW1lTGVuZ3RoIC0gc3VmZml4TGVuZ3RoKTsKICAgICByZXR1cm4gV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKG9yaWdpbklkZW50aWZpZXIpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1N0cmluZy5jcHAgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1N0cmluZy5jcHAKaW5kZXggNGVkM2I4YWEyZDIz
ZTUxNWEzMDQ5MDVlYzQwMmYzZTQ4YTRjNGQ2MS4uOWQ3NTVhN2YzYmE0ZThkZTM2MDRmOGYwYWEx
OTg4ODVkZjc2OTNlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tT
dHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLU3RyaW5nLmNwcApA
QCAtNTgsNyArNTgsNyBAQCBzaXplX3QgV0tTdHJpbmdHZXRDaGFyYWN0ZXJzKFdLU3RyaW5nUmVm
IHN0cmluZ1JlZiwgV0tDaGFyKiBidWZmZXIsIHNpemVfdCBidWZmZQogICAgIHN0YXRpY19hc3Nl
cnQoc2l6ZW9mKFdLQ2hhcikgPT0gc2l6ZW9mKFVDaGFyKSwgIlNpemUgb2YgV0tDaGFyIG11c3Qg
bWF0Y2ggc2l6ZSBvZiBVQ2hhciIpOwogCiAgICAgdW5zaWduZWQgdW5zaWduZWRCdWZmZXJMZW5n
dGggPSBzdGQ6Om1pbjxzaXplX3Q+KGJ1ZmZlckxlbmd0aCwgc3RkOjpudW1lcmljX2xpbWl0czx1
bnNpZ25lZD46Om1heCgpKTsKLSAgICBhdXRvIHN1YnN0cmluZyA9IFdlYktpdDo6dG9JbXBsKHN0
cmluZ1JlZiktPnN0cmluZ1ZpZXcoKS5zdWJzdHJpbmcoMCwgdW5zaWduZWRCdWZmZXJMZW5ndGgp
OworICAgIGF1dG8gc3Vic3RyaW5nID0gV2ViS2l0Ojp0b0ltcGwoc3RyaW5nUmVmKS0+c3RyaW5n
VmlldygpLmxlZnQodW5zaWduZWRCdWZmZXJMZW5ndGgpOwogCiAgICAgc3Vic3RyaW5nLmdldENo
YXJhY3RlcnNXaXRoVXBjb252ZXJ0KHJlaW50ZXJwcmV0X2Nhc3Q8VUNoYXIqPihidWZmZXIpKTsK
ICAgICByZXR1cm4gc3Vic3RyaW5nLmxlbmd0aCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvbWFjL0F1eGlsaWFyeVByb2Nlc3NNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9tYWMvQXV4aWxpYXJ5UHJvY2Vzc01hYy5tbQppbmRleCA4ZjI1OWRhNmQ1MTAyNmNjZDYxODli
YmVjYTQ4ZDUzZGI5ODFkYjViLi43NmQyMTgzNTg3YjA2MWExOGJmNTlmZjkxNGE3MzU0ZThmNjM1
OTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQXV4aWxpYXJ5UHJvY2Vz
c01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQXV4aWxpYXJ5UHJvY2Vzc01h
Yy5tbQpAQCAtNzAzLDEwICs3MDMsOSBAQCBzdGF0aWMgdm9pZCBwb3B1bGF0ZVNhbmRib3hJbml0
aWFsaXphdGlvblBhcmFtZXRlcnMoU2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1ldAogICAgIH0K
IAogICAgIHNhbmRib3hQYXJhbWV0ZXJzLmFkZFBhdGhQYXJhbWV0ZXIoIkhPTUVfRElSIiwgcHdk
LnB3X2Rpcik7Ci0gICAgU3RyaW5nIHBhdGggPSBTdHJpbmc6OmZyb21VVEY4KHB3ZC5wd19kaXIp
OwotICAgIHBhdGguYXBwZW5kKCIvTGlicmFyeSJfcyk7CisgICAgU3RyaW5nIHBhdGggPSBGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoU3RyaW5nOjpmcm9tVVRGOChwd2QucHdf
ZGlyKSwgIkxpYnJhcnkiX3MpOwogICAgIHNhbmRib3hQYXJhbWV0ZXJzLmFkZFBhdGhQYXJhbWV0
ZXIoIkhPTUVfTElCUkFSWV9ESVIiLCBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24ocGF0aCkuZGF0YSgpKTsKLSAgICBwYXRoLmFwcGVuZCgiL1ByZWZlcmVuY2VzIl9zKTsKKyAg
ICBwYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhdGgsICIvUHJl
ZmVyZW5jZXMiX3MpOwogICAgIHNhbmRib3hQYXJhbWV0ZXJzLmFkZFBhdGhQYXJhbWV0ZXIoIkhP
TUVfTElCUkFSWV9QUkVGRVJFTkNFU19ESVIiLCBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24ocGF0aCkuZGF0YSgpKTsKIAogI2lmIENQVShYODZfNjQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JbnB1dE1ldGhvZEZpbHRlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JbnB1dE1ldGhvZEZpbHRlci5jcHAKaW5k
ZXggYzc4YzE4MmQzM2NjYWExZmU3OGQ1ZDM5Zjg1MmNhZjhiYjExNDIzYy4uZGQ5ODYxZTI4MzEy
ODBiZGY5NmFkZTFiMmI3Y2QwODQzM2Q0N2JlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvSW5wdXRNZXRob2RGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL0lucHV0TWV0aG9kRmlsdGVyLmNwcApAQCAtMjQwLDEwICsy
NDAsMTAgQEAgdm9pZCBJbnB1dE1ldGhvZEZpbHRlcjo6bm90aWZ5U3Vycm91bmRpbmcoY29uc3Qg
U3RyaW5nJiB0ZXh0LCB1aW50NjRfdCBjdXJzb3JQb3MKICAgICBtX3N1cnJvdW5kaW5nLnNlbGVj
dGlvblBvc2l0aW9uID0gc2VsZWN0aW9uUG9zaXRpb247CiAKICAgICBhdXRvIHRleHRVVEY4ID0g
bV9zdXJyb3VuZGluZy50ZXh0LnV0ZjgoKTsKLSAgICBhdXRvIGN1cnNvclBvc2l0aW9uVVRGOCA9
IGN1cnNvclBvc2l0aW9uICE9IHRleHQubGVuZ3RoKCkgPyB0ZXh0LnN1YnN0cmluZygwLCBjdXJz
b3JQb3NpdGlvbikudXRmOCgpLmxlbmd0aCgpIDogdGV4dFVURjgubGVuZ3RoKCk7CisgICAgYXV0
byBjdXJzb3JQb3NpdGlvblVURjggPSBjdXJzb3JQb3NpdGlvbiAhPSB0ZXh0Lmxlbmd0aCgpID8g
dGV4dC5sZWZ0KGN1cnNvclBvc2l0aW9uKS51dGY4KCkubGVuZ3RoKCkgOiB0ZXh0VVRGOC5sZW5n
dGgoKTsKICAgICBhdXRvIHNlbGVjdGlvblBvc2l0aW9uVVRGOCA9IGN1cnNvclBvc2l0aW9uVVRG
ODsKICAgICBpZiAoY3Vyc29yUG9zaXRpb24gIT0gc2VsZWN0aW9uUG9zaXRpb24pCi0gICAgICAg
IHNlbGVjdGlvblBvc2l0aW9uVVRGOCA9IHNlbGVjdGlvblBvc2l0aW9uICE9IHRleHQubGVuZ3Ro
KCkgPyB0ZXh0LnN1YnN0cmluZygwLCBzZWxlY3Rpb25Qb3NpdGlvbikudXRmOCgpLmxlbmd0aCgp
IDogdGV4dFVURjgubGVuZ3RoKCk7CisgICAgICAgIHNlbGVjdGlvblBvc2l0aW9uVVRGOCA9IHNl
bGVjdGlvblBvc2l0aW9uICE9IHRleHQubGVuZ3RoKCkgPyB0ZXh0LmxlZnQoc2VsZWN0aW9uUG9z
aXRpb24pLnV0ZjgoKS5sZW5ndGgoKSA6IHRleHRVVEY4Lmxlbmd0aCgpOwogICAgIHdlYmtpdF9p
bnB1dF9tZXRob2RfY29udGV4dF9ub3RpZnlfc3Vycm91bmRpbmcobV9jb250ZXh0LmdldCgpLCB0
ZXh0VVRGOC5kYXRhKCksIHRleHRVVEY4Lmxlbmd0aCgpLCBjdXJzb3JQb3NpdGlvblVURjgsIHNl
bGVjdGlvblBvc2l0aW9uVVRGOCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2d0ay9HdGtTZXR0aW5nc01hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvZ3RrL0d0a1NldHRpbmdzTWFuYWdlci5jcHAKaW5kZXggYzUwMmQyZGM1MmU3ZjdkNDg4OWRm
MjZlYmJmMzNhZmMzYmMxNGI2My4uMDA5ZWZlOGRlODVjODhmYWViNWJmMzYxNGE1ZWJiNjUyMWVl
MWM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0d0a1NldHRpbmdz
TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0d0a1NldHRpbmdz
TWFuYWdlci5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgU3RyaW5nIEd0a1NldHRpbmdzTWFuYWdlcjo6
dGhlbWVOYW1lKCkgY29uc3QKICAgICBpZiAoYXV0byogdGhlbWVOYW1lRW52ID0gZ19nZXRlbnYo
IkdUS19USEVNRSIpKSB7CiAgICAgICAgIFN0cmluZyBuYW1lID0gU3RyaW5nOjpmcm9tVVRGOCh0
aGVtZU5hbWVFbnYpOwogICAgICAgICBpZiAobmFtZS5lbmRzV2l0aCgiLWRhcmsiKSB8fCBuYW1l
LmVuZHNXaXRoKCItRGFyayIpIHx8IG5hbWUuZW5kc1dpdGgoIjpkYXJrIikpCi0gICAgICAgICAg
ICByZXR1cm4gbmFtZS5zdWJzdHJpbmcoMCwgbmFtZS5sZW5ndGgoKSAtIDUpOworICAgICAgICAg
ICAgcmV0dXJuIG5hbWUubGVmdChuYW1lLmxlbmd0aCgpIC0gNSk7CiAgICAgICAgIHJldHVybiBu
YW1lOwogICAgIH0KIApAQCAtNTEsNyArNTEsNyBAQCBTdHJpbmcgR3RrU2V0dGluZ3NNYW5hZ2Vy
Ojp0aGVtZU5hbWUoKSBjb25zdAogICAgIGdfb2JqZWN0X2dldChtX3NldHRpbmdzLCAiZ3RrLXRo
ZW1lLW5hbWUiLCAmdGhlbWVOYW1lU2V0dGluZy5vdXRQdHIoKSwgbnVsbHB0cik7CiAgICAgU3Ry
aW5nIG5hbWUgPSBTdHJpbmc6OmZyb21VVEY4KHRoZW1lTmFtZVNldHRpbmcuZ2V0KCkpOwogICAg
IGlmIChuYW1lLmVuZHNXaXRoKCItZGFyayIpIHx8IG5hbWUuZW5kc1dpdGgoIi1EYXJrIikpCi0g
ICAgICAgIHJldHVybiBuYW1lLnN1YnN0cmluZygwLCBuYW1lLmxlbmd0aCgpIC0gNSk7CisgICAg
ICAgIHJldHVybiBuYW1lLmxlZnQobmFtZS5sZW5ndGgoKSAtIDUpOwogICAgIHJldHVybiBuYW1l
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvVGV4dENoZWNr
ZXJHdGsuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1RleHRDaGVja2VyR3RrLmNw
cAppbmRleCBiYjA5NDU4OTM2YzQ2NjgwNDQ2MTlmNzhjNmFiMTRmMDJiNWQ2YjIyLi4wMzZhNjYz
YjBiYmZmMWRlNjcyMjAzMTBlNDQ2OTEyZGY0NDExMWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9ndGsvVGV4dENoZWNrZXJHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2d0ay9UZXh0Q2hlY2tlckd0ay5jcHAKQEAgLTI3Myw3ICsyNzMsNyBAQCBWZWN0
b3I8VGV4dENoZWNraW5nUmVzdWx0PiBUZXh0Q2hlY2tlcjo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgo
U3BlbGxEb2N1bWVudFRhZyBzcAogICAgICAgICBwYXJhZ3JhcGhDaGVja2luZ1Jlc3VsdC5hcHBl
bmQobWlzc3BlbGxpbmdSZXN1bHQpOwogICAgICAgICBvZmZzZXQgKz0gbWlzc3BlbGxpbmdMb2Nh
dGlvbiArIG1pc3NwZWxsaW5nTGVuZ3RoOwogICAgICAgICAvLyBHZW5lcmFsbHksIHdlIGVuZCB1
cCBjaGVja2luZyBhdCB0aGUgd29yZCBzZXBhcmF0b3IsIG1vdmUgdG8gdGhlIGFkamFjZW50IHdv
cmQuCi0gICAgICAgIG9mZnNldCA9IG5leHRXb3JkT2Zmc2V0KHRleHQuc3Vic3RyaW5nKDAsIGxl
bmd0aFN0cmlwKSwgb2Zmc2V0KTsKKyAgICAgICAgb2Zmc2V0ID0gbmV4dFdvcmRPZmZzZXQodGV4
dC5sZWZ0KGxlbmd0aFN0cmlwKSwgb2Zmc2V0KTsKICAgICB9CiAgICAgcmV0dXJuIHBhcmFncmFw
aENoZWNraW5nUmVzdWx0OwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL3dpbi9XZWJQcm9jZXNzUG9vbFdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93
aW4vV2ViUHJvY2Vzc1Bvb2xXaW4uY3BwCmluZGV4IGUzMTg4OWYzNDRjNGE2M2RmNWU1ZTY1OWUy
NDIxZjRjOTEwNDhjYzQuLjIzYjNlY2E2NDc1YTBmNzA3ZDdmMGRkMmUyNjZmYzI1ZWRjMzUyMzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJQcm9jZXNzUG9vbFdp
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlByb2Nlc3NQb29sV2lu
LmNwcApAQCAtNjEsNyArNjEsNyBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplUmVtb3RlSW5zcGVj
dG9yU2VydmVyKFN0cmluZ1ZpZXcgYWRkcmVzcykKICAgICBpZiAocG9zID09IG5vdEZvdW5kKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGhvc3QgPSBhZGRyZXNzLnN1YnN0cmluZygwLCBw
b3MpOworICAgIGF1dG8gaG9zdCA9IGFkZHJlc3MubGVmdChwb3MpOwogICAgIGF1dG8gcG9ydCA9
IHBhcnNlSW50ZWdlcjx1aW50MTZfdD4oYWRkcmVzcy5zdWJzdHJpbmcocG9zICsgMSkpOwogICAg
IGlmICghcG9ydCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KaW5kZXggNjc1ZTcyMzM2MTY4YmMyZjhjOGQy
MjZkMDExZGY5NDI1NjA1NDgzMi4uMGFmYzAxNzJjOWIzYzhlMjc5NjU4NTk4M2M1NTVjZmIyMmFl
YzliYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BE
RlBsdWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERG
UGx1Z2luLm1tCkBAIC0xNjkxLDcgKzE2OTEsNyBAQCB2b2lkIFBERlBsdWdpbjo6c2V0U3VnZ2Vz
dGVkRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSkKICAgICAgICAgbV9z
dWdnZXN0ZWRGaWxlbmFtZSA9IHN1Z2dlc3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBlKG5pbCwgImFw
cGxpY2F0aW9uL3BkZiJfcyk7CiAKICAgICBpZiAoIW1fc3VnZ2VzdGVkRmlsZW5hbWUuZW5kc1dp
dGhJZ25vcmluZ0FTQ0lJQ2FzZSgiLnBkZiIpKQotICAgICAgICBtX3N1Z2dlc3RlZEZpbGVuYW1l
LmFwcGVuZCgiLnBkZiJfcyk7CisgICAgICAgIG1fc3VnZ2VzdGVkRmlsZW5hbWUgPSBtYWtlU3Ry
aW5nKG1fc3VnZ2VzdGVkRmlsZW5hbWUsICIucGRmIl9zKTsKIH0KICAgICAKIHZvaWQgUERGUGx1
Z2luOjpzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVS
TCYsIHVpbnQzMl90LCB1aW50MzJfdCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCmluZGV4IDVkNGVlYzVmZWQ4YjM1NGMw
ZjFhNjc1ZDBjYjRkNDMyN2QxZDI3YmQuLjM2MzYxOTZjYjU2YWEyZTQzMGMzYTNiMDc0MThlMjg0
ZjkxZTc2MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdl
VHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFj
a2VyLmNwcApAQCAtMjYwLDcgKzI2MCw3IEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6OnN5bmNGaWxl
U3lzdGVtQW5kVHJhY2tlckRhdGFiYXNlKCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAg
ICAgIGF1dG8gZmlsZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
bV9zdG9yYWdlRGlyZWN0b3J5UGF0aCwgZmlsZU5hbWUpOwotICAgICAgICBTdHJpbmcgb3JpZ2lu
SWRlbnRpZmllciA9IGZpbGVOYW1lLnN1YnN0cmluZygwLCBmaWxlTmFtZS5sZW5ndGgoKSAtIGZp
bGVFeHRlbnNpb24ubGVuZ3RoKCkpOworICAgICAgICBTdHJpbmcgb3JpZ2luSWRlbnRpZmllciA9
IGZpbGVOYW1lLmxlZnQoZmlsZU5hbWUubGVuZ3RoKCkgLSBmaWxlRXh0ZW5zaW9uLmxlbmd0aCgp
KTsKICAgICAgICAgaWYgKCFvcmlnaW5TZXRDb3B5LmNvbnRhaW5zKG9yaWdpbklkZW50aWZpZXIp
KQogICAgICAgICAgICAgc3luY1NldE9yaWdpbkRldGFpbHMob3JpZ2luSWRlbnRpZmllciwgZmls
ZVBhdGgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YkhUTUxSZXByZXNlbnRhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCmluZGV4IDNkYjI0ODhkNjBlYzQxYjA4MWY3YTkxN2Qw
ZTI2MWIyN2U2MjRhMjcuLjZiOWYyZmY4YThkODk1NTVlMjBlNDAyMjQ3YzcxMDUyNjBiNTJhMjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJl
c2VudGF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRN
TFJlcHJlc2VudGF0aW9uLm1tCkBAIC0zNzUsNyArMzc1LDcgQEAgc3RhdGljIFJlZ3VsYXJFeHBy
ZXNzaW9uKiByZWdFeHBGb3JMYWJlbHMoTlNBcnJheSAqbGFiZWxzKQogICAgICAgICAgICAgYm9v
bCBzdGFydHNXaXRoV29yZENoYXJhY3RlciA9IGZhbHNlOwogICAgICAgICAgICAgYm9vbCBlbmRz
V2l0aFdvcmRDaGFyYWN0ZXIgPSBmYWxzZTsKICAgICAgICAgICAgIGlmIChsYWJlbC5sZW5ndGgo
KSkgewotICAgICAgICAgICAgICAgIHN0YXJ0c1dpdGhXb3JkQ2hhcmFjdGVyID0gd29yZFJlZ0V4
cC5nZXQoKS5tYXRjaChsYWJlbC5zdWJzdHJpbmcoMCwgMSkpID49IDA7CisgICAgICAgICAgICAg
ICAgc3RhcnRzV2l0aFdvcmRDaGFyYWN0ZXIgPSB3b3JkUmVnRXhwLmdldCgpLm1hdGNoKGxhYmVs
LmxlZnQoMSkpID49IDA7CiAgICAgICAgICAgICAgICAgZW5kc1dpdGhXb3JkQ2hhcmFjdGVyID0g
d29yZFJlZ0V4cC5nZXQoKS5tYXRjaChsYWJlbC5zdWJzdHJpbmcobGFiZWwubGVuZ3RoKCkgLSAx
LCAxKSkgPj0gMDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIApkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDEyNmUxODc4MDNmY2U1ZDQ3MDRl
M2FlZTQ0ZjQxZjYwYmQxNTc2NzQuLmU2MmZjZTdlZWY5Y2NmYjJhYjFlYjhhNTgyYzY3N2ZhNmY4
Nzg3MmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwzNCBAQAorMjAyMi0wNC0xMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgorCisgICAgICAgIERyb3AgaW5lZmZpY2llbnQgU3RyaW5nOjphcHBlbmQoKSBvdmVybG9h
ZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTI4
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERyb3Ag
aW5lZmZpY2llbnQgU3RyaW5nOjphcHBlbmQoKSBvdmVybG9hZHMgdG8gcHVzaCBkZXZlbG9wZXJz
IHRvIHVzZSBTdHJpbmdCdWlsZGVyIC8gbWFrZVN0cmluZygpIGluc3RlYWQuCisKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwOgorICAgICAgICAoZmluZEZv
bnRGYWxsYmFjayk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3Rl
bS5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ0J1aWxkZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVVJMUGFyc2Vy
LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Omluc2VydFRhYkF0TG9jYXRpb24pOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRvci5jcHA6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpyZWFkQ29udGVudHNPZkZpbGUpOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9IVFRQSGVhZGVyRmllbGQuY3BwOgorICAgICAgICAoY2Fu
b25pY2FsaXplSFRUUEhlYWRlcik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL1VSTFBhcnNlclRleHRFbmNvZGluZy5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpp
bnNlcnRUYWJBdExvY2F0aW9uKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXVFI6OnBhdGhTdWl0YWJs
ZUZvclRlc3RSZXN1bHQpOgorICAgICAgICAoV1RSOjpkdW1wRnJhbWVUZXh0KToKKyAgICAgICAg
KFdUUjo6c3RyaXBUcmFpbGluZ1NwYWNlc0FkZE5ld2xpbmUpOgorICAgICAgICAoV1RSOjpJbmpl
Y3RlZEJ1bmRsZVBhZ2U6OndpbGxBZGRNZXNzYWdlVG9Db25zb2xlKToKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRy
b2xsZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisKIDIwMjItMDQtMTMg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXBsYWNlIEF0b21T
dHJpbmcoY29uc3QgY2hhciopIHdpdGggQXRvbVN0cmluZzo6ZnJvbUxhdGluMShjb25zdCBjaGFy
KikKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5j
cHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCmluZGV4IDM2
YWU4ZjU3M2M0MjhhYWU0ZDVkNWZiMmE3ZTRhMjkzN2U0YmNjODcuLmIzZTc3ZTRiZTgyNmZmY2Uz
NGNlMGU3OGIxYjc3ZjM0ZGM2YWJhYzYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1
bXBSZW5kZXJUcmVlLmNwcApAQCAtMTEyMywxNCArMTEyMywxNCBAQCBzdGF0aWMgU3RyaW5nIGZp
bmRGb250RmFsbGJhY2soY29uc3QgY2hhciogcGF0aE9yVXJsKQogICAgICAgICByZXR1cm4gZW1w
dHlTdHJpbmcoKTsKIAogICAgIFN0cmluZyBwYXRoVG9UZXN0ID0gcGF0aFRvQ2hlY2suc3Vic3Ry
aW5nKGxvY2F0aW9uICsgbGF5b3V0VGVzdHMubGVuZ3RoKCkgKyAxKTsKLSAgICBTdHJpbmcgcG9z
c2libGVQYXRoVG9Mb2d1ZSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChw
YXRoVG9DaGVjay5zdWJzdHJpbmcoMCwgbG9jYXRpb24gKyBsYXlvdXRUZXN0cy5sZW5ndGgoKSAr
IDEpLCAicGxhdGZvcm1cXHdpbiJfcyk7CisgICAgU3RyaW5nIHBvc3NpYmxlUGF0aFRvTG9ndWUg
PSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGF0aFRvQ2hlY2subGVmdChs
b2NhdGlvbiArIGxheW91dFRlc3RzLmxlbmd0aCgpICsgMSksICJwbGF0Zm9ybVxcd2luIl9zKTsK
IAogICAgIFZlY3RvcjxTdHJpbmc+IHBvc3NpYmxlUGF0aHM7CiAgICAgcG9zc2libGVQYXRocy5h
cHBlbmQoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBvc3NpYmxlUGF0aFRv
TG9ndWUsIHBhdGhUb1Rlc3QpKTsKIAogICAgIHNpemVfdCBuZXh0Q2FuZGlkYXRlRW5kID0gcGF0
aFRvVGVzdC5yZXZlcnNlRmluZCgnXFwnKTsKICAgICB3aGlsZSAobmV4dENhbmRpZGF0ZUVuZCAm
JiBuZXh0Q2FuZGlkYXRlRW5kICE9IFdURjo6bm90Rm91bmQpIHsKLSAgICAgICAgcGF0aFRvVGVz
dCA9IHBhdGhUb1Rlc3Quc3Vic3RyaW5nKDAsIG5leHRDYW5kaWRhdGVFbmQpOworICAgICAgICBw
YXRoVG9UZXN0ID0gcGF0aFRvVGVzdC5sZWZ0KG5leHRDYW5kaWRhdGVFbmQpOwogICAgICAgICBw
b3NzaWJsZVBhdGhzLmFwcGVuZChGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
cG9zc2libGVQYXRoVG9Mb2d1ZSwgcGF0aFRvVGVzdCkpOwogICAgICAgICBuZXh0Q2FuZGlkYXRl
RW5kID0gcGF0aFRvVGVzdC5yZXZlcnNlRmluZCgnXFwnKTsKICAgICB9CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCmluZGV4IGRiMjQ2NTIzOTY4NjUxNjg4
ODFiNzQxNDdjZjNjNGMzYTg2YTRiODQuLjY1ZmVhYWYzZGJiMjkxMjc3Mjk0ZmVmOGVjMjlhOWVh
M2FjMjg1ZGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVT
eXN0ZW0uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0u
Y3BwCkBAIC00ODUsOSArNDg1LDcgQEAgVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBtYWtlQWxsRGly
ZWN0b3JpZXMpCiAgICAgRVhQRUNUX0VRKEZpbGVTeXN0ZW06OmZpbGVUeXBlKHN1YkZvbGRlclBh
dGgpLCBGaWxlU3lzdGVtOjpGaWxlVHlwZTo6RGlyZWN0b3J5KTsKICAgICBFWFBFQ1RfVFJVRShG
aWxlU3lzdGVtOjpkZWxldGVOb25FbXB0eURpcmVjdG9yeSh0ZW1wRW1wdHlGb2xkZXJQYXRoKCkp
KTsKICAgICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhzdWJGb2xkZXJQYXRo
KSk7Ci0gICAgU3RyaW5nIGludmFsaWRGb2xkZXJQYXRoOwotICAgIGludmFsaWRGb2xkZXJQYXRo
LmFwcGVuZCgnXDAnKTsKLSAgICBpbnZhbGlkRm9sZGVyUGF0aC5hcHBlbmQoJ2EnKTsKKyAgICBT
dHJpbmcgaW52YWxpZEZvbGRlclBhdGggPSBtYWtlU3RyaW5nKCdcMCcsICdhJyk7CiAgICAgRVhQ
RUNUX0ZBTFNFKEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhpbnZhbGlkRm9sZGVyUGF0
aCkpOwogICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoZW1w
dHlTdHJpbmcoKSkpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvU3RyaW5nQnVpbGRlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJp
bmdCdWlsZGVyLmNwcAppbmRleCBhNDg3ZTU3ZTlkMDQ2MTdkNDlkZThkYTE5MTJiZTQ4MjYxNjgz
MDU5Li5hZTE1M2M1NjE1ODY4YjhiMWQ1MjZiZGY5OGQ1MjcxMTViY2FmZGNhIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdCdWlsZGVyLmNwcAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdCdWlsZGVyLmNwcApAQCAtMjA5LDkg
KzIwOSw5IEBAIFRFU1QoU3RyaW5nQnVpbGRlclRlc3QsIFRvU3RyaW5nKQogICAgIC8vIENoYW5n
aW5nIHRoZSBvcmlnaW5hbCByZXN1bHQgb2YgdG9TdHJpbmcoKSBzaG91bGQgbm90IGFmZmVjdCB0
aGUgY29udGVudCBvZiB0aGUgU3RyaW5nQnVpbGRlci4KICAgICBTdHJpbmcgc3RyaW5nMSA9IGJ1
aWxkZXIudG9TdHJpbmcoKTsKICAgICBFWFBFQ1RfRVEoU3RyaW5nKCIwMTIzNDU2Nzg5YWJjZGVm
Z2hpamtsbW5vcHFyc3R1dnd4eXpBQkMiX3MpLCBzdHJpbmcxKTsKLSAgICBzdHJpbmcxLmFwcGVu
ZCgiREVGIl9zKTsKKyAgICBzdHJpbmcxLnJlcGxhY2UoJzAnLCAnYScpOwogICAgIEVYUEVDVF9F
UShTdHJpbmcoIjAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQyJfcyksIGJ1
aWxkZXIudG9TdHJpbmcoKSk7Ci0gICAgRVhQRUNUX0VRKFN0cmluZygiMDEyMzQ1Njc4OWFiY2Rl
ZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGIl9zKSwgc3RyaW5nMSk7CisgICAgRVhQRUNUX0VR
KFN0cmluZygiYTEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDIl9zKSwgc3Ry
aW5nMSk7CiAKICAgICAvLyBSZXNpemluZyB0aGUgU3RyaW5nQnVpbGRlciBzaG91bGQgbm90IGFm
ZmVjdCB0aGUgb3JpZ2luYWwgcmVzdWx0IG9mIHRvU3RyaW5nKCkuCiAgICAgc3RyaW5nMSA9IGJ1
aWxkZXIudG9TdHJpbmcoKTsKQEAgLTI1MSw5ICsyNTEsOSBAQCBURVNUKFN0cmluZ0J1aWxkZXJU
ZXN0LCBUb1N0cmluZ1ByZXNlcnZlQ2FwYWNpdHkpCiAgICAgRVhQRUNUX0VRKGNhcGFjaXR5LCBi
dWlsZGVyLmNhcGFjaXR5KCkpOwogICAgIEVYUEVDVF9FUShzdHJpbmcxLmNoYXJhY3RlcnM4KCks
IGJ1aWxkZXIuY2hhcmFjdGVyczgoKSk7CiAgICAgRVhQRUNUX0VRKFN0cmluZygiMDEyMzQ1Njc4
OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDIl9zKSwgc3RyaW5nMSk7Ci0gICAgc3RyaW5n
MS5hcHBlbmQoIkRFRiJfcyk7CisgICAgc3RyaW5nMS5yZXBsYWNlKCcwJywgJ2EnKTsKICAgICBF
WFBFQ1RfRVEoU3RyaW5nKCIwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkMi
X3MpLCBidWlsZGVyLnRvU3RyaW5nUHJlc2VydmVDYXBhY2l0eSgpKTsKLSAgICBFWFBFQ1RfRVEo
U3RyaW5nKCIwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUYiX3MpLCBz
dHJpbmcxKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCJhMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5v
cHFyc3R1dnd4eXpBQkMiX3MpLCBzdHJpbmcxKTsKIAogICAgIC8vIFJlc2l6aW5nIHRoZSBTdHJp
bmdCdWlsZGVyIHNob3VsZCBub3QgYWZmZWN0IHRoZSBvcmlnaW5hbCByZXN1bHQgb2YgdG9TdHJp
bmdQcmVzZXJ2ZUNhcGFjaXR5KCkuCiAgICAgY2FwYWNpdHkgPSBidWlsZGVyLmNhcGFjaXR5KCk7
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9VUkxQYXJzZXIuY3Bw
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVVJMUGFyc2VyLmNwcAppbmRleCA5MGZm
Yzk5NDRlNmIyNWJkNDU5ODU5NmZkZDg2NTk0YjFiM2FkZjU5Li4zYWYzOTNjYTAzZmFiMzNlMDg3
Y2M4ZmRjOTk2YmJiMDA0YjEwYWZkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9VUkxQYXJzZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L1VSTFBhcnNlci5jcHAKQEAgLTczLDcgKzczLDcgQEAgYm9vbCBlcShUJiYgczEsIFUmJiBzMikK
IHN0YXRpYyBTdHJpbmcgaW5zZXJ0VGFiQXRMb2NhdGlvbihTdHJpbmdWaWV3IHN0cmluZywgc2l6
ZV90IGxvY2F0aW9uKQogewogICAgIEFTU0VSVChsb2NhdGlvbiA8PSBzdHJpbmcubGVuZ3RoKCkp
OwotICAgIHJldHVybiBtYWtlU3RyaW5nKHN0cmluZy5zdWJzdHJpbmcoMCwgbG9jYXRpb24pLCAi
XHQiLCBzdHJpbmcuc3Vic3RyaW5nKGxvY2F0aW9uKSk7CisgICAgcmV0dXJuIG1ha2VTdHJpbmco
c3RyaW5nLmxlZnQobG9jYXRpb24pLCAiXHQiLCBzdHJpbmcuc3Vic3RyaW5nKGxvY2F0aW9uKSk7
CiB9CiAKIHN0YXRpYyBFeHBlY3RlZFBhcnRzIGludmFsaWRQYXJ0cyhTdHJpbmdWaWV3IHVybFN0
cmluZ1dpdGhUYWIpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvQ29udGVudEV4dGVuc2lvbnMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL0NvbnRlbnRFeHRlbnNpb25zLmNwcAppbmRleCBhOTk3MTIzNGMzYzIwY2YxNDVmZTU2NzBk
YmFiOTllNmQzZTBjODE0Li43YjY4Njk3ZTY0ZmVkZmU4NjljNzE4OThiZGYzZTNlNGJiNjI5ZDQ5
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29udGVudEV4
dGVuc2lvbnMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db250
ZW50RXh0ZW5zaW9ucy5jcHAKQEAgLTE1MDcsMTAgKzE1MDcsOCBAQCBURVNUX0YoQ29udGVudEV4
dGVuc2lvblRlc3QsIEludmFsaWRKU09OKQogICAgIHJ1bGVzLmFwcGVuZCgiWyJfcyk7CiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDE0OTk5OTsgKytpKQogICAgICAgICBydWxlcy5hcHBl
bmQoIntcImFjdGlvblwiOntcInR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1m
aWx0ZXJcIjpcImFcIn19LCJfcyk7Ci0gICAgU3RyaW5nIHJ1bGVzMTUwMDAwID0gcnVsZXMudG9T
dHJpbmcoKTsKLSAgICBTdHJpbmcgcnVsZXMxNTAwMDEgPSBydWxlcy50b1N0cmluZygpOwotICAg
IHJ1bGVzMTUwMDAwLmFwcGVuZCgie1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0
cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiYVwifX1dIl9zKTsKLSAgICBydWxlczE1MDAwMS5h
cHBlbmQoIntcImFjdGlvblwiOntcInR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVy
bC1maWx0ZXJcIjpcImFcIn19LHtcImFjdGlvblwiOntcInR5cGVcIjpcImJsb2NrXCJ9LFwidHJp
Z2dlclwiOntcInVybC1maWx0ZXJcIjpcImFcIn19XSJfcyk7CisgICAgU3RyaW5nIHJ1bGVzMTUw
MDAwID0gbWFrZVN0cmluZyhydWxlcy50b1N0cmluZygpLCAie1wiYWN0aW9uXCI6e1widHlwZVwi
OlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiYVwifX1dIl9zKTsKKyAg
ICBTdHJpbmcgcnVsZXMxNTAwMDEgPSBtYWtlU3RyaW5nKHJ1bGVzLnRvU3RyaW5nKCksICJ7XCJh
Y3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6
XCJhXCJ9fSx7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1
cmwtZmlsdGVyXCI6XCJhXCJ9fV0iX3MpOwogICAgIGNoZWNrQ29tcGlsZXJFcnJvcihXVEZNb3Zl
KHJ1bGVzMTUwMDAwKSwgeyB9KTsKICAgICBjaGVja0NvbXBpbGVyRXJyb3IoV1RGTW92ZShydWxl
czE1MDAwMSksIENvbnRlbnRFeHRlbnNpb25FcnJvcjo6SlNPTlRvb01hbnlSdWxlcyk7CiAgICAg
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZU1vbml0
b3IuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNw
cAppbmRleCA5ZTM1ZDk1YmI1MWEwOWIwMDg1MzRkNzMzNWQ4MjhhMDAwZWMyYzQyLi5mYWZhYjFj
YWVmYjYzNGYzMTZmYzQzODhjNWQ4OTJlMzE4MTE1ODNkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZU1vbml0b3IuY3BwCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRvci5jcHAKQEAgLTExMiw3ICsxMTIsNyBA
QCBzdGF0aWMgU3RyaW5nIHJlYWRDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCiAK
ICAgICBTdHJpbmcgcmVzdWx0KHN0YXRpY19jYXN0PGNvbnN0IExDaGFyKj4oYnVmZmVyLT5kYXRh
KCkpLCBidWZmZXItPnNpemUoKSk7CiAgICAgaWYgKHJlc3VsdC5lbmRzV2l0aCgiXG4iKSkKLSAg
ICAgICAgcmV0dXJuIHJlc3VsdC5zdWJzdHJpbmcoMCwgcmVzdWx0Lmxlbmd0aCgpIC0gMSk7Cisg
ICAgICAgIHJldHVybiByZXN1bHQubGVmdChyZXN1bHQubGVuZ3RoKCkgLSAxKTsKIAogICAgIHJl
dHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvSFRUUEhlYWRlckZpZWxkLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9IVFRQSGVhZGVyRmllbGQuY3BwCmluZGV4IDcyM2Q1ODhhYTQ5Yzg3ZTM2NjRiNDZmMzE4
MGRmZDcwN2ZjMjc1ZWEuLjA0OTllMWE0MjFlYzcxZWU4NTk2YTVhOWI1ZTQ1NTVkOGQwOThiODAg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9IVFRQSGVhZGVy
RmllbGQuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9IVFRQSGVh
ZGVyRmllbGQuY3BwCkBAIC0zMyw3ICszMyw3IEBAIHN0YXRpYyBTdHJpbmcgY2Fub25pY2FsaXpl
SFRUUEhlYWRlcihjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICBzaXplX3QgY29sb25Mb2NhdGlv
biA9IHN0cmluZy5maW5kKCc6Jyk7CiAgICAgaWYgKGNvbG9uTG9jYXRpb24gPT0gbm90Rm91bmQp
CiAgICAgICAgIHJldHVybiB7IH07Ci0gICAgYXV0byBmaWVsZCA9IFdlYkNvcmU6OkhUVFBIZWFk
ZXJGaWVsZDo6Y3JlYXRlKHN0cmluZy5zdWJzdHJpbmcoMCwgY29sb25Mb2NhdGlvbiksIHN0cmlu
Zy5zdWJzdHJpbmcoY29sb25Mb2NhdGlvbiArIDEpKTsKKyAgICBhdXRvIGZpZWxkID0gV2ViQ29y
ZTo6SFRUUEhlYWRlckZpZWxkOjpjcmVhdGUoc3RyaW5nLmxlZnQoY29sb25Mb2NhdGlvbiksIHN0
cmluZy5zdWJzdHJpbmcoY29sb25Mb2NhdGlvbiArIDEpKTsKICAgICBpZiAoIWZpZWxkKQogICAg
ICAgICByZXR1cm4geyB9OwogICAgIHJldHVybiBtYWtlU3RyaW5nKGZpZWxkLT5uYW1lKCksICI6
ICIsIGZpZWxkLT52YWx1ZSgpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9VUkxQYXJzZXJUZXh0RW5jb2RpbmcuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlclRleHRFbmNvZGluZy5jcHAKaW5kZXggNGQyN2Y0ZmQ0
YjU1MjI4NzQzZDNlMmY3Y2M5N2ZiYzQzZjQ0YThlYi4uZjhiODE1MWY3ZDg3NTg0OWZlOTc0Nzg2
NzZmODcwNGFlOWJkZTNiNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL1VSTFBhcnNlclRleHRFbmNvZGluZy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlclRleHRFbmNvZGluZy5jcHAKQEAgLTc0LDcgKzc0LDcg
QEAgYm9vbCBlcShUJiYgczEsIFUmJiBzMikKIHN0YXRpYyBTdHJpbmcgaW5zZXJ0VGFiQXRMb2Nh
dGlvbihjb25zdCBTdHJpbmcmIHN0cmluZywgc2l6ZV90IGxvY2F0aW9uKQogewogICAgIEFTU0VS
VChsb2NhdGlvbiA8PSBzdHJpbmcubGVuZ3RoKCkpOwotICAgIHJldHVybiBtYWtlU3RyaW5nKHN0
cmluZy5zdWJzdHJpbmcoMCwgbG9jYXRpb24pLCAiXHQiLCBzdHJpbmcuc3Vic3RyaW5nKGxvY2F0
aW9uKSk7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoc3RyaW5nLmxlZnQobG9jYXRpb24pLCAiXHQi
LCBzdHJpbmcuc3Vic3RyaW5nKGxvY2F0aW9uKSk7CiB9CiAKIHN0YXRpYyBFeHBlY3RlZFBhcnRz
IGludmFsaWRQYXJ0cyhjb25zdCBTdHJpbmcmIHVybFN0cmluZ1dpdGhUYWIpCmRpZmYgLS1naXQg
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFn
ZS5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZS5jcHAKaW5kZXggZDAwNmI3ODljYzExY2U1YmI5NGI0MzMxZDM5YzlmNjA0MWNiNmU3
NC4uODM5MzYwNGFhYzNlYzFhYzE1MjAwNzhmZWJkYjVmNThiYjQ4MmM4OCAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2Uu
Y3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlLmNwcApAQCAtMjA5LDcgKzIwOSw3IEBAIHN0YXRpYyBpbmxpbmUgV1RGOjpTdHJp
bmcgcGF0aFN1aXRhYmxlRm9yVGVzdFJlc3VsdChXS1VSTFJlZiBmaWxlVXJsKQogCiAgICAgU3Ry
aW5nIHBhdGhTdHJpbmcgPSB0b1dURlN0cmluZyhhZG9wdFdLKFdLVVJMQ29weVBhdGgoZmlsZVVy
bCkpKTsKICAgICBTdHJpbmcgbWFpbkZyYW1lVVJMUGF0aFN0cmluZyA9IHRvV1RGU3RyaW5nKGFk
b3B0V0soV0tVUkxDb3B5UGF0aChtYWluRnJhbWVVUkwuZ2V0KCkpKSk7Ci0gICAgU3RyaW5nIGJh
c2VQYXRoID0gbWFpbkZyYW1lVVJMUGF0aFN0cmluZy5zdWJzdHJpbmcoMCwgbWFpbkZyYW1lVVJM
UGF0aFN0cmluZy5yZXZlcnNlRmluZChkaXZpZGVyKSArIDEpOworICAgIFN0cmluZyBiYXNlUGF0
aCA9IG1haW5GcmFtZVVSTFBhdGhTdHJpbmcubGVmdChtYWluRnJhbWVVUkxQYXRoU3RyaW5nLnJl
dmVyc2VGaW5kKGRpdmlkZXIpICsgMSk7CiAgICAgCiAgICAgaWYgKCFiYXNlUGF0aC5pc0VtcHR5
KCkgJiYgcGF0aFN0cmluZy5zdGFydHNXaXRoKGJhc2VQYXRoKSkKICAgICAgICAgcmV0dXJuIHBh
dGhTdHJpbmcuc3Vic3RyaW5nKGJhc2VQYXRoLmxlbmd0aCgpKTsKQEAgLTc0Niw3ICs3NDYsNyBA
QCBzdGF0aWMgdm9pZCBkdW1wRnJhbWVUZXh0KFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFN0cmlu
Z0J1aWxkZXImIGJ1aWxkZXIpCiAgICAgYXV0byB0ZXh0ID0gdG9XVEZTdHJpbmcoYWRvcHRXSyhX
S0J1bmRsZUZyYW1lQ29weUlubmVyVGV4dChmcmFtZSkpKTsKICAgICBmb3IgKGF1dG8gbGluZSA6
IFN0cmluZ1ZpZXcodGV4dCkuc3BsaXRBbGxvd2luZ0VtcHR5RW50cmllcygnXG4nKSkgewogICAg
ICAgICB3aGlsZSAobGluZS5lbmRzV2l0aCgnICcpKQotICAgICAgICAgICAgbGluZSA9IGxpbmUu
c3Vic3RyaW5nKDAsIGxpbmUubGVuZ3RoKCkgLSAxKTsKKyAgICAgICAgICAgIGxpbmUgPSBsaW5l
LmxlZnQobGluZS5sZW5ndGgoKSAtIDEpOwogICAgICAgICBidWlsZGVyLmFwcGVuZChsaW5lLCAn
XG4nKTsKICAgICB9CiB9CkBAIC0xMzAwLDcgKzEzMDAsNyBAQCBzdGF0aWMgV1RGOjpTdHJpbmcg
c3RyaXBUcmFpbGluZ1NwYWNlc0FkZE5ld2xpbmUoY29uc3QgV1RGOjpTdHJpbmcmIHN0cmluZykK
ICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAgICAgZm9yIChhdXRvIGxpbmUgOiBTdHJpbmdW
aWV3KHN0cmluZykuc3BsaXRBbGxvd2luZ0VtcHR5RW50cmllcygnXG4nKSkgewogICAgICAgICB3
aGlsZSAobGluZS5lbmRzV2l0aCgnICcpKQotICAgICAgICAgICAgbGluZSA9IGxpbmUuc3Vic3Ry
aW5nKDAsIGxpbmUubGVuZ3RoKCkgLSAxKTsKKyAgICAgICAgICAgIGxpbmUgPSBsaW5lLmxlZnQo
bGluZS5sZW5ndGgoKSAtIDEpOwogICAgICAgICBidWlsZGVyLmFwcGVuZChsaW5lLCAnXG4nKTsK
ICAgICB9CiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKQEAgLTEzNDYsNyArMTM0Niw3
IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjp3aWxsQWRkTWVzc2FnZVRvQ29uc29sZShXS1N0
cmluZ1JlZiBtZXNzYWdlKQogICAgIHNpemVfdCBmaWxlUHJvdG9jb2xTdGFydCA9IG1lc3NhZ2VT
dHJpbmcuZmluZCgiZmlsZTovLyIpOwogICAgIGlmIChmaWxlUHJvdG9jb2xTdGFydCAhPSBXVEY6
Om5vdEZvdW5kKQogICAgICAgICAvLyBGSVhNRTogVGhlIGNvZGUgYmVsb3cgZG9lcyBub3QgaGFu
ZGxlIGFkZGl0aW9uYWwgdGV4dCBhZnRlciB1cmwgbm9yIG11bHRpcGxlIHVybHMuIFRoaXMgbWF0
Y2hlcyBEdW1wUmVuZGVyVHJlZSBpbXBsZW1lbnRhdGlvbi4KLSAgICAgICAgbWVzc2FnZVN0cmlu
ZyA9IG1lc3NhZ2VTdHJpbmcuc3Vic3RyaW5nKDAsIGZpbGVQcm90b2NvbFN0YXJ0KSArIGxhc3RG
aWxlVVJMUGF0aENvbXBvbmVudChtZXNzYWdlU3RyaW5nLnN1YnN0cmluZyhmaWxlUHJvdG9jb2xT
dGFydCkpOworICAgICAgICBtZXNzYWdlU3RyaW5nID0gbWVzc2FnZVN0cmluZy5sZWZ0KGZpbGVQ
cm90b2NvbFN0YXJ0KSArIGxhc3RGaWxlVVJMUGF0aENvbXBvbmVudChtZXNzYWdlU3RyaW5nLnN1
YnN0cmluZyhmaWxlUHJvdG9jb2xTdGFydCkpOwogCiAgICAgbWVzc2FnZVN0cmluZyA9IG1ha2VT
dHJpbmcoIkNPTlNPTEUgTUVTU0FHRToiLCBhZGRMZWFkaW5nU3BhY2VTdHJpcFRyYWlsaW5nU3Bh
Y2VzQWRkTmV3bGluZShtZXNzYWdlU3RyaW5nKSk7CiAgICAgaWYgKGluamVjdGVkQnVuZGxlLmR1
bXBKU0NvbnNvbGVMb2dJblN0ZEVycigpKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250
cm9sbGVyLmNwcAppbmRleCA5MGExNGVmZjNjYWMyNjEwZjdmMjBlMjlhNzkwMGQwN2VhMDcxYzEz
Li5hMTU4MjAzMDdhYThmYjNmMTg0Zjk4ZDNlNTY4NDZiZjc3ZTVhNzhlIDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAtMjIzNiwxMiArMjIzNiwxMyBAQCB2
b2lkIFRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV0tQ
YWdlUmVmIHBhZ2UsIFdLQXV0aGVudAogCiAgICAgYXV0byBob3N0ID0gdG9XVEZTdHJpbmcoYWRv
cHRXSyhXS1Byb3RlY3Rpb25TcGFjZUNvcHlIb3N0KHByb3RlY3Rpb25TcGFjZSkpLmdldCgpKTsK
ICAgICBpbnQgcG9ydCA9IFdLUHJvdGVjdGlvblNwYWNlR2V0UG9ydChwcm90ZWN0aW9uU3BhY2Up
OwotICAgIFN0cmluZyBtZXNzYWdlID0gbWFrZVN0cmluZyhob3N0LCAnOicsIHBvcnQsICIgLSBk
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgLSAiLCB0b1N0cmluZyhhdXRoZW50aWNh
dGlvblNjaGVtZSksICIgLSAiKTsKKyAgICBTdHJpbmdCdWlsZGVyIG1lc3NhZ2U7CisgICAgbWVz
c2FnZS5hcHBlbmQoaG9zdCwgJzonLCBwb3J0LCAiIC0gZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlIC0gIiwgdG9TdHJpbmcoYXV0aGVudGljYXRpb25TY2hlbWUpLCAiIC0gIik7CiAg
ICAgaWYgKCFtX2hhbmRsZXNBdXRoZW50aWNhdGlvbkNoYWxsZW5nZXMpCiAgICAgICAgIG1lc3Nh
Z2UuYXBwZW5kKCJTaW11bGF0aW5nIGNhbmNlbGxlZCBhdXRoZW50aWNhdGlvbiBzaGVldFxuIl9z
KTsKICAgICBlbHNlCiAgICAgICAgIG1lc3NhZ2UuYXBwZW5kKCJSZXNwb25kaW5nIHdpdGggIiAr
IG1fYXV0aGVudGljYXRpb25Vc2VybmFtZSArICI6IiArIG1fYXV0aGVudGljYXRpb25QYXNzd29y
ZCArICJcbiIpOwotICAgIG1fY3VycmVudEludm9jYXRpb24tPm91dHB1dFRleHQobWVzc2FnZSk7
CisgICAgbV9jdXJyZW50SW52b2NhdGlvbi0+b3V0cHV0VGV4dChtZXNzYWdlLnRvU3RyaW5nKCkp
OwogCiAgICAgaWYgKCFtX2hhbmRsZXNBdXRoZW50aWNhdGlvbkNoYWxsZW5nZXMpIHsKICAgICAg
ICAgV0tBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXJVc2VDcmVkZW50aWFsKGRlY2lzaW9u
TGlzdGVuZXIsIDApOwo=
</data>
<flag name="commit-queue"
          id="486194"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457553</attachid>
            <date>2022-04-13 12:03:36 -0700</date>
            <delta_ts>2022-04-14 07:39:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239289-20220413120335.patch</filename>
            <type>text/plain</type>
            <size>140418</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyODEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
Yjk0M2U2M2UxYzM4MjRjMjdlNmU2ZjE2Mjk2MjI5ZDNmNzY1MTZhLi44NjRhZTQyMGIwOTFjY2M2
ODQ4MzI3Njk4OWEwNDMxZDJkZWViNDYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOSBAQAorMjAyMi0wNC0xMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIERyb3AgaW5lZmZpY2llbnQgU3RyaW5nOjphcHBlbmQoKSBvdmVybG9hZHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTI4OQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERyb3AgaW5lZmZp
Y2llbnQgU3RyaW5nOjphcHBlbmQoKSBvdmVybG9hZHMgdG8gcHVzaCBkZXZlbG9wZXJzIHRvIHVz
ZSBTdHJpbmdCdWlsZGVyIC8gbWFrZVN0cmluZygpIGluc3RlYWQuCisKKyAgICAgICAgKiBoZWFw
L0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwOgorICAgICAgICAoSlNDOjpIZWFwU25hcHNob3RCdWls
ZGVyOjpqc29uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvU2NyaXB0QXJndW1lbnRzLmg6CisgICAg
ICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6Y2xhbXBF
cnJvck1lc3NhZ2UpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHA6Cisg
ICAgICAgIChKU0M6OndlbGxGb3JtZWRVbml0SWRlbnRpZmllcik6CisgICAgICAgICogcnVudGlt
ZS9JbnRsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6cmVzb2x2ZUxvY2FsZSk6CisgICAgICAg
ICogcnVudGltZS9JbnRsT2JqZWN0SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpiZXN0QXZhaWxh
YmxlTG9jYWxlKToKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcDoKKyAgICAg
ICAgKEpTQzo6ZWxsaXBzaXplQXQpOgorICAgICAgICAqIHRvb2xzL0Z1bmN0aW9uT3ZlcnJpZGVz
LmNwcDoKKyAgICAgICAgKEpTQzo6aW5pdGlhbGl6ZU92ZXJyaWRlSW5mbyk6CisgICAgICAgIChK
U0M6OnBhcnNlQ2xhdXNlKToKKwogMjAyMi0wNC0xMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgogCiAgICAgICAgIFJlcGxhY2UgQXRvbVN0cmluZyhjb25zdCBjaGFyKikgd2l0aCBB
dG9tU3RyaW5nOjpmcm9tTGF0aW4xKGNvbnN0IGNoYXIqKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCBkYmE0YWI1ZTA0ZjQ1OGFh
ZTBlMjk3NGRiNTg0MmJkMzVmYzEzMWMzLi5iOGFkNmNmNGQ2MDFhNTZhODUyM2IyYzVjNzVjZTU2
NmQwMTc5NzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDIyLTA0LTEzICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRHJvcCBpbmVmZmljaWVudCBTdHJpbmc6OmFw
cGVuZCgpIG92ZXJsb2FkcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjM5Mjg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgRHJvcCBpbmVmZmljaWVudCBTdHJpbmc6OmFwcGVuZCgpIG92ZXJsb2FkcyB0byBw
dXNoIGRldmVsb3BlcnMgdG8gdXNlIFN0cmluZ0J1aWxkZXIgLyBtYWtlU3RyaW5nKCkgaW5zdGVh
ZC4KKworICAgICAgICAqIHd0Zi9Bc3NlcnRpb25zLmNwcDoKKyAgICAgICAgKiB3dGYvVVJMLmNw
cDoKKyAgICAgICAgKFdURjo6VVJMOjpwcm90b2NvbCBjb25zdCk6CisgICAgICAgIChXVEY6OlVS
TDo6cHJvdG9jb2xIb3N0QW5kUG9ydCBjb25zdCk6CisgICAgICAgIChXVEY6OlVSTDo6c2V0UHJv
dG9jb2wpOgorICAgICAgICAoV1RGOjpVUkw6OnNldEhvc3QpOgorICAgICAgICAoV1RGOjpVUkw6
OnNldEhvc3RBbmRQb3J0KToKKyAgICAgICAgKFdURjo6VVJMOjpzdHJpcHBlZEZvclVzZUFzUmVm
ZXJyZXIgY29uc3QpOgorICAgICAgICAqIHd0Zi9VUkxQYXJzZXIuY3BwOgorICAgICAgICAoV1RG
OjpVUkxQYXJzZXI6OmFkZE5vblNwZWNpYWxEb3RTbGFzaCk6CisgICAgICAgIChXVEY6OlVSTFBh
cnNlcjo6cGFyc2VVUkxFbmNvZGVkRm9ybSk6CisgICAgICAgICogd3RmL1VVSUQuY3BwOgorICAg
ICAgICAoV1RGOjpVVUlEOjpwYXJzZSk6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nQnVpbGRl
ci5oOgorICAgICAgICAoV1RGOjpTdHJpbmdCdWlsZGVyOjphcHBlbmQpOgorICAgICAgICAqIHd0
Zi90ZXh0L1dURlN0cmluZy5jcHA6CisgICAgICAgIChXVEY6OlN0cmluZzo6aW5zZXJ0KToKKyAg
ICAgICAgKFdURjo6U3RyaW5nOjphcHBlbmQpOgorICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmlu
Zy5oOgorCiAyMDIyLTA0LTEzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmVwbGFjZSBBdG9tU3RyaW5nKGNvbnN0IGNoYXIqKSB3aXRoIEF0b21TdHJpbmc6OmZy
b21MYXRpbjEoY29uc3QgY2hhciopCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGRiZTJlNTZjMWU2NTgyYmFkZDlm
MDk0NmJjMTVmNGM0Zjc3MWE1MS4uZmQxMzk0M2MyZWJhZDhmOGIyOWNhOTVlMjc1NTkwNDU4OWFk
NGQxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2OCBAQAorMjAyMi0wNC0xMyAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIERyb3AgaW5lZmZpY2llbnQgU3RyaW5n
OjphcHBlbmQoKSBvdmVybG9hZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzOTI4OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIERyb3AgaW5lZmZpY2llbnQgU3RyaW5nOjphcHBlbmQoKSBvdmVybG9hZHMg
dG8gcHVzaCBkZXZlbG9wZXJzIHRvIHVzZSBTdHJpbmdCdWlsZGVyIC8gbWFrZVN0cmluZygpIGlu
c3RlYWQuCisKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnBhcnNlTUlNRVR5cGUpOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL0lEQkN1cnNvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6OnNldEdl
dFJlc3VsdCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5RGF0YS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJLZXlEYXRhOjpsb2dnaW5nU3RyaW5nIGNvbnN0KToKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlQYXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQktleVBhdGhMZXhlcjo6bGV4SWRlbnRpZmllcik6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCS2V5UmFuZ2VEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQktleVJhbmdl
RGF0YTo6bG9nZ2luZ1N0cmluZyBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
c2hhcmVkL0lEQkluZGV4SW5mby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleEluZm86
OmxvZ2dpbmdTdHJpbmcgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUGVl
ckNvbm5lY3Rpb25CYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNob3VsZElnbm9yZUlj
ZUNhbmRpZGF0ZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RUTUZTZW5kZXI6OnBsYXlOZXh0VG9uZSk6Cisg
ICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFFbmRw
b2ludC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJNZWRpYUVuZHBvaW50OjphZGRS
ZW1vdGVTdHJlYW0pOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xp
YldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b1J0
cENvZGVjQ2FwYWJpbGl0eSk6CisgICAgICAgICogTW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVn
aW5SZXBsYWNlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwcm9jZXNzQW5kQ3JlYXRlWW91
VHViZVVSTCk6CisgICAgICAgIChXZWJDb3JlOjpZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQ6Onlv
dVR1YmVVUkxGcm9tQWJzb2x1dGVVUkwpOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXRIYW5kc2hha2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dHJpbUlucHV0U2FtcGxl
KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmluaXRpYWxpemVBdHRy
aWJ1dGVEYXRhKToKKyAgICAgICAgKiBkaXNwbGF5L2Nzcy9EaXNwbGF5VGV4dEJveC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpUZXh0Qm94OjpkZWJ1Z0Rlc2NyaXB0aW9uIGNvbnN0
KToKKyAgICAgICAgKiBkb20vQ2hhcmFjdGVyRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
aGFyYWN0ZXJEYXRhOjpwYXJzZXJBcHBlbmREYXRhKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnBhcnNlUXVhbGlmaWVkTmFtZSk6Cisg
ICAgICAgICogZG9tL1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dDo6c3BsaXRUZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZFRleHRSZXByZXNlbnRhdGlvbik6CisgICAgICAg
ICogZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnZpZXdwb3J0
RXJyb3JNZXNzYWdlKToKKyAgICAgICAgKiBlZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjaGVja1RleHRPZlBhcmFncmFwaCk6CisgICAgICAgICogZWRp
dGluZy9UZXh0SXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoQnVmZmVyOjpw
cmVwZW5kQ29udGV4dCk6CisgICAgICAgICogZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6c3VmZml4TGVuZ3RoRm9yUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
c3RhcnRXb3JkQm91bmRhcnkpOgorICAgICAgICAoV2ViQ29yZTo6cHJldmlvdXNXb3JkUG9zaXRp
b25Cb3VuZGFyeSk6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YURldGVjdGlvbjo6ZGV0ZWN0Q29udGVudEluUmFuZ2UpOgor
ICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNob3VsZFBy
ZXNlcnZlTVNPTGlzdHMpOgorICAgICAgICAoV2ViQ29yZTo6ZmlsbENvbnRhaW5lckZyb21TdHJp
bmcpOgorICAgICAgICAqIGh0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OnBhcnNlQW5kQXBwZW5kT25lTGlu
ZSk6CisgICAgICAgIChXZWJDb3JlOjpGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6YXBwZW5k
KToKKyAgICAgICAgKFdlYkNvcmU6OkZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpmaW5pc2gp
OgorICAgICAgICAqIGh0bWwvRmVhdHVyZVBvbGljeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp1
cGRhdGVMaXN0KToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV1RGOjpMb2dBcmd1bWVudDxVUkw+Ojp0b1N0cmluZyk6CisgICAgICAgICogaHRtbC9IVE1M
VHJhY2tFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVybEZvckxvZ2dpbmdUcmFjayk6
CisgICAgICAgICogaHRtbC9VUkxEZWNvbXBvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlVSTERlY29tcG9zaXRpb246OnNldEhvc3QpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6Z2V0QWN0aXZlVW5pZm9ybSk6CisgICAgICAgICogaHRtbC9wYXJzZXIv
SFRNTFBhcnNlcklkaW9tcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUhUVFBSZWZyZXNo
SW50ZXJuYWwpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxTcmNzZXRQYXJzZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6cGFyc2VEZXNjcmlwdG9ycyk6CisgICAgICAgICogaHRtbC9wYXJz
ZXIvSFRNTFRyZWVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRl
cjo6RXh0ZXJuYWxDaGFyYWN0ZXJUb2tlbkJ1ZmZlcjo6Y2hhcmFjdGVyUHJlZGljYXRlKToKKyAg
ICAgICAgKiBodG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJWVFRQYXJzZXI6OmNoZWNrQW5kU3RvcmVTdHlsZVNoZWV0KToKKyAgICAgICAgKiBodG1sL3Ry
YWNrL1dlYlZUVFBhcnNlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRydW5jYXRlV2l0aEVsbGlwc2lzKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheUxhYmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvck92ZXJsYXlMYWJlbDo6ZHJhdyk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvclN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVTaGVldEhhbmRsZXI6
Om9ic2VydmVDb21tZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRP
TUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpidWlsZE9i
amVjdEZvck5vZGUpOgorICAgICAgICAqIGxheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWls
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6b3V0cHV0TGF5b3V0Qm94KToKKyAg
ICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0UGFyc2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Om1hbmlmZXN0UGF0aCk6CisgICAgICAgICogbWF0aG1sL01h
dGhNTFByZXNlbnRhdGlvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MUHJl
c2VudGF0aW9uRWxlbWVudDo6cGFyc2VOdW1iZXJBbmRVbml0KToKKyAgICAgICAgKiBwYWdlL0Zy
YW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVJlZ0V4cEZvckxhYmVscyk6CisgICAg
ICAgICogcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKToKKyAgICAgICAgKiBwYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVRyZWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsaW5nU3RhdGVUcmVlOjpzY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHQgY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL1NoYXJlZFN0cmluZ0hhc2guY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29t
cHV0ZVNoYXJlZFN0cmluZ0hhc2hJbmxpbmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0hFVkNVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSEVWQ0NvZGVjUGFy
YW1ldGVyc1N0cmluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU3RyaW5nVHJ1bmNh
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNlbnRlclRydW5jYXRlVG9CdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6cmlnaHRUcnVuY2F0ZVRvQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OnJpZ2h0Q2xpcFRvQ2hhcmFjdGVyQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OnJpZ2h0Q2xp
cFRvV29yZEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6OnNldFBsYXliaW5VUkwpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjpwbGF0Zm9y
bU1heGltdW1CdWZmZXJTaXplIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93
aW4vRm9udENhY2hlV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUdESUZvbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpnZXRGb250U2VsZWN0aW9uQ2FwYWJpbGl0aWVz
SW5GYW1pbHkpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9Vc2VyQWdlbnRJT1MubW06CisgICAg
ICAgIChXZWJDb3JlOjpkZXZpY2VOYW1lRm9yVXNlckFnZW50KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL0NhY2hlVmFsaWRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0cmltVG9O
ZXh0U2VwYXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlQ2FjaGVIZWFkZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6cHJvdGVjdGlvblNwYWNlTWFwS2V5RnJvbVVSTCk6CisgICAgICAgIChXZWJDb3Jl
OjpDcmVkZW50aWFsU3RvcmFnZTo6ZmluZERlZmF1bHRQcm90ZWN0aW9uU3BhY2VGb3JVUkwpOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YVVSTERlY29kZXI6OkRlY29kZVRhc2s6OnByb2Nlc3MpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dHJp
bUlucHV0U2FtcGxlKToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlU3RydWN0dXJlZEZpZWxkVmFs
dWUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpyZXRyaWV2ZUtleVZhbHVlUGFpcnMpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY3VybC9Db29raWVVdGlsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZVV0aWw6
OnBhcnNlQ29va2llQXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVVdGlsOjpw
YXJzZUNvb2tpZUhlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVVdGlsOjpkZWZhdWx0
UGF0aEZvclVSTCk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9Mb2NhbGVUb1NjcmlwdE1hcHBp
bmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bG9jYWxlVG9TY3JpcHRDb2RlRm9yRm9udFNlbGVj
dGlvbik6CisgICAgICAgICogcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6ZmlsZVN5c3RlbVBhdGhGcm9tVVJMT3JUaXRsZSk6CisgICAgICAgIChXZWJD
b3JlOjpQYXN0ZWJvYXJkOjp3cml0ZVVSTFRvRGF0YU9iamVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpjcmVhdGVHbG9iYWxJbWFnZUZpbGVEZXNjcmlwdG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS93
aW4vV2ViQ29yZVRleHRSZW5kZXJlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkb0RyYXdUZXh0
QXRQb2ludCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OmNyZWF0ZVByaW1hcnlHcmFwaGlj
c0xheWVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlck9iamVjdDo6b3V0cHV0UmVuZGVyT2JqZWN0IGNvbnN0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9uc1Jlc29sdmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok5hbWVkTGluZUNvbGxlY3Rpb25CYXNlOjpOYW1lZExpbmVDb2xsZWN0aW9uQmFz
ZSk6CisgICAgICAgICogc3ZnL1NWR1Rlc3RzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rl
c3RzOjppc1ZhbGlkIGNvbnN0KToKKyAgICAgICAgKiBzdmcvU1ZHVVJJUmVmZXJlbmNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1VSSVJlZmVyZW5jZTo6ZnJhZ21lbnRJZGVudGlmaWVyRnJv
bUlSSVN0cmluZyk6CisgICAgICAgICogc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdTTUlMRWxlbWVudDo6cGFyc2VDbG9ja1ZhbHVlKToKKyAg
ICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iOjp2YWxpZGF0ZVNlcnZpY2VXb3JrZXJSZXNwb25zZSk6
CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleTo6ZnJv
bURhdGFiYXNlS2V5KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpjYW5IYW5kbGVTY2hlbWUgY29uc3Qp
OgorCiAyMDIyLTA0LTEzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmVwbGFjZSBBdG9tU3RyaW5nKGNvbnN0IGNoYXIqKSB3aXRoIEF0b21TdHJpbmc6OmZyb21M
YXRpbjEoY29uc3QgY2hhciopCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9nCmluZGV4IDc0ODJhZTIzNDM0ZDAzYmExOGNl
ZjkyMjNhNzY4MDA4YjgxMzU1ZjUuLjZkMDEwZTQ3YjBmYmU1ZWI3ZWEzYzZiNWJkZWRmZWFjY2Nl
NzRiMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJEcml2ZXIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDQtMTMgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBEcm9wIGluZWZmaWNpZW50IFN0
cmluZzo6YXBwZW5kKCkgb3ZlcmxvYWRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzkyODkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBEcm9wIGluZWZmaWNpZW50IFN0cmluZzo6YXBwZW5kKCkgb3Zlcmxv
YWRzIHRvIHB1c2ggZGV2ZWxvcGVycyB0byB1c2UgU3RyaW5nQnVpbGRlciAvIG1ha2VTdHJpbmco
KSBpbnN0ZWFkLgorCisgICAgICAgICogQ29tbWFuZFJlc3VsdC5jcHA6CisgICAgICAgIChXZWJE
cml2ZXI6OkNvbW1hbmRSZXN1bHQ6OkNvbW1hbmRSZXN1bHQpOgorCiAyMDIyLTA0LTExICBEb24g
T2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CiAKICAgICAgICAgRml4IFBsYXlTdGF0
aW9uIGJ1aWxkIGFmdGVyIHIyOTI2OTYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYjgzNDhkZGQwNGVkYmI5OTAyNjI0
ODVlZGE3ODYyYjAxZTFlODYwMS4uZTE0YjFiZWU2ZDI4MjUwZTY3ZDQ4ZjQ4NzQxYzU4NDRmZGMy
NWExYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAyMi0wNC0xMyAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIERyb3AgaW5lZmZpY2llbnQgU3RyaW5nOjph
cHBlbmQoKSBvdmVybG9hZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzOTI4OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIERyb3AgaW5lZmZpY2llbnQgU3RyaW5nOjphcHBlbmQoKSBvdmVybG9hZHMgdG8g
cHVzaCBkZXZlbG9wZXJzIHRvIHVzZSBTdHJpbmdCdWlsZGVyIC8gbWFrZVN0cmluZygpIGluc3Rl
YWQuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURh
dGFiYXNlVHJhY2tlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsU3RvcmFnZURhdGFiYXNl
VHJhY2tlcjo6b3JpZ2lucyBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6
dHJhdmVyc2VSZWNvcmRzRmlsZXMpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2Uv
TG9jYWxTdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OmZpbGVOYW1lVG9Pcmln
aW4pOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS1N0cmluZy5jcHA6CisgICAgICAgIChXS1N0
cmluZ0dldENoYXJhY3RlcnMpOgorICAgICAgICAqIFNoYXJlZC9tYWMvQXV4aWxpYXJ5UHJvY2Vz
c01hYy5tbToKKyAgICAgICAgKFdlYktpdDo6cG9wdWxhdGVTYW5kYm94SW5pdGlhbGl6YXRpb25Q
YXJhbWV0ZXJzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvSW5wdXRNZXRob2RGaWx0
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbnB1dE1ldGhvZEZpbHRlcjo6bm90aWZ5U3Vycm91
bmRpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvR3RrU2V0dGluZ3NNYW5hZ2VyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6R3RrU2V0dGluZ3NNYW5hZ2VyOjp0aGVtZU5hbWUgY29uc3QpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvVGV4dENoZWNrZXJHdGsuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpUZXh0Q2hlY2tlcjo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy93aW4vV2ViUHJvY2Vzc1Bvb2xXaW4uY3BwOgorICAgICAgICAoV2ViS2l0Ojppbml0aWFs
aXplUmVtb3RlSW5zcGVjdG9yU2VydmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMv
UERGL1BERlBsdWdpbi5tbToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpzZXRTdWdnZXN0
ZWRGaWxlbmFtZSk6CisKIDIwMjItMDQtMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBSZXBsYWNlIEF0b21TdHJpbmcoY29uc3QgY2hhciopIHdpdGggQXRvbVN0
cmluZzo6ZnJvbUxhdGluMShjb25zdCBjaGFyKikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKaW5kZXggMTI5
OTQ1ZDhkNzRmMjQ3M2UzNTQwN2JiOGQxNTFjZmVmZWQxZmRmMS4uOTFlYWQ4ZTViMDljNDZhZjNh
Y2M0YzQxNTNhM2M5ZmY1YzllZjU1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NSBAQAorMjAyMi0wNC0xMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAg
ICAgIERyb3AgaW5lZmZpY2llbnQgU3RyaW5nOjphcHBlbmQoKSBvdmVybG9hZHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTI4OQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGRyb3BfU3RyaW5nX2FwcGVu
ZAorCisgICAgICAgICogU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlN0b3JhZ2VUcmFja2VyOjpzeW5jRmlsZVN5c3RlbUFuZFRyYWNrZXJEYXRhYmFzZSk6CisK
IDIwMjItMDQtMDUgIEVsbGlvdHQgV2lsbGlhbXMgIDxlbXdAYXBwbGUuY29tPgogCiAgICAgICAg
IEZpeCBTVFAgYnVpbGQgZXJyb3IgIm5vIHN1Y2ggZmlsZSBvciBkaXJlY3Rvcnk6ICdUZWNobm9s
b2d5JyIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA5NjdhMmQxMDI3ZjdkYzdiOThm
YjRmNTQxOWEwNjIzYTNhMGQ2Y2NmLi42ZWRlYTFhYmUxNDdiN2VlYWUzM2MxM2RiNGNhOTRkZDhk
YTBlOTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIw
MjItMDQtMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBEcm9w
IGluZWZmaWNpZW50IFN0cmluZzo6YXBwZW5kKCkgb3ZlcmxvYWRzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzkyODkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEcm9wIGluZWZmaWNpZW50IFN0cmluZzo6
YXBwZW5kKCkgb3ZlcmxvYWRzIHRvIHB1c2ggZGV2ZWxvcGVycyB0byB1c2UgU3RyaW5nQnVpbGRl
ciAvIG1ha2VTdHJpbmcoKSBpbnN0ZWFkLgorCisgICAgICAgICogV2ViVmlldy9XZWJIVE1MUmVw
cmVzZW50YXRpb24ubW06CisgICAgICAgIChyZWdFeHBGb3JMYWJlbHMpOgorCiAyMDIyLTA0LTEy
ICBFbGxpb3R0IFdpbGxpYW1zICA8ZW13QGFwcGxlLmNvbT4KIAogICAgICAgICBbWGNvZGVdIElu
IG9wZW4tc291cmNlIGJ1aWxkcywgZGlzYWJsZSBiaXRjb2RlIGluIHhjY29uZmlncyBpbnN0ZWFk
IG9mIGJ1aWxkLXdlYmtpdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcFNuYXBzaG90QnVpbGRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
U25hcHNob3RCdWlsZGVyLmNwcAppbmRleCA5ZDVjNjE5MjIxZWVlNWQ1MWNmZWYxNTg4ZWI3OTJi
NjU4YTJjMzU3Li5jYjE2YTAwNTI1NGY1ODI2YTU5ZmRmYzI1MjBmYjRhNDgwZmUxYTU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNw
cApAQCAtMzkwLDE1ICszOTAsMTUgQEAgU3RyaW5nIEhlYXBTbmFwc2hvdEJ1aWxkZXI6Ompzb24o
RnVuY3Rpb248Ym9vbCAoY29uc3QgSGVhcFNuYXBzaG90Tm9kZSYpPiBhbGxvd04KICAgICAgICAg
ICAgICAgICBmbGFncyB8PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTm9kZUZsYWdzOjpJbnRlcm5h
bCk7CiAKICAgICAgICAgICAgIGlmIChtX3NuYXBzaG90VHlwZSA9PSBTbmFwc2hvdFR5cGU6OkdD
RGVidWdnaW5nU25hcHNob3QpIHsKLSAgICAgICAgICAgICAgICBTdHJpbmcgbm9kZUxhYmVsOwor
ICAgICAgICAgICAgICAgIFN0cmluZ0J1aWxkZXIgbm9kZUxhYmVsOwogICAgICAgICAgICAgICAg
IGF1dG8gaXQgPSBtX2NlbGxMYWJlbHMuZmluZChub2RlLmNlbGwpOwogICAgICAgICAgICAgICAg
IGlmIChpdCAhPSBtX2NlbGxMYWJlbHMuZW5kKCkpCi0gICAgICAgICAgICAgICAgICAgIG5vZGVM
YWJlbCA9IGl0LT52YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgbm9kZUxhYmVsLmFwcGVuZChp
dC0+dmFsdWUpOwogCiAgICAgICAgICAgICAgICAgaWYgKG5vZGVMYWJlbC5pc0VtcHR5KCkpIHsK
ICAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIG9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNP
YmplY3QqPih2bSwgbm9kZS5jZWxsKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF1
dG8qIGZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4odm0sIG9iamVjdCkpCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZUxhYmVsID0gZnVuY3Rpb24tPmNhbGN1bGF0
ZWREaXNwbGF5TmFtZSh2bSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZUxhYmVs
LmFwcGVuZChmdW5jdGlvbi0+Y2FsY3VsYXRlZERpc3BsYXlOYW1lKHZtKSk7CiAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAKQEAgLTQxMCw3ICs0MTAsNyBAQCBTdHJp
bmcgSGVhcFNuYXBzaG90QnVpbGRlcjo6anNvbihGdW5jdGlvbjxib29sIChjb25zdCBIZWFwU25h
cHNob3ROb2RlJik+IGFsbG93TgogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAg
IGlmICghbm9kZUxhYmVsLmlzRW1wdHkoKSAmJiBtX3NuYXBzaG90VHlwZSA9PSBTbmFwc2hvdFR5
cGU6OkdDRGVidWdnaW5nU25hcHNob3QpIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byByZXN1
bHQgPSBsYWJlbEluZGV4ZXMuYWRkKG5vZGVMYWJlbCwgbmV4dExhYmVsSW5kZXgpOworICAgICAg
ICAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IGxhYmVsSW5kZXhlcy5hZGQobm9kZUxhYmVsLnRv
U3RyaW5nKCksIG5leHRMYWJlbEluZGV4KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3Vs
dC5pc05ld0VudHJ5KQogICAgICAgICAgICAgICAgICAgICAgICAgbmV4dExhYmVsSW5kZXgrKzsK
ICAgICAgICAgICAgICAgICAgICAgbGFiZWxJbmRleCA9IHJlc3VsdC5pdGVyYXRvci0+dmFsdWU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdEFyZ3Vt
ZW50cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMu
aAppbmRleCA3N2EwODE5MTZmNjFjMmY5YmQ3MTZhYzgzZjMwOWRkZGE3ZTgzMjc0Li4yMmRhN2Rk
MTk3OTE4OTcwNzEyMTIzZGM1NTE5NDI4MWYyOWY0YzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0QXJndW1lbnRzLmgKQEAgLTYyLDcgKzYyLDcgQEAg
cHVibGljOgogICAgICAgICBjb25zdGV4cHIgc2l6ZV90IG1heE1lc3NhZ2VMZW5ndGggPSAxMDAw
MDsKICAgICAgICAgaWYgKG1lc3NhZ2UubGVuZ3RoKCkgPD0gbWF4TWVzc2FnZUxlbmd0aCkKICAg
ICAgICAgICAgIHJldHVybiBtZXNzYWdlOwotICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhtZXNz
YWdlLnN1YnN0cmluZygwLCBtYXhNZXNzYWdlTGVuZ3RoKSwgIi4uLiJfcyk7CisgICAgICAgIHJl
dHVybiBtYWtlU3RyaW5nKFN0cmluZ1ZpZXcobWVzc2FnZSkubGVmdChtYXhNZXNzYWdlTGVuZ3Ro
KSwgIi4uLiJfcyk7CiAgICAgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAppbmRleCBkYzE2MDk3OWY5ZDg3MzY1
OWZiZjljODBkYjYzMzA2YWZkNWU5NDkxLi4xNjFmM2U2OWQ0M2I4OWQ4M2Y1N2ZjN2ZjMWYzMWMw
ZDIyYTA0OGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNl
cHRpb25IZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNl
cHRpb25IZWxwZXJzLmNwcApAQCAtNzgsNyArNzgsNyBAQCBzdGF0aWMgU3RyaW5nVmlldyBjbGFt
cEVycm9yTWVzc2FnZShjb25zdCBTdHJpbmcmIG9yaWdpbmFsTWVzc2FnZSkKIHsKICAgICAvLyBI
b3BlZnVsbHkgdGhpcyBpcyBzdWZmaWNpZW50bHkgbG9uZy4gTm90ZSwgdGhpcyBpcyB0aGUgbGVu
Z3RoIG9mIHRoZSBzdHJpbmcgbm90IHRoZSBudW1iZXIgb2YgYnl0ZXMgdXNlZC4KICAgICBjb25z
dGV4cHIgdW5zaWduZWQgbWF4TGVuZ3RoID0gMiAqIEtCOwotICAgIHJldHVybiBTdHJpbmdWaWV3
KG9yaWdpbmFsTWVzc2FnZSkuc3Vic3RyaW5nKDAsIG1heExlbmd0aCk7CisgICAgcmV0dXJuIFN0
cmluZ1ZpZXcob3JpZ2luYWxNZXNzYWdlKS5sZWZ0KG1heExlbmd0aCk7CiB9CiAKIHN0YXRpYyBT
dHJpbmcgZGVmYXVsdEFwcHJveGltYXRlU291cmNlRXJyb3IoY29uc3QgU3RyaW5nJiBvcmlnaW5h
bE1lc3NhZ2UsIFN0cmluZ1ZpZXcgc291cmNlVGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAKaW5kZXggODNlN2RhYzZmYmJiNWY4
YjRmNzM3M2ExM2FmZmFkNTc1Y2QzZDkxOC4uMzI4MGRhYzJkNzVkZDQ4MzYwY2Y4YzM0M2IyZGQ1
OGYyYjc4OTE1YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bE51bWJlckZvcm1hdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bE51bWJlckZvcm1hdC5jcHAKQEAgLTIyMyw3ICsyMjMsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25h
bDxXZWxsRm9ybWVkVW5pdD4gd2VsbEZvcm1lZFVuaXRJZGVudGlmaWVyKFN0cmluZ1ZpZXcgdW5p
dElkZQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gSWYgdGhlIHJlc3Vs
dCBvZiBJc1NhbmN0aW9uZWRTaW1wbGVVbml0SWRlbnRpZmllcihudW1lcmF0b3IpIGlzIGZhbHNl
LCB0aGVuIHJldHVybiBmYWxzZS4KLSAgICBhdXRvIG51bWVyYXRvciA9IHVuaXRJZGVudGlmaWVy
LnN1YnN0cmluZygwLCBwb3NpdGlvbik7CisgICAgYXV0byBudW1lcmF0b3IgPSB1bml0SWRlbnRp
Zmllci5sZWZ0KHBvc2l0aW9uKTsKICAgICBhdXRvIG51bWVyYXRvclVuaXQgPSBzYW5jdGlvbmVk
U2ltcGxlVW5pdElkZW50aWZpZXIobnVtZXJhdG9yKTsKICAgICBpZiAoIW51bWVyYXRvclVuaXQp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxPYmplY3QuY3BwCmluZGV4IDI5ZDZmOTM1ZjAyN2IyMDI3MGU5MWZlYjlkYjc2
ZGE1NGNhNGYxNjEuLmEyMmViZjQwOGYxYTY2ZGYwNDQ2MDMzYzE5M2Y5NjBmODZjNjgxMTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCkBAIC05MTcs
NyArOTE3LDggQEAgUmVzb2x2ZWRMb2NhbGUgcmVzb2x2ZUxvY2FsZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBjb25zdCBMb2NhbGVTZXQmIGF2YWkKICAgICBSZXNvbHZlZExvY2FsZSBy
ZXNvbHZlZDsKICAgICByZXNvbHZlZC5kYXRhTG9jYWxlID0gZm91bmRMb2NhbGU7CiAKLSAgICBT
dHJpbmcgc3VwcG9ydGVkRXh0ZW5zaW9uID0gIi11Il9zOworICAgIFN0cmluZ0J1aWxkZXIgc3Vw
cG9ydGVkRXh0ZW5zaW9uOworICAgIHN1cHBvcnRlZEV4dGVuc2lvbi5hcHBlbmQoIi11Il9zKTsK
ICAgICBmb3IgKFJlbGV2YW50RXh0ZW5zaW9uS2V5IGtleSA6IHJlbGV2YW50RXh0ZW5zaW9uS2V5
cykgewogICAgICAgICBBU0NJSUxpdGVyYWwga2V5U3RyaW5nID0gcmVsZXZhbnRFeHRlbnNpb25L
ZXlTdHJpbmcoa2V5KTsKICAgICAgICAgVmVjdG9yPFN0cmluZz4ga2V5TG9jYWxlRGF0YSA9IGxv
Y2FsZURhdGEoZm91bmRMb2NhbGUsIGtleSk7CkBAIC05NTcsNyArOTU4LDcgQEAgUmVzb2x2ZWRM
b2NhbGUgcmVzb2x2ZUxvY2FsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBM
b2NhbGVTZXQmIGF2YWkKIAogICAgIGlmIChzdXBwb3J0ZWRFeHRlbnNpb24ubGVuZ3RoKCkgPiAy
KSB7CiAgICAgICAgIFN0cmluZ1ZpZXcgZm91bmRMb2NhbGVWaWV3KGZvdW5kTG9jYWxlKTsKLSAg
ICAgICAgZm91bmRMb2NhbGUgPSBtYWtlU3RyaW5nKGZvdW5kTG9jYWxlVmlldy5zdWJzdHJpbmco
MCwgbWF0Y2hlclJlc3VsdC5leHRlbnNpb25JbmRleCksIHN1cHBvcnRlZEV4dGVuc2lvbiwgZm91
bmRMb2NhbGVWaWV3LnN1YnN0cmluZyhtYXRjaGVyUmVzdWx0LmV4dGVuc2lvbkluZGV4KSk7Cisg
ICAgICAgIGZvdW5kTG9jYWxlID0gbWFrZVN0cmluZyhmb3VuZExvY2FsZVZpZXcubGVmdChtYXRj
aGVyUmVzdWx0LmV4dGVuc2lvbkluZGV4KSwgc3VwcG9ydGVkRXh0ZW5zaW9uLnRvU3RyaW5nKCks
IGZvdW5kTG9jYWxlVmlldy5zdWJzdHJpbmcobWF0Y2hlclJlc3VsdC5leHRlbnNpb25JbmRleCkp
OwogICAgIH0KIAogICAgIHJlc29sdmVkLmxvY2FsZSA9IFdURk1vdmUoZm91bmRMb2NhbGUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdElubGlu
ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3RJbmxpbmVzLmgK
aW5kZXggNDFjMmJmZGY2ZWU1MTVjMjM0ZGNiY2U2MGNkYjMzMDNlYWIzMGFmZS4uZGM1NzhlMTli
ZDU1MjBlYzc0ZTdiYzNiMTMyMzUwOWExMmE5ZjJjZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0SW5saW5lcy5oCkBAIC01OCw3ICs1OCw3IEBAIHRl
bXBsYXRlPHR5cGVuYW1lIFByZWRpY2F0ZT4gU3RyaW5nIGJlc3RBdmFpbGFibGVMb2NhbGUoY29u
c3QgU3RyaW5nJiBsb2NhbGUsIFByCiAgICAgICAgIGlmIChwb3MgPj0gMiAmJiBjYW5kaWRhdGVb
cG9zIC0gMl0gPT0gJy0nKQogICAgICAgICAgICAgcG9zIC09IDI7CiAKLSAgICAgICAgY2FuZGlk
YXRlID0gY2FuZGlkYXRlLnN1YnN0cmluZygwLCBwb3MpOworICAgICAgICBjYW5kaWRhdGUgPSBj
YW5kaWRhdGUubGVmdChwb3MpOwogICAgIH0KIAogICAgIHJldHVybiBTdHJpbmcoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcAppbmRleCAx
NDgwMTQ5ZjA2ODc2OGI3MjVkNTYzZDMxMTFkMWJkMjZiM2FmNWViLi5jODgyZjRlODk3ZjJmZTY1
YTVjYjM0ZjI2YjVhOTBlY2E1NTQ4Yzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwCkBAIC0xNTEsMTIgKzE1MSw5IEBAIHN0YXRpYyBT
dHJpbmdWaWV3IHNpbmd1bGFyVW5pdChTdHJpbmdWaWV3IHVuaXQpCiAvLyBGb3IgdXNlIGluIGVy
cm9yIG1lc3NhZ2VzIHdoZXJlIGEgc3RyaW5nIHZhbHVlIGlzIHBvdGVudGlhbGx5IHVuYm91bmRl
ZAogV1RGOjpTdHJpbmcgZWxsaXBzaXplQXQodW5zaWduZWQgbWF4TGVuZ3RoLCBjb25zdCBXVEY6
OlN0cmluZyYgc3RyaW5nKQogewotICAgIFdURjo6U3RyaW5nIGNvcHkgeyBzdHJpbmcgfTsKLSAg
ICBpZiAoc3RyaW5nLmxlbmd0aCgpID4gbWF4TGVuZ3RoKSB7Ci0gICAgICAgIGNvcHkudHJ1bmNh
dGUobWF4TGVuZ3RoIC0gMSk7Ci0gICAgICAgIGNvcHkuYXBwZW5kKGhvcml6b250YWxFbGxpcHNp
cyk7Ci0gICAgfQotICAgIHJldHVybiBjb3B5OworICAgIGlmIChzdHJpbmcubGVuZ3RoKCkgPD0g
bWF4TGVuZ3RoKQorICAgICAgICByZXR1cm4gc3RyaW5nOworICAgIHJldHVybiBtYWtlU3RyaW5n
KFN0cmluZ1ZpZXcoc3RyaW5nKS5sZWZ0KG1heExlbmd0aCAtIDEpLCBob3Jpem9udGFsRWxsaXBz
aXMpOwogfQogCiBQcm9wZXJ0eU5hbWUgdGVtcG9yYWxVbml0UGx1cmFsUHJvcGVydHlOYW1lKFZN
JiB2bSwgVGVtcG9yYWxVbml0IHVuaXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdG9vbHMvRnVuY3Rpb25PdmVycmlkZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rv
b2xzL0Z1bmN0aW9uT3ZlcnJpZGVzLmNwcAppbmRleCA1ZTMyMDhjYjI2MDEwMzJjN2UzMGMyNmJj
OTMxNzVmZjc2ZmNiYTMyLi5iZTFmMjhmYTU0NGJmODg0MDAzN2ZlNDgxNDg1NTc4YjAyOGYzNmI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvRnVuY3Rpb25PdmVycmlk
ZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9GdW5jdGlvbk92ZXJyaWRl
cy5jcHAKQEAgLTEzNSwyMSArMTM1LDE5IEBAIHN0YXRpYyB2b2lkIGluaXRpYWxpemVPdmVycmlk
ZUluZm8oY29uc3QgU291cmNlQ29kZSYgb3JpZ0NvZGUsIGNvbnN0IFN0cmluZyYgbmV3CiAgICAg
dW5zaWduZWQgaGVhZGVyTGVuZ3RoID0gb3JpZ0JyYWNlU3RhcnQgLSBvcmlnRnVuY3Rpb25TdGFy
dDsKICAgICBTdHJpbmcgb3JpZ0hlYWRlciA9IG9yaWdQcm92aWRlclN0ci5zdWJzdHJpbmcob3Jp
Z0Z1bmN0aW9uU3RhcnQsIGhlYWRlckxlbmd0aCk7CiAKLSAgICBTdHJpbmcgbmV3UHJvdmlkZXJT
dHI7Ci0gICAgbmV3UHJvdmlkZXJTdHIuYXBwZW5kKG9yaWdIZWFkZXIpOwotICAgIG5ld1Byb3Zp
ZGVyU3RyLmFwcGVuZChuZXdCb2R5KTsKKyAgICBTdHJpbmcgbmV3UHJvdmlkZXJTdHJpbmcgPSBt
YWtlU3RyaW5nKG9yaWdIZWFkZXIsIG5ld0JvZHkpOwogCiAgICAgYXV0byBvdmVycmlkZGVuID0g
IjxvdmVycmlkZGVuPiJfczsKICAgICBVUkwgdXJsKHsgfSwgb3ZlcnJpZGRlbik7Ci0gICAgUmVm
PFNvdXJjZVByb3ZpZGVyPiBuZXdQcm92aWRlciA9IFN0cmluZ1NvdXJjZVByb3ZpZGVyOjpjcmVh
dGUobmV3UHJvdmlkZXJTdHIsIFNvdXJjZU9yaWdpbiB7IHVybCB9LCBvdmVycmlkZGVuKTsKKyAg
ICBSZWY8U291cmNlUHJvdmlkZXI+IG5ld1Byb3ZpZGVyID0gU3RyaW5nU291cmNlUHJvdmlkZXI6
OmNyZWF0ZShuZXdQcm92aWRlclN0cmluZywgU291cmNlT3JpZ2luIHsgdXJsIH0sIG92ZXJyaWRk
ZW4pOwogCiAgICAgaW5mby5maXJzdExpbmUgPSAxOwogICAgIGluZm8ubGluZUNvdW50ID0gMTsg
Ly8gRmFraW5nIGl0LiBUaGlzIGRvZXNuJ3QgcmVhbGx5IG1hdHRlciBmb3Igbm93LgogICAgIGlu
Zm8uc3RhcnRDb2x1bW4gPSAxOwogICAgIGluZm8uZW5kQ29sdW1uID0gMTsgLy8gRmFraW5nIGl0
LiBUaGlzIGRvZXNuJ3QgcmVhbGx5IG1hdHRlciBmb3Igbm93LgotICAgIGluZm8ucGFyYW1ldGVy
c1N0YXJ0T2Zmc2V0ID0gbmV3UHJvdmlkZXJTdHIuZmluZCgnKCcpOwotICAgIGluZm8udHlwZVBy
b2ZpbGluZ1N0YXJ0T2Zmc2V0ID0gbmV3UHJvdmlkZXJTdHIuZmluZCgneycpOwotICAgIGluZm8u
dHlwZVByb2ZpbGluZ0VuZE9mZnNldCA9IG5ld1Byb3ZpZGVyU3RyLmxlbmd0aCgpIC0gMTsKKyAg
ICBpbmZvLnBhcmFtZXRlcnNTdGFydE9mZnNldCA9IG5ld1Byb3ZpZGVyU3RyaW5nLmZpbmQoJygn
KTsKKyAgICBpbmZvLnR5cGVQcm9maWxpbmdTdGFydE9mZnNldCA9IG5ld1Byb3ZpZGVyU3RyaW5n
LmZpbmQoJ3snKTsKKyAgICBpbmZvLnR5cGVQcm9maWxpbmdFbmRPZmZzZXQgPSBuZXdQcm92aWRl
clN0cmluZy5sZW5ndGgoKSAtIDE7CiAKICAgICBpbmZvLnNvdXJjZUNvZGUgPQogICAgICAgICBT
b3VyY2VDb2RlKFdURk1vdmUobmV3UHJvdmlkZXIpLCBpbmZvLnBhcmFtZXRlcnNTdGFydE9mZnNl
dCwgaW5mby50eXBlUHJvZmlsaW5nRW5kT2Zmc2V0ICsgMSwgMSwgMSk7CkBAIC0yMjUsMTEgKzIy
Myw3IEBAIHN0YXRpYyBTdHJpbmcgcGFyc2VDbGF1c2UoY29uc3QgY2hhcioga2V5d29yZCwgc2l6
ZV90IGtleXdvcmRMZW5ndGgsIEZJTEUqIGZpbGUsCiAgICAgaWYgKGhhc0Rpc2FsbG93ZWRDaGFy
YWN0ZXJzKGRlbGltaXRlclN0YXJ0LCBkZWxpbWl0ZXJMZW5ndGgpKQogICAgICAgICBGQUlMX1dJ
VEhfRVJST1IoU1lOVEFYX0VSUk9SLCAoIkRlbGltaXRlciAnIiwgZGVsaW1pdGVyLCAiJyBjYW5u
b3QgaGF2ZSAneycsICd9Jywgb3Igd2hpdGVzcGFjZTpcbiIsIGxpbmUsICJcbiIpKTsKICAgICAK
LSAgICBTdHJpbmcgdGVybWluYXRvclN0cmluZzsKLSAgICB0ZXJtaW5hdG9yU3RyaW5nLmFwcGVu
ZCgnfScpOwotICAgIHRlcm1pbmF0b3JTdHJpbmcuYXBwZW5kKGRlbGltaXRlcik7Ci0KLSAgICBD
U3RyaW5nIHRlcm1pbmF0b3JDU3RyaW5nID0gdGVybWluYXRvclN0cmluZy5hc2NpaSgpOworICAg
IENTdHJpbmcgdGVybWluYXRvckNTdHJpbmcgPSBtYWtlU3RyaW5nKCd9JywgZGVsaW1pdGVyKS5h
c2NpaSgpOwogICAgIGNvbnN0IGNoYXIqIHRlcm1pbmF0b3IgPSB0ZXJtaW5hdG9yQ1N0cmluZy5k
YXRhKCk7CiAgICAgbGluZSA9IGRlbGltaXRlckVuZDsgLy8gU3RhcnQgZnJvbSB0aGUgey4KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQXNzZXJ0aW9ucy5jcHAgYi9Tb3VyY2UvV1RGL3d0
Zi9Bc3NlcnRpb25zLmNwcAppbmRleCBjOTNiYWY0MTMzYjZmMzg2YTczZjIwN2I2ZWY2NWYxOTIz
YTQ0NjM4Li4yY2QyNTE4OWIzZDc0MDkxZmRhNDhiMmFiY2EzYjBkMjFhY2IyMDM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9B
c3NlcnRpb25zLmNwcApAQCAtNDY2LDcgKzQ2Niw3IEBAIHN0YXRpYyB2b2lkIFdURkxvZ1ZhTGlz
dChXVEZMb2dDaGFubmVsKiBjaGFubmVsLCBjb25zdCBjaGFyKiBmb3JtYXQsIHZhX2xpc3QgYXJn
CiAgICAgQUxMT1dfTk9OTElURVJBTF9GT1JNQVRfRU5ECiAKICAgICBpZiAoIWxvZ2dpbmdTdHJp
bmcuZW5kc1dpdGgoJ1xuJykpCi0gICAgICAgIGxvZ2dpbmdTdHJpbmcuYXBwZW5kKCdcbicpOwor
ICAgICAgICBsb2dnaW5nU3RyaW5nID0gbWFrZVN0cmluZyhsb2dnaW5nU3RyaW5nLCAnXG4nKTsK
IAogICAgIGxvZ2dpbmdBY2N1bXVsYXRvcigpLmFjY3VtdWxhdGUobG9nZ2luZ1N0cmluZyk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9VUkwu
Y3BwCmluZGV4IDJjMjIxZjRlYjE5OGViMTdlNGZhOTBmZDIzOWQ0ODhlNTRlYmVhZGIuLjU3Njhl
Mzg4NzgxODc0NmU3NWNkYjQ1ZWI2NWQzMzg1ODE3ODdiMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL1VSTC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvVVJMLmNwcApAQCAtMTM1LDcgKzEz
NSw3IEBAIFN0cmluZ1ZpZXcgVVJMOjpwcm90b2NvbCgpIGNvbnN0CiAgICAgaWYgKCFtX2lzVmFs
aWQpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICByZXR1cm4gU3RyaW5nVmlldyhtX3N0cmlu
Zykuc3Vic3RyaW5nKDAsIG1fc2NoZW1lRW5kKTsKKyAgICByZXR1cm4gU3RyaW5nVmlldyhtX3N0
cmluZykubGVmdChtX3NjaGVtZUVuZCk7CiB9CiAKIFN0cmluZ1ZpZXcgVVJMOjpob3N0KCkgY29u
c3QKQEAgLTE2MiwxMCArMTYyLDEwIEBAIFN0cmluZyBVUkw6Omhvc3RBbmRQb3J0KCkgY29uc3QK
IFN0cmluZyBVUkw6OnByb3RvY29sSG9zdEFuZFBvcnQoKSBjb25zdAogewogICAgIGlmICghaGFz
Q3JlZGVudGlhbHMoKSkKLSAgICAgICAgcmV0dXJuIG1fc3RyaW5nLnN1YnN0cmluZygwLCBwYXRo
U3RhcnQoKSk7CisgICAgICAgIHJldHVybiBtX3N0cmluZy5sZWZ0KHBhdGhTdGFydCgpKTsKIAog
ICAgIHJldHVybiBtYWtlU3RyaW5nKAotICAgICAgICBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJz
dHJpbmcoMCwgbV91c2VyU3RhcnQpLAorICAgICAgICBTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0
KG1fdXNlclN0YXJ0KSwKICAgICAgICAgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKGhv
c3RTdGFydCgpLCBwYXRoU3RhcnQoKSAtIGhvc3RTdGFydCgpKQogICAgICk7CiB9CkBAIC0zNzcs
NyArMzc3LDcgQEAgU3RyaW5nVmlldyBVUkw6OnBhdGgoKSBjb25zdAogYm9vbCBVUkw6OnNldFBy
b3RvY29sKFN0cmluZ1ZpZXcgbmV3UHJvdG9jb2wpCiB7CiAgICAgLy8gRmlyZWZveCBhbmQgSUUg
cmVtb3ZlIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGZpcnN0ICc6Jy4KLSAgICBhdXRvIG5ld1Byb3Rv
Y29sUHJlZml4ID0gbmV3UHJvdG9jb2wuc3Vic3RyaW5nKDAsIG5ld1Byb3RvY29sLmZpbmQoJzon
KSk7CisgICAgYXV0byBuZXdQcm90b2NvbFByZWZpeCA9IG5ld1Byb3RvY29sLmxlZnQobmV3UHJv
dG9jb2wuZmluZCgnOicpKTsKICAgICBhdXRvIG5ld1Byb3RvY29sQ2Fub25pY2FsaXplZCA9IFVS
TFBhcnNlcjo6bWF5YmVDYW5vbmljYWxpemVTY2hlbWUobmV3UHJvdG9jb2xQcmVmaXgpOwogICAg
IGlmICghbmV3UHJvdG9jb2xDYW5vbmljYWxpemVkKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC00NTcsNyArNDU3LDcgQEAgdm9pZCBVUkw6OnNldEhvc3QoU3RyaW5nVmlldyBuZXdIb3N0KQog
ICAgICAgICByZXR1cm47CiAKICAgICBpZiAoYXV0byBpbmRleCA9IG5ld0hvc3QuZmluZChoYXNT
cGVjaWFsU2NoZW1lKCkgPyBzbGFzaEhhc2hPclF1ZXN0aW9uTWFyayA6IGZvcndhcmRTbGFzaEhh
c2hPclF1ZXN0aW9uTWFyayk7IGluZGV4ICE9IG5vdEZvdW5kKQotICAgICAgICBuZXdIb3N0ID0g
bmV3SG9zdC5zdWJzdHJpbmcoMCwgaW5kZXgpOworICAgICAgICBuZXdIb3N0ID0gbmV3SG9zdC5s
ZWZ0KGluZGV4KTsKIAogICAgIFZlY3RvcjxVQ2hhciwgNTEyPiBlbmNvZGVkSG9zdE5hbWU7CiAg
ICAgaWYgKGhhc1NwZWNpYWxTY2hlbWUoKSAmJiAhYXBwZW5kRW5jb2RlZEhvc3RuYW1lKGVuY29k
ZWRIb3N0TmFtZSwgbmV3SG9zdCkpCkBAIC01MDAsNyArNTAwLDcgQEAgdm9pZCBVUkw6OnNldEhv
c3RBbmRQb3J0KFN0cmluZ1ZpZXcgaG9zdEFuZFBvcnQpCiAgICAgYXV0byBjb2xvbkluZGV4ID0g
aG9zdE5hbWUucmV2ZXJzZUZpbmQoJzonKTsKICAgICBpZiAoY29sb25JbmRleCAhPSBub3RGb3Vu
ZCkgewogICAgICAgICBwb3J0U3RyaW5nID0gaG9zdE5hbWUuc3Vic3RyaW5nKGNvbG9uSW5kZXgg
KyAxKTsKLSAgICAgICAgaG9zdE5hbWUgPSBob3N0TmFtZS5zdWJzdHJpbmcoMCwgY29sb25JbmRl
eCk7CisgICAgICAgIGhvc3ROYW1lID0gaG9zdE5hbWUubGVmdChjb2xvbkluZGV4KTsKICAgICAg
ICAgLy8gTXVsdGlwbGUgY29sb25zIGFyZSBhY2NlcHRhYmxlIG9ubHkgaW4gY2FzZSBvZiBJUHY2
LgogICAgICAgICBpZiAoaG9zdE5hbWUuY29udGFpbnMoJzonKSAmJiAhaG9zdE5hbWUuc3RhcnRz
V2l0aCgnWycpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtODM3LDcgKzgzNyw3IEBAIFN0cmlu
ZyBVUkw6OnN0cmlwcGVkRm9yVXNlQXNSZWZlcnJlcigpIGNvbnN0CiAgICAgICAgIHJldHVybiBt
X3N0cmluZzsKIAogICAgIHJldHVybiBtYWtlU3RyaW5nKAotICAgICAgICBTdHJpbmdWaWV3KG1f
c3RyaW5nKS5zdWJzdHJpbmcoMCwgbV91c2VyU3RhcnQpLAorICAgICAgICBTdHJpbmdWaWV3KG1f
c3RyaW5nKS5sZWZ0KG1fdXNlclN0YXJ0KSwKICAgICAgICAgU3RyaW5nVmlldyhtX3N0cmluZyku
c3Vic3RyaW5nKGVuZCwgbV9xdWVyeUVuZCAtIGVuZCkKICAgICApOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvVVJMUGFyc2VyLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1VSTFBhcnNlci5j
cHAKaW5kZXggZmZkYzhkMzhmZWI1ZGQxMWU2Njk3NTA4YzI4ZGI0ODFjZDNmMDFkOS4uYmNkOWE3
Y2E2MzUyNDQ5NmQxODc1ZmM5MWE0ZTZmZDRkMTgwMWRlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvVVJMUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9VUkxQYXJzZXIuY3BwCkBA
IC0yNTEyLDcgKzI1MTIsNyBAQCB2b2lkIFVSTFBhcnNlcjo6YWRkTm9uU3BlY2lhbERvdFNsYXNo
KCkKIHsKICAgICBhdXRvIG9sZFBhdGhTdGFydCA9IG1fdXJsLm1faG9zdEVuZCArIG1fdXJsLm1f
cG9ydExlbmd0aDsKICAgICBhdXRvJiBvbGRTdHJpbmcgPSBtX3VybC5tX3N0cmluZzsKLSAgICBt
X3VybC5tX3N0cmluZyA9IG1ha2VTdHJpbmcob2xkU3RyaW5nLnN1YnN0cmluZygwLCBvbGRQYXRo
U3RhcnQgKyAxKSwgIi4vIiwgb2xkU3RyaW5nLnN1YnN0cmluZyhvbGRQYXRoU3RhcnQgKyAxKSk7
CisgICAgbV91cmwubV9zdHJpbmcgPSBtYWtlU3RyaW5nKG9sZFN0cmluZy5sZWZ0KG9sZFBhdGhT
dGFydCArIDEpLCAiLi8iLCBvbGRTdHJpbmcuc3Vic3RyaW5nKG9sZFBhdGhTdGFydCArIDEpKTsK
ICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCArPSAyOwogICAgIG1fdXJsLm1fcGF0aEVu
ZCArPSAyOwogICAgIG1fdXJsLm1fcXVlcnlFbmQgKz0gMjsKQEAgLTI4OTEsNyArMjg5MSw3IEBA
IGF1dG8gVVJMUGFyc2VyOjpwYXJzZVVSTEVuY29kZWRGb3JtKFN0cmluZ1ZpZXcgaW5wdXQpIC0+
IFVSTEVuY29kZWRGb3JtCiAgICAgICAgICAgICBpZiAobmFtZSkKICAgICAgICAgICAgICAgICBv
dXRwdXQuYXBwZW5kKHsgbmFtZS52YWx1ZSgpLCBlbXB0eVN0cmluZygpIH0pOwogICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgYXV0byBuYW1lID0gZm9ybVVSTERlY29kZShieXRlcy5zdWJz
dHJpbmcoMCwgZXF1YWxJbmRleCkudG9TdHJpbmcoKS5yZXBsYWNlKCcrJywgMHgyMCkpOworICAg
ICAgICAgICAgYXV0byBuYW1lID0gZm9ybVVSTERlY29kZShieXRlcy5sZWZ0KGVxdWFsSW5kZXgp
LnRvU3RyaW5nKCkucmVwbGFjZSgnKycsIDB4MjApKTsKICAgICAgICAgICAgIGF1dG8gdmFsdWUg
PSBmb3JtVVJMRGVjb2RlKGJ5dGVzLnN1YnN0cmluZyhlcXVhbEluZGV4ICsgMSkudG9TdHJpbmco
KS5yZXBsYWNlKCcrJywgMHgyMCkpOwogICAgICAgICAgICAgaWYgKG5hbWUgJiYgdmFsdWUpCiAg
ICAgICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCh7IG5hbWUudmFsdWUoKSwgdmFsdWUudmFsdWUo
KSB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VVSUQuY3BwIGIvU291cmNlL1dURi93
dGYvVVVJRC5jcHAKaW5kZXggNGI4OTAwMDQ3YmU5YjU2YjZhNmVjMTZlMTM5MTQ1NjZlZWZkOTFj
MC4uYTgwMTMwMDQ4MDcwZjE2MjVmNDgwNjU2NGU0M2RlYWMyNjVkNGJkZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvVVVJRC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvVVVJRC5jcHAKQEAg
LTExMyw3ICsxMTMsNyBAQCBzdGQ6Om9wdGlvbmFsPFVVSUQ+IFVVSUQ6OnBhcnNlKFN0cmluZ1Zp
ZXcgdmFsdWUpCiAgICAgaWYgKHZhbHVlWzBdID09ICcrJyB8fCB2YWx1ZVs5XSA9PSAnKycgIHx8
IHZhbHVlWzE5XSA9PSAnKycgfHwgdmFsdWVbMjRdID09ICcrJykKICAgICAgICAgcmV0dXJuIHsg
fTsKIAotICAgIGF1dG8gZmlyc3RWYWx1ZSA9IHBhcnNlSW50ZWdlcjx1aW50NjRfdD4odmFsdWUu
c3Vic3RyaW5nKDAsIDgpLCAxNik7CisgICAgYXV0byBmaXJzdFZhbHVlID0gcGFyc2VJbnRlZ2Vy
PHVpbnQ2NF90Pih2YWx1ZS5sZWZ0KDgpLCAxNik7CiAgICAgaWYgKCFmaXJzdFZhbHVlKQogICAg
ICAgICByZXR1cm4geyB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmlu
Z0J1aWxkZXIuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oCmluZGV4IGNh
ZDA5NTNiNTI4YTJkMDllNDIyYTg4MjliNzJjMzI4YmQxMjZkYmYuLmI0MTQzMmYxNzg4NTUwYWRl
NTI2NDRlYWM5OGZhYmNjNTk1YTYyNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
U3RyaW5nQnVpbGRlci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5o
CkBAIC02MSw2ICs2MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZChjb25zdCBBdG9tU3Ry
aW5nJiBzdHJpbmcpIHsgYXBwZW5kKHN0cmluZy5zdHJpbmcoKSk7IH0KICAgICB2b2lkIGFwcGVu
ZChjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIGFwcGVuZChTdHJpbmdWaWV3KTsKKyAgICB2b2lk
IGFwcGVuZChBU0NJSUxpdGVyYWwpOwogICAgIHZvaWQgYXBwZW5kKFVDaGFyKTsKICAgICB2b2lk
IGFwcGVuZChMQ2hhcik7CiAgICAgdm9pZCBhcHBlbmQoY2hhciBjaGFyYWN0ZXIpIHsgYXBwZW5k
KHN0YXRpY19jYXN0PExDaGFyPihjaGFyYWN0ZXIpKTsgfQpAQCAtMjIxLDYgKzIyMiwxMSBAQCBp
bmxpbmUgdm9pZCBTdHJpbmdCdWlsZGVyOjphcHBlbmQoU3RyaW5nVmlldyBzdHJpbmcpCiAgICAg
ICAgIGFwcGVuZENoYXJhY3RlcnMoc3RyaW5nLmNoYXJhY3RlcnMxNigpLCBzdHJpbmcubGVuZ3Ro
KCkpOwogfQogCitpbmxpbmUgdm9pZCBTdHJpbmdCdWlsZGVyOjphcHBlbmQoQVNDSUlMaXRlcmFs
IHN0cmluZykKK3sKKyAgICBhcHBlbmRDaGFyYWN0ZXJzKHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBz
dHJpbmcubGVuZ3RoKCkpOworfQorCiBpbmxpbmUgdm9pZCBTdHJpbmdCdWlsZGVyOjphcHBlbmRT
dWJzdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQg
bGVuZ3RoKQogewogICAgIGFwcGVuZChTdHJpbmdWaWV3IHsgc3RyaW5nIH0uc3Vic3RyaW5nKG9m
ZnNldCwgbGVuZ3RoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmlu
Zy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKaW5kZXggZDc3N2E5Nzlj
ODQ1ZWMxMjlmNGZmYTVlMWRlMjExODNhYmM2NTJjOC4uZGM5NDEwNGI1OTJkMTA4ZDAwYjgyNTgw
NzYyYjExNTE4ZjA3Y2RkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJp
bmcuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcApAQCAtNzMsODAg
KzczLDYgQEAgU3RyaW5nOjpTdHJpbmcoY29uc3QgY2hhciogbnVsbFRlcm1pbmF0ZWRTdHJpbmcp
CiAgICAgICAgIG1faW1wbCA9IFN0cmluZ0ltcGw6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNv
bnN0IExDaGFyKj4obnVsbFRlcm1pbmF0ZWRTdHJpbmcpKTsKIH0KIAotdm9pZCBTdHJpbmc6OmFw
cGVuZChjb25zdCBTdHJpbmcmIG90aGVyU3RyaW5nKQotewotICAgIC8vIEZJWE1FOiBUaGlzIGlz
IGV4dHJlbWVseSBpbmVmZmljaWVudC4gU28gbXVjaCBzbyB0aGF0IHdlIG1pZ2h0IHdhbnQgdG8g
dGFrZSB0aGlzIG91dCBvZiBTdHJpbmcncyBBUEkuCi0KLSAgICBpZiAoIW1faW1wbCkgewotICAg
ICAgICBtX2ltcGwgPSBvdGhlclN0cmluZy5tX2ltcGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBpZiAob3RoZXJTdHJpbmcuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBhdXRvIGxlbmd0aCA9IG1faW1wbC0+bGVuZ3RoKCk7Ci0gICAgYXV0byBvdGhlckxlbmd0aCA9
IG90aGVyU3RyaW5nLm1faW1wbC0+bGVuZ3RoKCk7Ci0gICAgaWYgKG90aGVyTGVuZ3RoID4gTWF4
TGVuZ3RoIC0gbGVuZ3RoKQotICAgICAgICBDUkFTSCgpOwotCi0gICAgaWYgKG1faW1wbC0+aXM4
Qml0KCkgJiYgb3RoZXJTdHJpbmcubV9pbXBsLT5pczhCaXQoKSkgewotICAgICAgICBMQ2hhciog
ZGF0YTsKLSAgICAgICAgYXV0byBuZXdJbXBsID0gU3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFs
aXplZChsZW5ndGggKyBvdGhlckxlbmd0aCwgZGF0YSk7Ci0gICAgICAgIFN0cmluZ0ltcGw6OmNv
cHlDaGFyYWN0ZXJzKGRhdGEsIG1faW1wbC0+Y2hhcmFjdGVyczgoKSwgbGVuZ3RoKTsKLSAgICAg
ICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoZGF0YSArIGxlbmd0aCwgb3RoZXJTdHJpbmcu
bV9pbXBsLT5jaGFyYWN0ZXJzOCgpLCBvdGhlckxlbmd0aCk7Ci0gICAgICAgIG1faW1wbCA9IFdU
Rk1vdmUobmV3SW1wbCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgVUNoYXIqIGRhdGE7
Ci0gICAgYXV0byBuZXdJbXBsID0gU3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFsaXplZChsZW5n
dGggKyBvdGhlckxlbmd0aCwgZGF0YSk7Ci0gICAgU3RyaW5nVmlldygqbV9pbXBsKS5nZXRDaGFy
YWN0ZXJzV2l0aFVwY29udmVydChkYXRhKTsKLSAgICBTdHJpbmdWaWV3KCpvdGhlclN0cmluZy5t
X2ltcGwpLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGRhdGEgKyBsZW5ndGgpOwotICAgIG1f
aW1wbCA9IFdURk1vdmUobmV3SW1wbCk7Ci19Ci0KLXZvaWQgU3RyaW5nOjphcHBlbmQoTENoYXIg
Y2hhcmFjdGVyKQotewotICAgIC8vIEZJWE1FOiBUaGlzIGlzIGV4dHJlbWVseSBpbmVmZmljaWVu
dC4gU28gbXVjaCBzbyB0aGF0IHdlIG1pZ2h0IHdhbnQgdG8gdGFrZSB0aGlzIG91dCBvZiBTdHJp
bmcncyBBUEkuCi0KLSAgICBpZiAoIW1faW1wbCkgewotICAgICAgICBtX2ltcGwgPSBTdHJpbmdJ
bXBsOjpjcmVhdGUoJmNoYXJhY3RlciwgMSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAg
aWYgKCFpczhCaXQoKSkgewotICAgICAgICBhcHBlbmQoc3RhdGljX2Nhc3Q8VUNoYXI+KGNoYXJh
Y3RlcikpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChtX2ltcGwtPmxlbmd0aCgp
ID49IE1heExlbmd0aCkKLSAgICAgICAgQ1JBU0goKTsKLSAgICBMQ2hhciogZGF0YTsKLSAgICBh
dXRvIG5ld0ltcGwgPSBTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRpYWxpemVkKG1faW1wbC0+bGVu
Z3RoKCkgKyAxLCBkYXRhKTsKLSAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhkYXRhLCBt
X2ltcGwtPmNoYXJhY3RlcnM4KCksIG1faW1wbC0+bGVuZ3RoKCkpOwotICAgIGRhdGFbbV9pbXBs
LT5sZW5ndGgoKV0gPSBjaGFyYWN0ZXI7Ci0gICAgbV9pbXBsID0gV1RGTW92ZShuZXdJbXBsKTsK
LX0KLQotdm9pZCBTdHJpbmc6OmFwcGVuZChVQ2hhciBjaGFyYWN0ZXIpCi17Ci0gICAgLy8gRklY
TUU6IFRoaXMgaXMgZXh0cmVtZWx5IGluZWZmaWNpZW50LiBTbyBtdWNoIHNvIHRoYXQgd2UgbWln
aHQgd2FudCB0byB0YWtlIHRoaXMgb3V0IG9mIFN0cmluZydzIEFQSS4KLQotICAgIGlmICghbV9p
bXBsKSB7Ci0gICAgICAgIG1faW1wbCA9IFN0cmluZ0ltcGw6OmNyZWF0ZSgmY2hhcmFjdGVyLCAx
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoaXNMYXRpbjEoY2hhcmFjdGVyKSAm
JiBpczhCaXQoKSkgewotICAgICAgICBhcHBlbmQoc3RhdGljX2Nhc3Q8TENoYXI+KGNoYXJhY3Rl
cikpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChtX2ltcGwtPmxlbmd0aCgpID49
IE1heExlbmd0aCkKLSAgICAgICAgQ1JBU0goKTsKLSAgICBVQ2hhciogZGF0YTsKLSAgICBhdXRv
IG5ld0ltcGwgPSBTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRpYWxpemVkKG1faW1wbC0+bGVuZ3Ro
KCkgKyAxLCBkYXRhKTsKLSAgICBTdHJpbmdWaWV3KCptX2ltcGwpLmdldENoYXJhY3RlcnNXaXRo
VXBjb252ZXJ0KGRhdGEpOwotICAgIGRhdGFbbV9pbXBsLT5sZW5ndGgoKV0gPSBjaGFyYWN0ZXI7
Ci0gICAgbV9pbXBsID0gV1RGTW92ZShuZXdJbXBsKTsKLX0KLQogaW50IGNvZGVQb2ludENvbXBh
cmUoY29uc3QgU3RyaW5nJiBhLCBjb25zdCBTdHJpbmcmIGIpCiB7CiAgICAgcmV0dXJuIGNvZGVQ
b2ludENvbXBhcmUoYS5pbXBsKCksIGIuaW1wbCgpKTsKQEAgLTE2Nyw3ICs5MywxMCBAQCB2b2lk
IFN0cmluZzo6aW5zZXJ0KGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25lZCBwb3NpdGlvbikK
ICAgICB9CiAKICAgICBpZiAocG9zaXRpb24gPj0gbGVuZ3RoKCkpIHsKLSAgICAgICAgYXBwZW5k
KHN0cmluZyk7CisgICAgICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCisgICAgICAgICAgICBhcHBl
bmQoc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5ndGgoKSk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIGFwcGVuZChzdHJpbmcuY2hhcmFjdGVyczE2KCksIHN0cmluZy5sZW5ndGgo
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE3NywxNCArMTA2LDE0IEBAIHZvaWQg
U3RyaW5nOjppbnNlcnQoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVuc2lnbmVkIHBvc2l0aW9uKQog
ICAgIGlmIChpczhCaXQoKSAmJiBzdHJpbmcuaXM4Qml0KCkpIHsKICAgICAgICAgTENoYXIqIGRh
dGE7CiAgICAgICAgIGF1dG8gbmV3U3RyaW5nID0gU3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFs
aXplZChsZW5ndGgoKSArIGxlbmd0aFRvSW5zZXJ0LCBkYXRhKTsKLSAgICAgICAgU3RyaW5nVmll
dygqbV9pbXBsKS5zdWJzdHJpbmcoMCwgcG9zaXRpb24pLmdldENoYXJhY3RlcnNXaXRoVXBjb252
ZXJ0KGRhdGEpOworICAgICAgICBTdHJpbmdWaWV3KCptX2ltcGwpLmxlZnQocG9zaXRpb24pLmdl
dENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGRhdGEpOwogICAgICAgICBTdHJpbmdWaWV3KHN0cmlu
ZykuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoZGF0YSArIHBvc2l0aW9uKTsKICAgICAgICAg
U3RyaW5nVmlldygqbV9pbXBsKS5zdWJzdHJpbmcocG9zaXRpb24pLmdldENoYXJhY3RlcnNXaXRo
VXBjb252ZXJ0KGRhdGEgKyBwb3NpdGlvbiArIGxlbmd0aFRvSW5zZXJ0KTsKICAgICAgICAgbV9p
bXBsID0gV1RGTW92ZShuZXdTdHJpbmcpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIFVDaGFyKiBk
YXRhOwogICAgICAgICBhdXRvIG5ld1N0cmluZyA9IFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlh
bGl6ZWQobGVuZ3RoKCkgKyBsZW5ndGhUb0luc2VydCwgZGF0YSk7Ci0gICAgICAgIFN0cmluZ1Zp
ZXcoKm1faW1wbCkuc3Vic3RyaW5nKDAsIHBvc2l0aW9uKS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29u
dmVydChkYXRhKTsKKyAgICAgICAgU3RyaW5nVmlldygqbV9pbXBsKS5sZWZ0KHBvc2l0aW9uKS5n
ZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChkYXRhKTsKICAgICAgICAgU3RyaW5nVmlldyhzdHJp
bmcpLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGRhdGEgKyBwb3NpdGlvbik7CiAgICAgICAg
IFN0cmluZ1ZpZXcoKm1faW1wbCkuc3Vic3RyaW5nKHBvc2l0aW9uKS5nZXRDaGFyYWN0ZXJzV2l0
aFVwY29udmVydChkYXRhICsgcG9zaXRpb24gKyBsZW5ndGhUb0luc2VydCk7CiAgICAgICAgIG1f
aW1wbCA9IFdURk1vdmUobmV3U3RyaW5nKTsKQEAgLTI0NCw3ICsxNzMsNyBAQCB2b2lkIFN0cmlu
Zzo6YXBwZW5kKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzVG9BcHBlbmQsIHVuc2lnbmVkIGxlbmd0
aFRvQXBwZW5kKQogICAgICAgICByZXR1cm47CiAKICAgICB1bnNpZ25lZCBzdHJMZW5ndGggPSBt
X2ltcGwtPmxlbmd0aCgpOwotICAgIAorCiAgICAgQVNTRVJUKGNoYXJhY3RlcnNUb0FwcGVuZCk7
CiAgICAgaWYgKGxlbmd0aFRvQXBwZW5kID4gTWF4TGVuZ3RoIC0gc3RyTGVuZ3RoKQogICAgICAg
ICBDUkFTSCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaCBi
L1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKaW5kZXggYjY0OTcwOTgwYWJlM2YzYzc5
Yjk0MmZhMDgyNjU2NjNjZTgyOWJkNS4uNDVhOTJlYWNlZDM1ZDliMGE0NjBhNTZkZGJjYmQ5ZTk1
NmI3MGI5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCkBAIC0xOTAsMTIgKzE5MCw2IEBAIHB1
YmxpYzoKICAgICBib29sIGVuZHNXaXRoKGNoYXIgY2hhcmFjdGVyKSBjb25zdCB7IHJldHVybiBl
bmRzV2l0aChzdGF0aWNfY2FzdDxVQ2hhcj4oY2hhcmFjdGVyKSk7IH0KICAgICBib29sIGhhc0lu
Zml4RW5kaW5nQXQoU3RyaW5nVmlldyBzdWZmaXgsIHVuc2lnbmVkIGVuZCkgY29uc3Q7CiAKLSAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBlbmQoY29uc3QgU3RyaW5nJik7Ci0gICAgV1RG
X0VYUE9SVF9QUklWQVRFIHZvaWQgYXBwZW5kKExDaGFyKTsKLSAgICB2b2lkIGFwcGVuZChjaGFy
IGNoYXJhY3RlcikgeyBhcHBlbmQoc3RhdGljX2Nhc3Q8TENoYXI+KGNoYXJhY3RlcikpOyB9Owot
ICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGFwcGVuZChVQ2hhcik7Ci0gICAgV1RGX0VYUE9S
VF9QUklWQVRFIHZvaWQgYXBwZW5kKGNvbnN0IExDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKLSAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBlbmQoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBs
ZW5ndGgpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGluc2VydChjb25zdCBTdHJpbmcm
LCB1bnNpZ25lZCBwb3NpdGlvbik7CiAKICAgICBTdHJpbmcmIHJlcGxhY2UoVUNoYXIgdGFyZ2V0
LCBVQ2hhciByZXBsYWNlbWVudCk7CkBAIC0yMDQsNyArMTk4LDkgQEAgcHVibGljOgogICAgIFN0
cmluZyYgcmVwbGFjZSh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBTdHJpbmdWaWV3
IHJlcGxhY2VtZW50KTsKICAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJDb3VudD4gU3Ry
aW5nJiByZXBsYWNlV2l0aExpdGVyYWwoVUNoYXIgdGFyZ2V0LCBjb25zdCBjaGFyICgmcmVwbGFj
ZW1lbnQpW2NoYXJhY3RlckNvdW50XSk7CiAKKyAgICAvLyBGSVhNRTogVGhpcyBpcyBpZGVudGlj
YWwgdG8gbGVmdCh1bnNpZ25lZCksIHdlIHNob3VsZCBwcm9iYWJseSBwb3J0IGNhbGxlcnMgdG8g
bGVmdCgpIGFuZCBkcm9wIHRoaXMgb25lLgogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHRy
dW5jYXRlKHVuc2lnbmVkIGxlbmd0aCk7CisKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBy
ZW1vdmUodW5zaWduZWQgcG9zaXRpb24sIHVuc2lnbmVkIGxlbmd0aCA9IDEpOwogCiAgICAgV1RG
X0VYUE9SVF9QUklWQVRFIFN0cmluZyBzdWJzdHJpbmcodW5zaWduZWQgcG9zaXRpb24sIHVuc2ln
bmVkIGxlbmd0aCA9IE1heExlbmd0aCkgY29uc3Q7CkBAIC0zMzgsNiArMzM0LDEwIEBAIHB1Ymxp
YzoKIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCBy
ZW1vdmVJbnRlcm5hbChjb25zdCBDaGFyYWN0ZXJUeXBlKiwgdW5zaWduZWQsIHVuc2lnbmVkKTsK
IAorICAgIC8vIEZJWE1FOiBPbmx5IHVzZWQgYnkgaW5zZXJ0KCksIHdlIHNob3VsZCBjb25zaWRl
ciBkcm9wcGluZyB0aGVtLgorICAgIHZvaWQgYXBwZW5kKGNvbnN0IExDaGFyKiwgdW5zaWduZWQg
bGVuZ3RoKTsKKyAgICB2b2lkIGFwcGVuZChjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7
CisKICAgICB0ZW1wbGF0ZTxib29sIGFsbG93RW1wdHlFbnRyaWVzPiB2b2lkIHNwbGl0SW50ZXJu
YWwoVUNoYXIgc2VwYXJhdG9yLCBjb25zdCBTcGxpdEZ1bmN0b3ImKSBjb25zdDsKICAgICB0ZW1w
bGF0ZTxib29sIGFsbG93RW1wdHlFbnRyaWVzPiBWZWN0b3I8U3RyaW5nPiBzcGxpdEludGVybmFs
KFVDaGFyIHNlcGFyYXRvcikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Ym9vbCBhbGxvd0VtcHR5RW50
cmllcz4gVmVjdG9yPFN0cmluZz4gc3BsaXRJbnRlcm5hbChTdHJpbmdWaWV3IHNlcGFyYXRvcikg
Y29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eUNvbnN1bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwCmluZGV4IDMyZWExZDQ5ZjdkZmU0YTIwMGQ5ZTVjMGM1ODM3MjYwN2I1ZGQyMDEu
LjAzZTAxODJkMzkyMTc4YWM2N2E0NmE1NTk0NzBmZjY1NzJkOTRlNzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCkBAIC0xMTMs
NyArMTEzLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWltZVR5cGU+IHBhcnNlTUlNRVR5cGUo
Y29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKICAgICBpZiAoc2xhc2hJbmRleCA9PSBub3RGb3Vu
ZCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIFN0cmluZyB0eXBlID0gaW5w
dXQuc3Vic3RyaW5nKDAsIHNsYXNoSW5kZXgpOworICAgIFN0cmluZyB0eXBlID0gaW5wdXQubGVm
dChzbGFzaEluZGV4KTsKICAgICBpZiAoIXR5cGUubGVuZ3RoKCkgfHwgIWlzVmFsaWRIVFRQVG9r
ZW4odHlwZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcAppbmRleCBlNDM4MmIzZDM0
YTI5NDc1ODBkN2Q3OTBjYTQ0NWZlMDk1NmQyNTQxLi4wZTZjZDViMzFkNjNmM2YxOTJiMTAxNmFm
MjQ0ZTE4ZWNjZjVhZDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJDdXJzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkN1cnNvci5jcHAKQEAgLTMyNiw3ICszMjYsNyBAQCBFeGNlcHRpb25PcjxSZWY8V2ViQ29y
ZTo6SURCUmVxdWVzdD4+IElEQkN1cnNvcjo6ZGVsZXRlRnVuY3Rpb24oKQogCiBib29sIElEQkN1
cnNvcjo6c2V0R2V0UmVzdWx0KElEQlJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IElEQkdldFJlc3Vs
dCYgZ2V0UmVzdWx0LCB1aW50NjRfdCBvcGVyYXRpb25JRCkKIHsKLSAgICBMT0coSW5kZXhlZERC
LCAiSURCQ3Vyc29yOjpzZXRHZXRSZXN1bHQgLSBjdXJyZW50IGtleSAlcyIsIGdldFJlc3VsdC5r
ZXlEYXRhKCkubG9nZ2luZ1N0cmluZygpLnN1YnN0cmluZygwLCAxMDApLnV0ZjgoKS5kYXRhKCkp
OworICAgIExPRyhJbmRleGVkREIsICJJREJDdXJzb3I6OnNldEdldFJlc3VsdCAtIGN1cnJlbnQg
a2V5ICVzIiwgZ2V0UmVzdWx0LmtleURhdGEoKS5sb2dnaW5nU3RyaW5nKCkubGVmdCgxMDApLnV0
ZjgoKS5kYXRhKCkpOwogICAgIEFTU0VSVChjYW5DdXJyZW50VGhyZWFkQWNjZXNzVGhyZWFkTG9j
YWxEYXRhKGVmZmVjdGl2ZU9iamVjdFN0b3JlKCkudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9y
aWdpblRocmVhZCgpKSk7CiAKICAgICBhdXRvKiBjb250ZXh0ID0gcmVxdWVzdC5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJLZXlEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QktleURhdGEuY3BwCmluZGV4IDQ2MGYxNzRhMzgxYWI2YWJhNGNhMjk4MzE0NTI2OThiNWQ1Mjkw
ZDAuLjg1YjE3ODJhYmViZjY3ZTE2M2NiNmNlOWQzM2I0NzkwYmYwNGJhZGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleURhdGEuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleURhdGEuY3BwCkBAIC0zNzEsMTAg
KzM3MSw4IEBAIFN0cmluZyBJREJLZXlEYXRhOjpsb2dnaW5nU3RyaW5nKCkgY29uc3QKICAgICAg
ICAgcmV0dXJuICI8bWluaW11bT4iX3M7CiAgICAgfQogCi0gICAgaWYgKHJlc3VsdC5sZW5ndGgo
KSA+IDE1MCkgewotICAgICAgICByZXN1bHQudHJ1bmNhdGUoMTQ3KTsKLSAgICAgICAgcmVzdWx0
LmFwcGVuZCgiLi4uIl9zKTsKLSAgICB9CisgICAgaWYgKHJlc3VsdC5sZW5ndGgoKSA+IDE1MCkK
KyAgICAgICAgcmVzdWx0ID0gbWFrZVN0cmluZyhTdHJpbmdWaWV3KHJlc3VsdCkubGVmdCgxNDcp
LCAiLi4uIl9zKTsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlQYXRoLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVBhdGguY3BwCmluZGV4IGM4MjkxMTZlNjQ0NzU2Y2I3
NjYxZDZjZThlZjY3ZjY1MjliYTkzMmMuLmJkMDA4YTFlMDczM2QyMzMyMTMxZDc3Yjk4MTZhNmZm
ZDI5NWY1OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QktleVBhdGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktl
eVBhdGguY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgSURCS2V5UGF0aExleGVyOjpUb2tlblR5cGUg
SURCS2V5UGF0aExleGVyOjpsZXhJZGVudGlmaWVyKFN0cmluZyYgZWxlbWVudCkKICAgICB3aGls
ZSAoIW1fcmVtYWluaW5nVGV4dC5pc0VtcHR5KCkgJiYgaXNJZGVudGlmaWVyQ2hhcmFjdGVyKG1f
cmVtYWluaW5nVGV4dFswXSkpCiAgICAgICAgIG1fcmVtYWluaW5nVGV4dCA9IG1fcmVtYWluaW5n
VGV4dC5zdWJzdHJpbmcoMSk7CiAKLSAgICBlbGVtZW50ID0gc3RhcnQuc3Vic3RyaW5nKDAsIHN0
YXJ0Lmxlbmd0aCgpIC0gbV9yZW1haW5pbmdUZXh0Lmxlbmd0aCgpKS50b1N0cmluZygpOworICAg
IGVsZW1lbnQgPSBzdGFydC5sZWZ0KHN0YXJ0Lmxlbmd0aCgpIC0gbV9yZW1haW5pbmdUZXh0Lmxl
bmd0aCgpKS50b1N0cmluZygpOwogICAgIHJldHVybiBUb2tlbklkZW50aWZpZXI7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVJhbmdlRGF0
YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZURhdGEu
Y3BwCmluZGV4IDdjMmE4MWUyNDY0ZDRhYzZmNjkxZjZmN2FjZjliNmJhYWNiZTIxNTQuLjk0MzUx
YWEyMDhmOTY4MTQ0MGE3MWMxOTlkNjVkM2M5OGU5ZWQ5Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVJhbmdlRGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UmFuZ2VEYXRhLmNwcApAQCAtMTExLDEw
ICsxMTEsOCBAQCBib29sIElEQktleVJhbmdlRGF0YTo6aXNWYWxpZCgpIGNvbnN0CiBTdHJpbmcg
SURCS2V5UmFuZ2VEYXRhOjpsb2dnaW5nU3RyaW5nKCkgY29uc3QKIHsKICAgICBhdXRvIHJlc3Vs
dCA9IG1ha2VTdHJpbmcobG93ZXJPcGVuID8gIiggIiA6ICJbICIsIGxvd2VyS2V5LmxvZ2dpbmdT
dHJpbmcoKSwgIiwgIiwgdXBwZXJLZXkubG9nZ2luZ1N0cmluZygpLCB1cHBlck9wZW4gPyAiICki
IDogIiBdIik7Ci0gICAgaWYgKHJlc3VsdC5sZW5ndGgoKSA+IDQwMCkgewotICAgICAgICByZXN1
bHQudHJ1bmNhdGUoMzk3KTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZCgiLi4uIl9zKTsKLSAgICB9
CisgICAgaWYgKHJlc3VsdC5sZW5ndGgoKSA+IDQwMCkKKyAgICAgICAgcmVzdWx0ID0gbWFrZVN0
cmluZyhTdHJpbmdWaWV3KHJlc3VsdCkubGVmdCgzOTcpLCAiLi4uIl9zKTsKIAogICAgIHJldHVy
biByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zaGFyZWQvSURCSW5kZXhJbmZvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NoYXJlZC9JREJJbmRleEluZm8uY3BwCmluZGV4IDdhYmE4MzFkNzAwZWE5OGZlYjJjYzlh
YTQ0Yzk2MmM0YjU5NDQ3YjkuLjYwNDU0ZDVmZTVhNjI1NzA4MzhiNTM3NTMwMWZhNzVkNGRlM2M4
OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9J
REJJbmRleEluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3No
YXJlZC9JREJJbmRleEluZm8uY3BwCkBAIC01OSwxMCArNTksMTAgQEAgSURCSW5kZXhJbmZvIElE
QkluZGV4SW5mbzo6aXNvbGF0ZWRDb3B5KCkgJiYKIAogU3RyaW5nIElEQkluZGV4SW5mbzo6bG9n
Z2luZ1N0cmluZyhpbnQgaW5kZW50KSBjb25zdAogewotICAgIFN0cmluZyBpbmRlbnRTdHJpbmc7
CisgICAgU3RyaW5nQnVpbGRlciBpbmRlbnRTdHJpbmc7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBpbmRlbnQ7ICsraSkKICAgICAgICAgaW5kZW50U3RyaW5nLmFwcGVuZCgnICcpOwotICAgIHJl
dHVybiBtYWtlU3RyaW5nKGluZGVudFN0cmluZywgIkluZGV4OiAiLCBtX25hbWUsICIgKCIsIG1f
aWRlbnRpZmllciwgIikga2V5UGF0aDogIiwgV2ViQ29yZTo6bG9nZ2luZ1N0cmluZyhtX2tleVBh
dGgpLCAnXG4nKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZyhpbmRlbnRTdHJpbmcudG9TdHJpbmco
KSwgIkluZGV4OiAiLCBtX25hbWUsICIgKCIsIG1faWRlbnRpZmllciwgIikga2V5UGF0aDogIiwg
V2ViQ29yZTo6bG9nZ2luZ1N0cmluZyhtX2tleVBhdGgpLCAnXG4nKTsKIH0KIAogU3RyaW5nIElE
QkluZGV4SW5mbzo6Y29uZGVuc2VkTG9nZ2luZ1N0cmluZygpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFj
a2VuZC5jcHAKaW5kZXggMWMwMzQ1N2VkZjg4N2Y3NTk5N2M0NDQ1ZjBkMzRiZmFkYTIxN2IwZC4u
NzVjMGEwOTc1MTg1MWUwZWYxMzllZjRjNDc1OTQ1M2M1ZjIyNDZjYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25C
YWNrZW5kLmNwcApAQCAtMjk5LDcgKzI5OSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRJ
Z25vcmVJY2VDYW5kaWRhdGUoY29uc3QgUlRDSWNlQ2FuZGlkYXRlJiBpY2VDYW5kaWRhdGUpCiAg
ICAgaWYgKCFhZGRyZXNzLmVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoIi5sb2NhbCIpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoIVdURjo6aXNWZXJzaW9uNFVVSUQoU3RyaW5n
VmlldyB7IGFkZHJlc3MgfS5zdWJzdHJpbmcoMCwgYWRkcmVzcy5sZW5ndGgoKSAtIDYpKSkgewor
ICAgIGlmICghV1RGOjppc1ZlcnNpb240VVVJRChTdHJpbmdWaWV3IHsgYWRkcmVzcyB9LmxlZnQo
YWRkcmVzcy5sZW5ndGgoKSAtIDYpKSkgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihXZWJS
VEMsICJtRE5TIGNhbmRpZGF0ZSBpcyBub3QgYSBWZXJzaW9uIDQgVVVJRCIpOwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ0RUTUZTZW5kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENEVE1GU2VuZGVyLmNwcAppbmRleCBhYzY2YzVlYWMzNzhjMjk3NjNhZTQyMzU1
ZmNiMzdlYjJmNDFiNWNlLi5hM2I2MWVjMGNlNWMwMTU0ZGI1OWZkNzcwNzM2ZmZiYTU0MTNjODll
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZT
ZW5kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRN
RlNlbmRlci5jcHAKQEAgLTEyNiw3ICsxMjYsNyBAQCB2b2lkIFJUQ0RUTUZTZW5kZXI6OnBsYXlO
ZXh0VG9uZSgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGN1cnJlbnRUb25l
ID0gbV90b25lcy5zdWJzdHJpbmcoMCwgMSk7CisgICAgYXV0byBjdXJyZW50VG9uZSA9IG1fdG9u
ZXMubGVmdCgxKTsKICAgICBtX3RvbmVzLnJlbW92ZSgwKTsKIAogICAgIG1fYmFja2VuZC0+cGxh
eVRvbmUoY3VycmVudFRvbmUsIG1fZHVyYXRpb24sIG1faW50ZXJUb25lR2FwKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1l
ck1lZGlhRW5kcG9pbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9n
c3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFFbmRwb2ludC5jcHAKaW5kZXggZTE2NDcwYjhhNDI5ZDNh
ODUyYzRkN2JiMWI2NWYxZWI0M2EwMjU3Zi4uMWY5YTdmNWNmMmEyMTRmZWI5MTQwZTRhMGU1MTI5
OTIxZmIyODU1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFFbmRwb2ludC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFFbmRwb2ludC5j
cHAKQEAgLTc0MCw3ICs3NDAsNyBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OmFkZFJl
bW90ZVN0cmVhbShHc3RQYWQqIHBhZCkKICAgICAgICAgYXV0byBpID0gbGluZS5maW5kKGtleSk7
CiAgICAgICAgIGlmIChpICE9IG5vdEZvdW5kKSB7CiAgICAgICAgICAgICBhdXRvIHRtcCA9IGxp
bmUuc3Vic3RyaW5nKGkgKyBrZXkuYXNjaWkoKS5sZW5ndGgoKSk7Ci0gICAgICAgICAgICBsYWJl
bCA9IHRtcC5zdWJzdHJpbmcoMCwgdG1wLmZpbmQoJyAnKSk7CisgICAgICAgICAgICBsYWJlbCA9
IHRtcC5sZWZ0KHRtcC5maW5kKCcgJykpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJC
YWNrZW5kLmNwcAppbmRleCA0MTc2ZThkNmY3ODNhNTI1YTgwZjdhNjBlYWRjNjdmNmJmZDcwMTZj
Li45NDkzN2YwNGRiOGMzYjRkZDViZDgxZjU0M2ZmMTAwZjRmN2ZlYjQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBU
cmFuc2NlaXZlckJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZC5jcHAKQEAgLTEw
MCw3ICsxMDAsNyBAQCBzdGF0aWMgaW5saW5lIEV4Y2VwdGlvbk9yPHdlYnJ0Yzo6UnRwQ29kZWND
YXBhYmlsaXR5PiB0b1J0cENvZGVjQ2FwYWJpbGl0eShjb25zdAogICAgICAgICBhdXRvIHBvc2l0
aW9uID0gcGFyYW1ldGVyLmZpbmQoJz0nKTsKICAgICAgICAgaWYgKHBvc2l0aW9uID09IG5vdEZv
dW5kKQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRNb2RpZmljYXRpb25F
cnJvciwgIlJUQ1J0cENvZGVjQ2FwYWJpbGl0eSBzZHBGbXRMaW5lIGJhZGx5IGZvcm1hdGVkIl9z
IH07Ci0gICAgICAgIHJ0Y0NvZGVjLnBhcmFtZXRlcnMuZW1wbGFjZShwYXJhbWV0ZXIuc3Vic3Ry
aW5nKDAsIHBvc2l0aW9uKS51dGY4KCkuZGF0YSgpLCBwYXJhbWV0ZXIuc3Vic3RyaW5nKHBvc2l0
aW9uICsgMSkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIHJ0Y0NvZGVjLnBhcmFtZXRlcnMuZW1w
bGFjZShwYXJhbWV0ZXIubGVmdChwb3NpdGlvbikudXRmOCgpLmRhdGEoKSwgcGFyYW1ldGVyLnN1
YnN0cmluZyhwb3NpdGlvbiArIDEpLnV0ZjgoKS5kYXRhKCkpOwogICAgIH0KIAogICAgIHJldHVy
biBydGNDb2RlYzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9Z
b3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVn
aW5zL1lvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAKaW5kZXggODU3YzljMjRiYjhkZTQ2MGUy
YzI3NWY5MmYzOGExMjBiMDIwM2M1ZS4uY2JhZjQ2ZjBlZTVmZTdlNDA5MDVhNDk2ZGFkODdlNGU5
ZmE5YWEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1lvdVR1
YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVn
aW5zL1lvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAKQEAgLTIyMiw3ICsyMjIsNyBAQCBzdGF0
aWMgVVJMIHByb2Nlc3NBbmRDcmVhdGVZb3VUdWJlVVJMKGNvbnN0IFVSTCYgdXJsLCBib29sJiBp
c1lvdVR1YmVTaG9ydGVuZWRVUgogICAgICAgICAgICAgcGF0aCA9IGZyYWdtZW50OwogICAgICAg
ICAgICAgcXVlcnkgPSBlbXB0eVN0cmluZygpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgcGF0aCA9IGZyYWdtZW50LnN1YnN0cmluZygwLCBsb2NhdGlvbik7CisgICAgICAgICAgICBw
YXRoID0gZnJhZ21lbnQubGVmdChsb2NhdGlvbik7CiAgICAgICAgICAgICBxdWVyeSA9IGZyYWdt
ZW50LnN1YnN0cmluZyhsb2NhdGlvbiArIDEpOwogICAgICAgICB9CiAgICAgICAgIGZyYWdtZW50
ID0gZW1wdHlTdHJpbmcoKTsKQEAgLTI2Miw3ICsyNjIsNyBAQCBzdGF0aWMgVVJMIHByb2Nlc3NB
bmRDcmVhdGVZb3VUdWJlVVJMKGNvbnN0IFVSTCYgdXJsLCBib29sJiBpc1lvdVR1YmVTaG9ydGVu
ZWRVUgogICAgICAgICBzaXplX3QgYW1wZXJzYW5kTG9jYXRpb24gPSBsYXN0UGF0aENvbXBvbmVu
dC5maW5kKCcmJyk7CiAgICAgICAgIGlmIChhbXBlcnNhbmRMb2NhdGlvbiAhPSBub3RGb3VuZCkg
ewogICAgICAgICAgICAgLy8gU29tZSBVUkxzIHdlIGNhcmUgYWJvdXQgdXNlICYgaW4gcGxhY2Ug
b2YgPyBmb3IgdGhlIGZpcnN0IHF1ZXJ5IHBhcmFtZXRlci4KLSAgICAgICAgICAgIHZpZGVvSUQg
PSBsYXN0UGF0aENvbXBvbmVudC5zdWJzdHJpbmcoMCwgYW1wZXJzYW5kTG9jYXRpb24pOworICAg
ICAgICAgICAgdmlkZW9JRCA9IGxhc3RQYXRoQ29tcG9uZW50LmxlZnQoYW1wZXJzYW5kTG9jYXRp
b24pOwogICAgICAgICAgICAgcGF0aEFmdGVyRmlyc3RBbXBlcnNhbmQgPSBsYXN0UGF0aENvbXBv
bmVudC5zdWJzdHJpbmcoYW1wZXJzYW5kTG9jYXRpb24gKyAxLCBsYXN0UGF0aENvbXBvbmVudC5s
ZW5ndGgoKSAtIGFtcGVyc2FuZExvY2F0aW9uKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAg
ICB2aWRlb0lEID0gbGFzdFBhdGhDb21wb25lbnQ7CkBAIC0zMDQsNyArMzA0LDcgQEAgU3RyaW5n
IFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudDo6eW91VHViZVVSTEZyb21BYnNvbHV0ZVVSTChjb25z
dCBVUkwmIHNyY1VSTCwgY28KICAgICAgICAgQVNTRVJUKGxvY2F0aW9uT2ZWaWRlb0lESW5QYXRo
KTsKICAgICAKICAgICAgICAgLy8gRnJvbSB0aGUgb3JpZ2luYWwgVVJMLCB3ZSBuZWVkIHRvIGdl
dCB0aGUgcGFydCBiZWZvcmUgL3BhdGgvVmlkZW9JZC4KLSAgICAgICAgbG9jYXRpb25PZlBhdGhC
ZWZvcmVWaWRlb0lEID0gU3RyaW5nVmlldyhzcmNTdHJpbmcpLmZpbmQoc3JjUGF0aC5zdWJzdHJp
bmcoMCwgbG9jYXRpb25PZlZpZGVvSURJblBhdGgpKTsKKyAgICAgICAgbG9jYXRpb25PZlBhdGhC
ZWZvcmVWaWRlb0lEID0gU3RyaW5nVmlldyhzcmNTdHJpbmcpLmZpbmQoc3JjUGF0aC5sZWZ0KGxv
Y2F0aW9uT2ZWaWRlb0lESW5QYXRoKSk7CiAgICAgfSBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZShzcmNQYXRoLCAiL3dhdGNoIikpIHsKICAgICAgICAgLy8gRnJvbSB0aGUg
b3JpZ2luYWwgVVJMLCB3ZSBuZWVkIHRvIGdldCB0aGUgcGFydCBiZWZvcmUgL3dhdGNoLyMhdj1W
aWRlb0lECiAgICAgICAgIC8vIEZJWE1FOiBTaG91bGRuJ3QgdGhpcyBiZSBBU0NJSSBjYXNlLWlu
c2Vuc2l0aXZlPwpAQCAtMzE0LDcgKzMxNCw3IEBAIFN0cmluZyBZb3VUdWJlUGx1Z2luUmVwbGFj
ZW1lbnQ6OnlvdVR1YmVVUkxGcm9tQWJzb2x1dGVVUkwoY29uc3QgVVJMJiBzcmNVUkwsIGNvCiAK
ICAgICBBU1NFUlQobG9jYXRpb25PZlBhdGhCZWZvcmVWaWRlb0lEICE9IG5vdEZvdW5kKTsKIAot
ICAgIGF1dG8gc3JjVVJMUHJlZml4ID0gU3RyaW5nVmlldyhzcmNTdHJpbmcpLnN1YnN0cmluZygw
LCBsb2NhdGlvbk9mUGF0aEJlZm9yZVZpZGVvSUQpOworICAgIGF1dG8gc3JjVVJMUHJlZml4ID0g
U3RyaW5nVmlldyhzcmNTdHJpbmcpLmxlZnQobG9jYXRpb25PZlBhdGhCZWZvcmVWaWRlb0lEKTsK
ICAgICBhdXRvIHF1ZXJ5ID0gc3JjVVJMLnF1ZXJ5KCk7CiAKICAgICAvLyBJZiB0aGUgVVJMIGhh
cyBubyBxdWVyeSwgdXNlIHRoZSBwb3NzaWJseSBtYWxmb3JtZWQgcXVlcnkgd2UgZm91bmQuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFu
ZHNoYWtlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRI
YW5kc2hha2UuY3BwCmluZGV4IGMzMDdhYzMzZTNhMWYwYzYxNzMwOWQwYzM4NThhMDRiN2Q5NTM5
MTMuLjk4YjU2OGNiMGVmMGQyMjdkNWRlYzZiYjVlZDJiZGUxYThjYmMyOTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hh
a2UuY3BwCkBAIC04MywxMyArODMsMTIgQEAgc3RhdGljIFN0cmluZyBob3N0TmFtZShjb25zdCBV
UkwmIHVybCwgYm9vbCBzZWN1cmUpCiAgICAgcmV0dXJuIGhvc3Q7CiB9CiAKLXN0YXRpYyBjb25z
dCBzaXplX3QgbWF4SW5wdXRTYW1wbGVTaXplID0gMTI4Owotc3RhdGljIFN0cmluZyB0cmltSW5w
dXRTYW1wbGUoY29uc3QgdWludDhfdCogcCwgc2l6ZV90IGxlbikKK3N0YXRpYyBjb25zdGV4cHIg
c2l6ZV90IG1heElucHV0U2FtcGxlU2l6ZSA9IDEyODsKK3N0YXRpYyBTdHJpbmcgdHJpbUlucHV0
U2FtcGxlKGNvbnN0IHVpbnQ4X3QqIHAsIHNpemVfdCBsZW5ndGgpCiB7Ci0gICAgU3RyaW5nIHMg
PSBTdHJpbmcocCwgc3RkOjptaW48c2l6ZV90PihsZW4sIG1heElucHV0U2FtcGxlU2l6ZSkpOwot
ICAgIGlmIChsZW4gPiBtYXhJbnB1dFNhbXBsZVNpemUpCi0gICAgICAgIHMuYXBwZW5kKGhvcml6
b250YWxFbGxpcHNpcyk7Ci0gICAgcmV0dXJuIHM7CisgICAgaWYgKGxlbmd0aCA8PSBtYXhJbnB1
dFNhbXBsZVNpemUpCisgICAgICAgIHJldHVybiBTdHJpbmcocCwgbGVuZ3RoKTsKKyAgICByZXR1
cm4gbWFrZVN0cmluZyhTdHJpbmdWaWV3KHAsIGxlbmd0aCkubGVmdChtYXhJbnB1dFNhbXBsZVNp
emUpLCBob3Jpem9udGFsRWxsaXBzaXMpOwogfQogCiBzdGF0aWMgU3RyaW5nIGdlbmVyYXRlU2Vj
V2ViU29ja2V0S2V5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAKaW5kZXggZGUyODUyMjYw
OGRmMWI5YWY5M2NkN2U5NGU4MzhkMzI0NTA3YmEwMC4uMWUxZjIzNTMwNzU2YTEwZTRiNDRjMTZh
ZWIxNTdhYWM0ZjE3ZTY4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAKQEAgLTM1NSwx
MiArMzU1LDEyIEBAIHZvaWQgQVhJc29sYXRlZE9iamVjdDo6aW5pdGlhbGl6ZUF0dHJpYnV0ZURh
dGEoQVhDb3JlT2JqZWN0JiBjb3JlT2JqZWN0LCBib29sIGlzCiAKICAgICBWZWN0b3I8U3RyaW5n
PiBjbGFzc0xpc3Q7CiAgICAgb2JqZWN0LmNsYXNzTGlzdChjbGFzc0xpc3QpOwotICAgIFN0cmlu
ZyBjb21iaW5lZENsYXNzTGlzdDsKKyAgICBTdHJpbmdCdWlsZGVyIGNvbWJpbmVkQ2xhc3NMaXN0
OwogICAgIGZvciAoYXV0byBpdCA9IGNsYXNzTGlzdC5iZWdpbigpLCBlbmQgPSBjbGFzc0xpc3Qu
ZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICBjb21iaW5lZENsYXNzTGlzdC5hcHBl
bmQoKml0KTsKLSAgICAgICAgY29tYmluZWRDbGFzc0xpc3QuYXBwZW5kKCIgIl9zKTsKKyAgICAg
ICAgY29tYmluZWRDbGFzc0xpc3QuYXBwZW5kKCcgJyk7CiAgICAgfQotICAgIHNldFByb3BlcnR5
KEFYUHJvcGVydHlOYW1lOjpDbGFzc0xpc3QsIGNvbWJpbmVkQ2xhc3NMaXN0KTsKKyAgICBzZXRQ
cm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6Q2xhc3NMaXN0LCBjb21iaW5lZENsYXNzTGlzdC50b1N0
cmluZygpKTsKIAogICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpDb2xvclZhbHVlLCBv
YmplY3QuY29sb3JWYWx1ZSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZGlzcGxh
eS9jc3MvRGlzcGxheVRleHRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlz
cGxheVRleHRCb3guY3BwCmluZGV4IGU1ODBjMzRiODgxZWE0ODEyYTI1MmMxMDY1MzhkMzI5NTEy
MjA0MjAuLjVjYTgyMjM1NmQ1M2JmZmFkZTVhZTE0ZWU1NzY1YTVlN2I1NTJlMmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlUZXh0Qm94LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5VGV4dEJveC5jcHAKQEAgLTU4LDcgKzU4
LDcgQEAgU3RyaW5nIFRleHRCb3g6OmRlYnVnRGVzY3JpcHRpb24oKSBjb25zdAogICAgIHRleHRD
b250ZW50LnJlcGxhY2VXaXRoTGl0ZXJhbCgnXG4nLCAiXFxuIik7CiAgICAgY29uc3Qgc2l6ZV90
IG1heFByaW50ZWRMZW5ndGggPSA4MDsKICAgICBpZiAodGV4dENvbnRlbnQubGVuZ3RoKCkgPiBt
YXhQcmludGVkTGVuZ3RoKSB7Ci0gICAgICAgIGF1dG8gc3Vic3RyaW5nID0gdGV4dENvbnRlbnQu
c3Vic3RyaW5nKDAsIG1heFByaW50ZWRMZW5ndGgpOworICAgICAgICBhdXRvIHN1YnN0cmluZyA9
IHRleHRDb250ZW50LmxlZnQobWF4UHJpbnRlZExlbmd0aCk7CiAgICAgICAgIHN0cmVhbSA8PCAi
IFwiIiA8PCBzdWJzdHJpbmcgPDwgIlwi4oCmIjsKICAgICB9IGVsc2UKICAgICAgICAgc3RyZWFt
IDw8ICIgXCIiIDw8IHRleHRDb250ZW50IDw8ICJcIiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVy
RGF0YS5jcHAKaW5kZXggM2M2NDA4Yzg2ZTRiYzA2OGQzMTIzZjkwN2QxNTk1ZjFlMzM3MzgyZS4u
OTc1NTJlYWYxMmVjNDQwZDk5YjhkMmJjOTg1YzZhYjc5ZGNmOGFhZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9DaGFyYWN0ZXJEYXRhLmNwcApAQCAtMTEzLDEwICsxMTMsNyBAQCB1bnNpZ25lZCBDaGFyYWN0
ZXJEYXRhOjpwYXJzZXJBcHBlbmREYXRhKGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25lZCBv
ZmZzZXQsCiAgICAgICAgIHN0eWxlSW52YWxpZGF0aW9uLmVtcGxhY2UoKnBhcmVudCwgY2hpbGRD
aGFuZ2UpOwogCiAgICAgU3RyaW5nIG9sZERhdGEgPSBtX2RhdGE7Ci0gICAgaWYgKHN0cmluZy5p
czhCaXQoKSkKLSAgICAgICAgbV9kYXRhLmFwcGVuZChzdHJpbmcuY2hhcmFjdGVyczgoKSArIG9m
ZnNldCwgY2hhcmFjdGVyTGVuZ3RoTGltaXQpOwotICAgIGVsc2UKLSAgICAgICAgbV9kYXRhLmFw
cGVuZChzdHJpbmcuY2hhcmFjdGVyczE2KCkgKyBvZmZzZXQsIGNoYXJhY3Rlckxlbmd0aExpbWl0
KTsKKyAgICBtX2RhdGEgPSBtYWtlU3RyaW5nKG1fZGF0YSwgU3RyaW5nVmlldyhzdHJpbmcpLnN1
YnN0cmluZyhvZmZzZXQsIGNoYXJhY3Rlckxlbmd0aExpbWl0KSk7CiAKICAgICBBU1NFUlQoIXJl
bmRlcmVyKCkgfHwgaXM8VGV4dD4oKnRoaXMpKTsKICAgICBpZiAoYXV0byB0ZXh0ID0gZHluYW1p
Y0Rvd25jYXN0PFRleHQ+KCp0aGlzKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDM4MDFi
ZWQzY2YyMjViYWIxODJhYmNhOTNmYjk3MWU4YmQ5NjY0ZTIuLjIxZWZjZGM1Y2Q0ZTNiMTYwN2Qx
NDAzMzA5Yjg0YzNhOWRhZmM0NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNTU2OSw3
ICs1NTY5LDcgQEAgRXhjZXB0aW9uT3I8c3RkOjpwYWlyPEF0b21TdHJpbmcsIEF0b21TdHJpbmc+
PiBEb2N1bWVudDo6cGFyc2VRdWFsaWZpZWROYW1lKGNvbnMKICAgICBpZiAoIWNvbG9uUG9zaXRp
b24gfHwgbGVuZ3RoIC0gY29sb25Qb3NpdGlvbiA8PSAxKQogICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgSW52YWxpZENoYXJhY3RlckVycm9yIH07CiAKLSAgICByZXR1cm4gc3RkOjpwYWlyPEF0
b21TdHJpbmcsIEF0b21TdHJpbmc+IHsgU3RyaW5nVmlldyB7IHF1YWxpZmllZE5hbWUgfS5zdWJz
dHJpbmcoMCwgY29sb25Qb3NpdGlvbikudG9BdG9tU3RyaW5nKCksIFN0cmluZ1ZpZXcgeyBxdWFs
aWZpZWROYW1lIH0uc3Vic3RyaW5nKGNvbG9uUG9zaXRpb24gKyAxKS50b0F0b21TdHJpbmcoKSB9
OworICAgIHJldHVybiBzdGQ6OnBhaXI8QXRvbVN0cmluZywgQXRvbVN0cmluZz4geyBTdHJpbmdW
aWV3IHsgcXVhbGlmaWVkTmFtZSB9LmxlZnQoY29sb25Qb3NpdGlvbikudG9BdG9tU3RyaW5nKCks
IFN0cmluZ1ZpZXcgeyBxdWFsaWZpZWROYW1lIH0uc3Vic3RyaW5nKGNvbG9uUG9zaXRpb24gKyAx
KS50b0F0b21TdHJpbmcoKSB9OwogfQogCiBFeGNlcHRpb25PcjxRdWFsaWZpZWROYW1lPiBEb2N1
bWVudDo6cGFyc2VRdWFsaWZpZWROYW1lKGNvbnN0IEF0b21TdHJpbmcmIG5hbWVzcGFjZVVSSSwg
Y29uc3QgU3RyaW5nJiBxdWFsaWZpZWROYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuY3BwCmluZGV4IDY4YTZmYmIz
NTg0NDE0NDFhMmIxMWI1OGZjNmYxOTQyOWYxZjBlZWEuLjRiOTAzZjhmZGYyYmFkOTM5ZGRhYmE4
MGNkZTg4MDU0NDEyOTc2ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgRXhj
ZXB0aW9uT3I8UmVmPFRleHQ+PiBUZXh0OjpzcGxpdFRleHQodW5zaWduZWQgb2Zmc2V0KQogICAg
IEV2ZW50UXVldWVTY29wZSBzY29wZTsKICAgICBhdXRvIG9sZERhdGEgPSBkYXRhKCk7CiAgICAg
YXV0byBuZXdUZXh0ID0gdmlydHVhbENyZWF0ZShvbGREYXRhLnN1YnN0cmluZyhvZmZzZXQpKTsK
LSAgICBzZXREYXRhV2l0aG91dFVwZGF0ZShvbGREYXRhLnN1YnN0cmluZygwLCBvZmZzZXQpKTsK
KyAgICBzZXREYXRhV2l0aG91dFVwZGF0ZShvbGREYXRhLmxlZnQob2Zmc2V0KSk7CiAKICAgICBk
aXNwYXRjaE1vZGlmaWVkRXZlbnQob2xkRGF0YSk7CiAKQEAgLTIzMSwxMyArMjMxLDExIEBAIHN0
YXRpYyB2b2lkIGFwcGVuZFRleHRSZXByZXNlbnRhdGlvbihTdHJpbmdCdWlsZGVyJiBidWlsZGVy
LCBjb25zdCBUZXh0JiB0ZXh0KQogICAgIHZhbHVlLnJlcGxhY2VXaXRoTGl0ZXJhbCgnXFwnLCAi
XFxcXCIpOwogICAgIHZhbHVlLnJlcGxhY2VXaXRoTGl0ZXJhbCgnXG4nLCAiXFxuIik7CiAgICAg
Ci0gICAgY29uc3Qgc2l6ZV90IG1heER1bXBMZW5ndGggPSAzMDsKLSAgICBpZiAodmFsdWUubGVu
Z3RoKCkgPiBtYXhEdW1wTGVuZ3RoKSB7Ci0gICAgICAgIHZhbHVlLnRydW5jYXRlKG1heER1bXBM
ZW5ndGggLSAxMCk7Ci0gICAgICAgIHZhbHVlLmFwcGVuZCgiLi4uIl9zKTsKLSAgICB9Ci0KLSAg
ICBidWlsZGVyLmFwcGVuZCgiIFwiIiwgdmFsdWUsICdcIicpOworICAgIGNvbnN0ZXhwciBzaXpl
X3QgbWF4RHVtcExlbmd0aCA9IDMwOworICAgIGlmICh2YWx1ZS5sZW5ndGgoKSA+IG1heER1bXBM
ZW5ndGgpCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIgXCIiLCBTdHJpbmdWaWV3KHZhbHVlKS5s
ZWZ0KG1heER1bXBMZW5ndGggLSAxMCksICIuLi5cIiIpOworICAgIGVsc2UKKyAgICAgICAgYnVp
bGRlci5hcHBlbmQoIiBcIiIsIHZhbHVlLCAnXCInKTsKIH0KIAogU3RyaW5nIFRleHQ6OmRlc2Ny
aXB0aW9uKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9WaWV3cG9ydEFy
Z3VtZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuY3BwCmlu
ZGV4IDUyNWRlZThkMTQwMDY4MmUyZTEwZmRhNTNhN2NlMjY4YTUxMzdmNGIuLmNiNDAxMmJjYjQx
NDA4YTQ2YzRhMWExM2Q5YjI4ODFmNzllODViNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1ZpZXdw
b3J0QXJndW1lbnRzLmNwcApAQCAtNDMzLDcgKzQzMyw3IEBAIHN0YXRpYyBTdHJpbmcgdmlld3Bv
cnRFcnJvck1lc3NhZ2UoVmlld3BvcnRFcnJvckNvZGUgZXJyb3JDb2RlLCBTdHJpbmdWaWV3IHJl
cGxhCiAgICAgICAgIG1lc3NhZ2UucmVwbGFjZSgiJXJlcGxhY2VtZW50MiIsIHJlcGxhY2VtZW50
Mik7CiAKICAgICBpZiAoKGVycm9yQ29kZSA9PSBVbnJlY29nbml6ZWRWaWV3cG9ydEFyZ3VtZW50
VmFsdWVFcnJvciB8fCBlcnJvckNvZGUgPT0gVHJ1bmNhdGVkVmlld3BvcnRBcmd1bWVudFZhbHVl
RXJyb3IpICYmIHJlcGxhY2VtZW50MS5jb250YWlucygnOycpKQotICAgICAgICBtZXNzYWdlLmFw
cGVuZCgiIE5vdGUgdGhhdCAnOycgaXMgbm90IGEgc2VwYXJhdG9yIGluIHZpZXdwb3J0IHZhbHVl
cy4gVGhlIGxpc3Qgc2hvdWxkIGJlIGNvbW1hLXNlcGFyYXRlZC4iX3MpOworICAgICAgICBtZXNz
YWdlID0gbWFrZVN0cmluZyhtZXNzYWdlLCAiIE5vdGUgdGhhdCAnOycgaXMgbm90IGEgc2VwYXJh
dG9yIGluIHZpZXdwb3J0IHZhbHVlcy4gVGhlIGxpc3Qgc2hvdWxkIGJlIGNvbW1hLXNlcGFyYXRl
ZC4iX3MpOwogCiAgICAgcmV0dXJuIG1lc3NhZ2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAKaW5kZXggODBhODc4NmNmMzg3NWEzMzQ0NWZiMTQ2
N2ViZDQ2YzI3NDIxYTg0Mi4uMzE4MzQ0MWM4NTI2YTBjZGJlZTM5MGVjZDNmYjM5OTc2ZTdmZWQ0
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcApA
QCAtNTgyLDcgKzU4Miw3IEBAIHZvaWQgY2hlY2tUZXh0T2ZQYXJhZ3JhcGgoVGV4dENoZWNrZXJD
bGllbnQmIGNsaWVudCwgU3RyaW5nVmlldyB0ZXh0LCBPcHRpb25TZXQ8CiAgICAgICAgIHVuc2ln
bmVkIGdyYW1tYXJDaGVja0xlbmd0aCA9IHRleHQubGVuZ3RoKCk7CiAgICAgICAgIGZvciAoYXV0
byYgbWlzc3BlbGxpbmcgOiBtaXNzcGVsbGluZ3MpCiAgICAgICAgICAgICBncmFtbWFyQ2hlY2tM
ZW5ndGggPSBzdGQ6Om1pbjx1bnNpZ25lZD4oZ3JhbW1hckNoZWNrTGVuZ3RoLCBtaXNzcGVsbGlu
Zy5yYW5nZS5sb2NhdGlvbik7Ci0gICAgICAgIGZpbmRHcmFtbWF0aWNhbEVycm9ycyhjbGllbnQs
IHRleHQuc3Vic3RyaW5nKDAsIGdyYW1tYXJDaGVja0xlbmd0aCksIGdyYW1tYXRpY2FsRXJyb3Jz
KTsKKyAgICAgICAgZmluZEdyYW1tYXRpY2FsRXJyb3JzKGNsaWVudCwgdGV4dC5sZWZ0KGdyYW1t
YXJDaGVja0xlbmd0aCksIGdyYW1tYXRpY2FsRXJyb3JzKTsKICAgICB9CiAKICAgICByZXN1bHRz
ID0gV1RGTW92ZShncmFtbWF0aWNhbEVycm9ycyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJ
dGVyYXRvci5jcHAKaW5kZXggZTFhODkyNWU5ZmViOWNiZmIzZDU3ZWZmOTc5NzlkZTJlZjU4NmY4
OC4uYmZhMjJlM2ZlYTM5NTZjMDhmYjFlMmI0MGEwODdkMWMyNWVhNzQ3OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcApAQCAtMjAzMCw3ICsyMDMwLDcgQEAgaW5saW5l
IHZvaWQgU2VhcmNoQnVmZmVyOjpwcmVwZW5kQ29udGV4dChTdHJpbmdWaWV3IHRleHQpCiAgICAg
c2l6ZV90IHdvcmRCb3VuZGFyeUNvbnRleHRTdGFydCA9IHRleHQubGVuZ3RoKCk7CiAgICAgaWYg
KHdvcmRCb3VuZGFyeUNvbnRleHRTdGFydCkgewogICAgICAgICBVMTZfQkFDS18xKHRleHQsIDAs
IHdvcmRCb3VuZGFyeUNvbnRleHRTdGFydCk7Ci0gICAgICAgIHdvcmRCb3VuZGFyeUNvbnRleHRT
dGFydCA9IHN0YXJ0T2ZMYXN0V29yZEJvdW5kYXJ5Q29udGV4dCh0ZXh0LnN1YnN0cmluZygwLCB3
b3JkQm91bmRhcnlDb250ZXh0U3RhcnQpKTsKKyAgICAgICAgd29yZEJvdW5kYXJ5Q29udGV4dFN0
YXJ0ID0gc3RhcnRPZkxhc3RXb3JkQm91bmRhcnlDb250ZXh0KHRleHQubGVmdCh3b3JkQm91bmRh
cnlDb250ZXh0U3RhcnQpKTsKICAgICB9CiAKICAgICBzaXplX3QgdXNhYmxlTGVuZ3RoID0gc3Rk
OjptaW4obV9idWZmZXIuY2FwYWNpdHkoKSAtIG1fcHJlZml4TGVuZ3RoLCB0ZXh0Lmxlbmd0aCgp
IC0gd29yZEJvdW5kYXJ5Q29udGV4dFN0YXJ0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJs
ZVVuaXRzLmNwcAppbmRleCA0NTE4YWQ0MzkzMWM4NTI1YjhlZmYyMGM0MDliZDI2M2M4MDcyZWZk
Li41YmVjODcxNDA1MThiODM0MGM4NmFkNzQ5NGZmY2VhZDg3YWNiNjQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCkBAIC00NTAsNyArNDUwLDcgQEAgdW5zaWduZWQg
c3VmZml4TGVuZ3RoRm9yUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmIGZvcndhcmRzU2NhblJhbmdl
LCBWZWN0b3I8VUNoYXIKICAgICB3aGlsZSAoIWZvcndhcmRzSXRlcmF0b3IuYXRFbmQoKSkgewog
ICAgICAgICBTdHJpbmdWaWV3IHRleHQgPSBmb3J3YXJkc0l0ZXJhdG9yLnRleHQoKTsKICAgICAg
ICAgdW5zaWduZWQgaSA9IGVuZE9mRmlyc3RXb3JkQm91bmRhcnlDb250ZXh0KHRleHQpOwotICAg
ICAgICBhcHBlbmQoc3RyaW5nLCB0ZXh0LnN1YnN0cmluZygwLCBpKSk7CisgICAgICAgIGFwcGVu
ZChzdHJpbmcsIHRleHQubGVmdChpKSk7CiAgICAgICAgIHN1ZmZpeExlbmd0aCArPSBpOwogICAg
ICAgICBpZiAoaSA8IHRleHQubGVuZ3RoKCkpCiAgICAgICAgICAgICBicmVhazsKQEAgLTYzOCw3
ICs2MzgsNyBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIG5leHRCb3VuZGFyeShjb25zdCBWaXNp
YmxlUG9zaXRpb24mIGMsIEJvdW5kYXJ5U2VhcmNoRnVuYwogdW5zaWduZWQgc3RhcnRXb3JkQm91
bmRhcnkoU3RyaW5nVmlldyB0ZXh0LCB1bnNpZ25lZCBvZmZzZXQsIEJvdW5kYXJ5U2VhcmNoQ29u
dGV4dEF2YWlsYWJpbGl0eSBtYXlIYXZlTW9yZUNvbnRleHQsIGJvb2wmIG5lZWRNb3JlQ29udGV4
dCkKIHsKICAgICBBU1NFUlQob2Zmc2V0KTsKLSAgICBpZiAobWF5SGF2ZU1vcmVDb250ZXh0ICYm
ICFzdGFydE9mTGFzdFdvcmRCb3VuZGFyeUNvbnRleHQodGV4dC5zdWJzdHJpbmcoMCwgb2Zmc2V0
KSkpIHsKKyAgICBpZiAobWF5SGF2ZU1vcmVDb250ZXh0ICYmICFzdGFydE9mTGFzdFdvcmRCb3Vu
ZGFyeUNvbnRleHQodGV4dC5sZWZ0KG9mZnNldCkpKSB7CiAgICAgICAgIG5lZWRNb3JlQ29udGV4
dCA9IHRydWU7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KQEAgLTY5Nyw3ICs2OTcsNyBAQCBW
aXNpYmxlUG9zaXRpb24gZW5kT2ZXb3JkKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYywgRVdvcmRT
aWRlIHNpZGUpCiAKIHN0YXRpYyB1bnNpZ25lZCBwcmV2aW91c1dvcmRQb3NpdGlvbkJvdW5kYXJ5
KFN0cmluZ1ZpZXcgdGV4dCwgdW5zaWduZWQgb2Zmc2V0LCBCb3VuZGFyeVNlYXJjaENvbnRleHRB
dmFpbGFiaWxpdHkgbWF5SGF2ZU1vcmVDb250ZXh0LCBib29sJiBuZWVkTW9yZUNvbnRleHQpCiB7
Ci0gICAgaWYgKG1heUhhdmVNb3JlQ29udGV4dCAmJiAhc3RhcnRPZkxhc3RXb3JkQm91bmRhcnlD
b250ZXh0KHRleHQuc3Vic3RyaW5nKDAsIG9mZnNldCkpKSB7CisgICAgaWYgKG1heUhhdmVNb3Jl
Q29udGV4dCAmJiAhc3RhcnRPZkxhc3RXb3JkQm91bmRhcnlDb250ZXh0KHRleHQubGVmdChvZmZz
ZXQpKSkgewogICAgICAgICBuZWVkTW9yZUNvbnRleHQgPSB0cnVlOwogICAgICAgICByZXR1cm4g
MDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFE
ZXRlY3Rpb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24u
bW0KaW5kZXggZWZlYzU3MmVkYjI4MGVlMWYzYTczNGUxN2YxZDZhYTAyODU5YjRkMC4uZDYzYmI5
YTJhZjUyNjJmMGUxNDcyMTU3YTQ2YjM0MzJlODBlNjdhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQpAQCAtNTc5LDcgKzU3OSw3IEBAIE5TQXJy
YXkgKkRhdGFEZXRlY3Rpb246OmRldGVjdENvbnRlbnRJblJhbmdlKGNvbnN0IFNpbXBsZVJhbmdl
JiBjb250ZXh0UmFuZ2UsIE9wCiAgICAgICAgICAgICAgICAgICAgIGxhc3RUZXh0Tm9kZVRvVXBk
YXRlLT5zZXREYXRhKGxhc3ROb2RlQ29udGVudCk7CiAgICAgICAgICAgICAgICAgY29udGVudE9m
ZnNldCA9IDA7CiAgICAgICAgICAgICAgICAgaWYgKHJhbmdlLnN0YXJ0Lm9mZnNldCA+IDApCi0g
ICAgICAgICAgICAgICAgICAgIHRleHROb2RlRGF0YSA9IGN1cnJlbnRUZXh0Tm9kZS5kYXRhKCku
c3Vic3RyaW5nKDAsIHJhbmdlLnN0YXJ0Lm9mZnNldCk7CisgICAgICAgICAgICAgICAgICAgIHRl
eHROb2RlRGF0YSA9IGN1cnJlbnRUZXh0Tm9kZS5kYXRhKCkubGVmdChyYW5nZS5zdGFydC5vZmZz
ZXQpOwogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgdGV4dE5vZGVEYXRhID0g
Y3VycmVudFRleHROb2RlLmRhdGEoKS5zdWJzdHJpbmcoY29udGVudE9mZnNldCwgcmFuZ2Uuc3Rh
cnQub2Zmc2V0IC0gY29udGVudE9mZnNldCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvbWFya3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcApp
bmRleCA3ZTU5NTJiN2E5NjI4NzA3MGU4MDM3OThkNTlkOGZjMmY3YjM5YjliLi5iNGM5NjRkMjFh
MDQzZWM3YWI5NzkwNWJhY2U2NzQxOTBhOTU2ZjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL21hcmt1cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAu
Y3BwCkBAIC05OTUsNyArOTk1LDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkUHJlc2VydmVNU09MaXN0
cyhTdHJpbmdWaWV3IG1hcmt1cCkKICAgICBhdXRvIHRhZ0Nsb3NlID0gbWFya3VwLmZpbmQoJz4n
KTsKICAgICBpZiAodGFnQ2xvc2UgPT0gbm90Rm91bmQpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICBhdXRvIHRhZyA9IG1hcmt1cC5zdWJzdHJpbmcoMCwgdGFnQ2xvc2UpOworICAgIGF1dG8g
dGFnID0gbWFya3VwLmxlZnQodGFnQ2xvc2UpOwogICAgIHJldHVybiB0YWcuY29udGFpbnMoInht
bG5zOm89XCJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOm9mZmljZTpvZmZpY2VcIiIpCiAgICAg
ICAgICYmIHRhZy5jb250YWlucygieG1sbnM6dz1cInVybjpzY2hlbWFzLW1pY3Jvc29mdC1jb206
b2ZmaWNlOndvcmRcIiIpOwogfQpAQCAtMTEwMyw3ICsxMTAzLDcgQEAgc3RhdGljIHZvaWQgZmls
bENvbnRhaW5lckZyb21TdHJpbmcoQ29udGFpbmVyTm9kZSYgcGFyYWdyYXBoLCBjb25zdCBTdHJp
bmcmIHN0cmkKICAgICBBU1NFUlQoc3RyaW5nLmZpbmQoJ1xuJykgPT0gbm90Rm91bmQpOwogCiAg
ICAgVmVjdG9yPFN0cmluZz4gdGFiTGlzdCA9IHN0cmluZy5zcGxpdEFsbG93aW5nRW1wdHlFbnRy
aWVzKCdcdCcpOwotICAgIFN0cmluZyB0YWJUZXh0ID0gZW1wdHlTdHJpbmcoKTsKKyAgICBTdHJp
bmdCdWlsZGVyIHRhYlRleHQ7CiAgICAgYm9vbCBmaXJzdCA9IHRydWU7CiAgICAgc2l6ZV90IG51
bUVudHJpZXMgPSB0YWJMaXN0LnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51
bUVudHJpZXM7ICsraSkgewpAQCAtMTExMiw4ICsxMTEyLDggQEAgc3RhdGljIHZvaWQgZmlsbENv
bnRhaW5lckZyb21TdHJpbmcoQ29udGFpbmVyTm9kZSYgcGFyYWdyYXBoLCBjb25zdCBTdHJpbmcm
IHN0cmkKICAgICAgICAgLy8gYXBwZW5kIHRoZSBub24tdGFiIHRleHR1YWwgcGFydAogICAgICAg
ICBpZiAoIXMuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBpZiAoIXRhYlRleHQuaXNFbXB0eSgp
KSB7Ci0gICAgICAgICAgICAgICAgcGFyYWdyYXBoLmFwcGVuZENoaWxkKGNyZWF0ZVRhYlNwYW5F
bGVtZW50KGRvY3VtZW50LCB0YWJUZXh0KSk7Ci0gICAgICAgICAgICAgICAgdGFiVGV4dCA9IGVt
cHR5U3RyaW5nKCk7CisgICAgICAgICAgICAgICAgcGFyYWdyYXBoLmFwcGVuZENoaWxkKGNyZWF0
ZVRhYlNwYW5FbGVtZW50KGRvY3VtZW50LCB0YWJUZXh0LnRvU3RyaW5nKCkpKTsKKyAgICAgICAg
ICAgICAgICB0YWJUZXh0LmNsZWFyKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBSZWY8
Tm9kZT4gdGV4dE5vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShzdHJpbmdXaXRoUmViYWxh
bmNlZFdoaXRlc3BhY2UocywgZmlyc3QsIGkgKyAxID09IG51bUVudHJpZXMpKTsKICAgICAgICAg
ICAgIHBhcmFncmFwaC5hcHBlbmRDaGlsZCh0ZXh0Tm9kZSk7CkBAIC0xMTI0LDcgKzExMjQsNyBA
QCBzdGF0aWMgdm9pZCBmaWxsQ29udGFpbmVyRnJvbVN0cmluZyhDb250YWluZXJOb2RlJiBwYXJh
Z3JhcGgsIGNvbnN0IFN0cmluZyYgc3RyaQogICAgICAgICBpZiAoaSArIDEgIT0gbnVtRW50cmll
cykKICAgICAgICAgICAgIHRhYlRleHQuYXBwZW5kKCdcdCcpOwogICAgICAgICBlbHNlIGlmICgh
dGFiVGV4dC5pc0VtcHR5KCkpCi0gICAgICAgICAgICBwYXJhZ3JhcGguYXBwZW5kQ2hpbGQoY3Jl
YXRlVGFiU3BhbkVsZW1lbnQoZG9jdW1lbnQsIHRhYlRleHQpKTsKKyAgICAgICAgICAgIHBhcmFn
cmFwaC5hcHBlbmRDaGlsZChjcmVhdGVUYWJTcGFuRWxlbWVudChkb2N1bWVudCwgdGFiVGV4dC50
b1N0cmluZygpKSk7CiAKICAgICAgICAgZmlyc3QgPSBmYWxzZTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCmluZGV4IDdjMjJkZDU3MWY2YmMz
MmIyM2ZiYmI1Y2IwMTlmZmI5Yzc3MzFjNmQuLjE1NjI4ZDk1OWZiYmEyZWM3Yjg1NGQzNmU2OTAx
MWIxMmU2M2YzZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5
RG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1l
bnQuY3BwCkBAIC05Myw3ICs5Myw3IEBAIHByaXZhdGU6CiAgICAgaW50IG1fc2l6ZSB7IDI1NCB9
OwogICAgIFVDaGFyKiBtX2J1ZmZlcjsKICAgICBVQ2hhciogbV9kZXN0OwotICAgIFN0cmluZyBt
X2NhcnJ5T3ZlcjsKKyAgICBTdHJpbmdCdWlsZGVyIG1fY2FycnlPdmVyOwogICAgIAogICAgIExp
c3RTdGF0ZSBtX2xpc3RTdGF0ZTsKIH07CkBAIC0yNjIsMTQgKzI2MiwxNSBAQCB2b2lkIEZUUERp
cmVjdG9yeURvY3VtZW50UGFyc2VyOjpwYXJzZUFuZEFwcGVuZE9uZUxpbmUoY29uc3QgU3RyaW5n
JiBpbnB1dExpbmUpCiAgICAgaWYgKHR5cGVSZXN1bHQgPT0gRlRQTWlzY0VudHJ5IHx8IHR5cGVS
ZXN1bHQgPT0gRlRQSnVua0VudHJ5KQogICAgICAgICByZXR1cm47CiAKLSAgICBTdHJpbmcgZmls
ZW5hbWUocmVzdWx0LmZpbGVuYW1lLCByZXN1bHQuZmlsZW5hbWVMZW5ndGgpOworICAgIFN0cmlu
ZyBmaWxlbmFtZTsKICAgICBpZiAocmVzdWx0LnR5cGUgPT0gRlRQRGlyZWN0b3J5RW50cnkpIHsK
LSAgICAgICAgZmlsZW5hbWUuYXBwZW5kKCcvJyk7CisgICAgICAgIGZpbGVuYW1lID0gbWFrZVN0
cmluZyhTdHJpbmdWaWV3IHsgcmVzdWx0LmZpbGVuYW1lLCByZXN1bHQuZmlsZW5hbWVMZW5ndGgg
fSwgJy8nKTsKIAogICAgICAgICAvLyBXZSBoYXZlIG5vIGludGVyZXN0IGluIGxpbmtpbmcgdG8g
ImN1cnJlbnQgZGlyZWN0b3J5IgogICAgICAgICBpZiAoZmlsZW5hbWUgPT0gIi4vIikKICAgICAg
ICAgICAgIHJldHVybjsKLSAgICB9CisgICAgfSBlbHNlCisgICAgICAgIGZpbGVuYW1lID0gU3Ry
aW5nKHJlc3VsdC5maWxlbmFtZSwgcmVzdWx0LmZpbGVuYW1lTGVuZ3RoKTsKIAogICAgIExPRyhG
VFAsICJBcHBlbmRpbmcgZW50cnkgLSAlcywgJXMiLCBmaWxlbmFtZS5hc2NpaSgpLmRhdGEoKSwg
cmVzdWx0LmZpbGVTaXplLmFzY2lpKCkuZGF0YSgpKTsKIApAQCAtMzg4LDEwICszODksMTAgQEAg
dm9pZCBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6YXBwZW5kKFJlZlB0cjxTdHJpbmdJbXBs
PiYmIGlucHV0U291cmNlKQogCiAgICAgd2hpbGUgKGN1cnNvciA8IG1fZGVzdCkgewogICAgICAg
ICBpZiAoKmN1cnNvciA9PSAnXG4nKSB7Ci0gICAgICAgICAgICBtX2NhcnJ5T3Zlci5hcHBlbmQo
U3RyaW5nKHN0YXJ0LCBjdXJzb3IgLSBzdGFydCkpOwotICAgICAgICAgICAgTE9HKEZUUCwgIiVz
IiwgbV9jYXJyeU92ZXIuYXNjaWkoKS5kYXRhKCkpOwotICAgICAgICAgICAgcGFyc2VBbmRBcHBl
bmRPbmVMaW5lKG1fY2FycnlPdmVyKTsKLSAgICAgICAgICAgIG1fY2FycnlPdmVyID0gU3RyaW5n
KCk7CisgICAgICAgICAgICBtX2NhcnJ5T3Zlci5hcHBlbmQoU3RyaW5nVmlldyhzdGFydCwgY3Vy
c29yIC0gc3RhcnQpKTsKKyAgICAgICAgICAgIExPRyhGVFAsICIlcyIsIG1fY2FycnlPdmVyLnRv
U3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICAgICAgcGFyc2VBbmRBcHBlbmRPbmVM
aW5lKG1fY2FycnlPdmVyLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgbV9jYXJyeU92ZXIuY2xl
YXIoKTsKIAogICAgICAgICAgICAgc3RhcnQgPSArK2N1cnNvcjsKICAgICAgICAgfSBlbHNlIApA
QCAtNDAwLDE1ICs0MDEsMTUgQEAgdm9pZCBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6YXBw
ZW5kKFJlZlB0cjxTdHJpbmdJbXBsPiYmIGlucHV0U291cmNlKQogCiAgICAgLy8gQ29weSB0aGUg
cGFydGlhbCBsaW5lIHdlIGhhdmUgbGVmdCB0byB0aGUgY2FycnlvdmVyIGJ1ZmZlcgogICAgIGlm
IChjdXJzb3IgLSBzdGFydCA+IDEpCi0gICAgICAgIG1fY2FycnlPdmVyLmFwcGVuZChTdHJpbmco
c3RhcnQsIGN1cnNvciAtIHN0YXJ0IC0gMSkpOworICAgICAgICBtX2NhcnJ5T3Zlci5hcHBlbmQo
U3RyaW5nVmlldyhzdGFydCwgY3Vyc29yIC0gc3RhcnQgLSAxKSk7CiB9CiAKIHZvaWQgRlRQRGly
ZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmZpbmlzaCgpCiB7CiAgICAgLy8gUG9zc2libGUgdGhlIGxh
c3QgbGluZSBpbiB0aGUgbGlzdGluZyBoYWQgbm8gbmV3bGluZSwgc28gdHJ5IHRvIHBhcnNlIGl0
IG5vdwogICAgIGlmICghbV9jYXJyeU92ZXIuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHBhcnNlQW5k
QXBwZW5kT25lTGluZShtX2NhcnJ5T3Zlcik7Ci0gICAgICAgIG1fY2FycnlPdmVyID0gU3RyaW5n
KCk7CisgICAgICAgIHBhcnNlQW5kQXBwZW5kT25lTGluZShtX2NhcnJ5T3Zlci50b1N0cmluZygp
KTsKKyAgICAgICAgbV9jYXJyeU92ZXIuY2xlYXIoKTsKICAgICB9CiAKICAgICBtX3RhYmxlRWxl
bWVudCA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZlYXR1cmVQ
b2xpY3kuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GZWF0dXJlUG9saWN5LmNwcAppbmRleCA1
ODQ4ZDBhYjljMmQ3NTY0ZjA4ZjQ4NzUyYjkzNWUxODEwYjExODE3Li40MWUwMzFkNDYwMmNlMjUy
MzgzNmQyMDMzMDEyZTFhNzYzNjcwMWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0ZlYXR1cmVQb2xpY3kuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmVhdHVyZVBvbGlj
eS5jcHAKQEAgLTE2Niw3ICsxNjYsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgdXBkYXRlTGlzdChE
b2N1bWVudCYgZG9jdW1lbnQsIEZlYXR1cmVQb2xpY3k6OkFsbG93UnVsZSYgcnVsZQogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgcHJvY2Vzc09yaWdpbkl0ZW0oZG9j
dW1lbnQsIHJ1bGUsIHZhbHVlLnN1YnN0cmluZygwLCBwb3NpdGlvbikpOworICAgICAgICBwcm9j
ZXNzT3JpZ2luSXRlbShkb2N1bWVudCwgcnVsZSwgdmFsdWUubGVmdChwb3NpdGlvbikpOwogICAg
ICAgICB2YWx1ZSA9IHZhbHVlLnN1YnN0cmluZyhwb3NpdGlvbiArIDEpLnN0cmlwTGVhZGluZ0Fu
ZFRyYWlsaW5nTWF0Y2hlZENoYXJhY3RlcnMoaXNIVE1MU3BhY2U8VUNoYXI+KTsKICAgICB9CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCBiNDJkOTYwNGYz
NGNkZWJmNzRlYzNjYmFmMDYyYTdlOTM3ZGU0ZDRhLi5jZjkzYzMyZDFiMDI1YWM3ZTcyMDU4OGIy
MzVhNTVkZjExY2Y0ZmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAKQEAgLTE5NCw3ICsxOTQsNyBAQCBzdHJ1Y3QgTG9nQXJndW1lbnQ8VVJMPiB7CiAKICAgICAg
ICAgaWYgKHVybC5zdHJpbmcoKS5sZW5ndGgoKSA8IG1heGltdW1VUkxMZW5ndGhGb3JMb2dnaW5n
KQogICAgICAgICAgICAgcmV0dXJuIHVybC5zdHJpbmcoKTsKLSAgICAgICAgcmV0dXJuIHVybC5z
dHJpbmcoKS5zdWJzdHJpbmcoMCwgbWF4aW11bVVSTExlbmd0aEZvckxvZ2dpbmcpICsgIi4uLiI7
CisgICAgICAgIHJldHVybiB1cmwuc3RyaW5nKCkubGVmdChtYXhpbXVtVVJMTGVuZ3RoRm9yTG9n
Z2luZykgKyAiLi4uIjsKICNlbHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTSh1cmwpOwogICAgICAg
ICByZXR1cm4gIlt1cmxdIl9zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VHJhY2tFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5j
cHAKaW5kZXggZTQ3YTViZDhiMzczZDViZDI1YTA0MjYwNmI2OWI0NDQ5OWU0MTc0NS4uNGVmYzQz
ZjViMjk0YWUyNTA4ZWE1YWQ3ZGFmYjdkYWE4YzBhY2Y5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUcmFja0VsZW1lbnQuY3BwCkBAIC01NSw3ICs1NSw3IEBAIHN0YXRpYyBTdHJpbmcgdXJs
Rm9yTG9nZ2luZ1RyYWNrKGNvbnN0IFVSTCYgdXJsKQogICAgIAogICAgIGlmICh1cmwuc3RyaW5n
KCkubGVuZ3RoKCkgPCBtYXhpbXVtVVJMTGVuZ3RoRm9yTG9nZ2luZykKICAgICAgICAgcmV0dXJu
IHVybC5zdHJpbmcoKTsKLSAgICByZXR1cm4gdXJsLnN0cmluZygpLnN1YnN0cmluZygwLCBtYXhp
bXVtVVJMTGVuZ3RoRm9yTG9nZ2luZykgKyAiLi4uIjsKKyAgICByZXR1cm4gdXJsLnN0cmluZygp
LmxlZnQobWF4aW11bVVSTExlbmd0aEZvckxvZ2dpbmcpICsgIi4uLiI7CiB9CiAKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxEZWNvbXBvc2l0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvVVJMRGVjb21wb3NpdGlvbi5jcHAKaW5kZXggZTRlMzBhOWI2MDRl
ZjFhODRkNzc1MmJiZDhiMzcwODQ1MmExZTA4Zi4uOTM1Y2U1ZGNiNzI1OWE1ZWQ2MDk5NWEyODU3
OGI2NjBjZTU5MDRiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxEZWNvbXBv
c2l0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTERlY29tcG9zaXRpb24uY3Bw
CkBAIC0xMTcsMTMgKzExNywxMyBAQCB2b2lkIFVSTERlY29tcG9zaXRpb246OnNldEhvc3QoU3Ry
aW5nVmlldyB2YWx1ZSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgdW5zaWduZWQgcG9y
dExlbmd0aCA9IGNvdW50QVNDSUlEaWdpdHModmFsdWUuc3Vic3RyaW5nKHNlcGFyYXRvciArIDEp
KTsKICAgICAgICAgaWYgKCFwb3J0TGVuZ3RoKSB7Ci0gICAgICAgICAgICBmdWxsVVJMLnNldEhv
c3QodmFsdWUuc3Vic3RyaW5nKDAsIHNlcGFyYXRvcikpOworICAgICAgICAgICAgZnVsbFVSTC5z
ZXRIb3N0KHZhbHVlLmxlZnQoc2VwYXJhdG9yKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICBhdXRvIHBvcnROdW1iZXIgPSBwYXJzZUludGVnZXI8dWludDE2X3Q+KHZhbHVlLnN1YnN0
cmluZyhzZXBhcmF0b3IgKyAxLCBwb3J0TGVuZ3RoKSk7CiAgICAgICAgICAgICBpZiAocG9ydE51
bWJlciAmJiBXVEY6OmlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbCgqcG9ydE51bWJlciwgZnVsbFVS
TC5wcm90b2NvbCgpKSkKLSAgICAgICAgICAgICAgICBmdWxsVVJMLnNldEhvc3RBbmRQb3J0KHZh
bHVlLnN1YnN0cmluZygwLCBzZXBhcmF0b3IpKTsKKyAgICAgICAgICAgICAgICBmdWxsVVJMLnNl
dEhvc3RBbmRQb3J0KHZhbHVlLmxlZnQoc2VwYXJhdG9yKSk7CiAgICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgZnVsbFVSTC5zZXRIb3N0QW5kUG9ydCh2YWx1ZS5zdWJzdHJpbmcoMCwg
c2VwYXJhdG9yICsgMSArIHBvcnRMZW5ndGgpKTsKKyAgICAgICAgICAgICAgICBmdWxsVVJMLnNl
dEhvc3RBbmRQb3J0KHZhbHVlLmxlZnQoc2VwYXJhdG9yICsgMSArIHBvcnRMZW5ndGgpKTsKICAg
ICAgICAgfQogICAgIH0KICAgICBpZiAoZnVsbFVSTC5pc1ZhbGlkKCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3Bw
CmluZGV4IDc3M2Y2NzY0OGEzZDkwOGZiYTAzNzNhNzk5ZjQyOTI4YTc3OTJkOGYuLjFjNGUzNTI0
YTFhNDIzODc0NDFhMzQyZjFjYmFhMTFjMjgzMTNlOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCkBAIC0z
MDc0LDcgKzMwNzQsNyBAQCBSZWZQdHI8V2ViR0xBY3RpdmVJbmZvPiBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpnZXRBY3RpdmVVbmlmb3JtKFdlYkdMUHJvZ3JhbQogICAgIC8vIEZJWE1FOiBE
byB3ZSBzdGlsbCBuZWVkIHRoaXMgZm9yIHRoZSBBTkdMRSBiYWNrZW5kPwogICAgIGlmICghaXNH
TEVTMkNvbXBsaWFudCgpKQogICAgICAgICBpZiAoaW5mby5zaXplID4gMSAmJiAhaW5mby5uYW1l
LmVuZHNXaXRoKCJbMF0iKSkKLSAgICAgICAgICAgIGluZm8ubmFtZS5hcHBlbmQoIlswXSJfcyk7
CisgICAgICAgICAgICBpbmZvLm5hbWUgPSBtYWtlU3RyaW5nKGluZm8ubmFtZSwgIlswXSJfcyk7
CiAKICAgICBMT0coV2ViR0wsICJSZXR1cm5pbmcgYWN0aXZlIHVuaWZvcm0gJWQ6ICVzIiwgaW5k
ZXgsIGluZm8ubmFtZS51dGY4KCkuZGF0YSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcAppbmRleCA2MWM2YTdiMzRhOTU0NGM4M2Q5ZDdl
ZjUwMTBjNDdmYjY5MjdkYWIwLi41YzFlYzc0MWMyMWE0OTc5NGI0YTg2YWJiNTc1ODY3ODlhMTFj
ZWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRp
b21zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21z
LmNwcApAQCAtNDUyLDcgKzQ1Miw3IEBAIHN0YXRpYyBib29sIHBhcnNlSFRUUFJlZnJlc2hJbnRl
cm5hbChjb25zdCBDaGFyYWN0ZXJUeXBlKiBwb3NpdGlvbiwgY29uc3QgQ2hhcmFjCiAgICAgaWYg
KHF1b3RlICE9ICdcMCcpIHsKICAgICAgICAgc2l6ZV90IGluZGV4ID0gdXJsLmZpbmQocXVvdGUp
OwogICAgICAgICBpZiAoaW5kZXggIT0gbm90Rm91bmQpCi0gICAgICAgICAgICB1cmwgPSB1cmwu
c3Vic3RyaW5nKDAsIGluZGV4KTsKKyAgICAgICAgICAgIHVybCA9IHVybC5sZWZ0KGluZGV4KTsK
ICAgICB9CiAKICAgICBwYXJzZWRVUkwgPSB1cmwudG9TdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTcmNzZXRQYXJzZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTFNyY3NldFBhcnNlci5jcHAKaW5kZXggNjA2MjBmNTZjNGVi
OGYwNGI0M2RmMmUxNTE4YTRmNmY2YmQ5Nzk4ZC4uYmFlZDMyZGM1ODlkNjM4ZWU2ZWY2MmNkOWIx
NTgwMDE4YzQzZmM0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TFNyY3NldFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFNy
Y3NldFBhcnNlci5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCBzdGF0aWMgYm9vbCBwYXJzZURlc2Ny
aXB0b3JzKFZlY3RvcjxTdHJpbmdWaWV3PiYgZGVzY3JpcHRvcnMsIERlc2NyaXB0b3JQYXJzaW5n
UgogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIHVuc2lnbmVkIGRlc2NyaXB0b3JDaGFy
UG9zaXRpb24gPSBkZXNjcmlwdG9yLmxlbmd0aCgpIC0gMTsKICAgICAgICAgVUNoYXIgZGVzY3Jp
cHRvckNoYXIgPSBkZXNjcmlwdG9yW2Rlc2NyaXB0b3JDaGFyUG9zaXRpb25dOwotICAgICAgICBk
ZXNjcmlwdG9yID0gZGVzY3JpcHRvci5zdWJzdHJpbmcoMCwgZGVzY3JpcHRvckNoYXJQb3NpdGlv
bik7CisgICAgICAgIGRlc2NyaXB0b3IgPSBkZXNjcmlwdG9yLmxlZnQoZGVzY3JpcHRvckNoYXJQ
b3NpdGlvbik7CiAgICAgICAgIGlmIChkZXNjcmlwdG9yQ2hhciA9PSAneCcpIHsKICAgICAgICAg
ICAgIGlmIChyZXN1bHQuaGFzRGVuc2l0eSgpIHx8IHJlc3VsdC5oYXNIZWlnaHQoKSB8fCByZXN1
bHQuaGFzV2lkdGgoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcAppbmRleCBlZGNjNmFmZDZj
NmYwMzhiODRjNGU3MWY1NzhhNjg4ODQyN2M3MTAzLi5mNmFhOGE3Nzg5OWFlY2RlZDc1YzgzYzM0
OGIxNWFlYjRhODE5YzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MVHJlZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxU
cmVlQnVpbGRlci5jcHAKQEAgLTI0MSw3ICsyNDEsNyBAQCBwcml2YXRlOgogICAgICAgICBza2lw
TGVhZGluZzxjaGFyYWN0ZXJQcmVkaWNhdGU+KCk7CiAgICAgICAgIGlmIChzdGFydC5sZW5ndGgo
KSA9PSBtX3RleHQubGVuZ3RoKCkpCiAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAg
ICAgIHJldHVybiBtYWtlU3RyaW5nKHN0YXJ0LnN1YnN0cmluZygwLCBzdGFydC5sZW5ndGgoKSAt
IG1fdGV4dC5sZW5ndGgoKSkpOworICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhzdGFydC5sZWZ0
KHN0YXJ0Lmxlbmd0aCgpIC0gbV90ZXh0Lmxlbmd0aCgpKSk7CiAgICAgfQogCiAgICAgU3RyaW5n
IG1ha2VTdHJpbmcoU3RyaW5nVmlldyBzdHJpbmdWaWV3KSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwCmluZGV4IDlmNWRhNTFiZTc4ZmRhYTYxYjdlNTA5
NTgzNDVkZjQzYjVmMGJkMzYuLmE2MDNjMDgxZTkwYjQ2ZDUzNGU5MDNlZWVjY2EwNjRmNzYzZThj
YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKQEAgLTM2
Miw3ICszNjIsOCBAQCBib29sIFdlYlZUVFBhcnNlcjo6Y2hlY2tBbmRTdG9yZVN0eWxlU2hlZXQo
Y29uc3QgU3RyaW5nJiBsaW5lKQogICAgIGlmICghbGluZS5pc0VtcHR5KCkgJiYgIWxpbmUuY29u
dGFpbnMoIi0tPiIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgYXV0byBzdHls
ZVNoZWV0VGV4dCA9IFdURk1vdmUobV9jdXJyZW50U291cmNlU3R5bGVTaGVldCk7CisgICAgYXV0
byBzdHlsZVNoZWV0VGV4dCA9IG1fY3VycmVudFNvdXJjZVN0eWxlU2hlZXQudG9TdHJpbmcoKTsK
KyAgICBtX2N1cnJlbnRTb3VyY2VTdHlsZVNoZWV0LmNsZWFyKCk7CiAKICAgICAvLyBXZWJWVFRN
b2RlIGRpc2FsbG93cyBub24tZGF0YSBVUkxzLgogICAgIGF1dG8gY29udGVudHMgPSBTdHlsZVNo
ZWV0Q29udGVudHM6OmNyZWF0ZShDU1NQYXJzZXJDb250ZXh0KFdlYlZUVE1vZGUpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5oCmluZGV4IDEyODU1MjA5MTc0Mzg1ZDA1
MjA4ZGM3YTQwNGRiYWEzMWZmMDY3NDguLjJmYjMwOTA1NDI0ZmNlOWZmMjM5MTNkYjNlOTc0YzEy
M2E0NDY2M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFy
c2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuaApAQCAt
MTkyLDcgKzE5Miw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fcHJldmlvdXNMaW5lOwogICAg
IFN0cmluZyBtX2N1cnJlbnRTZXR0aW5nczsKICAgICBSZWZQdHI8VlRUUmVnaW9uPiBtX2N1cnJl
bnRSZWdpb247Ci0gICAgU3RyaW5nIG1fY3VycmVudFNvdXJjZVN0eWxlU2hlZXQ7CisgICAgU3Ry
aW5nQnVpbGRlciBtX2N1cnJlbnRTb3VyY2VTdHlsZVNoZWV0OwogICAgIAogICAgIFdlYlZUVFBh
cnNlckNsaWVudCYgbV9jbGllbnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JPdmVybGF5LmNwcAppbmRleCA3NzEwYTFiNWQ4MmI0ZWNiYzZiOGZlNjI4NGNkNzZlNDQ5
ODczZmM5Li5iZmU4YjY3OGEzMDQ1ZWM2MTMxOTgxMGExYzYxYzVkZWZhYzJiZGY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCkBAIC05NywxMCAr
OTcsOCBAQCBlbnVtIGNsYXNzIEZsaXAgOiBib29sIHsgTm8sIFllcyB9OwogCiBzdGF0aWMgdm9p
ZCB0cnVuY2F0ZVdpdGhFbGxpcHNpcyhTdHJpbmcmIHN0cmluZywgc2l6ZV90IGxlbmd0aCkKIHsK
LSAgICBpZiAoc3RyaW5nLmxlbmd0aCgpID4gbGVuZ3RoKSB7Ci0gICAgICAgIHN0cmluZy50cnVu
Y2F0ZShsZW5ndGgpOwotICAgICAgICBzdHJpbmcuYXBwZW5kKGVsbGlwc2lzKTsKLSAgICB9Cisg
ICAgaWYgKHN0cmluZy5sZW5ndGgoKSA+IGxlbmd0aCkKKyAgICAgICAgc3RyaW5nID0gbWFrZVN0
cmluZyhTdHJpbmdWaWV3KHN0cmluZykubGVmdChsZW5ndGgpLCBlbGxpcHNpcyk7CiB9CiAKIHN0
YXRpYyBGbG9hdFBvaW50IGxvY2FsUG9pbnRUb1Jvb3RQb2ludChjb25zdCBGcmFtZVZpZXcqIHZp
ZXcsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXlMYWJlbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yT3ZlcmxheUxhYmVsLmNwcAppbmRleCBmNjExNDcxYTg1ZTNmZTY5M2Rk
NmYzYWNhNjNlMjAyNDgyNjU3ODU2Li4zOGJmYWIyOTNjZWNkNTQxZDg4Y2UzZjllMDdmYWE4MGVh
ZmQzZWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3Zl
cmxheUxhYmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3Zl
cmxheUxhYmVsLmNwcApAQCAtMjM0LDggKzIzNCw5IEBAIFBhdGggSW5zcGVjdG9yT3ZlcmxheUxh
YmVsOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgZmxvYXQgbWF4aW11bUxpbmVXaWR0
CiAgICAgICAgICAgICBhdXRvIHRleHRSdW4gPSBUZXh0UnVuKHRleHQpOwogICAgICAgICAgICAg
ZmxvYXQgdGV4dFdpZHRoID0gZm9udC53aWR0aCh0ZXh0UnVuKTsKIAorICAgICAgICAgICAgLy8g
RklYTUU6IFRoaXMgbG9va3MgdmVyeSBpbmVmZmljaWVudC4KICAgICAgICAgICAgIGlmIChtYXhp
bXVtTGluZVdpZHRoICYmIGN1cnJlbnRMaW5lV2lkdGggKyB0ZXh0V2lkdGggKyAobGFiZWxQYWRk
aW5nICogMikgPiBtYXhpbXVtTGluZVdpZHRoKSB7Ci0gICAgICAgICAgICAgICAgdGV4dC5hcHBl
bmQoZWxsaXBzaXMpOworICAgICAgICAgICAgICAgIHRleHQgPSBtYWtlU3RyaW5nKHRleHQsIGVs
bGlwc2lzKTsKICAgICAgICAgICAgICAgICB3aGlsZSAoY3VycmVudExpbmVXaWR0aCArIHRleHRX
aWR0aCArIChsYWJlbFBhZGRpbmcgKiAyKSA+IG1heGltdW1MaW5lV2lkdGggJiYgdGV4dC5sZW5n
dGgoKSA+IDEpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gUmVtb3ZlIHRoZSBzZWNvbmQgZnJv
bSBsYXN0IGNoYXJhY3RlciAodGhlIGNoYXJhY3RlciBiZWZvcmUgdGhlIGVsbGlwc2lzKSBhbmQg
cmVtZWFzdXJlLgogICAgICAgICAgICAgICAgICAgICB0ZXh0LnJlbW92ZSh0ZXh0Lmxlbmd0aCgp
IC0gMik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5
bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVl
dC5jcHAKaW5kZXggMjZlMThlYzA0YWE2ZjdkYWYzYzdiNDMzYTk2YjI2MWJiOTAyNDk0YS4uMDkw
MTZlNWM3MTFkNTY1MTNlMzVjMzg0ZDRkZDMwMDJkZDM0NjcyZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcApAQCAtMzg0LDcgKzM4NCw3
IEBAIHZvaWQgU3R5bGVTaGVldEhhbmRsZXI6Om9ic2VydmVDb21tZW50KHVuc2lnbmVkIHN0YXJ0
T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCiAgICAgLy8gUmVxdWlyZSB3ZWxsLWZvcm1lZCBj
b21tZW50cy4KICAgICBpZiAoIWNvbW1lbnRUZXh0LmVuZHNXaXRoKCIqLyIpKQogICAgICAgICBy
ZXR1cm47Ci0gICAgY29tbWVudFRleHQgPSBjb21tZW50VGV4dC5zdWJzdHJpbmcoMCwgY29tbWVu
dFRleHQubGVuZ3RoKCkgLSAyKS5zdHJpcFdoaXRlU3BhY2UoKTsKKyAgICBjb21tZW50VGV4dCA9
IGNvbW1lbnRUZXh0LmxlZnQoY29tbWVudFRleHQubGVuZ3RoKCkgLSAyKS5zdHJpcFdoaXRlU3Bh
Y2UoKTsKICAgICBpZiAoY29tbWVudFRleHQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAg
ICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
RE9NQWdlbnQuY3BwCmluZGV4IDU3NjYyNDRlODVkNjI3ZWVhN2FiMWNjZDVkNmE2ZDM2ODhmMmJl
N2UuLjlmNWVkNGJjMmY4Mzc1YThkZTYyODhlODE3MjZiNDM2YmYyZmRlNTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3Bw
CkBAIC0xNzcyLDEwICsxNzcyLDggQEAgUmVmPFByb3RvY29sOjpET006Ok5vZGU+IEluc3BlY3Rv
ckRPTUFnZW50OjpidWlsZE9iamVjdEZvck5vZGUoTm9kZSogbm9kZSwgaW50IGQKICAgICBjYXNl
IE5vZGU6OkNPTU1FTlRfTk9ERToKICAgICBjYXNlIE5vZGU6OkNEQVRBX1NFQ1RJT05fTk9ERToK
ICAgICAgICAgbm9kZVZhbHVlID0gbm9kZS0+bm9kZVZhbHVlKCk7Ci0gICAgICAgIGlmIChub2Rl
VmFsdWUubGVuZ3RoKCkgPiBtYXhUZXh0U2l6ZSkgewotICAgICAgICAgICAgbm9kZVZhbHVlID0g
bm9kZVZhbHVlLmxlZnQobWF4VGV4dFNpemUpOwotICAgICAgICAgICAgbm9kZVZhbHVlLmFwcGVu
ZChlbGxpcHNpc1VDaGFyKTsKLSAgICAgICAgfQorICAgICAgICBpZiAobm9kZVZhbHVlLmxlbmd0
aCgpID4gbWF4VGV4dFNpemUpCisgICAgICAgICAgICBub2RlVmFsdWUgPSBtYWtlU3RyaW5nKFN0
cmluZ1ZpZXcobm9kZVZhbHVlKS5sZWZ0KG1heFRleHRTaXplKSwgZWxsaXBzaXNVQ2hhcik7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgTm9kZTo6QVRUUklCVVRFX05PREU6CiAgICAgICAgIGxv
Y2FsTmFtZSA9IG5vZGUtPmxvY2FsTmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCmluZGV4IDRkYzM1MWU0OTIy
Yjc1NDY3NmNkMDhiODE0NGQxZWFlMDUwOWQ3ODcuLmRiMGQ4ZjAxMzQ1NDllNmNmMTBlYjc4NGIw
OGEyYjk3MTg5MjcxNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0
cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5
b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAKQEAgLTUwMyw3ICs1MDMsNyBAQCBzdGF0aWMg
dm9pZCBvdXRwdXRMYXlvdXRCb3goVGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBCb3gmIGxheW91
dEJveCwgY29uc3QgQm94RwogCiAgICAgICAgIGNvbnN0IHNpemVfdCBtYXhQcmludGVkTGVuZ3Ro
ID0gODA7CiAgICAgICAgIGlmICh0ZXh0Q29udGVudC5sZW5ndGgoKSA+IG1heFByaW50ZWRMZW5n
dGgpIHsKLSAgICAgICAgICAgIGF1dG8gc3Vic3RyaW5nID0gdGV4dENvbnRlbnQuc3Vic3RyaW5n
KDAsIG1heFByaW50ZWRMZW5ndGgpOworICAgICAgICAgICAgYXV0byBzdWJzdHJpbmcgPSB0ZXh0
Q29udGVudC5sZWZ0KG1heFByaW50ZWRMZW5ndGgpOwogICAgICAgICAgICAgc3RyZWFtIDw8ICIg
XCIiIDw8IHN1YnN0cmluZy51dGY4KCkuZGF0YSgpIDw8ICJcIi4uLiI7CiAgICAgICAgIH0gZWxz
ZQogICAgICAgICAgICAgc3RyZWFtIDw8ICIgXCIiIDw8IHRleHRDb250ZW50LnV0ZjgoKS5kYXRh
KCkgPDwgIlwiIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlTWFuaWZlc3RQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdFBhcnNlci5jcHAKaW5kZXggNGExMTQ0
MjVlMTE2ZDJjNDJkMTkwMzkyM2VkZjg4NjM4M2Q4ZjA2NC4uOGQ5OWI5MzhkOTlmYjQyZjgxN2U5
MGMxZThkMDdiYzJhOGZiOGMzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdFBhcnNlci5jcHAK
QEAgLTQwLDcgKzQwLDcgQEAgc3RhdGljIFN0cmluZ1ZpZXcgbWFuaWZlc3RQYXRoKGNvbnN0IFVS
TCYgbWFuaWZlc3RVUkwpCiB7CiAgICAgYXV0byBtYW5pZmVzdFBhdGggPSBtYW5pZmVzdFVSTC5w
YXRoKCk7CiAgICAgQVNTRVJUKG1hbmlmZXN0UGF0aFswXSA9PSAnLycpOwotICAgIG1hbmlmZXN0
UGF0aCA9IG1hbmlmZXN0UGF0aC5zdWJzdHJpbmcoMCwgbWFuaWZlc3RQYXRoLnJldmVyc2VGaW5k
KCcvJykgKyAxKTsKKyAgICBtYW5pZmVzdFBhdGggPSBtYW5pZmVzdFBhdGgubGVmdChtYW5pZmVz
dFBhdGgucmV2ZXJzZUZpbmQoJy8nKSArIDEpOwogICAgIEFTU0VSVChtYW5pZmVzdFBhdGhbMF0g
PT0gbWFuaWZlc3RQYXRoW21hbmlmZXN0UGF0aC5sZW5ndGgoKSAtIDFdKTsKICAgICByZXR1cm4g
bWFuaWZlc3RQYXRoOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhN
TFByZXNlbnRhdGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFBy
ZXNlbnRhdGlvbkVsZW1lbnQuY3BwCmluZGV4IDUxMDIyYzY3NWQyNGYwYmI4YTUzYjE5NWZlODhi
MWFmMDNkMTM3MDMuLjVlMDc2M2RmOTAxZTk3YjVhNWZlZjA4MjIxNDA0MmNlZmFkODc3NDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxQcmVzZW50YXRpb25FbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVu
dC5jcHAKQEAgLTIzNSw3ICsyMzUsNyBAQCBNYXRoTUxFbGVtZW50OjpMZW5ndGggTWF0aE1MUHJl
c2VudGF0aW9uRWxlbWVudDo6cGFyc2VOdW1iZXJBbmRVbml0KFN0cmluZ1ZpZXcgcwogICAgIH0K
IAogICAgIGJvb2wgb2s7Ci0gICAgZmxvYXQgbGVuZ3RoVmFsdWUgPSBzdHJpbmcuc3Vic3RyaW5n
KDAsIHN0cmluZ0xlbmd0aCkudG9GbG9hdChvayk7CisgICAgZmxvYXQgbGVuZ3RoVmFsdWUgPSBz
dHJpbmcubGVmdChzdHJpbmdMZW5ndGgpLnRvRmxvYXQob2spOwogICAgIGlmICghb2spCiAgICAg
ICAgIHJldHVybiBMZW5ndGgoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAppbmRleCA5ZmFmOGFkZjY5
YjVjYzU1YzJiM2FmYTdhYTYxY2UyYmRjMGEwNDdmLi4xY2FlY2NmOWY0MDRkYTNmZDAzMWUxM2Rj
ZWZkZjVhNDI3ZGQzMjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcApAQCAtMzg5LDcgKzM4OSw3IEBA
IHN0YXRpYyBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uIGNyZWF0ZVJlZ0V4cEZvckxhYmVs
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYKICAgICAgICAgYm9vbCBzdGFydHNXaXRoV29yZENoYXJh
Y3RlciA9IGZhbHNlOwogICAgICAgICBib29sIGVuZHNXaXRoV29yZENoYXJhY3RlciA9IGZhbHNl
OwogICAgICAgICBpZiAobGFiZWwubGVuZ3RoKCkpIHsKLSAgICAgICAgICAgIHN0YXJ0c1dpdGhX
b3JkQ2hhcmFjdGVyID0gd29yZFJlZ0V4cC5nZXQoKS5tYXRjaChsYWJlbC5zdWJzdHJpbmcoMCwg
MSkpID49IDA7CisgICAgICAgICAgICBzdGFydHNXaXRoV29yZENoYXJhY3RlciA9IHdvcmRSZWdF
eHAuZ2V0KCkubWF0Y2gobGFiZWwubGVmdCgxKSkgPj0gMDsKICAgICAgICAgICAgIGVuZHNXaXRo
V29yZENoYXJhY3RlciA9IHdvcmRSZWdFeHAuZ2V0KCkubWF0Y2gobGFiZWwuc3Vic3RyaW5nKGxh
YmVsLmxlbmd0aCgpIC0gMSwgMSkpID49IDA7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwCmluZGV4IGE2ODJjY2JhNzU0MjlkNzI4NTI2ZDhh
Y2Y4ZmIwZWU3NTIyZDIyNWIuLjg1YWE2NDJkMTE2NjZhYTYyOGJiNWRlMTE1ZWU3NjZiNzE5ZWRk
ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAKQEAgLTEx
NSw3ICsxMTUsNyBAQCBzdGQ6Om9wdGlvbmFsPFNlY3VyaXR5T3JpZ2luRGF0YT4gU2VjdXJpdHlP
cmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKFN0cgogICAgIGlmIChwb3J0ICYmICEq
cG9ydCkKICAgICAgICAgcG9ydCA9IHN0ZDo6bnVsbG9wdDsKIAotICAgIGF1dG8gcHJvdG9jb2wg
PSBkYXRhYmFzZUlkZW50aWZpZXIuc3Vic3RyaW5nKDAsIHNlcGFyYXRvcjEpOworICAgIGF1dG8g
cHJvdG9jb2wgPSBkYXRhYmFzZUlkZW50aWZpZXIubGVmdChzZXBhcmF0b3IxKTsKICAgICBhdXRv
IGhvc3QgPSBkYXRhYmFzZUlkZW50aWZpZXIuc3Vic3RyaW5nKHNlcGFyYXRvcjEgKyAxLCBzZXBh
cmF0b3IyIC0gc2VwYXJhdG9yMSAtIDEpOwogICAgIHJldHVybiBTZWN1cml0eU9yaWdpbkRhdGEg
eyBwcm90b2NvbC50b1N0cmluZygpLCBob3N0LnRvU3RyaW5nKCksIHBvcnQgfTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlVHJlZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVRyZWUuY3Bw
CmluZGV4IGRmNmJiMGI1ZjdlOTNiMTY5OWVhODliODFiNGNmM2NkMmZlZWE3OTkuLjhhMmVlZmJm
YmUxNjFhZTdkZWJmYWRiYjE0MmViYjVhMTNmNGU1ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlVHJlZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVUcmVlLmNwcApAQCAtMzgxLDEwICsz
ODEsMTEgQEAgU3RyaW5nIFNjcm9sbGluZ1N0YXRlVHJlZTo6c2Nyb2xsaW5nU3RhdGVUcmVlQXNU
ZXh0KE9wdGlvblNldDxTY3JvbGxpbmdTdGF0ZVRyZWUKICAgICBpZiAoIXJvb3RTdGF0ZU5vZGUo
KSkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKLSAgICBhdXRvIHN0YXRlVHJlZUFz
U3RyaW5nID0gcm9vdFN0YXRlTm9kZSgpLT5zY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHQoYmVoYXZp
b3IpOworICAgIFN0cmluZ0J1aWxkZXIgc3RhdGVUcmVlQXNTdHJpbmc7CisgICAgc3RhdGVUcmVl
QXNTdHJpbmcuYXBwZW5kKHJvb3RTdGF0ZU5vZGUoKS0+c2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0
KGJlaGF2aW9yKSk7CiAgICAgaWYgKCFtX3VucGFyZW50ZWROb2Rlcy5pc0VtcHR5KCkpCi0gICAg
ICAgIHN0YXRlVHJlZUFzU3RyaW5nLmFwcGVuZChtYWtlU3RyaW5nKCJcbnVucGFyZW50ZWQgbm9k
ZSBjb3VudDogIiwgbV91bnBhcmVudGVkTm9kZXMuc2l6ZSgpKSk7Ci0gICAgcmV0dXJuIHN0YXRl
VHJlZUFzU3RyaW5nOworICAgICAgICBzdGF0ZVRyZWVBc1N0cmluZy5hcHBlbmQoIlxudW5wYXJl
bnRlZCBub2RlIGNvdW50OiAiLCBtX3VucGFyZW50ZWROb2Rlcy5zaXplKCkpOworICAgIHJldHVy
biBzdGF0ZVRyZWVBc1N0cmluZy50b1N0cmluZygpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRTdHJpbmdIYXNo
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFN0cmluZ0hhc2guY3BwCmluZGV4
IGI5MzRlNmZhM2FmM2ZjZmIxMWQ0OTcwMjM1NjAxNjJiZGI1YmZjNTIuLmE4NGYzNTljMzRiODQ0
NjE3MGY4YjlkMGViZTFkZGM2YjgzZWQ4ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NoYXJlZFN0cmluZ0hhc2guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZFN0cmluZ0hhc2guY3BwCkBAIC0yNTksMTMgKzI1OSwxMyBAQCBzdGF0aWMgQUxXQVlT
X0lOTElORSB2b2lkIGNvbXB1dGVTaGFyZWRTdHJpbmdIYXNoSW5saW5lKGNvbnN0IFVSTCYgYmFz
ZSwgY29uc3QgQwogICAgIGVsc2UgewogICAgICAgICBzd2l0Y2ggKGNoYXJhY3RlcnNbMF0pIHsK
ICAgICAgICAgY2FzZSAnLyc6Ci0gICAgICAgICAgICBhcHBlbmQoYnVmZmVyLCBTdHJpbmdWaWV3
KGJhc2Uuc3RyaW5nKCkpLnN1YnN0cmluZygwLCBiYXNlLnBhdGhTdGFydCgpKSk7CisgICAgICAg
ICAgICBhcHBlbmQoYnVmZmVyLCBTdHJpbmdWaWV3KGJhc2Uuc3RyaW5nKCkpLmxlZnQoYmFzZS5w
YXRoU3RhcnQoKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgJyMnOgotICAg
ICAgICAgICAgYXBwZW5kKGJ1ZmZlciwgU3RyaW5nVmlldyhiYXNlLnN0cmluZygpKS5zdWJzdHJp
bmcoMCwgYmFzZS5wYXRoRW5kKCkpKTsKKyAgICAgICAgICAgIGFwcGVuZChidWZmZXIsIFN0cmlu
Z1ZpZXcoYmFzZS5zdHJpbmcoKSkubGVmdChiYXNlLnBhdGhFbmQoKSkpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBhcHBlbmQoYnVmZmVyLCBTdHJp
bmdWaWV3KGJhc2Uuc3RyaW5nKCkpLnN1YnN0cmluZygwLCBiYXNlLnBhdGhBZnRlckxhc3RTbGFz
aCgpKSk7CisgICAgICAgICAgICBhcHBlbmQoYnVmZmVyLCBTdHJpbmdWaWV3KGJhc2Uuc3RyaW5n
KCkpLmxlZnQoYmFzZS5wYXRoQWZ0ZXJMYXN0U2xhc2goKSkpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9IRVZDVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0hFVkNVdGlsaXRpZXMuY3BwCmluZGV4IGMyMGIwNjUwMThhZTdiZWRlMDQxN2ZlMzNlMWVl
ODQwYzk0NGU0Y2EuLmZmMjc4ZTk1NzMxZjBhN2QwYTFkZTMzZjdkZmY4NTVlZTlhZTQ2NTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0hFVkNVdGlsaXRpZXMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0hFVkNVdGlsaXRpZXMu
Y3BwCkBAIC0yMDIsMTMgKzIwMiw2IEBAIHN0ZDo6b3B0aW9uYWw8SEVWQ1BhcmFtZXRlcnM+IHBh
cnNlSEVWQ0NvZGVjUGFyYW1ldGVycyhTdHJpbmdWaWV3IGNvZGVjU3RyaW5nKQogCiBTdHJpbmcg
Y3JlYXRlSEVWQ0NvZGVjUGFyYW1ldGVyc1N0cmluZyhjb25zdCBIRVZDUGFyYW1ldGVycyYgcGFy
YW1ldGVycykKIHsKLSAgICAvLyBUaGUgZm9ybWF0IG9mIHRoZSAnaGV2YycgY29kZWMgc3RyaW5n
IGlzIHNwZWNpZmllZCBpbiBJU08vSUVDIDE0NDk2LTE1OjIwMTQsIEFubmV4IEUuMy4KLSAgICBj
aGFyIHByb2ZpbGVTcGFjZUNoYXJhY3RlciA9ICdBJyArIHBhcmFtZXRlcnMuZ2VuZXJhbFByb2Zp
bGVTcGFjZSAtIDE7Ci0KLSAgICBTdHJpbmcgcHJvZmlsZVNwYWNlU3RyaW5nOwotICAgIGlmIChw
YXJhbWV0ZXJzLmdlbmVyYWxQcm9maWxlU3BhY2UpCi0gICAgICAgIHByb2ZpbGVTcGFjZVN0cmlu
Zy5hcHBlbmQocHJvZmlsZVNwYWNlQ2hhcmFjdGVyKTsKLQogICAgIC8vIEZvciB0aGUgc2Vjb25k
IHBhcmFtZXRlciwgZnJvbSBJU08vSUVDIDE0NDk2LTE1OjIwMTQsIEFubmV4IEUuMy4KICAgICAv
LyAqIHRoZSAzMiBiaXRzIG9mIHRoZSBnZW5lcmFsX3Byb2ZpbGVfY29tcGF0aWJpbGl0eV9mbGFn
cywgYnV0IGluIHJldmVyc2UgYml0IG9yZGVyLCBpLmUuIHdpdGgKICAgICAvLyBnZW5lcmFsX3By
b2ZpbGVfY29tcGF0aWJpbGl0eV9mbGFnWyAzMSBdIGFzIHRoZSBtb3N0IHNpZ25pZmljYW50IGJp
dCwgZm9sbG93ZWQgYnksIGdlbmVyYWxfcHJvZmlsZV9jb21wYXRpYmlsaXR5X2ZsYWdbIDMwIF0s
CkBAIC0yMjYsMTYgKzIxOSwxNiBAQCBTdHJpbmcgY3JlYXRlSEVWQ0NvZGVjUGFyYW1ldGVyc1N0
cmluZyhjb25zdCBIRVZDUGFyYW1ldGVycyYgcGFyYW1ldGVycykKICAgICAgICAgY29tcGF0aWJp
bGl0eUZsYWdzLmFwcGVuZChoZXgocGFyYW1ldGVycy5nZW5lcmFsQ29uc3RyYWludEluZGljYXRv
ckZsYWdzW2ldLCAyKSk7CiAgICAgfQogCi0gICAgcmV0dXJuIG1ha2VTdHJpbmcocGFyYW1ldGVy
cy5jb2RlYyA9PSBIRVZDUGFyYW1ldGVyczo6Q29kZWM6OkhldjEgPyAiaGV2MSIgOiAiaHZjMSIK
LSAgICAgICAgLCAnLicKLSAgICAgICAgLCBwcm9maWxlU3BhY2VTdHJpbmcKLSAgICAgICAgLCBw
YXJhbWV0ZXJzLmdlbmVyYWxQcm9maWxlSURDCi0gICAgICAgICwgJy4nCi0gICAgICAgICwgY29t
cGF0RmxhZ1BhcmFtZXRlcgotICAgICAgICAsICcuJwotICAgICAgICAsIHBhcmFtZXRlcnMuZ2Vu
ZXJhbFRpZXJGbGFnID8gJ0gnIDogJ0wnCi0gICAgICAgICwgcGFyYW1ldGVycy5nZW5lcmFsTGV2
ZWxJREMKLSAgICAgICAgLCBjb21wYXRpYmlsaXR5RmxhZ3MudG9TdHJpbmcoKSk7CisgICAgU3Ry
aW5nQnVpbGRlciByZXN1bHRCdWlsZGVyOworICAgIHJlc3VsdEJ1aWxkZXIuYXBwZW5kKHBhcmFt
ZXRlcnMuY29kZWMgPT0gSEVWQ1BhcmFtZXRlcnM6OkNvZGVjOjpIZXYxID8gImhldjEiIDogImh2
YzEiLCAnLicpOworICAgIGlmIChwYXJhbWV0ZXJzLmdlbmVyYWxQcm9maWxlU3BhY2UpIHsKKyAg
ICAgICAgLy8gVGhlIGZvcm1hdCBvZiB0aGUgJ2hldmMnIGNvZGVjIHN0cmluZyBpcyBzcGVjaWZp
ZWQgaW4gSVNPL0lFQyAxNDQ5Ni0xNToyMDE0LCBBbm5leCBFLjMuCisgICAgICAgIGNoYXIgcHJv
ZmlsZVNwYWNlQ2hhcmFjdGVyID0gJ0EnICsgcGFyYW1ldGVycy5nZW5lcmFsUHJvZmlsZVNwYWNl
IC0gMTsKKyAgICAgICAgcmVzdWx0QnVpbGRlci5hcHBlbmQocHJvZmlsZVNwYWNlQ2hhcmFjdGVy
KTsKKyAgICB9CisgICAgcmVzdWx0QnVpbGRlci5hcHBlbmQocGFyYW1ldGVycy5nZW5lcmFsUHJv
ZmlsZUlEQywgJy4nLCBjb21wYXRGbGFnUGFyYW1ldGVyLCAnLicsIHBhcmFtZXRlcnMuZ2VuZXJh
bFRpZXJGbGFnID8gJ0gnIDogJ0wnLCBwYXJhbWV0ZXJzLmdlbmVyYWxMZXZlbElEQyk7CisgICAg
cmVzdWx0QnVpbGRlci5hcHBlbmQoY29tcGF0aWJpbGl0eUZsYWdzKTsKKyAgICByZXR1cm4gcmVz
dWx0QnVpbGRlci50b1N0cmluZygpOwogfQogCiBzdGQ6Om9wdGlvbmFsPEhFVkNQYXJhbWV0ZXJz
PiBwYXJzZUhFVkNEZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZChGb3VyQ0MgY29kZWNDb2RlLCBj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1N0cmluZ1RydW5jYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9TdHJpbmdUcnVuY2F0b3IuY3BwCmluZGV4IGE2M2ZjOGE3M2VjYmUxZDQ0
ZWU0N2I2M2IwYmNlMzlhMTE3Mzc2MGIuLjIzYjM5OTU4ZGRmNjUzODI2YmQ3YjI0MjcwNDJiMjc3
ODU3ODhjYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1N0
cmluZ1RydW5jYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
U3RyaW5nVHJ1bmNhdG9yLmNwcApAQCAtNjUsNyArNjUsNyBAQCBzdGF0aWMgdW5zaWduZWQgY2Vu
dGVyVHJ1bmNhdGVUb0J1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgbGVuZ3Ro
LCB1bgogICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGtlZXBDb3VudCA8IFNU
UklOR19CVUZGRVJfU0laRSk7CiAgICAgCiAgICAgdW5zaWduZWQgb21pdFN0YXJ0ID0gKGtlZXBD
b3VudCArIDEpIC8gMjsKLSAgICBOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yIGl0KFN0
cmluZ1ZpZXcoc3RyaW5nKS5zdWJzdHJpbmcoMCwgbGVuZ3RoKSk7CisgICAgTm9uU2hhcmVkQ2hh
cmFjdGVyQnJlYWtJdGVyYXRvciBpdChTdHJpbmdWaWV3KHN0cmluZykubGVmdChsZW5ndGgpKTsK
ICAgICB1bnNpZ25lZCBvbWl0RW5kID0gYm91bmRlZFRleHRCcmVha0ZvbGxvd2luZyhpdCwgb21p
dFN0YXJ0ICsgKGxlbmd0aCAtIGtlZXBDb3VudCkgLSAxLCBsZW5ndGgpOwogICAgIG9taXRTdGFy
dCA9IHRleHRCcmVha0F0T3JQcmVjZWRpbmcoaXQsIG9taXRTdGFydCk7CiAKQEAgLTkzLDcgKzkz
LDcgQEAgc3RhdGljIHVuc2lnbmVkIGNlbnRlclRydW5jYXRlVG9CdWZmZXIoY29uc3QgU3RyaW5n
JiBzdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCwgdW4KICAgICB1bnNpZ25lZCB0cnVuY2F0ZWRMZW5n
dGggPSBvbWl0U3RhcnQgKyBzaG91bGRJbnNlcnRFbGxpcHNpcyArIChsZW5ndGggLSBvbWl0RW5k
KTsKICAgICBBU1NFUlQodHJ1bmNhdGVkTGVuZ3RoIDw9IGxlbmd0aCk7CiAKLSAgICBTdHJpbmdW
aWV3KHN0cmluZykuc3Vic3RyaW5nKDAsIG9taXRTdGFydCkuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNv
bnZlcnQoYnVmZmVyKTsKKyAgICBTdHJpbmdWaWV3KHN0cmluZykubGVmdChvbWl0U3RhcnQpLmdl
dENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGJ1ZmZlcik7CiAgICAgaWYgKHNob3VsZEluc2VydEVs
bGlwc2lzKQogICAgICAgICBidWZmZXJbb21pdFN0YXJ0KytdID0gaG9yaXpvbnRhbEVsbGlwc2lz
OwogICAgIFN0cmluZ1ZpZXcoc3RyaW5nKS5zdWJzdHJpbmcob21pdEVuZCwgbGVuZ3RoIC0gb21p
dEVuZCkuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoJmJ1ZmZlcltvbWl0U3RhcnRdKTsKQEAg
LTExOSwxMSArMTE5LDExIEBAIHN0YXRpYyB1bnNpZ25lZCByaWdodFRydW5jYXRlVG9CdWZmZXIo
Y29uc3QgU3RyaW5nJiBzdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCwgdW5zCiAgICAgICAgIC0ta2Vl
cENvdW50OwogI2VuZGlmCiAKLSAgICBOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yIGl0
KFN0cmluZ1ZpZXcoc3RyaW5nKS5zdWJzdHJpbmcoMCwgbGVuZ3RoKSk7CisgICAgTm9uU2hhcmVk
Q2hhcmFjdGVyQnJlYWtJdGVyYXRvciBpdChTdHJpbmdWaWV3KHN0cmluZykubGVmdChsZW5ndGgp
KTsKICAgICB1bnNpZ25lZCBrZWVwTGVuZ3RoID0gdGV4dEJyZWFrQXRPclByZWNlZGluZyhpdCwg
a2VlcENvdW50KTsKICAgICB1bnNpZ25lZCB0cnVuY2F0ZWRMZW5ndGggPSBzaG91bGRJbnNlcnRF
bGxpcHNpcyA/IGtlZXBMZW5ndGggKyAxIDoga2VlcExlbmd0aDsKIAotICAgIFN0cmluZ1ZpZXco
c3RyaW5nKS5zdWJzdHJpbmcoMCwga2VlcExlbmd0aCkuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZl
cnQoYnVmZmVyKTsKKyAgICBTdHJpbmdWaWV3KHN0cmluZykubGVmdChrZWVwTGVuZ3RoKS5nZXRD
aGFyYWN0ZXJzV2l0aFVwY29udmVydChidWZmZXIpOwogICAgIGlmIChzaG91bGRJbnNlcnRFbGxp
cHNpcykKICAgICAgICAgYnVmZmVyW2tlZXBMZW5ndGhdID0gaG9yaXpvbnRhbEVsbGlwc2lzOwog
CkBAIC0xMzUsOSArMTM1LDkgQEAgc3RhdGljIHVuc2lnbmVkIHJpZ2h0Q2xpcFRvQ2hhcmFjdGVy
QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgKICAgICBBU1NFUlQo
a2VlcENvdW50IDwgbGVuZ3RoKTsKICAgICBBU1NFUlQoa2VlcENvdW50IDwgU1RSSU5HX0JVRkZF
Ul9TSVpFKTsKIAotICAgIE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IgaXQoU3RyaW5n
VmlldyhzdHJpbmcpLnN1YnN0cmluZygwLCBsZW5ndGgpKTsKKyAgICBOb25TaGFyZWRDaGFyYWN0
ZXJCcmVha0l0ZXJhdG9yIGl0KFN0cmluZ1ZpZXcoc3RyaW5nKS5sZWZ0KGxlbmd0aCkpOwogICAg
IHVuc2lnbmVkIGtlZXBMZW5ndGggPSB0ZXh0QnJlYWtBdE9yUHJlY2VkaW5nKGl0LCBrZWVwQ291
bnQpOwotICAgIFN0cmluZ1ZpZXcoc3RyaW5nKS5zdWJzdHJpbmcoMCwga2VlcExlbmd0aCkuZ2V0
Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoYnVmZmVyKTsKKyAgICBTdHJpbmdWaWV3KHN0cmluZyku
bGVmdChrZWVwTGVuZ3RoKS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChidWZmZXIpOwogCiAg
ICAgcmV0dXJuIGtlZXBMZW5ndGg7CiB9CkBAIC0xNDcsOSArMTQ3LDkgQEAgc3RhdGljIHVuc2ln
bmVkIHJpZ2h0Q2xpcFRvV29yZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQg
bGVuZ3RoLCB1bnMKICAgICBBU1NFUlQoa2VlcENvdW50IDwgbGVuZ3RoKTsKICAgICBBU1NFUlQo
a2VlcENvdW50IDwgU1RSSU5HX0JVRkZFUl9TSVpFKTsKIAotICAgIFVCcmVha0l0ZXJhdG9yKiBp
dCA9IHdvcmRCcmVha0l0ZXJhdG9yKFN0cmluZ1ZpZXcoc3RyaW5nKS5zdWJzdHJpbmcoMCwgbGVu
Z3RoKSk7CisgICAgVUJyZWFrSXRlcmF0b3IqIGl0ID0gd29yZEJyZWFrSXRlcmF0b3IoU3RyaW5n
VmlldyhzdHJpbmcpLmxlZnQobGVuZ3RoKSk7CiAgICAgdW5zaWduZWQga2VlcExlbmd0aCA9IHRl
eHRCcmVha0F0T3JQcmVjZWRpbmcoaXQsIGtlZXBDb3VudCk7Ci0gICAgU3RyaW5nVmlldyhzdHJp
bmcpLnN1YnN0cmluZygwLCBrZWVwTGVuZ3RoKS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChi
dWZmZXIpOworICAgIFN0cmluZ1ZpZXcoc3RyaW5nKS5sZWZ0KGtlZXBMZW5ndGgpLmdldENoYXJh
Y3RlcnNXaXRoVXBjb252ZXJ0KGJ1ZmZlcik7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZ3VhcmQgdGhpcyBjb2RlIGJlaGluZCBhbiBlZGl0aW5n
IGJlaGF2aW9yLiBUaGVuIHdlIGNhbiByZW1vdmUgdGhlIFBMQVRGT1JNKElPU19GQU1JTFkpLWd1
YXJkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApp
bmRleCA1OThjMWEwMWQ4YTM4OWM4NmIzMDlhZGM1ZmIyMmUwZWRhYmIwMmJmLi5hMzVhM2EyMDZh
ZjE0NmRkYjU3MGVkNDQxYjYyNTQ1M2ZjZjkwNWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtOTQxLDcgKzk0MSw3IEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpzZXRQbGF5YmluVVJMKGNvbnN0IFVSTCYgdXJsKQog
ICAgIC8vIENsZWFuIG91dCBldmVyeXRoaW5nIGFmdGVyIGZpbGU6Ly8gdXJsIHBhdGguCiAgICAg
U3RyaW5nIGNsZWFuVVJMU3RyaW5nKHVybC5zdHJpbmcoKSk7CiAgICAgaWYgKHVybC5pc0xvY2Fs
RmlsZSgpKQotICAgICAgICBjbGVhblVSTFN0cmluZyA9IGNsZWFuVVJMU3RyaW5nLnN1YnN0cmlu
ZygwLCB1cmwucGF0aEVuZCgpKTsKKyAgICAgICAgY2xlYW5VUkxTdHJpbmcgPSBjbGVhblVSTFN0
cmluZy5sZWZ0KHVybC5wYXRoRW5kKCkpOwogCiAgICAgbV91cmwgPSBVUkwgeyBjbGVhblVSTFN0
cmluZyB9OwogICAgIEdTVF9JTkZPX09CSkVDVChwaXBlbGluZSgpLCAiTG9hZCAlcyIsIG1fdXJs
LnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9Tb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvU291
cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNWQ1NDE5ZTg0OGVhNjZlNDVmNWQ4
MzM1YjVjOTYyY2U2NDQ1OWQ1YS4uZWJhYjA5ZGUxNTA3NmVhMmFjOGMwNTAxOTM5NTM1ODQwMTU2
YTJkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL21zZS9Tb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1NvdXJjZUJ1ZmZlclByaXZhdGVH
U3RyZWFtZXIuY3BwCkBAIC0zMTAsNyArMzEwLDcgQEAgc2l6ZV90IFNvdXJjZUJ1ZmZlclByaXZh
dGVHU3RyZWFtZXI6OnBsYXRmb3JtTWF4aW11bUJ1ZmZlclNpemUoKSBjb25zdAogICAgICAgICAg
ICAgICAgIGVsc2UgaWYgKHZhbHVlLmVuZHNXaXRoKCdtJykpCiAgICAgICAgICAgICAgICAgICAg
IHVuaXRzID0gMTAyNCAqIDEwMjQ7CiAgICAgICAgICAgICAgICAgaWYgKHVuaXRzICE9IDEpCi0g
ICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUuc3Vic3RyaW5nKDAsIHZhbHVlLmxlbmd0
aCgpLTEpOworICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLmxlZnQodmFsdWUubGVu
Z3RoKCktMSk7CiAgICAgICAgICAgICAgICAgYXV0byBwYXJzZWRTaXplID0gcGFyc2VJbnRlZ2Vy
PHNpemVfdD4odmFsdWUpOwogICAgICAgICAgICAgICAgIGlmICghcGFyc2VkU2l6ZSkKICAgICAg
ICAgICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250Q2FjaGVXaW4uY3BwCmluZGV4IDQ1MDRkMDE4ZjFkNzdkMjQ0
YjM3YzlhYjhlZTZiYmY0ODMyMTIxNGIuLjY2MTNmYzQxNmYyN2ExY2VlNjQ1YjVhM2ZiZjI1YTJj
YTdjNjBjZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9Gb250Q2FjaGVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9Gb250Q2FjaGVXaW4uY3BwCkBAIC01MTcsNyArNTE3LDcgQEAgc3RhdGljIEdESU9iamVj
dDxIRk9OVD4gY3JlYXRlR0RJRm9udChjb25zdCBBdG9tU3RyaW5nJiBmYW1pbHksIExPTkcgZGVz
aXJlZFdlaWcKIAogICAgIExPR0ZPTlQgbG9nRm9udDsKICAgICBsb2dGb250LmxmQ2hhclNldCA9
IERFRkFVTFRfQ0hBUlNFVDsKLSAgICBTdHJpbmdWaWV3IHRydW5jYXRlZEZhbWlseSA9IFN0cmlu
Z1ZpZXcoZmFtaWx5KS5zdWJzdHJpbmcoMCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExGX0ZBQ0VT
SVpFIC0gMSkpOworICAgIFN0cmluZ1ZpZXcgdHJ1bmNhdGVkRmFtaWx5ID0gU3RyaW5nVmlldyhm
YW1pbHkpLmxlZnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExGX0ZBQ0VTSVpFIC0gMSkpOwogICAg
IHRydW5jYXRlZEZhbWlseS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydCh1Y2hhckZyb20obG9n
Rm9udC5sZkZhY2VOYW1lKSk7CiAgICAgbG9nRm9udC5sZkZhY2VOYW1lW3RydW5jYXRlZEZhbWls
eS5sZW5ndGgoKV0gPSAwOwogICAgIGxvZ0ZvbnQubGZQaXRjaEFuZEZhbWlseSA9IDA7CkBAIC02
MzEsNyArNjMxLDcgQEAgVmVjdG9yPEZvbnRTZWxlY3Rpb25DYXBhYmlsaXRpZXM+IEZvbnRDYWNo
ZTo6Z2V0Rm9udFNlbGVjdGlvbkNhcGFiaWxpdGllc0luRmFtaWwKIAogICAgIExPR0ZPTlQgbG9n
Rm9udDsKICAgICBsb2dGb250LmxmQ2hhclNldCA9IERFRkFVTFRfQ0hBUlNFVDsKLSAgICBTdHJp
bmdWaWV3IHRydW5jYXRlZEZhbWlseSA9IFN0cmluZ1ZpZXcoZmFtaWx5TmFtZSkuc3Vic3RyaW5n
KDAsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihMRl9GQUNFU0laRSAtIDEpKTsKKyAgICBTdHJpbmdW
aWV3IHRydW5jYXRlZEZhbWlseSA9IFN0cmluZ1ZpZXcoZmFtaWx5TmFtZSkubGVmdChzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oTEZfRkFDRVNJWkUgLSAxKSk7CiAgICAgdHJ1bmNhdGVkRmFtaWx5Lmdl
dENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KHVjaGFyRnJvbShsb2dGb250LmxmRmFjZU5hbWUpKTsK
ICAgICBsb2dGb250LmxmRmFjZU5hbWVbdHJ1bmNhdGVkRmFtaWx5Lmxlbmd0aCgpXSA9IDA7CiAg
ICAgbG9nRm9udC5sZlBpdGNoQW5kRmFtaWx5ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9Vc2VyQWdlbnRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvVXNlckFnZW50SU9TLm1tCmluZGV4IDhkNWM0M2RlODM5NTU5OGMyMzk5YTM4YTgzZGVh
MzhjMTRkMjk2YTUuLjM3ZjE3MzQwNjNiNzhjMzE4NzM4OWQ2OTA1NWQzZDYxZWE2YjFkZjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Vc2VyQWdlbnRJT1MubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbQpAQCAtNzQsNyAr
NzQsNyBAQCBzdGF0aWMgU3RyaW5nVmlldyBkZXZpY2VOYW1lRm9yVXNlckFnZW50KCkKICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZX1NJTVVMQVRPUikKICAgICAgICAgc2l6ZV90IGxvY2F0aW9uID0g
bmFtZS5maW5kKCIgU2ltdWxhdG9yIik7CiAgICAgICAgIGlmIChsb2NhdGlvbiAhPSBub3RGb3Vu
ZCkKLSAgICAgICAgICAgIHJldHVybiBuYW1lLnN1YnN0cmluZygwLCBsb2NhdGlvbik7CisgICAg
ICAgICAgICByZXR1cm4gbmFtZS5sZWZ0KGxvY2F0aW9uKTsKICNlbmRpZgogICAgICAgICByZXR1
cm4gbmFtZTsKICAgICB9KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0NhY2hlVmFsaWRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0NhY2hlVmFsaWRhdGlvbi5jcHAKaW5kZXggODVlMjRhNGE3ZmM4MGM2NTZjZjQ4ODhlOTI3
YWIwYjViYjA0ZjVhMS4uYzc0MzE4OTkyOGIzZjZhOWJiMzlmNmZmNGZjMDk5M2ZlMDkwY2I1NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ2FjaGVWYWxpZGF0
aW9uLmNwcApAQCAtMjEwLDcgKzIxMCw3IEBAIGlubGluZSBib29sIGlzQ29udHJvbENoYXJhY3Rl
ck9yU3BhY2UoVUNoYXIgY2hhcmFjdGVyKQogCiBpbmxpbmUgU3RyaW5nVmlldyB0cmltVG9OZXh0
U2VwYXJhdG9yKFN0cmluZ1ZpZXcgc3RyaW5nKQogewotICAgIHJldHVybiBzdHJpbmcuc3Vic3Ry
aW5nKDAsIHN0cmluZy5maW5kKGlzQ2FjaGVIZWFkZXJTZXBhcmF0b3IpKTsKKyAgICByZXR1cm4g
c3RyaW5nLmxlZnQoc3RyaW5nLmZpbmQoaXNDYWNoZUhlYWRlclNlcGFyYXRvcikpOwogfQogCiBz
dGF0aWMgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+IHBhcnNlQ2FjaGVIZWFkZXIo
Y29uc3QgU3RyaW5nJiBoZWFkZXIpCkBAIC0yNjYsNyArMjY2LDcgQEAgc3RhdGljIFZlY3Rvcjxz
dGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiBwYXJzZUNhY2hlSGVhZGVyKGNvbnN0IFN0cmluZyYg
aGVhZGVyKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogICAgICAgICAv
LyBUaGUgdmFsdWUgaXMgZGVsaW1pdGVkIGJ5IHRoZSBuZXh0IGNvbW1hCi0gICAgICAgIHJlc3Vs
dC5hcHBlbmQoeyBkaXJlY3RpdmUsIHRyaW1Ub05leHRTZXBhcmF0b3IodmFsdWUuc3Vic3RyaW5n
KDAsIG5leHRDb21tYVBvc2l0aW9uMikpLnRvU3RyaW5nKCkgfSk7CisgICAgICAgIHJlc3VsdC5h
cHBlbmQoeyBkaXJlY3RpdmUsIHRyaW1Ub05leHRTZXBhcmF0b3IodmFsdWUubGVmdChuZXh0Q29t
bWFQb3NpdGlvbjIpKS50b1N0cmluZygpIH0pOwogICAgICAgICBwb3MgKz0gKHNhZmVIZWFkZXIu
ZmluZCgnLCcsIHBvcykgLSBwb3MpICsgMTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3Jh
Z2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFn
ZS5jcHAKaW5kZXggNGVlN2JkMTBmY2MyY2QwMzk1NzU5YjM2ZTA0NTY2ZjAyYWIxYTRjNy4uNjU0
YTZhNDBiZDQ0OWI3NzhmMDJmOTliM2Q0NzdjNjdiZWM2MmU5NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5jcHAKQEAgLTQ2
LDEzICs0NiwxMyBAQCBzdGF0aWMgU3RyaW5nIHByb3RlY3Rpb25TcGFjZU1hcEtleUZyb21VUkwo
Y29uc3QgVVJMJiB1cmwpCiAKICAgICAvLyBSZW1vdmUgdGhlIGxhc3QgcGF0aCBjb21wb25lbnQg
dGhhdCBpcyBub3QgYSBkaXJlY3RvcnkgdG8gZGV0ZXJtaW5lIHRoZSBzdWJ0cmVlIGZvciB3aGlj
aCBjcmVkZW50aWFscyB3aWxsIGFwcGx5LgogICAgIC8vIFdlIGtlZXAgYSBsZWFkaW5nIHNsYXNo
LCBidXQgcmVtb3ZlIGEgdHJhaWxpbmcgb25lLgotICAgIFN0cmluZyBkaXJlY3RvcnlVUkwgPSB1
cmwuc3RyaW5nKCkuc3Vic3RyaW5nKDAsIHVybC5wYXRoRW5kKCkpOworICAgIFN0cmluZyBkaXJl
Y3RvcnlVUkwgPSB1cmwuc3RyaW5nKCkubGVmdCh1cmwucGF0aEVuZCgpKTsKICAgICB1bnNpZ25l
ZCBkaXJlY3RvcnlVUkxQYXRoU3RhcnQgPSB1cmwucGF0aFN0YXJ0KCk7CiAgICAgQVNTRVJUKGRp
cmVjdG9yeVVSTFtkaXJlY3RvcnlVUkxQYXRoU3RhcnRdID09ICcvJyk7CiAgICAgaWYgKGRpcmVj
dG9yeVVSTC5sZW5ndGgoKSA+IGRpcmVjdG9yeVVSTFBhdGhTdGFydCArIDEpIHsKICAgICAgICAg
c2l6ZV90IGluZGV4ID0gZGlyZWN0b3J5VVJMLnJldmVyc2VGaW5kKCcvJyk7CiAgICAgICAgIEFT
U0VSVChpbmRleCAhPSBub3RGb3VuZCk7Ci0gICAgICAgIGRpcmVjdG9yeVVSTCA9IGRpcmVjdG9y
eVVSTC5zdWJzdHJpbmcoMCwgKGluZGV4ICE9IGRpcmVjdG9yeVVSTFBhdGhTdGFydCkgPyBpbmRl
eCA6IGRpcmVjdG9yeVVSTFBhdGhTdGFydCArIDEpOworICAgICAgICBkaXJlY3RvcnlVUkwgPSBk
aXJlY3RvcnlVUkwubGVmdCgoaW5kZXggIT0gZGlyZWN0b3J5VVJMUGF0aFN0YXJ0KSA/IGluZGV4
IDogZGlyZWN0b3J5VVJMUGF0aFN0YXJ0ICsgMSk7CiAgICAgfQogCiAgICAgcmV0dXJuIGRpcmVj
dG9yeVVSTDsKQEAgLTE1NSw3ICsxNTUsNyBAQCBIYXNoTWFwPFN0cmluZywgUHJvdGVjdGlvblNw
YWNlPjo6aXRlcmF0b3IgQ3JlZGVudGlhbFN0b3JhZ2U6OmZpbmREZWZhdWx0UHJvdGVjdAogCiAg
ICAgICAgIHNpemVfdCBpbmRleCA9IGRpcmVjdG9yeVVSTC5yZXZlcnNlRmluZCgnLycsIGRpcmVj
dG9yeVVSTC5sZW5ndGgoKSAtIDIpOwogICAgICAgICBBU1NFUlQoaW5kZXggIT0gbm90Rm91bmQp
OwotICAgICAgICBkaXJlY3RvcnlVUkwgPSBkaXJlY3RvcnlVUkwuc3Vic3RyaW5nKDAsIChpbmRl
eCA9PSBkaXJlY3RvcnlVUkxQYXRoU3RhcnQpID8gaW5kZXggKyAxIDogaW5kZXgpOworICAgICAg
ICBkaXJlY3RvcnlVUkwgPSBkaXJlY3RvcnlVUkwubGVmdCgoaW5kZXggPT0gZGlyZWN0b3J5VVJM
UGF0aFN0YXJ0KSA/IGluZGV4ICsgMSA6IGluZGV4KTsKICAgICAgICAgQVNTRVJUKGRpcmVjdG9y
eVVSTC5sZW5ndGgoKSA+IGRpcmVjdG9yeVVSTFBhdGhTdGFydCk7CiAgICAgfQogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcAppbmRl
eCBjY2I3MThjMDYwMWE0NTY1NzZkNGE2Mzc1ZTRiNjFlNmY4ZTM3Mzg3Li42NzkyNDQwZjBhZjkz
ZDViNmJhZjhjOWRkNzAxZWQ4ZTAyNGM5NTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIHB1
YmxpYzoKICAgICAgICAgaXNCYXNlNjQgPSBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShm
b3JtYXRUeXBlLCAiYmFzZTY0Iik7CiAKICAgICAgICAgLy8gSWYgaGVhZGVyIGRvZXMgbm90IGVu
ZCB3aXRoICJiYXNlNjQiLCBtZWRpYVR5cGUgc2hvdWxkIGJlIHRoZSB3aG9sZSBoZWFkZXIuCi0g
ICAgICAgIGF1dG8gbWVkaWFUeXBlID0gKGlzQmFzZTY0ID8gaGVhZGVyLnN1YnN0cmluZygwLCBt
ZWRpYVR5cGVFbmQpIDogaGVhZGVyKS50b1N0cmluZygpOworICAgICAgICBhdXRvIG1lZGlhVHlw
ZSA9IChpc0Jhc2U2NCA/IGhlYWRlci5sZWZ0KG1lZGlhVHlwZUVuZCkgOiBoZWFkZXIpLnRvU3Ry
aW5nKCk7CiAgICAgICAgIG1lZGlhVHlwZSA9IHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRUUFNw
YWNlcyhtZWRpYVR5cGUpOwogICAgICAgICBpZiAobWVkaWFUeXBlLnN0YXJ0c1dpdGgoJzsnKSkK
ICAgICAgICAgICAgIG1lZGlhVHlwZS5pbnNlcnQoInRleHQvcGxhaW4iX3MsIDApOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcAppbmRleCAzNzEz
NGQ5YTRmZTUwNmM4ZTQ4OWUwMzk0YzYyMWJlNTg5YWM1MmU0Li4wNDg4MWRhMThhMGFjMzFmN2Q4
NTkzNjFiN2VjZTFlNjM4MzllY2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0hUVFBQYXJzZXJzLmNwcApAQCAtMzExLDEwICszMTEsOSBAQCBzdGF0aWMgY29uc3Qg
c2l6ZV90IG1heElucHV0U2FtcGxlU2l6ZSA9IDEyODsKIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJU
eXBlPgogc3RhdGljIFN0cmluZyB0cmltSW5wdXRTYW1wbGUoQ2hhclR5cGUqIHAsIHNpemVfdCBs
ZW5ndGgpCiB7Ci0gICAgU3RyaW5nIHMgPSBTdHJpbmcocCwgc3RkOjptaW48c2l6ZV90PihsZW5n
dGgsIG1heElucHV0U2FtcGxlU2l6ZSkpOwotICAgIGlmIChsZW5ndGggPiBtYXhJbnB1dFNhbXBs
ZVNpemUpCi0gICAgICAgIHMuYXBwZW5kKGhvcml6b250YWxFbGxpcHNpcyk7Ci0gICAgcmV0dXJu
IHM7CisgICAgaWYgKGxlbmd0aCA8PSBtYXhJbnB1dFNhbXBsZVNpemUpCisgICAgICAgIHJldHVy
biBTdHJpbmcocCwgbGVuZ3RoKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZyhTdHJpbmdWaWV3KHAs
IGxlbmd0aCkubGVmdChtYXhJbnB1dFNhbXBsZVNpemUpLCBob3Jpem9udGFsRWxsaXBzaXMpOwog
fQogCiBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBwYXJzZUhUVFBEYXRlKGNvbnN0IFN0cmluZyYg
dmFsdWUpCkBAIC01OTcsNyArNTk2LDcgQEAgc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8U3RyaW5n
VmlldywgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4+PiBwYXJzZVN0cnVjdHVyZWRGaWUKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICArK2luZGV4OwogICAgIH0KLSAgICBTdHJpbmdWaWV3IGJh
cmVJdGVtID0gaGVhZGVyLnN1YnN0cmluZygwLCBpbmRleCk7CisgICAgU3RyaW5nVmlldyBiYXJl
SXRlbSA9IGhlYWRlci5sZWZ0KGluZGV4KTsKIAogICAgIC8vIFBhcnNlIHBhcmFtZXRlcnMgKGh0
dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjODk0MSNzZWN0aW9uLTQuMi4z
LjIpLgogICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IHBhcmFtZXRlcnM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9NSU1FSGVhZGVyLmNwcAppbmRleCBiNDIzNzlmMzNi
MzViZjJlNWQ3MmIxMjdjMmUwM2I2NDBhY2ZjYjZkLi5lZjkzZGRmMWRjYmU1MjFlOTdlNWNhZjZi
OGY1ZDBlZjk5MWM3MmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL01JTUVIZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
TUlNRUhlYWRlci5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgc3RhdGljIEtleVZhbHVlTWFwIHJldHJp
ZXZlS2V5VmFsdWVQYWlycyhXZWJDb3JlOjpTaGFyZWRCdWZmZXJDaHVua1JlYWRlciYgYnVmZmUK
ICAgICAgICAgICAgIC8vIFRoaXMgaXMgbm90IGEga2V5IHZhbHVlIHBhaXIsIGlnbm9yZS4KICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgICAgIGtleSA9IGxpbmUuc3Vic3Ry
aW5nKDAsIHNlbWlDb2xvbkluZGV4KS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpLnN0cmlwV2hp
dGVTcGFjZSgpOworICAgICAgICBrZXkgPSBsaW5lLmxlZnQoc2VtaUNvbG9uSW5kZXgpLmNvbnZl
cnRUb0FTQ0lJTG93ZXJjYXNlKCkuc3RyaXBXaGl0ZVNwYWNlKCk7CiAgICAgICAgIHZhbHVlLmFw
cGVuZChsaW5lLnN1YnN0cmluZyhzZW1pQ29sb25JbmRleCArIDEpKTsKICAgICB9CiAgICAgLy8g
U3RvcmUgdGhlIGxhc3QgcHJvcGVydHkgaWYgdGhlcmUgaXMgb25lLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwCmluZGV4IDA0ZTY0
Y2QyYzdhOTBkOWNlM2RjMjlmOGIyZDE2NzgyNDBmYTAzNGIuLjc1YjE2YjEyYzllMzJjMTc5NDE4
MWIxZWQ5MTE2NmNhZjU0MDZiNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9Db29raWVVdGlsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ29va2llVXRpbC5jcHAKQEAgLTk3LDcgKzk3LDcgQEAgc3RhdGljIHZv
aWQgcGFyc2VDb29raWVBdHRyaWJ1dGVzKGNvbnN0IFN0cmluZyYgYXR0cmlidXRlLCBib29sJiBo
YXNNYXhBZ2UsIENvb2sKICAgICBTdHJpbmcgYXR0cmlidXRlVmFsdWU7CiAKICAgICBpZiAoYXNz
aWdubWVudFBvc2l0aW9uICE9IG5vdEZvdW5kKSB7Ci0gICAgICAgIGF0dHJpYnV0ZU5hbWUgPSBh
dHRyaWJ1dGUuc3Vic3RyaW5nKDAsIGFzc2lnbm1lbnRQb3NpdGlvbikuc3RyaXBXaGl0ZVNwYWNl
KCk7CisgICAgICAgIGF0dHJpYnV0ZU5hbWUgPSBhdHRyaWJ1dGUubGVmdChhc3NpZ25tZW50UG9z
aXRpb24pLnN0cmlwV2hpdGVTcGFjZSgpOwogICAgICAgICBhdHRyaWJ1dGVWYWx1ZSA9IGF0dHJp
YnV0ZS5zdWJzdHJpbmcoYXNzaWdubWVudFBvc2l0aW9uICsgMSkuc3RyaXBXaGl0ZVNwYWNlKCk7
CiAgICAgfSBlbHNlCiAgICAgICAgIGF0dHJpYnV0ZU5hbWUgPSBhdHRyaWJ1dGUuc3RyaXBXaGl0
ZVNwYWNlKCk7CkBAIC0xNTMsNyArMTUzLDcgQEAgc3RkOjpvcHRpb25hbDxDb29raWU+IHBhcnNl
Q29va2llSGVhZGVyKGNvbnN0IFN0cmluZyYgY29va2llTGluZSkKIAogICAgIHNpemVfdCBzZXBh
cmF0b3JQb3NpdGlvbiA9IGNvb2tpZUxpbmUuZmluZCgnOycpOwogCi0gICAgU3RyaW5nIGNvb2tp
ZVBhaXIgPSBzZXBhcmF0b3JQb3NpdGlvbiA9PSBub3RGb3VuZCA/IGNvb2tpZUxpbmUgOiBjb29r
aWVMaW5lLnN1YnN0cmluZygwLCBzZXBhcmF0b3JQb3NpdGlvbik7CisgICAgU3RyaW5nIGNvb2tp
ZVBhaXIgPSBzZXBhcmF0b3JQb3NpdGlvbiA9PSBub3RGb3VuZCA/IGNvb2tpZUxpbmUgOiBjb29r
aWVMaW5lLmxlZnQoc2VwYXJhdG9yUG9zaXRpb24pOwogCiAgICAgU3RyaW5nIGNvb2tpZU5hbWU7
CiAgICAgU3RyaW5nIGNvb2tpZVZhbHVlOwpAQCAtMTY0LDcgKzE2NCw3IEBAIHN0ZDo6b3B0aW9u
YWw8Q29va2llPiBwYXJzZUNvb2tpZUhlYWRlcihjb25zdCBTdHJpbmcmIGNvb2tpZUxpbmUpCiAg
ICAgaWYgKGFzc2lnbm1lbnRQb3NpdGlvbiA9PSBub3RGb3VuZCkKICAgICAgICAgY29va2llVmFs
dWUgPSBjb29raWVQYWlyOwogICAgIGVsc2UgewotICAgICAgICBjb29raWVOYW1lID0gY29va2ll
UGFpci5zdWJzdHJpbmcoMCwgYXNzaWdubWVudFBvc2l0aW9uKTsKKyAgICAgICAgY29va2llTmFt
ZSA9IGNvb2tpZVBhaXIubGVmdChhc3NpZ25tZW50UG9zaXRpb24pOwogICAgICAgICBjb29raWVW
YWx1ZSA9IGNvb2tpZVBhaXIuc3Vic3RyaW5nKGFzc2lnbm1lbnRQb3NpdGlvbiArIDEpOwogICAg
IH0KIApAQCAtMTkzLDcgKzE5Myw3IEBAIFN0cmluZyBkZWZhdWx0UGF0aEZvclVSTChjb25zdCBV
UkwmIHVybCkKICAgICBpZiAoIWxhc3RTbGFzaFBvc2l0aW9uKQogICAgICAgICByZXR1cm4gIi8i
X3M7CiAKLSAgICByZXR1cm4gcGF0aC5zdWJzdHJpbmcoMCwgbGFzdFNsYXNoUG9zaXRpb24pOwor
ICAgIHJldHVybiBwYXRoLmxlZnQobGFzdFNsYXNoUG9zaXRpb24pOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBDb29raWVVdGlsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAppbmRleCBjMGJjMzU2MjcxODZiNGQ2NjM4MTQ1
ODY3OTI3MzRmNTUxNTYyZGI1Li42MDA0Y2MzZTM2MTEyNzY1ZjczM2JmMDU0YTEzNjUwODc3ZTNm
OGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bENhY2hlRW50cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsQ2FjaGVFbnRyeS5jcHAKQEAgLTQ5LDkgKzQ5LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogQ3VybENhY2hlRW50cnk6OkN1cmxDYWNoZUVudHJ5KGNvbnN0IFN0cmluZyYgdXJsLCBS
ZXNvdXJjZUhhbmRsZSogam9iLCBjb25zdCBTdHJpbmcmIGNhY2hlRGlyKQotICAgIDogbV9oZWFk
ZXJGaWxlbmFtZShjYWNoZURpcikKLSAgICAsIG1fY29udGVudEZpbGVuYW1lKGNhY2hlRGlyKQot
ICAgICwgbV9jb250ZW50RmlsZShGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxl
KQorICAgIDogbV9jb250ZW50RmlsZShGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFu
ZGxlKQogICAgICwgbV9lbnRyeVNpemUoMCkKICAgICAsIG1fZXhwaXJlRGF0ZShXYWxsVGltZTo6
ZnJvbVJhd1NlY29uZHMoLTEpKQogICAgICwgbV9oZWFkZXJQYXJzZWQoZmFsc2UpCkBAIC02MCwx
MSArNTgsOCBAQCBDdXJsQ2FjaGVFbnRyeTo6Q3VybENhY2hlRW50cnkoY29uc3QgU3RyaW5nJiB1
cmwsIFJlc291cmNlSGFuZGxlKiBqb2IsIGNvbnN0IFN0cgogewogICAgIGdlbmVyYXRlQmFzZUZp
bGVuYW1lKHVybC5sYXRpbjEoKSk7CiAKLSAgICBtX2hlYWRlckZpbGVuYW1lLmFwcGVuZChtX2Jh
c2VuYW1lKTsKLSAgICBtX2hlYWRlckZpbGVuYW1lLmFwcGVuZCgiLmhlYWRlciJfcyk7Ci0KLSAg
ICBtX2NvbnRlbnRGaWxlbmFtZS5hcHBlbmQobV9iYXNlbmFtZSk7Ci0gICAgbV9jb250ZW50Rmls
ZW5hbWUuYXBwZW5kKCIuY29udGVudCJfcyk7CisgICAgbV9oZWFkZXJGaWxlbmFtZSA9IG1ha2VT
dHJpbmcoY2FjaGVEaXIsIG1fYmFzZW5hbWUsICIuaGVhZGVyIl9zKTsKKyAgICBtX2NvbnRlbnRG
aWxlbmFtZSA9IG1ha2VTdHJpbmcoY2FjaGVEaXIsIG1fYmFzZW5hbWUsICIuY29udGVudCJfcyk7
CiB9CiAKIEN1cmxDYWNoZUVudHJ5Ojp+Q3VybENhY2hlRW50cnkoKQpAQCAtMTM4LDEyICsxMzMs
OCBAQCBib29sIEN1cmxDYWNoZUVudHJ5OjpzYXZlUmVzcG9uc2VIZWFkZXJzKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogICAgIEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9y
IGl0ID0gcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkcygpLmJlZ2luKCk7CiAgICAgSFRUUEhlYWRl
ck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkcygpLmVu
ZCgpOwogICAgIHdoaWxlIChpdCAhPSBlbmQpIHsKLSAgICAgICAgU3RyaW5nIGhlYWRlckZpZWxk
ID0gaXQtPmtleTsKLSAgICAgICAgaGVhZGVyRmllbGQuYXBwZW5kKCI6ICJfcyk7Ci0gICAgICAg
IGhlYWRlckZpZWxkLmFwcGVuZChpdC0+dmFsdWUpOwotICAgICAgICBoZWFkZXJGaWVsZC5hcHBl
bmQoIlxuIl9zKTsKLSAgICAgICAgQ1N0cmluZyBoZWFkZXJGaWVsZExhdGluMSA9IGhlYWRlckZp
ZWxkLmxhdGluMSgpOwotICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShoZWFkZXJGaWxl
LCBoZWFkZXJGaWVsZExhdGluMS5kYXRhKCksIGhlYWRlckZpZWxkTGF0aW4xLmxlbmd0aCgpKTsK
KyAgICAgICAgYXV0byBoZWFkZXJGaWVsZCA9IG1ha2VTdHJpbmcoaXQtPmtleSwgIjogIiwgaXQt
PnZhbHVlLCAnXG4nKS5sYXRpbjEoKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUo
aGVhZGVyRmlsZSwgaGVhZGVyRmllbGQuZGF0YSgpLCBoZWFkZXJGaWVsZC5sZW5ndGgoKSk7CiAg
ICAgICAgIG1fY2FjaGVkUmVzcG9uc2Uuc2V0SFRUUEhlYWRlckZpZWxkKGl0LT5rZXksIGl0LT52
YWx1ZSk7CiAgICAgICAgICsraXQ7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCmluZGV4IDcwMmM1
YjMxYTAxZWUyNDZjN2M3NWQ3YjU1NTg0YWVhZDZmYjA1MzkuLmZkM2RmOTRkZGJhMjcxMjI3Mjg4
ZDE1MmJlYWQ5YjY0YmU5ZWYxYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAKQEAgLTg1LDcgKzg1LDcg
QEAgdm9pZCBDdXJsQ2FjaGVNYW5hZ2VyOjpzZXRDYWNoZURpcmVjdG9yeShjb25zdCBTdHJpbmcm
IGRpcmVjdG9yeSkKICAgICAgICAgfQogICAgIH0KIAotICAgIG1fY2FjaGVEaXIuYXBwZW5kKCIv
Il9zKTsKKyAgICBtX2NhY2hlRGlyID0gbWFrZVN0cmluZyhtX2NhY2hlRGlyLCAnLycpOwogCiAg
ICAgbV9kaXNhYmxlZCA9IGZhbHNlOwogICAgIGxvYWRJbmRleCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5jcHAKaW5kZXggN2Rl
ODZjMDhlMzQ5NmRmMzBmZTE0MDZiOGNiMzJkZmZlMjBjZWNmMC4uOTgxODQ5ZGYwM2MxMDA5NWEx
ODU2ZmJjOTA5OGVjZDE5MmRjMzM1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5j
bHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
Q29uY2F0ZW5hdGVOdW1iZXJzLmg+CiAKICNpZiBPUyhXSU5ET1dTKQogI2luY2x1ZGUgIldlYkNv
cmVCdW5kbGVXaW4uaCIKQEAgLTg5MCwxMSArODkxLDggQEAgdm9pZCBDdXJsSGFuZGxlOjphZGRF
eHRyYU5ldHdvcmtMb2FkTWV0cmljcyhOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0
cmkKICAgICBhZGRpdGlvbmFsTWV0cmljcy0+cmVxdWVzdEJvZHlCeXRlc1NlbnQgPSByZXF1ZXN0
Qm9keVNpemU7CiAgICAgYWRkaXRpb25hbE1ldHJpY3MtPnJlc3BvbnNlSGVhZGVyQnl0ZXNSZWNl
aXZlZCA9IHJlc3BvbnNlSGVhZGVyU2l6ZTsKIAotICAgIGlmIChpcCkgewotICAgICAgICBhZGRp
dGlvbmFsTWV0cmljcy0+cmVtb3RlQWRkcmVzcyA9IFN0cmluZzo6ZnJvbUxhdGluMShpcCk7Ci0g
ICAgICAgIGlmIChwb3J0KQotICAgICAgICAgICAgYWRkaXRpb25hbE1ldHJpY3MtPnJlbW90ZUFk
ZHJlc3MuYXBwZW5kKCI6IiArIFN0cmluZzo6bnVtYmVyKHBvcnQpKTsKLSAgICB9CisgICAgaWYg
KGlwKQorICAgICAgICBhZGRpdGlvbmFsTWV0cmljcy0+cmVtb3RlQWRkcmVzcyA9IHBvcnQgPyBt
YWtlU3RyaW5nKGlwLCAnOicsIHBvcnQpIDogU3RyaW5nOjpmcm9tTGF0aW4xKGlwKTsKIAogICAg
IGlmIChtX3Rsc0Nvbm5lY3Rpb25JbmZvKSB7CiAgICAgICAgIGFkZGl0aW9uYWxNZXRyaWNzLT50
bHNQcm90b2NvbCA9IG1fdGxzQ29ubmVjdGlvbkluZm8tPnByb3RvY29sOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVUb1NjcmlwdE1hcHBpbmcuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVUb1NjcmlwdE1hcHBpbmcuY3BwCmlu
ZGV4IDcyMzA5ZWMwZGMxZTRmZDNiODFmM2Q1NDIxNThhOWVhYTAyZmE3MmMuLjg1N2I5M2JlNTM3
ZWRkMTZkYjA2OThiM2M5OGVjOGM0OTM4YTU1YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvTG9jYWxlVG9TY3JpcHRNYXBwaW5nLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZVRvU2NyaXB0TWFwcGluZy5jcHAKQEAgLTM3NSw3ICsz
NzUsNyBAQCBVU2NyaXB0Q29kZSBsb2NhbGVUb1NjcmlwdENvZGVGb3JGb250U2VsZWN0aW9uKGNv
bnN0IFN0cmluZyYgbG9jYWxlKQogICAgICAgICBVU2NyaXB0Q29kZSBjb2RlID0gc2NyaXB0TmFt
ZVRvQ29kZShjYW5vbmljYWxMb2NhbGUuc3Vic3RyaW5nKHVuZGVyc2NvcmVQb3NpdGlvbiArIDEp
KTsKICAgICAgICAgaWYgKGNvZGUgIT0gVVNDUklQVF9JTlZBTElEX0NPREUgJiYgY29kZSAhPSBV
U0NSSVBUX1VOS05PV04pCiAgICAgICAgICAgICByZXR1cm4gY29kZTsKLSAgICAgICAgY2Fub25p
Y2FsTG9jYWxlID0gY2Fub25pY2FsTG9jYWxlLnN1YnN0cmluZygwLCB1bmRlcnNjb3JlUG9zaXRp
b24pOworICAgICAgICBjYW5vbmljYWxMb2NhbGUgPSBjYW5vbmljYWxMb2NhbGUubGVmdCh1bmRl
cnNjb3JlUG9zaXRpb24pOwogICAgIH0KICAgICByZXR1cm4gVVNDUklQVF9DT01NT047CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKaW5kZXggNGNl
MzI4YTgzMWM5MGJmNmJkMjI4ZTFmMDcyNDA4ZDY0YjMzYTQ1ZS4uN2QxNTM2YTdkNjRkM2ZjODM2
Mjc2MmYzYTcwNGRhNTM4YzZmN2E2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9QYXN0ZWJvYXJkV2luLmNwcApAQCAtNjA1LDcgKzYwNSw3IEBAIHN0YXRpYyBTdHJpbmcgZmls
ZVN5c3RlbVBhdGhGcm9tVVJMT3JUaXRsZShjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3Qg
U3RyaW5nCiAKICAgICBpZiAoIXRpdGxlLmlzRW1wdHkoKSkgewogICAgICAgICBzaXplX3QgbGVu
ID0gc3RkOjptaW48c2l6ZV90Pih0aXRsZS5sZW5ndGgoKSwgZnNQYXRoTWF4TGVuZ3RoRXhjbHVk
aW5nRXh0ZW5zaW9uKTsKLSAgICAgICAgU3RyaW5nVmlldyh0aXRsZSkuc3Vic3RyaW5nKDAsIGxl
bikuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoZnNQYXRoQnVmZmVyKTsKKyAgICAgICAgU3Ry
aW5nVmlldyh0aXRsZSkubGVmdChsZW4pLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGZzUGF0
aEJ1ZmZlcik7CiAgICAgICAgIGZzUGF0aEJ1ZmZlcltsZW5dID0gMDsKICAgICAgICAgcGF0aFJl
bW92ZUJhZEZTQ2hhcmFjdGVycyh3Y2hhckZyb20oZnNQYXRoQnVmZmVyKSwgbGVuKTsKICAgICB9
CkBAIC02MjAsMTAgKzYyMCwxMCBAQCBzdGF0aWMgU3RyaW5nIGZpbGVTeXN0ZW1QYXRoRnJvbVVS
TE9yVGl0bGUoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZwogICAgICAgICBh
dXRvIGxhc3RDb21wb25lbnQgPSB1cmwubGFzdFBhdGhDb21wb25lbnQoKTsKICAgICAgICAgaWYg
KHVybC5pc0xvY2FsRmlsZSgpIHx8ICghaXNMaW5rICYmICFsYXN0Q29tcG9uZW50LmlzRW1wdHko
KSkpIHsKICAgICAgICAgICAgIGxlbiA9IHN0ZDo6bWluPERXT1JEPihmc1BhdGhNYXhMZW5ndGhF
eGNsdWRpbmdFeHRlbnNpb24sIGxhc3RDb21wb25lbnQubGVuZ3RoKCkpOwotICAgICAgICAgICAg
bGFzdENvbXBvbmVudC5zdWJzdHJpbmcoMCwgbGVuKS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVy
dChmc1BhdGhCdWZmZXIpOworICAgICAgICAgICAgbGFzdENvbXBvbmVudC5sZWZ0KGxlbikuZ2V0
Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoZnNQYXRoQnVmZmVyKTsKICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIGxlbiA9IHN0ZDo6bWluPERXT1JEPihmc1BhdGhNYXhMZW5ndGhFeGNsdWRp
bmdFeHRlbnNpb24sIHVybFN0cmluZy5sZW5ndGgoKSk7Ci0gICAgICAgICAgICBTdHJpbmdWaWV3
KHVybFN0cmluZykuc3Vic3RyaW5nKDAsIGxlbikuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQo
ZnNQYXRoQnVmZmVyKTsKKyAgICAgICAgICAgIFN0cmluZ1ZpZXcodXJsU3RyaW5nKS5sZWZ0KGxl
bikuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoZnNQYXRoQnVmZmVyKTsKICAgICAgICAgfQog
ICAgICAgICBmc1BhdGhCdWZmZXJbbGVuXSA9IDA7CiAgICAgICAgIHBhdGhSZW1vdmVCYWRGU0No
YXJhY3RlcnMod2NoYXJGcm9tKGZzUGF0aEJ1ZmZlciksIGxlbik7CkBAIC03MjEsNyArNzIxLDcg
QEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVVSTFRvRGF0YU9iamVjdChjb25zdCBVUkwmIGt1cmws
IGNvbnN0IFN0cmluZyYgdGl0bGVTdHIpCiAgICAgZmdkLT5mZ2RbMF0ubkZpbGVTaXplTG93ID0g
Y29udGVudC5sZW5ndGgoKTsKIAogICAgIHVuc2lnbmVkIG1heFNpemUgPSBzdGQ6Om1pbjx1bnNp
Z25lZD4oZnNQYXRoLmxlbmd0aCgpLCBXVEZfQVJSQVlfTEVOR1RIKGZnZC0+ZmdkWzBdLmNGaWxl
TmFtZSkpOwotICAgIFN0cmluZ1ZpZXcoZnNQYXRoKS5zdWJzdHJpbmcoMCwgbWF4U2l6ZSkuZ2V0
Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQodWNoYXJGcm9tKGZnZC0+ZmdkWzBdLmNGaWxlTmFtZSkp
OworICAgIFN0cmluZ1ZpZXcoZnNQYXRoKS5sZWZ0KG1heFNpemUpLmdldENoYXJhY3RlcnNXaXRo
VXBjb252ZXJ0KHVjaGFyRnJvbShmZ2QtPmZnZFswXS5jRmlsZU5hbWUpKTsKICAgICBHbG9iYWxV
bmxvY2sodXJsRmlsZURlc2NyaXB0b3IpOwogCiAgICAgY2hhciogZmlsZUNvbnRlbnRzID0gc3Rh
dGljX2Nhc3Q8Y2hhcio+KEdsb2JhbExvY2sodXJsRmlsZUNvbnRlbnQpKTsKQEAgLTk2MCw3ICs5
NjAsNyBAQCBzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxJbWFnZUZpbGVEZXNjcmlwdG9yKGNv
bnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmCiAgICAgfQogCiAgICAgaW50IG1heFNpemUg
PSBzdGQ6Om1pbjxpbnQ+KGZzUGF0aC5sZW5ndGgoKSwgV1RGX0FSUkFZX0xFTkdUSChmZ2QtPmZn
ZFswXS5jRmlsZU5hbWUpKTsKLSAgICBTdHJpbmdWaWV3KGZzUGF0aCkuc3Vic3RyaW5nKDAsIG1h
eFNpemUpLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KHVjaGFyRnJvbShmZ2QtPmZnZFswXS5j
RmlsZU5hbWUpKTsKKyAgICBTdHJpbmdWaWV3KGZzUGF0aCkubGVmdChtYXhTaXplKS5nZXRDaGFy
YWN0ZXJzV2l0aFVwY29udmVydCh1Y2hhckZyb20oZmdkLT5mZ2RbMF0uY0ZpbGVOYW1lKSk7CiAg
ICAgR2xvYmFsVW5sb2NrKG1lbU9iaik7CiAKICAgICByZXR1cm4gbWVtT2JqOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dlYkNvcmVUZXh0UmVuZGVyZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dlYkNvcmVUZXh0UmVuZGVyZXIuY3BwCmluZGV4
IGU5YzNjOWFlZjAwYmYwN2QzMTBjNmE5NGM2MDc0YzI5ZjNjNzMzZjIuLmJiODBjNjdjYTEwNmZi
MjJkYWQ2N2E3MjhkZjgxYjRiYWZjYjljZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9XZWJDb3JlVGV4dFJlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vV2ViQ29yZVRleHRSZW5kZXJlci5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgc3Rh
dGljIHZvaWQgZG9EcmF3VGV4dEF0UG9pbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBTdHJpbmcmIHRleHQsIGNvbnMKIAogICAgICAgICBpbnQgYmVmb3JlV2lkdGg7CiAgICAgICAg
IGlmICh1bmRlcmxpbmVkSW5kZXggPiAwKSB7Ci0gICAgICAgICAgICBUZXh0UnVuIGJlZm9yZVJ1
bihTdHJpbmdWaWV3KHRleHQpLnN1YnN0cmluZygwLCB1bmRlcmxpbmVkSW5kZXgpKTsKKyAgICAg
ICAgICAgIFRleHRSdW4gYmVmb3JlUnVuKFN0cmluZ1ZpZXcodGV4dCkubGVmdCh1bmRlcmxpbmVk
SW5kZXgpKTsKICAgICAgICAgICAgIGJlZm9yZVdpZHRoID0gZm9udC53aWR0aChiZWZvcmVSdW4p
OwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGJlZm9yZVdpZHRoID0gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggZDk3Nzg5
NWFmZGMxNzhlNjNmM2E0Y2RhOTEyMGY2NjNhYjVlMTk4NS4uNzcwNWFmNWMzNzVlMWM0OGE2M2Q0
OWQ1M2I2ZjM1ZGU0ZmYyZmQyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyQmFja2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQmFja2luZy5jcHAKQEAgLTUxNSwxMCArNTE1LDggQEAgdm9pZCBSZW5kZXJMYXll
ckJhY2tpbmc6OmNyZWF0ZVByaW1hcnlHcmFwaGljc0xheWVyKCkKIHsKICAgICBTdHJpbmcgbGF5
ZXJOYW1lID0gbV9vd25pbmdMYXllci5uYW1lKCk7CiAgICAgY29uc3QgdW5zaWduZWQgbWF4TGF5
ZXJOYW1lTGVuZ3RoID0gMTAwOwotICAgIGlmIChsYXllck5hbWUubGVuZ3RoKCkgPiBtYXhMYXll
ck5hbWVMZW5ndGgpIHsKLSAgICAgICAgbGF5ZXJOYW1lLnRydW5jYXRlKG1heExheWVyTmFtZUxl
bmd0aCk7Ci0gICAgICAgIGxheWVyTmFtZS5hcHBlbmQoIi4uLiJfcyk7Ci0gICAgfQorICAgIGlm
IChsYXllck5hbWUubGVuZ3RoKCkgPiBtYXhMYXllck5hbWVMZW5ndGgpCisgICAgICAgIGxheWVy
TmFtZSA9IG1ha2VTdHJpbmcoU3RyaW5nVmlldyhsYXllck5hbWUpLmxlZnQobWF4TGF5ZXJOYW1l
TGVuZ3RoKSwgIi4uLiJfcyk7CiAgICAgbV9ncmFwaGljc0xheWVyID0gY3JlYXRlR3JhcGhpY3NM
YXllcihsYXllck5hbWUsIG1faXNGcmFtZUxheWVyV2l0aFRpbGVkQmFja2luZyA/IEdyYXBoaWNz
TGF5ZXI6OlR5cGU6OlBhZ2VUaWxlZEJhY2tpbmcgOiBHcmFwaGljc0xheWVyOjpUeXBlOjpOb3Jt
YWwpOwogCiAgICAgaWYgKG1faXNGcmFtZUxheWVyV2l0aFRpbGVkQmFja2luZykgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCAzODYzMmIxNDI4M2JjMGEx
MzgwNDExNDZhY2E5YzAyMzg2NTRhZGY3Li45NzMzMjNlNDkyYmE3Nzk0ZmRkYTExMDk0OWY5ZDQy
NDM5NGMyMWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApA
QCAtMTI3MCw3ICsxMjcwLDcgQEAgdm9pZCBSZW5kZXJPYmplY3Q6Om91dHB1dFJlbmRlck9iamVj
dChUZXh0U3RyZWFtJiBzdHJlYW0sIGJvb2wgbWFyaywgaW50IGRlcHRoKQogICAgICAgICAgICAg
CiAgICAgICAgICAgICBjb25zdCBpbnQgbWF4UHJpbnRlZExlbmd0aCA9IDgwOwogICAgICAgICAg
ICAgaWYgKHZhbHVlLmxlbmd0aCgpID4gbWF4UHJpbnRlZExlbmd0aCkgewotICAgICAgICAgICAg
ICAgIFN0cmluZyBzdWJzdHJpbmcgPSB2YWx1ZS5zdWJzdHJpbmcoMCwgbWF4UHJpbnRlZExlbmd0
aCk7CisgICAgICAgICAgICAgICAgU3RyaW5nIHN1YnN0cmluZyA9IHZhbHVlLmxlZnQobWF4UHJp
bnRlZExlbmd0aCk7CiAgICAgICAgICAgICAgICAgc3RyZWFtIDw8ICIgXCIiIDw8IHN1YnN0cmlu
Zy51dGY4KCkuZGF0YSgpIDw8ICJcIi4uLiI7CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAg
ICAgICAgICBzdHJlYW0gPDwgIiBcIiIgPDwgdmFsdWUudXRmOCgpLmRhdGEoKSA8PCAiXCIiOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRQb3NpdGlvbnNS
ZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9u
c1Jlc29sdmVyLmNwcAppbmRleCBiYzhjZGJjYzg5N2JhOGU3ZGI1MTgyOTQ3YzY5M2RlOWMyOTBi
MDMxLi44NmMyNmY4NzU4YTRlY2Q5YTJkMmVlNTU1ODJjZTk4ODM2ZDliZjQ3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9uc1Jlc29sdmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9uc1Jlc29s
dmVyLmNwcApAQCAtMTQ3LDcgKzE0Nyw3IEBAIE5hbWVkTGluZUNvbGxlY3Rpb25CYXNlOjpOYW1l
ZExpbmVDb2xsZWN0aW9uQmFzZShjb25zdCBSZW5kZXJHcmlkJiBpbml0aWFsR3JpZCwKICAgICAg
ICAgICAgICAgICBzdGFydFNpZGUgPSBmYWxzZTsKICAgICAgICAgICAgIH0gZWxzZQogICAgICAg
ICAgICAgICAgIHN0YXJ0U2lkZSA9IHRydWU7Ci0gICAgICAgICAgICBhcmVhTmFtZSA9IG5hbWUu
c3Vic3RyaW5nKDAsIHN1ZmZpeCk7CisgICAgICAgICAgICBhcmVhTmFtZSA9IG5hbWUubGVmdChz
dWZmaXgpOwogICAgICAgICB9CiAgICAgICAgIGF1dG8gaW1wbGljaXRMaW5lID0gY2xhbXBlZElt
cGxpY2l0TGluZUZvckFyZWEoKmdyaWRDb250YWluZXJTdHlsZSwgYXJlYU5hbWUsIDAsIG1fbGFz
dExpbmUsIGlzUm93QXhpcywgc3RhcnRTaWRlKTsKICAgICAgICAgaWYgKGltcGxpY2l0TGluZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXN0cy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVGVzdHMuY3BwCmluZGV4IGYwNGI0ZmFmM2U3ODA1YjVhMzJjZGM5YzdjMjA3
NjBmOTY2Zjk3NTAuLjUyNzllYmNjMjdkYzYwZjEzNWIyNzVmZjRkMzU5ZWYzZWQ3MTE2ZmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXN0cy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1Rlc3RzLmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIGJvb2wgU1ZHVGVzdHM6
OmlzVmFsaWQoKSBjb25zdAogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBm
b3IgKGF1dG8mIGxhbmd1YWdlIDogbV9zeXN0ZW1MYW5ndWFnZS0+aXRlbXMoKSkgewotICAgICAg
ICBpZiAobGFuZ3VhZ2UgIT0gZGVmYXVsdExhbmd1YWdlKCkuc3Vic3RyaW5nKDAsIDIpKQorICAg
ICAgICBpZiAobGFuZ3VhZ2UgIT0gZGVmYXVsdExhbmd1YWdlKCkubGVmdCgyKSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiBtX3Jl
cXVpcmVkRXh0ZW5zaW9ucy0+aXRlbXMoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1VSSVJlZmVyZW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVVJJUmVmZXJl
bmNlLmNwcAppbmRleCBlZTQ1YTI5Y2FlMWYxN2ZhNzhiZmI5N2UxMzdjNDA2ZTBjNTc2MGVkLi40
YTliZmU4OTM4MzdjMWQyOTE3ZGE5NWVjYzkzMzg0ZjZjMjAwMjcxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVVJJUmVmZXJlbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVVJJUmVmZXJlbmNlLmNwcApAQCAtNjcsNyArNjcsNyBAQCBTdHJpbmcgU1ZHVVJJUmVm
ZXJlbmNlOjpmcmFnbWVudElkZW50aWZpZXJGcm9tSVJJU3RyaW5nKGNvbnN0IFN0cmluZyYgdXJs
LCBjb25zdAogICAgIGlmICghc3RhcnQpCiAgICAgICAgIHJldHVybiB1cmwuc3Vic3RyaW5nKDEp
OwogCi0gICAgVVJMIGJhc2UgPSBVUkwoZG9jdW1lbnQuYmFzZVVSTCgpLCB1cmwuc3Vic3RyaW5n
KDAsIHN0YXJ0KSk7CisgICAgVVJMIGJhc2UgPSBVUkwoZG9jdW1lbnQuYmFzZVVSTCgpLCB1cmwu
bGVmdChzdGFydCkpOwogICAgIFN0cmluZyBmcmFnbWVudElkZW50aWZpZXIgPSB1cmwuc3Vic3Ry
aW5nKHN0YXJ0KTsKICAgICBVUkwga3VybChiYXNlLCBmcmFnbWVudElkZW50aWZpZXIpOwogICAg
IGlmIChlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKGt1cmwsIGRvY3VtZW50LnVybCgp
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAK
aW5kZXggYzQzNmVhZTIzNDliODllYmYwN2YzOTAwMGRmNTY1ZDM0ZDBiMzUwMy4uMTZlYWI2NTIw
ZTg4YmNjYzM1Mzc0MGI3NzcxN2FkNmUxOTdkMzYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAKQEAgLTM0OCwxMyArMzQ4LDEzIEBAIFNN
SUxUaW1lIFNWR1NNSUxFbGVtZW50OjpwYXJzZUNsb2NrVmFsdWUoU3RyaW5nVmlldyBkYXRhKQog
ICAgIHNpemVfdCBkb3VibGVQb2ludE9uZSA9IHBhcnNlLmZpbmQoJzonKTsKICAgICBzaXplX3Qg
ZG91YmxlUG9pbnRUd28gPSBwYXJzZS5maW5kKCc6JywgZG91YmxlUG9pbnRPbmUgKyAxKTsKICAg
ICBpZiAoZG91YmxlUG9pbnRPbmUgPT0gMiAmJiBkb3VibGVQb2ludFR3byA9PSA1ICYmIHBhcnNl
Lmxlbmd0aCgpID49IDgpIHsKLSAgICAgICAgYXV0byBob3VyID0gcGFyc2VJbnRlZ2VyPHVpbnQ4
X3Q+KHBhcnNlLnN1YnN0cmluZygwLCAyKSk7CisgICAgICAgIGF1dG8gaG91ciA9IHBhcnNlSW50
ZWdlcjx1aW50OF90PihwYXJzZS5sZWZ0KDIpKTsKICAgICAgICAgYXV0byBtaW51dGUgPSBwYXJz
ZUludGVnZXI8dWludDhfdD4ocGFyc2Uuc3Vic3RyaW5nKDMsIDIpKTsKICAgICAgICAgaWYgKCFo
b3VyIHx8ICFtaW51dGUpCiAgICAgICAgICAgICByZXR1cm4gU01JTFRpbWU6OnVucmVzb2x2ZWQo
KTsKICAgICAgICAgcmVzdWx0ID0gKmhvdXIgKiA2MCAqIDYwICsgKm1pbnV0ZSAqIDYwICsgcGFy
c2Uuc3Vic3RyaW5nKDYpLnRvRG91YmxlKG9rKTsKICAgICB9IGVsc2UgaWYgKGRvdWJsZVBvaW50
T25lID09IDIgJiYgZG91YmxlUG9pbnRUd28gPT0gbm90Rm91bmQgJiYgcGFyc2UubGVuZ3RoKCkg
Pj0gNSkgeyAKLSAgICAgICAgYXV0byBtaW51dGUgPSBwYXJzZUludGVnZXI8dWludDhfdD4ocGFy
c2Uuc3Vic3RyaW5nKDAsIDIpKTsKKyAgICAgICAgYXV0byBtaW51dGUgPSBwYXJzZUludGVnZXI8
dWludDhfdD4ocGFyc2UubGVmdCgyKSk7CiAgICAgICAgIGlmICghbWludXRlKQogICAgICAgICAg
ICAgcmV0dXJuIFNNSUxUaW1lOjp1bnJlc29sdmVkKCk7CiAgICAgICAgIHJlc3VsdCA9ICptaW51
dGUgKiA2MCArIHBhcnNlLnN1YnN0cmluZygzKS50b0RvdWJsZShvayk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYi5jcHAKaW5kZXggODA0
ZTZmNGMwODRiMGIxM2U0ZGFhMDg1MGE1MDg2YTY0YTk3YjIzYS4uZmVjNWYzOTYwZGU0OWE5YjAy
OGIxZjAxNDM5YzMwZGFmN2VjYWNlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmNwcApAQCAtMTI5LDcgKzEyOSw3IEBAIFJlc291
cmNlRXJyb3IgU2VydmljZVdvcmtlckpvYjo6dmFsaWRhdGVTZXJ2aWNlV29ya2VyUmVzcG9uc2Uo
Y29uc3QgU2VydmljZVdvcmtlCiAgICAgaWYgKHNlcnZpY2VXb3JrZXJBbGxvd2VkLmlzTnVsbCgp
KSB7CiAgICAgICAgIGF1dG8gcGF0aCA9IGpvYkRhdGEuc2NyaXB0VVJMLnBhdGgoKTsKICAgICAg
ICAgLy8gTGFzdCBwYXJ0IG9mIHRoZSBwYXRoIGlzIHRoZSBzY3JpcHQncyBmaWxlbmFtZS4KLSAg
ICAgICAgbWF4U2NvcGVTdHJpbmcgPSBwYXRoLnN1YnN0cmluZygwLCBwYXRoLnJldmVyc2VGaW5k
KCcvJykgKyAxKS50b1N0cmluZygpOworICAgICAgICBtYXhTY29wZVN0cmluZyA9IHBhdGgubGVm
dChwYXRoLnJldmVyc2VGaW5kKCcvJykgKyAxKS50b1N0cmluZygpOwogICAgIH0gZWxzZSB7CiAg
ICAgICAgIGF1dG8gbWF4U2NvcGUgPSBVUkwoam9iRGF0YS5zY3JpcHRVUkwsIHNlcnZpY2VXb3Jr
ZXJBbGxvd2VkKTsKICAgICAgICAgaWYgKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUobWF4U2NvcGUp
LT5pc1NhbWVPcmlnaW5BcyhTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKGpvYkRhdGEuc2NyaXB0VVJM
KSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbktleS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5jcHAKaW5kZXggN2E4OGZhNzc0ZWRjMTJlMjVl
ZGJjMjUwNDQzY2VhMzEyYWJhMmVmMi4uM2E4ZmFjMTkzOTFlYWMyOTdhZmFjN2ZlMjFmZjhmNDcx
MjFkNmRmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmNwcApAQCAtMTE4LDcgKzExOCw3
IEBAIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleT4gU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbktleTo6ZnJvbURhCiAgICAgaWYgKCFzY29wZS5pc1ZhbGlkKCkpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4gU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbktleSB7IHsga2V5LnN1YnN0cmluZygwLCBmaXJzdCksIGtleS5zdWJzdHJpbmco
Zmlyc3QgKyAxLCBzZWNvbmQgLSBmaXJzdCAtIDEpLCBzaG9ydFBvcnQgfSwgV1RGTW92ZShzY29w
ZSkgfTsKKyAgICByZXR1cm4gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSB7IHsga2V5Lmxl
ZnQoZmlyc3QpLCBrZXkuc3Vic3RyaW5nKGZpcnN0ICsgMSwgc2Vjb25kIC0gZmlyc3QgLSAxKSwg
c2hvcnRQb3J0IH0sIFdURk1vdmUoc2NvcGUpIH07CiB9CiAKICNpZiAhTE9HX0RJU0FCTEVECmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3Bw
CmluZGV4IDdjMzY0MmZlMzM4MWM5NmE5NGQxNTVjYzQ3YWFiZTljZTg1NmI3ZDcuLjg3YWQ4OTU0
OGExYTZhMThkMDhkZmFlMzIyZmI1MjkyNWQ1YWJjNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCkBAIC0xMjY4LDcgKzEyNjgs
NyBAQCBib29sIFNXU2VydmVyOjpjYW5IYW5kbGVTY2hlbWUoU3RyaW5nVmlldyBzY2hlbWUpIGNv
bnN0CiB7CiAgICAgaWYgKHNjaGVtZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIGlmICghZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc2NoZW1lLnN1YnN0cmluZygw
LCA0KSwgImh0dHAiKSkKKyAgICBpZiAoIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHNj
aGVtZS5sZWZ0KDQpLCAiaHR0cCIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKHNj
aGVtZS5sZW5ndGgoKSA9PSA1ICYmIGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwoc2NoZW1lWzRd
LCAncycpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2
ZXIvQ29tbWFuZFJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQuY3Bw
CmluZGV4IDgzNTk2OWJmYTM2Y2UxNmY2MzU2YzZiYTE3Y2E5MmVhMWU5OGRlZGUuLjJiMWI3ZGIx
MjE0YzlmZTZjZWFiOTUxZjM2MTUwMmMxOWVmOTRkMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJE
cml2ZXIvQ29tbWFuZFJlc3VsdC5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9Db21tYW5kUmVz
dWx0LmNwcApAQCAtNzQsNyArNzQsNyBAQCBDb21tYW5kUmVzdWx0OjpDb21tYW5kUmVzdWx0KFJl
ZlB0cjxKU09OOjpWYWx1ZT4mJiByZXN1bHQsIHN0ZDo6b3B0aW9uYWw8RXJyb3JDbwogICAgICAg
ICBTdHJpbmcgZXJyb3JOYW1lOwogICAgICAgICBhdXRvIHBvc2l0aW9uID0gZXJyb3JNZXNzYWdl
LmZpbmQoJzsnKTsKICAgICAgICAgaWYgKHBvc2l0aW9uICE9IG5vdEZvdW5kKSB7Ci0gICAgICAg
ICAgICBlcnJvck5hbWUgPSBlcnJvck1lc3NhZ2Uuc3Vic3RyaW5nKDAsIHBvc2l0aW9uKTsKKyAg
ICAgICAgICAgIGVycm9yTmFtZSA9IGVycm9yTWVzc2FnZS5sZWZ0KHBvc2l0aW9uKTsKICAgICAg
ICAgICAgIG1fZXJyb3JNZXNzYWdlID0gZXJyb3JNZXNzYWdlLnN1YnN0cmluZyhwb3NpdGlvbiAr
IDEpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGVycm9yTmFtZSA9IGVycm9yTWVzc2Fn
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9M
b2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5jcHAKaW5kZXggZTA5
ZDJlOWYzNmNhYjI1YzE3NTQxYzg3NDk2ZmYyOWI5MWEwNTNiNS4uNzJlZDMzNzlkMzZmMmU3ZmY2
ZjUzMDBkNWU2NjNkNzQwMDdhYzI5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFi
YXNlVHJhY2tlci5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5E
YXRhPiBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6Om9yaWdpbnMoKSBjb25zdAogICAgIFZl
Y3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+IGRhdGFiYXNlT3JpZ2luczsKICAgICBmb3IgKGF1dG8m
IHBhdGggOiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KGxvY2FsU3RvcmFnZURpcmVjdG9yeSgp
KSkgewogICAgICAgICBhdXRvIGZpbGVuYW1lID0gRmlsZVN5c3RlbTo6cGF0aEZpbGVOYW1lKHBh
dGgpOwotICAgICAgICBhdXRvIG9yaWdpbklkZW50aWZpZXIgPSBmaWxlbmFtZS5zdWJzdHJpbmco
MCwgZmlsZW5hbWUubGVuZ3RoKCkgLSBzdHJsZW4oIi5sb2NhbHN0b3JhZ2UiKSk7CisgICAgICAg
IGF1dG8gb3JpZ2luSWRlbnRpZmllciA9IGZpbGVuYW1lLmxlZnQoZmlsZW5hbWUubGVuZ3RoKCkg
LSBzdHJsZW4oIi5sb2NhbHN0b3JhZ2UiKSk7CiAgICAgICAgIGF1dG8gb3JpZ2luID0gU2VjdXJp
dHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKG9yaWdpbklkZW50aWZpZXIpOwog
ICAgICAgICBpZiAob3JpZ2luKQogICAgICAgICAgICAgZGF0YWJhc2VPcmlnaW5zLmFwcGVuZChv
cmlnaW4udmFsdWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAppbmRleCBiMWU2ZmYzYzA3OGJlODcx
ZDk1MTBmYTM3NmM0NzAwZTMzYzE5ZmE2Li42MTE2N2E4ZWJhODA1OTEyMGMzMTRkZWIzMjcyMjA5
ZGMxNjhlZDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKQEAgLTIzNSw3ICsyMzUsNyBAQCBzdGF0
aWMgdm9pZCB0cmF2ZXJzZVJlY29yZHNGaWxlcyhjb25zdCBTdHJpbmcmIHJlY29yZHNQYXRoLCBj
b25zdCBTdHJpbmcmIGV4cGVjdAogICAgICAgICAgICAgICAgIGlmIChlbnRyeVR5cGUgIT0gRGly
ZWN0b3J5RW50cnlUeXBlOjpGaWxlIHx8IGZpbGVOYW1lLmxlbmd0aCgpIDwgS2V5OjpoYXNoU3Ry
aW5nTGVuZ3RoKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAg
ICAgIFN0cmluZyBoYXNoU3RyaW5nID0gZmlsZU5hbWUuc3Vic3RyaW5nKDAsIEtleTo6aGFzaFN0
cmluZ0xlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgaGFzaFN0cmluZyA9IGZpbGVO
YW1lLmxlZnQoS2V5OjpoYXNoU3RyaW5nTGVuZ3RoKCkpOwogICAgICAgICAgICAgICAgIGF1dG8g
aXNCbG9iID0gZmlsZU5hbWUubGVuZ3RoKCkgPiBLZXk6Omhhc2hTdHJpbmdMZW5ndGgoKSAmJiBm
aWxlTmFtZS5lbmRzV2l0aChibG9iU3VmZml4KTsKICAgICAgICAgICAgICAgICBmdW5jdGlvbihm
aWxlTmFtZSwgaGFzaFN0cmluZywgYWN0dWFsVHlwZSwgaXNCbG9iLCByZWNvcmREaXJlY3RvcnlQ
YXRoKTsKICAgICAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zdG9yYWdlL0xvY2FsU3RvcmFnZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0xvY2FsU3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IDI2YmM5
MDc5YmIyZjk2ZGU3OWFkMDUxOWQ3NzJhMGMwYjE2NWFiYjMuLjJiMTA4NDZmOTYwOTlhM2IyNGVj
NDY1NDVmNTE1N2NlYjY5MWQ3YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvc3RvcmFnZS9Mb2NhbFN0b3JhZ2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTG9jYWxTdG9yYWdlTWFuYWdlci5jcHAKQEAgLTUwLDcg
KzUwLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
PiBmaWxlTmFtZVRvT3JpZ2luKGNvbnN0IFN0cmluZyYKICAgICBpZiAoZmlsZU5hbWVMZW5ndGgg
PD0gc3VmZml4TGVuZ3RoKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgYXV0
byBvcmlnaW5JZGVudGlmaWVyID0gZmlsZU5hbWUuc3Vic3RyaW5nKDAsIGZpbGVOYW1lTGVuZ3Ro
IC0gc3VmZml4TGVuZ3RoKTsKKyAgICBhdXRvIG9yaWdpbklkZW50aWZpZXIgPSBmaWxlTmFtZS5s
ZWZ0KGZpbGVOYW1lTGVuZ3RoIC0gc3VmZml4TGVuZ3RoKTsKICAgICByZXR1cm4gV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKG9yaWdpbklkZW50aWZp
ZXIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1N0cmlu
Zy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1N0cmluZy5jcHAKaW5kZXggNGVk
M2I4YWEyZDIzZTUxNWEzMDQ5MDVlYzQwMmYzZTQ4YTRjNGQ2MS4uOWQ3NTVhN2YzYmE0ZThkZTM2
MDRmOGYwYWExOTg4ODVkZjc2OTNlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJL2MvV0tTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLU3Ry
aW5nLmNwcApAQCAtNTgsNyArNTgsNyBAQCBzaXplX3QgV0tTdHJpbmdHZXRDaGFyYWN0ZXJzKFdL
U3RyaW5nUmVmIHN0cmluZ1JlZiwgV0tDaGFyKiBidWZmZXIsIHNpemVfdCBidWZmZQogICAgIHN0
YXRpY19hc3NlcnQoc2l6ZW9mKFdLQ2hhcikgPT0gc2l6ZW9mKFVDaGFyKSwgIlNpemUgb2YgV0tD
aGFyIG11c3QgbWF0Y2ggc2l6ZSBvZiBVQ2hhciIpOwogCiAgICAgdW5zaWduZWQgdW5zaWduZWRC
dWZmZXJMZW5ndGggPSBzdGQ6Om1pbjxzaXplX3Q+KGJ1ZmZlckxlbmd0aCwgc3RkOjpudW1lcmlj
X2xpbWl0czx1bnNpZ25lZD46Om1heCgpKTsKLSAgICBhdXRvIHN1YnN0cmluZyA9IFdlYktpdDo6
dG9JbXBsKHN0cmluZ1JlZiktPnN0cmluZ1ZpZXcoKS5zdWJzdHJpbmcoMCwgdW5zaWduZWRCdWZm
ZXJMZW5ndGgpOworICAgIGF1dG8gc3Vic3RyaW5nID0gV2ViS2l0Ojp0b0ltcGwoc3RyaW5nUmVm
KS0+c3RyaW5nVmlldygpLmxlZnQodW5zaWduZWRCdWZmZXJMZW5ndGgpOwogCiAgICAgc3Vic3Ry
aW5nLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KHJlaW50ZXJwcmV0X2Nhc3Q8VUNoYXIqPihi
dWZmZXIpKTsKICAgICByZXR1cm4gc3Vic3RyaW5nLmxlbmd0aCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvbWFjL0F1eGlsaWFyeVByb2Nlc3NNYWMubW0gYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9tYWMvQXV4aWxpYXJ5UHJvY2Vzc01hYy5tbQppbmRleCA4ZjI1OWRhNmQ1MTAy
NmNjZDYxODliYmVjYTQ4ZDUzZGI5ODFkYjViLi43NmQyMTgzNTg3YjA2MWExOGJmNTlmZjkxNGE3
MzU0ZThmNjM1OTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQXV4aWxp
YXJ5UHJvY2Vzc01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQXV4aWxpYXJ5
UHJvY2Vzc01hYy5tbQpAQCAtNzAzLDEwICs3MDMsOSBAQCBzdGF0aWMgdm9pZCBwb3B1bGF0ZVNh
bmRib3hJbml0aWFsaXphdGlvblBhcmFtZXRlcnMoU2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1l
dAogICAgIH0KIAogICAgIHNhbmRib3hQYXJhbWV0ZXJzLmFkZFBhdGhQYXJhbWV0ZXIoIkhPTUVf
RElSIiwgcHdkLnB3X2Rpcik7Ci0gICAgU3RyaW5nIHBhdGggPSBTdHJpbmc6OmZyb21VVEY4KHB3
ZC5wd19kaXIpOwotICAgIHBhdGguYXBwZW5kKCIvTGlicmFyeSJfcyk7CisgICAgU3RyaW5nIHBh
dGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoU3RyaW5nOjpmcm9tVVRG
OChwd2QucHdfZGlyKSwgIkxpYnJhcnkiX3MpOwogICAgIHNhbmRib3hQYXJhbWV0ZXJzLmFkZFBh
dGhQYXJhbWV0ZXIoIkhPTUVfTElCUkFSWV9ESVIiLCBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24ocGF0aCkuZGF0YSgpKTsKLSAgICBwYXRoLmFwcGVuZCgiL1ByZWZlcmVuY2Vz
Il9zKTsKKyAgICBwYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBh
dGgsICIvUHJlZmVyZW5jZXMiX3MpOwogICAgIHNhbmRib3hQYXJhbWV0ZXJzLmFkZFBhdGhQYXJh
bWV0ZXIoIkhPTUVfTElCUkFSWV9QUkVGRVJFTkNFU19ESVIiLCBGaWxlU3lzdGVtOjpmaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpKTsKIAogI2lmIENQVShYODZfNjQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JbnB1dE1ldGhvZEZpbHRl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JbnB1dE1ldGhvZEZpbHRl
ci5jcHAKaW5kZXggYzc4YzE4MmQzM2NjYWExZmU3OGQ1ZDM5Zjg1MmNhZjhiYjExNDIzYy4uZGQ5
ODYxZTI4MzEyODBiZGY5NmFkZTFiMmI3Y2QwODQzM2Q0N2JlYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSW5wdXRNZXRob2RGaWx0ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0lucHV0TWV0aG9kRmlsdGVyLmNwcApAQCAt
MjQwLDEwICsyNDAsMTAgQEAgdm9pZCBJbnB1dE1ldGhvZEZpbHRlcjo6bm90aWZ5U3Vycm91bmRp
bmcoY29uc3QgU3RyaW5nJiB0ZXh0LCB1aW50NjRfdCBjdXJzb3JQb3MKICAgICBtX3N1cnJvdW5k
aW5nLnNlbGVjdGlvblBvc2l0aW9uID0gc2VsZWN0aW9uUG9zaXRpb247CiAKICAgICBhdXRvIHRl
eHRVVEY4ID0gbV9zdXJyb3VuZGluZy50ZXh0LnV0ZjgoKTsKLSAgICBhdXRvIGN1cnNvclBvc2l0
aW9uVVRGOCA9IGN1cnNvclBvc2l0aW9uICE9IHRleHQubGVuZ3RoKCkgPyB0ZXh0LnN1YnN0cmlu
ZygwLCBjdXJzb3JQb3NpdGlvbikudXRmOCgpLmxlbmd0aCgpIDogdGV4dFVURjgubGVuZ3RoKCk7
CisgICAgYXV0byBjdXJzb3JQb3NpdGlvblVURjggPSBjdXJzb3JQb3NpdGlvbiAhPSB0ZXh0Lmxl
bmd0aCgpID8gdGV4dC5sZWZ0KGN1cnNvclBvc2l0aW9uKS51dGY4KCkubGVuZ3RoKCkgOiB0ZXh0
VVRGOC5sZW5ndGgoKTsKICAgICBhdXRvIHNlbGVjdGlvblBvc2l0aW9uVVRGOCA9IGN1cnNvclBv
c2l0aW9uVVRGODsKICAgICBpZiAoY3Vyc29yUG9zaXRpb24gIT0gc2VsZWN0aW9uUG9zaXRpb24p
Ci0gICAgICAgIHNlbGVjdGlvblBvc2l0aW9uVVRGOCA9IHNlbGVjdGlvblBvc2l0aW9uICE9IHRl
eHQubGVuZ3RoKCkgPyB0ZXh0LnN1YnN0cmluZygwLCBzZWxlY3Rpb25Qb3NpdGlvbikudXRmOCgp
Lmxlbmd0aCgpIDogdGV4dFVURjgubGVuZ3RoKCk7CisgICAgICAgIHNlbGVjdGlvblBvc2l0aW9u
VVRGOCA9IHNlbGVjdGlvblBvc2l0aW9uICE9IHRleHQubGVuZ3RoKCkgPyB0ZXh0LmxlZnQoc2Vs
ZWN0aW9uUG9zaXRpb24pLnV0ZjgoKS5sZW5ndGgoKSA6IHRleHRVVEY4Lmxlbmd0aCgpOwogICAg
IHdlYmtpdF9pbnB1dF9tZXRob2RfY29udGV4dF9ub3RpZnlfc3Vycm91bmRpbmcobV9jb250ZXh0
LmdldCgpLCB0ZXh0VVRGOC5kYXRhKCksIHRleHRVVEY4Lmxlbmd0aCgpLCBjdXJzb3JQb3NpdGlv
blVURjgsIHNlbGVjdGlvblBvc2l0aW9uVVRGOCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2d0ay9HdGtTZXR0aW5nc01hbmFnZXIuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvZ3RrL0d0a1NldHRpbmdzTWFuYWdlci5jcHAKaW5kZXggYzUwMmQyZGM1MmU3
ZjdkNDg4OWRmMjZlYmJmMzNhZmMzYmMxNGI2My4uMDA5ZWZlOGRlODVjODhmYWViNWJmMzYxNGE1
ZWJiNjUyMWVlMWM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0d0
a1NldHRpbmdzTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0d0
a1NldHRpbmdzTWFuYWdlci5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgU3RyaW5nIEd0a1NldHRpbmdz
TWFuYWdlcjo6dGhlbWVOYW1lKCkgY29uc3QKICAgICBpZiAoYXV0byogdGhlbWVOYW1lRW52ID0g
Z19nZXRlbnYoIkdUS19USEVNRSIpKSB7CiAgICAgICAgIFN0cmluZyBuYW1lID0gU3RyaW5nOjpm
cm9tVVRGOCh0aGVtZU5hbWVFbnYpOwogICAgICAgICBpZiAobmFtZS5lbmRzV2l0aCgiLWRhcmsi
KSB8fCBuYW1lLmVuZHNXaXRoKCItRGFyayIpIHx8IG5hbWUuZW5kc1dpdGgoIjpkYXJrIikpCi0g
ICAgICAgICAgICByZXR1cm4gbmFtZS5zdWJzdHJpbmcoMCwgbmFtZS5sZW5ndGgoKSAtIDUpOwor
ICAgICAgICAgICAgcmV0dXJuIG5hbWUubGVmdChuYW1lLmxlbmd0aCgpIC0gNSk7CiAgICAgICAg
IHJldHVybiBuYW1lOwogICAgIH0KIApAQCAtNTEsNyArNTEsNyBAQCBTdHJpbmcgR3RrU2V0dGlu
Z3NNYW5hZ2VyOjp0aGVtZU5hbWUoKSBjb25zdAogICAgIGdfb2JqZWN0X2dldChtX3NldHRpbmdz
LCAiZ3RrLXRoZW1lLW5hbWUiLCAmdGhlbWVOYW1lU2V0dGluZy5vdXRQdHIoKSwgbnVsbHB0cik7
CiAgICAgU3RyaW5nIG5hbWUgPSBTdHJpbmc6OmZyb21VVEY4KHRoZW1lTmFtZVNldHRpbmcuZ2V0
KCkpOwogICAgIGlmIChuYW1lLmVuZHNXaXRoKCItZGFyayIpIHx8IG5hbWUuZW5kc1dpdGgoIi1E
YXJrIikpCi0gICAgICAgIHJldHVybiBuYW1lLnN1YnN0cmluZygwLCBuYW1lLmxlbmd0aCgpIC0g
NSk7CisgICAgICAgIHJldHVybiBuYW1lLmxlZnQobmFtZS5sZW5ndGgoKSAtIDUpOwogICAgIHJl
dHVybiBuYW1lOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsv
VGV4dENoZWNrZXJHdGsuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1RleHRDaGVj
a2VyR3RrLmNwcAppbmRleCBiYjA5NDU4OTM2YzQ2NjgwNDQ2MTlmNzhjNmFiMTRmMDJiNWQ2YjIy
Li4wMzZhNjYzYjBiYmZmMWRlNjcyMjAzMTBlNDQ2OTEyZGY0NDExMWY4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvVGV4dENoZWNrZXJHdGsuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9UZXh0Q2hlY2tlckd0ay5jcHAKQEAgLTI3Myw3ICsyNzMs
NyBAQCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiBUZXh0Q2hlY2tlcjo6Y2hlY2tUZXh0T2ZQ
YXJhZ3JhcGgoU3BlbGxEb2N1bWVudFRhZyBzcAogICAgICAgICBwYXJhZ3JhcGhDaGVja2luZ1Jl
c3VsdC5hcHBlbmQobWlzc3BlbGxpbmdSZXN1bHQpOwogICAgICAgICBvZmZzZXQgKz0gbWlzc3Bl
bGxpbmdMb2NhdGlvbiArIG1pc3NwZWxsaW5nTGVuZ3RoOwogICAgICAgICAvLyBHZW5lcmFsbHks
IHdlIGVuZCB1cCBjaGVja2luZyBhdCB0aGUgd29yZCBzZXBhcmF0b3IsIG1vdmUgdG8gdGhlIGFk
amFjZW50IHdvcmQuCi0gICAgICAgIG9mZnNldCA9IG5leHRXb3JkT2Zmc2V0KHRleHQuc3Vic3Ry
aW5nKDAsIGxlbmd0aFN0cmlwKSwgb2Zmc2V0KTsKKyAgICAgICAgb2Zmc2V0ID0gbmV4dFdvcmRP
ZmZzZXQodGV4dC5sZWZ0KGxlbmd0aFN0cmlwKSwgb2Zmc2V0KTsKICAgICB9CiAgICAgcmV0dXJu
IHBhcmFncmFwaENoZWNraW5nUmVzdWx0OwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL3dpbi9XZWJQcm9jZXNzUG9vbFdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1Bvb2xXaW4uY3BwCmluZGV4IGUzMTg4OWYzNDRjNGE2M2Rm
NWU1ZTY1OWUyNDIxZjRjOTEwNDhjYzQuLjIzYjNlY2E2NDc1YTBmNzA3ZDdmMGRkMmUyNjZmYzI1
ZWRjMzUyMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJQcm9j
ZXNzUG9vbFdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlByb2Nl
c3NQb29sV2luLmNwcApAQCAtNjEsNyArNjEsNyBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplUmVt
b3RlSW5zcGVjdG9yU2VydmVyKFN0cmluZ1ZpZXcgYWRkcmVzcykKICAgICBpZiAocG9zID09IG5v
dEZvdW5kKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGhvc3QgPSBhZGRyZXNzLnN1YnN0
cmluZygwLCBwb3MpOworICAgIGF1dG8gaG9zdCA9IGFkZHJlc3MubGVmdChwb3MpOwogICAgIGF1
dG8gcG9ydCA9IHBhcnNlSW50ZWdlcjx1aW50MTZfdD4oYWRkcmVzcy5zdWJzdHJpbmcocG9zICsg
MSkpOwogICAgIGlmICghcG9ydCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbSBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KaW5kZXggNjc1ZTcyMzM2MTY4
YmMyZjhjOGQyMjZkMDExZGY5NDI1NjA1NDgzMi4uMGFmYzAxNzJjOWIzYzhlMjc5NjU4NTk4M2M1
NTVjZmIyMmFlYzliYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERlBsdWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QREYvUERGUGx1Z2luLm1tCkBAIC0xNjkxLDcgKzE2OTEsNyBAQCB2b2lkIFBERlBsdWdpbjo6
c2V0U3VnZ2VzdGVkRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSkKICAg
ICAgICAgbV9zdWdnZXN0ZWRGaWxlbmFtZSA9IHN1Z2dlc3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBl
KG5pbCwgImFwcGxpY2F0aW9uL3BkZiJfcyk7CiAKICAgICBpZiAoIW1fc3VnZ2VzdGVkRmlsZW5h
bWUuZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgiLnBkZiIpKQotICAgICAgICBtX3N1Z2dlc3Rl
ZEZpbGVuYW1lLmFwcGVuZCgiLnBkZiJfcyk7CisgICAgICAgIG1fc3VnZ2VzdGVkRmlsZW5hbWUg
PSBtYWtlU3RyaW5nKG1fc3VnZ2VzdGVkRmlsZW5hbWUsICIucGRmIl9zKTsKIH0KICAgICAKIHZv
aWQgUERGUGx1Z2luOjpzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQs
IGNvbnN0IFVSTCYsIHVpbnQzMl90LCB1aW50MzJfdCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCmluZGV4IDVkNGVlYzVm
ZWQ4YjM1NGMwZjFhNjc1ZDBjYjRkNDMyN2QxZDI3YmQuLjM2MzYxOTZjYjU2YWEyZTQzMGMzYTNi
MDc0MThlMjg0ZjkxZTc2MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFn
ZS9TdG9yYWdlVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0
b3JhZ2VUcmFja2VyLmNwcApAQCAtMjYwLDcgKzI2MCw3IEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6
OnN5bmNGaWxlU3lzdGVtQW5kVHJhY2tlckRhdGFiYXNlKCkKICAgICAgICAgICAgIGNvbnRpbnVl
OwogCiAgICAgICAgIGF1dG8gZmlsZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQobV9zdG9yYWdlRGlyZWN0b3J5UGF0aCwgZmlsZU5hbWUpOwotICAgICAgICBTdHJp
bmcgb3JpZ2luSWRlbnRpZmllciA9IGZpbGVOYW1lLnN1YnN0cmluZygwLCBmaWxlTmFtZS5sZW5n
dGgoKSAtIGZpbGVFeHRlbnNpb24ubGVuZ3RoKCkpOworICAgICAgICBTdHJpbmcgb3JpZ2luSWRl
bnRpZmllciA9IGZpbGVOYW1lLmxlZnQoZmlsZU5hbWUubGVuZ3RoKCkgLSBmaWxlRXh0ZW5zaW9u
Lmxlbmd0aCgpKTsKICAgICAgICAgaWYgKCFvcmlnaW5TZXRDb3B5LmNvbnRhaW5zKG9yaWdpbklk
ZW50aWZpZXIpKQogICAgICAgICAgICAgc3luY1NldE9yaWdpbkRldGFpbHMob3JpZ2luSWRlbnRp
ZmllciwgZmlsZVBhdGgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCmluZGV4IDNkYjI0ODhkNjBlYzQxYjA4
MWY3YTkxN2QwZTI2MWIyN2U2MjRhMjcuLjZiOWYyZmY4YThkODk1NTVlMjBlNDAyMjQ3YzcxMDUy
NjBiNTJhMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
SFRNTFJlcHJlc2VudGF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCkBAIC0zNzUsNyArMzc1LDcgQEAgc3RhdGljIFJl
Z3VsYXJFeHByZXNzaW9uKiByZWdFeHBGb3JMYWJlbHMoTlNBcnJheSAqbGFiZWxzKQogICAgICAg
ICAgICAgYm9vbCBzdGFydHNXaXRoV29yZENoYXJhY3RlciA9IGZhbHNlOwogICAgICAgICAgICAg
Ym9vbCBlbmRzV2l0aFdvcmRDaGFyYWN0ZXIgPSBmYWxzZTsKICAgICAgICAgICAgIGlmIChsYWJl
bC5sZW5ndGgoKSkgewotICAgICAgICAgICAgICAgIHN0YXJ0c1dpdGhXb3JkQ2hhcmFjdGVyID0g
d29yZFJlZ0V4cC5nZXQoKS5tYXRjaChsYWJlbC5zdWJzdHJpbmcoMCwgMSkpID49IDA7CisgICAg
ICAgICAgICAgICAgc3RhcnRzV2l0aFdvcmRDaGFyYWN0ZXIgPSB3b3JkUmVnRXhwLmdldCgpLm1h
dGNoKGxhYmVsLmxlZnQoMSkpID49IDA7CiAgICAgICAgICAgICAgICAgZW5kc1dpdGhXb3JkQ2hh
cmFjdGVyID0gd29yZFJlZ0V4cC5nZXQoKS5tYXRjaChsYWJlbC5zdWJzdHJpbmcobGFiZWwubGVu
Z3RoKCkgLSAxLCAxKSkgPj0gMDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWQuY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWQuY3BwCmluZGV4IDk5NDY5MDQ1NTFjMGNjNmQxY2Ux
Y2JlOTI4OGNhNzNhOGJiNjhmMjEuLjQwZjYyMzBiOGQ4ZmMwOGMwNmQ3OWE5M2UwYTFiMTA3Y2Y1
NjE0MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZC5jcHAKQEAgLTE0MCwx
MCArMTQwLDcgQEAgSFJFU1VMVCBXZWJEb3dubG9hZDo6YnVuZGxlUGF0aEZvclRhcmdldFBhdGgo
X0luXyBCU1RSIHRhcmdldFBhdGgsIF9fZGVyZWZfb3V0X28KICAgICBpZiAoYnVuZGxlLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIEVfSU5WQUxJREFSRzsKIAotICAgIGlmIChidW5kbGVbYnVu
ZGxlLmxlbmd0aCgpLTFdID09ICcvJykKLSAgICAgICAgYnVuZGxlLnRydW5jYXRlKDEpOwotCi0g
ICAgYnVuZGxlLmFwcGVuZChEb3dubG9hZEJ1bmRsZTo6ZmlsZUV4dGVuc2lvbigpKTsKKyAgICBi
dW5kbGUgPSBidW5kbGVbYnVuZGxlLmxlbmd0aCgpIC0gMV0gPT0gJy8nID8gbWFrZVN0cmluZyhT
dHJpbmdWaWV3KGJ1bmRsZSkubGVmdChidW5kbGUubGVuZ3RoKCkgLSAxKSwgRG93bmxvYWRCdW5k
bGU6OmZpbGVFeHRlbnNpb24oKSkgOiBtYWtlU3RyaW5nKGJ1bmRsZSwgRG93bmxvYWRCdW5kbGU6
OmZpbGVFeHRlbnNpb24oKSk7CiAgICAgKmJ1bmRsZVBhdGggPSBCU3RyaW5nKGJ1bmRsZSkucmVs
ZWFzZSgpOwogICAgIGlmICghKmJ1bmRsZVBhdGgpCiAgICAgICAgcmV0dXJuIEVfRkFJTDsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAxMjZlMTg3
ODAzZmNlNWQ0NzA0ZTNhZWU0NGY0MWY2MGJkMTU3Njc0Li5lNjJmY2U3ZWVmOWNjZmIyYWIxZWI4
YTU4MmM2NzdmYTZmODc4NzJkIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMjItMDQtMTMgIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBEcm9wIGluZWZmaWNpZW50IFN0cmluZzo6YXBw
ZW5kKCkgb3ZlcmxvYWRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzkyODkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBEcm9wIGluZWZmaWNpZW50IFN0cmluZzo6YXBwZW5kKCkgb3ZlcmxvYWRzIHRvIHB1
c2ggZGV2ZWxvcGVycyB0byB1c2UgU3RyaW5nQnVpbGRlciAvIG1ha2VTdHJpbmcoKSBpbnN0ZWFk
LgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcDoKKyAg
ICAgICAgKGZpbmRGb250RmFsbGJhY2spOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL0ZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdCdWlsZGVyLmNwcDoKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL1VSTFBhcnNlci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjppbnNlcnRUYWJBdExv
Y2F0aW9uKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZU1vbml0
b3IuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6cmVhZENvbnRlbnRzT2ZGaWxlKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSFRUUEhlYWRlckZpZWxkLmNwcDoK
KyAgICAgICAgKGNhbm9uaWNhbGl6ZUhUVFBIZWFkZXIpOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9VUkxQYXJzZXJUZXh0RW5jb2RpbmcuY3BwOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6aW5zZXJ0VGFiQXRMb2NhdGlvbik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwOgorICAgICAgICAoV1RS
OjpwYXRoU3VpdGFibGVGb3JUZXN0UmVzdWx0KToKKyAgICAgICAgKFdUUjo6ZHVtcEZyYW1lVGV4
dCk6CisgICAgICAgIChXVFI6OnN0cmlwVHJhaWxpbmdTcGFjZXNBZGROZXdsaW5lKToKKyAgICAg
ICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjp3aWxsQWRkTWVzc2FnZVRvQ29uc29sZSk6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChX
VFI6OlRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgor
CiAyMDIyLTA0LTEzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAg
UmVwbGFjZSBBdG9tU3RyaW5nKGNvbnN0IGNoYXIqKSB3aXRoIEF0b21TdHJpbmc6OmZyb21MYXRp
bjEoY29uc3QgY2hhciopCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVt
cFJlbmRlclRyZWUuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVl
LmNwcAppbmRleCAzNmFlOGY1NzNjNDI4YWFlNGQ1ZDVmYjJhN2U0YTI5MzdlNGJjYzg3Li5iM2U3
N2U0YmU4MjZmZmNlMzRjZTBlNzhiMWI3N2YzNGRjNmFiYWM2IDEwMDY0NAotLS0gYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAKQEAgLTExMjMsMTQgKzExMjMsMTQgQEAgc3Rh
dGljIFN0cmluZyBmaW5kRm9udEZhbGxiYWNrKGNvbnN0IGNoYXIqIHBhdGhPclVybCkKICAgICAg
ICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKICAgICBTdHJpbmcgcGF0aFRvVGVzdCA9IHBhdGhU
b0NoZWNrLnN1YnN0cmluZyhsb2NhdGlvbiArIGxheW91dFRlc3RzLmxlbmd0aCgpICsgMSk7Ci0g
ICAgU3RyaW5nIHBvc3NpYmxlUGF0aFRvTG9ndWUgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQocGF0aFRvQ2hlY2suc3Vic3RyaW5nKDAsIGxvY2F0aW9uICsgbGF5b3V0VGVz
dHMubGVuZ3RoKCkgKyAxKSwgInBsYXRmb3JtXFx3aW4iX3MpOworICAgIFN0cmluZyBwb3NzaWJs
ZVBhdGhUb0xvZ3VlID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhdGhU
b0NoZWNrLmxlZnQobG9jYXRpb24gKyBsYXlvdXRUZXN0cy5sZW5ndGgoKSArIDEpLCAicGxhdGZv
cm1cXHdpbiJfcyk7CiAKICAgICBWZWN0b3I8U3RyaW5nPiBwb3NzaWJsZVBhdGhzOwogICAgIHBv
c3NpYmxlUGF0aHMuYXBwZW5kKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChw
b3NzaWJsZVBhdGhUb0xvZ3VlLCBwYXRoVG9UZXN0KSk7CiAKICAgICBzaXplX3QgbmV4dENhbmRp
ZGF0ZUVuZCA9IHBhdGhUb1Rlc3QucmV2ZXJzZUZpbmQoJ1xcJyk7CiAgICAgd2hpbGUgKG5leHRD
YW5kaWRhdGVFbmQgJiYgbmV4dENhbmRpZGF0ZUVuZCAhPSBXVEY6Om5vdEZvdW5kKSB7Ci0gICAg
ICAgIHBhdGhUb1Rlc3QgPSBwYXRoVG9UZXN0LnN1YnN0cmluZygwLCBuZXh0Q2FuZGlkYXRlRW5k
KTsKKyAgICAgICAgcGF0aFRvVGVzdCA9IHBhdGhUb1Rlc3QubGVmdChuZXh0Q2FuZGlkYXRlRW5k
KTsKICAgICAgICAgcG9zc2libGVQYXRocy5hcHBlbmQoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KHBvc3NpYmxlUGF0aFRvTG9ndWUsIHBhdGhUb1Rlc3QpKTsKICAgICAgICAg
bmV4dENhbmRpZGF0ZUVuZCA9IHBhdGhUb1Rlc3QucmV2ZXJzZUZpbmQoJ1xcJyk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcAppbmRleCBkYjI0
NjUyMzk2ODY1MTY4ODgxYjc0MTQ3Y2YzYzRjM2E4NmE0Yjg0Li42NWZlYWFmM2RiYjI5MTI3NzI5
NGZlZjhlYzI5YTllYTNhYzI4NWRiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9GaWxlU3lzdGVtLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9GaWxlU3lzdGVtLmNwcApAQCAtNDg1LDkgKzQ4NSw3IEBAIFRFU1RfRihGaWxlU3lzdGVtVGVz
dCwgbWFrZUFsbERpcmVjdG9yaWVzKQogICAgIEVYUEVDVF9FUShGaWxlU3lzdGVtOjpmaWxlVHlw
ZShzdWJGb2xkZXJQYXRoKSwgRmlsZVN5c3RlbTo6RmlsZVR5cGU6OkRpcmVjdG9yeSk7CiAgICAg
RVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkodGVtcEVtcHR5
Rm9sZGVyUGF0aCgpKSk7CiAgICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMo
c3ViRm9sZGVyUGF0aCkpOwotICAgIFN0cmluZyBpbnZhbGlkRm9sZGVyUGF0aDsKLSAgICBpbnZh
bGlkRm9sZGVyUGF0aC5hcHBlbmQoJ1wwJyk7Ci0gICAgaW52YWxpZEZvbGRlclBhdGguYXBwZW5k
KCdhJyk7CisgICAgU3RyaW5nIGludmFsaWRGb2xkZXJQYXRoID0gbWFrZVN0cmluZygnXDAnLCAn
YScpOwogICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoaW52
YWxpZEZvbGRlclBhdGgpKTsKICAgICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3RlbTo6bWFrZUFsbERp
cmVjdG9yaWVzKGVtcHR5U3RyaW5nKCkpKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL1N0cmluZ0J1aWxkZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvU3RyaW5nQnVpbGRlci5jcHAKaW5kZXggYTQ4N2U1N2U5ZDA0NjE3ZDQ5ZGU4ZGEx
OTEyYmU0ODI2MTY4MzA1OS4uYWUxNTNjNTYxNTg2OGI4YjFkNTI2YmRmOThkNTI3MTE1YmNhZmRj
YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nQnVpbGRl
ci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nQnVpbGRlci5j
cHAKQEAgLTIwOSw5ICsyMDksOSBAQCBURVNUKFN0cmluZ0J1aWxkZXJUZXN0LCBUb1N0cmluZykK
ICAgICAvLyBDaGFuZ2luZyB0aGUgb3JpZ2luYWwgcmVzdWx0IG9mIHRvU3RyaW5nKCkgc2hvdWxk
IG5vdCBhZmZlY3QgdGhlIGNvbnRlbnQgb2YgdGhlIFN0cmluZ0J1aWxkZXIuCiAgICAgU3RyaW5n
IHN0cmluZzEgPSBidWlsZGVyLnRvU3RyaW5nKCk7CiAgICAgRVhQRUNUX0VRKFN0cmluZygiMDEy
MzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDIl9zKSwgc3RyaW5nMSk7Ci0gICAg
c3RyaW5nMS5hcHBlbmQoIkRFRiJfcyk7CisgICAgc3RyaW5nMS5yZXBsYWNlKCcwJywgJ2EnKTsK
ICAgICBFWFBFQ1RfRVEoU3RyaW5nKCIwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4
eXpBQkMiX3MpLCBidWlsZGVyLnRvU3RyaW5nKCkpOwotICAgIEVYUEVDVF9FUShTdHJpbmcoIjAx
MjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRiJfcyksIHN0cmluZzEpOwor
ICAgIEVYUEVDVF9FUShTdHJpbmcoImExMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5
ekFCQyJfcyksIHN0cmluZzEpOwogCiAgICAgLy8gUmVzaXppbmcgdGhlIFN0cmluZ0J1aWxkZXIg
c2hvdWxkIG5vdCBhZmZlY3QgdGhlIG9yaWdpbmFsIHJlc3VsdCBvZiB0b1N0cmluZygpLgogICAg
IHN0cmluZzEgPSBidWlsZGVyLnRvU3RyaW5nKCk7CkBAIC0yNTEsOSArMjUxLDkgQEAgVEVTVChT
dHJpbmdCdWlsZGVyVGVzdCwgVG9TdHJpbmdQcmVzZXJ2ZUNhcGFjaXR5KQogICAgIEVYUEVDVF9F
UShjYXBhY2l0eSwgYnVpbGRlci5jYXBhY2l0eSgpKTsKICAgICBFWFBFQ1RfRVEoc3RyaW5nMS5j
aGFyYWN0ZXJzOCgpLCBidWlsZGVyLmNoYXJhY3RlcnM4KCkpOwogICAgIEVYUEVDVF9FUShTdHJp
bmcoIjAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQyJfcyksIHN0cmluZzEp
OwotICAgIHN0cmluZzEuYXBwZW5kKCJERUYiX3MpOworICAgIHN0cmluZzEucmVwbGFjZSgnMCcs
ICdhJyk7CiAgICAgRVhQRUNUX0VRKFN0cmluZygiMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3Bx
cnN0dXZ3eHl6QUJDIl9zKSwgYnVpbGRlci50b1N0cmluZ1ByZXNlcnZlQ2FwYWNpdHkoKSk7Ci0g
ICAgRVhQRUNUX0VRKFN0cmluZygiMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6
QUJDREVGIl9zKSwgc3RyaW5nMSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiYTEyMzQ1Njc4OWFi
Y2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDIl9zKSwgc3RyaW5nMSk7CiAKICAgICAvLyBSZXNp
emluZyB0aGUgU3RyaW5nQnVpbGRlciBzaG91bGQgbm90IGFmZmVjdCB0aGUgb3JpZ2luYWwgcmVz
dWx0IG9mIHRvU3RyaW5nUHJlc2VydmVDYXBhY2l0eSgpLgogICAgIGNhcGFjaXR5ID0gYnVpbGRl
ci5jYXBhY2l0eSgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
VVJMUGFyc2VyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VSTFBhcnNlci5j
cHAKaW5kZXggOTBmZmM5OTQ0ZTZiMjViZDQ1OTg1OTZmZGQ4NjU5NGIxYjNhZGY1OS4uM2FmMzkz
Y2EwM2ZhYjMzZTA4N2NjOGZkYzk5NmJiYjAwNGIxMGFmZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvVVJMUGFyc2VyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9VUkxQYXJzZXIuY3BwCkBAIC03Myw3ICs3Myw3IEBAIGJvb2wgZXEoVCYm
IHMxLCBVJiYgczIpCiBzdGF0aWMgU3RyaW5nIGluc2VydFRhYkF0TG9jYXRpb24oU3RyaW5nVmll
dyBzdHJpbmcsIHNpemVfdCBsb2NhdGlvbikKIHsKICAgICBBU1NFUlQobG9jYXRpb24gPD0gc3Ry
aW5nLmxlbmd0aCgpKTsKLSAgICByZXR1cm4gbWFrZVN0cmluZyhzdHJpbmcuc3Vic3RyaW5nKDAs
IGxvY2F0aW9uKSwgIlx0Iiwgc3RyaW5nLnN1YnN0cmluZyhsb2NhdGlvbikpOworICAgIHJldHVy
biBtYWtlU3RyaW5nKHN0cmluZy5sZWZ0KGxvY2F0aW9uKSwgIlx0Iiwgc3RyaW5nLnN1YnN0cmlu
Zyhsb2NhdGlvbikpOwogfQogCiBzdGF0aWMgRXhwZWN0ZWRQYXJ0cyBpbnZhbGlkUGFydHMoU3Ry
aW5nVmlldyB1cmxTdHJpbmdXaXRoVGFiKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9Db250ZW50RXh0ZW5zaW9ucy5jcHAKaW5kZXggYTk5NzEyMzRjM2My
MGNmMTQ1ZmU1NjcwZGJhYjk5ZTZkM2UwYzgxNC4uN2I2ODY5N2U2NGZlZGZlODY5YzcxODk4YmRm
M2UzZTRiYjYyOWQ0OSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL0NvbnRlbnRFeHRlbnNpb25zLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvQ29udGVudEV4dGVuc2lvbnMuY3BwCkBAIC0xNTA3LDEwICsxNTA3LDggQEAgVEVT
VF9GKENvbnRlbnRFeHRlbnNpb25UZXN0LCBJbnZhbGlkSlNPTikKICAgICBydWxlcy5hcHBlbmQo
IlsiX3MpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCAxNDk5OTk7ICsraSkKICAgICAg
ICAgcnVsZXMuYXBwZW5kKCJ7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdn
ZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJhXCJ9fSwiX3MpOwotICAgIFN0cmluZyBydWxlczE1MDAw
MCA9IHJ1bGVzLnRvU3RyaW5nKCk7Ci0gICAgU3RyaW5nIHJ1bGVzMTUwMDAxID0gcnVsZXMudG9T
dHJpbmcoKTsKLSAgICBydWxlczE1MDAwMC5hcHBlbmQoIntcImFjdGlvblwiOntcInR5cGVcIjpc
ImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcImFcIn19XSJfcyk7Ci0gICAg
cnVsZXMxNTAwMDEuYXBwZW5kKCJ7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRy
aWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJhXCJ9fSx7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJi
bG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJhXCJ9fV0iX3MpOworICAgIFN0
cmluZyBydWxlczE1MDAwMCA9IG1ha2VTdHJpbmcocnVsZXMudG9TdHJpbmcoKSwgIntcImFjdGlv
blwiOntcInR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcImFc
In19XSJfcyk7CisgICAgU3RyaW5nIHJ1bGVzMTUwMDAxID0gbWFrZVN0cmluZyhydWxlcy50b1N0
cmluZygpLCAie1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1wi
dXJsLWZpbHRlclwiOlwiYVwifX0se1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0
cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiYVwifX1dIl9zKTsKICAgICBjaGVja0NvbXBpbGVy
RXJyb3IoV1RGTW92ZShydWxlczE1MDAwMCksIHsgfSk7CiAgICAgY2hlY2tDb21waWxlckVycm9y
KFdURk1vdmUocnVsZXMxNTAwMDEpLCBDb250ZW50RXh0ZW5zaW9uRXJyb3I6OkpTT05Ub29NYW55
UnVsZXMpOwogICAgIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL0ZpbGVNb25pdG9yLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9G
aWxlTW9uaXRvci5jcHAKaW5kZXggOWUzNWQ5NWJiNTFhMDliMDA4NTM0ZDczMzVkODI4YTAwMGVj
MmM0Mi4uZmFmYWIxY2FlZmI2MzRmMzE2ZmM0Mzg4YzVkODkyZTMxODExNTgzZCAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNwcAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZU1vbml0b3IuY3BwCkBAIC0x
MTIsNyArMTEyLDcgQEAgc3RhdGljIFN0cmluZyByZWFkQ29udGVudHNPZkZpbGUoY29uc3QgU3Ry
aW5nJiBwYXRoKQogCiAgICAgU3RyaW5nIHJlc3VsdChzdGF0aWNfY2FzdDxjb25zdCBMQ2hhcio+
KGJ1ZmZlci0+ZGF0YSgpKSwgYnVmZmVyLT5zaXplKCkpOwogICAgIGlmIChyZXN1bHQuZW5kc1dp
dGgoIlxuIikpCi0gICAgICAgIHJldHVybiByZXN1bHQuc3Vic3RyaW5nKDAsIHJlc3VsdC5sZW5n
dGgoKSAtIDEpOworICAgICAgICByZXR1cm4gcmVzdWx0LmxlZnQocmVzdWx0Lmxlbmd0aCgpIC0g
MSk7CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL0hUVFBIZWFkZXJGaWVsZC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvSFRUUEhlYWRlckZpZWxkLmNwcAppbmRleCA3MjNkNTg4YWE0OWM4
N2UzNjY0YjQ2ZjMxODBkZmQ3MDdmYzI3NWVhLi4wNDk5ZTFhNDIxZWM3MWVlODU5NmE1YTliNWU0
NTU1ZDhkMDk4YjgwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvSFRUUEhlYWRlckZpZWxkLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvSFRUUEhlYWRlckZpZWxkLmNwcApAQCAtMzMsNyArMzMsNyBAQCBzdGF0aWMgU3RyaW5n
IGNhbm9uaWNhbGl6ZUhUVFBIZWFkZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgc2l6ZV90
IGNvbG9uTG9jYXRpb24gPSBzdHJpbmcuZmluZCgnOicpOwogICAgIGlmIChjb2xvbkxvY2F0aW9u
ID09IG5vdEZvdW5kKQogICAgICAgICByZXR1cm4geyB9OwotICAgIGF1dG8gZmllbGQgPSBXZWJD
b3JlOjpIVFRQSGVhZGVyRmllbGQ6OmNyZWF0ZShzdHJpbmcuc3Vic3RyaW5nKDAsIGNvbG9uTG9j
YXRpb24pLCBzdHJpbmcuc3Vic3RyaW5nKGNvbG9uTG9jYXRpb24gKyAxKSk7CisgICAgYXV0byBm
aWVsZCA9IFdlYkNvcmU6OkhUVFBIZWFkZXJGaWVsZDo6Y3JlYXRlKHN0cmluZy5sZWZ0KGNvbG9u
TG9jYXRpb24pLCBzdHJpbmcuc3Vic3RyaW5nKGNvbG9uTG9jYXRpb24gKyAxKSk7CiAgICAgaWYg
KCFmaWVsZCkKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICByZXR1cm4gbWFrZVN0cmluZyhmaWVs
ZC0+bmFtZSgpLCAiOiAiLCBmaWVsZC0+dmFsdWUoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVVJMUGFyc2VyVGV4dEVuY29kaW5nLmNwcCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkxQYXJzZXJUZXh0RW5jb2RpbmcuY3BwCmlu
ZGV4IDRkMjdmNGZkNGI1NTIyODc0M2QzZTJmN2NjOTdmYmM0M2Y0NGE4ZWIuLmY4YjgxNTFmN2Q4
NzU4NDlmZTk3NDc4Njc2Zjg3MDRhZTliZGUzYjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9VUkxQYXJzZXJUZXh0RW5jb2RpbmcuY3BwCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkxQYXJzZXJUZXh0RW5jb2RpbmcuY3BwCkBA
IC03NCw3ICs3NCw3IEBAIGJvb2wgZXEoVCYmIHMxLCBVJiYgczIpCiBzdGF0aWMgU3RyaW5nIGlu
c2VydFRhYkF0TG9jYXRpb24oY29uc3QgU3RyaW5nJiBzdHJpbmcsIHNpemVfdCBsb2NhdGlvbikK
IHsKICAgICBBU1NFUlQobG9jYXRpb24gPD0gc3RyaW5nLmxlbmd0aCgpKTsKLSAgICByZXR1cm4g
bWFrZVN0cmluZyhzdHJpbmcuc3Vic3RyaW5nKDAsIGxvY2F0aW9uKSwgIlx0Iiwgc3RyaW5nLnN1
YnN0cmluZyhsb2NhdGlvbikpOworICAgIHJldHVybiBtYWtlU3RyaW5nKHN0cmluZy5sZWZ0KGxv
Y2F0aW9uKSwgIlx0Iiwgc3RyaW5nLnN1YnN0cmluZyhsb2NhdGlvbikpOwogfQogCiBzdGF0aWMg
RXhwZWN0ZWRQYXJ0cyBpbnZhbGlkUGFydHMoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmdXaXRoVGFi
KQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2UuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCmluZGV4IGQwMDZiNzg5Y2MxMWNlNWJiOTRiNDMzMWQz
OWM5ZjYwNDFjYjZlNzQuLjgzOTM2MDRhYWMzZWMxYWMxNTIwMDc4ZmViZGI1ZjU4YmI0ODJjODgg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVQYWdlLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKQEAgLTIwOSw3ICsyMDksNyBAQCBzdGF0aWMgaW5s
aW5lIFdURjo6U3RyaW5nIHBhdGhTdWl0YWJsZUZvclRlc3RSZXN1bHQoV0tVUkxSZWYgZmlsZVVy
bCkKIAogICAgIFN0cmluZyBwYXRoU3RyaW5nID0gdG9XVEZTdHJpbmcoYWRvcHRXSyhXS1VSTENv
cHlQYXRoKGZpbGVVcmwpKSk7CiAgICAgU3RyaW5nIG1haW5GcmFtZVVSTFBhdGhTdHJpbmcgPSB0
b1dURlN0cmluZyhhZG9wdFdLKFdLVVJMQ29weVBhdGgobWFpbkZyYW1lVVJMLmdldCgpKSkpOwot
ICAgIFN0cmluZyBiYXNlUGF0aCA9IG1haW5GcmFtZVVSTFBhdGhTdHJpbmcuc3Vic3RyaW5nKDAs
IG1haW5GcmFtZVVSTFBhdGhTdHJpbmcucmV2ZXJzZUZpbmQoZGl2aWRlcikgKyAxKTsKKyAgICBT
dHJpbmcgYmFzZVBhdGggPSBtYWluRnJhbWVVUkxQYXRoU3RyaW5nLmxlZnQobWFpbkZyYW1lVVJM
UGF0aFN0cmluZy5yZXZlcnNlRmluZChkaXZpZGVyKSArIDEpOwogICAgIAogICAgIGlmICghYmFz
ZVBhdGguaXNFbXB0eSgpICYmIHBhdGhTdHJpbmcuc3RhcnRzV2l0aChiYXNlUGF0aCkpCiAgICAg
ICAgIHJldHVybiBwYXRoU3RyaW5nLnN1YnN0cmluZyhiYXNlUGF0aC5sZW5ndGgoKSk7CkBAIC03
NDYsNyArNzQ2LDcgQEAgc3RhdGljIHZvaWQgZHVtcEZyYW1lVGV4dChXS0J1bmRsZUZyYW1lUmVm
IGZyYW1lLCBTdHJpbmdCdWlsZGVyJiBidWlsZGVyKQogICAgIGF1dG8gdGV4dCA9IHRvV1RGU3Ry
aW5nKGFkb3B0V0soV0tCdW5kbGVGcmFtZUNvcHlJbm5lclRleHQoZnJhbWUpKSk7CiAgICAgZm9y
IChhdXRvIGxpbmUgOiBTdHJpbmdWaWV3KHRleHQpLnNwbGl0QWxsb3dpbmdFbXB0eUVudHJpZXMo
J1xuJykpIHsKICAgICAgICAgd2hpbGUgKGxpbmUuZW5kc1dpdGgoJyAnKSkKLSAgICAgICAgICAg
IGxpbmUgPSBsaW5lLnN1YnN0cmluZygwLCBsaW5lLmxlbmd0aCgpIC0gMSk7CisgICAgICAgICAg
ICBsaW5lID0gbGluZS5sZWZ0KGxpbmUubGVuZ3RoKCkgLSAxKTsKICAgICAgICAgYnVpbGRlci5h
cHBlbmQobGluZSwgJ1xuJyk7CiAgICAgfQogfQpAQCAtMTMwMCw3ICsxMzAwLDcgQEAgc3RhdGlj
IFdURjo6U3RyaW5nIHN0cmlwVHJhaWxpbmdTcGFjZXNBZGROZXdsaW5lKGNvbnN0IFdURjo6U3Ry
aW5nJiBzdHJpbmcpCiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogICAgIGZvciAoYXV0byBs
aW5lIDogU3RyaW5nVmlldyhzdHJpbmcpLnNwbGl0QWxsb3dpbmdFbXB0eUVudHJpZXMoJ1xuJykp
IHsKICAgICAgICAgd2hpbGUgKGxpbmUuZW5kc1dpdGgoJyAnKSkKLSAgICAgICAgICAgIGxpbmUg
PSBsaW5lLnN1YnN0cmluZygwLCBsaW5lLmxlbmd0aCgpIC0gMSk7CisgICAgICAgICAgICBsaW5l
ID0gbGluZS5sZWZ0KGxpbmUubGVuZ3RoKCkgLSAxKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQo
bGluZSwgJ1xuJyk7CiAgICAgfQogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CkBAIC0x
MzQ2LDcgKzEzNDYsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6d2lsbEFkZE1lc3NhZ2VU
b0NvbnNvbGUoV0tTdHJpbmdSZWYgbWVzc2FnZSkKICAgICBzaXplX3QgZmlsZVByb3RvY29sU3Rh
cnQgPSBtZXNzYWdlU3RyaW5nLmZpbmQoImZpbGU6Ly8iKTsKICAgICBpZiAoZmlsZVByb3RvY29s
U3RhcnQgIT0gV1RGOjpub3RGb3VuZCkKICAgICAgICAgLy8gRklYTUU6IFRoZSBjb2RlIGJlbG93
IGRvZXMgbm90IGhhbmRsZSBhZGRpdGlvbmFsIHRleHQgYWZ0ZXIgdXJsIG5vciBtdWx0aXBsZSB1
cmxzLiBUaGlzIG1hdGNoZXMgRHVtcFJlbmRlclRyZWUgaW1wbGVtZW50YXRpb24uCi0gICAgICAg
IG1lc3NhZ2VTdHJpbmcgPSBtZXNzYWdlU3RyaW5nLnN1YnN0cmluZygwLCBmaWxlUHJvdG9jb2xT
dGFydCkgKyBsYXN0RmlsZVVSTFBhdGhDb21wb25lbnQobWVzc2FnZVN0cmluZy5zdWJzdHJpbmco
ZmlsZVByb3RvY29sU3RhcnQpKTsKKyAgICAgICAgbWVzc2FnZVN0cmluZyA9IG1lc3NhZ2VTdHJp
bmcubGVmdChmaWxlUHJvdG9jb2xTdGFydCkgKyBsYXN0RmlsZVVSTFBhdGhDb21wb25lbnQobWVz
c2FnZVN0cmluZy5zdWJzdHJpbmcoZmlsZVByb3RvY29sU3RhcnQpKTsKIAogICAgIG1lc3NhZ2VT
dHJpbmcgPSBtYWtlU3RyaW5nKCJDT05TT0xFIE1FU1NBR0U6IiwgYWRkTGVhZGluZ1NwYWNlU3Ry
aXBUcmFpbGluZ1NwYWNlc0FkZE5ld2xpbmUobWVzc2FnZVN0cmluZykpOwogICAgIGlmIChpbmpl
Y3RlZEJ1bmRsZS5kdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIoKSkKZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXggOTBhMTRlZmYzY2FjMjYxMGY3ZjIwZTI5YTc5
MDBkMDdlYTA3MWMxMy4uYTE1ODIwMzA3YWE4ZmIzZjE4NGY5OGQzZTU2ODQ2YmY3N2U1YTc4ZSAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysr
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAgLTIyMzYsMTIg
KzIyMzYsMTMgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKFdLUGFnZVJlZiBwYWdlLCBXS0F1dGhlbnQKIAogICAgIGF1dG8gaG9zdCA9IHRv
V1RGU3RyaW5nKGFkb3B0V0soV0tQcm90ZWN0aW9uU3BhY2VDb3B5SG9zdChwcm90ZWN0aW9uU3Bh
Y2UpKS5nZXQoKSk7CiAgICAgaW50IHBvcnQgPSBXS1Byb3RlY3Rpb25TcGFjZUdldFBvcnQocHJv
dGVjdGlvblNwYWNlKTsKLSAgICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJpbmcoaG9zdCwgJzon
LCBwb3J0LCAiIC0gZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIC0gIiwgdG9TdHJp
bmcoYXV0aGVudGljYXRpb25TY2hlbWUpLCAiIC0gIik7CisgICAgU3RyaW5nQnVpbGRlciBtZXNz
YWdlOworICAgIG1lc3NhZ2UuYXBwZW5kKGhvc3QsICc6JywgcG9ydCwgIiAtIGRpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSAtICIsIHRvU3RyaW5nKGF1dGhlbnRpY2F0aW9uU2NoZW1l
KSwgIiAtICIpOwogICAgIGlmICghbV9oYW5kbGVzQXV0aGVudGljYXRpb25DaGFsbGVuZ2VzKQog
ICAgICAgICBtZXNzYWdlLmFwcGVuZCgiU2ltdWxhdGluZyBjYW5jZWxsZWQgYXV0aGVudGljYXRp
b24gc2hlZXRcbiJfcyk7CiAgICAgZWxzZQogICAgICAgICBtZXNzYWdlLmFwcGVuZCgiUmVzcG9u
ZGluZyB3aXRoICIgKyBtX2F1dGhlbnRpY2F0aW9uVXNlcm5hbWUgKyAiOiIgKyBtX2F1dGhlbnRp
Y2F0aW9uUGFzc3dvcmQgKyAiXG4iKTsKLSAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5vdXRwdXRU
ZXh0KG1lc3NhZ2UpOworICAgIG1fY3VycmVudEludm9jYXRpb24tPm91dHB1dFRleHQobWVzc2Fn
ZS50b1N0cmluZygpKTsKIAogICAgIGlmICghbV9oYW5kbGVzQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VzKSB7CiAgICAgICAgIFdLQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyVXNlQ3JlZGVu
dGlhbChkZWNpc2lvbkxpc3RlbmVyLCAwKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457625</attachid>
            <date>2022-04-14 07:39:08 -0700</date>
            <delta_ts>2022-04-14 07:59:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239289-20220414073907.patch</filename>
            <type>text/plain</type>
            <size>53331</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyODY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
ODJhOTQzYzZlNDliZDFlZjkwZjg3NDg4NWM2NDBlYzg4NmFjOWI3Li4yOGYwYjgxNTFjOTc3MjA5
NGZiNGIyZDgzNjBhYTJlM2VmZGI3MjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAyMi0wNC0xNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIERyb3AgaW5lZmZpY2llbnQgU3RyaW5nOjphcHBlbmQoKSBvdmVybG9hZHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTI4OQorCisg
ICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCisKKyAgICAgICAgKiBoZWFwL0hlYXBTbmFw
c2hvdEJ1aWxkZXIuY3BwOgorICAgICAgICAoSlNDOjpIZWFwU25hcHNob3RCdWlsZGVyOjpqc29u
KToKKyAgICAgICAgKiBydW50aW1lL0ludGxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpyZXNv
bHZlTG9jYWxlKToKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcDoKKyAgICAg
ICAgKEpTQzo6ZWxsaXBzaXplQXQpOgorICAgICAgICAqIHRvb2xzL0Z1bmN0aW9uT3ZlcnJpZGVz
LmNwcDoKKyAgICAgICAgKEpTQzo6aW5pdGlhbGl6ZU92ZXJyaWRlSW5mbyk6CisgICAgICAgIChK
U0M6OnBhcnNlQ2xhdXNlKToKKwogMjAyMi0wNC0xMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgogCiAgICAgICAgIFJlcGxhY2UgY2FsbHMgdG8gc3Vic3RyaW5nKDAsIHgpIHdpdGgg
dGhlIG1vcmUgY29uY2lzZSBsZWZ0KHgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDNjMmYyOWQ5NTI2ODE5ZDQ1Y2MyNDVlNDc4
ZDdlYjQxZGU0MjM3MDAuLmM3YzVjOTQzODhiMjg0NTAxZTlkMTYwNzkyMTE0YmE1ZjVkN2U4Yjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjItMDQtMTQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KKworICAgICAgICBEcm9wIGluZWZmaWNpZW50IFN0cmluZzo6YXBwZW5kKCkgb3Zl
cmxvYWRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzkyODkKKworICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgorCisgICAgICAgICogd3Rm
L0Fzc2VydGlvbnMuY3BwOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaDoKKyAg
ICAgICAgKFdURjo6U3RyaW5nQnVpbGRlcjo6YXBwZW5kKToKKyAgICAgICAgKiB3dGYvdGV4dC9X
VEZTdHJpbmcuY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmc6Omluc2VydCk6CisgICAgICAgIChX
VEY6OlN0cmluZzo6YXBwZW5kKToKKyAgICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuaDoKKwog
MjAyMi0wNC0xNCAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW1dLMl0gRW5hYmxlIG1vcmUgZWZmaWNpZW50IGVuY29kaW5nIG9mIHN5bmNocm9ub3VzLW1l
c3NhZ2UgcmVwbHkgYXJndW1lbnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTdiYzc0ZDdiYTk4MTVkZjhkN2Fm
MmYzZWQ0MWYwMTE4NGQyMzkzYi4uOGVkNTM1NjNmMjRmNzdjZjM3ODg2YzRkYjQwNzlhYWFiMTY1
YzU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDIyLTA0LTE0ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRHJvcCBpbmVmZmljaWVudCBTdHJpbmc6
OmFwcGVuZCgpIG92ZXJsb2FkcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjM5Mjg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KKwor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQktleURhdGEuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCS2V5RGF0YTo6bG9nZ2luZ1N0cmluZyBjb25zdCk6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvSURCS2V5UmFuZ2VEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQktl
eVJhbmdlRGF0YTo6bG9nZ2luZ1N0cmluZyBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvc2hhcmVkL0lEQkluZGV4SW5mby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRl
eEluZm86OmxvZ2dpbmdTdHJpbmcgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0
cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dHJpbUlucHV0U2Ft
cGxlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmluaXRpYWxpemVB
dHRyaWJ1dGVEYXRhKToKKyAgICAgICAgKiBkb20vQ2hhcmFjdGVyRGF0YS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDaGFyYWN0ZXJEYXRhOjpwYXJzZXJBcHBlbmREYXRhKToKKyAgICAgICAgKiBk
b20vVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRUZXh0UmVwcmVzZW50YXRpb24p
OgorICAgICAgICAqIGRvbS9WaWV3cG9ydEFyZ3VtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojp2aWV3cG9ydEVycm9yTWVzc2FnZSk6CisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6ZmlsbENvbnRhaW5lckZyb21TdHJpbmcpOgorICAgICAgICAqIGh0
bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RlRQRGlyZWN0
b3J5RG9jdW1lbnRQYXJzZXI6OnBhcnNlQW5kQXBwZW5kT25lTGluZSk6CisgICAgICAgIChXZWJD
b3JlOjpGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OkZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpmaW5pc2gpOgorICAgICAgICAqIGh0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0QWN0aXZlVW5pZm9ybSk6CisgICAgICAgICog
aHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViVlRUUGFy
c2VyOjpjaGVja0FuZFN0b3JlU3R5bGVTaGVldCk6CisgICAgICAgICogaHRtbC90cmFjay9XZWJW
VFRQYXJzZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjp0cnVuY2F0ZVdpdGhFbGxpcHNpcyk6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3Rvck92ZXJsYXlMYWJlbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JPdmVybGF5TGFiZWw6OmRyYXcpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmJ1
aWxkT2JqZWN0Rm9yTm9kZSk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3Rh
dGVUcmVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlVHJlZTo6c2Nyb2xs
aW5nU3RhdGVUcmVlQXNUZXh0IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9I
RVZDVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUhFVkNDb2RlY1BhcmFt
ZXRlcnNTdHJpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6dHJpbUlucHV0U2FtcGxlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3Vy
bENhY2hlRW50cnk6OkN1cmxDYWNoZUVudHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxDYWNo
ZUVudHJ5OjpzYXZlUmVzcG9uc2VIZWFkZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsQ2FjaGVN
YW5hZ2VyOjpzZXRDYWNoZURpcmVjdG9yeSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxIYW5kbGU6OmFkZEV4
dHJhTmV0d29ya0xvYWRNZXRyaWNzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJC
YWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6Y3JlYXRl
UHJpbWFyeUdyYXBoaWNzTGF5ZXIpOgorCiAyMDIyLTA0LTE0ICBaYW4gRG9iZXJzZWsgIDx6ZG9i
ZXJzZWtAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXVtXUEVdIFByb3ZpZGUgV0syIElQQyBl
bmNvZGluZywgZGVjb2RpbmcgbWV0aG9kcyBmb3IgdGhlIERNQUJ1Zk9iamVjdCB0eXBlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IDg1NzgzMTgyNTU0MGViMjY0NDQwYjUxYzc4ZjI4ZWFhODcwZjUxNjAuLmQ5YjJhZWE5
NmI2NDMyYzIwZTFmMDRlNjBlNDk0NmY2NjU0NGJjODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMjItMDQtMTQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAg
ICBEcm9wIGluZWZmaWNpZW50IFN0cmluZzo6YXBwZW5kKCkgb3ZlcmxvYWRzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzkyODkKKworICAgICAgICBS
ZXZpZXdlZCBieSBTYW0gV2VpbmlnLgorCisgICAgICAgICogU2hhcmVkL21hYy9BdXhpbGlhcnlQ
cm9jZXNzTWFjLm1tOgorICAgICAgICAoV2ViS2l0Ojpwb3B1bGF0ZVNhbmRib3hJbml0aWFsaXph
dGlvblBhcmFtZXRlcnMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1
Z2luLm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OnNldFN1Z2dlc3RlZEZpbGVuYW1l
KToKKwogMjAyMi0wNC0xNCAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgW1dLMl0gRW5hYmxlIG1vcmUgZWZmaWNpZW50IGVuY29kaW5nIG9mIHN5bmNocm9u
b3VzLW1lc3NhZ2UgcmVwbHkgYXJndW1lbnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5k
ZXggOWNmNjFiMmM2YjFhNTZiMjliZGI4NGIwMjUyYjE5NTQ4MTUzYzJhNS4uNTg2OGZkNTAyYTky
ZTMxZjhiMzcwM2YwMzE1MGI4MDE3ZDE0NDA3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEzIEBACisyMDIyLTA0LTE0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CisKKyAgICAgICAgRHJvcCBpbmVmZmljaWVudCBTdHJpbmc6OmFwcGVuZCgpIG92ZXJs
b2FkcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5
Mjg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KKworICAgICAgICAqIFdlYkRv
d25sb2FkLmNwcDoKKyAgICAgICAgKFdlYkRvd25sb2FkOjpidW5kbGVQYXRoRm9yVGFyZ2V0UGF0
aCk6CisKIDIwMjItMDQtMDcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBEcm9wIHVudXNlZCBFZGl0b3JDbGllbnQ6OmdldEF1dG9Db3JyZWN0U3VnZ2VzdGlvbkZv
ck1pc3NwZWxsZWRXb3JkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cFNuYXBzaG90QnVpbGRlci5jcHAKaW5kZXggOWQ1YzYxOTIyMWVlZTVkNTFjZmVmMTU4OGViNzky
YjY1OGEyYzM1Ny4uY2IxNmEwMDUyNTRmNTgyNmE1OWZkZmMyNTIwZmI0YTQ4MGZlMWE1NSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5j
cHAKQEAgLTM5MCwxNSArMzkwLDE1IEBAIFN0cmluZyBIZWFwU25hcHNob3RCdWlsZGVyOjpqc29u
KEZ1bmN0aW9uPGJvb2wgKGNvbnN0IEhlYXBTbmFwc2hvdE5vZGUmKT4gYWxsb3dOCiAgICAgICAg
ICAgICAgICAgZmxhZ3MgfD0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KE5vZGVGbGFnczo6SW50ZXJu
YWwpOwogCiAgICAgICAgICAgICBpZiAobV9zbmFwc2hvdFR5cGUgPT0gU25hcHNob3RUeXBlOjpH
Q0RlYnVnZ2luZ1NuYXBzaG90KSB7Ci0gICAgICAgICAgICAgICAgU3RyaW5nIG5vZGVMYWJlbDsK
KyAgICAgICAgICAgICAgICBTdHJpbmdCdWlsZGVyIG5vZGVMYWJlbDsKICAgICAgICAgICAgICAg
ICBhdXRvIGl0ID0gbV9jZWxsTGFiZWxzLmZpbmQobm9kZS5jZWxsKTsKICAgICAgICAgICAgICAg
ICBpZiAoaXQgIT0gbV9jZWxsTGFiZWxzLmVuZCgpKQotICAgICAgICAgICAgICAgICAgICBub2Rl
TGFiZWwgPSBpdC0+dmFsdWU7CisgICAgICAgICAgICAgICAgICAgIG5vZGVMYWJlbC5hcHBlbmQo
aXQtPnZhbHVlKTsKIAogICAgICAgICAgICAgICAgIGlmIChub2RlTGFiZWwuaXNFbXB0eSgpKSB7
CiAgICAgICAgICAgICAgICAgICAgIGlmIChhdXRvKiBvYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpT
T2JqZWN0Kj4odm0sIG5vZGUuY2VsbCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChh
dXRvKiBmdW5jdGlvbiA9IGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KHZtLCBvYmplY3QpKQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVMYWJlbCA9IGZ1bmN0aW9uLT5jYWxjdWxh
dGVkRGlzcGxheU5hbWUodm0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVMYWJl
bC5hcHBlbmQoZnVuY3Rpb24tPmNhbGN1bGF0ZWREaXNwbGF5TmFtZSh2bSkpOwogICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogCkBAIC00MTAsNyArNDEwLDcgQEAgU3Ry
aW5nIEhlYXBTbmFwc2hvdEJ1aWxkZXI6Ompzb24oRnVuY3Rpb248Ym9vbCAoY29uc3QgSGVhcFNu
YXBzaG90Tm9kZSYpPiBhbGxvd04KICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAg
ICBpZiAoIW5vZGVMYWJlbC5pc0VtcHR5KCkgJiYgbV9zbmFwc2hvdFR5cGUgPT0gU25hcHNob3RU
eXBlOjpHQ0RlYnVnZ2luZ1NuYXBzaG90KSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gcmVz
dWx0ID0gbGFiZWxJbmRleGVzLmFkZChub2RlTGFiZWwsIG5leHRMYWJlbEluZGV4KTsKKyAgICAg
ICAgICAgICAgICAgICAgYXV0byByZXN1bHQgPSBsYWJlbEluZGV4ZXMuYWRkKG5vZGVMYWJlbC50
b1N0cmluZygpLCBuZXh0TGFiZWxJbmRleCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1
bHQuaXNOZXdFbnRyeSkKICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRMYWJlbEluZGV4Kys7
CiAgICAgICAgICAgICAgICAgICAgIGxhYmVsSW5kZXggPSByZXN1bHQuaXRlcmF0b3ItPnZhbHVl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcAppbmRleCA5
ZDZhYjU2YTJjZjU2Y2M3NGY0YWE2OWMxOWVhNjllYWVmNWJlZWFhLi4zMzRmN2MwNzBjZjAxNDky
ZWZmNGZiODExY2MxMTcyZjhjY2ExNzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsT2JqZWN0LmNwcApAQCAtOTE3LDcgKzkxNyw4IEBAIFJlc29sdmVkTG9jYWxlIHJl
c29sdmVMb2NhbGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgTG9jYWxlU2V0
JiBhdmFpCiAgICAgUmVzb2x2ZWRMb2NhbGUgcmVzb2x2ZWQ7CiAgICAgcmVzb2x2ZWQuZGF0YUxv
Y2FsZSA9IGZvdW5kTG9jYWxlOwogCi0gICAgU3RyaW5nIHN1cHBvcnRlZEV4dGVuc2lvbiA9ICIt
dSJfczsKKyAgICBTdHJpbmdCdWlsZGVyIHN1cHBvcnRlZEV4dGVuc2lvbjsKKyAgICBzdXBwb3J0
ZWRFeHRlbnNpb24uYXBwZW5kKCItdSJfcyk7CiAgICAgZm9yIChSZWxldmFudEV4dGVuc2lvbktl
eSBrZXkgOiByZWxldmFudEV4dGVuc2lvbktleXMpIHsKICAgICAgICAgQVNDSUlMaXRlcmFsIGtl
eVN0cmluZyA9IHJlbGV2YW50RXh0ZW5zaW9uS2V5U3RyaW5nKGtleSk7CiAgICAgICAgIFZlY3Rv
cjxTdHJpbmc+IGtleUxvY2FsZURhdGEgPSBsb2NhbGVEYXRhKGZvdW5kTG9jYWxlLCBrZXkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3Qu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwCmlu
ZGV4IDE0ODAxNDlmMDY4NzY4YjcyNWQ1NjNkMzExMWQxYmQyNmIzYWY1ZWIuLmM4ODJmNGU4OTdm
MmZlNjVhNWNiMzRmMjZiNWE5MGVjYTU1NDhjODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5jcHAKQEAgLTE1MSwxMiArMTUxLDkgQEAgc3Rh
dGljIFN0cmluZ1ZpZXcgc2luZ3VsYXJVbml0KFN0cmluZ1ZpZXcgdW5pdCkKIC8vIEZvciB1c2Ug
aW4gZXJyb3IgbWVzc2FnZXMgd2hlcmUgYSBzdHJpbmcgdmFsdWUgaXMgcG90ZW50aWFsbHkgdW5i
b3VuZGVkCiBXVEY6OlN0cmluZyBlbGxpcHNpemVBdCh1bnNpZ25lZCBtYXhMZW5ndGgsIGNvbnN0
IFdURjo6U3RyaW5nJiBzdHJpbmcpCiB7Ci0gICAgV1RGOjpTdHJpbmcgY29weSB7IHN0cmluZyB9
OwotICAgIGlmIChzdHJpbmcubGVuZ3RoKCkgPiBtYXhMZW5ndGgpIHsKLSAgICAgICAgY29weS50
cnVuY2F0ZShtYXhMZW5ndGggLSAxKTsKLSAgICAgICAgY29weS5hcHBlbmQoaG9yaXpvbnRhbEVs
bGlwc2lzKTsKLSAgICB9Ci0gICAgcmV0dXJuIGNvcHk7CisgICAgaWYgKHN0cmluZy5sZW5ndGgo
KSA8PSBtYXhMZW5ndGgpCisgICAgICAgIHJldHVybiBzdHJpbmc7CisgICAgcmV0dXJuIG1ha2VT
dHJpbmcoU3RyaW5nVmlldyhzdHJpbmcpLmxlZnQobWF4TGVuZ3RoIC0gMSksIGhvcml6b250YWxF
bGxpcHNpcyk7CiB9CiAKIFByb3BlcnR5TmFtZSB0ZW1wb3JhbFVuaXRQbHVyYWxQcm9wZXJ0eU5h
bWUoVk0mIHZtLCBUZW1wb3JhbFVuaXQgdW5pdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90b29scy9GdW5jdGlvbk92ZXJyaWRlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdG9vbHMvRnVuY3Rpb25PdmVycmlkZXMuY3BwCmluZGV4IDVlMzIwOGNiMjYwMTAzMmM3ZTMw
YzI2YmM5MzE3NWZmNzZmY2JhMzIuLmJlMWYyOGZhNTQ0YmY4ODQwMDM3ZmU0ODE0ODU1NzhiMDI4
ZjM2YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9GdW5jdGlvbk92
ZXJyaWRlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uT3Zl
cnJpZGVzLmNwcApAQCAtMTM1LDIxICsxMzUsMTkgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZU92
ZXJyaWRlSW5mbyhjb25zdCBTb3VyY2VDb2RlJiBvcmlnQ29kZSwgY29uc3QgU3RyaW5nJiBuZXcK
ICAgICB1bnNpZ25lZCBoZWFkZXJMZW5ndGggPSBvcmlnQnJhY2VTdGFydCAtIG9yaWdGdW5jdGlv
blN0YXJ0OwogICAgIFN0cmluZyBvcmlnSGVhZGVyID0gb3JpZ1Byb3ZpZGVyU3RyLnN1YnN0cmlu
ZyhvcmlnRnVuY3Rpb25TdGFydCwgaGVhZGVyTGVuZ3RoKTsKIAotICAgIFN0cmluZyBuZXdQcm92
aWRlclN0cjsKLSAgICBuZXdQcm92aWRlclN0ci5hcHBlbmQob3JpZ0hlYWRlcik7Ci0gICAgbmV3
UHJvdmlkZXJTdHIuYXBwZW5kKG5ld0JvZHkpOworICAgIFN0cmluZyBuZXdQcm92aWRlclN0cmlu
ZyA9IG1ha2VTdHJpbmcob3JpZ0hlYWRlciwgbmV3Qm9keSk7CiAKICAgICBhdXRvIG92ZXJyaWRk
ZW4gPSAiPG92ZXJyaWRkZW4+Il9zOwogICAgIFVSTCB1cmwoeyB9LCBvdmVycmlkZGVuKTsKLSAg
ICBSZWY8U291cmNlUHJvdmlkZXI+IG5ld1Byb3ZpZGVyID0gU3RyaW5nU291cmNlUHJvdmlkZXI6
OmNyZWF0ZShuZXdQcm92aWRlclN0ciwgU291cmNlT3JpZ2luIHsgdXJsIH0sIG92ZXJyaWRkZW4p
OworICAgIFJlZjxTb3VyY2VQcm92aWRlcj4gbmV3UHJvdmlkZXIgPSBTdHJpbmdTb3VyY2VQcm92
aWRlcjo6Y3JlYXRlKG5ld1Byb3ZpZGVyU3RyaW5nLCBTb3VyY2VPcmlnaW4geyB1cmwgfSwgb3Zl
cnJpZGRlbik7CiAKICAgICBpbmZvLmZpcnN0TGluZSA9IDE7CiAgICAgaW5mby5saW5lQ291bnQg
PSAxOyAvLyBGYWtpbmcgaXQuIFRoaXMgZG9lc24ndCByZWFsbHkgbWF0dGVyIGZvciBub3cuCiAg
ICAgaW5mby5zdGFydENvbHVtbiA9IDE7CiAgICAgaW5mby5lbmRDb2x1bW4gPSAxOyAvLyBGYWtp
bmcgaXQuIFRoaXMgZG9lc24ndCByZWFsbHkgbWF0dGVyIGZvciBub3cuCi0gICAgaW5mby5wYXJh
bWV0ZXJzU3RhcnRPZmZzZXQgPSBuZXdQcm92aWRlclN0ci5maW5kKCcoJyk7Ci0gICAgaW5mby50
eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQgPSBuZXdQcm92aWRlclN0ci5maW5kKCd7Jyk7Ci0gICAg
aW5mby50eXBlUHJvZmlsaW5nRW5kT2Zmc2V0ID0gbmV3UHJvdmlkZXJTdHIubGVuZ3RoKCkgLSAx
OworICAgIGluZm8ucGFyYW1ldGVyc1N0YXJ0T2Zmc2V0ID0gbmV3UHJvdmlkZXJTdHJpbmcuZmlu
ZCgnKCcpOworICAgIGluZm8udHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0ID0gbmV3UHJvdmlkZXJT
dHJpbmcuZmluZCgneycpOworICAgIGluZm8udHlwZVByb2ZpbGluZ0VuZE9mZnNldCA9IG5ld1By
b3ZpZGVyU3RyaW5nLmxlbmd0aCgpIC0gMTsKIAogICAgIGluZm8uc291cmNlQ29kZSA9CiAgICAg
ICAgIFNvdXJjZUNvZGUoV1RGTW92ZShuZXdQcm92aWRlciksIGluZm8ucGFyYW1ldGVyc1N0YXJ0
T2Zmc2V0LCBpbmZvLnR5cGVQcm9maWxpbmdFbmRPZmZzZXQgKyAxLCAxLCAxKTsKQEAgLTIyNSwx
MSArMjIzLDcgQEAgc3RhdGljIFN0cmluZyBwYXJzZUNsYXVzZShjb25zdCBjaGFyKiBrZXl3b3Jk
LCBzaXplX3Qga2V5d29yZExlbmd0aCwgRklMRSogZmlsZSwKICAgICBpZiAoaGFzRGlzYWxsb3dl
ZENoYXJhY3RlcnMoZGVsaW1pdGVyU3RhcnQsIGRlbGltaXRlckxlbmd0aCkpCiAgICAgICAgIEZB
SUxfV0lUSF9FUlJPUihTWU5UQVhfRVJST1IsICgiRGVsaW1pdGVyICciLCBkZWxpbWl0ZXIsICIn
IGNhbm5vdCBoYXZlICd7JywgJ30nLCBvciB3aGl0ZXNwYWNlOlxuIiwgbGluZSwgIlxuIikpOwog
ICAgIAotICAgIFN0cmluZyB0ZXJtaW5hdG9yU3RyaW5nOwotICAgIHRlcm1pbmF0b3JTdHJpbmcu
YXBwZW5kKCd9Jyk7Ci0gICAgdGVybWluYXRvclN0cmluZy5hcHBlbmQoZGVsaW1pdGVyKTsKLQot
ICAgIENTdHJpbmcgdGVybWluYXRvckNTdHJpbmcgPSB0ZXJtaW5hdG9yU3RyaW5nLmFzY2lpKCk7
CisgICAgQ1N0cmluZyB0ZXJtaW5hdG9yQ1N0cmluZyA9IG1ha2VTdHJpbmcoJ30nLCBkZWxpbWl0
ZXIpLmFzY2lpKCk7CiAgICAgY29uc3QgY2hhciogdGVybWluYXRvciA9IHRlcm1pbmF0b3JDU3Ry
aW5nLmRhdGEoKTsKICAgICBsaW5lID0gZGVsaW1pdGVyRW5kOyAvLyBTdGFydCBmcm9tIHRoZSB7
LgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmNwcCBiL1NvdXJjZS9X
VEYvd3RmL0Fzc2VydGlvbnMuY3BwCmluZGV4IGM5M2JhZjQxMzNiNmYzODZhNzNmMjA3YjZlZjY1
ZjE5MjNhNDQ2MzguLjJjZDI1MTg5YjNkNzQwOTFmZGE0OGIyYWJjYTNiMGQyMWFjYjIwMzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XVEYv
d3RmL0Fzc2VydGlvbnMuY3BwCkBAIC00NjYsNyArNDY2LDcgQEAgc3RhdGljIHZvaWQgV1RGTG9n
VmFMaXN0KFdURkxvZ0NoYW5uZWwqIGNoYW5uZWwsIGNvbnN0IGNoYXIqIGZvcm1hdCwgdmFfbGlz
dCBhcmcKICAgICBBTExPV19OT05MSVRFUkFMX0ZPUk1BVF9FTkQKIAogICAgIGlmICghbG9nZ2lu
Z1N0cmluZy5lbmRzV2l0aCgnXG4nKSkKLSAgICAgICAgbG9nZ2luZ1N0cmluZy5hcHBlbmQoJ1xu
Jyk7CisgICAgICAgIGxvZ2dpbmdTdHJpbmcgPSBtYWtlU3RyaW5nKGxvZ2dpbmdTdHJpbmcsICdc
bicpOwogCiAgICAgbG9nZ2luZ0FjY3VtdWxhdG9yKCkuYWNjdW11bGF0ZShsb2dnaW5nU3RyaW5n
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmggYi9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaAppbmRleCBjYWQwOTUzYjUyOGEyZDA5
ZTQyMmE4ODI5YjcyYzMyOGJkMTI2ZGJmLi5iNDE0MzJmMTc4ODU1MGFkZTUyNjQ0ZWFjOThmYWJj
YzU5NWE2MjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIu
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaApAQCAtNjEsNiArNjEs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmQoY29uc3QgQXRvbVN0cmluZyYgc3RyaW5nKSB7
IGFwcGVuZChzdHJpbmcuc3RyaW5nKCkpOyB9CiAgICAgdm9pZCBhcHBlbmQoY29uc3QgU3RyaW5n
Jik7CiAgICAgdm9pZCBhcHBlbmQoU3RyaW5nVmlldyk7CisgICAgdm9pZCBhcHBlbmQoQVNDSUlM
aXRlcmFsKTsKICAgICB2b2lkIGFwcGVuZChVQ2hhcik7CiAgICAgdm9pZCBhcHBlbmQoTENoYXIp
OwogICAgIHZvaWQgYXBwZW5kKGNoYXIgY2hhcmFjdGVyKSB7IGFwcGVuZChzdGF0aWNfY2FzdDxM
Q2hhcj4oY2hhcmFjdGVyKSk7IH0KQEAgLTIyMSw2ICsyMjIsMTEgQEAgaW5saW5lIHZvaWQgU3Ry
aW5nQnVpbGRlcjo6YXBwZW5kKFN0cmluZ1ZpZXcgc3RyaW5nKQogICAgICAgICBhcHBlbmRDaGFy
YWN0ZXJzKHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nLmxlbmd0aCgpKTsKIH0KIAoraW5s
aW5lIHZvaWQgU3RyaW5nQnVpbGRlcjo6YXBwZW5kKEFTQ0lJTGl0ZXJhbCBzdHJpbmcpCit7Cisg
ICAgYXBwZW5kQ2hhcmFjdGVycyhzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgp
KTsKK30KKwogaW5saW5lIHZvaWQgU3RyaW5nQnVpbGRlcjo6YXBwZW5kU3Vic3RyaW5nKGNvbnN0
IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKIHsKICAg
ICBhcHBlbmQoU3RyaW5nVmlldyB7IHN0cmluZyB9LnN1YnN0cmluZyhvZmZzZXQsIGxlbmd0aCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwIGIvU291cmNl
L1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCmluZGV4IGExNjczYTYzZTk3NzQ0MjI1ZDAyZGVi
OTliMjQzMjg3M2IzNGYwMjkuLmRjOTQxMDRiNTkyZDEwOGQwMGI4MjU4MDc2MmIxMTUxOGYwN2Nk
ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcAorKysgYi9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKQEAgLTczLDgwICs3Myw2IEBAIFN0cmlu
Zzo6U3RyaW5nKGNvbnN0IGNoYXIqIG51bGxUZXJtaW5hdGVkU3RyaW5nKQogICAgICAgICBtX2lt
cGwgPSBTdHJpbmdJbXBsOjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KG51
bGxUZXJtaW5hdGVkU3RyaW5nKSk7CiB9CiAKLXZvaWQgU3RyaW5nOjphcHBlbmQoY29uc3QgU3Ry
aW5nJiBvdGhlclN0cmluZykKLXsKLSAgICAvLyBGSVhNRTogVGhpcyBpcyBleHRyZW1lbHkgaW5l
ZmZpY2llbnQuIFNvIG11Y2ggc28gdGhhdCB3ZSBtaWdodCB3YW50IHRvIHRha2UgdGhpcyBvdXQg
b2YgU3RyaW5nJ3MgQVBJLgotCi0gICAgaWYgKCFtX2ltcGwpIHsKLSAgICAgICAgbV9pbXBsID0g
b3RoZXJTdHJpbmcubV9pbXBsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKG90
aGVyU3RyaW5nLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byBsZW5ndGgg
PSBtX2ltcGwtPmxlbmd0aCgpOwotICAgIGF1dG8gb3RoZXJMZW5ndGggPSBvdGhlclN0cmluZy5t
X2ltcGwtPmxlbmd0aCgpOwotICAgIGlmIChvdGhlckxlbmd0aCA+IE1heExlbmd0aCAtIGxlbmd0
aCkKLSAgICAgICAgQ1JBU0goKTsKLQotICAgIGlmIChtX2ltcGwtPmlzOEJpdCgpICYmIG90aGVy
U3RyaW5nLm1faW1wbC0+aXM4Qml0KCkpIHsKLSAgICAgICAgTENoYXIqIGRhdGE7Ci0gICAgICAg
IGF1dG8gbmV3SW1wbCA9IFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoICsg
b3RoZXJMZW5ndGgsIGRhdGEpOwotICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhk
YXRhLCBtX2ltcGwtPmNoYXJhY3RlcnM4KCksIGxlbmd0aCk7Ci0gICAgICAgIFN0cmluZ0ltcGw6
OmNvcHlDaGFyYWN0ZXJzKGRhdGEgKyBsZW5ndGgsIG90aGVyU3RyaW5nLm1faW1wbC0+Y2hhcmFj
dGVyczgoKSwgb3RoZXJMZW5ndGgpOwotICAgICAgICBtX2ltcGwgPSBXVEZNb3ZlKG5ld0ltcGwp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIFVDaGFyKiBkYXRhOwotICAgIGF1dG8gbmV3
SW1wbCA9IFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoICsgb3RoZXJMZW5n
dGgsIGRhdGEpOwotICAgIFN0cmluZ1ZpZXcoKm1faW1wbCkuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNv
bnZlcnQoZGF0YSk7Ci0gICAgU3RyaW5nVmlldygqb3RoZXJTdHJpbmcubV9pbXBsKS5nZXRDaGFy
YWN0ZXJzV2l0aFVwY29udmVydChkYXRhICsgbGVuZ3RoKTsKLSAgICBtX2ltcGwgPSBXVEZNb3Zl
KG5ld0ltcGwpOwotfQotCi12b2lkIFN0cmluZzo6YXBwZW5kKExDaGFyIGNoYXJhY3RlcikKLXsK
LSAgICAvLyBGSVhNRTogVGhpcyBpcyBleHRyZW1lbHkgaW5lZmZpY2llbnQuIFNvIG11Y2ggc28g
dGhhdCB3ZSBtaWdodCB3YW50IHRvIHRha2UgdGhpcyBvdXQgb2YgU3RyaW5nJ3MgQVBJLgotCi0g
ICAgaWYgKCFtX2ltcGwpIHsKLSAgICAgICAgbV9pbXBsID0gU3RyaW5nSW1wbDo6Y3JlYXRlKCZj
aGFyYWN0ZXIsIDEpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICghaXM4Qml0KCkp
IHsKLSAgICAgICAgYXBwZW5kKHN0YXRpY19jYXN0PFVDaGFyPihjaGFyYWN0ZXIpKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAobV9pbXBsLT5sZW5ndGgoKSA+PSBNYXhMZW5ndGgp
Ci0gICAgICAgIENSQVNIKCk7Ci0gICAgTENoYXIqIGRhdGE7Ci0gICAgYXV0byBuZXdJbXBsID0g
U3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFsaXplZChtX2ltcGwtPmxlbmd0aCgpICsgMSwgZGF0
YSk7Ci0gICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoZGF0YSwgbV9pbXBsLT5jaGFyYWN0
ZXJzOCgpLCBtX2ltcGwtPmxlbmd0aCgpKTsKLSAgICBkYXRhW21faW1wbC0+bGVuZ3RoKCldID0g
Y2hhcmFjdGVyOwotICAgIG1faW1wbCA9IFdURk1vdmUobmV3SW1wbCk7Ci19Ci0KLXZvaWQgU3Ry
aW5nOjphcHBlbmQoVUNoYXIgY2hhcmFjdGVyKQotewotICAgIC8vIEZJWE1FOiBUaGlzIGlzIGV4
dHJlbWVseSBpbmVmZmljaWVudC4gU28gbXVjaCBzbyB0aGF0IHdlIG1pZ2h0IHdhbnQgdG8gdGFr
ZSB0aGlzIG91dCBvZiBTdHJpbmcncyBBUEkuCi0KLSAgICBpZiAoIW1faW1wbCkgewotICAgICAg
ICBtX2ltcGwgPSBTdHJpbmdJbXBsOjpjcmVhdGUoJmNoYXJhY3RlciwgMSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgaWYgKGlzTGF0aW4xKGNoYXJhY3RlcikgJiYgaXM4Qml0KCkpIHsK
LSAgICAgICAgYXBwZW5kKHN0YXRpY19jYXN0PExDaGFyPihjaGFyYWN0ZXIpKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSAgICBpZiAobV9pbXBsLT5sZW5ndGgoKSA+PSBNYXhMZW5ndGgpCi0g
ICAgICAgIENSQVNIKCk7Ci0gICAgVUNoYXIqIGRhdGE7Ci0gICAgYXV0byBuZXdJbXBsID0gU3Ry
aW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFsaXplZChtX2ltcGwtPmxlbmd0aCgpICsgMSwgZGF0YSk7
Ci0gICAgU3RyaW5nVmlldygqbV9pbXBsKS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChkYXRh
KTsKLSAgICBkYXRhW21faW1wbC0+bGVuZ3RoKCldID0gY2hhcmFjdGVyOwotICAgIG1faW1wbCA9
IFdURk1vdmUobmV3SW1wbCk7Ci19Ci0KIGludCBjb2RlUG9pbnRDb21wYXJlKGNvbnN0IFN0cmlu
ZyYgYSwgY29uc3QgU3RyaW5nJiBiKQogewogICAgIHJldHVybiBjb2RlUG9pbnRDb21wYXJlKGEu
aW1wbCgpLCBiLmltcGwoKSk7CkBAIC0xNjcsNyArOTMsMTAgQEAgdm9pZCBTdHJpbmc6Omluc2Vy
dChjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgcG9zaXRpb24pCiAgICAgfQogCiAgICAg
aWYgKHBvc2l0aW9uID49IGxlbmd0aCgpKSB7Ci0gICAgICAgIGFwcGVuZChzdHJpbmcpOworICAg
ICAgICBpZiAoc3RyaW5nLmlzOEJpdCgpKQorICAgICAgICAgICAgYXBwZW5kKHN0cmluZy5jaGFy
YWN0ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBh
cHBlbmQoc3RyaW5nLmNoYXJhY3RlcnMxNigpLCBzdHJpbmcubGVuZ3RoKCkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC0yNDQsNyArMTczLDcgQEAgdm9pZCBTdHJpbmc6OmFwcGVuZChj
b25zdCBVQ2hhciogY2hhcmFjdGVyc1RvQXBwZW5kLCB1bnNpZ25lZCBsZW5ndGhUb0FwcGVuZCkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgdW5zaWduZWQgc3RyTGVuZ3RoID0gbV9pbXBsLT5sZW5n
dGgoKTsKLSAgICAKKwogICAgIEFTU0VSVChjaGFyYWN0ZXJzVG9BcHBlbmQpOwogICAgIGlmIChs
ZW5ndGhUb0FwcGVuZCA+IE1heExlbmd0aCAtIHN0ckxlbmd0aCkKICAgICAgICAgQ1JBU0goKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmggYi9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1dURlN0cmluZy5oCmluZGV4IGYxNzNmZTY5MjNkN2FhZjI0YWUzNGRkNzQ5ZTA3
MzQ4Zjg1NTgzODkuLjllNjM5NGE5YjNlZmIwZmU2Njg1Yjg5MTAwNGRkZWM4YmNlMDVjNjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvdGV4dC9XVEZTdHJpbmcuaApAQCAtMTkwLDEyICsxOTAsNiBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBlbmRzV2l0aChjaGFyIGNoYXJhY3RlcikgY29uc3QgeyByZXR1cm4gZW5kc1dpdGgoc3Rh
dGljX2Nhc3Q8VUNoYXI+KGNoYXJhY3RlcikpOyB9CiAgICAgYm9vbCBoYXNJbmZpeEVuZGluZ0F0
KFN0cmluZ1ZpZXcgc3VmZml4LCB1bnNpZ25lZCBlbmQpIGNvbnN0OwogCi0gICAgV1RGX0VYUE9S
VF9QUklWQVRFIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYpOwotICAgIFdURl9FWFBPUlRfUFJJ
VkFURSB2b2lkIGFwcGVuZChMQ2hhcik7Ci0gICAgdm9pZCBhcHBlbmQoY2hhciBjaGFyYWN0ZXIp
IHsgYXBwZW5kKHN0YXRpY19jYXN0PExDaGFyPihjaGFyYWN0ZXIpKTsgfTsKLSAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBhcHBlbmQoVUNoYXIpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSB2
b2lkIGFwcGVuZChjb25zdCBMQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgV1RGX0VYUE9S
VF9QUklWQVRFIHZvaWQgYXBwZW5kKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKICAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBpbnNlcnQoY29uc3QgU3RyaW5nJiwgdW5zaWduZWQg
cG9zaXRpb24pOwogCiAgICAgU3RyaW5nJiByZXBsYWNlKFVDaGFyIHRhcmdldCwgVUNoYXIgcmVw
bGFjZW1lbnQpOwpAQCAtMzQwLDYgKzMzNCwxMCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgcmVtb3ZlSW50ZXJuYWwoY29uc3Qg
Q2hhcmFjdGVyVHlwZSosIHVuc2lnbmVkLCB1bnNpZ25lZCk7CiAKKyAgICAvLyBGSVhNRTogT25s
eSB1c2VkIGJ5IGluc2VydCgpLCB3ZSBzaG91bGQgY29uc2lkZXIgZHJvcHBpbmcgdGhlbS4KKyAg
ICB2b2lkIGFwcGVuZChjb25zdCBMQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgdm9pZCBh
cHBlbmQoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOworCiAgICAgdGVtcGxhdGU8Ym9v
bCBhbGxvd0VtcHR5RW50cmllcz4gdm9pZCBzcGxpdEludGVybmFsKFVDaGFyIHNlcGFyYXRvciwg
Y29uc3QgU3BsaXRGdW5jdG9yJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Ym9vbCBhbGxvd0VtcHR5
RW50cmllcz4gVmVjdG9yPFN0cmluZz4gc3BsaXRJbnRlcm5hbChVQ2hhciBzZXBhcmF0b3IpIGNv
bnN0OwogICAgIHRlbXBsYXRlPGJvb2wgYWxsb3dFbXB0eUVudHJpZXM+IFZlY3RvcjxTdHJpbmc+
IHNwbGl0SW50ZXJuYWwoU3RyaW5nVmlldyBzZXBhcmF0b3IpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5RGF0YS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlEYXRhLmNwcAppbmRleCA0NjBmMTc0YTM4
MWFiNmFiYTRjYTI5ODMxNDUyNjk4YjVkNTI5MGQwLi44NWIxNzgyYWJlYmY2N2UxNjNjYjZjZTlk
MzNiNDc5MGJmMDRiYWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJLZXlEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJLZXlEYXRhLmNwcApAQCAtMzcxLDEwICszNzEsOCBAQCBTdHJpbmcgSURCS2V5RGF0YTo6
bG9nZ2luZ1N0cmluZygpIGNvbnN0CiAgICAgICAgIHJldHVybiAiPG1pbmltdW0+Il9zOwogICAg
IH0KIAotICAgIGlmIChyZXN1bHQubGVuZ3RoKCkgPiAxNTApIHsKLSAgICAgICAgcmVzdWx0LnRy
dW5jYXRlKDE0Nyk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoIi4uLiJfcyk7Ci0gICAgfQorICAg
IGlmIChyZXN1bHQubGVuZ3RoKCkgPiAxNTApCisgICAgICAgIHJlc3VsdCA9IG1ha2VTdHJpbmco
U3RyaW5nVmlldyhyZXN1bHQpLmxlZnQoMTQ3KSwgIi4uLiJfcyk7CiAKICAgICByZXR1cm4gcmVz
dWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
S2V5UmFuZ2VEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktl
eVJhbmdlRGF0YS5jcHAKaW5kZXggN2MyYTgxZTI0NjRkNGFjNmY2OTFmNmY3YWNmOWI2YmFhY2Jl
MjE1NC4uOTQzNTFhYTIwOGY5NjgxNDQwYTcxYzE5OWQ2NWQzYzk4ZTllZDljZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UmFuZ2VEYXRhLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZURhdGEuY3Bw
CkBAIC0xMTEsMTAgKzExMSw4IEBAIGJvb2wgSURCS2V5UmFuZ2VEYXRhOjppc1ZhbGlkKCkgY29u
c3QKIFN0cmluZyBJREJLZXlSYW5nZURhdGE6OmxvZ2dpbmdTdHJpbmcoKSBjb25zdAogewogICAg
IGF1dG8gcmVzdWx0ID0gbWFrZVN0cmluZyhsb3dlck9wZW4gPyAiKCAiIDogIlsgIiwgbG93ZXJL
ZXkubG9nZ2luZ1N0cmluZygpLCAiLCAiLCB1cHBlcktleS5sb2dnaW5nU3RyaW5nKCksIHVwcGVy
T3BlbiA/ICIgKSIgOiAiIF0iKTsKLSAgICBpZiAocmVzdWx0Lmxlbmd0aCgpID4gNDAwKSB7Ci0g
ICAgICAgIHJlc3VsdC50cnVuY2F0ZSgzOTcpOwotICAgICAgICByZXN1bHQuYXBwZW5kKCIuLi4i
X3MpOwotICAgIH0KKyAgICBpZiAocmVzdWx0Lmxlbmd0aCgpID4gNDAwKQorICAgICAgICByZXN1
bHQgPSBtYWtlU3RyaW5nKFN0cmluZ1ZpZXcocmVzdWx0KS5sZWZ0KDM5NyksICIuLi4iX3MpOwog
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJJbmRleEluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkluZGV4SW5mby5jcHAKaW5kZXggN2FiYTgzMWQ3MDBl
YTk4ZmViMmNjOWFhNDRjOTYyYzRiNTk0NDdiOS4uNjA0NTRkNWZlNWE2MjU3MDgzOGI1Mzc1MzAx
ZmE3NWQ0ZGUzYzg5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2hhcmVkL0lEQkluZGV4SW5mby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2hhcmVkL0lEQkluZGV4SW5mby5jcHAKQEAgLTU5LDEwICs1OSwxMCBAQCBJREJJ
bmRleEluZm8gSURCSW5kZXhJbmZvOjppc29sYXRlZENvcHkoKSAmJgogCiBTdHJpbmcgSURCSW5k
ZXhJbmZvOjpsb2dnaW5nU3RyaW5nKGludCBpbmRlbnQpIGNvbnN0CiB7Ci0gICAgU3RyaW5nIGlu
ZGVudFN0cmluZzsKKyAgICBTdHJpbmdCdWlsZGVyIGluZGVudFN0cmluZzsKICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IGluZGVudDsgKytpKQogICAgICAgICBpbmRlbnRTdHJpbmcuYXBwZW5kKCcg
Jyk7Ci0gICAgcmV0dXJuIG1ha2VTdHJpbmcoaW5kZW50U3RyaW5nLCAiSW5kZXg6ICIsIG1fbmFt
ZSwgIiAoIiwgbV9pZGVudGlmaWVyLCAiKSBrZXlQYXRoOiAiLCBXZWJDb3JlOjpsb2dnaW5nU3Ry
aW5nKG1fa2V5UGF0aCksICdcbicpOworICAgIHJldHVybiBtYWtlU3RyaW5nKGluZGVudFN0cmlu
Zy50b1N0cmluZygpLCAiSW5kZXg6ICIsIG1fbmFtZSwgIiAoIiwgbV9pZGVudGlmaWVyLCAiKSBr
ZXlQYXRoOiAiLCBXZWJDb3JlOjpsb2dnaW5nU3RyaW5nKG1fa2V5UGF0aCksICdcbicpOwogfQog
CiBTdHJpbmcgSURCSW5kZXhJbmZvOjpjb25kZW5zZWRMb2dnaW5nU3RyaW5nKCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5k
c2hha2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhh
bmRzaGFrZS5jcHAKaW5kZXggYzMwN2FjMzNlM2ExZjBjNjE3MzA5ZDBjMzg1OGEwNGI3ZDk1Mzkx
My4uOThiNTY4Y2IwZWYwZDIyN2Q1ZGVjNmJiNWVkMmJkZTFhOGNiYzI5NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFr
ZS5jcHAKQEAgLTgzLDEzICs4MywxMiBAQCBzdGF0aWMgU3RyaW5nIGhvc3ROYW1lKGNvbnN0IFVS
TCYgdXJsLCBib29sIHNlY3VyZSkKICAgICByZXR1cm4gaG9zdDsKIH0KIAotc3RhdGljIGNvbnN0
IHNpemVfdCBtYXhJbnB1dFNhbXBsZVNpemUgPSAxMjg7Ci1zdGF0aWMgU3RyaW5nIHRyaW1JbnB1
dFNhbXBsZShjb25zdCB1aW50OF90KiBwLCBzaXplX3QgbGVuKQorc3RhdGljIGNvbnN0ZXhwciBz
aXplX3QgbWF4SW5wdXRTYW1wbGVTaXplID0gMTI4Oworc3RhdGljIFN0cmluZyB0cmltSW5wdXRT
YW1wbGUoY29uc3QgdWludDhfdCogcCwgc2l6ZV90IGxlbmd0aCkKIHsKLSAgICBTdHJpbmcgcyA9
IFN0cmluZyhwLCBzdGQ6Om1pbjxzaXplX3Q+KGxlbiwgbWF4SW5wdXRTYW1wbGVTaXplKSk7Ci0g
ICAgaWYgKGxlbiA+IG1heElucHV0U2FtcGxlU2l6ZSkKLSAgICAgICAgcy5hcHBlbmQoaG9yaXpv
bnRhbEVsbGlwc2lzKTsKLSAgICByZXR1cm4gczsKKyAgICBpZiAobGVuZ3RoIDw9IG1heElucHV0
U2FtcGxlU2l6ZSkKKyAgICAgICAgcmV0dXJuIFN0cmluZyhwLCBsZW5ndGgpOworICAgIHJldHVy
biBtYWtlU3RyaW5nKFN0cmluZ1ZpZXcocCwgbGVuZ3RoKS5sZWZ0KG1heElucHV0U2FtcGxlU2l6
ZSksIGhvcml6b250YWxFbGxpcHNpcyk7CiB9CiAKIHN0YXRpYyBTdHJpbmcgZ2VuZXJhdGVTZWNX
ZWJTb2NrZXRLZXkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
c29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcAppbmRleCAwODQ4ZDVkMTc5
YWU4OTFjMzljMDE0NThlZTkzNWM3YTQ2OWFlMWY4Li4xNTE2OTRjMjhhMjkyMTVlN2VhMmIyMzRm
NDhhNTY1MmFjZjMxY2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcApAQCAtMzU1LDEy
ICszNTUsMTIgQEAgdm9pZCBBWElzb2xhdGVkT2JqZWN0Ojppbml0aWFsaXplQXR0cmlidXRlRGF0
YShBWENvcmVPYmplY3QmIGNvcmVPYmplY3QsIGJvb2wgaXMKIAogICAgIFZlY3RvcjxTdHJpbmc+
IGNsYXNzTGlzdDsKICAgICBvYmplY3QuY2xhc3NMaXN0KGNsYXNzTGlzdCk7Ci0gICAgU3RyaW5n
IGNvbWJpbmVkQ2xhc3NMaXN0OworICAgIFN0cmluZ0J1aWxkZXIgY29tYmluZWRDbGFzc0xpc3Q7
CiAgICAgZm9yIChhdXRvIGl0ID0gY2xhc3NMaXN0LmJlZ2luKCksIGVuZCA9IGNsYXNzTGlzdC5l
bmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgIGNvbWJpbmVkQ2xhc3NMaXN0LmFwcGVu
ZCgqaXQpOwotICAgICAgICBjb21iaW5lZENsYXNzTGlzdC5hcHBlbmQoIiAiX3MpOworICAgICAg
ICBjb21iaW5lZENsYXNzTGlzdC5hcHBlbmQoJyAnKTsKICAgICB9Ci0gICAgc2V0UHJvcGVydHko
QVhQcm9wZXJ0eU5hbWU6OkNsYXNzTGlzdCwgY29tYmluZWRDbGFzc0xpc3QpOworICAgIHNldFBy
b3BlcnR5KEFYUHJvcGVydHlOYW1lOjpDbGFzc0xpc3QsIGNvbWJpbmVkQ2xhc3NMaXN0LnRvU3Ry
aW5nKCkpOwogCiAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkNvbG9yVmFsdWUsIG9i
amVjdC5jb2xvclZhbHVlKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hh
cmFjdGVyRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAKaW5k
ZXggM2M2NDA4Yzg2ZTRiYzA2OGQzMTIzZjkwN2QxNTk1ZjFlMzM3MzgyZS4uOTc1NTJlYWYxMmVj
NDQwZDk5YjhkMmJjOTg1YzZhYjc5ZGNmOGFhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0NoYXJhY3RlckRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJE
YXRhLmNwcApAQCAtMTEzLDEwICsxMTMsNyBAQCB1bnNpZ25lZCBDaGFyYWN0ZXJEYXRhOjpwYXJz
ZXJBcHBlbmREYXRhKGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25lZCBvZmZzZXQsCiAgICAg
ICAgIHN0eWxlSW52YWxpZGF0aW9uLmVtcGxhY2UoKnBhcmVudCwgY2hpbGRDaGFuZ2UpOwogCiAg
ICAgU3RyaW5nIG9sZERhdGEgPSBtX2RhdGE7Ci0gICAgaWYgKHN0cmluZy5pczhCaXQoKSkKLSAg
ICAgICAgbV9kYXRhLmFwcGVuZChzdHJpbmcuY2hhcmFjdGVyczgoKSArIG9mZnNldCwgY2hhcmFj
dGVyTGVuZ3RoTGltaXQpOwotICAgIGVsc2UKLSAgICAgICAgbV9kYXRhLmFwcGVuZChzdHJpbmcu
Y2hhcmFjdGVyczE2KCkgKyBvZmZzZXQsIGNoYXJhY3Rlckxlbmd0aExpbWl0KTsKKyAgICBtX2Rh
dGEgPSBtYWtlU3RyaW5nKG1fZGF0YSwgU3RyaW5nVmlldyhzdHJpbmcpLnN1YnN0cmluZyhvZmZz
ZXQsIGNoYXJhY3Rlckxlbmd0aExpbWl0KSk7CiAKICAgICBBU1NFUlQoIXJlbmRlcmVyKCkgfHwg
aXM8VGV4dD4oKnRoaXMpKTsKICAgICBpZiAoYXV0byB0ZXh0ID0gZHluYW1pY0Rvd25jYXN0PFRl
eHQ+KCp0aGlzKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9UZXh0LmNwcAppbmRleCBkYzgzOTFmNjM5ZjhkMTYzMDk4MzUzZjQ5
Y2JhYzAyNmE4YjdkODEwLi40YjkwM2Y4ZmRmMmJhZDkzOWRkYWJhODBjZGU4ODA1NDQxMjk3NmUy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL1RleHQuY3BwCkBAIC0yMzEsMTMgKzIzMSwxMSBAQCBzdGF0aWMgdm9pZCBhcHBl
bmRUZXh0UmVwcmVzZW50YXRpb24oU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgY29uc3QgVGV4dCYg
dGV4dCkKICAgICB2YWx1ZS5yZXBsYWNlV2l0aExpdGVyYWwoJ1xcJywgIlxcXFwiKTsKICAgICB2
YWx1ZS5yZXBsYWNlV2l0aExpdGVyYWwoJ1xuJywgIlxcbiIpOwogICAgIAotICAgIGNvbnN0IHNp
emVfdCBtYXhEdW1wTGVuZ3RoID0gMzA7Ci0gICAgaWYgKHZhbHVlLmxlbmd0aCgpID4gbWF4RHVt
cExlbmd0aCkgewotICAgICAgICB2YWx1ZS50cnVuY2F0ZShtYXhEdW1wTGVuZ3RoIC0gMTApOwot
ICAgICAgICB2YWx1ZS5hcHBlbmQoIi4uLiJfcyk7Ci0gICAgfQotCi0gICAgYnVpbGRlci5hcHBl
bmQoIiBcIiIsIHZhbHVlLCAnXCInKTsKKyAgICBjb25zdGV4cHIgc2l6ZV90IG1heER1bXBMZW5n
dGggPSAzMDsKKyAgICBpZiAodmFsdWUubGVuZ3RoKCkgPiBtYXhEdW1wTGVuZ3RoKQorICAgICAg
ICBidWlsZGVyLmFwcGVuZCgiIFwiIiwgU3RyaW5nVmlldyh2YWx1ZSkubGVmdChtYXhEdW1wTGVu
Z3RoIC0gMTApLCAiLi4uXCIiKTsKKyAgICBlbHNlCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIg
XCIiLCB2YWx1ZSwgJ1wiJyk7CiB9CiAKIFN0cmluZyBUZXh0OjpkZXNjcmlwdGlvbigpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcAppbmRleCA1MjVkZWU4ZDE0
MDA2ODJlMmUxMGZkYTUzYTdjZTI2OGE1MTM3ZjRiLi5jYjQwMTJiY2I0MTQwOGE0NmM0YTFhMTNk
OWIyODgxZjc5ZTg1YjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVmlld3BvcnRB
cmd1bWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5j
cHAKQEAgLTQzMyw3ICs0MzMsNyBAQCBzdGF0aWMgU3RyaW5nIHZpZXdwb3J0RXJyb3JNZXNzYWdl
KFZpZXdwb3J0RXJyb3JDb2RlIGVycm9yQ29kZSwgU3RyaW5nVmlldyByZXBsYQogICAgICAgICBt
ZXNzYWdlLnJlcGxhY2UoIiVyZXBsYWNlbWVudDIiLCByZXBsYWNlbWVudDIpOwogCiAgICAgaWYg
KChlcnJvckNvZGUgPT0gVW5yZWNvZ25pemVkVmlld3BvcnRBcmd1bWVudFZhbHVlRXJyb3IgfHwg
ZXJyb3JDb2RlID09IFRydW5jYXRlZFZpZXdwb3J0QXJndW1lbnRWYWx1ZUVycm9yKSAmJiByZXBs
YWNlbWVudDEuY29udGFpbnMoJzsnKSkKLSAgICAgICAgbWVzc2FnZS5hcHBlbmQoIiBOb3RlIHRo
YXQgJzsnIGlzIG5vdCBhIHNlcGFyYXRvciBpbiB2aWV3cG9ydCB2YWx1ZXMuIFRoZSBsaXN0IHNo
b3VsZCBiZSBjb21tYS1zZXBhcmF0ZWQuIl9zKTsKKyAgICAgICAgbWVzc2FnZSA9IG1ha2VTdHJp
bmcobWVzc2FnZSwgIiBOb3RlIHRoYXQgJzsnIGlzIG5vdCBhIHNlcGFyYXRvciBpbiB2aWV3cG9y
dCB2YWx1ZXMuIFRoZSBsaXN0IHNob3VsZCBiZSBjb21tYS1zZXBhcmF0ZWQuIl9zKTsKIAogICAg
IHJldHVybiBtZXNzYWdlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9t
YXJrdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCmluZGV4IGYwOGRk
OTk4OTQ0OTM0YzhmZjA2Mjk2Yjk4NWE5ZmEwZGFkNzk1NjUuLmI0Yzk2NGQyMWEwNDNlYzdhYjk3
OTA1YmFjZTY3NDE5MGE5NTZmNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bWFya3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKQEAgLTEx
MDMsNyArMTEwMyw3IEBAIHN0YXRpYyB2b2lkIGZpbGxDb250YWluZXJGcm9tU3RyaW5nKENvbnRh
aW5lck5vZGUmIHBhcmFncmFwaCwgY29uc3QgU3RyaW5nJiBzdHJpCiAgICAgQVNTRVJUKHN0cmlu
Zy5maW5kKCdcbicpID09IG5vdEZvdW5kKTsKIAogICAgIFZlY3RvcjxTdHJpbmc+IHRhYkxpc3Qg
PSBzdHJpbmcuc3BsaXRBbGxvd2luZ0VtcHR5RW50cmllcygnXHQnKTsKLSAgICBTdHJpbmcgdGFi
VGV4dCA9IGVtcHR5U3RyaW5nKCk7CisgICAgU3RyaW5nQnVpbGRlciB0YWJUZXh0OwogICAgIGJv
b2wgZmlyc3QgPSB0cnVlOwogICAgIHNpemVfdCBudW1FbnRyaWVzID0gdGFiTGlzdC5zaXplKCk7
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1FbnRyaWVzOyArK2kpIHsKQEAgLTExMTIs
OCArMTExMiw4IEBAIHN0YXRpYyB2b2lkIGZpbGxDb250YWluZXJGcm9tU3RyaW5nKENvbnRhaW5l
ck5vZGUmIHBhcmFncmFwaCwgY29uc3QgU3RyaW5nJiBzdHJpCiAgICAgICAgIC8vIGFwcGVuZCB0
aGUgbm9uLXRhYiB0ZXh0dWFsIHBhcnQKICAgICAgICAgaWYgKCFzLmlzRW1wdHkoKSkgewogICAg
ICAgICAgICAgaWYgKCF0YWJUZXh0LmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgIHBhcmFn
cmFwaC5hcHBlbmRDaGlsZChjcmVhdGVUYWJTcGFuRWxlbWVudChkb2N1bWVudCwgdGFiVGV4dCkp
OwotICAgICAgICAgICAgICAgIHRhYlRleHQgPSBlbXB0eVN0cmluZygpOworICAgICAgICAgICAg
ICAgIHBhcmFncmFwaC5hcHBlbmRDaGlsZChjcmVhdGVUYWJTcGFuRWxlbWVudChkb2N1bWVudCwg
dGFiVGV4dC50b1N0cmluZygpKSk7CisgICAgICAgICAgICAgICAgdGFiVGV4dC5jbGVhcigpOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgUmVmPE5vZGU+IHRleHROb2RlID0gZG9jdW1lbnQu
Y3JlYXRlVGV4dE5vZGUoc3RyaW5nV2l0aFJlYmFsYW5jZWRXaGl0ZXNwYWNlKHMsIGZpcnN0LCBp
ICsgMSA9PSBudW1FbnRyaWVzKSk7CiAgICAgICAgICAgICBwYXJhZ3JhcGguYXBwZW5kQ2hpbGQo
dGV4dE5vZGUpOwpAQCAtMTEyNCw3ICsxMTI0LDcgQEAgc3RhdGljIHZvaWQgZmlsbENvbnRhaW5l
ckZyb21TdHJpbmcoQ29udGFpbmVyTm9kZSYgcGFyYWdyYXBoLCBjb25zdCBTdHJpbmcmIHN0cmkK
ICAgICAgICAgaWYgKGkgKyAxICE9IG51bUVudHJpZXMpCiAgICAgICAgICAgICB0YWJUZXh0LmFw
cGVuZCgnXHQnKTsKICAgICAgICAgZWxzZSBpZiAoIXRhYlRleHQuaXNFbXB0eSgpKQotICAgICAg
ICAgICAgcGFyYWdyYXBoLmFwcGVuZENoaWxkKGNyZWF0ZVRhYlNwYW5FbGVtZW50KGRvY3VtZW50
LCB0YWJUZXh0KSk7CisgICAgICAgICAgICBwYXJhZ3JhcGguYXBwZW5kQ2hpbGQoY3JlYXRlVGFi
U3BhbkVsZW1lbnQoZG9jdW1lbnQsIHRhYlRleHQudG9TdHJpbmcoKSkpOwogCiAgICAgICAgIGZp
cnN0ID0gZmFsc2U7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBE
aXJlY3RvcnlEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURv
Y3VtZW50LmNwcAppbmRleCA3YzIyZGQ1NzFmNmJjMzJiMjNmYmJiNWNiMDE5ZmZiOWM3NzMxYzZk
Li4xNTYyOGQ5NTlmYmJhMmVjN2I4NTRkMzZlNjkwMTFiMTJlNjNmM2QyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcApAQCAtOTMsNyArOTMsNyBAQCBw
cml2YXRlOgogICAgIGludCBtX3NpemUgeyAyNTQgfTsKICAgICBVQ2hhciogbV9idWZmZXI7CiAg
ICAgVUNoYXIqIG1fZGVzdDsKLSAgICBTdHJpbmcgbV9jYXJyeU92ZXI7CisgICAgU3RyaW5nQnVp
bGRlciBtX2NhcnJ5T3ZlcjsKICAgICAKICAgICBMaXN0U3RhdGUgbV9saXN0U3RhdGU7CiB9OwpA
QCAtMjYyLDE0ICsyNjIsMTUgQEAgdm9pZCBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6cGFy
c2VBbmRBcHBlbmRPbmVMaW5lKGNvbnN0IFN0cmluZyYgaW5wdXRMaW5lKQogICAgIGlmICh0eXBl
UmVzdWx0ID09IEZUUE1pc2NFbnRyeSB8fCB0eXBlUmVzdWx0ID09IEZUUEp1bmtFbnRyeSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgU3RyaW5nIGZpbGVuYW1lKHJlc3VsdC5maWxlbmFtZSwgcmVz
dWx0LmZpbGVuYW1lTGVuZ3RoKTsKKyAgICBTdHJpbmcgZmlsZW5hbWU7CiAgICAgaWYgKHJlc3Vs
dC50eXBlID09IEZUUERpcmVjdG9yeUVudHJ5KSB7Ci0gICAgICAgIGZpbGVuYW1lLmFwcGVuZCgn
LycpOworICAgICAgICBmaWxlbmFtZSA9IG1ha2VTdHJpbmcoU3RyaW5nVmlldyB7IHJlc3VsdC5m
aWxlbmFtZSwgcmVzdWx0LmZpbGVuYW1lTGVuZ3RoIH0sICcvJyk7CiAKICAgICAgICAgLy8gV2Ug
aGF2ZSBubyBpbnRlcmVzdCBpbiBsaW5raW5nIHRvICJjdXJyZW50IGRpcmVjdG9yeSIKICAgICAg
ICAgaWYgKGZpbGVuYW1lID09ICIuLyIpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgfQorICAg
IH0gZWxzZQorICAgICAgICBmaWxlbmFtZSA9IFN0cmluZyhyZXN1bHQuZmlsZW5hbWUsIHJlc3Vs
dC5maWxlbmFtZUxlbmd0aCk7CiAKICAgICBMT0coRlRQLCAiQXBwZW5kaW5nIGVudHJ5IC0gJXMs
ICVzIiwgZmlsZW5hbWUuYXNjaWkoKS5kYXRhKCksIHJlc3VsdC5maWxlU2l6ZS5hc2NpaSgpLmRh
dGEoKSk7CiAKQEAgLTM4OCwxMCArMzg5LDEwIEBAIHZvaWQgRlRQRGlyZWN0b3J5RG9jdW1lbnRQ
YXJzZXI6OmFwcGVuZChSZWZQdHI8U3RyaW5nSW1wbD4mJiBpbnB1dFNvdXJjZSkKIAogICAgIHdo
aWxlIChjdXJzb3IgPCBtX2Rlc3QpIHsKICAgICAgICAgaWYgKCpjdXJzb3IgPT0gJ1xuJykgewot
ICAgICAgICAgICAgbV9jYXJyeU92ZXIuYXBwZW5kKFN0cmluZyhzdGFydCwgY3Vyc29yIC0gc3Rh
cnQpKTsKLSAgICAgICAgICAgIExPRyhGVFAsICIlcyIsIG1fY2FycnlPdmVyLmFzY2lpKCkuZGF0
YSgpKTsKLSAgICAgICAgICAgIHBhcnNlQW5kQXBwZW5kT25lTGluZShtX2NhcnJ5T3Zlcik7Ci0g
ICAgICAgICAgICBtX2NhcnJ5T3ZlciA9IFN0cmluZygpOworICAgICAgICAgICAgbV9jYXJyeU92
ZXIuYXBwZW5kKFN0cmluZ1ZpZXcoc3RhcnQsIGN1cnNvciAtIHN0YXJ0KSk7CisgICAgICAgICAg
ICBMT0coRlRQLCAiJXMiLCBtX2NhcnJ5T3Zlci50b1N0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsK
KyAgICAgICAgICAgIHBhcnNlQW5kQXBwZW5kT25lTGluZShtX2NhcnJ5T3Zlci50b1N0cmluZygp
KTsKKyAgICAgICAgICAgIG1fY2FycnlPdmVyLmNsZWFyKCk7CiAKICAgICAgICAgICAgIHN0YXJ0
ID0gKytjdXJzb3I7CiAgICAgICAgIH0gZWxzZSAKQEAgLTQwMCwxNSArNDAxLDE1IEBAIHZvaWQg
RlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmFwcGVuZChSZWZQdHI8U3RyaW5nSW1wbD4mJiBp
bnB1dFNvdXJjZSkKIAogICAgIC8vIENvcHkgdGhlIHBhcnRpYWwgbGluZSB3ZSBoYXZlIGxlZnQg
dG8gdGhlIGNhcnJ5b3ZlciBidWZmZXIKICAgICBpZiAoY3Vyc29yIC0gc3RhcnQgPiAxKQotICAg
ICAgICBtX2NhcnJ5T3Zlci5hcHBlbmQoU3RyaW5nKHN0YXJ0LCBjdXJzb3IgLSBzdGFydCAtIDEp
KTsKKyAgICAgICAgbV9jYXJyeU92ZXIuYXBwZW5kKFN0cmluZ1ZpZXcoc3RhcnQsIGN1cnNvciAt
IHN0YXJ0IC0gMSkpOwogfQogCiB2b2lkIEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpmaW5p
c2goKQogewogICAgIC8vIFBvc3NpYmxlIHRoZSBsYXN0IGxpbmUgaW4gdGhlIGxpc3RpbmcgaGFk
IG5vIG5ld2xpbmUsIHNvIHRyeSB0byBwYXJzZSBpdCBub3cKICAgICBpZiAoIW1fY2FycnlPdmVy
LmlzRW1wdHkoKSkgewotICAgICAgICBwYXJzZUFuZEFwcGVuZE9uZUxpbmUobV9jYXJyeU92ZXIp
OwotICAgICAgICBtX2NhcnJ5T3ZlciA9IFN0cmluZygpOworICAgICAgICBwYXJzZUFuZEFwcGVu
ZE9uZUxpbmUobV9jYXJyeU92ZXIudG9TdHJpbmcoKSk7CisgICAgICAgIG1fY2FycnlPdmVyLmNs
ZWFyKCk7CiAgICAgfQogCiAgICAgbV90YWJsZUVsZW1lbnQgPSBudWxscHRyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
LmNwcAppbmRleCA3NzNmNjc2NDhhM2Q5MDhmYmEwMzczYTc5OWY0MjkyOGE3NzkyZDhmLi4xYzRl
MzUyNGExYTQyMzg3NDQxYTM0MmYxY2JhYTExYzI4MzEzZThmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApA
QCAtMzA3NCw3ICszMDc0LDcgQEAgUmVmUHRyPFdlYkdMQWN0aXZlSW5mbz4gV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6Z2V0QWN0aXZlVW5pZm9ybShXZWJHTFByb2dyYW0KICAgICAvLyBGSVhN
RTogRG8gd2Ugc3RpbGwgbmVlZCB0aGlzIGZvciB0aGUgQU5HTEUgYmFja2VuZD8KICAgICBpZiAo
IWlzR0xFUzJDb21wbGlhbnQoKSkKICAgICAgICAgaWYgKGluZm8uc2l6ZSA+IDEgJiYgIWluZm8u
bmFtZS5lbmRzV2l0aCgiWzBdIikpCi0gICAgICAgICAgICBpbmZvLm5hbWUuYXBwZW5kKCJbMF0i
X3MpOworICAgICAgICAgICAgaW5mby5uYW1lID0gbWFrZVN0cmluZyhpbmZvLm5hbWUsICJbMF0i
X3MpOwogCiAgICAgTE9HKFdlYkdMLCAiUmV0dXJuaW5nIGFjdGl2ZSB1bmlmb3JtICVkOiAlcyIs
IGluZGV4LCBpbmZvLm5hbWUudXRmOCgpLmRhdGEoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svV2ViVlRUUGFyc2VyLmNwcAppbmRleCA5ZjVkYTUxYmU3OGZkYWE2MWI3ZTUwOTU4MzQ1
ZGY0M2I1ZjBiZDM2Li5hNjAzYzA4MWU5MGI0NmQ1MzRlOTAzZWVlY2NhMDY0Zjc2M2U4Y2FkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwCkBAIC0zNjIsNyAr
MzYyLDggQEAgYm9vbCBXZWJWVFRQYXJzZXI6OmNoZWNrQW5kU3RvcmVTdHlsZVNoZWV0KGNvbnN0
IFN0cmluZyYgbGluZSkKICAgICBpZiAoIWxpbmUuaXNFbXB0eSgpICYmICFsaW5lLmNvbnRhaW5z
KCItLT4iKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIGF1dG8gc3R5bGVTaGVl
dFRleHQgPSBXVEZNb3ZlKG1fY3VycmVudFNvdXJjZVN0eWxlU2hlZXQpOworICAgIGF1dG8gc3R5
bGVTaGVldFRleHQgPSBtX2N1cnJlbnRTb3VyY2VTdHlsZVNoZWV0LnRvU3RyaW5nKCk7CisgICAg
bV9jdXJyZW50U291cmNlU3R5bGVTaGVldC5jbGVhcigpOwogCiAgICAgLy8gV2ViVlRUTW9kZSBk
aXNhbGxvd3Mgbm9uLWRhdGEgVVJMcy4KICAgICBhdXRvIGNvbnRlbnRzID0gU3R5bGVTaGVldENv
bnRlbnRzOjpjcmVhdGUoQ1NTUGFyc2VyQ29udGV4dChXZWJWVFRNb2RlKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuaAppbmRleCAxMjg1NTIwOTE3NDM4NWQwNTIwOGRj
N2E0MDRkYmFhMzFmZjA2NzQ4Li4yZmIzMDkwNTQyNGZjZTlmZjIzOTEzZGIzZTk3NGMxMjNhNDQ2
NjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmgKQEAgLTE5Miw3
ICsxOTIsNyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX3ByZXZpb3VzTGluZTsKICAgICBTdHJp
bmcgbV9jdXJyZW50U2V0dGluZ3M7CiAgICAgUmVmUHRyPFZUVFJlZ2lvbj4gbV9jdXJyZW50UmVn
aW9uOwotICAgIFN0cmluZyBtX2N1cnJlbnRTb3VyY2VTdHlsZVNoZWV0OworICAgIFN0cmluZ0J1
aWxkZXIgbV9jdXJyZW50U291cmNlU3R5bGVTaGVldDsKICAgICAKICAgICBXZWJWVFRQYXJzZXJD
bGllbnQmIG1fY2xpZW50OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yT3ZlcmxheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
T3ZlcmxheS5jcHAKaW5kZXggNzcxMGExYjVkODJiNGVjYmM2YjhmZTYyODRjZDc2ZTQ0OTg3M2Zj
OS4uYmZlOGI2NzhhMzA0NWVjNjEzMTk4MTBhMWM2MWM1ZGVmYWMyYmRmNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcApAQCAtOTcsMTAgKzk3LDgg
QEAgZW51bSBjbGFzcyBGbGlwIDogYm9vbCB7IE5vLCBZZXMgfTsKIAogc3RhdGljIHZvaWQgdHJ1
bmNhdGVXaXRoRWxsaXBzaXMoU3RyaW5nJiBzdHJpbmcsIHNpemVfdCBsZW5ndGgpCiB7Ci0gICAg
aWYgKHN0cmluZy5sZW5ndGgoKSA+IGxlbmd0aCkgewotICAgICAgICBzdHJpbmcudHJ1bmNhdGUo
bGVuZ3RoKTsKLSAgICAgICAgc3RyaW5nLmFwcGVuZChlbGxpcHNpcyk7Ci0gICAgfQorICAgIGlm
IChzdHJpbmcubGVuZ3RoKCkgPiBsZW5ndGgpCisgICAgICAgIHN0cmluZyA9IG1ha2VTdHJpbmco
U3RyaW5nVmlldyhzdHJpbmcpLmxlZnQobGVuZ3RoKSwgZWxsaXBzaXMpOwogfQogCiBzdGF0aWMg
RmxvYXRQb2ludCBsb2NhbFBvaW50VG9Sb290UG9pbnQoY29uc3QgRnJhbWVWaWV3KiB2aWV3LCBj
b25zdCBGbG9hdFBvaW50JiBwb2ludCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JPdmVybGF5TGFiZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvck92ZXJsYXlMYWJlbC5jcHAKaW5kZXggZjYxMTQ3MWE4NWUzZmU2OTNkZDZmM2Fj
YTYzZTIwMjQ4MjY1Nzg1Ni4uMzhiZmFiMjkzY2VjZDU0MWQ4OGNlM2Y5ZTA3ZmFhODBlYWZkM2Vi
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXlM
YWJlbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXlM
YWJlbC5jcHAKQEAgLTIzNCw4ICsyMzQsOSBAQCBQYXRoIEluc3BlY3Rvck92ZXJsYXlMYWJlbDo6
ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IG1heGltdW1MaW5lV2lkdAogICAg
ICAgICAgICAgYXV0byB0ZXh0UnVuID0gVGV4dFJ1bih0ZXh0KTsKICAgICAgICAgICAgIGZsb2F0
IHRleHRXaWR0aCA9IGZvbnQud2lkdGgodGV4dFJ1bik7CiAKKyAgICAgICAgICAgIC8vIEZJWE1F
OiBUaGlzIGxvb2tzIHZlcnkgaW5lZmZpY2llbnQuCiAgICAgICAgICAgICBpZiAobWF4aW11bUxp
bmVXaWR0aCAmJiBjdXJyZW50TGluZVdpZHRoICsgdGV4dFdpZHRoICsgKGxhYmVsUGFkZGluZyAq
IDIpID4gbWF4aW11bUxpbmVXaWR0aCkgewotICAgICAgICAgICAgICAgIHRleHQuYXBwZW5kKGVs
bGlwc2lzKTsKKyAgICAgICAgICAgICAgICB0ZXh0ID0gbWFrZVN0cmluZyh0ZXh0LCBlbGxpcHNp
cyk7CiAgICAgICAgICAgICAgICAgd2hpbGUgKGN1cnJlbnRMaW5lV2lkdGggKyB0ZXh0V2lkdGgg
KyAobGFiZWxQYWRkaW5nICogMikgPiBtYXhpbXVtTGluZVdpZHRoICYmIHRleHQubGVuZ3RoKCkg
PiAxKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFJlbW92ZSB0aGUgc2Vjb25kIGZyb20gbGFz
dCBjaGFyYWN0ZXIgKHRoZSBjaGFyYWN0ZXIgYmVmb3JlIHRoZSBlbGxpcHNpcykgYW5kIHJlbWVh
c3VyZS4KICAgICAgICAgICAgICAgICAgICAgdGV4dC5yZW1vdmUodGV4dC5sZW5ndGgoKSAtIDIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JE
T01BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRP
TUFnZW50LmNwcAppbmRleCA1NzY2MjQ0ZTg1ZDYyN2VlYTdhYjFjY2Q1ZDZhNmQzNjg4ZjJiZTdl
Li45ZjVlZDRiYzJmODM3NWE4ZGU2Mjg4ZTgxNzI2YjQzNmJmMmZkZTU4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcApA
QCAtMTc3MiwxMCArMTc3Miw4IEBAIFJlZjxQcm90b2NvbDo6RE9NOjpOb2RlPiBJbnNwZWN0b3JE
T01BZ2VudDo6YnVpbGRPYmplY3RGb3JOb2RlKE5vZGUqIG5vZGUsIGludCBkCiAgICAgY2FzZSBO
b2RlOjpDT01NRU5UX05PREU6CiAgICAgY2FzZSBOb2RlOjpDREFUQV9TRUNUSU9OX05PREU6CiAg
ICAgICAgIG5vZGVWYWx1ZSA9IG5vZGUtPm5vZGVWYWx1ZSgpOwotICAgICAgICBpZiAobm9kZVZh
bHVlLmxlbmd0aCgpID4gbWF4VGV4dFNpemUpIHsKLSAgICAgICAgICAgIG5vZGVWYWx1ZSA9IG5v
ZGVWYWx1ZS5sZWZ0KG1heFRleHRTaXplKTsKLSAgICAgICAgICAgIG5vZGVWYWx1ZS5hcHBlbmQo
ZWxsaXBzaXNVQ2hhcik7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKG5vZGVWYWx1ZS5sZW5ndGgo
KSA+IG1heFRleHRTaXplKQorICAgICAgICAgICAgbm9kZVZhbHVlID0gbWFrZVN0cmluZyhTdHJp
bmdWaWV3KG5vZGVWYWx1ZSkubGVmdChtYXhUZXh0U2l6ZSksIGVsbGlwc2lzVUNoYXIpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIE5vZGU6OkFUVFJJQlVURV9OT0RFOgogICAgICAgICBsb2Nh
bE5hbWUgPSBub2RlLT5sb2NhbE5hbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlVHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVRyZWUuY3BwCmluZGV4IGRmNmJiMGI1ZjdlOTNiMTY5
OWVhODliODFiNGNmM2NkMmZlZWE3OTkuLjhhMmVlZmJmYmUxNjFhZTdkZWJmYWRiYjE0MmViYjVh
MTNmNGU1ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1N0YXRlVHJlZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nU3RhdGVUcmVlLmNwcApAQCAtMzgxLDEwICszODEsMTEgQEAgU3RyaW5nIFNjcm9sbGlu
Z1N0YXRlVHJlZTo6c2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0KE9wdGlvblNldDxTY3JvbGxpbmdT
dGF0ZVRyZWUKICAgICBpZiAoIXJvb3RTdGF0ZU5vZGUoKSkKICAgICAgICAgcmV0dXJuIGVtcHR5
U3RyaW5nKCk7CiAKLSAgICBhdXRvIHN0YXRlVHJlZUFzU3RyaW5nID0gcm9vdFN0YXRlTm9kZSgp
LT5zY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHQoYmVoYXZpb3IpOworICAgIFN0cmluZ0J1aWxkZXIg
c3RhdGVUcmVlQXNTdHJpbmc7CisgICAgc3RhdGVUcmVlQXNTdHJpbmcuYXBwZW5kKHJvb3RTdGF0
ZU5vZGUoKS0+c2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0KGJlaGF2aW9yKSk7CiAgICAgaWYgKCFt
X3VucGFyZW50ZWROb2Rlcy5pc0VtcHR5KCkpCi0gICAgICAgIHN0YXRlVHJlZUFzU3RyaW5nLmFw
cGVuZChtYWtlU3RyaW5nKCJcbnVucGFyZW50ZWQgbm9kZSBjb3VudDogIiwgbV91bnBhcmVudGVk
Tm9kZXMuc2l6ZSgpKSk7Ci0gICAgcmV0dXJuIHN0YXRlVHJlZUFzU3RyaW5nOworICAgICAgICBz
dGF0ZVRyZWVBc1N0cmluZy5hcHBlbmQoIlxudW5wYXJlbnRlZCBub2RlIGNvdW50OiAiLCBtX3Vu
cGFyZW50ZWROb2Rlcy5zaXplKCkpOworICAgIHJldHVybiBzdGF0ZVRyZWVBc1N0cmluZy50b1N0
cmluZygpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0hFVkNVdGlsaXRpZXMuY3BwCmluZGV4IGMyMGIwNjUwMThh
ZTdiZWRlMDQxN2ZlMzNlMWVlODQwYzk0NGU0Y2EuLmZmMjc4ZTk1NzMxZjBhN2QwYTFkZTMzZjdk
ZmY4NTVlZTlhZTQ2NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0hFVkNVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0hFVkNVdGlsaXRpZXMuY3BwCkBAIC0yMDIsMTMgKzIwMiw2IEBAIHN0ZDo6b3B0aW9uYWw8
SEVWQ1BhcmFtZXRlcnM+IHBhcnNlSEVWQ0NvZGVjUGFyYW1ldGVycyhTdHJpbmdWaWV3IGNvZGVj
U3RyaW5nKQogCiBTdHJpbmcgY3JlYXRlSEVWQ0NvZGVjUGFyYW1ldGVyc1N0cmluZyhjb25zdCBI
RVZDUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKLSAgICAvLyBUaGUgZm9ybWF0IG9mIHRoZSAn
aGV2YycgY29kZWMgc3RyaW5nIGlzIHNwZWNpZmllZCBpbiBJU08vSUVDIDE0NDk2LTE1OjIwMTQs
IEFubmV4IEUuMy4KLSAgICBjaGFyIHByb2ZpbGVTcGFjZUNoYXJhY3RlciA9ICdBJyArIHBhcmFt
ZXRlcnMuZ2VuZXJhbFByb2ZpbGVTcGFjZSAtIDE7Ci0KLSAgICBTdHJpbmcgcHJvZmlsZVNwYWNl
U3RyaW5nOwotICAgIGlmIChwYXJhbWV0ZXJzLmdlbmVyYWxQcm9maWxlU3BhY2UpCi0gICAgICAg
IHByb2ZpbGVTcGFjZVN0cmluZy5hcHBlbmQocHJvZmlsZVNwYWNlQ2hhcmFjdGVyKTsKLQogICAg
IC8vIEZvciB0aGUgc2Vjb25kIHBhcmFtZXRlciwgZnJvbSBJU08vSUVDIDE0NDk2LTE1OjIwMTQs
IEFubmV4IEUuMy4KICAgICAvLyAqIHRoZSAzMiBiaXRzIG9mIHRoZSBnZW5lcmFsX3Byb2ZpbGVf
Y29tcGF0aWJpbGl0eV9mbGFncywgYnV0IGluIHJldmVyc2UgYml0IG9yZGVyLCBpLmUuIHdpdGgK
ICAgICAvLyBnZW5lcmFsX3Byb2ZpbGVfY29tcGF0aWJpbGl0eV9mbGFnWyAzMSBdIGFzIHRoZSBt
b3N0IHNpZ25pZmljYW50IGJpdCwgZm9sbG93ZWQgYnksIGdlbmVyYWxfcHJvZmlsZV9jb21wYXRp
YmlsaXR5X2ZsYWdbIDMwIF0sCkBAIC0yMjYsMTYgKzIxOSwxNiBAQCBTdHJpbmcgY3JlYXRlSEVW
Q0NvZGVjUGFyYW1ldGVyc1N0cmluZyhjb25zdCBIRVZDUGFyYW1ldGVycyYgcGFyYW1ldGVycykK
ICAgICAgICAgY29tcGF0aWJpbGl0eUZsYWdzLmFwcGVuZChoZXgocGFyYW1ldGVycy5nZW5lcmFs
Q29uc3RyYWludEluZGljYXRvckZsYWdzW2ldLCAyKSk7CiAgICAgfQogCi0gICAgcmV0dXJuIG1h
a2VTdHJpbmcocGFyYW1ldGVycy5jb2RlYyA9PSBIRVZDUGFyYW1ldGVyczo6Q29kZWM6OkhldjEg
PyAiaGV2MSIgOiAiaHZjMSIKLSAgICAgICAgLCAnLicKLSAgICAgICAgLCBwcm9maWxlU3BhY2VT
dHJpbmcKLSAgICAgICAgLCBwYXJhbWV0ZXJzLmdlbmVyYWxQcm9maWxlSURDCi0gICAgICAgICwg
Jy4nCi0gICAgICAgICwgY29tcGF0RmxhZ1BhcmFtZXRlcgotICAgICAgICAsICcuJwotICAgICAg
ICAsIHBhcmFtZXRlcnMuZ2VuZXJhbFRpZXJGbGFnID8gJ0gnIDogJ0wnCi0gICAgICAgICwgcGFy
YW1ldGVycy5nZW5lcmFsTGV2ZWxJREMKLSAgICAgICAgLCBjb21wYXRpYmlsaXR5RmxhZ3MudG9T
dHJpbmcoKSk7CisgICAgU3RyaW5nQnVpbGRlciByZXN1bHRCdWlsZGVyOworICAgIHJlc3VsdEJ1
aWxkZXIuYXBwZW5kKHBhcmFtZXRlcnMuY29kZWMgPT0gSEVWQ1BhcmFtZXRlcnM6OkNvZGVjOjpI
ZXYxID8gImhldjEiIDogImh2YzEiLCAnLicpOworICAgIGlmIChwYXJhbWV0ZXJzLmdlbmVyYWxQ
cm9maWxlU3BhY2UpIHsKKyAgICAgICAgLy8gVGhlIGZvcm1hdCBvZiB0aGUgJ2hldmMnIGNvZGVj
IHN0cmluZyBpcyBzcGVjaWZpZWQgaW4gSVNPL0lFQyAxNDQ5Ni0xNToyMDE0LCBBbm5leCBFLjMu
CisgICAgICAgIGNoYXIgcHJvZmlsZVNwYWNlQ2hhcmFjdGVyID0gJ0EnICsgcGFyYW1ldGVycy5n
ZW5lcmFsUHJvZmlsZVNwYWNlIC0gMTsKKyAgICAgICAgcmVzdWx0QnVpbGRlci5hcHBlbmQocHJv
ZmlsZVNwYWNlQ2hhcmFjdGVyKTsKKyAgICB9CisgICAgcmVzdWx0QnVpbGRlci5hcHBlbmQocGFy
YW1ldGVycy5nZW5lcmFsUHJvZmlsZUlEQywgJy4nLCBjb21wYXRGbGFnUGFyYW1ldGVyLCAnLics
IHBhcmFtZXRlcnMuZ2VuZXJhbFRpZXJGbGFnID8gJ0gnIDogJ0wnLCBwYXJhbWV0ZXJzLmdlbmVy
YWxMZXZlbElEQyk7CisgICAgcmVzdWx0QnVpbGRlci5hcHBlbmQoY29tcGF0aWJpbGl0eUZsYWdz
KTsKKyAgICByZXR1cm4gcmVzdWx0QnVpbGRlci50b1N0cmluZygpOwogfQogCiBzdGQ6Om9wdGlv
bmFsPEhFVkNQYXJhbWV0ZXJzPiBwYXJzZUhFVkNEZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZChG
b3VyQ0MgY29kZWNDb2RlLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAKaW5kZXggNzNlODEyYzBk
ZGRkNDU3MGQ2ZjVhNWJmNWM5MjFjYTI3ZGM5ZTBhZS4uMDQ4ODFkYTE4YTBhYzMxZjdkODU5MzYx
YjdlY2UxZTYzODM5ZWNhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9IVFRQUGFyc2Vycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9IVFRQUGFyc2Vycy5jcHAKQEAgLTMxMSwxMCArMzExLDkgQEAgc3RhdGljIGNvbnN0IHNpemVf
dCBtYXhJbnB1dFNhbXBsZVNpemUgPSAxMjg7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVHlwZT4K
IHN0YXRpYyBTdHJpbmcgdHJpbUlucHV0U2FtcGxlKENoYXJUeXBlKiBwLCBzaXplX3QgbGVuZ3Ro
KQogewotICAgIFN0cmluZyBzID0gU3RyaW5nKHAsIHN0ZDo6bWluPHNpemVfdD4obGVuZ3RoLCBt
YXhJbnB1dFNhbXBsZVNpemUpKTsKLSAgICBpZiAobGVuZ3RoID4gbWF4SW5wdXRTYW1wbGVTaXpl
KQotICAgICAgICBzLmFwcGVuZChob3Jpem9udGFsRWxsaXBzaXMpOwotICAgIHJldHVybiBzOwor
ICAgIGlmIChsZW5ndGggPD0gbWF4SW5wdXRTYW1wbGVTaXplKQorICAgICAgICByZXR1cm4gU3Ry
aW5nKHAsIGxlbmd0aCk7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoU3RyaW5nVmlldyhwLCBsZW5n
dGgpLmxlZnQobWF4SW5wdXRTYW1wbGVTaXplKSwgaG9yaXpvbnRhbEVsbGlwc2lzKTsKIH0KIAog
c3RkOjpvcHRpb25hbDxXYWxsVGltZT4gcGFyc2VIVFRQRGF0ZShjb25zdCBTdHJpbmcmIHZhbHVl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxD
YWNoZUVudHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
Q2FjaGVFbnRyeS5jcHAKaW5kZXggYzBiYzM1NjI3MTg2YjRkNjYzODE0NTg2NzkyNzM0ZjU1MTU2
MmRiNS4uNjAwNGNjM2UzNjExMjc2NWY3MzNiZjA1NGExMzY1MDg3N2UzZjhhOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50
cnkuY3BwCkBAIC00OSw5ICs0OSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEN1cmxDYWNo
ZUVudHJ5OjpDdXJsQ2FjaGVFbnRyeShjb25zdCBTdHJpbmcmIHVybCwgUmVzb3VyY2VIYW5kbGUq
IGpvYiwgY29uc3QgU3RyaW5nJiBjYWNoZURpcikKLSAgICA6IG1faGVhZGVyRmlsZW5hbWUoY2Fj
aGVEaXIpCi0gICAgLCBtX2NvbnRlbnRGaWxlbmFtZShjYWNoZURpcikKLSAgICAsIG1fY29udGVu
dEZpbGUoRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKKyAgICA6IG1fY29u
dGVudEZpbGUoRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKICAgICAsIG1f
ZW50cnlTaXplKDApCiAgICAgLCBtX2V4cGlyZURhdGUoV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRz
KC0xKSkKICAgICAsIG1faGVhZGVyUGFyc2VkKGZhbHNlKQpAQCAtNjAsMTEgKzU4LDggQEAgQ3Vy
bENhY2hlRW50cnk6OkN1cmxDYWNoZUVudHJ5KGNvbnN0IFN0cmluZyYgdXJsLCBSZXNvdXJjZUhh
bmRsZSogam9iLCBjb25zdCBTdHIKIHsKICAgICBnZW5lcmF0ZUJhc2VGaWxlbmFtZSh1cmwubGF0
aW4xKCkpOwogCi0gICAgbV9oZWFkZXJGaWxlbmFtZS5hcHBlbmQobV9iYXNlbmFtZSk7Ci0gICAg
bV9oZWFkZXJGaWxlbmFtZS5hcHBlbmQoIi5oZWFkZXIiX3MpOwotCi0gICAgbV9jb250ZW50Rmls
ZW5hbWUuYXBwZW5kKG1fYmFzZW5hbWUpOwotICAgIG1fY29udGVudEZpbGVuYW1lLmFwcGVuZCgi
LmNvbnRlbnQiX3MpOworICAgIG1faGVhZGVyRmlsZW5hbWUgPSBtYWtlU3RyaW5nKGNhY2hlRGly
LCBtX2Jhc2VuYW1lLCAiLmhlYWRlciJfcyk7CisgICAgbV9jb250ZW50RmlsZW5hbWUgPSBtYWtl
U3RyaW5nKGNhY2hlRGlyLCBtX2Jhc2VuYW1lLCAiLmNvbnRlbnQiX3MpOwogfQogCiBDdXJsQ2Fj
aGVFbnRyeTo6fkN1cmxDYWNoZUVudHJ5KCkKQEAgLTEzOCwxMiArMTMzLDggQEAgYm9vbCBDdXJs
Q2FjaGVFbnRyeTo6c2F2ZVJlc3BvbnNlSGVhZGVycyhjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSkKICAgICBIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IHJlc3BvbnNl
Lmh0dHBIZWFkZXJGaWVsZHMoKS5iZWdpbigpOwogICAgIEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0
ZXJhdG9yIGVuZCA9IHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZHMoKS5lbmQoKTsKICAgICB3aGls
ZSAoaXQgIT0gZW5kKSB7Ci0gICAgICAgIFN0cmluZyBoZWFkZXJGaWVsZCA9IGl0LT5rZXk7Ci0g
ICAgICAgIGhlYWRlckZpZWxkLmFwcGVuZCgiOiAiX3MpOwotICAgICAgICBoZWFkZXJGaWVsZC5h
cHBlbmQoaXQtPnZhbHVlKTsKLSAgICAgICAgaGVhZGVyRmllbGQuYXBwZW5kKCJcbiJfcyk7Ci0g
ICAgICAgIENTdHJpbmcgaGVhZGVyRmllbGRMYXRpbjEgPSBoZWFkZXJGaWVsZC5sYXRpbjEoKTsK
LSAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoaGVhZGVyRmlsZSwgaGVhZGVyRmllbGRM
YXRpbjEuZGF0YSgpLCBoZWFkZXJGaWVsZExhdGluMS5sZW5ndGgoKSk7CisgICAgICAgIGF1dG8g
aGVhZGVyRmllbGQgPSBtYWtlU3RyaW5nKGl0LT5rZXksICI6ICIsIGl0LT52YWx1ZSwgJ1xuJyku
bGF0aW4xKCk7CisgICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhlYWRlckZpbGUsIGhl
YWRlckZpZWxkLmRhdGEoKSwgaGVhZGVyRmllbGQubGVuZ3RoKCkpOwogICAgICAgICBtX2NhY2hl
ZFJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZChpdC0+a2V5LCBpdC0+dmFsdWUpOwogICAgICAg
ICArK2l0OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcAppbmRleCA3MDJjNWIzMWEwMWVlMjQ2Yzdj
NzVkN2I1NTU4NGFlYWQ2ZmIwNTM5Li5mZDNkZjk0ZGRiYTI3MTIyNzI4OGQxNTJiZWFkOWI2NGJl
OWVmMWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybENhY2hlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgQ3VybENh
Y2hlTWFuYWdlcjo6c2V0Q2FjaGVEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpCiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICBtX2NhY2hlRGlyLmFwcGVuZCgiLyJfcyk7CisgICAgbV9j
YWNoZURpciA9IG1ha2VTdHJpbmcobV9jYWNoZURpciwgJy8nKTsKIAogICAgIG1fZGlzYWJsZWQg
PSBmYWxzZTsKICAgICBsb2FkSW5kZXgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwCmluZGV4IDdkZTg2YzA4ZTM0OTZkZjMw
ZmUxNDA2YjhjYjMyZGZmZTIwY2VjZjAuLjk4MTg0OWRmMDNjMTAwOTVhMTg1NmZiYzkwOThlY2Qx
OTJkYzMzNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxDb250ZXh0LmNwcApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgPHd0Zi9NYWlu
VGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVt
YmVycy5oPgogCiAjaWYgT1MoV0lORE9XUykKICNpbmNsdWRlICJXZWJDb3JlQnVuZGxlV2luLmgi
CkBAIC04OTAsMTEgKzg5MSw4IEBAIHZvaWQgQ3VybEhhbmRsZTo6YWRkRXh0cmFOZXR3b3JrTG9h
ZE1ldHJpY3MoTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpCiAgICAgYWRkaXRp
b25hbE1ldHJpY3MtPnJlcXVlc3RCb2R5Qnl0ZXNTZW50ID0gcmVxdWVzdEJvZHlTaXplOwogICAg
IGFkZGl0aW9uYWxNZXRyaWNzLT5yZXNwb25zZUhlYWRlckJ5dGVzUmVjZWl2ZWQgPSByZXNwb25z
ZUhlYWRlclNpemU7CiAKLSAgICBpZiAoaXApIHsKLSAgICAgICAgYWRkaXRpb25hbE1ldHJpY3Mt
PnJlbW90ZUFkZHJlc3MgPSBTdHJpbmc6OmZyb21MYXRpbjEoaXApOwotICAgICAgICBpZiAocG9y
dCkKLSAgICAgICAgICAgIGFkZGl0aW9uYWxNZXRyaWNzLT5yZW1vdGVBZGRyZXNzLmFwcGVuZCgi
OiIgKyBTdHJpbmc6Om51bWJlcihwb3J0KSk7Ci0gICAgfQorICAgIGlmIChpcCkKKyAgICAgICAg
YWRkaXRpb25hbE1ldHJpY3MtPnJlbW90ZUFkZHJlc3MgPSBwb3J0ID8gbWFrZVN0cmluZyhpcCwg
JzonLCBwb3J0KSA6IFN0cmluZzo6ZnJvbUxhdGluMShpcCk7CiAKICAgICBpZiAobV90bHNDb25u
ZWN0aW9uSW5mbykgewogICAgICAgICBhZGRpdGlvbmFsTWV0cmljcy0+dGxzUHJvdG9jb2wgPSBt
X3Rsc0Nvbm5lY3Rpb25JbmZvLT5wcm90b2NvbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggZDk3Nzg5NWFmZGMxNzhlNjNmM2E0Y2Rh
OTEyMGY2NjNhYjVlMTk4NS4uNzcwNWFmNWMzNzVlMWM0OGE2M2Q0OWQ1M2I2ZjM1ZGU0ZmYyZmQy
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2lu
Zy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5j
cHAKQEAgLTUxNSwxMCArNTE1LDggQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OmNyZWF0ZVBy
aW1hcnlHcmFwaGljc0xheWVyKCkKIHsKICAgICBTdHJpbmcgbGF5ZXJOYW1lID0gbV9vd25pbmdM
YXllci5uYW1lKCk7CiAgICAgY29uc3QgdW5zaWduZWQgbWF4TGF5ZXJOYW1lTGVuZ3RoID0gMTAw
OwotICAgIGlmIChsYXllck5hbWUubGVuZ3RoKCkgPiBtYXhMYXllck5hbWVMZW5ndGgpIHsKLSAg
ICAgICAgbGF5ZXJOYW1lLnRydW5jYXRlKG1heExheWVyTmFtZUxlbmd0aCk7Ci0gICAgICAgIGxh
eWVyTmFtZS5hcHBlbmQoIi4uLiJfcyk7Ci0gICAgfQorICAgIGlmIChsYXllck5hbWUubGVuZ3Ro
KCkgPiBtYXhMYXllck5hbWVMZW5ndGgpCisgICAgICAgIGxheWVyTmFtZSA9IG1ha2VTdHJpbmco
U3RyaW5nVmlldyhsYXllck5hbWUpLmxlZnQobWF4TGF5ZXJOYW1lTGVuZ3RoKSwgIi4uLiJfcyk7
CiAgICAgbV9ncmFwaGljc0xheWVyID0gY3JlYXRlR3JhcGhpY3NMYXllcihsYXllck5hbWUsIG1f
aXNGcmFtZUxheWVyV2l0aFRpbGVkQmFja2luZyA/IEdyYXBoaWNzTGF5ZXI6OlR5cGU6OlBhZ2VU
aWxlZEJhY2tpbmcgOiBHcmFwaGljc0xheWVyOjpUeXBlOjpOb3JtYWwpOwogCiAgICAgaWYgKG1f
aXNGcmFtZUxheWVyV2l0aFRpbGVkQmFja2luZykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvbWFjL0F1eGlsaWFyeVByb2Nlc3NNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9tYWMvQXV4aWxpYXJ5UHJvY2Vzc01hYy5tbQppbmRleCA4ZjI1OWRhNmQ1MTAyNmNjZDYxODli
YmVjYTQ4ZDUzZGI5ODFkYjViLi43NmQyMTgzNTg3YjA2MWExOGJmNTlmZjkxNGE3MzU0ZThmNjM1
OTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQXV4aWxpYXJ5UHJvY2Vz
c01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQXV4aWxpYXJ5UHJvY2Vzc01h
Yy5tbQpAQCAtNzAzLDEwICs3MDMsOSBAQCBzdGF0aWMgdm9pZCBwb3B1bGF0ZVNhbmRib3hJbml0
aWFsaXphdGlvblBhcmFtZXRlcnMoU2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1ldAogICAgIH0K
IAogICAgIHNhbmRib3hQYXJhbWV0ZXJzLmFkZFBhdGhQYXJhbWV0ZXIoIkhPTUVfRElSIiwgcHdk
LnB3X2Rpcik7Ci0gICAgU3RyaW5nIHBhdGggPSBTdHJpbmc6OmZyb21VVEY4KHB3ZC5wd19kaXIp
OwotICAgIHBhdGguYXBwZW5kKCIvTGlicmFyeSJfcyk7CisgICAgU3RyaW5nIHBhdGggPSBGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoU3RyaW5nOjpmcm9tVVRGOChwd2QucHdf
ZGlyKSwgIkxpYnJhcnkiX3MpOwogICAgIHNhbmRib3hQYXJhbWV0ZXJzLmFkZFBhdGhQYXJhbWV0
ZXIoIkhPTUVfTElCUkFSWV9ESVIiLCBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24ocGF0aCkuZGF0YSgpKTsKLSAgICBwYXRoLmFwcGVuZCgiL1ByZWZlcmVuY2VzIl9zKTsKKyAg
ICBwYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhdGgsICIvUHJl
ZmVyZW5jZXMiX3MpOwogICAgIHNhbmRib3hQYXJhbWV0ZXJzLmFkZFBhdGhQYXJhbWV0ZXIoIkhP
TUVfTElCUkFSWV9QUkVGRVJFTkNFU19ESVIiLCBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24ocGF0aCkuZGF0YSgpKTsKIAogI2lmIENQVShYODZfNjQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQppbmRleCA2NzVlNzIz
MzYxNjhiYzJmOGM4ZDIyNmQwMTFkZjk0MjU2MDU0ODMyLi4wYWZjMDE3MmM5YjNjOGUyNzk2NTg1
OTgzYzU1NWNmYjIyYWVjOWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW4ubW0KQEAgLTE2OTEsNyArMTY5MSw3IEBAIHZvaWQgUERGUGx1
Z2luOjpzZXRTdWdnZXN0ZWRGaWxlbmFtZShjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1l
KQogICAgICAgICBtX3N1Z2dlc3RlZEZpbGVuYW1lID0gc3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlN
RVR5cGUobmlsLCAiYXBwbGljYXRpb24vcGRmIl9zKTsKIAogICAgIGlmICghbV9zdWdnZXN0ZWRG
aWxlbmFtZS5lbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKCIucGRmIikpCi0gICAgICAgIG1fc3Vn
Z2VzdGVkRmlsZW5hbWUuYXBwZW5kKCIucGRmIl9zKTsKKyAgICAgICAgbV9zdWdnZXN0ZWRGaWxl
bmFtZSA9IG1ha2VTdHJpbmcobV9zdWdnZXN0ZWRGaWxlbmFtZSwgIi5wZGYiX3MpOwogfQogICAg
IAogdm9pZCBQREZQbHVnaW46OnN0cmVhbURpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBzdHJl
YW1JRCwgY29uc3QgVVJMJiwgdWludDMyX3QsIHVpbnQzMl90LCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWQuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWQuY3BwCmluZGV4IDk5NDY5MDQ1NTFjMGNjNmQx
Y2UxY2JlOTI4OGNhNzNhOGJiNjhmMjEuLjQwZjYyMzBiOGQ4ZmMwOGMwNmQ3OWE5M2UwYTFiMTA3
Y2Y1NjE0MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2Fk
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZC5jcHAKQEAgLTE0
MCwxMCArMTQwLDcgQEAgSFJFU1VMVCBXZWJEb3dubG9hZDo6YnVuZGxlUGF0aEZvclRhcmdldFBh
dGgoX0luXyBCU1RSIHRhcmdldFBhdGgsIF9fZGVyZWZfb3V0X28KICAgICBpZiAoYnVuZGxlLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIEVfSU5WQUxJREFSRzsKIAotICAgIGlmIChidW5kbGVb
YnVuZGxlLmxlbmd0aCgpLTFdID09ICcvJykKLSAgICAgICAgYnVuZGxlLnRydW5jYXRlKDEpOwot
Ci0gICAgYnVuZGxlLmFwcGVuZChEb3dubG9hZEJ1bmRsZTo6ZmlsZUV4dGVuc2lvbigpKTsKKyAg
ICBidW5kbGUgPSBidW5kbGVbYnVuZGxlLmxlbmd0aCgpIC0gMV0gPT0gJy8nID8gbWFrZVN0cmlu
ZyhTdHJpbmdWaWV3KGJ1bmRsZSkubGVmdChidW5kbGUubGVuZ3RoKCkgLSAxKSwgRG93bmxvYWRC
dW5kbGU6OmZpbGVFeHRlbnNpb24oKSkgOiBtYWtlU3RyaW5nKGJ1bmRsZSwgRG93bmxvYWRCdW5k
bGU6OmZpbGVFeHRlbnNpb24oKSk7CiAgICAgKmJ1bmRsZVBhdGggPSBCU3RyaW5nKGJ1bmRsZSku
cmVsZWFzZSgpOwogICAgIGlmICghKmJ1bmRsZVBhdGgpCiAgICAgICAgcmV0dXJuIEVfRkFJTDsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiNmFm
NWRhMDBkYWRiMmQ2YmNhMzk5YmZmMGRmMTY5MTkzOGE3YTA3Li5hZDY5MTBhOGU4NzdlOGRmYjAy
ZTkxZmVkZWNiZjI4ZDQzNTFjMjE1IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjItMDQtMTQgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBEcm9wIGluZWZmaWNpZW50IFN0cmluZzo6
YXBwZW5kKCkgb3ZlcmxvYWRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzkyODkKKworICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgorCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHA6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL1N0cmluZ0J1aWxkZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNw
cDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVy
OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorCiAyMDIyLTA0LTEzICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmVwbGFjZSBjYWxscyB0byBz
dWJzdHJpbmcoMCwgeCkgd2l0aCB0aGUgbW9yZSBjb25jaXNlIGxlZnQoeCkKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAKaW5kZXggZGIyNDY1MjM5Njg2NTE2
ODg4MWI3NDE0N2NmM2M0YzNhODZhNGI4NC4uNjVmZWFhZjNkYmIyOTEyNzcyOTRmZWY4ZWMyOWE5
ZWEzYWMyODVkYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmls
ZVN5c3RlbS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3Rl
bS5jcHAKQEAgLTQ4NSw5ICs0ODUsNyBAQCBURVNUX0YoRmlsZVN5c3RlbVRlc3QsIG1ha2VBbGxE
aXJlY3RvcmllcykKICAgICBFWFBFQ1RfRVEoRmlsZVN5c3RlbTo6ZmlsZVR5cGUoc3ViRm9sZGVy
UGF0aCksIEZpbGVTeXN0ZW06OkZpbGVUeXBlOjpEaXJlY3RvcnkpOwogICAgIEVYUEVDVF9UUlVF
KEZpbGVTeXN0ZW06OmRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KHRlbXBFbXB0eUZvbGRlclBhdGgo
KSkpOwogICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHN1YkZvbGRlclBh
dGgpKTsKLSAgICBTdHJpbmcgaW52YWxpZEZvbGRlclBhdGg7Ci0gICAgaW52YWxpZEZvbGRlclBh
dGguYXBwZW5kKCdcMCcpOwotICAgIGludmFsaWRGb2xkZXJQYXRoLmFwcGVuZCgnYScpOworICAg
IFN0cmluZyBpbnZhbGlkRm9sZGVyUGF0aCA9IG1ha2VTdHJpbmcoJ1wwJywgJ2EnKTsKICAgICBF
WFBFQ1RfRkFMU0UoRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKGludmFsaWRGb2xkZXJQ
YXRoKSk7CiAgICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3Rvcmllcyhl
bXB0eVN0cmluZygpKSk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9TdHJpbmdCdWlsZGVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0
cmluZ0J1aWxkZXIuY3BwCmluZGV4IGE0ODdlNTdlOWQwNDYxN2Q0OWRlOGRhMTkxMmJlNDgyNjE2
ODMwNTkuLmFlMTUzYzU2MTU4NjhiOGIxZDUyNmJkZjk4ZDUyNzExNWJjYWZkY2EgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ0J1aWxkZXIuY3BwCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ0J1aWxkZXIuY3BwCkBAIC0yMDks
OSArMjA5LDkgQEAgVEVTVChTdHJpbmdCdWlsZGVyVGVzdCwgVG9TdHJpbmcpCiAgICAgLy8gQ2hh
bmdpbmcgdGhlIG9yaWdpbmFsIHJlc3VsdCBvZiB0b1N0cmluZygpIHNob3VsZCBub3QgYWZmZWN0
IHRoZSBjb250ZW50IG9mIHRoZSBTdHJpbmdCdWlsZGVyLgogICAgIFN0cmluZyBzdHJpbmcxID0g
YnVpbGRlci50b1N0cmluZygpOwogICAgIEVYUEVDVF9FUShTdHJpbmcoIjAxMjM0NTY3ODlhYmNk
ZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQyJfcyksIHN0cmluZzEpOwotICAgIHN0cmluZzEuYXBw
ZW5kKCJERUYiX3MpOworICAgIHN0cmluZzEucmVwbGFjZSgnMCcsICdhJyk7CiAgICAgRVhQRUNU
X0VRKFN0cmluZygiMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDIl9zKSwg
YnVpbGRlci50b1N0cmluZygpKTsKLSAgICBFWFBFQ1RfRVEoU3RyaW5nKCIwMTIzNDU2Nzg5YWJj
ZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUYiX3MpLCBzdHJpbmcxKTsKKyAgICBFWFBFQ1Rf
RVEoU3RyaW5nKCJhMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkMiX3MpLCBz
dHJpbmcxKTsKIAogICAgIC8vIFJlc2l6aW5nIHRoZSBTdHJpbmdCdWlsZGVyIHNob3VsZCBub3Qg
YWZmZWN0IHRoZSBvcmlnaW5hbCByZXN1bHQgb2YgdG9TdHJpbmcoKS4KICAgICBzdHJpbmcxID0g
YnVpbGRlci50b1N0cmluZygpOwpAQCAtMjUxLDkgKzI1MSw5IEBAIFRFU1QoU3RyaW5nQnVpbGRl
clRlc3QsIFRvU3RyaW5nUHJlc2VydmVDYXBhY2l0eSkKICAgICBFWFBFQ1RfRVEoY2FwYWNpdHks
IGJ1aWxkZXIuY2FwYWNpdHkoKSk7CiAgICAgRVhQRUNUX0VRKHN0cmluZzEuY2hhcmFjdGVyczgo
KSwgYnVpbGRlci5jaGFyYWN0ZXJzOCgpKTsKICAgICBFWFBFQ1RfRVEoU3RyaW5nKCIwMTIzNDU2
Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkMiX3MpLCBzdHJpbmcxKTsKLSAgICBzdHJp
bmcxLmFwcGVuZCgiREVGIl9zKTsKKyAgICBzdHJpbmcxLnJlcGxhY2UoJzAnLCAnYScpOwogICAg
IEVYUEVDVF9FUShTdHJpbmcoIjAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFC
QyJfcyksIGJ1aWxkZXIudG9TdHJpbmdQcmVzZXJ2ZUNhcGFjaXR5KCkpOwotICAgIEVYUEVDVF9F
UShTdHJpbmcoIjAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRiJfcyks
IHN0cmluZzEpOworICAgIEVYUEVDVF9FUShTdHJpbmcoImExMjM0NTY3ODlhYmNkZWZnaGlqa2xt
bm9wcXJzdHV2d3h5ekFCQyJfcyksIHN0cmluZzEpOwogCiAgICAgLy8gUmVzaXppbmcgdGhlIFN0
cmluZ0J1aWxkZXIgc2hvdWxkIG5vdCBhZmZlY3QgdGhlIG9yaWdpbmFsIHJlc3VsdCBvZiB0b1N0
cmluZ1ByZXNlcnZlQ2FwYWNpdHkoKS4KICAgICBjYXBhY2l0eSA9IGJ1aWxkZXIuY2FwYWNpdHko
KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db250ZW50
RXh0ZW5zaW9ucy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29udGVu
dEV4dGVuc2lvbnMuY3BwCmluZGV4IGE5OTcxMjM0YzNjMjBjZjE0NWZlNTY3MGRiYWI5OWU2ZDNl
MGM4MTQuLjdiNjg2OTdlNjRmZWRmZTg2OWM3MTg5OGJkZjNlM2U0YmI2MjlkNDkgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db250ZW50RXh0ZW5zaW9ucy5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNp
b25zLmNwcApAQCAtMTUwNywxMCArMTUwNyw4IEBAIFRFU1RfRihDb250ZW50RXh0ZW5zaW9uVGVz
dCwgSW52YWxpZEpTT04pCiAgICAgcnVsZXMuYXBwZW5kKCJbIl9zKTsKICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgMTQ5OTk5OyArK2kpCiAgICAgICAgIHJ1bGVzLmFwcGVuZCgie1wiYWN0
aW9uXCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwi
YVwifX0sIl9zKTsKLSAgICBTdHJpbmcgcnVsZXMxNTAwMDAgPSBydWxlcy50b1N0cmluZygpOwot
ICAgIFN0cmluZyBydWxlczE1MDAwMSA9IHJ1bGVzLnRvU3RyaW5nKCk7Ci0gICAgcnVsZXMxNTAw
MDAuYXBwZW5kKCJ7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7
XCJ1cmwtZmlsdGVyXCI6XCJhXCJ9fV0iX3MpOwotICAgIHJ1bGVzMTUwMDAxLmFwcGVuZCgie1wi
YWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwi
OlwiYVwifX0se1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1wi
dXJsLWZpbHRlclwiOlwiYVwifX1dIl9zKTsKKyAgICBTdHJpbmcgcnVsZXMxNTAwMDAgPSBtYWtl
U3RyaW5nKHJ1bGVzLnRvU3RyaW5nKCksICJ7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wi
fSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJhXCJ9fV0iX3MpOworICAgIFN0cmluZyBy
dWxlczE1MDAwMSA9IG1ha2VTdHJpbmcocnVsZXMudG9TdHJpbmcoKSwgIntcImFjdGlvblwiOntc
InR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcImFcIn19LHtc
ImFjdGlvblwiOntcInR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJc
IjpcImFcIn19XSJfcyk7CiAgICAgY2hlY2tDb21waWxlckVycm9yKFdURk1vdmUocnVsZXMxNTAw
MDApLCB7IH0pOwogICAgIGNoZWNrQ29tcGlsZXJFcnJvcihXVEZNb3ZlKHJ1bGVzMTUwMDAxKSwg
Q29udGVudEV4dGVuc2lvbkVycm9yOjpKU09OVG9vTWFueVJ1bGVzKTsKICAgICAKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXggOTBhMTRlZmYzY2FjMjYxMGY3
ZjIwZTI5YTc5MDBkMDdlYTA3MWMxMy4uYTE1ODIwMzA3YWE4ZmIzZjE4NGY5OGQzZTU2ODQ2YmY3
N2U1YTc4ZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxl
ci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAg
LTIyMzYsMTIgKzIyMzYsMTMgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6ZGlkUmVjZWl2ZUF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKFdLUGFnZVJlZiBwYWdlLCBXS0F1dGhlbnQKIAogICAgIGF1dG8g
aG9zdCA9IHRvV1RGU3RyaW5nKGFkb3B0V0soV0tQcm90ZWN0aW9uU3BhY2VDb3B5SG9zdChwcm90
ZWN0aW9uU3BhY2UpKS5nZXQoKSk7CiAgICAgaW50IHBvcnQgPSBXS1Byb3RlY3Rpb25TcGFjZUdl
dFBvcnQocHJvdGVjdGlvblNwYWNlKTsKLSAgICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJpbmco
aG9zdCwgJzonLCBwb3J0LCAiIC0gZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIC0g
IiwgdG9TdHJpbmcoYXV0aGVudGljYXRpb25TY2hlbWUpLCAiIC0gIik7CisgICAgU3RyaW5nQnVp
bGRlciBtZXNzYWdlOworICAgIG1lc3NhZ2UuYXBwZW5kKGhvc3QsICc6JywgcG9ydCwgIiAtIGRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAtICIsIHRvU3RyaW5nKGF1dGhlbnRpY2F0
aW9uU2NoZW1lKSwgIiAtICIpOwogICAgIGlmICghbV9oYW5kbGVzQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VzKQogICAgICAgICBtZXNzYWdlLmFwcGVuZCgiU2ltdWxhdGluZyBjYW5jZWxsZWQgYXV0
aGVudGljYXRpb24gc2hlZXRcbiJfcyk7CiAgICAgZWxzZQogICAgICAgICBtZXNzYWdlLmFwcGVu
ZCgiUmVzcG9uZGluZyB3aXRoICIgKyBtX2F1dGhlbnRpY2F0aW9uVXNlcm5hbWUgKyAiOiIgKyBt
X2F1dGhlbnRpY2F0aW9uUGFzc3dvcmQgKyAiXG4iKTsKLSAgICBtX2N1cnJlbnRJbnZvY2F0aW9u
LT5vdXRwdXRUZXh0KG1lc3NhZ2UpOworICAgIG1fY3VycmVudEludm9jYXRpb24tPm91dHB1dFRl
eHQobWVzc2FnZS50b1N0cmluZygpKTsKIAogICAgIGlmICghbV9oYW5kbGVzQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VzKSB7CiAgICAgICAgIFdLQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVy
VXNlQ3JlZGVudGlhbChkZWNpc2lvbkxpc3RlbmVyLCAwKTsK
</data>
<flag name="commit-queue"
          id="486291"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457626</attachid>
            <date>2022-04-14 07:51:20 -0700</date>
            <delta_ts>2022-04-14 10:56:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239289-20220414075119.patch</filename>
            <type>text/plain</type>
            <size>53921</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyODY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
ODJhOTQzYzZlNDliZDFlZjkwZjg3NDg4NWM2NDBlYzg4NmFjOWI3Li4yOGYwYjgxNTFjOTc3MjA5
NGZiNGIyZDgzNjBhYTJlM2VmZGI3MjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAyMi0wNC0xNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIERyb3AgaW5lZmZpY2llbnQgU3RyaW5nOjphcHBlbmQoKSBvdmVybG9hZHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTI4OQorCisg
ICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCisKKyAgICAgICAgKiBoZWFwL0hlYXBTbmFw
c2hvdEJ1aWxkZXIuY3BwOgorICAgICAgICAoSlNDOjpIZWFwU25hcHNob3RCdWlsZGVyOjpqc29u
KToKKyAgICAgICAgKiBydW50aW1lL0ludGxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpyZXNv
bHZlTG9jYWxlKToKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcDoKKyAgICAg
ICAgKEpTQzo6ZWxsaXBzaXplQXQpOgorICAgICAgICAqIHRvb2xzL0Z1bmN0aW9uT3ZlcnJpZGVz
LmNwcDoKKyAgICAgICAgKEpTQzo6aW5pdGlhbGl6ZU92ZXJyaWRlSW5mbyk6CisgICAgICAgIChK
U0M6OnBhcnNlQ2xhdXNlKToKKwogMjAyMi0wNC0xMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgogCiAgICAgICAgIFJlcGxhY2UgY2FsbHMgdG8gc3Vic3RyaW5nKDAsIHgpIHdpdGgg
dGhlIG1vcmUgY29uY2lzZSBsZWZ0KHgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDNjMmYyOWQ5NTI2ODE5ZDQ1Y2MyNDVlNDc4
ZDdlYjQxZGU0MjM3MDAuLmM3YzVjOTQzODhiMjg0NTAxZTlkMTYwNzkyMTE0YmE1ZjVkN2U4Yjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjItMDQtMTQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KKworICAgICAgICBEcm9wIGluZWZmaWNpZW50IFN0cmluZzo6YXBwZW5kKCkgb3Zl
cmxvYWRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzkyODkKKworICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgorCisgICAgICAgICogd3Rm
L0Fzc2VydGlvbnMuY3BwOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaDoKKyAg
ICAgICAgKFdURjo6U3RyaW5nQnVpbGRlcjo6YXBwZW5kKToKKyAgICAgICAgKiB3dGYvdGV4dC9X
VEZTdHJpbmcuY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmc6Omluc2VydCk6CisgICAgICAgIChX
VEY6OlN0cmluZzo6YXBwZW5kKToKKyAgICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuaDoKKwog
MjAyMi0wNC0xNCAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW1dLMl0gRW5hYmxlIG1vcmUgZWZmaWNpZW50IGVuY29kaW5nIG9mIHN5bmNocm9ub3VzLW1l
c3NhZ2UgcmVwbHkgYXJndW1lbnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTdiYzc0ZDdiYTk4MTVkZjhkN2Fm
MmYzZWQ0MWYwMTE4NGQyMzkzYi4uOGVkNTM1NjNmMjRmNzdjZjM3ODg2YzRkYjQwNzlhYWFiMTY1
YzU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDIyLTA0LTE0ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRHJvcCBpbmVmZmljaWVudCBTdHJpbmc6
OmFwcGVuZCgpIG92ZXJsb2FkcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjM5Mjg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KKwor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQktleURhdGEuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCS2V5RGF0YTo6bG9nZ2luZ1N0cmluZyBjb25zdCk6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvSURCS2V5UmFuZ2VEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQktl
eVJhbmdlRGF0YTo6bG9nZ2luZ1N0cmluZyBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvc2hhcmVkL0lEQkluZGV4SW5mby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRl
eEluZm86OmxvZ2dpbmdTdHJpbmcgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0
cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dHJpbUlucHV0U2Ft
cGxlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmluaXRpYWxpemVB
dHRyaWJ1dGVEYXRhKToKKyAgICAgICAgKiBkb20vQ2hhcmFjdGVyRGF0YS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDaGFyYWN0ZXJEYXRhOjpwYXJzZXJBcHBlbmREYXRhKToKKyAgICAgICAgKiBk
b20vVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRUZXh0UmVwcmVzZW50YXRpb24p
OgorICAgICAgICAqIGRvbS9WaWV3cG9ydEFyZ3VtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojp2aWV3cG9ydEVycm9yTWVzc2FnZSk6CisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6ZmlsbENvbnRhaW5lckZyb21TdHJpbmcpOgorICAgICAgICAqIGh0
bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RlRQRGlyZWN0
b3J5RG9jdW1lbnRQYXJzZXI6OnBhcnNlQW5kQXBwZW5kT25lTGluZSk6CisgICAgICAgIChXZWJD
b3JlOjpGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OkZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpmaW5pc2gpOgorICAgICAgICAqIGh0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0QWN0aXZlVW5pZm9ybSk6CisgICAgICAgICog
aHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViVlRUUGFy
c2VyOjpjaGVja0FuZFN0b3JlU3R5bGVTaGVldCk6CisgICAgICAgICogaHRtbC90cmFjay9XZWJW
VFRQYXJzZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjp0cnVuY2F0ZVdpdGhFbGxpcHNpcyk6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3Rvck92ZXJsYXlMYWJlbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JPdmVybGF5TGFiZWw6OmRyYXcpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmJ1
aWxkT2JqZWN0Rm9yTm9kZSk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3Rh
dGVUcmVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlVHJlZTo6c2Nyb2xs
aW5nU3RhdGVUcmVlQXNUZXh0IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9I
RVZDVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUhFVkNDb2RlY1BhcmFt
ZXRlcnNTdHJpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6dHJpbUlucHV0U2FtcGxlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3Vy
bENhY2hlRW50cnk6OkN1cmxDYWNoZUVudHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxDYWNo
ZUVudHJ5OjpzYXZlUmVzcG9uc2VIZWFkZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsQ2FjaGVN
YW5hZ2VyOjpzZXRDYWNoZURpcmVjdG9yeSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxIYW5kbGU6OmFkZEV4
dHJhTmV0d29ya0xvYWRNZXRyaWNzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJC
YWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6Y3JlYXRl
UHJpbWFyeUdyYXBoaWNzTGF5ZXIpOgorCiAyMDIyLTA0LTE0ICBaYW4gRG9iZXJzZWsgIDx6ZG9i
ZXJzZWtAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXVtXUEVdIFByb3ZpZGUgV0syIElQQyBl
bmNvZGluZywgZGVjb2RpbmcgbWV0aG9kcyBmb3IgdGhlIERNQUJ1Zk9iamVjdCB0eXBlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IDg1NzgzMTgyNTU0MGViMjY0NDQwYjUxYzc4ZjI4ZWFhODcwZjUxNjAuLmQ5YjJhZWE5
NmI2NDMyYzIwZTFmMDRlNjBlNDk0NmY2NjU0NGJjODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMjItMDQtMTQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAg
ICBEcm9wIGluZWZmaWNpZW50IFN0cmluZzo6YXBwZW5kKCkgb3ZlcmxvYWRzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzkyODkKKworICAgICAgICBS
ZXZpZXdlZCBieSBTYW0gV2VpbmlnLgorCisgICAgICAgICogU2hhcmVkL21hYy9BdXhpbGlhcnlQ
cm9jZXNzTWFjLm1tOgorICAgICAgICAoV2ViS2l0Ojpwb3B1bGF0ZVNhbmRib3hJbml0aWFsaXph
dGlvblBhcmFtZXRlcnMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1
Z2luLm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OnNldFN1Z2dlc3RlZEZpbGVuYW1l
KToKKwogMjAyMi0wNC0xNCAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgW1dLMl0gRW5hYmxlIG1vcmUgZWZmaWNpZW50IGVuY29kaW5nIG9mIHN5bmNocm9u
b3VzLW1lc3NhZ2UgcmVwbHkgYXJndW1lbnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5k
ZXggOWNmNjFiMmM2YjFhNTZiMjliZGI4NGIwMjUyYjE5NTQ4MTUzYzJhNS4uNTg2OGZkNTAyYTky
ZTMxZjhiMzcwM2YwMzE1MGI4MDE3ZDE0NDA3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEzIEBACisyMDIyLTA0LTE0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CisKKyAgICAgICAgRHJvcCBpbmVmZmljaWVudCBTdHJpbmc6OmFwcGVuZCgpIG92ZXJs
b2FkcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5
Mjg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KKworICAgICAgICAqIFdlYkRv
d25sb2FkLmNwcDoKKyAgICAgICAgKFdlYkRvd25sb2FkOjpidW5kbGVQYXRoRm9yVGFyZ2V0UGF0
aCk6CisKIDIwMjItMDQtMDcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBEcm9wIHVudXNlZCBFZGl0b3JDbGllbnQ6OmdldEF1dG9Db3JyZWN0U3VnZ2VzdGlvbkZv
ck1pc3NwZWxsZWRXb3JkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cFNuYXBzaG90QnVpbGRlci5jcHAKaW5kZXggOWQ1YzYxOTIyMWVlZTVkNTFjZmVmMTU4OGViNzky
YjY1OGEyYzM1Ny4uY2IxNmEwMDUyNTRmNTgyNmE1OWZkZmMyNTIwZmI0YTQ4MGZlMWE1NSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5j
cHAKQEAgLTM5MCwxNSArMzkwLDE1IEBAIFN0cmluZyBIZWFwU25hcHNob3RCdWlsZGVyOjpqc29u
KEZ1bmN0aW9uPGJvb2wgKGNvbnN0IEhlYXBTbmFwc2hvdE5vZGUmKT4gYWxsb3dOCiAgICAgICAg
ICAgICAgICAgZmxhZ3MgfD0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KE5vZGVGbGFnczo6SW50ZXJu
YWwpOwogCiAgICAgICAgICAgICBpZiAobV9zbmFwc2hvdFR5cGUgPT0gU25hcHNob3RUeXBlOjpH
Q0RlYnVnZ2luZ1NuYXBzaG90KSB7Ci0gICAgICAgICAgICAgICAgU3RyaW5nIG5vZGVMYWJlbDsK
KyAgICAgICAgICAgICAgICBTdHJpbmdCdWlsZGVyIG5vZGVMYWJlbDsKICAgICAgICAgICAgICAg
ICBhdXRvIGl0ID0gbV9jZWxsTGFiZWxzLmZpbmQobm9kZS5jZWxsKTsKICAgICAgICAgICAgICAg
ICBpZiAoaXQgIT0gbV9jZWxsTGFiZWxzLmVuZCgpKQotICAgICAgICAgICAgICAgICAgICBub2Rl
TGFiZWwgPSBpdC0+dmFsdWU7CisgICAgICAgICAgICAgICAgICAgIG5vZGVMYWJlbC5hcHBlbmQo
aXQtPnZhbHVlKTsKIAogICAgICAgICAgICAgICAgIGlmIChub2RlTGFiZWwuaXNFbXB0eSgpKSB7
CiAgICAgICAgICAgICAgICAgICAgIGlmIChhdXRvKiBvYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpT
T2JqZWN0Kj4odm0sIG5vZGUuY2VsbCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChh
dXRvKiBmdW5jdGlvbiA9IGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KHZtLCBvYmplY3QpKQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVMYWJlbCA9IGZ1bmN0aW9uLT5jYWxjdWxh
dGVkRGlzcGxheU5hbWUodm0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVMYWJl
bC5hcHBlbmQoZnVuY3Rpb24tPmNhbGN1bGF0ZWREaXNwbGF5TmFtZSh2bSkpOwogICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogCkBAIC00MTAsNyArNDEwLDcgQEAgU3Ry
aW5nIEhlYXBTbmFwc2hvdEJ1aWxkZXI6Ompzb24oRnVuY3Rpb248Ym9vbCAoY29uc3QgSGVhcFNu
YXBzaG90Tm9kZSYpPiBhbGxvd04KICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAg
ICBpZiAoIW5vZGVMYWJlbC5pc0VtcHR5KCkgJiYgbV9zbmFwc2hvdFR5cGUgPT0gU25hcHNob3RU
eXBlOjpHQ0RlYnVnZ2luZ1NuYXBzaG90KSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gcmVz
dWx0ID0gbGFiZWxJbmRleGVzLmFkZChub2RlTGFiZWwsIG5leHRMYWJlbEluZGV4KTsKKyAgICAg
ICAgICAgICAgICAgICAgYXV0byByZXN1bHQgPSBsYWJlbEluZGV4ZXMuYWRkKG5vZGVMYWJlbC50
b1N0cmluZygpLCBuZXh0TGFiZWxJbmRleCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1
bHQuaXNOZXdFbnRyeSkKICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRMYWJlbEluZGV4Kys7
CiAgICAgICAgICAgICAgICAgICAgIGxhYmVsSW5kZXggPSByZXN1bHQuaXRlcmF0b3ItPnZhbHVl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcAppbmRleCA5
ZDZhYjU2YTJjZjU2Y2M3NGY0YWE2OWMxOWVhNjllYWVmNWJlZWFhLi5hMjJlYmY0MDhmMWE2NmRm
MDQ0NjAzM2MxOTNmOTYwZjg2YzY4MTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsT2JqZWN0LmNwcApAQCAtOTE3LDcgKzkxNyw4IEBAIFJlc29sdmVkTG9jYWxlIHJl
c29sdmVMb2NhbGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgTG9jYWxlU2V0
JiBhdmFpCiAgICAgUmVzb2x2ZWRMb2NhbGUgcmVzb2x2ZWQ7CiAgICAgcmVzb2x2ZWQuZGF0YUxv
Y2FsZSA9IGZvdW5kTG9jYWxlOwogCi0gICAgU3RyaW5nIHN1cHBvcnRlZEV4dGVuc2lvbiA9ICIt
dSJfczsKKyAgICBTdHJpbmdCdWlsZGVyIHN1cHBvcnRlZEV4dGVuc2lvbjsKKyAgICBzdXBwb3J0
ZWRFeHRlbnNpb24uYXBwZW5kKCItdSJfcyk7CiAgICAgZm9yIChSZWxldmFudEV4dGVuc2lvbktl
eSBrZXkgOiByZWxldmFudEV4dGVuc2lvbktleXMpIHsKICAgICAgICAgQVNDSUlMaXRlcmFsIGtl
eVN0cmluZyA9IHJlbGV2YW50RXh0ZW5zaW9uS2V5U3RyaW5nKGtleSk7CiAgICAgICAgIFZlY3Rv
cjxTdHJpbmc+IGtleUxvY2FsZURhdGEgPSBsb2NhbGVEYXRhKGZvdW5kTG9jYWxlLCBrZXkpOwpA
QCAtOTU3LDcgKzk1OCw3IEBAIFJlc29sdmVkTG9jYWxlIHJlc29sdmVMb2NhbGUoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgTG9jYWxlU2V0JiBhdmFpCiAKICAgICBpZiAoc3Vw
cG9ydGVkRXh0ZW5zaW9uLmxlbmd0aCgpID4gMikgewogICAgICAgICBTdHJpbmdWaWV3IGZvdW5k
TG9jYWxlVmlldyhmb3VuZExvY2FsZSk7Ci0gICAgICAgIGZvdW5kTG9jYWxlID0gbWFrZVN0cmlu
Zyhmb3VuZExvY2FsZVZpZXcubGVmdChtYXRjaGVyUmVzdWx0LmV4dGVuc2lvbkluZGV4KSwgc3Vw
cG9ydGVkRXh0ZW5zaW9uLCBmb3VuZExvY2FsZVZpZXcuc3Vic3RyaW5nKG1hdGNoZXJSZXN1bHQu
ZXh0ZW5zaW9uSW5kZXgpKTsKKyAgICAgICAgZm91bmRMb2NhbGUgPSBtYWtlU3RyaW5nKGZvdW5k
TG9jYWxlVmlldy5sZWZ0KG1hdGNoZXJSZXN1bHQuZXh0ZW5zaW9uSW5kZXgpLCBzdXBwb3J0ZWRF
eHRlbnNpb24udG9TdHJpbmcoKSwgZm91bmRMb2NhbGVWaWV3LnN1YnN0cmluZyhtYXRjaGVyUmVz
dWx0LmV4dGVuc2lvbkluZGV4KSk7CiAgICAgfQogCiAgICAgcmVzb2x2ZWQubG9jYWxlID0gV1RG
TW92ZShmb3VuZExvY2FsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UZW1wb3JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
ZW1wb3JhbE9iamVjdC5jcHAKaW5kZXggMTQ4MDE0OWYwNjg3NjhiNzI1ZDU2M2QzMTExZDFiZDI2
YjNhZjVlYi4uYzg4MmY0ZTg5N2YyZmU2NWE1Y2IzNGYyNmI1YTkwZWNhNTU0OGM4NSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcApAQCAt
MTUxLDEyICsxNTEsOSBAQCBzdGF0aWMgU3RyaW5nVmlldyBzaW5ndWxhclVuaXQoU3RyaW5nVmll
dyB1bml0KQogLy8gRm9yIHVzZSBpbiBlcnJvciBtZXNzYWdlcyB3aGVyZSBhIHN0cmluZyB2YWx1
ZSBpcyBwb3RlbnRpYWxseSB1bmJvdW5kZWQKIFdURjo6U3RyaW5nIGVsbGlwc2l6ZUF0KHVuc2ln
bmVkIG1heExlbmd0aCwgY29uc3QgV1RGOjpTdHJpbmcmIHN0cmluZykKIHsKLSAgICBXVEY6OlN0
cmluZyBjb3B5IHsgc3RyaW5nIH07Ci0gICAgaWYgKHN0cmluZy5sZW5ndGgoKSA+IG1heExlbmd0
aCkgewotICAgICAgICBjb3B5LnRydW5jYXRlKG1heExlbmd0aCAtIDEpOwotICAgICAgICBjb3B5
LmFwcGVuZChob3Jpem9udGFsRWxsaXBzaXMpOwotICAgIH0KLSAgICByZXR1cm4gY29weTsKKyAg
ICBpZiAoc3RyaW5nLmxlbmd0aCgpIDw9IG1heExlbmd0aCkKKyAgICAgICAgcmV0dXJuIHN0cmlu
ZzsKKyAgICByZXR1cm4gbWFrZVN0cmluZyhTdHJpbmdWaWV3KHN0cmluZykubGVmdChtYXhMZW5n
dGggLSAxKSwgaG9yaXpvbnRhbEVsbGlwc2lzKTsKIH0KIAogUHJvcGVydHlOYW1lIHRlbXBvcmFs
VW5pdFBsdXJhbFByb3BlcnR5TmFtZShWTSYgdm0sIFRlbXBvcmFsVW5pdCB1bml0KQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uT3ZlcnJpZGVzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9GdW5jdGlvbk92ZXJyaWRlcy5jcHAKaW5kZXgg
NWUzMjA4Y2IyNjAxMDMyYzdlMzBjMjZiYzkzMTc1ZmY3NmZjYmEzMi4uYmUxZjI4ZmE1NDRiZjg4
NDAwMzdmZTQ4MTQ4NTU3OGIwMjhmMzZiOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rvb2xzL0Z1bmN0aW9uT3ZlcnJpZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdG9vbHMvRnVuY3Rpb25PdmVycmlkZXMuY3BwCkBAIC0xMzUsMjEgKzEzNSwxOSBAQCBzdGF0
aWMgdm9pZCBpbml0aWFsaXplT3ZlcnJpZGVJbmZvKGNvbnN0IFNvdXJjZUNvZGUmIG9yaWdDb2Rl
LCBjb25zdCBTdHJpbmcmIG5ldwogICAgIHVuc2lnbmVkIGhlYWRlckxlbmd0aCA9IG9yaWdCcmFj
ZVN0YXJ0IC0gb3JpZ0Z1bmN0aW9uU3RhcnQ7CiAgICAgU3RyaW5nIG9yaWdIZWFkZXIgPSBvcmln
UHJvdmlkZXJTdHIuc3Vic3RyaW5nKG9yaWdGdW5jdGlvblN0YXJ0LCBoZWFkZXJMZW5ndGgpOwog
Ci0gICAgU3RyaW5nIG5ld1Byb3ZpZGVyU3RyOwotICAgIG5ld1Byb3ZpZGVyU3RyLmFwcGVuZChv
cmlnSGVhZGVyKTsKLSAgICBuZXdQcm92aWRlclN0ci5hcHBlbmQobmV3Qm9keSk7CisgICAgU3Ry
aW5nIG5ld1Byb3ZpZGVyU3RyaW5nID0gbWFrZVN0cmluZyhvcmlnSGVhZGVyLCBuZXdCb2R5KTsK
IAogICAgIGF1dG8gb3ZlcnJpZGRlbiA9ICI8b3ZlcnJpZGRlbj4iX3M7CiAgICAgVVJMIHVybCh7
IH0sIG92ZXJyaWRkZW4pOwotICAgIFJlZjxTb3VyY2VQcm92aWRlcj4gbmV3UHJvdmlkZXIgPSBT
dHJpbmdTb3VyY2VQcm92aWRlcjo6Y3JlYXRlKG5ld1Byb3ZpZGVyU3RyLCBTb3VyY2VPcmlnaW4g
eyB1cmwgfSwgb3ZlcnJpZGRlbik7CisgICAgUmVmPFNvdXJjZVByb3ZpZGVyPiBuZXdQcm92aWRl
ciA9IFN0cmluZ1NvdXJjZVByb3ZpZGVyOjpjcmVhdGUobmV3UHJvdmlkZXJTdHJpbmcsIFNvdXJj
ZU9yaWdpbiB7IHVybCB9LCBvdmVycmlkZGVuKTsKIAogICAgIGluZm8uZmlyc3RMaW5lID0gMTsK
ICAgICBpbmZvLmxpbmVDb3VudCA9IDE7IC8vIEZha2luZyBpdC4gVGhpcyBkb2Vzbid0IHJlYWxs
eSBtYXR0ZXIgZm9yIG5vdy4KICAgICBpbmZvLnN0YXJ0Q29sdW1uID0gMTsKICAgICBpbmZvLmVu
ZENvbHVtbiA9IDE7IC8vIEZha2luZyBpdC4gVGhpcyBkb2Vzbid0IHJlYWxseSBtYXR0ZXIgZm9y
IG5vdy4KLSAgICBpbmZvLnBhcmFtZXRlcnNTdGFydE9mZnNldCA9IG5ld1Byb3ZpZGVyU3RyLmZp
bmQoJygnKTsKLSAgICBpbmZvLnR5cGVQcm9maWxpbmdTdGFydE9mZnNldCA9IG5ld1Byb3ZpZGVy
U3RyLmZpbmQoJ3snKTsKLSAgICBpbmZvLnR5cGVQcm9maWxpbmdFbmRPZmZzZXQgPSBuZXdQcm92
aWRlclN0ci5sZW5ndGgoKSAtIDE7CisgICAgaW5mby5wYXJhbWV0ZXJzU3RhcnRPZmZzZXQgPSBu
ZXdQcm92aWRlclN0cmluZy5maW5kKCcoJyk7CisgICAgaW5mby50eXBlUHJvZmlsaW5nU3RhcnRP
ZmZzZXQgPSBuZXdQcm92aWRlclN0cmluZy5maW5kKCd7Jyk7CisgICAgaW5mby50eXBlUHJvZmls
aW5nRW5kT2Zmc2V0ID0gbmV3UHJvdmlkZXJTdHJpbmcubGVuZ3RoKCkgLSAxOwogCiAgICAgaW5m
by5zb3VyY2VDb2RlID0KICAgICAgICAgU291cmNlQ29kZShXVEZNb3ZlKG5ld1Byb3ZpZGVyKSwg
aW5mby5wYXJhbWV0ZXJzU3RhcnRPZmZzZXQsIGluZm8udHlwZVByb2ZpbGluZ0VuZE9mZnNldCAr
IDEsIDEsIDEpOwpAQCAtMjI1LDExICsyMjMsNyBAQCBzdGF0aWMgU3RyaW5nIHBhcnNlQ2xhdXNl
KGNvbnN0IGNoYXIqIGtleXdvcmQsIHNpemVfdCBrZXl3b3JkTGVuZ3RoLCBGSUxFKiBmaWxlLAog
ICAgIGlmIChoYXNEaXNhbGxvd2VkQ2hhcmFjdGVycyhkZWxpbWl0ZXJTdGFydCwgZGVsaW1pdGVy
TGVuZ3RoKSkKICAgICAgICAgRkFJTF9XSVRIX0VSUk9SKFNZTlRBWF9FUlJPUiwgKCJEZWxpbWl0
ZXIgJyIsIGRlbGltaXRlciwgIicgY2Fubm90IGhhdmUgJ3snLCAnfScsIG9yIHdoaXRlc3BhY2U6
XG4iLCBsaW5lLCAiXG4iKSk7CiAgICAgCi0gICAgU3RyaW5nIHRlcm1pbmF0b3JTdHJpbmc7Ci0g
ICAgdGVybWluYXRvclN0cmluZy5hcHBlbmQoJ30nKTsKLSAgICB0ZXJtaW5hdG9yU3RyaW5nLmFw
cGVuZChkZWxpbWl0ZXIpOwotCi0gICAgQ1N0cmluZyB0ZXJtaW5hdG9yQ1N0cmluZyA9IHRlcm1p
bmF0b3JTdHJpbmcuYXNjaWkoKTsKKyAgICBDU3RyaW5nIHRlcm1pbmF0b3JDU3RyaW5nID0gbWFr
ZVN0cmluZygnfScsIGRlbGltaXRlcikuYXNjaWkoKTsKICAgICBjb25zdCBjaGFyKiB0ZXJtaW5h
dG9yID0gdGVybWluYXRvckNTdHJpbmcuZGF0YSgpOwogICAgIGxpbmUgPSBkZWxpbWl0ZXJFbmQ7
IC8vIFN0YXJ0IGZyb20gdGhlIHsuCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Fzc2Vy
dGlvbnMuY3BwIGIvU291cmNlL1dURi93dGYvQXNzZXJ0aW9ucy5jcHAKaW5kZXggYzkzYmFmNDEz
M2I2ZjM4NmE3M2YyMDdiNmVmNjVmMTkyM2E0NDYzOC4uMmNkMjUxODliM2Q3NDA5MWZkYTQ4YjJh
YmNhM2IwZDIxYWNiMjAzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQXNzZXJ0aW9ucy5j
cHAKKysrIGIvU291cmNlL1dURi93dGYvQXNzZXJ0aW9ucy5jcHAKQEAgLTQ2Niw3ICs0NjYsNyBA
QCBzdGF0aWMgdm9pZCBXVEZMb2dWYUxpc3QoV1RGTG9nQ2hhbm5lbCogY2hhbm5lbCwgY29uc3Qg
Y2hhciogZm9ybWF0LCB2YV9saXN0IGFyZwogICAgIEFMTE9XX05PTkxJVEVSQUxfRk9STUFUX0VO
RAogCiAgICAgaWYgKCFsb2dnaW5nU3RyaW5nLmVuZHNXaXRoKCdcbicpKQotICAgICAgICBsb2dn
aW5nU3RyaW5nLmFwcGVuZCgnXG4nKTsKKyAgICAgICAgbG9nZ2luZ1N0cmluZyA9IG1ha2VTdHJp
bmcobG9nZ2luZ1N0cmluZywgJ1xuJyk7CiAKICAgICBsb2dnaW5nQWNjdW11bGF0b3IoKS5hY2N1
bXVsYXRlKGxvZ2dpbmdTdHJpbmcpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1N0cmluZ0J1aWxkZXIuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oCmlu
ZGV4IGNhZDA5NTNiNTI4YTJkMDllNDIyYTg4MjliNzJjMzI4YmQxMjZkYmYuLmI0MTQzMmYxNzg4
NTUwYWRlNTI2NDRlYWM5OGZhYmNjNTk1YTYyNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oCkBAIC02MSw2ICs2MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZChjb25zdCBB
dG9tU3RyaW5nJiBzdHJpbmcpIHsgYXBwZW5kKHN0cmluZy5zdHJpbmcoKSk7IH0KICAgICB2b2lk
IGFwcGVuZChjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIGFwcGVuZChTdHJpbmdWaWV3KTsKKyAg
ICB2b2lkIGFwcGVuZChBU0NJSUxpdGVyYWwpOwogICAgIHZvaWQgYXBwZW5kKFVDaGFyKTsKICAg
ICB2b2lkIGFwcGVuZChMQ2hhcik7CiAgICAgdm9pZCBhcHBlbmQoY2hhciBjaGFyYWN0ZXIpIHsg
YXBwZW5kKHN0YXRpY19jYXN0PExDaGFyPihjaGFyYWN0ZXIpKTsgfQpAQCAtMjIxLDYgKzIyMiwx
MSBAQCBpbmxpbmUgdm9pZCBTdHJpbmdCdWlsZGVyOjphcHBlbmQoU3RyaW5nVmlldyBzdHJpbmcp
CiAgICAgICAgIGFwcGVuZENoYXJhY3RlcnMoc3RyaW5nLmNoYXJhY3RlcnMxNigpLCBzdHJpbmcu
bGVuZ3RoKCkpOwogfQogCitpbmxpbmUgdm9pZCBTdHJpbmdCdWlsZGVyOjphcHBlbmQoQVNDSUlM
aXRlcmFsIHN0cmluZykKK3sKKyAgICBhcHBlbmRDaGFyYWN0ZXJzKHN0cmluZy5jaGFyYWN0ZXJz
OCgpLCBzdHJpbmcubGVuZ3RoKCkpOworfQorCiBpbmxpbmUgdm9pZCBTdHJpbmdCdWlsZGVyOjph
cHBlbmRTdWJzdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVuc2lnbmVkIG9mZnNldCwgdW5z
aWduZWQgbGVuZ3RoKQogewogICAgIGFwcGVuZChTdHJpbmdWaWV3IHsgc3RyaW5nIH0uc3Vic3Ry
aW5nKG9mZnNldCwgbGVuZ3RoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dU
RlN0cmluZy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKaW5kZXggYTE2
NzNhNjNlOTc3NDQyMjVkMDJkZWI5OWIyNDMyODczYjM0ZjAyOS4uZGM5NDEwNGI1OTJkMTA4ZDAw
YjgyNTgwNzYyYjExNTE4ZjA3Y2RkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9X
VEZTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcApAQCAt
NzMsODAgKzczLDYgQEAgU3RyaW5nOjpTdHJpbmcoY29uc3QgY2hhciogbnVsbFRlcm1pbmF0ZWRT
dHJpbmcpCiAgICAgICAgIG1faW1wbCA9IFN0cmluZ0ltcGw6OmNyZWF0ZShyZWludGVycHJldF9j
YXN0PGNvbnN0IExDaGFyKj4obnVsbFRlcm1pbmF0ZWRTdHJpbmcpKTsKIH0KIAotdm9pZCBTdHJp
bmc6OmFwcGVuZChjb25zdCBTdHJpbmcmIG90aGVyU3RyaW5nKQotewotICAgIC8vIEZJWE1FOiBU
aGlzIGlzIGV4dHJlbWVseSBpbmVmZmljaWVudC4gU28gbXVjaCBzbyB0aGF0IHdlIG1pZ2h0IHdh
bnQgdG8gdGFrZSB0aGlzIG91dCBvZiBTdHJpbmcncyBBUEkuCi0KLSAgICBpZiAoIW1faW1wbCkg
ewotICAgICAgICBtX2ltcGwgPSBvdGhlclN0cmluZy5tX2ltcGw7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBpZiAob3RoZXJTdHJpbmcuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBhdXRvIGxlbmd0aCA9IG1faW1wbC0+bGVuZ3RoKCk7Ci0gICAgYXV0byBvdGhlckxl
bmd0aCA9IG90aGVyU3RyaW5nLm1faW1wbC0+bGVuZ3RoKCk7Ci0gICAgaWYgKG90aGVyTGVuZ3Ro
ID4gTWF4TGVuZ3RoIC0gbGVuZ3RoKQotICAgICAgICBDUkFTSCgpOwotCi0gICAgaWYgKG1faW1w
bC0+aXM4Qml0KCkgJiYgb3RoZXJTdHJpbmcubV9pbXBsLT5pczhCaXQoKSkgewotICAgICAgICBM
Q2hhciogZGF0YTsKLSAgICAgICAgYXV0byBuZXdJbXBsID0gU3RyaW5nSW1wbDo6Y3JlYXRlVW5p
bml0aWFsaXplZChsZW5ndGggKyBvdGhlckxlbmd0aCwgZGF0YSk7Ci0gICAgICAgIFN0cmluZ0lt
cGw6OmNvcHlDaGFyYWN0ZXJzKGRhdGEsIG1faW1wbC0+Y2hhcmFjdGVyczgoKSwgbGVuZ3RoKTsK
LSAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoZGF0YSArIGxlbmd0aCwgb3RoZXJT
dHJpbmcubV9pbXBsLT5jaGFyYWN0ZXJzOCgpLCBvdGhlckxlbmd0aCk7Ci0gICAgICAgIG1faW1w
bCA9IFdURk1vdmUobmV3SW1wbCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgVUNoYXIq
IGRhdGE7Ci0gICAgYXV0byBuZXdJbXBsID0gU3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFsaXpl
ZChsZW5ndGggKyBvdGhlckxlbmd0aCwgZGF0YSk7Ci0gICAgU3RyaW5nVmlldygqbV9pbXBsKS5n
ZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChkYXRhKTsKLSAgICBTdHJpbmdWaWV3KCpvdGhlclN0
cmluZy5tX2ltcGwpLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGRhdGEgKyBsZW5ndGgpOwot
ICAgIG1faW1wbCA9IFdURk1vdmUobmV3SW1wbCk7Ci19Ci0KLXZvaWQgU3RyaW5nOjphcHBlbmQo
TENoYXIgY2hhcmFjdGVyKQotewotICAgIC8vIEZJWE1FOiBUaGlzIGlzIGV4dHJlbWVseSBpbmVm
ZmljaWVudC4gU28gbXVjaCBzbyB0aGF0IHdlIG1pZ2h0IHdhbnQgdG8gdGFrZSB0aGlzIG91dCBv
ZiBTdHJpbmcncyBBUEkuCi0KLSAgICBpZiAoIW1faW1wbCkgewotICAgICAgICBtX2ltcGwgPSBT
dHJpbmdJbXBsOjpjcmVhdGUoJmNoYXJhY3RlciwgMSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgaWYgKCFpczhCaXQoKSkgewotICAgICAgICBhcHBlbmQoc3RhdGljX2Nhc3Q8VUNoYXI+
KGNoYXJhY3RlcikpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChtX2ltcGwtPmxl
bmd0aCgpID49IE1heExlbmd0aCkKLSAgICAgICAgQ1JBU0goKTsKLSAgICBMQ2hhciogZGF0YTsK
LSAgICBhdXRvIG5ld0ltcGwgPSBTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRpYWxpemVkKG1faW1w
bC0+bGVuZ3RoKCkgKyAxLCBkYXRhKTsKLSAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhk
YXRhLCBtX2ltcGwtPmNoYXJhY3RlcnM4KCksIG1faW1wbC0+bGVuZ3RoKCkpOwotICAgIGRhdGFb
bV9pbXBsLT5sZW5ndGgoKV0gPSBjaGFyYWN0ZXI7Ci0gICAgbV9pbXBsID0gV1RGTW92ZShuZXdJ
bXBsKTsKLX0KLQotdm9pZCBTdHJpbmc6OmFwcGVuZChVQ2hhciBjaGFyYWN0ZXIpCi17Ci0gICAg
Ly8gRklYTUU6IFRoaXMgaXMgZXh0cmVtZWx5IGluZWZmaWNpZW50LiBTbyBtdWNoIHNvIHRoYXQg
d2UgbWlnaHQgd2FudCB0byB0YWtlIHRoaXMgb3V0IG9mIFN0cmluZydzIEFQSS4KLQotICAgIGlm
ICghbV9pbXBsKSB7Ci0gICAgICAgIG1faW1wbCA9IFN0cmluZ0ltcGw6OmNyZWF0ZSgmY2hhcmFj
dGVyLCAxKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoaXNMYXRpbjEoY2hhcmFj
dGVyKSAmJiBpczhCaXQoKSkgewotICAgICAgICBhcHBlbmQoc3RhdGljX2Nhc3Q8TENoYXI+KGNo
YXJhY3RlcikpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChtX2ltcGwtPmxlbmd0
aCgpID49IE1heExlbmd0aCkKLSAgICAgICAgQ1JBU0goKTsKLSAgICBVQ2hhciogZGF0YTsKLSAg
ICBhdXRvIG5ld0ltcGwgPSBTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRpYWxpemVkKG1faW1wbC0+
bGVuZ3RoKCkgKyAxLCBkYXRhKTsKLSAgICBTdHJpbmdWaWV3KCptX2ltcGwpLmdldENoYXJhY3Rl
cnNXaXRoVXBjb252ZXJ0KGRhdGEpOwotICAgIGRhdGFbbV9pbXBsLT5sZW5ndGgoKV0gPSBjaGFy
YWN0ZXI7Ci0gICAgbV9pbXBsID0gV1RGTW92ZShuZXdJbXBsKTsKLX0KLQogaW50IGNvZGVQb2lu
dENvbXBhcmUoY29uc3QgU3RyaW5nJiBhLCBjb25zdCBTdHJpbmcmIGIpCiB7CiAgICAgcmV0dXJu
IGNvZGVQb2ludENvbXBhcmUoYS5pbXBsKCksIGIuaW1wbCgpKTsKQEAgLTE2Nyw3ICs5MywxMCBA
QCB2b2lkIFN0cmluZzo6aW5zZXJ0KGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25lZCBwb3Np
dGlvbikKICAgICB9CiAKICAgICBpZiAocG9zaXRpb24gPj0gbGVuZ3RoKCkpIHsKLSAgICAgICAg
YXBwZW5kKHN0cmluZyk7CisgICAgICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCisgICAgICAgICAg
ICBhcHBlbmQoc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5ndGgoKSk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIGFwcGVuZChzdHJpbmcuY2hhcmFjdGVyczE2KCksIHN0cmluZy5s
ZW5ndGgoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTI0NCw3ICsxNzMsNyBAQCB2
b2lkIFN0cmluZzo6YXBwZW5kKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzVG9BcHBlbmQsIHVuc2ln
bmVkIGxlbmd0aFRvQXBwZW5kKQogICAgICAgICByZXR1cm47CiAKICAgICB1bnNpZ25lZCBzdHJM
ZW5ndGggPSBtX2ltcGwtPmxlbmd0aCgpOwotICAgIAorCiAgICAgQVNTRVJUKGNoYXJhY3RlcnNU
b0FwcGVuZCk7CiAgICAgaWYgKGxlbmd0aFRvQXBwZW5kID4gTWF4TGVuZ3RoIC0gc3RyTGVuZ3Ro
KQogICAgICAgICBDUkFTSCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZT
dHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKaW5kZXggZjE3M2ZlNjky
M2Q3YWFmMjRhZTM0ZGQ3NDllMDczNDhmODU1ODM4OS4uOWU2Mzk0YTliM2VmYjBmZTY2ODViODkx
MDA0ZGRlYzhiY2UwNWM2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJp
bmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCkBAIC0xOTAsMTIgKzE5
MCw2IEBAIHB1YmxpYzoKICAgICBib29sIGVuZHNXaXRoKGNoYXIgY2hhcmFjdGVyKSBjb25zdCB7
IHJldHVybiBlbmRzV2l0aChzdGF0aWNfY2FzdDxVQ2hhcj4oY2hhcmFjdGVyKSk7IH0KICAgICBi
b29sIGhhc0luZml4RW5kaW5nQXQoU3RyaW5nVmlldyBzdWZmaXgsIHVuc2lnbmVkIGVuZCkgY29u
c3Q7CiAKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBlbmQoY29uc3QgU3RyaW5nJik7
Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgYXBwZW5kKExDaGFyKTsKLSAgICB2b2lkIGFw
cGVuZChjaGFyIGNoYXJhY3RlcikgeyBhcHBlbmQoc3RhdGljX2Nhc3Q8TENoYXI+KGNoYXJhY3Rl
cikpOyB9OwotICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGFwcGVuZChVQ2hhcik7Ci0gICAg
V1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgYXBwZW5kKGNvbnN0IExDaGFyKiwgdW5zaWduZWQgbGVu
Z3RoKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBlbmQoY29uc3QgVUNoYXIqLCB1
bnNpZ25lZCBsZW5ndGgpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGluc2VydChjb25z
dCBTdHJpbmcmLCB1bnNpZ25lZCBwb3NpdGlvbik7CiAKICAgICBTdHJpbmcmIHJlcGxhY2UoVUNo
YXIgdGFyZ2V0LCBVQ2hhciByZXBsYWNlbWVudCk7CkBAIC0zNDAsNiArMzM0LDEwIEBAIHB1Ymxp
YzoKIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCBy
ZW1vdmVJbnRlcm5hbChjb25zdCBDaGFyYWN0ZXJUeXBlKiwgdW5zaWduZWQsIHVuc2lnbmVkKTsK
IAorICAgIC8vIEZJWE1FOiBPbmx5IHVzZWQgYnkgaW5zZXJ0KCksIHdlIHNob3VsZCBjb25zaWRl
ciBkcm9wcGluZyB0aGVtLgorICAgIHZvaWQgYXBwZW5kKGNvbnN0IExDaGFyKiwgdW5zaWduZWQg
bGVuZ3RoKTsKKyAgICB2b2lkIGFwcGVuZChjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7
CisKICAgICB0ZW1wbGF0ZTxib29sIGFsbG93RW1wdHlFbnRyaWVzPiB2b2lkIHNwbGl0SW50ZXJu
YWwoVUNoYXIgc2VwYXJhdG9yLCBjb25zdCBTcGxpdEZ1bmN0b3ImKSBjb25zdDsKICAgICB0ZW1w
bGF0ZTxib29sIGFsbG93RW1wdHlFbnRyaWVzPiBWZWN0b3I8U3RyaW5nPiBzcGxpdEludGVybmFs
KFVDaGFyIHNlcGFyYXRvcikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Ym9vbCBhbGxvd0VtcHR5RW50
cmllcz4gVmVjdG9yPFN0cmluZz4gc3BsaXRJbnRlcm5hbChTdHJpbmdWaWV3IHNlcGFyYXRvcikg
Y29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJL
ZXlEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleURhdGEu
Y3BwCmluZGV4IDQ2MGYxNzRhMzgxYWI2YWJhNGNhMjk4MzE0NTI2OThiNWQ1MjkwZDAuLjg1YjE3
ODJhYmViZjY3ZTE2M2NiNmNlOWQzM2I0NzkwYmYwNGJhZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleURhdGEuY3BwCkBAIC0zNzEsMTAgKzM3MSw4IEBA
IFN0cmluZyBJREJLZXlEYXRhOjpsb2dnaW5nU3RyaW5nKCkgY29uc3QKICAgICAgICAgcmV0dXJu
ICI8bWluaW11bT4iX3M7CiAgICAgfQogCi0gICAgaWYgKHJlc3VsdC5sZW5ndGgoKSA+IDE1MCkg
ewotICAgICAgICByZXN1bHQudHJ1bmNhdGUoMTQ3KTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZCgi
Li4uIl9zKTsKLSAgICB9CisgICAgaWYgKHJlc3VsdC5sZW5ndGgoKSA+IDE1MCkKKyAgICAgICAg
cmVzdWx0ID0gbWFrZVN0cmluZyhTdHJpbmdWaWV3KHJlc3VsdCkubGVmdCgxNDcpLCAiLi4uIl9z
KTsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCS2V5UmFuZ2VEYXRhLmNwcAppbmRleCA3YzJhODFlMjQ2NGQ0YWM2
ZjY5MWY2ZjdhY2Y5YjZiYWFjYmUyMTU0Li45NDM1MWFhMjA4Zjk2ODE0NDBhNzFjMTk5ZDY1ZDNj
OThlOWVkOWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJLZXlSYW5nZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQktleVJhbmdlRGF0YS5jcHAKQEAgLTExMSwxMCArMTExLDggQEAgYm9vbCBJREJLZXlSYW5n
ZURhdGE6OmlzVmFsaWQoKSBjb25zdAogU3RyaW5nIElEQktleVJhbmdlRGF0YTo6bG9nZ2luZ1N0
cmluZygpIGNvbnN0CiB7CiAgICAgYXV0byByZXN1bHQgPSBtYWtlU3RyaW5nKGxvd2VyT3BlbiA/
ICIoICIgOiAiWyAiLCBsb3dlcktleS5sb2dnaW5nU3RyaW5nKCksICIsICIsIHVwcGVyS2V5Lmxv
Z2dpbmdTdHJpbmcoKSwgdXBwZXJPcGVuID8gIiApIiA6ICIgXSIpOwotICAgIGlmIChyZXN1bHQu
bGVuZ3RoKCkgPiA0MDApIHsKLSAgICAgICAgcmVzdWx0LnRydW5jYXRlKDM5Nyk7Ci0gICAgICAg
IHJlc3VsdC5hcHBlbmQoIi4uLiJfcyk7Ci0gICAgfQorICAgIGlmIChyZXN1bHQubGVuZ3RoKCkg
PiA0MDApCisgICAgICAgIHJlc3VsdCA9IG1ha2VTdHJpbmcoU3RyaW5nVmlldyhyZXN1bHQpLmxl
ZnQoMzk3KSwgIi4uLiJfcyk7CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkluZGV4SW5mby5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCSW5kZXhJbmZvLmNw
cAppbmRleCA3YWJhODMxZDcwMGVhOThmZWIyY2M5YWE0NGM5NjJjNGI1OTQ0N2I5Li42MDQ1NGQ1
ZmU1YTYyNTcwODM4YjUzNzUzMDFmYTc1ZDRkZTNjODk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCSW5kZXhJbmZvLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCSW5kZXhJbmZvLmNwcApAQCAt
NTksMTAgKzU5LDEwIEBAIElEQkluZGV4SW5mbyBJREJJbmRleEluZm86Omlzb2xhdGVkQ29weSgp
ICYmCiAKIFN0cmluZyBJREJJbmRleEluZm86OmxvZ2dpbmdTdHJpbmcoaW50IGluZGVudCkgY29u
c3QKIHsKLSAgICBTdHJpbmcgaW5kZW50U3RyaW5nOworICAgIFN0cmluZ0J1aWxkZXIgaW5kZW50
U3RyaW5nOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaW5kZW50OyArK2kpCiAgICAgICAgIGlu
ZGVudFN0cmluZy5hcHBlbmQoJyAnKTsKLSAgICByZXR1cm4gbWFrZVN0cmluZyhpbmRlbnRTdHJp
bmcsICJJbmRleDogIiwgbV9uYW1lLCAiICgiLCBtX2lkZW50aWZpZXIsICIpIGtleVBhdGg6ICIs
IFdlYkNvcmU6OmxvZ2dpbmdTdHJpbmcobV9rZXlQYXRoKSwgJ1xuJyk7CisgICAgcmV0dXJuIG1h
a2VTdHJpbmcoaW5kZW50U3RyaW5nLnRvU3RyaW5nKCksICJJbmRleDogIiwgbV9uYW1lLCAiICgi
LCBtX2lkZW50aWZpZXIsICIpIGtleVBhdGg6ICIsIFdlYkNvcmU6OmxvZ2dpbmdTdHJpbmcobV9r
ZXlQYXRoKSwgJ1xuJyk7CiB9CiAKIFN0cmluZyBJREJJbmRleEluZm86OmNvbmRlbnNlZExvZ2dp
bmdTdHJpbmcoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcAppbmRleCBjMzA3YWMzM2UzYTFmMGM2MTcz
MDlkMGMzODU4YTA0YjdkOTUzOTEzLi45OGI1NjhjYjBlZjBkMjI3ZDVkZWM2YmI1ZWQyYmRlMWE4
Y2JjMjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2Vi
U29ja2V0SGFuZHNoYWtlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcApAQCAtODMsMTMgKzgzLDEyIEBAIHN0YXRpYyBTdHJp
bmcgaG9zdE5hbWUoY29uc3QgVVJMJiB1cmwsIGJvb2wgc2VjdXJlKQogICAgIHJldHVybiBob3N0
OwogfQogCi1zdGF0aWMgY29uc3Qgc2l6ZV90IG1heElucHV0U2FtcGxlU2l6ZSA9IDEyODsKLXN0
YXRpYyBTdHJpbmcgdHJpbUlucHV0U2FtcGxlKGNvbnN0IHVpbnQ4X3QqIHAsIHNpemVfdCBsZW4p
CitzdGF0aWMgY29uc3RleHByIHNpemVfdCBtYXhJbnB1dFNhbXBsZVNpemUgPSAxMjg7CitzdGF0
aWMgU3RyaW5nIHRyaW1JbnB1dFNhbXBsZShjb25zdCB1aW50OF90KiBwLCBzaXplX3QgbGVuZ3Ro
KQogewotICAgIFN0cmluZyBzID0gU3RyaW5nKHAsIHN0ZDo6bWluPHNpemVfdD4obGVuLCBtYXhJ
bnB1dFNhbXBsZVNpemUpKTsKLSAgICBpZiAobGVuID4gbWF4SW5wdXRTYW1wbGVTaXplKQotICAg
ICAgICBzLmFwcGVuZChob3Jpem9udGFsRWxsaXBzaXMpOwotICAgIHJldHVybiBzOworICAgIGlm
IChsZW5ndGggPD0gbWF4SW5wdXRTYW1wbGVTaXplKQorICAgICAgICByZXR1cm4gU3RyaW5nKHAs
IGxlbmd0aCk7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoU3RyaW5nVmlldyhwLCBsZW5ndGgpLmxl
ZnQobWF4SW5wdXRTYW1wbGVTaXplKSwgaG9yaXpvbnRhbEVsbGlwc2lzKTsKIH0KIAogc3RhdGlj
IFN0cmluZyBnZW5lcmF0ZVNlY1dlYlNvY2tldEtleSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3Qu
Y3BwCmluZGV4IDA4NDhkNWQxNzlhZTg5MWMzOWMwMTQ1OGVlOTM1YzdhNDY5YWUxZjguLjE1MTY5
NGMyOGEyOTIxNWU3ZWEyYjIzNGY0OGE1NjUyYWNmMzFjZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRP
YmplY3QuY3BwCkBAIC0zNTUsMTIgKzM1NSwxMiBAQCB2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6Omlu
aXRpYWxpemVBdHRyaWJ1dGVEYXRhKEFYQ29yZU9iamVjdCYgY29yZU9iamVjdCwgYm9vbCBpcwog
CiAgICAgVmVjdG9yPFN0cmluZz4gY2xhc3NMaXN0OwogICAgIG9iamVjdC5jbGFzc0xpc3QoY2xh
c3NMaXN0KTsKLSAgICBTdHJpbmcgY29tYmluZWRDbGFzc0xpc3Q7CisgICAgU3RyaW5nQnVpbGRl
ciBjb21iaW5lZENsYXNzTGlzdDsKICAgICBmb3IgKGF1dG8gaXQgPSBjbGFzc0xpc3QuYmVnaW4o
KSwgZW5kID0gY2xhc3NMaXN0LmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgY29t
YmluZWRDbGFzc0xpc3QuYXBwZW5kKCppdCk7Ci0gICAgICAgIGNvbWJpbmVkQ2xhc3NMaXN0LmFw
cGVuZCgiICJfcyk7CisgICAgICAgIGNvbWJpbmVkQ2xhc3NMaXN0LmFwcGVuZCgnICcpOwogICAg
IH0KLSAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6Q2xhc3NMaXN0LCBjb21iaW5lZENs
YXNzTGlzdCk7CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkNsYXNzTGlzdCwgY29t
YmluZWRDbGFzc0xpc3QudG9TdHJpbmcoKSk7CiAKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5
TmFtZTo6Q29sb3JWYWx1ZSwgb2JqZWN0LmNvbG9yVmFsdWUoKSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9D
aGFyYWN0ZXJEYXRhLmNwcAppbmRleCAzYzY0MDhjODZlNGJjMDY4ZDMxMjNmOTA3ZDE1OTVmMWUz
MzczODJlLi45NzU1MmVhZjEyZWM0NDBkOTliOGQyYmM5ODVjNmFiNzlkY2Y4YWFlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCkBAIC0xMTMsMTAgKzExMyw3IEBAIHVuc2lnbmVk
IENoYXJhY3RlckRhdGE6OnBhcnNlckFwcGVuZERhdGEoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVu
c2lnbmVkIG9mZnNldCwKICAgICAgICAgc3R5bGVJbnZhbGlkYXRpb24uZW1wbGFjZSgqcGFyZW50
LCBjaGlsZENoYW5nZSk7CiAKICAgICBTdHJpbmcgb2xkRGF0YSA9IG1fZGF0YTsKLSAgICBpZiAo
c3RyaW5nLmlzOEJpdCgpKQotICAgICAgICBtX2RhdGEuYXBwZW5kKHN0cmluZy5jaGFyYWN0ZXJz
OCgpICsgb2Zmc2V0LCBjaGFyYWN0ZXJMZW5ndGhMaW1pdCk7Ci0gICAgZWxzZQotICAgICAgICBt
X2RhdGEuYXBwZW5kKHN0cmluZy5jaGFyYWN0ZXJzMTYoKSArIG9mZnNldCwgY2hhcmFjdGVyTGVu
Z3RoTGltaXQpOworICAgIG1fZGF0YSA9IG1ha2VTdHJpbmcobV9kYXRhLCBTdHJpbmdWaWV3KHN0
cmluZykuc3Vic3RyaW5nKG9mZnNldCwgY2hhcmFjdGVyTGVuZ3RoTGltaXQpKTsKIAogICAgIEFT
U0VSVCghcmVuZGVyZXIoKSB8fCBpczxUZXh0PigqdGhpcykpOwogICAgIGlmIChhdXRvIHRleHQg
PSBkeW5hbWljRG93bmNhc3Q8VGV4dD4oKnRoaXMpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuY3BwCmluZGV4IGRjODM5
MWY2MzlmOGQxNjMwOTgzNTNmNDljYmFjMDI2YThiN2Q4MTAuLjRiOTAzZjhmZGYyYmFkOTM5ZGRh
YmE4MGNkZTg4MDU0NDEyOTc2ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5jcHAKQEAgLTIzMSwxMyArMjMxLDEx
IEBAIHN0YXRpYyB2b2lkIGFwcGVuZFRleHRSZXByZXNlbnRhdGlvbihTdHJpbmdCdWlsZGVyJiBi
dWlsZGVyLCBjb25zdCBUZXh0JiB0ZXh0KQogICAgIHZhbHVlLnJlcGxhY2VXaXRoTGl0ZXJhbCgn
XFwnLCAiXFxcXCIpOwogICAgIHZhbHVlLnJlcGxhY2VXaXRoTGl0ZXJhbCgnXG4nLCAiXFxuIik7
CiAgICAgCi0gICAgY29uc3Qgc2l6ZV90IG1heER1bXBMZW5ndGggPSAzMDsKLSAgICBpZiAodmFs
dWUubGVuZ3RoKCkgPiBtYXhEdW1wTGVuZ3RoKSB7Ci0gICAgICAgIHZhbHVlLnRydW5jYXRlKG1h
eER1bXBMZW5ndGggLSAxMCk7Ci0gICAgICAgIHZhbHVlLmFwcGVuZCgiLi4uIl9zKTsKLSAgICB9
Ci0KLSAgICBidWlsZGVyLmFwcGVuZCgiIFwiIiwgdmFsdWUsICdcIicpOworICAgIGNvbnN0ZXhw
ciBzaXplX3QgbWF4RHVtcExlbmd0aCA9IDMwOworICAgIGlmICh2YWx1ZS5sZW5ndGgoKSA+IG1h
eER1bXBMZW5ndGgpCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIgXCIiLCBTdHJpbmdWaWV3KHZh
bHVlKS5sZWZ0KG1heER1bXBMZW5ndGggLSAxMCksICIuLi5cIiIpOworICAgIGVsc2UKKyAgICAg
ICAgYnVpbGRlci5hcHBlbmQoIiBcIiIsIHZhbHVlLCAnXCInKTsKIH0KIAogU3RyaW5nIFRleHQ6
OmRlc2NyaXB0aW9uKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9WaWV3
cG9ydEFyZ3VtZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMu
Y3BwCmluZGV4IDUyNWRlZThkMTQwMDY4MmUyZTEwZmRhNTNhN2NlMjY4YTUxMzdmNGIuLmNiNDAx
MmJjYjQxNDA4YTQ2YzRhMWExM2Q5YjI4ODFmNzllODViNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1ZpZXdwb3J0QXJndW1lbnRzLmNwcApAQCAtNDMzLDcgKzQzMyw3IEBAIHN0YXRpYyBTdHJpbmcg
dmlld3BvcnRFcnJvck1lc3NhZ2UoVmlld3BvcnRFcnJvckNvZGUgZXJyb3JDb2RlLCBTdHJpbmdW
aWV3IHJlcGxhCiAgICAgICAgIG1lc3NhZ2UucmVwbGFjZSgiJXJlcGxhY2VtZW50MiIsIHJlcGxh
Y2VtZW50Mik7CiAKICAgICBpZiAoKGVycm9yQ29kZSA9PSBVbnJlY29nbml6ZWRWaWV3cG9ydEFy
Z3VtZW50VmFsdWVFcnJvciB8fCBlcnJvckNvZGUgPT0gVHJ1bmNhdGVkVmlld3BvcnRBcmd1bWVu
dFZhbHVlRXJyb3IpICYmIHJlcGxhY2VtZW50MS5jb250YWlucygnOycpKQotICAgICAgICBtZXNz
YWdlLmFwcGVuZCgiIE5vdGUgdGhhdCAnOycgaXMgbm90IGEgc2VwYXJhdG9yIGluIHZpZXdwb3J0
IHZhbHVlcy4gVGhlIGxpc3Qgc2hvdWxkIGJlIGNvbW1hLXNlcGFyYXRlZC4iX3MpOworICAgICAg
ICBtZXNzYWdlID0gbWFrZVN0cmluZyhtZXNzYWdlLCAiIE5vdGUgdGhhdCAnOycgaXMgbm90IGEg
c2VwYXJhdG9yIGluIHZpZXdwb3J0IHZhbHVlcy4gVGhlIGxpc3Qgc2hvdWxkIGJlIGNvbW1hLXNl
cGFyYXRlZC4iX3MpOwogCiAgICAgcmV0dXJuIG1lc3NhZ2U7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21h
cmt1cC5jcHAKaW5kZXggZjA4ZGQ5OTg5NDQ5MzRjOGZmMDYyOTZiOTg1YTlmYTBkYWQ3OTU2NS4u
YjRjOTY0ZDIxYTA0M2VjN2FiOTc5MDViYWNlNjc0MTkwYTk1NmY1ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvbWFya3VwLmNwcApAQCAtMTEwMyw3ICsxMTAzLDcgQEAgc3RhdGljIHZvaWQgZmlsbENvbnRh
aW5lckZyb21TdHJpbmcoQ29udGFpbmVyTm9kZSYgcGFyYWdyYXBoLCBjb25zdCBTdHJpbmcmIHN0
cmkKICAgICBBU1NFUlQoc3RyaW5nLmZpbmQoJ1xuJykgPT0gbm90Rm91bmQpOwogCiAgICAgVmVj
dG9yPFN0cmluZz4gdGFiTGlzdCA9IHN0cmluZy5zcGxpdEFsbG93aW5nRW1wdHlFbnRyaWVzKCdc
dCcpOwotICAgIFN0cmluZyB0YWJUZXh0ID0gZW1wdHlTdHJpbmcoKTsKKyAgICBTdHJpbmdCdWls
ZGVyIHRhYlRleHQ7CiAgICAgYm9vbCBmaXJzdCA9IHRydWU7CiAgICAgc2l6ZV90IG51bUVudHJp
ZXMgPSB0YWJMaXN0LnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bUVudHJp
ZXM7ICsraSkgewpAQCAtMTExMiw4ICsxMTEyLDggQEAgc3RhdGljIHZvaWQgZmlsbENvbnRhaW5l
ckZyb21TdHJpbmcoQ29udGFpbmVyTm9kZSYgcGFyYWdyYXBoLCBjb25zdCBTdHJpbmcmIHN0cmkK
ICAgICAgICAgLy8gYXBwZW5kIHRoZSBub24tdGFiIHRleHR1YWwgcGFydAogICAgICAgICBpZiAo
IXMuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBpZiAoIXRhYlRleHQuaXNFbXB0eSgpKSB7Ci0g
ICAgICAgICAgICAgICAgcGFyYWdyYXBoLmFwcGVuZENoaWxkKGNyZWF0ZVRhYlNwYW5FbGVtZW50
KGRvY3VtZW50LCB0YWJUZXh0KSk7Ci0gICAgICAgICAgICAgICAgdGFiVGV4dCA9IGVtcHR5U3Ry
aW5nKCk7CisgICAgICAgICAgICAgICAgcGFyYWdyYXBoLmFwcGVuZENoaWxkKGNyZWF0ZVRhYlNw
YW5FbGVtZW50KGRvY3VtZW50LCB0YWJUZXh0LnRvU3RyaW5nKCkpKTsKKyAgICAgICAgICAgICAg
ICB0YWJUZXh0LmNsZWFyKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBSZWY8Tm9kZT4g
dGV4dE5vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShzdHJpbmdXaXRoUmViYWxhbmNlZFdo
aXRlc3BhY2UocywgZmlyc3QsIGkgKyAxID09IG51bUVudHJpZXMpKTsKICAgICAgICAgICAgIHBh
cmFncmFwaC5hcHBlbmRDaGlsZCh0ZXh0Tm9kZSk7CkBAIC0xMTI0LDcgKzExMjQsNyBAQCBzdGF0
aWMgdm9pZCBmaWxsQ29udGFpbmVyRnJvbVN0cmluZyhDb250YWluZXJOb2RlJiBwYXJhZ3JhcGgs
IGNvbnN0IFN0cmluZyYgc3RyaQogICAgICAgICBpZiAoaSArIDEgIT0gbnVtRW50cmllcykKICAg
ICAgICAgICAgIHRhYlRleHQuYXBwZW5kKCdcdCcpOwogICAgICAgICBlbHNlIGlmICghdGFiVGV4
dC5pc0VtcHR5KCkpCi0gICAgICAgICAgICBwYXJhZ3JhcGguYXBwZW5kQ2hpbGQoY3JlYXRlVGFi
U3BhbkVsZW1lbnQoZG9jdW1lbnQsIHRhYlRleHQpKTsKKyAgICAgICAgICAgIHBhcmFncmFwaC5h
cHBlbmRDaGlsZChjcmVhdGVUYWJTcGFuRWxlbWVudChkb2N1bWVudCwgdGFiVGV4dC50b1N0cmlu
ZygpKSk7CiAKICAgICAgICAgZmlyc3QgPSBmYWxzZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCmluZGV4IDdjMjJkZDU3MWY2YmMzMmIyM2Zi
YmI1Y2IwMTlmZmI5Yzc3MzFjNmQuLjE1NjI4ZDk1OWZiYmEyZWM3Yjg1NGQzNmU2OTAxMWIxMmU2
M2YzZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3Bw
CkBAIC05Myw3ICs5Myw3IEBAIHByaXZhdGU6CiAgICAgaW50IG1fc2l6ZSB7IDI1NCB9OwogICAg
IFVDaGFyKiBtX2J1ZmZlcjsKICAgICBVQ2hhciogbV9kZXN0OwotICAgIFN0cmluZyBtX2NhcnJ5
T3ZlcjsKKyAgICBTdHJpbmdCdWlsZGVyIG1fY2FycnlPdmVyOwogICAgIAogICAgIExpc3RTdGF0
ZSBtX2xpc3RTdGF0ZTsKIH07CkBAIC0yNjIsMTQgKzI2MiwxNSBAQCB2b2lkIEZUUERpcmVjdG9y
eURvY3VtZW50UGFyc2VyOjpwYXJzZUFuZEFwcGVuZE9uZUxpbmUoY29uc3QgU3RyaW5nJiBpbnB1
dExpbmUpCiAgICAgaWYgKHR5cGVSZXN1bHQgPT0gRlRQTWlzY0VudHJ5IHx8IHR5cGVSZXN1bHQg
PT0gRlRQSnVua0VudHJ5KQogICAgICAgICByZXR1cm47CiAKLSAgICBTdHJpbmcgZmlsZW5hbWUo
cmVzdWx0LmZpbGVuYW1lLCByZXN1bHQuZmlsZW5hbWVMZW5ndGgpOworICAgIFN0cmluZyBmaWxl
bmFtZTsKICAgICBpZiAocmVzdWx0LnR5cGUgPT0gRlRQRGlyZWN0b3J5RW50cnkpIHsKLSAgICAg
ICAgZmlsZW5hbWUuYXBwZW5kKCcvJyk7CisgICAgICAgIGZpbGVuYW1lID0gbWFrZVN0cmluZyhT
dHJpbmdWaWV3IHsgcmVzdWx0LmZpbGVuYW1lLCByZXN1bHQuZmlsZW5hbWVMZW5ndGggfSwgJy8n
KTsKIAogICAgICAgICAvLyBXZSBoYXZlIG5vIGludGVyZXN0IGluIGxpbmtpbmcgdG8gImN1cnJl
bnQgZGlyZWN0b3J5IgogICAgICAgICBpZiAoZmlsZW5hbWUgPT0gIi4vIikKICAgICAgICAgICAg
IHJldHVybjsKLSAgICB9CisgICAgfSBlbHNlCisgICAgICAgIGZpbGVuYW1lID0gU3RyaW5nKHJl
c3VsdC5maWxlbmFtZSwgcmVzdWx0LmZpbGVuYW1lTGVuZ3RoKTsKIAogICAgIExPRyhGVFAsICJB
cHBlbmRpbmcgZW50cnkgLSAlcywgJXMiLCBmaWxlbmFtZS5hc2NpaSgpLmRhdGEoKSwgcmVzdWx0
LmZpbGVTaXplLmFzY2lpKCkuZGF0YSgpKTsKIApAQCAtMzg4LDEwICszODksMTAgQEAgdm9pZCBG
VFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6YXBwZW5kKFJlZlB0cjxTdHJpbmdJbXBsPiYmIGlu
cHV0U291cmNlKQogCiAgICAgd2hpbGUgKGN1cnNvciA8IG1fZGVzdCkgewogICAgICAgICBpZiAo
KmN1cnNvciA9PSAnXG4nKSB7Ci0gICAgICAgICAgICBtX2NhcnJ5T3Zlci5hcHBlbmQoU3RyaW5n
KHN0YXJ0LCBjdXJzb3IgLSBzdGFydCkpOwotICAgICAgICAgICAgTE9HKEZUUCwgIiVzIiwgbV9j
YXJyeU92ZXIuYXNjaWkoKS5kYXRhKCkpOwotICAgICAgICAgICAgcGFyc2VBbmRBcHBlbmRPbmVM
aW5lKG1fY2FycnlPdmVyKTsKLSAgICAgICAgICAgIG1fY2FycnlPdmVyID0gU3RyaW5nKCk7Cisg
ICAgICAgICAgICBtX2NhcnJ5T3Zlci5hcHBlbmQoU3RyaW5nVmlldyhzdGFydCwgY3Vyc29yIC0g
c3RhcnQpKTsKKyAgICAgICAgICAgIExPRyhGVFAsICIlcyIsIG1fY2FycnlPdmVyLnRvU3RyaW5n
KCkuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICAgICAgcGFyc2VBbmRBcHBlbmRPbmVMaW5lKG1f
Y2FycnlPdmVyLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgbV9jYXJyeU92ZXIuY2xlYXIoKTsK
IAogICAgICAgICAgICAgc3RhcnQgPSArK2N1cnNvcjsKICAgICAgICAgfSBlbHNlIApAQCAtNDAw
LDE1ICs0MDEsMTUgQEAgdm9pZCBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6YXBwZW5kKFJl
ZlB0cjxTdHJpbmdJbXBsPiYmIGlucHV0U291cmNlKQogCiAgICAgLy8gQ29weSB0aGUgcGFydGlh
bCBsaW5lIHdlIGhhdmUgbGVmdCB0byB0aGUgY2FycnlvdmVyIGJ1ZmZlcgogICAgIGlmIChjdXJz
b3IgLSBzdGFydCA+IDEpCi0gICAgICAgIG1fY2FycnlPdmVyLmFwcGVuZChTdHJpbmcoc3RhcnQs
IGN1cnNvciAtIHN0YXJ0IC0gMSkpOworICAgICAgICBtX2NhcnJ5T3Zlci5hcHBlbmQoU3RyaW5n
VmlldyhzdGFydCwgY3Vyc29yIC0gc3RhcnQgLSAxKSk7CiB9CiAKIHZvaWQgRlRQRGlyZWN0b3J5
RG9jdW1lbnRQYXJzZXI6OmZpbmlzaCgpCiB7CiAgICAgLy8gUG9zc2libGUgdGhlIGxhc3QgbGlu
ZSBpbiB0aGUgbGlzdGluZyBoYWQgbm8gbmV3bGluZSwgc28gdHJ5IHRvIHBhcnNlIGl0IG5vdwog
ICAgIGlmICghbV9jYXJyeU92ZXIuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHBhcnNlQW5kQXBwZW5k
T25lTGluZShtX2NhcnJ5T3Zlcik7Ci0gICAgICAgIG1fY2FycnlPdmVyID0gU3RyaW5nKCk7Cisg
ICAgICAgIHBhcnNlQW5kQXBwZW5kT25lTGluZShtX2NhcnJ5T3Zlci50b1N0cmluZygpKTsKKyAg
ICAgICAgbV9jYXJyeU92ZXIuY2xlYXIoKTsKICAgICB9CiAKICAgICBtX3RhYmxlRWxlbWVudCA9
IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IDc3M2Y2NzY0OGEzZDkwOGZiYTAzNzNhNzk5
ZjQyOTI4YTc3OTJkOGYuLjFjNGUzNTI0YTFhNDIzODc0NDFhMzQyZjFjYmFhMTFjMjgzMTNlOGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuY3BwCkBAIC0zMDc0LDcgKzMwNzQsNyBAQCBSZWZQdHI8V2ViR0xBY3Rp
dmVJbmZvPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRBY3RpdmVVbmlmb3JtKFdlYkdM
UHJvZ3JhbQogICAgIC8vIEZJWE1FOiBEbyB3ZSBzdGlsbCBuZWVkIHRoaXMgZm9yIHRoZSBBTkdM
RSBiYWNrZW5kPwogICAgIGlmICghaXNHTEVTMkNvbXBsaWFudCgpKQogICAgICAgICBpZiAoaW5m
by5zaXplID4gMSAmJiAhaW5mby5uYW1lLmVuZHNXaXRoKCJbMF0iKSkKLSAgICAgICAgICAgIGlu
Zm8ubmFtZS5hcHBlbmQoIlswXSJfcyk7CisgICAgICAgICAgICBpbmZvLm5hbWUgPSBtYWtlU3Ry
aW5nKGluZm8ubmFtZSwgIlswXSJfcyk7CiAKICAgICBMT0coV2ViR0wsICJSZXR1cm5pbmcgYWN0
aXZlIHVuaWZvcm0gJWQ6ICVzIiwgaW5kZXgsIGluZm8ubmFtZS51dGY4KCkuZGF0YSgpKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwCmluZGV4IDlmNWRhNTFi
ZTc4ZmRhYTYxYjdlNTA5NTgzNDVkZjQzYjVmMGJkMzYuLmE2MDNjMDgxZTkwYjQ2ZDUzNGU5MDNl
ZWVjY2EwNjRmNzYzZThjYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
V2ViVlRUUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBh
cnNlci5jcHAKQEAgLTM2Miw3ICszNjIsOCBAQCBib29sIFdlYlZUVFBhcnNlcjo6Y2hlY2tBbmRT
dG9yZVN0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBsaW5lKQogICAgIGlmICghbGluZS5pc0VtcHR5
KCkgJiYgIWxpbmUuY29udGFpbnMoIi0tPiIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
Ci0gICAgYXV0byBzdHlsZVNoZWV0VGV4dCA9IFdURk1vdmUobV9jdXJyZW50U291cmNlU3R5bGVT
aGVldCk7CisgICAgYXV0byBzdHlsZVNoZWV0VGV4dCA9IG1fY3VycmVudFNvdXJjZVN0eWxlU2hl
ZXQudG9TdHJpbmcoKTsKKyAgICBtX2N1cnJlbnRTb3VyY2VTdHlsZVNoZWV0LmNsZWFyKCk7CiAK
ICAgICAvLyBXZWJWVFRNb2RlIGRpc2FsbG93cyBub24tZGF0YSBVUkxzLgogICAgIGF1dG8gY29u
dGVudHMgPSBTdHlsZVNoZWV0Q29udGVudHM6OmNyZWF0ZShDU1NQYXJzZXJDb250ZXh0KFdlYlZU
VE1vZGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFy
c2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5oCmluZGV4IDEy
ODU1MjA5MTc0Mzg1ZDA1MjA4ZGM3YTQwNGRiYWEzMWZmMDY3NDguLjJmYjMwOTA1NDI0ZmNlOWZm
MjM5MTNkYjNlOTc0YzEyM2E0NDY2M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svV2ViVlRUUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJW
VFRQYXJzZXIuaApAQCAtMTkyLDcgKzE5Miw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fcHJl
dmlvdXNMaW5lOwogICAgIFN0cmluZyBtX2N1cnJlbnRTZXR0aW5nczsKICAgICBSZWZQdHI8VlRU
UmVnaW9uPiBtX2N1cnJlbnRSZWdpb247Ci0gICAgU3RyaW5nIG1fY3VycmVudFNvdXJjZVN0eWxl
U2hlZXQ7CisgICAgU3RyaW5nQnVpbGRlciBtX2N1cnJlbnRTb3VyY2VTdHlsZVNoZWV0OwogICAg
IAogICAgIFdlYlZUVFBhcnNlckNsaWVudCYgbV9jbGllbnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcAppbmRleCA3NzEwYTFiNWQ4MmI0ZWNiYzZi
OGZlNjI4NGNkNzZlNDQ5ODczZmM5Li5iZmU4YjY3OGEzMDQ1ZWM2MTMxOTgxMGExYzYxYzVkZWZh
YzJiZGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3Zl
cmxheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXku
Y3BwCkBAIC05NywxMCArOTcsOCBAQCBlbnVtIGNsYXNzIEZsaXAgOiBib29sIHsgTm8sIFllcyB9
OwogCiBzdGF0aWMgdm9pZCB0cnVuY2F0ZVdpdGhFbGxpcHNpcyhTdHJpbmcmIHN0cmluZywgc2l6
ZV90IGxlbmd0aCkKIHsKLSAgICBpZiAoc3RyaW5nLmxlbmd0aCgpID4gbGVuZ3RoKSB7Ci0gICAg
ICAgIHN0cmluZy50cnVuY2F0ZShsZW5ndGgpOwotICAgICAgICBzdHJpbmcuYXBwZW5kKGVsbGlw
c2lzKTsKLSAgICB9CisgICAgaWYgKHN0cmluZy5sZW5ndGgoKSA+IGxlbmd0aCkKKyAgICAgICAg
c3RyaW5nID0gbWFrZVN0cmluZyhTdHJpbmdWaWV3KHN0cmluZykubGVmdChsZW5ndGgpLCBlbGxp
cHNpcyk7CiB9CiAKIHN0YXRpYyBGbG9hdFBvaW50IGxvY2FsUG9pbnRUb1Jvb3RQb2ludChjb25z
dCBGcmFtZVZpZXcqIHZpZXcsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXlMYWJlbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheUxhYmVsLmNwcAppbmRleCBmNjEx
NDcxYTg1ZTNmZTY5M2RkNmYzYWNhNjNlMjAyNDgyNjU3ODU2Li4zOGJmYWIyOTNjZWNkNTQxZDg4
Y2UzZjllMDdmYWE4MGVhZmQzZWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yT3ZlcmxheUxhYmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yT3ZlcmxheUxhYmVsLmNwcApAQCAtMjM0LDggKzIzNCw5IEBAIFBhdGggSW5z
cGVjdG9yT3ZlcmxheUxhYmVsOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgZmxvYXQg
bWF4aW11bUxpbmVXaWR0CiAgICAgICAgICAgICBhdXRvIHRleHRSdW4gPSBUZXh0UnVuKHRleHQp
OwogICAgICAgICAgICAgZmxvYXQgdGV4dFdpZHRoID0gZm9udC53aWR0aCh0ZXh0UnVuKTsKIAor
ICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgbG9va3MgdmVyeSBpbmVmZmljaWVudC4KICAgICAg
ICAgICAgIGlmIChtYXhpbXVtTGluZVdpZHRoICYmIGN1cnJlbnRMaW5lV2lkdGggKyB0ZXh0V2lk
dGggKyAobGFiZWxQYWRkaW5nICogMikgPiBtYXhpbXVtTGluZVdpZHRoKSB7Ci0gICAgICAgICAg
ICAgICAgdGV4dC5hcHBlbmQoZWxsaXBzaXMpOworICAgICAgICAgICAgICAgIHRleHQgPSBtYWtl
U3RyaW5nKHRleHQsIGVsbGlwc2lzKTsKICAgICAgICAgICAgICAgICB3aGlsZSAoY3VycmVudExp
bmVXaWR0aCArIHRleHRXaWR0aCArIChsYWJlbFBhZGRpbmcgKiAyKSA+IG1heGltdW1MaW5lV2lk
dGggJiYgdGV4dC5sZW5ndGgoKSA+IDEpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gUmVtb3Zl
IHRoZSBzZWNvbmQgZnJvbSBsYXN0IGNoYXJhY3RlciAodGhlIGNoYXJhY3RlciBiZWZvcmUgdGhl
IGVsbGlwc2lzKSBhbmQgcmVtZWFzdXJlLgogICAgICAgICAgICAgICAgICAgICB0ZXh0LnJlbW92
ZSh0ZXh0Lmxlbmd0aCgpIC0gMik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IDU3NjYyNDRlODVkNjI3ZWVhN2Fi
MWNjZDVkNmE2ZDM2ODhmMmJlN2UuLjlmNWVkNGJjMmY4Mzc1YThkZTYyODhlODE3MjZiNDM2YmYy
ZmRlNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yRE9NQWdlbnQuY3BwCkBAIC0xNzcyLDEwICsxNzcyLDggQEAgUmVmPFByb3RvY29sOjpE
T006Ok5vZGU+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZvck5vZGUoTm9kZSogbm9k
ZSwgaW50IGQKICAgICBjYXNlIE5vZGU6OkNPTU1FTlRfTk9ERToKICAgICBjYXNlIE5vZGU6OkNE
QVRBX1NFQ1RJT05fTk9ERToKICAgICAgICAgbm9kZVZhbHVlID0gbm9kZS0+bm9kZVZhbHVlKCk7
Ci0gICAgICAgIGlmIChub2RlVmFsdWUubGVuZ3RoKCkgPiBtYXhUZXh0U2l6ZSkgewotICAgICAg
ICAgICAgbm9kZVZhbHVlID0gbm9kZVZhbHVlLmxlZnQobWF4VGV4dFNpemUpOwotICAgICAgICAg
ICAgbm9kZVZhbHVlLmFwcGVuZChlbGxpcHNpc1VDaGFyKTsKLSAgICAgICAgfQorICAgICAgICBp
ZiAobm9kZVZhbHVlLmxlbmd0aCgpID4gbWF4VGV4dFNpemUpCisgICAgICAgICAgICBub2RlVmFs
dWUgPSBtYWtlU3RyaW5nKFN0cmluZ1ZpZXcobm9kZVZhbHVlKS5sZWZ0KG1heFRleHRTaXplKSwg
ZWxsaXBzaXNVQ2hhcik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTm9kZTo6QVRUUklCVVRF
X05PREU6CiAgICAgICAgIGxvY2FsTmFtZSA9IG5vZGUtPmxvY2FsTmFtZSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVUcmVlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlVHJlZS5jcHAKaW5k
ZXggZGY2YmIwYjVmN2U5M2IxNjk5ZWE4OWI4MWI0Y2YzY2QyZmVlYTc5OS4uOGEyZWVmYmZiZTE2
MWFlN2RlYmZhZGJiMTQyZWJiNWExM2Y0ZTVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVRyZWUuY3BwCkBAIC0zODEsMTAgKzM4MSwx
MSBAQCBTdHJpbmcgU2Nyb2xsaW5nU3RhdGVUcmVlOjpzY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHQo
T3B0aW9uU2V0PFNjcm9sbGluZ1N0YXRlVHJlZQogICAgIGlmICghcm9vdFN0YXRlTm9kZSgpKQog
ICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAotICAgIGF1dG8gc3RhdGVUcmVlQXNTdHJp
bmcgPSByb290U3RhdGVOb2RlKCktPnNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dChiZWhhdmlvcik7
CisgICAgU3RyaW5nQnVpbGRlciBzdGF0ZVRyZWVBc1N0cmluZzsKKyAgICBzdGF0ZVRyZWVBc1N0
cmluZy5hcHBlbmQocm9vdFN0YXRlTm9kZSgpLT5zY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHQoYmVo
YXZpb3IpKTsKICAgICBpZiAoIW1fdW5wYXJlbnRlZE5vZGVzLmlzRW1wdHkoKSkKLSAgICAgICAg
c3RhdGVUcmVlQXNTdHJpbmcuYXBwZW5kKG1ha2VTdHJpbmcoIlxudW5wYXJlbnRlZCBub2RlIGNv
dW50OiAiLCBtX3VucGFyZW50ZWROb2Rlcy5zaXplKCkpKTsKLSAgICByZXR1cm4gc3RhdGVUcmVl
QXNTdHJpbmc7CisgICAgICAgIHN0YXRlVHJlZUFzU3RyaW5nLmFwcGVuZCgiXG51bnBhcmVudGVk
IG5vZGUgY291bnQ6ICIsIG1fdW5wYXJlbnRlZE5vZGVzLnNpemUoKSk7CisgICAgcmV0dXJuIHN0
YXRlVHJlZUFzU3RyaW5nLnRvU3RyaW5nKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0hFVkNVdGlsaXRp
ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSEVWQ1V0aWxpdGllcy5j
cHAKaW5kZXggYzIwYjA2NTAxOGFlN2JlZGUwNDE3ZmUzM2UxZWU4NDBjOTQ0ZTRjYS4uZmYyNzhl
OTU3MzFmMGE3ZDBhMWRlMzNmN2RmZjg1NWVlOWFlNDY1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSEVWQ1V0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSEVWQ1V0aWxpdGllcy5jcHAKQEAgLTIwMiwxMyArMjAy
LDYgQEAgc3RkOjpvcHRpb25hbDxIRVZDUGFyYW1ldGVycz4gcGFyc2VIRVZDQ29kZWNQYXJhbWV0
ZXJzKFN0cmluZ1ZpZXcgY29kZWNTdHJpbmcpCiAKIFN0cmluZyBjcmVhdGVIRVZDQ29kZWNQYXJh
bWV0ZXJzU3RyaW5nKGNvbnN0IEhFVkNQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewotICAgIC8v
IFRoZSBmb3JtYXQgb2YgdGhlICdoZXZjJyBjb2RlYyBzdHJpbmcgaXMgc3BlY2lmaWVkIGluIElT
Ty9JRUMgMTQ0OTYtMTU6MjAxNCwgQW5uZXggRS4zLgotICAgIGNoYXIgcHJvZmlsZVNwYWNlQ2hh
cmFjdGVyID0gJ0EnICsgcGFyYW1ldGVycy5nZW5lcmFsUHJvZmlsZVNwYWNlIC0gMTsKLQotICAg
IFN0cmluZyBwcm9maWxlU3BhY2VTdHJpbmc7Ci0gICAgaWYgKHBhcmFtZXRlcnMuZ2VuZXJhbFBy
b2ZpbGVTcGFjZSkKLSAgICAgICAgcHJvZmlsZVNwYWNlU3RyaW5nLmFwcGVuZChwcm9maWxlU3Bh
Y2VDaGFyYWN0ZXIpOwotCiAgICAgLy8gRm9yIHRoZSBzZWNvbmQgcGFyYW1ldGVyLCBmcm9tIElT
Ty9JRUMgMTQ0OTYtMTU6MjAxNCwgQW5uZXggRS4zLgogICAgIC8vICogdGhlIDMyIGJpdHMgb2Yg
dGhlIGdlbmVyYWxfcHJvZmlsZV9jb21wYXRpYmlsaXR5X2ZsYWdzLCBidXQgaW4gcmV2ZXJzZSBi
aXQgb3JkZXIsIGkuZS4gd2l0aAogICAgIC8vIGdlbmVyYWxfcHJvZmlsZV9jb21wYXRpYmlsaXR5
X2ZsYWdbIDMxIF0gYXMgdGhlIG1vc3Qgc2lnbmlmaWNhbnQgYml0LCBmb2xsb3dlZCBieSwgZ2Vu
ZXJhbF9wcm9maWxlX2NvbXBhdGliaWxpdHlfZmxhZ1sgMzAgXSwKQEAgLTIyNiwxNiArMjE5LDE2
IEBAIFN0cmluZyBjcmVhdGVIRVZDQ29kZWNQYXJhbWV0ZXJzU3RyaW5nKGNvbnN0IEhFVkNQYXJh
bWV0ZXJzJiBwYXJhbWV0ZXJzKQogICAgICAgICBjb21wYXRpYmlsaXR5RmxhZ3MuYXBwZW5kKGhl
eChwYXJhbWV0ZXJzLmdlbmVyYWxDb25zdHJhaW50SW5kaWNhdG9yRmxhZ3NbaV0sIDIpKTsKICAg
ICB9CiAKLSAgICByZXR1cm4gbWFrZVN0cmluZyhwYXJhbWV0ZXJzLmNvZGVjID09IEhFVkNQYXJh
bWV0ZXJzOjpDb2RlYzo6SGV2MSA/ICJoZXYxIiA6ICJodmMxIgotICAgICAgICAsICcuJwotICAg
ICAgICAsIHByb2ZpbGVTcGFjZVN0cmluZwotICAgICAgICAsIHBhcmFtZXRlcnMuZ2VuZXJhbFBy
b2ZpbGVJREMKLSAgICAgICAgLCAnLicKLSAgICAgICAgLCBjb21wYXRGbGFnUGFyYW1ldGVyCi0g
ICAgICAgICwgJy4nCi0gICAgICAgICwgcGFyYW1ldGVycy5nZW5lcmFsVGllckZsYWcgPyAnSCcg
OiAnTCcKLSAgICAgICAgLCBwYXJhbWV0ZXJzLmdlbmVyYWxMZXZlbElEQwotICAgICAgICAsIGNv
bXBhdGliaWxpdHlGbGFncy50b1N0cmluZygpKTsKKyAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdEJ1
aWxkZXI7CisgICAgcmVzdWx0QnVpbGRlci5hcHBlbmQocGFyYW1ldGVycy5jb2RlYyA9PSBIRVZD
UGFyYW1ldGVyczo6Q29kZWM6OkhldjEgPyAiaGV2MSIgOiAiaHZjMSIsICcuJyk7CisgICAgaWYg
KHBhcmFtZXRlcnMuZ2VuZXJhbFByb2ZpbGVTcGFjZSkgeworICAgICAgICAvLyBUaGUgZm9ybWF0
IG9mIHRoZSAnaGV2YycgY29kZWMgc3RyaW5nIGlzIHNwZWNpZmllZCBpbiBJU08vSUVDIDE0NDk2
LTE1OjIwMTQsIEFubmV4IEUuMy4KKyAgICAgICAgY2hhciBwcm9maWxlU3BhY2VDaGFyYWN0ZXIg
PSAnQScgKyBwYXJhbWV0ZXJzLmdlbmVyYWxQcm9maWxlU3BhY2UgLSAxOworICAgICAgICByZXN1
bHRCdWlsZGVyLmFwcGVuZChwcm9maWxlU3BhY2VDaGFyYWN0ZXIpOworICAgIH0KKyAgICByZXN1
bHRCdWlsZGVyLmFwcGVuZChwYXJhbWV0ZXJzLmdlbmVyYWxQcm9maWxlSURDLCAnLicsIGNvbXBh
dEZsYWdQYXJhbWV0ZXIsICcuJywgcGFyYW1ldGVycy5nZW5lcmFsVGllckZsYWcgPyAnSCcgOiAn
TCcsIHBhcmFtZXRlcnMuZ2VuZXJhbExldmVsSURDKTsKKyAgICByZXN1bHRCdWlsZGVyLmFwcGVu
ZChjb21wYXRpYmlsaXR5RmxhZ3MpOworICAgIHJldHVybiByZXN1bHRCdWlsZGVyLnRvU3RyaW5n
KCk7CiB9CiAKIHN0ZDo6b3B0aW9uYWw8SEVWQ1BhcmFtZXRlcnM+IHBhcnNlSEVWQ0RlY29kZXJD
b25maWd1cmF0aW9uUmVjb3JkKEZvdXJDQyBjb2RlY0NvZGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQ
UGFyc2Vycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJz
LmNwcAppbmRleCA3M2U4MTJjMGRkZGQ0NTcwZDZmNWE1YmY1YzkyMWNhMjdkYzllMGFlLi4wNDg4
MWRhMThhMGFjMzFmN2Q4NTkzNjFiN2VjZTFlNjM4MzllY2E3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcApAQCAtMzExLDEwICszMTEsOSBA
QCBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heElucHV0U2FtcGxlU2l6ZSA9IDEyODsKIHRlbXBsYXRl
PHR5cGVuYW1lIENoYXJUeXBlPgogc3RhdGljIFN0cmluZyB0cmltSW5wdXRTYW1wbGUoQ2hhclR5
cGUqIHAsIHNpemVfdCBsZW5ndGgpCiB7Ci0gICAgU3RyaW5nIHMgPSBTdHJpbmcocCwgc3RkOjpt
aW48c2l6ZV90PihsZW5ndGgsIG1heElucHV0U2FtcGxlU2l6ZSkpOwotICAgIGlmIChsZW5ndGgg
PiBtYXhJbnB1dFNhbXBsZVNpemUpCi0gICAgICAgIHMuYXBwZW5kKGhvcml6b250YWxFbGxpcHNp
cyk7Ci0gICAgcmV0dXJuIHM7CisgICAgaWYgKGxlbmd0aCA8PSBtYXhJbnB1dFNhbXBsZVNpemUp
CisgICAgICAgIHJldHVybiBTdHJpbmcocCwgbGVuZ3RoKTsKKyAgICByZXR1cm4gbWFrZVN0cmlu
ZyhTdHJpbmdWaWV3KHAsIGxlbmd0aCkubGVmdChtYXhJbnB1dFNhbXBsZVNpemUpLCBob3Jpem9u
dGFsRWxsaXBzaXMpOwogfQogCiBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBwYXJzZUhUVFBEYXRl
KGNvbnN0IFN0cmluZyYgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAppbmRleCBjMGJjMzU2MjcxODZiNGQ2
NjM4MTQ1ODY3OTI3MzRmNTUxNTYyZGI1Li42MDA0Y2MzZTM2MTEyNzY1ZjczM2JmMDU0YTEzNjUw
ODc3ZTNmOGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybENhY2hlRW50cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAKQEAgLTQ5LDkgKzQ5LDcgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogQ3VybENhY2hlRW50cnk6OkN1cmxDYWNoZUVudHJ5KGNvbnN0IFN0cmluZyYg
dXJsLCBSZXNvdXJjZUhhbmRsZSogam9iLCBjb25zdCBTdHJpbmcmIGNhY2hlRGlyKQotICAgIDog
bV9oZWFkZXJGaWxlbmFtZShjYWNoZURpcikKLSAgICAsIG1fY29udGVudEZpbGVuYW1lKGNhY2hl
RGlyKQotICAgICwgbV9jb250ZW50RmlsZShGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxl
SGFuZGxlKQorICAgIDogbV9jb250ZW50RmlsZShGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1G
aWxlSGFuZGxlKQogICAgICwgbV9lbnRyeVNpemUoMCkKICAgICAsIG1fZXhwaXJlRGF0ZShXYWxs
VGltZTo6ZnJvbVJhd1NlY29uZHMoLTEpKQogICAgICwgbV9oZWFkZXJQYXJzZWQoZmFsc2UpCkBA
IC02MCwxMSArNTgsOCBAQCBDdXJsQ2FjaGVFbnRyeTo6Q3VybENhY2hlRW50cnkoY29uc3QgU3Ry
aW5nJiB1cmwsIFJlc291cmNlSGFuZGxlKiBqb2IsIGNvbnN0IFN0cgogewogICAgIGdlbmVyYXRl
QmFzZUZpbGVuYW1lKHVybC5sYXRpbjEoKSk7CiAKLSAgICBtX2hlYWRlckZpbGVuYW1lLmFwcGVu
ZChtX2Jhc2VuYW1lKTsKLSAgICBtX2hlYWRlckZpbGVuYW1lLmFwcGVuZCgiLmhlYWRlciJfcyk7
Ci0KLSAgICBtX2NvbnRlbnRGaWxlbmFtZS5hcHBlbmQobV9iYXNlbmFtZSk7Ci0gICAgbV9jb250
ZW50RmlsZW5hbWUuYXBwZW5kKCIuY29udGVudCJfcyk7CisgICAgbV9oZWFkZXJGaWxlbmFtZSA9
IG1ha2VTdHJpbmcoY2FjaGVEaXIsIG1fYmFzZW5hbWUsICIuaGVhZGVyIl9zKTsKKyAgICBtX2Nv
bnRlbnRGaWxlbmFtZSA9IG1ha2VTdHJpbmcoY2FjaGVEaXIsIG1fYmFzZW5hbWUsICIuY29udGVu
dCJfcyk7CiB9CiAKIEN1cmxDYWNoZUVudHJ5Ojp+Q3VybENhY2hlRW50cnkoKQpAQCAtMTM4LDEy
ICsxMzMsOCBAQCBib29sIEN1cmxDYWNoZUVudHJ5OjpzYXZlUmVzcG9uc2VIZWFkZXJzKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogICAgIEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0
ZXJhdG9yIGl0ID0gcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkcygpLmJlZ2luKCk7CiAgICAgSFRU
UEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxk
cygpLmVuZCgpOwogICAgIHdoaWxlIChpdCAhPSBlbmQpIHsKLSAgICAgICAgU3RyaW5nIGhlYWRl
ckZpZWxkID0gaXQtPmtleTsKLSAgICAgICAgaGVhZGVyRmllbGQuYXBwZW5kKCI6ICJfcyk7Ci0g
ICAgICAgIGhlYWRlckZpZWxkLmFwcGVuZChpdC0+dmFsdWUpOwotICAgICAgICBoZWFkZXJGaWVs
ZC5hcHBlbmQoIlxuIl9zKTsKLSAgICAgICAgQ1N0cmluZyBoZWFkZXJGaWVsZExhdGluMSA9IGhl
YWRlckZpZWxkLmxhdGluMSgpOwotICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShoZWFk
ZXJGaWxlLCBoZWFkZXJGaWVsZExhdGluMS5kYXRhKCksIGhlYWRlckZpZWxkTGF0aW4xLmxlbmd0
aCgpKTsKKyAgICAgICAgYXV0byBoZWFkZXJGaWVsZCA9IG1ha2VTdHJpbmcoaXQtPmtleSwgIjog
IiwgaXQtPnZhbHVlLCAnXG4nKS5sYXRpbjEoKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVU
b0ZpbGUoaGVhZGVyRmlsZSwgaGVhZGVyRmllbGQuZGF0YSgpLCBoZWFkZXJGaWVsZC5sZW5ndGgo
KSk7CiAgICAgICAgIG1fY2FjaGVkUmVzcG9uc2Uuc2V0SFRUUEhlYWRlckZpZWxkKGl0LT5rZXks
IGl0LT52YWx1ZSk7CiAgICAgICAgICsraXQ7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCmluZGV4
IDcwMmM1YjMxYTAxZWUyNDZjN2M3NWQ3YjU1NTg0YWVhZDZmYjA1MzkuLmZkM2RmOTRkZGJhMjcx
MjI3Mjg4ZDE1MmJlYWQ5YjY0YmU5ZWYxYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAKQEAgLTg1LDcg
Kzg1LDcgQEAgdm9pZCBDdXJsQ2FjaGVNYW5hZ2VyOjpzZXRDYWNoZURpcmVjdG9yeShjb25zdCBT
dHJpbmcmIGRpcmVjdG9yeSkKICAgICAgICAgfQogICAgIH0KIAotICAgIG1fY2FjaGVEaXIuYXBw
ZW5kKCIvIl9zKTsKKyAgICBtX2NhY2hlRGlyID0gbWFrZVN0cmluZyhtX2NhY2hlRGlyLCAnLycp
OwogCiAgICAgbV9kaXNhYmxlZCA9IGZhbHNlOwogICAgIGxvYWRJbmRleCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5jcHAKaW5k
ZXggN2RlODZjMDhlMzQ5NmRmMzBmZTE0MDZiOGNiMzJkZmZlMjBjZWNmMC4uOTgxODQ5ZGYwM2Mx
MDA5NWExODU2ZmJjOTA5OGVjZDE5MmRjMzM1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwCkBAIC0zOSw2ICszOSw3IEBA
CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CiAKICNpZiBPUyhXSU5ET1dTKQogI2luY2x1ZGUg
IldlYkNvcmVCdW5kbGVXaW4uaCIKQEAgLTg5MCwxMSArODkxLDggQEAgdm9pZCBDdXJsSGFuZGxl
OjphZGRFeHRyYU5ldHdvcmtMb2FkTWV0cmljcyhOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtM
b2FkTWV0cmkKICAgICBhZGRpdGlvbmFsTWV0cmljcy0+cmVxdWVzdEJvZHlCeXRlc1NlbnQgPSBy
ZXF1ZXN0Qm9keVNpemU7CiAgICAgYWRkaXRpb25hbE1ldHJpY3MtPnJlc3BvbnNlSGVhZGVyQnl0
ZXNSZWNlaXZlZCA9IHJlc3BvbnNlSGVhZGVyU2l6ZTsKIAotICAgIGlmIChpcCkgewotICAgICAg
ICBhZGRpdGlvbmFsTWV0cmljcy0+cmVtb3RlQWRkcmVzcyA9IFN0cmluZzo6ZnJvbUxhdGluMShp
cCk7Ci0gICAgICAgIGlmIChwb3J0KQotICAgICAgICAgICAgYWRkaXRpb25hbE1ldHJpY3MtPnJl
bW90ZUFkZHJlc3MuYXBwZW5kKCI6IiArIFN0cmluZzo6bnVtYmVyKHBvcnQpKTsKLSAgICB9Cisg
ICAgaWYgKGlwKQorICAgICAgICBhZGRpdGlvbmFsTWV0cmljcy0+cmVtb3RlQWRkcmVzcyA9IHBv
cnQgPyBtYWtlU3RyaW5nKGlwLCAnOicsIHBvcnQpIDogU3RyaW5nOjpmcm9tTGF0aW4xKGlwKTsK
IAogICAgIGlmIChtX3Rsc0Nvbm5lY3Rpb25JbmZvKSB7CiAgICAgICAgIGFkZGl0aW9uYWxNZXRy
aWNzLT50bHNQcm90b2NvbCA9IG1fdGxzQ29ubmVjdGlvbkluZm8tPnByb3RvY29sOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCBkOTc3
ODk1YWZkYzE3OGU2M2YzYTRjZGE5MTIwZjY2M2FiNWUxOTg1Li43NzA1YWY1YzM3NWUxYzQ4YTYz
ZDQ5ZDUzYjZmMzVkZTRmZjJmZDIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtNTE1LDEwICs1MTUsOCBAQCB2b2lkIFJlbmRlckxh
eWVyQmFja2luZzo6Y3JlYXRlUHJpbWFyeUdyYXBoaWNzTGF5ZXIoKQogewogICAgIFN0cmluZyBs
YXllck5hbWUgPSBtX293bmluZ0xheWVyLm5hbWUoKTsKICAgICBjb25zdCB1bnNpZ25lZCBtYXhM
YXllck5hbWVMZW5ndGggPSAxMDA7Ci0gICAgaWYgKGxheWVyTmFtZS5sZW5ndGgoKSA+IG1heExh
eWVyTmFtZUxlbmd0aCkgewotICAgICAgICBsYXllck5hbWUudHJ1bmNhdGUobWF4TGF5ZXJOYW1l
TGVuZ3RoKTsKLSAgICAgICAgbGF5ZXJOYW1lLmFwcGVuZCgiLi4uIl9zKTsKLSAgICB9CisgICAg
aWYgKGxheWVyTmFtZS5sZW5ndGgoKSA+IG1heExheWVyTmFtZUxlbmd0aCkKKyAgICAgICAgbGF5
ZXJOYW1lID0gbWFrZVN0cmluZyhTdHJpbmdWaWV3KGxheWVyTmFtZSkubGVmdChtYXhMYXllck5h
bWVMZW5ndGgpLCAiLi4uIl9zKTsKICAgICBtX2dyYXBoaWNzTGF5ZXIgPSBjcmVhdGVHcmFwaGlj
c0xheWVyKGxheWVyTmFtZSwgbV9pc0ZyYW1lTGF5ZXJXaXRoVGlsZWRCYWNraW5nID8gR3JhcGhp
Y3NMYXllcjo6VHlwZTo6UGFnZVRpbGVkQmFja2luZyA6IEdyYXBoaWNzTGF5ZXI6OlR5cGU6Ok5v
cm1hbCk7CiAKICAgICBpZiAobV9pc0ZyYW1lTGF5ZXJXaXRoVGlsZWRCYWNraW5nKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQXV4aWxpYXJ5UHJvY2Vzc01hYy5tbSBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9BdXhpbGlhcnlQcm9jZXNzTWFjLm1tCmluZGV4IDhm
MjU5ZGE2ZDUxMDI2Y2NkNjE4OWJiZWNhNDhkNTNkYjk4MWRiNWIuLjc2ZDIxODM1ODdiMDYxYTE4
YmY1OWZmOTE0YTczNTRlOGY2MzU5NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L21hYy9BdXhpbGlhcnlQcm9jZXNzTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21h
Yy9BdXhpbGlhcnlQcm9jZXNzTWFjLm1tCkBAIC03MDMsMTAgKzcwMyw5IEBAIHN0YXRpYyB2b2lk
IHBvcHVsYXRlU2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1ldGVycyhTYW5kYm94SW5pdGlhbGl6
YXRpb25QYXJhbWV0CiAgICAgfQogCiAgICAgc2FuZGJveFBhcmFtZXRlcnMuYWRkUGF0aFBhcmFt
ZXRlcigiSE9NRV9ESVIiLCBwd2QucHdfZGlyKTsKLSAgICBTdHJpbmcgcGF0aCA9IFN0cmluZzo6
ZnJvbVVURjgocHdkLnB3X2Rpcik7Ci0gICAgcGF0aC5hcHBlbmQoIi9MaWJyYXJ5Il9zKTsKKyAg
ICBTdHJpbmcgcGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChTdHJp
bmc6OmZyb21VVEY4KHB3ZC5wd19kaXIpLCAiTGlicmFyeSJfcyk7CiAgICAgc2FuZGJveFBhcmFt
ZXRlcnMuYWRkUGF0aFBhcmFtZXRlcigiSE9NRV9MSUJSQVJZX0RJUiIsIEZpbGVTeXN0ZW06OmZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCkpOwotICAgIHBhdGguYXBwZW5kKCIv
UHJlZmVyZW5jZXMiX3MpOworICAgIHBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQocGF0aCwgIi9QcmVmZXJlbmNlcyJfcyk7CiAgICAgc2FuZGJveFBhcmFtZXRlcnMu
YWRkUGF0aFBhcmFtZXRlcigiSE9NRV9MSUJSQVJZX1BSRUZFUkVOQ0VTX0RJUiIsIEZpbGVTeXN0
ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCkpOwogCiAjaWYgQ1BVKFg4
Nl82NCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9Q
REZQbHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1
Z2luLm1tCmluZGV4IDY3NWU3MjMzNjE2OGJjMmY4YzhkMjI2ZDAxMWRmOTQyNTYwNTQ4MzIuLjBh
ZmMwMTcyYzliM2M4ZTI3OTY1ODU5ODNjNTU1Y2ZiMjJhZWM5YmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAtMTY5MSw3ICsx
NjkxLDcgQEAgdm9pZCBQREZQbHVnaW46OnNldFN1Z2dlc3RlZEZpbGVuYW1lKGNvbnN0IFN0cmlu
ZyYgc3VnZ2VzdGVkRmlsZW5hbWUpCiAgICAgICAgIG1fc3VnZ2VzdGVkRmlsZW5hbWUgPSBzdWdn
ZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZShuaWwsICJhcHBsaWNhdGlvbi9wZGYiX3MpOwogCiAg
ICAgaWYgKCFtX3N1Z2dlc3RlZEZpbGVuYW1lLmVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoIi5w
ZGYiKSkKLSAgICAgICAgbV9zdWdnZXN0ZWRGaWxlbmFtZS5hcHBlbmQoIi5wZGYiX3MpOworICAg
ICAgICBtX3N1Z2dlc3RlZEZpbGVuYW1lID0gbWFrZVN0cmluZyhtX3N1Z2dlc3RlZEZpbGVuYW1l
LCAiLnBkZiJfcyk7CiB9CiAgICAgCiB2b2lkIFBERlBsdWdpbjo6c3RyZWFtRGlkUmVjZWl2ZVJl
c3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwmLCB1aW50MzJfdCwgdWludDMyX3Qs
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgc3Vn
Z2VzdGVkRmlsZW5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJE
b3dubG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZC5jcHAKaW5k
ZXggOTk0NjkwNDU1MWMwY2M2ZDFjZTFjYmU5Mjg4Y2E3M2E4YmI2OGYyMS4uNDBmNjIzMGI4ZDhm
YzA4YzA2ZDc5YTkzZTBhMWIxMDdjZjU2MTQwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViRG93bmxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkRvd25sb2FkLmNwcApAQCAtMTQwLDEwICsxNDAsNyBAQCBIUkVTVUxUIFdlYkRvd25sb2FkOjpi
dW5kbGVQYXRoRm9yVGFyZ2V0UGF0aChfSW5fIEJTVFIgdGFyZ2V0UGF0aCwgX19kZXJlZl9vdXRf
bwogICAgIGlmIChidW5kbGUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gRV9JTlZBTElEQVJH
OwogCi0gICAgaWYgKGJ1bmRsZVtidW5kbGUubGVuZ3RoKCktMV0gPT0gJy8nKQotICAgICAgICBi
dW5kbGUudHJ1bmNhdGUoMSk7Ci0KLSAgICBidW5kbGUuYXBwZW5kKERvd25sb2FkQnVuZGxlOjpm
aWxlRXh0ZW5zaW9uKCkpOworICAgIGJ1bmRsZSA9IGJ1bmRsZVtidW5kbGUubGVuZ3RoKCkgLSAx
XSA9PSAnLycgPyBtYWtlU3RyaW5nKFN0cmluZ1ZpZXcoYnVuZGxlKS5sZWZ0KGJ1bmRsZS5sZW5n
dGgoKSAtIDEpLCBEb3dubG9hZEJ1bmRsZTo6ZmlsZUV4dGVuc2lvbigpKSA6IG1ha2VTdHJpbmco
YnVuZGxlLCBEb3dubG9hZEJ1bmRsZTo6ZmlsZUV4dGVuc2lvbigpKTsKICAgICAqYnVuZGxlUGF0
aCA9IEJTdHJpbmcoYnVuZGxlKS5yZWxlYXNlKCk7CiAgICAgaWYgKCEqYnVuZGxlUGF0aCkKICAg
ICAgICByZXR1cm4gRV9GQUlMOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMv
Q2hhbmdlTG9nCmluZGV4IGI2YWY1ZGEwMGRhZGIyZDZiY2EzOTliZmYwZGYxNjkxOTM4YTdhMDcu
LmFkNjkxMGE4ZTg3N2U4ZGZiMDJlOTFmZWRlY2JmMjhkNDM1MWMyMTUgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAy
Mi0wNC0xNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIERyb3Ag
aW5lZmZpY2llbnQgU3RyaW5nOjphcHBlbmQoKSBvdmVybG9hZHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTI4OQorCisgICAgICAgIFJldmlld2Vk
IGJ5IFNhbSBXZWluaWcuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxl
U3lzdGVtLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nQnVpbGRlci5jcHA6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
Q29udGVudEV4dGVuc2lvbnMuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdUUjo6VGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6
CisKIDIwMjItMDQtMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZXBsYWNlIGNhbGxzIHRvIHN1YnN0cmluZygwLCB4KSB3aXRoIHRoZSBtb3JlIGNvbmNpc2Ug
bGVmdCh4KQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5
c3RlbS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcApp
bmRleCBkYjI0NjUyMzk2ODY1MTY4ODgxYjc0MTQ3Y2YzYzRjM2E4NmE0Yjg0Li42NWZlYWFmM2Ri
YjI5MTI3NzI5NGZlZjhlYzI5YTllYTNhYzI4NWRiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcApAQCAtNDg1LDkgKzQ4NSw3IEBAIFRFU1RfRihGaWxl
U3lzdGVtVGVzdCwgbWFrZUFsbERpcmVjdG9yaWVzKQogICAgIEVYUEVDVF9FUShGaWxlU3lzdGVt
OjpmaWxlVHlwZShzdWJGb2xkZXJQYXRoKSwgRmlsZVN5c3RlbTo6RmlsZVR5cGU6OkRpcmVjdG9y
eSk7CiAgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZGVsZXRlTm9uRW1wdHlEaXJlY3Rvcnko
dGVtcEVtcHR5Rm9sZGVyUGF0aCgpKSk7CiAgICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OmZp
bGVFeGlzdHMoc3ViRm9sZGVyUGF0aCkpOwotICAgIFN0cmluZyBpbnZhbGlkRm9sZGVyUGF0aDsK
LSAgICBpbnZhbGlkRm9sZGVyUGF0aC5hcHBlbmQoJ1wwJyk7Ci0gICAgaW52YWxpZEZvbGRlclBh
dGguYXBwZW5kKCdhJyk7CisgICAgU3RyaW5nIGludmFsaWRGb2xkZXJQYXRoID0gbWFrZVN0cmlu
ZygnXDAnLCAnYScpOwogICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0
b3JpZXMoaW52YWxpZEZvbGRlclBhdGgpKTsKICAgICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3RlbTo6
bWFrZUFsbERpcmVjdG9yaWVzKGVtcHR5U3RyaW5nKCkpKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ0J1aWxkZXIuY3BwIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nQnVpbGRlci5jcHAKaW5kZXggYTQ4N2U1N2U5ZDA0NjE3
ZDQ5ZGU4ZGExOTEyYmU0ODI2MTY4MzA1OS4uYWUxNTNjNTYxNTg2OGI4YjFkNTI2YmRmOThkNTI3
MTE1YmNhZmRjYSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3Ry
aW5nQnVpbGRlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5n
QnVpbGRlci5jcHAKQEAgLTIwOSw5ICsyMDksOSBAQCBURVNUKFN0cmluZ0J1aWxkZXJUZXN0LCBU
b1N0cmluZykKICAgICAvLyBDaGFuZ2luZyB0aGUgb3JpZ2luYWwgcmVzdWx0IG9mIHRvU3RyaW5n
KCkgc2hvdWxkIG5vdCBhZmZlY3QgdGhlIGNvbnRlbnQgb2YgdGhlIFN0cmluZ0J1aWxkZXIuCiAg
ICAgU3RyaW5nIHN0cmluZzEgPSBidWlsZGVyLnRvU3RyaW5nKCk7CiAgICAgRVhQRUNUX0VRKFN0
cmluZygiMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDIl9zKSwgc3RyaW5n
MSk7Ci0gICAgc3RyaW5nMS5hcHBlbmQoIkRFRiJfcyk7CisgICAgc3RyaW5nMS5yZXBsYWNlKCcw
JywgJ2EnKTsKICAgICBFWFBFQ1RfRVEoU3RyaW5nKCIwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5v
cHFyc3R1dnd4eXpBQkMiX3MpLCBidWlsZGVyLnRvU3RyaW5nKCkpOwotICAgIEVYUEVDVF9FUShT
dHJpbmcoIjAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRiJfcyksIHN0
cmluZzEpOworICAgIEVYUEVDVF9FUShTdHJpbmcoImExMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9w
cXJzdHV2d3h5ekFCQyJfcyksIHN0cmluZzEpOwogCiAgICAgLy8gUmVzaXppbmcgdGhlIFN0cmlu
Z0J1aWxkZXIgc2hvdWxkIG5vdCBhZmZlY3QgdGhlIG9yaWdpbmFsIHJlc3VsdCBvZiB0b1N0cmlu
ZygpLgogICAgIHN0cmluZzEgPSBidWlsZGVyLnRvU3RyaW5nKCk7CkBAIC0yNTEsOSArMjUxLDkg
QEAgVEVTVChTdHJpbmdCdWlsZGVyVGVzdCwgVG9TdHJpbmdQcmVzZXJ2ZUNhcGFjaXR5KQogICAg
IEVYUEVDVF9FUShjYXBhY2l0eSwgYnVpbGRlci5jYXBhY2l0eSgpKTsKICAgICBFWFBFQ1RfRVEo
c3RyaW5nMS5jaGFyYWN0ZXJzOCgpLCBidWlsZGVyLmNoYXJhY3RlcnM4KCkpOwogICAgIEVYUEVD
VF9FUShTdHJpbmcoIjAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQyJfcyks
IHN0cmluZzEpOwotICAgIHN0cmluZzEuYXBwZW5kKCJERUYiX3MpOworICAgIHN0cmluZzEucmVw
bGFjZSgnMCcsICdhJyk7CiAgICAgRVhQRUNUX0VRKFN0cmluZygiMDEyMzQ1Njc4OWFiY2RlZmdo
aWprbG1ub3BxcnN0dXZ3eHl6QUJDIl9zKSwgYnVpbGRlci50b1N0cmluZ1ByZXNlcnZlQ2FwYWNp
dHkoKSk7Ci0gICAgRVhQRUNUX0VRKFN0cmluZygiMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3Bx
cnN0dXZ3eHl6QUJDREVGIl9zKSwgc3RyaW5nMSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiYTEy
MzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDIl9zKSwgc3RyaW5nMSk7CiAKICAg
ICAvLyBSZXNpemluZyB0aGUgU3RyaW5nQnVpbGRlciBzaG91bGQgbm90IGFmZmVjdCB0aGUgb3Jp
Z2luYWwgcmVzdWx0IG9mIHRvU3RyaW5nUHJlc2VydmVDYXBhY2l0eSgpLgogICAgIGNhcGFjaXR5
ID0gYnVpbGRlci5jYXBhY2l0eSgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9Db250ZW50RXh0ZW5zaW9ucy5jcHAKaW5kZXggYTk5NzEyMzRjM2MyMGNm
MTQ1ZmU1NjcwZGJhYjk5ZTZkM2UwYzgxNC4uN2I2ODY5N2U2NGZlZGZlODY5YzcxODk4YmRmM2Uz
ZTRiYjYyOWQ0OSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L0NvbnRlbnRFeHRlbnNpb25zLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvQ29udGVudEV4dGVuc2lvbnMuY3BwCkBAIC0xNTA3LDEwICsxNTA3LDggQEAgVEVTVF9G
KENvbnRlbnRFeHRlbnNpb25UZXN0LCBJbnZhbGlkSlNPTikKICAgICBydWxlcy5hcHBlbmQoIlsi
X3MpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCAxNDk5OTk7ICsraSkKICAgICAgICAg
cnVsZXMuYXBwZW5kKCJ7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJc
Ijp7XCJ1cmwtZmlsdGVyXCI6XCJhXCJ9fSwiX3MpOwotICAgIFN0cmluZyBydWxlczE1MDAwMCA9
IHJ1bGVzLnRvU3RyaW5nKCk7Ci0gICAgU3RyaW5nIHJ1bGVzMTUwMDAxID0gcnVsZXMudG9TdHJp
bmcoKTsKLSAgICBydWxlczE1MDAwMC5hcHBlbmQoIntcImFjdGlvblwiOntcInR5cGVcIjpcImJs
b2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcImFcIn19XSJfcyk7Ci0gICAgcnVs
ZXMxNTAwMDEuYXBwZW5kKCJ7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdn
ZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJhXCJ9fSx7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9j
a1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJhXCJ9fV0iX3MpOworICAgIFN0cmlu
ZyBydWxlczE1MDAwMCA9IG1ha2VTdHJpbmcocnVsZXMudG9TdHJpbmcoKSwgIntcImFjdGlvblwi
OntcInR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcImFcIn19
XSJfcyk7CisgICAgU3RyaW5nIHJ1bGVzMTUwMDAxID0gbWFrZVN0cmluZyhydWxlcy50b1N0cmlu
ZygpLCAie1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJs
LWZpbHRlclwiOlwiYVwifX0se1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmln
Z2VyXCI6e1widXJsLWZpbHRlclwiOlwiYVwifX1dIl9zKTsKICAgICBjaGVja0NvbXBpbGVyRXJy
b3IoV1RGTW92ZShydWxlczE1MDAwMCksIHsgfSk7CiAgICAgY2hlY2tDb21waWxlckVycm9yKFdU
Rk1vdmUocnVsZXMxNTAwMDEpLCBDb250ZW50RXh0ZW5zaW9uRXJyb3I6OkpTT05Ub29NYW55UnVs
ZXMpOwogICAgIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJv
bGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRl
eCA5MGExNGVmZjNjYWMyNjEwZjdmMjBlMjlhNzkwMGQwN2VhMDcxYzEzLi5hMTU4MjAzMDdhYThm
YjNmMTg0Zjk4ZDNlNTY4NDZiZjc3ZTVhNzhlIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmNwcApAQCAtMjIzNiwxMiArMjIzNiwxMyBAQCB2b2lkIFRlc3RDb250cm9s
bGVyOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV0tQYWdlUmVmIHBhZ2UsIFdL
QXV0aGVudAogCiAgICAgYXV0byBob3N0ID0gdG9XVEZTdHJpbmcoYWRvcHRXSyhXS1Byb3RlY3Rp
b25TcGFjZUNvcHlIb3N0KHByb3RlY3Rpb25TcGFjZSkpLmdldCgpKTsKICAgICBpbnQgcG9ydCA9
IFdLUHJvdGVjdGlvblNwYWNlR2V0UG9ydChwcm90ZWN0aW9uU3BhY2UpOwotICAgIFN0cmluZyBt
ZXNzYWdlID0gbWFrZVN0cmluZyhob3N0LCAnOicsIHBvcnQsICIgLSBkaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UgLSAiLCB0b1N0cmluZyhhdXRoZW50aWNhdGlvblNjaGVtZSksICIg
LSAiKTsKKyAgICBTdHJpbmdCdWlsZGVyIG1lc3NhZ2U7CisgICAgbWVzc2FnZS5hcHBlbmQoaG9z
dCwgJzonLCBwb3J0LCAiIC0gZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIC0gIiwg
dG9TdHJpbmcoYXV0aGVudGljYXRpb25TY2hlbWUpLCAiIC0gIik7CiAgICAgaWYgKCFtX2hhbmRs
ZXNBdXRoZW50aWNhdGlvbkNoYWxsZW5nZXMpCiAgICAgICAgIG1lc3NhZ2UuYXBwZW5kKCJTaW11
bGF0aW5nIGNhbmNlbGxlZCBhdXRoZW50aWNhdGlvbiBzaGVldFxuIl9zKTsKICAgICBlbHNlCiAg
ICAgICAgIG1lc3NhZ2UuYXBwZW5kKCJSZXNwb25kaW5nIHdpdGggIiArIG1fYXV0aGVudGljYXRp
b25Vc2VybmFtZSArICI6IiArIG1fYXV0aGVudGljYXRpb25QYXNzd29yZCArICJcbiIpOwotICAg
IG1fY3VycmVudEludm9jYXRpb24tPm91dHB1dFRleHQobWVzc2FnZSk7CisgICAgbV9jdXJyZW50
SW52b2NhdGlvbi0+b3V0cHV0VGV4dChtZXNzYWdlLnRvU3RyaW5nKCkpOwogCiAgICAgaWYgKCFt
X2hhbmRsZXNBdXRoZW50aWNhdGlvbkNoYWxsZW5nZXMpIHsKICAgICAgICAgV0tBdXRoZW50aWNh
dGlvbkRlY2lzaW9uTGlzdGVuZXJVc2VDcmVkZW50aWFsKGRlY2lzaW9uTGlzdGVuZXIsIDApOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>