<?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>22116</bug_id>
          
          <creation_ts>2008-11-06 15:25:15 -0800</creation_ts>
          <short_desc>Revise manual charset alias in TextCodecICU</short_desc>
          <delta_ts>2008-12-05 01:49:08 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jungshik Shin">jshin</reporter>
          <assigned_to name="Jungshik Shin">jshin</assigned_to>
          <cc>ap</cc>
    
    <cc>darin</cc>
    
    <cc>ian</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>97881</commentid>
    <comment_count>0</comment_count>
    <who name="Jungshik Shin">jshin</who>
    <bug_when>2008-11-06 15:25:15 -0800</bug_when>
    <thetext>Chromium tree has its own customized copy of ICU to take care of various issues with ICU 3.8.1 (it uses). Some of those changes are addressed in WebCore by adding work-arounds in the code, but Chrom does not need them. This bug is to add PLATFORM(CHROMIUM) #ifdefs for chrome to opt out of those work-arounds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97897</commentid>
    <comment_count>1</comment_count>
      <attachid>24960</attachid>
    <who name="Jungshik Shin">jshin</who>
    <bug_when>2008-11-06 17:53:29 -0800</bug_when>
    <thetext>Created attachment 24960
patch 

While adding PLATFORM(CHROMIUM) #ifdef&apos;s, I fixed what appears to be a typo (windows874-2000 =&gt; windows-874-2000).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97898</commentid>
    <comment_count>2</comment_count>
    <who name="Jungshik Shin">jshin</who>
    <bug_when>2008-11-06 18:12:38 -0800</bug_when>
    <thetext>Some more info: 
TextCodecICU.cpp changes: most of aliases (except for ISO-8859-9 =&gt; Windows-1254) are included in our copy of ICU and we want to avoid duping them in the code. 

line-break change : As commented in the current code, it&apos;s fixed in ICU 4.0x (Chrome uses ICU 3.8.1, but this issue was fixed locally) and eventually, that code should go away regardless of PLATFORM(CHROMIUM). It&apos;s not that critical, but we want to avoid the unnecessary code if possible. 

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97931</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-11-07 00:58:43 -0800</bug_when>
    <thetext>I think that we should try to make this conditional based on ICU version, not the port (although I understand that this may be tricky, given that you have custom modifications).

I&apos;m also not sure what&apos;s the benefit in not applying these workarounds - they give negligible if any runtime slowdown, but tracking ICU versions used by ports is additional work for developers.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100370</commentid>
    <comment_count>4</comment_count>
      <attachid>24960</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-11-25 21:32:51 -0800</bug_when>
    <thetext>Comment on attachment 24960
patch 

It seems like these changes should be broken into 2 types.  1. are modifications to ICU that chromium has made.  Those should be in PLATFORM(CHROMIUM) blocks.  The others are version differences between ICU versions.  We should use U_ICU_VERSION_MAJOR_NUM and U_ICU_VERSION_MAJOR_NUM and U_ICU_VERSION_MINOR_NUM comparisons for those, I would assume?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100371</commentid>
    <comment_count>5</comment_count>
      <attachid>24960</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-11-25 21:39:27 -0800</bug_when>
    <thetext>Comment on attachment 24960
patch 

I&apos;m going to mark this r- (to remove it from the review queue), pending further comment from Jungshik.  Seems like 2 questions were raised above by ap and myself:

1.  What is the harm in leaving any of these workarounds in, even though chromium uses a fixed version of ICU?  Maybe this is very performance sensitive code? (probably is) and thus removing these workarounds is a speedup?

2.  If we&apos;re going to conditionals these workarounds, we should probably do so with some smarter #defines.  Here are two possible examples:


#define USE_ICU_3_X_LINE_BREAK_WORKAROUND (U_ICU_VERSION_MAJOR_NUM &lt; 3 &amp;&amp; !PLATFORM(CHROMIUM))

and the other one seems like it could just be an ICU major/minor version check for 3.3 or later, no?  Maybe it too needs a nice USE_ICU_3_X_EXTRA_ENCODING_ALIASES or something.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100373</commentid>
    <comment_count>6</comment_count>
    <who name="Jungshik Shin">jshin</who>
    <bug_when>2008-11-25 22:42:37 -0800</bug_when>
    <thetext>Sorry I haven&apos;t gotten back here earlier. And, thanks for the suggestion. 

I have been tinkering what would be the best approach here, but haven&apos;t yet come up with one. 

For the line breaking issue, ICU version macros should work in principle, but Chrome still uses ICU 3.8.1 with a lot of changes while the line breaking issue was not resolved until ICU 4.x. (ICU 4.0 may not have a fix. I have to check again). So, using ICU version macros wouldn&apos;t work for Chrome. I don&apos;t have any measurement of how hot it&apos;s (I can measure it with a special set of pages - Chinese and Japanese pages). [0]  My gut feeling is that it could be pretty hot, but it&apos;s often wrong. 

TextCodecICU change is trickier. Though less &quot;invasive&quot; than the patch uploaded, PLATFORM(CHROMIUM) is still necessary. There are two issues:

1. Chrome doesn&apos;t want to include various legacy Mac encodings (e.g macgreek, macturkish) in our build of ICU. If we leave alone those names alone in the code without actual mapping tables in ICU, Chrome (well, Chrome&apos;s renderer process) would crash if somebody intentionally makes a web page with one of those encodings and points Chrome to it. Then, it occurred to me that some other ports (especially on ports for  mobile devices) may not want them, either, in their ICU build. So, instead of &apos;PLATFORM(CHROMIUM)&apos;, we may use something like &apos;DISABLE_LEGACY_MAC_ENCODINGS&apos; (which means excluding all legacy mac encodings other than &apos;macroman&apos; and possibly &apos;maccyrillic&apos; [2]). 

What do you think of this macro? 

2. I&apos;d rather not expose windows-949-2000. MS&apos;s request to register windows-{949,936,932,950} has been stuck in the IANA. windows-949 is most problematic because 936,932,950 have other standard names to use (GBK, Shift_JIS and Big5) while windows-949 does not. (EUC-KR is a subset of windows-949). Nonetheless, virtually everybody means windows-949 while declaring their pages to be EUC-KR. So, I guess we have to live with windows-949. I took a long look at ICU&apos;s converters.txt (unmodified version of ICU 3.x and 4.x) and played with ucnv_open to find that we don&apos;t have to pass &apos;windows-949-2000&apos; to ucnv_open to use the table (&apos;windows-949-2000.txt&apos;). We can just use &apos;windows-949&apos;, which I can live with. The same is true of &apos;windows-874&apos; vs &apos;windows-874-2000&apos;. (there&apos;s no need to explicitly open ucnv_open with &apos;windows-874-2000&apos;. &apos;windows-874&apos; works well). 

 Another related concern was that ICU&apos;s encoding detector returns &quot;EUC-KR&quot; (bug 16482), but I figured out how to deal with that issue in my patch (to be updated) for bug 16482. So, it&apos;s not an issue any more.

Tomorrow, I&apos;ll make a new patch for you to take a look at. 

BTW, Chrome&apos;s ICU converter customization can be used by any port (including Safari on Windows) which has freedom to customize ICU. So, it&apos;s possible to come up with a more generic macro for TextCodecICU. Well,  I&apos;d rather put off this for later.

[0] I realized that I can extract some stats from Chrome&apos;s pageload test #2 (by excluding numbers from Korean sites). 

[1] There&apos;s one more I&apos;d rather block in Chrome (manual GBK override for a dozen? or so codepoints) that I forgot to include in the patch because again we can take care of them in ICU. 

[2] A couple of layout tests need to be split into two if we take this path. I already have them split in my local tree.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100375</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-11-25 22:50:44 -0800</bug_when>
    <thetext>Clearly Jungshik has given this more thought than I. :)  I defer to those in the project who have actually worked with ICU (darin, ap, possibly mitz?).  Thank you for your additional comments Jungshik.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100386</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-11-26 00:51:41 -0800</bug_when>
    <thetext>In cases where we must check ICU version, I&apos;d prefer runtime version detection over version macros, as the version of ICU used to build WebKit doesn&apos;t necessarily match the one present on user systems.

I think that we really should try to avoid making different judgement calls here - e.g. is there any reason to support &quot;windows-949-2000&quot; in Safari, but not in Chrome? If it&apos;s harmful, let&apos;s drop it from all ports.

I can see a bit of a reason for having different legacy Mac encoding support (as local files on Macs are way more likely to use those than Web documents), but even that is not quite clear cut.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>101108</commentid>
    <comment_count>9</comment_count>
    <who name="Jungshik Shin">jshin</who>
    <bug_when>2008-12-02 16:31:38 -0800</bug_when>
    <thetext>Perhaps, I was not clear about windows-949. What I meant is not that &apos;euc-kr&apos; should not be treated as windows-949. We should certainly do that because there are so many web pages labelled with euc-kr that are actually windows-949. 

In a sense, my issue with it is more &apos;cosmetic&apos; than &apos;substantial&apos;. I&apos;d want to avoid exposing that name when we emit something to a user, web server, etc. Because windows-949 is not registered with IANA, there&apos;s very few, if any, web pages that uses that label and understands the label. 

So, my preference is to use the name &apos;EUC-KR&apos; with the actual mapping being &apos;windows-949&apos; (which is a &apos;lie&apos; :-)).  Without changing the ICU alias table, it&apos;s still possible to do that by some tweaking in TextCodecICU, TextEncoding et, but it seems rather dirty.  Because we emit the charset canonical name only in a couple of places (Javascript document.encoding? property and post form submission. I haven&apos;t check whether we use &apos;charset&apos; parameter. I f not, it&apos;s not a concern at all), I guess we can just go with &apos;windows-949&apos;. 

&apos;windows-949&apos; and &apos;windows-874&apos; as canonical names work as well as &apos;windows-949-2000&apos; and &apos;windows-874-2000&apos; (in ICU 3.2, 3.6, 3.8 and 4.0) and I think it&apos;s better to use more compact names.

I&apos;ve revised TextCodecICU.cpp (with some more small changes in addition to the above two) and changed the corresponding tests in fast/encoding and am uploading a patch. 

I&apos;ll address the line breaking issue in another bug. 





</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>101109</commentid>
    <comment_count>10</comment_count>
      <attachid>25689</attachid>
    <who name="Jungshik Shin">jshin</who>
    <bug_when>2008-12-02 16:33:14 -0800</bug_when>
    <thetext>Created attachment 25689
patch 

Revises charset alias map for TextCodecICU.
        - Uses windows-949 and windows-874 instead of windows-949-2000 and windows-874
        - Replaces &apos;windows874&apos; in a couple of place with &apos;windows-874&apos; (for the canonical name)
        - Maps &apos;dos-874&apos; to &apos;windows-874&apos;
        - Maps &apos;EUC-CN&apos; to &apos;GBK&apos; and replaces it with &apos;GBK&apos; when it&apos;s used as the canonical name
        - Puts Mac encodings in a separate test char-decoding-mac.html. Rename char-decoding-mac.html
          in platform/mac to xnextstep-decoding.html to avoid the name collision in the result files.
        - Adds a JS file for common functions used by char-decoding-*.html tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>101168</commentid>
    <comment_count>11</comment_count>
      <attachid>25689</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-12-03 01:22:50 -0800</bug_when>
    <thetext>Comment on attachment 25689
patch 

Thank you, I like this patch a lot!

&gt; +        - Uses windows-949 and windows-874 instead of windows-949-2000 and windows-874

A typo, should be windows-874-2000.

The reason why I used windows-949-2000 is that windows-949 is ambiguous in ICU, see &lt;http://demo.icu-project.org/icu-bin/convexp?s=IANA&amp;s=MIME&amp;s=ALL&gt;. Does anything guarantee that the correct codec will be picked for windows-949 family encodings with your change? I _think_ that windows-949-2000 is the correct one, as in matching WinIE better, but I haven&apos;t verified that assumption. This is not an issue for windows-874.

On a tangential note, HTML5 uses the windows-949 name: &lt;http://www.whatwg.org/specs/web-apps/current-work/#character-encoding-requirements&gt;.

&gt; +        - Maps &apos;dos-874&apos; to &apos;windows-874&apos;

Could you please mention the rationale, in this bug and/or in ChangeLog? Is this done for compatibility with other browsers? Do both Firefox and IE support this name? Do we have a reason to think that actual pages ever use it? I don&apos;t have anything against this change, just want it fully documented.

&gt; +        - Maps &apos;EUC-CN&apos; to &apos;GBK&apos; and replaces it with &apos;GBK&apos; when it&apos;s used as the canonical name

Is this a change in behavior? According to ICU converter explorer, EUC-CN is already mapped to GB2312, which we upgrade to GBK.

&gt; +        - Adds &apos;x-uhc&apos; as an alias for &apos;windows-949&apos;

Could you please mention the rationale?

r- because of the concern about ambiguity of windows-949, but please feel free to mark for review again if it&apos;s actually OK for some reason that I missed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>101173</commentid>
    <comment_count>12</comment_count>
    <who name="Ian &apos;Hixie&apos; Hickson">ian</who>
    <bug_when>2008-12-03 02:04:41 -0800</bug_when>
    <thetext>I can change HTML5 if there&apos;s a better solution than what I have now. Just let me know.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>101267</commentid>
    <comment_count>13</comment_count>
    <who name="Jungshik Shin">jshin</who>
    <bug_when>2008-12-03 14:52:40 -0800</bug_when>
    <thetext>Thank you for going over it. I&apos;ll add a bit more details for my changes and upload a new patch. 

(In reply to comment #11)
&gt; (From update of attachment 25689 [review])
&gt; Thank you, I like this patch a lot!
&gt; 
&gt; &gt; +        - Uses windows-949 and windows-874 instead of windows-949-2000 and windows-874
&gt; 
&gt; A typo, should be windows-874-2000.
&gt; 
&gt; The reason why I used windows-949-2000 is that windows-949 is ambiguous in ICU,
&gt; see &lt;http://demo.icu-project.org/icu-bin/convexp?s=IANA&amp;s=MIME&amp;s=ALL&gt;. Does
&gt; anything guarantee that the correct codec will be picked for windows-949 family
&gt; encodings with your change? I _think_ that windows-949-2000 is the correct one,
&gt; as in matching WinIE better,but I haven&apos;t verified that assumption. This is
&gt; not an issue for windows-874.

I was also concerned about it :-) That&apos;s why I made sure that windows-949 is not ambiguous in all ICU versions I checked (3.2.1, 3.6, 3.8.1. 4.0 and trunk [1]). At the beginning of convrtrs.txt file, the priority order of various standards is listed. (see also  See also http://source.icu-project.org/repos/icu/icu/trunk/source/common/ucnv_io.c ). 
windows-949 is given to two mapping tables in the file, but one of two ( ibm-1363_P11B-1998) is not tagged with any standard while the other (windows-949-2000) is annotated with &apos;Windows&apos; and &apos;Java&apos;. &apos;Windows&apos; has the 2nd highest priority next to UTR22 so that &apos;windows-949-2000&apos; will be always picked up when &apos;windows-949&apos; is asked for in ucnv_open. 

Note that Shift_JIS has  a similar problem and there&apos;s no problem with it. Shift_JIS is given to  ibm-943_P15A-2003 and ibm-943_P130-1999, but ucnv_open(&quot;Shift_JIS&quot;...) always picks up the former because the latter is untagged while the former is tagged.

One more argument in favor of &apos;windows-949&apos; over &apos;windows-949-2000&apos; is that for MIME charset, we&apos;d better use a stable name like &apos;windows-949&apos; rather than a specific name like &apos;windows-949-2000&apos;. ISO-8859-X changed over time (by adding a few more characters), but specific names such as ISO-8859-7:200x or ISO-8859-5:198x are not generally used as MIME charset, but  ISO-8859-7 or ISO-8859-5 is used much more widely.
 
&gt; On a tangential note, HTML5 uses the windows-949 name:
&gt; &lt;http://www.whatwg.org/specs/web-apps/current-work/#character-encoding-requirements&gt;.

Sure, it does :-), but registering it with IANA got stuck for 2+ years. IANA registration aside, very few, if any, web pages use that name, which is NOT a concern. My minor concern mentioned earlier was that when we EMIT that name (form submission with POST if we add &apos;charset&apos; parameter to C-T header) and server-side programs may not recognize it. If that&apos;s indeed a problem, we have to use &apos;EUC-KR&apos; (name) while using the mapping for windows-949-2000. This is messy...

Do we add &apos;charset&apos; parameter to C-T header in POST form submission? If not, I guess we don&apos;t have to worry about that (document.encoding(?) or similar properties is of less concern). Gecko added charset several years ago  very briefly, but was forced to remove it because at that time, most web server-side programs choked on it. 


&gt; 
&gt; &gt; +        - Maps &apos;dos-874&apos; to &apos;windows-874&apos;
&gt; 
&gt; Could you please mention the rationale, in this bug and/or in ChangeLog? Is
&gt; this done for compatibility with other browsers? Do both Firefox and IE support
&gt; this name? Do we have a reason to think that actual pages ever use it? I don&apos;t
&gt; have anything against this change, just want it fully documented.

Actually, I think we can just drop it, but I&apos;d rather be on the safe-side by keeping it until I have some numbers to back it up.

Currently, &apos;dos-874&apos; is mapped manually to &apos;cp874&apos; with this line:

   registrar(&quot;dos874&quot;, &quot;cp874&quot;)

Hmm.. I wonder why this does not trigger assertion in a debug build because cp874 is neither MIME nor IANA standard names.  Anyway, cp874 in ICU is ibm-874_P100-1995, whose IANA name is TIS-620, which is in turn mapped to windows-874(-2000). So, replacing the above line with
   registrar(&quot;dos874&quot;, &quot;windows-874&quot;) 
is &apos;no-op&apos;. 


&gt; &gt; +        - Maps &apos;EUC-CN&apos; to &apos;GBK&apos; and replaces it with &apos;GBK&apos; when it&apos;s used as the canonical name
&gt; 
&gt; Is this a change in behavior? According to ICU converter explorer, EUC-CN is
&gt; already mapped to GB2312, which we upgrade to GBK.
 
Again, we have lines like :

  registrar(&quot;cngb&quot;, &quot;EUC-CN&quot;);

However, EUC-CN will not be picked up in the double-for-loop (going through IANA/MIME names and their aliases) because EUC-CN in convrtrs.txt is NOT tagged with any standard. And, I wonder why this works in a debug build.  

Anyway, directly mapping cngb, xgbk, xeuccn to &apos;GBK&apos; is cleaner, isn&apos;t it? 


&gt; &gt; +        - Adds &apos;x-uhc&apos; as an alias for &apos;windows-949&apos;
&gt; 
&gt; Could you please mention the rationale?

UHC stands for Unified Hangul Code (an alternative name for windows-949). Firefox only recognizes it (x-uhc) and tries not to expose it (well, it&apos;s in its UI), but some web authors pick the name and I saw it being used in a few cases.
 


[1] In addition to inspecting convrtrs.txt files in various ICU versions, I wrote a simple test program and made sure, in all ICU versions mentioned,  that there&apos;s no warning (U_AMBIGUOUS...) and what&apos;s actually picked up is &apos;windows-949-2000&apos; when &apos;windows-949&apos; is asked for.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>101268</commentid>
    <comment_count>14</comment_count>
      <attachid>25723</attachid>
    <who name="Jungshik Shin">jshin</who>
    <bug_when>2008-12-03 15:14:48 -0800</bug_when>
    <thetext>Created attachment 25723
updated patch (with more fleshed-out log entries)

Alexey, can you take another look? Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>101296</commentid>
    <comment_count>15</comment_count>
      <attachid>25723</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-12-03 22:54:49 -0800</bug_when>
    <thetext>Comment on attachment 25723
updated patch (with more fleshed-out log entries)

&gt; However, EUC-CN will not be picked up in the double-for-loop (going through
&gt; IANA/MIME names and their aliases) because EUC-CN in convrtrs.txt is NOT tagged
&gt; with any standard.

According to online converter explorer, it has both MIME and IANA standard names (GB2312 and csGB2312), so it should be picked. But I&apos;m probably a little confused: ChangeLog says &quot;Maps &apos;EUC-CN&apos; to &apos;GBK&apos;&quot;, while I don&apos;t see any changes to EUC-CN behavior in code, only an added test for it, which passes in ToT.

+// FIX: Have to add tests for Euro and a few new characters added to ISO-8859-x 

We use FIXME for such comments.

All substantial changes look good, and this patch significantly cleans up code and tests, r=me!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>101378</commentid>
    <comment_count>16</comment_count>
    <who name="Jungshik Shin">jshin</who>
    <bug_when>2008-12-04 13:18:46 -0800</bug_when>
    <thetext>Thanks again for the review.

