<?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>79179</bug_id>
          
          <creation_ts>2012-02-21 18:43:42 -0800</creation_ts>
          <short_desc>webkitpy: committers_unittest fuzzy matching is really slow</short_desc>
          <delta_ts>2012-02-24 16:19:27 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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="Dirk Pranke">dpranke</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>ojan</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>561461</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-02-21 18:43:42 -0800</bug_when>
    <thetext>webkitpy: committers_unittest fuzzy matching is really slow</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561472</commentid>
    <comment_count>1</comment_count>
      <attachid>128105</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-02-21 18:53:44 -0800</bug_when>
    <thetext>Created attachment 128105
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561474</commentid>
    <comment_count>2</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-02-21 18:55:52 -0800</bug_when>
    <thetext>rniwa ... let me know what you think of this approach. I think I&apos;ve convinced myself it&apos;s safe. Assuming you like it, I will rework the actual code so that instead of calling assert_fuzzy_match() over and over again, we just pass in a list of test cases (much like I did in https://bugs.webkit.org/show_bug.cgi?id=79159 ); I left things this way to minimize the diff so you could better understand that change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561475</commentid>
    <comment_count>3</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-02-21 18:56:32 -0800</bug_when>
    <thetext>We can probably do something similar for webkitpy.tool.steps.preparechangelog_unittest.PrepareChangeLogTest.test_fuzzy_reviewer_match as well (haven&apos;t really looked yet, but that test is also quite slow).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561494</commentid>
    <comment_count>4</comment_count>
      <attachid>128105</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-02-21 19:17:18 -0800</bug_when>
    <thetext>Comment on attachment 128105
Patch

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

&gt; Tools/Scripts/webkitpy/common/config/committers_unittest.py:117
&gt; +        contributors_used_in_tests = [all_committers.contributor_by_name(c) for c in self._contributors if c]

I don&apos;t think this change is safe. A big part of this test is so that we don&apos;t mismatch new contributors to alias of old contributors. e.g. darin shouldn&apos;t match Darin Fisher.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561516</commentid>
    <comment_count>5</comment_count>
      <attachid>128105</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-02-21 19:46:05 -0800</bug_when>
    <thetext>Comment on attachment 128105
Patch

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

&gt;&gt; Tools/Scripts/webkitpy/common/config/committers_unittest.py:117
&gt;&gt; +        contributors_used_in_tests = [all_committers.contributor_by_name(c) for c in self._contributors if c]
&gt; 
&gt; I don&apos;t think this change is safe. A big part of this test is so that we don&apos;t mismatch new contributors to alias of old contributors. e.g. darin shouldn&apos;t match Darin Fisher.

If I understand you correctly, you want to ensure that &apos;Darin&apos; will always match &apos;Darin Adler&apos; and not &apos;Darin Fisher&apos; as long as &apos;Darin Adler&apos; as they are both still in the contributor list, right? And since &apos;Darin Fisher&apos; is not actually listed as one of the tests, below, this case is not adequately covered by my optimization? Presumably we could address that by adding a self._fuzz_match(&apos;Darin Fisher&apos;, &apos;Darin Fisher&apos;, 0) test case, or have some other mechanism to include &quot;interesting&quot; names in the list to ensure we were covering them.

That said, it seems then that we&apos;re actually testing two different things here (which is what I feared). The first, is correctness of the fuzzy-matching algorithm (regardless of the contents of committers.py). This could be done with presumably far fewer test cases than we have.

The second is testing for specific resolutions based on the actual (current) contents of the list of contributors, right?

It seems like, if that was the case, it would be a lot clearer to break those out into individual (and different) test cases to be clearer about that (and in that case we should probably list the disambiguation we&apos;re worried about).

Does that make sense?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561625</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-02-21 22:33:30 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 128105 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=128105&amp;action=review
&gt; 
&gt; &gt;&gt; Tools/Scripts/webkitpy/common/config/committers_unittest.py:117
&gt; &gt;&gt; +        contributors_used_in_tests = [all_committers.contributor_by_name(c) for c in self._contributors if c]
&gt; &gt; 
&gt; &gt; I don&apos;t think this change is safe. A big part of this test is so that we don&apos;t mismatch new contributors to alias of old contributors. e.g. darin shouldn&apos;t match Darin Fisher.
&gt; 
&gt; If I understand you correctly, you want to ensure that &apos;Darin&apos; will always match &apos;Darin Adler&apos; and not &apos;Darin Fisher&apos; as long as &apos;Darin Adler&apos; as they are both still in the contributor list, right? And since &apos;Darin Fisher&apos; is not actually listed as one of the tests, below, this case is not adequately covered by my optimization? Presumably we could address that by adding a self._fuzz_match(&apos;Darin Fisher&apos;, &apos;Darin Fisher&apos;, 0) test case, or have some other mechanism to include &quot;interesting&quot; names in the list to ensure we were covering them.

Right. That sounds like a reasonable solution to me.

&gt; That said, it seems then that we&apos;re actually testing two different things here (which is what I feared). The first, is correctness of the fuzzy-matching algorithm (regardless of the contents of committers.py). This could be done with presumably far fewer test cases than we have.
&gt; 
&gt; The second is testing for specific resolutions based on the actual (current) contents of the list of contributors, right?
&gt; 
&gt; It seems like, if that was the case, it would be a lot clearer to break those out into individual (and different) test cases to be clearer about that (and in that case we should probably list the disambiguation we&apos;re worried about).

Right. But testing that properly involves including all contributors in the list, no?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562021</commentid>
    <comment_count>7</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-02-22 09:05:00 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; &gt; The second is testing for specific resolutions based on the actual (current) contents of the list of contributors, right?
&gt; &gt; 
&gt; &gt; It seems like, if that was the case, it would be a lot clearer to break those out into individual (and different) test cases to be clearer about that (and in that case we should probably list the disambiguation we&apos;re worried about).
&gt; 
&gt; Right. But testing that properly involves including all contributors in the list, no?

Probably, although I might think about it more, just to see if I&apos;ve missed something else. If I break things up into, say, one test per person, at least it&apos;ll parallelize nicely. We could leave the &quot;algorithm is correct&quot; tests as unit tests and make the &quot;match this person&quot; tests optional integration tests that could be skipped if you were in a hurry (but are run by default).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562031</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-02-22 09:17:49 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Probably, although I might think about it more, just to see if I&apos;ve missed something else. If I break things up into, say, one test per person, at least it&apos;ll parallelize nicely. We could leave the &quot;algorithm is correct&quot; tests as unit tests and make the &quot;match this person&quot; tests optional integration tests that could be skipped if you were in a hurry (but are run by default).

&quot;algorithm is correct&quot; is synonymous to &quot;match this person&quot;. I purposefully avoided white-box testing. Anyway, I&apos;m fine with skipping the entire test by default since there&apos;s no significant user of this function at the moment (changelog parser uses but it&apos;s still in the development).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564587</commentid>
    <comment_count>9</comment_count>
      <attachid>128795</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-02-24 13:29:13 -0800</bug_when>
    <thetext>Created attachment 128795
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564591</commentid>
    <comment_count>10</comment_count>
      <attachid>128795</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-02-24 13:30:47 -0800</bug_when>
    <thetext>Comment on attachment 128795
Patch

So you&apos;re splitting these down so that we can more easily shard this test?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564597</commentid>
    <comment_count>11</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-02-24 13:34:18 -0800</bug_when>
    <thetext>rniwa - please take another look? I&apos;ve left the original logic alone but chunked the tests up so that most either test a specific name or take less than ~1/3 of a second (which is good enough for me for now since I can run them all in parallel. 

Also, we had a few duplicate tests that were slowing things down ... single threaded, the file now takes ~4.5 seconds; in parallel I can run it in under 1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564600</commentid>
    <comment_count>12</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-02-24 13:36:22 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 128795 [details])
&gt; So you&apos;re splitting these down so that we can more easily shard this test?

From the ChangeLog:

+        Break the fuzzy matching tests into individual routines for
+        each contributor so that the intent is a little clearer, so
+        that it&apos;s easier to test individual names (and identify
+        duplicate tests), and so that we can eventually run
+        them in parallel.

Yup :) We can&apos;t easily speed up each individual match as long as we want to run the match against the entire list of committers :( We could mock out lists of committers (or provide a shorter list), but that won&apos;t achieve the testing goal rniwa wants.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564608</commentid>
    <comment_count>13</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-02-24 13:46:49 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #10)
&gt; &gt; (From update of attachment 128795 [details] [details])
&gt; &gt; So you&apos;re splitting these down so that we can more easily shard this test?
&gt; 
&gt; From the ChangeLog:
&gt; 
&gt; +        Break the fuzzy matching tests into individual routines for
&gt; +        each contributor so that the intent is a little clearer, so
&gt; +        that it&apos;s easier to test individual names (and identify
&gt; +        duplicate tests), and so that we can eventually run
&gt; +        them in parallel.
&gt; 
&gt; Yup :) We can&apos;t easily speed up each individual match as long as we want to run the match against the entire list of committers :( We could mock out lists of committers (or provide a shorter list), but that won&apos;t achieve the testing goal rniwa wants.

I can definitely see how these should be viewed as integration tests then. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564742</commentid>
    <comment_count>14</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-02-24 16:19:27 -0800</bug_when>
    <thetext>Committed r108864: &lt;http://trac.webkit.org/changeset/108864&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128105</attachid>
            <date>2012-02-21 18:53:44 -0800</date>
            <delta_ts>2012-02-24 13:29:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79179-20120221185343.patch</filename>
            <type>text/plain</type>
            <size>5404</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4NDE0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOTlhOWQxMjlmYmU2ZmNlMjQ0NjMxYzRiOWE1MzFlYzcy
ODJiMTYyZi4uZWNjNDUwYjljOGI4ZGY4ODQwZjhkM2M4NzcyNjM0ZWI5NjZmZDRmYyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM4
IEBACiAyMDEyLTAyLTIxICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCisg
ICAgICAgIHdlYmtpdHB5OiBjb21taXR0ZXJzX3VuaXR0ZXN0IGZ1enp5IG1hdGNoaW5nIGlzIHJl
YWxseSBzbG93CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03OTE3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRoZSB1bml0IHRlc3RzIGZvciBmdXp6eSBtYXRjaGluZyBvbiBvdXIgbGlzdCBvZiBjb21taXR0
ZXJzIGlzCisgICAgICAgIGNvbXBhcmF0aXZlbHkgc2xvdyAofjUgc2Vjb25kcyBvdXQgb2YgdGhl
IHRlc3Qtd2Via2l0cHkncyAyNXMKKyAgICAgICAgdG90YWwpLgorCisgICAgICAgIFRoZSByZWFz
b24gZm9yIHRoaXMgaXMgdGhyZWUtZm9sZDogY29tcHV0aW5nIHRoZSBlZGl0IGRpc3RhbmNlCisg
ICAgICAgIGlzIHJlbGF0aXZlbHkgZXhwZW5zaXZlLCB3ZSBoYXZlIGEgbG90IG9mIHRlc3QgY2Fz
ZXMgdG8gdGVzdCwKKyAgICAgICAgYW5kIHdlIGhhdmUgYSBsb3Qgb2YgY29tbWl0dGVycyBpbiB0
aGUgZGVmYXVsdCBsaXN0LiBJdCBkb2Vzbid0CisgICAgICAgIGxvb2sgbGlrZSB3ZSBjYW4gZWFz
aWx5IHNwZWVkIHVwIHRoZSBlZGl0X2Rpc3RhbmNlIGNhbGN1bGF0aW9uCisgICAgICAgICh3aXRo
b3V0IHN3aXRjaGluZyB0byBDLCBhbmQgSSdtIG5vdCBldmVuIHN1cmUgaG93IG11Y2ggdGhhdCds
bAorICAgICAgICBoZWxwKS4gSG93ZXZlciwgdGhlIHdheSB0aGUgdGVzdHMgYXJlIGN1cnJlbnRs
eSB3cml0dGVuLCBmb3IKKyAgICAgICAgZWFjaCB0ZXN0IGNhc2UsIHdlIGNoZWNrIHRoZSBlbnRp
cmUgbGlzdCBvZiBjb21taXR0ZXJzLCBtYWtpbmcKKyAgICAgICAgdGhpcyBPKG4qbSkuIExvZ2lj
YWxseSwgaWYgd2UgY2FuIG1ha2UgdGhlIGxpc3Qgb2YgY29tbWl0dGVycworICAgICAgICBzaG9y
dGVyLCB3ZSdsbCBnZXQgYSBuZWFyLWxpbmVhciBzcGVlZCB1cC4gVGhpcyBjaGFuZ2UKKyAgICAg
ICAgb3B0aW1pemVzIHRoZSBsaXN0IG9mIGNvbW1pdHRlcnMgd2UncmUgdXNpbmcgdG8ganVzdCB0
aGUgb25lcyB3ZQorICAgICAgICBuZWVkIHRvIGNvdmVyIHRoZSB0ZXN0IGNhc2VzLCBhbmQgc2Vl
bXMgdG8gZ2l2ZSB1cyBhIDEweCBzcGVlZHVwCisgICAgICAgIChieSBnb2luZyBmcm9tIH4zMjAg
Y29udHJpYnV0b3JzIHRvIH40MCkgd2l0aG91dCBjaGFuZ2luZyB0ZXN0CisgICAgICAgIGNvdmVy
YWdlOiB0b3RhbCB0ZXN0IHRpbWUgZ29lcyBmcm9tIH41LjMgc2Vjb25kcyB0byB+MC40NDQ0MDAu
CisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcvY29tbWl0dGVyc191
bml0dGVzdC5weToKKyAgICAgICAgKENvbW1pdHRlcnNUZXN0LnNldFVwKToKKyAgICAgICAgKENv
bW1pdHRlcnNUZXN0Ll9hc3NlcnRfZnV6el9tYXRjaCk6CisgICAgICAgIChDb21taXR0ZXJzVGVz
dCk6CisgICAgICAgIChDb21taXR0ZXJzVGVzdC5fZG9faXQpOgorICAgICAgICAoQ29tbWl0dGVy
c1Rlc3QudGVzdF9jb250cmlidXRvcnNfYnlfZnV6enlfbWF0Y2gpOgorICAgICAgICAoQ29tbWl0
dGVyc1Rlc3QudGVzdF9jb250cmlidXRvcnNfYnlfZnV6enlfbWF0Y2hfd2l0aF9sZWdhY3lfbmFt
ZXMpOgorCisyMDEyLTAyLTIxICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgor
CiAgICAgICAgIHdlYmtpdHB5OiBzcGVlZCB1cCBob3QgZmlsZXN5c3RlbV9tb2NrIGZ1bmN0aW9u
cwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzkxNTkK
IApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL2NvbW1p
dHRlcnNfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcv
Y29tbWl0dGVyc191bml0dGVzdC5weQppbmRleCA1M2Q5YzRkMTRmNGRmOTNmY2QzMTAyMDE2NjVj
NGUwYTVhOTM1MDA0Li42ZDNhNWNlYmUxNmI2OTk3NmVkNzE4ZGFhNjNmMjQzZjUwOGVhODBmIDEw
MDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcvY29tbWl0dGVy
c191bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcv
Y29tbWl0dGVyc191bml0dGVzdC5weQpAQCAtMTAxLDE0ICsxMDEsMzAgQEAgY2xhc3MgQ29tbWl0
dGVyc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNv
bW1pdHRlcl9saXN0LmNvbnRyaWJ1dG9yc19ieV9lbWFpbF91c2VybmFtZSgiZm91ciIpLCBbXSkK
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21taXR0ZXJfbGlzdC5jb250cmlidXRvcnNfYnlf
ZW1haWxfdXNlcm5hbWUoIm90aGVyZm91ciIpLCBbY29udHJpYnV0b3Jfd2l0aF90d29fbmlja25h
bWVzLCBjb250cmlidXRvcl93aXRoX3NhbWVfZW1haWxfdXNlcm5hbWVdKQogCisgICAgZGVmIHNl
dFVwKHNlbGYpOgorICAgICAgICBzZWxmLl9jb250cmlidXRvcnMgPSBzZXQoKQorICAgICAgICBz
ZWxmLl90ZXN0cyA9IFtdCisKICAgICBkZWYgX2Fzc2VydF9mdXp6X21hdGNoKHNlbGYsIHRleHQs
IG5hbWVfb2ZfZXhwZWN0ZWRfY29udHJpYnV0b3IsIGV4cGVjdGVkX2Rpc3RhbmNlKToKLSAgICAg
ICAgY29tbWl0dGVycyA9IENvbW1pdHRlckxpc3QoKQotICAgICAgICBjb250cmlidXRvcnMsIGRp
c3RhbmNlID0gY29tbWl0dGVycy5jb250cmlidXRvcnNfYnlfZnV6enlfbWF0Y2godGV4dCkKLSAg
ICAgICAgaWYgdHlwZShuYW1lX29mX2V4cGVjdGVkX2NvbnRyaWJ1dG9yKSBpcyBsaXN0OgotICAg
ICAgICAgICAgZXhwZWN0ZWRfbmFtZXMgPSBuYW1lX29mX2V4cGVjdGVkX2NvbnRyaWJ1dG9yCisg
ICAgICAgIGlmIGhhc2F0dHIobmFtZV9vZl9leHBlY3RlZF9jb250cmlidXRvciwgJ19faXRlcl9f
Jyk6CisgICAgICAgICAgICBzZWxmLl9jb250cmlidXRvcnMudXBkYXRlKHNldChuYW1lX29mX2V4
cGVjdGVkX2NvbnRyaWJ1dG9yKSkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGV4cGVjdGVk
X25hbWVzID0gW25hbWVfb2ZfZXhwZWN0ZWRfY29udHJpYnV0b3JdIGlmIG5hbWVfb2ZfZXhwZWN0
ZWRfY29udHJpYnV0b3IgZWxzZSBbXQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChbY29udHJp
YnV0b3IuZnVsbF9uYW1lIGZvciBjb250cmlidXRvciBpbiBjb250cmlidXRvcnNdLCBkaXN0YW5j
ZSksIChleHBlY3RlZF9uYW1lcywgZXhwZWN0ZWRfZGlzdGFuY2UpKQorICAgICAgICAgICAgc2Vs
Zi5fY29udHJpYnV0b3JzLmFkZChuYW1lX29mX2V4cGVjdGVkX2NvbnRyaWJ1dG9yKQorICAgICAg
ICBzZWxmLl90ZXN0cy5hcHBlbmQoKHRleHQsIG5hbWVfb2ZfZXhwZWN0ZWRfY29udHJpYnV0b3Is
IGV4cGVjdGVkX2Rpc3RhbmNlKSkKKworICAgIGRlZiBfZG9faXQoc2VsZik6CisgICAgICAgIGFs
bF9jb21taXR0ZXJzID0gQ29tbWl0dGVyTGlzdCgpCisgICAgICAgIGNvbnRyaWJ1dG9yc191c2Vk
X2luX3Rlc3RzID0gW2FsbF9jb21taXR0ZXJzLmNvbnRyaWJ1dG9yX2J5X25hbWUoYykgZm9yIGMg
aW4gc2VsZi5fY29udHJpYnV0b3JzIGlmIGNdCisgICAgICAgIGNvbW1pdHRlcnMgPSBDb21taXR0
ZXJMaXN0KGNvbnRyaWJ1dG9ycz1jb250cmlidXRvcnNfdXNlZF9pbl90ZXN0cywgcmV2aWV3ZXJz
PVtdLCBjb21taXR0ZXJzPVtdKQorICAgICAgICAjIGNvbW1pdHRlcnMgPSBhbGxfY29tbWl0dGVy
cworCisgICAgICAgIGZvciB0ZXh0LCBuYW1lX29mX2V4cGVjdGVkX2NvbnRyaWJ1dG9yLCBleHBl
Y3RlZF9kaXN0YW5jZSBpbiBzZWxmLl90ZXN0czoKKyAgICAgICAgICAgIGNvbnRyaWJ1dG9ycywg
ZGlzdGFuY2UgPSBjb21taXR0ZXJzLmNvbnRyaWJ1dG9yc19ieV9mdXp6eV9tYXRjaCh0ZXh0KQor
ICAgICAgICAgICAgaWYgdHlwZShuYW1lX29mX2V4cGVjdGVkX2NvbnRyaWJ1dG9yKSBpcyBsaXN0
OgorICAgICAgICAgICAgICAgIGV4cGVjdGVkX25hbWVzID0gbmFtZV9vZl9leHBlY3RlZF9jb250
cmlidXRvcgorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBleHBlY3RlZF9uYW1l
cyA9IFtuYW1lX29mX2V4cGVjdGVkX2NvbnRyaWJ1dG9yXSBpZiBuYW1lX29mX2V4cGVjdGVkX2Nv
bnRyaWJ1dG9yIGVsc2UgW10KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKFtjb250cmli
dXRvci5mdWxsX25hbWUgZm9yIGNvbnRyaWJ1dG9yIGluIGNvbnRyaWJ1dG9yc10sIGRpc3RhbmNl
KSwgKGV4cGVjdGVkX25hbWVzLCBleHBlY3RlZF9kaXN0YW5jZSkpCiAKICAgICBkZWYgdGVzdF9j
b250cmlidXRvcnNfYnlfZnV6enlfbWF0Y2goc2VsZik6CiAgICAgICAgIHNlbGYuX2Fzc2VydF9m
dXp6X21hdGNoKCdHZW9mZiBHYXJlbicsICdHZW9mZnJleSBHYXJlbicsIDMpCkBAIC0xMzgsNiAr
MTU0LDcgQEAgY2xhc3MgQ29tbWl0dGVyc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAg
ICBzZWxmLl9hc3NlcnRfZnV6el9tYXRjaCgnYSBzcGVsbCBjaGVja2VyJywgTm9uZSwgMTUpCiAg
ICAgICAgIHNlbGYuX2Fzc2VydF9mdXp6X21hdGNoKCdub2JvZHksIGJ1aWxkIGZpeCcsIE5vbmUs
IDE3KQogICAgICAgICBzZWxmLl9hc3NlcnRfZnV6el9tYXRjaCgnTk9CT0RZIChjaHJvbWl1bSBi
dWlsZCBmaXgpJywgTm9uZSwgMjcpCisgICAgICAgIHNlbGYuX2RvX2l0KCkKIAogICAgIGRlZiB0
ZXN0X2NvbnRyaWJ1dG9yc19ieV9mdXp6eV9tYXRjaF93aXRoX2xlZ2FjeV9uYW1lcyhzZWxmKToK
ICAgICAgICAgIyBDb21tZW50ZWQgb3V0IGxpbmVzIGFyZSB0ZXN0IGNhc2VzIGltcG9ydGVkIGZy
b20gdGhlIGJ1ZyAyNjUzMyB5ZXQgdG8gcGFzcy4KQEAgLTI4NSwzICszMDIsNCBAQCBjbGFzcyBD
b21taXR0ZXJzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuX2Fzc2VydF9m
dXp6X21hdGNoKCdUb3IgQXJuZScsIHUiVG9yIEFybmUgVmVzdGJcdTAwZjgiLCAxKSAgIyBNYXRj
aGVzIElSQyBuaWNrbmFtZQogICAgICAgICBzZWxmLl9hc3NlcnRfZnV6el9tYXRjaCgnVmlja2kn
LCB1IlZpY2tpIE11cmxleSIsIDApCiAgICAgICAgIHNlbGYuX2Fzc2VydF9mdXp6X21hdGNoKCda
YWNrJywgJ1phY2sgUnVzaW4nLCAwKQorICAgICAgICBzZWxmLl9kb19pdCgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128795</attachid>
            <date>2012-02-24 13:29:13 -0800</date>
            <delta_ts>2012-02-24 15:01:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79179-20120224132911.patch</filename>
            <type>text/plain</type>
            <size>22600</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4ODM3CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggY2ExOWFmZDhhMGRjZWI0Y2M4YWIxZjYyZjk3Yzc5OGE5
YzY2Njk3YS4uOWIzNTE3OTJiZDI5ZGMxYTQ3YjA1NzJiMzFlYjBlZmY0NzBiMzY4NCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDc0
IEBACiAyMDEyLTAyLTI0ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCisg
ICAgICAgIHdlYmtpdHB5OiBjb21taXR0ZXJzX3VuaXR0ZXN0IGZ1enp5IG1hdGNoaW5nIGlzIHJl
YWxseSBzbG93CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03OTE3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEJyZWFrIHRoZSBmdXp6eSBtYXRjaGluZyB0ZXN0cyBpbnRvIGluZGl2aWR1YWwgcm91dGluZXMg
Zm9yCisgICAgICAgIGVhY2ggY29udHJpYnV0b3Igc28gdGhhdCB0aGUgaW50ZW50IGlzIGEgbGl0
dGxlIGNsZWFyZXIsIHNvCisgICAgICAgIHRoYXQgaXQncyBlYXNpZXIgdG8gdGVzdCBpbmRpdmlk
dWFsIG5hbWVzIChhbmQgaWRlbnRpZnkKKyAgICAgICAgZHVwbGljYXRlIHRlc3RzKSwgYW5kIHNv
IHRoYXQgd2UgY2FuIGV2ZW50dWFsbHkgcnVuCisgICAgICAgIHRoZW0gaW4gcGFyYWxsZWwuCisK
KyAgICAgICAgQWxzbywgbWFyayBtb3N0IG9mIHRoZW0gYXMgJ2ludGVncmF0aW9uJyB0ZXN0cyBz
byB0aGF0IHRoZXkKKyAgICAgICAgY2FuIGJlIHNraXBwZWQgaWYgd2Ugd2FudCB0byBnbyBmYXN0
ICh3ZSBsZWF2ZSBhIGZldyBhcworICAgICAgICByZWd1bGFyIHRlc3RzIGZvciBmdW5jdGlvbmFs
IGNvdmVyYWdlKS4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9j
b21taXR0ZXJzX3VuaXR0ZXN0LnB5OgorICAgICAgICAoQ29tbWl0dGVyc1Rlc3QpOgorICAgICAg
ICAoQ29tbWl0dGVyc1Rlc3QudGVzdF9jb250cmlidXRvcnNfYnlfZnV6enlfbWF0Y2gpOgorICAg
ICAgICAoQ29tbWl0dGVyc1Rlc3QuaW50ZWdyYXRpb25fdGVzdF9jb250cmlidXRvcnNfX25vbmUp
OgorICAgICAgICAoQ29tbWl0dGVyc1Rlc3QuaW50ZWdyYXRpb25fdGVzdF9jb250cmlidXRvcnNf
X25vbmVfMik6CisgICAgICAgIChDb21taXR0ZXJzVGVzdC5pbnRlZ3JhdGlvbl90ZXN0X2NvbnRy
aWJ1dG9yc19fbm9uZV8zKToKKyAgICAgICAgKENvbW1pdHRlcnNUZXN0LmludGVncmF0aW9uX3Rl
c3RfY29udHJpYnV0b3JzX2FkYV9jaGFuKToKKyAgICAgICAgKENvbW1pdHRlcnNUZXN0LmludGVn
cmF0aW9uX3Rlc3RfY29udHJpYnV0b3JzX2FkZWxlX3BldGVyc29uKToKKyAgICAgICAgKENvbW1p
dHRlcnNUZXN0LmludGVncmF0aW9uX3Rlc3RfY29udHJpYnV0b3JzX2FsZXhleV9wcm9za3VyeWFr
b3YpOgorICAgICAgICAoQ29tbWl0dGVyc1Rlc3QuaW50ZWdyYXRpb25fdGVzdF9jb250cmlidXRv
cnNfYWxpY2VfbGl1KToKKyAgICAgICAgKENvbW1pdHRlcnNUZXN0LmludGVncmF0aW9uX3Rlc3Rf
Y29udHJpYnV0b3JzX2FscF90b2tlcik6CisgICAgICAgIChDb21taXR0ZXJzVGVzdC5pbnRlZ3Jh
dGlvbl90ZXN0X2NvbnRyaWJ1dG9yc19hbmRlcnNfY2FybHNzb24pOgorICAgICAgICAoQ29tbWl0
dGVyc1Rlc3QuaW50ZWdyYXRpb25fdGVzdF9jb250cmlidXRvcnNfYW50dGlfa29pdmlzdG8pOgor
ICAgICAgICAoQ29tbWl0dGVyc1Rlc3QuaW50ZWdyYXRpb25fdGVzdF9jb250cmlidXRvcnNfYmV0
aF9kYWtpbik6CisgICAgICAgIChDb21taXR0ZXJzVGVzdC5pbnRlZ3JhdGlvbl90ZXN0X2NvbnRy
aWJ1dG9yc19icmFkeV9laWRzb24pOgorICAgICAgICAoQ29tbWl0dGVyc1Rlc3QuaW50ZWdyYXRp
b25fdGVzdF9jb250cmlidXRvcnNfY2FtZXJvbl96d2FyaWNoKToKKyAgICAgICAgKENvbW1pdHRl
cnNUZXN0LmludGVncmF0aW9uX3Rlc3RfY29udHJpYnV0b3JzX2NocmlzX2JsdW1lbmJlcmcpOgor
ICAgICAgICAoQ29tbWl0dGVyc1Rlc3QuaW50ZWdyYXRpb25fdGVzdF9jb250cmlidXRvcnNfZGFu
X2Jlcm5zdGVpbik6CisgICAgICAgIChDb21taXR0ZXJzVGVzdC5pbnRlZ3JhdGlvbl90ZXN0X2Nv
bnRyaWJ1dG9yc19kYW5fYmVybnN0ZWluXzIpOgorICAgICAgICAoQ29tbWl0dGVyc1Rlc3QuaW50
ZWdyYXRpb25fdGVzdF9jb250cmlidXRvcnNfZGFyaW5fYWRsZXIpOgorICAgICAgICAoQ29tbWl0
dGVyc1Rlc3QuaW50ZWdyYXRpb25fdGVzdF9jb250cmlidXRvcnNfZGF2aWRfaGFycmlzb24pOgor
ICAgICAgICAoQ29tbWl0dGVyc1Rlc3QuaW50ZWdyYXRpb25fdGVzdF9jb250cmlidXRvcnNfZGF2
aWRfaGFycmlzb25fMik6CisgICAgICAgIChDb21taXR0ZXJzVGVzdC5pbnRlZ3JhdGlvbl90ZXN0
X2NvbnRyaWJ1dG9yc19kYXZpZF9oeWF0dCk6CisgICAgICAgIChDb21taXR0ZXJzVGVzdC5pbnRl
Z3JhdGlvbl90ZXN0X2NvbnRyaWJ1dG9yc19kYXZpZF9raWx6ZXIpOgorICAgICAgICAoQ29tbWl0
dGVyc1Rlc3QuaW50ZWdyYXRpb25fdGVzdF9jb250cmlidXRvcnNfZG9uX21lbHRvbik6CisgICAg
ICAgIChDb21taXR0ZXJzVGVzdC5pbnRlZ3JhdGlvbl90ZXN0X2NvbnRyaWJ1dG9yc19lcmljX3Nl
aWRlbCk6CisgICAgICAgIChDb21taXR0ZXJzVGVzdC5pbnRlZ3JhdGlvbl90ZXN0X2NvbnRyaWJ1
dG9yc19nZW9mZnJleV9nYXJlbik6CisgICAgICAgIChDb21taXR0ZXJzVGVzdC5pbnRlZ3JhdGlv
bl90ZXN0X2NvbnRyaWJ1dG9yc19ncmVnX2JvbHNpbmdhKToKKyAgICAgICAgKENvbW1pdHRlcnNU
ZXN0LmludGVncmF0aW9uX3Rlc3RfY29udHJpYnV0b3JzX2hvbGdlcl9mcmV5dGhlcik6CisgICAg
ICAgIChDb21taXR0ZXJzVGVzdC5pbnRlZ3JhdGlvbl90ZXN0X2NvbnRyaWJ1dG9yc19qb25fc3Vs
bGl2YW4pOgorICAgICAgICAoQ29tbWl0dGVyc1Rlc3QuaW50ZWdyYXRpb25fdGVzdF9jb250cmli
dXRvcnNfam9uX2hvbmV5Y3V0dCk6CisgICAgICAgIChDb21taXR0ZXJzVGVzdC5pbnRlZ3JhdGlv
bl90ZXN0X2NvbnRyaWJ1dG9yc19qb3NlcGhfcGVjb3Jhcm8pOgorICAgICAgICAoQ29tbWl0dGVy
c1Rlc3QuaW50ZWdyYXRpb25fdGVzdF9jb250cmlidXRvcnNfa2VuX2tvY2llbmRhKToKKyAgICAg
ICAgKENvbW1pdHRlcnNUZXN0LmludGVncmF0aW9uX3Rlc3RfY29udHJpYnV0b3JzX2tlbm5ldGhf
cnVzc2VsbCk6CisgICAgICAgIChDb21taXR0ZXJzVGVzdC5pbnRlZ3JhdGlvbl90ZXN0X2NvbnRy
aWJ1dG9yc19rZXZpbl9kZWNrZXIpOgorICAgICAgICAoQ29tbWl0dGVyc1Rlc3QuaW50ZWdyYXRp
b25fdGVzdF9jb250cmlidXRvcnNfa2V2aW5fbWNjdWxsb3VnaCk6CisgICAgICAgIChDb21taXR0
ZXJzVGVzdC5pbnRlZ3JhdGlvbl90ZXN0X2NvbnRyaWJ1dG9yc19sYXJzX2tub2xsKToKKyAgICAg
ICAgKENvbW1pdHRlcnNUZXN0LmludGVncmF0aW9uX3Rlc3RfY29udHJpYnV0b3JzX2xhcnNfd2Vp
bnRyYXViKToKKyAgICAgICAgKENvbW1pdHRlcnNUZXN0LmludGVncmF0aW9uX3Rlc3RfY29udHJp
YnV0b3JzX21hY2llal9zdGFjaG93aWFrKToKKyAgICAgICAgKENvbW1pdHRlcnNUZXN0LmludGVn
cmF0aW9uX3Rlc3RfY29udHJpYnV0b3JzX21hcmtfcm93ZSk6CisgICAgICAgIChDb21taXR0ZXJz
VGVzdC5pbnRlZ3JhdGlvbl90ZXN0X2NvbnRyaWJ1dG9yc19uaWtvbGFzX3ppbW1lcm1hbm4pOgor
ICAgICAgICAoQ29tbWl0dGVyc1Rlc3QuaW50ZWdyYXRpb25fdGVzdF9jb250cmlidXRvcnNfb2xp
dmVyX2h1bnQpOgorICAgICAgICAoQ29tbWl0dGVyc1Rlc3QuaW50ZWdyYXRpb25fdGVzdF9jb250
cmlidXRvcnNfcm5pd2EpOgorICAgICAgICAoQ29tbWl0dGVyc1Rlc3QuZGlzYWJsZWRfaW50ZWdy
YXRpb25fdGVzdF9jb250cmlidXRvcnNfc2ltb25fZnJhc2VyKToKKyAgICAgICAgKENvbW1pdHRl
cnNUZXN0LmludGVncmF0aW9uX3Rlc3RfY29udHJpYnV0b3JzX3N0ZXZlX2ZhbGtlbmJ1cmcpOgor
ICAgICAgICAoQ29tbWl0dGVyc1Rlc3QuaW50ZWdyYXRpb25fdGVzdF9jb250cmlidXRvcnNfc2Ft
X3dlaW5pZyk6CisgICAgICAgIChDb21taXR0ZXJzVGVzdC5pbnRlZ3JhdGlvbl90ZXN0X2NvbnRy
aWJ1dG9yc190aW1fb21lcm5pY2spOgorICAgICAgICAoQ29tbWl0dGVyc1Rlc3QuaW50ZWdyYXRp
b25fdGVzdF9jb250cmlidXRvcnNfdGltb3RoeV9oYXRjaGVyKToKKyAgICAgICAgKENvbW1pdHRl
cnNUZXN0LmludGVncmF0aW9uX3Rlc3RfY29udHJpYnV0b3JzX3Rvcl9hcm5lX3Zlc3Ribyk6Cisg
ICAgICAgIChDb21taXR0ZXJzVGVzdC5pbnRlZ3JhdGlvbl90ZXN0X2NvbnRyaWJ1dG9yc192aWNr
aV9tdXJsZXkpOgorICAgICAgICAoQ29tbWl0dGVyc1Rlc3QuaW50ZWdyYXRpb25fdGVzdF9jb250
cmlidXRvcnNfemFja19ydXNpbik6CisKKzIwMTItMDItMjQgIERpcmsgUHJhbmtlICA8ZHByYW5r
ZUBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgd2Via2l0cHk6IGNvbmZpZ191bml0dGVzdCBpcyBz
ZW5zaXRpdmUgdG8gb3RoZXIgdGVzdHMgdGhhdCBtaWdodCd2ZSBhbHJlYWR5IHJ1bgogICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzkzODIKIApkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL2NvbW1pdHRlcnNfdW5p
dHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcvY29tbWl0dGVy
c191bml0dGVzdC5weQppbmRleCA1M2Q5YzRkMTRmNGRmOTNmY2QzMTAyMDE2NjVjNGUwYTVhOTM1
MDA0Li4xYzhjODZhMWE2YmM2NzViMTY2NTBlMDJkZTRhN2VkNzVmNWU2MzMzIDEwMDY0NAotLS0g
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcvY29tbWl0dGVyc191bml0dGVz
dC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcvY29tbWl0dGVy
c191bml0dGVzdC5weQpAQCAtNyw4ICs3LDcgQEAKICMgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAogIyBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCiAjICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciAjIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKICMgZGlz
dHJpYnV0aW9uLgogIyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKICMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KQEAgLTExMCwxNDEgKzEwOSwyMDUgQEAgY2xh
c3MgQ29tbWl0dGVyc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAgICAgZXhwZWN0
ZWRfbmFtZXMgPSBbbmFtZV9vZl9leHBlY3RlZF9jb250cmlidXRvcl0gaWYgbmFtZV9vZl9leHBl
Y3RlZF9jb250cmlidXRvciBlbHNlIFtdCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKFtjb250
cmlidXRvci5mdWxsX25hbWUgZm9yIGNvbnRyaWJ1dG9yIGluIGNvbnRyaWJ1dG9yc10sIGRpc3Rh
bmNlKSwgKGV4cGVjdGVkX25hbWVzLCBleHBlY3RlZF9kaXN0YW5jZSkpCiAKKyAgICAjIEJhc2lj
IHRlc3Rpbmcgb2YgdGhlIGVkaXQgZGlzdGFuY2UgbWF0Y2hpbmcgLi4uCiAgICAgZGVmIHRlc3Rf
Y29udHJpYnV0b3JzX2J5X2Z1enp5X21hdGNoKHNlbGYpOgogICAgICAgICBzZWxmLl9hc3NlcnRf
ZnV6el9tYXRjaCgnR2VvZmYgR2FyZW4nLCAnR2VvZmZyZXkgR2FyZW4nLCAzKQogICAgICAgICBz
ZWxmLl9hc3NlcnRfZnV6el9tYXRjaCgnS2VubmV0aCBDaHJpc3RpYW5zZW4nLCAnS2VubmV0aCBS
b2hkZSBDaHJpc3RpYW5zZW4nLCA2KQotICAgICAgICBzZWxmLl9hc3NlcnRfZnV6el9tYXRjaCgn
S2VuIFJ1c3NlbGwnLCAnS2VubmV0aCBSdXNzZWxsJywgNCkKLSAgICAgICAgc2VsZi5fYXNzZXJ0
X2Z1enpfbWF0Y2goJ0RhdmUgSHlhdHQnLCAnRGF2aWQgSHlhdHQnLCAyKQotICAgICAgICBzZWxm
Ll9hc3NlcnRfZnV6el9tYXRjaCgnRGF2ZSBLaWx6ZXInLCAnRGF2aWQgS2lsemVyJywgMikKLSAg
ICAgICAgc2VsZi5fYXNzZXJ0X2Z1enpfbWF0Y2goJ0FudHRpICJwcmludGYiIEtvaXZpc3RvJywg
J0FudHRpIEtvaXZpc3RvJywgOSkKLSAgICAgICAgc2VsZi5fYXNzZXJ0X2Z1enpfbWF0Y2goJ1Nh
bW15IFdlaW5pZycsICdTYW0gV2VpbmlnJywgMikKLSAgICAgICAgc2VsZi5fYXNzZXJ0X2Z1enpf
bWF0Y2goJ0FuZHJlcyBLbGluZycsICdBbmRyZWFzIEtsaW5nJywgMSkKLSAgICAgICAgc2VsZi5f
YXNzZXJ0X2Z1enpfbWF0Y2goJ0RhcmluIEFkbGVyXCcnLCAnRGFyaW4gQWRsZXInLCAxKQotICAg
ICAgICBzZWxmLl9hc3NlcnRfZnV6el9tYXRjaCgnSm9lIFBlY29yYXJvJywgJ0pvc2VwaCBQZWNv
cmFybycsIDMpCi0gICAgICAgIHNlbGYuX2Fzc2VydF9mdXp6X21hdGNoKCdEciBEYW4gQmVybnN0
ZWluJywgJ0RhbiBCZXJuc3RlaW4nLCAzKQotICAgICAgICBzZWxmLl9hc3NlcnRfZnV6el9tYXRj
aCgnTWl0enBldHRlbCcsICdEYW4gQmVybnN0ZWluJywgMCkKLSAgICAgICAgc2VsZi5fYXNzZXJ0
X2Z1enpfbWF0Y2goJ3JuaXdhQHdlYmtpdC5vcmcnLCAnUnlvc3VrZSBOaXdhJywgMCkKLSAgICAg
ICAgc2VsZi5fYXNzZXJ0X2Z1enpfbWF0Y2goJ0FwJywgJ0FsZXhleSBQcm9za3VyeWFrb3YnLCAw
KQogICAgICAgICBzZWxmLl9hc3NlcnRfZnV6el9tYXRjaCgnU2FtJywgJ1NhbSBXZWluaWcnLCAw
KQotICAgICAgICBzZWxmLl9hc3NlcnRfZnV6el9tYXRjaCgnZGFyaW4nLCAnRGFyaW4gQWRsZXIn
LCAwKQotICAgICAgICBzZWxmLl9hc3NlcnRfZnV6el9tYXRjaCgnaGFycmlzb24nLCAnRGF2aWQg
SGFycmlzb24nLCAwKQogICAgICAgICBzZWxmLl9hc3NlcnRfZnV6el9tYXRjaCgnbWUnLCBOb25l
LCAyKQorCisgICAgIyBUaGUgcmVtYWluaW5nIHRlc3RzIHRlc3QgdGhhdCBjZXJ0YWluIG5hbWVz
IGFyZSByZXNvbHZlZCBpbiBhIHNwZWNpZmljIHdheS4KKyAgICAjIFdlIGJyZWFrIHRoaXMgdXAg
aW50byBtdWx0aXBsZSB0ZXN0cyBzbyB0aGF0IGVhY2ggaXMgZmFzdGVyIGFuZCB0aGV5IGNhbgor
ICAgICMgYmUgcnVuIGluIHBhcmFsbGVsLiBVbmZvcnR1bmF0ZWx5IGVhY2ggdGVzdCBzY2FucyB0
aGUgZW50aXJlIGNvbW1pdHRlcnMgbGlzdCwKKyAgICAjIHNvIHRoZXNlIGFyZSBpbmhlcmVudGx5
IHNsb3cgKHNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzkxNzkp
LgorICAgICMKKyAgICAjIENvbW1lbnRlZCBvdXQgbGluZXMgYXJlIHRlc3QgY2FzZXMgaW1wb3J0
ZWQgZnJvbSB0aGUgYnVnIDI2NTMzIHlldCB0byBwYXNzLgorCisgICAgZGVmIGludGVncmF0aW9u
X3Rlc3RfY29udHJpYnV0b3JzX19ub25lKHNlbGYpOgogICAgICAgICBzZWxmLl9hc3NlcnRfZnV6
el9tYXRjaCgnbXlzZWxmJywgTm9uZSwgNikKICAgICAgICAgc2VsZi5fYXNzZXJ0X2Z1enpfbWF0
Y2goJ290aGVycycsIE5vbmUsIDYpCiAgICAgICAgIHNlbGYuX2Fzc2VydF9mdXp6X21hdGNoKCdC
VUlMRCBGSVgnLCBOb25lLCA5KQorCisgICAgZGVmIGludGVncmF0aW9uX3Rlc3RfY29udHJpYnV0
b3JzX19ub25lXzIoc2VsZik6CiAgICAgICAgIHNlbGYuX2Fzc2VydF9mdXp6X21hdGNoKCdidXQg
RGFuIEJlcm5zdGVpbiBhbHNvIHJldmlld2VkJywgTm9uZSwgMzEpCiAgICAgICAgIHNlbGYuX2Fz
c2VydF9mdXp6X21hdGNoKCdhc2tlZCB0aG91Z2h0ZnVsIHF1ZXN0aW9ucycsIE5vbmUsIDI2KQog
ICAgICAgICBzZWxmLl9hc3NlcnRfZnV6el9tYXRjaCgnYnVpbGQgZml4IG9mIG1hYycsIE5vbmUs
IDE2KQorCisgICAgZGVmIGludGVncmF0aW9uX3Rlc3RfY29udHJpYnV0b3JzX19ub25lXzMoc2Vs
Zik6CiAgICAgICAgIHNlbGYuX2Fzc2VydF9mdXp6X21hdGNoKCdhIHNwZWxsIGNoZWNrZXInLCBO
b25lLCAxNSkKICAgICAgICAgc2VsZi5fYXNzZXJ0X2Z1enpfbWF0Y2goJ25vYm9keSwgYnVpbGQg
Zml4JywgTm9uZSwgMTcpCiAgICAgICAgIHNlbGYuX2Fzc2VydF9mdXp6X21hdGNoKCdOT0JPRFkg
KGNocm9taXVtIGJ1aWxkIGZpeCknLCBOb25lLCAyNykKIAotICAgIGRlZiB0ZXN0X2NvbnRyaWJ1
dG9yc19ieV9mdXp6eV9tYXRjaF93aXRoX2xlZ2FjeV9uYW1lcyhzZWxmKToKLSAgICAgICAgIyBD
b21tZW50ZWQgb3V0IGxpbmVzIGFyZSB0ZXN0IGNhc2VzIGltcG9ydGVkIGZyb20gdGhlIGJ1ZyAy
NjUzMyB5ZXQgdG8gcGFzcy4KLQorICAgIGRlZiBpbnRlZ3JhdGlvbl90ZXN0X2NvbnRyaWJ1dG9y
c19hZGFfY2hhbihzZWxmKToKICAgICAgICAgc2VsZi5fYXNzZXJ0X2Z1enpfbWF0Y2goJ0FkYScs
ICdBZGEgQ2hhbicsIDApCisKKyAgICBkZWYgaW50ZWdyYXRpb25fdGVzdF9jb250cmlidXRvcnNf
YWRlbGVfcGV0ZXJzb24oc2VsZik6CiAgICAgICAgIHNlbGYuX2Fzc2VydF9mdXp6X21hdGNoKCdh
ZGVsZScsICdBZGVsZSBQZXRlcnNvbicsIDApCi0jICAgICAgICBzZWxmLl9hc3NlcnRfZnV6el9t
YXRjaCgnQWRhbScsICdBZGFtIFJvYmVuJywgMCkKKworICAgIGRlZiBpbnRlZ3JhdGlvbl90ZXN0
X2NvbnRyaWJ1dG9yc19hZGVsZV9wZXRlcnNvbihzZWxmKToKKyAgICAgICAgIyBzZWxmLl9hc3Nl
cnRfZnV6el9tYXRjaCgnQWRhbScsICdBZGFtIFJvYmVuJywgMCkKICAgICAgICAgc2VsZi5fYXNz
ZXJ0X2Z1enpfbWF0Y2goJ2Fyb2JlbicsICdBZGFtIFJvYmVuJywgMCkKLSMgICAgICAgIHNlbGYu
X2Fzc2VydF9mdXp6X21hdGNoKCdBbGV4ZXknLCAnQWxleGV5IFByb3NrdXJ5YWtvdicsIDApCisK
KyAgICBkZWYgaW50ZWdyYXRpb25fdGVzdF9jb250cmlidXRvcnNfYWxleGV5X3Byb3NrdXJ5YWtv
dihzZWxmKToKKyAgICAgICAgIyBzZWxmLl9hc3NlcnRfZnV6el9tYXRjaCgnQWxleGV5JywgJ0Fs
ZXhleSBQcm9za3VyeWFrb3YnLCAwKQogICAgICAgICBzZWxmLl9hc3NlcnRfZnV6el9tYXRjaCgn
YXAnLCAnQWxleGV5IFByb3NrdXJ5YWtvdicsIDApCiAgICAgICAgIHNlbGYuX2Fzc2VydF9mdXp6
X21hdGNoKCdBbGV4ZXkgUCcsICdBbGV4ZXkgUHJvc2t1cnlha292JywgMCkKLSMgICAgICAgIHNl
bGYuX2Fzc2VydF9mdXp6X21hdGNoKCdBbGljZScsICdBbGljZSBMaXUnLCAwKQorCisgICAgZGVm
IGludGVncmF0aW9uX3Rlc3RfY29udHJpYnV0b3JzX2FsaWNlX2xpdShzZWxmKToKKyAgICAgICAg
IyBzZWxmLl9hc3NlcnRfZnV6el9tYXRjaCgnQWxpY2UnLCAnQWxpY2UgTGl1JywgMCkKICAgICAg
ICAgc2VsZi5fYXNzZXJ0X2Z1enpfbWF0Y2goJ2FsaXUnLCAnQWxpY2UgTGl1JywgMCkKICAgICAg
ICAgc2VsZi5fYXNzZXJ0X2Z1enpfbWF0Y2goJ0xpdScsICdBbGljZSBMaXUnLCAwKQorCisgICAg
ZGVmIGludGVncmF0aW9uX3Rlc3RfY29udHJpYnV0b3JzX2FscF90b2tlcihzZWxmKToKICAgICAg
ICAgc2VsZi5fYXNzZXJ0X2Z1enpfbWF0Y2goJ0FscCcsICdBbHAgVG9rZXInLCAwKQorCisgICAg
ZGVmIGludGVncmF0aW9uX3Rlc3RfY29udHJpYnV0b3JzX2FuZGVyc19jYXJsc3NvbihzZWxmKToK
ICAgICAgICAgc2VsZi5fYXNzZXJ0X2Z1enpfbWF0Y2goJ0FuZGVycycsICdBbmRlcnMgQ2FybHNz
b24nLCAwKQogICAgICAgICBzZWxmLl9hc3NlcnRfZnV6el9tYXRjaCgnYW5kZXJzY2EnLCAnQW5k
ZXJzIENhcmxzc29uJywgMCkKICAgICAgICAgc2VsZi5fYXNzZXJ0X2Z1enpfbWF0Y2goJ2FuZGVy
cycsICdBbmRlcnMgQ2FybHNzb24nLCAwKQogICAgICAgICBzZWxmLl9hc3NlcnRfZnV6el9tYXRj
aCgnQW5kZXJzY2EnLCAnQW5kZXJzIENhcmxzc29uJywgMCkKKworICAgIGRlZiBpbnRlZ3JhdGlv
bl90ZXN0X2NvbnRyaWJ1dG9yc19hbnR0aV9rb2l2aXN0byhzZWxmKToKKyAgICAgICAgc2VsZi5f
YXNzZXJ0X2Z1enpfbWF0Y2goJ0FudHRpICJwcmludGYiIEtvaXZpc3RvJywgJ0FudHRpIEtvaXZp
c3RvJywgOSkKICAgICAgICAgc2VsZi5fYXNzZXJ0X2Z1enpfbWF0Y2goJ0FudHRpJywgJ0FudHRp
IEtvaXZpc3RvJywgMCkKIAorICAgIGRlZiBpbnRlZ3JhdGlvbl90ZXN0X2NvbnRyaWJ1dG9yc19i
ZXRoX2Rha2luKHNlbGYpOgogICAgICAgICBzZWxmLl9hc3NlcnRfZnV6el9tYXRjaCgnQmV0aCcs
ICdCZXRoIERha2luJywgMCkKICAgICAgICAgc2VsZi5fYXNzZXJ0X2Z1enpfbWF0Y2goJ2JldGgn
LCAnQmV0aCBEYWtpbicsIDApCiAgICAgICAgIHNlbGYuX2Fzc2VydF9mdXp6X21hdGNoKCdiZGFr
aW4nLCAnQmV0aCBEYWtpbicsIDApCisKKyAgICBkZWYgaW50ZWdyYXRpb25fdGVzdF9jb250cmli
dXRvcnNfYnJhZHlfZWlkc29uKHNlbGYpOgogICAgICAgICBzZWxmLl9hc3NlcnRfZnV6el9tYXRj
aCgnQnJhZHknLCAnQnJhZHkgRWlkc29uJywgMCkKICAgICAgICAgc2VsZi5fYXNzZXJ0X2Z1enpf
bWF0Y2goJ2JyYWRlZS1vaCcsICdCcmFkeSBFaWRzb24nLCAwKQorICAgICAgICBzZWxmLl9hc3Nl
cnRfZnV6el9tYXRjaCgnQnJhZHknLCAnQnJhZHkgRWlkc29uJywgMCkKKworICAgIGRlZiBpbnRl
Z3JhdGlvbl90ZXN0X2NvbnRyaWJ1dG9yc19jYW1lcm9uX3p3YXJpY2goc2VsZik6CisgICAgICAg
IHBhc3MgICMgc2VsZi5fYXNzZXJ0X2Z1enpfbWF0Y2goJ0NhbWVyb24nLCAnQ2FtZXJvbiBad2Fy
aWNoJywgMCkKKyAgICAgICAgIyBzZWxmLl9hc3NlcnRfZnV6el9tYXRjaCgnY3BzdCcsICdDYW1l
cm9uIFp3YXJpY2gnLCAxKQogCi0jICAgICAgICBzZWxmLl9hc3NlcnRfZnV6el9tYXRjaCgnQ2Ft
ZXJvbicsICdDYW1lcm9uIFp3YXJpY2gnLCAwKQotIyAgICAgICAgc2VsZi5fYXNzZXJ0X2Z1enpf
bWF0Y2goJ2Nwc3QnLCAnQ2FtZXJvbiBad2FyaWNoJywgMSkKLSMgICAgICAgIHNlbGYuX2Fzc2Vy
dF9mdXp6X21hdGNoKCdDaHJpcycsICdDaHJpcyBCbHVtZW5iZXJnJywgMCkKKyAgICBkZWYgaW50
ZWdyYXRpb25fdGVzdF9jb250cmlidXRvcnNfY2hyaXNfYmx1bWVuYmVyZyhzZWxmKToKKyAgICAg
ICAgIyBzZWxmLl9hc3NlcnRfZnV6el9tYXRjaCgnQ2hyaXMnLCAnQ2hyaXMgQmx1bWVuYmVyZycs
IDApCiAgICAgICAgIHNlbGYuX2Fzc2VydF9mdXp6X21hdGNoKCdjYmx1JywgJ0NocmlzIEJsdW1l
bmJlcmcnLCAwKQogCisgICAgZGVmIGludGVncmF0aW9uX3Rlc3RfY29udHJpYnV0b3JzX2Rhbl9i
ZXJuc3RlaW4oc2VsZik6CiAgICAgICAgIHNlbGYuX2Fzc2VydF9mdXp6X21hdGNoKCdEYW4nLCBb
J0RhbiBXaW5zaGlwJywgJ0RhbiBCZXJuc3RlaW4nXSwgMCkKICAgICAgICAgc2VsZi5fYXNzZXJ0
X2Z1enpfbWF0Y2goJ0RhbiBCJywgJ0RhbiBCZXJuc3RlaW4nLCAwKQotIyAgICAgICAgc2VsZi5f
YXNzZXJ0X2Z1enpfbWF0Y2goJ21pdHonLCAnRGFuIEJlcm5zdGVpbicsIDApCisgICAgICAgICMg
c2VsZi5fYXNzZXJ0X2Z1enpfbWF0Y2goJ21pdHonLCAnRGFuIEJlcm5zdGVpbicsIDApCiAgICAg
ICAgIHNlbGYuX2Fzc2VydF9mdXp6X21hdGNoKCdNaXR6IFBldHRlbCcsICdEYW4gQmVybnN0ZWlu
JywgMSkKICAgICAgICAgc2VsZi5fYXNzZXJ0X2Z1enpfbWF0Y2goJ01pdHpwZXR0ZWwnLCAnRGFu
IEJlcm5zdGVpbicsIDApCiAgICAgICAgIHNlbGYuX2Fzc2VydF9mdXp6X21hdGNoKCdNaXR6IFBl
dHRlbCBSVEwnLCAnRGFuIEJlcm5zdGVpbicsIDUpCisKKyAgICBkZWYgaW50ZWdyYXRpb25fdGVz
dF9jb250cmlidXRvcnNfZGFuX2Jlcm5zdGVpbl8yKHNlbGYpOgogICAgICAgICBzZWxmLl9hc3Nl
cnRfZnV6el9tYXRjaCgnVGVoIE1pdHpwZXR0ZWwnLCAnRGFuIEJlcm5zdGVpbicsIDQpCi0jICAg
ICAgICBzZWxmLl9hc3NlcnRfZnV6el9tYXRjaCgnVGhlIE1pdHonLCAnRGFuIEJlcm5zdGVpbics
IDApCisgICAgICAgICMgc2VsZi5fYXNzZXJ0X2Z1enpfbWF0Y2goJ1RoZSBNaXR6JywgJ0RhbiBC
ZXJuc3RlaW4nLCAwKQorICAgICAgICBzZWxmLl9hc3NlcnRfZnV6el9tYXRjaCgnRHIgRGFuIEJl
cm5zdGVpbicsICdEYW4gQmVybnN0ZWluJywgMykKIAorICAgIGRlZiBpbnRlZ3JhdGlvbl90ZXN0
X2NvbnRyaWJ1dG9yc19kYXJpbl9hZGxlcihzZWxmKToKKyAgICAgICAgc2VsZi5fYXNzZXJ0X2Z1
enpfbWF0Y2goJ0RhcmluIEFkbGVyXCcnLCAnRGFyaW4gQWRsZXInLCAxKQogICAgICAgICBzZWxm
Ll9hc3NlcnRfZnV6el9tYXRjaCgnRGFyaW4nLCAnRGFyaW4gQWRsZXInLCAwKSAgIyBUaGFua2Z1
bGx5ICJGaXNoZXIiIGlzIGxvbmdlciB0aGFuICJBZGxlciIKKyAgICAgICAgc2VsZi5fYXNzZXJ0
X2Z1enpfbWF0Y2goJ2RhcmluJywgJ0RhcmluIEFkbGVyJywgMCkKIAorICAgIGRlZiBpbnRlZ3Jh
dGlvbl90ZXN0X2NvbnRyaWJ1dG9yc19kYXZpZF9oYXJyaXNvbihzZWxmKToKICAgICAgICAgc2Vs
Zi5fYXNzZXJ0X2Z1enpfbWF0Y2goJ0RhdmUgSGFycmlzb24nLCAnRGF2aWQgSGFycmlzb24nLCAy
KQogICAgICAgICBzZWxmLl9hc3NlcnRfZnV6el9tYXRjaCgnaGFycmlzb24nLCAnRGF2aWQgSGFy
cmlzb24nLCAwKQogICAgICAgICBzZWxmLl9hc3NlcnRfZnV6el9tYXRjaCgnRHIuIEhhcnJpc29u
JywgJ0RhdmlkIEhhcnJpc29uJywgNCkKKworICAgIGRlZiBpbnRlZ3JhdGlvbl90ZXN0X2NvbnRy
aWJ1dG9yc19kYXZpZF9oYXJyaXNvbl8yKHNlbGYpOgogICAgICAgICBzZWxmLl9hc3NlcnRfZnV6
el9tYXRjaCgnRGF2ZSBIYXJyc29uJywgJ0RhdmlkIEhhcnJpc29uJywgMykKICAgICAgICAgc2Vs
Zi5fYXNzZXJ0X2Z1enpfbWF0Y2goJ0RhdmUgSGFycnNpb24nLCAnRGF2aWQgSGFycmlzb24nLCA0
KSAgIyBEYW1lcmF1LUxldmVuc2h0ZWluIGRpc3RhbmNlIGlzIDMKIAorICAgIGRlZiBpbnRlZ3Jh
dGlvbl90ZXN0X2NvbnRyaWJ1dG9yc19kYXZpZF9oeWF0dChzZWxmKToKKyAgICAgICAgc2VsZi5f
YXNzZXJ0X2Z1enpfbWF0Y2goJ0RhdmUgSHlhdHQnLCAnRGF2aWQgSHlhdHQnLCAyKQogICAgICAg
ICBzZWxmLl9hc3NlcnRfZnV6el9tYXRjaCgnRGFkZHkgSHlhdHQnLCAnRGF2aWQgSHlhdHQnLCAz
KQotIyAgICAgICAgc2VsZi5fYXNzZXJ0X2Z1enpfbWF0Y2goJ0RhdmUnLCAnRGF2aWQgSHlhdHQn
LCAwKSAgIyAnRGF2ZScgY291bGQgbWVhbiBoYXJyaXNvbi4KKyAgICAgICAgIyBzZWxmLl9hc3Nl
cnRfZnV6el9tYXRjaCgnRGF2ZScsICdEYXZpZCBIeWF0dCcsIDApICAjICdEYXZlJyBjb3VsZCBt
ZWFuIGhhcnJpc29uLgogICAgICAgICBzZWxmLl9hc3NlcnRfZnV6el9tYXRjaCgnaHlhdHQnLCAn
RGF2aWQgSHlhdHQnLCAwKQotIyAgICAgICAgc2VsZi5fYXNzZXJ0X2Z1enpfbWF0Y2goJ0hheXR0
JywgJ0RhdmlkIEh5YXR0JywgMCkgICMgV29ya3MgaWYgd2UgaGFkIGltcGxlbWVudGVkIERhbWVy
YXUtTGV2ZW5zaHRlaW4gZGlzdGFuY2UhCisgICAgICAgICMgc2VsZi5fYXNzZXJ0X2Z1enpfbWF0
Y2goJ0hheXR0JywgJ0RhdmlkIEh5YXR0JywgMCkgICMgV29ya3MgaWYgd2UgaGFkIGltcGxlbWVu
dGVkIERhbWVyYXUtTGV2ZW5zaHRlaW4gZGlzdGFuY2UhCisKKyAgICBkZWYgaW50ZWdyYXRpb25f
dGVzdF9jb250cmlidXRvcnNfZGF2aWRfa2lsemVyKHNlbGYpOgogICAgICAgICBzZWxmLl9hc3Nl
cnRfZnV6el9tYXRjaCgnRGF2ZSBLaWx6ZXInLCAnRGF2aWQgS2lsemVyJywgMikKICAgICAgICAg
c2VsZi5fYXNzZXJ0X2Z1enpfbWF0Y2goJ0RhdmlkIEQuIEtpbHplcicsICdEYXZpZCBLaWx6ZXIn
LCAzKQogICAgICAgICBzZWxmLl9hc3NlcnRfZnV6el9tYXRjaCgnZGRraWx6ZXInLCAnRGF2aWQg
S2lsemVyJywgMCkKKworICAgIGRlZiBpbnRlZ3JhdGlvbl90ZXN0X2NvbnRyaWJ1dG9yc19kb25f
bWVsdG9uKHNlbGYpOgogICAgICAgICBzZWxmLl9hc3NlcnRfZnV6el9tYXRjaCgnRG9uJywgJ0Rv
biBNZWx0b24nLCAwKQogICAgICAgICBzZWxmLl9hc3NlcnRfZnV6el9tYXRjaCgnR3JhbXBzJywg
J0RvbiBNZWx0b24nLCAwKQogCi0jICAgICAgICBzZWxmLl9hc3NlcnRfZnV6el9tYXRjaCgnZXJp
YycsICdFcmljIFNlaWRlbCcsIDApCisgICAgZGVmIGludGVncmF0aW9uX3Rlc3RfY29udHJpYnV0
b3JzX2VyaWNfc2VpZGVsKHNlbGYpOgorICAgICAgICAjIHNlbGYuX2Fzc2VydF9mdXp6X21hdGNo
KCdlcmljJywgJ0VyaWMgU2VpZGVsJywgMCkKICAgICAgICAgc2VsZi5fYXNzZXJ0X2Z1enpfbWF0
Y2goJ0VyaWMgUycsICdFcmljIFNlaWRlbCcsIDApCi0jICAgICAgICBzZWxmLl9hc3NlcnRfZnV6
el9tYXRjaCgnTWFjRG9tZScsICdFcmljIFNlaWRlbCcsIDApCisgICAgICAgICMgc2VsZi5fYXNz
ZXJ0X2Z1enpfbWF0Y2goJ01hY0RvbWUnLCAnRXJpYyBTZWlkZWwnLCAwKQogICAgICAgICBzZWxm
Ll9hc3NlcnRfZnV6el9tYXRjaCgnZXNlaWRlbCcsICdFcmljIFNlaWRlbCcsIDApCiAKLSMgICAg
ICAgIHNlbGYuX2Fzc2VydF9mdXp6X21hdGNoKCdHZW9mJywgJ0dlb2ZmcmV5IEdhcmVuJywgNCkK
LSMgICAgICAgIHNlbGYuX2Fzc2VydF9mdXp6X21hdGNoKCdHZW9mZicsICdHZW9mZnJleSBHYXJl
bicsIDMpCisgICAgZGVmIGludGVncmF0aW9uX3Rlc3RfY29udHJpYnV0b3JzX2dlb2ZmcmV5X2dh
cmVuKHNlbGYpOgorICAgICAgICAjIHNlbGYuX2Fzc2VydF9mdXp6X21hdGNoKCdHZW9mJywgJ0dl
b2ZmcmV5IEdhcmVuJywgNCkKKyAgICAgICAgIyBzZWxmLl9hc3NlcnRfZnV6el9tYXRjaCgnR2Vv
ZmYnLCAnR2VvZmZyZXkgR2FyZW4nLCAzKQogICAgICAgICBzZWxmLl9hc3NlcnRfZnV6el9tYXRj
aCgnR2VvZmYgR2FyZW4nLCAnR2VvZmZyZXkgR2FyZW4nLCAzKQogICAgICAgICBzZWxmLl9hc3Nl
cnRfZnV6el9tYXRjaCgnZ2dhcmVuJywgJ0dlb2ZmcmV5IEdhcmVuJywgMCkKLSMgICAgICAgIHNl
bGYuX2Fzc2VydF9mdXp6X21hdGNoKCdnZW9mZicsICdHZW9mZnJleSBHYXJlbicsIDApCisgICAg
ICAgICMgc2VsZi5fYXNzZXJ0X2Z1enpfbWF0Y2goJ2dlb2ZmJywgJ0dlb2ZmcmV5IEdhcmVuJywg
MCkKICAgICAgICAgc2VsZi5fYXNzZXJ0X2Z1enpfbWF0Y2goJ0dlb2ZmcmV5JywgJ0dlb2ZmcmV5
IEdhcmVuJywgMCkKICAgICAgICAgc2VsZi5fYXNzZXJ0X2Z1enpfbWF0Y2goJ0dHYXJlbicsICdH
ZW9mZnJleSBHYXJlbicsIDApCi0jICAgICAgICBzZWxmLl9hc3NlcnRfZnV6el9tYXRjaCgnR3Jl
ZycsICdHcmVnIEJvbHNpbmdhJywgMCkKIAorICAgIGRlZiBpbnRlZ3JhdGlvbl90ZXN0X2NvbnRy
aWJ1dG9yc19ncmVnX2JvbHNpbmdhKHNlbGYpOgorICAgICAgICBwYXNzICAjIHNlbGYuX2Fzc2Vy
dF9mdXp6X21hdGNoKCdHcmVnJywgJ0dyZWcgQm9sc2luZ2EnLCAwKQorCisgICAgZGVmIGludGVn
cmF0aW9uX3Rlc3RfY29udHJpYnV0b3JzX2hvbGdlcl9mcmV5dGhlcihzZWxmKToKICAgICAgICAg
c2VsZi5fYXNzZXJ0X2Z1enpfbWF0Y2goJ0hvbGdlcicsICdIb2xnZXIgRnJleXRoZXInLCAwKQog
ICAgICAgICBzZWxmLl9hc3NlcnRfZnV6el9tYXRjaCgnSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRo
ZXInLCAnSG9sZ2VyIEZyZXl0aGVyJywgMTEpCiAKLSMgICAgICAgIHNlbGYuX2Fzc2VydF9mdXp6
X21hdGNoKCdqb2huJywgJ0pvaG4gU3VsbGl2YW4nLCAwKQorICAgIGRlZiBpbnRlZ3JhdGlvbl90
ZXN0X2NvbnRyaWJ1dG9yc19qb25fc3VsbGl2YW4oc2VsZik6CisgICAgICAgICMgc2VsZi5fYXNz
ZXJ0X2Z1enpfbWF0Y2goJ2pvaG4nLCAnSm9obiBTdWxsaXZhbicsIDApCiAgICAgICAgIHNlbGYu
X2Fzc2VydF9mdXp6X21hdGNoKCdzdWxsaXZhbicsICdKb2huIFN1bGxpdmFuJywgMCkKKworICAg
IGRlZiBpbnRlZ3JhdGlvbl90ZXN0X2NvbnRyaWJ1dG9yc19qb25faG9uZXljdXR0KHNlbGYpOgog
ICAgICAgICBzZWxmLl9hc3NlcnRfZnV6el9tYXRjaCgnSm9obiBIb25leWN1dHQnLCAnSm9uIEhv
bmV5Y3V0dCcsIDEpCi0jICAgICAgICBzZWxmLl9hc3NlcnRfZnV6el9tYXRjaCgnSm9uJywgJ0pv
biBIb25leWN1dHQnLCAwKQotIyAgICAgICAgc2VsZi5fYXNzZXJ0X2Z1enpfbWF0Y2goJ2p1c3Rp
bicsICdKdXN0aW4gR2FyY2lhJywgMCkKKyAgICAgICAgIyBzZWxmLl9hc3NlcnRfZnV6el9tYXRj
aCgnSm9uJywgJ0pvbiBIb25leWN1dHQnLCAwKQorCisgICAgZGVmIGludGVncmF0aW9uX3Rlc3Rf
Y29udHJpYnV0b3JzX2pvbl9ob25leWN1dHQoc2VsZik6CisgICAgICAgICMgc2VsZi5fYXNzZXJ0
X2Z1enpfbWF0Y2goJ2p1c3RpbicsICdKdXN0aW4gR2FyY2lhJywgMCkKICAgICAgICAgc2VsZi5f
YXNzZXJ0X2Z1enpfbWF0Y2goJ2p1c3RpbmcnLCAnSnVzdGluIEdhcmNpYScsIDApCiAKKyAgICBk
ZWYgaW50ZWdyYXRpb25fdGVzdF9jb250cmlidXRvcnNfam9zZXBoX3BlY29yYXJvKHNlbGYpOgor
ICAgICAgICBzZWxmLl9hc3NlcnRfZnV6el9tYXRjaCgnSm9lIFBlY29yYXJvJywgJ0pvc2VwaCBQ
ZWNvcmFybycsIDMpCisKKyAgICBkZWYgaW50ZWdyYXRpb25fdGVzdF9jb250cmlidXRvcnNfa2Vu
X2tvY2llbmRhKHNlbGYpOgogICAgICAgICBzZWxmLl9hc3NlcnRfZnV6el9tYXRjaCgna2VuJywg
J0tlbiBLb2NpZW5kYScsIDApCiAgICAgICAgIHNlbGYuX2Fzc2VydF9mdXp6X21hdGNoKCdrb2Np
ZW5kYScsICdLZW4gS29jaWVuZGEnLCAwKQorCisgICAgZGVmIGludGVncmF0aW9uX3Rlc3RfY29u
dHJpYnV0b3JzX2tlbm5ldGhfcnVzc2VsbChzZWxmKToKKyAgICAgICAgc2VsZi5fYXNzZXJ0X2Z1
enpfbWF0Y2goJ0tlbiBSdXNzZWxsJywgJ0tlbm5ldGggUnVzc2VsbCcsIDQpCisKKyAgICBkZWYg
aW50ZWdyYXRpb25fdGVzdF9jb250cmlidXRvcnNfa2V2aW5fZGVja2VyKHNlbGYpOgogICAgICAg
ICBzZWxmLl9hc3NlcnRfZnV6el9tYXRjaCgna2RlY2tlcicsICdLZXZpbiBEZWNrZXInLCAwKQor
CisgICAgZGVmIGludGVncmF0aW9uX3Rlc3RfY29udHJpYnV0b3JzX2tldmluX21jY3VsbG91Z2go
c2VsZik6CiAgICAgICAgIHNlbGYuX2Fzc2VydF9mdXp6X21hdGNoKCdLZXZpbiBNJywgJ0tldmlu
IE1jQ3VsbG91Z2gnLCAwKQogICAgICAgICBzZWxmLl9hc3NlcnRfZnV6el9tYXRjaCgnS2V2aW4g
TWNDdWxvdWdoJywgJ0tldmluIE1jQ3VsbG91Z2gnLCAxKQogICAgICAgICBzZWxmLl9hc3NlcnRf
ZnV6el9tYXRjaCgnbWNjdWxsb3VnaCcsICdLZXZpbiBNY0N1bGxvdWdoJywgMCkKIAorICAgIGRl
ZiBpbnRlZ3JhdGlvbl90ZXN0X2NvbnRyaWJ1dG9yc19sYXJzX2tub2xsKHNlbGYpOgogICAgICAg
ICBzZWxmLl9hc3NlcnRfZnV6el9tYXRjaCgnbGFycycsICdMYXJzIEtub2xsJywgMCkKKworICAg
IGRlZiBpbnRlZ3JhdGlvbl90ZXN0X2NvbnRyaWJ1dG9yc19sYXJzX3dlaW50cmF1YihzZWxmKToK
ICAgICAgICAgc2VsZi5fYXNzZXJ0X2Z1enpfbWF0Y2goJ2xldmknLCAnTGV2aSBXZWludHJhdWIn
LCAwKQogCisgICAgZGVmIGludGVncmF0aW9uX3Rlc3RfY29udHJpYnV0b3JzX21hY2llal9zdGFj
aG93aWFrKHNlbGYpOgogICAgICAgICBzZWxmLl9hc3NlcnRfZnV6el9tYXRjaCgnTWFjaWVqJywg
J01hY2llaiBTdGFjaG93aWFrJywgMCkKLSMgICAgICAgIHNlbGYuX2Fzc2VydF9mdXp6X21hdGNo
KCdtanMnLCAnTWFjaWVqIFN0YWNob3dpYWsnLCAwKQorICAgICAgICAjIHNlbGYuX2Fzc2VydF9m
dXp6X21hdGNoKCdtanMnLCAnTWFjaWVqIFN0YWNob3dpYWsnLCAwKQogICAgICAgICBzZWxmLl9h
c3NlcnRfZnV6el9tYXRjaCgnTWFjaWVqIFMnLCAnTWFjaWVqIFN0YWNob3dpYWsnLCAwKQogCi0j
ICAgICAgICBzZWxmLl9hc3NlcnRfZnV6el9tYXRjaCgnTWFyaycsICdNYXJrIFJvd2UnLCAwKQor
ICAgIGRlZiBpbnRlZ3JhdGlvbl90ZXN0X2NvbnRyaWJ1dG9yc19tYXJrX3Jvd2Uoc2VsZik6Cisg
ICAgICAgICMgc2VsZi5fYXNzZXJ0X2Z1enpfbWF0Y2goJ01hcmsnLCAnTWFyayBSb3dlJywgMCkK
ICAgICAgICAgc2VsZi5fYXNzZXJ0X2Z1enpfbWF0Y2goJ2JkYXNoJywgJ01hcmsgUm93ZScsIDAp
CiAgICAgICAgIHNlbGYuX2Fzc2VydF9mdXp6X21hdGNoKCdtcm93ZScsICdNYXJrIFJvd2UnLCAw
KQotIyAgICAgICAgc2VsZi5fYXNzZXJ0X2Z1enpfbWF0Y2goJ0JyaWFuIERhc2gnLCAnTWFyayBS
b3dlJywgMCkKKyAgICAgICAgIyBzZWxmLl9hc3NlcnRfZnV6el9tYXRjaCgnQnJpYW4gRGFzaCcs
ICdNYXJrIFJvd2UnLCAwKQogCi0jICAgICAgICBzZWxmLl9hc3NlcnRfZnV6el9tYXRjaCgnTmlr
bycsICdOaWtvbGFzIFppbW1lcm1hbm4nLCAxKQorICAgIGRlZiBpbnRlZ3JhdGlvbl90ZXN0X2Nv
bnRyaWJ1dG9yc19uaWtvbGFzX3ppbW1lcm1hbm4oc2VsZik6CisgICAgICAgICMgc2VsZi5fYXNz
ZXJ0X2Z1enpfbWF0Y2goJ05pa28nLCAnTmlrb2xhcyBaaW1tZXJtYW5uJywgMSkKICAgICAgICAg
c2VsZi5fYXNzZXJ0X2Z1enpfbWF0Y2goJ05pa28gWmltbWVybWFubicsICdOaWtvbGFzIFppbW1l
cm1hbm4nLCAzKQogICAgICAgICBzZWxmLl9hc3NlcnRfZnV6el9tYXRjaCgnTmlrb2xhcycsICdO
aWtvbGFzIFppbW1lcm1hbm4nLCAwKQogCi0jICAgICAgICBzZWxmLl9hc3NlcnRfZnV6el9tYXRj
aCgnT2xpdmVyJywgJ09saXZlciBIdW50JywgMCkKKyAgICBkZWYgaW50ZWdyYXRpb25fdGVzdF9j
b250cmlidXRvcnNfb2xpdmVyX2h1bnQoc2VsZik6CisgICAgICAgICMgIHNlbGYuX2Fzc2VydF9m
dXp6X21hdGNoKCdPbGl2ZXInLCAnT2xpdmVyIEh1bnQnLCAwKQogICAgICAgICBzZWxmLl9hc3Nl
cnRfZnV6el9tYXRjaCgnT2xsaWUnLCAnT2xpdmVyIEh1bnQnLCAxKQogICAgICAgICBzZWxmLl9h
c3NlcnRfZnV6el9tYXRjaCgnT2xsaWVqJywgJ09saXZlciBIdW50JywgMCkKICAgICAgICAgc2Vs
Zi5fYXNzZXJ0X2Z1enpfbWF0Y2goJ09sbGllaiBIdW50JywgJ09saXZlciBIdW50JywgMykKQEAg
LTI1MiwzNiArMzE1LDU0IEBAIGNsYXNzIENvbW1pdHRlcnNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNl
KToKICAgICAgICAgc2VsZi5fYXNzZXJ0X2Z1enpfbWF0Y2goJ29sbGllJywgJ09saXZlciBIdW50
JywgMSkKICAgICAgICAgc2VsZi5fYXNzZXJ0X2Z1enpfbWF0Y2goJ29sbGxpZWonLCAnT2xpdmVy
IEh1bnQnLCAxKQogCisgICAgZGVmIGludGVncmF0aW9uX3Rlc3RfY29udHJpYnV0b3JzX29saXZl
cl9odW50KHNlbGYpOgogICAgICAgICBzZWxmLl9hc3NlcnRfZnV6el9tYXRjaCgnUmljaGFyZCcs
ICdSaWNoYXJkIFdpbGxpYW1zb24nLCAwKQogICAgICAgICBzZWxmLl9hc3NlcnRfZnV6el9tYXRj
aCgncmp3JywgJ1JpY2hhcmQgV2lsbGlhbXNvbicsIDApCisKKyAgICBkZWYgaW50ZWdyYXRpb25f
dGVzdF9jb250cmlidXRvcnNfb2xpdmVyX2h1bnQoc2VsZik6CiAgICAgICAgIHNlbGYuX2Fzc2Vy
dF9mdXp6X21hdGNoKCdSb2InLCAnUm9iIEJ1aXMnLCAwKQogICAgICAgICBzZWxmLl9hc3NlcnRf
ZnV6el9tYXRjaCgncndsYnVpcycsICdSb2IgQnVpcycsIDApCiAKKyAgICBkZWYgaW50ZWdyYXRp
b25fdGVzdF9jb250cmlidXRvcnNfcm5pd2Eoc2VsZik6CisgICAgICAgIHNlbGYuX2Fzc2VydF9m
dXp6X21hdGNoKCdybml3YUB3ZWJraXQub3JnJywgJ1J5b3N1a2UgTml3YScsIDApCisKKyAgICBk
ZWYgZGlzYWJsZWRfaW50ZWdyYXRpb25fdGVzdF9jb250cmlidXRvcnNfc2ltb25fZnJhc2VyKHNl
bGYpOgorICAgICAgICBwYXNzICAjIHNlbGYuX2Fzc2VydF9mdXp6X21hdGNoKCdTaW1vbicsICdT
aW1vbiBGcmFzZXInLCAwKQorCisgICAgZGVmIGludGVncmF0aW9uX3Rlc3RfY29udHJpYnV0b3Jz
X3N0ZXZlX2ZhbGtlbmJ1cmcoc2VsZik6CisgICAgICAgIHNlbGYuX2Fzc2VydF9mdXp6X21hdGNo
KCdTZmFsa2VuJywgJ1N0ZXZlIEZhbGtlbmJ1cmcnLCAwKQorICAgICAgICAjIHNlbGYuX2Fzc2Vy
dF9mdXp6X21hdGNoKCdTdGV2ZScsICdTdGV2ZSBGYWxrZW5idXJnJywgMCkKKworICAgIGRlZiBp
bnRlZ3JhdGlvbl90ZXN0X2NvbnRyaWJ1dG9yc19zYW1fd2VpbmlnKHNlbGYpOgogICAgICAgICBz
ZWxmLl9hc3NlcnRfZnV6el9tYXRjaCgnU2FtJywgJ1NhbSBXZWluaWcnLCAwKQotIyAgICAgICAg
c2VsZi5fYXNzZXJ0X2Z1enpfbWF0Y2goJ1dlaW5pZyBTYW0nLCAnd2VpbmlnJywgMCkKKyAgICAg
ICAgIyBzZWxmLl9hc3NlcnRfZnV6el9tYXRjaCgnV2VpbmlnIFNhbScsICd3ZWluaWcnLCAwKQog
ICAgICAgICBzZWxmLl9hc3NlcnRfZnV6el9tYXRjaCgnV2VpbmlnJywgJ1NhbSBXZWluaWcnLCAw
KQogICAgICAgICBzZWxmLl9hc3NlcnRfZnV6el9tYXRjaCgnU2FtIFcnLCAnU2FtIFdlaW5pZycs
IDApCiAgICAgICAgIHNlbGYuX2Fzc2VydF9mdXp6X21hdGNoKCdTYW1teSBXZWluaWcnLCAnU2Ft
IFdlaW5pZycsIDIpCi0jICAgICAgICBzZWxmLl9hc3NlcnRfZnV6el9tYXRjaCgnU2ltb24nLCAn
U2ltb24gRnJhc2VyJywgMCkKLSAgICAgICAgc2VsZi5fYXNzZXJ0X2Z1enpfbWF0Y2goJ1NmYWxr
ZW4nLCAnU3RldmUgRmFsa2VuYnVyZycsIDApCi0jICAgICAgICBzZWxmLl9hc3NlcnRfZnV6el9t
YXRjaCgnU3RldmUnLCAnU3RldmUgRmFsa2VuYnVyZycsIDApCiAKLSMgICAgICAgIHNlbGYuX2Fz
c2VydF9mdXp6X21hdGNoKCd0aW1vJywgJ1RpbSBPbWVybmljaycsIDApCisgICAgZGVmIGludGVn
cmF0aW9uX3Rlc3RfY29udHJpYnV0b3JzX3RpbV9vbWVybmljayhzZWxmKToKKyAgICAgICAgIyBz
ZWxmLl9hc3NlcnRfZnV6el9tYXRjaCgndGltbycsICdUaW0gT21lcm5pY2snLCAwKQogICAgICAg
ICBzZWxmLl9hc3NlcnRfZnV6el9tYXRjaCgnVGltTycsICdUaW0gT21lcm5pY2snLCAwKQotIyAg
ICAgICAgc2VsZi5fYXNzZXJ0X2Z1enpfbWF0Y2goJ1RpbW8gTycsICdUaW0gT21lcm5pY2snLCAw
KQotIyAgICAgICAgc2VsZi5fYXNzZXJ0X2Z1enpfbWF0Y2goJ1RpbSBPLicsICdUaW0gT21lcm5p
Y2snLCAwKQorICAgICAgICAjIHNlbGYuX2Fzc2VydF9mdXp6X21hdGNoKCdUaW1vIE8nLCAnVGlt
IE9tZXJuaWNrJywgMCkKKyAgICAgICAgIyBzZWxmLl9hc3NlcnRfZnV6el9tYXRjaCgnVGltIE8u
JywgJ1RpbSBPbWVybmljaycsIDApCiAgICAgICAgIHNlbGYuX2Fzc2VydF9mdXp6X21hdGNoKCdU
aW0gTycsICdUaW0gT21lcm5pY2snLCAwKQogCi0jICAgICAgICBzZWxmLl9hc3NlcnRfZnV6el9t
YXRjaCgnVGltJywgJ1RpbW90aHkgSGF0Y2hlcicsIDApCi0jICAgICAgICBzZWxmLl9hc3NlcnRf
ZnV6el9tYXRjaCgnVGltIEgnLCAnVGltb3RoeSBIYXRjaGVyJywgMCkKKyAgICBkZWYgaW50ZWdy
YXRpb25fdGVzdF9jb250cmlidXRvcnNfdGltb3RoeV9oYXRjaGVyKHNlbGYpOgorICAgICAgICAj
IHNlbGYuX2Fzc2VydF9mdXp6X21hdGNoKCdUaW0nLCAnVGltb3RoeSBIYXRjaGVyJywgMCkKKyAg
ICAgICAgIyBzZWxmLl9hc3NlcnRfZnV6el9tYXRjaCgnVGltIEgnLCAnVGltb3RoeSBIYXRjaGVy
JywgMCkKICAgICAgICAgc2VsZi5fYXNzZXJ0X2Z1enpfbWF0Y2goJ1RpbSBIYXRjaGVyJywgJ1Rp
bW90aHkgSGF0Y2hlcicsIDQpCiAgICAgICAgIHNlbGYuX2Fzc2VydF9mdXp6X21hdGNoKCdUaW0g
SGF0Y2hlcmknLCAnVGltb3RoeSBIYXRjaGVyJywgNSkKICAgICAgICAgc2VsZi5fYXNzZXJ0X2Z1
enpfbWF0Y2goJ3RpbW90aHknLCAnVGltb3RoeSBIYXRjaGVyJywgMCkKICAgICAgICAgc2VsZi5f
YXNzZXJ0X2Z1enpfbWF0Y2goJ3RoYXRjaGVyJywgJ1RpbW90aHkgSGF0Y2hlcicsIDEpCiAgICAg
ICAgIHNlbGYuX2Fzc2VydF9mdXp6X21hdGNoKCd4ZW5vbicsICdUaW1vdGh5IEhhdGNoZXInLCAw
KQogICAgICAgICBzZWxmLl9hc3NlcnRfZnV6el9tYXRjaCgnSGF0Y2hlcicsICdUaW1vdGh5IEhh
dGNoZXInLCAwKQotIyAgICAgICAgc2VsZi5fYXNzZXJ0X2Z1enpfbWF0Y2goJ1RpbUgnLCAnVGlt
b3RoeSBIYXRjaGVyJywgMCkKKyAgICAgICAgIyBzZWxmLl9hc3NlcnRfZnV6el9tYXRjaCgnVGlt
SCcsICdUaW1vdGh5IEhhdGNoZXInLCAwKQogCisgICAgZGVmIGludGVncmF0aW9uX3Rlc3RfY29u
dHJpYnV0b3JzX3Rvcl9hcm5lX3Zlc3RibyhzZWxmKToKICAgICAgICAgc2VsZi5fYXNzZXJ0X2Z1
enpfbWF0Y2goJ1RvciBBcm5lJywgdSJUb3IgQXJuZSBWZXN0Ylx1MDBmOCIsIDEpICAjIE1hdGNo
ZXMgSVJDIG5pY2tuYW1lCisKKyAgICBkZWYgaW50ZWdyYXRpb25fdGVzdF9jb250cmlidXRvcnNf
dmlja2lfbXVybGV5KHNlbGYpOgogICAgICAgICBzZWxmLl9hc3NlcnRfZnV6el9tYXRjaCgnVmlj
a2knLCB1IlZpY2tpIE11cmxleSIsIDApCisKKyAgICBkZWYgaW50ZWdyYXRpb25fdGVzdF9jb250
cmlidXRvcnNfemFja19ydXNpbihzZWxmKToKICAgICAgICAgc2VsZi5fYXNzZXJ0X2Z1enpfbWF0
Y2goJ1phY2snLCAnWmFjayBSdXNpbicsIDApCg==
</data>
<flag name="review"
          id="131281"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
      

    </bug>

</bugzilla>