<?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>239500</bug_id>
          
          <creation_ts>2022-04-19 08:38:51 -0700</creation_ts>
          <short_desc>Replace String::replaceWithLiteral() with a String::replace() overload that takes in an ASCIILiteral</short_desc>
          <delta_ts>2022-04-23 10:45:09 -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>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=239685</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>alecflett</cc>
    
    <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>japhet</cc>
    
    <cc>joepeck</cc>
    
    <cc>jsbell</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mifenton</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>pangle</cc>
    
    <cc>pdr</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1862562</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-19 08:38:51 -0700</bug_when>
    <thetext>Replace String::replaceWithLiteral() with a String::replace() overload that takes in an ASCIILiteral.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862563</commentid>
    <comment_count>1</comment_count>
      <attachid>457897</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-19 08:43:01 -0700</bug_when>
    <thetext>Created attachment 457897
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862631</commentid>
    <comment_count>2</comment_count>
      <attachid>457897</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-04-19 10:44:55 -0700</bug_when>
    <thetext>Comment on attachment 457897
Patch

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

&gt; Source/WTF/wtf/text/WTFString.h:198
&gt; +    String&amp; replace(UChar target, ASCIILiteral);

I would sort this up with the UChar/StringView overload above it.

&gt; Source/WebCore/editing/markup.cpp:423
&gt; +    return result.toString().replace(&apos;\0&apos;, &quot;&quot;_s);

I wish it was clearer when to use &quot;&quot;_s and when to use emptyString(). I suppose that ideally the two would always generate identical code, the more optimal of the two.

Another possibility would be to add a function named something like removeAll. Makes me realize that replace should maybe be named replaceAll.

&gt; Tools/TestWebKitAPI/Tests/WTF/WTFString.cpp:247
&gt; +    testString.replace(&apos;2&apos;, &quot;3&quot;_s);

If there were a lot of callers like this we’d probably want a replace(UChar, UChar).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862655</commentid>
    <comment_count>3</comment_count>
      <attachid>457920</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-19 11:33:14 -0700</bug_when>
    <thetext>Created attachment 457920
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862679</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2022-04-19 12:29:28 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #2)
&gt; Comment on attachment 457897 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=457897&amp;action=review
&gt; 
&gt; 
&gt; Another possibility would be to add a function named something like
&gt; removeAll. Makes me realize that replace should maybe be named replaceAll.

Agree with both these.

&gt; &gt; Tools/TestWebKitAPI/Tests/WTF/WTFString.cpp:247
&gt; &gt; +    testString.replace(&apos;2&apos;, &quot;3&quot;_s);
&gt; 
&gt; If there were a lot of callers like this we’d probably want a replace(UChar,
&gt; UChar).

There is one!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862680</commentid>
    <comment_count>5</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2022-04-19 12:31:35 -0700</bug_when>
    <thetext>Should we = delete the overload that takes a const char* to ensure people aren&apos;t passing in a literal the other way?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862685</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-19 12:37:46 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #5)
&gt; Should we = delete the overload that takes a const char* to ensure people
&gt; aren&apos;t passing in a literal the other way?

