<?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>44648</bug_id>
          
          <creation_ts>2010-08-25 16:42:11 -0700</creation_ts>
          <short_desc>new-run-webkit-tests: add rebaselining tests for test_expectations</short_desc>
          <delta_ts>2010-08-26 12:47:12 -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>PC</rep_platform>
          <op_sys>OS X 10.5</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>ojan</cc>
    
    <cc>victorw</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>269602</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-08-25 16:42:11 -0700</bug_when>
    <thetext>more unit tests ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269603</commentid>
    <comment_count>1</comment_count>
      <attachid>65500</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-08-25 16:43:02 -0700</bug_when>
    <thetext>Created attachment 65500
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269606</commentid>
    <comment_count>2</comment_count>
      <attachid>65500</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-08-25 16:52:41 -0700</bug_when>
    <thetext>Comment on attachment 65500
Patch

&gt; +    def test_remove_expand(self):
&gt; +        # This test is somewhat counterintuitive - lines with no platform
&gt; +        # specified get expanded to every platform.
&gt; +        self.assertRemove(&apos;&apos;,
&gt; +            &apos;BUGX REBASELINE : failures/expected/text.html = TEXT\n&apos;,
&gt; +            &apos;BUGX REBASELINE MAC WIN : failures/expected/text.html = TEXT\n&apos;)

This looks wrong. Mind adding a FIXME and filing a bug CCed to victorw? It&apos;s not a big deal, but it does bloat test_expectations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269609</commentid>
    <comment_count>3</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-08-25 16:55:45 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 65500 [details])
&gt; &gt; +    def test_remove_expand(self):
&gt; &gt; +        # This test is somewhat counterintuitive - lines with no platform
&gt; &gt; +        # specified get expanded to every platform.
&gt; &gt; +        self.assertRemove(&apos;&apos;,
&gt; &gt; +            &apos;BUGX REBASELINE : failures/expected/text.html = TEXT\n&apos;,
&gt; &gt; +            &apos;BUGX REBASELINE MAC WIN : failures/expected/text.html = TEXT\n&apos;)
&gt; 
&gt; This looks wrong. Mind adding a FIXME and filing a bug CCed to victorw? It&apos;s not a big deal, but it does bloat test_expectations.

If it is wrong, I&apos;d just as soon fix the bug here. 

Since we reasonably routinely rebaseline across all platforms, I&apos;m assuming that the rebaseline_chromium_webkit_tests code is smart enough to handle this case somehow. Either that, or it traps this case before every calling this function, but that seems unlikely. 

Victor?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269619</commentid>
    <comment_count>4</comment_count>
    <who name="Victor Wang">victorw</who>
    <bug_when>2010-08-25 17:11:43 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; (From update of attachment 65500 [details] [details])
&gt; &gt; &gt; +    def test_remove_expand(self):
&gt; &gt; &gt; +        # This test is somewhat counterintuitive - lines with no platform
&gt; &gt; &gt; +        # specified get expanded to every platform.
&gt; &gt; &gt; +        self.assertRemove(&apos;&apos;,
&gt; &gt; &gt; +            &apos;BUGX REBASELINE : failures/expected/text.html = TEXT\n&apos;,
&gt; &gt; &gt; +            &apos;BUGX REBASELINE MAC WIN : failures/expected/text.html = TEXT\n&apos;)
&gt; &gt; 
&gt; &gt; This looks wrong. Mind adding a FIXME and filing a bug CCed to victorw? It&apos;s not a big deal, but it does bloat test_expectations.
&gt; 
&gt; If it is wrong, I&apos;d just as soon fix the bug here. 
&gt; 
&gt; Since we reasonably routinely rebaseline across all platforms, I&apos;m assuming that the rebaseline_chromium_webkit_tests code is smart enough to handle this case somehow. Either that, or it traps this case before every calling this function, but that seems unlikely. 
&gt; 
&gt; Victor?

We should return the original string if the platform param is empty.

The purpose is if there is a test expectation like this:
BUGX REBASELINE : failures/expected/text.html = TEXT\n

and we did rebaseline one platform: LINUX, the line should change to
BUGX REBASELINE WIN MAC: failures/expected/text.html = TEXT\n

The rebaseline_chromium_webkit_tests should never pass empty platform as param, but to make the code more robust, I think we could just return the original line in remove_platform_from_expectations if platform is empty.