(In reply to comment #15)
&gt; (From update of attachment 25723 [review])
&gt; &gt; However, EUC-CN will not be picked up in the double-for-loop (going through
&gt; &gt; IANA/MIME names and their aliases) because EUC-CN in convrtrs.txt is NOT tagged
&gt; &gt; with any standard.
&gt; 
&gt; According to online converter explorer, it has both MIME and IANA standard
&gt; names (GB2312 and csGB2312), so it should be picked. But I&apos;m probably a little
&gt; confused: ChangeLog says &quot;Maps &apos;EUC-CN&apos; to &apos;GBK&apos;&quot;, while I don&apos;t see any
&gt; changes to EUC-CN behavior in code, only an added test for it, which passes in
&gt; ToT.

You&apos;re right. When writing the previous comment, I incorrectly remembered what addToTextEncodingNameMap does. EUC-CN is picked up in the loop as an alias for GBK so &apos;registra(&quot;xeuccn&quot;, &quot;EUC-CN&quot;)&apos; indirectly aliases &apos;xeuccn&apos; to &apos;GBK&apos; because &apos;EUC-CN&apos; is aliased to GBK in the loop. My change removes that indirection and aliases &apos;xeuccn&apos; (and others) directly to &apos;GBK&apos;. Not a change of substance but a kinda code-cleanup.


&gt; +// FIX: Have to add tests for Euro and a few new characters added to
&gt; ISO-8859-x 
&gt; 
&gt; We use FIXME for such comments.
&gt; 
&gt; All substantial changes look good, and this patch significantly cleans up code
&gt; and tests, r=me!
&gt; 

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>101451</commentid>
    <comment_count>17</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-12-05 01:49:08 -0800</bug_when>
    <thetext>Committed revision 39021.

</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>24960</attachid>
            <date>2008-11-06 17:53:29 -0800</date>
            <delta_ts>2008-12-02 16:33:14 -0800</delta_ts>
            <desc>patch </desc>
            <filename>22116.patch</filename>
            <type>text/plain</type>
            <size>5422</size>
            <attacher name="Jungshik Shin">jshin</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDM4MjAx
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMDgtMTEt
MDYgIEp1bmdzaGlrIFNoaW4gIDxqc2hpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgZmV3IFBMQVRGT1JNKENIUk9N
SVVNKSBpZmRlZnMgdG8gV2ViQ29yZSB0byB0YWtlIGNhcmUKKyAgICAgICAgb2YgdGhlIGZhY3Qg
dGhhdCBDaHJvbWl1bSBoYXMgaXRzIG93biBjdXN0b21pemVkIGNvcHkgb2YgSUNVLgorCisgICAg
ICAgICogcGxhdGZvcm0vdGV4dC9DaGFyYWN0ZXJOYW1lcy5oOgorICAgICAgICAqIHBsYXRmb3Jt
L3RleHQvVGV4dENvZGVjSUNVLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb2RlY0lDVTo6
cmVnaXN0ZXJFeHRlbmRlZEVuY29kaW5nTmFtZXMpOgorICAgICAgICAqIHJlbmRlcmluZy9icmVh
a19saW5lcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaG91bGRCcmVha0FmdGVyKToKKwogMjAw
OC0xMS0wNiAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IEJldGggRGFraW4uCkluZGV4OiBwbGF0Zm9ybS90ZXh0L0NoYXJhY3Rlck5h
bWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gcGxhdGZvcm0vdGV4dC9DaGFyYWN0ZXJOYW1lcy5oCShyZXZp
c2lvbiAzODExNSkKKysrIHBsYXRmb3JtL3RleHQvQ2hhcmFjdGVyTmFtZXMuaAkod29ya2luZyBj
b3B5KQpAQCAtMzksOCArMzksMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNvbnN0IFVD
aGFyIGJ1bGxldCA9IDB4MjAyMjsKICAgICBjb25zdCBVQ2hhciBob3Jpem9udGFsRWxsaXBzaXMg
PSAweDIwMjY7CiAgICAgY29uc3QgVUNoYXIgaWRlb2dyYXBoaWNTcGFjZSA9IDB4MzAwMDsKKyNp
ZiAhUExBVEZPUk0oQ0hST01JVU0pCiAgICAgY29uc3QgVUNoYXIgaWRlb2dyYXBoaWNDb21tYSA9
IDB4MzAwMTsKICAgICBjb25zdCBVQ2hhciBpZGVvZ3JhcGhpY0Z1bGxTdG9wID0gMHgzMDAyOwor
I2VuZGlmCiAgICAgY29uc3QgVUNoYXIgbGVmdFRvUmlnaHRNYXJrID0gMHgyMDBFOwogICAgIGNv
bnN0IFVDaGFyIGxlZnRUb1JpZ2h0RW1iZWQgPSAweDIwMkE7CiAgICAgY29uc3QgVUNoYXIgbGVm
dFRvUmlnaHRPdmVycmlkZSA9IDB4MjAyRDsKSW5kZXg6IHBsYXRmb3JtL3RleHQvVGV4dENvZGVj
SUNVLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBwbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0lDVS5jcHAJKHJl
dmlzaW9uIDM4MTE1KQorKysgcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNJQ1UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC04OCw2ICs4OCwxMCBAQCB2b2lkIFRleHRDb2RlY0lDVTo6cmVnaXN0ZXJFeHRl
bmRlZEVuY29kCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAorI2lmIFBM
QVRGT1JNKENIUk9NSVVNKQorICAgICAgICBpZiAoc3RyY21wKHN0YW5kYXJkTmFtZSwgIklTTy04
ODU5LTkiKSA9PSAwKQorICAgICAgICAgICAgc3RhbmRhcmROYW1lID0gIndpbmRvd3MtMTI1NCI7
CisjZWxzZSAKICAgICAgICAgLy8gMS4gVHJlYXQgR0IyMzEyIGVuY29kaW5nIGFzIEdCSyAoaXRz
IG1vcmUgbW9kZXJuIHN1cGVyc2V0KSwgdG8gbWF0Y2ggb3RoZXIgYnJvd3NlcnMuCiAgICAgICAg
IC8vIDIuIE9uIHRoZSBXZWIsIEdCMjMxMiBpcyBlbmNvZGVkIGFzIEVVQy1DTiBvciBIWiwgd2hp
bGUgSUNVIHByb3ZpZGVzIGEgbmF0aXZlIGVuY29kaW5nCiAgICAgICAgIC8vICAgIGZvciBlbmNv
ZGluZyBHQl8yMzEyLTgwIGFuZCBzZXZlcmFsIG90aGVycy4gU28sIHdlIG5lZWQgdG8gb3ZlcnJp
ZGUgdGhpcyBiZWhhdmlvciwgdG9vLgpAQCAtMTAxLDYgKzEwNSw3IEBAIHZvaWQgVGV4dENvZGVj
SUNVOjpyZWdpc3RlckV4dGVuZGVkRW5jb2QKICAgICAgICAgICAgIHN0YW5kYXJkTmFtZSA9ICJ3
aW5kb3dzLTEyNTQiOwogICAgICAgICBlbHNlIGlmIChzdHJjbXAoc3RhbmRhcmROYW1lLCAiVElT
LTYyMCIpID09IDApCiAgICAgICAgICAgICBzdGFuZGFyZE5hbWUgPSAid2luZG93cy04NzQtMjAw
MCI7CisjZW5kaWYgLy8gUExBVEZPUk0oQ0hST01JVU0pCiAKICAgICAgICAgcmVnaXN0cmFyKHN0
YW5kYXJkTmFtZSwgc3RhbmRhcmROYW1lKTsKIApAQCAtMTE2LDYgKzEyMSw3IEBAIHZvaWQgVGV4
dENvZGVjSUNVOjpyZWdpc3RlckV4dGVuZGVkRW5jb2QKICAgICAgICAgICAgIH0KICAgICB9CiAK
KyNpZiAhUExBVEZPUk0oQ0hST01JVU0pCiAgICAgLy8gQWRkaXRpb25hbCBhbGlhc2VzLgogICAg
IC8vIFRoZXNlIGFyZSBwcmVzZW50IGluIG1vZGVybiB2ZXJzaW9ucyBvZiBJQ1UsIGJ1dCBub3Qg
aW4gSUNVIDMuMiAoc2hpcHBlZCB3aXRoIE1hYyBPUyBYIDEwLjQpLgogICAgIHJlZ2lzdHJhcigi
bWFjcm9tYW4iLCAibWFjaW50b3NoIik7CkBAIC0xMjcsMTEgKzEzMywxNCBAQCB2b2lkIFRleHRD
b2RlY0lDVTo6cmVnaXN0ZXJFeHRlbmRlZEVuY29kCiAgICAgLy8gT3IgcGVyaGFwcyB3ZSBjYW4g
Z2V0IHRoZW0gYWRkZWQgdG8gSUNVLgogICAgIHJlZ2lzdHJhcigieG1hY3JvbWFuIiwgIm1hY2lu
dG9zaCIpOwogICAgIHJlZ2lzdHJhcigieG1hY3VrcmFpbmlhbiIsICJ4LW1hYy1jeXJpbGxpYyIp
OworICAgIHJlZ2lzdHJhcigiZG9zODc0IiwgImNwODc0Iik7CisgICAgcmVnaXN0cmFyKCJpc284
ODU5MTEiLCAid2luZG93cy04NzQtMjAwMCIpOworICAgIHJlZ2lzdHJhcigieHdpbmRvd3M5NDki
LCAid2luZG93cy05NDktMjAwMCIpOworI2VuZGlmCiAgICAgcmVnaXN0cmFyKCJjbmJpZzUiLCAi
QmlnNSIpOwogICAgIHJlZ2lzdHJhcigiY25nYiIsICJFVUMtQ04iKTsKICAgICByZWdpc3RyYXIo
ImNzSVNPODg1OThJIiwgIklTT184ODU5LTgtSSIpOwogICAgIHJlZ2lzdHJhcigiY3NnYjIzMTI4
MCIsICJFVUMtQ04iKTsKLSAgICByZWdpc3RyYXIoImRvczg3NCIsICJjcDg3NCIpOwogICAgIHJl
Z2lzdHJhcigia29pIiwgIktPSTgtUiIpOwogICAgIHJlZ2lzdHJhcigibG9naWNhbCIsICJJU08t
ODg1OS04LUkiKTsKICAgICByZWdpc3RyYXIoInVuaWNvZGUxMXV0ZjgiLCAiVVRGLTgiKTsKQEAg
LTE0MCw3ICsxNDksNiBAQCB2b2lkIFRleHRDb2RlY0lDVTo6cmVnaXN0ZXJFeHRlbmRlZEVuY29k
CiAgICAgcmVnaXN0cmFyKCJ3aW5hcmFiaWMiLCAid2luZG93cy0xMjU2Iik7CiAgICAgcmVnaXN0
cmFyKCJ3aW5iYWx0aWMiLCAid2luZG93cy0xMjU3Iik7CiAgICAgcmVnaXN0cmFyKCJ3aW5jeXJp
bGxpYyIsICJ3aW5kb3dzLTEyNTEiKTsKLSAgICByZWdpc3RyYXIoImlzbzg4NTkxMSIsICJ3aW5k
b3dzODc0LTIwMDAiKTsKICAgICByZWdpc3RyYXIoIndpbmdyZWVrIiwgIndpbmRvd3MtMTI1MyIp
OwogICAgIHJlZ2lzdHJhcigid2luaGVicmV3IiwgIndpbmRvd3MtMTI1NSIpOwogICAgIHJlZ2lz
dHJhcigid2lubGF0aW4yIiwgIndpbmRvd3MtMTI1MCIpOwpAQCAtMTUyLDEyICsxNjAsMTMgQEAg
dm9pZCBUZXh0Q29kZWNJQ1U6OnJlZ2lzdGVyRXh0ZW5kZWRFbmNvZAogICAgIHJlZ2lzdHJhcigi
eGV1Y2NuIiwgIkVVQy1DTiIpOwogICAgIHJlZ2lzdHJhcigieGdiayIsICJFVUMtQ04iKTsKICAg
ICByZWdpc3RyYXIoInh1bmljb2RlMjB1dGY4IiwgIlVURi04Iik7Ci0gICAgcmVnaXN0cmFyKCJ4
d2luZG93czk0OSIsICJ3aW5kb3dzLTk0OS0yMDAwIik7CiAgICAgcmVnaXN0cmFyKCJ4eGJpZzUi
LCAiQmlnNSIpOwogCisjaWYgIVBMQVRGT1JNKENIUk9NSVVNKQogICAgIC8vIFRoaXMgYWxpYXMg
aXMgcHJlc2VudCBpbiBtb2Rlcm4gdmVyc2lvbnMgb2YgSUNVLCBidXQgaXQgaGFzIG5vIHN0YW5k
YXJkIG5hbWUsCiAgICAgLy8gc28gd2UgZ2l2ZSBvbmUgdG8gaXQgbWFudWFsbHkuIEl0IGlzIG5v
dCBwcmVzZW50IGluIElDVSAzLjIuCi0gICAgcmVnaXN0cmFyKCJ3aW5kb3dzODc0IiwgIndpbmRv
d3M4NzQtMjAwMCIpOworICAgIHJlZ2lzdHJhcigid2luZG93czg3NCIsICJ3aW5kb3dzLTg3NC0y
MDAwIik7CisjZW5kaWYKIAogICAgIC8vIFRoZXNlIGFsaWFzZXMgYXJlIHByZXNlbnQgaW4gbW9k
ZXJuIHZlcnNpb25zIG9mIElDVSwgYnV0IHVzZSBkaWZmZXJlbnQgY29kZWNzLCBhbmQgaGF2ZSBu
byBzdGFuZGFyZCBuYW1lcy4KICAgICAvLyBUaGV5IGFyZSBub3QgcHJlc2VudCBpbiBJQ1UgMy4y
LgpJbmRleDogcmVuZGVyaW5nL2JyZWFrX2xpbmVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSByZW5kZXJp
bmcvYnJlYWtfbGluZXMuY3BwCShyZXZpc2lvbiAzODExNSkKKysrIHJlbmRlcmluZy9icmVha19s
aW5lcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDExICs1MiwxMyBAQCBzdGF0aWMgaW5saW5l
IGJvb2wgc2hvdWxkQnJlYWtBZnRlcihVQ2hhCiAgICAgICAgIGNhc2UgJy0nOgogICAgICAgICBj
YXNlICc/JzoKICAgICAgICAgY2FzZSBzb2Z0SHlwaGVuOgotICAgICAgICAvLyBGSVhNRTogY2Fz
ZXMgZm9yIGlkZW9ncmFwaGljQ29tbWEgYW5kIGlkZW9ncmFwaGljRnVsbFN0b3AgYXJlIGEgd29y
a2Fyb3VuZCBmb3IgYW4gaXNzdWUgaW4gVW5pY29kZSA1LjAKLSAgICAgICAgLy8gd2hpY2ggaXMg
bGlrZWx5IHRvIGJlIHJlc29sdmVkIGluIFVuaWNvZGUgNS4xIDxodHRwOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQxMT4uCisjaWYgIVBMQVRGT1JNKENIUk9NSVVNKQorICAg
ICAgICAvLyBGSVhNRTogY2FzZXMgZm9yIGlkZW9ncmFwaGljQ29tbWEgYW5kIGlkZW9ncmFwaGlj
RnVsbFN0b3AgYXJlIGEgd29ya2Fyb3VuZCBmb3IgYW4gaXNzdWUgaW4gVW5pY29kZSA1LjAgYW5k
IElDVSB1cCB0byAzLjgKKyAgICAgICAgLy8gd2hpY2ggaXMgcmVzb2x2ZWQgaW4gVW5pY29kZSA1
LjEgYW5kIElDVSA0LjAgPGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
NDExPi4KICAgICAgICAgLy8gV2UgbWF5IHdhbnQgdG8gcmVtb3ZlIG9yIGNvbmRpdGlvbmFsaXpl
IHRoaXMgd29ya2Fyb3VuZCBhdCBzb21lIHBvaW50LgogICAgICAgICBjYXNlIGlkZW9ncmFwaGlj
Q29tbWE6CiAgICAgICAgIGNhc2UgaWRlb2dyYXBoaWNGdWxsU3RvcDoKKyNlbmRpZgogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Cg==
</data>
<flag name="review"
          id="11457"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25689</attachid>
            <date>2008-12-02 16:33:14 -0800</date>
            <delta_ts>2008-12-03 15:14:48 -0800</delta_ts>
            <desc>patch </desc>
            <filename>22116.patch.3</filename>
            <type>text/plain</type>
            <size>29831</size>
            <attacher name="Jungshik Shin">jshin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzODkyMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMDgtMTItMDIgIEp1bmdzaGlrIFNoaW4gIDxqc2hpbkBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDcyCisKKyAgICAgICAg
UmV2aXNlcyBjaGFyc2V0IGFsaWFzIG1hcCBmb3IgVGV4dENvZGVjSUNVLgorICAgICAgICAtIFVz
ZXMgd2luZG93cy05NDkgYW5kIHdpbmRvd3MtODc0IGluc3RlYWQgb2Ygd2luZG93cy05NDktMjAw
MCBhbmQgd2luZG93cy04NzQKKyAgICAgICAgLSBSZXBsYWNlcyAnd2luZG93czg3NCcgaW4gYSBj
b3VwbGUgb2YgcGxhY2Ugd2l0aCAnd2luZG93cy04NzQnIChmb3IgdGhlIGNhbm9uaWNhbCBuYW1l
KQorICAgICAgICAtIE1hcHMgJ2Rvcy04NzQnIHRvICd3aW5kb3dzLTg3NCcKKyAgICAgICAgLSBN
YXBzICdFVUMtQ04nIHRvICdHQksnIGFuZCByZXBsYWNlcyBpdCB3aXRoICdHQksnIHdoZW4gaXQn
cyB1c2VkIGFzIHRoZSBjYW5vbmljYWwgbmFtZQorICAgICAgICAtIEFkZHMgJ3gtdWhjJyBhcyBh
biBhbGlhcyBmb3IgJ3dpbmRvd3MtOTQ5JworCisgICAgICAgIFRlc3RzOiBmYXN0L2VuY29kaW5n
L2NoYXItZGVjb2RpbmctbWFjLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZW5jb2RpbmcvY2hh
ci1kZWNvZGluZy5odG1sCisKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0lDVS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29kZWNJQ1U6OnJlZ2lzdGVyRXh0ZW5kZWRFbmNv
ZGluZ05hbWVzKToKKwogMjAwOC0xMi0wMiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXZlIEh5YXR0CkluZGV4OiBXZWJDb3Jl
L3BsYXRmb3JtL3RleHQvVGV4dENvZGVjSUNVLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bs
YXRmb3JtL3RleHQvVGV4dENvZGVjSUNVLmNwcAkocmV2aXNpb24gMzg4OTApCisrKyBXZWJDb3Jl
L3BsYXRmb3JtL3RleHQvVGV4dENvZGVjSUNVLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE3LDEy
ICsxMTcsMTIgQEAgdm9pZCBUZXh0Q29kZWNJQ1U6OnJlZ2lzdGVyRXh0ZW5kZWRFbmNvZAogICAg
ICAgICAgICAgc3RhbmRhcmROYW1lID0gIkdCSyI7CiAgICAgICAgIC8vIFNpbWlsYXJseSwgRVVD
LUtSIGVuY29kaW5ncyBhbGwgbWFwIHRvIGFuIGV4dGVuZGVkIHZlcnNpb24uCiAgICAgICAgIGVs
c2UgaWYgKHN0cmNtcChzdGFuZGFyZE5hbWUsICJLU0NfNTYwMSIpID09IDAgfHwgc3RyY21wKHN0
YW5kYXJkTmFtZSwgIkVVQy1LUiIpID09IDAgfHwgc3RyY21wKHN0YW5kYXJkTmFtZSwgImNwMTM2
MyIpID09IDApCi0gICAgICAgICAgICBzdGFuZGFyZE5hbWUgPSAid2luZG93cy05NDktMjAwMCI7
CisgICAgICAgICAgICBzdGFuZGFyZE5hbWUgPSAid2luZG93cy05NDkiOwogICAgICAgICAvLyBB
bmQgc28gb24uCiAgICAgICAgIGVsc2UgaWYgKHN0cmNhc2VjbXAoc3RhbmRhcmROYW1lLCAiaXNv
LTg4NTktOSIpID09IDApIC8vIFRoaXMgbmFtZSBpcyByZXR1cm5lZCBpbiBkaWZmZXJlbnQgY2Fz
ZSBieSBJQ1UgMy4yIGFuZCAzLjYuCiAgICAgICAgICAgICBzdGFuZGFyZE5hbWUgPSAid2luZG93
cy0xMjU0IjsKICAgICAgICAgZWxzZSBpZiAoc3RyY21wKHN0YW5kYXJkTmFtZSwgIlRJUy02MjAi
KSA9PSAwKQotICAgICAgICAgICAgc3RhbmRhcmROYW1lID0gIndpbmRvd3MtODc0LTIwMDAiOwor
ICAgICAgICAgICAgc3RhbmRhcmROYW1lID0gIndpbmRvd3MtODc0IjsKIAogICAgICAgICByZWdp
c3RyYXIoc3RhbmRhcmROYW1lLCBzdGFuZGFyZE5hbWUpOwogCkBAIC0xNTAsMTkgKzE1MCwyMyBA
QCB2b2lkIFRleHRDb2RlY0lDVTo6cmVnaXN0ZXJFeHRlbmRlZEVuY29kCiAgICAgcmVnaXN0cmFy
KCJ4bWFjcm9tYW4iLCAibWFjaW50b3NoIik7CiAgICAgcmVnaXN0cmFyKCJ4bWFjdWtyYWluaWFu
IiwgIngtbWFjLWN5cmlsbGljIik7CiAgICAgcmVnaXN0cmFyKCJjbmJpZzUiLCAiQmlnNSIpOwot
ICAgIHJlZ2lzdHJhcigiY25nYiIsICJFVUMtQ04iKTsKKyAgICByZWdpc3RyYXIoInh4YmlnNSIs
ICJCaWc1Iik7CisgICAgcmVnaXN0cmFyKCJjbmdiIiwgIkdCSyIpOworICAgIHJlZ2lzdHJhcigi
Y3NnYjIzMTI4MCIsICJHQksiKTsKKyAgICByZWdpc3RyYXIoInhldWNjbiIsICJHQksiKTsKKyAg
ICByZWdpc3RyYXIoInhnYmsiLCAiR0JLIik7CiAgICAgcmVnaXN0cmFyKCJjc0lTTzg4NTk4SSIs
ICJJU09fODg1OS04LUkiKTsKLSAgICByZWdpc3RyYXIoImNzZ2IyMzEyODAiLCAiRVVDLUNOIik7
Ci0gICAgcmVnaXN0cmFyKCJkb3M4NzQiLCAiY3A4NzQiKTsKICAgICByZWdpc3RyYXIoImtvaSIs
ICJLT0k4LVIiKTsKICAgICByZWdpc3RyYXIoImxvZ2ljYWwiLCAiSVNPLTg4NTktOC1JIik7CiAg
ICAgcmVnaXN0cmFyKCJ1bmljb2RlMTF1dGY4IiwgIlVURi04Iik7CiAgICAgcmVnaXN0cmFyKCJ1
bmljb2RlMjB1dGY4IiwgIlVURi04Iik7CisgICAgcmVnaXN0cmFyKCJ4dW5pY29kZTIwdXRmOCIs
ICJVVEYtOCIpOwogICAgIHJlZ2lzdHJhcigidmlzdWFsIiwgIklTTy04ODU5LTgiKTsKICAgICBy
ZWdpc3RyYXIoIndpbmFyYWJpYyIsICJ3aW5kb3dzLTEyNTYiKTsKICAgICByZWdpc3RyYXIoIndp
bmJhbHRpYyIsICJ3aW5kb3dzLTEyNTciKTsKICAgICByZWdpc3RyYXIoIndpbmN5cmlsbGljIiwg
IndpbmRvd3MtMTI1MSIpOwotICAgIHJlZ2lzdHJhcigiaXNvODg1OTExIiwgIndpbmRvd3M4NzQt
MjAwMCIpOworICAgIHJlZ2lzdHJhcigiaXNvODg1OTExIiwgIndpbmRvd3MtODc0Iik7CisgICAg
cmVnaXN0cmFyKCJkb3M4NzQiLCAid2luZG93cy04NzQiKTsKICAgICByZWdpc3RyYXIoIndpbmdy
ZWVrIiwgIndpbmRvd3MtMTI1MyIpOwogICAgIHJlZ2lzdHJhcigid2luaGVicmV3IiwgIndpbmRv
d3MtMTI1NSIpOwogICAgIHJlZ2lzdHJhcigid2lubGF0aW4yIiwgIndpbmRvd3MtMTI1MCIpOwpA
QCAtMTcxLDE1ICsxNzUsOCBAQCB2b2lkIFRleHRDb2RlY0lDVTo6cmVnaXN0ZXJFeHRlbmRlZEVu
Y29kCiAgICAgcmVnaXN0cmFyKCJ4Y3AxMjUwIiwgIndpbmRvd3MtMTI1MCIpOwogICAgIHJlZ2lz
dHJhcigieGNwMTI1MSIsICJ3aW5kb3dzLTEyNTEiKTsKICAgICByZWdpc3RyYXIoInhldWMiLCAi
RVVDLUpQIik7Ci0gICAgcmVnaXN0cmFyKCJ4ZXVjY24iLCAiRVVDLUNOIik7Ci0gICAgcmVnaXN0
cmFyKCJ4Z2JrIiwgIkVVQy1DTiIpOwotICAgIHJlZ2lzdHJhcigieHVuaWNvZGUyMHV0ZjgiLCAi
VVRGLTgiKTsKLSAgICByZWdpc3RyYXIoInh3aW5kb3dzOTQ5IiwgIndpbmRvd3MtOTQ5LTIwMDAi
KTsKLSAgICByZWdpc3RyYXIoInh4YmlnNSIsICJCaWc1Iik7Ci0KLSAgICAvLyBUaGlzIGFsaWFz
IGlzIHByZXNlbnQgaW4gbW9kZXJuIHZlcnNpb25zIG9mIElDVSwgYnV0IGl0IGhhcyBubyBzdGFu
ZGFyZCBuYW1lLAotICAgIC8vIHNvIHdlIGdpdmUgb25lIHRvIGl0IG1hbnVhbGx5LiBJdCBpcyBu
b3QgcHJlc2VudCBpbiBJQ1UgMy4yLgotICAgIHJlZ2lzdHJhcigid2luZG93czg3NCIsICJ3aW5k
b3dzODc0LTIwMDAiKTsKKyAgICByZWdpc3RyYXIoInh3aW5kb3dzOTQ5IiwgIndpbmRvd3MtOTQ5
Iik7CisgICAgcmVnaXN0cmFyKCJ4dWhjIiwgIndpbmRvd3MtOTQ5Iik7CiAKICAgICAvLyBUaGVz
ZSBhbGlhc2VzIGFyZSBwcmVzZW50IGluIG1vZGVybiB2ZXJzaW9ucyBvZiBJQ1UsIGJ1dCB1c2Ug
ZGlmZmVyZW50IGNvZGVjcywgYW5kIGhhdmUgbm8gc3RhbmRhcmQgbmFtZXMuCiAgICAgLy8gVGhl
eSBhcmUgbm90IHByZXNlbnQgaW4gSUNVIDMuMi4KSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDM4OTIzKQor
KysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjggQEAK
KzIwMDgtMTItMDIgIEp1bmdzaGlrIFNoaW4gIDxqc2hpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDcyCisKKyAgICAgICAgUmV2aXNlcyBjaGFyc2V0
IGFsaWFzIG1hcCBmb3IgVGV4dENvZGVjSUNVLgorICAgICAgICAtIFVzZXMgd2luZG93cy05NDkg
YW5kIHdpbmRvd3MtODc0IGluc3RlYWQgb2Ygd2luZG93cy05NDktMjAwMCBhbmQgd2luZG93cy04
NzQKKyAgICAgICAgLSBSZXBsYWNlcyAnd2luZG93czg3NCcgaW4gYSBjb3VwbGUgb2YgcGxhY2Ug
d2l0aCAnd2luZG93cy04NzQnIChmb3IgdGhlIGNhbm9uaWNhbCBuYW1lKQorICAgICAgICAtIE1h
cHMgJ2Rvcy04NzQnIHRvICd3aW5kb3dzLTg3NCcKKyAgICAgICAgLSBNYXBzICdFVUMtQ04nIHRv
ICdHQksnIGFuZCByZXBsYWNlcyBpdCB3aXRoICdHQksnIHdoZW4gaXQncyB1c2VkIGFzIHRoZSBj
YW5vbmljYWwgbmFtZQorICAgICAgICAtIFB1dHMgTWFjIGVuY29kaW5ncyBpbiBhIHNlcGFyYXRl
IHRlc3QgY2hhci1kZWNvZGluZy1tYWMuaHRtbC4gUmVuYW1lIGNoYXItZGVjb2RpbmctbWFjLmh0
bWwKKyAgICAgICAgICBpbiBwbGF0Zm9ybS9tYWMgdG8geG5leHRzdGVwLWRlY29kaW5nLmh0bWwg
dG8gYXZvaWQgdGhlIG5hbWUgY29sbGlzaW9uIGluIHRoZSByZXN1bHQgZmlsZXMuCisgICAgICAg
IC0gQWRkcyBhIEpTIGZpbGUgZm9yIGNvbW1vbiBmdW5jdGlvbnMgdXNlZCBieSBjaGFyLWRlY29k
aW5nLSouaHRtbCB0ZXN0cy4KKworICAgICAgICAqIGZhc3QvZW5jb2RpbmcvY2hhci1kZWNvZGlu
Zy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9lbmNvZGluZy9jaGFyLWRlY29kaW5nLW1h
Yy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZW5jb2RpbmcvY2hhci1kZWNv
ZGluZy1tYWMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9lbmNvZGluZy9jaGFyLWRlY29k
aW5nLmh0bWw6CisgICAgICAgICogZmFzdC9lbmNvZGluZy9yZXNvdXJjZXMvY2hhci1kZWNvZGlu
Zy11dGlscy5qcworICAgICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L2VuY29kaW5nL2NoYXItZGVj
b2RpbmctbWFjLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMv
ZmFzdC9lbmNvZGluZy9jaGFyLWRlY29kaW5nLW1hYy5odG1sOiBSZW1vdmVkLgorICAgICAgICAq
IHBsYXRmb3JtL21hYy9mYXN0L2VuY29kaW5nL3huZXh0c3RlcC1kZWNvZGluZy1leHBlY3RlZC50
eHQ6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2VuY29kaW5nL2No
YXItZGVjb2RpbmctbWFjLWV4cGVjdGVkLnR4dC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZmFz
dC9lbmNvZGluZy94bmV4dHN0ZXAtZGVjb2RpbmcuaHRtbDogQ29waWVkIGZyb20gTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL2Zhc3QvZW5jb2RpbmcvY2hhci1kZWNvZGluZy1tYWMuaHRtbC4KKwog
MjAwOC0xMi0wMiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBEYXZlIEh5YXR0CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2VuY29k
aW5nL2NoYXItZGVjb2RpbmctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZW5jb2RpbmcvY2hhci1kZWNvZGluZy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDM4ODkw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9jaGFyLWRlY29kaW5nLWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtOSw2ICs5LDcgQEAgUEFTUyBkZWNvZGUoJ2diXzIzMTItODAn
LCAnJUEzJUEwJykgaXMgJwogUEFTUyBkZWNvZGUoJ2NoaW5lc2UnLCAnJUEzJUEwJykgaXMgJ1Ur
MzAwMCcKIFBBU1MgZGVjb2RlKCdnYmsnLCAnJUEzJUEwJykgaXMgJ1UrMzAwMCcKIFBBU1MgZGVj
b2RlKCdnYjE4MDMwJywgJyVBMyVBMCcpIGlzICdVKzMwMDAnCitQQVNTIGRlY29kZSgnRVVDLUNO
JywgJyVBMyVBMCcpIGlzICdVKzMwMDAnCiBQQVNTIGRlY29kZSgna29yZWFuJywgJyVBMiVFNicp
IGlzICdVKzIwQUMnCiBQQVNTIGRlY29kZSgna29yZWFuJywgJyVBMSVBNCcpIGlzICdVKzAwQjcn
CiBQQVNTIGRlY29kZSgna29yZWFuJywgJyVBMSVBOScpIGlzICdVKzAwQUQnCkBAIC0yMSwxMiAr
MjIsODkgQEAgUEFTUyBkZWNvZGUoJ2tvcmVhbicsICclMUMnKSBpcyAnVSswMDFDJwogUEFTUyBk
ZWNvZGUoJ2tvcmVhbicsICclOEYlQTEnKSBpcyAnVStCOEVBJwogUEFTUyBkZWNvZGUoJ2tvcmVh
bicsICclQjQlRDMnKSBpcyAnVStCMkQyJwogUEFTUyBkZWNvZGUoJ2tvcmVhbicsICclQTIlNDEn
KSBpcyAnVStDOTEwJwotUEFTUyBkZWNvZGUoJ2V1Yy1rcicsICclQTIlNDEnKSBpcyAnVStDOTEw
JwotUEFTUyBkZWNvZGUoJ2tvcmVhbicsICclQTIlNDEnKSBpcyAnVStDOTEwJworUEFTUyBkZWNv
ZGUoJ0VVQy1LUicsICclQTIlRTYnKSBpcyAnVSsyMEFDJworUEFTUyBkZWNvZGUoJ0VVQy1LUics
ICclQTElQTQnKSBpcyAnVSswMEI3JworUEFTUyBkZWNvZGUoJ0VVQy1LUicsICclQTElQTknKSBp
cyAnVSswMEFEJworUEFTUyBkZWNvZGUoJ0VVQy1LUicsICclQTElQUEnKSBpcyAnVSsyMDE1Jwor
UEFTUyBkZWNvZGUoJ0VVQy1LUicsICclQTElQUQnKSBpcyAnVSsyMjNDJworUEFTUyBkZWNvZGUo
J0VVQy1LUicsICclQTIlQTYnKSBpcyAnVStGRjVFJworUEFTUyBkZWNvZGUoJ0VVQy1LUicsICcl
QTIlQzEnKSBpcyAnVSsyMjk5JworUEFTUyBkZWNvZGUoJ0VVQy1LUicsICclMUEnKSBpcyAnVSsw
MDFBJworUEFTUyBkZWNvZGUoJ0VVQy1LUicsICclMUMnKSBpcyAnVSswMDFDJworUEFTUyBkZWNv
ZGUoJ0VVQy1LUicsICclOEYlQTEnKSBpcyAnVStCOEVBJworUEFTUyBkZWNvZGUoJ0VVQy1LUics
ICclQjQlRDMnKSBpcyAnVStCMkQyJworUEFTUyBkZWNvZGUoJ0VVQy1LUicsICclQTIlNDEnKSBp
cyAnVStDOTEwJworUEFTUyBkZWNvZGUoJ3dpbmRvd3MtOTQ5JywgJyVBMiVFNicpIGlzICdVKzIw
QUMnCitQQVNTIGRlY29kZSgnd2luZG93cy05NDknLCAnJUExJUE0JykgaXMgJ1UrMDBCNycKK1BB
U1MgZGVjb2RlKCd3aW5kb3dzLTk0OScsICclQTElQTknKSBpcyAnVSswMEFEJworUEFTUyBkZWNv
ZGUoJ3dpbmRvd3MtOTQ5JywgJyVBMSVBQScpIGlzICdVKzIwMTUnCitQQVNTIGRlY29kZSgnd2lu
ZG93cy05NDknLCAnJUExJUFEJykgaXMgJ1UrMjIzQycKK1BBU1MgZGVjb2RlKCd3aW5kb3dzLTk0
OScsICclQTIlQTYnKSBpcyAnVStGRjVFJworUEFTUyBkZWNvZGUoJ3dpbmRvd3MtOTQ5JywgJyVB
MiVDMScpIGlzICdVKzIyOTknCitQQVNTIGRlY29kZSgnd2luZG93cy05NDknLCAnJTFBJykgaXMg
J1UrMDAxQScKK1BBU1MgZGVjb2RlKCd3aW5kb3dzLTk0OScsICclMUMnKSBpcyAnVSswMDFDJwor
UEFTUyBkZWNvZGUoJ3dpbmRvd3MtOTQ5JywgJyU4RiVBMScpIGlzICdVK0I4RUEnCitQQVNTIGRl
Y29kZSgnd2luZG93cy05NDknLCAnJUI0JUQzJykgaXMgJ1UrQjJEMicKIFBBU1MgZGVjb2RlKCd3
aW5kb3dzLTk0OScsICclQTIlNDEnKSBpcyAnVStDOTEwJworUEFTUyBkZWNvZGUoJ3gtd2luZG93
cy05NDknLCAnJUEyJUU2JykgaXMgJ1UrMjBBQycKK1BBU1MgZGVjb2RlKCd4LXdpbmRvd3MtOTQ5
JywgJyVBMSVBNCcpIGlzICdVKzAwQjcnCitQQVNTIGRlY29kZSgneC13aW5kb3dzLTk0OScsICcl
QTElQTknKSBpcyAnVSswMEFEJworUEFTUyBkZWNvZGUoJ3gtd2luZG93cy05NDknLCAnJUExJUFB
JykgaXMgJ1UrMjAxNScKK1BBU1MgZGVjb2RlKCd4LXdpbmRvd3MtOTQ5JywgJyVBMSVBRCcpIGlz
ICdVKzIyM0MnCitQQVNTIGRlY29kZSgneC13aW5kb3dzLTk0OScsICclQTIlQTYnKSBpcyAnVStG
RjVFJworUEFTUyBkZWNvZGUoJ3gtd2luZG93cy05NDknLCAnJUEyJUMxJykgaXMgJ1UrMjI5OScK
K1BBU1MgZGVjb2RlKCd4LXdpbmRvd3MtOTQ5JywgJyUxQScpIGlzICdVKzAwMUEnCitQQVNTIGRl
Y29kZSgneC13aW5kb3dzLTk0OScsICclMUMnKSBpcyAnVSswMDFDJworUEFTUyBkZWNvZGUoJ3gt
d2luZG93cy05NDknLCAnJThGJUExJykgaXMgJ1UrQjhFQScKK1BBU1MgZGVjb2RlKCd4LXdpbmRv
d3MtOTQ5JywgJyVCNCVEMycpIGlzICdVK0IyRDInCiBQQVNTIGRlY29kZSgneC13aW5kb3dzLTk0
OScsICclQTIlNDEnKSBpcyAnVStDOTEwJworUEFTUyBkZWNvZGUoJ3gtdWhjJywgJyVBMiVFNicp
IGlzICdVKzIwQUMnCitQQVNTIGRlY29kZSgneC11aGMnLCAnJUExJUE0JykgaXMgJ1UrMDBCNycK
K1BBU1MgZGVjb2RlKCd4LXVoYycsICclQTElQTknKSBpcyAnVSswMEFEJworUEFTUyBkZWNvZGUo
J3gtdWhjJywgJyVBMSVBQScpIGlzICdVKzIwMTUnCitQQVNTIGRlY29kZSgneC11aGMnLCAnJUEx
JUFEJykgaXMgJ1UrMjIzQycKK1BBU1MgZGVjb2RlKCd4LXVoYycsICclQTIlQTYnKSBpcyAnVStG
RjVFJworUEFTUyBkZWNvZGUoJ3gtdWhjJywgJyVBMiVDMScpIGlzICdVKzIyOTknCitQQVNTIGRl
Y29kZSgneC11aGMnLCAnJTFBJykgaXMgJ1UrMDAxQScKK1BBU1MgZGVjb2RlKCd4LXVoYycsICcl
MUMnKSBpcyAnVSswMDFDJworUEFTUyBkZWNvZGUoJ3gtdWhjJywgJyU4RiVBMScpIGlzICdVK0I4
RUEnCitQQVNTIGRlY29kZSgneC11aGMnLCAnJUI0JUQzJykgaXMgJ1UrQjJEMicKK1BBU1MgZGVj
b2RlKCd4LXVoYycsICclQTIlNDEnKSBpcyAnVStDOTEwJworUEFTUyBkZWNvZGUoJ2lzby1pci0x
NDknLCAnJUEyJUU2JykgaXMgJ1UrMjBBQycKK1BBU1MgZGVjb2RlKCdpc28taXItMTQ5JywgJyVB
MSVBNCcpIGlzICdVKzAwQjcnCitQQVNTIGRlY29kZSgnaXNvLWlyLTE0OScsICclQTElQTknKSBp
cyAnVSswMEFEJworUEFTUyBkZWNvZGUoJ2lzby1pci0xNDknLCAnJUExJUFBJykgaXMgJ1UrMjAx
NScKK1BBU1MgZGVjb2RlKCdpc28taXItMTQ5JywgJyVBMSVBRCcpIGlzICdVKzIyM0MnCitQQVNT
IGRlY29kZSgnaXNvLWlyLTE0OScsICclQTIlQTYnKSBpcyAnVStGRjVFJworUEFTUyBkZWNvZGUo
J2lzby1pci0xNDknLCAnJUEyJUMxJykgaXMgJ1UrMjI5OScKK1BBU1MgZGVjb2RlKCdpc28taXIt
MTQ5JywgJyUxQScpIGlzICdVKzAwMUEnCitQQVNTIGRlY29kZSgnaXNvLWlyLTE0OScsICclMUMn
KSBpcyAnVSswMDFDJworUEFTUyBkZWNvZGUoJ2lzby1pci0xNDknLCAnJThGJUExJykgaXMgJ1Ur
QjhFQScKK1BBU1MgZGVjb2RlKCdpc28taXItMTQ5JywgJyVCNCVEMycpIGlzICdVK0IyRDInCiBQ
QVNTIGRlY29kZSgnaXNvLWlyLTE0OScsICclQTIlNDEnKSBpcyAnVStDOTEwJworUEFTUyBkZWNv
ZGUoJ0tTX0NfNTYwMS0xOTg3JywgJyVBMiVFNicpIGlzICdVKzIwQUMnCitQQVNTIGRlY29kZSgn
S1NfQ181NjAxLTE5ODcnLCAnJUExJUE0JykgaXMgJ1UrMDBCNycKK1BBU1MgZGVjb2RlKCdLU19D
XzU2MDEtMTk4NycsICclQTElQTknKSBpcyAnVSswMEFEJworUEFTUyBkZWNvZGUoJ0tTX0NfNTYw
MS0xOTg3JywgJyVBMSVBQScpIGlzICdVKzIwMTUnCitQQVNTIGRlY29kZSgnS1NfQ181NjAxLTE5
ODcnLCAnJUExJUFEJykgaXMgJ1UrMjIzQycKK1BBU1MgZGVjb2RlKCdLU19DXzU2MDEtMTk4Nycs
ICclQTIlQTYnKSBpcyAnVStGRjVFJworUEFTUyBkZWNvZGUoJ0tTX0NfNTYwMS0xOTg3JywgJyVB
MiVDMScpIGlzICdVKzIyOTknCitQQVNTIGRlY29kZSgnS1NfQ181NjAxLTE5ODcnLCAnJTFBJykg
aXMgJ1UrMDAxQScKK1BBU1MgZGVjb2RlKCdLU19DXzU2MDEtMTk4NycsICclMUMnKSBpcyAnVSsw
MDFDJworUEFTUyBkZWNvZGUoJ0tTX0NfNTYwMS0xOTg3JywgJyU4RiVBMScpIGlzICdVK0I4RUEn
CitQQVNTIGRlY29kZSgnS1NfQ181NjAxLTE5ODcnLCAnJUI0JUQzJykgaXMgJ1UrQjJEMicKIFBB
U1MgZGVjb2RlKCdLU19DXzU2MDEtMTk4NycsICclQTIlNDEnKSBpcyAnVStDOTEwJworUEFTUyBk
ZWNvZGUoJ0tTX0NfNTYwMS0xOTg5JywgJyVBMiVFNicpIGlzICdVKzIwQUMnCitQQVNTIGRlY29k
ZSgnS1NfQ181NjAxLTE5ODknLCAnJUExJUE0JykgaXMgJ1UrMDBCNycKK1BBU1MgZGVjb2RlKCdL
U19DXzU2MDEtMTk4OScsICclQTElQTknKSBpcyAnVSswMEFEJworUEFTUyBkZWNvZGUoJ0tTX0Nf
NTYwMS0xOTg5JywgJyVBMSVBQScpIGlzICdVKzIwMTUnCitQQVNTIGRlY29kZSgnS1NfQ181NjAx
LTE5ODknLCAnJUExJUFEJykgaXMgJ1UrMjIzQycKK1BBU1MgZGVjb2RlKCdLU19DXzU2MDEtMTk4
OScsICclQTIlQTYnKSBpcyAnVStGRjVFJworUEFTUyBkZWNvZGUoJ0tTX0NfNTYwMS0xOTg5Jywg
JyVBMiVDMScpIGlzICdVKzIyOTknCitQQVNTIGRlY29kZSgnS1NfQ181NjAxLTE5ODknLCAnJTFB
JykgaXMgJ1UrMDAxQScKK1BBU1MgZGVjb2RlKCdLU19DXzU2MDEtMTk4OScsICclMUMnKSBpcyAn
VSswMDFDJworUEFTUyBkZWNvZGUoJ0tTX0NfNTYwMS0xOTg5JywgJyU4RiVBMScpIGlzICdVK0I4
RUEnCitQQVNTIGRlY29kZSgnS1NfQ181NjAxLTE5ODknLCAnJUI0JUQzJykgaXMgJ1UrQjJEMicK
IFBBU1MgZGVjb2RlKCdLU19DXzU2MDEtMTk4OScsICclQTIlNDEnKSBpcyAnVStDOTEwJwogUEFT
UyBkZWNvZGUoJ2lzby04ODU5LTknLCAnJTgwJykgaXMgJ1UrMjBBQycKIFBBU1MgZGVjb2RlKCdp
c28tODg1OS05JywgJyU5RicpIGlzICdVKzAxNzgnCkBAIC0zNSw2ICsxMTMsOCBAQCBQQVNTIGRl
Y29kZSgnbGF0aW41JywgJyU4MCcpIGlzICdVKzIwQUMnCiBQQVNTIGRlY29kZSgnbGF0aW41Jywg
JyU5RicpIGlzICdVKzAxNzgnCiBQQVNTIGRlY29kZSgnbGF0aW41JywgJyVGRCcpIGlzICdVKzAx
MzEnCiBQQVNTIGRlY29kZSgnd2luZG93cy0xMjU0JywgJyU4MCcpIGlzICdVKzIwQUMnCitQQVNT
IGRlY29kZSgnd2luZG93cy0xMjU0JywgJyU5RicpIGlzICdVKzAxNzgnCitQQVNTIGRlY29kZSgn
d2luZG93cy0xMjU0JywgJyVGRCcpIGlzICdVKzAxMzEnCiBQQVNTIGRlY29kZSgnSVNPLTg4NTkt
MTMnLCAnJUExJykgaXMgJ1UrMjAxRCcKIFBBU1MgZGVjb2RlKCdJU08tODg1OS0xMycsICclQTUn
KSBpcyAnVSsyMDFFJwogUEFTUyBkZWNvZGUoJ0lTTy04ODU5LTEzJywgJyVCNCcpIGlzICdVKzIw
MUMnCkBAIC01NywyNyArMTM3LDIyIEBAIFBBU1MgZGVjb2RlKCdUSVMtNjIwJywgJyU4MCcpIGlz
ICdVKzIwQUMKIFBBU1MgZGVjb2RlKCdUSVMtNjIwJywgJyU5NicpIGlzICdVKzIwMTMnCiBQQVNT
IGRlY29kZSgnVElTLTYyMCcsICclQTAnKSBpcyAnVSswMEEwJwogUEFTUyBkZWNvZGUoJ1RJUy02
MjAnLCAnJUExJykgaXMgJ1UrMEUwMScKK1BBU1MgZGVjb2RlKCdUSVMtNjIwJywgJyVEQicpIGlz
ICdVK0Y4QzEnCiBQQVNTIGRlY29kZSgnSVNPLTg4NTktMTEnLCAnJTgwJykgaXMgJ1UrMjBBQycK
IFBBU1MgZGVjb2RlKCdJU08tODg1OS0xMScsICclOTYnKSBpcyAnVSsyMDEzJwogUEFTUyBkZWNv
ZGUoJ0lTTy04ODU5LTExJywgJyVBMCcpIGlzICdVKzAwQTAnCiBQQVNTIGRlY29kZSgnSVNPLTg4
NTktMTEnLCAnJUExJykgaXMgJ1UrMEUwMScKK1BBU1MgZGVjb2RlKCdJU08tODg1OS0xMScsICcl
REInKSBpcyAnVStGOEMxJwogUEFTUyBkZWNvZGUoJ3dpbmRvd3MtODc0JywgJyU4MCcpIGlzICdV
KzIwQUMnCiBQQVNTIGRlY29kZSgnd2luZG93cy04NzQnLCAnJTk2JykgaXMgJ1UrMjAxMycKIFBB
U1MgZGVjb2RlKCd3aW5kb3dzLTg3NCcsICclQTAnKSBpcyAnVSswMEEwJwogUEFTUyBkZWNvZGUo
J3dpbmRvd3MtODc0JywgJyVBMScpIGlzICdVKzBFMDEnCiBQQVNTIGRlY29kZSgnd2luZG93cy04
NzQnLCAnJURCJykgaXMgJ1UrRjhDMScKLVBBU1MgZGVjb2RlKCdUSVMtNjIwJywgJyVEQicpIGlz
ICdVK0Y4QzEnCi1QQVNTIGRlY29kZSgnSVNPLTg4NTktMTEnLCAnJURCJykgaXMgJ1UrRjhDMScK
LVBBU1MgZGVjb2RlKCdtYWMnLCAnJUMzJykgaXMgJ1UrMjIxQScKLVBBU1MgZGVjb2RlKCdtYWNp
bnRvc2gnLCAnJUMzJykgaXMgJ1UrMjIxQScKLVBBU1MgZGVjb2RlKCdNYWNSb21hbicsICclQzMn
KSBpcyAnVSsyMjFBJwotUEFTUyBkZWNvZGUoJ3gtbWFjLWdyZWVrJywgJyVCMCcpIGlzICdVKzAz
OTEnCi1QQVNTIGRlY29kZSgneC1tYWMtdWtyYWluaWFuJywgJyU4MCcpIGlzICdVKzA0MTAnCi1Q
QVNTIGRlY29kZSgneC1tYWMtY3lyaWxsaWMnLCAnJTgwJykgaXMgJ1UrMDQxMCcKLVBBU1MgZGVj
b2RlKCdtYWMtY3lyaWxsaWMnLCAnJTgwJykgaXMgJ1UrMDQxMCcKLVBBU1MgZGVjb2RlKCd4LW1h
Yy1jZW50cmFsZXVycm9tYW4nLCAnJTgxJykgaXMgJ1UrMDEwMCcKLVBBU1MgZGVjb2RlKCd4LW1h
Yy1jZScsICclODEnKSBpcyAnVSswMTAwJwotUEFTUyBkZWNvZGUoJ3gtbWFjLXR1cmtpc2gnLCAn
JTgxJykgaXMgJ1UrMDBDNScKK1BBU1MgZGVjb2RlKCdkb3MtODc0JywgJyU4MCcpIGlzICdVKzIw
QUMnCitQQVNTIGRlY29kZSgnZG9zLTg3NCcsICclOTYnKSBpcyAnVSsyMDEzJworUEFTUyBkZWNv
ZGUoJ2Rvcy04NzQnLCAnJUEwJykgaXMgJ1UrMDBBMCcKK1BBU1MgZGVjb2RlKCdkb3MtODc0Jywg
JyVBMScpIGlzICdVKzBFMDEnCitQQVNTIGRlY29kZSgnZG9zLTg3NCcsICclREInKSBpcyAnVStG
OEMxJwogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2NoYXItZGVjb2RpbmctbWFjLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2NoYXItZGVjb2Rp
bmctbWFjLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZW5j
b2RpbmcvY2hhci1kZWNvZGluZy1tYWMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDE5IEBACitUaGlzIHRlc3RzIGRlY29kaW5nIGNoYXJhY3RlcnMgaW4gdmFyaW91cyBjaGFy
YWN0ZXIgc2V0cy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZGVjb2Rl
KCdtYWMnLCAnJUMzJykgaXMgJ1UrMjIxQScKK1BBU1MgZGVjb2RlKCdtYWNpbnRvc2gnLCAnJUMz
JykgaXMgJ1UrMjIxQScKK1BBU1MgZGVjb2RlKCdNYWNSb21hbicsICclQzMnKSBpcyAnVSsyMjFB
JworUEFTUyBkZWNvZGUoJ3gtbWFjLWdyZWVrJywgJyVCMCcpIGlzICdVKzAzOTEnCitQQVNTIGRl
Y29kZSgneC1tYWMtdWtyYWluaWFuJywgJyU4MCcpIGlzICdVKzA0MTAnCitQQVNTIGRlY29kZSgn
eC1tYWMtY3lyaWxsaWMnLCAnJTgwJykgaXMgJ1UrMDQxMCcKK1BBU1MgZGVjb2RlKCdtYWMtY3ly
aWxsaWMnLCAnJTgwJykgaXMgJ1UrMDQxMCcKK1BBU1MgZGVjb2RlKCd4LW1hYy1jZW50cmFsZXVy
cm9tYW4nLCAnJTgxJykgaXMgJ1UrMDEwMCcKK1BBU1MgZGVjb2RlKCd4LW1hYy1jZScsICclODEn
KSBpcyAnVSswMTAwJworUEFTUyBkZWNvZGUoJ3gtbWFjLXR1cmtpc2gnLCAnJTgxJykgaXMgJ1Ur
MDBDNScKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2NoYXItZGVjb2RpbmctbWFjLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9jaGFyLWRlY29kaW5nLW1h
Yy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9jaGFyLWRl
Y29kaW5nLW1hYy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMxIEBACis8aHRtbD4KKzxo
ZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2NoYXItZGVjb2RpbmctdXRpbHMu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKworZGVzY3JpcHRpb24oIlRoaXMg
dGVzdHMgZGVjb2RpbmcgY2hhcmFjdGVycyBpbiB2YXJpb3VzIGNoYXJhY3RlciBzZXRzLiIpOwor
CisvLyBMZWdhY3kgTWFjIGVuY29kaW5ncy4KK3Rlc3REZWNvZGUoJ21hYycsICclQzMnLCAnVSsy
MjFBJyk7Cit0ZXN0RGVjb2RlKCdtYWNpbnRvc2gnLCAnJUMzJywgJ1UrMjIxQScpOwordGVzdERl
Y29kZSgnTWFjUm9tYW4nLCAnJUMzJywgJ1UrMjIxQScpOwordGVzdERlY29kZSgneC1tYWMtZ3Jl
ZWsnLCAnJUIwJywgJ1UrMDM5MScpOwordGVzdERlY29kZSgneC1tYWMtdWtyYWluaWFuJywgJyU4
MCcsICdVKzA0MTAnKTsKK3Rlc3REZWNvZGUoJ3gtbWFjLWN5cmlsbGljJywgJyU4MCcsICdVKzA0
MTAnKTsKK3Rlc3REZWNvZGUoJ21hYy1jeXJpbGxpYycsICclODAnLCAnVSswNDEwJyk7Cit0ZXN0
RGVjb2RlKCd4LW1hYy1jZW50cmFsZXVycm9tYW4nLCAnJTgxJywgJ1UrMDEwMCcpOwordGVzdERl
Y29kZSgneC1tYWMtY2UnLCAnJTgxJywgJ1UrMDEwMCcpOwordGVzdERlY29kZSgneC1tYWMtdHVy
a2lzaCcsICclODEnLCAnVSswMEM1Jyk7CisKK3N1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisK
Kzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9lbmNv
ZGluZy9jaGFyLWRlY29kaW5nLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9l
bmNvZGluZy9jaGFyLWRlY29kaW5nLmh0bWwJKHJldmlzaW9uIDM4ODkwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9lbmNvZGluZy9jaGFyLWRlY29kaW5nLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIs
NiArMiw3IEBACiA8aGVhZD4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVz
b3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KIDxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9jaGFyLWRl
Y29kaW5nLXV0aWxzLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgogPHAgaWQ9ImRlc2Ny
aXB0aW9uIj48L3A+CkBAIC0xMCwzMiArMTEsNiBAQAogCiBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0
cyBkZWNvZGluZyBjaGFyYWN0ZXJzIGluIHZhcmlvdXMgY2hhcmFjdGVyIHNldHMuIik7CiAKLWZ1
bmN0aW9uIGhleChudW1iZXIpCi17Ci0gICAgdmFyIGhleERpZ2l0ID0gIjAxMjM0NTY3ODlBQkNE
RUYiOwotICAgIHZhciBoZXggPSBoZXhEaWdpdC5zdWJzdHIobnVtYmVyICYgMHhmLCAxKTsKLSAg
ICB3aGlsZSAobnVtYmVyID4gMTUpIHsKLSAgICAgICAgbnVtYmVyID4+PSA0OwotICAgICAgICBo
ZXggPSBoZXhEaWdpdC5zdWJzdHIobnVtYmVyICYgMTUsIDEpICsgaGV4OwotICAgIH0KLSAgICBy
ZXR1cm4gaGV4OwotfQotCi1mdW5jdGlvbiBkZWNvZGUoY2hhcnNldE5hbWUsIGNoYXJhY3RlclNl
cXVlbmNlKQotewotICAgIHZhciByZXEgPSBuZXcgWE1MSHR0cFJlcXVlc3Q7Ci0gICAgcmVxLm9w
ZW4oJ0dFVCcsICdkYXRhOnRleHQvcGxhaW4sJyArIGNoYXJhY3RlclNlcXVlbmNlLCBmYWxzZSk7
Ci0gICAgcmVxLm92ZXJyaWRlTWltZVR5cGUoJ3RleHQvcGxhaW47IGNoYXJzZXQ9IicgKyBjaGFy
c2V0TmFtZSArICciJyk7Ci0gICAgcmVxLnNlbmQoJycpOwotICAgIHZhciBjb2RlID0gaGV4KHJl
cS5yZXNwb25zZVRleHQuY2hhckNvZGVBdCgwKSk7Ci0gICAgcmV0dXJuICJVKyIgKyAoIjAwMDAi
ICsgY29kZSkuc3Vic3RyKGNvZGUubGVuZ3RoLCA0KTsKLX0KLQotZnVuY3Rpb24gdGVzdERlY29k
ZShjaGFyc2V0TmFtZSwgY2hhcmFjdGVyU2VxdWVuY2UsIHVuaWNvZGUpCi17Ci0gICAgc2hvdWxk
QmUoImRlY29kZSgnIiArIGNoYXJzZXROYW1lICsgIicsICciICsgY2hhcmFjdGVyU2VxdWVuY2Ug
KyAiJykiLCAiJyIgKyB1bmljb2RlICsgIiciKTsKLX0KLQogdGVzdERlY29kZSgnVVRGLTgnLCAn
JUUyJTg4JTlBJywgJ1UrMjIxQScpOwogCiAvLyA8aHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTcwMTQ+IEVVQy1DTiBjb2RlIEEzQTAgaXMgbWFwcGVkIHRvIFUrRTVFNSBp
bnN0ZWFkIG9mIFUrMzAwMApAQCAtNDQsMzcgKzE5LDM0IEBAIHRlc3REZWNvZGUoJ2diXzIzMTIt
ODAnLCAnJUEzJUEwJywgJ1UrMzAKIHRlc3REZWNvZGUoJ2NoaW5lc2UnLCAnJUEzJUEwJywgJ1Ur
MzAwMCcpOwogdGVzdERlY29kZSgnZ2JrJywgJyVBMyVBMCcsICdVKzMwMDAnKTsKIHRlc3REZWNv
ZGUoJ2diMTgwMzAnLCAnJUEzJUEwJywgJ1UrMzAwMCcpOwordGVzdERlY29kZSgnRVVDLUNOJywg
JyVBMyVBMCcsICdVKzMwMDAnKTsKIAogLy8gVGVzdCB0aGF0IGFsbCBLb3JlYW4gZW5jb2Rpbmdz
IG9mIEVVQy1LUiBmYW1pbHkgYXJlIHRyZWF0ZWQgYXMgd2luZG93cy05NDkuCi10ZXN0RGVjb2Rl
KCdrb3JlYW4nLCAnJUEyJUU2JywgJ1UrMjBBQycpOwotdGVzdERlY29kZSgna29yZWFuJywgJyVB
MSVBNCcsICdVKzAwQjcnKTsKLXRlc3REZWNvZGUoJ2tvcmVhbicsICclQTElQTknLCAnVSswMEFE
Jyk7Ci10ZXN0RGVjb2RlKCdrb3JlYW4nLCAnJUExJUFBJywgJ1UrMjAxNScpOwotdGVzdERlY29k
ZSgna29yZWFuJywgJyVBMSVBRCcsICdVKzIyM0MnKTsKLXRlc3REZWNvZGUoJ2tvcmVhbicsICcl
QTIlQTYnLCAnVStGRjVFJyk7Ci10ZXN0RGVjb2RlKCdrb3JlYW4nLCAnJUEyJUMxJywgJ1UrMjI5
OScpOwotdGVzdERlY29kZSgna29yZWFuJywgJyUxQScsICdVKzAwMUEnKTsKLXRlc3REZWNvZGUo
J2tvcmVhbicsICclMUMnLCAnVSswMDFDJyk7Ci10ZXN0RGVjb2RlKCdrb3JlYW4nLCAnJThGJUEx
JywgJ1UrQjhFQScpOwotdGVzdERlY29kZSgna29yZWFuJywgJyVCNCVEMycsICdVK0IyRDInKTsK
LXRlc3REZWNvZGUoJ2tvcmVhbicsICclQTIlNDEnLCAnVStDOTEwJyk7Ci10ZXN0RGVjb2RlKCdl
dWMta3InLCAnJUEyJTQxJywgJ1UrQzkxMCcpOwotdGVzdERlY29kZSgna29yZWFuJywgJyVBMiU0
MScsICdVK0M5MTAnKTsKLXRlc3REZWNvZGUoJ3dpbmRvd3MtOTQ5JywgJyVBMiU0MScsICdVK0M5
MTAnKTsKLXRlc3REZWNvZGUoJ3gtd2luZG93cy05NDknLCAnJUEyJTQxJywgJ1UrQzkxMCcpOwot
dGVzdERlY29kZSgnaXNvLWlyLTE0OScsICclQTIlNDEnLCAnVStDOTEwJyk7Ci10ZXN0RGVjb2Rl
KCdLU19DXzU2MDEtMTk4NycsICclQTIlNDEnLCAnVStDOTEwJyk7Ci10ZXN0RGVjb2RlKCdLU19D
XzU2MDEtMTk4OScsICclQTIlNDEnLCAnVStDOTEwJyk7Cit2YXIga29yZWFuID0geworICAgIGVu
Y29kaW5nczogWydrb3JlYW4nLCAnRVVDLUtSJywgJ3dpbmRvd3MtOTQ5JywgJ3gtd2luZG93cy05
NDknLCAneC11aGMnLAorICAgICAgICAgICAgICAgICdpc28taXItMTQ5JywgJ0tTX0NfNTYwMS0x
OTg3JywgJ0tTX0NfNTYwMS0xOTg5JyBdLAorICAgIGVuY29kZWQ6IFsnJUEyJUU2JywgJyVBMSVB
NCcsICclQTElQTknLCAnJUExJUFBJywgJyVBMSVBRCcsICclQTIlQTYnLAorICAgICAgICAgICAg
ICAnJUEyJUMxJywgJyUxQScsICAgICclMUMnLCAgICAnJThGJUExJywgJyVCNCVEMycsICclQTIl
NDEnXSwKKyAgICB1bmljb2RlOiBbJ1UrMjBBQycsICdVKzAwQjcnLCAnVSswMEFEJywgJ1UrMjAx
NScsICdVKzIyM0MnLCAnVStGRjVFJywgCisgICAgICAgICAgICAgICdVKzIyOTknLCAnVSswMDFB
JywgJ1UrMDAxQycsICdVK0I4RUEnLCAnVStCMkQyJywgJ1UrQzkxMCddIAorfTsKIAorYmF0Y2hU
ZXN0RGVjb2RlKGtvcmVhbik7CisgICAKIC8vIFRlc3QgdGhhdCBJU08tODg1OS05IChUdXJraXNo
KSBpcyB1cGdyYWRlZCB0byB3aW5kb3dzLTEyNTQgd2l0aCBFdXJvIHN5bWJvbC4KLXRlc3REZWNv
ZGUoJ2lzby04ODU5LTknLCAnJTgwJywgJ1UrMjBBQycpOwotdGVzdERlY29kZSgnaXNvLTg4NTkt
OScsICclOUYnLCAnVSswMTc4Jyk7Ci10ZXN0RGVjb2RlKCdpc28tODg1OS05JywgJyVGRCcsICdV
KzAxMzEnKTsKLXRlc3REZWNvZGUoJ2xhdGluNScsICclODAnLCAnVSsyMEFDJyk7Ci10ZXN0RGVj
b2RlKCdsYXRpbjUnLCAnJTlGJywgJ1UrMDE3OCcpOwotdGVzdERlY29kZSgnbGF0aW41JywgJyVG
RCcsICdVKzAxMzEnKTsKLXRlc3REZWNvZGUoJ3dpbmRvd3MtMTI1NCcsICclODAnLCAnVSsyMEFD
Jyk7Ci0KK3ZhciB0dXJraXNoID0geworICBlbmNvZGluZ3M6IFsnaXNvLTg4NTktOScsICdsYXRp
bjUnLCAnd2luZG93cy0xMjU0J10sCisgIGVuY29kZWQ6IFsnJTgwJywgJyU5RicsICclRkQnXSwK
KyAgdW5pY29kZTogWydVKzIwQUMnLCAnVSswMTc4JywgJ1UrMDEzMSddCit9OworCitiYXRjaFRl
c3REZWNvZGUodHVya2lzaCk7CisKKy8vIEZJWDogSGF2ZSB0byBhZGQgdGVzdHMgZm9yIEV1cm8g
YW5kIGEgZmV3IG5ldyBjaGFyYWN0ZXJzIGFkZGVkIHRvIElTTy04ODU5LXggCisvLyB0aGF0IGFy
ZSBOT1Qgc3Vic2V0cyBvZiB0aGUgY29ycmVzcG9uZGluZyBXaW5kb3dzIGNvZGVwYWdlcy4gRm9y
IGluc3RhbmNlLAorLy8gSVNPLTg4NTktNzoyMDAzIGhhcyBFdXJvIGF0IDB4QTQgYW5kIGEgY291
cGxlIG9mIG90aGVyIG5ldyBjaGFyYWN0ZXJzLgorLy8gSUNVIDMuOC54IG9yIGxhdGVyIGhhcyB0
aGVtLiBQZXJoYXBzLCB3ZSBuZWVkIHRvIGhhdmUgYSBzZXBhcmF0ZSB0ZXN0IHRoYXQKKy8vIGNh
biBiZSBlbmFibGVkIG9ubHkgd2l0aCBtb2Rlcm4gSUNVLgogLy8gQmFsdGljIGVuY29kaW5ncyBm
aW5lIHBvaW50cy4KIHRlc3REZWNvZGUoJ0lTTy04ODU5LTEzJywgJyVBMScsICdVKzIwMUQnKTsK
IHRlc3REZWNvZGUoJ0lTTy04ODU5LTEzJywgJyVBNScsICdVKzIwMUUnKTsKQEAgLTEwMCwzMyAr
NzIsMTUgQEAgdGVzdERlY29kZSgnS09JOC1VJywgJyVBNCcsICdVKzA0NTQnKTsKIHRlc3REZWNv
ZGUoJ0tPSTgtVScsICclQUQnLCAnVSswNDkxJyk7CiAKIC8vIFRlc3QgdGhhdCBUSVMtNjIwIGFu
ZCBJU08tODg1OS0xMSAoVGhhaSkgYXJlIHVwZ3JhZGVkIHRvIHdpbmRvd3MtODc0LgotdGVzdERl
Y29kZSgnVElTLTYyMCcsICclODAnLCAnVSsyMEFDJyk7Ci10ZXN0RGVjb2RlKCdUSVMtNjIwJywg
JyU5NicsICdVKzIwMTMnKTsKLXRlc3REZWNvZGUoJ1RJUy02MjAnLCAnJUEwJywgJ1UrMDBBMCcp
OwotdGVzdERlY29kZSgnVElTLTYyMCcsICclQTEnLCAnVSswRTAxJyk7Ci10ZXN0RGVjb2RlKCdJ
U08tODg1OS0xMScsICclODAnLCAnVSsyMEFDJyk7Ci10ZXN0RGVjb2RlKCdJU08tODg1OS0xMScs
ICclOTYnLCAnVSsyMDEzJyk7Ci10ZXN0RGVjb2RlKCdJU08tODg1OS0xMScsICclQTAnLCAnVSsw
MEEwJyk7Ci10ZXN0RGVjb2RlKCdJU08tODg1OS0xMScsICclQTEnLCAnVSswRTAxJyk7Ci10ZXN0
RGVjb2RlKCd3aW5kb3dzLTg3NCcsICclODAnLCAnVSsyMEFDJyk7Ci10ZXN0RGVjb2RlKCd3aW5k
b3dzLTg3NCcsICclOTYnLCAnVSsyMDEzJyk7Ci10ZXN0RGVjb2RlKCd3aW5kb3dzLTg3NCcsICcl
QTAnLCAnVSswMEEwJyk7Ci10ZXN0RGVjb2RlKCd3aW5kb3dzLTg3NCcsICclQTEnLCAnVSswRTAx
Jyk7Ci10ZXN0RGVjb2RlKCd3aW5kb3dzLTg3NCcsICclREInLCAnVStGOEMxJyk7IC8vIEEgd2Vp
cmQgUFVBIG1hcHBpbmcgdGhhdCBkb2Vzbid0IHNlZW0gdG8gYmUgb2YgYW55IHVzZSwgZXZlbiBv
biBXaW5kb3dzLgotdGVzdERlY29kZSgnVElTLTYyMCcsICclREInLCAnVStGOEMxJyk7Ci10ZXN0
RGVjb2RlKCdJU08tODg1OS0xMScsICclREInLCAnVStGOEMxJyk7Ci0KLS8vIExlZ2FjeSBNYWMg
ZW5jb2RpbmdzLgotdGVzdERlY29kZSgnbWFjJywgJyVDMycsICdVKzIyMUEnKTsKLXRlc3REZWNv
ZGUoJ21hY2ludG9zaCcsICclQzMnLCAnVSsyMjFBJyk7Ci10ZXN0RGVjb2RlKCdNYWNSb21hbics
ICclQzMnLCAnVSsyMjFBJyk7Ci10ZXN0RGVjb2RlKCd4LW1hYy1ncmVlaycsICclQjAnLCAnVSsw
MzkxJyk7Ci10ZXN0RGVjb2RlKCd4LW1hYy11a3JhaW5pYW4nLCAnJTgwJywgJ1UrMDQxMCcpOwot
dGVzdERlY29kZSgneC1tYWMtY3lyaWxsaWMnLCAnJTgwJywgJ1UrMDQxMCcpOwotdGVzdERlY29k
ZSgnbWFjLWN5cmlsbGljJywgJyU4MCcsICdVKzA0MTAnKTsKLXRlc3REZWNvZGUoJ3gtbWFjLWNl
bnRyYWxldXJyb21hbicsICclODEnLCAnVSswMTAwJyk7Ci10ZXN0RGVjb2RlKCd4LW1hYy1jZScs
ICclODEnLCAnVSswMTAwJyk7Ci10ZXN0RGVjb2RlKCd4LW1hYy10dXJraXNoJywgJyU4MScsICdV
KzAwQzUnKTsKKy8vICIweERCID0+IFUrRjhDMSIgaXMgYSAgd2VpcmQgUFVBIG1hcHBpbmcgdGhh
dCBkb2Vzbid0IHNlZW0gdG8gYmUgb2YKKy8vIGFueSB1c2UsIGV2ZW4gb24gV2luZG93cy4KK3Zh
ciB0aGFpID0geworICBlbmNvZGluZ3M6IFsnVElTLTYyMCcsICdJU08tODg1OS0xMScsICd3aW5k
b3dzLTg3NCcsICdkb3MtODc0J10sCisgIGVuY29kZWQ6IFsnJTgwJywgJyU5NicsICclQTAnLCAn
JUExJywgJyVEQiddLAorICB1bmljb2RlOiBbJ1UrMjBBQycsICdVKzIwMTMnLCAnVSswMEEwJywg
J1UrMEUwMScsICdVK0Y4QzEnXQorfTsKKworYmF0Y2hUZXN0RGVjb2RlKHRoYWkpOwogCiBzdWNj
ZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5n
L3Jlc291cmNlcy9jaGFyLWRlY29kaW5nLXV0aWxzLmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZW5jb2RpbmcvcmVzb3VyY2VzL2NoYXItZGVjb2RpbmctdXRpbHMuanMJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3Jlc291cmNlcy9jaGFyLWRlY29k
aW5nLXV0aWxzLmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM0IEBACitmdW5jdGlvbiBoZXgo
bnVtYmVyKQoreworICAgIHZhciBoZXhEaWdpdCA9ICIwMTIzNDU2Nzg5QUJDREVGIjsKKyAgICB2
YXIgaGV4ID0gaGV4RGlnaXQuc3Vic3RyKG51bWJlciAmIDB4ZiwgMSk7CisgICAgd2hpbGUgKG51
bWJlciA+IDE1KSB7CisgICAgICAgIG51bWJlciA+Pj0gNDsKKyAgICAgICAgaGV4ID0gaGV4RGln
aXQuc3Vic3RyKG51bWJlciAmIDE1LCAxKSArIGhleDsKKyAgICB9CisgICAgcmV0dXJuIGhleDsK
K30KKworZnVuY3Rpb24gZGVjb2RlKGNoYXJzZXROYW1lLCBjaGFyYWN0ZXJTZXF1ZW5jZSkKK3sK
KyAgICB2YXIgcmVxID0gbmV3IFhNTEh0dHBSZXF1ZXN0OworICAgIHJlcS5vcGVuKCdHRVQnLCAn
ZGF0YTp0ZXh0L3BsYWluLCcgKyBjaGFyYWN0ZXJTZXF1ZW5jZSwgZmFsc2UpOworICAgIHJlcS5v
dmVycmlkZU1pbWVUeXBlKCd0ZXh0L3BsYWluOyBjaGFyc2V0PSInICsgY2hhcnNldE5hbWUgKyAn
IicpOworICAgIHJlcS5zZW5kKCcnKTsKKyAgICB2YXIgY29kZSA9IGhleChyZXEucmVzcG9uc2VU
ZXh0LmNoYXJDb2RlQXQoMCkpOworICAgIHJldHVybiAiVSsiICsgKCIwMDAwIiArIGNvZGUpLnN1
YnN0cihjb2RlLmxlbmd0aCwgNCk7Cit9CisKK2Z1bmN0aW9uIHRlc3REZWNvZGUoY2hhcnNldE5h
bWUsIGNoYXJhY3RlclNlcXVlbmNlLCB1bmljb2RlKQoreworICAgIHNob3VsZEJlKCJkZWNvZGUo
JyIgKyBjaGFyc2V0TmFtZSArICInLCAnIiArIGNoYXJhY3RlclNlcXVlbmNlICsgIicpIiwgIici
ICsgdW5pY29kZSArICInIik7Cit9CisKK2Z1bmN0aW9uIGJhdGNoVGVzdERlY29kZShpbnB1dERh
dGEpCit7CisgICAgZm9yICh2YXIgaSBpbiBpbnB1dERhdGEuZW5jb2RpbmdzKSB7CisgICAgICAg
IGZvciAodmFyIGogaW4gaW5wdXREYXRhLmVuY29kZWQpCisgICAgICAgICAgICB0ZXN0RGVjb2Rl
KGlucHV0RGF0YS5lbmNvZGluZ3NbaV0sIGlucHV0RGF0YS5lbmNvZGVkW2pdLCBpbnB1dERhdGEu
dW5pY29kZVtqXSk7CisgICAgfQorfQorCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
ZmFzdC9lbmNvZGluZy9jaGFyLWRlY29kaW5nLW1hYy1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZW5jb2RpbmcvY2hhci1kZWNvZGluZy1t
YWMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAzODg5MCkKKysrIExheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9mYXN0L2VuY29kaW5nL2NoYXItZGVjb2RpbmctbWFjLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMSwxMyArMCwwIEBACi1UaGlzIHRlc3RzIGRlY29kaW5nIGNoYXJhY3RlcnMg
aW4gdmFyaW91cyBjaGFyYWN0ZXIgc2V0cy4KLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgot
Ci0KLVBBU1MgZGVjb2RlKCd4LW5leHRzdGVwJywgJyVFMScpIGlzICdVKzAwQzYnCi0KLVRoZSB4
LW5leHRzdGVwIHRlc3QgaXMgbWVhbnQgdG8gZW5zdXJlIHRoYXQgd2Ugc3RpbGwgc3VwcG9ydCBs
ZWdhY3kgZW5jb2RpbmdzIHRoYXQgYXJlIG5vdCBwYXJ0IG9mIElDVSAtIGl0IGlzIGV4cGVjdGVk
IHRoYXQgaXQgZmFpbHMgaW4gb3RoZXIgYnJvd3NlcnMsIHdoaWNoIGRvIG5vdCBzdXBwb3J0IHRo
aXMgcGFydGljdWxhciBlbmNvZGluZy4gU2VlIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQxOTUgZm9yIG1vcmUgZGV0YWlscy4KLQotUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9mYXN0L2VuY29kaW5nL2NoYXItZGVjb2RpbmctbWFjLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZW5jb2RpbmcvY2hhci1kZWNvZGluZy1tYWMu
aHRtbAkocmV2aXNpb24gMzg4OTApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9l
bmNvZGluZy9jaGFyLWRlY29kaW5nLW1hYy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUxICsw
LDAgQEAKLTxodG1sPgotPGhlYWQ+Ci08bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
Ly4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KLTxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Ci08L2hlYWQ+Ci08Ym9keT4KLTxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgotPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyBkZWNvZGlu
ZyBjaGFyYWN0ZXJzIGluIHZhcmlvdXMgY2hhcmFjdGVyIHNldHMuIik7Ci0KLWZ1bmN0aW9uIGhl
eChudW1iZXIpCi17Ci0gICAgdmFyIGhleERpZ2l0ID0gIjAxMjM0NTY3ODlBQkNERUYiOwotICAg
IHZhciBoZXggPSBoZXhEaWdpdC5zdWJzdHIobnVtYmVyICYgMHhmLCAxKTsKLSAgICB3aGlsZSAo
bnVtYmVyID4gMTUpIHsKLSAgICAgICAgbnVtYmVyID4+PSA0OwotICAgICAgICBoZXggPSBoZXhE
aWdpdC5zdWJzdHIobnVtYmVyICYgMTUsIDEpICsgaGV4OwotICAgIH0KLSAgICByZXR1cm4gaGV4
OwotfQotCi1mdW5jdGlvbiBkZWNvZGUoY2hhcnNldE5hbWUsIGNoYXJhY3RlclNlcXVlbmNlKQot
ewotICAgIHZhciByZXEgPSBuZXcgWE1MSHR0cFJlcXVlc3Q7Ci0gICAgcmVxLm9wZW4oJ0dFVCcs
ICdkYXRhOnRleHQvcGxhaW4sJyArIGNoYXJhY3RlclNlcXVlbmNlLCBmYWxzZSk7Ci0gICAgcmVx
Lm92ZXJyaWRlTWltZVR5cGUoJ3RleHQvcGxhaW47IGNoYXJzZXQ9IicgKyBjaGFyc2V0TmFtZSAr
ICciJyk7Ci0gICAgcmVxLnNlbmQoJycpOwotICAgIHZhciBjb2RlID0gaGV4KHJlcS5yZXNwb25z
ZVRleHQuY2hhckNvZGVBdCgwKSk7Ci0gICAgcmV0dXJuICJVKyIgKyAoIjAwMDAiICsgY29kZSku
c3Vic3RyKGNvZGUubGVuZ3RoLCA0KTsKLX0KLQotZnVuY3Rpb24gdGVzdERlY29kZShjaGFyc2V0
TmFtZSwgY2hhcmFjdGVyU2VxdWVuY2UsIHVuaWNvZGUpCi17Ci0gICAgc2hvdWxkQmUoImRlY29k
ZSgnIiArIGNoYXJzZXROYW1lICsgIicsICciICsgY2hhcmFjdGVyU2VxdWVuY2UgKyAiJykiLCAi
JyIgKyB1bmljb2RlICsgIiciKTsKLX0KLQotdGVzdERlY29kZSgneC1uZXh0c3RlcCcsICclRTEn
LCAnVSswMEM2Jyk7Ci1kZWJ1ZygnJyk7Ci0KLWRlYnVnKCJUaGUgeC1uZXh0c3RlcCB0ZXN0IGlz
IG1lYW50IHRvIGVuc3VyZSB0aGF0IHdlIHN0aWxsIHN1cHBvcnQgbGVnYWN5IGVuY29kaW5ncyB0
aGF0IGFyZSBub3QgcGFydCBvZiBJQ1UgLSBpdCBpcyBleHBlY3RlZCB0aGF0IGl0IGZhaWxzIGlu
IG90aGVyIGJyb3dzZXJzLCB3aGljaCBkbyBub3Qgc3VwcG9ydCB0aGlzIHBhcnRpY3VsYXIgZW5j
b2RpbmcuIFNlZSA8YSBocmVmPVwiaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDE5NVwiPmh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQxOTU8L2E+
IGZvciBtb3JlIGRldGFpbHMuIik7Ci0KLWRlYnVnKCcnKTsKLQotc3VjY2Vzc2Z1bGx5UGFyc2Vk
ID0gdHJ1ZTsKLQotPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KSW5k
ZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2VuY29kaW5nL3huZXh0c3RlcC1kZWNv
ZGluZy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2Zhc3QvZW5jb2RpbmcveG5leHRzdGVwLWRlY29kaW5nLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
Mzg4OTApCShmcm9tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2VuY29kaW5nL2NoYXIt
ZGVjb2RpbmctbWFjLWV4cGVjdGVkLnR4dDozODg5MCkKKysrIExheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9mYXN0L2VuY29kaW5nL3huZXh0c3RlcC1kZWNvZGluZy1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwxMyBAQAorVGhpcyB0ZXN0cyBkZWNvZGluZyBjaGFyYWN0ZXJz
IGluIHZhcmlvdXMgY2hhcmFjdGVyIHNldHMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitQQVNTIGRlY29kZSgneC1uZXh0c3RlcCcsICclRTEnKSBpcyAnVSswMEM2JworCitUaGUg
eC1uZXh0c3RlcCB0ZXN0IGlzIG1lYW50IHRvIGVuc3VyZSB0aGF0IHdlIHN0aWxsIHN1cHBvcnQg
bGVnYWN5IGVuY29kaW5ncyB0aGF0IGFyZSBub3QgcGFydCBvZiBJQ1UgLSBpdCBpcyBleHBlY3Rl
ZCB0aGF0IGl0IGZhaWxzIGluIG90aGVyIGJyb3dzZXJzLCB3aGljaCBkbyBub3Qgc3VwcG9ydCB0
aGlzIHBhcnRpY3VsYXIgZW5jb2RpbmcuIFNlZSBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00MTk1IGZvciBtb3JlIGRldGFpbHMuCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvZmFzdC9lbmNvZGluZy94bmV4dHN0ZXAtZGVjb2RpbmcuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9lbmNvZGluZy94bmV4dHN0ZXAtZGVjb2Rp
bmcuaHRtbAkocmV2aXNpb24gMzg4OTApCShmcm9tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9m
YXN0L2VuY29kaW5nL2NoYXItZGVjb2RpbmctbWFjLmh0bWw6Mzg4OTApCisrKyBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvZmFzdC9lbmNvZGluZy94bmV4dHN0ZXAtZGVjb2RpbmcuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDUxIEBACis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRp
b24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKworZGVzY3JpcHRp
b24oIlRoaXMgdGVzdHMgZGVjb2RpbmcgY2hhcmFjdGVycyBpbiB2YXJpb3VzIGNoYXJhY3RlciBz
ZXRzLiIpOworCitmdW5jdGlvbiBoZXgobnVtYmVyKQoreworICAgIHZhciBoZXhEaWdpdCA9ICIw
MTIzNDU2Nzg5QUJDREVGIjsKKyAgICB2YXIgaGV4ID0gaGV4RGlnaXQuc3Vic3RyKG51bWJlciAm
IDB4ZiwgMSk7CisgICAgd2hpbGUgKG51bWJlciA+IDE1KSB7CisgICAgICAgIG51bWJlciA+Pj0g
NDsKKyAgICAgICAgaGV4ID0gaGV4RGlnaXQuc3Vic3RyKG51bWJlciAmIDE1LCAxKSArIGhleDsK
KyAgICB9CisgICAgcmV0dXJuIGhleDsKK30KKworZnVuY3Rpb24gZGVjb2RlKGNoYXJzZXROYW1l
LCBjaGFyYWN0ZXJTZXF1ZW5jZSkKK3sKKyAgICB2YXIgcmVxID0gbmV3IFhNTEh0dHBSZXF1ZXN0
OworICAgIHJlcS5vcGVuKCdHRVQnLCAnZGF0YTp0ZXh0L3BsYWluLCcgKyBjaGFyYWN0ZXJTZXF1
ZW5jZSwgZmFsc2UpOworICAgIHJlcS5vdmVycmlkZU1pbWVUeXBlKCd0ZXh0L3BsYWluOyBjaGFy
c2V0PSInICsgY2hhcnNldE5hbWUgKyAnIicpOworICAgIHJlcS5zZW5kKCcnKTsKKyAgICB2YXIg
Y29kZSA9IGhleChyZXEucmVzcG9uc2VUZXh0LmNoYXJDb2RlQXQoMCkpOworICAgIHJldHVybiAi
VSsiICsgKCIwMDAwIiArIGNvZGUpLnN1YnN0cihjb2RlLmxlbmd0aCwgNCk7Cit9CisKK2Z1bmN0
aW9uIHRlc3REZWNvZGUoY2hhcnNldE5hbWUsIGNoYXJhY3RlclNlcXVlbmNlLCB1bmljb2RlKQor
eworICAgIHNob3VsZEJlKCJkZWNvZGUoJyIgKyBjaGFyc2V0TmFtZSArICInLCAnIiArIGNoYXJh
Y3RlclNlcXVlbmNlICsgIicpIiwgIiciICsgdW5pY29kZSArICInIik7Cit9CisKK3Rlc3REZWNv
ZGUoJ3gtbmV4dHN0ZXAnLCAnJUUxJywgJ1UrMDBDNicpOworZGVidWcoJycpOworCitkZWJ1Zygi
VGhlIHgtbmV4dHN0ZXAgdGVzdCBpcyBtZWFudCB0byBlbnN1cmUgdGhhdCB3ZSBzdGlsbCBzdXBw
b3J0IGxlZ2FjeSBlbmNvZGluZ3MgdGhhdCBhcmUgbm90IHBhcnQgb2YgSUNVIC0gaXQgaXMgZXhw
ZWN0ZWQgdGhhdCBpdCBmYWlscyBpbiBvdGhlciBicm93c2Vycywgd2hpY2ggZG8gbm90IHN1cHBv
cnQgdGhpcyBwYXJ0aWN1bGFyIGVuY29kaW5nLiBTZWUgPGEgaHJlZj1cImh0dHA6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQxOTVcIj5odHRwOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00MTk1PC9hPiBmb3IgbW9yZSBkZXRhaWxzLiIpOworCitkZWJ1ZygnJyk7
CisKK3N1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9l
bmNvZGluZy94bmV4dHN0ZXAtZGVjb2RpbmcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvZmFzdC9lbmNvZGluZy94bmV4dHN0ZXAtZGVjb2RpbmcuaHRtbAkocmV2
aXNpb24gMzg4OTApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9lbmNvZGluZy94
bmV4dHN0ZXAtZGVjb2RpbmcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiw2ICsyLDcgQEAKIDxo
ZWFkPgogPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uLy4uL2Zhc3QvZW5jb2RpbmcvcmVzb3VyY2VzL2NoYXItZGVjb2RpbmctdXRpbHMuanMi
Pjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+CiA8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KQEAg
LTEwLDMyICsxMSw2IEBACiAKIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIGRlY29kaW5nIGNoYXJh
Y3RlcnMgaW4gdmFyaW91cyBjaGFyYWN0ZXIgc2V0cy4iKTsKIAotZnVuY3Rpb24gaGV4KG51bWJl
cikKLXsKLSAgICB2YXIgaGV4RGlnaXQgPSAiMDEyMzQ1Njc4OUFCQ0RFRiI7Ci0gICAgdmFyIGhl
eCA9IGhleERpZ2l0LnN1YnN0cihudW1iZXIgJiAweGYsIDEpOwotICAgIHdoaWxlIChudW1iZXIg
PiAxNSkgewotICAgICAgICBudW1iZXIgPj49IDQ7Ci0gICAgICAgIGhleCA9IGhleERpZ2l0LnN1
YnN0cihudW1iZXIgJiAxNSwgMSkgKyBoZXg7Ci0gICAgfQotICAgIHJldHVybiBoZXg7Ci19Ci0K
LWZ1bmN0aW9uIGRlY29kZShjaGFyc2V0TmFtZSwgY2hhcmFjdGVyU2VxdWVuY2UpCi17Ci0gICAg
dmFyIHJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdDsKLSAgICByZXEub3BlbignR0VUJywgJ2RhdGE6
dGV4dC9wbGFpbiwnICsgY2hhcmFjdGVyU2VxdWVuY2UsIGZhbHNlKTsKLSAgICByZXEub3ZlcnJp
ZGVNaW1lVHlwZSgndGV4dC9wbGFpbjsgY2hhcnNldD0iJyArIGNoYXJzZXROYW1lICsgJyInKTsK
LSAgICByZXEuc2VuZCgnJyk7Ci0gICAgdmFyIGNvZGUgPSBoZXgocmVxLnJlc3BvbnNlVGV4dC5j
aGFyQ29kZUF0KDApKTsKLSAgICByZXR1cm4gIlUrIiArICgiMDAwMCIgKyBjb2RlKS5zdWJzdHIo
Y29kZS5sZW5ndGgsIDQpOwotfQotCi1mdW5jdGlvbiB0ZXN0RGVjb2RlKGNoYXJzZXROYW1lLCBj
aGFyYWN0ZXJTZXF1ZW5jZSwgdW5pY29kZSkKLXsKLSAgICBzaG91bGRCZSgiZGVjb2RlKCciICsg
Y2hhcnNldE5hbWUgKyAiJywgJyIgKyBjaGFyYWN0ZXJTZXF1ZW5jZSArICInKSIsICInIiArIHVu
aWNvZGUgKyAiJyIpOwotfQotCiB0ZXN0RGVjb2RlKCd4LW5leHRzdGVwJywgJyVFMScsICdVKzAw
QzYnKTsKIGRlYnVnKCcnKTsKIAo=
</data>
<flag name="review"
          id="11993"
          type_id="1"
          status="-"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25723</attachid>
            <date>2008-12-03 15:14:48 -0800</date>
            <delta_ts>2008-12-03 22:54:49 -0800</delta_ts>
            <desc>updated patch (with more fleshed-out log entries)</desc>
            <filename>22116.patch.3a</filename>
            <type>text/plain</type>
            <size>30561</size>
            <attacher name="Jungshik Shin">jshin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzODkyMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjYgQEAKKzIwMDgtMTItMDIgIEp1bmdzaGlrIFNoaW4gIDxqc2hpbkBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDcyCisKKyAgICAgICAg
UmV2aXNlcyBjaGFyc2V0IGFsaWFzIG1hcCBmb3IgVGV4dENvZGVjSUNVLgorICAgICAgICAtIFVz
ZXMgd2luZG93cy05NDkgYW5kIHdpbmRvd3MtODc0IGluc3RlYWQgb2Ygd2luZG93cy05NDktMjAw
MCBhbmQgd2luZG93cy04NzQtMjAwMAorICAgICAgICAtIFJlcGxhY2VzICd3aW5kb3dzODc0JyBp
biBhIGNvdXBsZSBvZiBwbGFjZSB3aXRoICd3aW5kb3dzLTg3NCcgKGZvciB0aGUgY2Fub25pY2Fs
IG5hbWUpCisgICAgICAgIC0gTWFwcyAnZG9zLTg3NCcgdG8gJ3dpbmRvd3MtODc0Jy4gQ3VycmVu
dGx5LCBpdCdzIGFsaWFzZXMgdG8gJ2NwODc0Jywgd2hpY2ggaXMgaW4gdHVybgorICAgICAgICAg
IG1hcHBlZCB0byAnVElTLTYyMCcuICdUSVMtNjIwJyBpcyBtYW51YWxseSBhbGlhc2VkIHRvICd3
aW5kb3dzLTg3NCcuIFdlJ2QgYmV0dGVyIGRpcmVjdGx5CisgICAgICAgICAgYWxpYXMgJ2Rvcy04
NzQnIHRvICd3aW5kb3dzLTg3NCcuCisgICAgICAgIC0gTWFwcyAnRVVDLUNOJyB0byAnR0JLJyBh
bmQgcmVwbGFjZXMgaXQgd2l0aCAnR0JLJyB3aGVuIGl0J3MgdXNlZCBhcyB0aGUgY2Fub25pY2Fs
IG5hbWUuCisgICAgICAgICAgU2ltaWxhciB0byB0aGUgYWJvdmUgY2FzZSwgd2UncmUgZ2V0dGlu
ZyByaWQgb2YgaW5kaXJlY3Rpb24gdGhhdCBldmVudHVhbGx5IGxlYWRzIHRvICdHQksnIGJ5Cisg
ICAgICAgICAgZGlyZWN0bHkgZ29pbmcgdG8gJ0dCSycuCisgICAgICAgIC0gQWRkcyAneC11aGMn
IGFzIGFuIGFsaWFzIGZvciAnd2luZG93cy05NDknLiBJdCdzIHVzZWQgaW4gc29tZSB3ZWIgcGFn
ZXMuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvZW5jb2RpbmcvY2hhci1kZWNvZGluZy1tYWMuaHRt
bAorICAgICAgICAgICAgICAgZmFzdC9lbmNvZGluZy9jaGFyLWRlY29kaW5nLmh0bWwKKworICAg
ICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dENvZGVjSUNVLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRDb2RlY0lDVTo6cmVnaXN0ZXJFeHRlbmRlZEVuY29kaW5nTmFtZXMpOgorCiAyMDA4LTEy
LTAyICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IERhdmUgSHlhdHQKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29k
ZWNJQ1UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNJ
Q1UuY3BwCShyZXZpc2lvbiAzODg5MCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29k
ZWNJQ1UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsMTIgKzExNywxMiBAQCB2b2lkIFRleHRD
b2RlY0lDVTo6cmVnaXN0ZXJFeHRlbmRlZEVuY29kCiAgICAgICAgICAgICBzdGFuZGFyZE5hbWUg
PSAiR0JLIjsKICAgICAgICAgLy8gU2ltaWxhcmx5LCBFVUMtS1IgZW5jb2RpbmdzIGFsbCBtYXAg
dG8gYW4gZXh0ZW5kZWQgdmVyc2lvbi4KICAgICAgICAgZWxzZSBpZiAoc3RyY21wKHN0YW5kYXJk
TmFtZSwgIktTQ181NjAxIikgPT0gMCB8fCBzdHJjbXAoc3RhbmRhcmROYW1lLCAiRVVDLUtSIikg
PT0gMCB8fCBzdHJjbXAoc3RhbmRhcmROYW1lLCAiY3AxMzYzIikgPT0gMCkKLSAgICAgICAgICAg
IHN0YW5kYXJkTmFtZSA9ICJ3aW5kb3dzLTk0OS0yMDAwIjsKKyAgICAgICAgICAgIHN0YW5kYXJk
TmFtZSA9ICJ3aW5kb3dzLTk0OSI7CiAgICAgICAgIC8vIEFuZCBzbyBvbi4KICAgICAgICAgZWxz
ZSBpZiAoc3RyY2FzZWNtcChzdGFuZGFyZE5hbWUsICJpc28tODg1OS05IikgPT0gMCkgLy8gVGhp
cyBuYW1lIGlzIHJldHVybmVkIGluIGRpZmZlcmVudCBjYXNlIGJ5IElDVSAzLjIgYW5kIDMuNi4K
ICAgICAgICAgICAgIHN0YW5kYXJkTmFtZSA9ICJ3aW5kb3dzLTEyNTQiOwogICAgICAgICBlbHNl
IGlmIChzdHJjbXAoc3RhbmRhcmROYW1lLCAiVElTLTYyMCIpID09IDApCi0gICAgICAgICAgICBz
dGFuZGFyZE5hbWUgPSAid2luZG93cy04NzQtMjAwMCI7CisgICAgICAgICAgICBzdGFuZGFyZE5h
bWUgPSAid2luZG93cy04NzQiOwogCiAgICAgICAgIHJlZ2lzdHJhcihzdGFuZGFyZE5hbWUsIHN0
YW5kYXJkTmFtZSk7CiAKQEAgLTE1MCwxOSArMTUwLDIzIEBAIHZvaWQgVGV4dENvZGVjSUNVOjpy
ZWdpc3RlckV4dGVuZGVkRW5jb2QKICAgICByZWdpc3RyYXIoInhtYWNyb21hbiIsICJtYWNpbnRv
c2giKTsKICAgICByZWdpc3RyYXIoInhtYWN1a3JhaW5pYW4iLCAieC1tYWMtY3lyaWxsaWMiKTsK
ICAgICByZWdpc3RyYXIoImNuYmlnNSIsICJCaWc1Iik7Ci0gICAgcmVnaXN0cmFyKCJjbmdiIiwg
IkVVQy1DTiIpOworICAgIHJlZ2lzdHJhcigieHhiaWc1IiwgIkJpZzUiKTsKKyAgICByZWdpc3Ry
YXIoImNuZ2IiLCAiR0JLIik7CisgICAgcmVnaXN0cmFyKCJjc2diMjMxMjgwIiwgIkdCSyIpOwor
ICAgIHJlZ2lzdHJhcigieGV1Y2NuIiwgIkdCSyIpOworICAgIHJlZ2lzdHJhcigieGdiayIsICJH
QksiKTsKICAgICByZWdpc3RyYXIoImNzSVNPODg1OThJIiwgIklTT184ODU5LTgtSSIpOwotICAg
IHJlZ2lzdHJhcigiY3NnYjIzMTI4MCIsICJFVUMtQ04iKTsKLSAgICByZWdpc3RyYXIoImRvczg3
NCIsICJjcDg3NCIpOwogICAgIHJlZ2lzdHJhcigia29pIiwgIktPSTgtUiIpOwogICAgIHJlZ2lz
dHJhcigibG9naWNhbCIsICJJU08tODg1OS04LUkiKTsKICAgICByZWdpc3RyYXIoInVuaWNvZGUx
MXV0ZjgiLCAiVVRGLTgiKTsKICAgICByZWdpc3RyYXIoInVuaWNvZGUyMHV0ZjgiLCAiVVRGLTgi
KTsKKyAgICByZWdpc3RyYXIoInh1bmljb2RlMjB1dGY4IiwgIlVURi04Iik7CiAgICAgcmVnaXN0
cmFyKCJ2aXN1YWwiLCAiSVNPLTg4NTktOCIpOwogICAgIHJlZ2lzdHJhcigid2luYXJhYmljIiwg
IndpbmRvd3MtMTI1NiIpOwogICAgIHJlZ2lzdHJhcigid2luYmFsdGljIiwgIndpbmRvd3MtMTI1
NyIpOwogICAgIHJlZ2lzdHJhcigid2luY3lyaWxsaWMiLCAid2luZG93cy0xMjUxIik7Ci0gICAg
cmVnaXN0cmFyKCJpc284ODU5MTEiLCAid2luZG93czg3NC0yMDAwIik7CisgICAgcmVnaXN0cmFy
KCJpc284ODU5MTEiLCAid2luZG93cy04NzQiKTsKKyAgICByZWdpc3RyYXIoImRvczg3NCIsICJ3
aW5kb3dzLTg3NCIpOwogICAgIHJlZ2lzdHJhcigid2luZ3JlZWsiLCAid2luZG93cy0xMjUzIik7
CiAgICAgcmVnaXN0cmFyKCJ3aW5oZWJyZXciLCAid2luZG93cy0xMjU1Iik7CiAgICAgcmVnaXN0
cmFyKCJ3aW5sYXRpbjIiLCAid2luZG93cy0xMjUwIik7CkBAIC0xNzEsMTUgKzE3NSw4IEBAIHZv
aWQgVGV4dENvZGVjSUNVOjpyZWdpc3RlckV4dGVuZGVkRW5jb2QKICAgICByZWdpc3RyYXIoInhj
cDEyNTAiLCAid2luZG93cy0xMjUwIik7CiAgICAgcmVnaXN0cmFyKCJ4Y3AxMjUxIiwgIndpbmRv
d3MtMTI1MSIpOwogICAgIHJlZ2lzdHJhcigieGV1YyIsICJFVUMtSlAiKTsKLSAgICByZWdpc3Ry
YXIoInhldWNjbiIsICJFVUMtQ04iKTsKLSAgICByZWdpc3RyYXIoInhnYmsiLCAiRVVDLUNOIik7
Ci0gICAgcmVnaXN0cmFyKCJ4dW5pY29kZTIwdXRmOCIsICJVVEYtOCIpOwotICAgIHJlZ2lzdHJh
cigieHdpbmRvd3M5NDkiLCAid2luZG93cy05NDktMjAwMCIpOwotICAgIHJlZ2lzdHJhcigieHhi
aWc1IiwgIkJpZzUiKTsKLQotICAgIC8vIFRoaXMgYWxpYXMgaXMgcHJlc2VudCBpbiBtb2Rlcm4g
dmVyc2lvbnMgb2YgSUNVLCBidXQgaXQgaGFzIG5vIHN0YW5kYXJkIG5hbWUsCi0gICAgLy8gc28g
d2UgZ2l2ZSBvbmUgdG8gaXQgbWFudWFsbHkuIEl0IGlzIG5vdCBwcmVzZW50IGluIElDVSAzLjIu
Ci0gICAgcmVnaXN0cmFyKCJ3aW5kb3dzODc0IiwgIndpbmRvd3M4NzQtMjAwMCIpOworICAgIHJl
Z2lzdHJhcigieHdpbmRvd3M5NDkiLCAid2luZG93cy05NDkiKTsKKyAgICByZWdpc3RyYXIoInh1
aGMiLCAid2luZG93cy05NDkiKTsKIAogICAgIC8vIFRoZXNlIGFsaWFzZXMgYXJlIHByZXNlbnQg
aW4gbW9kZXJuIHZlcnNpb25zIG9mIElDVSwgYnV0IHVzZSBkaWZmZXJlbnQgY29kZWNzLCBhbmQg
aGF2ZSBubyBzdGFuZGFyZCBuYW1lcy4KICAgICAvLyBUaGV5IGFyZSBub3QgcHJlc2VudCBpbiBJ
Q1UgMy4yLgpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMzg5MjMpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMiBAQAorMjAwOC0xMi0wMiAgSnVuZ3NoaWsg
U2hpbiAgPGpzaGluQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjI0NzIKKworICAgICAgICBSZXZpc2VzIGNoYXJzZXQgYWxpYXMgbWFwIGZvciBUZXh0Q29k
ZWNJQ1UuCisgICAgICAgIC0gVXNlcyB3aW5kb3dzLTk0OSBhbmQgd2luZG93cy04NzQgaW5zdGVh
ZCBvZiB3aW5kb3dzLTk0OS0yMDAwIGFuZCB3aW5kb3dzLTg3NC0yMDAwCisgICAgICAgIC0gUmVw
bGFjZXMgJ3dpbmRvd3M4NzQnIGluIGEgY291cGxlIG9mIHBsYWNlIHdpdGggJ3dpbmRvd3MtODc0
JyAoZm9yIHRoZSBjYW5vbmljYWwgbmFtZSkKKyAgICAgICAgLSBNYXBzICdkb3MtODc0JyB0byAn
d2luZG93cy04NzQnLiBDdXJyZW50bHksIGl0J3MgYWxpYXNlcyB0byAnY3A4NzQnLCB3aGljaCBp
cyBpbiB0dXJuCisgICAgICAgICAgbWFwcGVkIHRvICdUSVMtNjIwJy4gJ1RJUy02MjAnIGlzIG1h
bnVhbGx5IGFsaWFzZWQgdG8gJ3dpbmRvd3MtODc0Jy4gV2UnZCBiZXR0ZXIgZGlyZWN0bHkKKyAg
ICAgICAgICBhbGlhcyAnZG9zLTg3NCcgdG8gJ3dpbmRvd3MtODc0Jy4KKyAgICAgICAgLSBNYXBz
ICdFVUMtQ04nIHRvICdHQksnIGFuZCByZXBsYWNlcyBpdCB3aXRoICdHQksnIHdoZW4gaXQncyB1
c2VkIGFzIHRoZSBjYW5vbmljYWwgbmFtZS4KKyAgICAgICAgICBTaW1pbGFyIHRvIHRoZSBhYm92
ZSBjYXNlLCB3ZSdyZSBnZXR0aW5nIHJpZCBvZiBpbmRpcmVjdGlvbiB0aGF0IGV2ZW50dWFsbHkg
bGVhZHMgdG8gJ0dCSycgYnkKKyAgICAgICAgICBkaXJlY3RseSBnb2luZyB0byAnR0JLJy4KKyAg
ICAgICAgLSBQdXRzIE1hYyBlbmNvZGluZ3MgaW4gYSBzZXBhcmF0ZSB0ZXN0ICdjaGFyLWRlY29k
aW5nLW1hYy5odG1sJy4gUmVuYW1lICdjaGFyLWRlY29kaW5nLW1hYy5odG1sJworICAgICAgICAg
IGluIHBsYXRmb3JtL21hYyB0byAneG5leHRzdGVwLWRlY29kaW5nLmh0bWwnIHRvIGF2b2lkIHRo
ZSBuYW1lIGNvbGxpc2lvbiBpbiB0aGUgcmVzdWx0IGZpbGVzLgorICAgICAgICAtIEFkZHMgYSBK
UyBmaWxlIGZvciBjb21tb24gZnVuY3Rpb25zIHVzZWQgYnkgY2hhci1kZWNvZGluZy0qLmh0bWwg
dGVzdHMuCisKKyAgICAgICAgKiBmYXN0L2VuY29kaW5nL2NoYXItZGVjb2RpbmctZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIGZhc3QvZW5jb2RpbmcvY2hhci1kZWNvZGluZy1tYWMtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2VuY29kaW5nL2NoYXItZGVjb2RpbmctbWFjLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZW5jb2RpbmcvY2hhci1kZWNvZGluZy5odG1sOgor
ICAgICAgICAqIGZhc3QvZW5jb2RpbmcvcmVzb3VyY2VzL2NoYXItZGVjb2RpbmctdXRpbHMuanMK
KyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZmFzdC9lbmNvZGluZy9jaGFyLWRlY29kaW5nLW1hYy1l
eHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2Zhc3QvZW5jb2Rp
bmcvY2hhci1kZWNvZGluZy1tYWMuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9t
YWMvZmFzdC9lbmNvZGluZy94bmV4dHN0ZXAtZGVjb2RpbmctZXhwZWN0ZWQudHh0OiBDb3BpZWQg
ZnJvbSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9lbmNvZGluZy9jaGFyLWRlY29kaW5n
LW1hYy1leHBlY3RlZC50eHQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2Zhc3QvZW5jb2Rpbmcv
eG5leHRzdGVwLWRlY29kaW5nLmh0bWw6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9mYXN0L2VuY29kaW5nL2NoYXItZGVjb2RpbmctbWFjLmh0bWwuCisKIDIwMDgtMTItMDIg
IFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgRGF2ZSBIeWF0dApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9jaGFyLWRl
Y29kaW5nLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2VuY29k
aW5nL2NoYXItZGVjb2RpbmctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAzODg5MCkKKysrIExheW91
dFRlc3RzL2Zhc3QvZW5jb2RpbmcvY2hhci1kZWNvZGluZy1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTksNiArOSw3IEBAIFBBU1MgZGVjb2RlKCdnYl8yMzEyLTgwJywgJyVBMyVBMCcp
IGlzICcKIFBBU1MgZGVjb2RlKCdjaGluZXNlJywgJyVBMyVBMCcpIGlzICdVKzMwMDAnCiBQQVNT
IGRlY29kZSgnZ2JrJywgJyVBMyVBMCcpIGlzICdVKzMwMDAnCiBQQVNTIGRlY29kZSgnZ2IxODAz
MCcsICclQTMlQTAnKSBpcyAnVSszMDAwJworUEFTUyBkZWNvZGUoJ0VVQy1DTicsICclQTMlQTAn
KSBpcyAnVSszMDAwJwogUEFTUyBkZWNvZGUoJ2tvcmVhbicsICclQTIlRTYnKSBpcyAnVSsyMEFD
JwogUEFTUyBkZWNvZGUoJ2tvcmVhbicsICclQTElQTQnKSBpcyAnVSswMEI3JwogUEFTUyBkZWNv
ZGUoJ2tvcmVhbicsICclQTElQTknKSBpcyAnVSswMEFEJwpAQCAtMjEsMTIgKzIyLDg5IEBAIFBB
U1MgZGVjb2RlKCdrb3JlYW4nLCAnJTFDJykgaXMgJ1UrMDAxQycKIFBBU1MgZGVjb2RlKCdrb3Jl
YW4nLCAnJThGJUExJykgaXMgJ1UrQjhFQScKIFBBU1MgZGVjb2RlKCdrb3JlYW4nLCAnJUI0JUQz
JykgaXMgJ1UrQjJEMicKIFBBU1MgZGVjb2RlKCdrb3JlYW4nLCAnJUEyJTQxJykgaXMgJ1UrQzkx
MCcKLVBBU1MgZGVjb2RlKCdldWMta3InLCAnJUEyJTQxJykgaXMgJ1UrQzkxMCcKLVBBU1MgZGVj
b2RlKCdrb3JlYW4nLCAnJUEyJTQxJykgaXMgJ1UrQzkxMCcKK1BBU1MgZGVjb2RlKCdFVUMtS1In
LCAnJUEyJUU2JykgaXMgJ1UrMjBBQycKK1BBU1MgZGVjb2RlKCdFVUMtS1InLCAnJUExJUE0Jykg
aXMgJ1UrMDBCNycKK1BBU1MgZGVjb2RlKCdFVUMtS1InLCAnJUExJUE5JykgaXMgJ1UrMDBBRCcK
K1BBU1MgZGVjb2RlKCdFVUMtS1InLCAnJUExJUFBJykgaXMgJ1UrMjAxNScKK1BBU1MgZGVjb2Rl
KCdFVUMtS1InLCAnJUExJUFEJykgaXMgJ1UrMjIzQycKK1BBU1MgZGVjb2RlKCdFVUMtS1InLCAn
JUEyJUE2JykgaXMgJ1UrRkY1RScKK1BBU1MgZGVjb2RlKCdFVUMtS1InLCAnJUEyJUMxJykgaXMg
J1UrMjI5OScKK1BBU1MgZGVjb2RlKCdFVUMtS1InLCAnJTFBJykgaXMgJ1UrMDAxQScKK1BBU1Mg
ZGVjb2RlKCdFVUMtS1InLCAnJTFDJykgaXMgJ1UrMDAxQycKK1BBU1MgZGVjb2RlKCdFVUMtS1In
LCAnJThGJUExJykgaXMgJ1UrQjhFQScKK1BBU1MgZGVjb2RlKCdFVUMtS1InLCAnJUI0JUQzJykg
aXMgJ1UrQjJEMicKK1BBU1MgZGVjb2RlKCdFVUMtS1InLCAnJUEyJTQxJykgaXMgJ1UrQzkxMCcK
K1BBU1MgZGVjb2RlKCd3aW5kb3dzLTk0OScsICclQTIlRTYnKSBpcyAnVSsyMEFDJworUEFTUyBk
ZWNvZGUoJ3dpbmRvd3MtOTQ5JywgJyVBMSVBNCcpIGlzICdVKzAwQjcnCitQQVNTIGRlY29kZSgn
d2luZG93cy05NDknLCAnJUExJUE5JykgaXMgJ1UrMDBBRCcKK1BBU1MgZGVjb2RlKCd3aW5kb3dz
LTk0OScsICclQTElQUEnKSBpcyAnVSsyMDE1JworUEFTUyBkZWNvZGUoJ3dpbmRvd3MtOTQ5Jywg
JyVBMSVBRCcpIGlzICdVKzIyM0MnCitQQVNTIGRlY29kZSgnd2luZG93cy05NDknLCAnJUEyJUE2
JykgaXMgJ1UrRkY1RScKK1BBU1MgZGVjb2RlKCd3aW5kb3dzLTk0OScsICclQTIlQzEnKSBpcyAn
VSsyMjk5JworUEFTUyBkZWNvZGUoJ3dpbmRvd3MtOTQ5JywgJyUxQScpIGlzICdVKzAwMUEnCitQ
QVNTIGRlY29kZSgnd2luZG93cy05NDknLCAnJTFDJykgaXMgJ1UrMDAxQycKK1BBU1MgZGVjb2Rl
KCd3aW5kb3dzLTk0OScsICclOEYlQTEnKSBpcyAnVStCOEVBJworUEFTUyBkZWNvZGUoJ3dpbmRv
d3MtOTQ5JywgJyVCNCVEMycpIGlzICdVK0IyRDInCiBQQVNTIGRlY29kZSgnd2luZG93cy05NDkn
LCAnJUEyJTQxJykgaXMgJ1UrQzkxMCcKK1BBU1MgZGVjb2RlKCd4LXdpbmRvd3MtOTQ5JywgJyVB
MiVFNicpIGlzICdVKzIwQUMnCitQQVNTIGRlY29kZSgneC13aW5kb3dzLTk0OScsICclQTElQTQn
KSBpcyAnVSswMEI3JworUEFTUyBkZWNvZGUoJ3gtd2luZG93cy05NDknLCAnJUExJUE5JykgaXMg
J1UrMDBBRCcKK1BBU1MgZGVjb2RlKCd4LXdpbmRvd3MtOTQ5JywgJyVBMSVBQScpIGlzICdVKzIw
MTUnCitQQVNTIGRlY29kZSgneC13aW5kb3dzLTk0OScsICclQTElQUQnKSBpcyAnVSsyMjNDJwor
UEFTUyBkZWNvZGUoJ3gtd2luZG93cy05NDknLCAnJUEyJUE2JykgaXMgJ1UrRkY1RScKK1BBU1Mg
ZGVjb2RlKCd4LXdpbmRvd3MtOTQ5JywgJyVBMiVDMScpIGlzICdVKzIyOTknCitQQVNTIGRlY29k
ZSgneC13aW5kb3dzLTk0OScsICclMUEnKSBpcyAnVSswMDFBJworUEFTUyBkZWNvZGUoJ3gtd2lu
ZG93cy05NDknLCAnJTFDJykgaXMgJ1UrMDAxQycKK1BBU1MgZGVjb2RlKCd4LXdpbmRvd3MtOTQ5
JywgJyU4RiVBMScpIGlzICdVK0I4RUEnCitQQVNTIGRlY29kZSgneC13aW5kb3dzLTk0OScsICcl
QjQlRDMnKSBpcyAnVStCMkQyJwogUEFTUyBkZWNvZGUoJ3gtd2luZG93cy05NDknLCAnJUEyJTQx
JykgaXMgJ1UrQzkxMCcKK1BBU1MgZGVjb2RlKCd4LXVoYycsICclQTIlRTYnKSBpcyAnVSsyMEFD
JworUEFTUyBkZWNvZGUoJ3gtdWhjJywgJyVBMSVBNCcpIGlzICdVKzAwQjcnCitQQVNTIGRlY29k
ZSgneC11aGMnLCAnJUExJUE5JykgaXMgJ1UrMDBBRCcKK1BBU1MgZGVjb2RlKCd4LXVoYycsICcl
QTElQUEnKSBpcyAnVSsyMDE1JworUEFTUyBkZWNvZGUoJ3gtdWhjJywgJyVBMSVBRCcpIGlzICdV
KzIyM0MnCitQQVNTIGRlY29kZSgneC11aGMnLCAnJUEyJUE2JykgaXMgJ1UrRkY1RScKK1BBU1Mg
ZGVjb2RlKCd4LXVoYycsICclQTIlQzEnKSBpcyAnVSsyMjk5JworUEFTUyBkZWNvZGUoJ3gtdWhj
JywgJyUxQScpIGlzICdVKzAwMUEnCitQQVNTIGRlY29kZSgneC11aGMnLCAnJTFDJykgaXMgJ1Ur
MDAxQycKK1BBU1MgZGVjb2RlKCd4LXVoYycsICclOEYlQTEnKSBpcyAnVStCOEVBJworUEFTUyBk
ZWNvZGUoJ3gtdWhjJywgJyVCNCVEMycpIGlzICdVK0IyRDInCitQQVNTIGRlY29kZSgneC11aGMn
LCAnJUEyJTQxJykgaXMgJ1UrQzkxMCcKK1BBU1MgZGVjb2RlKCdpc28taXItMTQ5JywgJyVBMiVF
NicpIGlzICdVKzIwQUMnCitQQVNTIGRlY29kZSgnaXNvLWlyLTE0OScsICclQTElQTQnKSBpcyAn
VSswMEI3JworUEFTUyBkZWNvZGUoJ2lzby1pci0xNDknLCAnJUExJUE5JykgaXMgJ1UrMDBBRCcK
K1BBU1MgZGVjb2RlKCdpc28taXItMTQ5JywgJyVBMSVBQScpIGlzICdVKzIwMTUnCitQQVNTIGRl
Y29kZSgnaXNvLWlyLTE0OScsICclQTElQUQnKSBpcyAnVSsyMjNDJworUEFTUyBkZWNvZGUoJ2lz
by1pci0xNDknLCAnJUEyJUE2JykgaXMgJ1UrRkY1RScKK1BBU1MgZGVjb2RlKCdpc28taXItMTQ5
JywgJyVBMiVDMScpIGlzICdVKzIyOTknCitQQVNTIGRlY29kZSgnaXNvLWlyLTE0OScsICclMUEn
KSBpcyAnVSswMDFBJworUEFTUyBkZWNvZGUoJ2lzby1pci0xNDknLCAnJTFDJykgaXMgJ1UrMDAx
QycKK1BBU1MgZGVjb2RlKCdpc28taXItMTQ5JywgJyU4RiVBMScpIGlzICdVK0I4RUEnCitQQVNT
IGRlY29kZSgnaXNvLWlyLTE0OScsICclQjQlRDMnKSBpcyAnVStCMkQyJwogUEFTUyBkZWNvZGUo
J2lzby1pci0xNDknLCAnJUEyJTQxJykgaXMgJ1UrQzkxMCcKK1BBU1MgZGVjb2RlKCdLU19DXzU2
MDEtMTk4NycsICclQTIlRTYnKSBpcyAnVSsyMEFDJworUEFTUyBkZWNvZGUoJ0tTX0NfNTYwMS0x
OTg3JywgJyVBMSVBNCcpIGlzICdVKzAwQjcnCitQQVNTIGRlY29kZSgnS1NfQ181NjAxLTE5ODcn
LCAnJUExJUE5JykgaXMgJ1UrMDBBRCcKK1BBU1MgZGVjb2RlKCdLU19DXzU2MDEtMTk4NycsICcl
QTElQUEnKSBpcyAnVSsyMDE1JworUEFTUyBkZWNvZGUoJ0tTX0NfNTYwMS0xOTg3JywgJyVBMSVB
RCcpIGlzICdVKzIyM0MnCitQQVNTIGRlY29kZSgnS1NfQ181NjAxLTE5ODcnLCAnJUEyJUE2Jykg
aXMgJ1UrRkY1RScKK1BBU1MgZGVjb2RlKCdLU19DXzU2MDEtMTk4NycsICclQTIlQzEnKSBpcyAn
VSsyMjk5JworUEFTUyBkZWNvZGUoJ0tTX0NfNTYwMS0xOTg3JywgJyUxQScpIGlzICdVKzAwMUEn
CitQQVNTIGRlY29kZSgnS1NfQ181NjAxLTE5ODcnLCAnJTFDJykgaXMgJ1UrMDAxQycKK1BBU1Mg
ZGVjb2RlKCdLU19DXzU2MDEtMTk4NycsICclOEYlQTEnKSBpcyAnVStCOEVBJworUEFTUyBkZWNv
ZGUoJ0tTX0NfNTYwMS0xOTg3JywgJyVCNCVEMycpIGlzICdVK0IyRDInCiBQQVNTIGRlY29kZSgn
S1NfQ181NjAxLTE5ODcnLCAnJUEyJTQxJykgaXMgJ1UrQzkxMCcKK1BBU1MgZGVjb2RlKCdLU19D
XzU2MDEtMTk4OScsICclQTIlRTYnKSBpcyAnVSsyMEFDJworUEFTUyBkZWNvZGUoJ0tTX0NfNTYw
MS0xOTg5JywgJyVBMSVBNCcpIGlzICdVKzAwQjcnCitQQVNTIGRlY29kZSgnS1NfQ181NjAxLTE5
ODknLCAnJUExJUE5JykgaXMgJ1UrMDBBRCcKK1BBU1MgZGVjb2RlKCdLU19DXzU2MDEtMTk4OScs
ICclQTElQUEnKSBpcyAnVSsyMDE1JworUEFTUyBkZWNvZGUoJ0tTX0NfNTYwMS0xOTg5JywgJyVB
MSVBRCcpIGlzICdVKzIyM0MnCitQQVNTIGRlY29kZSgnS1NfQ181NjAxLTE5ODknLCAnJUEyJUE2
JykgaXMgJ1UrRkY1RScKK1BBU1MgZGVjb2RlKCdLU19DXzU2MDEtMTk4OScsICclQTIlQzEnKSBp
cyAnVSsyMjk5JworUEFTUyBkZWNvZGUoJ0tTX0NfNTYwMS0xOTg5JywgJyUxQScpIGlzICdVKzAw
MUEnCitQQVNTIGRlY29kZSgnS1NfQ181NjAxLTE5ODknLCAnJTFDJykgaXMgJ1UrMDAxQycKK1BB
U1MgZGVjb2RlKCdLU19DXzU2MDEtMTk4OScsICclOEYlQTEnKSBpcyAnVStCOEVBJworUEFTUyBk
ZWNvZGUoJ0tTX0NfNTYwMS0xOTg5JywgJyVCNCVEMycpIGlzICdVK0IyRDInCiBQQVNTIGRlY29k
ZSgnS1NfQ181NjAxLTE5ODknLCAnJUEyJTQxJykgaXMgJ1UrQzkxMCcKIFBBU1MgZGVjb2RlKCdp
c28tODg1OS05JywgJyU4MCcpIGlzICdVKzIwQUMnCiBQQVNTIGRlY29kZSgnaXNvLTg4NTktOScs
ICclOUYnKSBpcyAnVSswMTc4JwpAQCAtMzUsNiArMTEzLDggQEAgUEFTUyBkZWNvZGUoJ2xhdGlu
NScsICclODAnKSBpcyAnVSsyMEFDJwogUEFTUyBkZWNvZGUoJ2xhdGluNScsICclOUYnKSBpcyAn
VSswMTc4JwogUEFTUyBkZWNvZGUoJ2xhdGluNScsICclRkQnKSBpcyAnVSswMTMxJwogUEFTUyBk
ZWNvZGUoJ3dpbmRvd3MtMTI1NCcsICclODAnKSBpcyAnVSsyMEFDJworUEFTUyBkZWNvZGUoJ3dp
bmRvd3MtMTI1NCcsICclOUYnKSBpcyAnVSswMTc4JworUEFTUyBkZWNvZGUoJ3dpbmRvd3MtMTI1
NCcsICclRkQnKSBpcyAnVSswMTMxJwogUEFTUyBkZWNvZGUoJ0lTTy04ODU5LTEzJywgJyVBMScp
IGlzICdVKzIwMUQnCiBQQVNTIGRlY29kZSgnSVNPLTg4NTktMTMnLCAnJUE1JykgaXMgJ1UrMjAx
RScKIFBBU1MgZGVjb2RlKCdJU08tODg1OS0xMycsICclQjQnKSBpcyAnVSsyMDFDJwpAQCAtNTcs
MjcgKzEzNywyMiBAQCBQQVNTIGRlY29kZSgnVElTLTYyMCcsICclODAnKSBpcyAnVSsyMEFDCiBQ
QVNTIGRlY29kZSgnVElTLTYyMCcsICclOTYnKSBpcyAnVSsyMDEzJwogUEFTUyBkZWNvZGUoJ1RJ
Uy02MjAnLCAnJUEwJykgaXMgJ1UrMDBBMCcKIFBBU1MgZGVjb2RlKCdUSVMtNjIwJywgJyVBMScp
IGlzICdVKzBFMDEnCitQQVNTIGRlY29kZSgnVElTLTYyMCcsICclREInKSBpcyAnVStGOEMxJwog
UEFTUyBkZWNvZGUoJ0lTTy04ODU5LTExJywgJyU4MCcpIGlzICdVKzIwQUMnCiBQQVNTIGRlY29k
ZSgnSVNPLTg4NTktMTEnLCAnJTk2JykgaXMgJ1UrMjAxMycKIFBBU1MgZGVjb2RlKCdJU08tODg1
OS0xMScsICclQTAnKSBpcyAnVSswMEEwJwogUEFTUyBkZWNvZGUoJ0lTTy04ODU5LTExJywgJyVB
MScpIGlzICdVKzBFMDEnCitQQVNTIGRlY29kZSgnSVNPLTg4NTktMTEnLCAnJURCJykgaXMgJ1Ur
RjhDMScKIFBBU1MgZGVjb2RlKCd3aW5kb3dzLTg3NCcsICclODAnKSBpcyAnVSsyMEFDJwogUEFT
UyBkZWNvZGUoJ3dpbmRvd3MtODc0JywgJyU5NicpIGlzICdVKzIwMTMnCiBQQVNTIGRlY29kZSgn
d2luZG93cy04NzQnLCAnJUEwJykgaXMgJ1UrMDBBMCcKIFBBU1MgZGVjb2RlKCd3aW5kb3dzLTg3
NCcsICclQTEnKSBpcyAnVSswRTAxJwogUEFTUyBkZWNvZGUoJ3dpbmRvd3MtODc0JywgJyVEQicp
IGlzICdVK0Y4QzEnCi1QQVNTIGRlY29kZSgnVElTLTYyMCcsICclREInKSBpcyAnVStGOEMxJwot
UEFTUyBkZWNvZGUoJ0lTTy04ODU5LTExJywgJyVEQicpIGlzICdVK0Y4QzEnCi1QQVNTIGRlY29k
ZSgnbWFjJywgJyVDMycpIGlzICdVKzIyMUEnCi1QQVNTIGRlY29kZSgnbWFjaW50b3NoJywgJyVD
MycpIGlzICdVKzIyMUEnCi1QQVNTIGRlY29kZSgnTWFjUm9tYW4nLCAnJUMzJykgaXMgJ1UrMjIx
QScKLVBBU1MgZGVjb2RlKCd4LW1hYy1ncmVlaycsICclQjAnKSBpcyAnVSswMzkxJwotUEFTUyBk
ZWNvZGUoJ3gtbWFjLXVrcmFpbmlhbicsICclODAnKSBpcyAnVSswNDEwJwotUEFTUyBkZWNvZGUo
J3gtbWFjLWN5cmlsbGljJywgJyU4MCcpIGlzICdVKzA0MTAnCi1QQVNTIGRlY29kZSgnbWFjLWN5
cmlsbGljJywgJyU4MCcpIGlzICdVKzA0MTAnCi1QQVNTIGRlY29kZSgneC1tYWMtY2VudHJhbGV1
cnJvbWFuJywgJyU4MScpIGlzICdVKzAxMDAnCi1QQVNTIGRlY29kZSgneC1tYWMtY2UnLCAnJTgx
JykgaXMgJ1UrMDEwMCcKLVBBU1MgZGVjb2RlKCd4LW1hYy10dXJraXNoJywgJyU4MScpIGlzICdV
KzAwQzUnCitQQVNTIGRlY29kZSgnZG9zLTg3NCcsICclODAnKSBpcyAnVSsyMEFDJworUEFTUyBk
ZWNvZGUoJ2Rvcy04NzQnLCAnJTk2JykgaXMgJ1UrMjAxMycKK1BBU1MgZGVjb2RlKCdkb3MtODc0
JywgJyVBMCcpIGlzICdVKzAwQTAnCitQQVNTIGRlY29kZSgnZG9zLTg3NCcsICclQTEnKSBpcyAn
VSswRTAxJworUEFTUyBkZWNvZGUoJ2Rvcy04NzQnLCAnJURCJykgaXMgJ1UrRjhDMScKIFBBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9lbmNvZGluZy9jaGFyLWRlY29kaW5nLW1hYy1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9jaGFyLWRlY29kaW5nLW1hYy1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2NoYXIt
ZGVjb2RpbmctbWFjLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxOSBAQAor
VGhpcyB0ZXN0cyBkZWNvZGluZyBjaGFyYWN0ZXJzIGluIHZhcmlvdXMgY2hhcmFjdGVyIHNldHMu
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGRlY29kZSgnbWFjJywgJyVD
MycpIGlzICdVKzIyMUEnCitQQVNTIGRlY29kZSgnbWFjaW50b3NoJywgJyVDMycpIGlzICdVKzIy
MUEnCitQQVNTIGRlY29kZSgnTWFjUm9tYW4nLCAnJUMzJykgaXMgJ1UrMjIxQScKK1BBU1MgZGVj
b2RlKCd4LW1hYy1ncmVlaycsICclQjAnKSBpcyAnVSswMzkxJworUEFTUyBkZWNvZGUoJ3gtbWFj
LXVrcmFpbmlhbicsICclODAnKSBpcyAnVSswNDEwJworUEFTUyBkZWNvZGUoJ3gtbWFjLWN5cmls
bGljJywgJyU4MCcpIGlzICdVKzA0MTAnCitQQVNTIGRlY29kZSgnbWFjLWN5cmlsbGljJywgJyU4
MCcpIGlzICdVKzA0MTAnCitQQVNTIGRlY29kZSgneC1tYWMtY2VudHJhbGV1cnJvbWFuJywgJyU4
MScpIGlzICdVKzAxMDAnCitQQVNTIGRlY29kZSgneC1tYWMtY2UnLCAnJTgxJykgaXMgJ1UrMDEw
MCcKK1BBU1MgZGVjb2RlKCd4LW1hYy10dXJraXNoJywgJyU4MScpIGlzICdVKzAwQzUnCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9jaGFyLWRlY29kaW5nLW1hYy5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvY2hhci1kZWNvZGluZy1tYWMuaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvY2hhci1kZWNvZGluZy1tYWMu
aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMSBAQAorPGh0bWw+Cis8aGVhZD4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ij4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9jaGFyLWRlY29kaW5nLXV0aWxzLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIGRlY29k
aW5nIGNoYXJhY3RlcnMgaW4gdmFyaW91cyBjaGFyYWN0ZXIgc2V0cy4iKTsKKworLy8gTGVnYWN5
IE1hYyBlbmNvZGluZ3MuCit0ZXN0RGVjb2RlKCdtYWMnLCAnJUMzJywgJ1UrMjIxQScpOwordGVz
dERlY29kZSgnbWFjaW50b3NoJywgJyVDMycsICdVKzIyMUEnKTsKK3Rlc3REZWNvZGUoJ01hY1Jv
bWFuJywgJyVDMycsICdVKzIyMUEnKTsKK3Rlc3REZWNvZGUoJ3gtbWFjLWdyZWVrJywgJyVCMCcs
ICdVKzAzOTEnKTsKK3Rlc3REZWNvZGUoJ3gtbWFjLXVrcmFpbmlhbicsICclODAnLCAnVSswNDEw
Jyk7Cit0ZXN0RGVjb2RlKCd4LW1hYy1jeXJpbGxpYycsICclODAnLCAnVSswNDEwJyk7Cit0ZXN0
RGVjb2RlKCdtYWMtY3lyaWxsaWMnLCAnJTgwJywgJ1UrMDQxMCcpOwordGVzdERlY29kZSgneC1t
YWMtY2VudHJhbGV1cnJvbWFuJywgJyU4MScsICdVKzAxMDAnKTsKK3Rlc3REZWNvZGUoJ3gtbWFj
LWNlJywgJyU4MScsICdVKzAxMDAnKTsKK3Rlc3REZWNvZGUoJ3gtbWFjLXR1cmtpc2gnLCAnJTgx
JywgJ1UrMDBDNScpOworCitzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworCis8L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvY2hhci1k
ZWNvZGluZy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvY2hh
ci1kZWNvZGluZy5odG1sCShyZXZpc2lvbiAzODg5MCkKKysrIExheW91dFRlc3RzL2Zhc3QvZW5j
b2RpbmcvY2hhci1kZWNvZGluZy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yLDYgKzIsNyBAQAog
PGhlYWQ+CiA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyI+CiA8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY2hhci1kZWNvZGluZy11dGls
cy5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KIDxwIGlkPSJkZXNjcmlwdGlvbiI+PC9w
PgpAQCAtMTAsMzIgKzExLDYgQEAKIAogZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgZGVjb2Rpbmcg
Y2hhcmFjdGVycyBpbiB2YXJpb3VzIGNoYXJhY3RlciBzZXRzLiIpOwogCi1mdW5jdGlvbiBoZXgo
bnVtYmVyKQotewotICAgIHZhciBoZXhEaWdpdCA9ICIwMTIzNDU2Nzg5QUJDREVGIjsKLSAgICB2
YXIgaGV4ID0gaGV4RGlnaXQuc3Vic3RyKG51bWJlciAmIDB4ZiwgMSk7Ci0gICAgd2hpbGUgKG51
bWJlciA+IDE1KSB7Ci0gICAgICAgIG51bWJlciA+Pj0gNDsKLSAgICAgICAgaGV4ID0gaGV4RGln
aXQuc3Vic3RyKG51bWJlciAmIDE1LCAxKSArIGhleDsKLSAgICB9Ci0gICAgcmV0dXJuIGhleDsK
LX0KLQotZnVuY3Rpb24gZGVjb2RlKGNoYXJzZXROYW1lLCBjaGFyYWN0ZXJTZXF1ZW5jZSkKLXsK
LSAgICB2YXIgcmVxID0gbmV3IFhNTEh0dHBSZXF1ZXN0OwotICAgIHJlcS5vcGVuKCdHRVQnLCAn
ZGF0YTp0ZXh0L3BsYWluLCcgKyBjaGFyYWN0ZXJTZXF1ZW5jZSwgZmFsc2UpOwotICAgIHJlcS5v
dmVycmlkZU1pbWVUeXBlKCd0ZXh0L3BsYWluOyBjaGFyc2V0PSInICsgY2hhcnNldE5hbWUgKyAn
IicpOwotICAgIHJlcS5zZW5kKCcnKTsKLSAgICB2YXIgY29kZSA9IGhleChyZXEucmVzcG9uc2VU
ZXh0LmNoYXJDb2RlQXQoMCkpOwotICAgIHJldHVybiAiVSsiICsgKCIwMDAwIiArIGNvZGUpLnN1
YnN0cihjb2RlLmxlbmd0aCwgNCk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3REZWNvZGUoY2hhcnNldE5h
bWUsIGNoYXJhY3RlclNlcXVlbmNlLCB1bmljb2RlKQotewotICAgIHNob3VsZEJlKCJkZWNvZGUo
JyIgKyBjaGFyc2V0TmFtZSArICInLCAnIiArIGNoYXJhY3RlclNlcXVlbmNlICsgIicpIiwgIici
ICsgdW5pY29kZSArICInIik7Ci19Ci0KIHRlc3REZWNvZGUoJ1VURi04JywgJyVFMiU4OCU5QScs
ICdVKzIyMUEnKTsKIAogLy8gPGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3MDE0PiBFVUMtQ04gY29kZSBBM0EwIGlzIG1hcHBlZCB0byBVK0U1RTUgaW5zdGVhZCBvZiBV
KzMwMDAKQEAgLTQ0LDM3ICsxOSwzNCBAQCB0ZXN0RGVjb2RlKCdnYl8yMzEyLTgwJywgJyVBMyVB
MCcsICdVKzMwCiB0ZXN0RGVjb2RlKCdjaGluZXNlJywgJyVBMyVBMCcsICdVKzMwMDAnKTsKIHRl
c3REZWNvZGUoJ2diaycsICclQTMlQTAnLCAnVSszMDAwJyk7CiB0ZXN0RGVjb2RlKCdnYjE4MDMw
JywgJyVBMyVBMCcsICdVKzMwMDAnKTsKK3Rlc3REZWNvZGUoJ0VVQy1DTicsICclQTMlQTAnLCAn
VSszMDAwJyk7CiAKIC8vIFRlc3QgdGhhdCBhbGwgS29yZWFuIGVuY29kaW5ncyBvZiBFVUMtS1Ig
ZmFtaWx5IGFyZSB0cmVhdGVkIGFzIHdpbmRvd3MtOTQ5LgotdGVzdERlY29kZSgna29yZWFuJywg
JyVBMiVFNicsICdVKzIwQUMnKTsKLXRlc3REZWNvZGUoJ2tvcmVhbicsICclQTElQTQnLCAnVSsw
MEI3Jyk7Ci10ZXN0RGVjb2RlKCdrb3JlYW4nLCAnJUExJUE5JywgJ1UrMDBBRCcpOwotdGVzdERl
Y29kZSgna29yZWFuJywgJyVBMSVBQScsICdVKzIwMTUnKTsKLXRlc3REZWNvZGUoJ2tvcmVhbics
ICclQTElQUQnLCAnVSsyMjNDJyk7Ci10ZXN0RGVjb2RlKCdrb3JlYW4nLCAnJUEyJUE2JywgJ1Ur
RkY1RScpOwotdGVzdERlY29kZSgna29yZWFuJywgJyVBMiVDMScsICdVKzIyOTknKTsKLXRlc3RE
ZWNvZGUoJ2tvcmVhbicsICclMUEnLCAnVSswMDFBJyk7Ci10ZXN0RGVjb2RlKCdrb3JlYW4nLCAn
JTFDJywgJ1UrMDAxQycpOwotdGVzdERlY29kZSgna29yZWFuJywgJyU4RiVBMScsICdVK0I4RUEn
KTsKLXRlc3REZWNvZGUoJ2tvcmVhbicsICclQjQlRDMnLCAnVStCMkQyJyk7Ci10ZXN0RGVjb2Rl
KCdrb3JlYW4nLCAnJUEyJTQxJywgJ1UrQzkxMCcpOwotdGVzdERlY29kZSgnZXVjLWtyJywgJyVB
MiU0MScsICdVK0M5MTAnKTsKLXRlc3REZWNvZGUoJ2tvcmVhbicsICclQTIlNDEnLCAnVStDOTEw
Jyk7Ci10ZXN0RGVjb2RlKCd3aW5kb3dzLTk0OScsICclQTIlNDEnLCAnVStDOTEwJyk7Ci10ZXN0
RGVjb2RlKCd4LXdpbmRvd3MtOTQ5JywgJyVBMiU0MScsICdVK0M5MTAnKTsKLXRlc3REZWNvZGUo
J2lzby1pci0xNDknLCAnJUEyJTQxJywgJ1UrQzkxMCcpOwotdGVzdERlY29kZSgnS1NfQ181NjAx
LTE5ODcnLCAnJUEyJTQxJywgJ1UrQzkxMCcpOwotdGVzdERlY29kZSgnS1NfQ181NjAxLTE5ODkn
LCAnJUEyJTQxJywgJ1UrQzkxMCcpOwordmFyIGtvcmVhbiA9IHsKKyAgICBlbmNvZGluZ3M6IFsn
a29yZWFuJywgJ0VVQy1LUicsICd3aW5kb3dzLTk0OScsICd4LXdpbmRvd3MtOTQ5JywgJ3gtdWhj
JywKKyAgICAgICAgICAgICAgICAnaXNvLWlyLTE0OScsICdLU19DXzU2MDEtMTk4NycsICdLU19D
XzU2MDEtMTk4OScgXSwKKyAgICBlbmNvZGVkOiBbJyVBMiVFNicsICclQTElQTQnLCAnJUExJUE5
JywgJyVBMSVBQScsICclQTElQUQnLCAnJUEyJUE2JywKKyAgICAgICAgICAgICAgJyVBMiVDMScs
ICclMUEnLCAgICAnJTFDJywgICAgJyU4RiVBMScsICclQjQlRDMnLCAnJUEyJTQxJ10sCisgICAg
dW5pY29kZTogWydVKzIwQUMnLCAnVSswMEI3JywgJ1UrMDBBRCcsICdVKzIwMTUnLCAnVSsyMjND
JywgJ1UrRkY1RScsIAorICAgICAgICAgICAgICAnVSsyMjk5JywgJ1UrMDAxQScsICdVKzAwMUMn
LCAnVStCOEVBJywgJ1UrQjJEMicsICdVK0M5MTAnXSAKK307CiAKK2JhdGNoVGVzdERlY29kZShr
b3JlYW4pOworICAgCiAvLyBUZXN0IHRoYXQgSVNPLTg4NTktOSAoVHVya2lzaCkgaXMgdXBncmFk
ZWQgdG8gd2luZG93cy0xMjU0IHdpdGggRXVybyBzeW1ib2wuCi10ZXN0RGVjb2RlKCdpc28tODg1
OS05JywgJyU4MCcsICdVKzIwQUMnKTsKLXRlc3REZWNvZGUoJ2lzby04ODU5LTknLCAnJTlGJywg
J1UrMDE3OCcpOwotdGVzdERlY29kZSgnaXNvLTg4NTktOScsICclRkQnLCAnVSswMTMxJyk7Ci10
ZXN0RGVjb2RlKCdsYXRpbjUnLCAnJTgwJywgJ1UrMjBBQycpOwotdGVzdERlY29kZSgnbGF0aW41
JywgJyU5RicsICdVKzAxNzgnKTsKLXRlc3REZWNvZGUoJ2xhdGluNScsICclRkQnLCAnVSswMTMx
Jyk7Ci10ZXN0RGVjb2RlKCd3aW5kb3dzLTEyNTQnLCAnJTgwJywgJ1UrMjBBQycpOwotCit2YXIg
dHVya2lzaCA9IHsKKyAgZW5jb2RpbmdzOiBbJ2lzby04ODU5LTknLCAnbGF0aW41JywgJ3dpbmRv
d3MtMTI1NCddLAorICBlbmNvZGVkOiBbJyU4MCcsICclOUYnLCAnJUZEJ10sCisgIHVuaWNvZGU6
IFsnVSsyMEFDJywgJ1UrMDE3OCcsICdVKzAxMzEnXQorfTsKKworYmF0Y2hUZXN0RGVjb2RlKHR1
cmtpc2gpOworCisvLyBGSVg6IEhhdmUgdG8gYWRkIHRlc3RzIGZvciBFdXJvIGFuZCBhIGZldyBu
ZXcgY2hhcmFjdGVycyBhZGRlZCB0byBJU08tODg1OS14IAorLy8gdGhhdCBhcmUgTk9UIHN1YnNl
dHMgb2YgdGhlIGNvcnJlc3BvbmRpbmcgV2luZG93cyBjb2RlcGFnZXMuIEZvciBpbnN0YW5jZSwK
Ky8vIElTTy04ODU5LTc6MjAwMyBoYXMgRXVybyBhdCAweEE0IGFuZCBhIGNvdXBsZSBvZiBvdGhl
ciBuZXcgY2hhcmFjdGVycy4KKy8vIElDVSAzLjgueCBvciBsYXRlciBoYXMgdGhlbS4gUGVyaGFw
cywgd2UgbmVlZCB0byBoYXZlIGEgc2VwYXJhdGUgdGVzdCB0aGF0CisvLyBjYW4gYmUgZW5hYmxl
ZCBvbmx5IHdpdGggbW9kZXJuIElDVS4KIC8vIEJhbHRpYyBlbmNvZGluZ3MgZmluZSBwb2ludHMu
CiB0ZXN0RGVjb2RlKCdJU08tODg1OS0xMycsICclQTEnLCAnVSsyMDFEJyk7CiB0ZXN0RGVjb2Rl
KCdJU08tODg1OS0xMycsICclQTUnLCAnVSsyMDFFJyk7CkBAIC0xMDAsMzMgKzcyLDE1IEBAIHRl
c3REZWNvZGUoJ0tPSTgtVScsICclQTQnLCAnVSswNDU0Jyk7CiB0ZXN0RGVjb2RlKCdLT0k4LVUn
LCAnJUFEJywgJ1UrMDQ5MScpOwogCiAvLyBUZXN0IHRoYXQgVElTLTYyMCBhbmQgSVNPLTg4NTkt
MTEgKFRoYWkpIGFyZSB1cGdyYWRlZCB0byB3aW5kb3dzLTg3NC4KLXRlc3REZWNvZGUoJ1RJUy02
MjAnLCAnJTgwJywgJ1UrMjBBQycpOwotdGVzdERlY29kZSgnVElTLTYyMCcsICclOTYnLCAnVSsy
MDEzJyk7Ci10ZXN0RGVjb2RlKCdUSVMtNjIwJywgJyVBMCcsICdVKzAwQTAnKTsKLXRlc3REZWNv
ZGUoJ1RJUy02MjAnLCAnJUExJywgJ1UrMEUwMScpOwotdGVzdERlY29kZSgnSVNPLTg4NTktMTEn
LCAnJTgwJywgJ1UrMjBBQycpOwotdGVzdERlY29kZSgnSVNPLTg4NTktMTEnLCAnJTk2JywgJ1Ur
MjAxMycpOwotdGVzdERlY29kZSgnSVNPLTg4NTktMTEnLCAnJUEwJywgJ1UrMDBBMCcpOwotdGVz
dERlY29kZSgnSVNPLTg4NTktMTEnLCAnJUExJywgJ1UrMEUwMScpOwotdGVzdERlY29kZSgnd2lu
ZG93cy04NzQnLCAnJTgwJywgJ1UrMjBBQycpOwotdGVzdERlY29kZSgnd2luZG93cy04NzQnLCAn
JTk2JywgJ1UrMjAxMycpOwotdGVzdERlY29kZSgnd2luZG93cy04NzQnLCAnJUEwJywgJ1UrMDBB
MCcpOwotdGVzdERlY29kZSgnd2luZG93cy04NzQnLCAnJUExJywgJ1UrMEUwMScpOwotdGVzdERl
Y29kZSgnd2luZG93cy04NzQnLCAnJURCJywgJ1UrRjhDMScpOyAvLyBBIHdlaXJkIFBVQSBtYXBw
aW5nIHRoYXQgZG9lc24ndCBzZWVtIHRvIGJlIG9mIGFueSB1c2UsIGV2ZW4gb24gV2luZG93cy4K
LXRlc3REZWNvZGUoJ1RJUy02MjAnLCAnJURCJywgJ1UrRjhDMScpOwotdGVzdERlY29kZSgnSVNP
LTg4NTktMTEnLCAnJURCJywgJ1UrRjhDMScpOwotCi0vLyBMZWdhY3kgTWFjIGVuY29kaW5ncy4K
LXRlc3REZWNvZGUoJ21hYycsICclQzMnLCAnVSsyMjFBJyk7Ci10ZXN0RGVjb2RlKCdtYWNpbnRv
c2gnLCAnJUMzJywgJ1UrMjIxQScpOwotdGVzdERlY29kZSgnTWFjUm9tYW4nLCAnJUMzJywgJ1Ur
MjIxQScpOwotdGVzdERlY29kZSgneC1tYWMtZ3JlZWsnLCAnJUIwJywgJ1UrMDM5MScpOwotdGVz
dERlY29kZSgneC1tYWMtdWtyYWluaWFuJywgJyU4MCcsICdVKzA0MTAnKTsKLXRlc3REZWNvZGUo
J3gtbWFjLWN5cmlsbGljJywgJyU4MCcsICdVKzA0MTAnKTsKLXRlc3REZWNvZGUoJ21hYy1jeXJp
bGxpYycsICclODAnLCAnVSswNDEwJyk7Ci10ZXN0RGVjb2RlKCd4LW1hYy1jZW50cmFsZXVycm9t
YW4nLCAnJTgxJywgJ1UrMDEwMCcpOwotdGVzdERlY29kZSgneC1tYWMtY2UnLCAnJTgxJywgJ1Ur
MDEwMCcpOwotdGVzdERlY29kZSgneC1tYWMtdHVya2lzaCcsICclODEnLCAnVSswMEM1Jyk7Cisv
LyAiMHhEQiA9PiBVK0Y4QzEiIGlzIGEgIHdlaXJkIFBVQSBtYXBwaW5nIHRoYXQgZG9lc24ndCBz
ZWVtIHRvIGJlIG9mCisvLyBhbnkgdXNlLCBldmVuIG9uIFdpbmRvd3MuCit2YXIgdGhhaSA9IHsK
KyAgZW5jb2RpbmdzOiBbJ1RJUy02MjAnLCAnSVNPLTg4NTktMTEnLCAnd2luZG93cy04NzQnLCAn
ZG9zLTg3NCddLAorICBlbmNvZGVkOiBbJyU4MCcsICclOTYnLCAnJUEwJywgJyVBMScsICclREIn
XSwKKyAgdW5pY29kZTogWydVKzIwQUMnLCAnVSsyMDEzJywgJ1UrMDBBMCcsICdVKzBFMDEnLCAn
VStGOEMxJ10KK307CisKK2JhdGNoVGVzdERlY29kZSh0aGFpKTsKIAogc3VjY2Vzc2Z1bGx5UGFy
c2VkID0gdHJ1ZTsKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9yZXNvdXJjZXMv
Y2hhci1kZWNvZGluZy11dGlscy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Vu
Y29kaW5nL3Jlc291cmNlcy9jaGFyLWRlY29kaW5nLXV0aWxzLmpzCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9yZXNvdXJjZXMvY2hhci1kZWNvZGluZy11dGlscy5q
cwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNCBAQAorZnVuY3Rpb24gaGV4KG51bWJlcikKK3sK
KyAgICB2YXIgaGV4RGlnaXQgPSAiMDEyMzQ1Njc4OUFCQ0RFRiI7CisgICAgdmFyIGhleCA9IGhl
eERpZ2l0LnN1YnN0cihudW1iZXIgJiAweGYsIDEpOworICAgIHdoaWxlIChudW1iZXIgPiAxNSkg
eworICAgICAgICBudW1iZXIgPj49IDQ7CisgICAgICAgIGhleCA9IGhleERpZ2l0LnN1YnN0cihu
dW1iZXIgJiAxNSwgMSkgKyBoZXg7CisgICAgfQorICAgIHJldHVybiBoZXg7Cit9CisKK2Z1bmN0
aW9uIGRlY29kZShjaGFyc2V0TmFtZSwgY2hhcmFjdGVyU2VxdWVuY2UpCit7CisgICAgdmFyIHJl
cSA9IG5ldyBYTUxIdHRwUmVxdWVzdDsKKyAgICByZXEub3BlbignR0VUJywgJ2RhdGE6dGV4dC9w
bGFpbiwnICsgY2hhcmFjdGVyU2VxdWVuY2UsIGZhbHNlKTsKKyAgICByZXEub3ZlcnJpZGVNaW1l
VHlwZSgndGV4dC9wbGFpbjsgY2hhcnNldD0iJyArIGNoYXJzZXROYW1lICsgJyInKTsKKyAgICBy
ZXEuc2VuZCgnJyk7CisgICAgdmFyIGNvZGUgPSBoZXgocmVxLnJlc3BvbnNlVGV4dC5jaGFyQ29k
ZUF0KDApKTsKKyAgICByZXR1cm4gIlUrIiArICgiMDAwMCIgKyBjb2RlKS5zdWJzdHIoY29kZS5s
ZW5ndGgsIDQpOworfQorCitmdW5jdGlvbiB0ZXN0RGVjb2RlKGNoYXJzZXROYW1lLCBjaGFyYWN0
ZXJTZXF1ZW5jZSwgdW5pY29kZSkKK3sKKyAgICBzaG91bGRCZSgiZGVjb2RlKCciICsgY2hhcnNl
dE5hbWUgKyAiJywgJyIgKyBjaGFyYWN0ZXJTZXF1ZW5jZSArICInKSIsICInIiArIHVuaWNvZGUg
KyAiJyIpOworfQorCitmdW5jdGlvbiBiYXRjaFRlc3REZWNvZGUoaW5wdXREYXRhKQoreworICAg
IGZvciAodmFyIGkgaW4gaW5wdXREYXRhLmVuY29kaW5ncykgeworICAgICAgICBmb3IgKHZhciBq
IGluIGlucHV0RGF0YS5lbmNvZGVkKQorICAgICAgICAgICAgdGVzdERlY29kZShpbnB1dERhdGEu
ZW5jb2RpbmdzW2ldLCBpbnB1dERhdGEuZW5jb2RlZFtqXSwgaW5wdXREYXRhLnVuaWNvZGVbal0p
OworICAgIH0KK30KKwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZW5jb2Rp
bmcvY2hhci1kZWNvZGluZy1tYWMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9mYXN0L2VuY29kaW5nL2NoYXItZGVjb2RpbmctbWFjLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMzg4OTApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9l
bmNvZGluZy9jaGFyLWRlY29kaW5nLW1hYy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTEsMTMgKzAsMCBAQAotVGhpcyB0ZXN0cyBkZWNvZGluZyBjaGFyYWN0ZXJzIGluIHZhcmlvdXMg
Y2hhcmFjdGVyIHNldHMuCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1QQVNTIGRl
Y29kZSgneC1uZXh0c3RlcCcsICclRTEnKSBpcyAnVSswMEM2JwotCi1UaGUgeC1uZXh0c3RlcCB0
ZXN0IGlzIG1lYW50IHRvIGVuc3VyZSB0aGF0IHdlIHN0aWxsIHN1cHBvcnQgbGVnYWN5IGVuY29k
aW5ncyB0aGF0IGFyZSBub3QgcGFydCBvZiBJQ1UgLSBpdCBpcyBleHBlY3RlZCB0aGF0IGl0IGZh
aWxzIGluIG90aGVyIGJyb3dzZXJzLCB3aGljaCBkbyBub3Qgc3VwcG9ydCB0aGlzIHBhcnRpY3Vs
YXIgZW5jb2RpbmcuIFNlZSBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
MTk1IGZvciBtb3JlIGRldGFpbHMuCi0KLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
LQotVEVTVCBDT01QTEVURQotCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9l
bmNvZGluZy9jaGFyLWRlY29kaW5nLW1hYy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9mYXN0L2VuY29kaW5nL2NoYXItZGVjb2RpbmctbWFjLmh0bWwJKHJldmlz
aW9uIDM4ODkwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZW5jb2RpbmcvY2hh
ci1kZWNvZGluZy1tYWMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw1MSArMCwwIEBACi08aHRt
bD4KLTxoZWFkPgotPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Ci08c2NyaXB0IHNyYz0iLi4vLi4vLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFkPgot
PGJvZHk+Ci08cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgZGVjb2RpbmcgY2hhcmFjdGVy
cyBpbiB2YXJpb3VzIGNoYXJhY3RlciBzZXRzLiIpOwotCi1mdW5jdGlvbiBoZXgobnVtYmVyKQot
ewotICAgIHZhciBoZXhEaWdpdCA9ICIwMTIzNDU2Nzg5QUJDREVGIjsKLSAgICB2YXIgaGV4ID0g
aGV4RGlnaXQuc3Vic3RyKG51bWJlciAmIDB4ZiwgMSk7Ci0gICAgd2hpbGUgKG51bWJlciA+IDE1
KSB7Ci0gICAgICAgIG51bWJlciA+Pj0gNDsKLSAgICAgICAgaGV4ID0gaGV4RGlnaXQuc3Vic3Ry
KG51bWJlciAmIDE1LCAxKSArIGhleDsKLSAgICB9Ci0gICAgcmV0dXJuIGhleDsKLX0KLQotZnVu
Y3Rpb24gZGVjb2RlKGNoYXJzZXROYW1lLCBjaGFyYWN0ZXJTZXF1ZW5jZSkKLXsKLSAgICB2YXIg
cmVxID0gbmV3IFhNTEh0dHBSZXF1ZXN0OwotICAgIHJlcS5vcGVuKCdHRVQnLCAnZGF0YTp0ZXh0
L3BsYWluLCcgKyBjaGFyYWN0ZXJTZXF1ZW5jZSwgZmFsc2UpOwotICAgIHJlcS5vdmVycmlkZU1p
bWVUeXBlKCd0ZXh0L3BsYWluOyBjaGFyc2V0PSInICsgY2hhcnNldE5hbWUgKyAnIicpOwotICAg
IHJlcS5zZW5kKCcnKTsKLSAgICB2YXIgY29kZSA9IGhleChyZXEucmVzcG9uc2VUZXh0LmNoYXJD
b2RlQXQoMCkpOwotICAgIHJldHVybiAiVSsiICsgKCIwMDAwIiArIGNvZGUpLnN1YnN0cihjb2Rl
Lmxlbmd0aCwgNCk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3REZWNvZGUoY2hhcnNldE5hbWUsIGNoYXJh
Y3RlclNlcXVlbmNlLCB1bmljb2RlKQotewotICAgIHNob3VsZEJlKCJkZWNvZGUoJyIgKyBjaGFy
c2V0TmFtZSArICInLCAnIiArIGNoYXJhY3RlclNlcXVlbmNlICsgIicpIiwgIiciICsgdW5pY29k
ZSArICInIik7Ci19Ci0KLXRlc3REZWNvZGUoJ3gtbmV4dHN0ZXAnLCAnJUUxJywgJ1UrMDBDNicp
OwotZGVidWcoJycpOwotCi1kZWJ1ZygiVGhlIHgtbmV4dHN0ZXAgdGVzdCBpcyBtZWFudCB0byBl
bnN1cmUgdGhhdCB3ZSBzdGlsbCBzdXBwb3J0IGxlZ2FjeSBlbmNvZGluZ3MgdGhhdCBhcmUgbm90
IHBhcnQgb2YgSUNVIC0gaXQgaXMgZXhwZWN0ZWQgdGhhdCBpdCBmYWlscyBpbiBvdGhlciBicm93
c2Vycywgd2hpY2ggZG8gbm90IHN1cHBvcnQgdGhpcyBwYXJ0aWN1bGFyIGVuY29kaW5nLiBTZWUg
PGEgaHJlZj1cImh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQxOTVcIj5o
dHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTk1PC9hPiBmb3IgbW9yZSBk
ZXRhaWxzLiIpOwotCi1kZWJ1ZygnJyk7Ci0KLXN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Ci0K
LTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9lbmNvZGluZy94bmV4dHN0ZXAtZGVjb2RpbmctZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2VuY29k
aW5nL3huZXh0c3RlcC1kZWNvZGluZy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDM4ODkwKQkoZnJv
bSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9lbmNvZGluZy9jaGFyLWRlY29kaW5nLW1h
Yy1leHBlY3RlZC50eHQ6Mzg4OTApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9l
bmNvZGluZy94bmV4dHN0ZXAtZGVjb2RpbmctZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMTMgQEAKK1RoaXMgdGVzdHMgZGVjb2RpbmcgY2hhcmFjdGVycyBpbiB2YXJpb3Vz
IGNoYXJhY3RlciBzZXRzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBk
ZWNvZGUoJ3gtbmV4dHN0ZXAnLCAnJUUxJykgaXMgJ1UrMDBDNicKKworVGhlIHgtbmV4dHN0ZXAg
dGVzdCBpcyBtZWFudCB0byBlbnN1cmUgdGhhdCB3ZSBzdGlsbCBzdXBwb3J0IGxlZ2FjeSBlbmNv
ZGluZ3MgdGhhdCBhcmUgbm90IHBhcnQgb2YgSUNVIC0gaXQgaXMgZXhwZWN0ZWQgdGhhdCBpdCBm
YWlscyBpbiBvdGhlciBicm93c2Vycywgd2hpY2ggZG8gbm90IHN1cHBvcnQgdGhpcyBwYXJ0aWN1
bGFyIGVuY29kaW5nLiBTZWUgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDE5NSBmb3IgbW9yZSBkZXRhaWxzLgorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3Qv
ZW5jb2RpbmcveG5leHRzdGVwLWRlY29kaW5nLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL2Zhc3QvZW5jb2RpbmcveG5leHRzdGVwLWRlY29kaW5nLmh0bWwJKHJl
dmlzaW9uIDM4ODkwKQkoZnJvbSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9lbmNvZGlu
Zy9jaGFyLWRlY29kaW5nLW1hYy5odG1sOjM4ODkwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2Zhc3QvZW5jb2RpbmcveG5leHRzdGVwLWRlY29kaW5nLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw1MSBAQAorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCJUaGlzIHRl
c3RzIGRlY29kaW5nIGNoYXJhY3RlcnMgaW4gdmFyaW91cyBjaGFyYWN0ZXIgc2V0cy4iKTsKKwor
ZnVuY3Rpb24gaGV4KG51bWJlcikKK3sKKyAgICB2YXIgaGV4RGlnaXQgPSAiMDEyMzQ1Njc4OUFC
Q0RFRiI7CisgICAgdmFyIGhleCA9IGhleERpZ2l0LnN1YnN0cihudW1iZXIgJiAweGYsIDEpOwor
ICAgIHdoaWxlIChudW1iZXIgPiAxNSkgeworICAgICAgICBudW1iZXIgPj49IDQ7CisgICAgICAg
IGhleCA9IGhleERpZ2l0LnN1YnN0cihudW1iZXIgJiAxNSwgMSkgKyBoZXg7CisgICAgfQorICAg
IHJldHVybiBoZXg7Cit9CisKK2Z1bmN0aW9uIGRlY29kZShjaGFyc2V0TmFtZSwgY2hhcmFjdGVy
U2VxdWVuY2UpCit7CisgICAgdmFyIHJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdDsKKyAgICByZXEu
b3BlbignR0VUJywgJ2RhdGE6dGV4dC9wbGFpbiwnICsgY2hhcmFjdGVyU2VxdWVuY2UsIGZhbHNl
KTsKKyAgICByZXEub3ZlcnJpZGVNaW1lVHlwZSgndGV4dC9wbGFpbjsgY2hhcnNldD0iJyArIGNo
YXJzZXROYW1lICsgJyInKTsKKyAgICByZXEuc2VuZCgnJyk7CisgICAgdmFyIGNvZGUgPSBoZXgo
cmVxLnJlc3BvbnNlVGV4dC5jaGFyQ29kZUF0KDApKTsKKyAgICByZXR1cm4gIlUrIiArICgiMDAw
MCIgKyBjb2RlKS5zdWJzdHIoY29kZS5sZW5ndGgsIDQpOworfQorCitmdW5jdGlvbiB0ZXN0RGVj
b2RlKGNoYXJzZXROYW1lLCBjaGFyYWN0ZXJTZXF1ZW5jZSwgdW5pY29kZSkKK3sKKyAgICBzaG91
bGRCZSgiZGVjb2RlKCciICsgY2hhcnNldE5hbWUgKyAiJywgJyIgKyBjaGFyYWN0ZXJTZXF1ZW5j
ZSArICInKSIsICInIiArIHVuaWNvZGUgKyAiJyIpOworfQorCit0ZXN0RGVjb2RlKCd4LW5leHRz
dGVwJywgJyVFMScsICdVKzAwQzYnKTsKK2RlYnVnKCcnKTsKKworZGVidWcoIlRoZSB4LW5leHRz
dGVwIHRlc3QgaXMgbWVhbnQgdG8gZW5zdXJlIHRoYXQgd2Ugc3RpbGwgc3VwcG9ydCBsZWdhY3kg
ZW5jb2RpbmdzIHRoYXQgYXJlIG5vdCBwYXJ0IG9mIElDVSAtIGl0IGlzIGV4cGVjdGVkIHRoYXQg
aXQgZmFpbHMgaW4gb3RoZXIgYnJvd3NlcnMsIHdoaWNoIGRvIG5vdCBzdXBwb3J0IHRoaXMgcGFy
dGljdWxhciBlbmNvZGluZy4gU2VlIDxhIGhyZWY9XCJodHRwOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00MTk1XCI+aHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDE5NTwvYT4gZm9yIG1vcmUgZGV0YWlscy4iKTsKKworZGVidWcoJycpOworCitzdWNjZXNz
ZnVsbHlQYXJzZWQgPSB0cnVlOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZW5jb2RpbmcveG5l
eHRzdGVwLWRlY29kaW5nLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2Zhc3QvZW5jb2RpbmcveG5leHRzdGVwLWRlY29kaW5nLmh0bWwJKHJldmlzaW9uIDM4ODkw
KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZW5jb2RpbmcveG5leHRzdGVwLWRl
Y29kaW5nLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsNiArMiw3IEBACiA8aGVhZD4KIDxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiPgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9m
YXN0L2VuY29kaW5nL3Jlc291cmNlcy9jaGFyLWRlY29kaW5nLXV0aWxzLmpzIj48L3NjcmlwdD4K
IDwvaGVhZD4KIDxib2R5PgogPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CkBAIC0xMCwzMiArMTEs
NiBAQAogCiBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyBkZWNvZGluZyBjaGFyYWN0ZXJzIGluIHZh
cmlvdXMgY2hhcmFjdGVyIHNldHMuIik7CiAKLWZ1bmN0aW9uIGhleChudW1iZXIpCi17Ci0gICAg
dmFyIGhleERpZ2l0ID0gIjAxMjM0NTY3ODlBQkNERUYiOwotICAgIHZhciBoZXggPSBoZXhEaWdp
dC5zdWJzdHIobnVtYmVyICYgMHhmLCAxKTsKLSAgICB3aGlsZSAobnVtYmVyID4gMTUpIHsKLSAg
ICAgICAgbnVtYmVyID4+PSA0OwotICAgICAgICBoZXggPSBoZXhEaWdpdC5zdWJzdHIobnVtYmVy
ICYgMTUsIDEpICsgaGV4OwotICAgIH0KLSAgICByZXR1cm4gaGV4OwotfQotCi1mdW5jdGlvbiBk
ZWNvZGUoY2hhcnNldE5hbWUsIGNoYXJhY3RlclNlcXVlbmNlKQotewotICAgIHZhciByZXEgPSBu
ZXcgWE1MSHR0cFJlcXVlc3Q7Ci0gICAgcmVxLm9wZW4oJ0dFVCcsICdkYXRhOnRleHQvcGxhaW4s
JyArIGNoYXJhY3RlclNlcXVlbmNlLCBmYWxzZSk7Ci0gICAgcmVxLm92ZXJyaWRlTWltZVR5cGUo
J3RleHQvcGxhaW47IGNoYXJzZXQ9IicgKyBjaGFyc2V0TmFtZSArICciJyk7Ci0gICAgcmVxLnNl
bmQoJycpOwotICAgIHZhciBjb2RlID0gaGV4KHJlcS5yZXNwb25zZVRleHQuY2hhckNvZGVBdCgw
KSk7Ci0gICAgcmV0dXJuICJVKyIgKyAoIjAwMDAiICsgY29kZSkuc3Vic3RyKGNvZGUubGVuZ3Ro
LCA0KTsKLX0KLQotZnVuY3Rpb24gdGVzdERlY29kZShjaGFyc2V0TmFtZSwgY2hhcmFjdGVyU2Vx
dWVuY2UsIHVuaWNvZGUpCi17Ci0gICAgc2hvdWxkQmUoImRlY29kZSgnIiArIGNoYXJzZXROYW1l
ICsgIicsICciICsgY2hhcmFjdGVyU2VxdWVuY2UgKyAiJykiLCAiJyIgKyB1bmljb2RlICsgIici
KTsKLX0KLQogdGVzdERlY29kZSgneC1uZXh0c3RlcCcsICclRTEnLCAnVSswMEM2Jyk7CiBkZWJ1
ZygnJyk7CiAK
</data>
<flag name="review"
          id="12021"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>