<?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>210119</bug_id>
          
          <creation_ts>2020-04-07 09:24:53 -0700</creation_ts>
          <short_desc>querySelector(&quot;#\u0000&quot;) should match an element with ID U+FFFD</short_desc>
          <delta_ts>2020-04-08 17:44:15 -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>CSS</component>
          <version>Safari 13</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>https://drafts.csswg.org/css-syntax/#input-preprocessing</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="Domenic Denicola">d</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>koivisto</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1638577</commentid>
    <comment_count>0</comment_count>
    <who name="Domenic Denicola">d</who>
    <bug_when>2020-04-07 09:24:53 -0700</bug_when>
    <thetext>Tested using the version of Safari deployed on wpt.fyi; I don&apos;t have a Mac available while working from home.

URL: http://wpt.live/dom/nodes/ParentNode-querySelector-escapes.html

Other browsers: Chrome fails, Firefox passes

Per spec, selectors are parsed with a preprocessing step that transforms U+0000 to U+FFFD. This does not seem to be implemented, at least in the case tested here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638714</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-04-07 12:06:35 -0700</bug_when>
    <thetext>Looking at our code it looks like we indeed have no preprocessing stage and our CSSParser implementation tries to deal with this fact as a result. E.g.:


static bool isNewLine(UChar cc)
{
    // We check \r and \f here, since we have no preprocessing stage
    return (cc == &apos;\r&apos; || cc == &apos;\n&apos; || cc == &apos;\f&apos;);
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638768</commentid>
    <comment_count>2</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-04-07 13:29:42 -0700</bug_when>
    <thetext>CSSTokenizer::CSSTokenizer(const String&amp; string)
    : m_input(string)
{
    // According to the spec, we should perform preprocessing here.
    // See: http://dev.w3.org/csswg/css-syntax/#input-preprocessing
    //
    // However, we can skip this step since:
    // * We&apos;re using HTML spaces (which accept \r and \f as a valid white space)
    // * Do not count white spaces
    // * CSSTokenizerInputStream::nextInputChar() replaces NULLs for replacement characters


Clearly it is not 100% working though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639094</commentid>
    <comment_count>3</comment_count>
      <attachid>395820</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-04-08 09:38:14 -0700</bug_when>
    <thetext>Created attachment 395820
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639178</commentid>
    <comment_count>4</comment_count>
      <attachid>395844</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-04-08 11:27:28 -0700</bug_when>
    <thetext>Created attachment 395844
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639214</commentid>
    <comment_count>5</comment_count>
      <attachid>395844</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-08 12:09:44 -0700</bug_when>
    <thetext>Comment on attachment 395844
Patch

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

&gt; Source/WebCore/css/parser/CSSTokenizer.cpp:44
&gt; +static String&amp; preprocessString(String&amp; string)

Doesn’t seem like a great pattern to take a String&amp; and also return it.

I suggest we take either String&amp;&amp; or const String&amp; and return a String.

&gt; Source/WebCore/css/parser/CSSTokenizer.cpp:48
&gt; +    return string.replace(&apos;\0&apos;, 0xFFFD);

We have a named constant for this, replacementCharacter, in &lt;wtf/unicode/CharacterNames.h&gt;. Let&apos;s use that.

&gt; Source/WebCore/css/parser/CSSTokenizer.cpp:208
&gt; +    if (m_input.peek(0) == &apos;!&apos;
&gt; +        &amp;&amp; m_input.peek(1) == &apos;-&apos;
&gt; +        &amp;&amp; m_input.peek(2) == &apos;-&apos;) {

We could make this a one-liner now, easier to read.

&gt; Source/WebCore/css/parser/CSSTokenizer.cpp:227
&gt; +    if (m_input.peek(0) == &apos;-&apos;
&gt; +        &amp;&amp; m_input.peek(1) == &apos;&gt;&apos;) {

We could make this a one-liner now, easier to read.

&gt; Source/WebCore/css/parser/CSSTokenizer.cpp:330
&gt; +    if (m_input.peek(0) == &apos;+&apos;
&gt; +        &amp;&amp; (isASCIIHexDigit(m_input.peek(1)) || m_input.peek(1) == &apos;?&apos;)) {

We could make this a one-liner now, easier to read.

&gt; Source/WebCore/css/parser/CSSTokenizer.h:49
&gt; -    explicit CSSTokenizer(const String&amp;);
&gt; -    CSSTokenizer(const String&amp;, CSSParserObserverWrapper&amp;); // For the inspector
&gt; +    explicit CSSTokenizer(String);
&gt; +    CSSTokenizer(String, CSSParserObserverWrapper&amp;); // For the inspector

We could have made this change without changing the argument type; it would simple cost a little reference count churn.

If we want to change the interface to avoid the churn, then I suggest a String&amp;&amp; argument instead of a String argument.

Or maybe you just like the simplicity of just String?

&gt; Source/WebCore/css/parser/CSSTokenizerInputStream.h:50
&gt;              return &apos;\0&apos;;

Messy that we have kEndOfFileMarker but don’t use it much.

&gt; Source/WebCore/css/parser/CSSTokenizerInputStream.h:56
&gt; +    UChar peek(unsigned lookaheadOffset) const

I almost wish this was just operator[] instead a named function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639223</commentid>
    <comment_count>6</comment_count>
      <attachid>395844</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-04-08 12:25:02 -0700</bug_when>
    <thetext>Comment on attachment 395844
Patch

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

&gt;&gt; Source/WebCore/css/parser/CSSTokenizer.cpp:44
&gt;&gt; +static String&amp; preprocessString(String&amp; string)
&gt; 
&gt; Doesn’t seem like a great pattern to take a String&amp; and also return it.
&gt; 
&gt; I suggest we take either String&amp;&amp; or const String&amp; and return a String.

I was trying to reduce the amount of refactoring because the constructor uses the string both to initialize m_input (which is a CSSTokenizerInputStream) and then later on in its body. Taking a String&amp; made this convenient. However, I agree this is not a great pattern so I will clean this up.

&gt;&gt; Source/WebCore/css/parser/CSSTokenizer.cpp:48
&gt;&gt; +    return string.replace(&apos;\0&apos;, 0xFFFD);
&gt; 
&gt; We have a named constant for this, replacementCharacter, in &lt;wtf/unicode/CharacterNames.h&gt;. Let&apos;s use that.

Ok.

&gt;&gt; Source/WebCore/css/parser/CSSTokenizer.cpp:208
&gt;&gt; +        &amp;&amp; m_input.peek(2) == &apos;-&apos;) {
&gt; 
&gt; We could make this a one-liner now, easier to read.

Will fix those.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639232</commentid>
    <comment_count>7</comment_count>
      <attachid>395844</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-08 12:34:32 -0700</bug_when>
    <thetext>Comment on attachment 395844
Patch

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

&gt;&gt;&gt; Source/WebCore/css/parser/CSSTokenizer.cpp:44
&gt;&gt;&gt; +static String&amp; preprocessString(String&amp; string)
&gt;&gt; 
&gt;&gt; Doesn’t seem like a great pattern to take a String&amp; and also return it.
&gt;&gt; 
&gt;&gt; I suggest we take either String&amp;&amp; or const String&amp; and return a String.
&gt; 
&gt; I was trying to reduce the amount of refactoring because the constructor uses the string both to initialize m_input (which is a CSSTokenizerInputStream) and then later on in its body. Taking a String&amp; made this convenient. However, I agree this is not a great pattern so I will clean this up.

Sure, lets just use m_input instead of string inside the constructors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639233</commentid>
    <comment_count>8</comment_count>
      <attachid>395844</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-04-08 12:44:30 -0700</bug_when>
    <thetext>Comment on attachment 395844
Patch

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

&gt;&gt;&gt;&gt; Source/WebCore/css/parser/CSSTokenizer.cpp:44
&gt;&gt;&gt;&gt; +static String&amp; preprocessString(String&amp; string)
&gt;&gt;&gt; 
&gt;&gt;&gt; Doesn’t seem like a great pattern to take a String&amp; and also return it.
&gt;&gt;&gt; 
&gt;&gt;&gt; I suggest we take either String&amp;&amp; or const String&amp; and return a String.
&gt;&gt; 
&gt;&gt; I was trying to reduce the amount of refactoring because the constructor uses the string both to initialize m_input (which is a CSSTokenizerInputStream) and then later on in its body. Taking a String&amp; made this convenient. However, I agree this is not a great pattern so I will clean this up.
&gt; 
&gt; Sure, lets just use m_input instead of string inside the constructors.

m_input is not a String though and does not really store the String either (just the StringImpl).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639235</commentid>
    <comment_count>9</comment_count>
      <attachid>395844</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-04-08 12:46:44 -0700</bug_when>
    <thetext>Comment on attachment 395844
Patch

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

&gt;&gt;&gt;&gt;&gt; Source/WebCore/css/parser/CSSTokenizer.cpp:44
&gt;&gt;&gt;&gt;&gt; +static String&amp; preprocessString(String&amp; string)
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; Doesn’t seem like a great pattern to take a String&amp; and also return it.
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; I suggest we take either String&amp;&amp; or const String&amp; and return a String.
&gt;&gt;&gt; 
&gt;&gt;&gt; I was trying to reduce the amount of refactoring because the constructor uses the string both to initialize m_input (which is a CSSTokenizerInputStream) and then later on in its body. Taking a String&amp; made this convenient. However, I agree this is not a great pattern so I will clean this up.
&gt;&gt; 
&gt;&gt; Sure, lets just use m_input instead of string inside the constructors.
&gt; 
&gt; m_input is not a String though and does not really store the String either (just the StringImpl).

The proposal I have is to make the constructors private and add a makeCSSTokenizer() free function that would construct one for you, preprocessing the string before passing it to the constructors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639285</commentid>
    <comment_count>10</comment_count>
      <attachid>395867</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-04-08 14:09:51 -0700</bug_when>
    <thetext>Created attachment 395867
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639318</commentid>
    <comment_count>11</comment_count>
      <attachid>395867</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-04-08 15:30:24 -0700</bug_when>
    <thetext>Comment on attachment 395867
Patch

Some inspector tests are crashing. I must have introduced a bug in this latest iteration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639345</commentid>
    <comment_count>12</comment_count>
      <attachid>395881</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-04-08 16:15:16 -0700</bug_when>
    <thetext>Created attachment 395881
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639396</commentid>
    <comment_count>13</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-04-08 17:43:54 -0700</bug_when>
    <thetext>Committed r259773: &lt;https://trac.webkit.org/changeset/259773&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 395881.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639397</commentid>
    <comment_count>14</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-04-08 17:44:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/61488027&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395820</attachid>
            <date>2020-04-08 09:38:14 -0700</date>
            <delta_ts>2020-04-08 10:33:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210119-20200408093814.patch</filename>
            <type>text/plain</type>
            <size>29908</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5Njc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDM4YzkzY2E0YmZmMWM5N2I4MTQ1YzA1
MDcyY2YxNDMxYjcxNWI5MjIuLjA2ZWI1NTc2ZTcyNzU4ZDc0OTVmMmE1NjgwZjEzM2M3ZTQwYWY3
YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAtMDQtMDggIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBxdWVyeVNlbGVjdG9yKCIjXHUwMDAwIikgc2hvdWxkIG1h
dGNoIGFuIGVsZW1lbnQgd2l0aCBJRCBVK0ZGRkQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDExOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5jcHA6CisgICAgICAg
IChXVEY6OlN0cmluZ0ltcGw6OnJlcGxhY2UpOgorICAgICAgICBTbGlnaHRseSBvcHRpbWl6ZSB0
aGUgMTYtYml0IGNvZGUgcGF0aCBvZiBTdHJpbmdJbXBsOjpyZXBsYWNlKCkuIFNpbmNlIHdlIGtu
b3cKKyAgICAgICAgdGhlcmUgaXMgbm8gY2hhcmFjdGVyIG1hdGNoIGZyb20gaW5kZXhlcyAwIHRv
IGksIHdlIGNhbiBzaW1wbHkgdXNlIG1lbWNweSBmb3IKKyAgICAgICAgdGhpcyByYW5nZS4KKwog
MjAyMC0wNC0wNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIE1l
cmdlIERlcGVuZGVuY3lBc3NlcnRpb24gaW50byBQcm9jZXNzQXNzZXJ0aW9uCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggNjgyNTc4MTIxOWY3ZWZkZjliMzE4NzIzNGU1NDdkNGM4MTc1NTY0Yy4uYzJmMzdiMjczOTMy
YjVkMDBkNDk1ZTJiYTE0YzM0ZWU5OWZiOTYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBA
CisyMDIwLTA0LTA4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAg
cXVlcnlTZWxlY3RvcigiI1x1MDAwMCIpIHNob3VsZCBtYXRjaCBhbiBlbGVtZW50IHdpdGggSUQg
VStGRkZECisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTAxMTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
cyBwZXIgdGhlIHNwZWNpZmljYXRpb24gWzFdWzJdLCB3ZSBzaG91bGQgcHJlcHJvY2VzcyB0aGUg
aW5wdXQgc3RyaW5nIGJlZm9yZSBwZXJmb3JtaW5nCisgICAgICAgIENTUyB0b2tlbml6YXRpb24u
IFRoZSBwcmVwcm9jZXNzaW5nIHN0ZXAgcmVwbGFjZXMgY2VydGFpbiBjaGFyYWN0ZXJzIGluIHRo
ZSBpbnB1dCBzdHJpbmcuCisKKyAgICAgICAgSG93ZXZlciwgb3VyIGNvZGUgZGlkIG5vdCBoYXZl
IHRoaXMgcHJlcHJvY2Vzc2luZyBzdGVwIGFuZCBpbnN0ZWFkIHdhcyB0cnlpbmcgdG8gZGVhbAor
ICAgICAgICB3aXRoIHRob3NlIGNoYXJhY3RlcnMgZHVyaW5nIHRva2VuaXphdGlvbi4gVGhpcyBp
cyBob3dldmVyIG5vdCB3b3JraW5nIGFzIGV4cGVjdGVkIGZvcgorICAgICAgICB0aGUgJ1wwJyBj
aGFyYWN0ZXIgKHdoaWNoIGlzIHN1cHBvc2VkIHRvIGJlIHJlcGxhY2VkIHdpdGggVStGRkZEIFJF
UExBQ0VNRU5UIENIQVJBQ1RFUikKKyAgICAgICAgYmVjYXVzZSBvdXIgY29kZSBkZWFscyB3aXRo
IFN0cmluZ1ZpZXdzIG9mIHRoZSBpbnB1dCBTdHJpbmcgYW5kIGp1c3QgY29udmVydHMgcGFydCBv
ZgorICAgICAgICB0aGUgaW5wdXQgc3RyZWFtIHRvIFN0cmluZ3MgLyBBdG9tU3RyaW5ncy4KKwor
ICAgICAgICBUbyBhZGRyZXNzIHRoZSBpc3N1ZSwgdGhpcyBwYXRjaCBhZGRzIGEgcHJlcHJvY2Vz
c2luZyBzdGVwIHRoYXQgcmVwbGFjZXMgdGhlICdcMCcKKyAgICAgICAgY2hhcmFjdGVyIHdpdGgg
dGhlIFUrRkZGRCBSRVBMQUNFTUVOVCBDSEFSQUNURVIpLiBJIG9wdGVkIG5vdCB0byByZXBsYWNl
ICdccicgb3IgJ1xmJworICAgICAgICBjaGFyYWN0ZXJzIHNpbmNlIG91ciB0b2tlbml6ZXIgc2Vl
bXMgdG8gYmUgZGVhbGluZyBmaW5lIHdpdGggdGhvc2UuCisKKyAgICAgICAgWzFdIGh0dHBzOi8v
ZHJhZnRzLmNzc3dnLm9yZy9jc3Mtc3ludGF4LyNpbnB1dC1wcmVwcm9jZXNzaW5nCisgICAgICAg
IFsyXSBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXN5bnRheC8jcGFyc2VyLWVudHJ5LXBv
aW50cworCisgICAgICAgIFRlc3Q6IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9t
L25vZGVzL1BhcmVudE5vZGUtcXVlcnlTZWxlY3Rvci1lc2NhcGVzLmh0bWwKKworICAgICAgICAq
IGNzcy9wYXJzZXIvQ1NTVG9rZW5pemVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnByZXByb2Nl
c3NTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpDU1NUb2tlbml6ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpsZXNzVGhhbik6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NUb2tlbml6ZXI6Omh5cGhlbk1pbnVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1Rva2VuaXplcjo6aGFzaCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6OnJldmVy
c2VTb2xpZHVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6bGV0dGVyVSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6OmNvbnN1bWVOdW1iZXIpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpjb25zdW1lSWRlbnRMaWtlVG9rZW4pOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpjb25zdW1lU3RyaW5nVG9rZW5VbnRpbCk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6OmNvbnN1bWVVbmljb2RlUmFuZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpjb25zdW1lVXJsVG9rZW4pOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTVG9rZW5pemVyOjpjb25zdW1lQmFkVXJsUmVtbmFudHMpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTVG9rZW5pemVyOjpjb25zdW1lU2luZ2xlV2hpdGVzcGFjZUlmTmV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6OmNvbnN1bWVJZk5leHQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTVG9rZW5pemVyOjpjb25zdW1lTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tl
bml6ZXI6OmNvbnN1bWVFc2NhcGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpu
ZXh0VHdvQ2hhcnNBcmVWYWxpZEVzY2FwZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6
ZXI6Om5leHRDaGFyc0FyZU51bWJlcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6
Om5leHRDaGFyc0FyZUlkZW50aWZpZXIpOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTVG9rZW5p
emVyLmg6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NUb2tlbml6ZXJJbnB1dFN0cmVhbS5oOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVySW5wdXRTdHJlYW06Om5leHRJbnB1dENoYXIg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVySW5wdXRTdHJlYW06OnBlZWsg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVySW5wdXRTdHJlYW06OnBlZWtX
aXRob3V0UmVwbGFjZW1lbnQgY29uc3QpOiBEZWxldGVkLgorCiAyMDIwLTA0LTA3ICBTaW1vbiBG
cmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBSZWN0RWRnZXM8
PiBpbiBzb21lIHNjcm9sbGluZyB0cmVlIGNvZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nSW1wbC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3Bw
CmluZGV4IDg4NDU5ODYzNjJiMWNhY2ExNTczMThjYmMxNWFhYzdjOWE3MjA3NDAuLjFkMjM3MjRk
MGUxMTkxNGFlYmY0NmVlZTRlYTkyMTY5ZjA1MTQ1OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJ
bXBsLmNwcApAQCAtMTMwMiwxMSArMTMwMiwxMiBAQCBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1w
bDo6cmVwbGFjZShVQ2hhciB0YXJnZXQsIFVDaGFyIHJlcGxhY2VtZW50KQogICAgIFVDaGFyKiBk
YXRhOwogICAgIGF1dG8gbmV3SW1wbCA9IGNyZWF0ZVVuaW5pdGlhbGl6ZWRJbnRlcm5hbE5vbkVt
cHR5KG1fbGVuZ3RoLCBkYXRhKTsKIAotICAgIGZvciAoaSA9IDA7IGkgIT0gbV9sZW5ndGg7ICsr
aSkgewotICAgICAgICBVQ2hhciBjaGFyYWN0ZXIgPSBtX2RhdGExNltpXTsKKyAgICBtZW1jcHko
ZGF0YSwgbV9kYXRhMTYsIGkpOworICAgIGZvciAodW5zaWduZWQgaiA9IGk7IGogIT0gbV9sZW5n
dGg7ICsraikgeworICAgICAgICBVQ2hhciBjaGFyYWN0ZXIgPSBtX2RhdGExNltqXTsKICAgICAg
ICAgaWYgKGNoYXJhY3RlciA9PSB0YXJnZXQpCiAgICAgICAgICAgICBjaGFyYWN0ZXIgPSByZXBs
YWNlbWVudDsKLSAgICAgICAgZGF0YVtpXSA9IGNoYXJhY3RlcjsKKyAgICAgICAgZGF0YVtqXSA9
IGNoYXJhY3RlcjsKICAgICB9CiAgICAgcmV0dXJuIG5ld0ltcGw7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Rva2VuaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvcGFyc2VyL0NTU1Rva2VuaXplci5jcHAKaW5kZXggY2E2YTE4YzJkZmJmMDQyNjk3ZWNh
Yzg1NTcwY2FlNzRkYmZiMDYzYS4uMTYwZDI4YmJhODk2YjI2YmNjYTM2ZDI1M2RjYmIwOGRhYjZk
OTYwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NUb2tlbml6ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTVG9rZW5pemVyLmNwcApAQCAt
NDAsMTcgKzQwLDE3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ1NTVG9rZW5pemVyOjpD
U1NUb2tlbml6ZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCi0gICAgOiBtX2lucHV0KHN0cmluZykK
Ky8vIFNlZTogaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzLXN5bnRheC8jaW5wdXQtcHJlcHJv
Y2Vzc2luZworc3RhdGljIFN0cmluZyYgcHJlcHJvY2Vzc1N0cmluZyhTdHJpbmcmIHN0cmluZykK
IHsKLSAgICAvLyBBY2NvcmRpbmcgdG8gdGhlIHNwZWMsIHdlIHNob3VsZCBwZXJmb3JtIHByZXBy
b2Nlc3NpbmcgaGVyZS4KLSAgICAvLyBTZWU6IGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nzcy1z
eW50YXgvI2lucHV0LXByZXByb2Nlc3NpbmcKLSAgICAvLwotICAgIC8vIEhvd2V2ZXIsIHdlIGNh
biBza2lwIHRoaXMgc3RlcCBzaW5jZToKLSAgICAvLyAqIFdlJ3JlIHVzaW5nIEhUTUwgc3BhY2Vz
ICh3aGljaCBhY2NlcHQgXHIgYW5kIFxmIGFzIGEgdmFsaWQgd2hpdGUgc3BhY2UpCi0gICAgLy8g
KiBEbyBub3QgY291bnQgd2hpdGUgc3BhY2VzCi0gICAgLy8gKiBDU1NUb2tlbml6ZXJJbnB1dFN0
cmVhbTo6bmV4dElucHV0Q2hhcigpIHJlcGxhY2VzIE5VTExzIGZvciByZXBsYWNlbWVudCBjaGFy
YWN0ZXJzCisgICAgLy8gQWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpY2F0aW9uLCB3ZSBzaG91bGQg
cmVwbGFjZSAnXHInIGFuZCAnXGYnIHdpdGggJ1xuJyBidXQgd2UgZG8gbm90IG5lZWQgdG8KKyAg
ICAvLyBiZWNhdXNlIG91ciBDU1NUb2tlbml6ZXIgdHJlYXRzIGFsbCBvZiB0aGVtIGFzIG5ldyBs
aW5lcy4KKyAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoJ1wwJywgMHhGRkZEKTsKK30KIAorQ1NT
VG9rZW5pemVyOjpDU1NUb2tlbml6ZXIoU3RyaW5nIHN0cmluZykKKyAgICA6IG1faW5wdXQocHJl
cHJvY2Vzc1N0cmluZyhzdHJpbmcpKQorewogICAgIGlmIChzdHJpbmcuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm47CiAKQEAgLTY4LDggKzY4LDggQEAgQ1NTVG9rZW5pemVyOjpDU1NUb2tlbml6
ZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgfQogfQogCi1DU1NUb2tlbml6ZXI6OkNTU1Rv
a2VuaXplcihjb25zdCBTdHJpbmcmIHN0cmluZywgQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyJiB3
cmFwcGVyKQotICAgIDogbV9pbnB1dChzdHJpbmcpCitDU1NUb2tlbml6ZXI6OkNTU1Rva2VuaXpl
cihTdHJpbmcgc3RyaW5nLCBDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXImIHdyYXBwZXIpCisgICAg
OiBtX2lucHV0KHByZXByb2Nlc3NTdHJpbmcoc3RyaW5nKSkKIHsKICAgICBpZiAoc3RyaW5nLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjAzLDkgKzIwMyw5IEBAIENTU1BhcnNlclRv
a2VuIENTU1Rva2VuaXplcjo6YXN0ZXJpc2soVUNoYXIgY2MpCiBDU1NQYXJzZXJUb2tlbiBDU1NU
b2tlbml6ZXI6Omxlc3NUaGFuKFVDaGFyIGNjKQogewogICAgIEFTU0VSVF9VTlVTRUQoY2MsIGNj
ID09ICc8Jyk7Ci0gICAgaWYgKG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudCgwKSA9PSAn
IScKLSAgICAgICAgJiYgbV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDEpID09ICctJwot
ICAgICAgICAmJiBtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQoMikgPT0gJy0nKSB7Cisg
ICAgaWYgKG1faW5wdXQucGVlaygwKSA9PSAnIScKKyAgICAgICAgJiYgbV9pbnB1dC5wZWVrKDEp
ID09ICctJworICAgICAgICAmJiBtX2lucHV0LnBlZWsoMikgPT0gJy0nKSB7CiAgICAgICAgIG1f
aW5wdXQuYWR2YW5jZSgzKTsKICAgICAgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKENET1Rva2Vu
KTsKICAgICB9CkBAIC0yMjMsOCArMjIzLDggQEAgQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVy
OjpoeXBoZW5NaW51cyhVQ2hhciBjYykKICAgICAgICAgcmVjb25zdW1lKGNjKTsKICAgICAgICAg
cmV0dXJuIGNvbnN1bWVOdW1lcmljVG9rZW4oKTsKICAgICB9Ci0gICAgaWYgKG1faW5wdXQucGVl
a1dpdGhvdXRSZXBsYWNlbWVudCgwKSA9PSAnLScKLSAgICAgICAgJiYgbV9pbnB1dC5wZWVrV2l0
aG91dFJlcGxhY2VtZW50KDEpID09ICc+JykgeworICAgIGlmIChtX2lucHV0LnBlZWsoMCkgPT0g
Jy0nCisgICAgICAgICYmIG1faW5wdXQucGVlaygxKSA9PSAnPicpIHsKICAgICAgICAgbV9pbnB1
dC5hZHZhbmNlKDIpOwogICAgICAgICByZXR1cm4gQ1NTUGFyc2VyVG9rZW4oQ0RDVG9rZW4pOwog
ICAgIH0KQEAgLTI1OCw4ICsyNTgsOCBAQCBDU1NQYXJzZXJUb2tlbiBDU1NUb2tlbml6ZXI6OnNl
bWlDb2xvbihVQ2hhciAvKmNjKi8pCiAKIENTU1BhcnNlclRva2VuIENTU1Rva2VuaXplcjo6aGFz
aChVQ2hhciBjYykKIHsKLSAgICBVQ2hhciBuZXh0Q2hhciA9IG1faW5wdXQucGVla1dpdGhvdXRS
ZXBsYWNlbWVudCgwKTsKLSAgICBpZiAoaXNOYW1lQ29kZVBvaW50KG5leHRDaGFyKSB8fCB0d29D
aGFyc0FyZVZhbGlkRXNjYXBlKG5leHRDaGFyLCBtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1l
bnQoMSkpKSB7CisgICAgVUNoYXIgbmV4dENoYXIgPSBtX2lucHV0LnBlZWsoMCk7CisgICAgaWYg
KGlzTmFtZUNvZGVQb2ludChuZXh0Q2hhcikgfHwgdHdvQ2hhcnNBcmVWYWxpZEVzY2FwZShuZXh0
Q2hhciwgbV9pbnB1dC5wZWVrKDEpKSkgewogICAgICAgICBIYXNoVG9rZW5UeXBlIHR5cGUgPSBu
ZXh0Q2hhcnNBcmVJZGVudGlmaWVyKCkgPyBIYXNoVG9rZW5JZCA6IEhhc2hUb2tlblVucmVzdHJp
Y3RlZDsKICAgICAgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKHR5cGUsIGNvbnN1bWVOYW1lKCkp
OwogICAgIH0KQEAgLTMxMSw3ICszMTEsNyBAQCBDU1NQYXJzZXJUb2tlbiBDU1NUb2tlbml6ZXI6
OmNvbW1lcmNpYWxBdChVQ2hhciBjYykKIAogQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpy
ZXZlcnNlU29saWR1cyhVQ2hhciBjYykKIHsKLSAgICBpZiAodHdvQ2hhcnNBcmVWYWxpZEVzY2Fw
ZShjYywgbV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDApKSkgeworICAgIGlmICh0d29D
aGFyc0FyZVZhbGlkRXNjYXBlKGNjLCBtX2lucHV0LnBlZWsoMCkpKSB7CiAgICAgICAgIHJlY29u
c3VtZShjYyk7CiAgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnRMaWtlVG9rZW4oKTsKICAgICB9
CkBAIC0zMjYsOCArMzI2LDggQEAgQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjphc2NpaURp
Z2l0KFVDaGFyIGNjKQogCiBDU1NQYXJzZXJUb2tlbiBDU1NUb2tlbml6ZXI6OmxldHRlclUoVUNo
YXIgY2MpCiB7Ci0gICAgaWYgKG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudCgwKSA9PSAn
KycKLSAgICAgICAgJiYgKGlzQVNDSUlIZXhEaWdpdChtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFj
ZW1lbnQoMSkpIHx8IG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudCgxKSA9PSAnPycpKSB7
CisgICAgaWYgKG1faW5wdXQucGVlaygwKSA9PSAnKycKKyAgICAgICAgJiYgKGlzQVNDSUlIZXhE
aWdpdChtX2lucHV0LnBlZWsoMSkpIHx8IG1faW5wdXQucGVlaygxKSA9PSAnPycpKSB7CiAgICAg
ICAgIG1faW5wdXQuYWR2YW5jZSgpOwogICAgICAgICByZXR1cm4gY29uc3VtZVVuaWNvZGVSYW5n
ZSgpOwogICAgIH0KQEAgLTUxOSw3ICs1MTksNyBAQCBDU1NQYXJzZXJUb2tlbiBDU1NUb2tlbml6
ZXI6OmNvbnN1bWVOdW1iZXIoKQogICAgIE51bWVyaWNTaWduIHNpZ24gPSBOb1NpZ247CiAgICAg
dW5zaWduZWQgbnVtYmVyTGVuZ3RoID0gMDsKIAotICAgIFVDaGFyIG5leHQgPSBtX2lucHV0LnBl
ZWtXaXRob3V0UmVwbGFjZW1lbnQoMCk7CisgICAgVUNoYXIgbmV4dCA9IG1faW5wdXQucGVlaygw
KTsKICAgICBpZiAobmV4dCA9PSAnKycpIHsKICAgICAgICAgKytudW1iZXJMZW5ndGg7CiAgICAg
ICAgIHNpZ24gPSBQbHVzU2lnbjsKQEAgLTUyOSwxOSArNTI5LDE5IEBAIENTU1BhcnNlclRva2Vu
IENTU1Rva2VuaXplcjo6Y29uc3VtZU51bWJlcigpCiAgICAgfQogCiAgICAgbnVtYmVyTGVuZ3Ro
ID0gbV9pbnB1dC5za2lwV2hpbGVQcmVkaWNhdGU8aXNBU0NJSURpZ2l0PihudW1iZXJMZW5ndGgp
OwotICAgIG5leHQgPSBtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQobnVtYmVyTGVuZ3Ro
KTsKLSAgICBpZiAobmV4dCA9PSAnLicgJiYgaXNBU0NJSURpZ2l0KG1faW5wdXQucGVla1dpdGhv
dXRSZXBsYWNlbWVudChudW1iZXJMZW5ndGggKyAxKSkpIHsKKyAgICBuZXh0ID0gbV9pbnB1dC5w
ZWVrKG51bWJlckxlbmd0aCk7CisgICAgaWYgKG5leHQgPT0gJy4nICYmIGlzQVNDSUlEaWdpdCht
X2lucHV0LnBlZWsobnVtYmVyTGVuZ3RoICsgMSkpKSB7CiAgICAgICAgIHR5cGUgPSBOdW1iZXJW
YWx1ZVR5cGU7CiAgICAgICAgIG51bWJlckxlbmd0aCA9IG1faW5wdXQuc2tpcFdoaWxlUHJlZGlj
YXRlPGlzQVNDSUlEaWdpdD4obnVtYmVyTGVuZ3RoICsgMik7Ci0gICAgICAgIG5leHQgPSBtX2lu
cHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQobnVtYmVyTGVuZ3RoKTsKKyAgICAgICAgbmV4dCA9
IG1faW5wdXQucGVlayhudW1iZXJMZW5ndGgpOwogICAgIH0KIAogICAgIGlmIChuZXh0ID09ICdF
JyB8fCBuZXh0ID09ICdlJykgewotICAgICAgICBuZXh0ID0gbV9pbnB1dC5wZWVrV2l0aG91dFJl
cGxhY2VtZW50KG51bWJlckxlbmd0aCArIDEpOworICAgICAgICBuZXh0ID0gbV9pbnB1dC5wZWVr
KG51bWJlckxlbmd0aCArIDEpOwogICAgICAgICBpZiAoaXNBU0NJSURpZ2l0KG5leHQpKSB7CiAg
ICAgICAgICAgICB0eXBlID0gTnVtYmVyVmFsdWVUeXBlOwogICAgICAgICAgICAgbnVtYmVyTGVu
Z3RoID0gbV9pbnB1dC5za2lwV2hpbGVQcmVkaWNhdGU8aXNBU0NJSURpZ2l0PihudW1iZXJMZW5n
dGggKyAxKTsKLSAgICAgICAgfSBlbHNlIGlmICgobmV4dCA9PSAnKycgfHwgbmV4dCA9PSAnLScp
ICYmIGlzQVNDSUlEaWdpdChtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQobnVtYmVyTGVu
Z3RoICsgMikpKSB7CisgICAgICAgIH0gZWxzZSBpZiAoKG5leHQgPT0gJysnIHx8IG5leHQgPT0g
Jy0nKSAmJiBpc0FTQ0lJRGlnaXQobV9pbnB1dC5wZWVrKG51bWJlckxlbmd0aCArIDIpKSkgewog
ICAgICAgICAgICAgdHlwZSA9IE51bWJlclZhbHVlVHlwZTsKICAgICAgICAgICAgIG51bWJlckxl
bmd0aCA9IG1faW5wdXQuc2tpcFdoaWxlUHJlZGljYXRlPGlzQVNDSUlEaWdpdD4obnVtYmVyTGVu
Z3RoICsgMyk7CiAgICAgICAgIH0KQEAgLTU3Myw3ICs1NzMsNyBAQCBDU1NQYXJzZXJUb2tlbiBD
U1NUb2tlbml6ZXI6OmNvbnN1bWVJZGVudExpa2VUb2tlbigpCiAgICAgICAgICAgICAvLyBUaGUg
c3BlYyBpcyBzbGlnaHRseSBkaWZmZXJlbnQgc28gYXMgdG8gYXZvaWQgZHJvcHBpbmcgd2hpdGVz
cGFjZQogICAgICAgICAgICAgLy8gdG9rZW5zLCBidXQgdGhleSB3b3VsZG4ndCBiZSB1c2VkIGFu
ZCB0aGlzIGlzIGVhc2llci4KICAgICAgICAgICAgIG1faW5wdXQuYWR2YW5jZVVudGlsTm9uV2hp
dGVzcGFjZSgpOwotICAgICAgICAgICAgVUNoYXIgbmV4dCA9IG1faW5wdXQucGVla1dpdGhvdXRS
ZXBsYWNlbWVudCgwKTsKKyAgICAgICAgICAgIFVDaGFyIG5leHQgPSBtX2lucHV0LnBlZWsoMCk7
CiAgICAgICAgICAgICBpZiAobmV4dCAhPSAnIicgJiYgbmV4dCAhPSAnXCcnKQogICAgICAgICAg
ICAgICAgIHJldHVybiBjb25zdW1lVXJsVG9rZW4oKTsKICAgICAgICAgfQpAQCAtNTg3LDcgKzU4
Nyw3IEBAIENTU1BhcnNlclRva2VuIENTU1Rva2VuaXplcjo6Y29uc3VtZVN0cmluZ1Rva2VuVW50
aWwoVUNoYXIgZW5kaW5nQ29kZVBvaW50KQogewogICAgIC8vIFN0cmluZ3Mgd2l0aG91dCBlc2Nh
cGVzIGdldCBoYW5kbGVkIHdpdGhvdXQgYWxsb2NhdGlvbnMKICAgICBmb3IgKHVuc2lnbmVkIHNp
emUgPSAwOyA7IHNpemUrKykgewotICAgICAgICBVQ2hhciBjYyA9IG1faW5wdXQucGVla1dpdGhv
dXRSZXBsYWNlbWVudChzaXplKTsKKyAgICAgICAgVUNoYXIgY2MgPSBtX2lucHV0LnBlZWsoc2l6
ZSk7CiAgICAgICAgIGlmIChjYyA9PSBlbmRpbmdDb2RlUG9pbnQpIHsKICAgICAgICAgICAgIHVu
c2lnbmVkIHN0YXJ0T2Zmc2V0ID0gbV9pbnB1dC5vZmZzZXQoKTsKICAgICAgICAgICAgIG1faW5w
dXQuYWR2YW5jZShzaXplICsgMSk7CkBAIC02MTMsNyArNjEzLDcgQEAgQ1NTUGFyc2VyVG9rZW4g
Q1NTVG9rZW5pemVyOjpjb25zdW1lU3RyaW5nVG9rZW5VbnRpbChVQ2hhciBlbmRpbmdDb2RlUG9p
bnQpCiAgICAgICAgIGlmIChjYyA9PSAnXFwnKSB7CiAgICAgICAgICAgICBpZiAobV9pbnB1dC5u
ZXh0SW5wdXRDaGFyKCkgPT0ga0VuZE9mRmlsZU1hcmtlcikKICAgICAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgICAgIGlmIChpc05ld0xpbmUobV9pbnB1dC5wZWVrV2l0aG91dFJlcGxh
Y2VtZW50KDApKSkKKyAgICAgICAgICAgIGlmIChpc05ld0xpbmUobV9pbnB1dC5wZWVrKDApKSkK
ICAgICAgICAgICAgICAgICBjb25zdW1lU2luZ2xlV2hpdGVzcGFjZUlmTmV4dCgpOyAvLyBUaGlz
IGhhbmRsZXMgXHJcbiBmb3IgdXMKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBv
dXRwdXQuYXBwZW5kQ2hhcmFjdGVyKGNvbnN1bWVFc2NhcGUoKSk7CkBAIC02MjQsMTEgKzYyNCwx
MSBAQCBDU1NQYXJzZXJUb2tlbiBDU1NUb2tlbml6ZXI6OmNvbnN1bWVTdHJpbmdUb2tlblVudGls
KFVDaGFyIGVuZGluZ0NvZGVQb2ludCkKIAogQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpj
b25zdW1lVW5pY29kZVJhbmdlKCkKIHsKLSAgICBBU1NFUlQoaXNBU0NJSUhleERpZ2l0KG1faW5w
dXQucGVla1dpdGhvdXRSZXBsYWNlbWVudCgwKSkgfHwgbV9pbnB1dC5wZWVrV2l0aG91dFJlcGxh
Y2VtZW50KDApID09ICc/Jyk7CisgICAgQVNTRVJUKGlzQVNDSUlIZXhEaWdpdChtX2lucHV0LnBl
ZWsoMCkpIHx8IG1faW5wdXQucGVlaygwKSA9PSAnPycpOwogICAgIGludCBsZW5ndGhSZW1haW5p
bmcgPSA2OwogICAgIFVDaGFyMzIgc3RhcnQgPSAwOwogCi0gICAgd2hpbGUgKGxlbmd0aFJlbWFp
bmluZyAmJiBpc0FTQ0lJSGV4RGlnaXQobV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDAp
KSkgeworICAgIHdoaWxlIChsZW5ndGhSZW1haW5pbmcgJiYgaXNBU0NJSUhleERpZ2l0KG1faW5w
dXQucGVlaygwKSkpIHsKICAgICAgICAgc3RhcnQgPSBzdGFydCAqIDE2ICsgdG9BU0NJSUhleFZh
bHVlKGNvbnN1bWUoKSk7CiAgICAgICAgIC0tbGVuZ3RoUmVtYWluaW5nOwogICAgIH0KQEAgLTY0
MCwxNCArNjQwLDE0IEBAIENTU1BhcnNlclRva2VuIENTU1Rva2VuaXplcjo6Y29uc3VtZVVuaWNv
ZGVSYW5nZSgpCiAgICAgICAgICAgICBlbmQgPSBlbmQgKiAxNiArIDB4RjsKICAgICAgICAgICAg
IC0tbGVuZ3RoUmVtYWluaW5nOwogICAgICAgICB9IHdoaWxlIChsZW5ndGhSZW1haW5pbmcgJiYg
Y29uc3VtZUlmTmV4dCgnPycpKTsKLSAgICB9IGVsc2UgaWYgKG1faW5wdXQucGVla1dpdGhvdXRS
ZXBsYWNlbWVudCgwKSA9PSAnLScgJiYgaXNBU0NJSUhleERpZ2l0KG1faW5wdXQucGVla1dpdGhv
dXRSZXBsYWNlbWVudCgxKSkpIHsKKyAgICB9IGVsc2UgaWYgKG1faW5wdXQucGVlaygwKSA9PSAn
LScgJiYgaXNBU0NJSUhleERpZ2l0KG1faW5wdXQucGVlaygxKSkpIHsKICAgICAgICAgbV9pbnB1
dC5hZHZhbmNlKCk7CiAgICAgICAgIGxlbmd0aFJlbWFpbmluZyA9IDY7CiAgICAgICAgIGVuZCA9
IDA7CiAgICAgICAgIGRvIHsKICAgICAgICAgICAgIGVuZCA9IGVuZCAqIDE2ICsgdG9BU0NJSUhl
eFZhbHVlKGNvbnN1bWUoKSk7CiAgICAgICAgICAgICAtLWxlbmd0aFJlbWFpbmluZzsKLSAgICAg
ICAgfSB3aGlsZSAobGVuZ3RoUmVtYWluaW5nICYmIGlzQVNDSUlIZXhEaWdpdChtX2lucHV0LnBl
ZWtXaXRob3V0UmVwbGFjZW1lbnQoMCkpKTsKKyAgICAgICAgfSB3aGlsZSAobGVuZ3RoUmVtYWlu
aW5nICYmIGlzQVNDSUlIZXhEaWdpdChtX2lucHV0LnBlZWsoMCkpKTsKICAgICB9CiAKICAgICBy
ZXR1cm4gQ1NTUGFyc2VyVG9rZW4oVW5pY29kZVJhbmdlVG9rZW4sIHN0YXJ0LCBlbmQpOwpAQCAt
NjY2LDcgKzY2Niw3IEBAIENTU1BhcnNlclRva2VuIENTU1Rva2VuaXplcjo6Y29uc3VtZVVybFRv
a2VuKCkKIAogICAgIC8vIFVSTCB0b2tlbnMgd2l0aG91dCBlc2NhcGVzIGdldCBoYW5kbGVkIHdp
dGhvdXQgYWxsb2NhdGlvbnMKICAgICBmb3IgKHVuc2lnbmVkIHNpemUgPSAwOyA7IHNpemUrKykg
ewotICAgICAgICBVQ2hhciBjYyA9IG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudChzaXpl
KTsKKyAgICAgICAgVUNoYXIgY2MgPSBtX2lucHV0LnBlZWsoc2l6ZSk7CiAgICAgICAgIGlmIChj
YyA9PSAnKScpIHsKICAgICAgICAgICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0ID0gbV9pbnB1dC5v
ZmZzZXQoKTsKICAgICAgICAgICAgIG1faW5wdXQuYWR2YW5jZShzaXplICsgMSk7CkBAIC02OTMs
NyArNjkzLDcgQEAgQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpjb25zdW1lVXJsVG9rZW4o
KQogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgaWYgKGNjID09ICdcXCcpIHsKLSAgICAg
ICAgICAgIGlmICh0d29DaGFyc0FyZVZhbGlkRXNjYXBlKGNjLCBtX2lucHV0LnBlZWtXaXRob3V0
UmVwbGFjZW1lbnQoMCkpKSB7CisgICAgICAgICAgICBpZiAodHdvQ2hhcnNBcmVWYWxpZEVzY2Fw
ZShjYywgbV9pbnB1dC5wZWVrKDApKSkgewogICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRD
aGFyYWN0ZXIoY29uc3VtZUVzY2FwZSgpKTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgICAgIH0KQEAgLTcxNCw3ICs3MTQsNyBAQCB2b2lkIENTU1Rva2VuaXplcjo6Y29uc3Vt
ZUJhZFVybFJlbW5hbnRzKCkKICAgICAgICAgVUNoYXIgY2MgPSBjb25zdW1lKCk7CiAgICAgICAg
IGlmIChjYyA9PSAnKScgfHwgY2MgPT0ga0VuZE9mRmlsZU1hcmtlcikKICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgaWYgKHR3b0NoYXJzQXJlVmFsaWRFc2NhcGUoY2MsIG1faW5wdXQucGVl
a1dpdGhvdXRSZXBsYWNlbWVudCgwKSkpCisgICAgICAgIGlmICh0d29DaGFyc0FyZVZhbGlkRXNj
YXBlKGNjLCBtX2lucHV0LnBlZWsoMCkpKQogICAgICAgICAgICAgY29uc3VtZUVzY2FwZSgpOwog
ICAgIH0KIH0KQEAgLTcyMiw4ICs3MjIsOCBAQCB2b2lkIENTU1Rva2VuaXplcjo6Y29uc3VtZUJh
ZFVybFJlbW5hbnRzKCkKIHZvaWQgQ1NTVG9rZW5pemVyOjpjb25zdW1lU2luZ2xlV2hpdGVzcGFj
ZUlmTmV4dCgpCiB7CiAgICAgLy8gV2UgY2hlY2sgZm9yIFxyXG4gYW5kIEhUTUwgc3BhY2VzIHNp
bmNlIHdlIGRvbid0IGRvIHByZXByb2Nlc3NpbmcKLSAgICBVQ2hhciBuZXh0ID0gbV9pbnB1dC5w
ZWVrV2l0aG91dFJlcGxhY2VtZW50KDApOwotICAgIGlmIChuZXh0ID09ICdccicgJiYgbV9pbnB1
dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDEpID09ICdcbicpCisgICAgVUNoYXIgbmV4dCA9IG1f
aW5wdXQucGVlaygwKTsKKyAgICBpZiAobmV4dCA9PSAnXHInICYmIG1faW5wdXQucGVlaygxKSA9
PSAnXG4nKQogICAgICAgICBtX2lucHV0LmFkdmFuY2UoMik7CiAgICAgZWxzZSBpZiAoaXNIVE1M
U3BhY2UobmV4dCkpCiAgICAgICAgIG1faW5wdXQuYWR2YW5jZSgpOwpAQCAtNzUxLDcgKzc1MSw3
IEBAIGJvb2wgQ1NTVG9rZW5pemVyOjpjb25zdW1lSWZOZXh0KFVDaGFyIGNoYXJhY3RlcikKICAg
ICAvLyBhIE5VTCBpbiB0aGUgbWlkZGxlIGFuZCB0aGUga0VuZE9mRmlsZU1hcmtlciwgc28gY2hh
cmFjdGVyIG11c3Qgbm90IGJlCiAgICAgLy8gTlVMLgogICAgIEFTU0VSVChjaGFyYWN0ZXIpOwot
ICAgIGlmIChtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQoMCkgPT0gY2hhcmFjdGVyKSB7
CisgICAgaWYgKG1faW5wdXQucGVlaygwKSA9PSBjaGFyYWN0ZXIpIHsKICAgICAgICAgbV9pbnB1
dC5hZHZhbmNlKCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTc2MywxMCArNzYz
LDEwIEBAIFN0cmluZ1ZpZXcgQ1NTVG9rZW5pemVyOjpjb25zdW1lTmFtZSgpCiB7CiAgICAgLy8g
TmFtZXMgd2l0aG91dCBlc2NhcGVzIGdldCBoYW5kbGVkIHdpdGhvdXQgYWxsb2NhdGlvbnMKICAg
ICBmb3IgKHVuc2lnbmVkIHNpemUgPSAwOyA7ICsrc2l6ZSkgewotICAgICAgICBVQ2hhciBjYyA9
IG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudChzaXplKTsKKyAgICAgICAgVUNoYXIgY2Mg
PSBtX2lucHV0LnBlZWsoc2l6ZSk7CiAgICAgICAgIGlmIChpc05hbWVDb2RlUG9pbnQoY2MpKQog
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIC8vIHBlZWtXaXRob3V0UmVwbGFjZW1lbnQg
d2lsbCByZXR1cm4gTlVMIHdoZW4gd2UgaGl0IHRoZSBlbmQgb2YgdGhlCisgICAgICAgIC8vIHBl
ZWsgd2lsbCByZXR1cm4gTlVMIHdoZW4gd2UgaGl0IHRoZSBlbmQgb2YgdGhlCiAgICAgICAgIC8v
IGlucHV0LiBJbiB0aGF0IGNhc2Ugd2Ugd2FudCB0byBzdGlsbCB1c2UgdGhlIHJhbmdlQXQoKSBm
YXN0IHBhdGgKICAgICAgICAgLy8gYmVsb3cuCiAgICAgICAgIGlmIChjYyA9PSAnXDAnICYmIG1f
aW5wdXQub2Zmc2V0KCkgKyBzaXplIDwgbV9pbnB1dC5sZW5ndGgoKSkKQEAgLTc4NSw3ICs3ODUs
NyBAQCBTdHJpbmdWaWV3IENTU1Rva2VuaXplcjo6Y29uc3VtZU5hbWUoKQogICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZChjYyk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAg
ICAgICBpZiAodHdvQ2hhcnNBcmVWYWxpZEVzY2FwZShjYywgbV9pbnB1dC5wZWVrV2l0aG91dFJl
cGxhY2VtZW50KDApKSkgeworICAgICAgICBpZiAodHdvQ2hhcnNBcmVWYWxpZEVzY2FwZShjYywg
bV9pbnB1dC5wZWVrKDApKSkgewogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZENoYXJhY3Rlcihj
b25zdW1lRXNjYXBlKCkpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KQEAgLTgw
Myw3ICs4MDMsNyBAQCBVQ2hhcjMyIENTU1Rva2VuaXplcjo6Y29uc3VtZUVzY2FwZSgpCiAgICAg
ICAgIHVuc2lnbmVkIGNvbnN1bWVkSGV4RGlnaXRzID0gMTsKICAgICAgICAgU3RyaW5nQnVpbGRl
ciBoZXhDaGFyczsKICAgICAgICAgaGV4Q2hhcnMuYXBwZW5kKGNjKTsKLSAgICAgICAgd2hpbGUg
KGNvbnN1bWVkSGV4RGlnaXRzIDwgNiAmJiBpc0FTQ0lJSGV4RGlnaXQobV9pbnB1dC5wZWVrV2l0
aG91dFJlcGxhY2VtZW50KDApKSkgeworICAgICAgICB3aGlsZSAoY29uc3VtZWRIZXhEaWdpdHMg
PCA2ICYmIGlzQVNDSUlIZXhEaWdpdChtX2lucHV0LnBlZWsoMCkpKSB7CiAgICAgICAgICAgICBj
YyA9IGNvbnN1bWUoKTsKICAgICAgICAgICAgIGhleENoYXJzLmFwcGVuZChjYyk7CiAgICAgICAg
ICAgICBjb25zdW1lZEhleERpZ2l0cysrOwpAQCAtODI0LDE3ICs4MjQsMTcgQEAgVUNoYXIzMiBD
U1NUb2tlbml6ZXI6OmNvbnN1bWVFc2NhcGUoKQogCiBib29sIENTU1Rva2VuaXplcjo6bmV4dFR3
b0NoYXJzQXJlVmFsaWRFc2NhcGUoKQogewotICAgIHJldHVybiB0d29DaGFyc0FyZVZhbGlkRXNj
YXBlKG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudCgwKSwgbV9pbnB1dC5wZWVrV2l0aG91
dFJlcGxhY2VtZW50KDEpKTsKKyAgICByZXR1cm4gdHdvQ2hhcnNBcmVWYWxpZEVzY2FwZShtX2lu
cHV0LnBlZWsoMCksIG1faW5wdXQucGVlaygxKSk7CiB9CiAKIC8vIGh0dHA6Ly93d3cudzMub3Jn
L1RSL2NzczMtc3ludGF4LyNzdGFydHMtd2l0aC1hLW51bWJlcgogYm9vbCBDU1NUb2tlbml6ZXI6
Om5leHRDaGFyc0FyZU51bWJlcihVQ2hhciBmaXJzdCkKIHsKLSAgICBVQ2hhciBzZWNvbmQgPSBt
X2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQoMCk7CisgICAgVUNoYXIgc2Vjb25kID0gbV9p
bnB1dC5wZWVrKDApOwogICAgIGlmIChpc0FTQ0lJRGlnaXQoZmlyc3QpKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICBpZiAoZmlyc3QgPT0gJysnIHx8IGZpcnN0ID09ICctJykKLSAgICAgICAg
cmV0dXJuICgoaXNBU0NJSURpZ2l0KHNlY29uZCkpIHx8IChzZWNvbmQgPT0gJy4nICYmIGlzQVND
SUlEaWdpdChtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQoMSkpKSk7CisgICAgICAgIHJl
dHVybiAoKGlzQVNDSUlEaWdpdChzZWNvbmQpKSB8fCAoc2Vjb25kID09ICcuJyAmJiBpc0FTQ0lJ
RGlnaXQobV9pbnB1dC5wZWVrKDEpKSkpOwogICAgIGlmIChmaXJzdCA9PScuJykKICAgICAgICAg
cmV0dXJuIChpc0FTQ0lJRGlnaXQoc2Vjb25kKSk7CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtODUx
LDcgKzg1MSw3IEBAIGJvb2wgQ1NTVG9rZW5pemVyOjpuZXh0Q2hhcnNBcmVOdW1iZXIoKQogLy8g
aHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzLXN5bnRheC8jd291bGQtc3RhcnQtYW4taWRlbnRp
ZmllcgogYm9vbCBDU1NUb2tlbml6ZXI6Om5leHRDaGFyc0FyZUlkZW50aWZpZXIoVUNoYXIgZmly
c3QpCiB7Ci0gICAgVUNoYXIgc2Vjb25kID0gbV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50
KDApOworICAgIFVDaGFyIHNlY29uZCA9IG1faW5wdXQucGVlaygwKTsKICAgICBpZiAoaXNOYW1l
U3RhcnRDb2RlUG9pbnQoZmlyc3QpIHx8IHR3b0NoYXJzQXJlVmFsaWRFc2NhcGUoZmlyc3QsIHNl
Y29uZCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvcGFyc2VyL0NTU1Rva2VuaXplci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NUb2tlbml6ZXIuaAppbmRleCAyNWIwMzE1YzVkMmYyZTdjZmEwZjQwZDBlYTA0M2JjYzMyYWI3
YjYwLi45OGY5ZDQ4ZGRjOWZjMTAzOWM2MTE4NjBhYWJjMDIxZDJiY2UwNGMxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Rva2VuaXplci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTVG9rZW5pemVyLmgKQEAgLTQ1LDggKzQ1LDggQEAgY2xhc3Mg
Q1NTVG9rZW5pemVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDU1NUb2tlbml6ZXIpOwog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIGV4cGxpY2l0IENTU1Rv
a2VuaXplcihjb25zdCBTdHJpbmcmKTsKLSAgICBDU1NUb2tlbml6ZXIoY29uc3QgU3RyaW5nJiwg
Q1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyJik7IC8vIEZvciB0aGUgaW5zcGVjdG9yCisgICAgZXhw
bGljaXQgQ1NTVG9rZW5pemVyKFN0cmluZyk7CisgICAgQ1NTVG9rZW5pemVyKFN0cmluZywgQ1NT
UGFyc2VyT2JzZXJ2ZXJXcmFwcGVyJik7IC8vIEZvciB0aGUgaW5zcGVjdG9yCiAKICAgICBDU1NQ
YXJzZXJUb2tlblJhbmdlIHRva2VuUmFuZ2UoKSBjb25zdDsKICAgICB1bnNpZ25lZCB0b2tlbkNv
dW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Rva2VuaXpl
cklucHV0U3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Rva2VuaXplcklu
cHV0U3RyZWFtLmgKaW5kZXggOTZlNmU2OWQwMGEzNTQ1Njc2NjA3MGQ2MmM3OGFlYWNjMDFiOTcw
YS4uOWI4NGFlOWE4NjMxNGEwZGQwOGYxY2RjMDU3YjRkYWQxN2FjMTczZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NUb2tlbml6ZXJJbnB1dFN0cmVhbS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0uaApAQCAt
NDgsMTUgKzQ4LDEyIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGlmIChtX29mZnNldCA+PSBt
X3N0cmluZ0xlbmd0aCkKICAgICAgICAgICAgIHJldHVybiAnXDAnOwotICAgICAgICBVQ2hhciBy
ZXN1bHQgPSAoKm1fc3RyaW5nKVttX29mZnNldF07Ci0gICAgICAgIHJldHVybiByZXN1bHQgPyBy
ZXN1bHQgOiAweEZGRkQ7CisgICAgICAgIHJldHVybiAoKm1fc3RyaW5nKVttX29mZnNldF07CiAg
ICAgfQogCiAgICAgLy8gR2V0cyB0aGUgY2hhciBhdCBsb29rYWhlYWRPZmZzZXQgZnJvbSB0aGUg
Y3VycmVudCBzdHJlYW0gcG9zaXRpb24uIFdpbGwKICAgICAvLyByZXR1cm4gTlVMIChrRW5kT2ZG
aWxlTWFya2VyKSBpZiB0aGUgc3RyZWFtIHBvc2l0aW9uIGlzIGF0IHRoZSBlbmQuCi0gICAgLy8g
Tk9URTogVGhpcyBtYXkgKmFsc28qIHJldHVybiBOVUwgaWYgdGhlcmUncyBvbmUgaW4gdGhlIGlu
cHV0ISBOZXZlcgotICAgIC8vIGNvbXBhcmUgdGhlIHJldHVybiB2YWx1ZSB0byAnXDAnLgotICAg
IFVDaGFyIHBlZWtXaXRob3V0UmVwbGFjZW1lbnQodW5zaWduZWQgbG9va2FoZWFkT2Zmc2V0KSBj
b25zdAorICAgIFVDaGFyIHBlZWsodW5zaWduZWQgbG9va2FoZWFkT2Zmc2V0KSBjb25zdAogICAg
IHsKICAgICAgICAgaWYgKChtX29mZnNldCArIGxvb2thaGVhZE9mZnNldCkgPj0gbV9zdHJpbmdM
ZW5ndGgpCiAgICAgICAgICAgICByZXR1cm4gJ1wwJzsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdl
TG9nCmluZGV4IDIyNTg5MWRhZDI2MjFlYzEwZGViYjc0MTU0MTQ2N2E2OGZlMWZjNjMuLjk1MTMz
MjU0M2FjY2I3MWY0M2E4YzBkNDVhZTJjMWQxZmFkOWJiZjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIwLTA0LTA4ICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgcXVlcnlTZWxlY3RvcigiI1x1MDAwMCIpIHNob3Vs
ZCBtYXRjaCBhbiBlbGVtZW50IHdpdGggSUQgVStGRkZECisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTAxMTkKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBvcnQgdGVzdCBjb3ZlcmFnZSBmcm9tIHVwc3Ry
ZWFtIFdQVC4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9kb20vbm9kZXMvUGFyZW50
Tm9kZS1xdWVyeVNlbGVjdG9yLWVzY2FwZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiB3ZWItcGxhdGZvcm0tdGVzdHMvZG9tL25vZGVzL1BhcmVudE5vZGUtcXVlcnlTZWxlY3Rvci1l
c2NhcGVzLmh0bWw6IEFkZGVkLgorCiAyMDIwLTA0LTA3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CiAKICAgICAgICAgZG9jdW1lbnRGcmFnbWVudC5nZXRFbGVtZW50QnlJZCgpIHNo
b3VsZCBub3Qgd29yayBmb3IgZW1wdHktc3RyaW5nIElEcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20vbm9kZXMvUGFyZW50Tm9kZS1x
dWVyeVNlbGVjdG9yLWVzY2FwZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20vbm9kZXMvUGFyZW50Tm9kZS1xdWVyeVNlbGVjdG9y
LWVzY2FwZXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyMjNmOWQyOTk0ZjU2NDJiYzJlMzJk
ZjQ5YzI1MGU5ZWNiNTQzYTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS9ub2Rlcy9QYXJlbnROb2RlLXF1ZXJ5U2VsZWN0
b3ItZXNjYXBlcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3MCBAQAorCitQQVNTICJub25lc2Nh
cGVkIiBzaG91bGQgbWF0Y2ggd2l0aCAiI25vbmVzY2FwZWQiIAorUEFTUyAiMG5leHRJc1doaXRl
U3BhY2UiIHNob3VsZCBtYXRjaCB3aXRoICIjXFwzMCBuZXh0SXNXaGl0ZVNwYWNlIiAKK1BBU1Mg
IjBuZXh0SXNOb3RIZXhMZXR0ZXJzIiBzaG91bGQgbWF0Y2ggd2l0aCAiI1xcMzBuZXh0SXNOb3RI
ZXhMZXR0ZXJzIiAKK1BBU1MgIjBjb25uZWN0SGV4TW9yZVRoYW42SGV4IiBzaG91bGQgbWF0Y2gg
d2l0aCAiI1xcMDAwMDMwY29ubmVjdEhleE1vcmVUaGFuNkhleCIgCitQQVNTICIwc3BhY2VNb3Jl
VGhhbjZIZXgiIHNob3VsZCBtYXRjaCB3aXRoICIjXFwwMDAwMzAgc3BhY2VNb3JlVGhhbjZIZXgi
IAorUEFTUyAiemVyb++/vSIgc2hvdWxkIG1hdGNoIHdpdGggIiN6ZXJvXFwwIiAKK1BBU1MgInpl
cm9cdTAwMDAiIHNob3VsZCBuZXZlciBtYXRjaCB3aXRoICIjemVyb1xcMCIgCitQQVNTICJ6ZXJv
77+9IiBzaG91bGQgbWF0Y2ggd2l0aCAiI3plcm9cXDAwMDAwMCIgCitQQVNTICJ6ZXJvXHUwMDAw
IiBzaG91bGQgbmV2ZXIgbWF0Y2ggd2l0aCAiI3plcm9cXDAwMDAwMCIgCitQQVNTICLvv71zdXJy
b2dhdGVGaXJzdCIgc2hvdWxkIG1hdGNoIHdpdGggIiNcXGQ4M2Qgc3Vycm9nYXRlRmlyc3QiIAor
UEFTUyAiXHVkODNkc3Vycm9nYXRlRmlyc3QiIHNob3VsZCBuZXZlciBtYXRjaCB3aXRoICIjXFxk
ODNkIHN1cnJvZ2F0ZUZpcnN0IiAKK1BBU1MgInN1cnJvZ2F0ZVNlY29uZO+/vSIgc2hvdWxkIG1h
dGNoIHdpdGggIiNzdXJyb2dhdGVTZWNvbmRcXGRkMTEiIAorUEFTUyAic3Vycm9nYXRlU2Vjb25k
XHVkZDExIiBzaG91bGQgbmV2ZXIgbWF0Y2ggd2l0aCAiI3N1cnJvZ2F0ZVNlY29uZFxcZGQxMSIg
CitQQVNTICJzdXJyb2dhdGVQYWly77+977+9IiBzaG91bGQgbWF0Y2ggd2l0aCAiI3N1cnJvZ2F0
ZVBhaXJcXGQ4M2RcXGRkMTEiIAorUEFTUyAic3Vycm9nYXRlUGFpcvCflJEiIHNob3VsZCBuZXZl
ciBtYXRjaCB3aXRoICIjc3Vycm9nYXRlUGFpclxcZDgzZFxcZGQxMSIgCitQQVNTICJvdXRPZlJh
bmdl77+9IiBzaG91bGQgbWF0Y2ggd2l0aCAiI291dE9mUmFuZ2VcXDExMDAwMCIgCitQQVNTICJv
dXRPZlJhbmdl77+9IiBzaG91bGQgbWF0Y2ggd2l0aCAiI291dE9mUmFuZ2VcXDExMDAzMCIgCitQ
QVNTICJvdXRPZlJhbmdlMCIgc2hvdWxkIG5ldmVyIG1hdGNoIHdpdGggIiNvdXRPZlJhbmdlXFwx
MTAwMzAiIAorUEFTUyAib3V0T2ZSYW5nZe+/vSIgc2hvdWxkIG1hdGNoIHdpdGggIiNvdXRPZlJh
bmdlXFw1NTU1NTUiIAorUEFTUyAib3V0T2ZSYW5nZe+/vSIgc2hvdWxkIG1hdGNoIHdpdGggIiNv
dXRPZlJhbmdlXFxmZmZmZmYiIAorUEFTUyAiZW9mXFwiIHNob3VsZCBuZXZlciBtYXRjaCB3aXRo
ICIjZW9mXFwiIAorUEFTUyAiLmNvbW1hIiBzaG91bGQgbWF0Y2ggd2l0aCAiI1xcLmNvbW1hIiAK
K1BBU1MgIi1taW51cyIgc2hvdWxkIG1hdGNoIHdpdGggIiNcXC1taW51cyIgCitQQVNTICJnIiBz
aG91bGQgbWF0Y2ggd2l0aCAiI1xcZyIgCitQQVNTICJhQk1QUmVndWxhciIgc2hvdWxkIG1hdGNo
IHdpdGggIiNcXDYxIEJNUFJlZ3VsYXIiIAorUEFTUyAi8J+UkW5vbkJNUCIgc2hvdWxkIG1hdGNo
IHdpdGggIiNcXDFmNTExIG5vbkJNUCIgCitQQVNTICIwMGNvbnRpbnVlRXNjYXBlcyIgc2hvdWxk
IG1hdGNoIHdpdGggIiNcXDMwXFwzMCBjb250aW51ZUVzY2FwZXMiIAorUEFTUyAiMDBjb250aW51
ZUVzY2FwZXMiIHNob3VsZCBtYXRjaCB3aXRoICIjXFwzMCBcXDMwIGNvbnRpbnVlRXNjYXBlcyIg
CitQQVNTICJjb250aW51ZUVzY2FwZXMwMCIgc2hvdWxkIG1hdGNoIHdpdGggIiNjb250aW51ZUVz
Y2FwZXNcXDMwIFxcMzAgIiAKK1BBU1MgImNvbnRpbnVlRXNjYXBlczAwIiBzaG91bGQgbWF0Y2gg
d2l0aCAiI2NvbnRpbnVlRXNjYXBlc1xcMzAgXFwzMCIgCitQQVNTICJjb250aW51ZUVzY2FwZXMw
MCIgc2hvdWxkIG1hdGNoIHdpdGggIiNjb250aW51ZUVzY2FwZXNcXDMwXFwzMCAiIAorUEFTUyAi
Y29udGludWVFc2NhcGVzMDAiIHNob3VsZCBtYXRjaCB3aXRoICIjY29udGludWVFc2NhcGVzXFwz
MFxcMzAiIAorUEFTUyAiaGVsbG8iIHNob3VsZCBtYXRjaCB3aXRoICIjaGVsXFw2Q28iIAorUEFT
UyAiJkIiIHNob3VsZCBtYXRjaCB3aXRoICIjXFwyNiBCIiAKK1BBU1MgImhlbGxvIiBzaG91bGQg
bWF0Y2ggd2l0aCAiI2hlbFxcNkMgbyIgCitQQVNTICJzcGFjZXMiIHNob3VsZCBtYXRjaCB3aXRo
ICIjc3BhY1xcNjVcclxucyIgCitQQVNTICJzcGFjZXMiIHNob3VsZCBtYXRjaCB3aXRoICIjc3Bc
XDYxXHRjXFw2NVxmcyIgCitQQVNTICJ0ZXN07Z6ZIiBzaG91bGQgbWF0Y2ggd2l0aCAiI3Rlc3Rc
XEQ3OTkiIAorUEFTUyAi7oCAIiBzaG91bGQgbWF0Y2ggd2l0aCAiI1xcRTAwMCIgCitQQVNTICJ0
ZXN0IiBzaG91bGQgbWF0Y2ggd2l0aCAiI3RlXFxzXFx0IiAKK1BBU1MgInNwYWNlcyBpblx0aWRl
bnQiIHNob3VsZCBtYXRjaCB3aXRoICIjc3BhY2VzXFwgaW5cXFx0aWRlbnQiIAorUEFTUyAiLiw6
ISIgc2hvdWxkIG1hdGNoIHdpdGggIiNcXC5cXCxcXDpcXCEiIAorUEFTUyAibnVsbO+/vSIgc2hv
dWxkIG1hdGNoIHdpdGggIiNudWxsXFwwIiAKK1BBU1MgIm51bGzvv70iIHNob3VsZCBtYXRjaCB3
aXRoICIjbnVsbFxcMDAwMCIgCitQQVNTICJsYXJnZe+/vSIgc2hvdWxkIG1hdGNoIHdpdGggIiNs
YXJnZVxcMTEwMDAwIiAKK1BBU1MgImxhcmdl77+9IiBzaG91bGQgbWF0Y2ggd2l0aCAiI2xhcmdl
XFwyMzQ1NmEiIAorUEFTUyAic3Vycm9nYXRl77+9IiBzaG91bGQgbWF0Y2ggd2l0aCAiI3N1cnJv
Z2F0ZVxcRDgwMCIgCitQQVNTICJzdXJyb2dhdGXvv70iIHNob3VsZCBtYXRjaCB3aXRoICIjc3Vy
cm9nYXRlXFwwREJBQyIgCitQQVNTICLvv71zdXJyb2dhdGUiIHNob3VsZCBtYXRjaCB3aXRoICIj
XFwwMERGRkZzdXJyb2dhdGUiIAorUEFTUyAi9I+/vyIgc2hvdWxkIG1hdGNoIHdpdGggIiNcXDEw
ZkZmRiIgCitQQVNTICL0j7+/MCIgc2hvdWxkIG1hdGNoIHdpdGggIiNcXDEwZkZmRjAiIAorUEFT
UyAi9ICAgDAwIiBzaG91bGQgbWF0Y2ggd2l0aCAiI1xcMTAwMDAwMDAiIAorUEFTUyAiZW9m77+9
IiBzaG91bGQgbWF0Y2ggd2l0aCAiI2VvZlxcIiAKK1BBU1MgInNpbXBsZS1pZGVudCIgc2hvdWxk
IG1hdGNoIHdpdGggIiNzaW1wbGUtaWRlbnQiIAorUEFTUyAidGVzdGluZzEyMyIgc2hvdWxkIG1h
dGNoIHdpdGggIiN0ZXN0aW5nMTIzIiAKK1BBU1MgIl91bmRlcnNjb3JlIiBzaG91bGQgbWF0Y2gg
d2l0aCAiI191bmRlcnNjb3JlIiAKK1BBU1MgIi10ZXh0IiBzaG91bGQgbWF0Y2ggd2l0aCAiIy10
ZXh0IiAKK1BBU1MgIi1tIiBzaG91bGQgbWF0Y2ggd2l0aCAiIy1cXDZkIiAKK1BBU1MgIi0tYWJj
IiBzaG91bGQgbWF0Y2ggd2l0aCAiIy0tYWJjIiAKK1BBU1MgIi0tIiBzaG91bGQgbWF0Y2ggd2l0
aCAiIy0tIiAKK1BBU1MgIi0tMTEiIHNob3VsZCBtYXRjaCB3aXRoICIjLS0xMSIgCitQQVNTICIt
LS0iIHNob3VsZCBtYXRjaCB3aXRoICIjLS0tIiAKK1BBU1MgIuKAgyIgc2hvdWxkIG1hdGNoIHdp
dGggIiPigIMiIAorUEFTUyAiwqAiIHNob3VsZCBtYXRjaCB3aXRoICIjwqAiIAorUEFTUyAi4Yi0
IiBzaG91bGQgbWF0Y2ggd2l0aCAiI+GItCIgCitQQVNTICLwko2FIiBzaG91bGQgbWF0Y2ggd2l0
aCAiI/CSjYUiIAorUEFTUyAi77+9IiBzaG91bGQgbWF0Y2ggd2l0aCAiI1x1MDAwMCIgCitQQVNT
ICJhYu+/vWMiIHNob3VsZCBtYXRjaCB3aXRoICIjYWJcdTAwMDBjIiAKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20vbm9kZXMvUGFy
ZW50Tm9kZS1xdWVyeVNlbGVjdG9yLWVzY2FwZXMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL25vZGVzL1BhcmVudE5vZGUtcXVlcnlTZWxlY3Rv
ci1lc2NhcGVzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjVhNzVlNWMwMzA2NzdmZTNiZjYzZTQ0NDNhYzJi
ZmVjYTM0OGM0NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvZG9tL25vZGVzL1BhcmVudE5vZGUtcXVlcnlTZWxlY3Rvci1lc2Nh
cGVzLmh0bWwKQEAgLTAsMCArMSwxMjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPG1ldGEgY2hhcnNl
dD11dGYtOD4KKzx0aXRsZT5xdWVyeVNlbGVjdG9yKCkgd2l0aCBDU1MgZXNjYXBlczwvdGl0bGU+
Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vZG9tLnNwZWMud2hhdHdnLm9yZy8jZG9t
LXBhcmVudG5vZGUtcXVlcnlzZWxlY3RvciI+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBz
Oi8vZHJhZnRzLmNzc3dnLm9yZy9jc3Mtc3ludGF4LyNjb25zdW1lLWVzY2FwZWQtY29kZS1wb2lu
dCI+Cis8bGluayByZWw9ImF1dGhvciIgdGl0bGU9IkRvbWVuaWMgRGVuaWNvbGEiIGhyZWY9Im1h
aWx0bzpkQGRvbWVuaWMubWUiPgorPGxpbmsgcmVsPSJhdXRob3IiIHRpdGxlPSJiZWxsYmluZCIg
aHJlZj0ibWFpbHRvOmJlbGxiaW5kQGdtYWlsLmNvbSI+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNl
cy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0
aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CisK
K2Z1bmN0aW9uIHRlc3RNYXRjaGVkKGlkLCBzZWxlY3RvcikgeworICB0ZXN0KCgpID0+IHsKKyAg
ICBjb25zdCBjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICBj
b25zdCBjaGlsZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICBjaGlsZC5p
ZCA9IGlkOworCisgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGNoaWxkKTsKKworICAgIGFzc2Vy
dF9lcXVhbHMoY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpLCBjaGlsZCk7CisgIH0s
IGAke0pTT04uc3RyaW5naWZ5KGlkKX0gc2hvdWxkIG1hdGNoIHdpdGggJHtKU09OLnN0cmluZ2lm
eShzZWxlY3Rvcil9YCk7Cit9CisKK2Z1bmN0aW9uIHRlc3ROZXZlck1hdGNoZWQoaWQsIHNlbGVj
dG9yKSB7CisgIHRlc3QoKCkgPT4geworICAgIGNvbnN0IGNvbnRhaW5lciA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImRpdiIpOworICAgIGNvbnN0IGNoaWxkID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgic3BhbiIpOworICAgIGNoaWxkLmlkID0gaWQ7CisKKyAgICBjb250YWluZXIuYXBwZW5k
Q2hpbGQoY2hpbGQpOworCisgICAgYXNzZXJ0X2VxdWFscyhjb250YWluZXIucXVlcnlTZWxlY3Rv
cihzZWxlY3RvciksIG51bGwpOworICB9LCBgJHtKU09OLnN0cmluZ2lmeShpZCl9IHNob3VsZCBu
ZXZlciBtYXRjaCB3aXRoICR7SlNPTi5zdHJpbmdpZnkoc2VsZWN0b3IpfWApOworfQorCisvLyA0
LjMuNyBmcm9tIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3Mtc3ludGF4LyNjb25zdW1lLWVz
Y2FwZWQtY29kZS1wb2ludAordGVzdE1hdGNoZWQoIm5vbmVzY2FwZWQiLCAiI25vbmVzY2FwZWQi
KTsKKworLy8gLSBlc2NhcGUgaGV4IGRpZ2l0Cit0ZXN0TWF0Y2hlZCgiMG5leHRJc1doaXRlU3Bh
Y2UiLCAiI1xcMzAgbmV4dElzV2hpdGVTcGFjZSIpOwordGVzdE1hdGNoZWQoIjBuZXh0SXNOb3RI
ZXhMZXR0ZXJzIiwgIiNcXDMwbmV4dElzTm90SGV4TGV0dGVycyIpOwordGVzdE1hdGNoZWQoIjBj
b25uZWN0SGV4TW9yZVRoYW42SGV4IiwgIiNcXDAwMDAzMGNvbm5lY3RIZXhNb3JlVGhhbjZIZXgi
KTsKK3Rlc3RNYXRjaGVkKCIwc3BhY2VNb3JlVGhhbjZIZXgiLCAiI1xcMDAwMDMwIHNwYWNlTW9y
ZVRoYW42SGV4Iik7CisKKy8vIC0gaGV4IGRpZ2l0IHNwZWNpYWwgcmVwbGFjZW1lbnQKKy8vIDEu
IHplcm8gcG9pbnRzCit0ZXN0TWF0Y2hlZCgiemVyb1x1e2ZmZmR9IiwgIiN6ZXJvXFwwIik7Cit0
ZXN0TmV2ZXJNYXRjaGVkKCJ6ZXJvXHV7MH0iLCAiI3plcm9cXDAiKTsKK3Rlc3RNYXRjaGVkKCJ6
ZXJvXHV7ZmZmZH0iLCAiI3plcm9cXDAwMDAwMCIpOwordGVzdE5ldmVyTWF0Y2hlZCgiemVyb1x1
ezB9IiwgIiN6ZXJvXFwwMDAwMDAiKTsKKy8vIDIuIHN1cnJvZ2F0ZSBwb2ludHMKK3Rlc3RNYXRj
aGVkKCJcdXtmZmZkfXN1cnJvZ2F0ZUZpcnN0IiwgIiNcXGQ4M2Qgc3Vycm9nYXRlRmlyc3QiKTsK
K3Rlc3ROZXZlck1hdGNoZWQoIlx1ZDgzZHN1cnJvZ2F0ZUZpcnN0IiwgIiNcXGQ4M2Qgc3Vycm9n
YXRlRmlyc3QiKTsKK3Rlc3RNYXRjaGVkKCJzdXJyb2dhdGVTZWNvbmRcdXtmZmZkfSIsICIjc3Vy
cm9nYXRlU2Vjb25kXFxkZDExIik7Cit0ZXN0TmV2ZXJNYXRjaGVkKCJzdXJyb2dhdGVTZWNvbmRc
dWRkMTEiLCAiI3N1cnJvZ2F0ZVNlY29uZFxcZGQxMSIpOwordGVzdE1hdGNoZWQoInN1cnJvZ2F0
ZVBhaXJcdXtmZmZkfVx1e2ZmZmR9IiwgIiNzdXJyb2dhdGVQYWlyXFxkODNkXFxkZDExIik7Cit0
ZXN0TmV2ZXJNYXRjaGVkKCJzdXJyb2dhdGVQYWlyXHV7MWY1MTF9IiwgIiNzdXJyb2dhdGVQYWly
XFxkODNkXFxkZDExIik7CisvLyAzLiBvdXQgb2YgcmFuZ2UgcG9pbnRzCit0ZXN0TWF0Y2hlZCgi
b3V0T2ZSYW5nZVx1e2ZmZmR9IiwgIiNvdXRPZlJhbmdlXFwxMTAwMDAiKTsKK3Rlc3RNYXRjaGVk
KCJvdXRPZlJhbmdlXHV7ZmZmZH0iLCAiI291dE9mUmFuZ2VcXDExMDAzMCIpOwordGVzdE5ldmVy
TWF0Y2hlZCgib3V0T2ZSYW5nZVx1ezMwfSIsICIjb3V0T2ZSYW5nZVxcMTEwMDMwIik7Cit0ZXN0
TWF0Y2hlZCgib3V0T2ZSYW5nZVx1e2ZmZmR9IiwgIiNvdXRPZlJhbmdlXFw1NTU1NTUiKTsKK3Rl
c3RNYXRjaGVkKCJvdXRPZlJhbmdlXHV7ZmZmZH0iLCAiI291dE9mUmFuZ2VcXGZmZmZmZiIpOwor
CisvLyAtIGVzY2FwZSBFT0YKK3Rlc3ROZXZlck1hdGNoZWQoImVvZlxcIiwgIiNlb2ZcXCIpOwor
CisvLyAtIGVzY2FwZSBhbnl0aG9uZyBlbHNlCit0ZXN0TWF0Y2hlZCgiLmNvbW1hIiwgIiNcXC5j
b21tYSIpOwordGVzdE1hdGNoZWQoIi1taW51cyIsICIjXFwtbWludXMiKTsKK3Rlc3RNYXRjaGVk
KCJnIiwgIiNcXGciKTsKKworLy8gbm9uIGVkZ2UgY2FzZXMKK3Rlc3RNYXRjaGVkKCJhQk1QUmVn
dWxhciIsICIjXFw2MSBCTVBSZWd1bGFyIik7Cit0ZXN0TWF0Y2hlZCgiXHV7MWY1MTF9bm9uQk1Q
IiwgIiNcXDFmNTExIG5vbkJNUCIpOwordGVzdE1hdGNoZWQoIjAwY29udGludWVFc2NhcGVzIiwg
IiNcXDMwXFwzMCBjb250aW51ZUVzY2FwZXMiKTsKK3Rlc3RNYXRjaGVkKCIwMGNvbnRpbnVlRXNj
YXBlcyIsICIjXFwzMCBcXDMwIGNvbnRpbnVlRXNjYXBlcyIpOwordGVzdE1hdGNoZWQoImNvbnRp
bnVlRXNjYXBlczAwIiwgIiNjb250aW51ZUVzY2FwZXNcXDMwIFxcMzAgIik7Cit0ZXN0TWF0Y2hl
ZCgiY29udGludWVFc2NhcGVzMDAiLCAiI2NvbnRpbnVlRXNjYXBlc1xcMzAgXFwzMCIpOwordGVz
dE1hdGNoZWQoImNvbnRpbnVlRXNjYXBlczAwIiwgIiNjb250aW51ZUVzY2FwZXNcXDMwXFwzMCAi
KTsKK3Rlc3RNYXRjaGVkKCJjb250aW51ZUVzY2FwZXMwMCIsICIjY29udGludWVFc2NhcGVzXFwz
MFxcMzAiKTsKKworLy8gaWRlbnQgdGVzdHMgY2FzZSBmcm9tIENTUyB0ZXN0cyBvZiBjaHJvbWl1
bSBzb3VyY2U6IGh0dHBzOi8vZ29vLmdsLzNDeGRvdgordGVzdE1hdGNoZWQoImhlbGxvIiwgIiNo
ZWxcXDZDbyIpOwordGVzdE1hdGNoZWQoIiZCIiwgIiNcXDI2IEIiKTsKK3Rlc3RNYXRjaGVkKCJo
ZWxsbyIsICIjaGVsXFw2QyBvIik7Cit0ZXN0TWF0Y2hlZCgic3BhY2VzIiwgIiNzcGFjXFw2NVxy
XG5zIik7Cit0ZXN0TWF0Y2hlZCgic3BhY2VzIiwgIiNzcFxcNjFcdGNcXDY1XGZzIik7Cit0ZXN0
TWF0Y2hlZCgidGVzdFx1e0Q3OTl9IiwgIiN0ZXN0XFxENzk5Iik7Cit0ZXN0TWF0Y2hlZCgiXHV7
RTAwMH0iLCAiI1xcRTAwMCIpOwordGVzdE1hdGNoZWQoInRlc3QiLCAiI3RlXFxzXFx0Iik7Cit0
ZXN0TWF0Y2hlZCgic3BhY2VzIGluXHRpZGVudCIsICIjc3BhY2VzXFwgaW5cXFx0aWRlbnQiKTsK
K3Rlc3RNYXRjaGVkKCIuLDohIiwgIiNcXC5cXCxcXDpcXCEiKTsKK3Rlc3RNYXRjaGVkKCJudWxs
XHV7ZmZmZH0iLCAiI251bGxcXDAiKTsKK3Rlc3RNYXRjaGVkKCJudWxsXHV7ZmZmZH0iLCAiI251
bGxcXDAwMDAiKTsKK3Rlc3RNYXRjaGVkKCJsYXJnZVx1e2ZmZmR9IiwgIiNsYXJnZVxcMTEwMDAw
Iik7Cit0ZXN0TWF0Y2hlZCgibGFyZ2VcdXtmZmZkfSIsICIjbGFyZ2VcXDIzNDU2YSIpOwordGVz
dE1hdGNoZWQoInN1cnJvZ2F0ZVx1e2ZmZmR9IiwgIiNzdXJyb2dhdGVcXEQ4MDAiKTsKK3Rlc3RN
YXRjaGVkKCJzdXJyb2dhdGVcdXtmZmZkfSIsICIjc3Vycm9nYXRlXFwwREJBQyIpOwordGVzdE1h
dGNoZWQoIlx1e2ZmZmR9c3Vycm9nYXRlIiwgIiNcXDAwREZGRnN1cnJvZ2F0ZSIpOwordGVzdE1h
dGNoZWQoIlx1ezEwZmZmZn0iLCAiI1xcMTBmRmZGIik7Cit0ZXN0TWF0Y2hlZCgiXHV7MTBmZmZm
fTAiLCAiI1xcMTBmRmZGMCIpOwordGVzdE1hdGNoZWQoIlx1ezEwMDAwMH0wMCIsICIjXFwxMDAw
MDAwMCIpOwordGVzdE1hdGNoZWQoImVvZlx1e2ZmZmR9IiwgIiNlb2ZcXCIpOworCit0ZXN0TWF0
Y2hlZCgic2ltcGxlLWlkZW50IiwgIiNzaW1wbGUtaWRlbnQiKTsKK3Rlc3RNYXRjaGVkKCJ0ZXN0
aW5nMTIzIiwgIiN0ZXN0aW5nMTIzIik7Cit0ZXN0TWF0Y2hlZCgiX3VuZGVyc2NvcmUiLCAiI191
bmRlcnNjb3JlIik7Cit0ZXN0TWF0Y2hlZCgiLXRleHQiLCAiIy10ZXh0Iik7Cit0ZXN0TWF0Y2hl
ZCgiLW0iLCAiIy1cXDZkIik7Cit0ZXN0TWF0Y2hlZCgiLS1hYmMiLCAiIy0tYWJjIik7Cit0ZXN0
TWF0Y2hlZCgiLS0iLCAiIy0tIik7Cit0ZXN0TWF0Y2hlZCgiLS0xMSIsICIjLS0xMSIpOwordGVz
dE1hdGNoZWQoIi0tLSIsICIjLS0tIik7Cit0ZXN0TWF0Y2hlZCgiXHV7MjAwM30iLCAiI1x1ezIw
MDN9Iik7Cit0ZXN0TWF0Y2hlZCgiXHV7QTB9IiwgIiNcdXtBMH0iKTsKK3Rlc3RNYXRjaGVkKCJc
dXsxMjM0fSIsICIjXHV7MTIzNH0iKTsKK3Rlc3RNYXRjaGVkKCJcdXsxMjM0NX0iLCAiI1x1ezEy
MzQ1fSIpOwordGVzdE1hdGNoZWQoIlx1e2ZmZmR9IiwgIiNcdXswfSIpOwordGVzdE1hdGNoZWQo
ImFiXHV7ZmZmZH1jIiwgIiNhYlx1ezB9YyIpOworPC9zY3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395844</attachid>
            <date>2020-04-08 11:27:28 -0700</date>
            <delta_ts>2020-04-08 14:09:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210119-20200408112728.patch</filename>
            <type>text/plain</type>
            <size>29975</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5NzI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGFmM2E5YThhZjVjNDQyYzY0YjI2YzYw
NmQzOWRhN2FkN2YwYjk3MjcuLjcxZjBhYzQ3NGYyODBjOGViMTg0MzUwMjU5YjZjMzE5ZjdkZTJh
ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAtMDQtMDggIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBxdWVyeVNlbGVjdG9yKCIjXHUwMDAwIikgc2hvdWxkIG1h
dGNoIGFuIGVsZW1lbnQgd2l0aCBJRCBVK0ZGRkQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDExOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5jcHA6CisgICAgICAg
IChXVEY6OlN0cmluZ0ltcGw6OnJlcGxhY2UpOgorICAgICAgICBTbGlnaHRseSBvcHRpbWl6ZSB0
aGUgMTYtYml0IGNvZGUgcGF0aCBvZiBTdHJpbmdJbXBsOjpyZXBsYWNlKCkuIFNpbmNlIHdlIGtu
b3cKKyAgICAgICAgdGhlcmUgaXMgbm8gY2hhcmFjdGVyIG1hdGNoIGZyb20gaW5kZXhlcyAwIHRv
IGksIHdlIGNhbiBzaW1wbHkgdXNlIG1lbWNweSBmb3IKKyAgICAgICAgdGhpcyByYW5nZS4KKwog
MjAyMC0wNC0wOCAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZWFycmFuZ2UgYW5kIHNpbXBsaWZ5IHNvbWUgSlNDIGZlYXR1cmUgZmxhZ3MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCA1OTYxNjEwMzYxNDdkOThlNDZkZGMwOGQzMzVjOTdiNThmMGRkZGU2Li5mYzkzOTJi
NzcyMTIzOThmY2FkYzU1NDQwMGE1NTE5MTBiMTY0OWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NTUgQEAKKzIwMjAtMDQtMDggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAg
ICAgICBxdWVyeVNlbGVjdG9yKCIjXHUwMDAwIikgc2hvdWxkIG1hdGNoIGFuIGVsZW1lbnQgd2l0
aCBJRCBVK0ZGRkQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxMDExOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFzIHBlciB0aGUgc3BlY2lmaWNhdGlvbiBbMV1bMl0sIHdlIHNob3VsZCBwcmVwcm9jZXNz
IHRoZSBpbnB1dCBzdHJpbmcgYmVmb3JlIHBlcmZvcm1pbmcKKyAgICAgICAgQ1NTIHRva2VuaXph
dGlvbi4gVGhlIHByZXByb2Nlc3Npbmcgc3RlcCByZXBsYWNlcyBjZXJ0YWluIGNoYXJhY3RlcnMg
aW4gdGhlIGlucHV0IHN0cmluZy4KKworICAgICAgICBIb3dldmVyLCBvdXIgY29kZSBkaWQgbm90
IGhhdmUgdGhpcyBwcmVwcm9jZXNzaW5nIHN0ZXAgYW5kIGluc3RlYWQgd2FzIHRyeWluZyB0byBk
ZWFsCisgICAgICAgIHdpdGggdGhvc2UgY2hhcmFjdGVycyBkdXJpbmcgdG9rZW5pemF0aW9uLiBU
aGlzIGlzIGhvd2V2ZXIgbm90IHdvcmtpbmcgYXMgZXhwZWN0ZWQgZm9yCisgICAgICAgIHRoZSAn
XDAnIGNoYXJhY3RlciAod2hpY2ggaXMgc3VwcG9zZWQgdG8gYmUgcmVwbGFjZWQgd2l0aCBVK0ZG
RkQgUkVQTEFDRU1FTlQgQ0hBUkFDVEVSKQorICAgICAgICBiZWNhdXNlIG91ciBjb2RlIGRlYWxz
IHdpdGggU3RyaW5nVmlld3Mgb2YgdGhlIGlucHV0IFN0cmluZyBhbmQganVzdCBjb252ZXJ0cyBw
YXJ0IG9mCisgICAgICAgIHRoZSBpbnB1dCBzdHJlYW0gdG8gU3RyaW5ncyAvIEF0b21TdHJpbmdz
LgorCisgICAgICAgIFRvIGFkZHJlc3MgdGhlIGlzc3VlLCB0aGlzIHBhdGNoIGFkZHMgYSBwcmVw
cm9jZXNzaW5nIHN0ZXAgdGhhdCByZXBsYWNlcyB0aGUgJ1wwJworICAgICAgICBjaGFyYWN0ZXIg
d2l0aCB0aGUgVStGRkZEIFJFUExBQ0VNRU5UIENIQVJBQ1RFUikuIEkgb3B0ZWQgbm90IHRvIHJl
cGxhY2UgJ1xyJyBvciAnXGYnCisgICAgICAgIGNoYXJhY3RlcnMgc2luY2Ugb3VyIHRva2VuaXpl
ciBzZWVtcyB0byBiZSBkZWFsaW5nIGZpbmUgd2l0aCB0aG9zZS4KKworICAgICAgICBbMV0gaHR0
cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1zeW50YXgvI2lucHV0LXByZXByb2Nlc3NpbmcKKyAg
ICAgICAgWzJdIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3Mtc3ludGF4LyNwYXJzZXItZW50
cnktcG9pbnRzCisKKyAgICAgICAgVGVzdDogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9kb20vbm9kZXMvUGFyZW50Tm9kZS1xdWVyeVNlbGVjdG9yLWVzY2FwZXMuaHRtbAorCisgICAg
ICAgICogY3NzL3BhcnNlci9DU1NUb2tlbml6ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJl
cHJvY2Vzc1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6OkNTU1Rva2Vu
aXplcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6Omxlc3NUaGFuKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6aHlwaGVuTWludXMpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTVG9rZW5pemVyOjpoYXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6
cmV2ZXJzZVNvbGlkdXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpsZXR0ZXJV
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6Y29uc3VtZU51bWJlcik6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6OmNvbnN1bWVJZGVudExpa2VUb2tlbik6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6OmNvbnN1bWVTdHJpbmdUb2tlblVudGlsKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6Y29uc3VtZVVuaWNvZGVSYW5nZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6OmNvbnN1bWVVcmxUb2tlbik6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NUb2tlbml6ZXI6OmNvbnN1bWVCYWRVcmxSZW1uYW50cyk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NUb2tlbml6ZXI6OmNvbnN1bWVTaW5nbGVXaGl0ZXNwYWNlSWZOZXh0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6Y29uc3VtZUlmTmV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NUb2tlbml6ZXI6OmNvbnN1bWVOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1Rva2VuaXplcjo6Y29uc3VtZUVzY2FwZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6
ZXI6Om5leHRUd29DaGFyc0FyZVZhbGlkRXNjYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rv
a2VuaXplcjo6bmV4dENoYXJzQXJlTnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2Vu
aXplcjo6bmV4dENoYXJzQXJlSWRlbnRpZmllcik6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NU
b2tlbml6ZXIuaDoKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1Rva2VuaXplcklucHV0U3RyZWFt
Lmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXJJbnB1dFN0cmVhbTo6bmV4dElucHV0
Q2hhciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXJJbnB1dFN0cmVhbTo6
cGVlayBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXJJbnB1dFN0cmVhbTo6
cGVla1dpdGhvdXRSZXBsYWNlbWVudCBjb25zdCk6IERlbGV0ZWQuCisKIDIwMjAtMDQtMDggIERv
dWcgS2VsbHkgIDxkb3Vna0BhcHBsZS5jb20+CiAKICAgICAgICAgSGl0IHRlc3Qgd2l0aCBjbGlw
UGF0aCByZWZlcmVuY2luZyBwYXJlbnQgZWxlbWVudCBjYXVzZXMgaW5maW5pdGUgcmVjdXJzaW9u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwIGIvU291cmNl
L1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcAppbmRleCA4ODQ1OTg2MzYyYjFjYWNhMTU3MzE4
Y2JjMTVhYWM3YzlhNzIwNzQwLi5kNWZiNTYxNDIwMGQ0MzcwZmM5ZGNjODUyOTJlY2ZhZDZiOThm
MGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCisrKyBi
L1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKQEAgLTEzMDIsMTEgKzEzMDIsMTIg
QEAgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnJlcGxhY2UoVUNoYXIgdGFyZ2V0LCBVQ2hh
ciByZXBsYWNlbWVudCkKICAgICBVQ2hhciogZGF0YTsKICAgICBhdXRvIG5ld0ltcGwgPSBjcmVh
dGVVbmluaXRpYWxpemVkSW50ZXJuYWxOb25FbXB0eShtX2xlbmd0aCwgZGF0YSk7CiAKLSAgICBm
b3IgKGkgPSAwOyBpICE9IG1fbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgVUNoYXIgY2hhcmFjdGVy
ID0gbV9kYXRhMTZbaV07CisgICAgbWVtY3B5KGRhdGEsIG1fZGF0YTE2LCBpICogc2l6ZW9mKFVD
aGFyKSk7CisgICAgZm9yICh1bnNpZ25lZCBqID0gaTsgaiAhPSBtX2xlbmd0aDsgKytqKSB7Cisg
ICAgICAgIFVDaGFyIGNoYXJhY3RlciA9IG1fZGF0YTE2W2pdOwogICAgICAgICBpZiAoY2hhcmFj
dGVyID09IHRhcmdldCkKICAgICAgICAgICAgIGNoYXJhY3RlciA9IHJlcGxhY2VtZW50OwotICAg
ICAgICBkYXRhW2ldID0gY2hhcmFjdGVyOworICAgICAgICBkYXRhW2pdID0gY2hhcmFjdGVyOwog
ICAgIH0KICAgICByZXR1cm4gbmV3SW1wbDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9wYXJzZXIvQ1NTVG9rZW5pemVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIv
Q1NTVG9rZW5pemVyLmNwcAppbmRleCBjYTZhMThjMmRmYmYwNDI2OTdlY2FjODU1NzBjYWU3NGRi
ZmIwNjNhLi4xNjBkMjhiYmE4OTZiMjZiY2NhMzZkMjUzZGNiYjA4ZGFiNmQ5NjAyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Rva2VuaXplci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NUb2tlbml6ZXIuY3BwCkBAIC00MCwxNyArNDAsMTcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DU1NUb2tlbml6ZXI6OkNTU1Rva2VuaXplcihj
b25zdCBTdHJpbmcmIHN0cmluZykKLSAgICA6IG1faW5wdXQoc3RyaW5nKQorLy8gU2VlOiBodHRw
Oi8vZGV2LnczLm9yZy9jc3N3Zy9jc3Mtc3ludGF4LyNpbnB1dC1wcmVwcm9jZXNzaW5nCitzdGF0
aWMgU3RyaW5nJiBwcmVwcm9jZXNzU3RyaW5nKFN0cmluZyYgc3RyaW5nKQogewotICAgIC8vIEFj
Y29yZGluZyB0byB0aGUgc3BlYywgd2Ugc2hvdWxkIHBlcmZvcm0gcHJlcHJvY2Vzc2luZyBoZXJl
LgotICAgIC8vIFNlZTogaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzLXN5bnRheC8jaW5wdXQt
cHJlcHJvY2Vzc2luZwotICAgIC8vCi0gICAgLy8gSG93ZXZlciwgd2UgY2FuIHNraXAgdGhpcyBz
dGVwIHNpbmNlOgotICAgIC8vICogV2UncmUgdXNpbmcgSFRNTCBzcGFjZXMgKHdoaWNoIGFjY2Vw
dCBcciBhbmQgXGYgYXMgYSB2YWxpZCB3aGl0ZSBzcGFjZSkKLSAgICAvLyAqIERvIG5vdCBjb3Vu
dCB3aGl0ZSBzcGFjZXMKLSAgICAvLyAqIENTU1Rva2VuaXplcklucHV0U3RyZWFtOjpuZXh0SW5w
dXRDaGFyKCkgcmVwbGFjZXMgTlVMTHMgZm9yIHJlcGxhY2VtZW50IGNoYXJhY3RlcnMKKyAgICAv
LyBBY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmljYXRpb24sIHdlIHNob3VsZCByZXBsYWNlICdccicg
YW5kICdcZicgd2l0aCAnXG4nIGJ1dCB3ZSBkbyBub3QgbmVlZCB0bworICAgIC8vIGJlY2F1c2Ug
b3VyIENTU1Rva2VuaXplciB0cmVhdHMgYWxsIG9mIHRoZW0gYXMgbmV3IGxpbmVzLgorICAgIHJl
dHVybiBzdHJpbmcucmVwbGFjZSgnXDAnLCAweEZGRkQpOworfQogCitDU1NUb2tlbml6ZXI6OkNT
U1Rva2VuaXplcihTdHJpbmcgc3RyaW5nKQorICAgIDogbV9pbnB1dChwcmVwcm9jZXNzU3RyaW5n
KHN0cmluZykpCit7CiAgICAgaWYgKHN0cmluZy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsK
IApAQCAtNjgsOCArNjgsOCBAQCBDU1NUb2tlbml6ZXI6OkNTU1Rva2VuaXplcihjb25zdCBTdHJp
bmcmIHN0cmluZykKICAgICB9CiB9CiAKLUNTU1Rva2VuaXplcjo6Q1NTVG9rZW5pemVyKGNvbnN0
IFN0cmluZyYgc3RyaW5nLCBDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXImIHdyYXBwZXIpCi0gICAg
OiBtX2lucHV0KHN0cmluZykKK0NTU1Rva2VuaXplcjo6Q1NTVG9rZW5pemVyKFN0cmluZyBzdHJp
bmcsIENTU1BhcnNlck9ic2VydmVyV3JhcHBlciYgd3JhcHBlcikKKyAgICA6IG1faW5wdXQocHJl
cHJvY2Vzc1N0cmluZyhzdHJpbmcpKQogewogICAgIGlmIChzdHJpbmcuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm47CkBAIC0yMDMsOSArMjAzLDkgQEAgQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5p
emVyOjphc3RlcmlzayhVQ2hhciBjYykKIENTU1BhcnNlclRva2VuIENTU1Rva2VuaXplcjo6bGVz
c1RoYW4oVUNoYXIgY2MpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChjYywgY2MgPT0gJzwnKTsKLSAg
ICBpZiAobV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDApID09ICchJwotICAgICAgICAm
JiBtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQoMSkgPT0gJy0nCi0gICAgICAgICYmIG1f
aW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudCgyKSA9PSAnLScpIHsKKyAgICBpZiAobV9pbnB1
dC5wZWVrKDApID09ICchJworICAgICAgICAmJiBtX2lucHV0LnBlZWsoMSkgPT0gJy0nCisgICAg
ICAgICYmIG1faW5wdXQucGVlaygyKSA9PSAnLScpIHsKICAgICAgICAgbV9pbnB1dC5hZHZhbmNl
KDMpOwogICAgICAgICByZXR1cm4gQ1NTUGFyc2VyVG9rZW4oQ0RPVG9rZW4pOwogICAgIH0KQEAg
LTIyMyw4ICsyMjMsOCBAQCBDU1NQYXJzZXJUb2tlbiBDU1NUb2tlbml6ZXI6Omh5cGhlbk1pbnVz
KFVDaGFyIGNjKQogICAgICAgICByZWNvbnN1bWUoY2MpOwogICAgICAgICByZXR1cm4gY29uc3Vt
ZU51bWVyaWNUb2tlbigpOwogICAgIH0KLSAgICBpZiAobV9pbnB1dC5wZWVrV2l0aG91dFJlcGxh
Y2VtZW50KDApID09ICctJwotICAgICAgICAmJiBtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1l
bnQoMSkgPT0gJz4nKSB7CisgICAgaWYgKG1faW5wdXQucGVlaygwKSA9PSAnLScKKyAgICAgICAg
JiYgbV9pbnB1dC5wZWVrKDEpID09ICc+JykgewogICAgICAgICBtX2lucHV0LmFkdmFuY2UoMik7
CiAgICAgICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbihDRENUb2tlbik7CiAgICAgfQpAQCAtMjU4
LDggKzI1OCw4IEBAIENTU1BhcnNlclRva2VuIENTU1Rva2VuaXplcjo6c2VtaUNvbG9uKFVDaGFy
IC8qY2MqLykKIAogQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpoYXNoKFVDaGFyIGNjKQog
ewotICAgIFVDaGFyIG5leHRDaGFyID0gbV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDAp
OwotICAgIGlmIChpc05hbWVDb2RlUG9pbnQobmV4dENoYXIpIHx8IHR3b0NoYXJzQXJlVmFsaWRF
c2NhcGUobmV4dENoYXIsIG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudCgxKSkpIHsKKyAg
ICBVQ2hhciBuZXh0Q2hhciA9IG1faW5wdXQucGVlaygwKTsKKyAgICBpZiAoaXNOYW1lQ29kZVBv
aW50KG5leHRDaGFyKSB8fCB0d29DaGFyc0FyZVZhbGlkRXNjYXBlKG5leHRDaGFyLCBtX2lucHV0
LnBlZWsoMSkpKSB7CiAgICAgICAgIEhhc2hUb2tlblR5cGUgdHlwZSA9IG5leHRDaGFyc0FyZUlk
ZW50aWZpZXIoKSA/IEhhc2hUb2tlbklkIDogSGFzaFRva2VuVW5yZXN0cmljdGVkOwogICAgICAg
ICByZXR1cm4gQ1NTUGFyc2VyVG9rZW4odHlwZSwgY29uc3VtZU5hbWUoKSk7CiAgICAgfQpAQCAt
MzExLDcgKzMxMSw3IEBAIENTU1BhcnNlclRva2VuIENTU1Rva2VuaXplcjo6Y29tbWVyY2lhbEF0
KFVDaGFyIGNjKQogCiBDU1NQYXJzZXJUb2tlbiBDU1NUb2tlbml6ZXI6OnJldmVyc2VTb2xpZHVz
KFVDaGFyIGNjKQogewotICAgIGlmICh0d29DaGFyc0FyZVZhbGlkRXNjYXBlKGNjLCBtX2lucHV0
LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQoMCkpKSB7CisgICAgaWYgKHR3b0NoYXJzQXJlVmFsaWRF
c2NhcGUoY2MsIG1faW5wdXQucGVlaygwKSkpIHsKICAgICAgICAgcmVjb25zdW1lKGNjKTsKICAg
ICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudExpa2VUb2tlbigpOwogICAgIH0KQEAgLTMyNiw4ICsz
MjYsOCBAQCBDU1NQYXJzZXJUb2tlbiBDU1NUb2tlbml6ZXI6OmFzY2lpRGlnaXQoVUNoYXIgY2Mp
CiAKIENTU1BhcnNlclRva2VuIENTU1Rva2VuaXplcjo6bGV0dGVyVShVQ2hhciBjYykKIHsKLSAg
ICBpZiAobV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDApID09ICcrJwotICAgICAgICAm
JiAoaXNBU0NJSUhleERpZ2l0KG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudCgxKSkgfHwg
bV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDEpID09ICc/JykpIHsKKyAgICBpZiAobV9p
bnB1dC5wZWVrKDApID09ICcrJworICAgICAgICAmJiAoaXNBU0NJSUhleERpZ2l0KG1faW5wdXQu
cGVlaygxKSkgfHwgbV9pbnB1dC5wZWVrKDEpID09ICc/JykpIHsKICAgICAgICAgbV9pbnB1dC5h
ZHZhbmNlKCk7CiAgICAgICAgIHJldHVybiBjb25zdW1lVW5pY29kZVJhbmdlKCk7CiAgICAgfQpA
QCAtNTE5LDcgKzUxOSw3IEBAIENTU1BhcnNlclRva2VuIENTU1Rva2VuaXplcjo6Y29uc3VtZU51
bWJlcigpCiAgICAgTnVtZXJpY1NpZ24gc2lnbiA9IE5vU2lnbjsKICAgICB1bnNpZ25lZCBudW1i
ZXJMZW5ndGggPSAwOwogCi0gICAgVUNoYXIgbmV4dCA9IG1faW5wdXQucGVla1dpdGhvdXRSZXBs
YWNlbWVudCgwKTsKKyAgICBVQ2hhciBuZXh0ID0gbV9pbnB1dC5wZWVrKDApOwogICAgIGlmIChu
ZXh0ID09ICcrJykgewogICAgICAgICArK251bWJlckxlbmd0aDsKICAgICAgICAgc2lnbiA9IFBs
dXNTaWduOwpAQCAtNTI5LDE5ICs1MjksMTkgQEAgQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVy
Ojpjb25zdW1lTnVtYmVyKCkKICAgICB9CiAKICAgICBudW1iZXJMZW5ndGggPSBtX2lucHV0LnNr
aXBXaGlsZVByZWRpY2F0ZTxpc0FTQ0lJRGlnaXQ+KG51bWJlckxlbmd0aCk7Ci0gICAgbmV4dCA9
IG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudChudW1iZXJMZW5ndGgpOwotICAgIGlmIChu
ZXh0ID09ICcuJyAmJiBpc0FTQ0lJRGlnaXQobV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50
KG51bWJlckxlbmd0aCArIDEpKSkgeworICAgIG5leHQgPSBtX2lucHV0LnBlZWsobnVtYmVyTGVu
Z3RoKTsKKyAgICBpZiAobmV4dCA9PSAnLicgJiYgaXNBU0NJSURpZ2l0KG1faW5wdXQucGVlayhu
dW1iZXJMZW5ndGggKyAxKSkpIHsKICAgICAgICAgdHlwZSA9IE51bWJlclZhbHVlVHlwZTsKICAg
ICAgICAgbnVtYmVyTGVuZ3RoID0gbV9pbnB1dC5za2lwV2hpbGVQcmVkaWNhdGU8aXNBU0NJSURp
Z2l0PihudW1iZXJMZW5ndGggKyAyKTsKLSAgICAgICAgbmV4dCA9IG1faW5wdXQucGVla1dpdGhv
dXRSZXBsYWNlbWVudChudW1iZXJMZW5ndGgpOworICAgICAgICBuZXh0ID0gbV9pbnB1dC5wZWVr
KG51bWJlckxlbmd0aCk7CiAgICAgfQogCiAgICAgaWYgKG5leHQgPT0gJ0UnIHx8IG5leHQgPT0g
J2UnKSB7Ci0gICAgICAgIG5leHQgPSBtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQobnVt
YmVyTGVuZ3RoICsgMSk7CisgICAgICAgIG5leHQgPSBtX2lucHV0LnBlZWsobnVtYmVyTGVuZ3Ro
ICsgMSk7CiAgICAgICAgIGlmIChpc0FTQ0lJRGlnaXQobmV4dCkpIHsKICAgICAgICAgICAgIHR5
cGUgPSBOdW1iZXJWYWx1ZVR5cGU7CiAgICAgICAgICAgICBudW1iZXJMZW5ndGggPSBtX2lucHV0
LnNraXBXaGlsZVByZWRpY2F0ZTxpc0FTQ0lJRGlnaXQ+KG51bWJlckxlbmd0aCArIDEpOwotICAg
ICAgICB9IGVsc2UgaWYgKChuZXh0ID09ICcrJyB8fCBuZXh0ID09ICctJykgJiYgaXNBU0NJSURp
Z2l0KG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudChudW1iZXJMZW5ndGggKyAyKSkpIHsK
KyAgICAgICAgfSBlbHNlIGlmICgobmV4dCA9PSAnKycgfHwgbmV4dCA9PSAnLScpICYmIGlzQVND
SUlEaWdpdChtX2lucHV0LnBlZWsobnVtYmVyTGVuZ3RoICsgMikpKSB7CiAgICAgICAgICAgICB0
eXBlID0gTnVtYmVyVmFsdWVUeXBlOwogICAgICAgICAgICAgbnVtYmVyTGVuZ3RoID0gbV9pbnB1
dC5za2lwV2hpbGVQcmVkaWNhdGU8aXNBU0NJSURpZ2l0PihudW1iZXJMZW5ndGggKyAzKTsKICAg
ICAgICAgfQpAQCAtNTczLDcgKzU3Myw3IEBAIENTU1BhcnNlclRva2VuIENTU1Rva2VuaXplcjo6
Y29uc3VtZUlkZW50TGlrZVRva2VuKCkKICAgICAgICAgICAgIC8vIFRoZSBzcGVjIGlzIHNsaWdo
dGx5IGRpZmZlcmVudCBzbyBhcyB0byBhdm9pZCBkcm9wcGluZyB3aGl0ZXNwYWNlCiAgICAgICAg
ICAgICAvLyB0b2tlbnMsIGJ1dCB0aGV5IHdvdWxkbid0IGJlIHVzZWQgYW5kIHRoaXMgaXMgZWFz
aWVyLgogICAgICAgICAgICAgbV9pbnB1dC5hZHZhbmNlVW50aWxOb25XaGl0ZXNwYWNlKCk7Ci0g
ICAgICAgICAgICBVQ2hhciBuZXh0ID0gbV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDAp
OworICAgICAgICAgICAgVUNoYXIgbmV4dCA9IG1faW5wdXQucGVlaygwKTsKICAgICAgICAgICAg
IGlmIChuZXh0ICE9ICciJyAmJiBuZXh0ICE9ICdcJycpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IGNvbnN1bWVVcmxUb2tlbigpOwogICAgICAgICB9CkBAIC01ODcsNyArNTg3LDcgQEAgQ1NTUGFy
c2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpjb25zdW1lU3RyaW5nVG9rZW5VbnRpbChVQ2hhciBlbmRp
bmdDb2RlUG9pbnQpCiB7CiAgICAgLy8gU3RyaW5ncyB3aXRob3V0IGVzY2FwZXMgZ2V0IGhhbmRs
ZWQgd2l0aG91dCBhbGxvY2F0aW9ucwogICAgIGZvciAodW5zaWduZWQgc2l6ZSA9IDA7IDsgc2l6
ZSsrKSB7Ci0gICAgICAgIFVDaGFyIGNjID0gbV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50
KHNpemUpOworICAgICAgICBVQ2hhciBjYyA9IG1faW5wdXQucGVlayhzaXplKTsKICAgICAgICAg
aWYgKGNjID09IGVuZGluZ0NvZGVQb2ludCkgewogICAgICAgICAgICAgdW5zaWduZWQgc3RhcnRP
ZmZzZXQgPSBtX2lucHV0Lm9mZnNldCgpOwogICAgICAgICAgICAgbV9pbnB1dC5hZHZhbmNlKHNp
emUgKyAxKTsKQEAgLTYxMyw3ICs2MTMsNyBAQCBDU1NQYXJzZXJUb2tlbiBDU1NUb2tlbml6ZXI6
OmNvbnN1bWVTdHJpbmdUb2tlblVudGlsKFVDaGFyIGVuZGluZ0NvZGVQb2ludCkKICAgICAgICAg
aWYgKGNjID09ICdcXCcpIHsKICAgICAgICAgICAgIGlmIChtX2lucHV0Lm5leHRJbnB1dENoYXIo
KSA9PSBrRW5kT2ZGaWxlTWFya2VyKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICAgICAgaWYgKGlzTmV3TGluZShtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQoMCkpKQor
ICAgICAgICAgICAgaWYgKGlzTmV3TGluZShtX2lucHV0LnBlZWsoMCkpKQogICAgICAgICAgICAg
ICAgIGNvbnN1bWVTaW5nbGVXaGl0ZXNwYWNlSWZOZXh0KCk7IC8vIFRoaXMgaGFuZGxlcyBcclxu
IGZvciB1cwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIG91dHB1dC5hcHBlbmRD
aGFyYWN0ZXIoY29uc3VtZUVzY2FwZSgpKTsKQEAgLTYyNCwxMSArNjI0LDExIEBAIENTU1BhcnNl
clRva2VuIENTU1Rva2VuaXplcjo6Y29uc3VtZVN0cmluZ1Rva2VuVW50aWwoVUNoYXIgZW5kaW5n
Q29kZVBvaW50KQogCiBDU1NQYXJzZXJUb2tlbiBDU1NUb2tlbml6ZXI6OmNvbnN1bWVVbmljb2Rl
UmFuZ2UoKQogewotICAgIEFTU0VSVChpc0FTQ0lJSGV4RGlnaXQobV9pbnB1dC5wZWVrV2l0aG91
dFJlcGxhY2VtZW50KDApKSB8fCBtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQoMCkgPT0g
Jz8nKTsKKyAgICBBU1NFUlQoaXNBU0NJSUhleERpZ2l0KG1faW5wdXQucGVlaygwKSkgfHwgbV9p
bnB1dC5wZWVrKDApID09ICc/Jyk7CiAgICAgaW50IGxlbmd0aFJlbWFpbmluZyA9IDY7CiAgICAg
VUNoYXIzMiBzdGFydCA9IDA7CiAKLSAgICB3aGlsZSAobGVuZ3RoUmVtYWluaW5nICYmIGlzQVND
SUlIZXhEaWdpdChtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQoMCkpKSB7CisgICAgd2hp
bGUgKGxlbmd0aFJlbWFpbmluZyAmJiBpc0FTQ0lJSGV4RGlnaXQobV9pbnB1dC5wZWVrKDApKSkg
ewogICAgICAgICBzdGFydCA9IHN0YXJ0ICogMTYgKyB0b0FTQ0lJSGV4VmFsdWUoY29uc3VtZSgp
KTsKICAgICAgICAgLS1sZW5ndGhSZW1haW5pbmc7CiAgICAgfQpAQCAtNjQwLDE0ICs2NDAsMTQg
QEAgQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpjb25zdW1lVW5pY29kZVJhbmdlKCkKICAg
ICAgICAgICAgIGVuZCA9IGVuZCAqIDE2ICsgMHhGOwogICAgICAgICAgICAgLS1sZW5ndGhSZW1h
aW5pbmc7CiAgICAgICAgIH0gd2hpbGUgKGxlbmd0aFJlbWFpbmluZyAmJiBjb25zdW1lSWZOZXh0
KCc/JykpOwotICAgIH0gZWxzZSBpZiAobV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDAp
ID09ICctJyAmJiBpc0FTQ0lJSGV4RGlnaXQobV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50
KDEpKSkgeworICAgIH0gZWxzZSBpZiAobV9pbnB1dC5wZWVrKDApID09ICctJyAmJiBpc0FTQ0lJ
SGV4RGlnaXQobV9pbnB1dC5wZWVrKDEpKSkgewogICAgICAgICBtX2lucHV0LmFkdmFuY2UoKTsK
ICAgICAgICAgbGVuZ3RoUmVtYWluaW5nID0gNjsKICAgICAgICAgZW5kID0gMDsKICAgICAgICAg
ZG8gewogICAgICAgICAgICAgZW5kID0gZW5kICogMTYgKyB0b0FTQ0lJSGV4VmFsdWUoY29uc3Vt
ZSgpKTsKICAgICAgICAgICAgIC0tbGVuZ3RoUmVtYWluaW5nOwotICAgICAgICB9IHdoaWxlIChs
ZW5ndGhSZW1haW5pbmcgJiYgaXNBU0NJSUhleERpZ2l0KG1faW5wdXQucGVla1dpdGhvdXRSZXBs
YWNlbWVudCgwKSkpOworICAgICAgICB9IHdoaWxlIChsZW5ndGhSZW1haW5pbmcgJiYgaXNBU0NJ
SUhleERpZ2l0KG1faW5wdXQucGVlaygwKSkpOwogICAgIH0KIAogICAgIHJldHVybiBDU1NQYXJz
ZXJUb2tlbihVbmljb2RlUmFuZ2VUb2tlbiwgc3RhcnQsIGVuZCk7CkBAIC02NjYsNyArNjY2LDcg
QEAgQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpjb25zdW1lVXJsVG9rZW4oKQogCiAgICAg
Ly8gVVJMIHRva2VucyB3aXRob3V0IGVzY2FwZXMgZ2V0IGhhbmRsZWQgd2l0aG91dCBhbGxvY2F0
aW9ucwogICAgIGZvciAodW5zaWduZWQgc2l6ZSA9IDA7IDsgc2l6ZSsrKSB7Ci0gICAgICAgIFVD
aGFyIGNjID0gbV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KHNpemUpOworICAgICAgICBV
Q2hhciBjYyA9IG1faW5wdXQucGVlayhzaXplKTsKICAgICAgICAgaWYgKGNjID09ICcpJykgewog
ICAgICAgICAgICAgdW5zaWduZWQgc3RhcnRPZmZzZXQgPSBtX2lucHV0Lm9mZnNldCgpOwogICAg
ICAgICAgICAgbV9pbnB1dC5hZHZhbmNlKHNpemUgKyAxKTsKQEAgLTY5Myw3ICs2OTMsNyBAQCBD
U1NQYXJzZXJUb2tlbiBDU1NUb2tlbml6ZXI6OmNvbnN1bWVVcmxUb2tlbigpCiAgICAgICAgICAg
ICBicmVhazsKIAogICAgICAgICBpZiAoY2MgPT0gJ1xcJykgewotICAgICAgICAgICAgaWYgKHR3
b0NoYXJzQXJlVmFsaWRFc2NhcGUoY2MsIG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudCgw
KSkpIHsKKyAgICAgICAgICAgIGlmICh0d29DaGFyc0FyZVZhbGlkRXNjYXBlKGNjLCBtX2lucHV0
LnBlZWsoMCkpKSB7CiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZENoYXJhY3Rlcihjb25z
dW1lRXNjYXBlKCkpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQpA
QCAtNzE0LDcgKzcxNCw3IEBAIHZvaWQgQ1NTVG9rZW5pemVyOjpjb25zdW1lQmFkVXJsUmVtbmFu
dHMoKQogICAgICAgICBVQ2hhciBjYyA9IGNvbnN1bWUoKTsKICAgICAgICAgaWYgKGNjID09ICcp
JyB8fCBjYyA9PSBrRW5kT2ZGaWxlTWFya2VyKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICBpZiAodHdvQ2hhcnNBcmVWYWxpZEVzY2FwZShjYywgbV9pbnB1dC5wZWVrV2l0aG91dFJlcGxh
Y2VtZW50KDApKSkKKyAgICAgICAgaWYgKHR3b0NoYXJzQXJlVmFsaWRFc2NhcGUoY2MsIG1faW5w
dXQucGVlaygwKSkpCiAgICAgICAgICAgICBjb25zdW1lRXNjYXBlKCk7CiAgICAgfQogfQpAQCAt
NzIyLDggKzcyMiw4IEBAIHZvaWQgQ1NTVG9rZW5pemVyOjpjb25zdW1lQmFkVXJsUmVtbmFudHMo
KQogdm9pZCBDU1NUb2tlbml6ZXI6OmNvbnN1bWVTaW5nbGVXaGl0ZXNwYWNlSWZOZXh0KCkKIHsK
ICAgICAvLyBXZSBjaGVjayBmb3IgXHJcbiBhbmQgSFRNTCBzcGFjZXMgc2luY2Ugd2UgZG9uJ3Qg
ZG8gcHJlcHJvY2Vzc2luZwotICAgIFVDaGFyIG5leHQgPSBtX2lucHV0LnBlZWtXaXRob3V0UmVw
bGFjZW1lbnQoMCk7Ci0gICAgaWYgKG5leHQgPT0gJ1xyJyAmJiBtX2lucHV0LnBlZWtXaXRob3V0
UmVwbGFjZW1lbnQoMSkgPT0gJ1xuJykKKyAgICBVQ2hhciBuZXh0ID0gbV9pbnB1dC5wZWVrKDAp
OworICAgIGlmIChuZXh0ID09ICdccicgJiYgbV9pbnB1dC5wZWVrKDEpID09ICdcbicpCiAgICAg
ICAgIG1faW5wdXQuYWR2YW5jZSgyKTsKICAgICBlbHNlIGlmIChpc0hUTUxTcGFjZShuZXh0KSkK
ICAgICAgICAgbV9pbnB1dC5hZHZhbmNlKCk7CkBAIC03NTEsNyArNzUxLDcgQEAgYm9vbCBDU1NU
b2tlbml6ZXI6OmNvbnN1bWVJZk5leHQoVUNoYXIgY2hhcmFjdGVyKQogICAgIC8vIGEgTlVMIGlu
IHRoZSBtaWRkbGUgYW5kIHRoZSBrRW5kT2ZGaWxlTWFya2VyLCBzbyBjaGFyYWN0ZXIgbXVzdCBu
b3QgYmUKICAgICAvLyBOVUwuCiAgICAgQVNTRVJUKGNoYXJhY3Rlcik7Ci0gICAgaWYgKG1faW5w
dXQucGVla1dpdGhvdXRSZXBsYWNlbWVudCgwKSA9PSBjaGFyYWN0ZXIpIHsKKyAgICBpZiAobV9p
bnB1dC5wZWVrKDApID09IGNoYXJhY3RlcikgewogICAgICAgICBtX2lucHV0LmFkdmFuY2UoKTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtNzYzLDEwICs3NjMsMTAgQEAgU3RyaW5n
VmlldyBDU1NUb2tlbml6ZXI6OmNvbnN1bWVOYW1lKCkKIHsKICAgICAvLyBOYW1lcyB3aXRob3V0
IGVzY2FwZXMgZ2V0IGhhbmRsZWQgd2l0aG91dCBhbGxvY2F0aW9ucwogICAgIGZvciAodW5zaWdu
ZWQgc2l6ZSA9IDA7IDsgKytzaXplKSB7Ci0gICAgICAgIFVDaGFyIGNjID0gbV9pbnB1dC5wZWVr
V2l0aG91dFJlcGxhY2VtZW50KHNpemUpOworICAgICAgICBVQ2hhciBjYyA9IG1faW5wdXQucGVl
ayhzaXplKTsKICAgICAgICAgaWYgKGlzTmFtZUNvZGVQb2ludChjYykpCiAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgLy8gcGVla1dpdGhvdXRSZXBsYWNlbWVudCB3aWxsIHJldHVybiBO
VUwgd2hlbiB3ZSBoaXQgdGhlIGVuZCBvZiB0aGUKKyAgICAgICAgLy8gcGVlayB3aWxsIHJldHVy
biBOVUwgd2hlbiB3ZSBoaXQgdGhlIGVuZCBvZiB0aGUKICAgICAgICAgLy8gaW5wdXQuIEluIHRo
YXQgY2FzZSB3ZSB3YW50IHRvIHN0aWxsIHVzZSB0aGUgcmFuZ2VBdCgpIGZhc3QgcGF0aAogICAg
ICAgICAvLyBiZWxvdy4KICAgICAgICAgaWYgKGNjID09ICdcMCcgJiYgbV9pbnB1dC5vZmZzZXQo
KSArIHNpemUgPCBtX2lucHV0Lmxlbmd0aCgpKQpAQCAtNzg1LDcgKzc4NSw3IEBAIFN0cmluZ1Zp
ZXcgQ1NTVG9rZW5pemVyOjpjb25zdW1lTmFtZSgpCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5k
KGNjKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgICAgIGlmICh0d29D
aGFyc0FyZVZhbGlkRXNjYXBlKGNjLCBtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQoMCkp
KSB7CisgICAgICAgIGlmICh0d29DaGFyc0FyZVZhbGlkRXNjYXBlKGNjLCBtX2lucHV0LnBlZWso
MCkpKSB7CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kQ2hhcmFjdGVyKGNvbnN1bWVFc2NhcGUo
KSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQpAQCAtODAzLDcgKzgwMyw3IEBA
IFVDaGFyMzIgQ1NTVG9rZW5pemVyOjpjb25zdW1lRXNjYXBlKCkKICAgICAgICAgdW5zaWduZWQg
Y29uc3VtZWRIZXhEaWdpdHMgPSAxOwogICAgICAgICBTdHJpbmdCdWlsZGVyIGhleENoYXJzOwog
ICAgICAgICBoZXhDaGFycy5hcHBlbmQoY2MpOwotICAgICAgICB3aGlsZSAoY29uc3VtZWRIZXhE
aWdpdHMgPCA2ICYmIGlzQVNDSUlIZXhEaWdpdChtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1l
bnQoMCkpKSB7CisgICAgICAgIHdoaWxlIChjb25zdW1lZEhleERpZ2l0cyA8IDYgJiYgaXNBU0NJ
SUhleERpZ2l0KG1faW5wdXQucGVlaygwKSkpIHsKICAgICAgICAgICAgIGNjID0gY29uc3VtZSgp
OwogICAgICAgICAgICAgaGV4Q2hhcnMuYXBwZW5kKGNjKTsKICAgICAgICAgICAgIGNvbnN1bWVk
SGV4RGlnaXRzKys7CkBAIC04MjQsMTcgKzgyNCwxNyBAQCBVQ2hhcjMyIENTU1Rva2VuaXplcjo6
Y29uc3VtZUVzY2FwZSgpCiAKIGJvb2wgQ1NTVG9rZW5pemVyOjpuZXh0VHdvQ2hhcnNBcmVWYWxp
ZEVzY2FwZSgpCiB7Ci0gICAgcmV0dXJuIHR3b0NoYXJzQXJlVmFsaWRFc2NhcGUobV9pbnB1dC5w
ZWVrV2l0aG91dFJlcGxhY2VtZW50KDApLCBtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQo
MSkpOworICAgIHJldHVybiB0d29DaGFyc0FyZVZhbGlkRXNjYXBlKG1faW5wdXQucGVlaygwKSwg
bV9pbnB1dC5wZWVrKDEpKTsKIH0KIAogLy8gaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1zeW50
YXgvI3N0YXJ0cy13aXRoLWEtbnVtYmVyCiBib29sIENTU1Rva2VuaXplcjo6bmV4dENoYXJzQXJl
TnVtYmVyKFVDaGFyIGZpcnN0KQogewotICAgIFVDaGFyIHNlY29uZCA9IG1faW5wdXQucGVla1dp
dGhvdXRSZXBsYWNlbWVudCgwKTsKKyAgICBVQ2hhciBzZWNvbmQgPSBtX2lucHV0LnBlZWsoMCk7
CiAgICAgaWYgKGlzQVNDSUlEaWdpdChmaXJzdCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IGlmIChmaXJzdCA9PSAnKycgfHwgZmlyc3QgPT0gJy0nKQotICAgICAgICByZXR1cm4gKChpc0FT
Q0lJRGlnaXQoc2Vjb25kKSkgfHwgKHNlY29uZCA9PSAnLicgJiYgaXNBU0NJSURpZ2l0KG1faW5w
dXQucGVla1dpdGhvdXRSZXBsYWNlbWVudCgxKSkpKTsKKyAgICAgICAgcmV0dXJuICgoaXNBU0NJ
SURpZ2l0KHNlY29uZCkpIHx8IChzZWNvbmQgPT0gJy4nICYmIGlzQVNDSUlEaWdpdChtX2lucHV0
LnBlZWsoMSkpKSk7CiAgICAgaWYgKGZpcnN0ID09Jy4nKQogICAgICAgICByZXR1cm4gKGlzQVND
SUlEaWdpdChzZWNvbmQpKTsKICAgICByZXR1cm4gZmFsc2U7CkBAIC04NTEsNyArODUxLDcgQEAg
Ym9vbCBDU1NUb2tlbml6ZXI6Om5leHRDaGFyc0FyZU51bWJlcigpCiAvLyBodHRwOi8vZGV2Lncz
Lm9yZy9jc3N3Zy9jc3Mtc3ludGF4LyN3b3VsZC1zdGFydC1hbi1pZGVudGlmaWVyCiBib29sIENT
U1Rva2VuaXplcjo6bmV4dENoYXJzQXJlSWRlbnRpZmllcihVQ2hhciBmaXJzdCkKIHsKLSAgICBV
Q2hhciBzZWNvbmQgPSBtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQoMCk7CisgICAgVUNo
YXIgc2Vjb25kID0gbV9pbnB1dC5wZWVrKDApOwogICAgIGlmIChpc05hbWVTdGFydENvZGVQb2lu
dChmaXJzdCkgfHwgdHdvQ2hhcnNBcmVWYWxpZEVzY2FwZShmaXJzdCwgc2Vjb25kKSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIv
Q1NTVG9rZW5pemVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Rva2VuaXplci5o
CmluZGV4IDI1YjAzMTVjNWQyZjJlN2NmYTBmNDBkMGVhMDQzYmNjMzJhYjdiNjAuLjk4ZjlkNDhk
ZGM5ZmMxMDM5YzYxMTg2MGFhYmMwMjFkMmJjZTA0YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9wYXJzZXIvQ1NTVG9rZW5pemVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3Bh
cnNlci9DU1NUb2tlbml6ZXIuaApAQCAtNDUsOCArNDUsOCBAQCBjbGFzcyBDU1NUb2tlbml6ZXIg
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENTU1Rva2VuaXplcik7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgQ1NTVG9rZW5pemVyKGNvbnN0
IFN0cmluZyYpOwotICAgIENTU1Rva2VuaXplcihjb25zdCBTdHJpbmcmLCBDU1NQYXJzZXJPYnNl
cnZlcldyYXBwZXImKTsgLy8gRm9yIHRoZSBpbnNwZWN0b3IKKyAgICBleHBsaWNpdCBDU1NUb2tl
bml6ZXIoU3RyaW5nKTsKKyAgICBDU1NUb2tlbml6ZXIoU3RyaW5nLCBDU1NQYXJzZXJPYnNlcnZl
cldyYXBwZXImKTsgLy8gRm9yIHRoZSBpbnNwZWN0b3IKIAogICAgIENTU1BhcnNlclRva2VuUmFu
Z2UgdG9rZW5SYW5nZSgpIGNvbnN0OwogICAgIHVuc2lnbmVkIHRva2VuQ291bnQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0u
aCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0uaApp
bmRleCA5NmU2ZTY5ZDAwYTM1NDU2NzY2MDcwZDYyYzc4YWVhY2MwMWI5NzBhLi45Yjg0YWU5YTg2
MzE0YTBkZDA4ZjFjZGMwNTdiNGRhZDE3YWMxNzNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvcGFyc2VyL0NTU1Rva2VuaXplcklucHV0U3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL3BhcnNlci9DU1NUb2tlbml6ZXJJbnB1dFN0cmVhbS5oCkBAIC00OCwxNSArNDgsMTIg
QEAgcHVibGljOgogICAgIHsKICAgICAgICAgaWYgKG1fb2Zmc2V0ID49IG1fc3RyaW5nTGVuZ3Ro
KQogICAgICAgICAgICAgcmV0dXJuICdcMCc7Ci0gICAgICAgIFVDaGFyIHJlc3VsdCA9ICgqbV9z
dHJpbmcpW21fb2Zmc2V0XTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdCA/IHJlc3VsdCA6IDB4RkZG
RDsKKyAgICAgICAgcmV0dXJuICgqbV9zdHJpbmcpW21fb2Zmc2V0XTsKICAgICB9CiAKICAgICAv
LyBHZXRzIHRoZSBjaGFyIGF0IGxvb2thaGVhZE9mZnNldCBmcm9tIHRoZSBjdXJyZW50IHN0cmVh
bSBwb3NpdGlvbi4gV2lsbAogICAgIC8vIHJldHVybiBOVUwgKGtFbmRPZkZpbGVNYXJrZXIpIGlm
IHRoZSBzdHJlYW0gcG9zaXRpb24gaXMgYXQgdGhlIGVuZC4KLSAgICAvLyBOT1RFOiBUaGlzIG1h
eSAqYWxzbyogcmV0dXJuIE5VTCBpZiB0aGVyZSdzIG9uZSBpbiB0aGUgaW5wdXQhIE5ldmVyCi0g
ICAgLy8gY29tcGFyZSB0aGUgcmV0dXJuIHZhbHVlIHRvICdcMCcuCi0gICAgVUNoYXIgcGVla1dp
dGhvdXRSZXBsYWNlbWVudCh1bnNpZ25lZCBsb29rYWhlYWRPZmZzZXQpIGNvbnN0CisgICAgVUNo
YXIgcGVlayh1bnNpZ25lZCBsb29rYWhlYWRPZmZzZXQpIGNvbnN0CiAgICAgewogICAgICAgICBp
ZiAoKG1fb2Zmc2V0ICsgbG9va2FoZWFkT2Zmc2V0KSA+PSBtX3N0cmluZ0xlbmd0aCkKICAgICAg
ICAgICAgIHJldHVybiAnXDAnOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggYzI2
MjRlMjk4N2Q4OTAzNTI5M2JjMDE4YmQ4MDBiYWEwZTIxYzkyMC4uYTM0NDVmM2RhYTFiZDg1NjFk
ODVhZDBlYjA4NjFiZTUwMTQ0ZGJkOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMjAtMDQtMDggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KKworICAgICAgICBxdWVyeVNlbGVjdG9yKCIjXHUwMDAwIikgc2hvdWxkIG1hdGNoIGFuIGVs
ZW1lbnQgd2l0aCBJRCBVK0ZGRkQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxMDExOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEltcG9ydCB0ZXN0IGNvdmVyYWdlIGZyb20gdXBzdHJlYW0gV1BULgorCisg
ICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS9ub2Rlcy9QYXJlbnROb2RlLXF1ZXJ5U2Vs
ZWN0b3ItZXNjYXBlcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9y
bS10ZXN0cy9kb20vbm9kZXMvUGFyZW50Tm9kZS1xdWVyeVNlbGVjdG9yLWVzY2FwZXMuaHRtbDog
QWRkZWQuCisKIDIwMjAtMDQtMDggIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4K
IAogICAgICAgICB0cmFuc2l0aW9uLXByb3BlcnR5IGlzIG5vdCBjb21wdXRlZCBjb3JyZWN0bHkg
d2hlbiB0cmFuc2l0aW9uLWR1cmF0aW9uIGlzIHNldCB0byAiaW5oZXJpdCIKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL25vZGVzL1Bh
cmVudE5vZGUtcXVlcnlTZWxlY3Rvci1lc2NhcGVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL25vZGVzL1BhcmVudE5vZGUtcXVl
cnlTZWxlY3Rvci1lc2NhcGVzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MjIzZjlkMjk5NGY1
NjQyYmMyZTMyZGY0OWMyNTBlOWVjYjU0M2E1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20vbm9kZXMvUGFyZW50Tm9kZS1x
dWVyeVNlbGVjdG9yLWVzY2FwZXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNzAgQEAKKworUEFT
UyAibm9uZXNjYXBlZCIgc2hvdWxkIG1hdGNoIHdpdGggIiNub25lc2NhcGVkIiAKK1BBU1MgIjBu
ZXh0SXNXaGl0ZVNwYWNlIiBzaG91bGQgbWF0Y2ggd2l0aCAiI1xcMzAgbmV4dElzV2hpdGVTcGFj
ZSIgCitQQVNTICIwbmV4dElzTm90SGV4TGV0dGVycyIgc2hvdWxkIG1hdGNoIHdpdGggIiNcXDMw
bmV4dElzTm90SGV4TGV0dGVycyIgCitQQVNTICIwY29ubmVjdEhleE1vcmVUaGFuNkhleCIgc2hv
dWxkIG1hdGNoIHdpdGggIiNcXDAwMDAzMGNvbm5lY3RIZXhNb3JlVGhhbjZIZXgiIAorUEFTUyAi
MHNwYWNlTW9yZVRoYW42SGV4IiBzaG91bGQgbWF0Y2ggd2l0aCAiI1xcMDAwMDMwIHNwYWNlTW9y
ZVRoYW42SGV4IiAKK1BBU1MgInplcm/vv70iIHNob3VsZCBtYXRjaCB3aXRoICIjemVyb1xcMCIg
CitQQVNTICJ6ZXJvXHUwMDAwIiBzaG91bGQgbmV2ZXIgbWF0Y2ggd2l0aCAiI3plcm9cXDAiIAor
UEFTUyAiemVyb++/vSIgc2hvdWxkIG1hdGNoIHdpdGggIiN6ZXJvXFwwMDAwMDAiIAorUEFTUyAi
emVyb1x1MDAwMCIgc2hvdWxkIG5ldmVyIG1hdGNoIHdpdGggIiN6ZXJvXFwwMDAwMDAiIAorUEFT
UyAi77+9c3Vycm9nYXRlRmlyc3QiIHNob3VsZCBtYXRjaCB3aXRoICIjXFxkODNkIHN1cnJvZ2F0
ZUZpcnN0IiAKK1BBU1MgIlx1ZDgzZHN1cnJvZ2F0ZUZpcnN0IiBzaG91bGQgbmV2ZXIgbWF0Y2gg
d2l0aCAiI1xcZDgzZCBzdXJyb2dhdGVGaXJzdCIgCitQQVNTICJzdXJyb2dhdGVTZWNvbmTvv70i
IHNob3VsZCBtYXRjaCB3aXRoICIjc3Vycm9nYXRlU2Vjb25kXFxkZDExIiAKK1BBU1MgInN1cnJv
Z2F0ZVNlY29uZFx1ZGQxMSIgc2hvdWxkIG5ldmVyIG1hdGNoIHdpdGggIiNzdXJyb2dhdGVTZWNv
bmRcXGRkMTEiIAorUEFTUyAic3Vycm9nYXRlUGFpcu+/ve+/vSIgc2hvdWxkIG1hdGNoIHdpdGgg
IiNzdXJyb2dhdGVQYWlyXFxkODNkXFxkZDExIiAKK1BBU1MgInN1cnJvZ2F0ZVBhaXLwn5SRIiBz
aG91bGQgbmV2ZXIgbWF0Y2ggd2l0aCAiI3N1cnJvZ2F0ZVBhaXJcXGQ4M2RcXGRkMTEiIAorUEFT
UyAib3V0T2ZSYW5nZe+/vSIgc2hvdWxkIG1hdGNoIHdpdGggIiNvdXRPZlJhbmdlXFwxMTAwMDAi
IAorUEFTUyAib3V0T2ZSYW5nZe+/vSIgc2hvdWxkIG1hdGNoIHdpdGggIiNvdXRPZlJhbmdlXFwx
MTAwMzAiIAorUEFTUyAib3V0T2ZSYW5nZTAiIHNob3VsZCBuZXZlciBtYXRjaCB3aXRoICIjb3V0
T2ZSYW5nZVxcMTEwMDMwIiAKK1BBU1MgIm91dE9mUmFuZ2Xvv70iIHNob3VsZCBtYXRjaCB3aXRo
ICIjb3V0T2ZSYW5nZVxcNTU1NTU1IiAKK1BBU1MgIm91dE9mUmFuZ2Xvv70iIHNob3VsZCBtYXRj
aCB3aXRoICIjb3V0T2ZSYW5nZVxcZmZmZmZmIiAKK1BBU1MgImVvZlxcIiBzaG91bGQgbmV2ZXIg
bWF0Y2ggd2l0aCAiI2VvZlxcIiAKK1BBU1MgIi5jb21tYSIgc2hvdWxkIG1hdGNoIHdpdGggIiNc
XC5jb21tYSIgCitQQVNTICItbWludXMiIHNob3VsZCBtYXRjaCB3aXRoICIjXFwtbWludXMiIAor
UEFTUyAiZyIgc2hvdWxkIG1hdGNoIHdpdGggIiNcXGciIAorUEFTUyAiYUJNUFJlZ3VsYXIiIHNo
b3VsZCBtYXRjaCB3aXRoICIjXFw2MSBCTVBSZWd1bGFyIiAKK1BBU1MgIvCflJFub25CTVAiIHNo
b3VsZCBtYXRjaCB3aXRoICIjXFwxZjUxMSBub25CTVAiIAorUEFTUyAiMDBjb250aW51ZUVzY2Fw
ZXMiIHNob3VsZCBtYXRjaCB3aXRoICIjXFwzMFxcMzAgY29udGludWVFc2NhcGVzIiAKK1BBU1Mg
IjAwY29udGludWVFc2NhcGVzIiBzaG91bGQgbWF0Y2ggd2l0aCAiI1xcMzAgXFwzMCBjb250aW51
ZUVzY2FwZXMiIAorUEFTUyAiY29udGludWVFc2NhcGVzMDAiIHNob3VsZCBtYXRjaCB3aXRoICIj
Y29udGludWVFc2NhcGVzXFwzMCBcXDMwICIgCitQQVNTICJjb250aW51ZUVzY2FwZXMwMCIgc2hv
dWxkIG1hdGNoIHdpdGggIiNjb250aW51ZUVzY2FwZXNcXDMwIFxcMzAiIAorUEFTUyAiY29udGlu
dWVFc2NhcGVzMDAiIHNob3VsZCBtYXRjaCB3aXRoICIjY29udGludWVFc2NhcGVzXFwzMFxcMzAg
IiAKK1BBU1MgImNvbnRpbnVlRXNjYXBlczAwIiBzaG91bGQgbWF0Y2ggd2l0aCAiI2NvbnRpbnVl
RXNjYXBlc1xcMzBcXDMwIiAKK1BBU1MgImhlbGxvIiBzaG91bGQgbWF0Y2ggd2l0aCAiI2hlbFxc
NkNvIiAKK1BBU1MgIiZCIiBzaG91bGQgbWF0Y2ggd2l0aCAiI1xcMjYgQiIgCitQQVNTICJoZWxs
byIgc2hvdWxkIG1hdGNoIHdpdGggIiNoZWxcXDZDIG8iIAorUEFTUyAic3BhY2VzIiBzaG91bGQg
bWF0Y2ggd2l0aCAiI3NwYWNcXDY1XHJcbnMiIAorUEFTUyAic3BhY2VzIiBzaG91bGQgbWF0Y2gg
d2l0aCAiI3NwXFw2MVx0Y1xcNjVcZnMiIAorUEFTUyAidGVzdO2emSIgc2hvdWxkIG1hdGNoIHdp
dGggIiN0ZXN0XFxENzk5IiAKK1BBU1MgIu6AgCIgc2hvdWxkIG1hdGNoIHdpdGggIiNcXEUwMDAi
IAorUEFTUyAidGVzdCIgc2hvdWxkIG1hdGNoIHdpdGggIiN0ZVxcc1xcdCIgCitQQVNTICJzcGFj
ZXMgaW5cdGlkZW50IiBzaG91bGQgbWF0Y2ggd2l0aCAiI3NwYWNlc1xcIGluXFxcdGlkZW50IiAK
K1BBU1MgIi4sOiEiIHNob3VsZCBtYXRjaCB3aXRoICIjXFwuXFwsXFw6XFwhIiAKK1BBU1MgIm51
bGzvv70iIHNob3VsZCBtYXRjaCB3aXRoICIjbnVsbFxcMCIgCitQQVNTICJudWxs77+9IiBzaG91
bGQgbWF0Y2ggd2l0aCAiI251bGxcXDAwMDAiIAorUEFTUyAibGFyZ2Xvv70iIHNob3VsZCBtYXRj
aCB3aXRoICIjbGFyZ2VcXDExMDAwMCIgCitQQVNTICJsYXJnZe+/vSIgc2hvdWxkIG1hdGNoIHdp
dGggIiNsYXJnZVxcMjM0NTZhIiAKK1BBU1MgInN1cnJvZ2F0Ze+/vSIgc2hvdWxkIG1hdGNoIHdp
dGggIiNzdXJyb2dhdGVcXEQ4MDAiIAorUEFTUyAic3Vycm9nYXRl77+9IiBzaG91bGQgbWF0Y2gg
d2l0aCAiI3N1cnJvZ2F0ZVxcMERCQUMiIAorUEFTUyAi77+9c3Vycm9nYXRlIiBzaG91bGQgbWF0
Y2ggd2l0aCAiI1xcMDBERkZGc3Vycm9nYXRlIiAKK1BBU1MgIvSPv78iIHNob3VsZCBtYXRjaCB3
aXRoICIjXFwxMGZGZkYiIAorUEFTUyAi9I+/vzAiIHNob3VsZCBtYXRjaCB3aXRoICIjXFwxMGZG
ZkYwIiAKK1BBU1MgIvSAgIAwMCIgc2hvdWxkIG1hdGNoIHdpdGggIiNcXDEwMDAwMDAwIiAKK1BB
U1MgImVvZu+/vSIgc2hvdWxkIG1hdGNoIHdpdGggIiNlb2ZcXCIgCitQQVNTICJzaW1wbGUtaWRl
bnQiIHNob3VsZCBtYXRjaCB3aXRoICIjc2ltcGxlLWlkZW50IiAKK1BBU1MgInRlc3RpbmcxMjMi
IHNob3VsZCBtYXRjaCB3aXRoICIjdGVzdGluZzEyMyIgCitQQVNTICJfdW5kZXJzY29yZSIgc2hv
dWxkIG1hdGNoIHdpdGggIiNfdW5kZXJzY29yZSIgCitQQVNTICItdGV4dCIgc2hvdWxkIG1hdGNo
IHdpdGggIiMtdGV4dCIgCitQQVNTICItbSIgc2hvdWxkIG1hdGNoIHdpdGggIiMtXFw2ZCIgCitQ
QVNTICItLWFiYyIgc2hvdWxkIG1hdGNoIHdpdGggIiMtLWFiYyIgCitQQVNTICItLSIgc2hvdWxk
IG1hdGNoIHdpdGggIiMtLSIgCitQQVNTICItLTExIiBzaG91bGQgbWF0Y2ggd2l0aCAiIy0tMTEi
IAorUEFTUyAiLS0tIiBzaG91bGQgbWF0Y2ggd2l0aCAiIy0tLSIgCitQQVNTICLigIMiIHNob3Vs
ZCBtYXRjaCB3aXRoICIj4oCDIiAKK1BBU1MgIsKgIiBzaG91bGQgbWF0Y2ggd2l0aCAiI8KgIiAK
K1BBU1MgIuGItCIgc2hvdWxkIG1hdGNoIHdpdGggIiPhiLQiIAorUEFTUyAi8JKNhSIgc2hvdWxk
IG1hdGNoIHdpdGggIiPwko2FIiAKK1BBU1MgIu+/vSIgc2hvdWxkIG1hdGNoIHdpdGggIiNcdTAw
MDAiIAorUEFTUyAiYWLvv71jIiBzaG91bGQgbWF0Y2ggd2l0aCAiI2FiXHUwMDAwYyIgCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9t
L25vZGVzL1BhcmVudE5vZGUtcXVlcnlTZWxlY3Rvci1lc2NhcGVzLmh0bWwgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS9ub2Rlcy9QYXJlbnROb2RlLXF1
ZXJ5U2VsZWN0b3ItZXNjYXBlcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY1YTc1ZTVjMDMwNjc3ZmUzYmY2
M2U0NDQzYWMyYmZlY2EzNDhjNDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS9ub2Rlcy9QYXJlbnROb2RlLXF1ZXJ5U2Vs
ZWN0b3ItZXNjYXBlcy5odG1sCkBAIC0wLDAgKzEsMTIzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxt
ZXRhIGNoYXJzZXQ9dXRmLTg+Cis8dGl0bGU+cXVlcnlTZWxlY3RvcigpIHdpdGggQ1NTIGVzY2Fw
ZXM8L3RpdGxlPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL2RvbS5zcGVjLndoYXR3
Zy5vcmcvI2RvbS1wYXJlbnRub2RlLXF1ZXJ5c2VsZWN0b3IiPgorPGxpbmsgcmVsPSJoZWxwIiBo
cmVmPSJodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXN5bnRheC8jY29uc3VtZS1lc2NhcGVk
LWNvZGUtcG9pbnQiPgorPGxpbmsgcmVsPSJhdXRob3IiIHRpdGxlPSJEb21lbmljIERlbmljb2xh
IiBocmVmPSJtYWlsdG86ZEBkb21lbmljLm1lIj4KKzxsaW5rIHJlbD0iYXV0aG9yIiB0aXRsZT0i
YmVsbGJpbmQiIGhyZWY9Im1haWx0bzpiZWxsYmluZEBnbWFpbC5jb20iPgorPHNjcmlwdCBzcmM9
Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNv
dXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0PgorInVzZSBz
dHJpY3QiOworCitmdW5jdGlvbiB0ZXN0TWF0Y2hlZChpZCwgc2VsZWN0b3IpIHsKKyAgdGVzdCgo
KSA9PiB7CisgICAgY29uc3QgY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2
Iik7CisgICAgY29uc3QgY2hpbGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7Cisg
ICAgY2hpbGQuaWQgPSBpZDsKKworICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChjaGlsZCk7CisK
KyAgICBhc3NlcnRfZXF1YWxzKGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKSwgY2hp
bGQpOworICB9LCBgJHtKU09OLnN0cmluZ2lmeShpZCl9IHNob3VsZCBtYXRjaCB3aXRoICR7SlNP
Ti5zdHJpbmdpZnkoc2VsZWN0b3IpfWApOworfQorCitmdW5jdGlvbiB0ZXN0TmV2ZXJNYXRjaGVk
KGlkLCBzZWxlY3RvcikgeworICB0ZXN0KCgpID0+IHsKKyAgICBjb25zdCBjb250YWluZXIgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICBjb25zdCBjaGlsZCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICBjaGlsZC5pZCA9IGlkOworCisgICAgY29udGFp
bmVyLmFwcGVuZENoaWxkKGNoaWxkKTsKKworICAgIGFzc2VydF9lcXVhbHMoY29udGFpbmVyLnF1
ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpLCBudWxsKTsKKyAgfSwgYCR7SlNPTi5zdHJpbmdpZnkoaWQp
fSBzaG91bGQgbmV2ZXIgbWF0Y2ggd2l0aCAke0pTT04uc3RyaW5naWZ5KHNlbGVjdG9yKX1gKTsK
K30KKworLy8gNC4zLjcgZnJvbSBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXN5bnRheC8j
Y29uc3VtZS1lc2NhcGVkLWNvZGUtcG9pbnQKK3Rlc3RNYXRjaGVkKCJub25lc2NhcGVkIiwgIiNu
b25lc2NhcGVkIik7CisKKy8vIC0gZXNjYXBlIGhleCBkaWdpdAordGVzdE1hdGNoZWQoIjBuZXh0
SXNXaGl0ZVNwYWNlIiwgIiNcXDMwIG5leHRJc1doaXRlU3BhY2UiKTsKK3Rlc3RNYXRjaGVkKCIw
bmV4dElzTm90SGV4TGV0dGVycyIsICIjXFwzMG5leHRJc05vdEhleExldHRlcnMiKTsKK3Rlc3RN
YXRjaGVkKCIwY29ubmVjdEhleE1vcmVUaGFuNkhleCIsICIjXFwwMDAwMzBjb25uZWN0SGV4TW9y
ZVRoYW42SGV4Iik7Cit0ZXN0TWF0Y2hlZCgiMHNwYWNlTW9yZVRoYW42SGV4IiwgIiNcXDAwMDAz
MCBzcGFjZU1vcmVUaGFuNkhleCIpOworCisvLyAtIGhleCBkaWdpdCBzcGVjaWFsIHJlcGxhY2Vt
ZW50CisvLyAxLiB6ZXJvIHBvaW50cwordGVzdE1hdGNoZWQoInplcm9cdXtmZmZkfSIsICIjemVy
b1xcMCIpOwordGVzdE5ldmVyTWF0Y2hlZCgiemVyb1x1ezB9IiwgIiN6ZXJvXFwwIik7Cit0ZXN0
TWF0Y2hlZCgiemVyb1x1e2ZmZmR9IiwgIiN6ZXJvXFwwMDAwMDAiKTsKK3Rlc3ROZXZlck1hdGNo
ZWQoInplcm9cdXswfSIsICIjemVyb1xcMDAwMDAwIik7CisvLyAyLiBzdXJyb2dhdGUgcG9pbnRz
Cit0ZXN0TWF0Y2hlZCgiXHV7ZmZmZH1zdXJyb2dhdGVGaXJzdCIsICIjXFxkODNkIHN1cnJvZ2F0
ZUZpcnN0Iik7Cit0ZXN0TmV2ZXJNYXRjaGVkKCJcdWQ4M2RzdXJyb2dhdGVGaXJzdCIsICIjXFxk
ODNkIHN1cnJvZ2F0ZUZpcnN0Iik7Cit0ZXN0TWF0Y2hlZCgic3Vycm9nYXRlU2Vjb25kXHV7ZmZm
ZH0iLCAiI3N1cnJvZ2F0ZVNlY29uZFxcZGQxMSIpOwordGVzdE5ldmVyTWF0Y2hlZCgic3Vycm9n
YXRlU2Vjb25kXHVkZDExIiwgIiNzdXJyb2dhdGVTZWNvbmRcXGRkMTEiKTsKK3Rlc3RNYXRjaGVk
KCJzdXJyb2dhdGVQYWlyXHV7ZmZmZH1cdXtmZmZkfSIsICIjc3Vycm9nYXRlUGFpclxcZDgzZFxc
ZGQxMSIpOwordGVzdE5ldmVyTWF0Y2hlZCgic3Vycm9nYXRlUGFpclx1ezFmNTExfSIsICIjc3Vy
cm9nYXRlUGFpclxcZDgzZFxcZGQxMSIpOworLy8gMy4gb3V0IG9mIHJhbmdlIHBvaW50cwordGVz
dE1hdGNoZWQoIm91dE9mUmFuZ2VcdXtmZmZkfSIsICIjb3V0T2ZSYW5nZVxcMTEwMDAwIik7Cit0
ZXN0TWF0Y2hlZCgib3V0T2ZSYW5nZVx1e2ZmZmR9IiwgIiNvdXRPZlJhbmdlXFwxMTAwMzAiKTsK
K3Rlc3ROZXZlck1hdGNoZWQoIm91dE9mUmFuZ2VcdXszMH0iLCAiI291dE9mUmFuZ2VcXDExMDAz
MCIpOwordGVzdE1hdGNoZWQoIm91dE9mUmFuZ2VcdXtmZmZkfSIsICIjb3V0T2ZSYW5nZVxcNTU1
NTU1Iik7Cit0ZXN0TWF0Y2hlZCgib3V0T2ZSYW5nZVx1e2ZmZmR9IiwgIiNvdXRPZlJhbmdlXFxm
ZmZmZmYiKTsKKworLy8gLSBlc2NhcGUgRU9GCit0ZXN0TmV2ZXJNYXRjaGVkKCJlb2ZcXCIsICIj
ZW9mXFwiKTsKKworLy8gLSBlc2NhcGUgYW55dGhvbmcgZWxzZQordGVzdE1hdGNoZWQoIi5jb21t
YSIsICIjXFwuY29tbWEiKTsKK3Rlc3RNYXRjaGVkKCItbWludXMiLCAiI1xcLW1pbnVzIik7Cit0
ZXN0TWF0Y2hlZCgiZyIsICIjXFxnIik7CisKKy8vIG5vbiBlZGdlIGNhc2VzCit0ZXN0TWF0Y2hl
ZCgiYUJNUFJlZ3VsYXIiLCAiI1xcNjEgQk1QUmVndWxhciIpOwordGVzdE1hdGNoZWQoIlx1ezFm
NTExfW5vbkJNUCIsICIjXFwxZjUxMSBub25CTVAiKTsKK3Rlc3RNYXRjaGVkKCIwMGNvbnRpbnVl
RXNjYXBlcyIsICIjXFwzMFxcMzAgY29udGludWVFc2NhcGVzIik7Cit0ZXN0TWF0Y2hlZCgiMDBj
b250aW51ZUVzY2FwZXMiLCAiI1xcMzAgXFwzMCBjb250aW51ZUVzY2FwZXMiKTsKK3Rlc3RNYXRj
aGVkKCJjb250aW51ZUVzY2FwZXMwMCIsICIjY29udGludWVFc2NhcGVzXFwzMCBcXDMwICIpOwor
dGVzdE1hdGNoZWQoImNvbnRpbnVlRXNjYXBlczAwIiwgIiNjb250aW51ZUVzY2FwZXNcXDMwIFxc
MzAiKTsKK3Rlc3RNYXRjaGVkKCJjb250aW51ZUVzY2FwZXMwMCIsICIjY29udGludWVFc2NhcGVz
XFwzMFxcMzAgIik7Cit0ZXN0TWF0Y2hlZCgiY29udGludWVFc2NhcGVzMDAiLCAiI2NvbnRpbnVl
RXNjYXBlc1xcMzBcXDMwIik7CisKKy8vIGlkZW50IHRlc3RzIGNhc2UgZnJvbSBDU1MgdGVzdHMg
b2YgY2hyb21pdW0gc291cmNlOiBodHRwczovL2dvby5nbC8zQ3hkb3YKK3Rlc3RNYXRjaGVkKCJo
ZWxsbyIsICIjaGVsXFw2Q28iKTsKK3Rlc3RNYXRjaGVkKCImQiIsICIjXFwyNiBCIik7Cit0ZXN0
TWF0Y2hlZCgiaGVsbG8iLCAiI2hlbFxcNkMgbyIpOwordGVzdE1hdGNoZWQoInNwYWNlcyIsICIj
c3BhY1xcNjVcclxucyIpOwordGVzdE1hdGNoZWQoInNwYWNlcyIsICIjc3BcXDYxXHRjXFw2NVxm
cyIpOwordGVzdE1hdGNoZWQoInRlc3RcdXtENzk5fSIsICIjdGVzdFxcRDc5OSIpOwordGVzdE1h
dGNoZWQoIlx1e0UwMDB9IiwgIiNcXEUwMDAiKTsKK3Rlc3RNYXRjaGVkKCJ0ZXN0IiwgIiN0ZVxc
c1xcdCIpOwordGVzdE1hdGNoZWQoInNwYWNlcyBpblx0aWRlbnQiLCAiI3NwYWNlc1xcIGluXFxc
dGlkZW50Iik7Cit0ZXN0TWF0Y2hlZCgiLiw6ISIsICIjXFwuXFwsXFw6XFwhIik7Cit0ZXN0TWF0
Y2hlZCgibnVsbFx1e2ZmZmR9IiwgIiNudWxsXFwwIik7Cit0ZXN0TWF0Y2hlZCgibnVsbFx1e2Zm
ZmR9IiwgIiNudWxsXFwwMDAwIik7Cit0ZXN0TWF0Y2hlZCgibGFyZ2VcdXtmZmZkfSIsICIjbGFy
Z2VcXDExMDAwMCIpOwordGVzdE1hdGNoZWQoImxhcmdlXHV7ZmZmZH0iLCAiI2xhcmdlXFwyMzQ1
NmEiKTsKK3Rlc3RNYXRjaGVkKCJzdXJyb2dhdGVcdXtmZmZkfSIsICIjc3Vycm9nYXRlXFxEODAw
Iik7Cit0ZXN0TWF0Y2hlZCgic3Vycm9nYXRlXHV7ZmZmZH0iLCAiI3N1cnJvZ2F0ZVxcMERCQUMi
KTsKK3Rlc3RNYXRjaGVkKCJcdXtmZmZkfXN1cnJvZ2F0ZSIsICIjXFwwMERGRkZzdXJyb2dhdGUi
KTsKK3Rlc3RNYXRjaGVkKCJcdXsxMGZmZmZ9IiwgIiNcXDEwZkZmRiIpOwordGVzdE1hdGNoZWQo
Ilx1ezEwZmZmZn0wIiwgIiNcXDEwZkZmRjAiKTsKK3Rlc3RNYXRjaGVkKCJcdXsxMDAwMDB9MDAi
LCAiI1xcMTAwMDAwMDAiKTsKK3Rlc3RNYXRjaGVkKCJlb2ZcdXtmZmZkfSIsICIjZW9mXFwiKTsK
KwordGVzdE1hdGNoZWQoInNpbXBsZS1pZGVudCIsICIjc2ltcGxlLWlkZW50Iik7Cit0ZXN0TWF0
Y2hlZCgidGVzdGluZzEyMyIsICIjdGVzdGluZzEyMyIpOwordGVzdE1hdGNoZWQoIl91bmRlcnNj
b3JlIiwgIiNfdW5kZXJzY29yZSIpOwordGVzdE1hdGNoZWQoIi10ZXh0IiwgIiMtdGV4dCIpOwor
dGVzdE1hdGNoZWQoIi1tIiwgIiMtXFw2ZCIpOwordGVzdE1hdGNoZWQoIi0tYWJjIiwgIiMtLWFi
YyIpOwordGVzdE1hdGNoZWQoIi0tIiwgIiMtLSIpOwordGVzdE1hdGNoZWQoIi0tMTEiLCAiIy0t
MTEiKTsKK3Rlc3RNYXRjaGVkKCItLS0iLCAiIy0tLSIpOwordGVzdE1hdGNoZWQoIlx1ezIwMDN9
IiwgIiNcdXsyMDAzfSIpOwordGVzdE1hdGNoZWQoIlx1e0EwfSIsICIjXHV7QTB9Iik7Cit0ZXN0
TWF0Y2hlZCgiXHV7MTIzNH0iLCAiI1x1ezEyMzR9Iik7Cit0ZXN0TWF0Y2hlZCgiXHV7MTIzNDV9
IiwgIiNcdXsxMjM0NX0iKTsKK3Rlc3RNYXRjaGVkKCJcdXtmZmZkfSIsICIjXHV7MH0iKTsKK3Rl
c3RNYXRjaGVkKCJhYlx1e2ZmZmR9YyIsICIjYWJcdXswfWMiKTsKKzwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395867</attachid>
            <date>2020-04-08 14:09:51 -0700</date>
            <delta_ts>2020-04-08 16:15:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210119-20200408140950.patch</filename>
            <type>text/plain</type>
            <size>40687</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5NzQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGFmM2E5YThhZjVjNDQyYzY0YjI2YzYw
NmQzOWRhN2FkN2YwYjk3MjcuLmRhMGJiMWZhNzRlMzZiOTkzZjVkMjc1N2NhM2M0ODUwYWM4OGMw
MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAtMDQtMDggIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBxdWVyeVNlbGVjdG9yKCIjXHUwMDAwIikgc2hvdWxkIG1h
dGNoIGFuIGVsZW1lbnQgd2l0aCBJRCBVK0ZGRkQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDExOQorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmlu
IEFkbGVyLgorCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5jcHA6CisgICAgICAgIChX
VEY6OlN0cmluZ0ltcGw6OnJlcGxhY2UpOgorICAgICAgICBTbGlnaHRseSBvcHRpbWl6ZSB0aGUg
MTYtYml0IGNvZGUgcGF0aCBvZiBTdHJpbmdJbXBsOjpyZXBsYWNlKCkuIFNpbmNlIHdlIGtub3cK
KyAgICAgICAgdGhlcmUgaXMgbm8gY2hhcmFjdGVyIG1hdGNoIGZyb20gaW5kZXhlcyAwIHRvIGks
IHdlIGNhbiBzaW1wbHkgdXNlIG1lbWNweSBmb3IKKyAgICAgICAgdGhpcyByYW5nZS4KKwogMjAy
MC0wNC0wOCAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZWFycmFuZ2UgYW5kIHNpbXBsaWZ5IHNvbWUgSlNDIGZlYXR1cmUgZmxhZ3MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCAwOTRhZjdiNmFhYzhjZmRjNzYzMTZlNTI0OWY0YjExNDU1Mzg2YWYyLi5iMGExZGNiZmE3
NGZiMWQ0ZWE5N2IwMzc5OTM0MDNmNWJmZDQ4OWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUg
QEAKKzIwMjAtMDQtMDggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAg
ICBxdWVyeVNlbGVjdG9yKCIjXHUwMDAwIikgc2hvdWxkIG1hdGNoIGFuIGVsZW1lbnQgd2l0aCBJ
RCBVK0ZGRkQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxMDExOQorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIEFz
IHBlciB0aGUgc3BlY2lmaWNhdGlvbiBbMV1bMl0sIHdlIHNob3VsZCBwcmVwcm9jZXNzIHRoZSBp
bnB1dCBzdHJpbmcgYmVmb3JlIHBlcmZvcm1pbmcKKyAgICAgICAgQ1NTIHRva2VuaXphdGlvbi4g
VGhlIHByZXByb2Nlc3Npbmcgc3RlcCByZXBsYWNlcyBjZXJ0YWluIGNoYXJhY3RlcnMgaW4gdGhl
IGlucHV0IHN0cmluZy4KKworICAgICAgICBIb3dldmVyLCBvdXIgY29kZSBkaWQgbm90IGhhdmUg
dGhpcyBwcmVwcm9jZXNzaW5nIHN0ZXAgYW5kIGluc3RlYWQgd2FzIHRyeWluZyB0byBkZWFsCisg
ICAgICAgIHdpdGggdGhvc2UgY2hhcmFjdGVycyBkdXJpbmcgdG9rZW5pemF0aW9uLiBUaGlzIGlz
IGhvd2V2ZXIgbm90IHdvcmtpbmcgYXMgZXhwZWN0ZWQgZm9yCisgICAgICAgIHRoZSAnXDAnIGNo
YXJhY3RlciAod2hpY2ggaXMgc3VwcG9zZWQgdG8gYmUgcmVwbGFjZWQgd2l0aCBVK0ZGRkQgUkVQ
TEFDRU1FTlQgQ0hBUkFDVEVSKQorICAgICAgICBiZWNhdXNlIG91ciBjb2RlIGRlYWxzIHdpdGgg
U3RyaW5nVmlld3Mgb2YgdGhlIGlucHV0IFN0cmluZyBhbmQganVzdCBjb252ZXJ0cyBwYXJ0IG9m
CisgICAgICAgIHRoZSBpbnB1dCBzdHJlYW0gdG8gU3RyaW5ncyAvIEF0b21TdHJpbmdzLgorCisg
ICAgICAgIFRvIGFkZHJlc3MgdGhlIGlzc3VlLCB0aGlzIHBhdGNoIGFkZHMgYSBwcmVwcm9jZXNz
aW5nIHN0ZXAgdGhhdCByZXBsYWNlcyB0aGUgJ1wwJworICAgICAgICBjaGFyYWN0ZXIgd2l0aCB0
aGUgVStGRkZEIFJFUExBQ0VNRU5UIENIQVJBQ1RFUikuIEkgb3B0ZWQgbm90IHRvIHJlcGxhY2Ug
J1xyJyBvciAnXGYnCisgICAgICAgIGNoYXJhY3RlcnMgc2luY2Ugb3VyIHRva2VuaXplciBzZWVt
cyB0byBiZSBkZWFsaW5nIGZpbmUgd2l0aCB0aG9zZS4KKworICAgICAgICBbMV0gaHR0cHM6Ly9k
cmFmdHMuY3Nzd2cub3JnL2Nzcy1zeW50YXgvI2lucHV0LXByZXByb2Nlc3NpbmcKKyAgICAgICAg
WzJdIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3Mtc3ludGF4LyNwYXJzZXItZW50cnktcG9p
bnRzCisKKyAgICAgICAgVGVzdDogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20v
bm9kZXMvUGFyZW50Tm9kZS1xdWVyeVNlbGVjdG9yLWVzY2FwZXMuaHRtbAorCisgICAgICAgICog
Y3NzL3BhcnNlci9DU1NUb2tlbml6ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJlcHJvY2Vz
c1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6OkNTU1Rva2VuaXplcik6
CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6Omxlc3NUaGFuKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1Rva2VuaXplcjo6aHlwaGVuTWludXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
VG9rZW5pemVyOjpoYXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6cmV2ZXJz
ZVNvbGlkdXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpsZXR0ZXJVKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6Y29uc3VtZU51bWJlcik6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NUb2tlbml6ZXI6OmNvbnN1bWVJZGVudExpa2VUb2tlbik6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NUb2tlbml6ZXI6OmNvbnN1bWVTdHJpbmdUb2tlblVudGlsKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6Y29uc3VtZVVuaWNvZGVSYW5nZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NUb2tlbml6ZXI6OmNvbnN1bWVVcmxUb2tlbik6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NUb2tlbml6ZXI6OmNvbnN1bWVCYWRVcmxSZW1uYW50cyk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NUb2tlbml6ZXI6OmNvbnN1bWVTaW5nbGVXaGl0ZXNwYWNlSWZOZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6Y29uc3VtZUlmTmV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NUb2tlbml6ZXI6OmNvbnN1bWVOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2Vu
aXplcjo6Y29uc3VtZUVzY2FwZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6Om5l
eHRUd29DaGFyc0FyZVZhbGlkRXNjYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXpl
cjo6bmV4dENoYXJzQXJlTnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6
bmV4dENoYXJzQXJlSWRlbnRpZmllcik6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NUb2tlbml6
ZXIuaDoKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1Rva2VuaXplcklucHV0U3RyZWFtLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXJJbnB1dFN0cmVhbTo6bmV4dElucHV0Q2hhciBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXJJbnB1dFN0cmVhbTo6cGVlayBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXJJbnB1dFN0cmVhbTo6cGVla1dp
dGhvdXRSZXBsYWNlbWVudCBjb25zdCk6IERlbGV0ZWQuCisKIDIwMjAtMDQtMDggIEtlbm5ldGgg
UnVzc2VsbCAgPGtickBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViQ29udGVudCBwcm9jZXNz
IGNyYXNoZXMgaW4gY29tLmFwcGxlLldlYkNvcmU6IHJ4OjpJT1N1cmZhY2VTdXJmYWNlQ0dMOjpy
ZWxlYXNlVGV4SW1hZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1w
bC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCmluZGV4IDg4NDU5ODYz
NjJiMWNhY2ExNTczMThjYmMxNWFhYzdjOWE3MjA3NDAuLmQ1ZmI1NjE0MjAwZDQzNzBmYzlkY2M4
NTI5MmVjZmFkNmI5OGYwZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5n
SW1wbC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcApAQCAtMTMw
MiwxMSArMTMwMiwxMiBAQCBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVwbGFjZShVQ2hh
ciB0YXJnZXQsIFVDaGFyIHJlcGxhY2VtZW50KQogICAgIFVDaGFyKiBkYXRhOwogICAgIGF1dG8g
bmV3SW1wbCA9IGNyZWF0ZVVuaW5pdGlhbGl6ZWRJbnRlcm5hbE5vbkVtcHR5KG1fbGVuZ3RoLCBk
YXRhKTsKIAotICAgIGZvciAoaSA9IDA7IGkgIT0gbV9sZW5ndGg7ICsraSkgewotICAgICAgICBV
Q2hhciBjaGFyYWN0ZXIgPSBtX2RhdGExNltpXTsKKyAgICBtZW1jcHkoZGF0YSwgbV9kYXRhMTYs
IGkgKiBzaXplb2YoVUNoYXIpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGogPSBpOyBqICE9IG1fbGVu
Z3RoOyArK2opIHsKKyAgICAgICAgVUNoYXIgY2hhcmFjdGVyID0gbV9kYXRhMTZbal07CiAgICAg
ICAgIGlmIChjaGFyYWN0ZXIgPT0gdGFyZ2V0KQogICAgICAgICAgICAgY2hhcmFjdGVyID0gcmVw
bGFjZW1lbnQ7Ci0gICAgICAgIGRhdGFbaV0gPSBjaGFyYWN0ZXI7CisgICAgICAgIGRhdGFbal0g
PSBjaGFyYWN0ZXI7CiAgICAgfQogICAgIHJldHVybiBuZXdJbXBsOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0N1c3RvbVByb3BlcnR5VmFsdWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0N1c3RvbVByb3BlcnR5VmFsdWUuY3BwCmluZGV4IDY1Y2Y0YzViY2JmZGJh
Y2YwMDk5MDJmNzhhYTQxZDIxYTkyODkzMjkuLmU3MzY3Nzg1NDg4NjU5YmEwYjU3MDVhNDUyMWMw
OTE0MmFlMDRjNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXN0b21Qcm9w
ZXJ0eVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3VzdG9tUHJvcGVydHlW
YWx1ZS5jcHAKQEAgLTc3LDEzICs3NywxMyBAQCBWZWN0b3I8Q1NTUGFyc2VyVG9rZW4+IENTU0N1
c3RvbVByb3BlcnR5VmFsdWU6OnRva2VucygpIGNvbnN0CiAgICAgfSwgWyZdKGNvbnN0IFJlZjxD
U1NWYXJpYWJsZURhdGE+JiB2YWx1ZSkgewogICAgICAgICByZXN1bHQuYXBwZW5kVmVjdG9yKHZh
bHVlLT50b2tlbnMoKSk7CiAgICAgfSwgWyZdKGNvbnN0IExlbmd0aCYpIHsKLSAgICAgICAgQ1NT
VG9rZW5pemVyIHRva2VuaXplcihjc3NUZXh0KCkpOworICAgICAgICBhdXRvIHRva2VuaXplciA9
IG1ha2VDU1NUb2tlbml6ZXIoY3NzVGV4dCgpKTsKIAogICAgICAgICBhdXRvIHRva2VuaXplclJh
bmdlID0gdG9rZW5pemVyLnRva2VuUmFuZ2UoKTsKICAgICAgICAgd2hpbGUgKCF0b2tlbml6ZXJS
YW5nZS5hdEVuZCgpKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh0b2tlbml6ZXJSYW5nZS5j
b25zdW1lKCkpOwogICAgIH0sIFsmXShjb25zdCBSZWY8U3R5bGVJbWFnZT4mKSB7Ci0gICAgICAg
IENTU1Rva2VuaXplciB0b2tlbml6ZXIoY3NzVGV4dCgpKTsKKyAgICAgICAgYXV0byB0b2tlbml6
ZXIgPSBtYWtlQ1NTVG9rZW5pemVyKGNzc1RleHQoKSk7CiAKICAgICAgICAgYXV0byB0b2tlbml6
ZXJSYW5nZSA9IHRva2VuaXplci50b2tlblJhbmdlKCk7CiAgICAgICAgIHdoaWxlICghdG9rZW5p
emVyUmFuZ2UuYXRFbmQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NS
ZWdpc3RlckN1c3RvbVByb3BlcnR5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NSZWdp
c3RlckN1c3RvbVByb3BlcnR5LmNwcAppbmRleCAyNGEyNzczZDIwNDM0ZDM2Mzk0MmY4NjU5ZGM5
OWUzOTg1ODIyMTMzLi5kY2FlNjQ1YjQ1ZDVjZTIxZTczYzc5ZDFjY2IwMTIwYTgxMTUyNWNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVy
dHkuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IERPTUNTU1JlZ2lzdGVy
Q3VzdG9tUHJvcGVydHk6OnJlZ2lzdGVyUHJvcGVydHkoRG9jdW1lbnQmIGRvY3VtCiAKICAgICBS
ZWZQdHI8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4gaW5pdGlhbFZhbHVlOwogICAgIGlmICghZGVz
Y3JpcHRvci5pbml0aWFsVmFsdWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIENTU1Rva2VuaXplciB0
b2tlbml6ZXIoZGVzY3JpcHRvci5pbml0aWFsVmFsdWUpOworICAgICAgICBhdXRvIHRva2VuaXpl
ciA9IG1ha2VDU1NUb2tlbml6ZXIoZGVzY3JpcHRvci5pbml0aWFsVmFsdWUpOwogICAgICAgICBT
dHlsZTo6UmVzb2x2ZXIgc3R5bGVSZXNvbHZlcihkb2N1bWVudCk7CiAKICAgICAgICAgLy8gV2Ug
bmVlZCB0byBpbml0aWFsaXplIHRoaXMgc28gdGhhdCB3ZSBjYW4gc3VjY2Vzc2Z1bGx5IHBhcnNl
IGNvbXB1dGF0aW9uYWxseSBkZXBlbmRlbnQgdmFsdWVzIChsaWtlIGVtIHVuaXRzKS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5jcHAKaW5kZXggNGQxY2RmYWFmNDY4NzkwMjc4MWY5
NWI3NThiNDFkMWE5ZGU4Mzg4ZS4uZmMzMGMxMGViOWJjOWJjMzVmMTY2MzcyNTA0OTBmNjUxYTRj
YmQ4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5jcHAKQEAgLTkwNiw3ICs5
MDYsNyBAQCBib29sIE11dGFibGVTdHlsZVByb3BlcnRpZXM6OnNldEN1c3RvbVByb3BlcnR5KGNv
bnN0IERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgUwogICAgIGlmIChyZWdpc3RlcmVkKQogICAg
ICAgICBzeW50YXggPSByZWdpc3RlcmVkLT5zeW50YXg7CiAKLSAgICBDU1NUb2tlbml6ZXIgdG9r
ZW5pemVyKHZhbHVlKTsKKyAgICBhdXRvIHRva2VuaXplciA9IG1ha2VDU1NUb2tlbml6ZXIodmFs
dWUpOwogICAgIGlmICghQ1NTUHJvcGVydHlQYXJzZXI6OmNhblBhcnNlVHlwZWRDdXN0b21Qcm9w
ZXJ0eVZhbHVlKHN5bnRheCwgdG9rZW5pemVyLnRva2VuUmFuZ2UoKSwgcGFyc2VyQ29udGV4dCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L3BhcnNlci9DU1NQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJz
ZXIuY3BwCmluZGV4IDVkMTBhMjJmYWZlMmVhOWExNWU2ZGVkOGU1NWIwODhhYjMxOWJkMjguLmEy
Zjk5MWMyMDc4MmYyZDIzN2MwNjlkM2Y2NGZhZWYzZjA2NzJjNjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvcGFyc2VyL0NTU1BhcnNlci5jcHAKQEAgLTE1NSw4ICsxNTUsNyBAQCBSZWZQdHI8Q1NTVmFs
dWU+IENTU1BhcnNlcjo6cGFyc2VTaW5nbGVWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQs
IGNvbnN0IFN0cgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoUmVmUHRyPENTU1Zh
bHVlPiB2YWx1ZSA9IENTU1BhcnNlckZhc3RQYXRoczo6bWF5YmVQYXJzZVZhbHVlKHByb3BlcnR5
SUQsIHN0cmluZywgY29udGV4dC5tb2RlKSkKICAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgIENT
U1Rva2VuaXplciB0b2tlbml6ZXIoc3RyaW5nKTsKLSAgICByZXR1cm4gQ1NTUHJvcGVydHlQYXJz
ZXI6OnBhcnNlU2luZ2xlVmFsdWUocHJvcGVydHlJRCwgdG9rZW5pemVyLnRva2VuUmFuZ2UoKSwg
Y29udGV4dCk7CisgICAgcmV0dXJuIENTU1Byb3BlcnR5UGFyc2VyOjpwYXJzZVNpbmdsZVZhbHVl
KHByb3BlcnR5SUQsIG1ha2VDU1NUb2tlbml6ZXIoc3RyaW5nKS50b2tlblJhbmdlKCksIGNvbnRl
eHQpOwogfQogCiBDU1NQYXJzZXI6OlBhcnNlUmVzdWx0IENTU1BhcnNlcjo6cGFyc2VWYWx1ZShN
dXRhYmxlU3R5bGVQcm9wZXJ0aWVzJiBkZWNsYXJhdGlvbiwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0
eUlELCBjb25zdCBTdHJpbmcmIHN0cmluZywgYm9vbCBpbXBvcnRhbnQsIGNvbnN0IENTU1BhcnNl
ckNvbnRleHQmIGNvbnRleHQpCkBAIC0xODIsNyArMTgxLDcgQEAgQ1NTUGFyc2VyOjpQYXJzZVJl
c3VsdCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoTXV0YWJsZVN0eWxlUHJvcGVydGllcyYgZGVjbGFy
YXRpb24KIAogdm9pZCBDU1NQYXJzZXI6OnBhcnNlU2VsZWN0b3IoY29uc3QgU3RyaW5nJiBzdHJp
bmcsIENTU1NlbGVjdG9yTGlzdCYgc2VsZWN0b3JMaXN0KQogewotICAgIHNlbGVjdG9yTGlzdCA9
IHBhcnNlQ1NTU2VsZWN0b3IoQ1NTVG9rZW5pemVyKHN0cmluZykudG9rZW5SYW5nZSgpLCBtX2Nv
bnRleHQsIG51bGxwdHIpOworICAgIHNlbGVjdG9yTGlzdCA9IHBhcnNlQ1NTU2VsZWN0b3IobWFr
ZUNTU1Rva2VuaXplcihzdHJpbmcpLnRva2VuUmFuZ2UoKSwgbV9jb250ZXh0LCBudWxscHRyKTsK
IH0KIAogUmVmPEltbXV0YWJsZVN0eWxlUHJvcGVydGllcz4gQ1NTUGFyc2VyOjpwYXJzZUlubGlu
ZVN0eWxlRGVjbGFyYXRpb24oY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0IEVsZW1lbnQqIGVs
ZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlcklt
cGwuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJbXBsLmNwcAppbmRl
eCBjN2IyZjY4NWM2NmE0YzRlYWRhYjg0MjMzODYyYzZhNjFiOTUzNjlhLi5jODM2NWE5ZWExNzJm
YzVmMDY0ZWQ0ODNmY2ZkMzgzZDRlN2NlNjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvcGFyc2VyL0NTU1BhcnNlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTUGFyc2VySW1wbC5jcHAKQEAgLTc1LDkgKzc1LDkgQEAgQ1NTUGFyc2VySW1wbDo6Q1NT
UGFyc2VySW1wbChDU1NEZWZlcnJlZFBhcnNlciYgZGVmZXJyZWRQYXJzZXIpCiBDU1NQYXJzZXJJ
bXBsOjpDU1NQYXJzZXJJbXBsKGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQsIGNvbnN0
IFN0cmluZyYgc3RyaW5nLCBTdHlsZVNoZWV0Q29udGVudHMqIHN0eWxlU2hlZXQsIENTU1BhcnNl
ck9ic2VydmVyV3JhcHBlciogd3JhcHBlciwgQ1NTUGFyc2VyOjpSdWxlUGFyc2luZyBydWxlUGFy
c2luZykKICAgICA6IG1fY29udGV4dChjb250ZXh0KQogICAgICwgbV9zdHlsZVNoZWV0KHN0eWxl
U2hlZXQpCisgICAgLCBtX3Rva2VuaXplcih3cmFwcGVyID8gbWFrZUNTU1Rva2VuaXplcihzdHJp
bmcsICp3cmFwcGVyKSA6IG1ha2VDU1NUb2tlbml6ZXIoc3RyaW5nKSkKICAgICAsIG1fb2JzZXJ2
ZXJXcmFwcGVyKHdyYXBwZXIpCiB7Ci0gICAgbV90b2tlbml6ZXIgPSB3cmFwcGVyID8gbWFrZVVu
aXF1ZTxDU1NUb2tlbml6ZXI+KHN0cmluZywgKndyYXBwZXIpIDogbWFrZVVuaXF1ZTxDU1NUb2tl
bml6ZXI+KHN0cmluZyk7CiAgICAgaWYgKGNvbnRleHQuZGVmZXJyZWRDU1NQYXJzZXJFbmFibGVk
ICYmICF3cmFwcGVyICYmIHN0eWxlU2hlZXQgJiYgcnVsZVBhcnNpbmcgPT0gQ1NTUGFyc2VyOjpS
dWxlUGFyc2luZzo6RGVmZXJyZWQpCiAgICAgICAgIG1fZGVmZXJyZWRQYXJzZXIgPSBDU1NEZWZl
cnJlZFBhcnNlcjo6Y3JlYXRlKGNvbnRleHQsIHN0cmluZywgKnN0eWxlU2hlZXQpOwogfQpAQCAt
Mjk5LDcgKzI5OSw3IEBAIENTU1NlbGVjdG9yTGlzdCBDU1NQYXJzZXJJbXBsOjpwYXJzZVBhZ2VT
ZWxlY3RvcihDU1NQYXJzZXJUb2tlblJhbmdlIHJhbmdlLCBTdHlsCiAKIFZlY3Rvcjxkb3VibGU+
IENTU1BhcnNlckltcGw6OnBhcnNlS2V5ZnJhbWVLZXlMaXN0KGNvbnN0IFN0cmluZyYga2V5TGlz
dCkKIHsKLSAgICByZXR1cm4gY29uc3VtZUtleWZyYW1lS2V5TGlzdChDU1NUb2tlbml6ZXIoa2V5
TGlzdCkudG9rZW5SYW5nZSgpKTsKKyAgICByZXR1cm4gY29uc3VtZUtleWZyYW1lS2V5TGlzdCht
YWtlQ1NTVG9rZW5pemVyKGtleUxpc3QpLnRva2VuUmFuZ2UoKSk7CiB9CiAKIGJvb2wgQ1NTUGFy
c2VySW1wbDo6c3VwcG9ydHNEZWNsYXJhdGlvbihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJbXBsLmgKaW5kZXggYzcxZjBmZTU4
MDk3ZjZjZGM2ZTE1YzIzMTkxZDc4Y2YxYTQwN2EwMS4uODgzODczM2Y1NDRhOTE1Nzk3ZmQ5NzZk
YmZkMDUwNzM0ZGNiYjQ3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NQYXJzZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJ
bXBsLmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJDU1NQYXJzZXIuaCIKICNpbmNsdWRl
ICJDU1NQYXJzZXJUb2tlblJhbmdlLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgor
I2luY2x1ZGUgIkNTU1Rva2VuaXplci5oIgogI2luY2x1ZGUgIlN0eWxlUnVsZS5oIgogCiAjaW5j
bHVkZSA8bWVtb3J5PgpAQCAtNDQsNyArNDUsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBDU1NQYXJzZXJPYnNlcnZlcjsKIGNsYXNzIENTU1BhcnNlck9ic2VydmVyV3JhcHBlcjsKIGNs
YXNzIENTU1NlbGVjdG9yTGlzdDsKLWNsYXNzIENTU1Rva2VuaXplcjsKIGNsYXNzIFN0eWxlUnVs
ZUtleWZyYW1lOwogY2xhc3MgU3R5bGVSdWxlOwogY2xhc3MgU3R5bGVSdWxlQmFzZTsKQEAgLTEw
MSw3ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgcGFyc2VEZWZlcnJlZFJ1bGVM
aXN0KENTU1BhcnNlclRva2VuUmFuZ2UsIENTU0RlZmVycmVkUGFyc2VyJiwgVmVjdG9yPFJlZlB0
cjxTdHlsZVJ1bGVCYXNlPj4mKTsKICAgICBzdGF0aWMgdm9pZCBwYXJzZURlZmVycmVkS2V5ZnJh
bWVMaXN0KENTU1BhcnNlclRva2VuUmFuZ2UsIENTU0RlZmVycmVkUGFyc2VyJiwgU3R5bGVSdWxl
S2V5ZnJhbWVzJik7CiAKLSAgICBDU1NUb2tlbml6ZXIqIHRva2VuaXplcigpIGNvbnN0IHsgcmV0
dXJuIG1fdG9rZW5pemVyLmdldCgpOyB9OworICAgIENTU1Rva2VuaXplciogdG9rZW5pemVyKCkg
eyByZXR1cm4gbV90b2tlbml6ZXIgPyAmbV90b2tlbml6ZXIudmFsdWUoKSA6IG51bGxwdHI7IH07
CiAgICAgQ1NTRGVmZXJyZWRQYXJzZXIqIGRlZmVycmVkUGFyc2VyKCkgY29uc3QgeyByZXR1cm4g
bV9kZWZlcnJlZFBhcnNlci5nZXQoKTsgfQogCiBwcml2YXRlOgpAQCAtMTYwLDcgKzE2MCw3IEBA
IHByaXZhdGU6CiAgICAgUmVmUHRyPENTU0RlZmVycmVkUGFyc2VyPiBtX2RlZmVycmVkUGFyc2Vy
OwogICAgIAogICAgIC8vIEZvciBub3JtYWwgcGFyc2luZy4KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
Q1NTVG9rZW5pemVyPiBtX3Rva2VuaXplcjsKKyAgICBPcHRpb25hbDxDU1NUb2tlbml6ZXI+IG1f
dG9rZW5pemVyOwogCiAgICAgLy8gRm9yIHRoZSBpbnNwZWN0b3IKICAgICBDU1NQYXJzZXJPYnNl
cnZlcldyYXBwZXIqIG1fb2JzZXJ2ZXJXcmFwcGVyIHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NUb2tlbml6ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL3BhcnNlci9DU1NUb2tlbml6ZXIuY3BwCmluZGV4IGNhNmExOGMyZGZiZjA0MjY5N2Vj
YWM4NTU3MGNhZTc0ZGJmYjA2M2EuLmU1YTYwNTkyNGFmNDE3OWI1NGRjODcwYTI0ZDIxMGJkZTdj
MmNiNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTVG9rZW5pemVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Rva2VuaXplci5jcHAKQEAg
LTQwLDE3ICs0MCwyNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNTU1Rva2VuaXplcjo6
Q1NTVG9rZW5pemVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQotICAgIDogbV9pbnB1dChzdHJpbmcp
CisvLyBTZWU6IGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nzcy1zeW50YXgvI2lucHV0LXByZXBy
b2Nlc3NpbmcKK3N0YXRpYyBTdHJpbmcgcHJlcHJvY2Vzc1N0cmluZyhTdHJpbmcgc3RyaW5nKQor
eworICAgIC8vIEFjY29yZGluZyB0byB0aGUgc3BlY2lmaWNhdGlvbiwgd2Ugc2hvdWxkIHJlcGxh
Y2UgJ1xyJyBhbmQgJ1xmJyB3aXRoICdcbicgYnV0IHdlIGRvIG5vdCBuZWVkIHRvCisgICAgLy8g
YmVjYXVzZSBvdXIgQ1NTVG9rZW5pemVyIHRyZWF0cyBhbGwgb2YgdGhlbSBhcyBuZXcgbGluZXMu
CisgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKCdcMCcsIHJlcGxhY2VtZW50Q2hhcmFjdGVyKTsK
K30KKworQ1NTVG9rZW5pemVyIG1ha2VDU1NUb2tlbml6ZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcp
Cit7CisgICAgcmV0dXJuIENTU1Rva2VuaXplcihwcmVwcm9jZXNzU3RyaW5nKHN0cmluZykpOwor
fQorCitDU1NUb2tlbml6ZXIgbWFrZUNTU1Rva2VuaXplcihjb25zdCBTdHJpbmcmIHN0cmluZywg
Q1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyJiB3cmFwcGVyKQogewotICAgIC8vIEFjY29yZGluZyB0
byB0aGUgc3BlYywgd2Ugc2hvdWxkIHBlcmZvcm0gcHJlcHJvY2Vzc2luZyBoZXJlLgotICAgIC8v
IFNlZTogaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzLXN5bnRheC8jaW5wdXQtcHJlcHJvY2Vz
c2luZwotICAgIC8vCi0gICAgLy8gSG93ZXZlciwgd2UgY2FuIHNraXAgdGhpcyBzdGVwIHNpbmNl
OgotICAgIC8vICogV2UncmUgdXNpbmcgSFRNTCBzcGFjZXMgKHdoaWNoIGFjY2VwdCBcciBhbmQg
XGYgYXMgYSB2YWxpZCB3aGl0ZSBzcGFjZSkKLSAgICAvLyAqIERvIG5vdCBjb3VudCB3aGl0ZSBz
cGFjZXMKLSAgICAvLyAqIENTU1Rva2VuaXplcklucHV0U3RyZWFtOjpuZXh0SW5wdXRDaGFyKCkg
cmVwbGFjZXMgTlVMTHMgZm9yIHJlcGxhY2VtZW50IGNoYXJhY3RlcnMKKyAgICByZXR1cm4gQ1NT
VG9rZW5pemVyKHByZXByb2Nlc3NTdHJpbmcoc3RyaW5nKSwgd3JhcHBlcik7Cit9CiAKK2lubGlu
ZSBDU1NUb2tlbml6ZXI6OkNTU1Rva2VuaXplcihTdHJpbmcmJiBzdHJpbmcpCisgICAgOiBtX2lu
cHV0KHN0cmluZykKK3sKICAgICBpZiAoc3RyaW5nLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
OwogCkBAIC02OCw3ICs3OCw3IEBAIENTU1Rva2VuaXplcjo6Q1NTVG9rZW5pemVyKGNvbnN0IFN0
cmluZyYgc3RyaW5nKQogICAgIH0KIH0KIAotQ1NTVG9rZW5pemVyOjpDU1NUb2tlbml6ZXIoY29u
c3QgU3RyaW5nJiBzdHJpbmcsIENTU1BhcnNlck9ic2VydmVyV3JhcHBlciYgd3JhcHBlcikKK2lu
bGluZSBDU1NUb2tlbml6ZXI6OkNTU1Rva2VuaXplcihTdHJpbmcmJiBzdHJpbmcsIENTU1BhcnNl
ck9ic2VydmVyV3JhcHBlciYgd3JhcHBlcikKICAgICA6IG1faW5wdXQoc3RyaW5nKQogewogICAg
IGlmIChzdHJpbmcuaXNFbXB0eSgpKQpAQCAtMjAzLDkgKzIxMyw3IEBAIENTU1BhcnNlclRva2Vu
IENTU1Rva2VuaXplcjo6YXN0ZXJpc2soVUNoYXIgY2MpCiBDU1NQYXJzZXJUb2tlbiBDU1NUb2tl
bml6ZXI6Omxlc3NUaGFuKFVDaGFyIGNjKQogewogICAgIEFTU0VSVF9VTlVTRUQoY2MsIGNjID09
ICc8Jyk7Ci0gICAgaWYgKG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudCgwKSA9PSAnIScK
LSAgICAgICAgJiYgbV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDEpID09ICctJwotICAg
ICAgICAmJiBtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQoMikgPT0gJy0nKSB7CisgICAg
aWYgKG1faW5wdXQucGVlaygwKSA9PSAnIScgJiYgbV9pbnB1dC5wZWVrKDEpID09ICctJyAmJiBt
X2lucHV0LnBlZWsoMikgPT0gJy0nKSB7CiAgICAgICAgIG1faW5wdXQuYWR2YW5jZSgzKTsKICAg
ICAgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKENET1Rva2VuKTsKICAgICB9CkBAIC0yMjMsOCAr
MjMxLDcgQEAgQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpoeXBoZW5NaW51cyhVQ2hhciBj
YykKICAgICAgICAgcmVjb25zdW1lKGNjKTsKICAgICAgICAgcmV0dXJuIGNvbnN1bWVOdW1lcmlj
VG9rZW4oKTsKICAgICB9Ci0gICAgaWYgKG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudCgw
KSA9PSAnLScKLSAgICAgICAgJiYgbV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDEpID09
ICc+JykgeworICAgIGlmIChtX2lucHV0LnBlZWsoMCkgPT0gJy0nICYmIG1faW5wdXQucGVlaygx
KSA9PSAnPicpIHsKICAgICAgICAgbV9pbnB1dC5hZHZhbmNlKDIpOwogICAgICAgICByZXR1cm4g
Q1NTUGFyc2VyVG9rZW4oQ0RDVG9rZW4pOwogICAgIH0KQEAgLTI1OCw4ICsyNjUsOCBAQCBDU1NQ
YXJzZXJUb2tlbiBDU1NUb2tlbml6ZXI6OnNlbWlDb2xvbihVQ2hhciAvKmNjKi8pCiAKIENTU1Bh
cnNlclRva2VuIENTU1Rva2VuaXplcjo6aGFzaChVQ2hhciBjYykKIHsKLSAgICBVQ2hhciBuZXh0
Q2hhciA9IG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudCgwKTsKLSAgICBpZiAoaXNOYW1l
Q29kZVBvaW50KG5leHRDaGFyKSB8fCB0d29DaGFyc0FyZVZhbGlkRXNjYXBlKG5leHRDaGFyLCBt
X2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQoMSkpKSB7CisgICAgVUNoYXIgbmV4dENoYXIg
PSBtX2lucHV0LnBlZWsoMCk7CisgICAgaWYgKGlzTmFtZUNvZGVQb2ludChuZXh0Q2hhcikgfHwg
dHdvQ2hhcnNBcmVWYWxpZEVzY2FwZShuZXh0Q2hhciwgbV9pbnB1dC5wZWVrKDEpKSkgewogICAg
ICAgICBIYXNoVG9rZW5UeXBlIHR5cGUgPSBuZXh0Q2hhcnNBcmVJZGVudGlmaWVyKCkgPyBIYXNo
VG9rZW5JZCA6IEhhc2hUb2tlblVucmVzdHJpY3RlZDsKICAgICAgICAgcmV0dXJuIENTU1BhcnNl
clRva2VuKHR5cGUsIGNvbnN1bWVOYW1lKCkpOwogICAgIH0KQEAgLTMxMSw3ICszMTgsNyBAQCBD
U1NQYXJzZXJUb2tlbiBDU1NUb2tlbml6ZXI6OmNvbW1lcmNpYWxBdChVQ2hhciBjYykKIAogQ1NT
UGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpyZXZlcnNlU29saWR1cyhVQ2hhciBjYykKIHsKLSAg
ICBpZiAodHdvQ2hhcnNBcmVWYWxpZEVzY2FwZShjYywgbV9pbnB1dC5wZWVrV2l0aG91dFJlcGxh
Y2VtZW50KDApKSkgeworICAgIGlmICh0d29DaGFyc0FyZVZhbGlkRXNjYXBlKGNjLCBtX2lucHV0
LnBlZWsoMCkpKSB7CiAgICAgICAgIHJlY29uc3VtZShjYyk7CiAgICAgICAgIHJldHVybiBjb25z
dW1lSWRlbnRMaWtlVG9rZW4oKTsKICAgICB9CkBAIC0zMjYsOCArMzMzLDcgQEAgQ1NTUGFyc2Vy
VG9rZW4gQ1NTVG9rZW5pemVyOjphc2NpaURpZ2l0KFVDaGFyIGNjKQogCiBDU1NQYXJzZXJUb2tl
biBDU1NUb2tlbml6ZXI6OmxldHRlclUoVUNoYXIgY2MpCiB7Ci0gICAgaWYgKG1faW5wdXQucGVl
a1dpdGhvdXRSZXBsYWNlbWVudCgwKSA9PSAnKycKLSAgICAgICAgJiYgKGlzQVNDSUlIZXhEaWdp
dChtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQoMSkpIHx8IG1faW5wdXQucGVla1dpdGhv
dXRSZXBsYWNlbWVudCgxKSA9PSAnPycpKSB7CisgICAgaWYgKG1faW5wdXQucGVlaygwKSA9PSAn
KycgJiYgKGlzQVNDSUlIZXhEaWdpdChtX2lucHV0LnBlZWsoMSkpIHx8IG1faW5wdXQucGVlaygx
KSA9PSAnPycpKSB7CiAgICAgICAgIG1faW5wdXQuYWR2YW5jZSgpOwogICAgICAgICByZXR1cm4g
Y29uc3VtZVVuaWNvZGVSYW5nZSgpOwogICAgIH0KQEAgLTUxOSw3ICs1MjUsNyBAQCBDU1NQYXJz
ZXJUb2tlbiBDU1NUb2tlbml6ZXI6OmNvbnN1bWVOdW1iZXIoKQogICAgIE51bWVyaWNTaWduIHNp
Z24gPSBOb1NpZ247CiAgICAgdW5zaWduZWQgbnVtYmVyTGVuZ3RoID0gMDsKIAotICAgIFVDaGFy
IG5leHQgPSBtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQoMCk7CisgICAgVUNoYXIgbmV4
dCA9IG1faW5wdXQucGVlaygwKTsKICAgICBpZiAobmV4dCA9PSAnKycpIHsKICAgICAgICAgKytu
dW1iZXJMZW5ndGg7CiAgICAgICAgIHNpZ24gPSBQbHVzU2lnbjsKQEAgLTUyOSwxOSArNTM1LDE5
IEBAIENTU1BhcnNlclRva2VuIENTU1Rva2VuaXplcjo6Y29uc3VtZU51bWJlcigpCiAgICAgfQog
CiAgICAgbnVtYmVyTGVuZ3RoID0gbV9pbnB1dC5za2lwV2hpbGVQcmVkaWNhdGU8aXNBU0NJSURp
Z2l0PihudW1iZXJMZW5ndGgpOwotICAgIG5leHQgPSBtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFj
ZW1lbnQobnVtYmVyTGVuZ3RoKTsKLSAgICBpZiAobmV4dCA9PSAnLicgJiYgaXNBU0NJSURpZ2l0
KG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudChudW1iZXJMZW5ndGggKyAxKSkpIHsKKyAg
ICBuZXh0ID0gbV9pbnB1dC5wZWVrKG51bWJlckxlbmd0aCk7CisgICAgaWYgKG5leHQgPT0gJy4n
ICYmIGlzQVNDSUlEaWdpdChtX2lucHV0LnBlZWsobnVtYmVyTGVuZ3RoICsgMSkpKSB7CiAgICAg
ICAgIHR5cGUgPSBOdW1iZXJWYWx1ZVR5cGU7CiAgICAgICAgIG51bWJlckxlbmd0aCA9IG1faW5w
dXQuc2tpcFdoaWxlUHJlZGljYXRlPGlzQVNDSUlEaWdpdD4obnVtYmVyTGVuZ3RoICsgMik7Ci0g
ICAgICAgIG5leHQgPSBtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQobnVtYmVyTGVuZ3Ro
KTsKKyAgICAgICAgbmV4dCA9IG1faW5wdXQucGVlayhudW1iZXJMZW5ndGgpOwogICAgIH0KIAog
ICAgIGlmIChuZXh0ID09ICdFJyB8fCBuZXh0ID09ICdlJykgewotICAgICAgICBuZXh0ID0gbV9p
bnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KG51bWJlckxlbmd0aCArIDEpOworICAgICAgICBu
ZXh0ID0gbV9pbnB1dC5wZWVrKG51bWJlckxlbmd0aCArIDEpOwogICAgICAgICBpZiAoaXNBU0NJ
SURpZ2l0KG5leHQpKSB7CiAgICAgICAgICAgICB0eXBlID0gTnVtYmVyVmFsdWVUeXBlOwogICAg
ICAgICAgICAgbnVtYmVyTGVuZ3RoID0gbV9pbnB1dC5za2lwV2hpbGVQcmVkaWNhdGU8aXNBU0NJ
SURpZ2l0PihudW1iZXJMZW5ndGggKyAxKTsKLSAgICAgICAgfSBlbHNlIGlmICgobmV4dCA9PSAn
KycgfHwgbmV4dCA9PSAnLScpICYmIGlzQVNDSUlEaWdpdChtX2lucHV0LnBlZWtXaXRob3V0UmVw
bGFjZW1lbnQobnVtYmVyTGVuZ3RoICsgMikpKSB7CisgICAgICAgIH0gZWxzZSBpZiAoKG5leHQg
PT0gJysnIHx8IG5leHQgPT0gJy0nKSAmJiBpc0FTQ0lJRGlnaXQobV9pbnB1dC5wZWVrKG51bWJl
ckxlbmd0aCArIDIpKSkgewogICAgICAgICAgICAgdHlwZSA9IE51bWJlclZhbHVlVHlwZTsKICAg
ICAgICAgICAgIG51bWJlckxlbmd0aCA9IG1faW5wdXQuc2tpcFdoaWxlUHJlZGljYXRlPGlzQVND
SUlEaWdpdD4obnVtYmVyTGVuZ3RoICsgMyk7CiAgICAgICAgIH0KQEAgLTU3Myw3ICs1NzksNyBA
QCBDU1NQYXJzZXJUb2tlbiBDU1NUb2tlbml6ZXI6OmNvbnN1bWVJZGVudExpa2VUb2tlbigpCiAg
ICAgICAgICAgICAvLyBUaGUgc3BlYyBpcyBzbGlnaHRseSBkaWZmZXJlbnQgc28gYXMgdG8gYXZv
aWQgZHJvcHBpbmcgd2hpdGVzcGFjZQogICAgICAgICAgICAgLy8gdG9rZW5zLCBidXQgdGhleSB3
b3VsZG4ndCBiZSB1c2VkIGFuZCB0aGlzIGlzIGVhc2llci4KICAgICAgICAgICAgIG1faW5wdXQu
YWR2YW5jZVVudGlsTm9uV2hpdGVzcGFjZSgpOwotICAgICAgICAgICAgVUNoYXIgbmV4dCA9IG1f
aW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudCgwKTsKKyAgICAgICAgICAgIFVDaGFyIG5leHQg
PSBtX2lucHV0LnBlZWsoMCk7CiAgICAgICAgICAgICBpZiAobmV4dCAhPSAnIicgJiYgbmV4dCAh
PSAnXCcnKQogICAgICAgICAgICAgICAgIHJldHVybiBjb25zdW1lVXJsVG9rZW4oKTsKICAgICAg
ICAgfQpAQCAtNTg3LDcgKzU5Myw3IEBAIENTU1BhcnNlclRva2VuIENTU1Rva2VuaXplcjo6Y29u
c3VtZVN0cmluZ1Rva2VuVW50aWwoVUNoYXIgZW5kaW5nQ29kZVBvaW50KQogewogICAgIC8vIFN0
cmluZ3Mgd2l0aG91dCBlc2NhcGVzIGdldCBoYW5kbGVkIHdpdGhvdXQgYWxsb2NhdGlvbnMKICAg
ICBmb3IgKHVuc2lnbmVkIHNpemUgPSAwOyA7IHNpemUrKykgewotICAgICAgICBVQ2hhciBjYyA9
IG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudChzaXplKTsKKyAgICAgICAgVUNoYXIgY2Mg
PSBtX2lucHV0LnBlZWsoc2l6ZSk7CiAgICAgICAgIGlmIChjYyA9PSBlbmRpbmdDb2RlUG9pbnQp
IHsKICAgICAgICAgICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0ID0gbV9pbnB1dC5vZmZzZXQoKTsK
ICAgICAgICAgICAgIG1faW5wdXQuYWR2YW5jZShzaXplICsgMSk7CkBAIC01OTcsNyArNjAzLDcg
QEAgQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpjb25zdW1lU3RyaW5nVG9rZW5VbnRpbChV
Q2hhciBlbmRpbmdDb2RlUG9pbnQpCiAgICAgICAgICAgICBtX2lucHV0LmFkdmFuY2Uoc2l6ZSk7
CiAgICAgICAgICAgICByZXR1cm4gQ1NTUGFyc2VyVG9rZW4oQmFkU3RyaW5nVG9rZW4pOwogICAg
ICAgICB9Ci0gICAgICAgIGlmIChjYyA9PSAnXDAnIHx8IGNjID09ICdcXCcpCisgICAgICAgIGlm
IChjYyA9PSBrRW5kT2ZGaWxlTWFya2VyIHx8IGNjID09ICdcXCcpCiAgICAgICAgICAgICBicmVh
azsKICAgICB9CiAKQEAgLTYxMyw3ICs2MTksNyBAQCBDU1NQYXJzZXJUb2tlbiBDU1NUb2tlbml6
ZXI6OmNvbnN1bWVTdHJpbmdUb2tlblVudGlsKFVDaGFyIGVuZGluZ0NvZGVQb2ludCkKICAgICAg
ICAgaWYgKGNjID09ICdcXCcpIHsKICAgICAgICAgICAgIGlmIChtX2lucHV0Lm5leHRJbnB1dENo
YXIoKSA9PSBrRW5kT2ZGaWxlTWFya2VyKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICAgICAgaWYgKGlzTmV3TGluZShtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQoMCkp
KQorICAgICAgICAgICAgaWYgKGlzTmV3TGluZShtX2lucHV0LnBlZWsoMCkpKQogICAgICAgICAg
ICAgICAgIGNvbnN1bWVTaW5nbGVXaGl0ZXNwYWNlSWZOZXh0KCk7IC8vIFRoaXMgaGFuZGxlcyBc
clxuIGZvciB1cwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIG91dHB1dC5hcHBl
bmRDaGFyYWN0ZXIoY29uc3VtZUVzY2FwZSgpKTsKQEAgLTYyNCwxMSArNjMwLDExIEBAIENTU1Bh
cnNlclRva2VuIENTU1Rva2VuaXplcjo6Y29uc3VtZVN0cmluZ1Rva2VuVW50aWwoVUNoYXIgZW5k
aW5nQ29kZVBvaW50KQogCiBDU1NQYXJzZXJUb2tlbiBDU1NUb2tlbml6ZXI6OmNvbnN1bWVVbmlj
b2RlUmFuZ2UoKQogewotICAgIEFTU0VSVChpc0FTQ0lJSGV4RGlnaXQobV9pbnB1dC5wZWVrV2l0
aG91dFJlcGxhY2VtZW50KDApKSB8fCBtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQoMCkg
PT0gJz8nKTsKKyAgICBBU1NFUlQoaXNBU0NJSUhleERpZ2l0KG1faW5wdXQucGVlaygwKSkgfHwg
bV9pbnB1dC5wZWVrKDApID09ICc/Jyk7CiAgICAgaW50IGxlbmd0aFJlbWFpbmluZyA9IDY7CiAg
ICAgVUNoYXIzMiBzdGFydCA9IDA7CiAKLSAgICB3aGlsZSAobGVuZ3RoUmVtYWluaW5nICYmIGlz
QVNDSUlIZXhEaWdpdChtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQoMCkpKSB7CisgICAg
d2hpbGUgKGxlbmd0aFJlbWFpbmluZyAmJiBpc0FTQ0lJSGV4RGlnaXQobV9pbnB1dC5wZWVrKDAp
KSkgewogICAgICAgICBzdGFydCA9IHN0YXJ0ICogMTYgKyB0b0FTQ0lJSGV4VmFsdWUoY29uc3Vt
ZSgpKTsKICAgICAgICAgLS1sZW5ndGhSZW1haW5pbmc7CiAgICAgfQpAQCAtNjQwLDE0ICs2NDYs
MTQgQEAgQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpjb25zdW1lVW5pY29kZVJhbmdlKCkK
ICAgICAgICAgICAgIGVuZCA9IGVuZCAqIDE2ICsgMHhGOwogICAgICAgICAgICAgLS1sZW5ndGhS
ZW1haW5pbmc7CiAgICAgICAgIH0gd2hpbGUgKGxlbmd0aFJlbWFpbmluZyAmJiBjb25zdW1lSWZO
ZXh0KCc/JykpOwotICAgIH0gZWxzZSBpZiAobV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50
KDApID09ICctJyAmJiBpc0FTQ0lJSGV4RGlnaXQobV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2Vt
ZW50KDEpKSkgeworICAgIH0gZWxzZSBpZiAobV9pbnB1dC5wZWVrKDApID09ICctJyAmJiBpc0FT
Q0lJSGV4RGlnaXQobV9pbnB1dC5wZWVrKDEpKSkgewogICAgICAgICBtX2lucHV0LmFkdmFuY2Uo
KTsKICAgICAgICAgbGVuZ3RoUmVtYWluaW5nID0gNjsKICAgICAgICAgZW5kID0gMDsKICAgICAg
ICAgZG8gewogICAgICAgICAgICAgZW5kID0gZW5kICogMTYgKyB0b0FTQ0lJSGV4VmFsdWUoY29u
c3VtZSgpKTsKICAgICAgICAgICAgIC0tbGVuZ3RoUmVtYWluaW5nOwotICAgICAgICB9IHdoaWxl
IChsZW5ndGhSZW1haW5pbmcgJiYgaXNBU0NJSUhleERpZ2l0KG1faW5wdXQucGVla1dpdGhvdXRS
ZXBsYWNlbWVudCgwKSkpOworICAgICAgICB9IHdoaWxlIChsZW5ndGhSZW1haW5pbmcgJiYgaXNB
U0NJSUhleERpZ2l0KG1faW5wdXQucGVlaygwKSkpOwogICAgIH0KIAogICAgIHJldHVybiBDU1NQ
YXJzZXJUb2tlbihVbmljb2RlUmFuZ2VUb2tlbiwgc3RhcnQsIGVuZCk7CkBAIC02NjYsNyArNjcy
LDcgQEAgQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpjb25zdW1lVXJsVG9rZW4oKQogCiAg
ICAgLy8gVVJMIHRva2VucyB3aXRob3V0IGVzY2FwZXMgZ2V0IGhhbmRsZWQgd2l0aG91dCBhbGxv
Y2F0aW9ucwogICAgIGZvciAodW5zaWduZWQgc2l6ZSA9IDA7IDsgc2l6ZSsrKSB7Ci0gICAgICAg
IFVDaGFyIGNjID0gbV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KHNpemUpOworICAgICAg
ICBVQ2hhciBjYyA9IG1faW5wdXQucGVlayhzaXplKTsKICAgICAgICAgaWYgKGNjID09ICcpJykg
ewogICAgICAgICAgICAgdW5zaWduZWQgc3RhcnRPZmZzZXQgPSBtX2lucHV0Lm9mZnNldCgpOwog
ICAgICAgICAgICAgbV9pbnB1dC5hZHZhbmNlKHNpemUgKyAxKTsKQEAgLTY5Myw3ICs2OTksNyBA
QCBDU1NQYXJzZXJUb2tlbiBDU1NUb2tlbml6ZXI6OmNvbnN1bWVVcmxUb2tlbigpCiAgICAgICAg
ICAgICBicmVhazsKIAogICAgICAgICBpZiAoY2MgPT0gJ1xcJykgewotICAgICAgICAgICAgaWYg
KHR3b0NoYXJzQXJlVmFsaWRFc2NhcGUoY2MsIG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVu
dCgwKSkpIHsKKyAgICAgICAgICAgIGlmICh0d29DaGFyc0FyZVZhbGlkRXNjYXBlKGNjLCBtX2lu
cHV0LnBlZWsoMCkpKSB7CiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZENoYXJhY3Rlcihj
b25zdW1lRXNjYXBlKCkpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAg
fQpAQCAtNzE0LDcgKzcyMCw3IEBAIHZvaWQgQ1NTVG9rZW5pemVyOjpjb25zdW1lQmFkVXJsUmVt
bmFudHMoKQogICAgICAgICBVQ2hhciBjYyA9IGNvbnN1bWUoKTsKICAgICAgICAgaWYgKGNjID09
ICcpJyB8fCBjYyA9PSBrRW5kT2ZGaWxlTWFya2VyKQogICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICBpZiAodHdvQ2hhcnNBcmVWYWxpZEVzY2FwZShjYywgbV9pbnB1dC5wZWVrV2l0aG91dFJl
cGxhY2VtZW50KDApKSkKKyAgICAgICAgaWYgKHR3b0NoYXJzQXJlVmFsaWRFc2NhcGUoY2MsIG1f
aW5wdXQucGVlaygwKSkpCiAgICAgICAgICAgICBjb25zdW1lRXNjYXBlKCk7CiAgICAgfQogfQpA
QCAtNzIyLDggKzcyOCw4IEBAIHZvaWQgQ1NTVG9rZW5pemVyOjpjb25zdW1lQmFkVXJsUmVtbmFu
dHMoKQogdm9pZCBDU1NUb2tlbml6ZXI6OmNvbnN1bWVTaW5nbGVXaGl0ZXNwYWNlSWZOZXh0KCkK
IHsKICAgICAvLyBXZSBjaGVjayBmb3IgXHJcbiBhbmQgSFRNTCBzcGFjZXMgc2luY2Ugd2UgZG9u
J3QgZG8gcHJlcHJvY2Vzc2luZwotICAgIFVDaGFyIG5leHQgPSBtX2lucHV0LnBlZWtXaXRob3V0
UmVwbGFjZW1lbnQoMCk7Ci0gICAgaWYgKG5leHQgPT0gJ1xyJyAmJiBtX2lucHV0LnBlZWtXaXRo
b3V0UmVwbGFjZW1lbnQoMSkgPT0gJ1xuJykKKyAgICBVQ2hhciBuZXh0ID0gbV9pbnB1dC5wZWVr
KDApOworICAgIGlmIChuZXh0ID09ICdccicgJiYgbV9pbnB1dC5wZWVrKDEpID09ICdcbicpCiAg
ICAgICAgIG1faW5wdXQuYWR2YW5jZSgyKTsKICAgICBlbHNlIGlmIChpc0hUTUxTcGFjZShuZXh0
KSkKICAgICAgICAgbV9pbnB1dC5hZHZhbmNlKCk7CkBAIC03NTEsNyArNzU3LDcgQEAgYm9vbCBD
U1NUb2tlbml6ZXI6OmNvbnN1bWVJZk5leHQoVUNoYXIgY2hhcmFjdGVyKQogICAgIC8vIGEgTlVM
IGluIHRoZSBtaWRkbGUgYW5kIHRoZSBrRW5kT2ZGaWxlTWFya2VyLCBzbyBjaGFyYWN0ZXIgbXVz
dCBub3QgYmUKICAgICAvLyBOVUwuCiAgICAgQVNTRVJUKGNoYXJhY3Rlcik7Ci0gICAgaWYgKG1f
aW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudCgwKSA9PSBjaGFyYWN0ZXIpIHsKKyAgICBpZiAo
bV9pbnB1dC5wZWVrKDApID09IGNoYXJhY3RlcikgewogICAgICAgICBtX2lucHV0LmFkdmFuY2Uo
KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtNzYzLDEzICs3NjksMTMgQEAgU3Ry
aW5nVmlldyBDU1NUb2tlbml6ZXI6OmNvbnN1bWVOYW1lKCkKIHsKICAgICAvLyBOYW1lcyB3aXRo
b3V0IGVzY2FwZXMgZ2V0IGhhbmRsZWQgd2l0aG91dCBhbGxvY2F0aW9ucwogICAgIGZvciAodW5z
aWduZWQgc2l6ZSA9IDA7IDsgKytzaXplKSB7Ci0gICAgICAgIFVDaGFyIGNjID0gbV9pbnB1dC5w
ZWVrV2l0aG91dFJlcGxhY2VtZW50KHNpemUpOworICAgICAgICBVQ2hhciBjYyA9IG1faW5wdXQu
cGVlayhzaXplKTsKICAgICAgICAgaWYgKGlzTmFtZUNvZGVQb2ludChjYykpCiAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgLy8gcGVla1dpdGhvdXRSZXBsYWNlbWVudCB3aWxsIHJldHVy
biBOVUwgd2hlbiB3ZSBoaXQgdGhlIGVuZCBvZiB0aGUKKyAgICAgICAgLy8gcGVlayB3aWxsIHJl
dHVybiBOVUwgd2hlbiB3ZSBoaXQgdGhlIGVuZCBvZiB0aGUKICAgICAgICAgLy8gaW5wdXQuIElu
IHRoYXQgY2FzZSB3ZSB3YW50IHRvIHN0aWxsIHVzZSB0aGUgcmFuZ2VBdCgpIGZhc3QgcGF0aAog
ICAgICAgICAvLyBiZWxvdy4KLSAgICAgICAgaWYgKGNjID09ICdcMCcgJiYgbV9pbnB1dC5vZmZz
ZXQoKSArIHNpemUgPCBtX2lucHV0Lmxlbmd0aCgpKQorICAgICAgICBpZiAoY2MgPT0ga0VuZE9m
RmlsZU1hcmtlciAmJiBtX2lucHV0Lm9mZnNldCgpICsgc2l6ZSA8IG1faW5wdXQubGVuZ3RoKCkp
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgaWYgKGNjID09ICdcXCcpCiAgICAgICAgICAg
ICBicmVhazsKQEAgLTc4NSw3ICs3OTEsNyBAQCBTdHJpbmdWaWV3IENTU1Rva2VuaXplcjo6Y29u
c3VtZU5hbWUoKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChjYyk7CiAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgfQotICAgICAgICBpZiAodHdvQ2hhcnNBcmVWYWxpZEVzY2FwZShj
YywgbV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDApKSkgeworICAgICAgICBpZiAodHdv
Q2hhcnNBcmVWYWxpZEVzY2FwZShjYywgbV9pbnB1dC5wZWVrKDApKSkgewogICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZENoYXJhY3Rlcihjb25zdW1lRXNjYXBlKCkpOwogICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgIH0KQEAgLTgwMyw3ICs4MDksNyBAQCBVQ2hhcjMyIENTU1Rva2VuaXpl
cjo6Y29uc3VtZUVzY2FwZSgpCiAgICAgICAgIHVuc2lnbmVkIGNvbnN1bWVkSGV4RGlnaXRzID0g
MTsKICAgICAgICAgU3RyaW5nQnVpbGRlciBoZXhDaGFyczsKICAgICAgICAgaGV4Q2hhcnMuYXBw
ZW5kKGNjKTsKLSAgICAgICAgd2hpbGUgKGNvbnN1bWVkSGV4RGlnaXRzIDwgNiAmJiBpc0FTQ0lJ
SGV4RGlnaXQobV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDApKSkgeworICAgICAgICB3
aGlsZSAoY29uc3VtZWRIZXhEaWdpdHMgPCA2ICYmIGlzQVNDSUlIZXhEaWdpdChtX2lucHV0LnBl
ZWsoMCkpKSB7CiAgICAgICAgICAgICBjYyA9IGNvbnN1bWUoKTsKICAgICAgICAgICAgIGhleENo
YXJzLmFwcGVuZChjYyk7CiAgICAgICAgICAgICBjb25zdW1lZEhleERpZ2l0cysrOwpAQCAtODI0
LDE3ICs4MzAsMTcgQEAgVUNoYXIzMiBDU1NUb2tlbml6ZXI6OmNvbnN1bWVFc2NhcGUoKQogCiBi
b29sIENTU1Rva2VuaXplcjo6bmV4dFR3b0NoYXJzQXJlVmFsaWRFc2NhcGUoKQogewotICAgIHJl
dHVybiB0d29DaGFyc0FyZVZhbGlkRXNjYXBlKG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVu
dCgwKSwgbV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDEpKTsKKyAgICByZXR1cm4gdHdv
Q2hhcnNBcmVWYWxpZEVzY2FwZShtX2lucHV0LnBlZWsoMCksIG1faW5wdXQucGVlaygxKSk7CiB9
CiAKIC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtc3ludGF4LyNzdGFydHMtd2l0aC1hLW51
bWJlcgogYm9vbCBDU1NUb2tlbml6ZXI6Om5leHRDaGFyc0FyZU51bWJlcihVQ2hhciBmaXJzdCkK
IHsKLSAgICBVQ2hhciBzZWNvbmQgPSBtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQoMCk7
CisgICAgVUNoYXIgc2Vjb25kID0gbV9pbnB1dC5wZWVrKDApOwogICAgIGlmIChpc0FTQ0lJRGln
aXQoZmlyc3QpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBpZiAoZmlyc3QgPT0gJysnIHx8
IGZpcnN0ID09ICctJykKLSAgICAgICAgcmV0dXJuICgoaXNBU0NJSURpZ2l0KHNlY29uZCkpIHx8
IChzZWNvbmQgPT0gJy4nICYmIGlzQVNDSUlEaWdpdChtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFj
ZW1lbnQoMSkpKSk7CisgICAgICAgIHJldHVybiAoKGlzQVNDSUlEaWdpdChzZWNvbmQpKSB8fCAo
c2Vjb25kID09ICcuJyAmJiBpc0FTQ0lJRGlnaXQobV9pbnB1dC5wZWVrKDEpKSkpOwogICAgIGlm
IChmaXJzdCA9PScuJykKICAgICAgICAgcmV0dXJuIChpc0FTQ0lJRGlnaXQoc2Vjb25kKSk7CiAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtODUxLDcgKzg1Nyw3IEBAIGJvb2wgQ1NTVG9rZW5pemVyOjpu
ZXh0Q2hhcnNBcmVOdW1iZXIoKQogLy8gaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzLXN5bnRh
eC8jd291bGQtc3RhcnQtYW4taWRlbnRpZmllcgogYm9vbCBDU1NUb2tlbml6ZXI6Om5leHRDaGFy
c0FyZUlkZW50aWZpZXIoVUNoYXIgZmlyc3QpCiB7Ci0gICAgVUNoYXIgc2Vjb25kID0gbV9pbnB1
dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDApOworICAgIFVDaGFyIHNlY29uZCA9IG1faW5wdXQu
cGVlaygwKTsKICAgICBpZiAoaXNOYW1lU3RhcnRDb2RlUG9pbnQoZmlyc3QpIHx8IHR3b0NoYXJz
QXJlVmFsaWRFc2NhcGUoZmlyc3QsIHNlY29uZCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Rva2VuaXplci5oIGIvU291
cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NUb2tlbml6ZXIuaAppbmRleCAyNWIwMzE1YzVkMmYy
ZTdjZmEwZjQwZDBlYTA0M2JjYzMyYWI3YjYwLi42YmE1YzRiOTk3MjQ2ODA5MmRlNDI1NDk4N2Yy
N2I0MTFlN2Q4NDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Rv
a2VuaXplci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTVG9rZW5pemVyLmgK
QEAgLTQ1LDggKzQ1LDcgQEAgY2xhc3MgQ1NTVG9rZW5pemVyIHsKICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShDU1NUb2tlbml6ZXIpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgotICAgIGV4cGxpY2l0IENTU1Rva2VuaXplcihjb25zdCBTdHJpbmcmKTsKLSAgICBDU1NU
b2tlbml6ZXIoY29uc3QgU3RyaW5nJiwgQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyJik7IC8vIEZv
ciB0aGUgaW5zcGVjdG9yCisgICAgQ1NTVG9rZW5pemVyKENTU1Rva2VuaXplciYmKSA9IGRlZmF1
bHQ7CiAKICAgICBDU1NQYXJzZXJUb2tlblJhbmdlIHRva2VuUmFuZ2UoKSBjb25zdDsKICAgICB1
bnNpZ25lZCB0b2tlbkNvdW50KCk7CkBAIC01NCw2ICs1MywxMiBAQCBwdWJsaWM6CiAgICAgVmVj
dG9yPFN0cmluZz4mJiBlc2NhcGVkU3RyaW5nc0ZvckFkb3B0aW9uKCkgeyByZXR1cm4gV1RGTW92
ZShtX3N0cmluZ1Bvb2wpOyB9CiAKIHByaXZhdGU6CisgICAgZnJpZW5kIENTU1Rva2VuaXplciBt
YWtlQ1NTVG9rZW5pemVyKGNvbnN0IFN0cmluZyYpOworICAgIGZyaWVuZCBDU1NUb2tlbml6ZXIg
bWFrZUNTU1Rva2VuaXplcihjb25zdCBTdHJpbmcmLCBDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIm
KTsKKworICAgIGV4cGxpY2l0IENTU1Rva2VuaXplcihTdHJpbmcmJik7CisgICAgQ1NTVG9rZW5p
emVyKFN0cmluZyYmLCBDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXImKTsgLy8gRm9yIHRoZSBpbnNw
ZWN0b3IKKwogICAgIENTU1BhcnNlclRva2VuIG5leHRUb2tlbigpOwogCiAgICAgVUNoYXIgY29u
c3VtZSgpOwpAQCAtMTI1LDQgKzEzMCw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFN0cmluZz4g
bV9zdHJpbmdQb29sOwogfTsKIAorQ1NTVG9rZW5pemVyIG1ha2VDU1NUb2tlbml6ZXIoY29uc3Qg
U3RyaW5nJik7CitDU1NUb2tlbml6ZXIgbWFrZUNTU1Rva2VuaXplcihjb25zdCBTdHJpbmcmLCBD
U1NQYXJzZXJPYnNlcnZlcldyYXBwZXImKTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NUb2tlbml6ZXJJbnB1dFN0cmVh
bS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NUb2tlbml6ZXJJbnB1dFN0cmVhbS5o
CmluZGV4IDk2ZTZlNjlkMDBhMzU0NTY3NjYwNzBkNjJjNzhhZWFjYzAxYjk3MGEuLjY5NzNmZWJk
MTQxODA1MDA3NDJkY2RkOGIzMTIwMWZiMzU4YTkyMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9wYXJzZXIvQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvcGFyc2VyL0NTU1Rva2VuaXplcklucHV0U3RyZWFtLmgKQEAgLTQwLDYgKzQwLDcg
QEAgY2xhc3MgQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0gewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IENTU1Rva2VuaXplcklucHV0U3RyZWFtKGNv
bnN0IFN0cmluZyYgaW5wdXQpOworICAgIENTU1Rva2VuaXplcklucHV0U3RyZWFtKENTU1Rva2Vu
aXplcklucHV0U3RyZWFtJiYpID0gZGVmYXVsdDsKIAogICAgIC8vIEdldHMgdGhlIGNoYXIgaW4g
dGhlIHN0cmVhbSByZXBsYWNpbmcgTlVMIGNoYXJhY3RlcnMgd2l0aCBhIHVuaWNvZGUKICAgICAv
LyByZXBsYWNlbWVudCBjaGFyYWN0ZXIuIFdpbGwgcmV0dXJuIChOVUwpIGtFbmRPZkZpbGVNYXJr
ZXIgd2hlbiBhdCB0aGUKQEAgLTQ3LDE5ICs0OCwxNiBAQCBwdWJsaWM6CiAgICAgVUNoYXIgbmV4
dElucHV0Q2hhcigpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAobV9vZmZzZXQgPj0gbV9zdHJp
bmdMZW5ndGgpCi0gICAgICAgICAgICByZXR1cm4gJ1wwJzsKLSAgICAgICAgVUNoYXIgcmVzdWx0
ID0gKCptX3N0cmluZylbbV9vZmZzZXRdOwotICAgICAgICByZXR1cm4gcmVzdWx0ID8gcmVzdWx0
IDogMHhGRkZEOworICAgICAgICAgICAgcmV0dXJuIGtFbmRPZkZpbGVNYXJrZXI7CisgICAgICAg
IHJldHVybiAoKm1fc3RyaW5nKVttX29mZnNldF07CiAgICAgfQogCiAgICAgLy8gR2V0cyB0aGUg
Y2hhciBhdCBsb29rYWhlYWRPZmZzZXQgZnJvbSB0aGUgY3VycmVudCBzdHJlYW0gcG9zaXRpb24u
IFdpbGwKICAgICAvLyByZXR1cm4gTlVMIChrRW5kT2ZGaWxlTWFya2VyKSBpZiB0aGUgc3RyZWFt
IHBvc2l0aW9uIGlzIGF0IHRoZSBlbmQuCi0gICAgLy8gTk9URTogVGhpcyBtYXkgKmFsc28qIHJl
dHVybiBOVUwgaWYgdGhlcmUncyBvbmUgaW4gdGhlIGlucHV0ISBOZXZlcgotICAgIC8vIGNvbXBh
cmUgdGhlIHJldHVybiB2YWx1ZSB0byAnXDAnLgotICAgIFVDaGFyIHBlZWtXaXRob3V0UmVwbGFj
ZW1lbnQodW5zaWduZWQgbG9va2FoZWFkT2Zmc2V0KSBjb25zdAorICAgIFVDaGFyIHBlZWsodW5z
aWduZWQgbG9va2FoZWFkT2Zmc2V0KSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKChtX29mZnNl
dCArIGxvb2thaGVhZE9mZnNldCkgPj0gbV9zdHJpbmdMZW5ndGgpCi0gICAgICAgICAgICByZXR1
cm4gJ1wwJzsKKyAgICAgICAgICAgIHJldHVybiBrRW5kT2ZGaWxlTWFya2VyOwogICAgICAgICBy
ZXR1cm4gKCptX3N0cmluZylbbV9vZmZzZXQgKyBsb29rYWhlYWRPZmZzZXRdOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9NZWRpYVF1ZXJ5UGFyc2VyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvTWVkaWFRdWVyeVBhcnNlci5jcHAKaW5kZXgg
MTgxMjBjZTk3OGYzZTBlMjRhMTdiN2Y2N2IwMWRkODlkOGMyMTAxZC4uN2UwNWY5NGE5MjhkYmJh
NDgwNmMwOTY0ZjNkZGM4YmE1M2RmYjcwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L3BhcnNlci9NZWRpYVF1ZXJ5UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFy
c2VyL01lZGlhUXVlcnlQYXJzZXIuY3BwCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogUmVmUHRyPE1lZGlhUXVlcnlTZXQ+IE1lZGlhUXVlcnlQYXJzZXI6OnBhcnNlTWVk
aWFRdWVyeVNldChjb25zdCBTdHJpbmcmIHF1ZXJ5U3RyaW5nLCBNZWRpYVF1ZXJ5UGFyc2VyQ29u
dGV4dCBjb250ZXh0KQogewotICAgIHJldHVybiBwYXJzZU1lZGlhUXVlcnlTZXQoQ1NTVG9rZW5p
emVyKHF1ZXJ5U3RyaW5nKS50b2tlblJhbmdlKCksIGNvbnRleHQpOworICAgIHJldHVybiBwYXJz
ZU1lZGlhUXVlcnlTZXQobWFrZUNTU1Rva2VuaXplcihxdWVyeVN0cmluZykudG9rZW5SYW5nZSgp
LCBjb250ZXh0KTsKIH0KIAogUmVmUHRyPE1lZGlhUXVlcnlTZXQ+IE1lZGlhUXVlcnlQYXJzZXI6
OnBhcnNlTWVkaWFRdWVyeVNldChDU1NQYXJzZXJUb2tlblJhbmdlIHJhbmdlLCBNZWRpYVF1ZXJ5
UGFyc2VyQ29udGV4dCBjb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3Bh
cnNlci9TaXplc0F0dHJpYnV0ZVBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2Vy
L1NpemVzQXR0cmlidXRlUGFyc2VyLmNwcAppbmRleCA2NDhiNDlhMzlmNTlhYmU4NzdjMWJhODQ5
ZjE1OWM4ODM4NTFhNGZmLi5mZDg3ZTRiZmRhZDUxNjFjMjIwMjk5OGVkZjY5OTY2OTU5OTVhOTM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL1NpemVzQXR0cmlidXRlUGFy
c2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL1NpemVzQXR0cmlidXRlUGFy
c2VyLmNwcApAQCAtNzEsNyArNzEsNyBAQCBTaXplc0F0dHJpYnV0ZVBhcnNlcjo6U2l6ZXNBdHRy
aWJ1dGVQYXJzZXIoY29uc3QgU3RyaW5nJiBhdHRyaWJ1dGUsIGNvbnN0IERvY3VtZQogICAgIDog
bV9kb2N1bWVudChkb2N1bWVudCkKICAgICAsIG1fbWVkaWFRdWVyeUR5bmFtaWNSZXN1bHRzKG1l
ZGlhUXVlcnlEeW5hbWljUmVzdWx0cykKIHsKLSAgICBtX2lzVmFsaWQgPSBwYXJzZShDU1NUb2tl
bml6ZXIoYXR0cmlidXRlKS50b2tlblJhbmdlKCkpOworICAgIG1faXNWYWxpZCA9IHBhcnNlKG1h
a2VDU1NUb2tlbml6ZXIoYXR0cmlidXRlKS50b2tlblJhbmdlKCkpOwogfQogCiBmbG9hdCBTaXpl
c0F0dHJpYnV0ZVBhcnNlcjo6bGVuZ3RoKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNl
Y3Rpb25PYnNlcnZlci5jcHAKaW5kZXggMGM5NzU2NTI4NGU0ZjcyNWI2NTliODZhNGNjOGJhOTJh
MDdmNzBlOS4uMmI0YWVmMzdlNDI0OGZjMzQ4MjM4NDkyNDQ2MWFjOTc2OTU5MTNiZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlci5jcHAKQEAgLTQzLDcgKzQz
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgRXhjZXB0aW9uT3I8TGVuZ3RoQm94
PiBwYXJzZVJvb3RNYXJnaW4oU3RyaW5nJiByb290TWFyZ2luKQogewotICAgIENTU1Rva2VuaXpl
ciB0b2tlbml6ZXIocm9vdE1hcmdpbik7CisgICAgYXV0byB0b2tlbml6ZXIgPSBtYWtlQ1NTVG9r
ZW5pemVyKHJvb3RNYXJnaW4pOwogICAgIGF1dG8gdG9rZW5SYW5nZSA9IHRva2VuaXplci50b2tl
blJhbmdlKCk7CiAgICAgVmVjdG9yPExlbmd0aCwgND4gbWFyZ2luczsKICAgICB3aGlsZSAoIXRv
a2VuUmFuZ2UuYXRFbmQoKSkgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggZjQ3
MzJiMTFmMjYwYWQ5YzYyZWEzMjdjNTgyODZhY2ZjYTM0NmJjZi4uY2I4NDIxZDg1NTVkN2M1ZWEx
MThiNTQzZWVmNzQ0Y2YwN2UzMjFjMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMjAtMDQtMDggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KKworICAgICAgICBxdWVyeVNlbGVjdG9yKCIjXHUwMDAwIikgc2hvdWxkIG1hdGNoIGFuIGVs
ZW1lbnQgd2l0aCBJRCBVK0ZGRkQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxMDExOQorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgor
CisgICAgICAgIEltcG9ydCB0ZXN0IGNvdmVyYWdlIGZyb20gdXBzdHJlYW0gV1BULgorCisgICAg
ICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS9ub2Rlcy9QYXJlbnROb2RlLXF1ZXJ5U2VsZWN0
b3ItZXNjYXBlcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10
ZXN0cy9kb20vbm9kZXMvUGFyZW50Tm9kZS1xdWVyeVNlbGVjdG9yLWVzY2FwZXMuaHRtbDogQWRk
ZWQuCisKIDIwMjAtMDQtMDggIFJvYiBCdWlzICA8cmJ1aXNAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBJbXBvcnQgZmV0Y2gvb3JpZ2luL2Fzc29ydGVkLndpbmRvdy5qcwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20vbm9kZXMvUGFyZW50
Tm9kZS1xdWVyeVNlbGVjdG9yLWVzY2FwZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20vbm9kZXMvUGFyZW50Tm9kZS1xdWVyeVNl
bGVjdG9yLWVzY2FwZXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyMjNmOWQyOTk0ZjU2NDJi
YzJlMzJkZjQ5YzI1MGU5ZWNiNTQzYTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS9ub2Rlcy9QYXJlbnROb2RlLXF1ZXJ5
U2VsZWN0b3ItZXNjYXBlcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3MCBAQAorCitQQVNTICJu
b25lc2NhcGVkIiBzaG91bGQgbWF0Y2ggd2l0aCAiI25vbmVzY2FwZWQiIAorUEFTUyAiMG5leHRJ
c1doaXRlU3BhY2UiIHNob3VsZCBtYXRjaCB3aXRoICIjXFwzMCBuZXh0SXNXaGl0ZVNwYWNlIiAK
K1BBU1MgIjBuZXh0SXNOb3RIZXhMZXR0ZXJzIiBzaG91bGQgbWF0Y2ggd2l0aCAiI1xcMzBuZXh0
SXNOb3RIZXhMZXR0ZXJzIiAKK1BBU1MgIjBjb25uZWN0SGV4TW9yZVRoYW42SGV4IiBzaG91bGQg
bWF0Y2ggd2l0aCAiI1xcMDAwMDMwY29ubmVjdEhleE1vcmVUaGFuNkhleCIgCitQQVNTICIwc3Bh
Y2VNb3JlVGhhbjZIZXgiIHNob3VsZCBtYXRjaCB3aXRoICIjXFwwMDAwMzAgc3BhY2VNb3JlVGhh
bjZIZXgiIAorUEFTUyAiemVyb++/vSIgc2hvdWxkIG1hdGNoIHdpdGggIiN6ZXJvXFwwIiAKK1BB
U1MgInplcm9cdTAwMDAiIHNob3VsZCBuZXZlciBtYXRjaCB3aXRoICIjemVyb1xcMCIgCitQQVNT
ICJ6ZXJv77+9IiBzaG91bGQgbWF0Y2ggd2l0aCAiI3plcm9cXDAwMDAwMCIgCitQQVNTICJ6ZXJv
XHUwMDAwIiBzaG91bGQgbmV2ZXIgbWF0Y2ggd2l0aCAiI3plcm9cXDAwMDAwMCIgCitQQVNTICLv
v71zdXJyb2dhdGVGaXJzdCIgc2hvdWxkIG1hdGNoIHdpdGggIiNcXGQ4M2Qgc3Vycm9nYXRlRmly
c3QiIAorUEFTUyAiXHVkODNkc3Vycm9nYXRlRmlyc3QiIHNob3VsZCBuZXZlciBtYXRjaCB3aXRo
ICIjXFxkODNkIHN1cnJvZ2F0ZUZpcnN0IiAKK1BBU1MgInN1cnJvZ2F0ZVNlY29uZO+/vSIgc2hv
dWxkIG1hdGNoIHdpdGggIiNzdXJyb2dhdGVTZWNvbmRcXGRkMTEiIAorUEFTUyAic3Vycm9nYXRl
U2Vjb25kXHVkZDExIiBzaG91bGQgbmV2ZXIgbWF0Y2ggd2l0aCAiI3N1cnJvZ2F0ZVNlY29uZFxc
ZGQxMSIgCitQQVNTICJzdXJyb2dhdGVQYWly77+977+9IiBzaG91bGQgbWF0Y2ggd2l0aCAiI3N1
cnJvZ2F0ZVBhaXJcXGQ4M2RcXGRkMTEiIAorUEFTUyAic3Vycm9nYXRlUGFpcvCflJEiIHNob3Vs
ZCBuZXZlciBtYXRjaCB3aXRoICIjc3Vycm9nYXRlUGFpclxcZDgzZFxcZGQxMSIgCitQQVNTICJv
dXRPZlJhbmdl77+9IiBzaG91bGQgbWF0Y2ggd2l0aCAiI291dE9mUmFuZ2VcXDExMDAwMCIgCitQ
QVNTICJvdXRPZlJhbmdl77+9IiBzaG91bGQgbWF0Y2ggd2l0aCAiI291dE9mUmFuZ2VcXDExMDAz
MCIgCitQQVNTICJvdXRPZlJhbmdlMCIgc2hvdWxkIG5ldmVyIG1hdGNoIHdpdGggIiNvdXRPZlJh
bmdlXFwxMTAwMzAiIAorUEFTUyAib3V0T2ZSYW5nZe+/vSIgc2hvdWxkIG1hdGNoIHdpdGggIiNv
dXRPZlJhbmdlXFw1NTU1NTUiIAorUEFTUyAib3V0T2ZSYW5nZe+/vSIgc2hvdWxkIG1hdGNoIHdp
dGggIiNvdXRPZlJhbmdlXFxmZmZmZmYiIAorUEFTUyAiZW9mXFwiIHNob3VsZCBuZXZlciBtYXRj
aCB3aXRoICIjZW9mXFwiIAorUEFTUyAiLmNvbW1hIiBzaG91bGQgbWF0Y2ggd2l0aCAiI1xcLmNv
bW1hIiAKK1BBU1MgIi1taW51cyIgc2hvdWxkIG1hdGNoIHdpdGggIiNcXC1taW51cyIgCitQQVNT
ICJnIiBzaG91bGQgbWF0Y2ggd2l0aCAiI1xcZyIgCitQQVNTICJhQk1QUmVndWxhciIgc2hvdWxk
IG1hdGNoIHdpdGggIiNcXDYxIEJNUFJlZ3VsYXIiIAorUEFTUyAi8J+UkW5vbkJNUCIgc2hvdWxk
IG1hdGNoIHdpdGggIiNcXDFmNTExIG5vbkJNUCIgCitQQVNTICIwMGNvbnRpbnVlRXNjYXBlcyIg
c2hvdWxkIG1hdGNoIHdpdGggIiNcXDMwXFwzMCBjb250aW51ZUVzY2FwZXMiIAorUEFTUyAiMDBj
b250aW51ZUVzY2FwZXMiIHNob3VsZCBtYXRjaCB3aXRoICIjXFwzMCBcXDMwIGNvbnRpbnVlRXNj
YXBlcyIgCitQQVNTICJjb250aW51ZUVzY2FwZXMwMCIgc2hvdWxkIG1hdGNoIHdpdGggIiNjb250
aW51ZUVzY2FwZXNcXDMwIFxcMzAgIiAKK1BBU1MgImNvbnRpbnVlRXNjYXBlczAwIiBzaG91bGQg
bWF0Y2ggd2l0aCAiI2NvbnRpbnVlRXNjYXBlc1xcMzAgXFwzMCIgCitQQVNTICJjb250aW51ZUVz
Y2FwZXMwMCIgc2hvdWxkIG1hdGNoIHdpdGggIiNjb250aW51ZUVzY2FwZXNcXDMwXFwzMCAiIAor
UEFTUyAiY29udGludWVFc2NhcGVzMDAiIHNob3VsZCBtYXRjaCB3aXRoICIjY29udGludWVFc2Nh
cGVzXFwzMFxcMzAiIAorUEFTUyAiaGVsbG8iIHNob3VsZCBtYXRjaCB3aXRoICIjaGVsXFw2Q28i
IAorUEFTUyAiJkIiIHNob3VsZCBtYXRjaCB3aXRoICIjXFwyNiBCIiAKK1BBU1MgImhlbGxvIiBz
aG91bGQgbWF0Y2ggd2l0aCAiI2hlbFxcNkMgbyIgCitQQVNTICJzcGFjZXMiIHNob3VsZCBtYXRj
aCB3aXRoICIjc3BhY1xcNjVcclxucyIgCitQQVNTICJzcGFjZXMiIHNob3VsZCBtYXRjaCB3aXRo
ICIjc3BcXDYxXHRjXFw2NVxmcyIgCitQQVNTICJ0ZXN07Z6ZIiBzaG91bGQgbWF0Y2ggd2l0aCAi
I3Rlc3RcXEQ3OTkiIAorUEFTUyAi7oCAIiBzaG91bGQgbWF0Y2ggd2l0aCAiI1xcRTAwMCIgCitQ
QVNTICJ0ZXN0IiBzaG91bGQgbWF0Y2ggd2l0aCAiI3RlXFxzXFx0IiAKK1BBU1MgInNwYWNlcyBp
blx0aWRlbnQiIHNob3VsZCBtYXRjaCB3aXRoICIjc3BhY2VzXFwgaW5cXFx0aWRlbnQiIAorUEFT
UyAiLiw6ISIgc2hvdWxkIG1hdGNoIHdpdGggIiNcXC5cXCxcXDpcXCEiIAorUEFTUyAibnVsbO+/
vSIgc2hvdWxkIG1hdGNoIHdpdGggIiNudWxsXFwwIiAKK1BBU1MgIm51bGzvv70iIHNob3VsZCBt
YXRjaCB3aXRoICIjbnVsbFxcMDAwMCIgCitQQVNTICJsYXJnZe+/vSIgc2hvdWxkIG1hdGNoIHdp
dGggIiNsYXJnZVxcMTEwMDAwIiAKK1BBU1MgImxhcmdl77+9IiBzaG91bGQgbWF0Y2ggd2l0aCAi
I2xhcmdlXFwyMzQ1NmEiIAorUEFTUyAic3Vycm9nYXRl77+9IiBzaG91bGQgbWF0Y2ggd2l0aCAi
I3N1cnJvZ2F0ZVxcRDgwMCIgCitQQVNTICJzdXJyb2dhdGXvv70iIHNob3VsZCBtYXRjaCB3aXRo
ICIjc3Vycm9nYXRlXFwwREJBQyIgCitQQVNTICLvv71zdXJyb2dhdGUiIHNob3VsZCBtYXRjaCB3
aXRoICIjXFwwMERGRkZzdXJyb2dhdGUiIAorUEFTUyAi9I+/vyIgc2hvdWxkIG1hdGNoIHdpdGgg
IiNcXDEwZkZmRiIgCitQQVNTICL0j7+/MCIgc2hvdWxkIG1hdGNoIHdpdGggIiNcXDEwZkZmRjAi
IAorUEFTUyAi9ICAgDAwIiBzaG91bGQgbWF0Y2ggd2l0aCAiI1xcMTAwMDAwMDAiIAorUEFTUyAi
ZW9m77+9IiBzaG91bGQgbWF0Y2ggd2l0aCAiI2VvZlxcIiAKK1BBU1MgInNpbXBsZS1pZGVudCIg
c2hvdWxkIG1hdGNoIHdpdGggIiNzaW1wbGUtaWRlbnQiIAorUEFTUyAidGVzdGluZzEyMyIgc2hv
dWxkIG1hdGNoIHdpdGggIiN0ZXN0aW5nMTIzIiAKK1BBU1MgIl91bmRlcnNjb3JlIiBzaG91bGQg
bWF0Y2ggd2l0aCAiI191bmRlcnNjb3JlIiAKK1BBU1MgIi10ZXh0IiBzaG91bGQgbWF0Y2ggd2l0
aCAiIy10ZXh0IiAKK1BBU1MgIi1tIiBzaG91bGQgbWF0Y2ggd2l0aCAiIy1cXDZkIiAKK1BBU1Mg
Ii0tYWJjIiBzaG91bGQgbWF0Y2ggd2l0aCAiIy0tYWJjIiAKK1BBU1MgIi0tIiBzaG91bGQgbWF0
Y2ggd2l0aCAiIy0tIiAKK1BBU1MgIi0tMTEiIHNob3VsZCBtYXRjaCB3aXRoICIjLS0xMSIgCitQ
QVNTICItLS0iIHNob3VsZCBtYXRjaCB3aXRoICIjLS0tIiAKK1BBU1MgIuKAgyIgc2hvdWxkIG1h
dGNoIHdpdGggIiPigIMiIAorUEFTUyAiwqAiIHNob3VsZCBtYXRjaCB3aXRoICIjwqAiIAorUEFT
UyAi4Yi0IiBzaG91bGQgbWF0Y2ggd2l0aCAiI+GItCIgCitQQVNTICLwko2FIiBzaG91bGQgbWF0
Y2ggd2l0aCAiI/CSjYUiIAorUEFTUyAi77+9IiBzaG91bGQgbWF0Y2ggd2l0aCAiI1x1MDAwMCIg
CitQQVNTICJhYu+/vWMiIHNob3VsZCBtYXRjaCB3aXRoICIjYWJcdTAwMDBjIiAKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20vbm9k
ZXMvUGFyZW50Tm9kZS1xdWVyeVNlbGVjdG9yLWVzY2FwZXMuaHRtbCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL25vZGVzL1BhcmVudE5vZGUtcXVlcnlT
ZWxlY3Rvci1lc2NhcGVzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjVhNzVlNWMwMzA2NzdmZTNiZjYzZTQ0
NDNhYzJiZmVjYTM0OGM0NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL25vZGVzL1BhcmVudE5vZGUtcXVlcnlTZWxlY3Rv
ci1lc2NhcGVzLmh0bWwKQEAgLTAsMCArMSwxMjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPG1ldGEg
Y2hhcnNldD11dGYtOD4KKzx0aXRsZT5xdWVyeVNlbGVjdG9yKCkgd2l0aCBDU1MgZXNjYXBlczwv
dGl0bGU+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vZG9tLnNwZWMud2hhdHdnLm9y
Zy8jZG9tLXBhcmVudG5vZGUtcXVlcnlzZWxlY3RvciI+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9
Imh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3Mtc3ludGF4LyNjb25zdW1lLWVzY2FwZWQtY29k
ZS1wb2ludCI+Cis8bGluayByZWw9ImF1dGhvciIgdGl0bGU9IkRvbWVuaWMgRGVuaWNvbGEiIGhy
ZWY9Im1haWx0bzpkQGRvbWVuaWMubWUiPgorPGxpbmsgcmVsPSJhdXRob3IiIHRpdGxlPSJiZWxs
YmluZCIgaHJlZj0ibWFpbHRvOmJlbGxiaW5kQGdtYWlsLmNvbSI+Cis8c2NyaXB0IHNyYz0iL3Jl
c291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNl
cy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQ+CisidXNlIHN0cmlj
dCI7CisKK2Z1bmN0aW9uIHRlc3RNYXRjaGVkKGlkLCBzZWxlY3RvcikgeworICB0ZXN0KCgpID0+
IHsKKyAgICBjb25zdCBjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsK
KyAgICBjb25zdCBjaGlsZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICBj
aGlsZC5pZCA9IGlkOworCisgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGNoaWxkKTsKKworICAg
IGFzc2VydF9lcXVhbHMoY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpLCBjaGlsZCk7
CisgIH0sIGAke0pTT04uc3RyaW5naWZ5KGlkKX0gc2hvdWxkIG1hdGNoIHdpdGggJHtKU09OLnN0
cmluZ2lmeShzZWxlY3Rvcil9YCk7Cit9CisKK2Z1bmN0aW9uIHRlc3ROZXZlck1hdGNoZWQoaWQs
IHNlbGVjdG9yKSB7CisgIHRlc3QoKCkgPT4geworICAgIGNvbnN0IGNvbnRhaW5lciA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgIGNvbnN0IGNoaWxkID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgic3BhbiIpOworICAgIGNoaWxkLmlkID0gaWQ7CisKKyAgICBjb250YWluZXIu
YXBwZW5kQ2hpbGQoY2hpbGQpOworCisgICAgYXNzZXJ0X2VxdWFscyhjb250YWluZXIucXVlcnlT
ZWxlY3RvcihzZWxlY3RvciksIG51bGwpOworICB9LCBgJHtKU09OLnN0cmluZ2lmeShpZCl9IHNo
b3VsZCBuZXZlciBtYXRjaCB3aXRoICR7SlNPTi5zdHJpbmdpZnkoc2VsZWN0b3IpfWApOworfQor
CisvLyA0LjMuNyBmcm9tIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3Mtc3ludGF4LyNjb25z
dW1lLWVzY2FwZWQtY29kZS1wb2ludAordGVzdE1hdGNoZWQoIm5vbmVzY2FwZWQiLCAiI25vbmVz
Y2FwZWQiKTsKKworLy8gLSBlc2NhcGUgaGV4IGRpZ2l0Cit0ZXN0TWF0Y2hlZCgiMG5leHRJc1do
aXRlU3BhY2UiLCAiI1xcMzAgbmV4dElzV2hpdGVTcGFjZSIpOwordGVzdE1hdGNoZWQoIjBuZXh0
SXNOb3RIZXhMZXR0ZXJzIiwgIiNcXDMwbmV4dElzTm90SGV4TGV0dGVycyIpOwordGVzdE1hdGNo
ZWQoIjBjb25uZWN0SGV4TW9yZVRoYW42SGV4IiwgIiNcXDAwMDAzMGNvbm5lY3RIZXhNb3JlVGhh
bjZIZXgiKTsKK3Rlc3RNYXRjaGVkKCIwc3BhY2VNb3JlVGhhbjZIZXgiLCAiI1xcMDAwMDMwIHNw
YWNlTW9yZVRoYW42SGV4Iik7CisKKy8vIC0gaGV4IGRpZ2l0IHNwZWNpYWwgcmVwbGFjZW1lbnQK
Ky8vIDEuIHplcm8gcG9pbnRzCit0ZXN0TWF0Y2hlZCgiemVyb1x1e2ZmZmR9IiwgIiN6ZXJvXFww
Iik7Cit0ZXN0TmV2ZXJNYXRjaGVkKCJ6ZXJvXHV7MH0iLCAiI3plcm9cXDAiKTsKK3Rlc3RNYXRj
aGVkKCJ6ZXJvXHV7ZmZmZH0iLCAiI3plcm9cXDAwMDAwMCIpOwordGVzdE5ldmVyTWF0Y2hlZCgi
emVyb1x1ezB9IiwgIiN6ZXJvXFwwMDAwMDAiKTsKKy8vIDIuIHN1cnJvZ2F0ZSBwb2ludHMKK3Rl
c3RNYXRjaGVkKCJcdXtmZmZkfXN1cnJvZ2F0ZUZpcnN0IiwgIiNcXGQ4M2Qgc3Vycm9nYXRlRmly
c3QiKTsKK3Rlc3ROZXZlck1hdGNoZWQoIlx1ZDgzZHN1cnJvZ2F0ZUZpcnN0IiwgIiNcXGQ4M2Qg
c3Vycm9nYXRlRmlyc3QiKTsKK3Rlc3RNYXRjaGVkKCJzdXJyb2dhdGVTZWNvbmRcdXtmZmZkfSIs
ICIjc3Vycm9nYXRlU2Vjb25kXFxkZDExIik7Cit0ZXN0TmV2ZXJNYXRjaGVkKCJzdXJyb2dhdGVT
ZWNvbmRcdWRkMTEiLCAiI3N1cnJvZ2F0ZVNlY29uZFxcZGQxMSIpOwordGVzdE1hdGNoZWQoInN1
cnJvZ2F0ZVBhaXJcdXtmZmZkfVx1e2ZmZmR9IiwgIiNzdXJyb2dhdGVQYWlyXFxkODNkXFxkZDEx
Iik7Cit0ZXN0TmV2ZXJNYXRjaGVkKCJzdXJyb2dhdGVQYWlyXHV7MWY1MTF9IiwgIiNzdXJyb2dh
dGVQYWlyXFxkODNkXFxkZDExIik7CisvLyAzLiBvdXQgb2YgcmFuZ2UgcG9pbnRzCit0ZXN0TWF0
Y2hlZCgib3V0T2ZSYW5nZVx1e2ZmZmR9IiwgIiNvdXRPZlJhbmdlXFwxMTAwMDAiKTsKK3Rlc3RN
YXRjaGVkKCJvdXRPZlJhbmdlXHV7ZmZmZH0iLCAiI291dE9mUmFuZ2VcXDExMDAzMCIpOwordGVz
dE5ldmVyTWF0Y2hlZCgib3V0T2ZSYW5nZVx1ezMwfSIsICIjb3V0T2ZSYW5nZVxcMTEwMDMwIik7
Cit0ZXN0TWF0Y2hlZCgib3V0T2ZSYW5nZVx1e2ZmZmR9IiwgIiNvdXRPZlJhbmdlXFw1NTU1NTUi
KTsKK3Rlc3RNYXRjaGVkKCJvdXRPZlJhbmdlXHV7ZmZmZH0iLCAiI291dE9mUmFuZ2VcXGZmZmZm
ZiIpOworCisvLyAtIGVzY2FwZSBFT0YKK3Rlc3ROZXZlck1hdGNoZWQoImVvZlxcIiwgIiNlb2Zc
XCIpOworCisvLyAtIGVzY2FwZSBhbnl0aG9uZyBlbHNlCit0ZXN0TWF0Y2hlZCgiLmNvbW1hIiwg
IiNcXC5jb21tYSIpOwordGVzdE1hdGNoZWQoIi1taW51cyIsICIjXFwtbWludXMiKTsKK3Rlc3RN
YXRjaGVkKCJnIiwgIiNcXGciKTsKKworLy8gbm9uIGVkZ2UgY2FzZXMKK3Rlc3RNYXRjaGVkKCJh
Qk1QUmVndWxhciIsICIjXFw2MSBCTVBSZWd1bGFyIik7Cit0ZXN0TWF0Y2hlZCgiXHV7MWY1MTF9
bm9uQk1QIiwgIiNcXDFmNTExIG5vbkJNUCIpOwordGVzdE1hdGNoZWQoIjAwY29udGludWVFc2Nh
cGVzIiwgIiNcXDMwXFwzMCBjb250aW51ZUVzY2FwZXMiKTsKK3Rlc3RNYXRjaGVkKCIwMGNvbnRp
bnVlRXNjYXBlcyIsICIjXFwzMCBcXDMwIGNvbnRpbnVlRXNjYXBlcyIpOwordGVzdE1hdGNoZWQo
ImNvbnRpbnVlRXNjYXBlczAwIiwgIiNjb250aW51ZUVzY2FwZXNcXDMwIFxcMzAgIik7Cit0ZXN0
TWF0Y2hlZCgiY29udGludWVFc2NhcGVzMDAiLCAiI2NvbnRpbnVlRXNjYXBlc1xcMzAgXFwzMCIp
OwordGVzdE1hdGNoZWQoImNvbnRpbnVlRXNjYXBlczAwIiwgIiNjb250aW51ZUVzY2FwZXNcXDMw
XFwzMCAiKTsKK3Rlc3RNYXRjaGVkKCJjb250aW51ZUVzY2FwZXMwMCIsICIjY29udGludWVFc2Nh
cGVzXFwzMFxcMzAiKTsKKworLy8gaWRlbnQgdGVzdHMgY2FzZSBmcm9tIENTUyB0ZXN0cyBvZiBj
aHJvbWl1bSBzb3VyY2U6IGh0dHBzOi8vZ29vLmdsLzNDeGRvdgordGVzdE1hdGNoZWQoImhlbGxv
IiwgIiNoZWxcXDZDbyIpOwordGVzdE1hdGNoZWQoIiZCIiwgIiNcXDI2IEIiKTsKK3Rlc3RNYXRj
aGVkKCJoZWxsbyIsICIjaGVsXFw2QyBvIik7Cit0ZXN0TWF0Y2hlZCgic3BhY2VzIiwgIiNzcGFj
XFw2NVxyXG5zIik7Cit0ZXN0TWF0Y2hlZCgic3BhY2VzIiwgIiNzcFxcNjFcdGNcXDY1XGZzIik7
Cit0ZXN0TWF0Y2hlZCgidGVzdFx1e0Q3OTl9IiwgIiN0ZXN0XFxENzk5Iik7Cit0ZXN0TWF0Y2hl
ZCgiXHV7RTAwMH0iLCAiI1xcRTAwMCIpOwordGVzdE1hdGNoZWQoInRlc3QiLCAiI3RlXFxzXFx0
Iik7Cit0ZXN0TWF0Y2hlZCgic3BhY2VzIGluXHRpZGVudCIsICIjc3BhY2VzXFwgaW5cXFx0aWRl
bnQiKTsKK3Rlc3RNYXRjaGVkKCIuLDohIiwgIiNcXC5cXCxcXDpcXCEiKTsKK3Rlc3RNYXRjaGVk
KCJudWxsXHV7ZmZmZH0iLCAiI251bGxcXDAiKTsKK3Rlc3RNYXRjaGVkKCJudWxsXHV7ZmZmZH0i
LCAiI251bGxcXDAwMDAiKTsKK3Rlc3RNYXRjaGVkKCJsYXJnZVx1e2ZmZmR9IiwgIiNsYXJnZVxc
MTEwMDAwIik7Cit0ZXN0TWF0Y2hlZCgibGFyZ2VcdXtmZmZkfSIsICIjbGFyZ2VcXDIzNDU2YSIp
OwordGVzdE1hdGNoZWQoInN1cnJvZ2F0ZVx1e2ZmZmR9IiwgIiNzdXJyb2dhdGVcXEQ4MDAiKTsK
K3Rlc3RNYXRjaGVkKCJzdXJyb2dhdGVcdXtmZmZkfSIsICIjc3Vycm9nYXRlXFwwREJBQyIpOwor
dGVzdE1hdGNoZWQoIlx1e2ZmZmR9c3Vycm9nYXRlIiwgIiNcXDAwREZGRnN1cnJvZ2F0ZSIpOwor
dGVzdE1hdGNoZWQoIlx1ezEwZmZmZn0iLCAiI1xcMTBmRmZGIik7Cit0ZXN0TWF0Y2hlZCgiXHV7
MTBmZmZmfTAiLCAiI1xcMTBmRmZGMCIpOwordGVzdE1hdGNoZWQoIlx1ezEwMDAwMH0wMCIsICIj
XFwxMDAwMDAwMCIpOwordGVzdE1hdGNoZWQoImVvZlx1e2ZmZmR9IiwgIiNlb2ZcXCIpOworCit0
ZXN0TWF0Y2hlZCgic2ltcGxlLWlkZW50IiwgIiNzaW1wbGUtaWRlbnQiKTsKK3Rlc3RNYXRjaGVk
KCJ0ZXN0aW5nMTIzIiwgIiN0ZXN0aW5nMTIzIik7Cit0ZXN0TWF0Y2hlZCgiX3VuZGVyc2NvcmUi
LCAiI191bmRlcnNjb3JlIik7Cit0ZXN0TWF0Y2hlZCgiLXRleHQiLCAiIy10ZXh0Iik7Cit0ZXN0
TWF0Y2hlZCgiLW0iLCAiIy1cXDZkIik7Cit0ZXN0TWF0Y2hlZCgiLS1hYmMiLCAiIy0tYWJjIik7
Cit0ZXN0TWF0Y2hlZCgiLS0iLCAiIy0tIik7Cit0ZXN0TWF0Y2hlZCgiLS0xMSIsICIjLS0xMSIp
OwordGVzdE1hdGNoZWQoIi0tLSIsICIjLS0tIik7Cit0ZXN0TWF0Y2hlZCgiXHV7MjAwM30iLCAi
I1x1ezIwMDN9Iik7Cit0ZXN0TWF0Y2hlZCgiXHV7QTB9IiwgIiNcdXtBMH0iKTsKK3Rlc3RNYXRj
aGVkKCJcdXsxMjM0fSIsICIjXHV7MTIzNH0iKTsKK3Rlc3RNYXRjaGVkKCJcdXsxMjM0NX0iLCAi
I1x1ezEyMzQ1fSIpOwordGVzdE1hdGNoZWQoIlx1e2ZmZmR9IiwgIiNcdXswfSIpOwordGVzdE1h
dGNoZWQoImFiXHV7ZmZmZH1jIiwgIiNhYlx1ezB9YyIpOworPC9zY3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395881</attachid>
            <date>2020-04-08 16:15:16 -0700</date>
            <delta_ts>2020-04-08 17:43:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210119-20200408161515.patch</filename>
            <type>text/plain</type>
            <size>31850</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5NzYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDkyYjYwY2NhM2U0MDJiODcyNWI0MDhj
MWIyOWQ5YWRlMWM2NzBmZmYuLmE2NzIxNGU3N2RiNWE1MDQ0Yjg4ODcwMjVmZWRiNzBhNTQ2OTUw
NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAtMDQtMDggIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBxdWVyeVNlbGVjdG9yKCIjXHUwMDAwIikgc2hvdWxkIG1h
dGNoIGFuIGVsZW1lbnQgd2l0aCBJRCBVK0ZGRkQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDExOQorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmlu
IEFkbGVyLgorCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5jcHA6CisgICAgICAgIChX
VEY6OlN0cmluZ0ltcGw6OnJlcGxhY2UpOgorICAgICAgICBTbGlnaHRseSBvcHRpbWl6ZSB0aGUg
MTYtYml0IGNvZGUgcGF0aCBvZiBTdHJpbmdJbXBsOjpyZXBsYWNlKCkuIFNpbmNlIHdlIGtub3cK
KyAgICAgICAgdGhlcmUgaXMgbm8gY2hhcmFjdGVyIG1hdGNoIGZyb20gaW5kZXhlcyAwIHRvIGks
IHdlIGNhbiBzaW1wbHkgdXNlIG1lbWNweSBmb3IKKyAgICAgICAgdGhpcyByYW5nZS4KKwogMjAy
MC0wNC0wOCAgQWRyaWFuIFBlcmV6IGRlIENhc3RybyAgPGFwZXJlekBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtHVEs0XSBNYWtlIFBBTDo6c3lzdGVtQmVlcCgpIHdvcmsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1
YjYwMzMxOGFmYmRmNGFkNDVmMzU1MzJiM2E1ZTdiNGNjMTQzMzUyLi41ZjQ0YjhlYzA0ZDE3ZjYx
MTNmMzk4ZDQzOTgwZTBhZjk1OTNkMWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAKKzIw
MjAtMDQtMDggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBxdWVy
eVNlbGVjdG9yKCIjXHUwMDAwIikgc2hvdWxkIG1hdGNoIGFuIGVsZW1lbnQgd2l0aCBJRCBVK0ZG
RkQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDEx
OQorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIEFzIHBlciB0
aGUgc3BlY2lmaWNhdGlvbiBbMV1bMl0sIHdlIHNob3VsZCBwcmVwcm9jZXNzIHRoZSBpbnB1dCBz
dHJpbmcgYmVmb3JlIHBlcmZvcm1pbmcKKyAgICAgICAgQ1NTIHRva2VuaXphdGlvbi4gVGhlIHBy
ZXByb2Nlc3Npbmcgc3RlcCByZXBsYWNlcyBjZXJ0YWluIGNoYXJhY3RlcnMgaW4gdGhlIGlucHV0
IHN0cmluZy4KKworICAgICAgICBIb3dldmVyLCBvdXIgY29kZSBkaWQgbm90IGhhdmUgdGhpcyBw
cmVwcm9jZXNzaW5nIHN0ZXAgYW5kIGluc3RlYWQgd2FzIHRyeWluZyB0byBkZWFsCisgICAgICAg
IHdpdGggdGhvc2UgY2hhcmFjdGVycyBkdXJpbmcgdG9rZW5pemF0aW9uLiBUaGlzIGlzIGhvd2V2
ZXIgbm90IHdvcmtpbmcgYXMgZXhwZWN0ZWQgZm9yCisgICAgICAgIHRoZSAnXDAnIGNoYXJhY3Rl
ciAod2hpY2ggaXMgc3VwcG9zZWQgdG8gYmUgcmVwbGFjZWQgd2l0aCBVK0ZGRkQgUkVQTEFDRU1F
TlQgQ0hBUkFDVEVSKQorICAgICAgICBiZWNhdXNlIG91ciBjb2RlIGRlYWxzIHdpdGggU3RyaW5n
Vmlld3Mgb2YgdGhlIGlucHV0IFN0cmluZyBhbmQganVzdCBjb252ZXJ0cyBwYXJ0IG9mCisgICAg
ICAgIHRoZSBpbnB1dCBzdHJlYW0gdG8gU3RyaW5ncyAvIEF0b21TdHJpbmdzLgorCisgICAgICAg
IFRvIGFkZHJlc3MgdGhlIGlzc3VlLCB0aGlzIHBhdGNoIGFkZHMgYSBwcmVwcm9jZXNzaW5nIHN0
ZXAgdGhhdCByZXBsYWNlcyB0aGUgJ1wwJworICAgICAgICBjaGFyYWN0ZXIgd2l0aCB0aGUgVStG
RkZEIFJFUExBQ0VNRU5UIENIQVJBQ1RFUikuIEkgb3B0ZWQgbm90IHRvIHJlcGxhY2UgJ1xyJyBv
ciAnXGYnCisgICAgICAgIGNoYXJhY3RlcnMgc2luY2Ugb3VyIHRva2VuaXplciBzZWVtcyB0byBi
ZSBkZWFsaW5nIGZpbmUgd2l0aCB0aG9zZS4KKworICAgICAgICBbMV0gaHR0cHM6Ly9kcmFmdHMu
Y3Nzd2cub3JnL2Nzcy1zeW50YXgvI2lucHV0LXByZXByb2Nlc3NpbmcKKyAgICAgICAgWzJdIGh0
dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3Mtc3ludGF4LyNwYXJzZXItZW50cnktcG9pbnRzCisK
KyAgICAgICAgVGVzdDogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20vbm9kZXMv
UGFyZW50Tm9kZS1xdWVyeVNlbGVjdG9yLWVzY2FwZXMuaHRtbAorCisgICAgICAgICogY3NzL3Bh
cnNlci9DU1NUb2tlbml6ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJlcHJvY2Vzc1N0cmlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6OkNTU1Rva2VuaXplcik6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6Omxlc3NUaGFuKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1Rva2VuaXplcjo6aHlwaGVuTWludXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5p
emVyOjpoYXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6cmV2ZXJzZVNvbGlk
dXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpsZXR0ZXJVKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6Y29uc3VtZU51bWJlcik6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NUb2tlbml6ZXI6OmNvbnN1bWVJZGVudExpa2VUb2tlbik6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NUb2tlbml6ZXI6OmNvbnN1bWVTdHJpbmdUb2tlblVudGlsKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1Rva2VuaXplcjo6Y29uc3VtZVVuaWNvZGVSYW5nZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NUb2tlbml6ZXI6OmNvbnN1bWVVcmxUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NU
b2tlbml6ZXI6OmNvbnN1bWVCYWRVcmxSZW1uYW50cyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NU
b2tlbml6ZXI6OmNvbnN1bWVTaW5nbGVXaGl0ZXNwYWNlSWZOZXh0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1Rva2VuaXplcjo6Y29uc3VtZUlmTmV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NU
b2tlbml6ZXI6OmNvbnN1bWVOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6
Y29uc3VtZUVzY2FwZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6Om5leHRUd29D
aGFyc0FyZVZhbGlkRXNjYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6bmV4
dENoYXJzQXJlTnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6bmV4dENo
YXJzQXJlSWRlbnRpZmllcik6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NUb2tlbml6ZXIuaDoK
KyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1Rva2VuaXplcklucHV0U3RyZWFtLmg6CisgICAgICAg
IChXZWJDb3JlOjpDU1NUb2tlbml6ZXJJbnB1dFN0cmVhbTo6bmV4dElucHV0Q2hhciBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXJJbnB1dFN0cmVhbTo6cGVlayBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXJJbnB1dFN0cmVhbTo6cGVla1dpdGhvdXRS
ZXBsYWNlbWVudCBjb25zdCk6IERlbGV0ZWQuCisKIDIwMjAtMDQtMDggIFJvYiBCdWlzICA8cmJ1
aXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBNYWtlIG1vcmUgdXNlIG9mIEZyYW1lTG9hZGVyIHBh
Z2VJRC9mcmFtZUlEIGdldHRlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3Ry
aW5nSW1wbC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCmluZGV4IDg4
NDU5ODYzNjJiMWNhY2ExNTczMThjYmMxNWFhYzdjOWE3MjA3NDAuLmQ1ZmI1NjE0MjAwZDQzNzBm
YzlkY2M4NTI5MmVjZmFkNmI5OGYwZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
U3RyaW5nSW1wbC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcApA
QCAtMTMwMiwxMSArMTMwMiwxMiBAQCBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVwbGFj
ZShVQ2hhciB0YXJnZXQsIFVDaGFyIHJlcGxhY2VtZW50KQogICAgIFVDaGFyKiBkYXRhOwogICAg
IGF1dG8gbmV3SW1wbCA9IGNyZWF0ZVVuaW5pdGlhbGl6ZWRJbnRlcm5hbE5vbkVtcHR5KG1fbGVu
Z3RoLCBkYXRhKTsKIAotICAgIGZvciAoaSA9IDA7IGkgIT0gbV9sZW5ndGg7ICsraSkgewotICAg
ICAgICBVQ2hhciBjaGFyYWN0ZXIgPSBtX2RhdGExNltpXTsKKyAgICBtZW1jcHkoZGF0YSwgbV9k
YXRhMTYsIGkgKiBzaXplb2YoVUNoYXIpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGogPSBpOyBqICE9
IG1fbGVuZ3RoOyArK2opIHsKKyAgICAgICAgVUNoYXIgY2hhcmFjdGVyID0gbV9kYXRhMTZbal07
CiAgICAgICAgIGlmIChjaGFyYWN0ZXIgPT0gdGFyZ2V0KQogICAgICAgICAgICAgY2hhcmFjdGVy
ID0gcmVwbGFjZW1lbnQ7Ci0gICAgICAgIGRhdGFbaV0gPSBjaGFyYWN0ZXI7CisgICAgICAgIGRh
dGFbal0gPSBjaGFyYWN0ZXI7CiAgICAgfQogICAgIHJldHVybiBuZXdJbXBsOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NUb2tlbml6ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL3BhcnNlci9DU1NUb2tlbml6ZXIuY3BwCmluZGV4IGNhNmExOGMyZGZiZjA0
MjY5N2VjYWM4NTU3MGNhZTc0ZGJmYjA2M2EuLjRkYmJkZmUwZThiNGM5NDRmZGNlZWMzNzg2OTMy
MWQzNTZkNjM2YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTVG9r
ZW5pemVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Rva2VuaXplci5j
cHAKQEAgLTQwLDU2ICs0MCw1NCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNTU1Rva2Vu
aXplcjo6Q1NTVG9rZW5pemVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQotICAgIDogbV9pbnB1dChz
dHJpbmcpCisvLyBTZWU6IGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nzcy1zeW50YXgvI2lucHV0
LXByZXByb2Nlc3NpbmcKK3N0YXRpYyBTdHJpbmcgcHJlcHJvY2Vzc1N0cmluZyhTdHJpbmcgc3Ry
aW5nKQogewotICAgIC8vIEFjY29yZGluZyB0byB0aGUgc3BlYywgd2Ugc2hvdWxkIHBlcmZvcm0g
cHJlcHJvY2Vzc2luZyBoZXJlLgotICAgIC8vIFNlZTogaHR0cDovL2Rldi53My5vcmcvY3Nzd2cv
Y3NzLXN5bnRheC8jaW5wdXQtcHJlcHJvY2Vzc2luZwotICAgIC8vCi0gICAgLy8gSG93ZXZlciwg
d2UgY2FuIHNraXAgdGhpcyBzdGVwIHNpbmNlOgotICAgIC8vICogV2UncmUgdXNpbmcgSFRNTCBz
cGFjZXMgKHdoaWNoIGFjY2VwdCBcciBhbmQgXGYgYXMgYSB2YWxpZCB3aGl0ZSBzcGFjZSkKLSAg
ICAvLyAqIERvIG5vdCBjb3VudCB3aGl0ZSBzcGFjZXMKLSAgICAvLyAqIENTU1Rva2VuaXplcklu
cHV0U3RyZWFtOjpuZXh0SW5wdXRDaGFyKCkgcmVwbGFjZXMgTlVMTHMgZm9yIHJlcGxhY2VtZW50
IGNoYXJhY3RlcnMKLQotICAgIGlmIChzdHJpbmcuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICAvLyBUbyBhdm9pZCByZXNpemluZyB3ZSBlcnIgb24gdGhlIHNpZGUgb2YgcmVzZXJ2
aW5nIHRvbyBtdWNoIHNwYWNlLgotICAgIC8vIE1vc3Qgc3RyaW5ncyB3ZSB0b2tlbml6ZSBoYXZl
IGFib3V0IDMuNSB0byA1IGNoYXJhY3RlcnMgcGVyIHRva2VuLgotICAgIG1fdG9rZW5zLnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkoc3RyaW5nLmxlbmd0aCgpIC8gMyk7CisgICAgLy8gQWNjb3JkaW5n
IHRvIHRoZSBzcGVjaWZpY2F0aW9uLCB3ZSBzaG91bGQgcmVwbGFjZSAnXHInIGFuZCAnXGYnIHdp
dGggJ1xuJyBidXQgd2UgZG8gbm90IG5lZWQgdG8KKyAgICAvLyBiZWNhdXNlIG91ciBDU1NUb2tl
bml6ZXIgdHJlYXRzIGFsbCBvZiB0aGVtIGFzIG5ldyBsaW5lcy4KKyAgICByZXR1cm4gc3RyaW5n
LnJlcGxhY2UoJ1wwJywgcmVwbGFjZW1lbnRDaGFyYWN0ZXIpOworfQogCi0gICAgd2hpbGUgKHRy
dWUpIHsKLSAgICAgICAgQ1NTUGFyc2VyVG9rZW4gdG9rZW4gPSBuZXh0VG9rZW4oKTsKLSAgICAg
ICAgaWYgKHRva2VuLnR5cGUoKSA9PSBDb21tZW50VG9rZW4pCi0gICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgaWYgKHRva2VuLnR5cGUoKSA9PSBFT0ZUb2tlbikKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgbV90b2tlbnMuYXBwZW5kKHRva2VuKTsKLSAgICB9CitDU1NUb2tlbml6
ZXI6OkNTU1Rva2VuaXplcihjb25zdCBTdHJpbmcmIHN0cmluZykKKyAgICA6IENTU1Rva2VuaXpl
cihwcmVwcm9jZXNzU3RyaW5nKHN0cmluZyksIG51bGxwdHIpCit7CiB9CiAKIENTU1Rva2VuaXpl
cjo6Q1NTVG9rZW5pemVyKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBDU1NQYXJzZXJPYnNlcnZlcldy
YXBwZXImIHdyYXBwZXIpCisgICAgOiBDU1NUb2tlbml6ZXIocHJlcHJvY2Vzc1N0cmluZyhzdHJp
bmcpLCAmd3JhcHBlcikKK3sKK30KKworaW5saW5lIENTU1Rva2VuaXplcjo6Q1NTVG9rZW5pemVy
KFN0cmluZyYmIHN0cmluZywgQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyKiB3cmFwcGVyKQogICAg
IDogbV9pbnB1dChzdHJpbmcpCiB7CiAgICAgaWYgKHN0cmluZy5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybjsKIAorICAgIC8vIFRvIGF2b2lkIHJlc2l6aW5nIHdlIGVyciBvbiB0aGUgc2lkZSBv
ZiByZXNlcnZpbmcgdG9vIG11Y2ggc3BhY2UuCisgICAgLy8gTW9zdCBzdHJpbmdzIHdlIHRva2Vu
aXplIGhhdmUgYWJvdXQgMy41IHRvIDUgY2hhcmFjdGVycyBwZXIgdG9rZW4uCisgICAgbV90b2tl
bnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzdHJpbmcubGVuZ3RoKCkgLyAzKTsKKwogICAgIHVu
c2lnbmVkIG9mZnNldCA9IDA7CiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgQ1NTUGFyc2Vy
VG9rZW4gdG9rZW4gPSBuZXh0VG9rZW4oKTsKICAgICAgICAgaWYgKHRva2VuLnR5cGUoKSA9PSBF
T0ZUb2tlbikKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBpZiAodG9rZW4udHlwZSgpID09
IENvbW1lbnRUb2tlbikKLSAgICAgICAgICAgIHdyYXBwZXIuYWRkQ29tbWVudChvZmZzZXQsIG1f
aW5wdXQub2Zmc2V0KCksIG1fdG9rZW5zLnNpemUoKSk7Ci0gICAgICAgIGVsc2UgeworICAgICAg
ICBpZiAodG9rZW4udHlwZSgpID09IENvbW1lbnRUb2tlbikgeworICAgICAgICAgICAgaWYgKHdy
YXBwZXIpCisgICAgICAgICAgICAgICAgd3JhcHBlci0+YWRkQ29tbWVudChvZmZzZXQsIG1faW5w
dXQub2Zmc2V0KCksIG1fdG9rZW5zLnNpemUoKSk7CisgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICBtX3Rva2Vucy5hcHBlbmQodG9rZW4pOwotICAgICAgICAgICAgd3JhcHBlci5hZGRUb2tl
bihvZmZzZXQpOworICAgICAgICAgICAgaWYgKHdyYXBwZXIpCisgICAgICAgICAgICAgICAgd3Jh
cHBlci0+YWRkVG9rZW4ob2Zmc2V0KTsKICAgICAgICAgfQogICAgICAgICBvZmZzZXQgPSBtX2lu
cHV0Lm9mZnNldCgpOwogICAgIH0KIAotICAgIHdyYXBwZXIuYWRkVG9rZW4ob2Zmc2V0KTsKLSAg
ICB3cmFwcGVyLmZpbmFsaXplQ29uc3RydWN0aW9uKG1fdG9rZW5zLmJlZ2luKCkpOworICAgIGlm
ICh3cmFwcGVyKSB7CisgICAgICAgIHdyYXBwZXItPmFkZFRva2VuKG9mZnNldCk7CisgICAgICAg
IHdyYXBwZXItPmZpbmFsaXplQ29uc3RydWN0aW9uKG1fdG9rZW5zLmJlZ2luKCkpOworICAgIH0K
IH0KIAogQ1NTUGFyc2VyVG9rZW5SYW5nZSBDU1NUb2tlbml6ZXI6OnRva2VuUmFuZ2UoKSBjb25z
dApAQCAtMjAzLDkgKzIwMSw3IEBAIENTU1BhcnNlclRva2VuIENTU1Rva2VuaXplcjo6YXN0ZXJp
c2soVUNoYXIgY2MpCiBDU1NQYXJzZXJUb2tlbiBDU1NUb2tlbml6ZXI6Omxlc3NUaGFuKFVDaGFy
IGNjKQogewogICAgIEFTU0VSVF9VTlVTRUQoY2MsIGNjID09ICc8Jyk7Ci0gICAgaWYgKG1faW5w
dXQucGVla1dpdGhvdXRSZXBsYWNlbWVudCgwKSA9PSAnIScKLSAgICAgICAgJiYgbV9pbnB1dC5w
ZWVrV2l0aG91dFJlcGxhY2VtZW50KDEpID09ICctJwotICAgICAgICAmJiBtX2lucHV0LnBlZWtX
aXRob3V0UmVwbGFjZW1lbnQoMikgPT0gJy0nKSB7CisgICAgaWYgKG1faW5wdXQucGVlaygwKSA9
PSAnIScgJiYgbV9pbnB1dC5wZWVrKDEpID09ICctJyAmJiBtX2lucHV0LnBlZWsoMikgPT0gJy0n
KSB7CiAgICAgICAgIG1faW5wdXQuYWR2YW5jZSgzKTsKICAgICAgICAgcmV0dXJuIENTU1BhcnNl
clRva2VuKENET1Rva2VuKTsKICAgICB9CkBAIC0yMjMsOCArMjE5LDcgQEAgQ1NTUGFyc2VyVG9r
ZW4gQ1NTVG9rZW5pemVyOjpoeXBoZW5NaW51cyhVQ2hhciBjYykKICAgICAgICAgcmVjb25zdW1l
KGNjKTsKICAgICAgICAgcmV0dXJuIGNvbnN1bWVOdW1lcmljVG9rZW4oKTsKICAgICB9Ci0gICAg
aWYgKG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudCgwKSA9PSAnLScKLSAgICAgICAgJiYg
bV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDEpID09ICc+JykgeworICAgIGlmIChtX2lu
cHV0LnBlZWsoMCkgPT0gJy0nICYmIG1faW5wdXQucGVlaygxKSA9PSAnPicpIHsKICAgICAgICAg
bV9pbnB1dC5hZHZhbmNlKDIpOwogICAgICAgICByZXR1cm4gQ1NTUGFyc2VyVG9rZW4oQ0RDVG9r
ZW4pOwogICAgIH0KQEAgLTI1OCw4ICsyNTMsOCBAQCBDU1NQYXJzZXJUb2tlbiBDU1NUb2tlbml6
ZXI6OnNlbWlDb2xvbihVQ2hhciAvKmNjKi8pCiAKIENTU1BhcnNlclRva2VuIENTU1Rva2VuaXpl
cjo6aGFzaChVQ2hhciBjYykKIHsKLSAgICBVQ2hhciBuZXh0Q2hhciA9IG1faW5wdXQucGVla1dp
dGhvdXRSZXBsYWNlbWVudCgwKTsKLSAgICBpZiAoaXNOYW1lQ29kZVBvaW50KG5leHRDaGFyKSB8
fCB0d29DaGFyc0FyZVZhbGlkRXNjYXBlKG5leHRDaGFyLCBtX2lucHV0LnBlZWtXaXRob3V0UmVw
bGFjZW1lbnQoMSkpKSB7CisgICAgVUNoYXIgbmV4dENoYXIgPSBtX2lucHV0LnBlZWsoMCk7Cisg
ICAgaWYgKGlzTmFtZUNvZGVQb2ludChuZXh0Q2hhcikgfHwgdHdvQ2hhcnNBcmVWYWxpZEVzY2Fw
ZShuZXh0Q2hhciwgbV9pbnB1dC5wZWVrKDEpKSkgewogICAgICAgICBIYXNoVG9rZW5UeXBlIHR5
cGUgPSBuZXh0Q2hhcnNBcmVJZGVudGlmaWVyKCkgPyBIYXNoVG9rZW5JZCA6IEhhc2hUb2tlblVu
cmVzdHJpY3RlZDsKICAgICAgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKHR5cGUsIGNvbnN1bWVO
YW1lKCkpOwogICAgIH0KQEAgLTMxMSw3ICszMDYsNyBAQCBDU1NQYXJzZXJUb2tlbiBDU1NUb2tl
bml6ZXI6OmNvbW1lcmNpYWxBdChVQ2hhciBjYykKIAogQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5p
emVyOjpyZXZlcnNlU29saWR1cyhVQ2hhciBjYykKIHsKLSAgICBpZiAodHdvQ2hhcnNBcmVWYWxp
ZEVzY2FwZShjYywgbV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDApKSkgeworICAgIGlm
ICh0d29DaGFyc0FyZVZhbGlkRXNjYXBlKGNjLCBtX2lucHV0LnBlZWsoMCkpKSB7CiAgICAgICAg
IHJlY29uc3VtZShjYyk7CiAgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnRMaWtlVG9rZW4oKTsK
ICAgICB9CkBAIC0zMjYsOCArMzIxLDcgQEAgQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjph
c2NpaURpZ2l0KFVDaGFyIGNjKQogCiBDU1NQYXJzZXJUb2tlbiBDU1NUb2tlbml6ZXI6OmxldHRl
clUoVUNoYXIgY2MpCiB7Ci0gICAgaWYgKG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudCgw
KSA9PSAnKycKLSAgICAgICAgJiYgKGlzQVNDSUlIZXhEaWdpdChtX2lucHV0LnBlZWtXaXRob3V0
UmVwbGFjZW1lbnQoMSkpIHx8IG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudCgxKSA9PSAn
PycpKSB7CisgICAgaWYgKG1faW5wdXQucGVlaygwKSA9PSAnKycgJiYgKGlzQVNDSUlIZXhEaWdp
dChtX2lucHV0LnBlZWsoMSkpIHx8IG1faW5wdXQucGVlaygxKSA9PSAnPycpKSB7CiAgICAgICAg
IG1faW5wdXQuYWR2YW5jZSgpOwogICAgICAgICByZXR1cm4gY29uc3VtZVVuaWNvZGVSYW5nZSgp
OwogICAgIH0KQEAgLTUxOSw3ICs1MTMsNyBAQCBDU1NQYXJzZXJUb2tlbiBDU1NUb2tlbml6ZXI6
OmNvbnN1bWVOdW1iZXIoKQogICAgIE51bWVyaWNTaWduIHNpZ24gPSBOb1NpZ247CiAgICAgdW5z
aWduZWQgbnVtYmVyTGVuZ3RoID0gMDsKIAotICAgIFVDaGFyIG5leHQgPSBtX2lucHV0LnBlZWtX
aXRob3V0UmVwbGFjZW1lbnQoMCk7CisgICAgVUNoYXIgbmV4dCA9IG1faW5wdXQucGVlaygwKTsK
ICAgICBpZiAobmV4dCA9PSAnKycpIHsKICAgICAgICAgKytudW1iZXJMZW5ndGg7CiAgICAgICAg
IHNpZ24gPSBQbHVzU2lnbjsKQEAgLTUyOSwxOSArNTIzLDE5IEBAIENTU1BhcnNlclRva2VuIENT
U1Rva2VuaXplcjo6Y29uc3VtZU51bWJlcigpCiAgICAgfQogCiAgICAgbnVtYmVyTGVuZ3RoID0g
bV9pbnB1dC5za2lwV2hpbGVQcmVkaWNhdGU8aXNBU0NJSURpZ2l0PihudW1iZXJMZW5ndGgpOwot
ICAgIG5leHQgPSBtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQobnVtYmVyTGVuZ3RoKTsK
LSAgICBpZiAobmV4dCA9PSAnLicgJiYgaXNBU0NJSURpZ2l0KG1faW5wdXQucGVla1dpdGhvdXRS
ZXBsYWNlbWVudChudW1iZXJMZW5ndGggKyAxKSkpIHsKKyAgICBuZXh0ID0gbV9pbnB1dC5wZWVr
KG51bWJlckxlbmd0aCk7CisgICAgaWYgKG5leHQgPT0gJy4nICYmIGlzQVNDSUlEaWdpdChtX2lu
cHV0LnBlZWsobnVtYmVyTGVuZ3RoICsgMSkpKSB7CiAgICAgICAgIHR5cGUgPSBOdW1iZXJWYWx1
ZVR5cGU7CiAgICAgICAgIG51bWJlckxlbmd0aCA9IG1faW5wdXQuc2tpcFdoaWxlUHJlZGljYXRl
PGlzQVNDSUlEaWdpdD4obnVtYmVyTGVuZ3RoICsgMik7Ci0gICAgICAgIG5leHQgPSBtX2lucHV0
LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQobnVtYmVyTGVuZ3RoKTsKKyAgICAgICAgbmV4dCA9IG1f
aW5wdXQucGVlayhudW1iZXJMZW5ndGgpOwogICAgIH0KIAogICAgIGlmIChuZXh0ID09ICdFJyB8
fCBuZXh0ID09ICdlJykgewotICAgICAgICBuZXh0ID0gbV9pbnB1dC5wZWVrV2l0aG91dFJlcGxh
Y2VtZW50KG51bWJlckxlbmd0aCArIDEpOworICAgICAgICBuZXh0ID0gbV9pbnB1dC5wZWVrKG51
bWJlckxlbmd0aCArIDEpOwogICAgICAgICBpZiAoaXNBU0NJSURpZ2l0KG5leHQpKSB7CiAgICAg
ICAgICAgICB0eXBlID0gTnVtYmVyVmFsdWVUeXBlOwogICAgICAgICAgICAgbnVtYmVyTGVuZ3Ro
ID0gbV9pbnB1dC5za2lwV2hpbGVQcmVkaWNhdGU8aXNBU0NJSURpZ2l0PihudW1iZXJMZW5ndGgg
KyAxKTsKLSAgICAgICAgfSBlbHNlIGlmICgobmV4dCA9PSAnKycgfHwgbmV4dCA9PSAnLScpICYm
IGlzQVNDSUlEaWdpdChtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQobnVtYmVyTGVuZ3Ro
ICsgMikpKSB7CisgICAgICAgIH0gZWxzZSBpZiAoKG5leHQgPT0gJysnIHx8IG5leHQgPT0gJy0n
KSAmJiBpc0FTQ0lJRGlnaXQobV9pbnB1dC5wZWVrKG51bWJlckxlbmd0aCArIDIpKSkgewogICAg
ICAgICAgICAgdHlwZSA9IE51bWJlclZhbHVlVHlwZTsKICAgICAgICAgICAgIG51bWJlckxlbmd0
aCA9IG1faW5wdXQuc2tpcFdoaWxlUHJlZGljYXRlPGlzQVNDSUlEaWdpdD4obnVtYmVyTGVuZ3Ro
ICsgMyk7CiAgICAgICAgIH0KQEAgLTU3Myw3ICs1NjcsNyBAQCBDU1NQYXJzZXJUb2tlbiBDU1NU
b2tlbml6ZXI6OmNvbnN1bWVJZGVudExpa2VUb2tlbigpCiAgICAgICAgICAgICAvLyBUaGUgc3Bl
YyBpcyBzbGlnaHRseSBkaWZmZXJlbnQgc28gYXMgdG8gYXZvaWQgZHJvcHBpbmcgd2hpdGVzcGFj
ZQogICAgICAgICAgICAgLy8gdG9rZW5zLCBidXQgdGhleSB3b3VsZG4ndCBiZSB1c2VkIGFuZCB0
aGlzIGlzIGVhc2llci4KICAgICAgICAgICAgIG1faW5wdXQuYWR2YW5jZVVudGlsTm9uV2hpdGVz
cGFjZSgpOwotICAgICAgICAgICAgVUNoYXIgbmV4dCA9IG1faW5wdXQucGVla1dpdGhvdXRSZXBs
YWNlbWVudCgwKTsKKyAgICAgICAgICAgIFVDaGFyIG5leHQgPSBtX2lucHV0LnBlZWsoMCk7CiAg
ICAgICAgICAgICBpZiAobmV4dCAhPSAnIicgJiYgbmV4dCAhPSAnXCcnKQogICAgICAgICAgICAg
ICAgIHJldHVybiBjb25zdW1lVXJsVG9rZW4oKTsKICAgICAgICAgfQpAQCAtNTg3LDcgKzU4MSw3
IEBAIENTU1BhcnNlclRva2VuIENTU1Rva2VuaXplcjo6Y29uc3VtZVN0cmluZ1Rva2VuVW50aWwo
VUNoYXIgZW5kaW5nQ29kZVBvaW50KQogewogICAgIC8vIFN0cmluZ3Mgd2l0aG91dCBlc2NhcGVz
IGdldCBoYW5kbGVkIHdpdGhvdXQgYWxsb2NhdGlvbnMKICAgICBmb3IgKHVuc2lnbmVkIHNpemUg
PSAwOyA7IHNpemUrKykgewotICAgICAgICBVQ2hhciBjYyA9IG1faW5wdXQucGVla1dpdGhvdXRS
ZXBsYWNlbWVudChzaXplKTsKKyAgICAgICAgVUNoYXIgY2MgPSBtX2lucHV0LnBlZWsoc2l6ZSk7
CiAgICAgICAgIGlmIChjYyA9PSBlbmRpbmdDb2RlUG9pbnQpIHsKICAgICAgICAgICAgIHVuc2ln
bmVkIHN0YXJ0T2Zmc2V0ID0gbV9pbnB1dC5vZmZzZXQoKTsKICAgICAgICAgICAgIG1faW5wdXQu
YWR2YW5jZShzaXplICsgMSk7CkBAIC01OTcsNyArNTkxLDcgQEAgQ1NTUGFyc2VyVG9rZW4gQ1NT
VG9rZW5pemVyOjpjb25zdW1lU3RyaW5nVG9rZW5VbnRpbChVQ2hhciBlbmRpbmdDb2RlUG9pbnQp
CiAgICAgICAgICAgICBtX2lucHV0LmFkdmFuY2Uoc2l6ZSk7CiAgICAgICAgICAgICByZXR1cm4g
Q1NTUGFyc2VyVG9rZW4oQmFkU3RyaW5nVG9rZW4pOwogICAgICAgICB9Ci0gICAgICAgIGlmIChj
YyA9PSAnXDAnIHx8IGNjID09ICdcXCcpCisgICAgICAgIGlmIChjYyA9PSBrRW5kT2ZGaWxlTWFy
a2VyIHx8IGNjID09ICdcXCcpCiAgICAgICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTYxMyw3
ICs2MDcsNyBAQCBDU1NQYXJzZXJUb2tlbiBDU1NUb2tlbml6ZXI6OmNvbnN1bWVTdHJpbmdUb2tl
blVudGlsKFVDaGFyIGVuZGluZ0NvZGVQb2ludCkKICAgICAgICAgaWYgKGNjID09ICdcXCcpIHsK
ICAgICAgICAgICAgIGlmIChtX2lucHV0Lm5leHRJbnB1dENoYXIoKSA9PSBrRW5kT2ZGaWxlTWFy
a2VyKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaWYgKGlzTmV3TGlu
ZShtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQoMCkpKQorICAgICAgICAgICAgaWYgKGlz
TmV3TGluZShtX2lucHV0LnBlZWsoMCkpKQogICAgICAgICAgICAgICAgIGNvbnN1bWVTaW5nbGVX
aGl0ZXNwYWNlSWZOZXh0KCk7IC8vIFRoaXMgaGFuZGxlcyBcclxuIGZvciB1cwogICAgICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgICAgIG91dHB1dC5hcHBlbmRDaGFyYWN0ZXIoY29uc3VtZUVz
Y2FwZSgpKTsKQEAgLTYyNCwxMSArNjE4LDExIEBAIENTU1BhcnNlclRva2VuIENTU1Rva2VuaXpl
cjo6Y29uc3VtZVN0cmluZ1Rva2VuVW50aWwoVUNoYXIgZW5kaW5nQ29kZVBvaW50KQogCiBDU1NQ
YXJzZXJUb2tlbiBDU1NUb2tlbml6ZXI6OmNvbnN1bWVVbmljb2RlUmFuZ2UoKQogewotICAgIEFT
U0VSVChpc0FTQ0lJSGV4RGlnaXQobV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDApKSB8
fCBtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQoMCkgPT0gJz8nKTsKKyAgICBBU1NFUlQo
aXNBU0NJSUhleERpZ2l0KG1faW5wdXQucGVlaygwKSkgfHwgbV9pbnB1dC5wZWVrKDApID09ICc/
Jyk7CiAgICAgaW50IGxlbmd0aFJlbWFpbmluZyA9IDY7CiAgICAgVUNoYXIzMiBzdGFydCA9IDA7
CiAKLSAgICB3aGlsZSAobGVuZ3RoUmVtYWluaW5nICYmIGlzQVNDSUlIZXhEaWdpdChtX2lucHV0
LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQoMCkpKSB7CisgICAgd2hpbGUgKGxlbmd0aFJlbWFpbmlu
ZyAmJiBpc0FTQ0lJSGV4RGlnaXQobV9pbnB1dC5wZWVrKDApKSkgewogICAgICAgICBzdGFydCA9
IHN0YXJ0ICogMTYgKyB0b0FTQ0lJSGV4VmFsdWUoY29uc3VtZSgpKTsKICAgICAgICAgLS1sZW5n
dGhSZW1haW5pbmc7CiAgICAgfQpAQCAtNjQwLDE0ICs2MzQsMTQgQEAgQ1NTUGFyc2VyVG9rZW4g
Q1NTVG9rZW5pemVyOjpjb25zdW1lVW5pY29kZVJhbmdlKCkKICAgICAgICAgICAgIGVuZCA9IGVu
ZCAqIDE2ICsgMHhGOwogICAgICAgICAgICAgLS1sZW5ndGhSZW1haW5pbmc7CiAgICAgICAgIH0g
d2hpbGUgKGxlbmd0aFJlbWFpbmluZyAmJiBjb25zdW1lSWZOZXh0KCc/JykpOwotICAgIH0gZWxz
ZSBpZiAobV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDApID09ICctJyAmJiBpc0FTQ0lJ
SGV4RGlnaXQobV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDEpKSkgeworICAgIH0gZWxz
ZSBpZiAobV9pbnB1dC5wZWVrKDApID09ICctJyAmJiBpc0FTQ0lJSGV4RGlnaXQobV9pbnB1dC5w
ZWVrKDEpKSkgewogICAgICAgICBtX2lucHV0LmFkdmFuY2UoKTsKICAgICAgICAgbGVuZ3RoUmVt
YWluaW5nID0gNjsKICAgICAgICAgZW5kID0gMDsKICAgICAgICAgZG8gewogICAgICAgICAgICAg
ZW5kID0gZW5kICogMTYgKyB0b0FTQ0lJSGV4VmFsdWUoY29uc3VtZSgpKTsKICAgICAgICAgICAg
IC0tbGVuZ3RoUmVtYWluaW5nOwotICAgICAgICB9IHdoaWxlIChsZW5ndGhSZW1haW5pbmcgJiYg
aXNBU0NJSUhleERpZ2l0KG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudCgwKSkpOworICAg
ICAgICB9IHdoaWxlIChsZW5ndGhSZW1haW5pbmcgJiYgaXNBU0NJSUhleERpZ2l0KG1faW5wdXQu
cGVlaygwKSkpOwogICAgIH0KIAogICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbihVbmljb2RlUmFu
Z2VUb2tlbiwgc3RhcnQsIGVuZCk7CkBAIC02NjYsNyArNjYwLDcgQEAgQ1NTUGFyc2VyVG9rZW4g
Q1NTVG9rZW5pemVyOjpjb25zdW1lVXJsVG9rZW4oKQogCiAgICAgLy8gVVJMIHRva2VucyB3aXRo
b3V0IGVzY2FwZXMgZ2V0IGhhbmRsZWQgd2l0aG91dCBhbGxvY2F0aW9ucwogICAgIGZvciAodW5z
aWduZWQgc2l6ZSA9IDA7IDsgc2l6ZSsrKSB7Ci0gICAgICAgIFVDaGFyIGNjID0gbV9pbnB1dC5w
ZWVrV2l0aG91dFJlcGxhY2VtZW50KHNpemUpOworICAgICAgICBVQ2hhciBjYyA9IG1faW5wdXQu
cGVlayhzaXplKTsKICAgICAgICAgaWYgKGNjID09ICcpJykgewogICAgICAgICAgICAgdW5zaWdu
ZWQgc3RhcnRPZmZzZXQgPSBtX2lucHV0Lm9mZnNldCgpOwogICAgICAgICAgICAgbV9pbnB1dC5h
ZHZhbmNlKHNpemUgKyAxKTsKQEAgLTY5Myw3ICs2ODcsNyBAQCBDU1NQYXJzZXJUb2tlbiBDU1NU
b2tlbml6ZXI6OmNvbnN1bWVVcmxUb2tlbigpCiAgICAgICAgICAgICBicmVhazsKIAogICAgICAg
ICBpZiAoY2MgPT0gJ1xcJykgewotICAgICAgICAgICAgaWYgKHR3b0NoYXJzQXJlVmFsaWRFc2Nh
cGUoY2MsIG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudCgwKSkpIHsKKyAgICAgICAgICAg
IGlmICh0d29DaGFyc0FyZVZhbGlkRXNjYXBlKGNjLCBtX2lucHV0LnBlZWsoMCkpKSB7CiAgICAg
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZENoYXJhY3Rlcihjb25zdW1lRXNjYXBlKCkpOwogICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQpAQCAtNzE0LDcgKzcwOCw3IEBA
IHZvaWQgQ1NTVG9rZW5pemVyOjpjb25zdW1lQmFkVXJsUmVtbmFudHMoKQogICAgICAgICBVQ2hh
ciBjYyA9IGNvbnN1bWUoKTsKICAgICAgICAgaWYgKGNjID09ICcpJyB8fCBjYyA9PSBrRW5kT2ZG
aWxlTWFya2VyKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBpZiAodHdvQ2hhcnNBcmVW
YWxpZEVzY2FwZShjYywgbV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDApKSkKKyAgICAg
ICAgaWYgKHR3b0NoYXJzQXJlVmFsaWRFc2NhcGUoY2MsIG1faW5wdXQucGVlaygwKSkpCiAgICAg
ICAgICAgICBjb25zdW1lRXNjYXBlKCk7CiAgICAgfQogfQpAQCAtNzIyLDggKzcxNiw4IEBAIHZv
aWQgQ1NTVG9rZW5pemVyOjpjb25zdW1lQmFkVXJsUmVtbmFudHMoKQogdm9pZCBDU1NUb2tlbml6
ZXI6OmNvbnN1bWVTaW5nbGVXaGl0ZXNwYWNlSWZOZXh0KCkKIHsKICAgICAvLyBXZSBjaGVjayBm
b3IgXHJcbiBhbmQgSFRNTCBzcGFjZXMgc2luY2Ugd2UgZG9uJ3QgZG8gcHJlcHJvY2Vzc2luZwot
ICAgIFVDaGFyIG5leHQgPSBtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQoMCk7Ci0gICAg
aWYgKG5leHQgPT0gJ1xyJyAmJiBtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQoMSkgPT0g
J1xuJykKKyAgICBVQ2hhciBuZXh0ID0gbV9pbnB1dC5wZWVrKDApOworICAgIGlmIChuZXh0ID09
ICdccicgJiYgbV9pbnB1dC5wZWVrKDEpID09ICdcbicpCiAgICAgICAgIG1faW5wdXQuYWR2YW5j
ZSgyKTsKICAgICBlbHNlIGlmIChpc0hUTUxTcGFjZShuZXh0KSkKICAgICAgICAgbV9pbnB1dC5h
ZHZhbmNlKCk7CkBAIC03NTEsNyArNzQ1LDcgQEAgYm9vbCBDU1NUb2tlbml6ZXI6OmNvbnN1bWVJ
Zk5leHQoVUNoYXIgY2hhcmFjdGVyKQogICAgIC8vIGEgTlVMIGluIHRoZSBtaWRkbGUgYW5kIHRo
ZSBrRW5kT2ZGaWxlTWFya2VyLCBzbyBjaGFyYWN0ZXIgbXVzdCBub3QgYmUKICAgICAvLyBOVUwu
CiAgICAgQVNTRVJUKGNoYXJhY3Rlcik7Ci0gICAgaWYgKG1faW5wdXQucGVla1dpdGhvdXRSZXBs
YWNlbWVudCgwKSA9PSBjaGFyYWN0ZXIpIHsKKyAgICBpZiAobV9pbnB1dC5wZWVrKDApID09IGNo
YXJhY3RlcikgewogICAgICAgICBtX2lucHV0LmFkdmFuY2UoKTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQpAQCAtNzYzLDEzICs3NTcsMTMgQEAgU3RyaW5nVmlldyBDU1NUb2tlbml6ZXI6
OmNvbnN1bWVOYW1lKCkKIHsKICAgICAvLyBOYW1lcyB3aXRob3V0IGVzY2FwZXMgZ2V0IGhhbmRs
ZWQgd2l0aG91dCBhbGxvY2F0aW9ucwogICAgIGZvciAodW5zaWduZWQgc2l6ZSA9IDA7IDsgKytz
aXplKSB7Ci0gICAgICAgIFVDaGFyIGNjID0gbV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50
KHNpemUpOworICAgICAgICBVQ2hhciBjYyA9IG1faW5wdXQucGVlayhzaXplKTsKICAgICAgICAg
aWYgKGlzTmFtZUNvZGVQb2ludChjYykpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
Ly8gcGVla1dpdGhvdXRSZXBsYWNlbWVudCB3aWxsIHJldHVybiBOVUwgd2hlbiB3ZSBoaXQgdGhl
IGVuZCBvZiB0aGUKKyAgICAgICAgLy8gcGVlayB3aWxsIHJldHVybiBOVUwgd2hlbiB3ZSBoaXQg
dGhlIGVuZCBvZiB0aGUKICAgICAgICAgLy8gaW5wdXQuIEluIHRoYXQgY2FzZSB3ZSB3YW50IHRv
IHN0aWxsIHVzZSB0aGUgcmFuZ2VBdCgpIGZhc3QgcGF0aAogICAgICAgICAvLyBiZWxvdy4KLSAg
ICAgICAgaWYgKGNjID09ICdcMCcgJiYgbV9pbnB1dC5vZmZzZXQoKSArIHNpemUgPCBtX2lucHV0
Lmxlbmd0aCgpKQorICAgICAgICBpZiAoY2MgPT0ga0VuZE9mRmlsZU1hcmtlciAmJiBtX2lucHV0
Lm9mZnNldCgpICsgc2l6ZSA8IG1faW5wdXQubGVuZ3RoKCkpCiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgaWYgKGNjID09ICdcXCcpCiAgICAgICAgICAgICBicmVhazsKQEAgLTc4NSw3ICs3
NzksNyBAQCBTdHJpbmdWaWV3IENTU1Rva2VuaXplcjo6Y29uc3VtZU5hbWUoKQogICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZChjYyk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQot
ICAgICAgICBpZiAodHdvQ2hhcnNBcmVWYWxpZEVzY2FwZShjYywgbV9pbnB1dC5wZWVrV2l0aG91
dFJlcGxhY2VtZW50KDApKSkgeworICAgICAgICBpZiAodHdvQ2hhcnNBcmVWYWxpZEVzY2FwZShj
YywgbV9pbnB1dC5wZWVrKDApKSkgewogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZENoYXJhY3Rl
cihjb25zdW1lRXNjYXBlKCkpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KQEAg
LTgwMyw3ICs3OTcsNyBAQCBVQ2hhcjMyIENTU1Rva2VuaXplcjo6Y29uc3VtZUVzY2FwZSgpCiAg
ICAgICAgIHVuc2lnbmVkIGNvbnN1bWVkSGV4RGlnaXRzID0gMTsKICAgICAgICAgU3RyaW5nQnVp
bGRlciBoZXhDaGFyczsKICAgICAgICAgaGV4Q2hhcnMuYXBwZW5kKGNjKTsKLSAgICAgICAgd2hp
bGUgKGNvbnN1bWVkSGV4RGlnaXRzIDwgNiAmJiBpc0FTQ0lJSGV4RGlnaXQobV9pbnB1dC5wZWVr
V2l0aG91dFJlcGxhY2VtZW50KDApKSkgeworICAgICAgICB3aGlsZSAoY29uc3VtZWRIZXhEaWdp
dHMgPCA2ICYmIGlzQVNDSUlIZXhEaWdpdChtX2lucHV0LnBlZWsoMCkpKSB7CiAgICAgICAgICAg
ICBjYyA9IGNvbnN1bWUoKTsKICAgICAgICAgICAgIGhleENoYXJzLmFwcGVuZChjYyk7CiAgICAg
ICAgICAgICBjb25zdW1lZEhleERpZ2l0cysrOwpAQCAtODI0LDE3ICs4MTgsMTcgQEAgVUNoYXIz
MiBDU1NUb2tlbml6ZXI6OmNvbnN1bWVFc2NhcGUoKQogCiBib29sIENTU1Rva2VuaXplcjo6bmV4
dFR3b0NoYXJzQXJlVmFsaWRFc2NhcGUoKQogewotICAgIHJldHVybiB0d29DaGFyc0FyZVZhbGlk
RXNjYXBlKG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudCgwKSwgbV9pbnB1dC5wZWVrV2l0
aG91dFJlcGxhY2VtZW50KDEpKTsKKyAgICByZXR1cm4gdHdvQ2hhcnNBcmVWYWxpZEVzY2FwZSht
X2lucHV0LnBlZWsoMCksIG1faW5wdXQucGVlaygxKSk7CiB9CiAKIC8vIGh0dHA6Ly93d3cudzMu
b3JnL1RSL2NzczMtc3ludGF4LyNzdGFydHMtd2l0aC1hLW51bWJlcgogYm9vbCBDU1NUb2tlbml6
ZXI6Om5leHRDaGFyc0FyZU51bWJlcihVQ2hhciBmaXJzdCkKIHsKLSAgICBVQ2hhciBzZWNvbmQg
PSBtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQoMCk7CisgICAgVUNoYXIgc2Vjb25kID0g
bV9pbnB1dC5wZWVrKDApOwogICAgIGlmIChpc0FTQ0lJRGlnaXQoZmlyc3QpKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICBpZiAoZmlyc3QgPT0gJysnIHx8IGZpcnN0ID09ICctJykKLSAgICAg
ICAgcmV0dXJuICgoaXNBU0NJSURpZ2l0KHNlY29uZCkpIHx8IChzZWNvbmQgPT0gJy4nICYmIGlz
QVNDSUlEaWdpdChtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQoMSkpKSk7CisgICAgICAg
IHJldHVybiAoKGlzQVNDSUlEaWdpdChzZWNvbmQpKSB8fCAoc2Vjb25kID09ICcuJyAmJiBpc0FT
Q0lJRGlnaXQobV9pbnB1dC5wZWVrKDEpKSkpOwogICAgIGlmIChmaXJzdCA9PScuJykKICAgICAg
ICAgcmV0dXJuIChpc0FTQ0lJRGlnaXQoc2Vjb25kKSk7CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
ODUxLDcgKzg0NSw3IEBAIGJvb2wgQ1NTVG9rZW5pemVyOjpuZXh0Q2hhcnNBcmVOdW1iZXIoKQog
Ly8gaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzLXN5bnRheC8jd291bGQtc3RhcnQtYW4taWRl
bnRpZmllcgogYm9vbCBDU1NUb2tlbml6ZXI6Om5leHRDaGFyc0FyZUlkZW50aWZpZXIoVUNoYXIg
Zmlyc3QpCiB7Ci0gICAgVUNoYXIgc2Vjb25kID0gbV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2Vt
ZW50KDApOworICAgIFVDaGFyIHNlY29uZCA9IG1faW5wdXQucGVlaygwKTsKICAgICBpZiAoaXNO
YW1lU3RhcnRDb2RlUG9pbnQoZmlyc3QpIHx8IHR3b0NoYXJzQXJlVmFsaWRFc2NhcGUoZmlyc3Qs
IHNlY29uZCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvcGFyc2VyL0NTU1Rva2VuaXplci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNl
ci9DU1NUb2tlbml6ZXIuaAppbmRleCAyNWIwMzE1YzVkMmYyZTdjZmEwZjQwZDBlYTA0M2JjYzMy
YWI3YjYwLi5jN2EwNWU1ZTllY2UxNDFjZDM2Yjc3YTM4OTQ4MmU0MDA2NzgzYmE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Rva2VuaXplci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTVG9rZW5pemVyLmgKQEAgLTU0LDYgKzU0LDggQEAgcHVi
bGljOgogICAgIFZlY3RvcjxTdHJpbmc+JiYgZXNjYXBlZFN0cmluZ3NGb3JBZG9wdGlvbigpIHsg
cmV0dXJuIFdURk1vdmUobV9zdHJpbmdQb29sKTsgfQogCiBwcml2YXRlOgorICAgIENTU1Rva2Vu
aXplcihTdHJpbmcmJiwgQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyKik7CisKICAgICBDU1NQYXJz
ZXJUb2tlbiBuZXh0VG9rZW4oKTsKIAogICAgIFVDaGFyIGNvbnN1bWUoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0uaCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0uaAppbmRleCA5
NmU2ZTY5ZDAwYTM1NDU2NzY2MDcwZDYyYzc4YWVhY2MwMWI5NzBhLi42N2ZkOThmNGUzMDIxZDc5
NGMzMmJiYWQyNzI1YzgzZDU1NjczNjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
cGFyc2VyL0NTU1Rva2VuaXplcklucHV0U3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L3BhcnNlci9DU1NUb2tlbml6ZXJJbnB1dFN0cmVhbS5oCkBAIC00NywxOSArNDcsMTYgQEAgcHVi
bGljOgogICAgIFVDaGFyIG5leHRJbnB1dENoYXIoKSBjb25zdAogICAgIHsKICAgICAgICAgaWYg
KG1fb2Zmc2V0ID49IG1fc3RyaW5nTGVuZ3RoKQotICAgICAgICAgICAgcmV0dXJuICdcMCc7Ci0g
ICAgICAgIFVDaGFyIHJlc3VsdCA9ICgqbV9zdHJpbmcpW21fb2Zmc2V0XTsKLSAgICAgICAgcmV0
dXJuIHJlc3VsdCA/IHJlc3VsdCA6IDB4RkZGRDsKKyAgICAgICAgICAgIHJldHVybiBrRW5kT2ZG
aWxlTWFya2VyOworICAgICAgICByZXR1cm4gKCptX3N0cmluZylbbV9vZmZzZXRdOwogICAgIH0K
IAogICAgIC8vIEdldHMgdGhlIGNoYXIgYXQgbG9va2FoZWFkT2Zmc2V0IGZyb20gdGhlIGN1cnJl
bnQgc3RyZWFtIHBvc2l0aW9uLiBXaWxsCiAgICAgLy8gcmV0dXJuIE5VTCAoa0VuZE9mRmlsZU1h
cmtlcikgaWYgdGhlIHN0cmVhbSBwb3NpdGlvbiBpcyBhdCB0aGUgZW5kLgotICAgIC8vIE5PVEU6
IFRoaXMgbWF5ICphbHNvKiByZXR1cm4gTlVMIGlmIHRoZXJlJ3Mgb25lIGluIHRoZSBpbnB1dCEg
TmV2ZXIKLSAgICAvLyBjb21wYXJlIHRoZSByZXR1cm4gdmFsdWUgdG8gJ1wwJy4KLSAgICBVQ2hh
ciBwZWVrV2l0aG91dFJlcGxhY2VtZW50KHVuc2lnbmVkIGxvb2thaGVhZE9mZnNldCkgY29uc3QK
KyAgICBVQ2hhciBwZWVrKHVuc2lnbmVkIGxvb2thaGVhZE9mZnNldCkgY29uc3QKICAgICB7CiAg
ICAgICAgIGlmICgobV9vZmZzZXQgKyBsb29rYWhlYWRPZmZzZXQpID49IG1fc3RyaW5nTGVuZ3Ro
KQotICAgICAgICAgICAgcmV0dXJuICdcMCc7CisgICAgICAgICAgICByZXR1cm4ga0VuZE9mRmls
ZU1hcmtlcjsKICAgICAgICAgcmV0dXJuICgqbV9zdHJpbmcpW21fb2Zmc2V0ICsgbG9va2FoZWFk
T2Zmc2V0XTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IGY0NzMy
YjExZjI2MGFkOWM2MmVhMzI3YzU4Mjg2YWNmY2EzNDZiY2YuLmNiODQyMWQ4NTU1ZDdjNWVhMTE4
YjU0M2VlZjc0NGNmMDdlMzIxYzMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE1IEBACisyMDIwLTA0LTA4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CisKKyAgICAgICAgcXVlcnlTZWxlY3RvcigiI1x1MDAwMCIpIHNob3VsZCBtYXRjaCBhbiBlbGVt
ZW50IHdpdGggSUQgVStGRkZECisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTAxMTkKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKwor
ICAgICAgICBJbXBvcnQgdGVzdCBjb3ZlcmFnZSBmcm9tIHVwc3RyZWFtIFdQVC4KKworICAgICAg
ICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9kb20vbm9kZXMvUGFyZW50Tm9kZS1xdWVyeVNlbGVjdG9y
LWVzY2FwZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVz
dHMvZG9tL25vZGVzL1BhcmVudE5vZGUtcXVlcnlTZWxlY3Rvci1lc2NhcGVzLmh0bWw6IEFkZGVk
LgorCiAyMDIwLTA0LTA4ICBSb2IgQnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CiAKICAgICAgICAg
SW1wb3J0IGZldGNoL29yaWdpbi9hc3NvcnRlZC53aW5kb3cuanMKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL25vZGVzL1BhcmVudE5v
ZGUtcXVlcnlTZWxlY3Rvci1lc2NhcGVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL25vZGVzL1BhcmVudE5vZGUtcXVlcnlTZWxl
Y3Rvci1lc2NhcGVzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MjIzZjlkMjk5NGY1NjQyYmMy
ZTMyZGY0OWMyNTBlOWVjYjU0M2E1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20vbm9kZXMvUGFyZW50Tm9kZS1xdWVyeVNl
bGVjdG9yLWVzY2FwZXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNzAgQEAKKworUEFTUyAibm9u
ZXNjYXBlZCIgc2hvdWxkIG1hdGNoIHdpdGggIiNub25lc2NhcGVkIiAKK1BBU1MgIjBuZXh0SXNX
aGl0ZVNwYWNlIiBzaG91bGQgbWF0Y2ggd2l0aCAiI1xcMzAgbmV4dElzV2hpdGVTcGFjZSIgCitQ
QVNTICIwbmV4dElzTm90SGV4TGV0dGVycyIgc2hvdWxkIG1hdGNoIHdpdGggIiNcXDMwbmV4dElz
Tm90SGV4TGV0dGVycyIgCitQQVNTICIwY29ubmVjdEhleE1vcmVUaGFuNkhleCIgc2hvdWxkIG1h
dGNoIHdpdGggIiNcXDAwMDAzMGNvbm5lY3RIZXhNb3JlVGhhbjZIZXgiIAorUEFTUyAiMHNwYWNl
TW9yZVRoYW42SGV4IiBzaG91bGQgbWF0Y2ggd2l0aCAiI1xcMDAwMDMwIHNwYWNlTW9yZVRoYW42
SGV4IiAKK1BBU1MgInplcm/vv70iIHNob3VsZCBtYXRjaCB3aXRoICIjemVyb1xcMCIgCitQQVNT
ICJ6ZXJvXHUwMDAwIiBzaG91bGQgbmV2ZXIgbWF0Y2ggd2l0aCAiI3plcm9cXDAiIAorUEFTUyAi
emVyb++/vSIgc2hvdWxkIG1hdGNoIHdpdGggIiN6ZXJvXFwwMDAwMDAiIAorUEFTUyAiemVyb1x1
MDAwMCIgc2hvdWxkIG5ldmVyIG1hdGNoIHdpdGggIiN6ZXJvXFwwMDAwMDAiIAorUEFTUyAi77+9
c3Vycm9nYXRlRmlyc3QiIHNob3VsZCBtYXRjaCB3aXRoICIjXFxkODNkIHN1cnJvZ2F0ZUZpcnN0
IiAKK1BBU1MgIlx1ZDgzZHN1cnJvZ2F0ZUZpcnN0IiBzaG91bGQgbmV2ZXIgbWF0Y2ggd2l0aCAi
I1xcZDgzZCBzdXJyb2dhdGVGaXJzdCIgCitQQVNTICJzdXJyb2dhdGVTZWNvbmTvv70iIHNob3Vs
ZCBtYXRjaCB3aXRoICIjc3Vycm9nYXRlU2Vjb25kXFxkZDExIiAKK1BBU1MgInN1cnJvZ2F0ZVNl
Y29uZFx1ZGQxMSIgc2hvdWxkIG5ldmVyIG1hdGNoIHdpdGggIiNzdXJyb2dhdGVTZWNvbmRcXGRk
MTEiIAorUEFTUyAic3Vycm9nYXRlUGFpcu+/ve+/vSIgc2hvdWxkIG1hdGNoIHdpdGggIiNzdXJy
b2dhdGVQYWlyXFxkODNkXFxkZDExIiAKK1BBU1MgInN1cnJvZ2F0ZVBhaXLwn5SRIiBzaG91bGQg
bmV2ZXIgbWF0Y2ggd2l0aCAiI3N1cnJvZ2F0ZVBhaXJcXGQ4M2RcXGRkMTEiIAorUEFTUyAib3V0
T2ZSYW5nZe+/vSIgc2hvdWxkIG1hdGNoIHdpdGggIiNvdXRPZlJhbmdlXFwxMTAwMDAiIAorUEFT
UyAib3V0T2ZSYW5nZe+/vSIgc2hvdWxkIG1hdGNoIHdpdGggIiNvdXRPZlJhbmdlXFwxMTAwMzAi
IAorUEFTUyAib3V0T2ZSYW5nZTAiIHNob3VsZCBuZXZlciBtYXRjaCB3aXRoICIjb3V0T2ZSYW5n
ZVxcMTEwMDMwIiAKK1BBU1MgIm91dE9mUmFuZ2Xvv70iIHNob3VsZCBtYXRjaCB3aXRoICIjb3V0
T2ZSYW5nZVxcNTU1NTU1IiAKK1BBU1MgIm91dE9mUmFuZ2Xvv70iIHNob3VsZCBtYXRjaCB3aXRo
ICIjb3V0T2ZSYW5nZVxcZmZmZmZmIiAKK1BBU1MgImVvZlxcIiBzaG91bGQgbmV2ZXIgbWF0Y2gg
d2l0aCAiI2VvZlxcIiAKK1BBU1MgIi5jb21tYSIgc2hvdWxkIG1hdGNoIHdpdGggIiNcXC5jb21t
YSIgCitQQVNTICItbWludXMiIHNob3VsZCBtYXRjaCB3aXRoICIjXFwtbWludXMiIAorUEFTUyAi
ZyIgc2hvdWxkIG1hdGNoIHdpdGggIiNcXGciIAorUEFTUyAiYUJNUFJlZ3VsYXIiIHNob3VsZCBt
YXRjaCB3aXRoICIjXFw2MSBCTVBSZWd1bGFyIiAKK1BBU1MgIvCflJFub25CTVAiIHNob3VsZCBt
YXRjaCB3aXRoICIjXFwxZjUxMSBub25CTVAiIAorUEFTUyAiMDBjb250aW51ZUVzY2FwZXMiIHNo
b3VsZCBtYXRjaCB3aXRoICIjXFwzMFxcMzAgY29udGludWVFc2NhcGVzIiAKK1BBU1MgIjAwY29u
dGludWVFc2NhcGVzIiBzaG91bGQgbWF0Y2ggd2l0aCAiI1xcMzAgXFwzMCBjb250aW51ZUVzY2Fw
ZXMiIAorUEFTUyAiY29udGludWVFc2NhcGVzMDAiIHNob3VsZCBtYXRjaCB3aXRoICIjY29udGlu
dWVFc2NhcGVzXFwzMCBcXDMwICIgCitQQVNTICJjb250aW51ZUVzY2FwZXMwMCIgc2hvdWxkIG1h
dGNoIHdpdGggIiNjb250aW51ZUVzY2FwZXNcXDMwIFxcMzAiIAorUEFTUyAiY29udGludWVFc2Nh
cGVzMDAiIHNob3VsZCBtYXRjaCB3aXRoICIjY29udGludWVFc2NhcGVzXFwzMFxcMzAgIiAKK1BB
U1MgImNvbnRpbnVlRXNjYXBlczAwIiBzaG91bGQgbWF0Y2ggd2l0aCAiI2NvbnRpbnVlRXNjYXBl
c1xcMzBcXDMwIiAKK1BBU1MgImhlbGxvIiBzaG91bGQgbWF0Y2ggd2l0aCAiI2hlbFxcNkNvIiAK
K1BBU1MgIiZCIiBzaG91bGQgbWF0Y2ggd2l0aCAiI1xcMjYgQiIgCitQQVNTICJoZWxsbyIgc2hv
dWxkIG1hdGNoIHdpdGggIiNoZWxcXDZDIG8iIAorUEFTUyAic3BhY2VzIiBzaG91bGQgbWF0Y2gg
d2l0aCAiI3NwYWNcXDY1XHJcbnMiIAorUEFTUyAic3BhY2VzIiBzaG91bGQgbWF0Y2ggd2l0aCAi
I3NwXFw2MVx0Y1xcNjVcZnMiIAorUEFTUyAidGVzdO2emSIgc2hvdWxkIG1hdGNoIHdpdGggIiN0
ZXN0XFxENzk5IiAKK1BBU1MgIu6AgCIgc2hvdWxkIG1hdGNoIHdpdGggIiNcXEUwMDAiIAorUEFT
UyAidGVzdCIgc2hvdWxkIG1hdGNoIHdpdGggIiN0ZVxcc1xcdCIgCitQQVNTICJzcGFjZXMgaW5c
dGlkZW50IiBzaG91bGQgbWF0Y2ggd2l0aCAiI3NwYWNlc1xcIGluXFxcdGlkZW50IiAKK1BBU1Mg
Ii4sOiEiIHNob3VsZCBtYXRjaCB3aXRoICIjXFwuXFwsXFw6XFwhIiAKK1BBU1MgIm51bGzvv70i
IHNob3VsZCBtYXRjaCB3aXRoICIjbnVsbFxcMCIgCitQQVNTICJudWxs77+9IiBzaG91bGQgbWF0
Y2ggd2l0aCAiI251bGxcXDAwMDAiIAorUEFTUyAibGFyZ2Xvv70iIHNob3VsZCBtYXRjaCB3aXRo
ICIjbGFyZ2VcXDExMDAwMCIgCitQQVNTICJsYXJnZe+/vSIgc2hvdWxkIG1hdGNoIHdpdGggIiNs
YXJnZVxcMjM0NTZhIiAKK1BBU1MgInN1cnJvZ2F0Ze+/vSIgc2hvdWxkIG1hdGNoIHdpdGggIiNz
dXJyb2dhdGVcXEQ4MDAiIAorUEFTUyAic3Vycm9nYXRl77+9IiBzaG91bGQgbWF0Y2ggd2l0aCAi
I3N1cnJvZ2F0ZVxcMERCQUMiIAorUEFTUyAi77+9c3Vycm9nYXRlIiBzaG91bGQgbWF0Y2ggd2l0
aCAiI1xcMDBERkZGc3Vycm9nYXRlIiAKK1BBU1MgIvSPv78iIHNob3VsZCBtYXRjaCB3aXRoICIj
XFwxMGZGZkYiIAorUEFTUyAi9I+/vzAiIHNob3VsZCBtYXRjaCB3aXRoICIjXFwxMGZGZkYwIiAK
K1BBU1MgIvSAgIAwMCIgc2hvdWxkIG1hdGNoIHdpdGggIiNcXDEwMDAwMDAwIiAKK1BBU1MgImVv
Zu+/vSIgc2hvdWxkIG1hdGNoIHdpdGggIiNlb2ZcXCIgCitQQVNTICJzaW1wbGUtaWRlbnQiIHNo
b3VsZCBtYXRjaCB3aXRoICIjc2ltcGxlLWlkZW50IiAKK1BBU1MgInRlc3RpbmcxMjMiIHNob3Vs
ZCBtYXRjaCB3aXRoICIjdGVzdGluZzEyMyIgCitQQVNTICJfdW5kZXJzY29yZSIgc2hvdWxkIG1h
dGNoIHdpdGggIiNfdW5kZXJzY29yZSIgCitQQVNTICItdGV4dCIgc2hvdWxkIG1hdGNoIHdpdGgg
IiMtdGV4dCIgCitQQVNTICItbSIgc2hvdWxkIG1hdGNoIHdpdGggIiMtXFw2ZCIgCitQQVNTICIt
LWFiYyIgc2hvdWxkIG1hdGNoIHdpdGggIiMtLWFiYyIgCitQQVNTICItLSIgc2hvdWxkIG1hdGNo
IHdpdGggIiMtLSIgCitQQVNTICItLTExIiBzaG91bGQgbWF0Y2ggd2l0aCAiIy0tMTEiIAorUEFT
UyAiLS0tIiBzaG91bGQgbWF0Y2ggd2l0aCAiIy0tLSIgCitQQVNTICLigIMiIHNob3VsZCBtYXRj
aCB3aXRoICIj4oCDIiAKK1BBU1MgIsKgIiBzaG91bGQgbWF0Y2ggd2l0aCAiI8KgIiAKK1BBU1Mg
IuGItCIgc2hvdWxkIG1hdGNoIHdpdGggIiPhiLQiIAorUEFTUyAi8JKNhSIgc2hvdWxkIG1hdGNo
IHdpdGggIiPwko2FIiAKK1BBU1MgIu+/vSIgc2hvdWxkIG1hdGNoIHdpdGggIiNcdTAwMDAiIAor
UEFTUyAiYWLvv71jIiBzaG91bGQgbWF0Y2ggd2l0aCAiI2FiXHUwMDAwYyIgCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL25vZGVz
L1BhcmVudE5vZGUtcXVlcnlTZWxlY3Rvci1lc2NhcGVzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS9ub2Rlcy9QYXJlbnROb2RlLXF1ZXJ5U2Vs
ZWN0b3ItZXNjYXBlcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY1YTc1ZTVjMDMwNjc3ZmUzYmY2M2U0NDQz
YWMyYmZlY2EzNDhjNDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS9ub2Rlcy9QYXJlbnROb2RlLXF1ZXJ5U2VsZWN0b3It
ZXNjYXBlcy5odG1sCkBAIC0wLDAgKzEsMTIzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxtZXRhIGNo
YXJzZXQ9dXRmLTg+Cis8dGl0bGU+cXVlcnlTZWxlY3RvcigpIHdpdGggQ1NTIGVzY2FwZXM8L3Rp
dGxlPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL2RvbS5zcGVjLndoYXR3Zy5vcmcv
I2RvbS1wYXJlbnRub2RlLXF1ZXJ5c2VsZWN0b3IiPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJo
dHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXN5bnRheC8jY29uc3VtZS1lc2NhcGVkLWNvZGUt
cG9pbnQiPgorPGxpbmsgcmVsPSJhdXRob3IiIHRpdGxlPSJEb21lbmljIERlbmljb2xhIiBocmVm
PSJtYWlsdG86ZEBkb21lbmljLm1lIj4KKzxsaW5rIHJlbD0iYXV0aG9yIiB0aXRsZT0iYmVsbGJp
bmQiIGhyZWY9Im1haWx0bzpiZWxsYmluZEBnbWFpbC5jb20iPgorPHNjcmlwdCBzcmM9Ii9yZXNv
dXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMv
dGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0PgorInVzZSBzdHJpY3Qi
OworCitmdW5jdGlvbiB0ZXN0TWF0Y2hlZChpZCwgc2VsZWN0b3IpIHsKKyAgdGVzdCgoKSA9PiB7
CisgICAgY29uc3QgY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Cisg
ICAgY29uc3QgY2hpbGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAgY2hp
bGQuaWQgPSBpZDsKKworICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChjaGlsZCk7CisKKyAgICBh
c3NlcnRfZXF1YWxzKGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKSwgY2hpbGQpOwor
ICB9LCBgJHtKU09OLnN0cmluZ2lmeShpZCl9IHNob3VsZCBtYXRjaCB3aXRoICR7SlNPTi5zdHJp
bmdpZnkoc2VsZWN0b3IpfWApOworfQorCitmdW5jdGlvbiB0ZXN0TmV2ZXJNYXRjaGVkKGlkLCBz
ZWxlY3RvcikgeworICB0ZXN0KCgpID0+IHsKKyAgICBjb25zdCBjb250YWluZXIgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICBjb25zdCBjaGlsZCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoInNwYW4iKTsKKyAgICBjaGlsZC5pZCA9IGlkOworCisgICAgY29udGFpbmVyLmFw
cGVuZENoaWxkKGNoaWxkKTsKKworICAgIGFzc2VydF9lcXVhbHMoY29udGFpbmVyLnF1ZXJ5U2Vs
ZWN0b3Ioc2VsZWN0b3IpLCBudWxsKTsKKyAgfSwgYCR7SlNPTi5zdHJpbmdpZnkoaWQpfSBzaG91
bGQgbmV2ZXIgbWF0Y2ggd2l0aCAke0pTT04uc3RyaW5naWZ5KHNlbGVjdG9yKX1gKTsKK30KKwor
Ly8gNC4zLjcgZnJvbSBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXN5bnRheC8jY29uc3Vt
ZS1lc2NhcGVkLWNvZGUtcG9pbnQKK3Rlc3RNYXRjaGVkKCJub25lc2NhcGVkIiwgIiNub25lc2Nh
cGVkIik7CisKKy8vIC0gZXNjYXBlIGhleCBkaWdpdAordGVzdE1hdGNoZWQoIjBuZXh0SXNXaGl0
ZVNwYWNlIiwgIiNcXDMwIG5leHRJc1doaXRlU3BhY2UiKTsKK3Rlc3RNYXRjaGVkKCIwbmV4dElz
Tm90SGV4TGV0dGVycyIsICIjXFwzMG5leHRJc05vdEhleExldHRlcnMiKTsKK3Rlc3RNYXRjaGVk
KCIwY29ubmVjdEhleE1vcmVUaGFuNkhleCIsICIjXFwwMDAwMzBjb25uZWN0SGV4TW9yZVRoYW42
SGV4Iik7Cit0ZXN0TWF0Y2hlZCgiMHNwYWNlTW9yZVRoYW42SGV4IiwgIiNcXDAwMDAzMCBzcGFj
ZU1vcmVUaGFuNkhleCIpOworCisvLyAtIGhleCBkaWdpdCBzcGVjaWFsIHJlcGxhY2VtZW50Cisv
LyAxLiB6ZXJvIHBvaW50cwordGVzdE1hdGNoZWQoInplcm9cdXtmZmZkfSIsICIjemVyb1xcMCIp
OwordGVzdE5ldmVyTWF0Y2hlZCgiemVyb1x1ezB9IiwgIiN6ZXJvXFwwIik7Cit0ZXN0TWF0Y2hl
ZCgiemVyb1x1e2ZmZmR9IiwgIiN6ZXJvXFwwMDAwMDAiKTsKK3Rlc3ROZXZlck1hdGNoZWQoInpl
cm9cdXswfSIsICIjemVyb1xcMDAwMDAwIik7CisvLyAyLiBzdXJyb2dhdGUgcG9pbnRzCit0ZXN0
TWF0Y2hlZCgiXHV7ZmZmZH1zdXJyb2dhdGVGaXJzdCIsICIjXFxkODNkIHN1cnJvZ2F0ZUZpcnN0
Iik7Cit0ZXN0TmV2ZXJNYXRjaGVkKCJcdWQ4M2RzdXJyb2dhdGVGaXJzdCIsICIjXFxkODNkIHN1
cnJvZ2F0ZUZpcnN0Iik7Cit0ZXN0TWF0Y2hlZCgic3Vycm9nYXRlU2Vjb25kXHV7ZmZmZH0iLCAi
I3N1cnJvZ2F0ZVNlY29uZFxcZGQxMSIpOwordGVzdE5ldmVyTWF0Y2hlZCgic3Vycm9nYXRlU2Vj
b25kXHVkZDExIiwgIiNzdXJyb2dhdGVTZWNvbmRcXGRkMTEiKTsKK3Rlc3RNYXRjaGVkKCJzdXJy
b2dhdGVQYWlyXHV7ZmZmZH1cdXtmZmZkfSIsICIjc3Vycm9nYXRlUGFpclxcZDgzZFxcZGQxMSIp
OwordGVzdE5ldmVyTWF0Y2hlZCgic3Vycm9nYXRlUGFpclx1ezFmNTExfSIsICIjc3Vycm9nYXRl
UGFpclxcZDgzZFxcZGQxMSIpOworLy8gMy4gb3V0IG9mIHJhbmdlIHBvaW50cwordGVzdE1hdGNo
ZWQoIm91dE9mUmFuZ2VcdXtmZmZkfSIsICIjb3V0T2ZSYW5nZVxcMTEwMDAwIik7Cit0ZXN0TWF0
Y2hlZCgib3V0T2ZSYW5nZVx1e2ZmZmR9IiwgIiNvdXRPZlJhbmdlXFwxMTAwMzAiKTsKK3Rlc3RO
ZXZlck1hdGNoZWQoIm91dE9mUmFuZ2VcdXszMH0iLCAiI291dE9mUmFuZ2VcXDExMDAzMCIpOwor
dGVzdE1hdGNoZWQoIm91dE9mUmFuZ2VcdXtmZmZkfSIsICIjb3V0T2ZSYW5nZVxcNTU1NTU1Iik7
Cit0ZXN0TWF0Y2hlZCgib3V0T2ZSYW5nZVx1e2ZmZmR9IiwgIiNvdXRPZlJhbmdlXFxmZmZmZmYi
KTsKKworLy8gLSBlc2NhcGUgRU9GCit0ZXN0TmV2ZXJNYXRjaGVkKCJlb2ZcXCIsICIjZW9mXFwi
KTsKKworLy8gLSBlc2NhcGUgYW55dGhvbmcgZWxzZQordGVzdE1hdGNoZWQoIi5jb21tYSIsICIj
XFwuY29tbWEiKTsKK3Rlc3RNYXRjaGVkKCItbWludXMiLCAiI1xcLW1pbnVzIik7Cit0ZXN0TWF0
Y2hlZCgiZyIsICIjXFxnIik7CisKKy8vIG5vbiBlZGdlIGNhc2VzCit0ZXN0TWF0Y2hlZCgiYUJN
UFJlZ3VsYXIiLCAiI1xcNjEgQk1QUmVndWxhciIpOwordGVzdE1hdGNoZWQoIlx1ezFmNTExfW5v
bkJNUCIsICIjXFwxZjUxMSBub25CTVAiKTsKK3Rlc3RNYXRjaGVkKCIwMGNvbnRpbnVlRXNjYXBl
cyIsICIjXFwzMFxcMzAgY29udGludWVFc2NhcGVzIik7Cit0ZXN0TWF0Y2hlZCgiMDBjb250aW51
ZUVzY2FwZXMiLCAiI1xcMzAgXFwzMCBjb250aW51ZUVzY2FwZXMiKTsKK3Rlc3RNYXRjaGVkKCJj
b250aW51ZUVzY2FwZXMwMCIsICIjY29udGludWVFc2NhcGVzXFwzMCBcXDMwICIpOwordGVzdE1h
dGNoZWQoImNvbnRpbnVlRXNjYXBlczAwIiwgIiNjb250aW51ZUVzY2FwZXNcXDMwIFxcMzAiKTsK
K3Rlc3RNYXRjaGVkKCJjb250aW51ZUVzY2FwZXMwMCIsICIjY29udGludWVFc2NhcGVzXFwzMFxc
MzAgIik7Cit0ZXN0TWF0Y2hlZCgiY29udGludWVFc2NhcGVzMDAiLCAiI2NvbnRpbnVlRXNjYXBl
c1xcMzBcXDMwIik7CisKKy8vIGlkZW50IHRlc3RzIGNhc2UgZnJvbSBDU1MgdGVzdHMgb2YgY2hy
b21pdW0gc291cmNlOiBodHRwczovL2dvby5nbC8zQ3hkb3YKK3Rlc3RNYXRjaGVkKCJoZWxsbyIs
ICIjaGVsXFw2Q28iKTsKK3Rlc3RNYXRjaGVkKCImQiIsICIjXFwyNiBCIik7Cit0ZXN0TWF0Y2hl
ZCgiaGVsbG8iLCAiI2hlbFxcNkMgbyIpOwordGVzdE1hdGNoZWQoInNwYWNlcyIsICIjc3BhY1xc
NjVcclxucyIpOwordGVzdE1hdGNoZWQoInNwYWNlcyIsICIjc3BcXDYxXHRjXFw2NVxmcyIpOwor
dGVzdE1hdGNoZWQoInRlc3RcdXtENzk5fSIsICIjdGVzdFxcRDc5OSIpOwordGVzdE1hdGNoZWQo
Ilx1e0UwMDB9IiwgIiNcXEUwMDAiKTsKK3Rlc3RNYXRjaGVkKCJ0ZXN0IiwgIiN0ZVxcc1xcdCIp
OwordGVzdE1hdGNoZWQoInNwYWNlcyBpblx0aWRlbnQiLCAiI3NwYWNlc1xcIGluXFxcdGlkZW50
Iik7Cit0ZXN0TWF0Y2hlZCgiLiw6ISIsICIjXFwuXFwsXFw6XFwhIik7Cit0ZXN0TWF0Y2hlZCgi
bnVsbFx1e2ZmZmR9IiwgIiNudWxsXFwwIik7Cit0ZXN0TWF0Y2hlZCgibnVsbFx1e2ZmZmR9Iiwg
IiNudWxsXFwwMDAwIik7Cit0ZXN0TWF0Y2hlZCgibGFyZ2VcdXtmZmZkfSIsICIjbGFyZ2VcXDEx
MDAwMCIpOwordGVzdE1hdGNoZWQoImxhcmdlXHV7ZmZmZH0iLCAiI2xhcmdlXFwyMzQ1NmEiKTsK
K3Rlc3RNYXRjaGVkKCJzdXJyb2dhdGVcdXtmZmZkfSIsICIjc3Vycm9nYXRlXFxEODAwIik7Cit0
ZXN0TWF0Y2hlZCgic3Vycm9nYXRlXHV7ZmZmZH0iLCAiI3N1cnJvZ2F0ZVxcMERCQUMiKTsKK3Rl
c3RNYXRjaGVkKCJcdXtmZmZkfXN1cnJvZ2F0ZSIsICIjXFwwMERGRkZzdXJyb2dhdGUiKTsKK3Rl
c3RNYXRjaGVkKCJcdXsxMGZmZmZ9IiwgIiNcXDEwZkZmRiIpOwordGVzdE1hdGNoZWQoIlx1ezEw
ZmZmZn0wIiwgIiNcXDEwZkZmRjAiKTsKK3Rlc3RNYXRjaGVkKCJcdXsxMDAwMDB9MDAiLCAiI1xc
MTAwMDAwMDAiKTsKK3Rlc3RNYXRjaGVkKCJlb2ZcdXtmZmZkfSIsICIjZW9mXFwiKTsKKwordGVz
dE1hdGNoZWQoInNpbXBsZS1pZGVudCIsICIjc2ltcGxlLWlkZW50Iik7Cit0ZXN0TWF0Y2hlZCgi
dGVzdGluZzEyMyIsICIjdGVzdGluZzEyMyIpOwordGVzdE1hdGNoZWQoIl91bmRlcnNjb3JlIiwg
IiNfdW5kZXJzY29yZSIpOwordGVzdE1hdGNoZWQoIi10ZXh0IiwgIiMtdGV4dCIpOwordGVzdE1h
dGNoZWQoIi1tIiwgIiMtXFw2ZCIpOwordGVzdE1hdGNoZWQoIi0tYWJjIiwgIiMtLWFiYyIpOwor
dGVzdE1hdGNoZWQoIi0tIiwgIiMtLSIpOwordGVzdE1hdGNoZWQoIi0tMTEiLCAiIy0tMTEiKTsK
K3Rlc3RNYXRjaGVkKCItLS0iLCAiIy0tLSIpOwordGVzdE1hdGNoZWQoIlx1ezIwMDN9IiwgIiNc
dXsyMDAzfSIpOwordGVzdE1hdGNoZWQoIlx1e0EwfSIsICIjXHV7QTB9Iik7Cit0ZXN0TWF0Y2hl
ZCgiXHV7MTIzNH0iLCAiI1x1ezEyMzR9Iik7Cit0ZXN0TWF0Y2hlZCgiXHV7MTIzNDV9IiwgIiNc
dXsxMjM0NX0iKTsKK3Rlc3RNYXRjaGVkKCJcdXtmZmZkfSIsICIjXHV7MH0iKTsKK3Rlc3RNYXRj
aGVkKCJhYlx1e2ZmZmR9YyIsICIjYWJcdXswfWMiKTsKKzwvc2NyaXB0Pgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>