<?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>75824</bug_id>
          
          <creation_ts>2012-01-08 21:37:09 -0800</creation_ts>
          <short_desc>check-webkit-style should warn about missing svn:mime-type for png files</short_desc>
          <delta_ts>2012-06-18 23:50:58 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>bank</cc>
    
    <cc>cjerdonek</cc>
    
    <cc>darin</cc>
    
    <cc>dpranke</cc>
    
    <cc>eric</cc>
    
    <cc>fmalita</cc>
    
    <cc>kkristof</cc>
    
    <cc>levin</cc>
    
    <cc>ojan</cc>
    
    <cc>ossy</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>webkit-sed</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>531957</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-01-08 21:37:09 -0800</bug_when>
    <thetext>check-webkit-style should warn about missing svn:mime-type for png files</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531982</commentid>
    <comment_count>1</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-01-08 22:38:26 -0800</bug_when>
    <thetext>I think we should also put this check into the pre-commit hook.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565762</commentid>
    <comment_count>2</comment_count>
      <attachid>129058</attachid>
    <who name="Balazs Ankes">bank</who>
    <bug_when>2012-02-27 09:59:21 -0800</bug_when>
    <thetext>Created attachment 129058
patch (work in progress)

I made a png.py file which check the ~/.subversion/config file the auto propset and svn:mime-type=image/png are enabled (based on ttp://trac.webkit.org/wiki/UsingGitWithWebKit Misc. Tips and Tricks) because in git svn there is no propset command. Only auto propset can set the mimetype.
I have some question.
- Is it enough to check the config file?
- I noticed check-webkit-style doesn&apos;t support non-text files. I tried to solve the task elegant, but I think I couldn&apos;t. What should I do?
- If there is a style error related with pngs I want to add to the global error counter. How can I do this nicely?
Any ideas that should be implement?

(I know I have to write unit tests.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565839</commentid>
    <comment_count>3</comment_count>
      <attachid>129058</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-02-27 11:16:52 -0800</bug_when>
    <thetext>Comment on attachment 129058
patch (work in progress)

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

I think checking to see if the user&apos;s subversion config file is correct is useful, however, that doesn&apos;t actually fix this specific bug where certain files might not have the right svn properties set.  I.e., this should probably be a separate bug.

&gt; Tools/Scripts/webkitpy/style/checkers/png.py:25
&gt;  &quot;&quot;&quot;Supports checking WebKit style in png files.&quot;&quot;&quot;

This diff is weird.  I don&apos;t see png.py in the tree currently.

&gt; Tools/Scripts/webkitpy/style/checkers/png.py:42
&gt; +            for line in open(os.path.expanduser(&quot;~&quot;) + &quot;/.subversion/config&quot;, &apos;r&apos;).readlines():

Does this work with Windows python?  Does this work with Windows svn?

&gt; Tools/Scripts/webkitpy/style/patchreader.py:65
&gt; +                _log.debug(&quot;Using class: &quot; + checker.__class__.__name__)

I would remove this log line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566510</commentid>
    <comment_count>4</comment_count>
    <who name="Balazs Ankes">bank</who>
    <bug_when>2012-02-28 02:04:19 -0800</bug_when>
    <thetext>(In reply to comment #3)

Thank you the answer.

&gt; (From update of attachment 129058 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=129058&amp;action=review
&gt; 
&gt; I think checking to see if the user&apos;s subversion config file is correct is useful, however, that doesn&apos;t actually fix this specific bug where certain files might not have the right svn properties set.  I.e., this should probably be a separate bug.
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/style/checkers/png.py:25
&gt; &gt;  &quot;&quot;&quot;Supports checking WebKit style in png files.&quot;&quot;&quot;
&gt; 
&gt; This diff is weird.  I don&apos;t see png.py in the tree currently.
Because it&apos;s a new file, I added to my local git repo.
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/style/checkers/png.py:42
&gt; &gt; +            for line in open(os.path.expanduser(&quot;~&quot;) + &quot;/.subversion/config&quot;, &apos;r&apos;).readlines():
&gt; 
&gt; Does this work with Windows python?  Does this work with Windows svn?
Good questions, I will check these.
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/style/patchreader.py:65
&gt; &gt; +                _log.debug(&quot;Using class: &quot; + checker.__class__.__name__)
&gt; 
&gt; I would remove this log line.
Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574899</commentid>
    <comment_count>5</comment_count>
      <attachid>131040</attachid>
    <who name="Balazs Ankes">bank</who>
    <bug_when>2012-03-09 08:16:12 -0800</bug_when>
    <thetext>Created attachment 131040
proposed fix

This is the improved patch based on the comments and other observations.
Some note:
- I made this patch with this command: &quot;git diff --binary --no-ext-diff --full-index --no-renames e69b1d148665f162528f0b816a409119f1aef20c --&quot; if it&apos;s wrong, please tell a good one. (The check-webkit-style use this command.)
- I can&apos;t test the Windows part of the png.py.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574927</commentid>
    <comment_count>6</comment_count>
      <attachid>131040</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2012-03-09 09:00:34 -0800</bug_when>
    <thetext>Comment on attachment 131040
proposed fix

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

I have some concerns/questions but this may be approvable if someone else feels confident in it (or with appropriate explanations).

&gt; Tools/Scripts/webkitpy/style/checker.py:498
&gt; +            return False

Why was this needed for png but no other type?

&gt; Tools/Scripts/webkitpy/style/checkers/png.py:29
&gt; +import sys

sort

&gt; Tools/Scripts/webkitpy/style/checkers/png.py:50
&gt; +                print &quot;There is no ~/.subversion/config&quot;

I don&apos;t think we print from these checkers.

Also this won&apos;t get flagged as an error at all. Isn&apos;t that incorrect given the current code?

&gt; Tools/Scripts/webkitpy/style/checkers/png.py:51
&gt; +                #return 1

Please remove the commented out code.

&gt; Tools/Scripts/webkitpy/style/checkers/png.py:70
&gt; +        if errorstr != &quot;&quot;:

Just

if errorstr:

&gt; Tools/Scripts/webkitpy/style/checkers/png.py:71
&gt; +            self.handle_style_error(0, &apos;image/png&apos;, 5, errorstr)

I thought it would look at the diff to determine this. I thought you could set the prop without it being in the config file.

Hopefully someone more familiar with this will look at this part of the code.

&gt; Tools/Scripts/webkitpy/style/checkers/png_unittest.py:41
&gt; +        self.assertEquals(checker.handle_style_error, mock_handle_style_error)

This doesn&apos;t look like it verifies that the checker actually finds the error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574928</commentid>
    <comment_count>7</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-03-09 09:04:15 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; &gt; Tools/Scripts/webkitpy/style/checkers/png.py:71
&gt; &gt; +            self.handle_style_error(0, &apos;image/png&apos;, 5, errorstr)
&gt; 
&gt; I thought it would look at the diff to determine this. I thought you could set the prop without it being in the config file.

You can if you works with svn, but you can&apos;t if you&apos;re a git-svn user.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574932</commentid>
    <comment_count>8</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2012-03-09 09:07:23 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; &gt; Tools/Scripts/webkitpy/style/checkers/png.py:71
&gt; &gt; &gt; +            self.handle_style_error(0, &apos;image/png&apos;, 5, errorstr)
&gt; &gt; 
&gt; &gt; I thought it would look at the diff to determine this. I thought you could set the prop without it being in the config file.
&gt; 
&gt; You can if you works with svn, but you can&apos;t if you&apos;re a git-svn user.

Interesting.  Does this mean that this check will never catch anything for patches put up here by git users? (As long as the style checker machine is set-up correctly and runs git.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574936</commentid>
    <comment_count>9</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-03-09 09:13:23 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; (In reply to comment #6)
&gt; &gt; &gt; &gt; Tools/Scripts/webkitpy/style/checkers/png.py:71
&gt; &gt; &gt; &gt; +            self.handle_style_error(0, &apos;image/png&apos;, 5, errorstr)
&gt; &gt; &gt; 
&gt; &gt; &gt; I thought it would look at the diff to determine this. I thought you could set the prop without it being in the config file.
&gt; &gt; 
&gt; &gt; You can if you works with svn, but you can&apos;t if you&apos;re a git-svn user.
&gt; 
&gt; Interesting.  Does this mean that this check will never catch anything for patches put up here by git users? (As long as the style checker machine is set-up correctly and runs git.)

As far as I know svn:mime-type settings aren&apos;t in the patches. But you have 
to setup your svn config correctly on the machine where you commit from.

If you run check-webkit-style before committing it will warn you if your 
svn config is incorrect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576004</commentid>
    <comment_count>10</comment_count>
    <who name="Balazs Ankes">bank</who>
    <bug_when>2012-03-12 01:48:12 -0700</bug_when>
    <thetext>(In reply to comment #6)

&gt; &gt; Tools/Scripts/webkitpy/style/checker.py:498
&gt; &gt; +            return False
&gt; 
&gt; Why was this needed for png but no other type?
Because that function get this parameter:
Tools/Scripts/webkitpy/style/checker.py:312
_SKIPPED_FILES_WITHOUT_WARNING = [
    &quot;LayoutTests&quot; + os.path.sep,
    ]
and pngs are in LayoutTests folder.

I considered your suggestions, thank you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576205</commentid>
    <comment_count>11</comment_count>
      <attachid>131040</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2012-03-12 09:55:35 -0700</bug_when>
    <thetext>Comment on attachment 131040
proposed fix

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

&gt; Tools/Scripts/webkitpy/style/checker.py:320
&gt; +    &apos;png&apos;,

Sort.

&gt; Tools/Scripts/webkitpy/style/checker.py:484
&gt; +    PNG = 9

Sort.

&gt;&gt; Tools/Scripts/webkitpy/style/checkers/png.py:29
&gt;&gt; +import sys
&gt; 
&gt; sort

sort.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576272</commentid>
    <comment_count>12</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-03-12 10:51:48 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; Interesting.  Does this mean that this check will never catch anything for patches put up here by git users? (As long as the style checker machine is set-up correctly and runs git.)
&gt; 
&gt; As far as I know svn:mime-type settings aren&apos;t in the patches. But you have 
&gt; to setup your svn config correctly on the machine where you commit from.
&gt; 
&gt; If you run check-webkit-style before committing it will warn you if your 
&gt; svn config is incorrect.

Right, this is what I was saying in comment #3.  For git users, this is the best you can do.  For svn users, it would be better to actually check the properties of png files (although checking the config file doesn&apos;t hurt either).

I thought this bug was for the svn user case, but this seems like a reasonable first step.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576274</commentid>
    <comment_count>13</comment_count>
      <attachid>131040</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-03-12 10:53:32 -0700</bug_when>
    <thetext>Comment on attachment 131040
proposed fix

It might be a bit spammy to run this check on every png file since it&apos;ll emit the same error for every png file (we&apos;re not actually checking the png file).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582896</commentid>
    <comment_count>14</comment_count>
      <attachid>132787</attachid>
    <who name="Balazs Ankes">bank</who>
    <bug_when>2012-03-20 03:19:24 -0700</bug_when>
    <thetext>Created attachment 132787
proposed fix

Improved working based on comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582900</commentid>
    <comment_count>15</comment_count>
    <who name="Balazs Ankes">bank</who>
    <bug_when>2012-03-20 03:25:08 -0700</bug_when>
    <thetext>I couldn&apos;t test the svn and windows parts of code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583170</commentid>
    <comment_count>16</comment_count>
      <attachid>132787</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-03-20 10:01:18 -0700</bug_when>
    <thetext>Comment on attachment 132787
proposed fix

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

&gt; Tools/Scripts/webkitpy/style/checker.py:482
&gt;      JSON = 3
&gt; +    PNG = 9
&gt;      PYTHON = 4
&gt;      TEXT = 5
&gt;      WATCHLIST = 6

Please re-number these.

&gt; Tools/Scripts/webkitpy/style/checkers/png.py:29
&gt; +import re
&gt; +import sys
&gt; +import os

Sort.

&gt; Tools/Scripts/webkitpy/style/checkers/png.py:44
&gt; +        self.file_path = file_path
&gt; +        self.handle_style_error = handle_style_error
&gt; +        self.fs = filesystem or FileSystem()
&gt; +        self.det = scm or SCMDetector(self.fs, Executive()).detect_scm_system(self.fs.getcwd())

Member variables only used by the class should be prefixed with _.  I think that applies to all of these.  Also, self._detector or self._scm_detector instead of self.det.

&gt; Tools/Scripts/webkitpy/style/checkers/png.py:53
&gt; +        try:
&gt; +            detection = self.det.display_name()
&gt; +        except:

Do we need this try/except block?  When would this fail?

&gt; Tools/Scripts/webkitpy/style/checkers/png.py:56
&gt; +        if(detection == &quot;git&quot;):

Remove the ()s

&gt; Tools/Scripts/webkitpy/style/checkers/png.py:59
&gt; +                    config_file_path = self.fs.expanduser(&quot;~&quot;) + &quot;/.subversion/config&quot;

fs.join

&gt; Tools/Scripts/webkitpy/style/checkers/png.py:67
&gt; +                    config_file_path = os.environ[&apos;APPDATA&apos;] + &quot;\Subversion\config&quot;

fs.join

&gt; Tools/Scripts/webkitpy/style/checkers/png.py:72
&gt; +                    config_file = self.fs.open_text_file_for_reading(config_file_path)
&gt; +                except IOError:
&gt; +                    errorstr = &quot;There is no &quot; + config_file_path
&gt; +                    self.handle_style_error(0, &apos;image/png&apos;, 5, errorstr)
&gt; +                    return

This is the same as lines 60-64.  We can pull it out of the if.

&gt; Tools/Scripts/webkitpy/style/checkers/png.py:75
&gt; +            for line in config_file.readlines():
&gt; +                linenumber += 1

for linenumber, line in enumerate(config_file.readlines()):

&gt; Tools/Scripts/webkitpy/style/checkers/png.py:77
&gt; +                if match and str(match.group(0))[0] != &quot;e&quot;:

str() is unnecessary because match.group(0) is already a string.

&gt; Tools/Scripts/webkitpy/style/checkers/png.py:87
&gt; +        if(detection == &quot;svn&quot;):

Remove the ()s and make this an elif.

&gt; Tools/Scripts/webkitpy/style/checkers/png.py:89
&gt; +            if(prop_get != &quot;image/png&quot;):

Remove the ()s.

&gt; Tools/Scripts/webkitpy/style/checkers/png_unittest.py:57
&gt; +        scm = MockSCMDetector(&apos;svn&apos;)

Can we add some test cases for git?  For example, a test case with each of the following:

enable-auto-props = yes

#enable-auto-props = yes

enable-auto-props = yes
#enable-auto-props = yes

#enable-auto-props = yes
enable-auto-props = yes

enable-auto-props = no

&gt; Tools/Scripts/webkitpy/style/patchreader.py:60
&gt; +        call_only_once = 1

Use True instead of 1.

&gt; Tools/Scripts/webkitpy/style/patchreader.py:69
&gt; +                    if(call_only_once):

Remove the ()s.

&gt; Tools/Scripts/webkitpy/style/patchreader.py:73
&gt; +                        if(det.display_name() == &quot;git&quot;):

Remove the ()s.

&gt; Tools/Scripts/webkitpy/style/patchreader.py:74
&gt; +                            call_only_once = 0

call_only_once = False</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584273</commentid>
    <comment_count>17</comment_count>
    <who name="Balazs Ankes">bank</who>
    <bug_when>2012-03-21 10:13:09 -0700</bug_when>
    <thetext>(In reply to comment #16)

&gt; &gt; Tools/Scripts/webkitpy/style/checkers/png.py:53
&gt; &gt; +        try:
&gt; &gt; +            detection = self.det.display_name()
&gt; &gt; +        except:
&gt; 
&gt; Do we need this try/except block?  When would this fail?
I thought it&apos;s necessary because the detection can get None value and that case display_name() won&apos;t working and throw error. (/Tools/Scripts/webkitpy/common/checkout/scm/detection.py, def detect_scm_system(self, path, patch_directories=None):)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585327</commentid>
    <comment_count>18</comment_count>
      <attachid>133272</attachid>
    <who name="Balazs Ankes">bank</who>
    <bug_when>2012-03-22 08:36:33 -0700</bug_when>
    <thetext>Created attachment 133272
proposed fix

fresh version
The windows and the svn parts of the code are not tested! (I&apos;m working on linux and git)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585498</commentid>
    <comment_count>19</comment_count>
      <attachid>133272</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-03-22 11:13:46 -0700</bug_when>
    <thetext>Comment on attachment 133272
proposed fix

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

&gt; Tools/Scripts/webkitpy/style/checkers/png.py:69
&gt; +                match = re.search(&quot;^\s*.*enable-auto-props = (yes|no)&quot;, line)
&gt; +                if (match and match.group(0)[0] != &quot;e&quot; and not there_is_enable_line) or (match and match.group(0).endswith(&quot;no&quot;)):
&gt; +                    errorstr_autoprop = &quot;Have to enable auto props in the subversion config file (&quot; + config_file_path + &quot;, line:&quot; + str(linenumber + 1) + &quot;). &quot;

Can we just look for &quot;^\s*enable-auto-props\s*=\s*yes&quot;? If we don&apos;t find the line, we give this error message. I think matching commented out lines is making the logic unnecessarily complex.

&gt; Tools/Scripts/webkitpy/style/checkers/png.py:76
&gt; +                match = re.search(&quot;^\s*.*\*\.png = svn:mime-type=image/png&quot;, line)
&gt; +                if match and match.group(0)[0] != &quot;*&quot; and not there_is_png_line:

Can we just search for &quot;^\s*\*\.png\s*=\s*svn:mime-type=image/png&quot;?  If we don&apos;t find the line, we give the png error message.

&gt; Tools/Scripts/webkitpy/style/checkers/png.py:96
&gt; +        if self._platform.startswith(&apos;linux&apos;) or self._platform.startswith(&apos;darwin&apos;):
&gt; +            config_file_path = self._fs.join(self._fs.expanduser(&quot;~&quot;) + &quot;/&quot;, &quot;.subversion/config&quot;)

Nit: You don&apos;t need the + &quot;/&quot;, os.path.join adds the path separator for you.

&gt; Tools/Scripts/webkitpy/style/checkers/png.py:98
&gt; +            config_file_path = self._fs.join(os.environ[&apos;APPDATA&apos;] + &quot;\\&quot;, &quot;Subversion\config&quot;)

Nit: You don&apos;t need the + &quot;\\&quot;, os.path.join adds the path separator for you.

&gt; Tools/Scripts/webkitpy/style/checkers/png_unittest.py:50
&gt; +        def mock_handle_style_error(line_number, category, confidence,
&gt; +                                     message):

Nit: Indent is weird.  I would just not wrap here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586246</commentid>
    <comment_count>20</comment_count>
      <attachid>133465</attachid>
    <who name="Balazs Ankes">bank</who>
    <bug_when>2012-03-23 05:23:31 -0700</bug_when>
    <thetext>Created attachment 133465
proposed fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586499</commentid>
    <comment_count>21</comment_count>
      <attachid>133465</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-03-23 11:08:39 -0700</bug_when>
    <thetext>Comment on attachment 133465
proposed fix

It would be great if someone could test this on win and mac before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586503</commentid>
    <comment_count>22</comment_count>
      <attachid>133465</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-03-23 11:11:36 -0700</bug_when>
    <thetext>Comment on attachment 133465
proposed fix

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

&gt; Tools/Scripts/webkitpy/style/checkers/png.py:86
&gt; +
&gt; +        if detection == &quot;svn&quot;:

nit: elif</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588887</commentid>
    <comment_count>23</comment_count>
    <who name="Balazs Ankes">bank</who>
    <bug_when>2012-03-27 07:52:33 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; (From update of attachment 133465 [details])
&gt; It would be great if someone could test this on win and mac before landing.

It has been tested, it works good on win and mac also.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588915</commentid>
    <comment_count>24</comment_count>
    <who name="Kristóf Kosztyó">kkristof</who>
    <bug_when>2012-03-27 08:17:36 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; (In reply to comment #21)
&gt; &gt; (From update of attachment 133465 [details] [details])
&gt; &gt; It would be great if someone could test this on win and mac before landing.
&gt; 
&gt; It has been tested, it works good on win and mac also.

It has been Landed in r112770 http://trac.webkit.org/changeset/112270

And I apologies about this line: &quot;Reviewed by NOBODY Tony Chang.&quot; :(
Next time I will be far more careful. Sorry again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590380</commentid>
    <comment_count>25</comment_count>
      <attachid>133465</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-03-28 13:51:53 -0700</bug_when>
    <thetext>Comment on attachment 133465
proposed fix

Sounds like this was already committed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590395</commentid>
    <comment_count>26</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-03-28 13:58:13 -0700</bug_when>
    <thetext>Do we need to fix something on the style bot?
https://bugs.webkit.org/show_bug.cgi?id=81936#c13

We obviously don&apos;t want it failing like this.  It uses a Git checkout.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590892</commentid>
    <comment_count>27</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-03-29 00:04:14 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; Do we need to fix something on the style bot?
&gt; https://bugs.webkit.org/show_bug.cgi?id=81936#c13
&gt; 
&gt; We obviously don&apos;t want it failing like this.  It uses a Git checkout.

Yes, it isn&apos;t good if it fails on the style bot. This warning is to warn git users to set their subversion config correctly before landing patches. (with git-svn). Because if they don&apos;t do it, mime-type of png files won&apos;t be image/png. This is the only way for git users to committ png files with correct mime-type.

Could you set the style bot, please?
- Have to enable auto props in the subversion config file (/home/ubuntu/.subversion/config &quot;enable-auto-props = yes&quot;). 
- Have to set the svn:mime-type in the subversion config file (/home/ubuntu/.subversion/config &quot;*.png = svn:mime-type=image/png&quot;)

These options are commented by default, I think you only have to uncomment them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590896</commentid>
    <comment_count>28</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-03-29 00:07:28 -0700</bug_when>
    <thetext>Oh, after https://bugs.webkit.org/show_bug.cgi?id=81936#c17 everything should work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>593746</commentid>
    <comment_count>29</comment_count>
    <who name="Florin Malita">fmalita</who>
    <bug_when>2012-04-02 13:23:20 -0700</bug_when>
    <thetext>This causes .png removal failures: https://bugs.webkit.org/show_bug.cgi?id=82933</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651775</commentid>
    <comment_count>30</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-06-18 15:07:13 -0700</bug_when>
    <thetext>This check is really annoying because it doesn&apos;t solve the problem for me:

LayoutTests/platform/chromium-win/fast/multicol/progression-reverse-expected.png:0:  Set the svn:mime-type property (svn propset svn:mime-type image/png LayoutTests/platform/chromium-win/fast/multicol/progression-reverse-expected.png).  [image/png] [5]
LayoutTests/platform/chromium-mac/fast/multicol/progression-reverse-expected.png:0:  Set the svn:mime-type property (svn propset svn:mime-type image/png LayoutTests/platform/chromium-mac/fast/multicol/progression-reverse-expected.png).  [image/png] [5]
LayoutTests/platform/chromium-mac-snowleopard/fast/multicol/progression-reverse-expected.png:0:  Set the svn:mime-type property (svn propset svn:mime-type image/png LayoutTests/platform/chromium-mac-snowleopard/fast/multicol/progression-reverse-expected.png).  [image/png] [5]
LayoutTests/platform/chromium-linux/fast/multicol/progression-reverse-expected.png:0:  Set the svn:mime-type property (svn propset svn:mime-type image/png LayoutTests/platform/chromium-linux/fast/multicol/progression-reverse-expected.png).  [image/png] [5]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652050</commentid>
    <comment_count>31</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-06-18 22:50:54 -0700</bug_when>
    <thetext>(In reply to comment #30)
&gt; This check is really annoying because it doesn&apos;t solve the problem for me:
&gt; 
&gt; LayoutTests/platform/chromium-win/fast/multicol/progression-reverse-expected.png:0:  Set the svn:mime-type property (svn propset svn:mime-type image/png LayoutTests/platform/chromium-win/fast/multicol/progression-reverse-expected.png).  [image/png] [5]
&gt; LayoutTests/platform/chromium-mac/fast/multicol/progression-reverse-expected.png:0:  Set the svn:mime-type property (svn propset svn:mime-type image/png LayoutTests/platform/chromium-mac/fast/multicol/progression-reverse-expected.png).  [image/png] [5]
&gt; LayoutTests/platform/chromium-mac-snowleopard/fast/multicol/progression-reverse-expected.png:0:  Set the svn:mime-type property (svn propset svn:mime-type image/png LayoutTests/platform/chromium-mac-snowleopard/fast/multicol/progression-reverse-expected.png).  [image/png] [5]
&gt; LayoutTests/platform/chromium-linux/fast/multicol/progression-reverse-expected.png:0:  Set the svn:mime-type property (svn propset svn:mime-type image/png LayoutTests/platform/chromium-linux/fast/multicol/progression-reverse-expected.png).  [image/png] [5]

check-webkit-style won&apos;t solve your problem, it only warns you if you do something wrong. We should set svn mimetype for all png files - https://lists.webkit.org/pipermail/webkit-dev/2012-March/019783.html , but you didn&apos;t. That&apos;s why check-webkit-style warned you and suggested what to do: svn propset svn:mime-type image/png LayoutTests/platform/chromium-mac-snowleopard/fast/multicol/progression-reverse-expected.png )

But https://bugs.webkit.org/show_bug.cgi?id=75825 will do it automatically once the fix is landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652114</commentid>
    <comment_count>32</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-06-18 23:50:58 -0700</bug_when>
    <thetext>Thanks.  I will wait patiently for Bug 75825.  :)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129058</attachid>
            <date>2012-02-27 09:59:21 -0800</date>
            <delta_ts>2012-03-09 08:16:12 -0800</delta_ts>
            <desc>patch (work in progress)</desc>
            <filename>2012-02-27.patch</filename>
            <type>text/plain</type>
            <size>4615</size>
            <attacher name="Balazs Ankes">bank</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiMGUy
Y2U4Li42MGZhZTY3IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTItMDItMjcgIEJhbGF6cyBBbmtlcyAgPGJhbmtA
aW5mLnUtc3plZ2VkLmh1PgorCisgICAgICAgIEFkZCAqLnBuZyBzdXBwb3J0IGZvciBjaGVjay13
ZWJraXQtc3R5bGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTc1ODI0CisgICAgICAgIEltcGxlbWVudGVkIGEgcG5nLnB5IGZpbGUgd2hpY2ggY2hlY2sg
dGhlIH4vLnN1YnZlcnNpb24vY29uZmlnIGZpbGUgdGhlIGF1dG8gcHJvcHNldCBhbmQKKyAgICAg
ICAgc3ZuOm1pbWUtdHlwZT1pbWFnZS9wbmcgYXJlIGVuYWJsZWQgKGJhc2VkIG9uIGh0dHA6Ly90
cmFjLndlYmtpdC5vcmcvd2lraS9Vc2luZ0dpdFdpdGhXZWJLaXQKKyAgICAgICAgTWlzYy4gVGlw
cyBhbmQgVHJpY2tzKS4gSSBjYWxsIGl0IGluIHBhdGNocmVhZGVyLnB5LgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9z
dHlsZS9jaGVja2Vycy9wbmcucHk6IEFkZGVkLgorICAgICAgICAoUE5HQ2hlY2tlcik6CisgICAg
ICAgIChQTkdDaGVja2VyLl9faW5pdF9fKToKKyAgICAgICAgKFBOR0NoZWNrZXIuY2hlY2spOgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvZmlsZXJlYWRlci5weToKKyAgICAgICAg
KFRleHRGaWxlUmVhZGVyLmNvdW50X2RlbGV0ZV9vbmx5X2ZpbGUpOgorICAgICAgICAoVGV4dEZp
bGVSZWFkZXIpOgorICAgICAgICAoVGV4dEZpbGVSZWFkZXIuaW5jcmVtZW50X2ZpbGVfY291bnQp
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvcGF0Y2hyZWFkZXIucHk6CisgICAg
ICAgIChQYXRjaFJlYWRlci5jaGVjayk6CisKIDIwMTItMDItMTIgIEthbmdpbCBIYW4gIDxrYW5n
aWwuaGFuQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdW0RSVF0gSW1wbGVtZW50IHpvb21Q
YWdle0luLE91dH0gYW5kIHRleHRab29te0luLE91dH0gZXZlbnRzLgpkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9wbmcucHkgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3BuZy5weQppbmRleCAyNmZhOGViLi43MWVjYmJmIDEw
MDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3BuZy5weQor
KysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3BuZy5weQpAQCAtMjUs
MTQgKzI1LDMwIEBACiAiIiJTdXBwb3J0cyBjaGVja2luZyBXZWJLaXQgc3R5bGUgaW4gcG5nIGZp
bGVzLiIiIgogCiBpbXBvcnQgcmUKK2ltcG9ydCBvcy5wYXRoCiAKIAogY2xhc3MgUE5HQ2hlY2tl
cihvYmplY3QpOgogICAgICIiIkNoZWNrIHN2bjptaW1lLXR5cGUgZm9yIGNoZWNraW5nIHN0eWxl
IiIiCi0gICAgCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVfcGF0aCwgaGFuZGxlX3N0eWxl
X2Vycm9yKToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlX3BhdGgpOgogICAgICAgICBz
ZWxmLl9maWxlX3BhdGggPSBmaWxlX3BhdGgKLSAgICAgICAgc2VsZi5faGFuZGxlX3N0eWxlX2Vy
cm9yID0gaGFuZGxlX3N0eWxlX2Vycm9yCiAKLSAgICBkZWYgY2hlY2soKToKLSAgICAgICAgcHJp
bnQgInVzaW5nIHBuZy5weSIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisgICAgZGVmIGNo
ZWNrKHNlbGYpOgorICAgICAgICBsaW5lbnVtYmVyID0gMAorICAgICAgICBlcnJvcnN0ciA9ICIi
CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGZvciBsaW5lIGluIG9wZW4ob3MucGF0aC5leHBh
bmR1c2VyKCJ+IikgKyAiLy5zdWJ2ZXJzaW9uL2NvbmZpZyIsICdyJykucmVhZGxpbmVzKCk6Cisg
ICAgICAgICAgICAgICAgbGluZW51bWJlciArPSAxCisgICAgICAgICAgICAgICAgbWF0Y2ggPSBy
ZS5zZWFyY2goIl5ccyouKmVuYWJsZS1hdXRvLXByb3BzID0geWVzIiwgbGluZSkKKyAgICAgICAg
ICAgICAgICBpZiBtYXRjaCBhbmQgbm90IHN0cihtYXRjaC5ncm91cCgwKSlbMF0gPT0gImUiOgor
ICAgICAgICAgICAgICAgICAgICBlcnJvcnN0ciArPSAiXHRIYXZlIHRvIGVuYWJsZS9yZW1vdmUg
dGhlIGNvbW1lbnQgYXV0byBwcm9wcyBpbiBsaW5lICIgKyBzdHIobGluZW51bWJlcikKKyAgICAg
ICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBtYXRjaCA9IHJlLnNlYXJj
aCgiXlxzKi4qXCpcLnBuZyA9IHN2bjptaW1lLXR5cGU9aW1hZ2UvcG5nIiwgbGluZSkKKyAgICAg
ICAgICAgICAgICBpZiBtYXRjaCBhbmQgbm90IHN0cihtYXRjaC5ncm91cCgwKSlbMF0gPT0gIioi
OgorICAgICAgICAgICAgICAgICAgICBlcnJvcnN0ciArPSAiXHRIYXZlIHRvIHNldC9yZW1vdmUg
dGhlIGNvbW1lbnQgdGhlIHN2bjptaW1lLXR5cGUgIiArIHN0cihsaW5lbnVtYmVyKQorICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgaWYgbm90IGVycm9yc3RyID09ICIi
OgorICAgICAgICAgICAgICAgIHByaW50IHN0cihzZWxmLl9maWxlX3BhdGgpICsgIlx0VGhlIGF1
dG8gc2V0IG9mIHN2bjptaW1lLXR5cGUgaXMgbm90IHNldCBpbiB0aGUgfi8uc3VidmVyc2lvbi9j
b25maWcgZmlsZS4iICsgZXJyb3JzdHIKKyAgICAgICAgZXhjZXB0IElPRXJyb3I6CisgICAgICAg
ICAgICBwcmludCAiVGhlcmUgaXMgbm8gfi8uc3VidmVyc2lvbi9jb25maWciCmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2ZpbGVyZWFkZXIucHkgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3N0eWxlL2ZpbGVyZWFkZXIucHkKaW5kZXggMTE4MWFkNC4uM2I4YzRmMSAx
MDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9maWxlcmVhZGVyLnB5Cisr
KyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvZmlsZXJlYWRlci5weQpAQCAtMTUyLDMg
KzE1Miw3IEBAIGNsYXNzIFRleHRGaWxlUmVhZGVyKG9iamVjdCk6CiAgICAgICAgIHB1cnBvc2Us
IHdlIGp1c3QgY291bnQgdXAgdGhlIG51bWJlciBvZiBzdWNoIGZpbGVzLgogICAgICAgICAiIiIK
ICAgICAgICAgc2VsZi5kZWxldGVfb25seV9maWxlX2NvdW50ICs9IDEKKworICAgIGRlZiBpbmNy
ZW1lbnRfZmlsZV9jb3VudChzZWxmKToKKyAgICAgICAgIiIiVGhpcyBpcyBhIGhhY2sgZm9yIG5v
bi10ZXh0IGZpbGVzIGNvdW50aW5nIiIiCisgICAgICAgIHNlbGYuZmlsZV9jb3VudCArPSAxCmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL3BhdGNocmVhZGVyLnB5IGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9wYXRjaHJlYWRlci5weQppbmRleCA2YWMzMmRl
Li5iMmY1MGQ4IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL3BhdGNo
cmVhZGVyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvcGF0Y2hyZWFkZXIu
cHkKQEAgLTI5LDggKzI5LDEwIEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIGltcG9ydCBsb2dnaW5nCitp
bXBvcnQgcmUKIAogZnJvbSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuZGlmZl9wYXJzZXIgaW1w
b3J0IERpZmZQYXJzZXIKK2Zyb20gY2hlY2tlcnMucG5nIGltcG9ydCBQTkdDaGVja2VyCiAKIAog
X2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQpAQCAtNTYsNiArNTgsMTUgQEAgY2xh
c3MgUGF0Y2hSZWFkZXIob2JqZWN0KToKICAgICAgICAgICAgIGxpbmVfbnVtYmVycyA9IGRpZmZf
ZmlsZS5hZGRlZF9vcl9tb2RpZmllZF9saW5lX251bWJlcnMoKQogICAgICAgICAgICAgX2xvZy5k
ZWJ1ZygnRm91bmQgJXMgbmV3IG9yIG1vZGlmaWVkIGxpbmVzIGluOiAlcycgJSAobGVuKGxpbmVf
bnVtYmVycyksIHBhdGgpKQogCisgICAgICAgICAgICBtYXRjaCA9IHJlLnNlYXJjaCgiXHMqcG5n
JCIsIHBhdGgpCisgICAgICAgICAgICBpZiBtYXRjaDoKKyAgICAgICAgICAgICAgICBjaGVja2Vy
ID0gUE5HQ2hlY2tlcihwYXRoKQorICAgICAgICAgICAgICAgIF9sb2cuZGVidWcoIkNoZWNraW5n
IHN0eWxlOiAiICsgcGF0aCkKKyAgICAgICAgICAgICAgICBfbG9nLmRlYnVnKCJVc2luZyBjbGFz
czogIiArIGNoZWNrZXIuX19jbGFzc19fLl9fbmFtZV9fKQorICAgICAgICAgICAgICAgIHNlbGYu
X3RleHRfZmlsZV9yZWFkZXIuaW5jcmVtZW50X2ZpbGVfY291bnQoKQorICAgICAgICAgICAgICAg
IGNoZWNrZXIuY2hlY2soKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKICAgICAgICAgICAg
IGlmIG5vdCBsaW5lX251bWJlcnM6CiAgICAgICAgICAgICAgICAgIyBEb24ndCBjaGVjayBmaWxl
cyB3aGljaCBjb250YWluIG9ubHkgZGVsZXRlZCBsaW5lcwogICAgICAgICAgICAgICAgICMgYXMg
dGhleSBjYW4gbmV2ZXIgYWRkIHN0eWxlIGVycm9ycy4gSG93ZXZlciwgbWFyayB0aGVtIGFzCg==
</data>
<flag name="review"
          id="131614"
          type_id="1"
          status="-"
          setter="tony"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131040</attachid>
            <date>2012-03-09 08:16:12 -0800</date>
            <delta_ts>2012-03-20 03:19:24 -0700</delta_ts>
            <desc>proposed fix</desc>
            <filename>2012-03-09_01.patch</filename>
            <type>text/plain</type>
            <size>11933</size>
            <attacher name="Balazs Ankes">bank</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhMDBi
MGU5Y2U2YTMyODBjZmVmYjA4MmQ3OThmNGQ2ZjFkOWQ5NWRlLi4yMDg0NDdiZWU3MTJkMmNmZDli
MmI0M2JmM2RjMTIxODc4MDVjZGNiIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTItMDMtMDkgIEJhbGF6cyBBbmtl
cyAgPGJhbmtAaW5mLnUtc3plZ2VkLmh1PgorCisgICAgICAgIEFkZCBwbmcgY2hlY2tpbmcgdG8g
Y2hlY2std2Via2l0LXN0eWxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03NTgyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5OgorICAgICAgICAo
X2FsbF9jYXRlZ29yaWVzKToKKyAgICAgICAgKEZpbGVUeXBlKToKKyAgICAgICAgKENoZWNrZXJE
aXNwYXRjaGVyLl9zaG91bGRfc2tpcF9maWxlX3BhdGgpOgorICAgICAgICAoQ2hlY2tlckRpc3Bh
dGNoZXIuX2ZpbGVfdHlwZSk6CisgICAgICAgIChDaGVja2VyRGlzcGF0Y2hlci5fY3JlYXRlX2No
ZWNrZXIpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcl91bml0dGVz
dC5weToKKyAgICAgICAgKENoZWNrZXJEaXNwYXRjaGVyRGlzcGF0Y2hUZXN0LnRlc3Rfbm9uZV9w
YXRocyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9wbmcucHk6
IEFkZGVkLgorICAgICAgICAoUE5HQ2hlY2tlcik6CisgICAgICAgIChQTkdDaGVja2VyLl9faW5p
dF9fKToKKyAgICAgICAgKFBOR0NoZWNrZXIuY2hlY2spOgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvc3R5bGUvY2hlY2tlcnMvcG5nX3VuaXR0ZXN0LnB5OiBBZGRlZC4KKyAgICAgICAgKFBO
R0NoZWNrZXJUZXN0KToKKyAgICAgICAgKFBOR0NoZWNrZXJUZXN0LnRlc3RfaW5pdCk6CisgICAg
ICAgIChQTkdDaGVja2VyVGVzdC50ZXN0X2luaXQubW9ja19oYW5kbGVfc3R5bGVfZXJyb3IpOgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvcGF0Y2hyZWFkZXIucHk6CisgICAgICAg
IChQYXRjaFJlYWRlci5jaGVjayk6CisKIDIwMTItMDMtMDcgIEthbmdpbCBIYW4gIDxrYW5naWwu
aGFuQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtEUlRdIFJlbW92ZSBQbGFpblRleHRDb250cm9s
bGVyIGltcGxlbWVudGF0aW9ucy4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
c3R5bGUvY2hlY2tlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5w
eQppbmRleCBmN2M4MmNmZWFmOTAxYzZlYzcyZmJkMzRmOGI2MmJmZThmNGY4MjUyLi44ODBmZDlm
NDVkZTI5Mjg2MmE3Yzg0ODZhNDliZmQ1ZTBjMzM1OGQ5IDEwMDY0NAotLS0gYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9zdHlsZS9jaGVja2VyLnB5CkBAIC00Niw2ICs0Niw3IEBAIGZyb20gY2hlY2tlcnMudGV4dCBp
bXBvcnQgVGV4dENoZWNrZXIKIGZyb20gY2hlY2tlcnMud2F0Y2hsaXN0IGltcG9ydCBXYXRjaExp
c3RDaGVja2VyCiBmcm9tIGNoZWNrZXJzLnhjb2RlcHJvaiBpbXBvcnQgWGNvZGVQcm9qZWN0Rmls
ZUNoZWNrZXIKIGZyb20gY2hlY2tlcnMueG1sIGltcG9ydCBYTUxDaGVja2VyCitmcm9tIGNoZWNr
ZXJzLnBuZyBpbXBvcnQgUE5HQ2hlY2tlcgogZnJvbSBlcnJvcl9oYW5kbGVycyBpbXBvcnQgRGVm
YXVsdFN0eWxlRXJyb3JIYW5kbGVyCiBmcm9tIGZpbHRlciBpbXBvcnQgRmlsdGVyQ29uZmlndXJh
dGlvbgogZnJvbSBvcHRwYXJzZXIgaW1wb3J0IEFyZ3VtZW50UGFyc2VyCkBAIC0yODksNiArMjkw
LDggQEAgX1hNTF9GSUxFX0VYVEVOU0lPTlMgPSBbCiAgICAgJ3ZzcHJvcHMnLAogICAgIF0KIAor
X1BOR19GSUxFX0VYVEVOU0lPTiA9ICdwbmcnCisKICMgRmlsZXMgdG8gc2tpcCB0aGF0IGFyZSBs
ZXNzIG9idmlvdXMuCiAjCiAjIFNvbWUgZmlsZXMgc2hvdWxkIGJlIHNraXBwZWQgd2hlbiBjaGVj
a2luZyBzdHlsZS4gRm9yIGV4YW1wbGUsCkBAIC0zMTQsNiArMzE3LDcgQEAgX1NLSVBQRURfRklM
RVNfV0lUSE9VVF9XQVJOSU5HID0gWwogX0NBUlJJQUdFX1JFVFVSTl9BTExPV0VEX0ZJTEVfRVhU
RU5TSU9OUyA9IFsKICAgICAndmNwcm9qJywKICAgICAndnNwcm9wcycsCisgICAgJ3BuZycsCiAg
ICAgXQogCiAjIFRoZSBtYXhpbXVtIG51bWJlciBvZiBlcnJvcnMgdG8gcmVwb3J0IHBlciBmaWxl
LCBwZXIgY2F0ZWdvcnkuCkBAIC0zMzAsNiArMzM0LDcgQEAgZGVmIF9hbGxfY2F0ZWdvcmllcygp
OgogICAgIGNhdGVnb3JpZXMgPSBjYXRlZ29yaWVzLnVuaW9uKEpTT05DaGVja2VyLmNhdGVnb3Jp
ZXMpCiAgICAgY2F0ZWdvcmllcyA9IGNhdGVnb3JpZXMudW5pb24oVGVzdEV4cGVjdGF0aW9uc0No
ZWNrZXIuY2F0ZWdvcmllcykKICAgICBjYXRlZ29yaWVzID0gY2F0ZWdvcmllcy51bmlvbihDaGFu
Z2VMb2dDaGVja2VyLmNhdGVnb3JpZXMpCisgICAgY2F0ZWdvcmllcyA9IGNhdGVnb3JpZXMudW5p
b24oUE5HQ2hlY2tlci5jYXRlZ29yaWVzKQogCiAgICAgIyBGSVhNRTogQ29uc2lkZXIgYWRkaW5n
IGFsbCBvZiB0aGUgcGVwOCBjYXRlZ29yaWVzLiAgU2luY2UgdGhleQogICAgICMgICAgICAgIGFy
ZSBub3QgdG9vIG1lYW5pbmdmdWwgZm9yIGRvY3VtZW50YXRpb24gcHVycG9zZXMsIGZvcgpAQCAt
NDc2LDYgKzQ4MSw3IEBAIGNsYXNzIEZpbGVUeXBlOgogICAgIFdBVENITElTVCA9IDYKICAgICBY
TUwgPSA3CiAgICAgWENPREVQUk9KID0gOAorICAgIFBORyA9IDkKIAogCiBjbGFzcyBDaGVja2Vy
RGlzcGF0Y2hlcihvYmplY3QpOgpAQCAtNDg3LDYgKzQ5Myw5IEBAIGNsYXNzIENoZWNrZXJEaXNw
YXRjaGVyKG9iamVjdCk6CiAgICAgICAgIHJldHVybiBvcy5wYXRoLnNwbGl0ZXh0KGZpbGVfcGF0
aClbMV0ubHN0cmlwKCIuIikKIAogICAgIGRlZiBfc2hvdWxkX3NraXBfZmlsZV9wYXRoKHNlbGYs
IGZpbGVfcGF0aCwgc2tpcF9hcnJheV9lbnRyeSk6CisgICAgICAgIG1hdGNoID0gcmUuc2VhcmNo
KCJccypwbmckIiwgZmlsZV9wYXRoKQorICAgICAgICBpZiBtYXRjaDoKKyAgICAgICAgICAgIHJl
dHVybiBGYWxzZQogICAgICAgICBpZiBpc2luc3RhbmNlKHNraXBfYXJyYXlfZW50cnksIHN0cik6
CiAgICAgICAgICAgICBpZiBmaWxlX3BhdGguZmluZChza2lwX2FycmF5X2VudHJ5KSA+PSAwOgog
ICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCkBAIC01NTAsNiArNTU5LDggQEAgY2xhc3MgQ2hl
Y2tlckRpc3BhdGNoZXIob2JqZWN0KToKICAgICAgICAgICAgIHJldHVybiBGaWxlVHlwZS5XQVRD
SExJU1QKICAgICAgICAgZWxpZiBmaWxlX2V4dGVuc2lvbiA9PSBfWENPREVQUk9KX0ZJTEVfRVhU
RU5TSU9OOgogICAgICAgICAgICAgcmV0dXJuIEZpbGVUeXBlLlhDT0RFUFJPSgorICAgICAgICBl
bGlmIGZpbGVfZXh0ZW5zaW9uID09IF9QTkdfRklMRV9FWFRFTlNJT046CisgICAgICAgICAgICBy
ZXR1cm4gRmlsZVR5cGUuUE5HCiAgICAgICAgIGVsaWYgKChub3QgZmlsZV9leHRlbnNpb24gYW5k
IG9zLnBhdGguam9pbigiVG9vbHMiLCAiU2NyaXB0cyIpIGluIGZpbGVfcGF0aCkgb3IKICAgICAg
ICAgICAgICAgZmlsZV9leHRlbnNpb24gaW4gX1RFWFRfRklMRV9FWFRFTlNJT05TKToKICAgICAg
ICAgICAgIHJldHVybiBGaWxlVHlwZS5URVhUCkBAIC01NzgsNiArNTg5LDggQEAgY2xhc3MgQ2hl
Y2tlckRpc3BhdGNoZXIob2JqZWN0KToKICAgICAgICAgICAgIGNoZWNrZXIgPSBYTUxDaGVja2Vy
KGZpbGVfcGF0aCwgaGFuZGxlX3N0eWxlX2Vycm9yKQogICAgICAgICBlbGlmIGZpbGVfdHlwZSA9
PSBGaWxlVHlwZS5YQ09ERVBST0o6CiAgICAgICAgICAgICBjaGVja2VyID0gWGNvZGVQcm9qZWN0
RmlsZUNoZWNrZXIoZmlsZV9wYXRoLCBoYW5kbGVfc3R5bGVfZXJyb3IpCisgICAgICAgIGVsaWYg
ZmlsZV90eXBlID09IEZpbGVUeXBlLlBORzoKKyAgICAgICAgICAgIGNoZWNrZXIgPSBQTkdDaGVj
a2VyKGZpbGVfcGF0aCwgaGFuZGxlX3N0eWxlX2Vycm9yKQogICAgICAgICBlbGlmIGZpbGVfdHlw
ZSA9PSBGaWxlVHlwZS5URVhUOgogICAgICAgICAgICAgYmFzZW5hbWUgPSBvcy5wYXRoLmJhc2Vu
YW1lKGZpbGVfcGF0aCkKICAgICAgICAgICAgIGlmIGJhc2VuYW1lID09ICd0ZXN0X2V4cGVjdGF0
aW9ucy50eHQnIG9yIGJhc2VuYW1lID09ICdkcnRfZXhwZWN0YXRpb25zLnR4dCc6CmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJfdW5pdHRlc3QucHkgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJfdW5pdHRlc3QucHkKaW5kZXggNjBh
OTU5ZmFmZjA0ZmY2ODMxZGQyNjdlNGYzYzhmMTg5MzA2YTMxOS4uZDgzNGZkNTU3MDZhZGY5OTU1
YjNmYWEwMTQxOGEzMzMwY2M4YzhlZCAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9zdHlsZS9jaGVja2VyX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
c3R5bGUvY2hlY2tlcl91bml0dGVzdC5weQpAQCAtNTkwLDcgKzU5MCw2IEBAIGNsYXNzIENoZWNr
ZXJEaXNwYXRjaGVyRGlzcGF0Y2hUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgcGF0
aHMgPSBbCiAgICAgICAgICAgICJNYWtlZmlsZSIsCiAgICAgICAgICAgICJmb28uYXNkZiIsICAj
IE5vbi1zZW5zaWNhbCBmaWxlIGV4dGVuc2lvbi4KLSAgICAgICAgICAgImZvby5wbmciLAogICAg
ICAgICAgICAiZm9vLmV4ZSIsCiAgICAgICAgICAgICBdCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvcG5nLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9zdHlsZS9jaGVja2Vycy9wbmcucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTZmNGYyZjkyMTgyNTc3Njhh
ZTNhNWJlZTA2MjI0NmI0YmI3MDQ0NgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvcG5nLnB5CkBAIC0wLDAgKzEsNzEgQEAKKyMgQ29weXJp
Z2h0IChDKSAyMDEyIEJhbGF6cyBBbmtlcyAoYmFua0BpbmYudS1zemVnZWQuaHUpCisjCisjIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMK
KyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKKyIiIlN1
cHBvcnRzIGNoZWNraW5nIFdlYktpdCBzdHlsZSBpbiBwbmcgZmlsZXMuIiIiCisKK2ltcG9ydCBy
ZQoraW1wb3J0IG9zCitpbXBvcnQgc3lzCisKKworY2xhc3MgUE5HQ2hlY2tlcihvYmplY3QpOgor
ICAgICIiIkNoZWNrIHN2bjptaW1lLXR5cGUgZm9yIGNoZWNraW5nIHN0eWxlIiIiCisKKyAgICBj
YXRlZ29yaWVzID0gc2V0KFsnaW1hZ2UvcG5nJ10pCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwg
ZmlsZV9wYXRoLCBoYW5kbGVfc3R5bGVfZXJyb3IpOgorICAgICAgICBzZWxmLmZpbGVfcGF0aCA9
IGZpbGVfcGF0aAorICAgICAgICBzZWxmLmhhbmRsZV9zdHlsZV9lcnJvciA9IGhhbmRsZV9zdHls
ZV9lcnJvcgorCisgICAgZGVmIGNoZWNrKHNlbGYsIGlubGluZT1Ob25lKToKKyAgICAgICAgbGlu
ZW51bWJlciA9IDAKKyAgICAgICAgZXJyb3JzdHIgPSAiIgorICAgICAgICBjb25maWdfZmlsZV9w
YXRoID0gIiIKKyAgICAgICAgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2xpbnV4Jykgb3Ig
c3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2RhcndpbicpOgorICAgICAgICAgICAgdHJ5OgorICAg
ICAgICAgICAgICAgIGNvbmZpZ19maWxlID0gb3Blbihvcy5wYXRoLmV4cGFuZHVzZXIoIn4iKSAr
ICIvLnN1YnZlcnNpb24vY29uZmlnIiwgJ3InKQorICAgICAgICAgICAgICAgIGNvbmZpZ19maWxl
X3BhdGggPSBvcy5wYXRoLmV4cGFuZHVzZXIoIn4iKSArICIvLnN1YnZlcnNpb24vY29uZmlnIgor
ICAgICAgICAgICAgZXhjZXB0IElPRXJyb3I6CisgICAgICAgICAgICAgICAgcHJpbnQgIlRoZXJl
IGlzIG5vIH4vLnN1YnZlcnNpb24vY29uZmlnIgorICAgICAgICAgICAgICAgICNyZXR1cm4gMQor
ICAgICAgICBlbGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd3aW4nKSBvciBzeXMucGxhdGZv
cm0uc3RhcnRzd2l0aCgnY3lnd2luJyk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAg
ICAgY29uZmlnX2ZpbGUgPSBvcGVuKG9zLmVudmlyb25bJ0FQUERBVEEnXSArICJcU3VidmVyc2lv
blxjb25maWciLCAncicpCisgICAgICAgICAgICAgICAgY29uZmlnX2ZpbGVfcGF0aCA9IG9zLmVu
dmlyb25bJ0FQUERBVEEnXSArICJcU3VidmVyc2lvblxjb25maWciCisgICAgICAgICAgICBleGNl
cHQgSU9FcnJvcjoKKyAgICAgICAgICAgICAgICBwcmludCAiVGhlcmUgaXMgbm8gIiArIG9zLmVu
dmlyb25bJ0FQUERBVEEnXSArICJcU3VidmVyc2lvblxjb25maWciCisgICAgICAgICAgICAgICAg
I3JldHVybiAxCisKKyAgICAgICAgZm9yIGxpbmUgaW4gY29uZmlnX2ZpbGUucmVhZGxpbmVzKCk6
CisgICAgICAgICAgICBsaW5lbnVtYmVyICs9IDEKKyAgICAgICAgICAgIG1hdGNoID0gcmUuc2Vh
cmNoKCJeXHMqLiplbmFibGUtYXV0by1wcm9wcyA9IHllcyIsIGxpbmUpCisgICAgICAgICAgICBp
ZiBtYXRjaCBhbmQgbm90IHN0cihtYXRjaC5ncm91cCgwKSlbMF0gPT0gImUiOgorICAgICAgICAg
ICAgICAgIGVycm9yc3RyICs9ICIgSGF2ZSB0byBlbmFibGUgYXV0byBwcm9wcyBpbiB0aGUgc3Vi
dmVyc2lvbiBjb25maWcgZmlsZSAoIiArIGNvbmZpZ19maWxlX3BhdGggKyAiLCBsaW5lOiIgKyBz
dHIobGluZW51bWJlcikgKyAiKS4iCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAg
ICAgIG1hdGNoID0gcmUuc2VhcmNoKCJeXHMqLipcKlwucG5nID0gc3ZuOm1pbWUtdHlwZT1pbWFn
ZS9wbmciLCBsaW5lKQorICAgICAgICAgICAgaWYgbWF0Y2ggYW5kIG5vdCBzdHIobWF0Y2guZ3Jv
dXAoMCkpWzBdID09ICIqIjoKKyAgICAgICAgICAgICAgICBlcnJvcnN0ciArPSAiIEhhdmUgdG8g
c2V0IHRoZSBzdm46bWltZS10eXBlIGluIHRoZSBzdWJ2ZXJzaW9uIGNvbmZpZyBmaWxlICgiICsg
Y29uZmlnX2ZpbGVfcGF0aCArICIsIGxpbmU6IiArIHN0cihsaW5lbnVtYmVyKSArICIpLiIKKyAg
ICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBpZiBlcnJvcnN0ciAhPSAiIjoKKyAgICAg
ICAgICAgIHNlbGYuaGFuZGxlX3N0eWxlX2Vycm9yKDAsICdpbWFnZS9wbmcnLCA1LCBlcnJvcnN0
cikKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvcG5n
X3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9wbmdf
dW5pdHRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmE5NTA3NzU2MjJkZTk2Y2Y2YWI3MGEwYjUwZDNjNjU2
YTdkZjQ4MQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUv
Y2hlY2tlcnMvcG5nX3VuaXR0ZXN0LnB5CkBAIC0wLDAgKzEsNDQgQEAKKyMgQ29weXJpZ2h0IChD
KSAyMDEyIEJhbGF6cyBBbmtlcyAoYmFua0BpbmYudS1zemVnZWQuaHUpCisjCisjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiJVbml0IHRlc3Qg
Zm9yIHBuZy5weS4iIiIKKworaW1wb3J0IHVuaXR0ZXN0Citmcm9tIHBuZyBpbXBvcnQgUE5HQ2hl
Y2tlcgorCisKK2NsYXNzIFBOR0NoZWNrZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAi
IiJUZXN0cyBQTkdDaGVja2VyIGNsYXNzLiIiIgorCisgICAgZGVmIHRlc3RfaW5pdChzZWxmLCk6
CisgICAgICAgICIiIlRlc3QgX19pbml0X18oKSBtZXRob2QuIiIiCisKKyAgICAgICAgZGVmIG1v
Y2tfaGFuZGxlX3N0eWxlX2Vycm9yKHNlbGYpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAg
IGNoZWNrZXIgPSBQTkdDaGVja2VyKCJ0ZXN0L2NvbmZpZyIsIG1vY2tfaGFuZGxlX3N0eWxlX2Vy
cm9yKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjaGVja2VyLmZpbGVfcGF0aCwgInRlc3Qv
Y29uZmlnIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY2hlY2tlci5oYW5kbGVfc3R5bGVf
ZXJyb3IsIG1vY2tfaGFuZGxlX3N0eWxlX2Vycm9yKQorCitpZiBfX25hbWVfXyA9PSAnX19tYWlu
X18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9zdHlsZS9wYXRjaHJlYWRlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUv
cGF0Y2hyZWFkZXIucHkKaW5kZXggNmFjMzJkZWQ3MmU4ODAwOTQ2ODE3NTQxOTU1MmYyMzBlMTYy
NTAyZC4uMmJkOGIwZDgxNjI0ZGNhMmIxMWQ1NWFkMDlkMTVjODcxNGEyMWYwYyAxMDA2NDQKLS0t
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9wYXRjaHJlYWRlci5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL3BhdGNocmVhZGVyLnB5CkBAIC0yOSw2ICsyOSw3IEBA
CiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAKIGltcG9ydCBsb2dnaW5nCitpbXBvcnQgcmUKIAogZnJvbSB3ZWJr
aXRweS5jb21tb24uY2hlY2tvdXQuZGlmZl9wYXJzZXIgaW1wb3J0IERpZmZQYXJzZXIKIApAQCAt
NTcsNiArNTgsMTAgQEAgY2xhc3MgUGF0Y2hSZWFkZXIob2JqZWN0KToKICAgICAgICAgICAgIF9s
b2cuZGVidWcoJ0ZvdW5kICVzIG5ldyBvciBtb2RpZmllZCBsaW5lcyBpbjogJXMnICUgKGxlbihs
aW5lX251bWJlcnMpLCBwYXRoKSkKIAogICAgICAgICAgICAgaWYgbm90IGxpbmVfbnVtYmVyczoK
KyAgICAgICAgICAgICAgICBtYXRjaCA9IHJlLnNlYXJjaCgiXHMqcG5nJCIsIHBhdGgpCisgICAg
ICAgICAgICAgICAgaWYgbWF0Y2g6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3RleHRfZmls
ZV9yZWFkZXIucHJvY2Vzc19maWxlKGZpbGVfcGF0aD1wYXRoLCBsaW5lX251bWJlcnM9Tm9uZSkK
KyAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICAjIERvbid0IGNo
ZWNrIGZpbGVzIHdoaWNoIGNvbnRhaW4gb25seSBkZWxldGVkIGxpbmVzCiAgICAgICAgICAgICAg
ICAgIyBhcyB0aGV5IGNhbiBuZXZlciBhZGQgc3R5bGUgZXJyb3JzLiBIb3dldmVyLCBtYXJrIHRo
ZW0gYXMKICAgICAgICAgICAgICAgICAjIHByb2Nlc3NlZCBzbyB0aGF0IHdlIGNvdW50IHVwIG51
bWJlciBvZiBzdWNoIGZpbGVzLgo=
</data>
<flag name="commit-queue"
          id="134216"
          type_id="3"
          status="-"
          setter="levin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132787</attachid>
            <date>2012-03-20 03:19:24 -0700</date>
            <delta_ts>2012-03-22 08:36:33 -0700</delta_ts>
            <desc>proposed fix</desc>
            <filename>2012-03-20.patch</filename>
            <type>text/plain</type>
            <size>14883</size>
            <attacher name="Balazs Ankes">bank</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhMDBi
MGU5Li42Mzk1ZTM3IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTItMDMtMjAgIEJhbGF6cyBBbmtlcyAgPGJhbmtA
aW5mLnUtc3plZ2VkLmh1PgorCisgICAgICAgIEFkZCBwbmcgY2hlY2tpbmcgdG8gY2hlY2std2Vi
a2l0LXN0eWxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03NTgyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5OgorICAgICAgICAoX2FsbF9jYXRl
Z29yaWVzKToKKyAgICAgICAgKEZpbGVUeXBlKToKKyAgICAgICAgKENoZWNrZXJEaXNwYXRjaGVy
Ll9zaG91bGRfc2tpcF9maWxlX3BhdGgpOgorICAgICAgICAoQ2hlY2tlckRpc3BhdGNoZXIuX2Zp
bGVfdHlwZSk6CisgICAgICAgIChDaGVja2VyRGlzcGF0Y2hlci5fY3JlYXRlX2NoZWNrZXIpOgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcl91bml0dGVzdC5weToKKyAg
ICAgICAgKENoZWNrZXJEaXNwYXRjaGVyRGlzcGF0Y2hUZXN0LnRlc3Rfbm9uZV9wYXRocyk6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9wbmcucHk6IEFkZGVkLgor
ICAgICAgICAoUE5HQ2hlY2tlcik6CisgICAgICAgIChQTkdDaGVja2VyLl9faW5pdF9fKToKKyAg
ICAgICAgKFBOR0NoZWNrZXIuY2hlY2spOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5
bGUvY2hlY2tlcnMvcG5nX3VuaXR0ZXN0LnB5OiBBZGRlZC4KKyAgICAgICAgKFBOR0NoZWNrZXJU
ZXN0KToKKyAgICAgICAgKFBOR0NoZWNrZXJUZXN0LnRlc3RfaW5pdCk6CisgICAgICAgIChQTkdD
aGVja2VyVGVzdC50ZXN0X2luaXQubW9ja19oYW5kbGVfc3R5bGVfZXJyb3IpOgorICAgICAgICAo
UE5HQ2hlY2tlclRlc3QudGVzdF9jaGVjayk6CisgICAgICAgIChQTkdDaGVja2VyVGVzdC50ZXN0
X2NoZWNrLm1vY2tfaGFuZGxlX3N0eWxlX2Vycm9yKToKKyAgICAgICAgKE1vY2tTQ01EZXRlY3Rv
cik6CisgICAgICAgIChNb2NrU0NNRGV0ZWN0b3IuX19pbml0X18pOgorICAgICAgICAoTW9ja1ND
TURldGVjdG9yLmRpc3BsYXlfbmFtZSk6CisgICAgICAgIChNb2NrU0NNRGV0ZWN0b3IucHJvcGdl
dCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9wYXRjaHJlYWRlci5weToKKyAg
ICAgICAgKFBhdGNoUmVhZGVyLmNoZWNrKToKKwogMjAxMi0wMy0wNyAgS2FuZ2lsIEhhbiAgPGth
bmdpbC5oYW5Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0RSVF0gUmVtb3ZlIFBsYWluVGV4dENv
bnRyb2xsZXIgaW1wbGVtZW50YXRpb25zLgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9zdHlsZS9jaGVja2VyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVj
a2VyLnB5CmluZGV4IGY3YzgyY2YuLjQxNzQ5NzUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvc3R5bGUvY2hlY2tlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0
eWxlL2NoZWNrZXIucHkKQEAgLTQwLDYgKzQwLDcgQEAgZnJvbSBjaGVja2Vycy5jb21tb24gaW1w
b3J0IENhcnJpYWdlUmV0dXJuQ2hlY2tlcgogZnJvbSBjaGVja2Vycy5jaGFuZ2Vsb2cgaW1wb3J0
IENoYW5nZUxvZ0NoZWNrZXIKIGZyb20gY2hlY2tlcnMuY3BwIGltcG9ydCBDcHBDaGVja2VyCiBm
cm9tIGNoZWNrZXJzLmpzb25jaGVja2VyIGltcG9ydCBKU09OQ2hlY2tlcgorZnJvbSBjaGVja2Vy
cy5wbmcgaW1wb3J0IFBOR0NoZWNrZXIKIGZyb20gY2hlY2tlcnMucHl0aG9uIGltcG9ydCBQeXRo
b25DaGVja2VyCiBmcm9tIGNoZWNrZXJzLnRlc3RfZXhwZWN0YXRpb25zIGltcG9ydCBUZXN0RXhw
ZWN0YXRpb25zQ2hlY2tlcgogZnJvbSBjaGVja2Vycy50ZXh0IGltcG9ydCBUZXh0Q2hlY2tlcgpA
QCAtMjg5LDYgKzI5MCw4IEBAIF9YTUxfRklMRV9FWFRFTlNJT05TID0gWwogICAgICd2c3Byb3Bz
JywKICAgICBdCiAKK19QTkdfRklMRV9FWFRFTlNJT04gPSAncG5nJworCiAjIEZpbGVzIHRvIHNr
aXAgdGhhdCBhcmUgbGVzcyBvYnZpb3VzLgogIwogIyBTb21lIGZpbGVzIHNob3VsZCBiZSBza2lw
cGVkIHdoZW4gY2hlY2tpbmcgc3R5bGUuIEZvciBleGFtcGxlLApAQCAtMzEyLDYgKzMxNSw3IEBA
IF9TS0lQUEVEX0ZJTEVTX1dJVEhPVVRfV0FSTklORyA9IFsKIAogIyBFeHRlbnNpb25zIG9mIGZp
bGVzIHdoaWNoIGFyZSBhbGxvd2VkIHRvIGNvbnRhaW4gY2FycmlhZ2UgcmV0dXJucy4KIF9DQVJS
SUFHRV9SRVRVUk5fQUxMT1dFRF9GSUxFX0VYVEVOU0lPTlMgPSBbCisgICAgJ3BuZycsCiAgICAg
J3ZjcHJvaicsCiAgICAgJ3ZzcHJvcHMnLAogICAgIF0KQEAgLTMzMCw2ICszMzQsNyBAQCBkZWYg
X2FsbF9jYXRlZ29yaWVzKCk6CiAgICAgY2F0ZWdvcmllcyA9IGNhdGVnb3JpZXMudW5pb24oSlNP
TkNoZWNrZXIuY2F0ZWdvcmllcykKICAgICBjYXRlZ29yaWVzID0gY2F0ZWdvcmllcy51bmlvbihU
ZXN0RXhwZWN0YXRpb25zQ2hlY2tlci5jYXRlZ29yaWVzKQogICAgIGNhdGVnb3JpZXMgPSBjYXRl
Z29yaWVzLnVuaW9uKENoYW5nZUxvZ0NoZWNrZXIuY2F0ZWdvcmllcykKKyAgICBjYXRlZ29yaWVz
ID0gY2F0ZWdvcmllcy51bmlvbihQTkdDaGVja2VyLmNhdGVnb3JpZXMpCiAKICAgICAjIEZJWE1F
OiBDb25zaWRlciBhZGRpbmcgYWxsIG9mIHRoZSBwZXA4IGNhdGVnb3JpZXMuICBTaW5jZSB0aGV5
CiAgICAgIyAgICAgICAgYXJlIG5vdCB0b28gbWVhbmluZ2Z1bCBmb3IgZG9jdW1lbnRhdGlvbiBw
dXJwb3NlcywgZm9yCkBAIC00NzEsNiArNDc2LDcgQEAgY2xhc3MgRmlsZVR5cGU6CiAgICAgQ0hB
TkdFTE9HID0gMQogICAgIENQUCA9IDIKICAgICBKU09OID0gMworICAgIFBORyA9IDkKICAgICBQ
WVRIT04gPSA0CiAgICAgVEVYVCA9IDUKICAgICBXQVRDSExJU1QgPSA2CkBAIC00ODcsNiArNDkz
LDkgQEAgY2xhc3MgQ2hlY2tlckRpc3BhdGNoZXIob2JqZWN0KToKICAgICAgICAgcmV0dXJuIG9z
LnBhdGguc3BsaXRleHQoZmlsZV9wYXRoKVsxXS5sc3RyaXAoIi4iKQogCiAgICAgZGVmIF9zaG91
bGRfc2tpcF9maWxlX3BhdGgoc2VsZiwgZmlsZV9wYXRoLCBza2lwX2FycmF5X2VudHJ5KToKKyAg
ICAgICAgbWF0Y2ggPSByZS5zZWFyY2goIlxzKnBuZyQiLCBmaWxlX3BhdGgpCisgICAgICAgIGlm
IG1hdGNoOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIGlmIGlzaW5zdGFuY2Uo
c2tpcF9hcnJheV9lbnRyeSwgc3RyKToKICAgICAgICAgICAgIGlmIGZpbGVfcGF0aC5maW5kKHNr
aXBfYXJyYXlfZW50cnkpID49IDA6CiAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKQEAgLTU1
MCw2ICs1NTksOCBAQCBjbGFzcyBDaGVja2VyRGlzcGF0Y2hlcihvYmplY3QpOgogICAgICAgICAg
ICAgcmV0dXJuIEZpbGVUeXBlLldBVENITElTVAogICAgICAgICBlbGlmIGZpbGVfZXh0ZW5zaW9u
ID09IF9YQ09ERVBST0pfRklMRV9FWFRFTlNJT046CiAgICAgICAgICAgICByZXR1cm4gRmlsZVR5
cGUuWENPREVQUk9KCisgICAgICAgIGVsaWYgZmlsZV9leHRlbnNpb24gPT0gX1BOR19GSUxFX0VY
VEVOU0lPTjoKKyAgICAgICAgICAgIHJldHVybiBGaWxlVHlwZS5QTkcKICAgICAgICAgZWxpZiAo
KG5vdCBmaWxlX2V4dGVuc2lvbiBhbmQgb3MucGF0aC5qb2luKCJUb29scyIsICJTY3JpcHRzIikg
aW4gZmlsZV9wYXRoKSBvcgogICAgICAgICAgICAgICBmaWxlX2V4dGVuc2lvbiBpbiBfVEVYVF9G
SUxFX0VYVEVOU0lPTlMpOgogICAgICAgICAgICAgcmV0dXJuIEZpbGVUeXBlLlRFWFQKQEAgLTU3
OCw2ICs1ODksOCBAQCBjbGFzcyBDaGVja2VyRGlzcGF0Y2hlcihvYmplY3QpOgogICAgICAgICAg
ICAgY2hlY2tlciA9IFhNTENoZWNrZXIoZmlsZV9wYXRoLCBoYW5kbGVfc3R5bGVfZXJyb3IpCiAg
ICAgICAgIGVsaWYgZmlsZV90eXBlID09IEZpbGVUeXBlLlhDT0RFUFJPSjoKICAgICAgICAgICAg
IGNoZWNrZXIgPSBYY29kZVByb2plY3RGaWxlQ2hlY2tlcihmaWxlX3BhdGgsIGhhbmRsZV9zdHls
ZV9lcnJvcikKKyAgICAgICAgZWxpZiBmaWxlX3R5cGUgPT0gRmlsZVR5cGUuUE5HOgorICAgICAg
ICAgICAgY2hlY2tlciA9IFBOR0NoZWNrZXIoZmlsZV9wYXRoLCBoYW5kbGVfc3R5bGVfZXJyb3Ip
CiAgICAgICAgIGVsaWYgZmlsZV90eXBlID09IEZpbGVUeXBlLlRFWFQ6CiAgICAgICAgICAgICBi
YXNlbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUoZmlsZV9wYXRoKQogICAgICAgICAgICAgaWYgYmFz
ZW5hbWUgPT0gJ3Rlc3RfZXhwZWN0YXRpb25zLnR4dCcgb3IgYmFzZW5hbWUgPT0gJ2RydF9leHBl
Y3RhdGlvbnMudHh0JzoKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUv
Y2hlY2tlcl91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tl
cl91bml0dGVzdC5weQppbmRleCA2MGE5NTlmLi5kODM0ZmQ1IDEwMDc1NQotLS0gYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyX3VuaXR0ZXN0LnB5CkBAIC01OTAsNyArNTkwLDYg
QEAgY2xhc3MgQ2hlY2tlckRpc3BhdGNoZXJEaXNwYXRjaFRlc3QodW5pdHRlc3QuVGVzdENhc2Up
OgogICAgICAgICBwYXRocyA9IFsKICAgICAgICAgICAgIk1ha2VmaWxlIiwKICAgICAgICAgICAg
ImZvby5hc2RmIiwgICMgTm9uLXNlbnNpY2FsIGZpbGUgZXh0ZW5zaW9uLgotICAgICAgICAgICAi
Zm9vLnBuZyIsCiAgICAgICAgICAgICJmb28uZXhlIiwKICAgICAgICAgICAgIF0KIApkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9wbmcucHkgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3BuZy5weQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi45M2EyY2JlCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9wbmcucHkKQEAgLTAsMCArMSw5MSBAQAorIyBD
b3B5cmlnaHQgKEMpIDIwMTIgQmFsYXpzIEFua2VzIChiYW5rQGluZi51LXN6ZWdlZC5odSkgVW5p
dmVyc2l0eSBvZiBTemVnZWQKKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0
OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisKKworIiIiU3VwcG9ydHMgY2hlY2tpbmcgV2ViS2l0IHN0eWxlIGlu
IHBuZyBmaWxlcy4iIiIKKworaW1wb3J0IHJlCitpbXBvcnQgc3lzCitpbXBvcnQgb3MKK2Zyb20g
d2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IEV4ZWN1dGl2ZQorZnJvbSB3
ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW0gaW1wb3J0IEZpbGVTeXN0ZW0KK2Zyb20g
d2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LnNjbS5kZXRlY3Rpb24gaW1wb3J0IFNDTURldGVjdG9y
CisKKworY2xhc3MgUE5HQ2hlY2tlcihvYmplY3QpOgorICAgICIiIkNoZWNrIHN2bjptaW1lLXR5
cGUgZm9yIGNoZWNraW5nIHN0eWxlIiIiCisKKyAgICBjYXRlZ29yaWVzID0gc2V0KFsnaW1hZ2Uv
cG5nJ10pCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZV9wYXRoLCBoYW5kbGVfc3R5bGVf
ZXJyb3IsIGZpbGVzeXN0ZW09Tm9uZSwgc2NtPU5vbmUpOgorICAgICAgICBzZWxmLmZpbGVfcGF0
aCA9IGZpbGVfcGF0aAorICAgICAgICBzZWxmLmhhbmRsZV9zdHlsZV9lcnJvciA9IGhhbmRsZV9z
dHlsZV9lcnJvcgorICAgICAgICBzZWxmLmZzID0gZmlsZXN5c3RlbSBvciBGaWxlU3lzdGVtKCkK
KyAgICAgICAgc2VsZi5kZXQgPSBzY20gb3IgU0NNRGV0ZWN0b3Ioc2VsZi5mcywgRXhlY3V0aXZl
KCkpLmRldGVjdF9zY21fc3lzdGVtKHNlbGYuZnMuZ2V0Y3dkKCkpCisKKyAgICBkZWYgY2hlY2so
c2VsZiwgaW5saW5lPU5vbmUpOgorICAgICAgICBsaW5lbnVtYmVyID0gMAorICAgICAgICBlcnJv
cnN0ciA9ICIiCisgICAgICAgIGNvbmZpZ19maWxlX3BhdGggPSAiIgorICAgICAgICBkZXRlY3Rp
b24gPSAiIgorICAgICAgICB0cnk6CisgICAgICAgICAgICBkZXRlY3Rpb24gPSBzZWxmLmRldC5k
aXNwbGF5X25hbWUoKQorICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICBkZXRlY3Rpb24gPSAi
bm9uZSIKKworICAgICAgICBpZihkZXRlY3Rpb24gPT0gImdpdCIpOgorICAgICAgICAgICAgaWYg
c3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2xpbnV4Jykgb3Igc3lzLnBsYXRmb3JtLnN0YXJ0c3dp
dGgoJ2RhcndpbicpOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAg
Y29uZmlnX2ZpbGVfcGF0aCA9IHNlbGYuZnMuZXhwYW5kdXNlcigifiIpICsgIi8uc3VidmVyc2lv
bi9jb25maWciCisgICAgICAgICAgICAgICAgICAgIGNvbmZpZ19maWxlID0gc2VsZi5mcy5vcGVu
X3RleHRfZmlsZV9mb3JfcmVhZGluZyhjb25maWdfZmlsZV9wYXRoKQorICAgICAgICAgICAgICAg
IGV4Y2VwdCBJT0Vycm9yOgorICAgICAgICAgICAgICAgICAgICBlcnJvcnN0ciA9ICJUaGVyZSBp
cyBubyAiICsgY29uZmlnX2ZpbGVfcGF0aAorICAgICAgICAgICAgICAgICAgICBzZWxmLmhhbmRs
ZV9zdHlsZV9lcnJvcigwLCAnaW1hZ2UvcG5nJywgNSwgZXJyb3JzdHIpCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybgorICAgICAgICAgICAgZWxpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgn
d2luJykgb3Igc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2N5Z3dpbicpOgorICAgICAgICAgICAg
ICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgY29uZmlnX2ZpbGVfcGF0aCA9IG9zLmVudmly
b25bJ0FQUERBVEEnXSArICJcU3VidmVyc2lvblxjb25maWciCisgICAgICAgICAgICAgICAgICAg
IGNvbmZpZ19maWxlID0gc2VsZi5mcy5vcGVuX3RleHRfZmlsZV9mb3JfcmVhZGluZyhjb25maWdf
ZmlsZV9wYXRoKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBJT0Vycm9yOgorICAgICAgICAgICAg
ICAgICAgICBlcnJvcnN0ciA9ICJUaGVyZSBpcyBubyAiICsgY29uZmlnX2ZpbGVfcGF0aAorICAg
ICAgICAgICAgICAgICAgICBzZWxmLmhhbmRsZV9zdHlsZV9lcnJvcigwLCAnaW1hZ2UvcG5nJywg
NSwgZXJyb3JzdHIpCisgICAgICAgICAgICAgICAgICAgIHJldHVybgorCisgICAgICAgICAgICBm
b3IgbGluZSBpbiBjb25maWdfZmlsZS5yZWFkbGluZXMoKToKKyAgICAgICAgICAgICAgICBsaW5l
bnVtYmVyICs9IDEKKyAgICAgICAgICAgICAgICBtYXRjaCA9IHJlLnNlYXJjaCgiXlxzKi4qZW5h
YmxlLWF1dG8tcHJvcHMgPSB5ZXMiLCBsaW5lKQorICAgICAgICAgICAgICAgIGlmIG1hdGNoIGFu
ZCBzdHIobWF0Y2guZ3JvdXAoMCkpWzBdICE9ICJlIjoKKyAgICAgICAgICAgICAgICAgICAgZXJy
b3JzdHIgKz0gIiBIYXZlIHRvIGVuYWJsZSBhdXRvIHByb3BzIGluIHRoZSBzdWJ2ZXJzaW9uIGNv
bmZpZyBmaWxlICgiICsgY29uZmlnX2ZpbGVfcGF0aCArICIsIGxpbmU6IiArIHN0cihsaW5lbnVt
YmVyKSArICIpLiIKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAg
ICBtYXRjaCA9IHJlLnNlYXJjaCgiXlxzKi4qXCpcLnBuZyA9IHN2bjptaW1lLXR5cGU9aW1hZ2Uv
cG5nIiwgbGluZSkKKyAgICAgICAgICAgICAgICBpZiBtYXRjaCBhbmQgc3RyKG1hdGNoLmdyb3Vw
KDApKVswXSAhPSAiKiI6CisgICAgICAgICAgICAgICAgICAgIGVycm9yc3RyICs9ICIgSGF2ZSB0
byBzZXQgdGhlIHN2bjptaW1lLXR5cGUgaW4gdGhlIHN1YnZlcnNpb24gY29uZmlnIGZpbGUgKCIg
KyBjb25maWdfZmlsZV9wYXRoICsgIiwgbGluZToiICsgc3RyKGxpbmVudW1iZXIpICsgIikuIgor
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgaWYgZXJyb3JzdHI6Cisg
ICAgICAgICAgICAgICAgc2VsZi5oYW5kbGVfc3R5bGVfZXJyb3IoMCwgJ2ltYWdlL3BuZycsIDUs
IGVycm9yc3RyKQorCisgICAgICAgIGlmKGRldGVjdGlvbiA9PSAic3ZuIik6CisgICAgICAgICAg
ICBwcm9wX2dldCA9IHNlbGYuZGV0LnByb3BnZXQoInN2bjptaW1lLXR5cGUiLCBzZWxmLmZpbGVf
cGF0aCkKKyAgICAgICAgICAgIGlmKHByb3BfZ2V0ICE9ICJpbWFnZS9wbmciKToKKyAgICAgICAg
ICAgICAgICBlcnJvcnN0ciA9ICJTZXQgdGhlIHN2bjptaW1lLXR5cGUgcHJvcGVydHkgKHN2biBw
cm9wc2V0IHN2bjptaW1lLXR5cGUgaW1hZ2UvcG5nICIgKyBzZWxmLmZpbGVfcGF0aCArICIpLiIK
KyAgICAgICAgICAgICAgICBzZWxmLmhhbmRsZV9zdHlsZV9lcnJvcigwLCAnaW1hZ2UvcG5nJywg
NSwgZXJyb3JzdHIpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2No
ZWNrZXJzL3BuZ191bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hl
Y2tlcnMvcG5nX3VuaXR0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmQ4MDFkNGEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxl
L2NoZWNrZXJzL3BuZ191bml0dGVzdC5weQpAQCAtMCwwICsxLDgxIEBACisjIENvcHlyaWdodCAo
QykgMjAxMiBCYWxhenMgQW5rZXMgKGJhbmtAaW5mLnUtc3plZ2VkLmh1KSBVbml2ZXJzaXR5IG9m
IFN6ZWdlZAorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworIiIiVW5pdCB0ZXN0IGZvciBwbmcucHkuIiIiCisKK2ltcG9ydCB1bml0dGVzdAor
ZnJvbSBwbmcgaW1wb3J0IFBOR0NoZWNrZXIKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5m
aWxlc3lzdGVtX21vY2sgaW1wb3J0IE1vY2tGaWxlU3lzdGVtCisKKworY2xhc3MgUE5HQ2hlY2tl
clRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIlRlc3RzIFBOR0NoZWNrZXIgY2xhc3Mu
IiIiCisKKyAgICBkZWYgdGVzdF9pbml0KHNlbGYpOgorICAgICAgICAiIiJUZXN0IF9faW5pdF9f
KCkgbWV0aG9kLiIiIgorCisgICAgICAgIGRlZiBtb2NrX2hhbmRsZV9zdHlsZV9lcnJvcihzZWxm
KToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBmcyA9IE1vY2tGaWxlU3lzdGVtKCkKKyAg
ICAgICAgc2NtID0gTW9ja1NDTURldGVjdG9yKCdnaXQnKQorICAgICAgICBjaGVja2VyID0gUE5H
Q2hlY2tlcigidGVzdC9jb25maWciLCBtb2NrX2hhbmRsZV9zdHlsZV9lcnJvciwgZnMsIHNjbSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY2hlY2tlci5maWxlX3BhdGgsICJ0ZXN0L2NvbmZp
ZyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNoZWNrZXIuaGFuZGxlX3N0eWxlX2Vycm9y
LCBtb2NrX2hhbmRsZV9zdHlsZV9lcnJvcikKKworICAgIGRlZiB0ZXN0X2NoZWNrKHNlbGYpOgor
ICAgICAgICBlcnJvcnMgPSBbXQorCisgICAgICAgIGRlZiBtb2NrX2hhbmRsZV9zdHlsZV9lcnJv
cihsaW5lX251bWJlciwgY2F0ZWdvcnksIGNvbmZpZGVuY2UsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbWVzc2FnZSk6CisgICAgICAgICAgICBlcnJvciA9IChsaW5lX251
bWJlciwgY2F0ZWdvcnksIGNvbmZpZGVuY2UsIG1lc3NhZ2UpCisgICAgICAgICAgICBlcnJvcnMu
YXBwZW5kKGVycm9yKQorCisgICAgICAgIGZpbGVfcGF0aCA9ICcnCisKKyAgICAgICAgZnMgPSBN
b2NrRmlsZVN5c3RlbSgiY29uZmlnIiwgY3dkPScvJykKKyAgICAgICAgc2NtID0gTW9ja1NDTURl
dGVjdG9yKCdzdm4nKQorICAgICAgICBjaGVja2VyID0gUE5HQ2hlY2tlcihmaWxlX3BhdGgsIG1v
Y2tfaGFuZGxlX3N0eWxlX2Vycm9yLCBmcywgc2NtKQorCisgICAgICAgIGNoZWNrZXIuY2hlY2so
KQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGxlbihlcnJvcnMpLCAxKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFscyhlcnJvcnNbMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICgw
LCAnaW1hZ2UvcG5nJywgNSwgJ1NldCB0aGUgc3ZuOm1pbWUtdHlwZSBwcm9wZXJ0eSAoc3ZuIHBy
b3BzZXQgc3ZuOm1pbWUtdHlwZSBpbWFnZS9wbmcgKS4nKSkKKworCitpZiBfX25hbWVfXyA9PSAn
X19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQorCisKK2NsYXNzIE1vY2tTQ01EZXRlY3Rv
cihvYmplY3QpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHNjbSwgcHJvcD1Ob25lKToKKyAg
ICAgICAgc2VsZi5fc2NtID0gc2NtCisgICAgICAgIHNlbGYuX3Byb3AgPSBwcm9wCisKKyAgICBk
ZWYgZGlzcGxheV9uYW1lKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fc2NtCisKKyAgICBk
ZWYgcHJvcGdldChzZWxmLCBwbmFtZSwgcGF0aCk6CisgICAgICAgIHJldHVybiBzZWxmLl9wcm9w
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL3BhdGNocmVhZGVyLnB5
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9wYXRjaHJlYWRlci5weQppbmRleCA2YWMz
MmRlLi44NzhiMTgzIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL3Bh
dGNocmVhZGVyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvcGF0Y2hyZWFk
ZXIucHkKQEAgLTI5LDggKzI5LDEyIEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIGltcG9ydCBsb2dnaW5n
CitpbXBvcnQgcmUKIAogZnJvbSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuZGlmZl9wYXJzZXIg
aW1wb3J0IERpZmZQYXJzZXIKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUg
aW1wb3J0IEV4ZWN1dGl2ZQorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW0g
aW1wb3J0IEZpbGVTeXN0ZW0KK2Zyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LnNjbS5kZXRl
Y3Rpb24gaW1wb3J0IFNDTURldGVjdG9yCiAKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9f
bmFtZV9fKQpAQCAtNTIsMTEgKzU2LDIzIEBAIGNsYXNzIFBhdGNoUmVhZGVyKG9iamVjdCk6CiAg
ICAgICAgICIiIkNoZWNrIHN0eWxlIGluIHRoZSBnaXZlbiBwYXRjaC4iIiIKICAgICAgICAgcGF0
Y2hfZmlsZXMgPSBEaWZmUGFyc2VyKHBhdGNoX3N0cmluZy5zcGxpdGxpbmVzKCkpLmZpbGVzCiAK
KyAgICAgICAgIyBJZiB0aGUgdXNlciB1c2VzIGdpdCwgY2hlY2tpbmcgc3VidmVyc2lvbiBjb25m
aWcgZmlsZSBvbmx5IG9uY2UgaXMgZW5vdWdoLgorICAgICAgICBjYWxsX29ubHlfb25jZSA9IDEK
KwogICAgICAgICBmb3IgcGF0aCwgZGlmZl9maWxlIGluIHBhdGNoX2ZpbGVzLml0ZXJpdGVtcygp
OgogICAgICAgICAgICAgbGluZV9udW1iZXJzID0gZGlmZl9maWxlLmFkZGVkX29yX21vZGlmaWVk
X2xpbmVfbnVtYmVycygpCiAgICAgICAgICAgICBfbG9nLmRlYnVnKCdGb3VuZCAlcyBuZXcgb3Ig
bW9kaWZpZWQgbGluZXMgaW46ICVzJyAlIChsZW4obGluZV9udW1iZXJzKSwgcGF0aCkpCiAKICAg
ICAgICAgICAgIGlmIG5vdCBsaW5lX251bWJlcnM6CisgICAgICAgICAgICAgICAgbWF0Y2ggPSBy
ZS5zZWFyY2goIlxzKnBuZyQiLCBwYXRoKQorICAgICAgICAgICAgICAgIGlmIG1hdGNoOgorICAg
ICAgICAgICAgICAgICAgICBpZihjYWxsX29ubHlfb25jZSk6CisgICAgICAgICAgICAgICAgICAg
ICAgICBzZWxmLl90ZXh0X2ZpbGVfcmVhZGVyLnByb2Nlc3NfZmlsZShmaWxlX3BhdGg9cGF0aCwg
bGluZV9udW1iZXJzPU5vbmUpCisgICAgICAgICAgICAgICAgICAgICAgICBjd2QgPSBGaWxlU3lz
dGVtKCkuZ2V0Y3dkKCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGRldCA9IFNDTURldGVjdG9y
KEZpbGVTeXN0ZW0oKSwgRXhlY3V0aXZlKCkpLmRldGVjdF9zY21fc3lzdGVtKGN3ZCkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlmKGRldC5kaXNwbGF5X25hbWUoKSA9PSAiZ2l0Iik6CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY2FsbF9vbmx5X29uY2UgPSAwCisgICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgIyBEb24ndCBjaGVjayBmaWxlcyB3aGlj
aCBjb250YWluIG9ubHkgZGVsZXRlZCBsaW5lcwogICAgICAgICAgICAgICAgICMgYXMgdGhleSBj
YW4gbmV2ZXIgYWRkIHN0eWxlIGVycm9ycy4gSG93ZXZlciwgbWFyayB0aGVtIGFzCiAgICAgICAg
ICAgICAgICAgIyBwcm9jZXNzZWQgc28gdGhhdCB3ZSBjb3VudCB1cCBudW1iZXIgb2Ygc3VjaCBm
aWxlcy4K
</data>
<flag name="review"
          id="136541"
          type_id="1"
          status="-"
          setter="tony"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133272</attachid>
            <date>2012-03-22 08:36:33 -0700</date>
            <delta_ts>2012-03-23 05:23:31 -0700</delta_ts>
            <desc>proposed fix</desc>
            <filename>2012-03-22.patch</filename>
            <type>text/plain</type>
            <size>17369</size>
            <attacher name="Balazs Ankes">bank</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhMDBi
MGU5Li5jOTEzMjQ4IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTItMDMtMjIgIEJhbGF6cyBBbmtlcyAgPGJhbmtA
aW5mLnUtc3plZ2VkLmh1PgorCisgICAgICAgIEFkZCBwbmcgY2hlY2tpbmcgdG8gY2hlY2std2Vi
a2l0LXN0eWxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03NTgyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5OgorICAgICAgICAoX2FsbF9jYXRl
Z29yaWVzKToKKyAgICAgICAgKEZpbGVUeXBlKToKKyAgICAgICAgKENoZWNrZXJEaXNwYXRjaGVy
Ll9zaG91bGRfc2tpcF9maWxlX3BhdGgpOgorICAgICAgICAoQ2hlY2tlckRpc3BhdGNoZXIuX2Zp
bGVfdHlwZSk6CisgICAgICAgIChDaGVja2VyRGlzcGF0Y2hlci5fY3JlYXRlX2NoZWNrZXIpOgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcl91bml0dGVzdC5weToKKyAg
ICAgICAgKENoZWNrZXJEaXNwYXRjaGVyRGlzcGF0Y2hUZXN0LnRlc3Rfbm9uZV9wYXRocyk6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9wbmcucHk6IEFkZGVkLgor
ICAgICAgICAoUE5HQ2hlY2tlcik6CisgICAgICAgIChQTkdDaGVja2VyLl9faW5pdF9fKToKKyAg
ICAgICAgKFBOR0NoZWNrZXIuY2hlY2spOgorICAgICAgICAoUE5HQ2hlY2tlci5fY29uZmlnX2Zp
bGVfcGF0aCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9wbmdf
dW5pdHRlc3QucHk6IEFkZGVkLgorICAgICAgICAoUE5HQ2hlY2tlclRlc3QpOgorICAgICAgICAo
UE5HQ2hlY2tlclRlc3QudGVzdF9pbml0KToKKyAgICAgICAgKFBOR0NoZWNrZXJUZXN0LnRlc3Rf
aW5pdC5tb2NrX2hhbmRsZV9zdHlsZV9lcnJvcik6CisgICAgICAgIChQTkdDaGVja2VyVGVzdC50
ZXN0X2NoZWNrKToKKyAgICAgICAgKFBOR0NoZWNrZXJUZXN0LnRlc3RfY2hlY2subW9ja19oYW5k
bGVfc3R5bGVfZXJyb3IpOgorICAgICAgICAoTW9ja1NDTURldGVjdG9yKToKKyAgICAgICAgKE1v
Y2tTQ01EZXRlY3Rvci5fX2luaXRfXyk6CisgICAgICAgIChNb2NrU0NNRGV0ZWN0b3IuZGlzcGxh
eV9uYW1lKToKKyAgICAgICAgKE1vY2tTQ01EZXRlY3Rvci5wcm9wZ2V0KToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L3N0eWxlL3BhdGNocmVhZGVyLnB5OgorICAgICAgICAoUGF0Y2hSZWFk
ZXIuY2hlY2spOgorCiAyMDEyLTAzLTA3ICBLYW5naWwgSGFuICA8a2FuZ2lsLmhhbkBzYW1zdW5n
LmNvbT4KIAogICAgICAgICBbRFJUXSBSZW1vdmUgUGxhaW5UZXh0Q29udHJvbGxlciBpbXBsZW1l
bnRhdGlvbnMuCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNr
ZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkKaW5kZXggZjdj
ODJjZi4uZTcyYTAyNSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9j
aGVja2VyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weQpA
QCAtNDAsNiArNDAsNyBAQCBmcm9tIGNoZWNrZXJzLmNvbW1vbiBpbXBvcnQgQ2FycmlhZ2VSZXR1
cm5DaGVja2VyCiBmcm9tIGNoZWNrZXJzLmNoYW5nZWxvZyBpbXBvcnQgQ2hhbmdlTG9nQ2hlY2tl
cgogZnJvbSBjaGVja2Vycy5jcHAgaW1wb3J0IENwcENoZWNrZXIKIGZyb20gY2hlY2tlcnMuanNv
bmNoZWNrZXIgaW1wb3J0IEpTT05DaGVja2VyCitmcm9tIGNoZWNrZXJzLnBuZyBpbXBvcnQgUE5H
Q2hlY2tlcgogZnJvbSBjaGVja2Vycy5weXRob24gaW1wb3J0IFB5dGhvbkNoZWNrZXIKIGZyb20g
Y2hlY2tlcnMudGVzdF9leHBlY3RhdGlvbnMgaW1wb3J0IFRlc3RFeHBlY3RhdGlvbnNDaGVja2Vy
CiBmcm9tIGNoZWNrZXJzLnRleHQgaW1wb3J0IFRleHRDaGVja2VyCkBAIC0yODksNiArMjkwLDgg
QEAgX1hNTF9GSUxFX0VYVEVOU0lPTlMgPSBbCiAgICAgJ3ZzcHJvcHMnLAogICAgIF0KIAorX1BO
R19GSUxFX0VYVEVOU0lPTiA9ICdwbmcnCisKICMgRmlsZXMgdG8gc2tpcCB0aGF0IGFyZSBsZXNz
IG9idmlvdXMuCiAjCiAjIFNvbWUgZmlsZXMgc2hvdWxkIGJlIHNraXBwZWQgd2hlbiBjaGVja2lu
ZyBzdHlsZS4gRm9yIGV4YW1wbGUsCkBAIC0zMTIsNiArMzE1LDcgQEAgX1NLSVBQRURfRklMRVNf
V0lUSE9VVF9XQVJOSU5HID0gWwogCiAjIEV4dGVuc2lvbnMgb2YgZmlsZXMgd2hpY2ggYXJlIGFs
bG93ZWQgdG8gY29udGFpbiBjYXJyaWFnZSByZXR1cm5zLgogX0NBUlJJQUdFX1JFVFVSTl9BTExP
V0VEX0ZJTEVfRVhURU5TSU9OUyA9IFsKKyAgICAncG5nJywKICAgICAndmNwcm9qJywKICAgICAn
dnNwcm9wcycsCiAgICAgXQpAQCAtMzMwLDYgKzMzNCw3IEBAIGRlZiBfYWxsX2NhdGVnb3JpZXMo
KToKICAgICBjYXRlZ29yaWVzID0gY2F0ZWdvcmllcy51bmlvbihKU09OQ2hlY2tlci5jYXRlZ29y
aWVzKQogICAgIGNhdGVnb3JpZXMgPSBjYXRlZ29yaWVzLnVuaW9uKFRlc3RFeHBlY3RhdGlvbnND
aGVja2VyLmNhdGVnb3JpZXMpCiAgICAgY2F0ZWdvcmllcyA9IGNhdGVnb3JpZXMudW5pb24oQ2hh
bmdlTG9nQ2hlY2tlci5jYXRlZ29yaWVzKQorICAgIGNhdGVnb3JpZXMgPSBjYXRlZ29yaWVzLnVu
aW9uKFBOR0NoZWNrZXIuY2F0ZWdvcmllcykKIAogICAgICMgRklYTUU6IENvbnNpZGVyIGFkZGlu
ZyBhbGwgb2YgdGhlIHBlcDggY2F0ZWdvcmllcy4gIFNpbmNlIHRoZXkKICAgICAjICAgICAgICBh
cmUgbm90IHRvbyBtZWFuaW5nZnVsIGZvciBkb2N1bWVudGF0aW9uIHB1cnBvc2VzLCBmb3IKQEAg
LTQ3MSwxMSArNDc2LDEyIEBAIGNsYXNzIEZpbGVUeXBlOgogICAgIENIQU5HRUxPRyA9IDEKICAg
ICBDUFAgPSAyCiAgICAgSlNPTiA9IDMKLSAgICBQWVRIT04gPSA0Ci0gICAgVEVYVCA9IDUKLSAg
ICBXQVRDSExJU1QgPSA2Ci0gICAgWE1MID0gNwotICAgIFhDT0RFUFJPSiA9IDgKKyAgICBQTkcg
PSA0CisgICAgUFlUSE9OID0gNQorICAgIFRFWFQgPSA2CisgICAgV0FUQ0hMSVNUID0gNworICAg
IFhNTCA9IDgKKyAgICBYQ09ERVBST0ogPSA5CiAKIAogY2xhc3MgQ2hlY2tlckRpc3BhdGNoZXIo
b2JqZWN0KToKQEAgLTQ4Nyw2ICs0OTMsOSBAQCBjbGFzcyBDaGVja2VyRGlzcGF0Y2hlcihvYmpl
Y3QpOgogICAgICAgICByZXR1cm4gb3MucGF0aC5zcGxpdGV4dChmaWxlX3BhdGgpWzFdLmxzdHJp
cCgiLiIpCiAKICAgICBkZWYgX3Nob3VsZF9za2lwX2ZpbGVfcGF0aChzZWxmLCBmaWxlX3BhdGgs
IHNraXBfYXJyYXlfZW50cnkpOgorICAgICAgICBtYXRjaCA9IHJlLnNlYXJjaCgiXHMqcG5nJCIs
IGZpbGVfcGF0aCkKKyAgICAgICAgaWYgbWF0Y2g6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UK
ICAgICAgICAgaWYgaXNpbnN0YW5jZShza2lwX2FycmF5X2VudHJ5LCBzdHIpOgogICAgICAgICAg
ICAgaWYgZmlsZV9wYXRoLmZpbmQoc2tpcF9hcnJheV9lbnRyeSkgPj0gMDoKICAgICAgICAgICAg
ICAgICByZXR1cm4gVHJ1ZQpAQCAtNTUwLDYgKzU1OSw4IEBAIGNsYXNzIENoZWNrZXJEaXNwYXRj
aGVyKG9iamVjdCk6CiAgICAgICAgICAgICByZXR1cm4gRmlsZVR5cGUuV0FUQ0hMSVNUCiAgICAg
ICAgIGVsaWYgZmlsZV9leHRlbnNpb24gPT0gX1hDT0RFUFJPSl9GSUxFX0VYVEVOU0lPTjoKICAg
ICAgICAgICAgIHJldHVybiBGaWxlVHlwZS5YQ09ERVBST0oKKyAgICAgICAgZWxpZiBmaWxlX2V4
dGVuc2lvbiA9PSBfUE5HX0ZJTEVfRVhURU5TSU9OOgorICAgICAgICAgICAgcmV0dXJuIEZpbGVU
eXBlLlBORwogICAgICAgICBlbGlmICgobm90IGZpbGVfZXh0ZW5zaW9uIGFuZCBvcy5wYXRoLmpv
aW4oIlRvb2xzIiwgIlNjcmlwdHMiKSBpbiBmaWxlX3BhdGgpIG9yCiAgICAgICAgICAgICAgIGZp
bGVfZXh0ZW5zaW9uIGluIF9URVhUX0ZJTEVfRVhURU5TSU9OUyk6CiAgICAgICAgICAgICByZXR1
cm4gRmlsZVR5cGUuVEVYVApAQCAtNTc4LDYgKzU4OSw4IEBAIGNsYXNzIENoZWNrZXJEaXNwYXRj
aGVyKG9iamVjdCk6CiAgICAgICAgICAgICBjaGVja2VyID0gWE1MQ2hlY2tlcihmaWxlX3BhdGgs
IGhhbmRsZV9zdHlsZV9lcnJvcikKICAgICAgICAgZWxpZiBmaWxlX3R5cGUgPT0gRmlsZVR5cGUu
WENPREVQUk9KOgogICAgICAgICAgICAgY2hlY2tlciA9IFhjb2RlUHJvamVjdEZpbGVDaGVja2Vy
KGZpbGVfcGF0aCwgaGFuZGxlX3N0eWxlX2Vycm9yKQorICAgICAgICBlbGlmIGZpbGVfdHlwZSA9
PSBGaWxlVHlwZS5QTkc6CisgICAgICAgICAgICBjaGVja2VyID0gUE5HQ2hlY2tlcihmaWxlX3Bh
dGgsIGhhbmRsZV9zdHlsZV9lcnJvcikKICAgICAgICAgZWxpZiBmaWxlX3R5cGUgPT0gRmlsZVR5
cGUuVEVYVDoKICAgICAgICAgICAgIGJhc2VuYW1lID0gb3MucGF0aC5iYXNlbmFtZShmaWxlX3Bh
dGgpCiAgICAgICAgICAgICBpZiBiYXNlbmFtZSA9PSAndGVzdF9leHBlY3RhdGlvbnMudHh0JyBv
ciBiYXNlbmFtZSA9PSAnZHJ0X2V4cGVjdGF0aW9ucy50eHQnOgpkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9zdHlsZS9jaGVja2VyX3VuaXR0ZXN0LnB5CmluZGV4IDYwYTk1OWYuLmQ4MzRm
ZDUgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcl91bml0
dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJfdW5pdHRl
c3QucHkKQEAgLTU5MCw3ICs1OTAsNiBAQCBjbGFzcyBDaGVja2VyRGlzcGF0Y2hlckRpc3BhdGNo
VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHBhdGhzID0gWwogICAgICAgICAgICAi
TWFrZWZpbGUiLAogICAgICAgICAgICAiZm9vLmFzZGYiLCAgIyBOb24tc2Vuc2ljYWwgZmlsZSBl
eHRlbnNpb24uCi0gICAgICAgICAgICJmb28ucG5nIiwKICAgICAgICAgICAgImZvby5leGUiLAog
ICAgICAgICAgICAgXQogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxl
L2NoZWNrZXJzL3BuZy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMv
cG5nLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4NGNjMzcKLS0tIC9k
ZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3BuZy5w
eQpAQCAtMCwwICsxLDk5IEBACisjIENvcHlyaWdodCAoQykgMjAxMiBCYWxhenMgQW5rZXMgKGJh
bmtAaW5mLnUtc3plZ2VkLmh1KSBVbml2ZXJzaXR5IG9mIFN6ZWdlZAorIworIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCisiIiJTdXBwb3J0cyBj
aGVja2luZyBXZWJLaXQgc3R5bGUgaW4gcG5nIGZpbGVzLiIiIgorCitpbXBvcnQgb3MKK2ltcG9y
dCByZQoraW1wb3J0IHN5cworZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBp
bXBvcnQgRXhlY3V0aXZlCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbSBp
bXBvcnQgRmlsZVN5c3RlbQorZnJvbSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuc2NtLmRldGVj
dGlvbiBpbXBvcnQgU0NNRGV0ZWN0b3IKKworCitjbGFzcyBQTkdDaGVja2VyKG9iamVjdCk6Cisg
ICAgIiIiQ2hlY2sgc3ZuOm1pbWUtdHlwZSBmb3IgY2hlY2tpbmcgc3R5bGUiIiIKKworICAgIGNh
dGVnb3JpZXMgPSBzZXQoWydpbWFnZS9wbmcnXSkKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBm
aWxlX3BhdGgsIGhhbmRsZV9zdHlsZV9lcnJvciwgZmlsZXN5c3RlbT1Ob25lLCBzY209Tm9uZSwg
cGxhdGZvcm09Tm9uZSk6CisgICAgICAgIHNlbGYuX2ZpbGVfcGF0aCA9IGZpbGVfcGF0aAorICAg
ICAgICBzZWxmLl9oYW5kbGVfc3R5bGVfZXJyb3IgPSBoYW5kbGVfc3R5bGVfZXJyb3IKKyAgICAg
ICAgc2VsZi5fZnMgPSBmaWxlc3lzdGVtIG9yIEZpbGVTeXN0ZW0oKQorICAgICAgICBzZWxmLl9k
ZXRlY3RvciA9IHNjbSBvciBTQ01EZXRlY3RvcihzZWxmLl9mcywgRXhlY3V0aXZlKCkpLmRldGVj
dF9zY21fc3lzdGVtKHNlbGYuX2ZzLmdldGN3ZCgpKQorICAgICAgICBzZWxmLl9wbGF0Zm9ybSA9
IHBsYXRmb3JtIG9yIHN5cy5wbGF0Zm9ybQorCisgICAgZGVmIGNoZWNrKHNlbGYsIGlubGluZT1O
b25lKToKKyAgICAgICAgZXJyb3JzdHIgPSAiIgorICAgICAgICBjb25maWdfZmlsZV9wYXRoID0g
IiIKKyAgICAgICAgZGV0ZWN0aW9uID0gc2VsZi5fZGV0ZWN0b3IuZGlzcGxheV9uYW1lKCkKKwor
ICAgICAgICBpZiBkZXRlY3Rpb24gPT0gImdpdCI6CisgICAgICAgICAgICBjb25maWdfZmlsZV9w
YXRoID0gc2VsZi5fY29uZmlnX2ZpbGVfcGF0aCgpCisgICAgICAgICAgICB0aGVyZV9pc19lbmFi
bGVfbGluZSA9IEZhbHNlCisgICAgICAgICAgICB0aGVyZV9pc19wbmdfbGluZSA9IEZhbHNlCisg
ICAgICAgICAgICBlcnJvcnN0cl9hdXRvcHJvcCA9ICIiCisgICAgICAgICAgICBlcnJvcnN0cl9w
bmcgPSAiIgorCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgY29uZmlnX2ZpbGUg
PSBzZWxmLl9mcy5yZWFkX3RleHRfZmlsZShjb25maWdfZmlsZV9wYXRoKQorICAgICAgICAgICAg
ZXhjZXB0IElPRXJyb3I6CisgICAgICAgICAgICAgICAgZXJyb3JzdHIgPSAiVGhlcmUgaXMgbm8g
IiArIGNvbmZpZ19maWxlX3BhdGgKKyAgICAgICAgICAgICAgICBzZWxmLl9oYW5kbGVfc3R5bGVf
ZXJyb3IoMCwgJ2ltYWdlL3BuZycsIDUsIGVycm9yc3RyKQorICAgICAgICAgICAgICAgIHJldHVy
bgorCisgICAgICAgICAgICBmb3IgbGluZW51bWJlciwgbGluZSBpbiBlbnVtZXJhdGUoY29uZmln
X2ZpbGUuc3BsaXQoJ1xuJykpOgorICAgICAgICAgICAgICAgIG1hdGNoID0gcmUuc2VhcmNoKCJe
XHMqLiplbmFibGUtYXV0by1wcm9wcyA9ICh5ZXN8bm8pIiwgbGluZSkKKyAgICAgICAgICAgICAg
ICBpZiAobWF0Y2ggYW5kIG1hdGNoLmdyb3VwKDApWzBdICE9ICJlIiBhbmQgbm90IHRoZXJlX2lz
X2VuYWJsZV9saW5lKSBvciAobWF0Y2ggYW5kIG1hdGNoLmdyb3VwKDApLmVuZHN3aXRoKCJubyIp
KToKKyAgICAgICAgICAgICAgICAgICAgZXJyb3JzdHJfYXV0b3Byb3AgPSAiSGF2ZSB0byBlbmFi
bGUgYXV0byBwcm9wcyBpbiB0aGUgc3VidmVyc2lvbiBjb25maWcgZmlsZSAoIiArIGNvbmZpZ19m
aWxlX3BhdGggKyAiLCBsaW5lOiIgKyBzdHIobGluZW51bWJlciArIDEpICsgIikuICIKKyAgICAg
ICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBpZiBtYXRjaCBhbmQgbWF0
Y2guZ3JvdXAoMClbMF0gPT0gImUiIGFuZCBub3QgdGhlcmVfaXNfZW5hYmxlX2xpbmUgYW5kIG5v
dCBtYXRjaC5ncm91cCgwKS5lbmRzd2l0aCgibm8iKToKKyAgICAgICAgICAgICAgICAgICAgdGhl
cmVfaXNfZW5hYmxlX2xpbmUgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgIGVycm9yc3RyX2F1
dG9wcm9wID0gIiIKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAg
ICBtYXRjaCA9IHJlLnNlYXJjaCgiXlxzKi4qXCpcLnBuZyA9IHN2bjptaW1lLXR5cGU9aW1hZ2Uv
cG5nIiwgbGluZSkKKyAgICAgICAgICAgICAgICBpZiBtYXRjaCBhbmQgbWF0Y2guZ3JvdXAoMClb
MF0gIT0gIioiIGFuZCBub3QgdGhlcmVfaXNfcG5nX2xpbmU6CisgICAgICAgICAgICAgICAgICAg
IGVycm9yc3RyX3BuZyA9ICJIYXZlIHRvIHNldCB0aGUgc3ZuOm1pbWUtdHlwZSBpbiB0aGUgc3Vi
dmVyc2lvbiBjb25maWcgZmlsZSAoIiArIGNvbmZpZ19maWxlX3BhdGggKyAiLCBsaW5lOiIgKyBz
dHIobGluZW51bWJlciArIDEpICsgIikuIgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQor
ICAgICAgICAgICAgICAgIGlmIG1hdGNoIGFuZCBtYXRjaC5ncm91cCgwKVswXSA9PSAiKiIgYW5k
IG5vdCB0aGVyZV9pc19wbmdfbGluZToKKyAgICAgICAgICAgICAgICAgICAgdGhlcmVfaXNfcG5n
X2xpbmUgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgIGVycm9yc3RyX3BuZyA9ICIiCisgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBlcnJvcnN0ciA9IGVycm9yc3Ry
X2F1dG9wcm9wICsgZXJyb3JzdHJfcG5nCisgICAgICAgICAgICBpZiBlcnJvcnN0cjoKKyAgICAg
ICAgICAgICAgICBzZWxmLl9oYW5kbGVfc3R5bGVfZXJyb3IoMCwgJ2ltYWdlL3BuZycsIDUsIGVy
cm9yc3RyKQorCisgICAgICAgIGlmIGRldGVjdGlvbiA9PSAic3ZuIjoKKyAgICAgICAgICAgIHBy
b3BfZ2V0ID0gc2VsZi5fZGV0ZWN0b3IucHJvcGdldCgic3ZuOm1pbWUtdHlwZSIsIHNlbGYuX2Zp
bGVfcGF0aCkKKyAgICAgICAgICAgIGlmIHByb3BfZ2V0ICE9ICJpbWFnZS9wbmciOgorICAgICAg
ICAgICAgICAgIGVycm9yc3RyID0gIlNldCB0aGUgc3ZuOm1pbWUtdHlwZSBwcm9wZXJ0eSAoc3Zu
IHByb3BzZXQgc3ZuOm1pbWUtdHlwZSBpbWFnZS9wbmcgIiArIHNlbGYuX2ZpbGVfcGF0aCArICIp
LiIKKyAgICAgICAgICAgICAgICBzZWxmLl9oYW5kbGVfc3R5bGVfZXJyb3IoMCwgJ2ltYWdlL3Bu
ZycsIDUsIGVycm9yc3RyKQorCisgICAgZGVmIF9jb25maWdfZmlsZV9wYXRoKHNlbGYpOgorICAg
ICAgICBjb25maWdfZmlsZSA9ICIiCisgICAgICAgIGlmIHNlbGYuX3BsYXRmb3JtLnN0YXJ0c3dp
dGgoJ2xpbnV4Jykgb3Igc2VsZi5fcGxhdGZvcm0uc3RhcnRzd2l0aCgnZGFyd2luJyk6CisgICAg
ICAgICAgICBjb25maWdfZmlsZV9wYXRoID0gc2VsZi5fZnMuam9pbihzZWxmLl9mcy5leHBhbmR1
c2VyKCJ+IikgKyAiLyIsICIuc3VidmVyc2lvbi9jb25maWciKQorICAgICAgICBlbGlmIHNlbGYu
X3BsYXRmb3JtLnN0YXJ0c3dpdGgoJ3dpbicpIG9yIHNlbGYuX3BsYXRmb3JtLnN0YXJ0c3dpdGgo
J2N5Z3dpbicpOgorICAgICAgICAgICAgY29uZmlnX2ZpbGVfcGF0aCA9IHNlbGYuX2ZzLmpvaW4o
b3MuZW52aXJvblsnQVBQREFUQSddICsgIlxcIiwgIlN1YnZlcnNpb25cY29uZmlnIikKKyAgICAg
ICAgcmV0dXJuIGNvbmZpZ19maWxlX3BhdGgKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvc3R5bGUvY2hlY2tlcnMvcG5nX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9zdHlsZS9jaGVja2Vycy9wbmdfdW5pdHRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uOTJkYmI5MQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvcG5nX3VuaXR0ZXN0LnB5CkBAIC0wLDAgKzEsMTE5IEBA
CisjIENvcHlyaWdodCAoQykgMjAxMiBCYWxhenMgQW5rZXMgKGJhbmtAaW5mLnUtc3plZ2VkLmh1
KSBVbml2ZXJzaXR5IG9mIFN6ZWdlZAorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFy
ZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKworIiIiVW5pdCB0ZXN0IGZvciBwbmcucHkuIiIiCisKK2lt
cG9ydCB1bml0dGVzdAorZnJvbSBwbmcgaW1wb3J0IFBOR0NoZWNrZXIKK2Zyb20gd2Via2l0cHku
Y29tbW9uLnN5c3RlbS5maWxlc3lzdGVtX21vY2sgaW1wb3J0IE1vY2tGaWxlU3lzdGVtCisKKwor
Y2xhc3MgUE5HQ2hlY2tlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIlRlc3RzIFBO
R0NoZWNrZXIgY2xhc3MuIiIiCisKKyAgICBkZWYgdGVzdF9pbml0KHNlbGYpOgorICAgICAgICAi
IiJUZXN0IF9faW5pdF9fKCkgbWV0aG9kLiIiIgorCisgICAgICAgIGRlZiBtb2NrX2hhbmRsZV9z
dHlsZV9lcnJvcihzZWxmKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBmcyA9IE1vY2tG
aWxlU3lzdGVtKCkKKyAgICAgICAgc2NtID0gTW9ja1NDTURldGVjdG9yKCdnaXQnKQorICAgICAg
ICBjaGVja2VyID0gUE5HQ2hlY2tlcigidGVzdC9jb25maWciLCBtb2NrX2hhbmRsZV9zdHlsZV9l
cnJvciwgZnMsIHNjbSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY2hlY2tlci5fZmlsZV9w
YXRoLCAidGVzdC9jb25maWciKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjaGVja2VyLl9o
YW5kbGVfc3R5bGVfZXJyb3IsIG1vY2tfaGFuZGxlX3N0eWxlX2Vycm9yKQorCisgICAgZGVmIHRl
c3RfY2hlY2soc2VsZik6CisgICAgICAgIGVycm9ycyA9IFtdCisKKyAgICAgICAgZGVmIG1vY2tf
aGFuZGxlX3N0eWxlX2Vycm9yKGxpbmVfbnVtYmVyLCBjYXRlZ29yeSwgY29uZmlkZW5jZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlKToKKyAgICAgICAgICAg
IGVycm9yID0gKGxpbmVfbnVtYmVyLCBjYXRlZ29yeSwgY29uZmlkZW5jZSwgbWVzc2FnZSkKKyAg
ICAgICAgICAgIGVycm9ycy5hcHBlbmQoZXJyb3IpCisKKyAgICAgICAgZmlsZV9wYXRoID0gJycK
KworICAgICAgICBmcyA9IE1vY2tGaWxlU3lzdGVtKCkKKworICAgICAgICBzY20gPSBNb2NrU0NN
RGV0ZWN0b3IoJ3N2bicpCisgICAgICAgIGNoZWNrZXIgPSBQTkdDaGVja2VyKGZpbGVfcGF0aCwg
bW9ja19oYW5kbGVfc3R5bGVfZXJyb3IsIGZzLCBzY20pCisgICAgICAgIGNoZWNrZXIuY2hlY2so
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhsZW4oZXJyb3JzKSwgMSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbHMoZXJyb3JzWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAoMCwg
J2ltYWdlL3BuZycsIDUsICdTZXQgdGhlIHN2bjptaW1lLXR5cGUgcHJvcGVydHkgKHN2biBwcm9w
c2V0IHN2bjptaW1lLXR5cGUgaW1hZ2UvcG5nICkuJykpCisKKyAgICAgICAgZmlsZXMgPSB7Jy9V
c2Vycy9tb2NrLy5zdWJ2ZXJzaW9uL2NvbmZpZyc6ICdlbmFibGUtYXV0by1wcm9wcyA9IHllcyd9
CisgICAgICAgIGZzID0gTW9ja0ZpbGVTeXN0ZW0oZmlsZXMpCisgICAgICAgIHNjbSA9IE1vY2tT
Q01EZXRlY3RvcignZ2l0JykKKyAgICAgICAgZXJyb3JzID0gW10KKyAgICAgICAgY2hlY2tlciA9
IFBOR0NoZWNrZXIoImNvbmZpZyIsIG1vY2tfaGFuZGxlX3N0eWxlX2Vycm9yLCBmcywgc2NtLCBw
bGF0Zm9ybT0nbGludXgnKQorICAgICAgICBjaGVja2VyLmNoZWNrKCkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbHMobGVuKGVycm9ycyksIDApCisKKyAgICAgICAgZmlsZXMgPSB7Jy9Vc2Vycy9t
b2NrLy5zdWJ2ZXJzaW9uL2NvbmZpZyc6ICcjZW5hYmxlLWF1dG8tcHJvcHMgPSB5ZXMnfQorICAg
ICAgICBmcyA9IE1vY2tGaWxlU3lzdGVtKGZpbGVzKQorICAgICAgICBzY20gPSBNb2NrU0NNRGV0
ZWN0b3IoJ2dpdCcpCisgICAgICAgIGVycm9ycyA9IFtdCisgICAgICAgIGNoZWNrZXIgPSBQTkdD
aGVja2VyKCJjb25maWciLCBtb2NrX2hhbmRsZV9zdHlsZV9lcnJvciwgZnMsIHNjbSwgcGxhdGZv
cm09J2xpbnV4JykKKyAgICAgICAgY2hlY2tlci5jaGVjaygpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWxzKGxlbihlcnJvcnMpLCAxKQorCisgICAgICAgIGZpbGVzID0geycvVXNlcnMvbW9jay8u
c3VidmVyc2lvbi9jb25maWcnOiAnZW5hYmxlLWF1dG8tcHJvcHMgPSB5ZXNcbiNlbmFibGUtYXV0
by1wcm9wcyA9IHllcyd9CisgICAgICAgIGZzID0gTW9ja0ZpbGVTeXN0ZW0oZmlsZXMpCisgICAg
ICAgIHNjbSA9IE1vY2tTQ01EZXRlY3RvcignZ2l0JykKKyAgICAgICAgZXJyb3JzID0gW10KKyAg
ICAgICAgY2hlY2tlciA9IFBOR0NoZWNrZXIoImNvbmZpZyIsIG1vY2tfaGFuZGxlX3N0eWxlX2Vy
cm9yLCBmcywgc2NtLCBwbGF0Zm9ybT0nbGludXgnKQorICAgICAgICBjaGVja2VyLmNoZWNrKCkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMobGVuKGVycm9ycyksIDApCisKKyAgICAgICAgZmls
ZXMgPSB7Jy9Vc2Vycy9tb2NrLy5zdWJ2ZXJzaW9uL2NvbmZpZyc6ICcjZW5hYmxlLWF1dG8tcHJv
cHMgPSB5ZXNcbmVuYWJsZS1hdXRvLXByb3BzID0geWVzJ30KKyAgICAgICAgZnMgPSBNb2NrRmls
ZVN5c3RlbShmaWxlcykKKyAgICAgICAgc2NtID0gTW9ja1NDTURldGVjdG9yKCdnaXQnKQorICAg
ICAgICBlcnJvcnMgPSBbXQorICAgICAgICBjaGVja2VyID0gUE5HQ2hlY2tlcigiY29uZmlnIiwg
bW9ja19oYW5kbGVfc3R5bGVfZXJyb3IsIGZzLCBzY20sIHBsYXRmb3JtPSdsaW51eCcpCisgICAg
ICAgIGNoZWNrZXIuY2hlY2soKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhsZW4oZXJyb3Jz
KSwgMCkKKworICAgICAgICBmaWxlcyA9IHsnL1VzZXJzL21vY2svLnN1YnZlcnNpb24vY29uZmln
JzogJ2VuYWJsZS1hdXRvLXByb3BzID0gbm8nfQorICAgICAgICBmcyA9IE1vY2tGaWxlU3lzdGVt
KGZpbGVzKQorICAgICAgICBzY20gPSBNb2NrU0NNRGV0ZWN0b3IoJ2dpdCcpCisgICAgICAgIGVy
cm9ycyA9IFtdCisgICAgICAgIGNoZWNrZXIgPSBQTkdDaGVja2VyKCJjb25maWciLCBtb2NrX2hh
bmRsZV9zdHlsZV9lcnJvciwgZnMsIHNjbSwgcGxhdGZvcm09J2xpbnV4JykKKyAgICAgICAgY2hl
Y2tlci5jaGVjaygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGxlbihlcnJvcnMpLCAxKQor
CitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQorCisKK2Ns
YXNzIE1vY2tTQ01EZXRlY3RvcihvYmplY3QpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHNj
bSwgcHJvcD1Ob25lKToKKyAgICAgICAgc2VsZi5fc2NtID0gc2NtCisgICAgICAgIHNlbGYuX3By
b3AgPSBwcm9wCisKKyAgICBkZWYgZGlzcGxheV9uYW1lKHNlbGYpOgorICAgICAgICByZXR1cm4g
c2VsZi5fc2NtCisKKyAgICBkZWYgcHJvcGdldChzZWxmLCBwbmFtZSwgcGF0aCk6CisgICAgICAg
IHJldHVybiBzZWxmLl9wcm9wCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0
eWxlL3BhdGNocmVhZGVyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9wYXRjaHJl
YWRlci5weQppbmRleCA2YWMzMmRlLi5lYjEzZTBlIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L3N0eWxlL3BhdGNocmVhZGVyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvc3R5bGUvcGF0Y2hyZWFkZXIucHkKQEAgLTI5LDggKzI5LDEyIEBACiAjIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAKIGltcG9ydCBsb2dnaW5nCitpbXBvcnQgcmUKIAogZnJvbSB3ZWJraXRweS5jb21tb24uY2hl
Y2tvdXQuZGlmZl9wYXJzZXIgaW1wb3J0IERpZmZQYXJzZXIKK2Zyb20gd2Via2l0cHkuY29tbW9u
LnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IEV4ZWN1dGl2ZQorZnJvbSB3ZWJraXRweS5jb21tb24u
c3lzdGVtLmZpbGVzeXN0ZW0gaW1wb3J0IEZpbGVTeXN0ZW0KK2Zyb20gd2Via2l0cHkuY29tbW9u
LmNoZWNrb3V0LnNjbS5kZXRlY3Rpb24gaW1wb3J0IFNDTURldGVjdG9yCiAKIAogX2xvZyA9IGxv
Z2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQpAQCAtNTIsMTEgKzU2LDIzIEBAIGNsYXNzIFBhdGNo
UmVhZGVyKG9iamVjdCk6CiAgICAgICAgICIiIkNoZWNrIHN0eWxlIGluIHRoZSBnaXZlbiBwYXRj
aC4iIiIKICAgICAgICAgcGF0Y2hfZmlsZXMgPSBEaWZmUGFyc2VyKHBhdGNoX3N0cmluZy5zcGxp
dGxpbmVzKCkpLmZpbGVzCiAKKyAgICAgICAgIyBJZiB0aGUgdXNlciB1c2VzIGdpdCwgY2hlY2tp
bmcgc3VidmVyc2lvbiBjb25maWcgZmlsZSBvbmx5IG9uY2UgaXMgZW5vdWdoLgorICAgICAgICBj
YWxsX29ubHlfb25jZSA9IFRydWUKKwogICAgICAgICBmb3IgcGF0aCwgZGlmZl9maWxlIGluIHBh
dGNoX2ZpbGVzLml0ZXJpdGVtcygpOgogICAgICAgICAgICAgbGluZV9udW1iZXJzID0gZGlmZl9m
aWxlLmFkZGVkX29yX21vZGlmaWVkX2xpbmVfbnVtYmVycygpCiAgICAgICAgICAgICBfbG9nLmRl
YnVnKCdGb3VuZCAlcyBuZXcgb3IgbW9kaWZpZWQgbGluZXMgaW46ICVzJyAlIChsZW4obGluZV9u
dW1iZXJzKSwgcGF0aCkpCiAKICAgICAgICAgICAgIGlmIG5vdCBsaW5lX251bWJlcnM6CisgICAg
ICAgICAgICAgICAgbWF0Y2ggPSByZS5zZWFyY2goIlxzKnBuZyQiLCBwYXRoKQorICAgICAgICAg
ICAgICAgIGlmIG1hdGNoOgorICAgICAgICAgICAgICAgICAgICBpZiBjYWxsX29ubHlfb25jZToK
KyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3RleHRfZmlsZV9yZWFkZXIucHJvY2Vzc19m
aWxlKGZpbGVfcGF0aD1wYXRoLCBsaW5lX251bWJlcnM9Tm9uZSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGN3ZCA9IEZpbGVTeXN0ZW0oKS5nZXRjd2QoKQorICAgICAgICAgICAgICAgICAgICAg
ICAgZGV0ZWN0aW9uID0gU0NNRGV0ZWN0b3IoRmlsZVN5c3RlbSgpLCBFeGVjdXRpdmUoKSkuZGV0
ZWN0X3NjbV9zeXN0ZW0oY3dkKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGV0ZWN0aW9u
LmRpc3BsYXlfbmFtZSgpID09ICJnaXQiOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNh
bGxfb25seV9vbmNlID0gRmFsc2UKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAg
ICAgICAgICAgICAjIERvbid0IGNoZWNrIGZpbGVzIHdoaWNoIGNvbnRhaW4gb25seSBkZWxldGVk
IGxpbmVzCiAgICAgICAgICAgICAgICAgIyBhcyB0aGV5IGNhbiBuZXZlciBhZGQgc3R5bGUgZXJy
b3JzLiBIb3dldmVyLCBtYXJrIHRoZW0gYXMKICAgICAgICAgICAgICAgICAjIHByb2Nlc3NlZCBz
byB0aGF0IHdlIGNvdW50IHVwIG51bWJlciBvZiBzdWNoIGZpbGVzLgo=
</data>
<flag name="review"
          id="137208"
          type_id="1"
          status="-"
          setter="tony"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133465</attachid>
            <date>2012-03-23 05:23:31 -0700</date>
            <delta_ts>2012-03-28 13:51:53 -0700</delta_ts>
            <desc>proposed fix</desc>
            <filename>2012-03-23.patch</filename>
            <type>text/plain</type>
            <size>17018</size>
            <attacher name="Balazs Ankes">bank</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhMDBi
MGU5Li5mOWNkODdhIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTItMDMtMjMgIEJhbGF6cyBBbmtlcyAgPGJhbmtA
aW5mLnUtc3plZ2VkLmh1PgorCisgICAgICAgIEFkZCBwbmcgY2hlY2tpbmcgdG8gY2hlY2std2Vi
a2l0LXN0eWxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03NTgyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5OgorICAgICAgICAoX2FsbF9jYXRl
Z29yaWVzKToKKyAgICAgICAgKEZpbGVUeXBlKToKKyAgICAgICAgKENoZWNrZXJEaXNwYXRjaGVy
Ll9zaG91bGRfc2tpcF9maWxlX3BhdGgpOgorICAgICAgICAoQ2hlY2tlckRpc3BhdGNoZXIuX2Zp
bGVfdHlwZSk6CisgICAgICAgIChDaGVja2VyRGlzcGF0Y2hlci5fY3JlYXRlX2NoZWNrZXIpOgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcl91bml0dGVzdC5weToKKyAg
ICAgICAgKENoZWNrZXJEaXNwYXRjaGVyRGlzcGF0Y2hUZXN0LnRlc3Rfbm9uZV9wYXRocyk6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9wbmcucHk6IEFkZGVkLgor
ICAgICAgICAoUE5HQ2hlY2tlcik6CisgICAgICAgIChQTkdDaGVja2VyLl9faW5pdF9fKToKKyAg
ICAgICAgKFBOR0NoZWNrZXIuY2hlY2spOgorICAgICAgICAoUE5HQ2hlY2tlci5fY29uZmlnX2Zp
bGVfcGF0aCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9wbmdf
dW5pdHRlc3QucHk6IEFkZGVkLgorICAgICAgICAoTW9ja1NDTURldGVjdG9yKToKKyAgICAgICAg
KE1vY2tTQ01EZXRlY3Rvci5fX2luaXRfXyk6CisgICAgICAgIChNb2NrU0NNRGV0ZWN0b3IuZGlz
cGxheV9uYW1lKToKKyAgICAgICAgKE1vY2tTQ01EZXRlY3Rvci5wcm9wZ2V0KToKKyAgICAgICAg
KFBOR0NoZWNrZXJUZXN0KToKKyAgICAgICAgKFBOR0NoZWNrZXJUZXN0LnRlc3RfaW5pdCk6Cisg
ICAgICAgIChQTkdDaGVja2VyVGVzdC50ZXN0X2luaXQubW9ja19oYW5kbGVfc3R5bGVfZXJyb3Ip
OgorICAgICAgICAoUE5HQ2hlY2tlclRlc3QudGVzdF9jaGVjayk6CisgICAgICAgIChQTkdDaGVj
a2VyVGVzdC50ZXN0X2NoZWNrLm1vY2tfaGFuZGxlX3N0eWxlX2Vycm9yKToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L3N0eWxlL3BhdGNocmVhZGVyLnB5OgorICAgICAgICAoUGF0Y2hSZWFk
ZXIuY2hlY2spOgorCiAyMDEyLTAzLTA3ICBLYW5naWwgSGFuICA8a2FuZ2lsLmhhbkBzYW1zdW5n
LmNvbT4KIAogICAgICAgICBbRFJUXSBSZW1vdmUgUGxhaW5UZXh0Q29udHJvbGxlciBpbXBsZW1l
bnRhdGlvbnMuCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNr
ZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkKaW5kZXggZjdj
ODJjZi4uZTcyYTAyNSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9j
aGVja2VyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weQpA
QCAtNDAsNiArNDAsNyBAQCBmcm9tIGNoZWNrZXJzLmNvbW1vbiBpbXBvcnQgQ2FycmlhZ2VSZXR1
cm5DaGVja2VyCiBmcm9tIGNoZWNrZXJzLmNoYW5nZWxvZyBpbXBvcnQgQ2hhbmdlTG9nQ2hlY2tl
cgogZnJvbSBjaGVja2Vycy5jcHAgaW1wb3J0IENwcENoZWNrZXIKIGZyb20gY2hlY2tlcnMuanNv
bmNoZWNrZXIgaW1wb3J0IEpTT05DaGVja2VyCitmcm9tIGNoZWNrZXJzLnBuZyBpbXBvcnQgUE5H
Q2hlY2tlcgogZnJvbSBjaGVja2Vycy5weXRob24gaW1wb3J0IFB5dGhvbkNoZWNrZXIKIGZyb20g
Y2hlY2tlcnMudGVzdF9leHBlY3RhdGlvbnMgaW1wb3J0IFRlc3RFeHBlY3RhdGlvbnNDaGVja2Vy
CiBmcm9tIGNoZWNrZXJzLnRleHQgaW1wb3J0IFRleHRDaGVja2VyCkBAIC0yODksNiArMjkwLDgg
QEAgX1hNTF9GSUxFX0VYVEVOU0lPTlMgPSBbCiAgICAgJ3ZzcHJvcHMnLAogICAgIF0KIAorX1BO
R19GSUxFX0VYVEVOU0lPTiA9ICdwbmcnCisKICMgRmlsZXMgdG8gc2tpcCB0aGF0IGFyZSBsZXNz
IG9idmlvdXMuCiAjCiAjIFNvbWUgZmlsZXMgc2hvdWxkIGJlIHNraXBwZWQgd2hlbiBjaGVja2lu
ZyBzdHlsZS4gRm9yIGV4YW1wbGUsCkBAIC0zMTIsNiArMzE1LDcgQEAgX1NLSVBQRURfRklMRVNf
V0lUSE9VVF9XQVJOSU5HID0gWwogCiAjIEV4dGVuc2lvbnMgb2YgZmlsZXMgd2hpY2ggYXJlIGFs
bG93ZWQgdG8gY29udGFpbiBjYXJyaWFnZSByZXR1cm5zLgogX0NBUlJJQUdFX1JFVFVSTl9BTExP
V0VEX0ZJTEVfRVhURU5TSU9OUyA9IFsKKyAgICAncG5nJywKICAgICAndmNwcm9qJywKICAgICAn
dnNwcm9wcycsCiAgICAgXQpAQCAtMzMwLDYgKzMzNCw3IEBAIGRlZiBfYWxsX2NhdGVnb3JpZXMo
KToKICAgICBjYXRlZ29yaWVzID0gY2F0ZWdvcmllcy51bmlvbihKU09OQ2hlY2tlci5jYXRlZ29y
aWVzKQogICAgIGNhdGVnb3JpZXMgPSBjYXRlZ29yaWVzLnVuaW9uKFRlc3RFeHBlY3RhdGlvbnND
aGVja2VyLmNhdGVnb3JpZXMpCiAgICAgY2F0ZWdvcmllcyA9IGNhdGVnb3JpZXMudW5pb24oQ2hh
bmdlTG9nQ2hlY2tlci5jYXRlZ29yaWVzKQorICAgIGNhdGVnb3JpZXMgPSBjYXRlZ29yaWVzLnVu
aW9uKFBOR0NoZWNrZXIuY2F0ZWdvcmllcykKIAogICAgICMgRklYTUU6IENvbnNpZGVyIGFkZGlu
ZyBhbGwgb2YgdGhlIHBlcDggY2F0ZWdvcmllcy4gIFNpbmNlIHRoZXkKICAgICAjICAgICAgICBh
cmUgbm90IHRvbyBtZWFuaW5nZnVsIGZvciBkb2N1bWVudGF0aW9uIHB1cnBvc2VzLCBmb3IKQEAg
LTQ3MSwxMSArNDc2LDEyIEBAIGNsYXNzIEZpbGVUeXBlOgogICAgIENIQU5HRUxPRyA9IDEKICAg
ICBDUFAgPSAyCiAgICAgSlNPTiA9IDMKLSAgICBQWVRIT04gPSA0Ci0gICAgVEVYVCA9IDUKLSAg
ICBXQVRDSExJU1QgPSA2Ci0gICAgWE1MID0gNwotICAgIFhDT0RFUFJPSiA9IDgKKyAgICBQTkcg
PSA0CisgICAgUFlUSE9OID0gNQorICAgIFRFWFQgPSA2CisgICAgV0FUQ0hMSVNUID0gNworICAg
IFhNTCA9IDgKKyAgICBYQ09ERVBST0ogPSA5CiAKIAogY2xhc3MgQ2hlY2tlckRpc3BhdGNoZXIo
b2JqZWN0KToKQEAgLTQ4Nyw2ICs0OTMsOSBAQCBjbGFzcyBDaGVja2VyRGlzcGF0Y2hlcihvYmpl
Y3QpOgogICAgICAgICByZXR1cm4gb3MucGF0aC5zcGxpdGV4dChmaWxlX3BhdGgpWzFdLmxzdHJp
cCgiLiIpCiAKICAgICBkZWYgX3Nob3VsZF9za2lwX2ZpbGVfcGF0aChzZWxmLCBmaWxlX3BhdGgs
IHNraXBfYXJyYXlfZW50cnkpOgorICAgICAgICBtYXRjaCA9IHJlLnNlYXJjaCgiXHMqcG5nJCIs
IGZpbGVfcGF0aCkKKyAgICAgICAgaWYgbWF0Y2g6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UK
ICAgICAgICAgaWYgaXNpbnN0YW5jZShza2lwX2FycmF5X2VudHJ5LCBzdHIpOgogICAgICAgICAg
ICAgaWYgZmlsZV9wYXRoLmZpbmQoc2tpcF9hcnJheV9lbnRyeSkgPj0gMDoKICAgICAgICAgICAg
ICAgICByZXR1cm4gVHJ1ZQpAQCAtNTUwLDYgKzU1OSw4IEBAIGNsYXNzIENoZWNrZXJEaXNwYXRj
aGVyKG9iamVjdCk6CiAgICAgICAgICAgICByZXR1cm4gRmlsZVR5cGUuV0FUQ0hMSVNUCiAgICAg
ICAgIGVsaWYgZmlsZV9leHRlbnNpb24gPT0gX1hDT0RFUFJPSl9GSUxFX0VYVEVOU0lPTjoKICAg
ICAgICAgICAgIHJldHVybiBGaWxlVHlwZS5YQ09ERVBST0oKKyAgICAgICAgZWxpZiBmaWxlX2V4
dGVuc2lvbiA9PSBfUE5HX0ZJTEVfRVhURU5TSU9OOgorICAgICAgICAgICAgcmV0dXJuIEZpbGVU
eXBlLlBORwogICAgICAgICBlbGlmICgobm90IGZpbGVfZXh0ZW5zaW9uIGFuZCBvcy5wYXRoLmpv
aW4oIlRvb2xzIiwgIlNjcmlwdHMiKSBpbiBmaWxlX3BhdGgpIG9yCiAgICAgICAgICAgICAgIGZp
bGVfZXh0ZW5zaW9uIGluIF9URVhUX0ZJTEVfRVhURU5TSU9OUyk6CiAgICAgICAgICAgICByZXR1
cm4gRmlsZVR5cGUuVEVYVApAQCAtNTc4LDYgKzU4OSw4IEBAIGNsYXNzIENoZWNrZXJEaXNwYXRj
aGVyKG9iamVjdCk6CiAgICAgICAgICAgICBjaGVja2VyID0gWE1MQ2hlY2tlcihmaWxlX3BhdGgs
IGhhbmRsZV9zdHlsZV9lcnJvcikKICAgICAgICAgZWxpZiBmaWxlX3R5cGUgPT0gRmlsZVR5cGUu
WENPREVQUk9KOgogICAgICAgICAgICAgY2hlY2tlciA9IFhjb2RlUHJvamVjdEZpbGVDaGVja2Vy
KGZpbGVfcGF0aCwgaGFuZGxlX3N0eWxlX2Vycm9yKQorICAgICAgICBlbGlmIGZpbGVfdHlwZSA9
PSBGaWxlVHlwZS5QTkc6CisgICAgICAgICAgICBjaGVja2VyID0gUE5HQ2hlY2tlcihmaWxlX3Bh
dGgsIGhhbmRsZV9zdHlsZV9lcnJvcikKICAgICAgICAgZWxpZiBmaWxlX3R5cGUgPT0gRmlsZVR5
cGUuVEVYVDoKICAgICAgICAgICAgIGJhc2VuYW1lID0gb3MucGF0aC5iYXNlbmFtZShmaWxlX3Bh
dGgpCiAgICAgICAgICAgICBpZiBiYXNlbmFtZSA9PSAndGVzdF9leHBlY3RhdGlvbnMudHh0JyBv
ciBiYXNlbmFtZSA9PSAnZHJ0X2V4cGVjdGF0aW9ucy50eHQnOgpkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9zdHlsZS9jaGVja2VyX3VuaXR0ZXN0LnB5CmluZGV4IDYwYTk1OWYuLmQ4MzRm
ZDUgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcl91bml0
dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJfdW5pdHRl
c3QucHkKQEAgLTU5MCw3ICs1OTAsNiBAQCBjbGFzcyBDaGVja2VyRGlzcGF0Y2hlckRpc3BhdGNo
VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHBhdGhzID0gWwogICAgICAgICAgICAi
TWFrZWZpbGUiLAogICAgICAgICAgICAiZm9vLmFzZGYiLCAgIyBOb24tc2Vuc2ljYWwgZmlsZSBl
eHRlbnNpb24uCi0gICAgICAgICAgICJmb28ucG5nIiwKICAgICAgICAgICAgImZvby5leGUiLAog
ICAgICAgICAgICAgXQogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxl
L2NoZWNrZXJzL3BuZy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMv
cG5nLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFhZDE1MDAKLS0tIC9k
ZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3BuZy5w
eQpAQCAtMCwwICsxLDk4IEBACisjIENvcHlyaWdodCAoQykgMjAxMiBCYWxhenMgQW5rZXMgKGJh
bmtAaW5mLnUtc3plZ2VkLmh1KSBVbml2ZXJzaXR5IG9mIFN6ZWdlZAorIworIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCisiIiJTdXBwb3J0cyBj
aGVja2luZyBXZWJLaXQgc3R5bGUgaW4gcG5nIGZpbGVzLiIiIgorCitpbXBvcnQgb3MKK2ltcG9y
dCByZQoraW1wb3J0IHN5cworZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBp
bXBvcnQgRXhlY3V0aXZlCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbSBp
bXBvcnQgRmlsZVN5c3RlbQorZnJvbSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuc2NtLmRldGVj
dGlvbiBpbXBvcnQgU0NNRGV0ZWN0b3IKKworCitjbGFzcyBQTkdDaGVja2VyKG9iamVjdCk6Cisg
ICAgIiIiQ2hlY2sgc3ZuOm1pbWUtdHlwZSBmb3IgY2hlY2tpbmcgc3R5bGUiIiIKKworICAgIGNh
dGVnb3JpZXMgPSBzZXQoWydpbWFnZS9wbmcnXSkKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBm
aWxlX3BhdGgsIGhhbmRsZV9zdHlsZV9lcnJvciwgZmlsZXN5c3RlbT1Ob25lLCBzY209Tm9uZSwg
cGxhdGZvcm09Tm9uZSk6CisgICAgICAgIHNlbGYuX2ZpbGVfcGF0aCA9IGZpbGVfcGF0aAorICAg
ICAgICBzZWxmLl9oYW5kbGVfc3R5bGVfZXJyb3IgPSBoYW5kbGVfc3R5bGVfZXJyb3IKKyAgICAg
ICAgc2VsZi5fZnMgPSBmaWxlc3lzdGVtIG9yIEZpbGVTeXN0ZW0oKQorICAgICAgICBzZWxmLl9k
ZXRlY3RvciA9IHNjbSBvciBTQ01EZXRlY3RvcihzZWxmLl9mcywgRXhlY3V0aXZlKCkpLmRldGVj
dF9zY21fc3lzdGVtKHNlbGYuX2ZzLmdldGN3ZCgpKQorICAgICAgICBzZWxmLl9wbGF0Zm9ybSA9
IHBsYXRmb3JtIG9yIHN5cy5wbGF0Zm9ybQorCisgICAgZGVmIGNoZWNrKHNlbGYsIGlubGluZT1O
b25lKToKKyAgICAgICAgZXJyb3JzdHIgPSAiIgorICAgICAgICBjb25maWdfZmlsZV9wYXRoID0g
IiIKKyAgICAgICAgZGV0ZWN0aW9uID0gc2VsZi5fZGV0ZWN0b3IuZGlzcGxheV9uYW1lKCkKKwor
ICAgICAgICBpZiBkZXRlY3Rpb24gPT0gImdpdCI6CisgICAgICAgICAgICBjb25maWdfZmlsZV9w
YXRoID0gc2VsZi5fY29uZmlnX2ZpbGVfcGF0aCgpCisgICAgICAgICAgICB0aGVyZV9pc19lbmFi
bGVfbGluZSA9IEZhbHNlCisgICAgICAgICAgICB0aGVyZV9pc19wbmdfbGluZSA9IEZhbHNlCisK
KyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBjb25maWdfZmlsZSA9IHNlbGYuX2Zz
LnJlYWRfdGV4dF9maWxlKGNvbmZpZ19maWxlX3BhdGgpCisgICAgICAgICAgICBleGNlcHQgSU9F
cnJvcjoKKyAgICAgICAgICAgICAgICBlcnJvcnN0ciA9ICJUaGVyZSBpcyBubyAiICsgY29uZmln
X2ZpbGVfcGF0aAorICAgICAgICAgICAgICAgIHNlbGYuX2hhbmRsZV9zdHlsZV9lcnJvcigwLCAn
aW1hZ2UvcG5nJywgNSwgZXJyb3JzdHIpCisgICAgICAgICAgICAgICAgcmV0dXJuCisKKyAgICAg
ICAgICAgIGVycm9yc3RyX2F1dG9wcm9wID0gIkhhdmUgdG8gZW5hYmxlIGF1dG8gcHJvcHMgaW4g
dGhlIHN1YnZlcnNpb24gY29uZmlnIGZpbGUgKCIgKyBjb25maWdfZmlsZV9wYXRoICsgIiBcImVu
YWJsZS1hdXRvLXByb3BzID0geWVzXCIpLiAiCisgICAgICAgICAgICBlcnJvcnN0cl9wbmcgPSAi
SGF2ZSB0byBzZXQgdGhlIHN2bjptaW1lLXR5cGUgaW4gdGhlIHN1YnZlcnNpb24gY29uZmlnIGZp
bGUgKCIgKyBjb25maWdfZmlsZV9wYXRoICsgIiBcIioucG5nID0gc3ZuOm1pbWUtdHlwZT1pbWFn
ZS9wbmdcIikuIgorCisgICAgICAgICAgICBmb3IgbGluZSBpbiBjb25maWdfZmlsZS5zcGxpdCgn
XG4nKToKKyAgICAgICAgICAgICAgICBpZiBub3QgdGhlcmVfaXNfZW5hYmxlX2xpbmU6CisgICAg
ICAgICAgICAgICAgICAgIG1hdGNoID0gcmUuc2VhcmNoKCJeXHMqZW5hYmxlLWF1dG8tcHJvcHNc
cyo9XHMqeWVzIiwgbGluZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgbWF0Y2g6CisgICAgICAg
ICAgICAgICAgICAgICAgICB0aGVyZV9pc19lbmFibGVfbGluZSA9IFRydWUKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGVycm9yc3RyX2F1dG9wcm9wID0gIiIKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICBpZiBub3QgdGhlcmVfaXNfcG5nX2xpbmU6
CisgICAgICAgICAgICAgICAgICAgIG1hdGNoID0gcmUuc2VhcmNoKCJeXHMqXCpcLnBuZ1xzKj1c
cypzdm46bWltZS10eXBlPWltYWdlL3BuZyIsIGxpbmUpCisgICAgICAgICAgICAgICAgICAgIGlm
IG1hdGNoOgorICAgICAgICAgICAgICAgICAgICAgICAgdGhlcmVfaXNfcG5nX2xpbmUgPSBUcnVl
CisgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnN0cl9wbmcgPSAiIgorICAgICAgICAgICAg
ICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgZXJyb3JzdHIgPSBlcnJvcnN0cl9h
dXRvcHJvcCArIGVycm9yc3RyX3BuZworICAgICAgICAgICAgaWYgZXJyb3JzdHI6CisgICAgICAg
ICAgICAgICAgc2VsZi5faGFuZGxlX3N0eWxlX2Vycm9yKDAsICdpbWFnZS9wbmcnLCA1LCBlcnJv
cnN0cikKKworICAgICAgICBpZiBkZXRlY3Rpb24gPT0gInN2biI6CisgICAgICAgICAgICBwcm9w
X2dldCA9IHNlbGYuX2RldGVjdG9yLnByb3BnZXQoInN2bjptaW1lLXR5cGUiLCBzZWxmLl9maWxl
X3BhdGgpCisgICAgICAgICAgICBpZiBwcm9wX2dldCAhPSAiaW1hZ2UvcG5nIjoKKyAgICAgICAg
ICAgICAgICBlcnJvcnN0ciA9ICJTZXQgdGhlIHN2bjptaW1lLXR5cGUgcHJvcGVydHkgKHN2biBw
cm9wc2V0IHN2bjptaW1lLXR5cGUgaW1hZ2UvcG5nICIgKyBzZWxmLl9maWxlX3BhdGggKyAiKS4i
CisgICAgICAgICAgICAgICAgc2VsZi5faGFuZGxlX3N0eWxlX2Vycm9yKDAsICdpbWFnZS9wbmcn
LCA1LCBlcnJvcnN0cikKKworICAgIGRlZiBfY29uZmlnX2ZpbGVfcGF0aChzZWxmKToKKyAgICAg
ICAgY29uZmlnX2ZpbGUgPSAiIgorICAgICAgICBpZiBzZWxmLl9wbGF0Zm9ybS5zdGFydHN3aXRo
KCdsaW51eCcpIG9yIHNlbGYuX3BsYXRmb3JtLnN0YXJ0c3dpdGgoJ2RhcndpbicpOgorICAgICAg
ICAgICAgY29uZmlnX2ZpbGVfcGF0aCA9IHNlbGYuX2ZzLmpvaW4oc2VsZi5fZnMuZXhwYW5kdXNl
cigifiIpLCAiLnN1YnZlcnNpb24vY29uZmlnIikKKyAgICAgICAgZWxpZiBzZWxmLl9wbGF0Zm9y
bS5zdGFydHN3aXRoKCd3aW4nKSBvciBzZWxmLl9wbGF0Zm9ybS5zdGFydHN3aXRoKCdjeWd3aW4n
KToKKyAgICAgICAgICAgIGNvbmZpZ19maWxlX3BhdGggPSBzZWxmLl9mcy5qb2luKG9zLmVudmly
b25bJ0FQUERBVEEnXSwgIlN1YnZlcnNpb25cY29uZmlnIikKKyAgICAgICAgcmV0dXJuIGNvbmZp
Z19maWxlX3BhdGgKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hl
Y2tlcnMvcG5nX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVj
a2Vycy9wbmdfdW5pdHRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
M2MwOTYxMAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUv
Y2hlY2tlcnMvcG5nX3VuaXR0ZXN0LnB5CkBAIC0wLDAgKzEsMTE5IEBACisjIENvcHlyaWdodCAo
QykgMjAxMiBCYWxhenMgQW5rZXMgKGJhbmtAaW5mLnUtc3plZ2VkLmh1KSBVbml2ZXJzaXR5IG9m
IFN6ZWdlZAorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworIiIiVW5pdCB0ZXN0IGZvciBwbmcucHkuIiIiCisKK2ltcG9ydCB1bml0dGVzdAor
ZnJvbSBwbmcgaW1wb3J0IFBOR0NoZWNrZXIKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5m
aWxlc3lzdGVtX21vY2sgaW1wb3J0IE1vY2tGaWxlU3lzdGVtCisKKworY2xhc3MgTW9ja1NDTURl
dGVjdG9yKG9iamVjdCk6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc2NtLCBwcm9wPU5vbmUp
OgorICAgICAgICBzZWxmLl9zY20gPSBzY20KKyAgICAgICAgc2VsZi5fcHJvcCA9IHByb3AKKwor
ICAgIGRlZiBkaXNwbGF5X25hbWUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9zY20KKwor
ICAgIGRlZiBwcm9wZ2V0KHNlbGYsIHBuYW1lLCBwYXRoKToKKyAgICAgICAgcmV0dXJuIHNlbGYu
X3Byb3AKKworCitjbGFzcyBQTkdDaGVja2VyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAg
IiIiVGVzdHMgUE5HQ2hlY2tlciBjbGFzcy4iIiIKKworICAgIGRlZiB0ZXN0X2luaXQoc2VsZik6
CisgICAgICAgICIiIlRlc3QgX19pbml0X18oKSBtZXRob2QuIiIiCisKKyAgICAgICAgZGVmIG1v
Y2tfaGFuZGxlX3N0eWxlX2Vycm9yKHNlbGYpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAg
IGZzID0gTW9ja0ZpbGVTeXN0ZW0oKQorICAgICAgICBzY20gPSBNb2NrU0NNRGV0ZWN0b3IoJ2dp
dCcpCisgICAgICAgIGNoZWNrZXIgPSBQTkdDaGVja2VyKCJ0ZXN0L2NvbmZpZyIsIG1vY2tfaGFu
ZGxlX3N0eWxlX2Vycm9yLCBmcywgc2NtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjaGVj
a2VyLl9maWxlX3BhdGgsICJ0ZXN0L2NvbmZpZyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxz
KGNoZWNrZXIuX2hhbmRsZV9zdHlsZV9lcnJvciwgbW9ja19oYW5kbGVfc3R5bGVfZXJyb3IpCisK
KyAgICBkZWYgdGVzdF9jaGVjayhzZWxmKToKKyAgICAgICAgZXJyb3JzID0gW10KKworICAgICAg
ICBkZWYgbW9ja19oYW5kbGVfc3R5bGVfZXJyb3IobGluZV9udW1iZXIsIGNhdGVnb3J5LCBjb25m
aWRlbmNlLCBtZXNzYWdlKToKKyAgICAgICAgICAgIGVycm9yID0gKGxpbmVfbnVtYmVyLCBjYXRl
Z29yeSwgY29uZmlkZW5jZSwgbWVzc2FnZSkKKyAgICAgICAgICAgIGVycm9ycy5hcHBlbmQoZXJy
b3IpCisKKyAgICAgICAgZmlsZV9wYXRoID0gJycKKworICAgICAgICBmcyA9IE1vY2tGaWxlU3lz
dGVtKCkKKworICAgICAgICBzY20gPSBNb2NrU0NNRGV0ZWN0b3IoJ3N2bicpCisgICAgICAgIGNo
ZWNrZXIgPSBQTkdDaGVja2VyKGZpbGVfcGF0aCwgbW9ja19oYW5kbGVfc3R5bGVfZXJyb3IsIGZz
LCBzY20pCisgICAgICAgIGNoZWNrZXIuY2hlY2soKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
cyhsZW4oZXJyb3JzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZXJyb3JzWzBdLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAoMCwgJ2ltYWdlL3BuZycsIDUsICdTZXQgdGhlIHN2
bjptaW1lLXR5cGUgcHJvcGVydHkgKHN2biBwcm9wc2V0IHN2bjptaW1lLXR5cGUgaW1hZ2UvcG5n
ICkuJykpCisKKyAgICAgICAgZmlsZXMgPSB7Jy9Vc2Vycy9tb2NrLy5zdWJ2ZXJzaW9uL2NvbmZp
Zyc6ICdlbmFibGUtYXV0by1wcm9wcyA9IHllc1xuKi5wbmcgPSBzdm46bWltZS10eXBlPWltYWdl
L3BuZyd9CisgICAgICAgIGZzID0gTW9ja0ZpbGVTeXN0ZW0oZmlsZXMpCisgICAgICAgIHNjbSA9
IE1vY2tTQ01EZXRlY3RvcignZ2l0JykKKyAgICAgICAgZXJyb3JzID0gW10KKyAgICAgICAgY2hl
Y2tlciA9IFBOR0NoZWNrZXIoImNvbmZpZyIsIG1vY2tfaGFuZGxlX3N0eWxlX2Vycm9yLCBmcywg
c2NtLCBwbGF0Zm9ybT0nbGludXgnKQorICAgICAgICBjaGVja2VyLmNoZWNrKCkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbHMobGVuKGVycm9ycyksIDApCisKKyAgICAgICAgZmlsZXMgPSB7Jy9V
c2Vycy9tb2NrLy5zdWJ2ZXJzaW9uL2NvbmZpZyc6ICcjZW5hYmxlLWF1dG8tcHJvcHMgPSB5ZXMn
fQorICAgICAgICBmcyA9IE1vY2tGaWxlU3lzdGVtKGZpbGVzKQorICAgICAgICBzY20gPSBNb2Nr
U0NNRGV0ZWN0b3IoJ2dpdCcpCisgICAgICAgIGVycm9ycyA9IFtdCisgICAgICAgIGNoZWNrZXIg
PSBQTkdDaGVja2VyKCJjb25maWciLCBtb2NrX2hhbmRsZV9zdHlsZV9lcnJvciwgZnMsIHNjbSwg
cGxhdGZvcm09J2xpbnV4JykKKyAgICAgICAgY2hlY2tlci5jaGVjaygpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWxzKGxlbihlcnJvcnMpLCAxKQorCisgICAgICAgIGZpbGVzID0geycvVXNlcnMv
bW9jay8uc3VidmVyc2lvbi9jb25maWcnOiAnZW5hYmxlLWF1dG8tcHJvcHMgPSB5ZXNcbiNlbmFi
bGUtYXV0by1wcm9wcyA9IHllc1xuKi5wbmcgPSBzdm46bWltZS10eXBlPWltYWdlL3BuZyd9Cisg
ICAgICAgIGZzID0gTW9ja0ZpbGVTeXN0ZW0oZmlsZXMpCisgICAgICAgIHNjbSA9IE1vY2tTQ01E
ZXRlY3RvcignZ2l0JykKKyAgICAgICAgZXJyb3JzID0gW10KKyAgICAgICAgY2hlY2tlciA9IFBO
R0NoZWNrZXIoImNvbmZpZyIsIG1vY2tfaGFuZGxlX3N0eWxlX2Vycm9yLCBmcywgc2NtLCBwbGF0
Zm9ybT0nbGludXgnKQorICAgICAgICBjaGVja2VyLmNoZWNrKCkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbHMobGVuKGVycm9ycyksIDApCisKKyAgICAgICAgZmlsZXMgPSB7Jy9Vc2Vycy9tb2Nr
Ly5zdWJ2ZXJzaW9uL2NvbmZpZyc6ICcjZW5hYmxlLWF1dG8tcHJvcHMgPSB5ZXNcbmVuYWJsZS1h
dXRvLXByb3BzID0geWVzXG4qLnBuZyA9IHN2bjptaW1lLXR5cGU9aW1hZ2UvcG5nJ30KKyAgICAg
ICAgZnMgPSBNb2NrRmlsZVN5c3RlbShmaWxlcykKKyAgICAgICAgc2NtID0gTW9ja1NDTURldGVj
dG9yKCdnaXQnKQorICAgICAgICBlcnJvcnMgPSBbXQorICAgICAgICBjaGVja2VyID0gUE5HQ2hl
Y2tlcigiY29uZmlnIiwgbW9ja19oYW5kbGVfc3R5bGVfZXJyb3IsIGZzLCBzY20sIHBsYXRmb3Jt
PSdsaW51eCcpCisgICAgICAgIGNoZWNrZXIuY2hlY2soKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFscyhsZW4oZXJyb3JzKSwgMCkKKworICAgICAgICBmaWxlcyA9IHsnL1VzZXJzL21vY2svLnN1
YnZlcnNpb24vY29uZmlnJzogJ2VuYWJsZS1hdXRvLXByb3BzID0gbm8nfQorICAgICAgICBmcyA9
IE1vY2tGaWxlU3lzdGVtKGZpbGVzKQorICAgICAgICBzY20gPSBNb2NrU0NNRGV0ZWN0b3IoJ2dp
dCcpCisgICAgICAgIGVycm9ycyA9IFtdCisgICAgICAgIGNoZWNrZXIgPSBQTkdDaGVja2VyKCJj
b25maWciLCBtb2NrX2hhbmRsZV9zdHlsZV9lcnJvciwgZnMsIHNjbSwgcGxhdGZvcm09J2xpbnV4
JykKKyAgICAgICAgY2hlY2tlci5jaGVjaygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGxl
bihlcnJvcnMpLCAxKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRl
c3QubWFpbigpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL3BhdGNo
cmVhZGVyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9wYXRjaHJlYWRlci5weQpp
bmRleCA2YWMzMmRlLi5lYjEzZTBlIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3N0eWxlL3BhdGNocmVhZGVyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUv
cGF0Y2hyZWFkZXIucHkKQEAgLTI5LDggKzI5LDEyIEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIGltcG9y
dCBsb2dnaW5nCitpbXBvcnQgcmUKIAogZnJvbSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuZGlm
Zl9wYXJzZXIgaW1wb3J0IERpZmZQYXJzZXIKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5l
eGVjdXRpdmUgaW1wb3J0IEV4ZWN1dGl2ZQorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZp
bGVzeXN0ZW0gaW1wb3J0IEZpbGVTeXN0ZW0KK2Zyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0
LnNjbS5kZXRlY3Rpb24gaW1wb3J0IFNDTURldGVjdG9yCiAKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0
TG9nZ2VyKF9fbmFtZV9fKQpAQCAtNTIsMTEgKzU2LDIzIEBAIGNsYXNzIFBhdGNoUmVhZGVyKG9i
amVjdCk6CiAgICAgICAgICIiIkNoZWNrIHN0eWxlIGluIHRoZSBnaXZlbiBwYXRjaC4iIiIKICAg
ICAgICAgcGF0Y2hfZmlsZXMgPSBEaWZmUGFyc2VyKHBhdGNoX3N0cmluZy5zcGxpdGxpbmVzKCkp
LmZpbGVzCiAKKyAgICAgICAgIyBJZiB0aGUgdXNlciB1c2VzIGdpdCwgY2hlY2tpbmcgc3VidmVy
c2lvbiBjb25maWcgZmlsZSBvbmx5IG9uY2UgaXMgZW5vdWdoLgorICAgICAgICBjYWxsX29ubHlf
b25jZSA9IFRydWUKKwogICAgICAgICBmb3IgcGF0aCwgZGlmZl9maWxlIGluIHBhdGNoX2ZpbGVz
Lml0ZXJpdGVtcygpOgogICAgICAgICAgICAgbGluZV9udW1iZXJzID0gZGlmZl9maWxlLmFkZGVk
X29yX21vZGlmaWVkX2xpbmVfbnVtYmVycygpCiAgICAgICAgICAgICBfbG9nLmRlYnVnKCdGb3Vu
ZCAlcyBuZXcgb3IgbW9kaWZpZWQgbGluZXMgaW46ICVzJyAlIChsZW4obGluZV9udW1iZXJzKSwg
cGF0aCkpCiAKICAgICAgICAgICAgIGlmIG5vdCBsaW5lX251bWJlcnM6CisgICAgICAgICAgICAg
ICAgbWF0Y2ggPSByZS5zZWFyY2goIlxzKnBuZyQiLCBwYXRoKQorICAgICAgICAgICAgICAgIGlm
IG1hdGNoOgorICAgICAgICAgICAgICAgICAgICBpZiBjYWxsX29ubHlfb25jZToKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHNlbGYuX3RleHRfZmlsZV9yZWFkZXIucHJvY2Vzc19maWxlKGZpbGVf
cGF0aD1wYXRoLCBsaW5lX251bWJlcnM9Tm9uZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGN3
ZCA9IEZpbGVTeXN0ZW0oKS5nZXRjd2QoKQorICAgICAgICAgICAgICAgICAgICAgICAgZGV0ZWN0
aW9uID0gU0NNRGV0ZWN0b3IoRmlsZVN5c3RlbSgpLCBFeGVjdXRpdmUoKSkuZGV0ZWN0X3NjbV9z
eXN0ZW0oY3dkKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGV0ZWN0aW9uLmRpc3BsYXlf
bmFtZSgpID09ICJnaXQiOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxfb25seV9v
bmNlID0gRmFsc2UKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAg
ICAjIERvbid0IGNoZWNrIGZpbGVzIHdoaWNoIGNvbnRhaW4gb25seSBkZWxldGVkIGxpbmVzCiAg
ICAgICAgICAgICAgICAgIyBhcyB0aGV5IGNhbiBuZXZlciBhZGQgc3R5bGUgZXJyb3JzLiBIb3dl
dmVyLCBtYXJrIHRoZW0gYXMKICAgICAgICAgICAgICAgICAjIHByb2Nlc3NlZCBzbyB0aGF0IHdl
IGNvdW50IHVwIG51bWJlciBvZiBzdWNoIGZpbGVzLgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>