Sounds like a good idea. I&apos;ll look into that. We wouldn&apos;t want people to use the StringView overload when they have a string literal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862687</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-19 12:46:22 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #6)
&gt; (In reply to Sam Weinig from comment #5)
&gt; &gt; Should we = delete the overload that takes a const char* to ensure people
&gt; &gt; aren&apos;t passing in a literal the other way?
&gt; 
&gt; Sounds like a good idea. I&apos;ll look into that. We wouldn&apos;t want people to use
&gt; the StringView overload when they have a string literal.

It even found bad call sites lol :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862688</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-19 12:51:55 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #4)
&gt; (In reply to Darin Adler from comment #2)
&gt; &gt; Comment on attachment 457897 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=457897&amp;action=review
&gt; &gt; 
&gt; &gt; 
&gt; &gt; Another possibility would be to add a function named something like
&gt; &gt; removeAll. Makes me realize that replace should maybe be named replaceAll.
&gt; 
&gt; Agree with both these.

Same. Based on Darin&apos;s earlier feedback that it&apos;d be nice if String didn&apos;t have functions that modify the String itself though, maybe free functions like:
```
makeStringByReplacingAll(const String&amp;, UChar, ASCIILiteral/StringView/UChar)
makeStringByRemovingAll(const String&amp;, UChar)
```

It&apos;d be consistent with the makeStringByInserting() that I recently added.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862694</commentid>
    <comment_count>9</comment_count>
      <attachid>457931</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-19 13:14:47 -0700</bug_when>
    <thetext>Created attachment 457931
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862708</commentid>
    <comment_count>10</comment_count>
      <attachid>457934</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-19 13:36:05 -0700</bug_when>
    <thetext>Created attachment 457934
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862762</commentid>
    <comment_count>11</comment_count>
      <attachid>457943</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-19 16:52:18 -0700</bug_when>
    <thetext>Created attachment 457943
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862799</commentid>
    <comment_count>12</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-04-19 19:33:53 -0700</bug_when>
    <thetext>Committed r293056 (249789@main): &lt;https://commits.webkit.org/249789@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 457943.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862800</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-04-19 19:34:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/92001180&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862988</commentid>
    <comment_count>14</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2022-04-20 10:59:30 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #8)
&gt; (In reply to Sam Weinig from comment #4)
&gt; &gt; (In reply to Darin Adler from comment #2)
&gt; &gt; &gt; Comment on attachment 457897 [details]
&gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; View in context:
&gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=457897&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; 
&gt; &gt; &gt; Another possibility would be to add a function named something like
&gt; &gt; &gt; removeAll. Makes me realize that replace should maybe be named replaceAll.
&gt; &gt; 
&gt; &gt; Agree with both these.
&gt; 
&gt; Same. Based on Darin&apos;s earlier feedback that it&apos;d be nice if String didn&apos;t
&gt; have functions that modify the String itself though, maybe free functions
&gt; like:
&gt; ```
&gt; makeStringByReplacingAll(const String&amp;, UChar, ASCIILiteral/StringView/UChar)
&gt; makeStringByRemovingAll(const String&amp;, UChar)
&gt; ```
&gt; 
&gt; It&apos;d be consistent with the makeStringByInserting() that I recently added.

Another option would be making the member functions const and have them return a new WARN_UNUSED_RETURN String. If we did that, we could consider names like:

WARN_UNUSED_RETURN String stringByReplacingAll(UChar, ASCIILiteral/StringView/UChar) const
WARN_UNUSED_RETURN String stringByRemovingAll(UChar) const</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863511</commentid>
    <comment_count>15</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-21 18:47:11 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #14)
&gt; (In reply to Chris Dumez from comment #8)
&gt; &gt; (In reply to Sam Weinig from comment #4)
&gt; &gt; &gt; (In reply to Darin Adler from comment #2)
&gt; &gt; &gt; &gt; Comment on attachment 457897 [details]
&gt; &gt; &gt; &gt; Patch
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; View in context:
&gt; &gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=457897&amp;action=review
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Another possibility would be to add a function named something like
&gt; &gt; &gt; &gt; removeAll. Makes me realize that replace should maybe be named replaceAll.
&gt; &gt; &gt; 
&gt; &gt; &gt; Agree with both these.
&gt; &gt; 
&gt; &gt; Same. Based on Darin&apos;s earlier feedback that it&apos;d be nice if String didn&apos;t
&gt; &gt; have functions that modify the String itself though, maybe free functions
&gt; &gt; like:
&gt; &gt; ```
&gt; &gt; makeStringByReplacingAll(const String&amp;, UChar, ASCIILiteral/StringView/UChar)
&gt; &gt; makeStringByRemovingAll(const String&amp;, UChar)
&gt; &gt; ```
&gt; &gt; 
&gt; &gt; It&apos;d be consistent with the makeStringByInserting() that I recently added.
&gt; 
&gt; Another option would be making the member functions const and have them
&gt; return a new WARN_UNUSED_RETURN String. If we did that, we could consider
&gt; names like:
&gt; 
&gt; WARN_UNUSED_RETURN String stringByReplacingAll(UChar,
&gt; ASCIILiteral/StringView/UChar) const
&gt; WARN_UNUSED_RETURN String stringByRemovingAll(UChar) const

The const member function with a WARN_UNUSED_RETURN is exactly what I suggested on the previous bug when we were updating insert().
Darin is the one who suggested a free function instead (and we went with makeStringByInserting()).

I do not feel strongly either way but Darin had a preference for the free function. We should be consistent here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863683</commentid>
    <comment_count>16</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2022-04-22 09:17:43 -0700</bug_when>
    <thetext>I also don’t have a strong preference here, so I agree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863708</commentid>
    <comment_count>17</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-04-22 10:54:33 -0700</bug_when>
    <thetext>The member functions have some advantages, easy to spot when looking over &quot;what the String class has to offer&quot;, and a more-economical way to write these at the call sites that free functions. But I see at least two subtle advantages to the free functions (some of which would also apply to static member functions):

One is that for the parameter type, instead of &quot;this&quot; we can often take a StringView, so a single function can operate on an existing String but even on a string literal or a buffer of UChar, and typically with better syntax than what we’d need if it was a StringView member function (I am not fond of &quot;StringView { }.&quot;). We can always overload for specific types (String, or String&amp;, or String&amp;&amp;) if we want a more efficient variant.

Second is that the free functions can be organized logically, even put in separate headers, making String itself less of a single enormous class. We don’t have that kind of flexibility for member functions. The free functions dovetail nicely with the design of other functions, including ones that operate on more than one string like makeString itself.

For certain &quot;transform single character&quot; cases, in addition to functions we might make some kind of manipulator object that works with the StringConcatenate mechanism. Not sure what the right names for those are. They could do some common operations in place, like ASCII lowercasing and uppercasing, without requiring any additional memory allocation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863711</commentid>
    <comment_count>18</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-22 10:59:18 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #17)
&gt; The member functions have some advantages, easy to spot when looking over
&gt; &quot;what the String class has to offer&quot;, and a more-economical way to write
&gt; these at the call sites that free functions. But I see at least two subtle
&gt; advantages to the free functions (some of which would also apply to static
&gt; member functions):
&gt; 
&gt; One is that for the parameter type, instead of &quot;this&quot; we can often take a
&gt; StringView, so a single function can operate on an existing String but even
&gt; on a string literal or a buffer of UChar, and typically with better syntax
&gt; than what we’d need if it was a StringView member function (I am not fond of
&gt; &quot;StringView { }.&quot;). We can always overload for specific types (String, or
&gt; String&amp;, or String&amp;&amp;) if we want a more efficient variant.
&gt; 
&gt; Second is that the free functions can be organized logically, even put in
&gt; separate headers, making String itself less of a single enormous class. We
&gt; don’t have that kind of flexibility for member functions. The free functions
&gt; dovetail nicely with the design of other functions, including ones that
&gt; operate on more than one string like makeString itself.
&gt; 
&gt; For certain &quot;transform single character&quot; cases, in addition to functions we
&gt; might make some kind of manipulator object that works with the
&gt; StringConcatenate mechanism. Not sure what the right names for those are.
&gt; They could do some common operations in place, like ASCII lowercasing and
&gt; uppercasing, without requiring any additional memory allocation.

Note that in this patch, we deleted the overload taking a &quot;const char*&quot; and it was useful to find callers that could be optimized.

How can we achieve this we free functions? I guess we could declare but not define the overload taking a `const char*` but this would lead to linking errors which is not great. Do you have a good proposal for this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863714</commentid>
    <comment_count>19</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-04-22 11:04:01 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #18)
&gt; Note that in this patch, we deleted the overload taking a &quot;const char*&quot; and
&gt; it was useful to find callers that could be optimized.
&gt; 
&gt; How can we achieve this we free functions? I guess we could declare but not
&gt; define the overload taking a `const char*` but this would lead to linking
&gt; errors which is not great. Do you have a good proposal for this?

Free functions can be deleted just like member functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863717</commentid>
    <comment_count>20</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-22 11:04:49 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #19)
&gt; (In reply to Chris Dumez from comment #18)
&gt; &gt; Note that in this patch, we deleted the overload taking a &quot;const char*&quot; and
&gt; &gt; it was useful to find callers that could be optimized.
&gt; &gt; 
&gt; &gt; How can we achieve this we free functions? I guess we could declare but not
&gt; &gt; define the overload taking a `const char*` but this would lead to linking
&gt; &gt; errors which is not great. Do you have a good proposal for this?
&gt; 
&gt; Free functions can be deleted just like member functions.

Today I Learn :)

Sounds good to me then.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457897</attachid>
            <date>2022-04-19 08:43:01 -0700</date>
            <delta_ts>2022-04-19 11:33:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239500-20220419084300.patch</filename>
            <type>text/plain</type>
            <size>18604</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzMDE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGQ1YjZkODU5OTk3NmQ4M2EwMjk2ZDkw
YmYzNzc5MTAxZmE3NGVjMGIuLmFmMmM1NDgwMjM1OGQ1MzIwZWI5YTc1YzY4NTBjNWRkZTNmY2Ux
ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMjItMDQtMTkgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIFN0cmluZzo6cmVwbGFjZVdpdGhMaXRlcmFs
KCkgd2l0aCBhIFN0cmluZzo6cmVwbGFjZSgpIG92ZXJsb2FkIHRoYXQgdGFrZXMgaW4gYW4gQVND
SUlMaXRlcmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzk1MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBSZXBsYWNlIFN0cmluZzo6cmVwbGFjZVdpdGhMaXRlcmFsKCkgd2l0aCBhIFN0cmluZzo6cmVw
bGFjZSgpIG92ZXJsb2FkIHRoYXQgdGFrZXMgaW4gYW4gQVNDSUlMaXRlcmFsLgorICAgICAgICBy
ZXBsYWNlV2l0aExpdGVyYWwoKSB3YXMgZW5jb3VyYWdpbmcgcGVvcGxlIG5vdCB0byB1c2UgQVND
SUlMaXRlcmFsIGFuZCB0aGUgIiJfcyBzdWZmaXggYW5kIGNhbGxpbmcKKyAgICAgICAgcmVwbGFj
ZSgpIHdpdGggYW4gQVNDSUlMaXRlcmFsIHdvdWxkIHJlc3VsdCBpbiBsZXNzIGVmZmljaWVudCBj
b2RlLCB3aGljaCBnb2VzIGFnYWluc3QgdGhlIGlkZWEgb2YKKyAgICAgICAgQVNDSUlMaXRlcmFs
LgorCisgICAgICAgIFRvIGFkZHJlc3MgdGhpcywgU3RyaW5nOjpyZXBsYWNlV2l0aExpdGVyYWwo
KSBpcyByZW1vdmVkLiBOb3csIGNhbGxlcnMgY2FuIGNhbGwgU3RyaW5nOjpyZXBsYWNlKCkKKyAg
ICAgICAgd2l0aCBhbiBBU0NJSUxpdGVyYWwgaW5zdGVhZCBhbmQgaXQgd2lsbCByZXN1bHQgaW4g
Y29kZSB0aGF0IGlzIGFzIGVmZmljaWVudC4gSSBoYXZlIHZlcmlmaWVkIHRoYXQKKyAgICAgICAg
dGhpcyBjaGFuZ2UgaXMgcGVyZi1uZXV0cmFsIG9uIFNwZWVkb21ldGVyIG9uIGJvdGggQXBwbGUg
U2lsaWNvbiBhbmQgSW50ZWwuCisKKyAgICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuaDoKKyAg
ICAgICAgKFdURjo6U3RyaW5nOjpyZXBsYWNlKToKKyAgICAgICAgKFdURjo6U3RyaW5nOjpyZXBs
YWNlV2l0aExpdGVyYWwpOiBEZWxldGVkLgorCiAyMDIyLTA0LTE4ICBFbGxpb3R0IFdpbGxpYW1z
ICA8ZW13QGFwcGxlLmNvbT4KIAogICAgICAgICBbWENCdWlsZF0gVXNlIFhDQnVpbGQgZm9yIGFs
bCBjb21tYW5kLWxpbmUgYW5kIHByb2plY3QgYnVpbGRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTE3ZmRiMTEw
ODlkNjhhMTJhNjJjMjQ2YTUxYzQ0NzA5Yzk0YjNjYS4uMWE0Y2Q2ZGZjYjU0NDk0NzA5ZTM1NjIz
NmQ5ZTNmZmFhMjBlOTljNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDIyLTA0LTE5
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBTdHJp
bmc6OnJlcGxhY2VXaXRoTGl0ZXJhbCgpIHdpdGggYSBTdHJpbmc6OnJlcGxhY2UoKSBvdmVybG9h
ZCB0aGF0IHRha2VzIGluIGFuIEFTQ0lJTGl0ZXJhbAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5NTAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRl
SURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRl
SURCQmFja2luZ1N0b3JlOjplbmNvZGVEYXRhYmFzZU5hbWUpOgorICAgICAgICAqIGRpc3BsYXkv
Y3NzL0Rpc3BsYXlUZXh0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OlRleHRC
b3g6OmRlYnVnRGVzY3JpcHRpb24gY29uc3QpOgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vZGU6OnNob3dOb2RlIGNvbnN0KToKKyAgICAgICAgKiBkb20vVGV4
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRUZXh0UmVwcmVzZW50YXRpb24pOgorICAg
ICAgICAqIGVkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
Q2hhbmdlOjpleHRyYWN0VGV4dFN0eWxlcyk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZWxlY3RlZFRleHQgY29uc3QpOgorICAgICAg
ICAqIGVkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWFy
a3VwQWNjdW11bGF0b3I6OmFwcGVuZFF1b3RlZFVSTEF0dHJpYnV0ZVZhbHVlKToKKyAgICAgICAg
KiBlZGl0aW5nL21hcmt1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZWRNYXJrdXBBY2N1
bXVsYXRvcjo6dGFrZVJlc3VsdHMpOgorICAgICAgICAqIGh0bWwvVVJMRGVjb21wb3NpdGlvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpVUkxEZWNvbXBvc2l0aW9uOjpzZXRTZWFyY2gpOgorICAg
ICAgICAqIGxheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6b3V0cHV0TGF5b3V0Qm94KToKKyAgICAgICAgKiBsb2FkZXIvRm9y
bVN1Ym1pc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5kTWFpbHRvUG9zdEZvcm1E
YXRhVG9VUkwpOgorICAgICAgICAqIHJlbmRlcmluZy9MZWdhY3lJbmxpbmVUZXh0Qm94LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g6Om91dHB1dExpbmVCb3ggY29u
c3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyT2JqZWN0OjpvdXRwdXRSZW5kZXJPYmplY3QgY29uc3QpOgorICAgICAgICAq
IHhtbC9YU0xUUHJvY2Vzc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRyYW5zZm9ybVRleHRT
dHJpbmdUb1hIVE1MRG9jdW1lbnRTdHJpbmcpOgorCiAyMDIyLTA0LTE2ICBQaGlsaXBwZSBOb3Jt
YW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1N0cmVhbWVyXVtXZWJSVENd
IE1pbm9yIGNsZWFudXAgaW4gSW5jb21pbmdTb3VyY2VHU3RyZWFtZXIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0
cmluZy5oCmluZGV4IDgxMDU0MmYwMDFiNzAxNTk0ZmYwZWU2Mjc5ZGE0NGE2YjlmZmYwYTEuLjRh
Y2MyM2ExOWQzYjdiY2QwZTM1ZDZlMTVhYjVmNjAyMjg0OTY5OTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZT
dHJpbmcuaApAQCAtMTk1LDcgKzE5NSw3IEBAIHB1YmxpYzoKICAgICBTdHJpbmcmIHJlcGxhY2Uo
VUNoYXIgdGFyZ2V0LCBTdHJpbmdWaWV3IHJlcGxhY2VtZW50KTsKICAgICBTdHJpbmcmIHJlcGxh
Y2UoU3RyaW5nVmlldyB0YXJnZXQsIFN0cmluZ1ZpZXcgcmVwbGFjZW1lbnQpOwogICAgIFN0cmlu
ZyYgcmVwbGFjZSh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBTdHJpbmdWaWV3IHJl
cGxhY2VtZW50KTsKLSAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJDb3VudD4gU3RyaW5n
JiByZXBsYWNlV2l0aExpdGVyYWwoVUNoYXIgdGFyZ2V0LCBjb25zdCBjaGFyICgmcmVwbGFjZW1l
bnQpW2NoYXJhY3RlckNvdW50XSk7CisgICAgU3RyaW5nJiByZXBsYWNlKFVDaGFyIHRhcmdldCwg
QVNDSUlMaXRlcmFsKTsKIAogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHJlbW92ZSh1bnNp
Z25lZCBwb3NpdGlvbiwgdW5zaWduZWQgbGVuZ3RoID0gMSk7CiAKQEAgLTQ5MCwxMCArNDkwLDEw
IEBAIGlubGluZSBTdHJpbmcmIFN0cmluZzo6cmVwbGFjZShVQ2hhciB0YXJnZXQsIFVDaGFyIHJl
cGxhY2VtZW50KQogICAgIHJldHVybiAqdGhpczsKIH0KIAotdGVtcGxhdGU8dW5zaWduZWQgY2hh
cmFjdGVyQ291bnQ+IEFMV0FZU19JTkxJTkUgU3RyaW5nJiBTdHJpbmc6OnJlcGxhY2VXaXRoTGl0
ZXJhbChVQ2hhciB0YXJnZXQsIGNvbnN0IGNoYXIgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJDb3Vu
dF0pCitBTFdBWVNfSU5MSU5FIFN0cmluZyYgU3RyaW5nOjpyZXBsYWNlKFVDaGFyIHRhcmdldCwg
QVNDSUlMaXRlcmFsIGxpdGVyYWwpCiB7CiAgICAgaWYgKG1faW1wbCkKLSAgICAgICAgbV9pbXBs
ID0gbV9pbXBsLT5yZXBsYWNlKHRhcmdldCwgY2hhcmFjdGVycywgY2hhcmFjdGVyQ291bnQgLSAx
KTsKKyAgICAgICAgbV9pbXBsID0gbV9pbXBsLT5yZXBsYWNlKHRhcmdldCwgbGl0ZXJhbC5jaGFy
YWN0ZXJzKCksIGxpdGVyYWwubGVuZ3RoKCkpOwogICAgIHJldHVybiAqdGhpczsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlE
QkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAppbmRleCBjYmQ0NjI3OTA3ODc3ODAyZjM4YzZh
NGRmYjY2YzFhMjIzMWRiM2NmLi44NzA5NzJmMzIyMTNlZGZlMGQzNDI4ZWJiMTlhNmJkZTU4NGQ2
MmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
U1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcApAQCAtOTE3LDcgKzkxNyw3
IEBAIFN0cmluZyBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmVuY29kZURhdGFiYXNlTmFtZShjb25z
dCBTdHJpbmcmIGRhdGFiYXNlTmFtZSkKICAgICAgICAgcmV0dXJuICIlMDAiX3M7CiAKICAgICBT
dHJpbmcgZmlsZW5hbWUgPSBGaWxlU3lzdGVtOjplbmNvZGVGb3JGaWxlTmFtZShkYXRhYmFzZU5h
bWUpOwotICAgIGZpbGVuYW1lLnJlcGxhY2VXaXRoTGl0ZXJhbCgnLicsICIlMkUiKTsKKyAgICBm
aWxlbmFtZS5yZXBsYWNlKCcuJywgIiUyRSJfcyk7CiAKICAgICByZXR1cm4gZmlsZW5hbWU7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5VGV4dEJveC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5VGV4dEJveC5jcHAKaW5kZXgg
NmFlZjAxZDAwNjNlZjAyYjE2MzA4ZjdmNzZiOTFjOTA5YTU5NDJjNC4uNmU3MGMwOWE1OWE2ZGZk
ZjVkZjg4YWEyMDAwNDZjZDg3NTU5Njg5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZGlz
cGxheS9jc3MvRGlzcGxheVRleHRCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkv
Y3NzL0Rpc3BsYXlUZXh0Qm94LmNwcApAQCAtNTQsOCArNTQsOCBAQCBTdHJpbmcgVGV4dEJveDo6
ZGVidWdEZXNjcmlwdGlvbigpIGNvbnN0CiAKICAgICBzdHJlYW0gPDwgYm94TmFtZSgpIDw8ICIg
IiA8PCBhYnNvbHV0ZUJveFJlY3QoKSA8PCAiICgiIDw8IHRoaXMgPDwgIikiOwogICAgIGF1dG8g
dGV4dENvbnRlbnQgPSB0ZXh0KCkub3JpZ2luYWxDb250ZW50KCkuc3Vic3RyaW5nKHRleHQoKS5z
dGFydCgpLCB0ZXh0KCkubGVuZ3RoKCkpLnRvU3RyaW5nKCk7Ci0gICAgdGV4dENvbnRlbnQucmVw
bGFjZVdpdGhMaXRlcmFsKCdcXCcsICJcXFxcIik7Ci0gICAgdGV4dENvbnRlbnQucmVwbGFjZVdp
dGhMaXRlcmFsKCdcbicsICJcXG4iKTsKKyAgICB0ZXh0Q29udGVudC5yZXBsYWNlKCdcXCcsICJc
XFxcIl9zKTsKKyAgICB0ZXh0Q29udGVudC5yZXBsYWNlKCdcbicsICJcXG4iX3MpOwogICAgIGNv
bnN0IHNpemVfdCBtYXhQcmludGVkTGVuZ3RoID0gODA7CiAgICAgaWYgKHRleHRDb250ZW50Lmxl
bmd0aCgpID4gbWF4UHJpbnRlZExlbmd0aCkgewogICAgICAgICBhdXRvIHN1YnN0cmluZyA9IFN0
cmluZ1ZpZXcodGV4dENvbnRlbnQpLmxlZnQobWF4UHJpbnRlZExlbmd0aCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5j
cHAKaW5kZXggY2I0N2VhYWVjMGRlNzA1YjM0ODM2ZjU3MDI3YjRkYzE1NzhiOTUxZS4uODVmZTI1
ZjVkMDZhODkxMmZlOWY5YjkxMGE2M2NlOWZiNTg1YWJmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAt
MTc5OSw4ICsxNzk5LDggQEAgdm9pZCBOb2RlOjpzaG93Tm9kZShjb25zdCBjaGFyKiBwcmVmaXgp
IGNvbnN0CiAgICAgICAgIHByZWZpeCA9ICIiOwogICAgIGlmIChpc1RleHROb2RlKCkpIHsKICAg
ICAgICAgU3RyaW5nIHZhbHVlID0gbm9kZVZhbHVlKCk7Ci0gICAgICAgIHZhbHVlLnJlcGxhY2VX
aXRoTGl0ZXJhbCgnXFwnLCAiXFxcXCIpOwotICAgICAgICB2YWx1ZS5yZXBsYWNlV2l0aExpdGVy
YWwoJ1xuJywgIlxcbiIpOworICAgICAgICB2YWx1ZS5yZXBsYWNlKCdcXCcsICJcXFxcIl9zKTsK
KyAgICAgICAgdmFsdWUucmVwbGFjZSgnXG4nLCAiXFxuIl9zKTsKICAgICAgICAgZnByaW50Zihz
dGRlcnIsICIlcyVzXHQlcCBcIiVzXCJcbiIsIHByZWZpeCwgbm9kZU5hbWUoKS51dGY4KCkuZGF0
YSgpLCB0aGlzLCB2YWx1ZS51dGY4KCkuZGF0YSgpKTsKICAgICB9IGVsc2UgewogICAgICAgICBT
dHJpbmdCdWlsZGVyIGF0dHJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuY3BwCmluZGV4IDRiOTAzZjhmZGYyYmFkOTM5
ZGRhYmE4MGNkZTg4MDU0NDEyOTc2ZTIuLmUwNGQ1ZTM2ZjM2ZDBlMTFjNGRhMGFjZTVhMTllMDQ5
MTVkMzQyMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vVGV4dC5jcHAKQEAgLTIyOCw4ICsyMjgsOCBAQCBzdGF0aWMgdm9p
ZCBhcHBlbmRUZXh0UmVwcmVzZW50YXRpb24oU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgY29uc3Qg
VGV4dCYgdGV4dCkKICAgICBTdHJpbmcgdmFsdWUgPSB0ZXh0LmRhdGEoKTsKICAgICBidWlsZGVy
LmFwcGVuZCgiIGxlbmd0aD0iX3MsIHZhbHVlLmxlbmd0aCgpKTsKIAotICAgIHZhbHVlLnJlcGxh
Y2VXaXRoTGl0ZXJhbCgnXFwnLCAiXFxcXCIpOwotICAgIHZhbHVlLnJlcGxhY2VXaXRoTGl0ZXJh
bCgnXG4nLCAiXFxuIik7CisgICAgdmFsdWUucmVwbGFjZSgnXFwnLCAiXFxcXCJfcyk7CisgICAg
dmFsdWUucmVwbGFjZSgnXG4nLCAiXFxuIl9zKTsKICAgICAKICAgICBjb25zdGV4cHIgc2l6ZV90
IG1heER1bXBMZW5ndGggPSAzMDsKICAgICBpZiAodmFsdWUubGVuZ3RoKCkgPiBtYXhEdW1wTGVu
Z3RoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCmluZGV4IDk1MGJkMGY0
YmRhODgwNWY4Zjg1OWM2OTI1Yzk3YTU5Mjg5MDkwMjAuLjk0OGM4YmIyZGFlZTg5YTZlYzA0NzU5
Y2QzYWE2ZjIxYzg1NTQ3ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dGluZ1N0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5j
cHAKQEAgLTE4NTMsNyArMTg1Myw3IEBAIHZvaWQgU3R5bGVDaGFuZ2U6OmV4dHJhY3RUZXh0U3R5
bGVzKERvY3VtZW50JiBkb2N1bWVudCwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYKIAogICAgIG1f
YXBwbHlGb250RmFjZSA9IHN0eWxlLmdldFByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlGb250RmFt
aWx5KTsKICAgICAvLyBSZW1vdmUgcXVvdGVzIGZvciBPdXRsb29rIDIwMDcgY29tcGF0aWJpbGl0
eS4gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTQ0OAotICAg
IG1fYXBwbHlGb250RmFjZS5yZXBsYWNlV2l0aExpdGVyYWwoJ1wiJywgIiIpOworICAgIG1fYXBw
bHlGb250RmFjZS5yZXBsYWNlKCdcIicsICIiX3MpOwogICAgIHN0eWxlLnJlbW92ZVByb3BlcnR5
KENTU1Byb3BlcnR5Rm9udEZhbWlseSk7CiAKICAgICBpZiAoUmVmUHRyPENTU1ZhbHVlPiBmb250
U2l6ZSA9IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlGb250U2l6ZSkpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCA1ZGY3YTM1MDhkYTc4YjMyNTAyMjg2NjBm
MDQ0YWI0ZDQzNWM1NGYyLi5hODhlZDQ0N2M5OWRmOTEwMzM4MTMzMTZlYjA1NzQ1YWVlNjllN2Jl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0zMzI1LDcgKzMzMjUsNyBAQCBTdHJp
bmcgRWRpdG9yOjpzZWxlY3RlZFRleHQoVGV4dEl0ZXJhdG9yQmVoYXZpb3JzIGJlaGF2aW9ycykg
Y29uc3QKIHsKICAgICAvLyBXZSByZW1vdmUgJ1wwJyBjaGFyYWN0ZXJzIGJlY2F1c2UgdGhleSBh
cmUgbm90IHZpc2libHkgcmVuZGVyZWQgdG8gdGhlIHVzZXIuCiAgICAgYXV0byByYW5nZSA9IG1f
ZG9jdW1lbnQuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuZmlyc3RSYW5nZSgpOwotICAgIHJldHVy
biByYW5nZSA/IHBsYWluVGV4dCgqcmFuZ2UsIGJlaGF2aW9ycykucmVwbGFjZVdpdGhMaXRlcmFs
KCdcMCcsICIiKSA6IGVtcHR5U3RyaW5nKCk7CisgICAgcmV0dXJuIHJhbmdlID8gcGxhaW5UZXh0
KCpyYW5nZSwgYmVoYXZpb3JzKS5yZXBsYWNlKCdcMCcsICIiX3MpIDogZW1wdHlTdHJpbmcoKTsK
IH0KIAogUmVmUHRyPFRleHRQbGFjZWhvbGRlckVsZW1lbnQ+IEVkaXRvcjo6aW5zZXJ0VGV4dFBs
YWNlaG9sZGVyKGNvbnN0IEludFNpemUmIHNpemUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
TWFya3VwQWNjdW11bGF0b3IuY3BwCmluZGV4IDNlNjk2MWQxNzMwZDQzNzRjNjRmZjg3YTJkMGFm
MTI3ZWMxMDU0NDAuLjI0Y2VkODY5YjgyZjlhM2E0YzIzMTM4NzRmYTAxYjM2Zjg5OTBjMjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCkBAIC0yODks
NyArMjg5LDcgQEAgdm9pZCBNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kUXVvdGVkVVJMQXR0cmli
dXRlVmFsdWUoU3RyaW5nQnVpbGRlciYgcmVzdWx0LCBjb24KICAgICAgICAgLy8gbWluaW1hbCBl
c2NhcGluZyBmb3IgamF2YXNjcmlwdCB1cmxzCiAgICAgICAgIGlmIChyZXNvbHZlZFVSTFN0cmlu
Zy5jb250YWlucygnIicpKSB7CiAgICAgICAgICAgICBpZiAocmVzb2x2ZWRVUkxTdHJpbmcuY29u
dGFpbnMoJ1wnJykpCi0gICAgICAgICAgICAgICAgcmVzb2x2ZWRVUkxTdHJpbmcucmVwbGFjZVdp
dGhMaXRlcmFsKCciJywgIiZxdW90OyIpOworICAgICAgICAgICAgICAgIHJlc29sdmVkVVJMU3Ry
aW5nLnJlcGxhY2UoJyInLCAiJnF1b3Q7Il9zKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgICAgICBxdW90ZUNoYXIgPSAnXCcnOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1
cC5jcHAKaW5kZXggYjRjOTY0ZDIxYTA0M2VjN2FiOTc5MDViYWNlNjc0MTkwYTk1NmY1Zi4uNGYx
YzIxODU3ZjFlNjA2MjJlNjQ4Y2UwZjE0MDJjNDhlM2VlMGI2OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bWFya3VwLmNwcApAQCAtNDIwLDcgKzQyMCw3IEBAIFN0cmluZyBTdHlsZWRNYXJrdXBBY2N1bXVs
YXRvcjo6dGFrZVJlc3VsdHMoKQogICAgICAgICByZXN1bHQuYXBwZW5kKHN0cmluZyk7CiAgICAg
cmVzdWx0LmFwcGVuZCh0YWtlTWFya3VwKCkpOwogICAgIC8vIFJlbW92ZSAnXDAnIGNoYXJhY3Rl
cnMgYmVjYXVzZSB0aGV5IGFyZSBub3QgdmlzaWJseSByZW5kZXJlZCB0byB0aGUgdXNlci4KLSAg
ICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCkucmVwbGFjZVdpdGhMaXRlcmFsKCdcMCcsICIiKTsK
KyAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCkucmVwbGFjZSgnXDAnLCAiIl9zKTsKIH0KIAog
dm9pZCBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kVGV4dChTdHJpbmdCdWlsZGVyJiBv
dXQsIGNvbnN0IFRleHQmIHRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VS
TERlY29tcG9zaXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxEZWNvbXBvc2l0aW9u
LmNwcAppbmRleCA5MzVjZTVkY2I3MjU5YTVlZDYwOTk1YTI4NTc4YjY2MGNlNTkwNGI3Li5mMzQ5
OTFhMDc3ZjU3NDA4ZjgwZjRhZmY4OWY3ZmNhMjQ2MzMzMGRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1VSTERlY29tcG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvVVJMRGVjb21wb3NpdGlvbi5jcHAKQEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lkIFVSTERlY29t
cG9zaXRpb246OnNldFNlYXJjaChjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIH0gZWxzZSB7CiAg
ICAgICAgIFN0cmluZyBuZXdTZWFyY2ggPSB2YWx1ZTsKICAgICAgICAgLy8gTWFrZSBzdXJlIHRo
YXQgJyMnIGluIHRoZSBxdWVyeSBkb2VzIG5vdCBsZWFrIHRvIHRoZSBoYXNoLgotICAgICAgICBm
dWxsVVJMLnNldFF1ZXJ5KG5ld1NlYXJjaC5yZXBsYWNlV2l0aExpdGVyYWwoJyMnLCAiJTIzIikp
OworICAgICAgICBmdWxsVVJMLnNldFF1ZXJ5KG5ld1NlYXJjaC5yZXBsYWNlKCcjJywgIiUyMyJf
cykpOwogICAgIH0KICAgICBzZXRGdWxsVVJMKGZ1bGxVUkwpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCmluZGV4
IDY5NDJiMWYyOTZlNTJmNDc2YzkyOTYwOGQwZjkxOTJmNDRkMDI1ZDIuLmY4M2NkMTZkN2ZkZjg4
NmQzNDA1NDU2M2U4YmE0MWRhYTlmODAxMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAKQEAgLTQ5OCw4ICs0OTgs
OCBAQCBzdGF0aWMgdm9pZCBvdXRwdXRMYXlvdXRCb3goVGV4dFN0cmVhbSYgc3RyZWFtLCBjb25z
dCBCb3gmIGxheW91dEJveCwgY29uc3QgQm94RwogICAgICAgICBhdXRvIHRleHRDb250ZW50ID0g
ZG93bmNhc3Q8SW5saW5lVGV4dEJveD4obGF5b3V0Qm94KS5jb250ZW50KCk7CiAgICAgICAgIHN0
cmVhbSA8PCAiIGxlbmd0aC0+KCIgPDwgdGV4dENvbnRlbnQubGVuZ3RoKCkgPDwgIikiOwogCi0g
ICAgICAgIHRleHRDb250ZW50LnJlcGxhY2VXaXRoTGl0ZXJhbCgnXFwnLCAiXFxcXCIpOwotICAg
ICAgICB0ZXh0Q29udGVudC5yZXBsYWNlV2l0aExpdGVyYWwoJ1xuJywgIlxcbiIpOworICAgICAg
ICB0ZXh0Q29udGVudC5yZXBsYWNlKCdcXCcsICJcXFxcIl9zKTsKKyAgICAgICAgdGV4dENvbnRl
bnQucmVwbGFjZSgnXG4nLCAiXFxuIl9zKTsKIAogICAgICAgICBjb25zdCBzaXplX3QgbWF4UHJp
bnRlZExlbmd0aCA9IDgwOwogICAgICAgICBpZiAodGV4dENvbnRlbnQubGVuZ3RoKCkgPiBtYXhQ
cmludGVkTGVuZ3RoKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1
Ym1pc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcApp
bmRleCA2ZTYyNmY4NDQ5YzU1MGQyOGVmNGU2NDdmMTc2MDEwMWJjYTEzYzQwLi4yYzAxMmZkZTVk
Nzc4YjA2N2I1YTVhNzg4NmQ5ZmNmZDNjZjFlOTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
b3JtU3VibWlzc2lvbi5jcHAKQEAgLTcwLDEzICs3MCwxMyBAQCBzdGF0aWMgdm9pZCBhcHBlbmRN
YWlsdG9Qb3N0Rm9ybURhdGFUb1VSTChVUkwmIHVybCwgY29uc3QgRm9ybURhdGEmIGRhdGEsIGNv
bnN0CiAKICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZW5jb2RpbmdUeXBl
LCAidGV4dC9wbGFpbiIpKSB7CiAgICAgICAgIC8vIENvbnZlbnRpb24gc2VlbXMgdG8gYmUgdG8g
ZGVjb2RlLCBhbmQgcy8mL1xyXG4vLiBBbHNvLCBzcGFjZXMgYXJlIGVuY29kZWQgYXMgJTIwLgot
ICAgICAgICBib2R5ID0gUEFMOjpkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMoYm9keS5yZXBsYWNl
V2l0aExpdGVyYWwoJyYnLCAiXHJcbiIpLnJlcGxhY2UoJysnLCAnICcpKTsKKyAgICAgICAgYm9k
eSA9IFBBTDo6ZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKGJvZHkucmVwbGFjZSgnJicsICJcclxu
Il9zKS5yZXBsYWNlKCcrJywgJyAnKSk7CiAgICAgfQogCiAgICAgVmVjdG9yPGNoYXI+IGJvZHlE
YXRhOwogICAgIGJvZHlEYXRhLmFwcGVuZCgiYm9keT0iLCA1KTsKICAgICBGb3JtRGF0YUJ1aWxk
ZXI6OmVuY29kZVN0cmluZ0FzRm9ybURhdGEoYm9keURhdGEsIGJvZHkudXRmOCgpKTsKLSAgICBi
b2R5ID0gU3RyaW5nKGJvZHlEYXRhLmRhdGEoKSwgYm9keURhdGEuc2l6ZSgpKS5yZXBsYWNlV2l0
aExpdGVyYWwoJysnLCAiJTIwIik7CisgICAgYm9keSA9IFN0cmluZyhib2R5RGF0YS5kYXRhKCks
IGJvZHlEYXRhLnNpemUoKSkucmVwbGFjZSgnKycsICIlMjAiX3MpOwogCiAgICAgYXV0byBxdWVy
eSA9IHVybC5xdWVyeSgpOwogICAgIGlmIChxdWVyeS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lVGV4dEJveC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lVGV4dEJveC5jcHAKaW5kZXggYmVlMTE0N2Zl
YTM1YzJhYjU3ZGZmOGIzMWJiODNkZjcxMTQwYzU0MS4uZmRjZjQ1NzZjZDMzMmE3NjYyOWE3ZGI1
MjE1NWRkMTQ2OTQ4OWVmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xl
Z2FjeUlubGluZVRleHRCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdh
Y3lJbmxpbmVUZXh0Qm94LmNwcApAQCAtNTI4LDggKzUyOCw4IEBAIHZvaWQgTGVnYWN5SW5saW5l
VGV4dEJveDo6b3V0cHV0TGluZUJveChUZXh0U3RyZWFtJiBzdHJlYW0sIGJvb2wgbWFyaywgaW50
IGRlcHRoCiAKICAgICBTdHJpbmcgdmFsdWUgPSByZW5kZXJlcigpLnRleHQoKTsKICAgICB2YWx1
ZSA9IHZhbHVlLnN1YnN0cmluZyhzdGFydCgpLCBsZW4oKSk7Ci0gICAgdmFsdWUucmVwbGFjZVdp
dGhMaXRlcmFsKCdcXCcsICJcXFxcIik7Ci0gICAgdmFsdWUucmVwbGFjZVdpdGhMaXRlcmFsKCdc
bicsICJcXG4iKTsKKyAgICB2YWx1ZS5yZXBsYWNlKCdcXCcsICJcXFxcIl9zKTsKKyAgICB2YWx1
ZS5yZXBsYWNlKCdcbicsICJcXG4iX3MpOwogICAgIHN0cmVhbSA8PCBib3hOYW1lKCkgPDwgIiAi
IDw8IEZsb2F0UmVjdCh4KCksIHkoKSwgd2lkdGgoKSwgaGVpZ2h0KCkpIDw8ICIgKCIgPDwgdGhp
cyA8PCAiKSByZW5kZXJlci0+KCIgPDwgJnJlbmRlcmVyKCkgPDwgIikgcnVuKCIgPDwgc3RhcnQo
KSA8PCAiLCAiIDw8IHN0YXJ0KCkgKyBsZW4oKSA8PCAiKSBcIiIgPDwgdmFsdWUudXRmOCgpLmRh
dGEoKSA8PCAiXCIiOwogICAgIHN0cmVhbS5uZXh0TGluZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCBhNTk3MTYzYjBjNDNiMmFkMzU0YTYzZGRh
NzM4YjYzOTNiOWUzODM3Li4wMzVlZmUzODU3ZjA3ZmFiNDg3NGU4MjQyZTQ4NDEwYzY1YTI3N2U3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMTI2NSw4
ICsxMjY1LDggQEAgdm9pZCBSZW5kZXJPYmplY3Q6Om91dHB1dFJlbmRlck9iamVjdChUZXh0U3Ry
ZWFtJiBzdHJlYW0sIGJvb2wgbWFyaywgaW50IGRlcHRoKQogICAgICAgICAgICAgU3RyaW5nIHZh
bHVlID0gbm9kZSgpLT5ub2RlVmFsdWUoKTsKICAgICAgICAgICAgIHN0cmVhbSA8PCAiIGxlbmd0
aC0+KCIgPDwgdmFsdWUubGVuZ3RoKCkgPDwgIikiOwogCi0gICAgICAgICAgICB2YWx1ZS5yZXBs
YWNlV2l0aExpdGVyYWwoJ1xcJywgIlxcXFwiKTsKLSAgICAgICAgICAgIHZhbHVlLnJlcGxhY2VX
aXRoTGl0ZXJhbCgnXG4nLCAiXFxuIik7CisgICAgICAgICAgICB2YWx1ZS5yZXBsYWNlKCdcXCcs
ICJcXFxcIl9zKTsKKyAgICAgICAgICAgIHZhbHVlLnJlcGxhY2UoJ1xuJywgIlxcbiJfcyk7CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIGNvbnN0IGludCBtYXhQcmludGVkTGVuZ3RoID0gODA7
CiAgICAgICAgICAgICBpZiAodmFsdWUubGVuZ3RoKCkgPiBtYXhQcmludGVkTGVuZ3RoKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nvci5jcHAKaW5kZXggYmU1OGQ2Zjc0NDFjZDA4M2IyMzJh
NGNkNDVkNDBlMTRmNDhhNWJhMS4uNjQ3NDJhMTFiYWM4YjI4OWY3NzhjNjI3NDVhOGI3NWM4ZmE5
NzAxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yLmNwcApAQCAtNDUsOCArNDUsOCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdGF0aWMgaW5saW5lIHZvaWQgdHJhbnNmb3JtVGV4dFN0
cmluZ1RvWEhUTUxEb2N1bWVudFN0cmluZyhTdHJpbmcmIHRleHQpCiB7CiAgICAgLy8gTW9kaWZ5
IHRoZSBvdXRwdXQgc28gdGhhdCBpdCBpcyBhIHdlbGwtZm9ybWVkIFhIVE1MIGRvY3VtZW50IHdp
dGggYSA8cHJlPiB0YWcgZW5jbG9zaW5nIHRoZSB0ZXh0LgotICAgIHRleHQucmVwbGFjZVdpdGhM
aXRlcmFsKCcmJywgIiZhbXA7Iik7Ci0gICAgdGV4dC5yZXBsYWNlV2l0aExpdGVyYWwoJzwnLCAi
Jmx0OyIpOworICAgIHRleHQucmVwbGFjZSgnJicsICImYW1wOyJfcyk7CisgICAgdGV4dC5yZXBs
YWNlKCc8JywgIiZsdDsiX3MpOwogICAgIHRleHQgPSAiPD94bWwgdmVyc2lvbj1cIjEuMFwiIGVu
Y29kaW5nPVwiVVRGLThcIj8+XG4iCiAgICAgICAgICI8IURPQ1RZUEUgaHRtbCBQVUJMSUMgXCIt
Ly9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTlwiIFwiaHR0cDovL3d3dy53My5vcmcvVFIv
eGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZFwiPlxuIgogICAgICAgICAiPGh0bWwgeG1sbnM9
XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sXCI+XG4iCmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMjQ3OTllYTQyNDAxNmQ4YjQ0ZjE4ZTI4
NDViYjA1MDI0MWQ1OWE3ZS4uMjlhN2ZhYTFmNGY5MzNiYmQ4MDQyZjZkOWViM2RkM2NmNjY4NzRl
MiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEzIEBACisyMDIyLTA0LTE5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CisKKyAgICAgICAgUmVwbGFjZSBTdHJpbmc6OnJlcGxhY2VXaXRoTGl0ZXJhbCgpIHdpdGggYSBT
dHJpbmc6OnJlcGxhY2UoKSBvdmVybG9hZCB0aGF0IHRha2VzIGluIGFuIEFTQ0lJTGl0ZXJhbAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5NTAwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9XVEZTdHJpbmcuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
VEVTVCk6CisKIDIwMjItMDQtMTggIFR5bGVyIFdpbGNvY2sgIDx0eWxlcl93QGFwcGxlLmNvbT4K
IAogICAgICAgICBBWDogVXBkYXRlIHRoZSBpc29sYXRlZCB0cmVlIGluIHJlc3BvbnNlIHRvIEFY
RWxlbWVudEJ1c3lDaGFuZ2VkIGFuZCBBWFRleHRDaGFuZ2VkIG5vdGlmaWNhdGlvbnMKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dURlN0cmluZy5jcHAgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9XVEZTdHJpbmcuY3BwCmluZGV4IDViMjE3MmVjMDBi
Nzc0ZjRmZjkxMjVhZDUxYzU1ZGViN2QyMzZiMWQuLjZkZmQ0ZGMyNjIzN2I4YjExZTFiZDNlYmQ4
MjhkMmMyNjdiMzRjZjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L1dURlN0cmluZy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV1RGU3Ry
aW5nLmNwcApAQCAtMjM5LDM4ICsyMzksMzggQEAgVEVTVChXVEYsIFN0cmluZ1JlcGxhY2VXaXRo
TGl0ZXJhbCkKICAgICAvLyBDYXNlcyBmb3IgOEJpdCBzb3VyY2UuCiAgICAgU3RyaW5nIHRlc3RT
dHJpbmcgPSAiMTIyNCJfczsKICAgICBFWFBFQ1RfVFJVRSh0ZXN0U3RyaW5nLmlzOEJpdCgpKTsK
LSAgICB0ZXN0U3RyaW5nLnJlcGxhY2VXaXRoTGl0ZXJhbCgnMicsICIiKTsKKyAgICB0ZXN0U3Ry
aW5nLnJlcGxhY2UoJzInLCAiIl9zKTsKICAgICBFWFBFQ1RfU1RSRVEoIjE0IiwgdGVzdFN0cmlu
Zy51dGY4KCkuZGF0YSgpKTsKIAogICAgIHRlc3RTdHJpbmcgPSAiMTIyNCJfczsKICAgICBFWFBF
Q1RfVFJVRSh0ZXN0U3RyaW5nLmlzOEJpdCgpKTsKLSAgICB0ZXN0U3RyaW5nLnJlcGxhY2VXaXRo
TGl0ZXJhbCgnMicsICIzIik7CisgICAgdGVzdFN0cmluZy5yZXBsYWNlKCcyJywgIjMiX3MpOwog
ICAgIEVYUEVDVF9TVFJFUSgiMTMzNCIsIHRlc3RTdHJpbmcudXRmOCgpLmRhdGEoKSk7CiAKICAg
ICB0ZXN0U3RyaW5nID0gIjEyMjQiX3M7CiAgICAgRVhQRUNUX1RSVUUodGVzdFN0cmluZy5pczhC
aXQoKSk7Ci0gICAgdGVzdFN0cmluZy5yZXBsYWNlV2l0aExpdGVyYWwoJzInLCAiNTU1Iik7Cisg
ICAgdGVzdFN0cmluZy5yZXBsYWNlKCcyJywgIjU1NSJfcyk7CiAgICAgRVhQRUNUX1NUUkVRKCIx
NTU1NTU1NCIsIHRlc3RTdHJpbmcudXRmOCgpLmRhdGEoKSk7CiAKICAgICB0ZXN0U3RyaW5nID0g
IjEyMjQiX3M7CiAgICAgRVhQRUNUX1RSVUUodGVzdFN0cmluZy5pczhCaXQoKSk7Ci0gICAgdGVz
dFN0cmluZy5yZXBsYWNlV2l0aExpdGVyYWwoJzMnLCAiTm90Rm91bmQiKTsKKyAgICB0ZXN0U3Ry
aW5nLnJlcGxhY2UoJzMnLCAiTm90Rm91bmQiX3MpOwogICAgIEVYUEVDVF9TVFJFUSgiMTIyNCIs
IHRlc3RTdHJpbmcudXRmOCgpLmRhdGEoKSk7CiAKICAgICAvLyBDYXNlcyBmb3IgMTZCaXQgc291
cmNlLgogICAgIHRlc3RTdHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4KCJyw6lzdW3DqSIpOwogICAg
IEVYUEVDVF9GQUxTRSh0ZXN0U3RyaW5nLmlzOEJpdCgpKTsKLSAgICB0ZXN0U3RyaW5nLnJlcGxh
Y2VXaXRoTGl0ZXJhbChVQ2hhcigweDAwRTkgLypVKzAwRTkgaXMgJ8OpJyovKSwgImUiKTsKKyAg
ICB0ZXN0U3RyaW5nLnJlcGxhY2UoVUNoYXIoMHgwMEU5IC8qVSswMEU5IGlzICfDqScqLyksICJl
Il9zKTsKICAgICBFWFBFQ1RfU1RSRVEoInJlc3VtZSIsIHRlc3RTdHJpbmcudXRmOCgpLmRhdGEo
KSk7CiAKICAgICB0ZXN0U3RyaW5nID0gU3RyaW5nOjpmcm9tVVRGOCgicsOpc3Vtw6kiKTsKICAg
ICBFWFBFQ1RfRkFMU0UodGVzdFN0cmluZy5pczhCaXQoKSk7Ci0gICAgdGVzdFN0cmluZy5yZXBs
YWNlV2l0aExpdGVyYWwoVUNoYXIoMHgwMEU5IC8qVSswMEU5IGlzICfDqScqLyksICIiKTsKKyAg
ICB0ZXN0U3RyaW5nLnJlcGxhY2UoVUNoYXIoMHgwMEU5IC8qVSswMEU5IGlzICfDqScqLyksICIi
X3MpOwogICAgIEVYUEVDVF9TVFJFUSgicnN1bSIsIHRlc3RTdHJpbmcudXRmOCgpLmRhdGEoKSk7
CiAKICAgICB0ZXN0U3RyaW5nID0gU3RyaW5nOjpmcm9tVVRGOCgicsOpc3Vtw6kiKTsKICAgICBF
WFBFQ1RfRkFMU0UodGVzdFN0cmluZy5pczhCaXQoKSk7Ci0gICAgdGVzdFN0cmluZy5yZXBsYWNl
V2l0aExpdGVyYWwoJzMnLCAiTm90Rm91bmQiKTsKKyAgICB0ZXN0U3RyaW5nLnJlcGxhY2UoJzMn
LCAiTm90Rm91bmQiX3MpOwogICAgIEVYUEVDVF9TVFJFUSgicsOpc3Vtw6kiLCB0ZXN0U3RyaW5n
LnV0ZjgoKS5kYXRhKCkpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457920</attachid>
            <date>2022-04-19 11:33:14 -0700</date>
            <delta_ts>2022-04-19 13:14:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239500-20220419113313.patch</filename>
            <type>text/plain</type>
            <size>18556</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzMDI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGIxNDBiMjQwNjZjZjMyMDRiMDZhMDRj
YmQwM2E4NTQzNjdiNGJiZTkuLmU0ZjRjZGVhMDg1YTdjMDlkMDEwNjhjMmRmNmVkYjNhMTZiZWM3
NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMjItMDQtMTkgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIFN0cmluZzo6cmVwbGFjZVdpdGhMaXRlcmFs
KCkgd2l0aCBhIFN0cmluZzo6cmVwbGFjZSgpIG92ZXJsb2FkIHRoYXQgdGFrZXMgaW4gYW4gQVND
SUlMaXRlcmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzk1MDAKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBS
ZXBsYWNlIFN0cmluZzo6cmVwbGFjZVdpdGhMaXRlcmFsKCkgd2l0aCBhIFN0cmluZzo6cmVwbGFj
ZSgpIG92ZXJsb2FkIHRoYXQgdGFrZXMgaW4gYW4gQVNDSUlMaXRlcmFsLgorICAgICAgICByZXBs
YWNlV2l0aExpdGVyYWwoKSB3YXMgZW5jb3VyYWdpbmcgcGVvcGxlIG5vdCB0byB1c2UgQVNDSUlM
aXRlcmFsIGFuZCB0aGUgIiJfcyBzdWZmaXggYW5kIGNhbGxpbmcKKyAgICAgICAgcmVwbGFjZSgp
IHdpdGggYW4gQVNDSUlMaXRlcmFsIHdvdWxkIHJlc3VsdCBpbiBsZXNzIGVmZmljaWVudCBjb2Rl
LCB3aGljaCBnb2VzIGFnYWluc3QgdGhlIGlkZWEgb2YKKyAgICAgICAgQVNDSUlMaXRlcmFsLgor
CisgICAgICAgIFRvIGFkZHJlc3MgdGhpcywgU3RyaW5nOjpyZXBsYWNlV2l0aExpdGVyYWwoKSBp
cyByZW1vdmVkLiBOb3csIGNhbGxlcnMgY2FuIGNhbGwgU3RyaW5nOjpyZXBsYWNlKCkKKyAgICAg
ICAgd2l0aCBhbiBBU0NJSUxpdGVyYWwgaW5zdGVhZCBhbmQgaXQgd2lsbCByZXN1bHQgaW4gY29k
ZSB0aGF0IGlzIGFzIGVmZmljaWVudC4gSSBoYXZlIHZlcmlmaWVkIHRoYXQKKyAgICAgICAgdGhp
cyBjaGFuZ2UgaXMgcGVyZi1uZXV0cmFsIG9uIFNwZWVkb21ldGVyIG9uIGJvdGggQXBwbGUgU2ls
aWNvbiBhbmQgSW50ZWwuCisKKyAgICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuaDoKKyAgICAg
ICAgKFdURjo6U3RyaW5nOjpyZXBsYWNlKToKKyAgICAgICAgKFdURjo6U3RyaW5nOjpyZXBsYWNl
V2l0aExpdGVyYWwpOiBEZWxldGVkLgorCiAyMDIyLTA0LTE5ICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CiAKICAgICAgICAgSW50cm9kdWNlIG1ha2VBdG9tU3RyaW5nKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCBjOTNkN2MwNzZhNzFiYTYwNmU0ZjkzNWIyOWI4YTRkMGVjOTJmYmMyLi41MmFjZjM2
YjBlNzc2ZGNhNzIzMDU2YzZlYjJhMTAxMTdmMzM0OTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MzkgQEAKKzIwMjItMDQtMTkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAg
ICAgICBSZXBsYWNlIFN0cmluZzo6cmVwbGFjZVdpdGhMaXRlcmFsKCkgd2l0aCBhIFN0cmluZzo6
cmVwbGFjZSgpIG92ZXJsb2FkIHRoYXQgdGFrZXMgaW4gYW4gQVNDSUlMaXRlcmFsCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzk1MDAKKworICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmVuY29kZURhdGFiYXNlTmFtZSk6CisgICAg
ICAgICogZGlzcGxheS9jc3MvRGlzcGxheVRleHRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheTo6VGV4dEJveDo6ZGVidWdEZXNjcmlwdGlvbiBjb25zdCk6CisgICAgICAgICogZG9t
L05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6c2hvd05vZGUgY29uc3QpOgorICAg
ICAgICAqIGRvbS9UZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZFRleHRSZXByZXNl
bnRhdGlvbik6CisgICAgICAgICogZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVDaGFuZ2U6OmV4dHJhY3RUZXh0U3R5bGVzKToKKyAgICAgICAgKiBlZGl0
aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNlbGVjdGVkVGV4dCBj
b25zdCk6CisgICAgICAgICogZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kUXVvdGVkVVJMQXR0cmlidXRlVmFs
dWUpOgorICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjp0YWtlUmVzdWx0cyk6CisgICAgICAgICogaHRtbC9VUkxE
ZWNvbXBvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVSTERlY29tcG9zaXRpb246OnNl
dFNlYXJjaCk6CisgICAgICAgICogbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpvdXRwdXRMYXlvdXRCb3gpOgorICAgICAg
ICAqIGxvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRN
YWlsdG9Qb3N0Rm9ybURhdGFUb1VSTCk6CisgICAgICAgICogcmVuZGVyaW5nL0xlZ2FjeUlubGlu
ZVRleHRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6b3V0
cHV0TGluZUJveCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6Om91dHB1dFJlbmRlck9iamVjdCBjb25z
dCk6CisgICAgICAgICogeG1sL1hTTFRQcm9jZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
dHJhbnNmb3JtVGV4dFN0cmluZ1RvWEhUTUxEb2N1bWVudFN0cmluZyk6CisKIDIwMjItMDQtMTkg
IFRpbSBOZ3V5ZW4gIDxudGltQGFwcGxlLmNvbT4KIAogICAgICAgICB1c2VyLXNlbGVjdDogbm9u
ZSBzaG91bGRuJ3QgYWZmZWN0IGVkaXRhYmlsaXR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAppbmRl
eCA4MTA1NDJmMDAxYjcwMTU5NGZmMGVlNjI3OWRhNDRhNmI5ZmZmMGExLi4yZWNjYWUxNTE0NDQz
MjMyMTBhZGY0ODIxNmI1MmQwZWNlYzU2Nzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1dURlN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKQEAg
LTE5Myw5ICsxOTMsOSBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcmIHJlcGxhY2UoVUNoYXIgdGFy
Z2V0LCBVQ2hhciByZXBsYWNlbWVudCk7CiAgICAgU3RyaW5nJiByZXBsYWNlKFVDaGFyIHRhcmdl
dCwgU3RyaW5nVmlldyByZXBsYWNlbWVudCk7CisgICAgU3RyaW5nJiByZXBsYWNlKFVDaGFyIHRh
cmdldCwgQVNDSUlMaXRlcmFsKTsKICAgICBTdHJpbmcmIHJlcGxhY2UoU3RyaW5nVmlldyB0YXJn
ZXQsIFN0cmluZ1ZpZXcgcmVwbGFjZW1lbnQpOwogICAgIFN0cmluZyYgcmVwbGFjZSh1bnNpZ25l
ZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBTdHJpbmdWaWV3IHJlcGxhY2VtZW50KTsKLSAgICB0
ZW1wbGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJDb3VudD4gU3RyaW5nJiByZXBsYWNlV2l0aExpdGVy
YWwoVUNoYXIgdGFyZ2V0LCBjb25zdCBjaGFyICgmcmVwbGFjZW1lbnQpW2NoYXJhY3RlckNvdW50
XSk7CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCByZW1vdmUodW5zaWduZWQgcG9zaXRp
b24sIHVuc2lnbmVkIGxlbmd0aCA9IDEpOwogCkBAIC00OTAsMTAgKzQ5MCwxMCBAQCBpbmxpbmUg
U3RyaW5nJiBTdHJpbmc6OnJlcGxhY2UoVUNoYXIgdGFyZ2V0LCBVQ2hhciByZXBsYWNlbWVudCkK
ICAgICByZXR1cm4gKnRoaXM7CiB9CiAKLXRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlckNvdW50
PiBBTFdBWVNfSU5MSU5FIFN0cmluZyYgU3RyaW5nOjpyZXBsYWNlV2l0aExpdGVyYWwoVUNoYXIg
dGFyZ2V0LCBjb25zdCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVyQ291bnRdKQorQUxXQVlT
X0lOTElORSBTdHJpbmcmIFN0cmluZzo6cmVwbGFjZShVQ2hhciB0YXJnZXQsIEFTQ0lJTGl0ZXJh
bCBsaXRlcmFsKQogewogICAgIGlmIChtX2ltcGwpCi0gICAgICAgIG1faW1wbCA9IG1faW1wbC0+
cmVwbGFjZSh0YXJnZXQsIGNoYXJhY3RlcnMsIGNoYXJhY3RlckNvdW50IC0gMSk7CisgICAgICAg
IG1faW1wbCA9IG1faW1wbC0+cmVwbGFjZSh0YXJnZXQsIGxpdGVyYWwuY2hhcmFjdGVycygpLCBs
aXRlcmFsLmxlbmd0aCgpKTsKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3Rv
cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlE
QkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggY2JkNDYyNzkwNzg3NzgwMmYzOGM2YTRkZmI2NmMxYTIy
MzFkYjNjZi4uODcwOTcyZjMyMjEzZWRmZTBkMzQyOGViYjE5YTZiZGU1ODRkNjJmNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJh
Y2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTkxNyw3ICs5MTcsNyBAQCBTdHJpbmcg
U1FMaXRlSURCQmFja2luZ1N0b3JlOjplbmNvZGVEYXRhYmFzZU5hbWUoY29uc3QgU3RyaW5nJiBk
YXRhYmFzZU5hbWUpCiAgICAgICAgIHJldHVybiAiJTAwIl9zOwogCiAgICAgU3RyaW5nIGZpbGVu
YW1lID0gRmlsZVN5c3RlbTo6ZW5jb2RlRm9yRmlsZU5hbWUoZGF0YWJhc2VOYW1lKTsKLSAgICBm
aWxlbmFtZS5yZXBsYWNlV2l0aExpdGVyYWwoJy4nLCAiJTJFIik7CisgICAgZmlsZW5hbWUucmVw
bGFjZSgnLicsICIlMkUiX3MpOwogCiAgICAgcmV0dXJuIGZpbGVuYW1lOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheVRleHRCb3guY3BwIGIvU291cmNl
L1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheVRleHRCb3guY3BwCmluZGV4IDZhZWYwMWQwMDYz
ZWYwMmIxNjMwOGY3Zjc2YjkxYzkwOWE1OTQyYzQuLjZlNzBjMDlhNTlhNmRmZGY1ZGY4OGFhMjAw
MDQ2Y2Q4NzU1OTY4OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rp
c3BsYXlUZXh0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5
VGV4dEJveC5jcHAKQEAgLTU0LDggKzU0LDggQEAgU3RyaW5nIFRleHRCb3g6OmRlYnVnRGVzY3Jp
cHRpb24oKSBjb25zdAogCiAgICAgc3RyZWFtIDw8IGJveE5hbWUoKSA8PCAiICIgPDwgYWJzb2x1
dGVCb3hSZWN0KCkgPDwgIiAoIiA8PCB0aGlzIDw8ICIpIjsKICAgICBhdXRvIHRleHRDb250ZW50
ID0gdGV4dCgpLm9yaWdpbmFsQ29udGVudCgpLnN1YnN0cmluZyh0ZXh0KCkuc3RhcnQoKSwgdGV4
dCgpLmxlbmd0aCgpKS50b1N0cmluZygpOwotICAgIHRleHRDb250ZW50LnJlcGxhY2VXaXRoTGl0
ZXJhbCgnXFwnLCAiXFxcXCIpOwotICAgIHRleHRDb250ZW50LnJlcGxhY2VXaXRoTGl0ZXJhbCgn
XG4nLCAiXFxuIik7CisgICAgdGV4dENvbnRlbnQucmVwbGFjZSgnXFwnLCAiXFxcXCJfcyk7Cisg
ICAgdGV4dENvbnRlbnQucmVwbGFjZSgnXG4nLCAiXFxuIl9zKTsKICAgICBjb25zdCBzaXplX3Qg
bWF4UHJpbnRlZExlbmd0aCA9IDgwOwogICAgIGlmICh0ZXh0Q29udGVudC5sZW5ndGgoKSA+IG1h
eFByaW50ZWRMZW5ndGgpIHsKICAgICAgICAgYXV0byBzdWJzdHJpbmcgPSBTdHJpbmdWaWV3KHRl
eHRDb250ZW50KS5sZWZ0KG1heFByaW50ZWRMZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IGNi
NDdlYWFlYzBkZTcwNWIzNDgzNmY1NzAyN2I0ZGMxNTc4Yjk1MWUuLjg1ZmUyNWY1ZDA2YTg5MTJm
ZTlmOWI5MTBhNjNjZTlmYjU4NWFiZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTE3OTksOCArMTc5
OSw4IEBAIHZvaWQgTm9kZTo6c2hvd05vZGUoY29uc3QgY2hhciogcHJlZml4KSBjb25zdAogICAg
ICAgICBwcmVmaXggPSAiIjsKICAgICBpZiAoaXNUZXh0Tm9kZSgpKSB7CiAgICAgICAgIFN0cmlu
ZyB2YWx1ZSA9IG5vZGVWYWx1ZSgpOwotICAgICAgICB2YWx1ZS5yZXBsYWNlV2l0aExpdGVyYWwo
J1xcJywgIlxcXFwiKTsKLSAgICAgICAgdmFsdWUucmVwbGFjZVdpdGhMaXRlcmFsKCdcbicsICJc
XG4iKTsKKyAgICAgICAgdmFsdWUucmVwbGFjZSgnXFwnLCAiXFxcXCJfcyk7CisgICAgICAgIHZh
bHVlLnJlcGxhY2UoJ1xuJywgIlxcbiJfcyk7CiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXMl
c1x0JXAgXCIlc1wiXG4iLCBwcmVmaXgsIG5vZGVOYW1lKCkudXRmOCgpLmRhdGEoKSwgdGhpcywg
dmFsdWUudXRmOCgpLmRhdGEoKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgU3RyaW5nQnVpbGRl
ciBhdHRyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9UZXh0LmNwcAppbmRleCA0YjkwM2Y4ZmRmMmJhZDkzOWRkYWJhODBjZGU4
ODA1NDQxMjk3NmUyLi5lMDRkNWUzNmYzNmQwZTExYzRkYTBhY2U1YTE5ZTA0OTE1ZDM0MjI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1RleHQuY3BwCkBAIC0yMjgsOCArMjI4LDggQEAgc3RhdGljIHZvaWQgYXBwZW5kVGV4
dFJlcHJlc2VudGF0aW9uKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNvbnN0IFRleHQmIHRleHQp
CiAgICAgU3RyaW5nIHZhbHVlID0gdGV4dC5kYXRhKCk7CiAgICAgYnVpbGRlci5hcHBlbmQoIiBs
ZW5ndGg9Il9zLCB2YWx1ZS5sZW5ndGgoKSk7CiAKLSAgICB2YWx1ZS5yZXBsYWNlV2l0aExpdGVy
YWwoJ1xcJywgIlxcXFwiKTsKLSAgICB2YWx1ZS5yZXBsYWNlV2l0aExpdGVyYWwoJ1xuJywgIlxc
biIpOworICAgIHZhbHVlLnJlcGxhY2UoJ1xcJywgIlxcXFwiX3MpOworICAgIHZhbHVlLnJlcGxh
Y2UoJ1xuJywgIlxcbiJfcyk7CiAgICAgCiAgICAgY29uc3RleHByIHNpemVfdCBtYXhEdW1wTGVu
Z3RoID0gMzA7CiAgICAgaWYgKHZhbHVlLmxlbmd0aCgpID4gbWF4RHVtcExlbmd0aCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAppbmRleCA5NTBiZDBmNGJkYTg4MDVmOGY4
NTljNjkyNWM5N2E1OTI4OTA5MDIwLi45NDhjOGJiMmRhZWU4OWE2ZWMwNDc1OWNkM2FhNmYyMWM4
NTU0N2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCkBAIC0xODUz
LDcgKzE4NTMsNyBAQCB2b2lkIFN0eWxlQ2hhbmdlOjpleHRyYWN0VGV4dFN0eWxlcyhEb2N1bWVu
dCYgZG9jdW1lbnQsIE11dGFibGVTdHlsZVByb3BlcnRpZXMmCiAKICAgICBtX2FwcGx5Rm9udEZh
Y2UgPSBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5Rm9udEZhbWlseSk7CiAgICAg
Ly8gUmVtb3ZlIHF1b3RlcyBmb3IgT3V0bG9vayAyMDA3IGNvbXBhdGliaWxpdHkuIFNlZSBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk0NDgKLSAgICBtX2FwcGx5Rm9u
dEZhY2UucmVwbGFjZVdpdGhMaXRlcmFsKCdcIicsICIiKTsKKyAgICBtX2FwcGx5Rm9udEZhY2Uu
cmVwbGFjZSgnXCInLCAiIl9zKTsKICAgICBzdHlsZS5yZW1vdmVQcm9wZXJ0eShDU1NQcm9wZXJ0
eUZvbnRGYW1pbHkpOwogCiAgICAgaWYgKFJlZlB0cjxDU1NWYWx1ZT4gZm9udFNpemUgPSBzdHls
ZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5Rm9udFNpemUpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5jcHAKaW5kZXggNWRmN2EzNTA4ZGE3OGIzMjUwMjI4NjYwZjA0NGFiNGQ0MzVj
NTRmMi4uYTg4ZWQ0NDdjOTlkZjkxMDMzODEzMzE2ZWIwNTc0NWFlZTY5ZTdiZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMzMyNSw3ICszMzI1LDcgQEAgU3RyaW5nIEVkaXRvcjo6
c2VsZWN0ZWRUZXh0KFRleHRJdGVyYXRvckJlaGF2aW9ycyBiZWhhdmlvcnMpIGNvbnN0CiB7CiAg
ICAgLy8gV2UgcmVtb3ZlICdcMCcgY2hhcmFjdGVycyBiZWNhdXNlIHRoZXkgYXJlIG5vdCB2aXNp
Ymx5IHJlbmRlcmVkIHRvIHRoZSB1c2VyLgogICAgIGF1dG8gcmFuZ2UgPSBtX2RvY3VtZW50LnNl
bGVjdGlvbigpLnNlbGVjdGlvbigpLmZpcnN0UmFuZ2UoKTsKLSAgICByZXR1cm4gcmFuZ2UgPyBw
bGFpblRleHQoKnJhbmdlLCBiZWhhdmlvcnMpLnJlcGxhY2VXaXRoTGl0ZXJhbCgnXDAnLCAiIikg
OiBlbXB0eVN0cmluZygpOworICAgIHJldHVybiByYW5nZSA/IHBsYWluVGV4dCgqcmFuZ2UsIGJl
aGF2aW9ycykucmVwbGFjZSgnXDAnLCAiIl9zKSA6IGVtcHR5U3RyaW5nKCk7CiB9CiAKIFJlZlB0
cjxUZXh0UGxhY2Vob2xkZXJFbGVtZW50PiBFZGl0b3I6Omluc2VydFRleHRQbGFjZWhvbGRlcihj
b25zdCBJbnRTaXplJiBzaXplKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9N
YXJrdXBBY2N1bXVsYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3Vt
dWxhdG9yLmNwcAppbmRleCAzZTY5NjFkMTczMGQ0Mzc0YzY0ZmY4N2EyZDBhZjEyN2VjMTA1NDQw
Li4yNGNlZDg2OWI4MmY5YTNhNGMyMzEzODc0ZmEwMWIzNmY4OTkwYzIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcApAQCAtMjg5LDcgKzI4OSw3IEBA
IHZvaWQgTWFya3VwQWNjdW11bGF0b3I6OmFwcGVuZFF1b3RlZFVSTEF0dHJpYnV0ZVZhbHVlKFN0
cmluZ0J1aWxkZXImIHJlc3VsdCwgY29uCiAgICAgICAgIC8vIG1pbmltYWwgZXNjYXBpbmcgZm9y
IGphdmFzY3JpcHQgdXJscwogICAgICAgICBpZiAocmVzb2x2ZWRVUkxTdHJpbmcuY29udGFpbnMo
JyInKSkgewogICAgICAgICAgICAgaWYgKHJlc29sdmVkVVJMU3RyaW5nLmNvbnRhaW5zKCdcJycp
KQotICAgICAgICAgICAgICAgIHJlc29sdmVkVVJMU3RyaW5nLnJlcGxhY2VXaXRoTGl0ZXJhbCgn
IicsICImcXVvdDsiKTsKKyAgICAgICAgICAgICAgICByZXNvbHZlZFVSTFN0cmluZy5yZXBsYWNl
KCciJywgIiZxdW90OyJfcyk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgcXVv
dGVDaGFyID0gJ1wnJzsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9tYXJrdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCmluZGV4
IGI0Yzk2NGQyMWEwNDNlYzdhYjk3OTA1YmFjZTY3NDE5MGE5NTZmNWYuLjRmMWMyMTg1N2YxZTYw
NjIyZTY0OGNlMGYxNDAyYzQ4ZTNlZTBiNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvbWFya3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAK
QEAgLTQyMCw3ICs0MjAsNyBAQCBTdHJpbmcgU3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OnRha2VS
ZXN1bHRzKCkKICAgICAgICAgcmVzdWx0LmFwcGVuZChzdHJpbmcpOwogICAgIHJlc3VsdC5hcHBl
bmQodGFrZU1hcmt1cCgpKTsKICAgICAvLyBSZW1vdmUgJ1wwJyBjaGFyYWN0ZXJzIGJlY2F1c2Ug
dGhleSBhcmUgbm90IHZpc2libHkgcmVuZGVyZWQgdG8gdGhlIHVzZXIuCi0gICAgcmV0dXJuIHJl
c3VsdC50b1N0cmluZygpLnJlcGxhY2VXaXRoTGl0ZXJhbCgnXDAnLCAiIik7CisgICAgcmV0dXJu
IHJlc3VsdC50b1N0cmluZygpLnJlcGxhY2UoJ1wwJywgIiJfcyk7CiB9CiAKIHZvaWQgU3R5bGVk
TWFya3VwQWNjdW11bGF0b3I6OmFwcGVuZFRleHQoU3RyaW5nQnVpbGRlciYgb3V0LCBjb25zdCBU
ZXh0JiB0ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxEZWNvbXBvc2l0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMRGVjb21wb3NpdGlvbi5jcHAKaW5kZXgg
OTM1Y2U1ZGNiNzI1OWE1ZWQ2MDk5NWEyODU3OGI2NjBjZTU5MDRiNy4uZjM0OTkxYTA3N2Y1NzQw
OGY4MGY0YWZmODlmN2ZjYTI0NjMzMzBkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9VUkxEZWNvbXBvc2l0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTERlY29t
cG9zaXRpb24uY3BwCkBAIC0yMzUsNyArMjM1LDcgQEAgdm9pZCBVUkxEZWNvbXBvc2l0aW9uOjpz
ZXRTZWFyY2goY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICB9IGVsc2UgewogICAgICAgICBTdHJp
bmcgbmV3U2VhcmNoID0gdmFsdWU7CiAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0ICcjJyBpbiB0
aGUgcXVlcnkgZG9lcyBub3QgbGVhayB0byB0aGUgaGFzaC4KLSAgICAgICAgZnVsbFVSTC5zZXRR
dWVyeShuZXdTZWFyY2gucmVwbGFjZVdpdGhMaXRlcmFsKCcjJywgIiUyMyIpKTsKKyAgICAgICAg
ZnVsbFVSTC5zZXRRdWVyeShuZXdTZWFyY2gucmVwbGFjZSgnIycsICIlMjMiX3MpKTsKICAgICB9
CiAgICAgc2V0RnVsbFVSTChmdWxsVVJMKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcAppbmRleCA2OTQyYjFmMjk2
ZTUyZjQ3NmM5Mjk2MDhkMGY5MTkyZjQ0ZDAyNWQyLi5mODNjZDE2ZDdmZGY4ODZkMzQwNTQ1NjNl
OGJhNDFkYWE5ZjgwMTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0
dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xh
eW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCkBAIC00OTgsOCArNDk4LDggQEAgc3RhdGlj
IHZvaWQgb3V0cHV0TGF5b3V0Qm94KFRleHRTdHJlYW0mIHN0cmVhbSwgY29uc3QgQm94JiBsYXlv
dXRCb3gsIGNvbnN0IEJveEcKICAgICAgICAgYXV0byB0ZXh0Q29udGVudCA9IGRvd25jYXN0PElu
bGluZVRleHRCb3g+KGxheW91dEJveCkuY29udGVudCgpOwogICAgICAgICBzdHJlYW0gPDwgIiBs
ZW5ndGgtPigiIDw8IHRleHRDb250ZW50Lmxlbmd0aCgpIDw8ICIpIjsKIAotICAgICAgICB0ZXh0
Q29udGVudC5yZXBsYWNlV2l0aExpdGVyYWwoJ1xcJywgIlxcXFwiKTsKLSAgICAgICAgdGV4dENv
bnRlbnQucmVwbGFjZVdpdGhMaXRlcmFsKCdcbicsICJcXG4iKTsKKyAgICAgICAgdGV4dENvbnRl
bnQucmVwbGFjZSgnXFwnLCAiXFxcXCJfcyk7CisgICAgICAgIHRleHRDb250ZW50LnJlcGxhY2Uo
J1xuJywgIlxcbiJfcyk7CiAKICAgICAgICAgY29uc3Qgc2l6ZV90IG1heFByaW50ZWRMZW5ndGgg
PSA4MDsKICAgICAgICAgaWYgKHRleHRDb250ZW50Lmxlbmd0aCgpID4gbWF4UHJpbnRlZExlbmd0
aCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAKaW5kZXggNmU2MjZm
ODQ0OWM1NTBkMjhlZjRlNjQ3ZjE3NjAxMDFiY2ExM2M0MC4uMmMwMTJmZGU1ZDc3OGIwNjdiNWE1
YTc4ODZkOWZjZmQzY2YxZTkzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zv
cm1TdWJtaXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Np
b24uY3BwCkBAIC03MCwxMyArNzAsMTMgQEAgc3RhdGljIHZvaWQgYXBwZW5kTWFpbHRvUG9zdEZv
cm1EYXRhVG9VUkwoVVJMJiB1cmwsIGNvbnN0IEZvcm1EYXRhJiBkYXRhLCBjb25zdAogCiAgICAg
aWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGVuY29kaW5nVHlwZSwgInRleHQvcGxh
aW4iKSkgewogICAgICAgICAvLyBDb252ZW50aW9uIHNlZW1zIHRvIGJlIHRvIGRlY29kZSwgYW5k
IHMvJi9cclxuLy4gQWxzbywgc3BhY2VzIGFyZSBlbmNvZGVkIGFzICUyMC4KLSAgICAgICAgYm9k
eSA9IFBBTDo6ZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKGJvZHkucmVwbGFjZVdpdGhMaXRlcmFs
KCcmJywgIlxyXG4iKS5yZXBsYWNlKCcrJywgJyAnKSk7CisgICAgICAgIGJvZHkgPSBQQUw6OmRl
Y29kZVVSTEVzY2FwZVNlcXVlbmNlcyhib2R5LnJlcGxhY2UoJyYnLCAiXHJcbiJfcykucmVwbGFj
ZSgnKycsICcgJykpOwogICAgIH0KIAogICAgIFZlY3RvcjxjaGFyPiBib2R5RGF0YTsKICAgICBi
b2R5RGF0YS5hcHBlbmQoImJvZHk9IiwgNSk7CiAgICAgRm9ybURhdGFCdWlsZGVyOjplbmNvZGVT
dHJpbmdBc0Zvcm1EYXRhKGJvZHlEYXRhLCBib2R5LnV0ZjgoKSk7Ci0gICAgYm9keSA9IFN0cmlu
Zyhib2R5RGF0YS5kYXRhKCksIGJvZHlEYXRhLnNpemUoKSkucmVwbGFjZVdpdGhMaXRlcmFsKCcr
JywgIiUyMCIpOworICAgIGJvZHkgPSBTdHJpbmcoYm9keURhdGEuZGF0YSgpLCBib2R5RGF0YS5z
aXplKCkpLnJlcGxhY2UoJysnLCAiJTIwIl9zKTsKIAogICAgIGF1dG8gcXVlcnkgPSB1cmwucXVl
cnkoKTsKICAgICBpZiAocXVlcnkuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZVRleHRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0xlZ2FjeUlubGluZVRleHRCb3guY3BwCmluZGV4IGJlZTExNDdmZWEzNWMyYWI1N2Rm
ZjhiMzFiYjgzZGY3MTE0MGM1NDEuLmZkY2Y0NTc2Y2QzMzJhNzY2MjlhN2RiNTIxNTVkZDE0Njk0
ODllZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lJbmxpbmVU
ZXh0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lVGV4
dEJveC5jcHAKQEAgLTUyOCw4ICs1MjgsOCBAQCB2b2lkIExlZ2FjeUlubGluZVRleHRCb3g6Om91
dHB1dExpbmVCb3goVGV4dFN0cmVhbSYgc3RyZWFtLCBib29sIG1hcmssIGludCBkZXB0aAogCiAg
ICAgU3RyaW5nIHZhbHVlID0gcmVuZGVyZXIoKS50ZXh0KCk7CiAgICAgdmFsdWUgPSB2YWx1ZS5z
dWJzdHJpbmcoc3RhcnQoKSwgbGVuKCkpOwotICAgIHZhbHVlLnJlcGxhY2VXaXRoTGl0ZXJhbCgn
XFwnLCAiXFxcXCIpOwotICAgIHZhbHVlLnJlcGxhY2VXaXRoTGl0ZXJhbCgnXG4nLCAiXFxuIik7
CisgICAgdmFsdWUucmVwbGFjZSgnXFwnLCAiXFxcXCJfcyk7CisgICAgdmFsdWUucmVwbGFjZSgn
XG4nLCAiXFxuIl9zKTsKICAgICBzdHJlYW0gPDwgYm94TmFtZSgpIDw8ICIgIiA8PCBGbG9hdFJl
Y3QoeCgpLCB5KCksIHdpZHRoKCksIGhlaWdodCgpKSA8PCAiICgiIDw8IHRoaXMgPDwgIikgcmVu
ZGVyZXItPigiIDw8ICZyZW5kZXJlcigpIDw8ICIpIHJ1bigiIDw8IHN0YXJ0KCkgPDwgIiwgIiA8
PCBzdGFydCgpICsgbGVuKCkgPDwgIikgXCIiIDw8IHZhbHVlLnV0ZjgoKS5kYXRhKCkgPDwgIlwi
IjsKICAgICBzdHJlYW0ubmV4dExpbmUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck9iamVjdC5jcHAKaW5kZXggYTU5NzE2M2IwYzQzYjJhZDM1NGE2M2RkYTczOGI2MzkzYjll
MzgzNy4uMDM1ZWZlMzg1N2YwN2ZhYjQ4NzRlODI0MmU0ODQxMGM2NWEyNzdlNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTEyNjUsOCArMTI2NSw4IEBA
IHZvaWQgUmVuZGVyT2JqZWN0OjpvdXRwdXRSZW5kZXJPYmplY3QoVGV4dFN0cmVhbSYgc3RyZWFt
LCBib29sIG1hcmssIGludCBkZXB0aCkKICAgICAgICAgICAgIFN0cmluZyB2YWx1ZSA9IG5vZGUo
KS0+bm9kZVZhbHVlKCk7CiAgICAgICAgICAgICBzdHJlYW0gPDwgIiBsZW5ndGgtPigiIDw8IHZh
bHVlLmxlbmd0aCgpIDw8ICIpIjsKIAotICAgICAgICAgICAgdmFsdWUucmVwbGFjZVdpdGhMaXRl
cmFsKCdcXCcsICJcXFxcIik7Ci0gICAgICAgICAgICB2YWx1ZS5yZXBsYWNlV2l0aExpdGVyYWwo
J1xuJywgIlxcbiIpOworICAgICAgICAgICAgdmFsdWUucmVwbGFjZSgnXFwnLCAiXFxcXCJfcyk7
CisgICAgICAgICAgICB2YWx1ZS5yZXBsYWNlKCdcbicsICJcXG4iX3MpOwogICAgICAgICAgICAg
CiAgICAgICAgICAgICBjb25zdCBpbnQgbWF4UHJpbnRlZExlbmd0aCA9IDgwOwogICAgICAgICAg
ICAgaWYgKHZhbHVlLmxlbmd0aCgpID4gbWF4UHJpbnRlZExlbmd0aCkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUveG1s
L1hTTFRQcm9jZXNzb3IuY3BwCmluZGV4IGJlNThkNmY3NDQxY2QwODNiMjMyYTRjZDQ1ZDQwZTE0
ZjQ4YTViYTEuLjY0NzQyYTExYmFjOGIyODlmNzc4YzYyNzQ1YThiNzVjOGZhOTcwMTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nvci5jcHAKQEAgLTQ1LDggKzQ1LDggQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogc3RhdGljIGlubGluZSB2b2lkIHRyYW5zZm9ybVRleHRTdHJpbmdUb1hIVE1M
RG9jdW1lbnRTdHJpbmcoU3RyaW5nJiB0ZXh0KQogewogICAgIC8vIE1vZGlmeSB0aGUgb3V0cHV0
IHNvIHRoYXQgaXQgaXMgYSB3ZWxsLWZvcm1lZCBYSFRNTCBkb2N1bWVudCB3aXRoIGEgPHByZT4g
dGFnIGVuY2xvc2luZyB0aGUgdGV4dC4KLSAgICB0ZXh0LnJlcGxhY2VXaXRoTGl0ZXJhbCgnJics
ICImYW1wOyIpOwotICAgIHRleHQucmVwbGFjZVdpdGhMaXRlcmFsKCc8JywgIiZsdDsiKTsKKyAg
ICB0ZXh0LnJlcGxhY2UoJyYnLCAiJmFtcDsiX3MpOworICAgIHRleHQucmVwbGFjZSgnPCcsICIm
bHQ7Il9zKTsKICAgICB0ZXh0ID0gIjw/eG1sIHZlcnNpb249XCIxLjBcIiBlbmNvZGluZz1cIlVU
Ri04XCI/PlxuIgogICAgICAgICAiPCFET0NUWVBFIGh0bWwgUFVCTElDIFwiLS8vVzNDLy9EVEQg
WEhUTUwgMS4wIFN0cmljdC8vRU5cIiBcImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQv
eGh0bWwxLXN0cmljdC5kdGRcIj5cbiIKICAgICAgICAgIjxodG1sIHhtbG5zPVwiaHR0cDovL3d3
dy53My5vcmcvMTk5OS94aHRtbFwiPlxuIgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDU1MGFjMGVlZmQxYTA0ODMzM2ZlNzg0OTVlNGJiZGQ5M2U2
NWNhM2EuLjQ4YTY3ZWExMTQxZTBmYzcwOWMxMDg5OThlYTlmNTEyZDllYmI2ODMgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBA
QAorMjAyMi0wNC0xOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAg
IFJlcGxhY2UgU3RyaW5nOjpyZXBsYWNlV2l0aExpdGVyYWwoKSB3aXRoIGEgU3RyaW5nOjpyZXBs
YWNlKCkgb3ZlcmxvYWQgdGhhdCB0YWtlcyBpbiBhbiBBU0NJSUxpdGVyYWwKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTUwMAorCisgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvV1RGU3RyaW5nLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDIy
LTA0LTE5ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBb
ZXdzLWJ1aWxkLndlYmtpdC5vcmddIFJlc29sdmUgY29uZmxpY3RpbmcgTWl4aW4gaW5oZXJpdGFu
Y2UKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dURlN0cmluZy5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9XVEZTdHJpbmcuY3BwCmluZGV4IDVi
MjE3MmVjMDBiNzc0ZjRmZjkxMjVhZDUxYzU1ZGViN2QyMzZiMWQuLjZkZmQ0ZGMyNjIzN2I4YjEx
ZTFiZDNlYmQ4MjhkMmMyNjdiMzRjZjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL1dURlN0cmluZy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvV1RGU3RyaW5nLmNwcApAQCAtMjM5LDM4ICsyMzksMzggQEAgVEVTVChXVEYsIFN0cmluZ1Jl
cGxhY2VXaXRoTGl0ZXJhbCkKICAgICAvLyBDYXNlcyBmb3IgOEJpdCBzb3VyY2UuCiAgICAgU3Ry
aW5nIHRlc3RTdHJpbmcgPSAiMTIyNCJfczsKICAgICBFWFBFQ1RfVFJVRSh0ZXN0U3RyaW5nLmlz
OEJpdCgpKTsKLSAgICB0ZXN0U3RyaW5nLnJlcGxhY2VXaXRoTGl0ZXJhbCgnMicsICIiKTsKKyAg
ICB0ZXN0U3RyaW5nLnJlcGxhY2UoJzInLCAiIl9zKTsKICAgICBFWFBFQ1RfU1RSRVEoIjE0Iiwg
dGVzdFN0cmluZy51dGY4KCkuZGF0YSgpKTsKIAogICAgIHRlc3RTdHJpbmcgPSAiMTIyNCJfczsK
ICAgICBFWFBFQ1RfVFJVRSh0ZXN0U3RyaW5nLmlzOEJpdCgpKTsKLSAgICB0ZXN0U3RyaW5nLnJl
cGxhY2VXaXRoTGl0ZXJhbCgnMicsICIzIik7CisgICAgdGVzdFN0cmluZy5yZXBsYWNlKCcyJywg
IjMiX3MpOwogICAgIEVYUEVDVF9TVFJFUSgiMTMzNCIsIHRlc3RTdHJpbmcudXRmOCgpLmRhdGEo
KSk7CiAKICAgICB0ZXN0U3RyaW5nID0gIjEyMjQiX3M7CiAgICAgRVhQRUNUX1RSVUUodGVzdFN0
cmluZy5pczhCaXQoKSk7Ci0gICAgdGVzdFN0cmluZy5yZXBsYWNlV2l0aExpdGVyYWwoJzInLCAi
NTU1Iik7CisgICAgdGVzdFN0cmluZy5yZXBsYWNlKCcyJywgIjU1NSJfcyk7CiAgICAgRVhQRUNU
X1NUUkVRKCIxNTU1NTU1NCIsIHRlc3RTdHJpbmcudXRmOCgpLmRhdGEoKSk7CiAKICAgICB0ZXN0
U3RyaW5nID0gIjEyMjQiX3M7CiAgICAgRVhQRUNUX1RSVUUodGVzdFN0cmluZy5pczhCaXQoKSk7
Ci0gICAgdGVzdFN0cmluZy5yZXBsYWNlV2l0aExpdGVyYWwoJzMnLCAiTm90Rm91bmQiKTsKKyAg
ICB0ZXN0U3RyaW5nLnJlcGxhY2UoJzMnLCAiTm90Rm91bmQiX3MpOwogICAgIEVYUEVDVF9TVFJF
USgiMTIyNCIsIHRlc3RTdHJpbmcudXRmOCgpLmRhdGEoKSk7CiAKICAgICAvLyBDYXNlcyBmb3Ig
MTZCaXQgc291cmNlLgogICAgIHRlc3RTdHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4KCJyw6lzdW3D
qSIpOwogICAgIEVYUEVDVF9GQUxTRSh0ZXN0U3RyaW5nLmlzOEJpdCgpKTsKLSAgICB0ZXN0U3Ry
aW5nLnJlcGxhY2VXaXRoTGl0ZXJhbChVQ2hhcigweDAwRTkgLypVKzAwRTkgaXMgJ8OpJyovKSwg
ImUiKTsKKyAgICB0ZXN0U3RyaW5nLnJlcGxhY2UoVUNoYXIoMHgwMEU5IC8qVSswMEU5IGlzICfD
qScqLyksICJlIl9zKTsKICAgICBFWFBFQ1RfU1RSRVEoInJlc3VtZSIsIHRlc3RTdHJpbmcudXRm
OCgpLmRhdGEoKSk7CiAKICAgICB0ZXN0U3RyaW5nID0gU3RyaW5nOjpmcm9tVVRGOCgicsOpc3Vt
w6kiKTsKICAgICBFWFBFQ1RfRkFMU0UodGVzdFN0cmluZy5pczhCaXQoKSk7Ci0gICAgdGVzdFN0
cmluZy5yZXBsYWNlV2l0aExpdGVyYWwoVUNoYXIoMHgwMEU5IC8qVSswMEU5IGlzICfDqScqLyks
ICIiKTsKKyAgICB0ZXN0U3RyaW5nLnJlcGxhY2UoVUNoYXIoMHgwMEU5IC8qVSswMEU5IGlzICfD
qScqLyksICIiX3MpOwogICAgIEVYUEVDVF9TVFJFUSgicnN1bSIsIHRlc3RTdHJpbmcudXRmOCgp
LmRhdGEoKSk7CiAKICAgICB0ZXN0U3RyaW5nID0gU3RyaW5nOjpmcm9tVVRGOCgicsOpc3Vtw6ki
KTsKICAgICBFWFBFQ1RfRkFMU0UodGVzdFN0cmluZy5pczhCaXQoKSk7Ci0gICAgdGVzdFN0cmlu
Zy5yZXBsYWNlV2l0aExpdGVyYWwoJzMnLCAiTm90Rm91bmQiKTsKKyAgICB0ZXN0U3RyaW5nLnJl
cGxhY2UoJzMnLCAiTm90Rm91bmQiX3MpOwogICAgIEVYUEVDVF9TVFJFUSgicsOpc3Vtw6kiLCB0
ZXN0U3RyaW5nLnV0ZjgoKS5kYXRhKCkpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457931</attachid>
            <date>2022-04-19 13:14:47 -0700</date>
            <delta_ts>2022-04-19 13:36:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239500-20220419131446.patch</filename>
            <type>text/plain</type>
            <size>22892</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzMDMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGIxNDBiMjQwNjZjZjMyMDRiMDZhMDRj
YmQwM2E4NTQzNjdiNGJiZTkuLmU0ZjRjZGVhMDg1YTdjMDlkMDEwNjhjMmRmNmVkYjNhMTZiZWM3
NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMjItMDQtMTkgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIFN0cmluZzo6cmVwbGFjZVdpdGhMaXRlcmFs
KCkgd2l0aCBhIFN0cmluZzo6cmVwbGFjZSgpIG92ZXJsb2FkIHRoYXQgdGFrZXMgaW4gYW4gQVND
SUlMaXRlcmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzk1MDAKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBS
ZXBsYWNlIFN0cmluZzo6cmVwbGFjZVdpdGhMaXRlcmFsKCkgd2l0aCBhIFN0cmluZzo6cmVwbGFj
ZSgpIG92ZXJsb2FkIHRoYXQgdGFrZXMgaW4gYW4gQVNDSUlMaXRlcmFsLgorICAgICAgICByZXBs
YWNlV2l0aExpdGVyYWwoKSB3YXMgZW5jb3VyYWdpbmcgcGVvcGxlIG5vdCB0byB1c2UgQVNDSUlM
aXRlcmFsIGFuZCB0aGUgIiJfcyBzdWZmaXggYW5kIGNhbGxpbmcKKyAgICAgICAgcmVwbGFjZSgp
IHdpdGggYW4gQVNDSUlMaXRlcmFsIHdvdWxkIHJlc3VsdCBpbiBsZXNzIGVmZmljaWVudCBjb2Rl
LCB3aGljaCBnb2VzIGFnYWluc3QgdGhlIGlkZWEgb2YKKyAgICAgICAgQVNDSUlMaXRlcmFsLgor
CisgICAgICAgIFRvIGFkZHJlc3MgdGhpcywgU3RyaW5nOjpyZXBsYWNlV2l0aExpdGVyYWwoKSBp
cyByZW1vdmVkLiBOb3csIGNhbGxlcnMgY2FuIGNhbGwgU3RyaW5nOjpyZXBsYWNlKCkKKyAgICAg
ICAgd2l0aCBhbiBBU0NJSUxpdGVyYWwgaW5zdGVhZCBhbmQgaXQgd2lsbCByZXN1bHQgaW4gY29k
ZSB0aGF0IGlzIGFzIGVmZmljaWVudC4gSSBoYXZlIHZlcmlmaWVkIHRoYXQKKyAgICAgICAgdGhp
cyBjaGFuZ2UgaXMgcGVyZi1uZXV0cmFsIG9uIFNwZWVkb21ldGVyIG9uIGJvdGggQXBwbGUgU2ls
aWNvbiBhbmQgSW50ZWwuCisKKyAgICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuaDoKKyAgICAg
ICAgKFdURjo6U3RyaW5nOjpyZXBsYWNlKToKKyAgICAgICAgKFdURjo6U3RyaW5nOjpyZXBsYWNl
V2l0aExpdGVyYWwpOiBEZWxldGVkLgorCiAyMDIyLTA0LTE5ICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CiAKICAgICAgICAgSW50cm9kdWNlIG1ha2VBdG9tU3RyaW5nKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCA3ODk3MWFhZTYzOGVjZGM2NDgzZmY4Njk5MGY1M2UyMTQyMzk0OGEyLi5kOTUyMWE0
MTFhNmUzM2FjMTAzMTY0YjkxYzFhNjdhNDczN2ZjNDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MzkgQEAKKzIwMjItMDQtMTkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAg
ICAgICBSZXBsYWNlIFN0cmluZzo6cmVwbGFjZVdpdGhMaXRlcmFsKCkgd2l0aCBhIFN0cmluZzo6
cmVwbGFjZSgpIG92ZXJsb2FkIHRoYXQgdGFrZXMgaW4gYW4gQVNDSUlMaXRlcmFsCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzk1MDAKKworICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmVuY29kZURhdGFiYXNlTmFtZSk6CisgICAg
ICAgICogZGlzcGxheS9jc3MvRGlzcGxheVRleHRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheTo6VGV4dEJveDo6ZGVidWdEZXNjcmlwdGlvbiBjb25zdCk6CisgICAgICAgICogZG9t
L05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6c2hvd05vZGUgY29uc3QpOgorICAg
ICAgICAqIGRvbS9UZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZFRleHRSZXByZXNl
bnRhdGlvbik6CisgICAgICAgICogZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVDaGFuZ2U6OmV4dHJhY3RUZXh0U3R5bGVzKToKKyAgICAgICAgKiBlZGl0
aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNlbGVjdGVkVGV4dCBj
b25zdCk6CisgICAgICAgICogZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kUXVvdGVkVVJMQXR0cmlidXRlVmFs
dWUpOgorICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjp0YWtlUmVzdWx0cyk6CisgICAgICAgICogaHRtbC9VUkxE
ZWNvbXBvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVSTERlY29tcG9zaXRpb246OnNl
dFNlYXJjaCk6CisgICAgICAgICogbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpvdXRwdXRMYXlvdXRCb3gpOgorICAgICAg
ICAqIGxvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRN
YWlsdG9Qb3N0Rm9ybURhdGFUb1VSTCk6CisgICAgICAgICogcmVuZGVyaW5nL0xlZ2FjeUlubGlu
ZVRleHRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6b3V0
cHV0TGluZUJveCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6Om91dHB1dFJlbmRlck9iamVjdCBjb25z
dCk6CisgICAgICAgICogeG1sL1hTTFRQcm9jZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
dHJhbnNmb3JtVGV4dFN0cmluZ1RvWEhUTUxEb2N1bWVudFN0cmluZyk6CisKIDIwMjItMDQtMTkg
IFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10g
VGV4dCBzZWxlY3Rpb24gZmxpY2tlcnMgd2hlbiBpbnNlcnRpbmcgdGV4dCB1c2luZyBkaWN0YXRp
b24KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckF1ZGl0QWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yQXVkaXRBZ2VudC5jcHAKaW5kZXggODJjYzZhMGUzNjhjMjViODA4YTg0
NTEyNmEzZDYzZTMxMDVmNGMyYS4uN2IzMDI0MTRiMjUxZDk2ZTBhN2Q3N2VkNjhjNjZkY2E4Zjcz
OWE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yQXVkaXRBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yQXVkaXRBZ2VudC5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgUHJv
dG9jb2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxSZWY8UHJvdG9jb2w6OlJ1bnRpbWU6OlJl
bW90ZU9iamVjdD4sIHN0ZDo6b3AKICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgp
KQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoZXJyb3JTdHJpbmcpOwogCi0gICAgYXV0
byBmdW5jdGlvblN0cmluZyA9IG1ha2VTdHJpbmcoIihmdW5jdGlvbihXZWJJbnNwZWN0b3JBdWRp
dCkgeyBcInVzZSBzdHJpY3RcIjsgcmV0dXJuIGV2YWwoYCgiLCBTdHJpbmcgeyB0ZXN0IH0ucmVw
bGFjZSgnYCcsICJcXGAiKSwgIilgKShXZWJJbnNwZWN0b3JBdWRpdCk7IH0pIik7CisgICAgYXV0
byBmdW5jdGlvblN0cmluZyA9IG1ha2VTdHJpbmcoIihmdW5jdGlvbihXZWJJbnNwZWN0b3JBdWRp
dCkgeyBcInVzZSBzdHJpY3RcIjsgcmV0dXJuIGV2YWwoYCgiLCBTdHJpbmcgeyB0ZXN0IH0ucmVw
bGFjZSgnYCcsICJcXGAiX3MpLCAiKWApKFdlYkluc3BlY3RvckF1ZGl0KTsgfSkiKTsKIAogICAg
IEluamVjdGVkU2NyaXB0OjpFeGVjdXRlT3B0aW9ucyBvcHRpb25zOwogICAgIG9wdGlvbnMub2Jq
ZWN0R3JvdXAgPSAiYXVkaXQiX3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dU
RlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAppbmRleCA4MTA1NDJm
MDAxYjcwMTU5NGZmMGVlNjI3OWRhNDRhNmI5ZmZmMGExLi45MzNhMDhkYjhlYzZiYzIxNmNlNzBi
M2E0ZDJkYzkzNjQyYzlkNDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0
cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKQEAgLTE5Myw5ICsx
OTMsMTAgQEAgcHVibGljOgogCiAgICAgU3RyaW5nJiByZXBsYWNlKFVDaGFyIHRhcmdldCwgVUNo
YXIgcmVwbGFjZW1lbnQpOwogICAgIFN0cmluZyYgcmVwbGFjZShVQ2hhciB0YXJnZXQsIFN0cmlu
Z1ZpZXcgcmVwbGFjZW1lbnQpOworICAgIFN0cmluZyYgcmVwbGFjZShVQ2hhciB0YXJnZXQsIEFT
Q0lJTGl0ZXJhbCk7CisgICAgU3RyaW5nJiByZXBsYWNlKFVDaGFyIHRhcmdldCwgY29uc3QgY2hh
ciopID0gZGVsZXRlOwogICAgIFN0cmluZyYgcmVwbGFjZShTdHJpbmdWaWV3IHRhcmdldCwgU3Ry
aW5nVmlldyByZXBsYWNlbWVudCk7CiAgICAgU3RyaW5nJiByZXBsYWNlKHVuc2lnbmVkIHN0YXJ0
LCB1bnNpZ25lZCBsZW5ndGgsIFN0cmluZ1ZpZXcgcmVwbGFjZW1lbnQpOwotICAgIHRlbXBsYXRl
PHVuc2lnbmVkIGNoYXJhY3RlckNvdW50PiBTdHJpbmcmIHJlcGxhY2VXaXRoTGl0ZXJhbChVQ2hh
ciB0YXJnZXQsIGNvbnN0IGNoYXIgKCZyZXBsYWNlbWVudClbY2hhcmFjdGVyQ291bnRdKTsKIAog
ICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHJlbW92ZSh1bnNpZ25lZCBwb3NpdGlvbiwgdW5z
aWduZWQgbGVuZ3RoID0gMSk7CiAKQEAgLTQ5MCwxMCArNDkxLDEwIEBAIGlubGluZSBTdHJpbmcm
IFN0cmluZzo6cmVwbGFjZShVQ2hhciB0YXJnZXQsIFVDaGFyIHJlcGxhY2VtZW50KQogICAgIHJl
dHVybiAqdGhpczsKIH0KIAotdGVtcGxhdGU8dW5zaWduZWQgY2hhcmFjdGVyQ291bnQ+IEFMV0FZ
U19JTkxJTkUgU3RyaW5nJiBTdHJpbmc6OnJlcGxhY2VXaXRoTGl0ZXJhbChVQ2hhciB0YXJnZXQs
IGNvbnN0IGNoYXIgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJDb3VudF0pCitBTFdBWVNfSU5MSU5F
IFN0cmluZyYgU3RyaW5nOjpyZXBsYWNlKFVDaGFyIHRhcmdldCwgQVNDSUlMaXRlcmFsIGxpdGVy
YWwpCiB7CiAgICAgaWYgKG1faW1wbCkKLSAgICAgICAgbV9pbXBsID0gbV9pbXBsLT5yZXBsYWNl
KHRhcmdldCwgY2hhcmFjdGVycywgY2hhcmFjdGVyQ291bnQgLSAxKTsKKyAgICAgICAgbV9pbXBs
ID0gbV9pbXBsLT5yZXBsYWNlKHRhcmdldCwgbGl0ZXJhbC5jaGFyYWN0ZXJzKCksIGxpdGVyYWwu
bGVuZ3RoKCkpOwogICAgIHJldHVybiAqdGhpczsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2lu
Z1N0b3JlLmNwcAppbmRleCBjYmQ0NjI3OTA3ODc3ODAyZjM4YzZhNGRmYjY2YzFhMjIzMWRiM2Nm
Li44NzA5NzJmMzIyMTNlZGZlMGQzNDI4ZWJiMTlhNmJkZTU4NGQ2MmY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0
b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FM
aXRlSURCQmFja2luZ1N0b3JlLmNwcApAQCAtOTE3LDcgKzkxNyw3IEBAIFN0cmluZyBTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OmVuY29kZURhdGFiYXNlTmFtZShjb25zdCBTdHJpbmcmIGRhdGFiYXNl
TmFtZSkKICAgICAgICAgcmV0dXJuICIlMDAiX3M7CiAKICAgICBTdHJpbmcgZmlsZW5hbWUgPSBG
aWxlU3lzdGVtOjplbmNvZGVGb3JGaWxlTmFtZShkYXRhYmFzZU5hbWUpOwotICAgIGZpbGVuYW1l
LnJlcGxhY2VXaXRoTGl0ZXJhbCgnLicsICIlMkUiKTsKKyAgICBmaWxlbmFtZS5yZXBsYWNlKCcu
JywgIiUyRSJfcyk7CiAKICAgICByZXR1cm4gZmlsZW5hbWU7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5VGV4dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kaXNwbGF5L2Nzcy9EaXNwbGF5VGV4dEJveC5jcHAKaW5kZXggNmFlZjAxZDAwNjNlZjAyYjE2
MzA4ZjdmNzZiOTFjOTA5YTU5NDJjNC4uNmU3MGMwOWE1OWE2ZGZkZjVkZjg4YWEyMDAwNDZjZDg3
NTU5Njg5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheVRl
eHRCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlUZXh0Qm94
LmNwcApAQCAtNTQsOCArNTQsOCBAQCBTdHJpbmcgVGV4dEJveDo6ZGVidWdEZXNjcmlwdGlvbigp
IGNvbnN0CiAKICAgICBzdHJlYW0gPDwgYm94TmFtZSgpIDw8ICIgIiA8PCBhYnNvbHV0ZUJveFJl
Y3QoKSA8PCAiICgiIDw8IHRoaXMgPDwgIikiOwogICAgIGF1dG8gdGV4dENvbnRlbnQgPSB0ZXh0
KCkub3JpZ2luYWxDb250ZW50KCkuc3Vic3RyaW5nKHRleHQoKS5zdGFydCgpLCB0ZXh0KCkubGVu
Z3RoKCkpLnRvU3RyaW5nKCk7Ci0gICAgdGV4dENvbnRlbnQucmVwbGFjZVdpdGhMaXRlcmFsKCdc
XCcsICJcXFxcIik7Ci0gICAgdGV4dENvbnRlbnQucmVwbGFjZVdpdGhMaXRlcmFsKCdcbicsICJc
XG4iKTsKKyAgICB0ZXh0Q29udGVudC5yZXBsYWNlKCdcXCcsICJcXFxcIl9zKTsKKyAgICB0ZXh0
Q29udGVudC5yZXBsYWNlKCdcbicsICJcXG4iX3MpOwogICAgIGNvbnN0IHNpemVfdCBtYXhQcmlu
dGVkTGVuZ3RoID0gODA7CiAgICAgaWYgKHRleHRDb250ZW50Lmxlbmd0aCgpID4gbWF4UHJpbnRl
ZExlbmd0aCkgewogICAgICAgICBhdXRvIHN1YnN0cmluZyA9IFN0cmluZ1ZpZXcodGV4dENvbnRl
bnQpLmxlZnQobWF4UHJpbnRlZExlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggY2I0N2VhYWVj
MGRlNzA1YjM0ODM2ZjU3MDI3YjRkYzE1NzhiOTUxZS4uODVmZTI1ZjVkMDZhODkxMmZlOWY5Yjkx
MGE2M2NlOWZiNTg1YWJmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMTc5OSw4ICsxNzk5LDggQEAg
dm9pZCBOb2RlOjpzaG93Tm9kZShjb25zdCBjaGFyKiBwcmVmaXgpIGNvbnN0CiAgICAgICAgIHBy
ZWZpeCA9ICIiOwogICAgIGlmIChpc1RleHROb2RlKCkpIHsKICAgICAgICAgU3RyaW5nIHZhbHVl
ID0gbm9kZVZhbHVlKCk7Ci0gICAgICAgIHZhbHVlLnJlcGxhY2VXaXRoTGl0ZXJhbCgnXFwnLCAi
XFxcXCIpOwotICAgICAgICB2YWx1ZS5yZXBsYWNlV2l0aExpdGVyYWwoJ1xuJywgIlxcbiIpOwor
ICAgICAgICB2YWx1ZS5yZXBsYWNlKCdcXCcsICJcXFxcIl9zKTsKKyAgICAgICAgdmFsdWUucmVw
bGFjZSgnXG4nLCAiXFxuIl9zKTsKICAgICAgICAgZnByaW50ZihzdGRlcnIsICIlcyVzXHQlcCBc
IiVzXCJcbiIsIHByZWZpeCwgbm9kZU5hbWUoKS51dGY4KCkuZGF0YSgpLCB0aGlzLCB2YWx1ZS51
dGY4KCkuZGF0YSgpKTsKICAgICB9IGVsc2UgewogICAgICAgICBTdHJpbmdCdWlsZGVyIGF0dHJz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL1RleHQuY3BwCmluZGV4IDRiOTAzZjhmZGYyYmFkOTM5ZGRhYmE4MGNkZTg4MDU0NDEy
OTc2ZTIuLmUwNGQ1ZTM2ZjM2ZDBlMTFjNGRhMGFjZTVhMTllMDQ5MTVkMzQyMjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
VGV4dC5jcHAKQEAgLTIyOCw4ICsyMjgsOCBAQCBzdGF0aWMgdm9pZCBhcHBlbmRUZXh0UmVwcmVz
ZW50YXRpb24oU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgY29uc3QgVGV4dCYgdGV4dCkKICAgICBT
dHJpbmcgdmFsdWUgPSB0ZXh0LmRhdGEoKTsKICAgICBidWlsZGVyLmFwcGVuZCgiIGxlbmd0aD0i
X3MsIHZhbHVlLmxlbmd0aCgpKTsKIAotICAgIHZhbHVlLnJlcGxhY2VXaXRoTGl0ZXJhbCgnXFwn
LCAiXFxcXCIpOwotICAgIHZhbHVlLnJlcGxhY2VXaXRoTGl0ZXJhbCgnXG4nLCAiXFxuIik7Cisg
ICAgdmFsdWUucmVwbGFjZSgnXFwnLCAiXFxcXCJfcyk7CisgICAgdmFsdWUucmVwbGFjZSgnXG4n
LCAiXFxuIl9zKTsKICAgICAKICAgICBjb25zdGV4cHIgc2l6ZV90IG1heER1bXBMZW5ndGggPSAz
MDsKICAgICBpZiAodmFsdWUubGVuZ3RoKCkgPiBtYXhEdW1wTGVuZ3RoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCmluZGV4IDk1MGJkMGY0YmRhODgwNWY4Zjg1OWM2OTI1
Yzk3YTU5Mjg5MDkwMjAuLjk0OGM4YmIyZGFlZTg5YTZlYzA0NzU5Y2QzYWE2ZjIxYzg1NTQ3ZjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKQEAgLTE4NTMsNyArMTg1
Myw3IEBAIHZvaWQgU3R5bGVDaGFuZ2U6OmV4dHJhY3RUZXh0U3R5bGVzKERvY3VtZW50JiBkb2N1
bWVudCwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYKIAogICAgIG1fYXBwbHlGb250RmFjZSA9IHN0
eWxlLmdldFByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlGb250RmFtaWx5KTsKICAgICAvLyBSZW1v
dmUgcXVvdGVzIGZvciBPdXRsb29rIDIwMDcgY29tcGF0aWJpbGl0eS4gU2VlIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTQ0OAotICAgIG1fYXBwbHlGb250RmFjZS5y
ZXBsYWNlV2l0aExpdGVyYWwoJ1wiJywgIiIpOworICAgIG1fYXBwbHlGb250RmFjZS5yZXBsYWNl
KCdcIicsICIiX3MpOwogICAgIHN0eWxlLnJlbW92ZVByb3BlcnR5KENTU1Byb3BlcnR5Rm9udEZh
bWlseSk7CiAKICAgICBpZiAoUmVmUHRyPENTU1ZhbHVlPiBmb250U2l6ZSA9IHN0eWxlLmdldFBy
b3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlGb250U2l6ZSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmNwcAppbmRleCBkZGMzNjQ4N2VlMTdhMWRmZDM4Yjg2MTM0OGQxOTk5MDQxOWY0ZmY4Li4x
MTA4OTMwMDY4YmZkM2RmMjRjYmZlZTM2NWY4Y2E2YTRjODQ4YmMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuY3BwCkBAIC0zMzM0LDcgKzMzMzQsNyBAQCBTdHJpbmcgRWRpdG9yOjpzZWxlY3Rl
ZFRleHQoVGV4dEl0ZXJhdG9yQmVoYXZpb3JzIGJlaGF2aW9ycykgY29uc3QKIHsKICAgICAvLyBX
ZSByZW1vdmUgJ1wwJyBjaGFyYWN0ZXJzIGJlY2F1c2UgdGhleSBhcmUgbm90IHZpc2libHkgcmVu
ZGVyZWQgdG8gdGhlIHVzZXIuCiAgICAgYXV0byByYW5nZSA9IG1fZG9jdW1lbnQuc2VsZWN0aW9u
KCkuc2VsZWN0aW9uKCkuZmlyc3RSYW5nZSgpOwotICAgIHJldHVybiByYW5nZSA/IHBsYWluVGV4
dCgqcmFuZ2UsIGJlaGF2aW9ycykucmVwbGFjZVdpdGhMaXRlcmFsKCdcMCcsICIiKSA6IGVtcHR5
U3RyaW5nKCk7CisgICAgcmV0dXJuIHJhbmdlID8gcGxhaW5UZXh0KCpyYW5nZSwgYmVoYXZpb3Jz
KS5yZXBsYWNlKCdcMCcsICIiX3MpIDogZW1wdHlTdHJpbmcoKTsKIH0KIAogUmVmUHRyPFRleHRQ
bGFjZWhvbGRlckVsZW1lbnQ+IEVkaXRvcjo6aW5zZXJ0VGV4dFBsYWNlaG9sZGVyKGNvbnN0IElu
dFNpemUmIHNpemUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFj
Y3VtdWxhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3Iu
Y3BwCmluZGV4IDNlNjk2MWQxNzMwZDQzNzRjNjRmZjg3YTJkMGFmMTI3ZWMxMDU0NDAuLjI0Y2Vk
ODY5YjgyZjlhM2E0YzIzMTM4NzRmYTAxYjM2Zjg5OTBjMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCkBAIC0yODksNyArMjg5LDcgQEAgdm9pZCBN
YXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kUXVvdGVkVVJMQXR0cmlidXRlVmFsdWUoU3RyaW5nQnVp
bGRlciYgcmVzdWx0LCBjb24KICAgICAgICAgLy8gbWluaW1hbCBlc2NhcGluZyBmb3IgamF2YXNj
cmlwdCB1cmxzCiAgICAgICAgIGlmIChyZXNvbHZlZFVSTFN0cmluZy5jb250YWlucygnIicpKSB7
CiAgICAgICAgICAgICBpZiAocmVzb2x2ZWRVUkxTdHJpbmcuY29udGFpbnMoJ1wnJykpCi0gICAg
ICAgICAgICAgICAgcmVzb2x2ZWRVUkxTdHJpbmcucmVwbGFjZVdpdGhMaXRlcmFsKCciJywgIiZx
dW90OyIpOworICAgICAgICAgICAgICAgIHJlc29sdmVkVVJMU3RyaW5nLnJlcGxhY2UoJyInLCAi
JnF1b3Q7Il9zKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBxdW90ZUNoYXIg
PSAnXCcnOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21h
cmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKaW5kZXggYjRjOTY0
ZDIxYTA0M2VjN2FiOTc5MDViYWNlNjc0MTkwYTk1NmY1Zi4uNGYxYzIxODU3ZjFlNjA2MjJlNjQ4
Y2UwZjE0MDJjNDhlM2VlMGI2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9t
YXJrdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcApAQCAtNDIw
LDcgKzQyMCw3IEBAIFN0cmluZyBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6dGFrZVJlc3VsdHMo
KQogICAgICAgICByZXN1bHQuYXBwZW5kKHN0cmluZyk7CiAgICAgcmVzdWx0LmFwcGVuZCh0YWtl
TWFya3VwKCkpOwogICAgIC8vIFJlbW92ZSAnXDAnIGNoYXJhY3RlcnMgYmVjYXVzZSB0aGV5IGFy
ZSBub3QgdmlzaWJseSByZW5kZXJlZCB0byB0aGUgdXNlci4KLSAgICByZXR1cm4gcmVzdWx0LnRv
U3RyaW5nKCkucmVwbGFjZVdpdGhMaXRlcmFsKCdcMCcsICIiKTsKKyAgICByZXR1cm4gcmVzdWx0
LnRvU3RyaW5nKCkucmVwbGFjZSgnXDAnLCAiIl9zKTsKIH0KIAogdm9pZCBTdHlsZWRNYXJrdXBB
Y2N1bXVsYXRvcjo6YXBwZW5kVGV4dChTdHJpbmdCdWlsZGVyJiBvdXQsIGNvbnN0IFRleHQmIHRl
eHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTERlY29tcG9zaXRpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxEZWNvbXBvc2l0aW9uLmNwcAppbmRleCA5MzVjZTVk
Y2I3MjU5YTVlZDYwOTk1YTI4NTc4YjY2MGNlNTkwNGI3Li5mMzQ5OTFhMDc3ZjU3NDA4ZjgwZjRh
ZmY4OWY3ZmNhMjQ2MzMzMGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTERl
Y29tcG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMRGVjb21wb3NpdGlv
bi5jcHAKQEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lkIFVSTERlY29tcG9zaXRpb246OnNldFNlYXJj
aChjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIH0gZWxzZSB7CiAgICAgICAgIFN0cmluZyBuZXdT
ZWFyY2ggPSB2YWx1ZTsKICAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgJyMnIGluIHRoZSBxdWVy
eSBkb2VzIG5vdCBsZWFrIHRvIHRoZSBoYXNoLgotICAgICAgICBmdWxsVVJMLnNldFF1ZXJ5KG5l
d1NlYXJjaC5yZXBsYWNlV2l0aExpdGVyYWwoJyMnLCAiJTIzIikpOworICAgICAgICBmdWxsVVJM
LnNldFF1ZXJ5KG5ld1NlYXJjaC5yZXBsYWNlKCcjJywgIiUyMyJfcykpOwogICAgIH0KICAgICBz
ZXRGdWxsVVJMKGZ1bGxVUkwpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCmluZGV4IDY5NDJiMWYyOTZlNTJmNDc2
YzkyOTYwOGQwZjkxOTJmNDRkMDI1ZDIuLmY4M2NkMTZkN2ZkZjg4NmQzNDA1NDU2M2U4YmE0MWRh
YTlmODAxMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xh
eW91dFRyZWVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJl
ZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAKQEAgLTQ5OCw4ICs0OTgsOCBAQCBzdGF0aWMgdm9pZCBv
dXRwdXRMYXlvdXRCb3goVGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBCb3gmIGxheW91dEJveCwg
Y29uc3QgQm94RwogICAgICAgICBhdXRvIHRleHRDb250ZW50ID0gZG93bmNhc3Q8SW5saW5lVGV4
dEJveD4obGF5b3V0Qm94KS5jb250ZW50KCk7CiAgICAgICAgIHN0cmVhbSA8PCAiIGxlbmd0aC0+
KCIgPDwgdGV4dENvbnRlbnQubGVuZ3RoKCkgPDwgIikiOwogCi0gICAgICAgIHRleHRDb250ZW50
LnJlcGxhY2VXaXRoTGl0ZXJhbCgnXFwnLCAiXFxcXCIpOwotICAgICAgICB0ZXh0Q29udGVudC5y
ZXBsYWNlV2l0aExpdGVyYWwoJ1xuJywgIlxcbiIpOworICAgICAgICB0ZXh0Q29udGVudC5yZXBs
YWNlKCdcXCcsICJcXFxcIl9zKTsKKyAgICAgICAgdGV4dENvbnRlbnQucmVwbGFjZSgnXG4nLCAi
XFxuIl9zKTsKIAogICAgICAgICBjb25zdCBzaXplX3QgbWF4UHJpbnRlZExlbmd0aCA9IDgwOwog
ICAgICAgICBpZiAodGV4dENvbnRlbnQubGVuZ3RoKCkgPiBtYXhQcmludGVkTGVuZ3RoKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcAppbmRleCA2ZTYyNmY4NDQ5YzU1
MGQyOGVmNGU2NDdmMTc2MDEwMWJjYTEzYzQwLi4yYzAxMmZkZTVkNzc4YjA2N2I1YTVhNzg4NmQ5
ZmNmZDNjZjFlOTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1p
c3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAK
QEAgLTcwLDEzICs3MCwxMyBAQCBzdGF0aWMgdm9pZCBhcHBlbmRNYWlsdG9Qb3N0Rm9ybURhdGFU
b1VSTChVUkwmIHVybCwgY29uc3QgRm9ybURhdGEmIGRhdGEsIGNvbnN0CiAKICAgICBpZiAoZXF1
YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZW5jb2RpbmdUeXBlLCAidGV4dC9wbGFpbiIpKSB7
CiAgICAgICAgIC8vIENvbnZlbnRpb24gc2VlbXMgdG8gYmUgdG8gZGVjb2RlLCBhbmQgcy8mL1xy
XG4vLiBBbHNvLCBzcGFjZXMgYXJlIGVuY29kZWQgYXMgJTIwLgotICAgICAgICBib2R5ID0gUEFM
OjpkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMoYm9keS5yZXBsYWNlV2l0aExpdGVyYWwoJyYnLCAi
XHJcbiIpLnJlcGxhY2UoJysnLCAnICcpKTsKKyAgICAgICAgYm9keSA9IFBBTDo6ZGVjb2RlVVJM
RXNjYXBlU2VxdWVuY2VzKGJvZHkucmVwbGFjZSgnJicsICJcclxuIl9zKS5yZXBsYWNlKCcrJywg
JyAnKSk7CiAgICAgfQogCiAgICAgVmVjdG9yPGNoYXI+IGJvZHlEYXRhOwogICAgIGJvZHlEYXRh
LmFwcGVuZCgiYm9keT0iLCA1KTsKICAgICBGb3JtRGF0YUJ1aWxkZXI6OmVuY29kZVN0cmluZ0Fz
Rm9ybURhdGEoYm9keURhdGEsIGJvZHkudXRmOCgpKTsKLSAgICBib2R5ID0gU3RyaW5nKGJvZHlE
YXRhLmRhdGEoKSwgYm9keURhdGEuc2l6ZSgpKS5yZXBsYWNlV2l0aExpdGVyYWwoJysnLCAiJTIw
Iik7CisgICAgYm9keSA9IFN0cmluZyhib2R5RGF0YS5kYXRhKCksIGJvZHlEYXRhLnNpemUoKSku
cmVwbGFjZSgnKycsICIlMjAiX3MpOwogCiAgICAgYXV0byBxdWVyeSA9IHVybC5xdWVyeSgpOwog
ICAgIGlmIChxdWVyeS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCmluZGV4IDc4Mzg1NmEzMmY2
NTgxNDQ3MTg4YjUwNTQ0ZDEwMDE2NzYxMjJkOTAuLjZlYmQwZmE3MGU3MzFjN2QyMGZjYTNmYzM2
ZWZhMmY5ODRlOGE3ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCkBAIC0zMDksNyArMzA5LDcgQEAgU3Ry
aW5nIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzYW5pdGl6ZVN1Z2dlc3RlZEZpbGVuYW1lKGNvbnN0
IFN0cmluZyYgc3VnZ2VzdGVkRmkKIAogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UgeyB7
IHsgfSwgImh0dHA6Ly9leGFtcGxlLmNvbS8iX3MgfSwgeyB9LCAtMSwgeyB9IH07CiAgICAgcmVz
cG9uc2Uuc2V0SFRUUFN0YXR1c0NvZGUoMjAwKTsKLSAgICBTdHJpbmcgZXNjYXBlZFN1Z2dlc3Rl
ZEZpbGVuYW1lID0gU3RyaW5nKHN1Z2dlc3RlZEZpbGVuYW1lKS5yZXBsYWNlKCdcXCcsICJcXFxc
IikucmVwbGFjZSgnIicsICJcXFwiIik7CisgICAgU3RyaW5nIGVzY2FwZWRTdWdnZXN0ZWRGaWxl
bmFtZSA9IFN0cmluZyhzdWdnZXN0ZWRGaWxlbmFtZSkucmVwbGFjZSgnXFwnLCAiXFxcXCJfcyku
cmVwbGFjZSgnIicsICJcXFwiIl9zKTsKICAgICByZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQo
SFRUUEhlYWRlck5hbWU6OkNvbnRlbnREaXNwb3NpdGlvbiwgbWFrZVN0cmluZygiYXR0YWNobWVu
dDsgZmlsZW5hbWU9XCIiLCBlc2NhcGVkU3VnZ2VzdGVkRmlsZW5hbWUsICciJykpOwogICAgIHJl
dHVybiByZXNwb25zZS5zdWdnZXN0ZWRGaWxlbmFtZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9EYXRlVGltZUZvcm1hdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L0RhdGVUaW1lRm9ybWF0LmNwcAppbmRleCA0M2ExOGJjZWEwMTc5NjMw
YjkwZWVkYzYyNjQyYjNkYTc3ZTBiMTY0Li5kNTEwOGY0ZGEwYTU2NzI5NGM0ZDhhMGVmODBlM2U1
OGUyZDlkNTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0RhdGVU
aW1lRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0RhdGVUaW1l
Rm9ybWF0LmNwcApAQCAtMjY1LDcgKzI2NSw3IEBAIHZvaWQgRGF0ZVRpbWVGb3JtYXQ6OnF1b3Rl
QW5kQXBwZW5kTGl0ZXJhbChjb25zdCBTdHJpbmcmIGxpdGVyYWwsIFN0cmluZ0J1aWxkZXImCiAg
ICAgICAgIGlmIChsaXRlcmFsW2ldID09ICdcJycpCiAgICAgICAgICAgICBidWZmZXIuYXBwZW5k
KCInJyIpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoJ1wnJywg
U3RyaW5nIHsgbGl0ZXJhbC5zdWJzdHJpbmcoaSkgfS5yZXBsYWNlKCdcJycsICInJyIpLCAnXCcn
KTsKKyAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoJ1wnJywgU3RyaW5nIHsgbGl0ZXJhbC5zdWJz
dHJpbmcoaSkgfS5yZXBsYWNlKCdcJycsICInJyJfcyksICdcJycpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0xlZ2FjeUlubGluZVRleHRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xl
Z2FjeUlubGluZVRleHRCb3guY3BwCmluZGV4IGJlZTExNDdmZWEzNWMyYWI1N2RmZjhiMzFiYjgz
ZGY3MTE0MGM1NDEuLmZkY2Y0NTc2Y2QzMzJhNzY2MjlhN2RiNTIxNTVkZDE0Njk0ODllZjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lJbmxpbmVUZXh0Qm94LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lVGV4dEJveC5jcHAK
QEAgLTUyOCw4ICs1MjgsOCBAQCB2b2lkIExlZ2FjeUlubGluZVRleHRCb3g6Om91dHB1dExpbmVC
b3goVGV4dFN0cmVhbSYgc3RyZWFtLCBib29sIG1hcmssIGludCBkZXB0aAogCiAgICAgU3RyaW5n
IHZhbHVlID0gcmVuZGVyZXIoKS50ZXh0KCk7CiAgICAgdmFsdWUgPSB2YWx1ZS5zdWJzdHJpbmco
c3RhcnQoKSwgbGVuKCkpOwotICAgIHZhbHVlLnJlcGxhY2VXaXRoTGl0ZXJhbCgnXFwnLCAiXFxc
XCIpOwotICAgIHZhbHVlLnJlcGxhY2VXaXRoTGl0ZXJhbCgnXG4nLCAiXFxuIik7CisgICAgdmFs
dWUucmVwbGFjZSgnXFwnLCAiXFxcXCJfcyk7CisgICAgdmFsdWUucmVwbGFjZSgnXG4nLCAiXFxu
Il9zKTsKICAgICBzdHJlYW0gPDwgYm94TmFtZSgpIDw8ICIgIiA8PCBGbG9hdFJlY3QoeCgpLCB5
KCksIHdpZHRoKCksIGhlaWdodCgpKSA8PCAiICgiIDw8IHRoaXMgPDwgIikgcmVuZGVyZXItPigi
IDw8ICZyZW5kZXJlcigpIDw8ICIpIHJ1bigiIDw8IHN0YXJ0KCkgPDwgIiwgIiA8PCBzdGFydCgp
ICsgbGVuKCkgPDwgIikgXCIiIDw8IHZhbHVlLnV0ZjgoKS5kYXRhKCkgPDwgIlwiIjsKICAgICBz
dHJlYW0ubmV4dExpbmUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5jcHAKaW5kZXggYTU5NzE2M2IwYzQzYjJhZDM1NGE2M2RkYTczOGI2MzkzYjllMzgzNy4uMDM1
ZWZlMzg1N2YwN2ZhYjQ4NzRlODI0MmU0ODQxMGM2NWEyNzdlNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTEyNjUsOCArMTI2NSw4IEBAIHZvaWQgUmVu
ZGVyT2JqZWN0OjpvdXRwdXRSZW5kZXJPYmplY3QoVGV4dFN0cmVhbSYgc3RyZWFtLCBib29sIG1h
cmssIGludCBkZXB0aCkKICAgICAgICAgICAgIFN0cmluZyB2YWx1ZSA9IG5vZGUoKS0+bm9kZVZh
bHVlKCk7CiAgICAgICAgICAgICBzdHJlYW0gPDwgIiBsZW5ndGgtPigiIDw8IHZhbHVlLmxlbmd0
aCgpIDw8ICIpIjsKIAotICAgICAgICAgICAgdmFsdWUucmVwbGFjZVdpdGhMaXRlcmFsKCdcXCcs
ICJcXFxcIik7Ci0gICAgICAgICAgICB2YWx1ZS5yZXBsYWNlV2l0aExpdGVyYWwoJ1xuJywgIlxc
biIpOworICAgICAgICAgICAgdmFsdWUucmVwbGFjZSgnXFwnLCAiXFxcXCJfcyk7CisgICAgICAg
ICAgICB2YWx1ZS5yZXBsYWNlKCdcbicsICJcXG4iX3MpOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBjb25zdCBpbnQgbWF4UHJpbnRlZExlbmd0aCA9IDgwOwogICAgICAgICAgICAgaWYgKHZh
bHVlLmxlbmd0aCgpID4gbWF4UHJpbnRlZExlbmd0aCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9j
ZXNzb3IuY3BwCmluZGV4IGJlNThkNmY3NDQxY2QwODNiMjMyYTRjZDQ1ZDQwZTE0ZjQ4YTViYTEu
LjY0NzQyYTExYmFjOGIyODlmNzc4YzYyNzQ1YThiNzVjOGZhOTcwMTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94
bWwvWFNMVFByb2Nlc3Nvci5jcHAKQEAgLTQ1LDggKzQ1LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogc3RhdGljIGlubGluZSB2b2lkIHRyYW5zZm9ybVRleHRTdHJpbmdUb1hIVE1MRG9jdW1lbnRT
dHJpbmcoU3RyaW5nJiB0ZXh0KQogewogICAgIC8vIE1vZGlmeSB0aGUgb3V0cHV0IHNvIHRoYXQg
aXQgaXMgYSB3ZWxsLWZvcm1lZCBYSFRNTCBkb2N1bWVudCB3aXRoIGEgPHByZT4gdGFnIGVuY2xv
c2luZyB0aGUgdGV4dC4KLSAgICB0ZXh0LnJlcGxhY2VXaXRoTGl0ZXJhbCgnJicsICImYW1wOyIp
OwotICAgIHRleHQucmVwbGFjZVdpdGhMaXRlcmFsKCc8JywgIiZsdDsiKTsKKyAgICB0ZXh0LnJl
cGxhY2UoJyYnLCAiJmFtcDsiX3MpOworICAgIHRleHQucmVwbGFjZSgnPCcsICImbHQ7Il9zKTsK
ICAgICB0ZXh0ID0gIjw/eG1sIHZlcnNpb249XCIxLjBcIiBlbmNvZGluZz1cIlVURi04XCI/Plxu
IgogICAgICAgICAiPCFET0NUWVBFIGh0bWwgUFVCTElDIFwiLS8vVzNDLy9EVEQgWEhUTUwgMS4w
IFN0cmljdC8vRU5cIiBcImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXN0
cmljdC5kdGRcIj5cbiIKICAgICAgICAgIjxodG1sIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcv
MTk5OS94aHRtbFwiPlxuIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGVkNzNmMGE3MTIyNmY1YmVmMzgyYzBm
Y2I2ZDFjOWZkZmZkODY0N2MuLjAyODM0YjRlNDM0N2UyYTE2NDM3M2JhZGVjNWVlNDVhZjE4NDQw
MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5jcHAKQEAgLTE1OTIsNyArMTU5Miw3IEBAIGJvb2wgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpzaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvCiAKIHN0YXRpYyBTdHJpbmcgZXNjYXBlRm9ySlNPTihTdHJpbmcgcykKIHsKLSAgICBy
ZXR1cm4gcy5yZXBsYWNlKCdcXCcsICJcXFxcIikucmVwbGFjZSgnIicsICJcXFwiIik7CisgICAg
cmV0dXJuIHMucmVwbGFjZSgnXFwnLCAiXFxcXCJfcykucmVwbGFjZSgnIicsICJcXFwiIl9zKTsK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgSWRlbnRpZmllclR5cGU+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlc291
cmNlTG9hZE9ic2VydmVyLmNwcAppbmRleCAyMjQyOTkzZWU3NzExOGQwMDk3N2RiMzZlMDNjODM4
MGU4MDU1OGI1Li5lNzJiZDAxOTFiOTQ2YTVlYWQzMWFkYWJjNWJjYTNhYjZlZDA5ZTZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3Vy
Y2VMb2FkT2JzZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAKQEAgLTM4NCw3ICszODQsNyBAQCB2
b2lkIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dVc2VySW50ZXJhY3Rpb25XaXRoUmVkdWNl
ZFRpbWVSZXNvbHV0aW9uKGNvbnN0CiAgICAgICAgIFJFTEVBU0VfTE9HKFJlc291cmNlTG9hZFN0
YXRpc3RpY3MsICJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nVXNlckludGVyYWN0aW9uOiBjb3Vu
dGVyPSUiIFBSSXU2NCAiOiAiIHN0ciwgY291bnRlciwgIyNfX1ZBX0FSR1NfXykKIAogICAgICAg
ICBhdXRvIGVzY2FwZUZvckpTT04gPSBbXShTdHJpbmcgcykgewotICAgICAgICAgICAgcy5yZXBs
YWNlKCdcXCcsICJcXFxcIikucmVwbGFjZSgnIicsICJcXFwiIik7CisgICAgICAgICAgICBzLnJl
cGxhY2UoJ1xcJywgIlxcXFwiX3MpLnJlcGxhY2UoJyInLCAiXFxcIiJfcyk7CiAgICAgICAgICAg
ICByZXR1cm4gczsKICAgICAgICAgfTsKICAgICAgICAgYXV0byBlc2NhcGVkVVJMID0gZXNjYXBl
Rm9ySlNPTih1cmwuc3RyaW5nKCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9v
bHMvQ2hhbmdlTG9nCmluZGV4IDcxZmY0MDYxODhlM2YwY2I5MzE1Yjc4Zjg2Y2Y5ZGU0ODJlZGZk
NTQuLjJmYTFkZTI5ZTQzZTA3ZDEwYTY4ZDQxYzI1MDIyMGE2YTE0YjFlOTkgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAor
MjAyMi0wNC0xOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJl
cGxhY2UgU3RyaW5nOjpyZXBsYWNlV2l0aExpdGVyYWwoKSB3aXRoIGEgU3RyaW5nOjpyZXBsYWNl
KCkgb3ZlcmxvYWQgdGhhdCB0YWtlcyBpbiBhbiBBU0NJSUxpdGVyYWwKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTUwMAorCisgICAgICAgIFJldmll
d2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
V1RGU3RyaW5nLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDIyLTA0
LTE5ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtp
T1NdIFRleHQgc2VsZWN0aW9uIGZsaWNrZXJzIHdoZW4gaW5zZXJ0aW5nIHRleHQgdXNpbmcgZGlj
dGF0aW9uCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9XVEZTdHJp
bmcuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV1RGU3RyaW5nLmNwcAppbmRl
eCA1YjIxNzJlYzAwYjc3NGY0ZmY5MTI1YWQ1MWM1NWRlYjdkMjM2YjFkLi42ZGZkNGRjMjYyMzdi
OGIxMWUxYmQzZWJkODI4ZDJjMjY3YjM0Y2YwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9XVEZTdHJpbmcuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL1dURlN0cmluZy5jcHAKQEAgLTIzOSwzOCArMjM5LDM4IEBAIFRFU1QoV1RGLCBTdHJp
bmdSZXBsYWNlV2l0aExpdGVyYWwpCiAgICAgLy8gQ2FzZXMgZm9yIDhCaXQgc291cmNlLgogICAg
IFN0cmluZyB0ZXN0U3RyaW5nID0gIjEyMjQiX3M7CiAgICAgRVhQRUNUX1RSVUUodGVzdFN0cmlu
Zy5pczhCaXQoKSk7Ci0gICAgdGVzdFN0cmluZy5yZXBsYWNlV2l0aExpdGVyYWwoJzInLCAiIik7
CisgICAgdGVzdFN0cmluZy5yZXBsYWNlKCcyJywgIiJfcyk7CiAgICAgRVhQRUNUX1NUUkVRKCIx
NCIsIHRlc3RTdHJpbmcudXRmOCgpLmRhdGEoKSk7CiAKICAgICB0ZXN0U3RyaW5nID0gIjEyMjQi
X3M7CiAgICAgRVhQRUNUX1RSVUUodGVzdFN0cmluZy5pczhCaXQoKSk7Ci0gICAgdGVzdFN0cmlu
Zy5yZXBsYWNlV2l0aExpdGVyYWwoJzInLCAiMyIpOworICAgIHRlc3RTdHJpbmcucmVwbGFjZSgn
MicsICIzIl9zKTsKICAgICBFWFBFQ1RfU1RSRVEoIjEzMzQiLCB0ZXN0U3RyaW5nLnV0ZjgoKS5k
YXRhKCkpOwogCiAgICAgdGVzdFN0cmluZyA9ICIxMjI0Il9zOwogICAgIEVYUEVDVF9UUlVFKHRl
c3RTdHJpbmcuaXM4Qml0KCkpOwotICAgIHRlc3RTdHJpbmcucmVwbGFjZVdpdGhMaXRlcmFsKCcy
JywgIjU1NSIpOworICAgIHRlc3RTdHJpbmcucmVwbGFjZSgnMicsICI1NTUiX3MpOwogICAgIEVY
UEVDVF9TVFJFUSgiMTU1NTU1NTQiLCB0ZXN0U3RyaW5nLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAg
dGVzdFN0cmluZyA9ICIxMjI0Il9zOwogICAgIEVYUEVDVF9UUlVFKHRlc3RTdHJpbmcuaXM4Qml0
KCkpOwotICAgIHRlc3RTdHJpbmcucmVwbGFjZVdpdGhMaXRlcmFsKCczJywgIk5vdEZvdW5kIik7
CisgICAgdGVzdFN0cmluZy5yZXBsYWNlKCczJywgIk5vdEZvdW5kIl9zKTsKICAgICBFWFBFQ1Rf
U1RSRVEoIjEyMjQiLCB0ZXN0U3RyaW5nLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgLy8gQ2FzZXMg
Zm9yIDE2Qml0IHNvdXJjZS4KICAgICB0ZXN0U3RyaW5nID0gU3RyaW5nOjpmcm9tVVRGOCgicsOp
c3Vtw6kiKTsKICAgICBFWFBFQ1RfRkFMU0UodGVzdFN0cmluZy5pczhCaXQoKSk7Ci0gICAgdGVz
dFN0cmluZy5yZXBsYWNlV2l0aExpdGVyYWwoVUNoYXIoMHgwMEU5IC8qVSswMEU5IGlzICfDqScq
LyksICJlIik7CisgICAgdGVzdFN0cmluZy5yZXBsYWNlKFVDaGFyKDB4MDBFOSAvKlUrMDBFOSBp
cyAnw6knKi8pLCAiZSJfcyk7CiAgICAgRVhQRUNUX1NUUkVRKCJyZXN1bWUiLCB0ZXN0U3RyaW5n
LnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgdGVzdFN0cmluZyA9IFN0cmluZzo6ZnJvbVVURjgoInLD
qXN1bcOpIik7CiAgICAgRVhQRUNUX0ZBTFNFKHRlc3RTdHJpbmcuaXM4Qml0KCkpOwotICAgIHRl
c3RTdHJpbmcucmVwbGFjZVdpdGhMaXRlcmFsKFVDaGFyKDB4MDBFOSAvKlUrMDBFOSBpcyAnw6kn
Ki8pLCAiIik7CisgICAgdGVzdFN0cmluZy5yZXBsYWNlKFVDaGFyKDB4MDBFOSAvKlUrMDBFOSBp
cyAnw6knKi8pLCAiIl9zKTsKICAgICBFWFBFQ1RfU1RSRVEoInJzdW0iLCB0ZXN0U3RyaW5nLnV0
ZjgoKS5kYXRhKCkpOwogCiAgICAgdGVzdFN0cmluZyA9IFN0cmluZzo6ZnJvbVVURjgoInLDqXN1
bcOpIik7CiAgICAgRVhQRUNUX0ZBTFNFKHRlc3RTdHJpbmcuaXM4Qml0KCkpOwotICAgIHRlc3RT
dHJpbmcucmVwbGFjZVdpdGhMaXRlcmFsKCczJywgIk5vdEZvdW5kIik7CisgICAgdGVzdFN0cmlu
Zy5yZXBsYWNlKCczJywgIk5vdEZvdW5kIl9zKTsKICAgICBFWFBFQ1RfU1RSRVEoInLDqXN1bcOp
IiwgdGVzdFN0cmluZy51dGY4KCkuZGF0YSgpKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457934</attachid>
            <date>2022-04-19 13:36:05 -0700</date>
            <delta_ts>2022-04-19 16:52:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239500-20220419133605.patch</filename>
            <type>text/plain</type>
            <size>24439</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzMDM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGIxNDBiMjQwNjZjZjMyMDRiMDZhMDRj
YmQwM2E4NTQzNjdiNGJiZTkuLmU0ZjRjZGVhMDg1YTdjMDlkMDEwNjhjMmRmNmVkYjNhMTZiZWM3
NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMjItMDQtMTkgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIFN0cmluZzo6cmVwbGFjZVdpdGhMaXRlcmFs
KCkgd2l0aCBhIFN0cmluZzo6cmVwbGFjZSgpIG92ZXJsb2FkIHRoYXQgdGFrZXMgaW4gYW4gQVND
SUlMaXRlcmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzk1MDAKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBS
ZXBsYWNlIFN0cmluZzo6cmVwbGFjZVdpdGhMaXRlcmFsKCkgd2l0aCBhIFN0cmluZzo6cmVwbGFj
ZSgpIG92ZXJsb2FkIHRoYXQgdGFrZXMgaW4gYW4gQVNDSUlMaXRlcmFsLgorICAgICAgICByZXBs
YWNlV2l0aExpdGVyYWwoKSB3YXMgZW5jb3VyYWdpbmcgcGVvcGxlIG5vdCB0byB1c2UgQVNDSUlM
aXRlcmFsIGFuZCB0aGUgIiJfcyBzdWZmaXggYW5kIGNhbGxpbmcKKyAgICAgICAgcmVwbGFjZSgp
IHdpdGggYW4gQVNDSUlMaXRlcmFsIHdvdWxkIHJlc3VsdCBpbiBsZXNzIGVmZmljaWVudCBjb2Rl
LCB3aGljaCBnb2VzIGFnYWluc3QgdGhlIGlkZWEgb2YKKyAgICAgICAgQVNDSUlMaXRlcmFsLgor
CisgICAgICAgIFRvIGFkZHJlc3MgdGhpcywgU3RyaW5nOjpyZXBsYWNlV2l0aExpdGVyYWwoKSBp
cyByZW1vdmVkLiBOb3csIGNhbGxlcnMgY2FuIGNhbGwgU3RyaW5nOjpyZXBsYWNlKCkKKyAgICAg
ICAgd2l0aCBhbiBBU0NJSUxpdGVyYWwgaW5zdGVhZCBhbmQgaXQgd2lsbCByZXN1bHQgaW4gY29k
ZSB0aGF0IGlzIGFzIGVmZmljaWVudC4gSSBoYXZlIHZlcmlmaWVkIHRoYXQKKyAgICAgICAgdGhp
cyBjaGFuZ2UgaXMgcGVyZi1uZXV0cmFsIG9uIFNwZWVkb21ldGVyIG9uIGJvdGggQXBwbGUgU2ls
aWNvbiBhbmQgSW50ZWwuCisKKyAgICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuaDoKKyAgICAg
ICAgKFdURjo6U3RyaW5nOjpyZXBsYWNlKToKKyAgICAgICAgKFdURjo6U3RyaW5nOjpyZXBsYWNl
V2l0aExpdGVyYWwpOiBEZWxldGVkLgorCiAyMDIyLTA0LTE5ICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CiAKICAgICAgICAgSW50cm9kdWNlIG1ha2VBdG9tU3RyaW5nKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCAxNjMxOTk4NTc4OTdmY2M1ZWUzNDI4YzNkNDIxYjRhMjBlYTcwODc3Li5lMDAzYjE1
MTFlMDA3M2U3Yjc0YjkxODkxZmQ1YjNhYjBiZjMwODU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MzkgQEAKKzIwMjItMDQtMTkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAg
ICAgICBSZXBsYWNlIFN0cmluZzo6cmVwbGFjZVdpdGhMaXRlcmFsKCkgd2l0aCBhIFN0cmluZzo6
cmVwbGFjZSgpIG92ZXJsb2FkIHRoYXQgdGFrZXMgaW4gYW4gQVNDSUlMaXRlcmFsCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzk1MDAKKworICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmVuY29kZURhdGFiYXNlTmFtZSk6CisgICAg
ICAgICogZGlzcGxheS9jc3MvRGlzcGxheVRleHRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheTo6VGV4dEJveDo6ZGVidWdEZXNjcmlwdGlvbiBjb25zdCk6CisgICAgICAgICogZG9t
L05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6c2hvd05vZGUgY29uc3QpOgorICAg
ICAgICAqIGRvbS9UZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZFRleHRSZXByZXNl
bnRhdGlvbik6CisgICAgICAgICogZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVDaGFuZ2U6OmV4dHJhY3RUZXh0U3R5bGVzKToKKyAgICAgICAgKiBlZGl0
aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNlbGVjdGVkVGV4dCBj
b25zdCk6CisgICAgICAgICogZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kUXVvdGVkVVJMQXR0cmlidXRlVmFs
dWUpOgorICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjp0YWtlUmVzdWx0cyk6CisgICAgICAgICogaHRtbC9VUkxE
ZWNvbXBvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVSTERlY29tcG9zaXRpb246OnNl
dFNlYXJjaCk6CisgICAgICAgICogbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpvdXRwdXRMYXlvdXRCb3gpOgorICAgICAg
ICAqIGxvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRN
YWlsdG9Qb3N0Rm9ybURhdGFUb1VSTCk6CisgICAgICAgICogcmVuZGVyaW5nL0xlZ2FjeUlubGlu
ZVRleHRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6b3V0
cHV0TGluZUJveCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6Om91dHB1dFJlbmRlck9iamVjdCBjb25z
dCk6CisgICAgICAgICogeG1sL1hTTFRQcm9jZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
dHJhbnNmb3JtVGV4dFN0cmluZ1RvWEhUTUxEb2N1bWVudFN0cmluZyk6CisKIDIwMjItMDQtMTkg
IEFkYSBDaGFuICA8YWRhY2hhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYlhSXSBVcGRhdGUg
RGV2aWNlOjppbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoKSB0byB0YWtlIGluIG1vcmUg
cGFyYW1ldGVycyByZWdhcmRpbmcgdGhlIHNlc3Npb24gc2V0dXAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckF1ZGl0QWdlbnQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXVkaXRB
Z2VudC5jcHAKaW5kZXggODJjYzZhMGUzNjhjMjViODA4YTg0NTEyNmEzZDYzZTMxMDVmNGMyYS4u
N2IzMDI0MTRiMjUxZDk2ZTBhN2Q3N2VkNjhjNjZkY2E4ZjczOWE3ZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXVkaXRBZ2VudC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
QXVkaXRBZ2VudC5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8
c3RkOjp0dXBsZTxSZWY8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4sIHN0ZDo6b3AK
ICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQogICAgICAgICByZXR1cm4gbWFr
ZVVuZXhwZWN0ZWQoZXJyb3JTdHJpbmcpOwogCi0gICAgYXV0byBmdW5jdGlvblN0cmluZyA9IG1h
a2VTdHJpbmcoIihmdW5jdGlvbihXZWJJbnNwZWN0b3JBdWRpdCkgeyBcInVzZSBzdHJpY3RcIjsg
cmV0dXJuIGV2YWwoYCgiLCBTdHJpbmcgeyB0ZXN0IH0ucmVwbGFjZSgnYCcsICJcXGAiKSwgIilg
KShXZWJJbnNwZWN0b3JBdWRpdCk7IH0pIik7CisgICAgYXV0byBmdW5jdGlvblN0cmluZyA9IG1h
a2VTdHJpbmcoIihmdW5jdGlvbihXZWJJbnNwZWN0b3JBdWRpdCkgeyBcInVzZSBzdHJpY3RcIjsg
cmV0dXJuIGV2YWwoYCgiLCBTdHJpbmcgeyB0ZXN0IH0ucmVwbGFjZSgnYCcsICJcXGAiX3MpLCAi
KWApKFdlYkluc3BlY3RvckF1ZGl0KTsgfSkiKTsKIAogICAgIEluamVjdGVkU2NyaXB0OjpFeGVj
dXRlT3B0aW9ucyBvcHRpb25zOwogICAgIG9wdGlvbnMub2JqZWN0R3JvdXAgPSAiYXVkaXQiX3M7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dU
Ri93dGYvdGV4dC9XVEZTdHJpbmcuaAppbmRleCA4MTA1NDJmMDAxYjcwMTU5NGZmMGVlNjI3OWRh
NDRhNmI5ZmZmMGExLi45MzNhMDhkYjhlYzZiYzIxNmNlNzBiM2E0ZDJkYzkzNjQyYzlkNDkyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKQEAgLTE5Myw5ICsxOTMsMTAgQEAgcHVibGljOgogCiAg
ICAgU3RyaW5nJiByZXBsYWNlKFVDaGFyIHRhcmdldCwgVUNoYXIgcmVwbGFjZW1lbnQpOwogICAg
IFN0cmluZyYgcmVwbGFjZShVQ2hhciB0YXJnZXQsIFN0cmluZ1ZpZXcgcmVwbGFjZW1lbnQpOwor
ICAgIFN0cmluZyYgcmVwbGFjZShVQ2hhciB0YXJnZXQsIEFTQ0lJTGl0ZXJhbCk7CisgICAgU3Ry
aW5nJiByZXBsYWNlKFVDaGFyIHRhcmdldCwgY29uc3QgY2hhciopID0gZGVsZXRlOwogICAgIFN0
cmluZyYgcmVwbGFjZShTdHJpbmdWaWV3IHRhcmdldCwgU3RyaW5nVmlldyByZXBsYWNlbWVudCk7
CiAgICAgU3RyaW5nJiByZXBsYWNlKHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIFN0
cmluZ1ZpZXcgcmVwbGFjZW1lbnQpOwotICAgIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlckNv
dW50PiBTdHJpbmcmIHJlcGxhY2VXaXRoTGl0ZXJhbChVQ2hhciB0YXJnZXQsIGNvbnN0IGNoYXIg
KCZyZXBsYWNlbWVudClbY2hhcmFjdGVyQ291bnRdKTsKIAogICAgIFdURl9FWFBPUlRfUFJJVkFU
RSB2b2lkIHJlbW92ZSh1bnNpZ25lZCBwb3NpdGlvbiwgdW5zaWduZWQgbGVuZ3RoID0gMSk7CiAK
QEAgLTQ5MCwxMCArNDkxLDEwIEBAIGlubGluZSBTdHJpbmcmIFN0cmluZzo6cmVwbGFjZShVQ2hh
ciB0YXJnZXQsIFVDaGFyIHJlcGxhY2VtZW50KQogICAgIHJldHVybiAqdGhpczsKIH0KIAotdGVt
cGxhdGU8dW5zaWduZWQgY2hhcmFjdGVyQ291bnQ+IEFMV0FZU19JTkxJTkUgU3RyaW5nJiBTdHJp
bmc6OnJlcGxhY2VXaXRoTGl0ZXJhbChVQ2hhciB0YXJnZXQsIGNvbnN0IGNoYXIgKCZjaGFyYWN0
ZXJzKVtjaGFyYWN0ZXJDb3VudF0pCitBTFdBWVNfSU5MSU5FIFN0cmluZyYgU3RyaW5nOjpyZXBs
YWNlKFVDaGFyIHRhcmdldCwgQVNDSUlMaXRlcmFsIGxpdGVyYWwpCiB7CiAgICAgaWYgKG1faW1w
bCkKLSAgICAgICAgbV9pbXBsID0gbV9pbXBsLT5yZXBsYWNlKHRhcmdldCwgY2hhcmFjdGVycywg
Y2hhcmFjdGVyQ291bnQgLSAxKTsKKyAgICAgICAgbV9pbXBsID0gbV9pbXBsLT5yZXBsYWNlKHRh
cmdldCwgbGl0ZXJhbC5jaGFyYWN0ZXJzKCksIGxpdGVyYWwubGVuZ3RoKCkpOwogICAgIHJldHVy
biAqdGhpczsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAppbmRleCBjYmQ0
NjI3OTA3ODc3ODAyZjM4YzZhNGRmYjY2YzFhMjIzMWRiM2NmLi44NzA5NzJmMzIyMTNlZGZlMGQz
NDI4ZWJiMTlhNmJkZTU4NGQ2MmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNw
cApAQCAtOTE3LDcgKzkxNyw3IEBAIFN0cmluZyBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmVuY29k
ZURhdGFiYXNlTmFtZShjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSkKICAgICAgICAgcmV0dXJu
ICIlMDAiX3M7CiAKICAgICBTdHJpbmcgZmlsZW5hbWUgPSBGaWxlU3lzdGVtOjplbmNvZGVGb3JG
aWxlTmFtZShkYXRhYmFzZU5hbWUpOwotICAgIGZpbGVuYW1lLnJlcGxhY2VXaXRoTGl0ZXJhbCgn
LicsICIlMkUiKTsKKyAgICBmaWxlbmFtZS5yZXBsYWNlKCcuJywgIiUyRSJfcyk7CiAKICAgICBy
ZXR1cm4gZmlsZW5hbWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0
ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRl
bnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25QYXJzZXIuY3BwCmluZGV4IDM0YTg2ZmQ0OWY2
N2JiYTE0MDI1MTQyNDVhODZkY2Y1ZDQwZTkzNTQuLjA4ZmE0NjdjOGEyZTM1ZTgwMTkzNzc5MGNm
MmQ5MGZiYjhiZWNmMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNp
b25zL0NvbnRlbnRFeHRlbnNpb25QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRl
bnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25QYXJzZXIuY3BwCkBAIC04MSwxOSArODEsMTkg
QEAgc3RhdGljIEV4cGVjdGVkPFZlY3RvcjxTdHJpbmc+LCBzdGQ6OmVycm9yX2NvZGU+IGdldERv
bWFpbkxpc3QoY29uc3QgSlNPTjo6QXJyYXkKICAgICAgICAgICAgIGRvbWFpbiA9IGRvbWFpbi5z
dWJzdHJpbmcoMSk7CiAgICAgICAgIH0KIAotICAgICAgICBzdGQ6OmFycmF5PHN0ZDo6cGFpcjxV
Q2hhciwgY29uc3QgY2hhcio+LCA5PiBlc2NhcGVUYWJsZSB7IHsKLSAgICAgICAgICAgIHsgJ1xc
JywgIlxcXFwiIH0sCi0gICAgICAgICAgICB7ICd7JywgIlxceyIgfSwKLSAgICAgICAgICAgIHsg
J30nLCAiXFx9IiB9LAotICAgICAgICAgICAgeyAnWycsICJcXFsiIH0sCi0gICAgICAgICAgICB7
ICdbJywgIlxcWyIgfSwKLSAgICAgICAgICAgIHsgJy4nLCAiXFwuIiB9LAotICAgICAgICAgICAg
eyAnPycsICJcXD8iIH0sCi0gICAgICAgICAgICB7ICcqJywgIlxcKiIgfSwKLSAgICAgICAgICAg
IHsgJyQnLCAiXFwkIiB9CisgICAgICAgIHN0ZDo6YXJyYXk8c3RkOjpwYWlyPFVDaGFyLCBBU0NJ
SUxpdGVyYWw+LCA5PiBlc2NhcGVUYWJsZSB7IHsKKyAgICAgICAgICAgIHsgJ1xcJywgIlxcXFwi
X3MgfSwKKyAgICAgICAgICAgIHsgJ3snLCAiXFx7Il9zIH0sCisgICAgICAgICAgICB7ICd9Jywg
IlxcfSJfcyB9LAorICAgICAgICAgICAgeyAnWycsICJcXFsiX3MgfSwKKyAgICAgICAgICAgIHsg
J1snLCAiXFxbIl9zIH0sCisgICAgICAgICAgICB7ICcuJywgIlxcLiJfcyB9LAorICAgICAgICAg
ICAgeyAnPycsICJcXD8iX3MgfSwKKyAgICAgICAgICAgIHsgJyonLCAiXFwqIl9zIH0sCisgICAg
ICAgICAgICB7ICckJywgIlxcJCJfcyB9CiAgICAgICAgIH0gfTsKICAgICAgICAgZm9yIChhdXRv
JiBwYWlyIDogZXNjYXBlVGFibGUpCi0gICAgICAgICAgICBkb21haW4gPSBkb21haW4ucmVwbGFj
ZShwYWlyLmZpcnN0LCBTdHJpbmdWaWV3IHsgcGFpci5zZWNvbmQgfSk7CisgICAgICAgICAgICBk
b21haW4gPSBkb21haW4ucmVwbGFjZShwYWlyLmZpcnN0LCBwYWlyLnNlY29uZCk7CiAKICAgICAg
ICAgY29uc3QgY2hhciogcHJvdG9jb2xSZWdleCA9ICJbYS16XVthLXorLi1dKjpcXC9cXC8iOwog
ICAgICAgICBjb25zdCBjaGFyKiBhbGxvd1N1YmRvbWFpbnNSZWdleCA9ICIoLipcXC4pKiI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5VGV4dEJveC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5VGV4dEJveC5jcHAKaW5kZXggNmFl
ZjAxZDAwNjNlZjAyYjE2MzA4ZjdmNzZiOTFjOTA5YTU5NDJjNC4uNmU3MGMwOWE1OWE2ZGZkZjVk
Zjg4YWEyMDAwNDZjZDg3NTU5Njg5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZGlzcGxh
eS9jc3MvRGlzcGxheVRleHRCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3Nz
L0Rpc3BsYXlUZXh0Qm94LmNwcApAQCAtNTQsOCArNTQsOCBAQCBTdHJpbmcgVGV4dEJveDo6ZGVi
dWdEZXNjcmlwdGlvbigpIGNvbnN0CiAKICAgICBzdHJlYW0gPDwgYm94TmFtZSgpIDw8ICIgIiA8
PCBhYnNvbHV0ZUJveFJlY3QoKSA8PCAiICgiIDw8IHRoaXMgPDwgIikiOwogICAgIGF1dG8gdGV4
dENvbnRlbnQgPSB0ZXh0KCkub3JpZ2luYWxDb250ZW50KCkuc3Vic3RyaW5nKHRleHQoKS5zdGFy
dCgpLCB0ZXh0KCkubGVuZ3RoKCkpLnRvU3RyaW5nKCk7Ci0gICAgdGV4dENvbnRlbnQucmVwbGFj
ZVdpdGhMaXRlcmFsKCdcXCcsICJcXFxcIik7Ci0gICAgdGV4dENvbnRlbnQucmVwbGFjZVdpdGhM
aXRlcmFsKCdcbicsICJcXG4iKTsKKyAgICB0ZXh0Q29udGVudC5yZXBsYWNlKCdcXCcsICJcXFxc
Il9zKTsKKyAgICB0ZXh0Q29udGVudC5yZXBsYWNlKCdcbicsICJcXG4iX3MpOwogICAgIGNvbnN0
IHNpemVfdCBtYXhQcmludGVkTGVuZ3RoID0gODA7CiAgICAgaWYgKHRleHRDb250ZW50Lmxlbmd0
aCgpID4gbWF4UHJpbnRlZExlbmd0aCkgewogICAgICAgICBhdXRvIHN1YnN0cmluZyA9IFN0cmlu
Z1ZpZXcodGV4dENvbnRlbnQpLmxlZnQobWF4UHJpbnRlZExlbmd0aCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAK
aW5kZXggY2I0N2VhYWVjMGRlNzA1YjM0ODM2ZjU3MDI3YjRkYzE1NzhiOTUxZS4uODVmZTI1ZjVk
MDZhODkxMmZlOWY5YjkxMGE2M2NlOWZiNTg1YWJmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMTc5
OSw4ICsxNzk5LDggQEAgdm9pZCBOb2RlOjpzaG93Tm9kZShjb25zdCBjaGFyKiBwcmVmaXgpIGNv
bnN0CiAgICAgICAgIHByZWZpeCA9ICIiOwogICAgIGlmIChpc1RleHROb2RlKCkpIHsKICAgICAg
ICAgU3RyaW5nIHZhbHVlID0gbm9kZVZhbHVlKCk7Ci0gICAgICAgIHZhbHVlLnJlcGxhY2VXaXRo
TGl0ZXJhbCgnXFwnLCAiXFxcXCIpOwotICAgICAgICB2YWx1ZS5yZXBsYWNlV2l0aExpdGVyYWwo
J1xuJywgIlxcbiIpOworICAgICAgICB2YWx1ZS5yZXBsYWNlKCdcXCcsICJcXFxcIl9zKTsKKyAg
ICAgICAgdmFsdWUucmVwbGFjZSgnXG4nLCAiXFxuIl9zKTsKICAgICAgICAgZnByaW50ZihzdGRl
cnIsICIlcyVzXHQlcCBcIiVzXCJcbiIsIHByZWZpeCwgbm9kZU5hbWUoKS51dGY4KCkuZGF0YSgp
LCB0aGlzLCB2YWx1ZS51dGY4KCkuZGF0YSgpKTsKICAgICB9IGVsc2UgewogICAgICAgICBTdHJp
bmdCdWlsZGVyIGF0dHJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuY3BwCmluZGV4IDRiOTAzZjhmZGYyYmFkOTM5ZGRh
YmE4MGNkZTg4MDU0NDEyOTc2ZTIuLmUwNGQ1ZTM2ZjM2ZDBlMTFjNGRhMGFjZTVhMTllMDQ5MTVk
MzQyMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vVGV4dC5jcHAKQEAgLTIyOCw4ICsyMjgsOCBAQCBzdGF0aWMgdm9pZCBh
cHBlbmRUZXh0UmVwcmVzZW50YXRpb24oU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgY29uc3QgVGV4
dCYgdGV4dCkKICAgICBTdHJpbmcgdmFsdWUgPSB0ZXh0LmRhdGEoKTsKICAgICBidWlsZGVyLmFw
cGVuZCgiIGxlbmd0aD0iX3MsIHZhbHVlLmxlbmd0aCgpKTsKIAotICAgIHZhbHVlLnJlcGxhY2VX
aXRoTGl0ZXJhbCgnXFwnLCAiXFxcXCIpOwotICAgIHZhbHVlLnJlcGxhY2VXaXRoTGl0ZXJhbCgn
XG4nLCAiXFxuIik7CisgICAgdmFsdWUucmVwbGFjZSgnXFwnLCAiXFxcXCJfcyk7CisgICAgdmFs
dWUucmVwbGFjZSgnXG4nLCAiXFxuIl9zKTsKICAgICAKICAgICBjb25zdGV4cHIgc2l6ZV90IG1h
eER1bXBMZW5ndGggPSAzMDsKICAgICBpZiAodmFsdWUubGVuZ3RoKCkgPiBtYXhEdW1wTGVuZ3Ro
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCmluZGV4IDk1MGJkMGY0YmRh
ODgwNWY4Zjg1OWM2OTI1Yzk3YTU5Mjg5MDkwMjAuLjk0OGM4YmIyZGFlZTg5YTZlYzA0NzU5Y2Qz
YWE2ZjIxYzg1NTQ3ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGlu
Z1N0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAK
QEAgLTE4NTMsNyArMTg1Myw3IEBAIHZvaWQgU3R5bGVDaGFuZ2U6OmV4dHJhY3RUZXh0U3R5bGVz
KERvY3VtZW50JiBkb2N1bWVudCwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYKIAogICAgIG1fYXBw
bHlGb250RmFjZSA9IHN0eWxlLmdldFByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlGb250RmFtaWx5
KTsKICAgICAvLyBSZW1vdmUgcXVvdGVzIGZvciBPdXRsb29rIDIwMDcgY29tcGF0aWJpbGl0eS4g
U2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTQ0OAotICAgIG1f
YXBwbHlGb250RmFjZS5yZXBsYWNlV2l0aExpdGVyYWwoJ1wiJywgIiIpOworICAgIG1fYXBwbHlG
b250RmFjZS5yZXBsYWNlKCdcIicsICIiX3MpOwogICAgIHN0eWxlLnJlbW92ZVByb3BlcnR5KENT
U1Byb3BlcnR5Rm9udEZhbWlseSk7CiAKICAgICBpZiAoUmVmUHRyPENTU1ZhbHVlPiBmb250U2l6
ZSA9IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlGb250U2l6ZSkpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCBkZGMzNjQ4N2VlMTdhMWRmZDM4Yjg2MTM0OGQx
OTk5MDQxOWY0ZmY4Li4xMTA4OTMwMDY4YmZkM2RmMjRjYmZlZTM2NWY4Y2E2YTRjODQ4YmMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0zMzM0LDcgKzMzMzQsNyBAQCBTdHJpbmcg
RWRpdG9yOjpzZWxlY3RlZFRleHQoVGV4dEl0ZXJhdG9yQmVoYXZpb3JzIGJlaGF2aW9ycykgY29u
c3QKIHsKICAgICAvLyBXZSByZW1vdmUgJ1wwJyBjaGFyYWN0ZXJzIGJlY2F1c2UgdGhleSBhcmUg
bm90IHZpc2libHkgcmVuZGVyZWQgdG8gdGhlIHVzZXIuCiAgICAgYXV0byByYW5nZSA9IG1fZG9j
dW1lbnQuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuZmlyc3RSYW5nZSgpOwotICAgIHJldHVybiBy
YW5nZSA/IHBsYWluVGV4dCgqcmFuZ2UsIGJlaGF2aW9ycykucmVwbGFjZVdpdGhMaXRlcmFsKCdc
MCcsICIiKSA6IGVtcHR5U3RyaW5nKCk7CisgICAgcmV0dXJuIHJhbmdlID8gcGxhaW5UZXh0KCpy
YW5nZSwgYmVoYXZpb3JzKS5yZXBsYWNlKCdcMCcsICIiX3MpIDogZW1wdHlTdHJpbmcoKTsKIH0K
IAogUmVmUHRyPFRleHRQbGFjZWhvbGRlckVsZW1lbnQ+IEVkaXRvcjo6aW5zZXJ0VGV4dFBsYWNl
aG9sZGVyKGNvbnN0IEludFNpemUmIHNpemUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFy
a3VwQWNjdW11bGF0b3IuY3BwCmluZGV4IDNlNjk2MWQxNzMwZDQzNzRjNjRmZjg3YTJkMGFmMTI3
ZWMxMDU0NDAuLjI0Y2VkODY5YjgyZjlhM2E0YzIzMTM4NzRmYTAxYjM2Zjg5OTBjMjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCkBAIC0yODksNyAr
Mjg5LDcgQEAgdm9pZCBNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kUXVvdGVkVVJMQXR0cmlidXRl
VmFsdWUoU3RyaW5nQnVpbGRlciYgcmVzdWx0LCBjb24KICAgICAgICAgLy8gbWluaW1hbCBlc2Nh
cGluZyBmb3IgamF2YXNjcmlwdCB1cmxzCiAgICAgICAgIGlmIChyZXNvbHZlZFVSTFN0cmluZy5j
b250YWlucygnIicpKSB7CiAgICAgICAgICAgICBpZiAocmVzb2x2ZWRVUkxTdHJpbmcuY29udGFp
bnMoJ1wnJykpCi0gICAgICAgICAgICAgICAgcmVzb2x2ZWRVUkxTdHJpbmcucmVwbGFjZVdpdGhM
aXRlcmFsKCciJywgIiZxdW90OyIpOworICAgICAgICAgICAgICAgIHJlc29sdmVkVVJMU3RyaW5n
LnJlcGxhY2UoJyInLCAiJnF1b3Q7Il9zKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAg
ICAgICBxdW90ZUNoYXIgPSAnXCcnOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5j
cHAKaW5kZXggYjRjOTY0ZDIxYTA0M2VjN2FiOTc5MDViYWNlNjc0MTkwYTk1NmY1Zi4uNGYxYzIx
ODU3ZjFlNjA2MjJlNjQ4Y2UwZjE0MDJjNDhlM2VlMGI2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFy
a3VwLmNwcApAQCAtNDIwLDcgKzQyMCw3IEBAIFN0cmluZyBTdHlsZWRNYXJrdXBBY2N1bXVsYXRv
cjo6dGFrZVJlc3VsdHMoKQogICAgICAgICByZXN1bHQuYXBwZW5kKHN0cmluZyk7CiAgICAgcmVz
dWx0LmFwcGVuZCh0YWtlTWFya3VwKCkpOwogICAgIC8vIFJlbW92ZSAnXDAnIGNoYXJhY3RlcnMg
YmVjYXVzZSB0aGV5IGFyZSBub3QgdmlzaWJseSByZW5kZXJlZCB0byB0aGUgdXNlci4KLSAgICBy
ZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCkucmVwbGFjZVdpdGhMaXRlcmFsKCdcMCcsICIiKTsKKyAg
ICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCkucmVwbGFjZSgnXDAnLCAiIl9zKTsKIH0KIAogdm9p
ZCBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kVGV4dChTdHJpbmdCdWlsZGVyJiBvdXQs
IGNvbnN0IFRleHQmIHRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTERl
Y29tcG9zaXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxEZWNvbXBvc2l0aW9uLmNw
cAppbmRleCA5MzVjZTVkY2I3MjU5YTVlZDYwOTk1YTI4NTc4YjY2MGNlNTkwNGI3Li5mMzQ5OTFh
MDc3ZjU3NDA4ZjgwZjRhZmY4OWY3ZmNhMjQ2MzMzMGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1VSTERlY29tcG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
VVJMRGVjb21wb3NpdGlvbi5jcHAKQEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lkIFVSTERlY29tcG9z
aXRpb246OnNldFNlYXJjaChjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIH0gZWxzZSB7CiAgICAg
ICAgIFN0cmluZyBuZXdTZWFyY2ggPSB2YWx1ZTsKICAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQg
JyMnIGluIHRoZSBxdWVyeSBkb2VzIG5vdCBsZWFrIHRvIHRoZSBoYXNoLgotICAgICAgICBmdWxs
VVJMLnNldFF1ZXJ5KG5ld1NlYXJjaC5yZXBsYWNlV2l0aExpdGVyYWwoJyMnLCAiJTIzIikpOwor
ICAgICAgICBmdWxsVVJMLnNldFF1ZXJ5KG5ld1NlYXJjaC5yZXBsYWNlKCcjJywgIiUyMyJfcykp
OwogICAgIH0KICAgICBzZXRGdWxsVVJMKGZ1bGxVUkwpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCmluZGV4IDY5
NDJiMWYyOTZlNTJmNDc2YzkyOTYwOGQwZjkxOTJmNDRkMDI1ZDIuLmY4M2NkMTZkN2ZkZjg4NmQz
NDA1NDU2M2U4YmE0MWRhYTlmODAxMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAKQEAgLTQ5OCw4ICs0OTgsOCBA
QCBzdGF0aWMgdm9pZCBvdXRwdXRMYXlvdXRCb3goVGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBC
b3gmIGxheW91dEJveCwgY29uc3QgQm94RwogICAgICAgICBhdXRvIHRleHRDb250ZW50ID0gZG93
bmNhc3Q8SW5saW5lVGV4dEJveD4obGF5b3V0Qm94KS5jb250ZW50KCk7CiAgICAgICAgIHN0cmVh
bSA8PCAiIGxlbmd0aC0+KCIgPDwgdGV4dENvbnRlbnQubGVuZ3RoKCkgPDwgIikiOwogCi0gICAg
ICAgIHRleHRDb250ZW50LnJlcGxhY2VXaXRoTGl0ZXJhbCgnXFwnLCAiXFxcXCIpOwotICAgICAg
ICB0ZXh0Q29udGVudC5yZXBsYWNlV2l0aExpdGVyYWwoJ1xuJywgIlxcbiIpOworICAgICAgICB0
ZXh0Q29udGVudC5yZXBsYWNlKCdcXCcsICJcXFxcIl9zKTsKKyAgICAgICAgdGV4dENvbnRlbnQu
cmVwbGFjZSgnXG4nLCAiXFxuIl9zKTsKIAogICAgICAgICBjb25zdCBzaXplX3QgbWF4UHJpbnRl
ZExlbmd0aCA9IDgwOwogICAgICAgICBpZiAodGV4dENvbnRlbnQubGVuZ3RoKCkgPiBtYXhQcmlu
dGVkTGVuZ3RoKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1p
c3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcAppbmRl
eCA2ZTYyNmY4NDQ5YzU1MGQyOGVmNGU2NDdmMTc2MDEwMWJjYTEzYzQwLi4yYzAxMmZkZTVkNzc4
YjA2N2I1YTVhNzg4NmQ5ZmNmZDNjZjFlOTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3Jt
U3VibWlzc2lvbi5jcHAKQEAgLTcwLDEzICs3MCwxMyBAQCBzdGF0aWMgdm9pZCBhcHBlbmRNYWls
dG9Qb3N0Rm9ybURhdGFUb1VSTChVUkwmIHVybCwgY29uc3QgRm9ybURhdGEmIGRhdGEsIGNvbnN0
CiAKICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZW5jb2RpbmdUeXBlLCAi
dGV4dC9wbGFpbiIpKSB7CiAgICAgICAgIC8vIENvbnZlbnRpb24gc2VlbXMgdG8gYmUgdG8gZGVj
b2RlLCBhbmQgcy8mL1xyXG4vLiBBbHNvLCBzcGFjZXMgYXJlIGVuY29kZWQgYXMgJTIwLgotICAg
ICAgICBib2R5ID0gUEFMOjpkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMoYm9keS5yZXBsYWNlV2l0
aExpdGVyYWwoJyYnLCAiXHJcbiIpLnJlcGxhY2UoJysnLCAnICcpKTsKKyAgICAgICAgYm9keSA9
IFBBTDo6ZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKGJvZHkucmVwbGFjZSgnJicsICJcclxuIl9z
KS5yZXBsYWNlKCcrJywgJyAnKSk7CiAgICAgfQogCiAgICAgVmVjdG9yPGNoYXI+IGJvZHlEYXRh
OwogICAgIGJvZHlEYXRhLmFwcGVuZCgiYm9keT0iLCA1KTsKICAgICBGb3JtRGF0YUJ1aWxkZXI6
OmVuY29kZVN0cmluZ0FzRm9ybURhdGEoYm9keURhdGEsIGJvZHkudXRmOCgpKTsKLSAgICBib2R5
ID0gU3RyaW5nKGJvZHlEYXRhLmRhdGEoKSwgYm9keURhdGEuc2l6ZSgpKS5yZXBsYWNlV2l0aExp
dGVyYWwoJysnLCAiJTIwIik7CisgICAgYm9keSA9IFN0cmluZyhib2R5RGF0YS5kYXRhKCksIGJv
ZHlEYXRhLnNpemUoKSkucmVwbGFjZSgnKycsICIlMjAiX3MpOwogCiAgICAgYXV0byBxdWVyeSA9
IHVybC5xdWVyeSgpOwogICAgIGlmIChxdWVyeS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCmlu
ZGV4IDc4Mzg1NmEzMmY2NTgxNDQ3MTg4YjUwNTQ0ZDEwMDE2NzYxMjJkOTAuLjZlYmQwZmE3MGU3
MzFjN2QyMGZjYTNmYzM2ZWZhMmY5ODRlOGE3ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCkBAIC0zMDks
NyArMzA5LDcgQEAgU3RyaW5nIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzYW5pdGl6ZVN1Z2dlc3Rl
ZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmkKIAogICAgIFJlc291cmNlUmVzcG9u
c2UgcmVzcG9uc2UgeyB7IHsgfSwgImh0dHA6Ly9leGFtcGxlLmNvbS8iX3MgfSwgeyB9LCAtMSwg
eyB9IH07CiAgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c0NvZGUoMjAwKTsKLSAgICBTdHJpbmcg
ZXNjYXBlZFN1Z2dlc3RlZEZpbGVuYW1lID0gU3RyaW5nKHN1Z2dlc3RlZEZpbGVuYW1lKS5yZXBs
YWNlKCdcXCcsICJcXFxcIikucmVwbGFjZSgnIicsICJcXFwiIik7CisgICAgU3RyaW5nIGVzY2Fw
ZWRTdWdnZXN0ZWRGaWxlbmFtZSA9IFN0cmluZyhzdWdnZXN0ZWRGaWxlbmFtZSkucmVwbGFjZSgn
XFwnLCAiXFxcXCJfcykucmVwbGFjZSgnIicsICJcXFwiIl9zKTsKICAgICByZXNwb25zZS5zZXRI
VFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnREaXNwb3NpdGlvbiwgbWFrZVN0
cmluZygiYXR0YWNobWVudDsgZmlsZW5hbWU9XCIiLCBlc2NhcGVkU3VnZ2VzdGVkRmlsZW5hbWUs
ICciJykpOwogICAgIHJldHVybiByZXNwb25zZS5zdWdnZXN0ZWRGaWxlbmFtZSgpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9EYXRlVGltZUZvcm1hdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0RhdGVUaW1lRm9ybWF0LmNwcAppbmRleCA0
M2ExOGJjZWEwMTc5NjMwYjkwZWVkYzYyNjQyYjNkYTc3ZTBiMTY0Li5kNTEwOGY0ZGEwYTU2NzI5
NGM0ZDhhMGVmODBlM2U1OGUyZDlkNTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L0RhdGVUaW1lRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L0RhdGVUaW1lRm9ybWF0LmNwcApAQCAtMjY1LDcgKzI2NSw3IEBAIHZvaWQgRGF0ZVRp
bWVGb3JtYXQ6OnF1b3RlQW5kQXBwZW5kTGl0ZXJhbChjb25zdCBTdHJpbmcmIGxpdGVyYWwsIFN0
cmluZ0J1aWxkZXImCiAgICAgICAgIGlmIChsaXRlcmFsW2ldID09ICdcJycpCiAgICAgICAgICAg
ICBidWZmZXIuYXBwZW5kKCInJyIpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGJ1ZmZl
ci5hcHBlbmQoJ1wnJywgU3RyaW5nIHsgbGl0ZXJhbC5zdWJzdHJpbmcoaSkgfS5yZXBsYWNlKCdc
JycsICInJyIpLCAnXCcnKTsKKyAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoJ1wnJywgU3RyaW5n
IHsgbGl0ZXJhbC5zdWJzdHJpbmcoaSkgfS5yZXBsYWNlKCdcJycsICInJyJfcyksICdcJycpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZVRleHRCb3guY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZVRleHRCb3guY3BwCmluZGV4IGJlZTExNDdmZWEzNWMy
YWI1N2RmZjhiMzFiYjgzZGY3MTE0MGM1NDEuLmZkY2Y0NTc2Y2QzMzJhNzY2MjlhN2RiNTIxNTVk
ZDE0Njk0ODllZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lJ
bmxpbmVUZXh0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5s
aW5lVGV4dEJveC5jcHAKQEAgLTUyOCw4ICs1MjgsOCBAQCB2b2lkIExlZ2FjeUlubGluZVRleHRC
b3g6Om91dHB1dExpbmVCb3goVGV4dFN0cmVhbSYgc3RyZWFtLCBib29sIG1hcmssIGludCBkZXB0
aAogCiAgICAgU3RyaW5nIHZhbHVlID0gcmVuZGVyZXIoKS50ZXh0KCk7CiAgICAgdmFsdWUgPSB2
YWx1ZS5zdWJzdHJpbmcoc3RhcnQoKSwgbGVuKCkpOwotICAgIHZhbHVlLnJlcGxhY2VXaXRoTGl0
ZXJhbCgnXFwnLCAiXFxcXCIpOwotICAgIHZhbHVlLnJlcGxhY2VXaXRoTGl0ZXJhbCgnXG4nLCAi
XFxuIik7CisgICAgdmFsdWUucmVwbGFjZSgnXFwnLCAiXFxcXCJfcyk7CisgICAgdmFsdWUucmVw
bGFjZSgnXG4nLCAiXFxuIl9zKTsKICAgICBzdHJlYW0gPDwgYm94TmFtZSgpIDw8ICIgIiA8PCBG
bG9hdFJlY3QoeCgpLCB5KCksIHdpZHRoKCksIGhlaWdodCgpKSA8PCAiICgiIDw8IHRoaXMgPDwg
IikgcmVuZGVyZXItPigiIDw8ICZyZW5kZXJlcigpIDw8ICIpIHJ1bigiIDw8IHN0YXJ0KCkgPDwg
IiwgIiA8PCBzdGFydCgpICsgbGVuKCkgPDwgIikgXCIiIDw8IHZhbHVlLnV0ZjgoKS5kYXRhKCkg
PDwgIlwiIjsKICAgICBzdHJlYW0ubmV4dExpbmUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggYTU5NzE2M2IwYzQzYjJhZDM1NGE2M2RkYTczOGI2
MzkzYjllMzgzNy4uMDM1ZWZlMzg1N2YwN2ZhYjQ4NzRlODI0MmU0ODQxMGM2NWEyNzdlNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTEyNjUsOCArMTI2
NSw4IEBAIHZvaWQgUmVuZGVyT2JqZWN0OjpvdXRwdXRSZW5kZXJPYmplY3QoVGV4dFN0cmVhbSYg
c3RyZWFtLCBib29sIG1hcmssIGludCBkZXB0aCkKICAgICAgICAgICAgIFN0cmluZyB2YWx1ZSA9
IG5vZGUoKS0+bm9kZVZhbHVlKCk7CiAgICAgICAgICAgICBzdHJlYW0gPDwgIiBsZW5ndGgtPigi
IDw8IHZhbHVlLmxlbmd0aCgpIDw8ICIpIjsKIAotICAgICAgICAgICAgdmFsdWUucmVwbGFjZVdp
dGhMaXRlcmFsKCdcXCcsICJcXFxcIik7Ci0gICAgICAgICAgICB2YWx1ZS5yZXBsYWNlV2l0aExp
dGVyYWwoJ1xuJywgIlxcbiIpOworICAgICAgICAgICAgdmFsdWUucmVwbGFjZSgnXFwnLCAiXFxc
XCJfcyk7CisgICAgICAgICAgICB2YWx1ZS5yZXBsYWNlKCdcbicsICJcXG4iX3MpOwogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBjb25zdCBpbnQgbWF4UHJpbnRlZExlbmd0aCA9IDgwOwogICAg
ICAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCgpID4gbWF4UHJpbnRlZExlbmd0aCkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuY3BwIGIvU291cmNlL1dlYkNv
cmUveG1sL1hTTFRQcm9jZXNzb3IuY3BwCmluZGV4IGJlNThkNmY3NDQxY2QwODNiMjMyYTRjZDQ1
ZDQwZTE0ZjQ4YTViYTEuLjY0NzQyYTExYmFjOGIyODlmNzc4YzYyNzQ1YThiNzVjOGZhOTcwMTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nvci5jcHAKQEAgLTQ1LDggKzQ1LDggQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogc3RhdGljIGlubGluZSB2b2lkIHRyYW5zZm9ybVRleHRTdHJpbmdU
b1hIVE1MRG9jdW1lbnRTdHJpbmcoU3RyaW5nJiB0ZXh0KQogewogICAgIC8vIE1vZGlmeSB0aGUg
b3V0cHV0IHNvIHRoYXQgaXQgaXMgYSB3ZWxsLWZvcm1lZCBYSFRNTCBkb2N1bWVudCB3aXRoIGEg
PHByZT4gdGFnIGVuY2xvc2luZyB0aGUgdGV4dC4KLSAgICB0ZXh0LnJlcGxhY2VXaXRoTGl0ZXJh
bCgnJicsICImYW1wOyIpOwotICAgIHRleHQucmVwbGFjZVdpdGhMaXRlcmFsKCc8JywgIiZsdDsi
KTsKKyAgICB0ZXh0LnJlcGxhY2UoJyYnLCAiJmFtcDsiX3MpOworICAgIHRleHQucmVwbGFjZSgn
PCcsICImbHQ7Il9zKTsKICAgICB0ZXh0ID0gIjw/eG1sIHZlcnNpb249XCIxLjBcIiBlbmNvZGlu
Zz1cIlVURi04XCI/PlxuIgogICAgICAgICAiPCFET0NUWVBFIGh0bWwgUFVCTElDIFwiLS8vVzND
Ly9EVEQgWEhUTUwgMS4wIFN0cmljdC8vRU5cIiBcImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1s
MS9EVEQveGh0bWwxLXN0cmljdC5kdGRcIj5cbiIKICAgICAgICAgIjxodG1sIHhtbG5zPVwiaHR0
cDovL3d3dy53My5vcmcvMTk5OS94aHRtbFwiPlxuIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGVkNzNmMGE3
MTIyNmY1YmVmMzgyYzBmY2I2ZDFjOWZkZmZkODY0N2MuLjAyODM0YjRlNDM0N2UyYTE2NDM3M2Jh
ZGVjNWVlNDVhZjE4NDQwMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTE1OTIsNyArMTU5Miw3IEBAIGJv
b2wgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbihOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvCiAKIHN0YXRpYyBTdHJpbmcgZXNjYXBlRm9ySlNPTihTdHJp
bmcgcykKIHsKLSAgICByZXR1cm4gcy5yZXBsYWNlKCdcXCcsICJcXFxcIikucmVwbGFjZSgnIics
ICJcXFwiIik7CisgICAgcmV0dXJuIHMucmVwbGFjZSgnXFwnLCAiXFxcXCJfcykucmVwbGFjZSgn
IicsICJcXFwiIl9zKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgSWRlbnRpZmllclR5cGU+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVz
b3VyY2VMb2FkT2JzZXJ2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlJlc291cmNlTG9hZE9ic2VydmVyLmNwcAppbmRleCAyMjQyOTkzZWU3NzExOGQw
MDk3N2RiMzZlMDNjODM4MGU4MDU1OGI1Li5lNzJiZDAxOTFiOTQ2YTVlYWQzMWFkYWJjNWJjYTNh
YjZlZDA5ZTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAKQEAgLTM4
NCw3ICszODQsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dVc2VySW50ZXJh
Y3Rpb25XaXRoUmVkdWNlZFRpbWVSZXNvbHV0aW9uKGNvbnN0CiAgICAgICAgIFJFTEVBU0VfTE9H
KFJlc291cmNlTG9hZFN0YXRpc3RpY3MsICJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nVXNlcklu
dGVyYWN0aW9uOiBjb3VudGVyPSUiIFBSSXU2NCAiOiAiIHN0ciwgY291bnRlciwgIyNfX1ZBX0FS
R1NfXykKIAogICAgICAgICBhdXRvIGVzY2FwZUZvckpTT04gPSBbXShTdHJpbmcgcykgewotICAg
ICAgICAgICAgcy5yZXBsYWNlKCdcXCcsICJcXFxcIikucmVwbGFjZSgnIicsICJcXFwiIik7Cisg
ICAgICAgICAgICBzLnJlcGxhY2UoJ1xcJywgIlxcXFwiX3MpLnJlcGxhY2UoJyInLCAiXFxcIiJf
cyk7CiAgICAgICAgICAgICByZXR1cm4gczsKICAgICAgICAgfTsKICAgICAgICAgYXV0byBlc2Nh
cGVkVVJMID0gZXNjYXBlRm9ySlNPTih1cmwuc3RyaW5nKCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGRlNTEyNjg0MmMyNGIwZGY3YzY4ZGE2
NmQ3YmMyNWVlNzA0OWJjOGQuLjQyZWFlYWE3OTdjNTQyNWRkMWY1OGFlY2EzZDZjZTMwMDAwYmM4
ZjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMyBAQAorMjAyMi0wNC0xOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgorCisgICAgICAgIFJlcGxhY2UgU3RyaW5nOjpyZXBsYWNlV2l0aExpdGVyYWwoKSB3aXRoIGEg
U3RyaW5nOjpyZXBsYWNlKCkgb3ZlcmxvYWQgdGhhdCB0YWtlcyBpbiBhbiBBU0NJSUxpdGVyYWwK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTUwMAor
CisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvV1RGU3RyaW5nLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRF
U1QpOgorCiAyMDIyLTA0LTE5ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4K
IAogICAgICAgICBbZXdzLWJ1aWxkLndlYmtpdC5vcmddIEdpdEh1YiB1c2VybmFtZXMgYXJlIGNh
c2UgaW5zZW5zaXRpdmUKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L1dURlN0cmluZy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9XVEZTdHJpbmcu
Y3BwCmluZGV4IDViMjE3MmVjMDBiNzc0ZjRmZjkxMjVhZDUxYzU1ZGViN2QyMzZiMWQuLjZkZmQ0
ZGMyNjIzN2I4YjExZTFiZDNlYmQ4MjhkMmMyNjdiMzRjZjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dURlN0cmluZy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvV1RGU3RyaW5nLmNwcApAQCAtMjM5LDM4ICsyMzksMzggQEAgVEVTVChX
VEYsIFN0cmluZ1JlcGxhY2VXaXRoTGl0ZXJhbCkKICAgICAvLyBDYXNlcyBmb3IgOEJpdCBzb3Vy
Y2UuCiAgICAgU3RyaW5nIHRlc3RTdHJpbmcgPSAiMTIyNCJfczsKICAgICBFWFBFQ1RfVFJVRSh0
ZXN0U3RyaW5nLmlzOEJpdCgpKTsKLSAgICB0ZXN0U3RyaW5nLnJlcGxhY2VXaXRoTGl0ZXJhbCgn
MicsICIiKTsKKyAgICB0ZXN0U3RyaW5nLnJlcGxhY2UoJzInLCAiIl9zKTsKICAgICBFWFBFQ1Rf
U1RSRVEoIjE0IiwgdGVzdFN0cmluZy51dGY4KCkuZGF0YSgpKTsKIAogICAgIHRlc3RTdHJpbmcg
PSAiMTIyNCJfczsKICAgICBFWFBFQ1RfVFJVRSh0ZXN0U3RyaW5nLmlzOEJpdCgpKTsKLSAgICB0
ZXN0U3RyaW5nLnJlcGxhY2VXaXRoTGl0ZXJhbCgnMicsICIzIik7CisgICAgdGVzdFN0cmluZy5y
ZXBsYWNlKCcyJywgIjMiX3MpOwogICAgIEVYUEVDVF9TVFJFUSgiMTMzNCIsIHRlc3RTdHJpbmcu
dXRmOCgpLmRhdGEoKSk7CiAKICAgICB0ZXN0U3RyaW5nID0gIjEyMjQiX3M7CiAgICAgRVhQRUNU
X1RSVUUodGVzdFN0cmluZy5pczhCaXQoKSk7Ci0gICAgdGVzdFN0cmluZy5yZXBsYWNlV2l0aExp
dGVyYWwoJzInLCAiNTU1Iik7CisgICAgdGVzdFN0cmluZy5yZXBsYWNlKCcyJywgIjU1NSJfcyk7
CiAgICAgRVhQRUNUX1NUUkVRKCIxNTU1NTU1NCIsIHRlc3RTdHJpbmcudXRmOCgpLmRhdGEoKSk7
CiAKICAgICB0ZXN0U3RyaW5nID0gIjEyMjQiX3M7CiAgICAgRVhQRUNUX1RSVUUodGVzdFN0cmlu
Zy5pczhCaXQoKSk7Ci0gICAgdGVzdFN0cmluZy5yZXBsYWNlV2l0aExpdGVyYWwoJzMnLCAiTm90
Rm91bmQiKTsKKyAgICB0ZXN0U3RyaW5nLnJlcGxhY2UoJzMnLCAiTm90Rm91bmQiX3MpOwogICAg
IEVYUEVDVF9TVFJFUSgiMTIyNCIsIHRlc3RTdHJpbmcudXRmOCgpLmRhdGEoKSk7CiAKICAgICAv
LyBDYXNlcyBmb3IgMTZCaXQgc291cmNlLgogICAgIHRlc3RTdHJpbmcgPSBTdHJpbmc6OmZyb21V
VEY4KCJyw6lzdW3DqSIpOwogICAgIEVYUEVDVF9GQUxTRSh0ZXN0U3RyaW5nLmlzOEJpdCgpKTsK
LSAgICB0ZXN0U3RyaW5nLnJlcGxhY2VXaXRoTGl0ZXJhbChVQ2hhcigweDAwRTkgLypVKzAwRTkg
aXMgJ8OpJyovKSwgImUiKTsKKyAgICB0ZXN0U3RyaW5nLnJlcGxhY2UoVUNoYXIoMHgwMEU5IC8q
VSswMEU5IGlzICfDqScqLyksICJlIl9zKTsKICAgICBFWFBFQ1RfU1RSRVEoInJlc3VtZSIsIHRl
c3RTdHJpbmcudXRmOCgpLmRhdGEoKSk7CiAKICAgICB0ZXN0U3RyaW5nID0gU3RyaW5nOjpmcm9t
VVRGOCgicsOpc3Vtw6kiKTsKICAgICBFWFBFQ1RfRkFMU0UodGVzdFN0cmluZy5pczhCaXQoKSk7
Ci0gICAgdGVzdFN0cmluZy5yZXBsYWNlV2l0aExpdGVyYWwoVUNoYXIoMHgwMEU5IC8qVSswMEU5
IGlzICfDqScqLyksICIiKTsKKyAgICB0ZXN0U3RyaW5nLnJlcGxhY2UoVUNoYXIoMHgwMEU5IC8q
VSswMEU5IGlzICfDqScqLyksICIiX3MpOwogICAgIEVYUEVDVF9TVFJFUSgicnN1bSIsIHRlc3RT
dHJpbmcudXRmOCgpLmRhdGEoKSk7CiAKICAgICB0ZXN0U3RyaW5nID0gU3RyaW5nOjpmcm9tVVRG
OCgicsOpc3Vtw6kiKTsKICAgICBFWFBFQ1RfRkFMU0UodGVzdFN0cmluZy5pczhCaXQoKSk7Ci0g
ICAgdGVzdFN0cmluZy5yZXBsYWNlV2l0aExpdGVyYWwoJzMnLCAiTm90Rm91bmQiKTsKKyAgICB0
ZXN0U3RyaW5nLnJlcGxhY2UoJzMnLCAiTm90Rm91bmQiX3MpOwogICAgIEVYUEVDVF9TVFJFUSgi
csOpc3Vtw6kiLCB0ZXN0U3RyaW5nLnV0ZjgoKS5kYXRhKCkpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457943</attachid>
            <date>2022-04-19 16:52:18 -0700</date>
            <delta_ts>2022-04-19 19:33:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239500-20220419165218.patch</filename>
            <type>text/plain</type>
            <size>26111</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzMDQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGIxNDBiMjQwNjZjZjMyMDRiMDZhMDRj
YmQwM2E4NTQzNjdiNGJiZTkuLmU0ZjRjZGVhMDg1YTdjMDlkMDEwNjhjMmRmNmVkYjNhMTZiZWM3
NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMjItMDQtMTkgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIFN0cmluZzo6cmVwbGFjZVdpdGhMaXRlcmFs
KCkgd2l0aCBhIFN0cmluZzo6cmVwbGFjZSgpIG92ZXJsb2FkIHRoYXQgdGFrZXMgaW4gYW4gQVND
SUlMaXRlcmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzk1MDAKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBS
ZXBsYWNlIFN0cmluZzo6cmVwbGFjZVdpdGhMaXRlcmFsKCkgd2l0aCBhIFN0cmluZzo6cmVwbGFj
ZSgpIG92ZXJsb2FkIHRoYXQgdGFrZXMgaW4gYW4gQVNDSUlMaXRlcmFsLgorICAgICAgICByZXBs
YWNlV2l0aExpdGVyYWwoKSB3YXMgZW5jb3VyYWdpbmcgcGVvcGxlIG5vdCB0byB1c2UgQVNDSUlM
aXRlcmFsIGFuZCB0aGUgIiJfcyBzdWZmaXggYW5kIGNhbGxpbmcKKyAgICAgICAgcmVwbGFjZSgp
IHdpdGggYW4gQVNDSUlMaXRlcmFsIHdvdWxkIHJlc3VsdCBpbiBsZXNzIGVmZmljaWVudCBjb2Rl
LCB3aGljaCBnb2VzIGFnYWluc3QgdGhlIGlkZWEgb2YKKyAgICAgICAgQVNDSUlMaXRlcmFsLgor
CisgICAgICAgIFRvIGFkZHJlc3MgdGhpcywgU3RyaW5nOjpyZXBsYWNlV2l0aExpdGVyYWwoKSBp
cyByZW1vdmVkLiBOb3csIGNhbGxlcnMgY2FuIGNhbGwgU3RyaW5nOjpyZXBsYWNlKCkKKyAgICAg
ICAgd2l0aCBhbiBBU0NJSUxpdGVyYWwgaW5zdGVhZCBhbmQgaXQgd2lsbCByZXN1bHQgaW4gY29k
ZSB0aGF0IGlzIGFzIGVmZmljaWVudC4gSSBoYXZlIHZlcmlmaWVkIHRoYXQKKyAgICAgICAgdGhp
cyBjaGFuZ2UgaXMgcGVyZi1uZXV0cmFsIG9uIFNwZWVkb21ldGVyIG9uIGJvdGggQXBwbGUgU2ls
aWNvbiBhbmQgSW50ZWwuCisKKyAgICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuaDoKKyAgICAg
ICAgKFdURjo6U3RyaW5nOjpyZXBsYWNlKToKKyAgICAgICAgKFdURjo6U3RyaW5nOjpyZXBsYWNl
V2l0aExpdGVyYWwpOiBEZWxldGVkLgorCiAyMDIyLTA0LTE5ICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CiAKICAgICAgICAgSW50cm9kdWNlIG1ha2VBdG9tU3RyaW5nKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCA0ZTQyOWQwM2M2ODYyMTY5MTAxZjc4ODE0YzgxM2NmMGVhZmRkYjk4Li41MjI3YTlh
Yjg0NGMyZWE3MjFmNDI2MmJkOTU4NGY1ZTE3Y2E2NzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MzkgQEAKKzIwMjItMDQtMTkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAg
ICAgICBSZXBsYWNlIFN0cmluZzo6cmVwbGFjZVdpdGhMaXRlcmFsKCkgd2l0aCBhIFN0cmluZzo6
cmVwbGFjZSgpIG92ZXJsb2FkIHRoYXQgdGFrZXMgaW4gYW4gQVNDSUlMaXRlcmFsCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzk1MDAKKworICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmVuY29kZURhdGFiYXNlTmFtZSk6CisgICAg
ICAgICogZGlzcGxheS9jc3MvRGlzcGxheVRleHRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheTo6VGV4dEJveDo6ZGVidWdEZXNjcmlwdGlvbiBjb25zdCk6CisgICAgICAgICogZG9t
L05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6c2hvd05vZGUgY29uc3QpOgorICAg
ICAgICAqIGRvbS9UZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZFRleHRSZXByZXNl
bnRhdGlvbik6CisgICAgICAgICogZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVDaGFuZ2U6OmV4dHJhY3RUZXh0U3R5bGVzKToKKyAgICAgICAgKiBlZGl0
aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNlbGVjdGVkVGV4dCBj
b25zdCk6CisgICAgICAgICogZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kUXVvdGVkVVJMQXR0cmlidXRlVmFs
dWUpOgorICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjp0YWtlUmVzdWx0cyk6CisgICAgICAgICogaHRtbC9VUkxE
ZWNvbXBvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVSTERlY29tcG9zaXRpb246OnNl
dFNlYXJjaCk6CisgICAgICAgICogbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpvdXRwdXRMYXlvdXRCb3gpOgorICAgICAg
ICAqIGxvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRN
YWlsdG9Qb3N0Rm9ybURhdGFUb1VSTCk6CisgICAgICAgICogcmVuZGVyaW5nL0xlZ2FjeUlubGlu
ZVRleHRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6b3V0
cHV0TGluZUJveCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6Om91dHB1dFJlbmRlck9iamVjdCBjb25z
dCk6CisgICAgICAgICogeG1sL1hTTFRQcm9jZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
dHJhbnNmb3JtVGV4dFN0cmluZ1RvWEhUTUxEb2N1bWVudFN0cmluZyk6CisKIDIwMjItMDQtMTkg
IFRpbSBOZ3V5ZW4gIDxudGltQGFwcGxlLmNvbT4KIAogICAgICAgICBDbGVhbiB1cCBTVkdzIGFk
ZGVkIGJ5IHIyOTMwMzgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckF1ZGl0QWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXVkaXRBZ2VudC5jcHAKaW5kZXggODJjYzZhMGUz
NjhjMjViODA4YTg0NTEyNmEzZDYzZTMxMDVmNGMyYS4uN2IzMDI0MTRiMjUxZDk2ZTBhN2Q3N2Vk
NjhjNjZkY2E4ZjczOWE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yQXVkaXRBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXVkaXRBZ2VudC5jcHAKQEAgLTkyLDcg
KzkyLDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxSZWY8UHJvdG9jb2w6
OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4sIHN0ZDo6b3AKICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQu
aGFzTm9WYWx1ZSgpKQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoZXJyb3JTdHJpbmcp
OwogCi0gICAgYXV0byBmdW5jdGlvblN0cmluZyA9IG1ha2VTdHJpbmcoIihmdW5jdGlvbihXZWJJ
bnNwZWN0b3JBdWRpdCkgeyBcInVzZSBzdHJpY3RcIjsgcmV0dXJuIGV2YWwoYCgiLCBTdHJpbmcg
eyB0ZXN0IH0ucmVwbGFjZSgnYCcsICJcXGAiKSwgIilgKShXZWJJbnNwZWN0b3JBdWRpdCk7IH0p
Iik7CisgICAgYXV0byBmdW5jdGlvblN0cmluZyA9IG1ha2VTdHJpbmcoIihmdW5jdGlvbihXZWJJ
bnNwZWN0b3JBdWRpdCkgeyBcInVzZSBzdHJpY3RcIjsgcmV0dXJuIGV2YWwoYCgiLCBTdHJpbmcg
eyB0ZXN0IH0ucmVwbGFjZSgnYCcsICJcXGAiX3MpLCAiKWApKFdlYkluc3BlY3RvckF1ZGl0KTsg
fSkiKTsKIAogICAgIEluamVjdGVkU2NyaXB0OjpFeGVjdXRlT3B0aW9ucyBvcHRpb25zOwogICAg
IG9wdGlvbnMub2JqZWN0R3JvdXAgPSAiYXVkaXQiX3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaApp
bmRleCA4MTA1NDJmMDAxYjcwMTU5NGZmMGVlNjI3OWRhNDRhNmI5ZmZmMGExLi45MzNhMDhkYjhl
YzZiYzIxNmNlNzBiM2E0ZDJkYzkzNjQyYzlkNDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1dURlN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgK
QEAgLTE5Myw5ICsxOTMsMTAgQEAgcHVibGljOgogCiAgICAgU3RyaW5nJiByZXBsYWNlKFVDaGFy
IHRhcmdldCwgVUNoYXIgcmVwbGFjZW1lbnQpOwogICAgIFN0cmluZyYgcmVwbGFjZShVQ2hhciB0
YXJnZXQsIFN0cmluZ1ZpZXcgcmVwbGFjZW1lbnQpOworICAgIFN0cmluZyYgcmVwbGFjZShVQ2hh
ciB0YXJnZXQsIEFTQ0lJTGl0ZXJhbCk7CisgICAgU3RyaW5nJiByZXBsYWNlKFVDaGFyIHRhcmdl
dCwgY29uc3QgY2hhciopID0gZGVsZXRlOwogICAgIFN0cmluZyYgcmVwbGFjZShTdHJpbmdWaWV3
IHRhcmdldCwgU3RyaW5nVmlldyByZXBsYWNlbWVudCk7CiAgICAgU3RyaW5nJiByZXBsYWNlKHVu
c2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIFN0cmluZ1ZpZXcgcmVwbGFjZW1lbnQpOwot
ICAgIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlckNvdW50PiBTdHJpbmcmIHJlcGxhY2VXaXRo
TGl0ZXJhbChVQ2hhciB0YXJnZXQsIGNvbnN0IGNoYXIgKCZyZXBsYWNlbWVudClbY2hhcmFjdGVy
Q291bnRdKTsKIAogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHJlbW92ZSh1bnNpZ25lZCBw
b3NpdGlvbiwgdW5zaWduZWQgbGVuZ3RoID0gMSk7CiAKQEAgLTQ5MCwxMCArNDkxLDEwIEBAIGlu
bGluZSBTdHJpbmcmIFN0cmluZzo6cmVwbGFjZShVQ2hhciB0YXJnZXQsIFVDaGFyIHJlcGxhY2Vt
ZW50KQogICAgIHJldHVybiAqdGhpczsKIH0KIAotdGVtcGxhdGU8dW5zaWduZWQgY2hhcmFjdGVy
Q291bnQ+IEFMV0FZU19JTkxJTkUgU3RyaW5nJiBTdHJpbmc6OnJlcGxhY2VXaXRoTGl0ZXJhbChV
Q2hhciB0YXJnZXQsIGNvbnN0IGNoYXIgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJDb3VudF0pCitB
TFdBWVNfSU5MSU5FIFN0cmluZyYgU3RyaW5nOjpyZXBsYWNlKFVDaGFyIHRhcmdldCwgQVNDSUlM
aXRlcmFsIGxpdGVyYWwpCiB7CiAgICAgaWYgKG1faW1wbCkKLSAgICAgICAgbV9pbXBsID0gbV9p
bXBsLT5yZXBsYWNlKHRhcmdldCwgY2hhcmFjdGVycywgY2hhcmFjdGVyQ291bnQgLSAxKTsKKyAg
ICAgICAgbV9pbXBsID0gbV9pbXBsLT5yZXBsYWNlKHRhcmdldCwgbGl0ZXJhbC5jaGFyYWN0ZXJz
KCksIGxpdGVyYWwubGVuZ3RoKCkpOwogICAgIHJldHVybiAqdGhpczsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tp
bmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FM
aXRlSURCQmFja2luZ1N0b3JlLmNwcAppbmRleCBjYmQ0NjI3OTA3ODc3ODAyZjM4YzZhNGRmYjY2
YzFhMjIzMWRiM2NmLi44NzA5NzJmMzIyMTNlZGZlMGQzNDI4ZWJiMTlhNmJkZTU4NGQ2MmY3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRl
SURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcApAQCAtOTE3LDcgKzkxNyw3IEBAIFN0
cmluZyBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmVuY29kZURhdGFiYXNlTmFtZShjb25zdCBTdHJp
bmcmIGRhdGFiYXNlTmFtZSkKICAgICAgICAgcmV0dXJuICIlMDAiX3M7CiAKICAgICBTdHJpbmcg
ZmlsZW5hbWUgPSBGaWxlU3lzdGVtOjplbmNvZGVGb3JGaWxlTmFtZShkYXRhYmFzZU5hbWUpOwot
ICAgIGZpbGVuYW1lLnJlcGxhY2VXaXRoTGl0ZXJhbCgnLicsICIlMkUiKTsKKyAgICBmaWxlbmFt
ZS5yZXBsYWNlKCcuJywgIiUyRSJfcyk7CiAKICAgICByZXR1cm4gZmlsZW5hbWU7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9u
UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRl
bnNpb25QYXJzZXIuY3BwCmluZGV4IDM0YTg2ZmQ0OWY2N2JiYTE0MDI1MTQyNDVhODZkY2Y1ZDQw
ZTkzNTQuLjA4ZmE0NjdjOGEyZTM1ZTgwMTkzNzc5MGNmMmQ5MGZiYjhiZWNmMGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25QYXJz
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRl
bnNpb25QYXJzZXIuY3BwCkBAIC04MSwxOSArODEsMTkgQEAgc3RhdGljIEV4cGVjdGVkPFZlY3Rv
cjxTdHJpbmc+LCBzdGQ6OmVycm9yX2NvZGU+IGdldERvbWFpbkxpc3QoY29uc3QgSlNPTjo6QXJy
YXkKICAgICAgICAgICAgIGRvbWFpbiA9IGRvbWFpbi5zdWJzdHJpbmcoMSk7CiAgICAgICAgIH0K
IAotICAgICAgICBzdGQ6OmFycmF5PHN0ZDo6cGFpcjxVQ2hhciwgY29uc3QgY2hhcio+LCA5PiBl
c2NhcGVUYWJsZSB7IHsKLSAgICAgICAgICAgIHsgJ1xcJywgIlxcXFwiIH0sCi0gICAgICAgICAg
ICB7ICd7JywgIlxceyIgfSwKLSAgICAgICAgICAgIHsgJ30nLCAiXFx9IiB9LAotICAgICAgICAg
ICAgeyAnWycsICJcXFsiIH0sCi0gICAgICAgICAgICB7ICdbJywgIlxcWyIgfSwKLSAgICAgICAg
ICAgIHsgJy4nLCAiXFwuIiB9LAotICAgICAgICAgICAgeyAnPycsICJcXD8iIH0sCi0gICAgICAg
ICAgICB7ICcqJywgIlxcKiIgfSwKLSAgICAgICAgICAgIHsgJyQnLCAiXFwkIiB9CisgICAgICAg
IHN0ZDo6YXJyYXk8c3RkOjpwYWlyPFVDaGFyLCBBU0NJSUxpdGVyYWw+LCA5PiBlc2NhcGVUYWJs
ZSB7IHsKKyAgICAgICAgICAgIHsgJ1xcJywgIlxcXFwiX3MgfSwKKyAgICAgICAgICAgIHsgJ3sn
LCAiXFx7Il9zIH0sCisgICAgICAgICAgICB7ICd9JywgIlxcfSJfcyB9LAorICAgICAgICAgICAg
eyAnWycsICJcXFsiX3MgfSwKKyAgICAgICAgICAgIHsgJ1snLCAiXFxbIl9zIH0sCisgICAgICAg
ICAgICB7ICcuJywgIlxcLiJfcyB9LAorICAgICAgICAgICAgeyAnPycsICJcXD8iX3MgfSwKKyAg
ICAgICAgICAgIHsgJyonLCAiXFwqIl9zIH0sCisgICAgICAgICAgICB7ICckJywgIlxcJCJfcyB9
CiAgICAgICAgIH0gfTsKICAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogZXNjYXBlVGFibGUpCi0g
ICAgICAgICAgICBkb21haW4gPSBkb21haW4ucmVwbGFjZShwYWlyLmZpcnN0LCBTdHJpbmdWaWV3
IHsgcGFpci5zZWNvbmQgfSk7CisgICAgICAgICAgICBkb21haW4gPSBkb21haW4ucmVwbGFjZShw
YWlyLmZpcnN0LCBwYWlyLnNlY29uZCk7CiAKICAgICAgICAgY29uc3QgY2hhciogcHJvdG9jb2xS
ZWdleCA9ICJbYS16XVthLXorLi1dKjpcXC9cXC8iOwogICAgICAgICBjb25zdCBjaGFyKiBhbGxv
d1N1YmRvbWFpbnNSZWdleCA9ICIoLipcXC4pKiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kaXNwbGF5L2Nzcy9EaXNwbGF5VGV4dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5
L2Nzcy9EaXNwbGF5VGV4dEJveC5jcHAKaW5kZXggNmFlZjAxZDAwNjNlZjAyYjE2MzA4ZjdmNzZi
OTFjOTA5YTU5NDJjNC4uNmU3MGMwOWE1OWE2ZGZkZjVkZjg4YWEyMDAwNDZjZDg3NTU5Njg5ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheVRleHRCb3guY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlUZXh0Qm94LmNwcApAQCAt
NTQsOCArNTQsOCBAQCBTdHJpbmcgVGV4dEJveDo6ZGVidWdEZXNjcmlwdGlvbigpIGNvbnN0CiAK
ICAgICBzdHJlYW0gPDwgYm94TmFtZSgpIDw8ICIgIiA8PCBhYnNvbHV0ZUJveFJlY3QoKSA8PCAi
ICgiIDw8IHRoaXMgPDwgIikiOwogICAgIGF1dG8gdGV4dENvbnRlbnQgPSB0ZXh0KCkub3JpZ2lu
YWxDb250ZW50KCkuc3Vic3RyaW5nKHRleHQoKS5zdGFydCgpLCB0ZXh0KCkubGVuZ3RoKCkpLnRv
U3RyaW5nKCk7Ci0gICAgdGV4dENvbnRlbnQucmVwbGFjZVdpdGhMaXRlcmFsKCdcXCcsICJcXFxc
Iik7Ci0gICAgdGV4dENvbnRlbnQucmVwbGFjZVdpdGhMaXRlcmFsKCdcbicsICJcXG4iKTsKKyAg
ICB0ZXh0Q29udGVudC5yZXBsYWNlKCdcXCcsICJcXFxcIl9zKTsKKyAgICB0ZXh0Q29udGVudC5y
ZXBsYWNlKCdcbicsICJcXG4iX3MpOwogICAgIGNvbnN0IHNpemVfdCBtYXhQcmludGVkTGVuZ3Ro
ID0gODA7CiAgICAgaWYgKHRleHRDb250ZW50Lmxlbmd0aCgpID4gbWF4UHJpbnRlZExlbmd0aCkg
ewogICAgICAgICBhdXRvIHN1YnN0cmluZyA9IFN0cmluZ1ZpZXcodGV4dENvbnRlbnQpLmxlZnQo
bWF4UHJpbnRlZExlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggY2I0N2VhYWVjMGRlNzA1YjM0
ODM2ZjU3MDI3YjRkYzE1NzhiOTUxZS4uODVmZTI1ZjVkMDZhODkxMmZlOWY5YjkxMGE2M2NlOWZi
NTg1YWJmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMTc5OSw4ICsxNzk5LDggQEAgdm9pZCBOb2Rl
OjpzaG93Tm9kZShjb25zdCBjaGFyKiBwcmVmaXgpIGNvbnN0CiAgICAgICAgIHByZWZpeCA9ICIi
OwogICAgIGlmIChpc1RleHROb2RlKCkpIHsKICAgICAgICAgU3RyaW5nIHZhbHVlID0gbm9kZVZh
bHVlKCk7Ci0gICAgICAgIHZhbHVlLnJlcGxhY2VXaXRoTGl0ZXJhbCgnXFwnLCAiXFxcXCIpOwot
ICAgICAgICB2YWx1ZS5yZXBsYWNlV2l0aExpdGVyYWwoJ1xuJywgIlxcbiIpOworICAgICAgICB2
YWx1ZS5yZXBsYWNlKCdcXCcsICJcXFxcIl9zKTsKKyAgICAgICAgdmFsdWUucmVwbGFjZSgnXG4n
LCAiXFxuIl9zKTsKICAgICAgICAgZnByaW50ZihzdGRlcnIsICIlcyVzXHQlcCBcIiVzXCJcbiIs
IHByZWZpeCwgbm9kZU5hbWUoKS51dGY4KCkuZGF0YSgpLCB0aGlzLCB2YWx1ZS51dGY4KCkuZGF0
YSgpKTsKICAgICB9IGVsc2UgewogICAgICAgICBTdHJpbmdCdWlsZGVyIGF0dHJzOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Rl
eHQuY3BwCmluZGV4IDRiOTAzZjhmZGYyYmFkOTM5ZGRhYmE4MGNkZTg4MDU0NDEyOTc2ZTIuLmUw
NGQ1ZTM2ZjM2ZDBlMTFjNGRhMGFjZTVhMTllMDQ5MTVkMzQyMjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9UZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5jcHAK
QEAgLTIyOCw4ICsyMjgsOCBAQCBzdGF0aWMgdm9pZCBhcHBlbmRUZXh0UmVwcmVzZW50YXRpb24o
U3RyaW5nQnVpbGRlciYgYnVpbGRlciwgY29uc3QgVGV4dCYgdGV4dCkKICAgICBTdHJpbmcgdmFs
dWUgPSB0ZXh0LmRhdGEoKTsKICAgICBidWlsZGVyLmFwcGVuZCgiIGxlbmd0aD0iX3MsIHZhbHVl
Lmxlbmd0aCgpKTsKIAotICAgIHZhbHVlLnJlcGxhY2VXaXRoTGl0ZXJhbCgnXFwnLCAiXFxcXCIp
OwotICAgIHZhbHVlLnJlcGxhY2VXaXRoTGl0ZXJhbCgnXG4nLCAiXFxuIik7CisgICAgdmFsdWUu
cmVwbGFjZSgnXFwnLCAiXFxcXCJfcyk7CisgICAgdmFsdWUucmVwbGFjZSgnXG4nLCAiXFxuIl9z
KTsKICAgICAKICAgICBjb25zdGV4cHIgc2l6ZV90IG1heER1bXBMZW5ndGggPSAzMDsKICAgICBp
ZiAodmFsdWUubGVuZ3RoKCkgPiBtYXhEdW1wTGVuZ3RoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0aW5nU3R5bGUuY3BwCmluZGV4IDk1MGJkMGY0YmRhODgwNWY4Zjg1OWM2OTI1Yzk3YTU5Mjg5
MDkwMjAuLjk0OGM4YmIyZGFlZTg5YTZlYzA0NzU5Y2QzYWE2ZjIxYzg1NTQ3ZjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKQEAgLTE4NTMsNyArMTg1Myw3IEBAIHZv
aWQgU3R5bGVDaGFuZ2U6OmV4dHJhY3RUZXh0U3R5bGVzKERvY3VtZW50JiBkb2N1bWVudCwgTXV0
YWJsZVN0eWxlUHJvcGVydGllcyYKIAogICAgIG1fYXBwbHlGb250RmFjZSA9IHN0eWxlLmdldFBy
b3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlGb250RmFtaWx5KTsKICAgICAvLyBSZW1vdmUgcXVvdGVz
IGZvciBPdXRsb29rIDIwMDcgY29tcGF0aWJpbGl0eS4gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03OTQ0OAotICAgIG1fYXBwbHlGb250RmFjZS5yZXBsYWNlV2l0
aExpdGVyYWwoJ1wiJywgIiIpOworICAgIG1fYXBwbHlGb250RmFjZS5yZXBsYWNlKCdcIicsICIi
X3MpOwogICAgIHN0eWxlLnJlbW92ZVByb3BlcnR5KENTU1Byb3BlcnR5Rm9udEZhbWlseSk7CiAK
ICAgICBpZiAoUmVmUHRyPENTU1ZhbHVlPiBmb250U2l6ZSA9IHN0eWxlLmdldFByb3BlcnR5Q1NT
VmFsdWUoQ1NTUHJvcGVydHlGb250U2l6ZSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApp
bmRleCBkZGMzNjQ4N2VlMTdhMWRmZDM4Yjg2MTM0OGQxOTk5MDQxOWY0ZmY4Li4xMTA4OTMwMDY4
YmZkM2RmMjRjYmZlZTM2NWY4Y2E2YTRjODQ4YmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
Y3BwCkBAIC0zMzM0LDcgKzMzMzQsNyBAQCBTdHJpbmcgRWRpdG9yOjpzZWxlY3RlZFRleHQoVGV4
dEl0ZXJhdG9yQmVoYXZpb3JzIGJlaGF2aW9ycykgY29uc3QKIHsKICAgICAvLyBXZSByZW1vdmUg
J1wwJyBjaGFyYWN0ZXJzIGJlY2F1c2UgdGhleSBhcmUgbm90IHZpc2libHkgcmVuZGVyZWQgdG8g
dGhlIHVzZXIuCiAgICAgYXV0byByYW5nZSA9IG1fZG9jdW1lbnQuc2VsZWN0aW9uKCkuc2VsZWN0
aW9uKCkuZmlyc3RSYW5nZSgpOwotICAgIHJldHVybiByYW5nZSA/IHBsYWluVGV4dCgqcmFuZ2Us
IGJlaGF2aW9ycykucmVwbGFjZVdpdGhMaXRlcmFsKCdcMCcsICIiKSA6IGVtcHR5U3RyaW5nKCk7
CisgICAgcmV0dXJuIHJhbmdlID8gcGxhaW5UZXh0KCpyYW5nZSwgYmVoYXZpb3JzKS5yZXBsYWNl
KCdcMCcsICIiX3MpIDogZW1wdHlTdHJpbmcoKTsKIH0KIAogUmVmUHRyPFRleHRQbGFjZWhvbGRl
ckVsZW1lbnQ+IEVkaXRvcjo6aW5zZXJ0VGV4dFBsYWNlaG9sZGVyKGNvbnN0IEludFNpemUmIHNp
emUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCmluZGV4
IDNlNjk2MWQxNzMwZDQzNzRjNjRmZjg3YTJkMGFmMTI3ZWMxMDU0NDAuLjI0Y2VkODY5YjgyZjlh
M2E0YzIzMTM4NzRmYTAxYjM2Zjg5OTBjMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
TWFya3VwQWNjdW11bGF0b3IuY3BwCkBAIC0yODksNyArMjg5LDcgQEAgdm9pZCBNYXJrdXBBY2N1
bXVsYXRvcjo6YXBwZW5kUXVvdGVkVVJMQXR0cmlidXRlVmFsdWUoU3RyaW5nQnVpbGRlciYgcmVz
dWx0LCBjb24KICAgICAgICAgLy8gbWluaW1hbCBlc2NhcGluZyBmb3IgamF2YXNjcmlwdCB1cmxz
CiAgICAgICAgIGlmIChyZXNvbHZlZFVSTFN0cmluZy5jb250YWlucygnIicpKSB7CiAgICAgICAg
ICAgICBpZiAocmVzb2x2ZWRVUkxTdHJpbmcuY29udGFpbnMoJ1wnJykpCi0gICAgICAgICAgICAg
ICAgcmVzb2x2ZWRVUkxTdHJpbmcucmVwbGFjZVdpdGhMaXRlcmFsKCciJywgIiZxdW90OyIpOwor
ICAgICAgICAgICAgICAgIHJlc29sdmVkVVJMU3RyaW5nLnJlcGxhY2UoJyInLCAiJnF1b3Q7Il9z
KTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBxdW90ZUNoYXIgPSAnXCcnOwog
ICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKaW5kZXggMWFjMTVkZDQwZWVmMDA0
ODBjY2M1Y2MwYWUwZDE4ZDViMTNmMTQ4Ny4uMmU5ZDg0MDUwYWRiNTEyZGE4NGJmZTc5ZmEyNmY2
Yjk3OTViYjJkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcApAQCAtNDIxLDcgKzQyMSw3
IEBAIFN0cmluZyBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6dGFrZVJlc3VsdHMoKQogICAgICAg
ICByZXN1bHQuYXBwZW5kKHN0cmluZyk7CiAgICAgcmVzdWx0LmFwcGVuZCh0YWtlTWFya3VwKCkp
OwogICAgIC8vIFJlbW92ZSAnXDAnIGNoYXJhY3RlcnMgYmVjYXVzZSB0aGV5IGFyZSBub3Qgdmlz
aWJseSByZW5kZXJlZCB0byB0aGUgdXNlci4KLSAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCku
cmVwbGFjZVdpdGhMaXRlcmFsKCdcMCcsICIiKTsKKyAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5n
KCkucmVwbGFjZSgnXDAnLCAiIl9zKTsKIH0KIAogdm9pZCBTdHlsZWRNYXJrdXBBY2N1bXVsYXRv
cjo6YXBwZW5kVGV4dChTdHJpbmdCdWlsZGVyJiBvdXQsIGNvbnN0IFRleHQmIHRleHQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTERlY29tcG9zaXRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9VUkxEZWNvbXBvc2l0aW9uLmNwcAppbmRleCA5MzVjZTVkY2I3MjU5YTVl
ZDYwOTk1YTI4NTc4YjY2MGNlNTkwNGI3Li5mMzQ5OTFhMDc3ZjU3NDA4ZjgwZjRhZmY4OWY3ZmNh
MjQ2MzMzMGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTERlY29tcG9zaXRp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMRGVjb21wb3NpdGlvbi5jcHAKQEAg
LTIzNSw3ICsyMzUsNyBAQCB2b2lkIFVSTERlY29tcG9zaXRpb246OnNldFNlYXJjaChjb25zdCBT
dHJpbmcmIHZhbHVlKQogICAgIH0gZWxzZSB7CiAgICAgICAgIFN0cmluZyBuZXdTZWFyY2ggPSB2
YWx1ZTsKICAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgJyMnIGluIHRoZSBxdWVyeSBkb2VzIG5v
dCBsZWFrIHRvIHRoZSBoYXNoLgotICAgICAgICBmdWxsVVJMLnNldFF1ZXJ5KG5ld1NlYXJjaC5y
ZXBsYWNlV2l0aExpdGVyYWwoJyMnLCAiJTIzIikpOworICAgICAgICBmdWxsVVJMLnNldFF1ZXJ5
KG5ld1NlYXJjaC5yZXBsYWNlKCcjJywgIiUyMyJfcykpOwogICAgIH0KICAgICBzZXRGdWxsVVJM
KGZ1bGxVUkwpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRy
ZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRy
ZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCmluZGV4IDY5NDJiMWYyOTZlNTJmNDc2YzkyOTYwOGQw
ZjkxOTJmNDRkMDI1ZDIuLmY4M2NkMTZkN2ZkZjg4NmQzNDA1NDU2M2U4YmE0MWRhYTlmODAxMzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVC
dWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRU
cmVlQnVpbGRlci5jcHAKQEAgLTQ5OCw4ICs0OTgsOCBAQCBzdGF0aWMgdm9pZCBvdXRwdXRMYXlv
dXRCb3goVGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgQm94
RwogICAgICAgICBhdXRvIHRleHRDb250ZW50ID0gZG93bmNhc3Q8SW5saW5lVGV4dEJveD4obGF5
b3V0Qm94KS5jb250ZW50KCk7CiAgICAgICAgIHN0cmVhbSA8PCAiIGxlbmd0aC0+KCIgPDwgdGV4
dENvbnRlbnQubGVuZ3RoKCkgPDwgIikiOwogCi0gICAgICAgIHRleHRDb250ZW50LnJlcGxhY2VX
aXRoTGl0ZXJhbCgnXFwnLCAiXFxcXCIpOwotICAgICAgICB0ZXh0Q29udGVudC5yZXBsYWNlV2l0
aExpdGVyYWwoJ1xuJywgIlxcbiIpOworICAgICAgICB0ZXh0Q29udGVudC5yZXBsYWNlKCdcXCcs
ICJcXFxcIl9zKTsKKyAgICAgICAgdGV4dENvbnRlbnQucmVwbGFjZSgnXG4nLCAiXFxuIl9zKTsK
IAogICAgICAgICBjb25zdCBzaXplX3QgbWF4UHJpbnRlZExlbmd0aCA9IDgwOwogICAgICAgICBp
ZiAodGV4dENvbnRlbnQubGVuZ3RoKCkgPiBtYXhQcmludGVkTGVuZ3RoKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcAppbmRleCA2ZTYyNmY4NDQ5YzU1MGQyOGVmNGU2
NDdmMTc2MDEwMWJjYTEzYzQwLi4yYzAxMmZkZTVkNzc4YjA2N2I1YTVhNzg4NmQ5ZmNmZDNjZjFl
OTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAKQEAgLTcwLDEz
ICs3MCwxMyBAQCBzdGF0aWMgdm9pZCBhcHBlbmRNYWlsdG9Qb3N0Rm9ybURhdGFUb1VSTChVUkwm
IHVybCwgY29uc3QgRm9ybURhdGEmIGRhdGEsIGNvbnN0CiAKICAgICBpZiAoZXF1YWxMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2UoZW5jb2RpbmdUeXBlLCAidGV4dC9wbGFpbiIpKSB7CiAgICAgICAg
IC8vIENvbnZlbnRpb24gc2VlbXMgdG8gYmUgdG8gZGVjb2RlLCBhbmQgcy8mL1xyXG4vLiBBbHNv
LCBzcGFjZXMgYXJlIGVuY29kZWQgYXMgJTIwLgotICAgICAgICBib2R5ID0gUEFMOjpkZWNvZGVV
UkxFc2NhcGVTZXF1ZW5jZXMoYm9keS5yZXBsYWNlV2l0aExpdGVyYWwoJyYnLCAiXHJcbiIpLnJl
cGxhY2UoJysnLCAnICcpKTsKKyAgICAgICAgYm9keSA9IFBBTDo6ZGVjb2RlVVJMRXNjYXBlU2Vx
dWVuY2VzKGJvZHkucmVwbGFjZSgnJicsICJcclxuIl9zKS5yZXBsYWNlKCcrJywgJyAnKSk7CiAg
ICAgfQogCiAgICAgVmVjdG9yPGNoYXI+IGJvZHlEYXRhOwogICAgIGJvZHlEYXRhLmFwcGVuZCgi
Ym9keT0iLCA1KTsKICAgICBGb3JtRGF0YUJ1aWxkZXI6OmVuY29kZVN0cmluZ0FzRm9ybURhdGEo
Ym9keURhdGEsIGJvZHkudXRmOCgpKTsKLSAgICBib2R5ID0gU3RyaW5nKGJvZHlEYXRhLmRhdGEo
KSwgYm9keURhdGEuc2l6ZSgpKS5yZXBsYWNlV2l0aExpdGVyYWwoJysnLCAiJTIwIik7CisgICAg
Ym9keSA9IFN0cmluZyhib2R5RGF0YS5kYXRhKCksIGJvZHlEYXRhLnNpemUoKSkucmVwbGFjZSgn
KycsICIlMjAiX3MpOwogCiAgICAgYXV0byBxdWVyeSA9IHVybC5xdWVyeSgpOwogICAgIGlmIChx
dWVyeS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCmluZGV4IDc4Mzg1NmEzMmY2NTgxNDQ3MTg4
YjUwNTQ0ZDEwMDE2NzYxMjJkOTAuLjZlYmQwZmE3MGU3MzFjN2QyMGZjYTNmYzM2ZWZhMmY5ODRl
OGE3ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VSZXNwb25zZUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCkBAIC0zMDksNyArMzA5LDcgQEAgU3RyaW5nIFJlc291
cmNlUmVzcG9uc2VCYXNlOjpzYW5pdGl6ZVN1Z2dlc3RlZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYg
c3VnZ2VzdGVkRmkKIAogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UgeyB7IHsgfSwgImh0
dHA6Ly9leGFtcGxlLmNvbS8iX3MgfSwgeyB9LCAtMSwgeyB9IH07CiAgICAgcmVzcG9uc2Uuc2V0
SFRUUFN0YXR1c0NvZGUoMjAwKTsKLSAgICBTdHJpbmcgZXNjYXBlZFN1Z2dlc3RlZEZpbGVuYW1l
ID0gU3RyaW5nKHN1Z2dlc3RlZEZpbGVuYW1lKS5yZXBsYWNlKCdcXCcsICJcXFxcIikucmVwbGFj
ZSgnIicsICJcXFwiIik7CisgICAgU3RyaW5nIGVzY2FwZWRTdWdnZXN0ZWRGaWxlbmFtZSA9IFN0
cmluZyhzdWdnZXN0ZWRGaWxlbmFtZSkucmVwbGFjZSgnXFwnLCAiXFxcXCJfcykucmVwbGFjZSgn
IicsICJcXFwiIl9zKTsKICAgICByZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRl
ck5hbWU6OkNvbnRlbnREaXNwb3NpdGlvbiwgbWFrZVN0cmluZygiYXR0YWNobWVudDsgZmlsZW5h
bWU9XCIiLCBlc2NhcGVkU3VnZ2VzdGVkRmlsZW5hbWUsICciJykpOwogICAgIHJldHVybiByZXNw
b25zZS5zdWdnZXN0ZWRGaWxlbmFtZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9EYXRlVGltZUZvcm1hdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L0RhdGVUaW1lRm9ybWF0LmNwcAppbmRleCA0M2ExOGJjZWEwMTc5NjMwYjkwZWVkYzYy
NjQyYjNkYTc3ZTBiMTY0Li5kNTEwOGY0ZGEwYTU2NzI5NGM0ZDhhMGVmODBlM2U1OGUyZDlkNTQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0RhdGVUaW1lRm9ybWF0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0RhdGVUaW1lRm9ybWF0LmNw
cApAQCAtMjY1LDcgKzI2NSw3IEBAIHZvaWQgRGF0ZVRpbWVGb3JtYXQ6OnF1b3RlQW5kQXBwZW5k
TGl0ZXJhbChjb25zdCBTdHJpbmcmIGxpdGVyYWwsIFN0cmluZ0J1aWxkZXImCiAgICAgICAgIGlm
IChsaXRlcmFsW2ldID09ICdcJycpCiAgICAgICAgICAgICBidWZmZXIuYXBwZW5kKCInJyIpOwog
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoJ1wnJywgU3RyaW5nIHsg
bGl0ZXJhbC5zdWJzdHJpbmcoaSkgfS5yZXBsYWNlKCdcJycsICInJyIpLCAnXCcnKTsKKyAgICAg
ICAgICAgIGJ1ZmZlci5hcHBlbmQoJ1wnJywgU3RyaW5nIHsgbGl0ZXJhbC5zdWJzdHJpbmcoaSkg
fS5yZXBsYWNlKCdcJycsICInJyJfcyksICdcJycpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2Fj
eUlubGluZVRleHRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGlu
ZVRleHRCb3guY3BwCmluZGV4IGJlZTExNDdmZWEzNWMyYWI1N2RmZjhiMzFiYjgzZGY3MTE0MGM1
NDEuLmZkY2Y0NTc2Y2QzMzJhNzY2MjlhN2RiNTIxNTVkZDE0Njk0ODllZjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lJbmxpbmVUZXh0Qm94LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lVGV4dEJveC5jcHAKQEAgLTUyOCw4
ICs1MjgsOCBAQCB2b2lkIExlZ2FjeUlubGluZVRleHRCb3g6Om91dHB1dExpbmVCb3goVGV4dFN0
cmVhbSYgc3RyZWFtLCBib29sIG1hcmssIGludCBkZXB0aAogCiAgICAgU3RyaW5nIHZhbHVlID0g
cmVuZGVyZXIoKS50ZXh0KCk7CiAgICAgdmFsdWUgPSB2YWx1ZS5zdWJzdHJpbmcoc3RhcnQoKSwg
bGVuKCkpOwotICAgIHZhbHVlLnJlcGxhY2VXaXRoTGl0ZXJhbCgnXFwnLCAiXFxcXCIpOwotICAg
IHZhbHVlLnJlcGxhY2VXaXRoTGl0ZXJhbCgnXG4nLCAiXFxuIik7CisgICAgdmFsdWUucmVwbGFj
ZSgnXFwnLCAiXFxcXCJfcyk7CisgICAgdmFsdWUucmVwbGFjZSgnXG4nLCAiXFxuIl9zKTsKICAg
ICBzdHJlYW0gPDwgYm94TmFtZSgpIDw8ICIgIiA8PCBGbG9hdFJlY3QoeCgpLCB5KCksIHdpZHRo
KCksIGhlaWdodCgpKSA8PCAiICgiIDw8IHRoaXMgPDwgIikgcmVuZGVyZXItPigiIDw8ICZyZW5k
ZXJlcigpIDw8ICIpIHJ1bigiIDw8IHN0YXJ0KCkgPDwgIiwgIiA8PCBzdGFydCgpICsgbGVuKCkg
PDwgIikgXCIiIDw8IHZhbHVlLnV0ZjgoKS5kYXRhKCkgPDwgIlwiIjsKICAgICBzdHJlYW0ubmV4
dExpbmUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5k
ZXggYTU5NzE2M2IwYzQzYjJhZDM1NGE2M2RkYTczOGI2MzkzYjllMzgzNy4uMDM1ZWZlMzg1N2Yw
N2ZhYjQ4NzRlODI0MmU0ODQxMGM2NWEyNzdlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5jcHAKQEAgLTEyNjUsOCArMTI2NSw4IEBAIHZvaWQgUmVuZGVyT2JqZWN0
OjpvdXRwdXRSZW5kZXJPYmplY3QoVGV4dFN0cmVhbSYgc3RyZWFtLCBib29sIG1hcmssIGludCBk
ZXB0aCkKICAgICAgICAgICAgIFN0cmluZyB2YWx1ZSA9IG5vZGUoKS0+bm9kZVZhbHVlKCk7CiAg
ICAgICAgICAgICBzdHJlYW0gPDwgIiBsZW5ndGgtPigiIDw8IHZhbHVlLmxlbmd0aCgpIDw8ICIp
IjsKIAotICAgICAgICAgICAgdmFsdWUucmVwbGFjZVdpdGhMaXRlcmFsKCdcXCcsICJcXFxcIik7
Ci0gICAgICAgICAgICB2YWx1ZS5yZXBsYWNlV2l0aExpdGVyYWwoJ1xuJywgIlxcbiIpOworICAg
ICAgICAgICAgdmFsdWUucmVwbGFjZSgnXFwnLCAiXFxcXCJfcyk7CisgICAgICAgICAgICB2YWx1
ZS5yZXBsYWNlKCdcbicsICJcXG4iX3MpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBjb25z
dCBpbnQgbWF4UHJpbnRlZExlbmd0aCA9IDgwOwogICAgICAgICAgICAgaWYgKHZhbHVlLmxlbmd0
aCgpID4gbWF4UHJpbnRlZExlbmd0aCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1s
L1hTTFRQcm9jZXNzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuY3Bw
CmluZGV4IGJlNThkNmY3NDQxY2QwODNiMjMyYTRjZDQ1ZDQwZTE0ZjQ4YTViYTEuLjY0NzQyYTEx
YmFjOGIyODlmNzc4YzYyNzQ1YThiNzVjOGZhOTcwMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3htbC9YU0xUUHJvY2Vzc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFBy
b2Nlc3Nvci5jcHAKQEAgLTQ1LDggKzQ1LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RhdGlj
IGlubGluZSB2b2lkIHRyYW5zZm9ybVRleHRTdHJpbmdUb1hIVE1MRG9jdW1lbnRTdHJpbmcoU3Ry
aW5nJiB0ZXh0KQogewogICAgIC8vIE1vZGlmeSB0aGUgb3V0cHV0IHNvIHRoYXQgaXQgaXMgYSB3
ZWxsLWZvcm1lZCBYSFRNTCBkb2N1bWVudCB3aXRoIGEgPHByZT4gdGFnIGVuY2xvc2luZyB0aGUg
dGV4dC4KLSAgICB0ZXh0LnJlcGxhY2VXaXRoTGl0ZXJhbCgnJicsICImYW1wOyIpOwotICAgIHRl
eHQucmVwbGFjZVdpdGhMaXRlcmFsKCc8JywgIiZsdDsiKTsKKyAgICB0ZXh0LnJlcGxhY2UoJyYn
LCAiJmFtcDsiX3MpOworICAgIHRleHQucmVwbGFjZSgnPCcsICImbHQ7Il9zKTsKICAgICB0ZXh0
ID0gIjw/eG1sIHZlcnNpb249XCIxLjBcIiBlbmNvZGluZz1cIlVURi04XCI/PlxuIgogICAgICAg
ICAiPCFET0NUWVBFIGh0bWwgUFVCTElDIFwiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0cmljdC8v
RU5cIiBcImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXN0cmljdC5kdGRc
Ij5cbiIKICAgICAgICAgIjxodG1sIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRt
bFwiPlxuIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGVkNzNmMGE3MTIyNmY1YmVmMzgyYzBmY2I2ZDFjOWZk
ZmZkODY0N2MuLjAyODM0YjRlNDM0N2UyYTE2NDM3M2JhZGVjNWVlNDVhZjE4NDQwMGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5jcHAKQEAgLTE1OTIsNyArMTU5Miw3IEBAIGJvb2wgTmV0d29ya1Jlc291cmNlTG9hZGVy
OjpzaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvCiAK
IHN0YXRpYyBTdHJpbmcgZXNjYXBlRm9ySlNPTihTdHJpbmcgcykKIHsKLSAgICByZXR1cm4gcy5y
ZXBsYWNlKCdcXCcsICJcXFxcIikucmVwbGFjZSgnIicsICJcXFwiIik7CisgICAgcmV0dXJuIHMu
cmVwbGFjZSgnXFwnLCAiXFxcXCJfcykucmVwbGFjZSgnIicsICJcXFwiIl9zKTsKIH0KIAogdGVt
cGxhdGU8dHlwZW5hbWUgSWRlbnRpZmllclR5cGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZE9i
c2VydmVyLmNwcAppbmRleCAyMjQyOTkzZWU3NzExOGQwMDk3N2RiMzZlMDNjODM4MGU4MDU1OGI1
Li5lNzJiZDAxOTFiOTQ2YTVlYWQzMWFkYWJjNWJjYTNhYjZlZDA5ZTZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAKQEAgLTM4NCw3ICszODQsNyBAQCB2b2lkIFdlYlJl
c291cmNlTG9hZE9ic2VydmVyOjpsb2dVc2VySW50ZXJhY3Rpb25XaXRoUmVkdWNlZFRpbWVSZXNv
bHV0aW9uKGNvbnN0CiAgICAgICAgIFJFTEVBU0VfTE9HKFJlc291cmNlTG9hZFN0YXRpc3RpY3Ms
ICJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nVXNlckludGVyYWN0aW9uOiBjb3VudGVyPSUiIFBS
SXU2NCAiOiAiIHN0ciwgY291bnRlciwgIyNfX1ZBX0FSR1NfXykKIAogICAgICAgICBhdXRvIGVz
Y2FwZUZvckpTT04gPSBbXShTdHJpbmcgcykgewotICAgICAgICAgICAgcy5yZXBsYWNlKCdcXCcs
ICJcXFxcIikucmVwbGFjZSgnIicsICJcXFwiIik7CisgICAgICAgICAgICBzLnJlcGxhY2UoJ1xc
JywgIlxcXFwiX3MpLnJlcGxhY2UoJyInLCAiXFxcIiJfcyk7CiAgICAgICAgICAgICByZXR1cm4g
czsKICAgICAgICAgfTsKICAgICAgICAgYXV0byBlc2NhcGVkVVJMID0gZXNjYXBlRm9ySlNPTih1
cmwuc3RyaW5nKCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IDdiMDI1ODRkYjJjZjNlMzNhMmUzZDdmYjRiZGQ2NmNlNGJkM2VjODcuLmRkMTYy
ZGUwNDg1MDZkNDJmY2JkNzVmYjc4NDJmZGMwNjFlYjEzYmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMi0wNC0x
OSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgU3Ry
aW5nOjpyZXBsYWNlV2l0aExpdGVyYWwoKSB3aXRoIGEgU3RyaW5nOjpyZXBsYWNlKCkgb3Zlcmxv
YWQgdGhhdCB0YWtlcyBpbiBhbiBBU0NJSUxpdGVyYWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTUwMAorCisgICAgICAgIFJldmlld2VkIGJ5IERh
cmluIEFkbGVyLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV1RGU3RyaW5n
LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDIyLTA0LTE5ICBNaWNo
YWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgogCiAgICAgICAgIFZhcmlvdXMgV2ViS2l0
IHRvb2xzIG5lZWQgdG8gYmUgdG9sZCBhYm91dCB0aGUgc3lzdGVtIGNvbnRlbnQgcGF0aApkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV1RGU3RyaW5nLmNwcCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dURlN0cmluZy5jcHAKaW5kZXggNWIyMTcyZWMw
MGI3NzRmNGZmOTEyNWFkNTFjNTVkZWI3ZDIzNmIxZC4uNmRmZDRkYzI2MjM3YjhiMTFlMWJkM2Vi
ZDgyOGQyYzI2N2IzNGNmMCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvV1RGU3RyaW5nLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9XVEZT
dHJpbmcuY3BwCkBAIC0yMzksMzggKzIzOSwzOCBAQCBURVNUKFdURiwgU3RyaW5nUmVwbGFjZVdp
dGhMaXRlcmFsKQogICAgIC8vIENhc2VzIGZvciA4Qml0IHNvdXJjZS4KICAgICBTdHJpbmcgdGVz
dFN0cmluZyA9ICIxMjI0Il9zOwogICAgIEVYUEVDVF9UUlVFKHRlc3RTdHJpbmcuaXM4Qml0KCkp
OwotICAgIHRlc3RTdHJpbmcucmVwbGFjZVdpdGhMaXRlcmFsKCcyJywgIiIpOworICAgIHRlc3RT
dHJpbmcucmVwbGFjZSgnMicsICIiX3MpOwogICAgIEVYUEVDVF9TVFJFUSgiMTQiLCB0ZXN0U3Ry
aW5nLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgdGVzdFN0cmluZyA9ICIxMjI0Il9zOwogICAgIEVY
UEVDVF9UUlVFKHRlc3RTdHJpbmcuaXM4Qml0KCkpOwotICAgIHRlc3RTdHJpbmcucmVwbGFjZVdp
dGhMaXRlcmFsKCcyJywgIjMiKTsKKyAgICB0ZXN0U3RyaW5nLnJlcGxhY2UoJzInLCAiMyJfcyk7
CiAgICAgRVhQRUNUX1NUUkVRKCIxMzM0IiwgdGVzdFN0cmluZy51dGY4KCkuZGF0YSgpKTsKIAog
ICAgIHRlc3RTdHJpbmcgPSAiMTIyNCJfczsKICAgICBFWFBFQ1RfVFJVRSh0ZXN0U3RyaW5nLmlz
OEJpdCgpKTsKLSAgICB0ZXN0U3RyaW5nLnJlcGxhY2VXaXRoTGl0ZXJhbCgnMicsICI1NTUiKTsK
KyAgICB0ZXN0U3RyaW5nLnJlcGxhY2UoJzInLCAiNTU1Il9zKTsKICAgICBFWFBFQ1RfU1RSRVEo
IjE1NTU1NTU0IiwgdGVzdFN0cmluZy51dGY4KCkuZGF0YSgpKTsKIAogICAgIHRlc3RTdHJpbmcg
PSAiMTIyNCJfczsKICAgICBFWFBFQ1RfVFJVRSh0ZXN0U3RyaW5nLmlzOEJpdCgpKTsKLSAgICB0
ZXN0U3RyaW5nLnJlcGxhY2VXaXRoTGl0ZXJhbCgnMycsICJOb3RGb3VuZCIpOworICAgIHRlc3RT
dHJpbmcucmVwbGFjZSgnMycsICJOb3RGb3VuZCJfcyk7CiAgICAgRVhQRUNUX1NUUkVRKCIxMjI0
IiwgdGVzdFN0cmluZy51dGY4KCkuZGF0YSgpKTsKIAogICAgIC8vIENhc2VzIGZvciAxNkJpdCBz
b3VyY2UuCiAgICAgdGVzdFN0cmluZyA9IFN0cmluZzo6ZnJvbVVURjgoInLDqXN1bcOpIik7CiAg
ICAgRVhQRUNUX0ZBTFNFKHRlc3RTdHJpbmcuaXM4Qml0KCkpOwotICAgIHRlc3RTdHJpbmcucmVw
bGFjZVdpdGhMaXRlcmFsKFVDaGFyKDB4MDBFOSAvKlUrMDBFOSBpcyAnw6knKi8pLCAiZSIpOwor
ICAgIHRlc3RTdHJpbmcucmVwbGFjZShVQ2hhcigweDAwRTkgLypVKzAwRTkgaXMgJ8OpJyovKSwg
ImUiX3MpOwogICAgIEVYUEVDVF9TVFJFUSgicmVzdW1lIiwgdGVzdFN0cmluZy51dGY4KCkuZGF0
YSgpKTsKIAogICAgIHRlc3RTdHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4KCJyw6lzdW3DqSIpOwog
ICAgIEVYUEVDVF9GQUxTRSh0ZXN0U3RyaW5nLmlzOEJpdCgpKTsKLSAgICB0ZXN0U3RyaW5nLnJl
cGxhY2VXaXRoTGl0ZXJhbChVQ2hhcigweDAwRTkgLypVKzAwRTkgaXMgJ8OpJyovKSwgIiIpOwor
ICAgIHRlc3RTdHJpbmcucmVwbGFjZShVQ2hhcigweDAwRTkgLypVKzAwRTkgaXMgJ8OpJyovKSwg
IiJfcyk7CiAgICAgRVhQRUNUX1NUUkVRKCJyc3VtIiwgdGVzdFN0cmluZy51dGY4KCkuZGF0YSgp
KTsKIAogICAgIHRlc3RTdHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4KCJyw6lzdW3DqSIpOwogICAg
IEVYUEVDVF9GQUxTRSh0ZXN0U3RyaW5nLmlzOEJpdCgpKTsKLSAgICB0ZXN0U3RyaW5nLnJlcGxh
Y2VXaXRoTGl0ZXJhbCgnMycsICJOb3RGb3VuZCIpOworICAgIHRlc3RTdHJpbmcucmVwbGFjZSgn
MycsICJOb3RGb3VuZCJfcyk7CiAgICAgRVhQRUNUX1NUUkVRKCJyw6lzdW3DqSIsIHRlc3RTdHJp
bmcudXRmOCgpLmRhdGEoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvYXRzcGkvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0c3BpLmNwcCBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRzcGkvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudEF0c3BpLmNwcAppbmRleCBjZTFiMjg4NjMzMzg5Y2ZkYjA0ODAwMzZmNjZlZjA5
NzZkNTNlNmRmLi40OGQ2ZjdlYzAxODlkYzQzYmIzNzczNzMzODcxNTdhMmE5NDc0OWViIDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0c3BpL0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnRBdHNwaS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9hdHNwaS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRzcGkuY3BwCkBAIC04
ODksNyArODg5LDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnN0cmluZ1ZhbHVlKCkKICAgICBpZiAoIW1fZWxlbWVudC0+aW50ZXJmYWNlcygpLmNv
bnRhaW5zKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6SW50ZXJmYWNlOjpUZXh0
KSkKICAgICAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMobnVsbHB0ciwg
MCk7CiAKLSAgICBhdXRvIHZhbHVlID0gbWFrZVN0cmluZygiQVhWYWx1ZTogIiwgbV9lbGVtZW50
LT50ZXh0KCkucmVwbGFjZSgiXG4iLCAiPFxcbj4iKS5yZXBsYWNlKG9iamVjdFJlcGxhY2VtZW50
Q2hhcmFjdGVyLCAiPG9iaj4iKSk7CisgICAgYXV0byB2YWx1ZSA9IG1ha2VTdHJpbmcoIkFYVmFs
dWU6ICIsIG1fZWxlbWVudC0+dGV4dCgpLnJlcGxhY2UoJ1xuJywgIjxcXG4+Il9zKS5yZXBsYWNl
KG9iamVjdFJlcGxhY2VtZW50Q2hhcmFjdGVyLCAiPG9iaj4iX3MpKTsKICAgICByZXR1cm4gT3Bh
cXVlSlNTdHJpbmc6OnRyeUNyZWF0ZSh2YWx1ZSkubGVha1JlZigpOwogfQogCkBAIC0xMTk3LDcg
KzExOTcsNyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6YXR0cmlidXRlZFN0cmluZ0ZvclJhbmdlKHVuc2lnbgogICAgICAgICBhdXRvIGF0dHJpYnV0
ZXMgPSBtX2VsZW1lbnQtPnRleHRBdHRyaWJ1dGVzKGkpOwogICAgICAgICBhdXRvIHJhbmdlU3Rh
cnQgPSBzdGQ6Om1heDxpbnQ+KGxvY2F0aW9uLCBhdHRyaWJ1dGVzLnN0YXJ0T2Zmc2V0KTsKICAg
ICAgICAgYXV0byByYW5nZUVuZCA9IHN0ZDo6bWluPGludD4obGltaXQsIGF0dHJpYnV0ZXMuZW5k
T2Zmc2V0KTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoIlxuXHRSYW5nZSBhdHRyaWJ1dGVzIGZv
ciAnIiwgdGV4dC5zdWJzdHJpbmcocmFuZ2VTdGFydCwgcmFuZ2VFbmQgLSByYW5nZVN0YXJ0KS5y
ZXBsYWNlKCJcbiIsICI8XFxuPiIpLnJlcGxhY2Uob2JqZWN0UmVwbGFjZW1lbnRDaGFyYWN0ZXIs
ICI8b2JqPiIpLCAiJzoiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIlxuXHRSYW5nZSBhdHRy
aWJ1dGVzIGZvciAnIiwgdGV4dC5zdWJzdHJpbmcocmFuZ2VTdGFydCwgcmFuZ2VFbmQgLSByYW5n
ZVN0YXJ0KS5yZXBsYWNlKCdcbicsICI8XFxuPiJfcykucmVwbGFjZShvYmplY3RSZXBsYWNlbWVu
dENoYXJhY3RlciwgIjxvYmo+Il9zKSwgIic6Iik7CiAgICAgICAgIGJ1aWxkQXR0cmlidXRlcyhh
dHRyaWJ1dGVzKTsKICAgICAgICAgZW5kT2Zmc2V0ID0gYXR0cmlidXRlcy5lbmRPZmZzZXQ7CiAg
ICAgfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>