By the way, thanks for adding unittests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269620</commentid>
    <comment_count>5</comment_count>
    <who name="Victor Wang">victorw</who>
    <bug_when>2010-08-25 17:13:28 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; (In reply to comment #2)
&gt; &gt; &gt; (From update of attachment 65500 [details] [details] [details])
&gt; &gt; &gt; &gt; +    def test_remove_expand(self):
&gt; &gt; &gt; &gt; +        # This test is somewhat counterintuitive - lines with no platform
&gt; &gt; &gt; &gt; +        # specified get expanded to every platform.
&gt; &gt; &gt; &gt; +        self.assertRemove(&apos;&apos;,
&gt; &gt; &gt; &gt; +            &apos;BUGX REBASELINE : failures/expected/text.html = TEXT\n&apos;,
&gt; &gt; &gt; &gt; +            &apos;BUGX REBASELINE MAC WIN : failures/expected/text.html = TEXT\n&apos;)
&gt; &gt; &gt; 
&gt; &gt; &gt; This looks wrong. Mind adding a FIXME and filing a bug CCed to victorw? It&apos;s not a big deal, but it does bloat test_expectations.
&gt; &gt; 
&gt; &gt; If it is wrong, I&apos;d just as soon fix the bug here. 
&gt; &gt; 
&gt; &gt; Since we reasonably routinely rebaseline across all platforms, I&apos;m assuming that the rebaseline_chromium_webkit_tests code is smart enough to handle this case somehow. Either that, or it traps this case before every calling this function, but that seems unlikely. 
&gt; &gt; 
&gt; &gt; Victor?
&gt; 
&gt; We should return the original string if the platform param is empty.
&gt; 
&gt; The purpose is if there is a test expectation like this:
&gt; BUGX REBASELINE : failures/expected/text.html = TEXT\n
&gt; 
&gt; and we did rebaseline one platform: LINUX, the line should change to
&gt; BUGX REBASELINE WIN MAC: failures/expected/text.html = TEXT\n
&gt; 
&gt; The rebaseline_chromium_webkit_tests should never pass empty platform as param, but to make the code more robust, I think we could just return the original line in remove_platform_from_expectations if platform is empty.
&gt; 
&gt; By the way, thanks for adding unittests.

so the test should looks like this once you change remove_platform_from_expectations to return the original line when platform is empty:
    self.assertRemove(&apos;&apos;,
            &apos;BUGX REBASELINE : failures/expected/text.html = TEXT\n&apos;,
            &apos;BUGX REBASELINE : failures/expected/text.html = TEXT\n&apos;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269624</commentid>
    <comment_count>6</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-08-25 17:19:55 -0700</bug_when>
    <thetext>Okay, this makes sense. I&apos;ll revise the code and add a couple more tests to ensure we cover these two cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269658</commentid>
    <comment_count>7</comment_count>
      <attachid>65511</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-08-25 18:20:08 -0700</bug_when>
    <thetext>Created attachment 65511
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269659</commentid>
    <comment_count>8</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-08-25 18:21:23 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Created an attachment (id=65511) [details]
&gt; Patch

Okay, I added one more test to cover both cases here; this feels much more correct. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269666</commentid>
    <comment_count>9</comment_count>
    <who name="Victor Wang">victorw</who>
    <bug_when>2010-08-25 18:38:34 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; Created an attachment (id=65511) [details] [details]
&gt; &gt; Patch
&gt; 
&gt; Okay, I added one more test to cover both cases here; this feels much more correct. Thanks!

how about return f_orig at the beginning of function remove_platform_from_expectations? this way we don&apos;t parse each test expectation line. 

You could also return NO_CHANGE in _get_platform_update_action like this (passing platform as empty should be considered as invalid):
        if not test or test not in tests or not platform:
            return NO_CHANGE</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269669</commentid>
    <comment_count>10</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-08-25 18:48:48 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; (In reply to comment #7)
&gt; &gt; &gt; Created an attachment (id=65511) [details] [details] [details]
&gt; &gt; &gt; Patch
&gt; &gt; 
&gt; &gt; Okay, I added one more test to cover both cases here; this feels much more correct. Thanks!
&gt; 
&gt; how about return f_orig at the beginning of function remove_platform_from_expectations? this way we don&apos;t parse each test expectation line. 
&gt; 
&gt; You could also return NO_CHANGE in _get_platform_update_action like this (passing platform as empty should be considered as invalid):
&gt;         if not test or test not in tests or not platform:
&gt;             return NO_CHANGE

Wait, are you saying that we shouldn&apos;t modify the lines if platform is empty *regardless* of whether or not a platform was specified in the options?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269670</commentid>
    <comment_count>11</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-08-25 18:50:04 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #9)
&gt; &gt; (In reply to comment #8)
&gt; &gt; &gt; (In reply to comment #7)
&gt; &gt; &gt; &gt; Created an attachment (id=65511) [details] [details] [details] [details]
&gt; &gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; Okay, I added one more test to cover both cases here; this feels much more correct. Thanks!
&gt; &gt; 
&gt; &gt; how about return f_orig at the beginning of function remove_platform_from_expectations? this way we don&apos;t parse each test expectation line. 
&gt; &gt; 
&gt; &gt; You could also return NO_CHANGE in _get_platform_update_action like this (passing platform as empty should be considered as invalid):
&gt; &gt;         if not test or test not in tests or not platform:
&gt; &gt;             return NO_CHANGE
&gt; 
&gt; Wait, are you saying that we shouldn&apos;t modify the lines if platform is empty *regardless* of whether or not a platform was specified in the options?

If that&apos;s the case, then that basically means that platform should never be empty. If that&apos;s supposed to be true, I&apos;d prefer to change the code to assert that and check for it, rather than having special cases here to handle usages that shouldn&apos;t happen.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269676</commentid>
    <comment_count>12</comment_count>
    <who name="Victor Wang">victorw</who>
    <bug_when>2010-08-25 18:55:47 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; &gt; (In reply to comment #9)
&gt; &gt; &gt; (In reply to comment #8)
&gt; &gt; &gt; &gt; (In reply to comment #7)
&gt; &gt; &gt; &gt; &gt; Created an attachment (id=65511) [details] [details] [details] [details] [details]
&gt; &gt; &gt; &gt; &gt; Patch
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Okay, I added one more test to cover both cases here; this feels much more correct. Thanks!
&gt; &gt; &gt; 
&gt; &gt; &gt; how about return f_orig at the beginning of function remove_platform_from_expectations? this way we don&apos;t parse each test expectation line. 
&gt; &gt; &gt; 
&gt; &gt; &gt; You could also return NO_CHANGE in _get_platform_update_action like this (passing platform as empty should be considered as invalid):
&gt; &gt; &gt;         if not test or test not in tests or not platform:
&gt; &gt; &gt;             return NO_CHANGE
&gt; &gt; 
&gt; &gt; Wait, are you saying that we shouldn&apos;t modify the lines if platform is empty *regardless* of whether or not a platform was specified in the options?
&gt; 
&gt; If that&apos;s the case, then that basically means that platform should never be empty. If that&apos;s supposed to be true, I&apos;d prefer to change the code to assert that and check for it, rather than having special cases here to handle usages that shouldn&apos;t happen.

assert if platform is empty sounds good to me. The platform param should never be empty and chromium rebaseline tool should always set it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269680</commentid>
    <comment_count>13</comment_count>
      <attachid>65514</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-08-25 19:23:31 -0700</bug_when>
    <thetext>Created attachment 65514
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269682</commentid>
    <comment_count>14</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-08-25 19:24:09 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; &gt; &gt; Wait, are you saying that we shouldn&apos;t modify the lines if platform is empty *regardless* of whether or not a platform was specified in the options?
&gt; &gt; 
&gt; &gt; If that&apos;s the case, then that basically means that platform should never be empty. If that&apos;s supposed to be true, I&apos;d prefer to change the code to assert that and check for it, rather than having special cases here to handle usages that shouldn&apos;t happen.
&gt; 
&gt; assert if platform is empty sounds good to me. The platform param should never be empty and chromium rebaseline tool should always set it.

Okay, patch uploaded that checks to make sure that that is true :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269683</commentid>
    <comment_count>15</comment_count>
    <who name="Victor Wang">victorw</who>
    <bug_when>2010-08-25 19:30:15 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #12)
&gt; &gt; &gt; &gt; Wait, are you saying that we shouldn&apos;t modify the lines if platform is empty *regardless* of whether or not a platform was specified in the options?
&gt; &gt; &gt; 
&gt; &gt; &gt; If that&apos;s the case, then that basically means that platform should never be empty. If that&apos;s supposed to be true, I&apos;d prefer to change the code to assert that and check for it, rather than having special cases here to handle usages that shouldn&apos;t happen.
&gt; &gt; 
&gt; &gt; assert if platform is empty sounds good to me. The platform param should never be empty and chromium rebaseline tool should always set it.
&gt; 
&gt; Okay, patch uploaded that checks to make sure that that is true :)

LGTM (I am not a reviewer). Thanks again for adding unittests for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270045</commentid>
    <comment_count>16</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-08-26 12:47:12 -0700</bug_when>
    <thetext>Committed r66125: &lt;http://trac.webkit.org/changeset/66125&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65500</attachid>
            <date>2010-08-25 16:43:02 -0700</date>
            <delta_ts>2010-08-25 18:20:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44648-20100825164301.patch</filename>
            <type>text/plain</type>
            <size>9724</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA2M2UyNzQzZmQ0ZjI2YzE0NzlkMjJkZWZhZGY5ZTc5NGZhYjk3MmZmLi5hY2YyNDBi
N2ExODY2NTU4ZGY0YmNjZjk0NjkxNTY4YTVkYTA1YzhmIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAK
KzIwMTAtMDgtMjQgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgbmV3LXJ1bi13ZWJraXQt
dGVzdHM6IGFkZCByZWJhc2VsaW5pbmcgdGVzdHMgZm9yIHRlc3RfZXhwZWN0YXRpb25zCisgICAg
ICAgIAorICAgICAgICBUaGlzIHBhdGNoIGFkZHMgbW9yZSB1bml0IHRlc3RzIGZvciB0aGUgcmVi
YXNlbGluaW5nIGNvZGUgaW4gdGhlCisgICAgICAgIHRlc3RfZXhwZWN0YXRpb25zIG1vZHVsZS4g
SXQgZG9lc24ndCBhZGQgYW55IHRlc3RzIGZvcgorICAgICAgICByZWJhc2VsaW5lX2Nocm9taXVt
X3dlYmtpdF90ZXN0cyBpdHNlbGY7IHRoYXQgd2lsbCBjb21lIHNvbWUgb3RoZXIKKyAgICAgICAg
dGltZS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDQ2NDgKKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9w
YWNrYWdlL3Rlc3RfZXhwZWN0YXRpb25zLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5
OgorCiAyMDEwLTA4LTI1ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IE9qYW4gVmFmYWkuCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0
aW9ucy5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91
dF9wYWNrYWdlL3Rlc3RfZXhwZWN0YXRpb25zLnB5CmluZGV4IDA4NjMyMWQ3MDdkNTlmNWMxYWFh
NTczMWUzYTYxMWM0OTNlNmRlNDkuLjcyZDMzN2JiNDI3YTA4YjcwNTBiZGI0MmI5ZDdkNjBjZGJh
Yjg1OGQgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZXhwZWN0YXRpb25zLnB5CisrKyBiL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZXhwZWN0
YXRpb25zLnB5CkBAIC00ODcsNiArNDg3LDggQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uc0ZpbGU6
CiAgICAgICAgICAgICBsaW5lbm8gKz0gMQogICAgICAgICAgICAgYWN0aW9uID0gc2VsZi5fZ2V0
X3BsYXRmb3JtX3VwZGF0ZV9hY3Rpb24obGluZSwgbGluZW5vLCB0ZXN0cywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYXRmb3JtKQorICAg
ICAgICAgICAgYXNzZXJ0KGFjdGlvbiBpbiAoTk9fQ0hBTkdFLCBSRU1PVkVfVEVTVCwgUkVNT1ZF
X1BMQVRGT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQUREX1BMQVRGT1JNU19F
WENFUFRfVEhJUykpCiAgICAgICAgICAgICBpZiBhY3Rpb24gPT0gTk9fQ0hBTkdFOgogICAgICAg
ICAgICAgICAgICMgU2F2ZSB0aGUgb3JpZ2luYWwgbGluZSBiYWNrIHRvIHRoZSBmaWxlCiAgICAg
ICAgICAgICAgICAgX2xvZy5kZWJ1ZygnTm8gY2hhbmdlIHRvIHRlc3Q6ICVzJywgbGluZSkKQEAg
LTUyMiw5ICs1MjQsNiBAQCBjbGFzcyBUZXN0RXhwZWN0YXRpb25zRmlsZToKICAgICAgICAgICAg
ICAgICBfbG9nLmluZm8oJ1Rlc3QgdXBkYXRlZDogJykKICAgICAgICAgICAgICAgICBfbG9nLmlu
Zm8oJyAgb2xkOiAlcycsIGxpbmUpCiAgICAgICAgICAgICAgICAgX2xvZy5pbmZvKCcgIG5ldzog
JXMnLCBuZXdfbGluZSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgX2xvZy5l
cnJvcignVW5rbm93biB1cGRhdGUgYWN0aW9uOiAlZDsgbGluZTogJXMnLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYWN0aW9uLCBsaW5lKQogCiAgICAgICAgIF9sb2cuaW5mbygnVG90YWwg
dGVzdHMgcmVtb3ZlZDogJWQnLCB0ZXN0c19yZW1vdmVkKQogICAgICAgICBfbG9nLmluZm8oJ1Rv
dGFsIHRlc3RzIHVwZGF0ZWQ6ICVkJywgdGVzdHNfdXBkYXRlZCkKZGlmZiAtLWdpdCBhL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3Rf
ZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHkK
aW5kZXggMjIyMTRiMDU0YmM4YmZjNDgwNDFkYzEzMzM0NTdmOWRiZjRlOWRmYi4uMzI1YWEyNWI2
YzY5YWE3YjQ0MGMyYmY0YjIxNzk0YWQyNGViNjA3MyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9leHBlY3Rh
dGlvbnNfdW5pdHRlc3QucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHkKQEAg
LTkzLDE0ICs5MywxNiBAQCBjbGFzcyBCYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAg
ICAgICAgICBzZWxmLmdldF90ZXN0KCdmYWlsdXJlcy9leHBlY3RlZC9pbWFnZV9jaGVja3N1bS5o
dG1sJyksCiAgICAgICAgICAgICAgICAgc2VsZi5nZXRfdGVzdCgnZmFpbHVyZXMvZXhwZWN0ZWQv
Y3Jhc2guaHRtbCcpLAogICAgICAgICAgICAgICAgIHNlbGYuZ2V0X3Rlc3QoJ2ZhaWx1cmVzL2V4
cGVjdGVkL21pc3NpbmdfdGV4dC5odG1sJyksCisgICAgICAgICAgICAgICAgc2VsZi5nZXRfdGVz
dCgnZmFpbHVyZXMvZXhwZWN0ZWQvaW1hZ2UuaHRtbCcpLAogICAgICAgICAgICAgICAgIHNlbGYu
Z2V0X3Rlc3QoJ3Bhc3Nlcy90ZXh0Lmh0bWwnKV0KIAogICAgIGRlZiBnZXRfYmFzaWNfZXhwZWN0
YXRpb25zKHNlbGYpOgogICAgICAgICByZXR1cm4gIiIiCiBCVUdfVEVTVCA6IGZhaWx1cmVzL2V4
cGVjdGVkL3RleHQuaHRtbCA9IFRFWFQKLUJVR19URVNUIFNLSVAgOiBmYWlsdXJlcy9leHBlY3Rl
ZC9jcmFzaC5odG1sID0gQ1JBU0gKK0JVR19URVNUIFdPTlRGSVggU0tJUCA6IGZhaWx1cmVzL2V4
cGVjdGVkL2NyYXNoLmh0bWwgPSBDUkFTSAogQlVHX1RFU1QgUkVCQVNFTElORSA6IGZhaWx1cmUv
ZXhwZWN0ZWQvbWlzc2luZ19pbWFnZS5odG1sID0gTUlTU0lORwotQlVHX1RFU1QgOiBmYWlsdXJl
cy9leHBlY3RlZC9pbWFnZV9jaGVja3N1bS5odG1sID0gSU1BR0UKK0JVR19URVNUIFdPTlRGSVgg
OiBmYWlsdXJlcy9leHBlY3RlZC9pbWFnZV9jaGVja3N1bS5odG1sID0gSU1BR0UKK0JVR19URVNU
IFdPTlRGSVggV0lOIDogZmFpbHVyZXMvZXhwZWN0ZWQvaW1hZ2UuaHRtbCA9IElNQUdFCiAiIiIK
IAogICAgIGRlZiBwYXJzZV9leHAoc2VsZiwgZXhwZWN0YXRpb25zLCBvdmVycmlkZXM9Tm9uZSwg
aXNfbGludF9tb2RlPUZhbHNlLApAQCAtMTI1LDYgKzEyNywxMyBAQCBjbGFzcyBUZXN0RXhwZWN0
YXRpb25zVGVzdChCYXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRfZXhwKCdmYWlsdXJlcy9leHBl
Y3RlZC90ZXh0Lmh0bWwnLCBURVhUKQogICAgICAgICBzZWxmLmFzc2VydF9leHAoJ2ZhaWx1cmVz
L2V4cGVjdGVkL2ltYWdlX2NoZWNrc3VtLmh0bWwnLCBJTUFHRSkKICAgICAgICAgc2VsZi5hc3Nl
cnRfZXhwKCdwYXNzZXMvdGV4dC5odG1sJywgUEFTUykKKyAgICAgICAgc2VsZi5hc3NlcnRfZXhw
KCdmYWlsdXJlcy9leHBlY3RlZC9pbWFnZS5odG1sJywgUEFTUykKKworICAgIGRlZiB0ZXN0X211
bHRpcGxlX3Jlc3VsdHMoc2VsZik6CisgICAgICAgIHNlbGYucGFyc2VfZXhwKCdCVUdYIDogZmFp
bHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gVEVYVCBDUkFTSCcpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoc2VsZi5fZXhwLmdldF9leHBlY3RhdGlvbnMoCisgICAgICAgICAgICBzZWxmLmdl
dF90ZXN0KCdmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwnKSksCisgICAgICAgICAgICBzZXQo
W1RFWFQsIENSQVNIXSkpCiAKICAgICBkZWYgdGVzdF9kZWZlcihzZWxmKToKICAgICAgICAgc2Vs
Zi5wYXJzZV9leHAoJ0JVR1ggREVGRVIgOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBU
RVhUJykKQEAgLTE4Myw2ICsxOTIsMjAgQEAgQlVHWCBERUZFUiA6IGZhaWx1cmVzL2V4cGVjdGVk
ID0gSU1BR0UKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi5fZXhw
LmV4cGVjdGF0aW9uX3RvX3N0cmluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEpCiAK
KyAgICBkZWYgdGVzdF9nZXRfdGVzdF9zZXQoc2VsZik6CisgICAgICAgICMgSGFuZGxlIHNvbWUg
Y29ybmVyIGNhc2VzIGZvciB0aGlzIHJvdXRpbmUgbm90IGNvdmVyZWQgYnkgb3RoZXIgdGVzdHMu
CisgICAgICAgIHNlbGYucGFyc2VfZXhwKHNlbGYuZ2V0X2Jhc2ljX2V4cGVjdGF0aW9ucygpKQor
ICAgICAgICBzID0gc2VsZi5fZXhwLl9leHBlY3RlZF9mYWlsdXJlcy5nZXRfdGVzdF9zZXQoV09O
VEZJWCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLAorICAgICAgICAgICAgc2V0KFtzZWxm
LmdldF90ZXN0KCdmYWlsdXJlcy9leHBlY3RlZC9jcmFzaC5odG1sJyksCisgICAgICAgICAgICAg
ICAgIHNlbGYuZ2V0X3Rlc3QoJ2ZhaWx1cmVzL2V4cGVjdGVkL2ltYWdlX2NoZWNrc3VtLmh0bWwn
KV0pKQorICAgICAgICBzID0gc2VsZi5fZXhwLl9leHBlY3RlZF9mYWlsdXJlcy5nZXRfdGVzdF9z
ZXQoV09OVEZJWCwgQ1JBU0gpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocywKKyAgICAgICAg
ICAgIHNldChbc2VsZi5nZXRfdGVzdCgnZmFpbHVyZXMvZXhwZWN0ZWQvY3Jhc2guaHRtbCcpXSkp
CisgICAgICAgIHMgPSBzZWxmLl9leHAuX2V4cGVjdGVkX2ZhaWx1cmVzLmdldF90ZXN0X3NldChX
T05URklYLCBDUkFTSCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGluY2x1ZGVfc2tpcHM9RmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwocywgc2V0KFtdKSkKKwogICAgIGRlZiB0ZXN0X3N5bnRheF9taXNzaW5nX2V4cGVjdGF0aW9u
KHNlbGYpOgogICAgICAgICAjIFRoaXMgaXMgbWlzc2luZyB0aGUgZXhwZWN0YXRpb24uCiAgICAg
ICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBzZWxmLnBhcnNlX2V4cCwKQEAgLTI1
NiwyMCArMjc5LDQ1IEBAIEJVR19PVkVSUklERSA6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRt
bCA9IElNQUdFIiIiKQogCiBjbGFzcyBSZWJhc2VsaW5pbmdUZXN0KEJhc2UpOgogICAgICIiIlRl
c3QgcmViYXNlbGluaW5nLXNwZWNpZmljIGZ1bmN0aW9uYWxpdHkuIiIiCisgICAgZGVmIGFzc2Vy
dFJlbW92ZShzZWxmLCBwbGF0Zm9ybSwgaW5wdXRfZXhwZWN0YXRpb25zLCBleHBlY3RlZF9leHBl
Y3RhdGlvbnMpOgorICAgICAgICBzZWxmLnBhcnNlX2V4cChpbnB1dF9leHBlY3RhdGlvbnMpCisg
ICAgICAgIHRlc3QgPSBzZWxmLmdldF90ZXN0KCdmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwn
KQorICAgICAgICBhY3R1YWxfZXhwZWN0YXRpb25zID0gc2VsZi5fZXhwLnJlbW92ZV9wbGF0Zm9y
bV9mcm9tX2V4cGVjdGF0aW9ucygKKyAgICAgICAgICAgIHRlc3QsIHBsYXRmb3JtKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX2V4cGVjdGF0aW9ucywgYWN0dWFsX2V4cGVjdGF0
aW9ucykKKwogICAgIGRlZiB0ZXN0X25vX2dldF9yZWJhc2VsaW5pbmdfZmFpbHVyZXMoc2VsZik6
CiAgICAgICAgIHNlbGYucGFyc2VfZXhwKHNlbGYuZ2V0X2Jhc2ljX2V4cGVjdGF0aW9ucygpKQog
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZWxmLl9leHAuZ2V0X3JlYmFzZWxpbmluZ19m
YWlsdXJlcygpKSwgMCkKIAotICAgIGRlZiB0ZXN0X2Jhc2ljKHNlbGYpOgorICAgIGRlZiB0ZXN0
X2dldF9yZWJhc2VsaW5pbmdfZmFpbHVyZXNfZXhwYW5kKHNlbGYpOgogICAgICAgICBzZWxmLnBh
cnNlX2V4cCgiIiIKIEJVR19URVNUIFJFQkFTRUxJTkUgOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0
Lmh0bWwgPSBURVhUCiAiIiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlbGYuX2V4
cC5nZXRfcmViYXNlbGluaW5nX2ZhaWx1cmVzKCkpLCAxKQogCi0gICAgICAgIG5ld19leHBfc3Ry
ID0gc2VsZi5fZXhwLnJlbW92ZV9wbGF0Zm9ybV9mcm9tX2V4cGVjdGF0aW9ucygKLSAgICAgICAg
ICAgIHNlbGYuZ2V0X3Rlc3QoJ2ZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCcpLCAnVEVTVCcp
Ci0gICAgICAgICMgRklYTUU6IGFjdHVhbGx5IHRlc3QgcmViYXNlbGluaW5nCi0gICAgICAgICMg
c2VsZi5hc3NlcnRFcXVhbChuZXdfZXhwX3N0ciwgJ1xuJykKKyAgICBkZWYgdGVzdF9yZW1vdmVf
ZXhwYW5kKHNlbGYpOgorICAgICAgICAjIFRoaXMgdGVzdCBpcyBzb21ld2hhdCBjb3VudGVyaW50
dWl0aXZlIC0gbGluZXMgd2l0aCBubyBwbGF0Zm9ybQorICAgICAgICAjIHNwZWNpZmllZCBnZXQg
ZXhwYW5kZWQgdG8gZXZlcnkgcGxhdGZvcm0uCisgICAgICAgIHNlbGYuYXNzZXJ0UmVtb3ZlKCcn
LAorICAgICAgICAgICAgJ0JVR1ggUkVCQVNFTElORSA6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQu
aHRtbCA9IFRFWFRcbicsCisgICAgICAgICAgICAnQlVHWCBSRUJBU0VMSU5FIE1BQyBXSU4gOiBm
YWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBURVhUXG4nKQorCisgICAgZGVmIHRlc3RfcmVt
b3ZlX21hY193aW4oc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmVtb3ZlKCdtYWMnLAorICAg
ICAgICAgICAgJ0JVR1ggUkVCQVNFTElORSBNQUMgV0lOIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4
dC5odG1sID0gVEVYVFxuJywKKyAgICAgICAgICAgICdCVUdYIFJFQkFTRUxJTkUgV0lOIDogZmFp
bHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gVEVYVFxuJykKKworICAgIGRlZiB0ZXN0X3JlbW92
ZV9tYWNfbWFjKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJlbW92ZSgnbWFjJywKKyAgICAg
ICAgICAgICdCVUdYIFJFQkFTRUxJTkUgTUFDIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1s
ID0gVEVYVFxuJywKKyAgICAgICAgICAgICcnKQorCisgICAgZGVmIHRlc3RfcmVtb3ZlX25vdGhp
bmcoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmVtb3ZlKCcnLAorICAgICAgICAgICAgJ1xu
XG4nLAorICAgICAgICAgICAgJ1xuXG4nKQorCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6
CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHkKaW5kZXggNGZlM2VjMTZjZjUxNWUxN2Fj
Nzg1NzdjMTBmZjNhZjQwNWYxYWIwNC4uZDM2YjU0MGM3NWFhOGY3ZDA0OTYxMmEwNDNlMDI0N2Uy
OTk4YTA3ZiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC90ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvdGVzdC5weQpAQCAtMTE4LDEwICsxMTgsMTAgQEAgY2xhc3MgVGVzdFBv
cnQoYmFzZS5Qb3J0KToKICAgICAgICAgICAgIHJldHVybiBmaWxlLnJlYWQoKQogCiAgICAgZGVm
IHRlc3RfYmFzZV9wbGF0Zm9ybV9uYW1lcyhzZWxmKToKLSAgICAgICAgcmV0dXJuICgndGVzdCcs
KQorICAgICAgICByZXR1cm4gKCdtYWMnLCAnd2luJykKIAogICAgIGRlZiB0ZXN0X3BsYXRmb3Jt
X25hbWUoc2VsZik6Ci0gICAgICAgIHJldHVybiAndGVzdCcKKyAgICAgICAgcmV0dXJuICdtYWMn
CiAKICAgICBkZWYgdGVzdF9wbGF0Zm9ybV9uYW1lcyhzZWxmKToKICAgICAgICAgcmV0dXJuIHNl
bGYudGVzdF9iYXNlX3BsYXRmb3JtX25hbWVzKCkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3Qu
cHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3Rlc3RfZXhw
ZWN0YXRpb25zX3VuaXR0ZXN0LnB5CmluZGV4IGMwYmI0YWNlMTg5NDAwMDkzZDdhMjEyZDFmNDJi
MjBlYjJhMjE0NzAuLjc0N2I4YjQwMmY3YjIxNDM2ZmZiMTY3MDU4ODE3ZDY5M2U1YjQ1ZTkgMTAw
NjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvdGVz
dF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9zdHlsZS9jaGVja2Vycy90ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5weQpAQCAtOTMs
NyArOTMsNyBAQCBjbGFzcyBUZXN0RXhwZWN0YXRpb25zVGVzdENhc2UodW5pdHRlc3QuVGVzdENh
c2UpOgogICAgICAgICAgICAgWyJwYXNzZXMvdGV4dC5odG1sID0gQ1JBU0ggVElNRU9VVCBGQUlM
IFBBU1MiXSwKICAgICAgICAgICAgICIiKQogICAgICAgICBzZWxmLmFzc2VydF9saW5lc19saW50
KAotICAgICAgICAgICAgWyJCVUcxMjM0IFRFU1QgOiBwYXNzZXMvdGV4dC5odG1sID0gUEFTUyBG
QUlMIl0sCisgICAgICAgICAgICBbIkJVRzEyMzQgTUFDIDogcGFzc2VzL3RleHQuaHRtbCA9IFBB
U1MgRkFJTCJdLAogICAgICAgICAgICAgIiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0X2xpbmVzX2xp
bnQoCiAgICAgICAgICAgICBbIlNLSVAgQlVHMTIzNCA6IHBhc3Nlcy90ZXh0Lmh0bWwgPSBUSU1F
T1VUIFBBU1MiXSwKQEAgLTEwNSwxMCArMTA1LDEwIEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvbnNU
ZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICBbIkJVRzEyMzQgREVCVUcg
U0tJUCA6IHBhc3Nlcy90ZXh0Lmh0bWwgPSBUSU1FT1VUIFBBU1MiXSwKICAgICAgICAgICAgICIi
KQogICAgICAgICBzZWxmLmFzc2VydF9saW5lc19saW50KAotICAgICAgICAgICAgWyJCVUcxMjM0
IFRFU1QgREVCVUcgU0tJUCA6IHBhc3Nlcy90ZXh0Lmh0bWwgPSBUSU1FT1VUIFBBU1MiXSwKKyAg
ICAgICAgICAgIFsiQlVHMTIzNCBNQUMgREVCVUcgU0tJUCA6IHBhc3Nlcy90ZXh0Lmh0bWwgPSBU
SU1FT1VUIFBBU1MiXSwKICAgICAgICAgICAgICIiKQogICAgICAgICBzZWxmLmFzc2VydF9saW5l
c19saW50KAotICAgICAgICAgICAgWyJCVUcxMjM0IERFQlVHIFRFU1QgOiBwYXNzZXMvdGV4dC5o
dG1sID0gVElNRU9VVCBQQVNTIl0sCisgICAgICAgICAgICBbIkJVRzEyMzQgREVCVUcgTUFDIDog
cGFzc2VzL3RleHQuaHRtbCA9IFRJTUVPVVQgUEFTUyJdLAogICAgICAgICAgICAgIiIpCiAgICAg
ICAgIHNlbGYuYXNzZXJ0X2xpbmVzX2xpbnQoCiAgICAgICAgICAgICBbIlNMT1cgREVGRVIgQlVH
MTIzNCA6IHBhc3Nlcy90ZXh0Lmh0bWwgPSBQQVNTIl0sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65511</attachid>
            <date>2010-08-25 18:20:08 -0700</date>
            <delta_ts>2010-08-25 19:23:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44648-20100825182007.patch</filename>
            <type>text/plain</type>
            <size>10193</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA2M2UyNzQzZmQ0ZjI2YzE0NzlkMjJkZWZhZGY5ZTc5NGZhYjk3MmZmLi5hY2YyNDBi
N2ExODY2NTU4ZGY0YmNjZjk0NjkxNTY4YTVkYTA1YzhmIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAK
KzIwMTAtMDgtMjQgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgbmV3LXJ1bi13ZWJraXQt
dGVzdHM6IGFkZCByZWJhc2VsaW5pbmcgdGVzdHMgZm9yIHRlc3RfZXhwZWN0YXRpb25zCisgICAg
ICAgIAorICAgICAgICBUaGlzIHBhdGNoIGFkZHMgbW9yZSB1bml0IHRlc3RzIGZvciB0aGUgcmVi
YXNlbGluaW5nIGNvZGUgaW4gdGhlCisgICAgICAgIHRlc3RfZXhwZWN0YXRpb25zIG1vZHVsZS4g
SXQgZG9lc24ndCBhZGQgYW55IHRlc3RzIGZvcgorICAgICAgICByZWJhc2VsaW5lX2Nocm9taXVt
X3dlYmtpdF90ZXN0cyBpdHNlbGY7IHRoYXQgd2lsbCBjb21lIHNvbWUgb3RoZXIKKyAgICAgICAg
dGltZS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDQ2NDgKKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9w
YWNrYWdlL3Rlc3RfZXhwZWN0YXRpb25zLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5
OgorCiAyMDEwLTA4LTI1ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IE9qYW4gVmFmYWkuCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0
aW9ucy5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91
dF9wYWNrYWdlL3Rlc3RfZXhwZWN0YXRpb25zLnB5CmluZGV4IDA4NjMyMWQ3MDdkNTlmNWMxYWFh
NTczMWUzYTYxMWM0OTNlNmRlNDkuLmI5YjVlMTI2ODk5NzljOWFlZWE3NThmMzcxZGU4ZWY2Y2U4
ODM5YTEgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZXhwZWN0YXRpb25zLnB5CisrKyBiL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZXhwZWN0
YXRpb25zLnB5CkBAIC00ODcsNiArNDg3LDggQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uc0ZpbGU6
CiAgICAgICAgICAgICBsaW5lbm8gKz0gMQogICAgICAgICAgICAgYWN0aW9uID0gc2VsZi5fZ2V0
X3BsYXRmb3JtX3VwZGF0ZV9hY3Rpb24obGluZSwgbGluZW5vLCB0ZXN0cywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYXRmb3JtKQorICAg
ICAgICAgICAgYXNzZXJ0KGFjdGlvbiBpbiAoTk9fQ0hBTkdFLCBSRU1PVkVfVEVTVCwgUkVNT1ZF
X1BMQVRGT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQUREX1BMQVRGT1JNU19F
WENFUFRfVEhJUykpCiAgICAgICAgICAgICBpZiBhY3Rpb24gPT0gTk9fQ0hBTkdFOgogICAgICAg
ICAgICAgICAgICMgU2F2ZSB0aGUgb3JpZ2luYWwgbGluZSBiYWNrIHRvIHRoZSBmaWxlCiAgICAg
ICAgICAgICAgICAgX2xvZy5kZWJ1ZygnTm8gY2hhbmdlIHRvIHRlc3Q6ICVzJywgbGluZSkKQEAg
LTUyMiw5ICs1MjQsNiBAQCBjbGFzcyBUZXN0RXhwZWN0YXRpb25zRmlsZToKICAgICAgICAgICAg
ICAgICBfbG9nLmluZm8oJ1Rlc3QgdXBkYXRlZDogJykKICAgICAgICAgICAgICAgICBfbG9nLmlu
Zm8oJyAgb2xkOiAlcycsIGxpbmUpCiAgICAgICAgICAgICAgICAgX2xvZy5pbmZvKCcgIG5ldzog
JXMnLCBuZXdfbGluZSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgX2xvZy5l
cnJvcignVW5rbm93biB1cGRhdGUgYWN0aW9uOiAlZDsgbGluZTogJXMnLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYWN0aW9uLCBsaW5lKQogCiAgICAgICAgIF9sb2cuaW5mbygnVG90YWwg
dGVzdHMgcmVtb3ZlZDogJWQnLCB0ZXN0c19yZW1vdmVkKQogICAgICAgICBfbG9nLmluZm8oJ1Rv
dGFsIHRlc3RzIHVwZGF0ZWQ6ICVkJywgdGVzdHNfdXBkYXRlZCkKQEAgLTU4Nyw3ICs1ODYsMTAg
QEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uc0ZpbGU6CiAgICAgICAgICMgcGxhdGZvcm1zLiBSZXR1
cm4gdGhlIGFjdGlvbiB0byBhZGQgYWxsIHRoZSBwbGF0Zm9ybXMgZXhjZXB0IHRoaXMKICAgICAg
ICAgIyBvbmUuCiAgICAgICAgIGlmIG5vdCBoYXNfYW55X3BsYXRmb3JtOgotICAgICAgICAgICAg
cmV0dXJuIEFERF9QTEFURk9STVNfRVhDRVBUX1RISVMKKyAgICAgICAgICAgIGlmIHBsYXRmb3Jt
OgorICAgICAgICAgICAgICAgIHJldHVybiBBRERfUExBVEZPUk1TX0VYQ0VQVF9USElTCisgICAg
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiBOT19DSEFOR0UKIAogICAgICAg
ICByZXR1cm4gUkVNT1ZFX1RFU1QKIApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9leHBlY3RhdGlvbnNfdW5p
dHRlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlv
dXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5weQppbmRleCAyMjIxNGIwNTRi
YzhiZmM0ODA0MWRjMTMzMzQ1N2Y5ZGJmNGU5ZGZiLi5kMTdiNDYzZTJiOTFmNDI0Y2QwOWYyYjE5
MDBkODdhOTM4MTZhZWIyIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5w
eQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRf
cGFja2FnZS90ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5weQpAQCAtOTMsMTQgKzkzLDE2IEBA
IGNsYXNzIEJhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAgICAgICAgIHNlbGYuZ2V0
X3Rlc3QoJ2ZhaWx1cmVzL2V4cGVjdGVkL2ltYWdlX2NoZWNrc3VtLmh0bWwnKSwKICAgICAgICAg
ICAgICAgICBzZWxmLmdldF90ZXN0KCdmYWlsdXJlcy9leHBlY3RlZC9jcmFzaC5odG1sJyksCiAg
ICAgICAgICAgICAgICAgc2VsZi5nZXRfdGVzdCgnZmFpbHVyZXMvZXhwZWN0ZWQvbWlzc2luZ190
ZXh0Lmh0bWwnKSwKKyAgICAgICAgICAgICAgICBzZWxmLmdldF90ZXN0KCdmYWlsdXJlcy9leHBl
Y3RlZC9pbWFnZS5odG1sJyksCiAgICAgICAgICAgICAgICAgc2VsZi5nZXRfdGVzdCgncGFzc2Vz
L3RleHQuaHRtbCcpXQogCiAgICAgZGVmIGdldF9iYXNpY19leHBlY3RhdGlvbnMoc2VsZik6CiAg
ICAgICAgIHJldHVybiAiIiIKIEJVR19URVNUIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1s
ID0gVEVYVAotQlVHX1RFU1QgU0tJUCA6IGZhaWx1cmVzL2V4cGVjdGVkL2NyYXNoLmh0bWwgPSBD
UkFTSAorQlVHX1RFU1QgV09OVEZJWCBTS0lQIDogZmFpbHVyZXMvZXhwZWN0ZWQvY3Jhc2guaHRt
bCA9IENSQVNICiBCVUdfVEVTVCBSRUJBU0VMSU5FIDogZmFpbHVyZS9leHBlY3RlZC9taXNzaW5n
X2ltYWdlLmh0bWwgPSBNSVNTSU5HCi1CVUdfVEVTVCA6IGZhaWx1cmVzL2V4cGVjdGVkL2ltYWdl
X2NoZWNrc3VtLmh0bWwgPSBJTUFHRQorQlVHX1RFU1QgV09OVEZJWCA6IGZhaWx1cmVzL2V4cGVj
dGVkL2ltYWdlX2NoZWNrc3VtLmh0bWwgPSBJTUFHRQorQlVHX1RFU1QgV09OVEZJWCBXSU4gOiBm
YWlsdXJlcy9leHBlY3RlZC9pbWFnZS5odG1sID0gSU1BR0UKICIiIgogCiAgICAgZGVmIHBhcnNl
X2V4cChzZWxmLCBleHBlY3RhdGlvbnMsIG92ZXJyaWRlcz1Ob25lLCBpc19saW50X21vZGU9RmFs
c2UsCkBAIC0xMjUsNiArMTI3LDEzIEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvbnNUZXN0KEJhc2Up
OgogICAgICAgICBzZWxmLmFzc2VydF9leHAoJ2ZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCcs
IFRFWFQpCiAgICAgICAgIHNlbGYuYXNzZXJ0X2V4cCgnZmFpbHVyZXMvZXhwZWN0ZWQvaW1hZ2Vf
Y2hlY2tzdW0uaHRtbCcsIElNQUdFKQogICAgICAgICBzZWxmLmFzc2VydF9leHAoJ3Bhc3Nlcy90
ZXh0Lmh0bWwnLCBQQVNTKQorICAgICAgICBzZWxmLmFzc2VydF9leHAoJ2ZhaWx1cmVzL2V4cGVj
dGVkL2ltYWdlLmh0bWwnLCBQQVNTKQorCisgICAgZGVmIHRlc3RfbXVsdGlwbGVfcmVzdWx0cyhz
ZWxmKToKKyAgICAgICAgc2VsZi5wYXJzZV9leHAoJ0JVR1ggOiBmYWlsdXJlcy9leHBlY3RlZC90
ZXh0Lmh0bWwgPSBURVhUIENSQVNIJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9l
eHAuZ2V0X2V4cGVjdGF0aW9ucygKKyAgICAgICAgICAgIHNlbGYuZ2V0X3Rlc3QoJ2ZhaWx1cmVz
L2V4cGVjdGVkL3RleHQuaHRtbCcpKSwKKyAgICAgICAgICAgIHNldChbVEVYVCwgQ1JBU0hdKSkK
IAogICAgIGRlZiB0ZXN0X2RlZmVyKHNlbGYpOgogICAgICAgICBzZWxmLnBhcnNlX2V4cCgnQlVH
WCBERUZFUiA6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IFRFWFQnKQpAQCAtMTgzLDYg
KzE5MiwyMCBAQCBCVUdYIERFRkVSIDogZmFpbHVyZXMvZXhwZWN0ZWQgPSBJTUFHRQogICAgICAg
ICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLl9leHAuZXhwZWN0YXRpb25fdG9f
c3RyaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAtMSkKIAorICAgIGRlZiB0ZXN0X2dl
dF90ZXN0X3NldChzZWxmKToKKyAgICAgICAgIyBIYW5kbGUgc29tZSBjb3JuZXIgY2FzZXMgZm9y
IHRoaXMgcm91dGluZSBub3QgY292ZXJlZCBieSBvdGhlciB0ZXN0cy4KKyAgICAgICAgc2VsZi5w
YXJzZV9leHAoc2VsZi5nZXRfYmFzaWNfZXhwZWN0YXRpb25zKCkpCisgICAgICAgIHMgPSBzZWxm
Ll9leHAuX2V4cGVjdGVkX2ZhaWx1cmVzLmdldF90ZXN0X3NldChXT05URklYKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHMsCisgICAgICAgICAgICBzZXQoW3NlbGYuZ2V0X3Rlc3QoJ2ZhaWx1
cmVzL2V4cGVjdGVkL2NyYXNoLmh0bWwnKSwKKyAgICAgICAgICAgICAgICAgc2VsZi5nZXRfdGVz
dCgnZmFpbHVyZXMvZXhwZWN0ZWQvaW1hZ2VfY2hlY2tzdW0uaHRtbCcpXSkpCisgICAgICAgIHMg
PSBzZWxmLl9leHAuX2V4cGVjdGVkX2ZhaWx1cmVzLmdldF90ZXN0X3NldChXT05URklYLCBDUkFT
SCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLAorICAgICAgICAgICAgc2V0KFtzZWxmLmdl
dF90ZXN0KCdmYWlsdXJlcy9leHBlY3RlZC9jcmFzaC5odG1sJyldKSkKKyAgICAgICAgcyA9IHNl
bGYuX2V4cC5fZXhwZWN0ZWRfZmFpbHVyZXMuZ2V0X3Rlc3Rfc2V0KFdPTlRGSVgsIENSQVNILAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5j
bHVkZV9za2lwcz1GYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLCBzZXQoW10pKQor
CiAgICAgZGVmIHRlc3Rfc3ludGF4X21pc3NpbmdfZXhwZWN0YXRpb24oc2VsZik6CiAgICAgICAg
ICMgVGhpcyBpcyBtaXNzaW5nIHRoZSBleHBlY3RhdGlvbi4KICAgICAgICAgc2VsZi5hc3NlcnRS
YWlzZXMoU3ludGF4RXJyb3IsIHNlbGYucGFyc2VfZXhwLApAQCAtMjU2LDIwICsyNzksNDggQEAg
QlVHX09WRVJSSURFIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gSU1BR0UiIiIpCiAK
IGNsYXNzIFJlYmFzZWxpbmluZ1Rlc3QoQmFzZSk6CiAgICAgIiIiVGVzdCByZWJhc2VsaW5pbmct
c3BlY2lmaWMgZnVuY3Rpb25hbGl0eS4iIiIKKyAgICBkZWYgYXNzZXJ0UmVtb3ZlKHNlbGYsIHBs
YXRmb3JtLCBpbnB1dF9leHBlY3RhdGlvbnMsIGV4cGVjdGVkX2V4cGVjdGF0aW9ucyk6CisgICAg
ICAgIHNlbGYucGFyc2VfZXhwKGlucHV0X2V4cGVjdGF0aW9ucykKKyAgICAgICAgdGVzdCA9IHNl
bGYuZ2V0X3Rlc3QoJ2ZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCcpCisgICAgICAgIGFjdHVh
bF9leHBlY3RhdGlvbnMgPSBzZWxmLl9leHAucmVtb3ZlX3BsYXRmb3JtX2Zyb21fZXhwZWN0YXRp
b25zKAorICAgICAgICAgICAgdGVzdCwgcGxhdGZvcm0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoZXhwZWN0ZWRfZXhwZWN0YXRpb25zLCBhY3R1YWxfZXhwZWN0YXRpb25zKQorCiAgICAgZGVm
IHRlc3Rfbm9fZ2V0X3JlYmFzZWxpbmluZ19mYWlsdXJlcyhzZWxmKToKICAgICAgICAgc2VsZi5w
YXJzZV9leHAoc2VsZi5nZXRfYmFzaWNfZXhwZWN0YXRpb25zKCkpCiAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwobGVuKHNlbGYuX2V4cC5nZXRfcmViYXNlbGluaW5nX2ZhaWx1cmVzKCkpLCAwKQog
Ci0gICAgZGVmIHRlc3RfYmFzaWMoc2VsZik6CisgICAgZGVmIHRlc3RfZ2V0X3JlYmFzZWxpbmlu
Z19mYWlsdXJlc19leHBhbmQoc2VsZik6CiAgICAgICAgIHNlbGYucGFyc2VfZXhwKCIiIgogQlVH
X1RFU1QgUkVCQVNFTElORSA6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IFRFWFQKICIi
IikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5fZXhwLmdldF9yZWJhc2VsaW5p
bmdfZmFpbHVyZXMoKSksIDEpCiAKLSAgICAgICAgbmV3X2V4cF9zdHIgPSBzZWxmLl9leHAucmVt
b3ZlX3BsYXRmb3JtX2Zyb21fZXhwZWN0YXRpb25zKAotICAgICAgICAgICAgc2VsZi5nZXRfdGVz
dCgnZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sJyksICdURVNUJykKLSAgICAgICAgIyBGSVhN
RTogYWN0dWFsbHkgdGVzdCByZWJhc2VsaW5pbmcKLSAgICAgICAgIyBzZWxmLmFzc2VydEVxdWFs
KG5ld19leHBfc3RyLCAnXG4nKQorICAgIGRlZiB0ZXN0X3JlbW92ZV9leHBhbmQoc2VsZik6Cisg
ICAgICAgIHNlbGYuYXNzZXJ0UmVtb3ZlKCdNQUMnLAorICAgICAgICAgICAgJ0JVR1ggUkVCQVNF
TElORSA6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IFRFWFRcbicsCisgICAgICAgICAg
ICAnQlVHWCBSRUJBU0VMSU5FIFdJTiA6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IFRF
WFRcbicpCisKKyAgICBkZWYgdGVzdF9yZW1vdmVfbWFjX3dpbihzZWxmKToKKyAgICAgICAgc2Vs
Zi5hc3NlcnRSZW1vdmUoJ21hYycsCisgICAgICAgICAgICAnQlVHWCBSRUJBU0VMSU5FIE1BQyBX
SU4gOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBURVhUXG4nLAorICAgICAgICAgICAg
J0JVR1ggUkVCQVNFTElORSBXSU4gOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBURVhU
XG4nKQorCisgICAgZGVmIHRlc3RfcmVtb3ZlX21hY19tYWMoc2VsZik6CisgICAgICAgIHNlbGYu
YXNzZXJ0UmVtb3ZlKCdtYWMnLAorICAgICAgICAgICAgJ0JVR1ggUkVCQVNFTElORSBNQUMgOiBm
YWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBURVhUXG4nLAorICAgICAgICAgICAgJycpCisK
KyAgICBkZWYgdGVzdF9yZW1vdmVfbm90aGluZyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRS
ZW1vdmUoJycsCisgICAgICAgICAgICAnXG5cbicsCisgICAgICAgICAgICAnXG5cbicpCisKKyAg
ICBkZWYgdGVzdF9yZW1vdmVfbm9fcGxhdGZvcm0oc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0
UmVtb3ZlKCcnLAorICAgICAgICAgICAgJ0JVR1ggUkVCQVNFTElORSA6IGZhaWx1cmVzL2V4cGVj
dGVkL3RleHQuaHRtbCA9IFRFWFRcbicsCisgICAgICAgICAgICAnQlVHWCBSRUJBU0VMSU5FIDog
ZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gVEVYVFxuJykKKwogCiBpZiBfX25hbWVfXyA9
PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5IGIvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5CmluZGV4IDRmZTNl
YzE2Y2Y1MTVlMTdhYzc4NTc3YzEwZmYzYWY0MDVmMWFiMDQuLmQzNmI1NDBjNzVhYThmN2QwNDk2
MTJhMDQzZTAyNDdlMjk5OGEwN2YgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHkKQEAgLTExOCwxMCArMTE4LDEwIEBA
IGNsYXNzIFRlc3RQb3J0KGJhc2UuUG9ydCk6CiAgICAgICAgICAgICByZXR1cm4gZmlsZS5yZWFk
KCkKIAogICAgIGRlZiB0ZXN0X2Jhc2VfcGxhdGZvcm1fbmFtZXMoc2VsZik6Ci0gICAgICAgIHJl
dHVybiAoJ3Rlc3QnLCkKKyAgICAgICAgcmV0dXJuICgnbWFjJywgJ3dpbicpCiAKICAgICBkZWYg
dGVzdF9wbGF0Zm9ybV9uYW1lKHNlbGYpOgotICAgICAgICByZXR1cm4gJ3Rlc3QnCisgICAgICAg
IHJldHVybiAnbWFjJwogCiAgICAgZGVmIHRlc3RfcGxhdGZvcm1fbmFtZXMoc2VsZik6CiAgICAg
ICAgIHJldHVybiBzZWxmLnRlc3RfYmFzZV9wbGF0Zm9ybV9uYW1lcygpCmRpZmYgLS1naXQgYS9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3Rlc3RfZXhwZWN0YXRp
b25zX3VuaXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVj
a2Vycy90ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5weQppbmRleCBjMGJiNGFjZTE4OTQwMDA5
M2Q3YTIxMmQxZjQyYjIwZWIyYTIxNDcwLi43NDdiOGI0MDJmN2IyMTQzNmZmYjE2NzA1ODgxN2Q2
OTNlNWI0NWU5IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxl
L2NoZWNrZXJzL3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRl
c3QucHkKQEAgLTkzLDcgKzkzLDcgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uc1Rlc3RDYXNlKHVu
aXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgIFsicGFzc2VzL3RleHQuaHRtbCA9IENSQVNI
IFRJTUVPVVQgRkFJTCBQQVNTIl0sCiAgICAgICAgICAgICAiIikKICAgICAgICAgc2VsZi5hc3Nl
cnRfbGluZXNfbGludCgKLSAgICAgICAgICAgIFsiQlVHMTIzNCBURVNUIDogcGFzc2VzL3RleHQu
aHRtbCA9IFBBU1MgRkFJTCJdLAorICAgICAgICAgICAgWyJCVUcxMjM0IE1BQyA6IHBhc3Nlcy90
ZXh0Lmh0bWwgPSBQQVNTIEZBSUwiXSwKICAgICAgICAgICAgICIiKQogICAgICAgICBzZWxmLmFz
c2VydF9saW5lc19saW50KAogICAgICAgICAgICAgWyJTS0lQIEJVRzEyMzQgOiBwYXNzZXMvdGV4
dC5odG1sID0gVElNRU9VVCBQQVNTIl0sCkBAIC0xMDUsMTAgKzEwNSwxMCBAQCBjbGFzcyBUZXN0
RXhwZWN0YXRpb25zVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAgICAgWyJC
VUcxMjM0IERFQlVHIFNLSVAgOiBwYXNzZXMvdGV4dC5odG1sID0gVElNRU9VVCBQQVNTIl0sCiAg
ICAgICAgICAgICAiIikKICAgICAgICAgc2VsZi5hc3NlcnRfbGluZXNfbGludCgKLSAgICAgICAg
ICAgIFsiQlVHMTIzNCBURVNUIERFQlVHIFNLSVAgOiBwYXNzZXMvdGV4dC5odG1sID0gVElNRU9V
VCBQQVNTIl0sCisgICAgICAgICAgICBbIkJVRzEyMzQgTUFDIERFQlVHIFNLSVAgOiBwYXNzZXMv
dGV4dC5odG1sID0gVElNRU9VVCBQQVNTIl0sCiAgICAgICAgICAgICAiIikKICAgICAgICAgc2Vs
Zi5hc3NlcnRfbGluZXNfbGludCgKLSAgICAgICAgICAgIFsiQlVHMTIzNCBERUJVRyBURVNUIDog
cGFzc2VzL3RleHQuaHRtbCA9IFRJTUVPVVQgUEFTUyJdLAorICAgICAgICAgICAgWyJCVUcxMjM0
IERFQlVHIE1BQyA6IHBhc3Nlcy90ZXh0Lmh0bWwgPSBUSU1FT1VUIFBBU1MiXSwKICAgICAgICAg
ICAgICIiKQogICAgICAgICBzZWxmLmFzc2VydF9saW5lc19saW50KAogICAgICAgICAgICAgWyJT
TE9XIERFRkVSIEJVRzEyMzQgOiBwYXNzZXMvdGV4dC5odG1sID0gUEFTUyJdLAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65514</attachid>
            <date>2010-08-25 19:23:31 -0700</date>
            <delta_ts>2010-08-26 10:03:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44648-20100825192330.patch</filename>
            <type>text/plain</type>
            <size>9810</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA2M2UyNzQzZmQ0ZjI2YzE0NzlkMjJkZWZhZGY5ZTc5NGZhYjk3MmZmLi5hY2YyNDBi
N2ExODY2NTU4ZGY0YmNjZjk0NjkxNTY4YTVkYTA1YzhmIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAK
KzIwMTAtMDgtMjQgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgbmV3LXJ1bi13ZWJraXQt
dGVzdHM6IGFkZCByZWJhc2VsaW5pbmcgdGVzdHMgZm9yIHRlc3RfZXhwZWN0YXRpb25zCisgICAg
ICAgIAorICAgICAgICBUaGlzIHBhdGNoIGFkZHMgbW9yZSB1bml0IHRlc3RzIGZvciB0aGUgcmVi
YXNlbGluaW5nIGNvZGUgaW4gdGhlCisgICAgICAgIHRlc3RfZXhwZWN0YXRpb25zIG1vZHVsZS4g
SXQgZG9lc24ndCBhZGQgYW55IHRlc3RzIGZvcgorICAgICAgICByZWJhc2VsaW5lX2Nocm9taXVt
X3dlYmtpdF90ZXN0cyBpdHNlbGY7IHRoYXQgd2lsbCBjb21lIHNvbWUgb3RoZXIKKyAgICAgICAg
dGltZS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDQ2NDgKKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9w
YWNrYWdlL3Rlc3RfZXhwZWN0YXRpb25zLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5
OgorCiAyMDEwLTA4LTI1ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IE9qYW4gVmFmYWkuCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0
aW9ucy5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91
dF9wYWNrYWdlL3Rlc3RfZXhwZWN0YXRpb25zLnB5CmluZGV4IDA4NjMyMWQ3MDdkNTlmNWMxYWFh
NTczMWUzYTYxMWM0OTNlNmRlNDkuLjNkODM0OWIzMDJhMWY1YTdkNjU2MTA4YTA3ZjRlYjMxYTkw
OTk2ZTQgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZXhwZWN0YXRpb25zLnB5CisrKyBiL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZXhwZWN0
YXRpb25zLnB5CkBAIC00NzcsNiArNDc3LDcgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uc0ZpbGU6
CiAgICAgICAgICAgdGhlIHVwZGF0ZWQgc3RyaW5nLgogICAgICAgICAiIiIKIAorICAgICAgICBh
c3NlcnQocGxhdGZvcm0pCiAgICAgICAgIGZfb3JpZyA9IHNlbGYuX2dldF9pdGVyYWJsZV9leHBl
Y3RhdGlvbnMoc2VsZi5fZXhwZWN0YXRpb25zKQogICAgICAgICBmX25ldyA9IFtdCiAKQEAgLTQ4
Nyw2ICs0ODgsOCBAQCBjbGFzcyBUZXN0RXhwZWN0YXRpb25zRmlsZToKICAgICAgICAgICAgIGxp
bmVubyArPSAxCiAgICAgICAgICAgICBhY3Rpb24gPSBzZWxmLl9nZXRfcGxhdGZvcm1fdXBkYXRl
X2FjdGlvbihsaW5lLCBsaW5lbm8sIHRlc3RzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhdGZvcm0pCisgICAgICAgICAgICBhc3NlcnQo
YWN0aW9uIGluIChOT19DSEFOR0UsIFJFTU9WRV9URVNULCBSRU1PVkVfUExBVEZPUk0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBBRERfUExBVEZPUk1TX0VYQ0VQVF9USElTKSkKICAg
ICAgICAgICAgIGlmIGFjdGlvbiA9PSBOT19DSEFOR0U6CiAgICAgICAgICAgICAgICAgIyBTYXZl
IHRoZSBvcmlnaW5hbCBsaW5lIGJhY2sgdG8gdGhlIGZpbGUKICAgICAgICAgICAgICAgICBfbG9n
LmRlYnVnKCdObyBjaGFuZ2UgdG8gdGVzdDogJXMnLCBsaW5lKQpAQCAtNTIyLDkgKzUyNSw2IEBA
IGNsYXNzIFRlc3RFeHBlY3RhdGlvbnNGaWxlOgogICAgICAgICAgICAgICAgIF9sb2cuaW5mbygn
VGVzdCB1cGRhdGVkOiAnKQogICAgICAgICAgICAgICAgIF9sb2cuaW5mbygnICBvbGQ6ICVzJywg
bGluZSkKICAgICAgICAgICAgICAgICBfbG9nLmluZm8oJyAgbmV3OiAlcycsIG5ld19saW5lKQot
ICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBfbG9nLmVycm9yKCdVbmtub3duIHVw
ZGF0ZSBhY3Rpb246ICVkOyBsaW5lOiAlcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBh
Y3Rpb24sIGxpbmUpCiAKICAgICAgICAgX2xvZy5pbmZvKCdUb3RhbCB0ZXN0cyByZW1vdmVkOiAl
ZCcsIHRlc3RzX3JlbW92ZWQpCiAgICAgICAgIF9sb2cuaW5mbygnVG90YWwgdGVzdHMgdXBkYXRl
ZDogJWQnLCB0ZXN0c191cGRhdGVkKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9leHBlY3RhdGlvbnNfdW5p
dHRlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlv
dXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5weQppbmRleCAyMjIxNGIwNTRi
YzhiZmM0ODA0MWRjMTMzMzQ1N2Y5ZGJmNGU5ZGZiLi5lNGM2YjdlODQ1MGYzNDNhZmY0MGU3N2E3
MjY2Mjk5YWI1ZmE4NmFlIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5w
eQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRf
cGFja2FnZS90ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5weQpAQCAtOTMsMTQgKzkzLDE2IEBA
IGNsYXNzIEJhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAgICAgICAgIHNlbGYuZ2V0
X3Rlc3QoJ2ZhaWx1cmVzL2V4cGVjdGVkL2ltYWdlX2NoZWNrc3VtLmh0bWwnKSwKICAgICAgICAg
ICAgICAgICBzZWxmLmdldF90ZXN0KCdmYWlsdXJlcy9leHBlY3RlZC9jcmFzaC5odG1sJyksCiAg
ICAgICAgICAgICAgICAgc2VsZi5nZXRfdGVzdCgnZmFpbHVyZXMvZXhwZWN0ZWQvbWlzc2luZ190
ZXh0Lmh0bWwnKSwKKyAgICAgICAgICAgICAgICBzZWxmLmdldF90ZXN0KCdmYWlsdXJlcy9leHBl
Y3RlZC9pbWFnZS5odG1sJyksCiAgICAgICAgICAgICAgICAgc2VsZi5nZXRfdGVzdCgncGFzc2Vz
L3RleHQuaHRtbCcpXQogCiAgICAgZGVmIGdldF9iYXNpY19leHBlY3RhdGlvbnMoc2VsZik6CiAg
ICAgICAgIHJldHVybiAiIiIKIEJVR19URVNUIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1s
ID0gVEVYVAotQlVHX1RFU1QgU0tJUCA6IGZhaWx1cmVzL2V4cGVjdGVkL2NyYXNoLmh0bWwgPSBD
UkFTSAorQlVHX1RFU1QgV09OVEZJWCBTS0lQIDogZmFpbHVyZXMvZXhwZWN0ZWQvY3Jhc2guaHRt
bCA9IENSQVNICiBCVUdfVEVTVCBSRUJBU0VMSU5FIDogZmFpbHVyZS9leHBlY3RlZC9taXNzaW5n
X2ltYWdlLmh0bWwgPSBNSVNTSU5HCi1CVUdfVEVTVCA6IGZhaWx1cmVzL2V4cGVjdGVkL2ltYWdl
X2NoZWNrc3VtLmh0bWwgPSBJTUFHRQorQlVHX1RFU1QgV09OVEZJWCA6IGZhaWx1cmVzL2V4cGVj
dGVkL2ltYWdlX2NoZWNrc3VtLmh0bWwgPSBJTUFHRQorQlVHX1RFU1QgV09OVEZJWCBXSU4gOiBm
YWlsdXJlcy9leHBlY3RlZC9pbWFnZS5odG1sID0gSU1BR0UKICIiIgogCiAgICAgZGVmIHBhcnNl
X2V4cChzZWxmLCBleHBlY3RhdGlvbnMsIG92ZXJyaWRlcz1Ob25lLCBpc19saW50X21vZGU9RmFs
c2UsCkBAIC0xMjUsNiArMTI3LDEzIEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvbnNUZXN0KEJhc2Up
OgogICAgICAgICBzZWxmLmFzc2VydF9leHAoJ2ZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCcs
IFRFWFQpCiAgICAgICAgIHNlbGYuYXNzZXJ0X2V4cCgnZmFpbHVyZXMvZXhwZWN0ZWQvaW1hZ2Vf
Y2hlY2tzdW0uaHRtbCcsIElNQUdFKQogICAgICAgICBzZWxmLmFzc2VydF9leHAoJ3Bhc3Nlcy90
ZXh0Lmh0bWwnLCBQQVNTKQorICAgICAgICBzZWxmLmFzc2VydF9leHAoJ2ZhaWx1cmVzL2V4cGVj
dGVkL2ltYWdlLmh0bWwnLCBQQVNTKQorCisgICAgZGVmIHRlc3RfbXVsdGlwbGVfcmVzdWx0cyhz
ZWxmKToKKyAgICAgICAgc2VsZi5wYXJzZV9leHAoJ0JVR1ggOiBmYWlsdXJlcy9leHBlY3RlZC90
ZXh0Lmh0bWwgPSBURVhUIENSQVNIJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9l
eHAuZ2V0X2V4cGVjdGF0aW9ucygKKyAgICAgICAgICAgIHNlbGYuZ2V0X3Rlc3QoJ2ZhaWx1cmVz
L2V4cGVjdGVkL3RleHQuaHRtbCcpKSwKKyAgICAgICAgICAgIHNldChbVEVYVCwgQ1JBU0hdKSkK
IAogICAgIGRlZiB0ZXN0X2RlZmVyKHNlbGYpOgogICAgICAgICBzZWxmLnBhcnNlX2V4cCgnQlVH
WCBERUZFUiA6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IFRFWFQnKQpAQCAtMTgzLDYg
KzE5MiwyMCBAQCBCVUdYIERFRkVSIDogZmFpbHVyZXMvZXhwZWN0ZWQgPSBJTUFHRQogICAgICAg
ICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLl9leHAuZXhwZWN0YXRpb25fdG9f
c3RyaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAtMSkKIAorICAgIGRlZiB0ZXN0X2dl
dF90ZXN0X3NldChzZWxmKToKKyAgICAgICAgIyBIYW5kbGUgc29tZSBjb3JuZXIgY2FzZXMgZm9y
IHRoaXMgcm91dGluZSBub3QgY292ZXJlZCBieSBvdGhlciB0ZXN0cy4KKyAgICAgICAgc2VsZi5w
YXJzZV9leHAoc2VsZi5nZXRfYmFzaWNfZXhwZWN0YXRpb25zKCkpCisgICAgICAgIHMgPSBzZWxm
Ll9leHAuX2V4cGVjdGVkX2ZhaWx1cmVzLmdldF90ZXN0X3NldChXT05URklYKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHMsCisgICAgICAgICAgICBzZXQoW3NlbGYuZ2V0X3Rlc3QoJ2ZhaWx1
cmVzL2V4cGVjdGVkL2NyYXNoLmh0bWwnKSwKKyAgICAgICAgICAgICAgICAgc2VsZi5nZXRfdGVz
dCgnZmFpbHVyZXMvZXhwZWN0ZWQvaW1hZ2VfY2hlY2tzdW0uaHRtbCcpXSkpCisgICAgICAgIHMg
PSBzZWxmLl9leHAuX2V4cGVjdGVkX2ZhaWx1cmVzLmdldF90ZXN0X3NldChXT05URklYLCBDUkFT
SCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLAorICAgICAgICAgICAgc2V0KFtzZWxmLmdl
dF90ZXN0KCdmYWlsdXJlcy9leHBlY3RlZC9jcmFzaC5odG1sJyldKSkKKyAgICAgICAgcyA9IHNl
bGYuX2V4cC5fZXhwZWN0ZWRfZmFpbHVyZXMuZ2V0X3Rlc3Rfc2V0KFdPTlRGSVgsIENSQVNILAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5j
bHVkZV9za2lwcz1GYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLCBzZXQoW10pKQor
CiAgICAgZGVmIHRlc3Rfc3ludGF4X21pc3NpbmdfZXhwZWN0YXRpb24oc2VsZik6CiAgICAgICAg
ICMgVGhpcyBpcyBtaXNzaW5nIHRoZSBleHBlY3RhdGlvbi4KICAgICAgICAgc2VsZi5hc3NlcnRS
YWlzZXMoU3ludGF4RXJyb3IsIHNlbGYucGFyc2VfZXhwLApAQCAtMjU2LDIwICsyNzksNDMgQEAg
QlVHX09WRVJSSURFIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gSU1BR0UiIiIpCiAK
IGNsYXNzIFJlYmFzZWxpbmluZ1Rlc3QoQmFzZSk6CiAgICAgIiIiVGVzdCByZWJhc2VsaW5pbmct
c3BlY2lmaWMgZnVuY3Rpb25hbGl0eS4iIiIKKyAgICBkZWYgYXNzZXJ0UmVtb3ZlKHNlbGYsIHBs
YXRmb3JtLCBpbnB1dF9leHBlY3RhdGlvbnMsIGV4cGVjdGVkX2V4cGVjdGF0aW9ucyk6CisgICAg
ICAgIHNlbGYucGFyc2VfZXhwKGlucHV0X2V4cGVjdGF0aW9ucykKKyAgICAgICAgdGVzdCA9IHNl
bGYuZ2V0X3Rlc3QoJ2ZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCcpCisgICAgICAgIGFjdHVh
bF9leHBlY3RhdGlvbnMgPSBzZWxmLl9leHAucmVtb3ZlX3BsYXRmb3JtX2Zyb21fZXhwZWN0YXRp
b25zKAorICAgICAgICAgICAgdGVzdCwgcGxhdGZvcm0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoZXhwZWN0ZWRfZXhwZWN0YXRpb25zLCBhY3R1YWxfZXhwZWN0YXRpb25zKQorCiAgICAgZGVm
IHRlc3Rfbm9fZ2V0X3JlYmFzZWxpbmluZ19mYWlsdXJlcyhzZWxmKToKICAgICAgICAgc2VsZi5w
YXJzZV9leHAoc2VsZi5nZXRfYmFzaWNfZXhwZWN0YXRpb25zKCkpCiAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwobGVuKHNlbGYuX2V4cC5nZXRfcmViYXNlbGluaW5nX2ZhaWx1cmVzKCkpLCAwKQog
Ci0gICAgZGVmIHRlc3RfYmFzaWMoc2VsZik6CisgICAgZGVmIHRlc3RfZ2V0X3JlYmFzZWxpbmlu
Z19mYWlsdXJlc19leHBhbmQoc2VsZik6CiAgICAgICAgIHNlbGYucGFyc2VfZXhwKCIiIgogQlVH
X1RFU1QgUkVCQVNFTElORSA6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IFRFWFQKICIi
IikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5fZXhwLmdldF9yZWJhc2VsaW5p
bmdfZmFpbHVyZXMoKSksIDEpCiAKLSAgICAgICAgbmV3X2V4cF9zdHIgPSBzZWxmLl9leHAucmVt
b3ZlX3BsYXRmb3JtX2Zyb21fZXhwZWN0YXRpb25zKAotICAgICAgICAgICAgc2VsZi5nZXRfdGVz
dCgnZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sJyksICdURVNUJykKLSAgICAgICAgIyBGSVhN
RTogYWN0dWFsbHkgdGVzdCByZWJhc2VsaW5pbmcKLSAgICAgICAgIyBzZWxmLmFzc2VydEVxdWFs
KG5ld19leHBfc3RyLCAnXG4nKQorICAgIGRlZiB0ZXN0X3JlbW92ZV9leHBhbmQoc2VsZik6Cisg
ICAgICAgIHNlbGYuYXNzZXJ0UmVtb3ZlKCdtYWMnLAorICAgICAgICAgICAgJ0JVR1ggUkVCQVNF
TElORSA6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IFRFWFRcbicsCisgICAgICAgICAg
ICAnQlVHWCBSRUJBU0VMSU5FIFdJTiA6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IFRF
WFRcbicpCisKKyAgICBkZWYgdGVzdF9yZW1vdmVfbWFjX3dpbihzZWxmKToKKyAgICAgICAgc2Vs
Zi5hc3NlcnRSZW1vdmUoJ21hYycsCisgICAgICAgICAgICAnQlVHWCBSRUJBU0VMSU5FIE1BQyBX
SU4gOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBURVhUXG4nLAorICAgICAgICAgICAg
J0JVR1ggUkVCQVNFTElORSBXSU4gOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBURVhU
XG4nKQorCisgICAgZGVmIHRlc3RfcmVtb3ZlX21hY19tYWMoc2VsZik6CisgICAgICAgIHNlbGYu
YXNzZXJ0UmVtb3ZlKCdtYWMnLAorICAgICAgICAgICAgJ0JVR1ggUkVCQVNFTElORSBNQUMgOiBm
YWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBURVhUXG4nLAorICAgICAgICAgICAgJycpCisK
KyAgICBkZWYgdGVzdF9yZW1vdmVfbm90aGluZyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRS
ZW1vdmUoJ21hYycsCisgICAgICAgICAgICAnXG5cbicsCisgICAgICAgICAgICAnXG5cbicpCisK
IAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAt
LWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVz
dC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVz
dC5weQppbmRleCA0ZmUzZWMxNmNmNTE1ZTE3YWM3ODU3N2MxMGZmM2FmNDA1ZjFhYjA0Li5kMzZi
NTQwYzc1YWE4ZjdkMDQ5NjEyYTA0M2UwMjQ3ZTI5OThhMDdmIDEwMDY0NAotLS0gYS9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHkKKysrIGIvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5CkBAIC0x
MTgsMTAgKzExOCwxMCBAQCBjbGFzcyBUZXN0UG9ydChiYXNlLlBvcnQpOgogICAgICAgICAgICAg
cmV0dXJuIGZpbGUucmVhZCgpCiAKICAgICBkZWYgdGVzdF9iYXNlX3BsYXRmb3JtX25hbWVzKHNl
bGYpOgotICAgICAgICByZXR1cm4gKCd0ZXN0JywpCisgICAgICAgIHJldHVybiAoJ21hYycsICd3
aW4nKQogCiAgICAgZGVmIHRlc3RfcGxhdGZvcm1fbmFtZShzZWxmKToKLSAgICAgICAgcmV0dXJu
ICd0ZXN0JworICAgICAgICByZXR1cm4gJ21hYycKIAogICAgIGRlZiB0ZXN0X3BsYXRmb3JtX25h
bWVzKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi50ZXN0X2Jhc2VfcGxhdGZvcm1fbmFtZXMo
KQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vy
cy90ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvc3R5bGUvY2hlY2tlcnMvdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHkKaW5kZXgg
YzBiYjRhY2UxODk0MDAwOTNkN2EyMTJkMWY0MmIyMGViMmEyMTQ3MC4uNzQ3YjhiNDAyZjdiMjE0
MzZmZmIxNjcwNTg4MTdkNjkzZTViNDVlOSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy90ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5weQor
KysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3Rlc3RfZXhw
ZWN0YXRpb25zX3VuaXR0ZXN0LnB5CkBAIC05Myw3ICs5Myw3IEBAIGNsYXNzIFRlc3RFeHBlY3Rh
dGlvbnNUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICBbInBhc3Nlcy90
ZXh0Lmh0bWwgPSBDUkFTSCBUSU1FT1VUIEZBSUwgUEFTUyJdLAogICAgICAgICAgICAgIiIpCiAg
ICAgICAgIHNlbGYuYXNzZXJ0X2xpbmVzX2xpbnQoCi0gICAgICAgICAgICBbIkJVRzEyMzQgVEVT
VCA6IHBhc3Nlcy90ZXh0Lmh0bWwgPSBQQVNTIEZBSUwiXSwKKyAgICAgICAgICAgIFsiQlVHMTIz
NCBNQUMgOiBwYXNzZXMvdGV4dC5odG1sID0gUEFTUyBGQUlMIl0sCiAgICAgICAgICAgICAiIikK
ICAgICAgICAgc2VsZi5hc3NlcnRfbGluZXNfbGludCgKICAgICAgICAgICAgIFsiU0tJUCBCVUcx
MjM0IDogcGFzc2VzL3RleHQuaHRtbCA9IFRJTUVPVVQgUEFTUyJdLApAQCAtMTA1LDEwICsxMDUs
MTAgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uc1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToK
ICAgICAgICAgICAgIFsiQlVHMTIzNCBERUJVRyBTS0lQIDogcGFzc2VzL3RleHQuaHRtbCA9IFRJ
TUVPVVQgUEFTUyJdLAogICAgICAgICAgICAgIiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0X2xpbmVz
X2xpbnQoCi0gICAgICAgICAgICBbIkJVRzEyMzQgVEVTVCBERUJVRyBTS0lQIDogcGFzc2VzL3Rl
eHQuaHRtbCA9IFRJTUVPVVQgUEFTUyJdLAorICAgICAgICAgICAgWyJCVUcxMjM0IE1BQyBERUJV
RyBTS0lQIDogcGFzc2VzL3RleHQuaHRtbCA9IFRJTUVPVVQgUEFTUyJdLAogICAgICAgICAgICAg
IiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0X2xpbmVzX2xpbnQoCi0gICAgICAgICAgICBbIkJVRzEy
MzQgREVCVUcgVEVTVCA6IHBhc3Nlcy90ZXh0Lmh0bWwgPSBUSU1FT1VUIFBBU1MiXSwKKyAgICAg
ICAgICAgIFsiQlVHMTIzNCBERUJVRyBNQUMgOiBwYXNzZXMvdGV4dC5odG1sID0gVElNRU9VVCBQ
QVNTIl0sCiAgICAgICAgICAgICAiIikKICAgICAgICAgc2VsZi5hc3NlcnRfbGluZXNfbGludCgK
ICAgICAgICAgICAgIFsiU0xPVyBERUZFUiBCVUcxMjM0IDogcGFzc2VzL3RleHQuaHRtbCA9IFBB
U1MiXSwK
</data>
<flag name="review"
          id="54300"
          type_id="1"
          status="+"
          setter="tony"
    />
          </attachment>
      

    </bug>

</bugzilla>