<?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>106420</bug_id>
          
          <creation_ts>2013-01-08 23:14:44 -0800</creation_ts>
          <short_desc>Fixing AuthenticationError when running test-webkitpy as a non-committer.</short_desc>
          <delta_ts>2013-01-10 19:20:04 -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="Tim &apos;mithro&apos; Ansell">mithro</reporter>
          <assigned_to name="Tim &apos;mithro&apos; Ansell">mithro</assigned_to>
          <cc>abarth</cc>
    
    <cc>dbates</cc>
    
    <cc>dpranke</cc>
    
    <cc>eric</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>803064</commentid>
    <comment_count>0</comment_count>
    <who name="Tim &apos;mithro&apos; Ansell">mithro</who>
    <bug_when>2013-01-08 23:14:44 -0800</bug_when>
    <thetext>Fixing AuthenticationError when running test-webkitpy as a non-committer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803065</commentid>
    <comment_count>1</comment_count>
      <attachid>181855</attachid>
    <who name="Tim &apos;mithro&apos; Ansell">mithro</who>
    <bug_when>2013-01-08 23:15:58 -0800</bug_when>
    <thetext>Created attachment 181855
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803067</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-08 23:21:03 -0800</bug_when>
    <thetext>Attachment 181855 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/Scripts/webkitpy...&quot; exit_code: 1
/mnt/git/webkit-style-queue/Tools/Scripts/webkitpy/thirdparty/autoinstalled/pylint/lint.py:393: DeprecationWarning: disable-msg is deprecated, replace it by disable (/mnt/git/webkit-style-queue/Tools/Scripts/webkitpy/common/checkout/scm/svn.py, line         # ignore false positives for methods implemented in the mixee class. pylint: disable-msg=E1101
)
  DeprecationWarning)
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:304:  [SCMTest._shared_test_changed_files] Instance of &apos;SCMTest&apos; has no &apos;scm&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:308:  [SCMTest._shared_test_changed_files] Instance of &apos;SCMTest&apos; has no &apos;scm&apos; member  [pylint/E1101] [5]
Total errors found: 2 in 4 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803068</commentid>
    <comment_count>3</comment_count>
      <attachid>181855</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-01-08 23:23:18 -0800</bug_when>
    <thetext>Comment on attachment 181855
Patch

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

&gt; Tools/ChangeLog:7
&gt; +

Could you explain a bit more here about what sort of changes you&apos;re making here?  It&apos;s not immediately clear if this is all search-replace or one-off-fixes or what?

&gt; Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:128
&gt; +class SVNTestRepository(object):

Welcome to our cave.  Do you like our charcoal buffalo?

&gt; Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:345
&gt; +        self.assertEqual(sorted(changed_files), sorted([&quot;test_dir/test_file3&quot;, &quot;test_file&quot;]))

I wonder if fancy new unitests has a sort-for-you method.  Not that this is hard.  We&apos;ve talked of moving to unittests2 since we can&apos;t quite drop 2.6 yet.  (We&apos;re held back by the last version of Mac OS X which Apple WebKit supports, as we try not to have contributors have to install any more than absolutely necessary).

&gt; Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1055
&gt; +        self.scm = detect_scm_system(self.git_checkout_path)

I believe there is a newer SCMDetector object which is smarter than this free-function.  But that&apos;s another change for another time. :)

&gt; Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1555
&gt; +        cwd = tempfile.mkdtemp(suffix=&quot;git_test_with_mock&quot;)

Why do the mock tests need a real tempfile?  Don&apos;t they work from a MockFileSystem()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803069</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-01-08 23:23:55 -0800</bug_when>
    <thetext>Mostly I just need more context for the cleanup.  Or it&apos;s possible there is a search-replace part of this which would be trivial to land first? (even if it didn&apos;t change behavior/fix tests)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803086</commentid>
    <comment_count>5</comment_count>
      <attachid>181855</attachid>
    <who name="Tim &apos;mithro&apos; Ansell">mithro</who>
    <bug_when>2013-01-08 23:44:28 -0800</bug_when>
    <thetext>Comment on attachment 181855
Patch

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

&gt;&gt; Tools/ChangeLog:7
&gt;&gt; +
&gt; 
&gt; Could you explain a bit more here about what sort of changes you&apos;re making here?  It&apos;s not immediately clear if this is all search-replace or one-off-fixes or what?

There is a couple of things which I&apos;ve changed;
 * Sort the list inputs into a deterministic order (see the added sorted())
 * Change all tests to use self.scm rather then a local scm
 * Make the self.scm object override the svn_auth_realm

&gt;&gt; Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:345
&gt;&gt; +        self.assertEqual(sorted(changed_files), sorted([&quot;test_dir/test_file3&quot;, &quot;test_file&quot;]))
&gt; 
&gt; I wonder if fancy new unitests has a sort-for-you method.  Not that this is hard.  We&apos;ve talked of moving to unittests2 since we can&apos;t quite drop 2.6 yet.  (We&apos;re held back by the last version of Mac OS X which Apple WebKit supports, as we try not to have contributors have to install any more than absolutely necessary).

Yes, they have an &quot;assertXXXEqual&quot; which doesn&apos;t compare order.

&gt;&gt; Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1055
&gt;&gt; +        self.scm = detect_scm_system(self.git_checkout_path)
&gt; 
&gt; I believe there is a newer SCMDetector object which is smarter than this free-function.  But that&apos;s another change for another time. :)

Agreed

&gt;&gt; Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1555
&gt;&gt; +        cwd = tempfile.mkdtemp(suffix=&quot;git_test_with_mock&quot;)
&gt; 
&gt; Why do the mock tests need a real tempfile?  Don&apos;t they work from a MockFileSystem()?

cwd can&apos;t be none. Some of these tests are actually still broken.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804082</commentid>
    <comment_count>6</comment_count>
      <attachid>181855</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-01-09 22:52:31 -0800</bug_when>
    <thetext>Comment on attachment 181855
Patch

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

&gt;&gt;&gt; Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1555
&gt;&gt;&gt; +        cwd = tempfile.mkdtemp(suffix=&quot;git_test_with_mock&quot;)
&gt;&gt; 
&gt;&gt; Why do the mock tests need a real tempfile?  Don&apos;t they work from a MockFileSystem()?
&gt; 
&gt; cwd can&apos;t be none. Some of these tests are actually still broken.

I see, Git is still a real object and uses a real FileSystem (because it doesn&apos;t even take a FileSystem parameter!) so it needs a real path?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804200</commentid>
    <comment_count>7</comment_count>
      <attachid>182098</attachid>
    <who name="Tim &apos;mithro&apos; Ansell">mithro</who>
    <bug_when>2013-01-10 02:36:13 -0800</bug_when>
    <thetext>Created attachment 182098
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804516</commentid>
    <comment_count>8</comment_count>
      <attachid>182098</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-01-10 10:32:06 -0800</bug_when>
    <thetext>Comment on attachment 182098
Patch

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804531</commentid>
    <comment_count>9</comment_count>
      <attachid>182098</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-10 10:45:02 -0800</bug_when>
    <thetext>Comment on attachment 182098
Patch

Rejecting attachment 182098 from commit-queue.

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, u&apos;--status-host=queues.webkit.org&apos;, ...&quot; exit_code: 2 cwd: /mnt/git/webkit-commit-queue

Last 500 characters of output:
t/git/webkit-commit-queue/Source/WebKit/chromium/v8 --revision 13309 --non-interactive --force --accept theirs-conflict --ignore-externals&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;
53&gt;At revision 13309.

________ running &apos;/usr/bin/python tools/clang/scripts/update.py --mac-only&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;

________ running &apos;/usr/bin/python gyp_webkit&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;
Updating webkit projects from gyp files...

Full output: http://queues.webkit.org/results/15808013</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804644</commentid>
    <comment_count>10</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-10 12:38:05 -0800</bug_when>
    <thetext>    The following ChangeLog files contain OOPS:

        trunk/Tools/ChangeLog

    Please don&apos;t ever say &quot;OOPS&quot; in a ChangeLog file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804645</commentid>
    <comment_count>11</comment_count>
      <attachid>182098</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-10 12:38:37 -0800</bug_when>
    <thetext>Comment on attachment 182098
Patch

Your patch has two ChangeLog entries in one ChangeLog.  Please use one ChangeLog entry per patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804866</commentid>
    <comment_count>12</comment_count>
      <attachid>182241</attachid>
    <who name="Tim &apos;mithro&apos; Ansell">mithro</who>
    <bug_when>2013-01-10 18:49:54 -0800</bug_when>
    <thetext>Created attachment 182241
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804868</commentid>
    <comment_count>13</comment_count>
    <who name="Tim &apos;mithro&apos; Ansell">mithro</who>
    <bug_when>2013-01-10 18:53:51 -0800</bug_when>
    <thetext>Before:
 Ran 1733 tests in 40.638s                                                                             
 FAILED (failures=0, errors=22)

After:
 Ran 1733 tests in 43.084s                                                                                     
 FAILED (failures=1, errors=8)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804869</commentid>
    <comment_count>14</comment_count>
      <attachid>182241</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-01-10 18:54:23 -0800</bug_when>
    <thetext>Comment on attachment 182241
Patch

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804880</commentid>
    <comment_count>15</comment_count>
      <attachid>182241</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-10 19:19:59 -0800</bug_when>
    <thetext>Comment on attachment 182241
Patch

Clearing flags on attachment: 182241

Committed r139399: &lt;http://trac.webkit.org/changeset/139399&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804881</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-10 19:20:04 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181855</attachid>
            <date>2013-01-08 23:15:58 -0800</date>
            <delta_ts>2013-01-10 02:36:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106420-20130109181301.patch</filename>
            <type>text/plain</type>
            <size>29715</size>
            <attacher name="Tim &apos;mithro&apos; Ansell">mithro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5MDQyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYzZlM2FkOTkyNTVjYWE5OGI5ZmJmYzZkYTM2ZmEwY2Mz
NWY3OTM1YS4uNjIwYWM2YTlhYmZmNTNhNjY1Y2Y0MTk1MzJjNTk0Zjk3NDVlOTlmZiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3
IEBACisyMDEzLTAxLTA4ICBUaW0gJ21pdGhybycgQW5zZWxsICA8bWl0aHJvQG1pdGhpcy5jb20+
CisKKyAgICAgICAgRml4aW5nIEF1dGhlbnRpY2F0aW9uRXJyb3Igd2hlbiBydW5uaW5nIHRlc3Qt
d2Via2l0cHkgYXMgYSBub24tY29tbWl0dGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2NDIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9z
Y20vZ2l0LnB5OgorICAgICAgICAoR2l0LnB1c2hfbG9jYWxfY29tbWl0c190b19zZXJ2ZXIpOgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zY21fdW5pdHRl
c3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3N2
bi5weToKKyAgICAgICAgKFNWTlJlcG9zaXRvcnkpOgorICAgICAgICAoU1ZOUmVwb3NpdG9yeS5o
YXNfYXV0aG9yaXphdGlvbl9mb3JfcmVhbG0pOgorCiAyMDEzLTAxLTAyICBTdGV2ZSBCbG9jayAg
PHN0ZXZlYmxvY2tAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEFkZCBjaHJvbWl1bS5vcmcgZW1h
aWwgYWRkcmVzcyBmb3IgU3RldmUgQmxvY2suCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vZ2l0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vY2hlY2tvdXQvc2NtL2dpdC5weQppbmRleCBlOGYxNGRlMmM2ZWQyYmFkMTQzZjc2
YzU4MDMwZmViNWMxOWZiNGUwLi42YjhmMzhmNjYwZmU2YTQxYzIyZDQ2N2QxYTdmNmYxN2JiMTI1
ZDQwIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9z
Y20vZ2l0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3Nj
bS9naXQucHkKQEAgLTQ1Miw4ICs0NTIsOCBAQCBjbGFzcyBHaXQoU0NNLCBTVk5SZXBvc2l0b3J5
KToKIAogICAgIGRlZiBwdXNoX2xvY2FsX2NvbW1pdHNfdG9fc2VydmVyKHNlbGYsIHVzZXJuYW1l
PU5vbmUsIHBhc3N3b3JkPU5vbmUpOgogICAgICAgICBkY29tbWl0X2NvbW1hbmQgPSBbJ3N2bics
ICdkY29tbWl0J10KLSAgICAgICAgaWYgKG5vdCB1c2VybmFtZSBvciBub3QgcGFzc3dvcmQpIGFu
ZCBub3Qgc2VsZi5oYXNfYXV0aG9yaXphdGlvbl9mb3JfcmVhbG0oU1ZOLnN2bl9zZXJ2ZXJfcmVh
bG0pOgotICAgICAgICAgICAgcmFpc2UgQXV0aGVudGljYXRpb25FcnJvcihTVk4uc3ZuX3NlcnZl
cl9ob3N0LCBwcm9tcHRfZm9yX3Bhc3N3b3JkPVRydWUpCisgICAgICAgIGlmIChub3QgdXNlcm5h
bWUgb3Igbm90IHBhc3N3b3JkKSBhbmQgbm90IHNlbGYuaGFzX2F1dGhvcml6YXRpb25fZm9yX3Jl
YWxtKHNlbGYuc3ZuX3NlcnZlcl9yZWFsbSk6CisgICAgICAgICAgICByYWlzZSBBdXRoZW50aWNh
dGlvbkVycm9yKHNlbGYuc3ZuX3NlcnZlcl9ob3N0LCBwcm9tcHRfZm9yX3Bhc3N3b3JkPVRydWUp
CiAgICAgICAgIGlmIHVzZXJuYW1lOgogICAgICAgICAgICAgZGNvbW1pdF9jb21tYW5kLmV4dGVu
ZChbIi0tdXNlcm5hbWUiLCB1c2VybmFtZV0pCiAgICAgICAgIG91dHB1dCA9IHNlbGYuX3J1bl9n
aXQoZGNvbW1pdF9jb21tYW5kLCBlcnJvcl9oYW5kbGVyPWNvbW1pdF9lcnJvcl9oYW5kbGVyLCBp
bnB1dD1wYXNzd29yZCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L2NoZWNrb3V0L3NjbS9zY21fdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9jaGVja291dC9zY20vc2NtX3VuaXR0ZXN0LnB5CmluZGV4IDE0ZTlmZDM4NDI3ODcxMjhk
NGNiZDBmM2FmYjJlMWNjMTI2ZTJjZjAuLmRmNDAwNTMzNTlmYjY4MDQ1NTNiZmVjNTc3MTc2M2Rj
NGNjNmNhZTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNr
b3V0L3NjbS9zY21fdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21t
b24vY2hlY2tvdXQvc2NtL3NjbV91bml0dGVzdC5weQpAQCAtMTI1LDcgKzEyNSw3IEBAIGRlZiBf
Z2l0X2RpZmYoKmFyZ3MpOgogCiAKICMgRXhpc3RzIHRvIHNoYXJlIHN2biByZXBvc2l0b3J5IGNy
ZWF0aW9uIGNvZGUgYmV0d2VlbiB0aGUgZ2l0IGFuZCBzdm4gdGVzdHMKLWNsYXNzIFNWTlRlc3RS
ZXBvc2l0b3J5OgorY2xhc3MgU1ZOVGVzdFJlcG9zaXRvcnkob2JqZWN0KToKICAgICBAY2xhc3Nt
ZXRob2QKICAgICBkZWYgX3N2bl9hZGQoY2xzLCBwYXRoKToKICAgICAgICAgcnVuX2NvbW1hbmQo
WyJzdm4iLCAiYWRkIiwgcGF0aF0pCkBAIC0zMDEsMTEgKzMwMSwxMSBAQCBjbGFzcyBTQ01UZXN0
KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgd3JpdGVfaW50b19maWxlX2F0X3BhdGgoInRl
c3RfZmlsZSIsICJjaGFuZ2VkIGNvbnRlbnQiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNl
bGYuc2NtLmNoYW5nZWRfZmlsZXMoKSwgWyJ0ZXN0X2ZpbGUiXSkKICAgICAgICAgd3JpdGVfaW50
b19maWxlX2F0X3BhdGgoInRlc3RfZGlyL3Rlc3RfZmlsZTMiLCAibmV3IHN0dWZmIikKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNjbS5jaGFuZ2VkX2ZpbGVzKCksIFsidGVzdF9kaXIv
dGVzdF9maWxlMyIsICJ0ZXN0X2ZpbGUiXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0
ZWQoc2VsZi5zY20uY2hhbmdlZF9maWxlcygpKSwgc29ydGVkKFsidGVzdF9kaXIvdGVzdF9maWxl
MyIsICJ0ZXN0X2ZpbGUiXSkpCiAgICAgICAgIG9sZF9jd2QgPSBvcy5nZXRjd2QoKQogICAgICAg
ICBvcy5jaGRpcigidGVzdF9kaXIiKQogICAgICAgICAjIFZhbGlkYXRlIHRoYXQgY2hhbmdlZF9m
aWxlcyBkb2VzIG5vdCBjaGFuZ2Ugd2l0aCBvdXIgY3dkLCBzZWUgYnVnIDM3MDE1LgotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2NtLmNoYW5nZWRfZmlsZXMoKSwgWyJ0ZXN0X2Rpci90
ZXN0X2ZpbGUzIiwgInRlc3RfZmlsZSJdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRl
ZChzZWxmLnNjbS5jaGFuZ2VkX2ZpbGVzKCkpLCBzb3J0ZWQoWyJ0ZXN0X2Rpci90ZXN0X2ZpbGUz
IiwgInRlc3RfZmlsZSJdKSkKICAgICAgICAgb3MuY2hkaXIob2xkX2N3ZCkKIAogICAgIGRlZiBf
c2hhcmVkX3Rlc3RfYWRkZWRfZmlsZXMoc2VsZik6CkBAIC0zMjcsNyArMzI3LDcgQEAgY2xhc3Mg
U0NNVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIGFkZGVkX2ZpbGVzID0gc2VsZi5z
Y20uYWRkZWRfZmlsZXMoKQogICAgICAgICBpZiAiYWRkZWRfZGlyIiBpbiBhZGRlZF9maWxlczoK
ICAgICAgICAgICAgIGFkZGVkX2ZpbGVzLnJlbW92ZSgiYWRkZWRfZGlyIikKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChhZGRlZF9maWxlcywgWyJhZGRlZF9kaXIvYWRkZWRfZmlsZTIiLCAiYWRk
ZWRfZmlsZSIsICJhZGRlZF9maWxlMyIsICJhZGRlZF9maWxlNCJdKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHNvcnRlZChhZGRlZF9maWxlcyksIHNvcnRlZChbImFkZGVkX2Rpci9hZGRlZF9m
aWxlMiIsICJhZGRlZF9maWxlIiwgImFkZGVkX2ZpbGUzIiwgImFkZGVkX2ZpbGU0Il0pKQogCiAg
ICAgICAgICMgVGVzdCBhbHNvIHRvIG1ha2Ugc3VyZSBjbGVhbl93b3JraW5nX2RpcmVjdG9yeSBy
ZW1vdmVzIGFkZGVkIGZpbGVzCiAgICAgICAgIHNlbGYuc2NtLmNsZWFuX3dvcmtpbmdfZGlyZWN0
b3J5KCkKQEAgLTM0Miw3ICszNDIsNyBAQCBjbGFzcyBTQ01UZXN0KHVuaXR0ZXN0LlRlc3RDYXNl
KToKICAgICAgICAgY2hhbmdlZF9maWxlcyA9IHNlbGYuc2NtLmNoYW5nZWRfZmlsZXNfZm9yX3Jl
dmlzaW9uKDMpCiAgICAgICAgIGlmICJ0ZXN0X2RpciIgaW4gY2hhbmdlZF9maWxlczoKICAgICAg
ICAgICAgIGNoYW5nZWRfZmlsZXMucmVtb3ZlKCJ0ZXN0X2RpciIpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoY2hhbmdlZF9maWxlcywgWyJ0ZXN0X2Rpci90ZXN0X2ZpbGUzIiwgInRlc3RfZmls
ZSJdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChjaGFuZ2VkX2ZpbGVzKSwgc29y
dGVkKFsidGVzdF9kaXIvdGVzdF9maWxlMyIsICJ0ZXN0X2ZpbGUiXSkpCiAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoc29ydGVkKHNlbGYuc2NtLmNoYW5nZWRfZmlsZXNfZm9yX3JldmlzaW9uKDQp
KSwgc29ydGVkKFsidGVzdF9maWxlIiwgInRlc3RfZmlsZTIiXSkpICAjIEdpdCBhbmQgU1ZOIHJl
dHVybiBkaWZmZXJlbnQgb3JkZXJzLgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2Nt
LmNoYW5nZWRfZmlsZXNfZm9yX3JldmlzaW9uKDIpLCBbInRlc3RfZmlsZSJdKQogCkBAIC02MjYs
NiArNjI2LDcgQEAgY2xhc3MgU1ZOVGVzdChTQ01UZXN0KToKICAgICAgICAgU1ZOVGVzdFJlcG9z
aXRvcnkuc2V0dXAoc2VsZikKICAgICAgICAgb3MuY2hkaXIoc2VsZi5zdm5fY2hlY2tvdXRfcGF0
aCkKICAgICAgICAgc2VsZi5zY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLnN2bl9jaGVja291
dF9wYXRoKQorICAgICAgICBzZWxmLnNjbS5zdm5fc2VydmVyX3JlYWxtID0gTm9uZQogICAgICAg
ICAjIEZvciBoaXN0b3JpY2FsIHJlYXNvbnMsIHdlIHRlc3Qgc29tZSBjaGVja291dCBjb2RlIGhl
cmUgdG9vLgogICAgICAgICBzZWxmLmNoZWNrb3V0ID0gQ2hlY2tvdXQoc2VsZi5zY20pCiAKQEAg
LTcxNiw3ICs3MTcsNyBAQCBRMWRUQngwQUFBQjQyaXRnNEdsZ1lKakd3TUREeU9ETXhNRHczNEdC
Z1FFQUpQUURKQT09CiAgICAgICAgIHNlbGYuX3NoYXJlZF90ZXN0X2NvbW1pdF93aXRoX21lc3Nh
Z2UoImRiYXRlc0B3ZWJraXQub3JnIikKIAogICAgIGRlZiB0ZXN0X2NvbW1pdF93aXRob3V0X2F1
dGhvcml6YXRpb24oc2VsZik6Ci0gICAgICAgIHNlbGYuc2NtLmhhc19hdXRob3JpemF0aW9uX2Zv
cl9yZWFsbSA9IGxhbWJkYSByZWFsbTogRmFsc2UKKyAgICAgICAgc2VsZi5zY20uc3ZuX3NlcnZl
cl9yZWFsbSA9IFNWTi5zdm5fc2VydmVyX3JlYWxtCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2Vz
KEF1dGhlbnRpY2F0aW9uRXJyb3IsIHNlbGYuX3NoYXJlZF90ZXN0X2NvbW1pdF93aXRoX21lc3Nh
Z2UpCiAKICAgICBkZWYgdGVzdF9oYXNfYXV0aG9yaXphdGlvbl9mb3JfcmVhbG1fdXNpbmdfY3Jl
ZGVudGlhbHNfd2l0aF9wYXNzdHlwZShzZWxmKToKQEAgLTEwMDgsNyArMTAwOSw3IEBAIGNsYXNz
IEdpdFRlc3QoU0NNVGVzdCk6CiAKICAgICBkZWYgdGVzdF9oZWFkX3N2bl9yZXZpc2lvbihzZWxm
KToKICAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi51bnRyYWNraW5nX2NoZWNr
b3V0X3BhdGgpCi0gICAgICAgICMgSWYgd2UgY2xvbmVkIGEgZ2l0IHJlcG8gdHJhY2tpbmcgYW4g
U1ZHIHJlcG8sIHRoaXMgd291bGQgZ2l2ZSB0aGUgc2FtZSByZXN1bHQgYXMKKyAgICAgICAgIyBJ
ZiB3ZSBjbG9uZWQgYSBnaXQgcmVwbyB0cmFja2luZyBhbiBTVk4gcmVwbywgdGhpcyB3b3VsZCBn
aXZlIHRoZSBzYW1lIHJlc3VsdCBhcwogICAgICAgICAjIHNlbGYuX3NoYXJlZF90ZXN0X2hlYWRf
c3ZuX3JldmlzaW9uKCkuCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2NtLmhlYWRfc3ZuX3Jl
dmlzaW9uKCksICcnKQogCkBAIC0xMDQyLDYgKzEwNDMsNyBAQCBjbGFzcyBHaXRTVk5UZXN0KFND
TVRlc3QpOgogICAgICAgICBTVk5UZXN0UmVwb3NpdG9yeS5zZXR1cChzZWxmKQogICAgICAgICBz
ZWxmLl9zZXR1cF9naXRfY2hlY2tvdXQoKQogICAgICAgICBzZWxmLnNjbSA9IGRldGVjdF9zY21f
c3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCisgICAgICAgIHNlbGYuc2NtLnN2bl9zZXJ2
ZXJfcmVhbG0gPSBOb25lCiAgICAgICAgICMgRm9yIGhpc3RvcmljYWwgcmVhc29ucywgd2UgdGVz
dCBzb21lIGNoZWNrb3V0IGNvZGUgaGVyZSB0b28uCiAgICAgICAgIHNlbGYuY2hlY2tvdXQgPSBD
aGVja291dChzZWxmLnNjbSkKIApAQCAtMTA1MCw5ICsxMDUyLDkgQEAgY2xhc3MgR2l0U1ZOVGVz
dChTQ01UZXN0KToKICAgICAgICAgc2VsZi5fdGVhcl9kb3duX2dpdF9jaGVja291dCgpCiAKICAg
ICBkZWYgdGVzdF9kZXRlY3Rpb24oc2VsZik6Ci0gICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lz
dGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2Nt
LmRpc3BsYXlfbmFtZSgpLCAiZ2l0IikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzY20uc3Vw
cG9ydHNfbG9jYWxfY29tbWl0cygpLCBUcnVlKQorICAgICAgICBzZWxmLnNjbSA9IGRldGVjdF9z
Y21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoc2VsZi5zY20uZGlzcGxheV9uYW1lKCksICJnaXQiKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHNlbGYuc2NtLnN1cHBvcnRzX2xvY2FsX2NvbW1pdHMoKSwgVHJ1ZSkKIAogICAgIGRlZiB0
ZXN0X3JlYWRfZ2l0X2NvbmZpZyhzZWxmKToKICAgICAgICAga2V5ID0gJ3Rlc3QuZ2l0LWNvbmZp
ZycKQEAgLTExMTEsNDUgKzExMTMsMzkgQEAgY2xhc3MgR2l0U1ZOVGVzdChTQ01UZXN0KToKICAg
ICAgICAgIyAtLXF1aWV0IGRvZXNuJ3QgbWFrZSBnaXQgc3ZuIHNpbGVudCwgc28gdXNlIHJ1bl9z
aWxlbnQgdG8gcmVkaXJlY3Qgb3V0cHV0CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFNjcmlw
dEVycm9yLCBydW5fc2lsZW50LCBbJ2dpdCcsICdzdm4nLCAnLS1xdWlldCcsICdyZWJhc2UnXSkg
IyBXaWxsIGZhaWwgZHVlIHRvIGEgY29uZmxpY3QgbGVhdmluZyB1cyBtaWQtcmViYXNlLgogCi0g
ICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzY20ucmViYXNlX2luX3Byb2dyZXNzKCkpCisgICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLnNjbS5yZWJhc2VfaW5fcHJvZ3Jlc3MoKSkKIAogICAgICAg
ICAjIE1ha2Ugc3VyZSBvdXIgY2xlYW51cCB3b3Jrcy4KLSAgICAgICAgc2NtLmNsZWFuX3dvcmtp
bmdfZGlyZWN0b3J5KCkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzY20ucmViYXNlX2luX3By
b2dyZXNzKCkpCisgICAgICAgIHNlbGYuc2NtLmNsZWFuX3dvcmtpbmdfZGlyZWN0b3J5KCkKKyAg
ICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnNjbS5yZWJhc2VfaW5fcHJvZ3Jlc3MoKSkKIAog
ICAgICAgICAjIE1ha2Ugc3VyZSBjbGVhbnVwIGRvZXNuJ3QgdGhyb3cgd2hlbiBubyByZWJhc2Ug
aXMgaW4gcHJvZ3Jlc3MuCi0gICAgICAgIHNjbS5jbGVhbl93b3JraW5nX2RpcmVjdG9yeSgpCisg
ICAgICAgIHNlbGYuc2NtLmNsZWFuX3dvcmtpbmdfZGlyZWN0b3J5KCkKIAogICAgIGRlZiB0ZXN0
X2NvbW1pdGlzaF9wYXJzaW5nKHNlbGYpOgotICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3Rl
bShzZWxmLmdpdF9jaGVja291dF9wYXRoKQotCiAgICAgICAgICMgTXVsdGlwbGUgcmV2aXNpb25z
IGFyZSBjaGVycnktcGlja2VkLgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzY20uY29t
bWl0X2lkc19mcm9tX2NvbW1pdGlzaF9hcmd1bWVudHMoWydIRUFEfjInXSkpLCAxKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGxlbihzY20uY29tbWl0X2lkc19mcm9tX2NvbW1pdGlzaF9hcmd1
bWVudHMoWydIRUFEJywgJ0hFQUR+MiddKSksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
bGVuKHNlbGYuc2NtLmNvbW1pdF9pZHNfZnJvbV9jb21taXRpc2hfYXJndW1lbnRzKFsnSEVBRH4y
J10pKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5zY20uY29tbWl0X2lk
c19mcm9tX2NvbW1pdGlzaF9hcmd1bWVudHMoWydIRUFEJywgJ0hFQUR+MiddKSksIDIpCiAKICAg
ICAgICAgIyAuLi4gaXMgYW4gaW52YWxpZCByYW5nZSBzcGVjaWZpZXIKLSAgICAgICAgc2VsZi5h
c3NlcnRSYWlzZXMoU2NyaXB0RXJyb3IsIHNjbS5jb21taXRfaWRzX2Zyb21fY29tbWl0aXNoX2Fy
Z3VtZW50cywgWyd0cnVuay4uLkhFQUQnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU2Ny
aXB0RXJyb3IsIHNlbGYuc2NtLmNvbW1pdF9pZHNfZnJvbV9jb21taXRpc2hfYXJndW1lbnRzLCBb
J3RydW5rLi4uSEVBRCddKQogCiAgICAgZGVmIHRlc3RfY29tbWl0aXNoX29yZGVyKHNlbGYpOgot
ICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRoKQot
CiAgICAgICAgIGNvbW1pdF9yYW5nZSA9ICdIRUFEfjMuLkhFQUQnCiAKLSAgICAgICAgYWN0dWFs
X2NvbW1pdHMgPSBzY20uY29tbWl0X2lkc19mcm9tX2NvbW1pdGlzaF9hcmd1bWVudHMoW2NvbW1p
dF9yYW5nZV0pCisgICAgICAgIGFjdHVhbF9jb21taXRzID0gc2VsZi5zY20uY29tbWl0X2lkc19m
cm9tX2NvbW1pdGlzaF9hcmd1bWVudHMoW2NvbW1pdF9yYW5nZV0pCiAgICAgICAgIGV4cGVjdGVk
X2NvbW1pdHMgPSBbXQogICAgICAgICBleHBlY3RlZF9jb21taXRzICs9IHJldmVyc2VkKHJ1bl9j
b21tYW5kKFsnZ2l0JywgJ3Jldi1saXN0JywgY29tbWl0X3JhbmdlXSkuc3BsaXRsaW5lcygpKQog
CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsX2NvbW1pdHMsIGV4cGVjdGVkX2NvbW1p
dHMpCiAKICAgICBkZWYgdGVzdF9hcHBseV9naXRfcGF0Y2goc2VsZik6Ci0gICAgICAgIHNjbSA9
IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCiAgICAgICAgICMgV2Ug
Y2FyZWZ1bGxseSBwaWNrIGEgZGlmZiB3aGljaCBkb2VzIG5vdCBoYXZlIGEgZGlyZWN0b3J5IGFk
ZGl0aW9uCiAgICAgICAgICMgYXMgY3VycmVudGx5IHN2bi1hcHBseSB3aWxsIGVycm9yIG91dCB3
aGVuIHRyeWluZyB0byByZW1vdmUgZGlyZWN0b3JpZXMKICAgICAgICAgIyBpbiBHaXQ6IGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNDg3MQogICAgICAgICBwYXRjaCA9
IHNlbGYuX2NyZWF0ZV9wYXRjaChfZ2l0X2RpZmYoJ0hFQUQuLkhFQUReJykpCi0gICAgICAgIHNl
bGYuX3NldHVwX3dlYmtpdHRvb2xzX3NjcmlwdHNfc3ltbGluayhzY20pCi0gICAgICAgIENoZWNr
b3V0KHNjbSkuYXBwbHlfcGF0Y2gocGF0Y2gpCisgICAgICAgIHNlbGYuX3NldHVwX3dlYmtpdHRv
b2xzX3NjcmlwdHNfc3ltbGluayhzZWxmLnNjbSkKKyAgICAgICAgQ2hlY2tvdXQoc2VsZi5zY20p
LmFwcGx5X3BhdGNoKHBhdGNoKQogCiAgICAgZGVmIHRlc3RfY29tbWl0X3RleHRfcGFyc2luZyhz
ZWxmKToKICAgICAgICAgd3JpdGVfaW50b19maWxlX2F0X3BhdGgoJ3Rlc3RfZmlsZScsICdtb3Jl
IHRlc3QgY29udGVudCcpCkBAIC0xMTU5LDEwICsxMTU1LDkgQEAgY2xhc3MgR2l0U1ZOVGVzdChT
Q01UZXN0KToKICAgICBkZWYgdGVzdF9jb21taXRfd2l0aF9tZXNzYWdlX3dvcmtpbmdfY29weV9v
bmx5KHNlbGYpOgogICAgICAgICB3cml0ZV9pbnRvX2ZpbGVfYXRfcGF0aCgndGVzdF9maWxlX2Nv
bW1pdDEnLCAnbW9yZSB0ZXN0IGNvbnRlbnQnKQogICAgICAgICBydW5fY29tbWFuZChbJ2dpdCcs
ICdhZGQnLCAndGVzdF9maWxlX2NvbW1pdDEnXSkKLSAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9z
eXN0ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0aCkKLSAgICAgICAgY29tbWl0X3RleHQgPSBzY20u
Y29tbWl0X3dpdGhfbWVzc2FnZSgieWV0IGFub3RoZXIgdGVzdCBjb21taXQiKQorICAgICAgICBj
b21taXRfdGV4dCA9IHNlbGYuc2NtLmNvbW1pdF93aXRoX21lc3NhZ2UoInlldCBhbm90aGVyIHRl
c3QgY29tbWl0IikKIAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNjbS5zdm5fcmV2aXNpb25f
ZnJvbV9jb21taXRfdGV4dChjb21taXRfdGV4dCksICc2JykKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChzZWxmLnNjbS5zdm5fcmV2aXNpb25fZnJvbV9jb21taXRfdGV4dChjb21taXRfdGV4dCks
ICc2JykKICAgICAgICAgc3ZuX2xvZyA9IHJ1bl9jb21tYW5kKFsnZ2l0JywgJ3N2bicsICdsb2cn
LCAnLS1saW1pdD0xJywgJy0tdmVyYm9zZSddKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmUu
c2VhcmNoKHIndGVzdF9maWxlX2NvbW1pdDEnLCBzdm5fbG9nKSkKIApAQCAtMTE5NiwxMSArMTE5
MSwxMCBAQCBjbGFzcyBHaXRTVk5UZXN0KFNDTVRlc3QpOgogCiAgICAgZGVmIHRlc3RfY29tbWl0
X3dpdGhfbWVzc2FnZShzZWxmKToKICAgICAgICAgc2VsZi5fb25lX2xvY2FsX2NvbW1pdF9wbHVz
X3dvcmtpbmdfY29weV9jaGFuZ2VzKCkKLSAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0o
c2VsZi5naXRfY2hlY2tvdXRfcGF0aCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQW1iaWd1
b3VzQ29tbWl0RXJyb3IsIHNjbS5jb21taXRfd2l0aF9tZXNzYWdlLCAieWV0IGFub3RoZXIgdGVz
dCBjb21taXQiKQotICAgICAgICBjb21taXRfdGV4dCA9IHNjbS5jb21taXRfd2l0aF9tZXNzYWdl
KCJ5ZXQgYW5vdGhlciB0ZXN0IGNvbW1pdCIsIGZvcmNlX3NxdWFzaD1UcnVlKQorICAgICAgICBz
ZWxmLmFzc2VydFJhaXNlcyhBbWJpZ3VvdXNDb21taXRFcnJvciwgc2VsZi5zY20uY29tbWl0X3dp
dGhfbWVzc2FnZSwgInlldCBhbm90aGVyIHRlc3QgY29tbWl0IikKKyAgICAgICAgY29tbWl0X3Rl
eHQgPSBzZWxmLnNjbS5jb21taXRfd2l0aF9tZXNzYWdlKCJ5ZXQgYW5vdGhlciB0ZXN0IGNvbW1p
dCIsIGZvcmNlX3NxdWFzaD1UcnVlKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2NtLnN2
bl9yZXZpc2lvbl9mcm9tX2NvbW1pdF90ZXh0KGNvbW1pdF90ZXh0KSwgJzYnKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHNlbGYuc2NtLnN2bl9yZXZpc2lvbl9mcm9tX2NvbW1pdF90ZXh0KGNv
bW1pdF90ZXh0KSwgJzYnKQogICAgICAgICBzdm5fbG9nID0gcnVuX2NvbW1hbmQoWydnaXQnLCAn
c3ZuJywgJ2xvZycsICctLWxpbWl0PTEnLCAnLS12ZXJib3NlJ10pCiAgICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MicsIHN2bl9sb2cpKQogICAgICAg
ICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNoKHIndGVzdF9maWxlX2NvbW1pdDEnLCBzdm5fbG9n
KSkKQEAgLTEyMDgsOSArMTIwMiw4IEBAIGNsYXNzIEdpdFNWTlRlc3QoU0NNVGVzdCk6CiAgICAg
ZGVmIHRlc3RfY29tbWl0X3dpdGhfbWVzc2FnZV9naXRfY29tbWl0KHNlbGYpOgogICAgICAgICBz
ZWxmLl90d29fbG9jYWxfY29tbWl0cygpCiAKLSAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0
ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0aCkKLSAgICAgICAgY29tbWl0X3RleHQgPSBzY20uY29t
bWl0X3dpdGhfbWVzc2FnZSgiYW5vdGhlciB0ZXN0IGNvbW1pdCIsIGdpdF9jb21taXQ9IkhFQURe
IikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzY20uc3ZuX3JldmlzaW9uX2Zyb21fY29tbWl0
X3RleHQoY29tbWl0X3RleHQpLCAnNicpCisgICAgICAgIGNvbW1pdF90ZXh0ID0gc2VsZi5zY20u
Y29tbWl0X3dpdGhfbWVzc2FnZSgiYW5vdGhlciB0ZXN0IGNvbW1pdCIsIGdpdF9jb21taXQ9IkhF
QUReIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNjbS5zdm5fcmV2aXNpb25fZnJv
bV9jb21taXRfdGV4dChjb21taXRfdGV4dCksICc2JykKIAogICAgICAgICBzdm5fbG9nID0gcnVu
X2NvbW1hbmQoWydnaXQnLCAnc3ZuJywgJ2xvZycsICctLWxpbWl0PTEnLCAnLS12ZXJib3NlJ10p
CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MScs
IHN2bl9sb2cpKQpAQCAtMTIxOSw5ICsxMjEyLDggQEAgY2xhc3MgR2l0U1ZOVGVzdChTQ01UZXN0
KToKICAgICBkZWYgdGVzdF9jb21taXRfd2l0aF9tZXNzYWdlX2dpdF9jb21taXRfcmFuZ2Uoc2Vs
Zik6CiAgICAgICAgIHNlbGYuX3RocmVlX2xvY2FsX2NvbW1pdHMoKQogCi0gICAgICAgIHNjbSA9
IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCi0gICAgICAgIGNvbW1p
dF90ZXh0ID0gc2NtLmNvbW1pdF93aXRoX21lc3NhZ2UoImFub3RoZXIgdGVzdCBjb21taXQiLCBn
aXRfY29tbWl0PSJIRUFEfjIuLkhFQUQiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNjbS5z
dm5fcmV2aXNpb25fZnJvbV9jb21taXRfdGV4dChjb21taXRfdGV4dCksICc2JykKKyAgICAgICAg
Y29tbWl0X3RleHQgPSBzZWxmLnNjbS5jb21taXRfd2l0aF9tZXNzYWdlKCJhbm90aGVyIHRlc3Qg
Y29tbWl0IiwgZ2l0X2NvbW1pdD0iSEVBRH4yLi5IRUFEIikKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChzZWxmLnNjbS5zdm5fcmV2aXNpb25fZnJvbV9jb21taXRfdGV4dChjb21taXRfdGV4dCks
ICc2JykKIAogICAgICAgICBzdm5fbG9nID0gcnVuX2NvbW1hbmQoWydnaXQnLCAnc3ZuJywgJ2xv
ZycsICctLWxpbWl0PTEnLCAnLS12ZXJib3NlJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uo
cmUuc2VhcmNoKHIndGVzdF9maWxlX2NvbW1pdDAnLCBzdm5fbG9nKSkKQEAgLTEyMzAsMjAgKzEy
MjIsMTggQEAgY2xhc3MgR2l0U1ZOVGVzdChTQ01UZXN0KToKIAogICAgIGRlZiB0ZXN0X2NvbW1p
dF93aXRoX21lc3NhZ2Vfb25seV9sb2NhbF9jb21taXQoc2VsZik6CiAgICAgICAgIHNlbGYuX29u
ZV9sb2NhbF9jb21taXQoKQotICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdp
dF9jaGVja291dF9wYXRoKQotICAgICAgICBjb21taXRfdGV4dCA9IHNjbS5jb21taXRfd2l0aF9t
ZXNzYWdlKCJhbm90aGVyIHRlc3QgY29tbWl0IikKKyAgICAgICAgY29tbWl0X3RleHQgPSBzZWxm
LnNjbS5jb21taXRfd2l0aF9tZXNzYWdlKCJhbm90aGVyIHRlc3QgY29tbWl0IikKICAgICAgICAg
c3ZuX2xvZyA9IHJ1bl9jb21tYW5kKFsnZ2l0JywgJ3N2bicsICdsb2cnLCAnLS1saW1pdD0xJywg
Jy0tdmVyYm9zZSddKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNoKHIndGVzdF9m
aWxlX2NvbW1pdDEnLCBzdm5fbG9nKSkKIAogICAgIGRlZiB0ZXN0X2NvbW1pdF93aXRoX21lc3Nh
Z2VfbXVsdGlwbGVfbG9jYWxfY29tbWl0c19hbmRfd29ya2luZ19jb3B5KHNlbGYpOgogICAgICAg
ICBzZWxmLl90d29fbG9jYWxfY29tbWl0cygpCiAgICAgICAgIHdyaXRlX2ludG9fZmlsZV9hdF9w
YXRoKCd0ZXN0X2ZpbGVfY29tbWl0MScsICd3b3JraW5nIGNvcHkgY2hhbmdlJykKLSAgICAgICAg
c2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0aCkKIAotICAgICAg
ICBzZWxmLmFzc2VydFJhaXNlcyhBbWJpZ3VvdXNDb21taXRFcnJvciwgc2NtLmNvbW1pdF93aXRo
X21lc3NhZ2UsICJhbm90aGVyIHRlc3QgY29tbWl0IikKLSAgICAgICAgY29tbWl0X3RleHQgPSBz
Y20uY29tbWl0X3dpdGhfbWVzc2FnZSgiYW5vdGhlciB0ZXN0IGNvbW1pdCIsIGZvcmNlX3NxdWFz
aD1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBbWJpZ3VvdXNDb21taXRFcnJvciwg
c2VsZi5zY20uY29tbWl0X3dpdGhfbWVzc2FnZSwgImFub3RoZXIgdGVzdCBjb21taXQiKQorICAg
ICAgICBjb21taXRfdGV4dCA9IHNlbGYuc2NtLmNvbW1pdF93aXRoX21lc3NhZ2UoImFub3RoZXIg
dGVzdCBjb21taXQiLCBmb3JjZV9zcXVhc2g9VHJ1ZSkKIAotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHNjbS5zdm5fcmV2aXNpb25fZnJvbV9jb21taXRfdGV4dChjb21taXRfdGV4dCksICc2JykK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNjbS5zdm5fcmV2aXNpb25fZnJvbV9jb21t
aXRfdGV4dChjb21taXRfdGV4dCksICc2JykKICAgICAgICAgc3ZuX2xvZyA9IHJ1bl9jb21tYW5k
KFsnZ2l0JywgJ3N2bicsICdsb2cnLCAnLS1saW1pdD0xJywgJy0tdmVyYm9zZSddKQogICAgICAg
ICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNoKHIndGVzdF9maWxlX2NvbW1pdDInLCBzdm5fbG9n
KSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJjaChyJ3Rlc3RfZmlsZV9jb21taXQx
Jywgc3ZuX2xvZykpCkBAIC0xMjUxLDE1ICsxMjQxLDEzIEBAIGNsYXNzIEdpdFNWTlRlc3QoU0NN
VGVzdCk6CiAgICAgZGVmIHRlc3RfY29tbWl0X3dpdGhfbWVzc2FnZV9naXRfY29tbWl0X2FuZF93
b3JraW5nX2NvcHkoc2VsZik6CiAgICAgICAgIHNlbGYuX3R3b19sb2NhbF9jb21taXRzKCkKICAg
ICAgICAgd3JpdGVfaW50b19maWxlX2F0X3BhdGgoJ3Rlc3RfZmlsZV9jb21taXQxJywgJ3dvcmtp
bmcgY29weSBjaGFuZ2UnKQotICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdp
dF9jaGVja291dF9wYXRoKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTY3JpcHRFcnJvciwg
c2NtLmNvbW1pdF93aXRoX21lc3NhZ2UsICJhbm90aGVyIHRlc3QgY29tbWl0IiwgZ2l0X2NvbW1p
dD0iSEVBRF4iKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTY3JpcHRFcnJvciwgc2VsZi5z
Y20uY29tbWl0X3dpdGhfbWVzc2FnZSwgImFub3RoZXIgdGVzdCBjb21taXQiLCBnaXRfY29tbWl0
PSJIRUFEXiIpCiAKICAgICBkZWYgdGVzdF9jb21taXRfd2l0aF9tZXNzYWdlX211bHRpcGxlX2xv
Y2FsX2NvbW1pdHNfYWx3YXlzX3NxdWFzaChzZWxmKToKICAgICAgICAgc2VsZi5fdHdvX2xvY2Fs
X2NvbW1pdHMoKQotICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVj
a291dF9wYXRoKQotICAgICAgICBzY20uX2Fzc2VydF9jYW5fc3F1YXNoID0gbGFtYmRhIHdvcmtp
bmdfZGlyZWN0b3J5X2lzX2NsZWFuOiBUcnVlCi0gICAgICAgIGNvbW1pdF90ZXh0ID0gc2NtLmNv
bW1pdF93aXRoX21lc3NhZ2UoInlldCBhbm90aGVyIHRlc3QgY29tbWl0IikKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChzY20uc3ZuX3JldmlzaW9uX2Zyb21fY29tbWl0X3RleHQoY29tbWl0X3Rl
eHQpLCAnNicpCisgICAgICAgIHNlbGYuc2NtLl9hc3NlcnRfY2FuX3NxdWFzaCA9IGxhbWJkYSB3
b3JraW5nX2RpcmVjdG9yeV9pc19jbGVhbjogVHJ1ZQorICAgICAgICBjb21taXRfdGV4dCA9IHNl
bGYuc2NtLmNvbW1pdF93aXRoX21lc3NhZ2UoInlldCBhbm90aGVyIHRlc3QgY29tbWl0IikKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNjbS5zdm5fcmV2aXNpb25fZnJvbV9jb21taXRf
dGV4dChjb21taXRfdGV4dCksICc2JykKIAogICAgICAgICBzdm5fbG9nID0gcnVuX2NvbW1hbmQo
WydnaXQnLCAnc3ZuJywgJ2xvZycsICctLWxpbWl0PTEnLCAnLS12ZXJib3NlJ10pCiAgICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MicsIHN2bl9sb2cp
KQpAQCAtMTI2NywxMSArMTI1NSwxMCBAQCBjbGFzcyBHaXRTVk5UZXN0KFNDTVRlc3QpOgogCiAg
ICAgZGVmIHRlc3RfY29tbWl0X3dpdGhfbWVzc2FnZV9tdWx0aXBsZV9sb2NhbF9jb21taXRzKHNl
bGYpOgogICAgICAgICBzZWxmLl90d29fbG9jYWxfY29tbWl0cygpCi0gICAgICAgIHNjbSA9IGRl
dGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0UmFpc2VzKEFtYmlndW91c0NvbW1pdEVycm9yLCBzY20uY29tbWl0X3dpdGhfbWVzc2FnZSwg
InlldCBhbm90aGVyIHRlc3QgY29tbWl0IikKLSAgICAgICAgY29tbWl0X3RleHQgPSBzY20uY29t
bWl0X3dpdGhfbWVzc2FnZSgieWV0IGFub3RoZXIgdGVzdCBjb21taXQiLCBmb3JjZV9zcXVhc2g9
VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQW1iaWd1b3VzQ29tbWl0RXJyb3IsIHNl
bGYuc2NtLmNvbW1pdF93aXRoX21lc3NhZ2UsICJ5ZXQgYW5vdGhlciB0ZXN0IGNvbW1pdCIpCisg
ICAgICAgIGNvbW1pdF90ZXh0ID0gc2VsZi5zY20uY29tbWl0X3dpdGhfbWVzc2FnZSgieWV0IGFu
b3RoZXIgdGVzdCBjb21taXQiLCBmb3JjZV9zcXVhc2g9VHJ1ZSkKIAotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHNjbS5zdm5fcmV2aXNpb25fZnJvbV9jb21taXRfdGV4dChjb21taXRfdGV4dCks
ICc2JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNjbS5zdm5fcmV2aXNpb25fZnJv
bV9jb21taXRfdGV4dChjb21taXRfdGV4dCksICc2JykKIAogICAgICAgICBzdm5fbG9nID0gcnVu
X2NvbW1hbmQoWydnaXQnLCAnc3ZuJywgJ2xvZycsICctLWxpbWl0PTEnLCAnLS12ZXJib3NlJ10p
CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0Mics
IHN2bl9sb2cpKQpAQCAtMTI4MCwxMSArMTI2NywxMCBAQCBjbGFzcyBHaXRTVk5UZXN0KFNDTVRl
c3QpOgogICAgIGRlZiB0ZXN0X2NvbW1pdF93aXRoX21lc3NhZ2Vfbm90X3N5bmNlZChzZWxmKToK
ICAgICAgICAgcnVuX2NvbW1hbmQoWydnaXQnLCAnY2hlY2tvdXQnLCAnLWInLCAnbXktYnJhbmNo
JywgJ3RydW5rfjMnXSkKICAgICAgICAgc2VsZi5fdHdvX2xvY2FsX2NvbW1pdHMoKQotICAgICAg
ICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRoKQotICAgICAg
ICBzZWxmLmFzc2VydFJhaXNlcyhBbWJpZ3VvdXNDb21taXRFcnJvciwgc2NtLmNvbW1pdF93aXRo
X21lc3NhZ2UsICJhbm90aGVyIHRlc3QgY29tbWl0IikKLSAgICAgICAgY29tbWl0X3RleHQgPSBz
Y20uY29tbWl0X3dpdGhfbWVzc2FnZSgiYW5vdGhlciB0ZXN0IGNvbW1pdCIsIGZvcmNlX3NxdWFz
aD1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBbWJpZ3VvdXNDb21taXRFcnJvciwg
c2VsZi5zY20uY29tbWl0X3dpdGhfbWVzc2FnZSwgImFub3RoZXIgdGVzdCBjb21taXQiKQorICAg
ICAgICBjb21taXRfdGV4dCA9IHNlbGYuc2NtLmNvbW1pdF93aXRoX21lc3NhZ2UoImFub3RoZXIg
dGVzdCBjb21taXQiLCBmb3JjZV9zcXVhc2g9VHJ1ZSkKIAotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHNjbS5zdm5fcmV2aXNpb25fZnJvbV9jb21taXRfdGV4dChjb21taXRfdGV4dCksICc2JykK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNjbS5zdm5fcmV2aXNpb25fZnJvbV9jb21t
aXRfdGV4dChjb21taXRfdGV4dCksICc2JykKIAogICAgICAgICBzdm5fbG9nID0gcnVuX2NvbW1h
bmQoWydnaXQnLCAnc3ZuJywgJ2xvZycsICctLWxpbWl0PTEnLCAnLS12ZXJib3NlJ10pCiAgICAg
ICAgIHNlbGYuYXNzZXJ0RmFsc2UocmUuc2VhcmNoKHIndGVzdF9maWxlMicsIHN2bl9sb2cpKQpA
QCAtMTI5NSw5ICsxMjgxLDggQEAgY2xhc3MgR2l0U1ZOVGVzdChTQ01UZXN0KToKICAgICAgICAg
cnVuX2NvbW1hbmQoWydnaXQnLCAnY2hlY2tvdXQnLCAnLWInLCAnbXktYnJhbmNoJywgJ3RydW5r
fjMnXSkKICAgICAgICAgc2VsZi5fbG9jYWxfY29tbWl0KCd0ZXN0X2ZpbGUyJywgJ2FzZGYnLCAn
YXNkZiBjb21taXQnKQogCi0gICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0
X2NoZWNrb3V0X3BhdGgpCiAgICAgICAgICMgVGhlcmUncyBhIGNvbmZsaWN0IGJldHdlZW4gdHJ1
bmsgYW5kIHRoZSB0ZXN0X2ZpbGUyIG1vZGlmaWNhdGlvbi4KLSAgICAgICAgc2VsZi5hc3NlcnRS
YWlzZXMoU2NyaXB0RXJyb3IsIHNjbS5jb21taXRfd2l0aF9tZXNzYWdlLCAiYW5vdGhlciB0ZXN0
IGNvbW1pdCIsIGZvcmNlX3NxdWFzaD1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhT
Y3JpcHRFcnJvciwgc2VsZi5zY20uY29tbWl0X3dpdGhfbWVzc2FnZSwgImFub3RoZXIgdGVzdCBj
b21taXQiLCBmb3JjZV9zcXVhc2g9VHJ1ZSkKIAogICAgIGRlZiB0ZXN0X3Vwc3RyZWFtX2JyYW5j
aChzZWxmKToKICAgICAgICAgcnVuX2NvbW1hbmQoWydnaXQnLCAnY2hlY2tvdXQnLCAnLXQnLCAn
LWInLCAnbXktYnJhbmNoJ10pCkBAIC0xMzE4LDE1ICsxMzAzLDEzIEBAIGNsYXNzIEdpdFNWTlRl
c3QoU0NNVGVzdCk6CiAKICAgICBkZWYgdGVzdF9jcmVhdGVfcGF0Y2hfbG9jYWxfcGx1c193b3Jr
aW5nX2NvcHkoc2VsZik6CiAgICAgICAgIHNlbGYuX29uZV9sb2NhbF9jb21taXRfcGx1c193b3Jr
aW5nX2NvcHlfY2hhbmdlcygpCi0gICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYu
Z2l0X2NoZWNrb3V0X3BhdGgpCi0gICAgICAgIHBhdGNoID0gc2NtLmNyZWF0ZV9wYXRjaCgpCisg
ICAgICAgIHBhdGNoID0gc2VsZi5zY20uY3JlYXRlX3BhdGNoKCkKICAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKHJlLnNlYXJjaChyJ3Rlc3RfZmlsZV9jb21taXQxJywgcGF0Y2gpKQogICAgICAgICBz
ZWxmLmFzc2VydFRydWUocmUuc2VhcmNoKHIndGVzdF9maWxlX2NvbW1pdDInLCBwYXRjaCkpCiAK
ICAgICBkZWYgdGVzdF9jcmVhdGVfcGF0Y2goc2VsZik6CiAgICAgICAgIHNlbGYuX29uZV9sb2Nh
bF9jb21taXRfcGx1c193b3JraW5nX2NvcHlfY2hhbmdlcygpCi0gICAgICAgIHNjbSA9IGRldGVj
dF9zY21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCi0gICAgICAgIHBhdGNoID0gc2Nt
LmNyZWF0ZV9wYXRjaCgpCisgICAgICAgIHBhdGNoID0gc2VsZi5zY20uY3JlYXRlX3BhdGNoKCkK
ICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJjaChyJ3Rlc3RfZmlsZV9jb21taXQyJywg
cGF0Y2gpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNoKHIndGVzdF9maWxlX2Nv
bW1pdDEnLCBwYXRjaCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2gocidTdWJ2
ZXJzaW9uIFJldmlzaW9uOiA1JywgcGF0Y2gpKQpAQCAtMTMzNiw3OCArMTMxOSw2OSBAQCBjbGFz
cyBHaXRTVk5UZXN0KFNDTVRlc3QpOgogICAgICAgICBzZWxmLl9vbmVfbG9jYWxfY29tbWl0KCkK
ICAgICAgICAgcnVuX2NvbW1hbmQoWydnaXQnLCAnbWVyZ2UnLCAndHJ1bmsnXSkKIAotICAgICAg
ICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRoKQotICAgICAg
ICBwYXRjaCA9IHNjbS5jcmVhdGVfcGF0Y2goKQorICAgICAgICBwYXRjaCA9IHNlbGYuc2NtLmNy
ZWF0ZV9wYXRjaCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2gocid0ZXN0X2Zp
bGVfY29tbWl0MScsIHBhdGNoKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJjaChy
J1N1YnZlcnNpb24gUmV2aXNpb246IDUnLCBwYXRjaCkpCiAKICAgICBkZWYgdGVzdF9jcmVhdGVf
cGF0Y2hfd2l0aF9jaGFuZ2VkX2ZpbGVzKHNlbGYpOgogICAgICAgICBzZWxmLl9vbmVfbG9jYWxf
Y29tbWl0X3BsdXNfd29ya2luZ19jb3B5X2NoYW5nZXMoKQotICAgICAgICBzY20gPSBkZXRlY3Rf
c2NtX3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRoKQotICAgICAgICBwYXRjaCA9IHNjbS5j
cmVhdGVfcGF0Y2goY2hhbmdlZF9maWxlcz1bJ3Rlc3RfZmlsZV9jb21taXQyJ10pCisgICAgICAg
IHBhdGNoID0gc2VsZi5zY20uY3JlYXRlX3BhdGNoKGNoYW5nZWRfZmlsZXM9Wyd0ZXN0X2ZpbGVf
Y29tbWl0MiddKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNoKHIndGVzdF9maWxl
X2NvbW1pdDInLCBwYXRjaCkpCiAKICAgICBkZWYgdGVzdF9jcmVhdGVfcGF0Y2hfd2l0aF9ybV9h
bmRfY2hhbmdlZF9maWxlcyhzZWxmKToKICAgICAgICAgc2VsZi5fb25lX2xvY2FsX2NvbW1pdF9w
bHVzX3dvcmtpbmdfY29weV9jaGFuZ2VzKCkKLSAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0
ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0aCkKICAgICAgICAgb3MucmVtb3ZlKCd0ZXN0X2ZpbGVf
Y29tbWl0MScpCi0gICAgICAgIHBhdGNoID0gc2NtLmNyZWF0ZV9wYXRjaCgpCi0gICAgICAgIHBh
dGNoX3dpdGhfY2hhbmdlZF9maWxlcyA9IHNjbS5jcmVhdGVfcGF0Y2goY2hhbmdlZF9maWxlcz1b
J3Rlc3RfZmlsZV9jb21taXQxJywgJ3Rlc3RfZmlsZV9jb21taXQyJ10pCisgICAgICAgIHBhdGNo
ID0gc2VsZi5zY20uY3JlYXRlX3BhdGNoKCkKKyAgICAgICAgcGF0Y2hfd2l0aF9jaGFuZ2VkX2Zp
bGVzID0gc2VsZi5zY20uY3JlYXRlX3BhdGNoKGNoYW5nZWRfZmlsZXM9Wyd0ZXN0X2ZpbGVfY29t
bWl0MScsICd0ZXN0X2ZpbGVfY29tbWl0MiddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBh
dGNoLCBwYXRjaF93aXRoX2NoYW5nZWRfZmlsZXMpCiAKICAgICBkZWYgdGVzdF9jcmVhdGVfcGF0
Y2hfZ2l0X2NvbW1pdChzZWxmKToKICAgICAgICAgc2VsZi5fdHdvX2xvY2FsX2NvbW1pdHMoKQot
ICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRoKQot
ICAgICAgICBwYXRjaCA9IHNjbS5jcmVhdGVfcGF0Y2goZ2l0X2NvbW1pdD0iSEVBRF4iKQorICAg
ICAgICBwYXRjaCA9IHNlbGYuc2NtLmNyZWF0ZV9wYXRjaChnaXRfY29tbWl0PSJIRUFEXiIpCiAg
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MScsIHBh
dGNoKSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29t
bWl0MicsIHBhdGNoKSkKIAogICAgIGRlZiB0ZXN0X2NyZWF0ZV9wYXRjaF9naXRfY29tbWl0X3Jh
bmdlKHNlbGYpOgogICAgICAgICBzZWxmLl90aHJlZV9sb2NhbF9jb21taXRzKCkKLSAgICAgICAg
c2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0aCkKLSAgICAgICAg
cGF0Y2ggPSBzY20uY3JlYXRlX3BhdGNoKGdpdF9jb21taXQ9IkhFQUR+Mi4uSEVBRCIpCisgICAg
ICAgIHBhdGNoID0gc2VsZi5zY20uY3JlYXRlX3BhdGNoKGdpdF9jb21taXQ9IkhFQUR+Mi4uSEVB
RCIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocmUuc2VhcmNoKHIndGVzdF9maWxlX2NvbW1p
dDAnLCBwYXRjaCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2gocid0ZXN0X2Zp
bGVfY29tbWl0MicsIHBhdGNoKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJjaChy
J3Rlc3RfZmlsZV9jb21taXQxJywgcGF0Y2gpKQogCiAgICAgZGVmIHRlc3RfY3JlYXRlX3BhdGNo
X3dvcmtpbmdfY29weV9vbmx5KHNlbGYpOgogICAgICAgICBzZWxmLl9vbmVfbG9jYWxfY29tbWl0
X3BsdXNfd29ya2luZ19jb3B5X2NoYW5nZXMoKQotICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5
c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRoKQotICAgICAgICBwYXRjaCA9IHNjbS5jcmVhdGVf
cGF0Y2goZ2l0X2NvbW1pdD0iSEVBRC4uLi4iKQorICAgICAgICBwYXRjaCA9IHNlbGYuc2NtLmNy
ZWF0ZV9wYXRjaChnaXRfY29tbWl0PSJIRUFELi4uLiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFs
c2UocmUuc2VhcmNoKHIndGVzdF9maWxlX2NvbW1pdDEnLCBwYXRjaCkpCiAgICAgICAgIHNlbGYu
YXNzZXJ0VHJ1ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MicsIHBhdGNoKSkKIAogICAg
IGRlZiB0ZXN0X2NyZWF0ZV9wYXRjaF9tdWx0aXBsZV9sb2NhbF9jb21taXRzKHNlbGYpOgogICAg
ICAgICBzZWxmLl90d29fbG9jYWxfY29tbWl0cygpCi0gICAgICAgIHNjbSA9IGRldGVjdF9zY21f
c3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCi0gICAgICAgIHBhdGNoID0gc2NtLmNyZWF0
ZV9wYXRjaCgpCisgICAgICAgIHBhdGNoID0gc2VsZi5zY20uY3JlYXRlX3BhdGNoKCkKICAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJjaChyJ3Rlc3RfZmlsZV9jb21taXQyJywgcGF0Y2gp
KQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNoKHIndGVzdF9maWxlX2NvbW1pdDEn
LCBwYXRjaCkpCiAKICAgICBkZWYgdGVzdF9jcmVhdGVfcGF0Y2hfbm90X3N5bmNlZChzZWxmKToK
ICAgICAgICAgcnVuX2NvbW1hbmQoWydnaXQnLCAnY2hlY2tvdXQnLCAnLWInLCAnbXktYnJhbmNo
JywgJ3RydW5rfjMnXSkKICAgICAgICAgc2VsZi5fdHdvX2xvY2FsX2NvbW1pdHMoKQotICAgICAg
ICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRoKQotICAgICAg
ICBwYXRjaCA9IHNjbS5jcmVhdGVfcGF0Y2goKQorICAgICAgICBwYXRjaCA9IHNlbGYuc2NtLmNy
ZWF0ZV9wYXRjaCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocmUuc2VhcmNoKHIndGVzdF9m
aWxlMicsIHBhdGNoKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJjaChyJ3Rlc3Rf
ZmlsZV9jb21taXQyJywgcGF0Y2gpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNo
KHIndGVzdF9maWxlX2NvbW1pdDEnLCBwYXRjaCkpCiAKICAgICBkZWYgdGVzdF9jcmVhdGVfYmlu
YXJ5X3BhdGNoKHNlbGYpOgogICAgICAgICAjIENyZWF0ZSBhIGdpdCBiaW5hcnkgcGF0Y2ggYW5k
IGNoZWNrIHRoZSBjb250ZW50cy4KLSAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2Vs
Zi5naXRfY2hlY2tvdXRfcGF0aCkKICAgICAgICAgdGVzdF9maWxlX25hbWUgPSAnYmluYXJ5X2Zp
bGUnCiAgICAgICAgIHRlc3RfZmlsZV9wYXRoID0gb3MucGF0aC5qb2luKHNlbGYuZ2l0X2NoZWNr
b3V0X3BhdGgsIHRlc3RfZmlsZV9uYW1lKQogICAgICAgICBmaWxlX2NvbnRlbnRzID0gJycuam9p
bihtYXAoY2hyLCByYW5nZSgyNTYpKSkKICAgICAgICAgd3JpdGVfaW50b19maWxlX2F0X3BhdGgo
dGVzdF9maWxlX3BhdGgsIGZpbGVfY29udGVudHMsIGVuY29kaW5nPU5vbmUpCiAgICAgICAgIHJ1
bl9jb21tYW5kKFsnZ2l0JywgJ2FkZCcsIHRlc3RfZmlsZV9uYW1lXSkKLSAgICAgICAgcGF0Y2gg
PSBzY20uY3JlYXRlX3BhdGNoKCkKKyAgICAgICAgcGF0Y2ggPSBzZWxmLnNjbS5jcmVhdGVfcGF0
Y2goKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNoKHInXG5saXRlcmFsIDBcbics
IHBhdGNoKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJjaChyJ1xubGl0ZXJhbCAy
NTZcbicsIHBhdGNoKSkKIAogICAgICAgICAjIENoZWNrIGlmIHdlIGNhbiBhcHBseSB0aGUgY3Jl
YXRlZCBwYXRjaC4KICAgICAgICAgcnVuX2NvbW1hbmQoWydnaXQnLCAncm0nLCAnLWYnLCB0ZXN0
X2ZpbGVfbmFtZV0pCi0gICAgICAgIHNlbGYuX3NldHVwX3dlYmtpdHRvb2xzX3NjcmlwdHNfc3lt
bGluayhzY20pCisgICAgICAgIHNlbGYuX3NldHVwX3dlYmtpdHRvb2xzX3NjcmlwdHNfc3ltbGlu
ayhzZWxmLnNjbSkKICAgICAgICAgc2VsZi5jaGVja291dC5hcHBseV9wYXRjaChzZWxmLl9jcmVh
dGVfcGF0Y2gocGF0Y2gpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVfY29udGVudHMs
IHJlYWRfZnJvbV9wYXRoKHRlc3RfZmlsZV9wYXRoLCBlbmNvZGluZz1Ob25lKSkKIApAQCAtMTQx
NSw2MSArMTM4OSw1NSBAQCBjbGFzcyBHaXRTVk5UZXN0KFNDTVRlc3QpOgogICAgICAgICB3cml0
ZV9pbnRvX2ZpbGVfYXRfcGF0aCh0ZXN0X2ZpbGVfcGF0aCwgZmlsZV9jb250ZW50cywgZW5jb2Rp
bmc9Tm9uZSkKICAgICAgICAgcnVuX2NvbW1hbmQoWydnaXQnLCAnYWRkJywgdGVzdF9maWxlX25h
bWVdKQogICAgICAgICBydW5fY29tbWFuZChbJ2dpdCcsICdjb21taXQnLCAnLW0nLCAnYmluYXJ5
IGRpZmYnXSkKLSAgICAgICAgcGF0Y2hfZnJvbV9sb2NhbF9jb21taXQgPSBzY20uY3JlYXRlX3Bh
dGNoKCdIRUFEJykKKyAgICAgICAgcGF0Y2hfZnJvbV9sb2NhbF9jb21taXQgPSBzZWxmLnNjbS5j
cmVhdGVfcGF0Y2goJ0hFQUQnKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNoKHIn
XG5saXRlcmFsIDBcbicsIHBhdGNoX2Zyb21fbG9jYWxfY29tbWl0KSkKICAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKHJlLnNlYXJjaChyJ1xubGl0ZXJhbCAyNTZcbicsIHBhdGNoX2Zyb21fbG9jYWxf
Y29tbWl0KSkKIAogICAgIGRlZiB0ZXN0X2NoYW5nZWRfZmlsZXNfbG9jYWxfcGx1c193b3JraW5n
X2NvcHkoc2VsZik6CiAgICAgICAgIHNlbGYuX29uZV9sb2NhbF9jb21taXRfcGx1c193b3JraW5n
X2NvcHlfY2hhbmdlcygpCi0gICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0
X2NoZWNrb3V0X3BhdGgpCi0gICAgICAgIGZpbGVzID0gc2NtLmNoYW5nZWRfZmlsZXMoKQorICAg
ICAgICBmaWxlcyA9IHNlbGYuc2NtLmNoYW5nZWRfZmlsZXMoKQogICAgICAgICBzZWxmLmFzc2Vy
dFRydWUoJ3Rlc3RfZmlsZV9jb21taXQxJyBpbiBmaWxlcykKICAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKCd0ZXN0X2ZpbGVfY29tbWl0MicgaW4gZmlsZXMpCiAKICAgICAgICAgIyB3b3JraW5nIGNv
cHkgc2hvdWxkICpub3QqIGJlIGluIHRoZSBsaXN0LgotICAgICAgICBmaWxlcyA9IHNjbS5jaGFu
Z2VkX2ZpbGVzKCd0cnVuay4uJykKKyAgICAgICAgZmlsZXMgPSBzZWxmLnNjbS5jaGFuZ2VkX2Zp
bGVzKCd0cnVuay4uJykKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCd0ZXN0X2ZpbGVfY29tbWl0
MScgaW4gZmlsZXMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJ3Rlc3RfZmlsZV9jb21taXQy
JyBpbiBmaWxlcykKIAogICAgICAgICAjIHdvcmtpbmcgY29weSAqc2hvdWxkKiBiZSBpbiB0aGUg
bGlzdC4KLSAgICAgICAgZmlsZXMgPSBzY20uY2hhbmdlZF9maWxlcygndHJ1bmsuLi4uJykKKyAg
ICAgICAgZmlsZXMgPSBzZWxmLnNjbS5jaGFuZ2VkX2ZpbGVzKCd0cnVuay4uLi4nKQogICAgICAg
ICBzZWxmLmFzc2VydFRydWUoJ3Rlc3RfZmlsZV9jb21taXQxJyBpbiBmaWxlcykKICAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKCd0ZXN0X2ZpbGVfY29tbWl0MicgaW4gZmlsZXMpCiAKICAgICBkZWYg
dGVzdF9jaGFuZ2VkX2ZpbGVzX2dpdF9jb21taXQoc2VsZik6CiAgICAgICAgIHNlbGYuX3R3b19s
b2NhbF9jb21taXRzKCkKLSAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5naXRf
Y2hlY2tvdXRfcGF0aCkKLSAgICAgICAgZmlsZXMgPSBzY20uY2hhbmdlZF9maWxlcyhnaXRfY29t
bWl0PSJIRUFEXiIpCisgICAgICAgIGZpbGVzID0gc2VsZi5zY20uY2hhbmdlZF9maWxlcyhnaXRf
Y29tbWl0PSJIRUFEXiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgndGVzdF9maWxlX2NvbW1p
dDEnIGluIGZpbGVzKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCd0ZXN0X2ZpbGVfY29tbWl0
MicgaW4gZmlsZXMpCiAKICAgICBkZWYgdGVzdF9jaGFuZ2VkX2ZpbGVzX2dpdF9jb21taXRfcmFu
Z2Uoc2VsZik6CiAgICAgICAgIHNlbGYuX3RocmVlX2xvY2FsX2NvbW1pdHMoKQotICAgICAgICBz
Y20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRoKQotICAgICAgICBm
aWxlcyA9IHNjbS5jaGFuZ2VkX2ZpbGVzKGdpdF9jb21taXQ9IkhFQUR+Mi4uSEVBRCIpCisgICAg
ICAgIGZpbGVzID0gc2VsZi5zY20uY2hhbmdlZF9maWxlcyhnaXRfY29tbWl0PSJIRUFEfjIuLkhF
QUQiKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3Rlc3RfZmlsZV9jb21taXQwJyBub3QgaW4g
ZmlsZXMpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgndGVzdF9maWxlX2NvbW1pdDEnIGluIGZp
bGVzKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3Rlc3RfZmlsZV9jb21taXQyJyBpbiBmaWxl
cykKIAogICAgIGRlZiB0ZXN0X2NoYW5nZWRfZmlsZXNfd29ya2luZ19jb3B5X29ubHkoc2VsZik6
CiAgICAgICAgIHNlbGYuX29uZV9sb2NhbF9jb21taXRfcGx1c193b3JraW5nX2NvcHlfY2hhbmdl
cygpCi0gICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3Bh
dGgpCi0gICAgICAgIGZpbGVzID0gc2NtLmNoYW5nZWRfZmlsZXMoZ2l0X2NvbW1pdD0iSEVBRC4u
Li4iKQorICAgICAgICBmaWxlcyA9IHNlbGYuc2NtLmNoYW5nZWRfZmlsZXMoZ2l0X2NvbW1pdD0i
SEVBRC4uLi4iKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCd0ZXN0X2ZpbGVfY29tbWl0MScg
aW4gZmlsZXMpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgndGVzdF9maWxlX2NvbW1pdDInIGlu
IGZpbGVzKQogCiAgICAgZGVmIHRlc3RfY2hhbmdlZF9maWxlc19tdWx0aXBsZV9sb2NhbF9jb21t
aXRzKHNlbGYpOgogICAgICAgICBzZWxmLl90d29fbG9jYWxfY29tbWl0cygpCi0gICAgICAgIHNj
bSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCi0gICAgICAgIGZp
bGVzID0gc2NtLmNoYW5nZWRfZmlsZXMoKQorICAgICAgICBmaWxlcyA9IHNlbGYuc2NtLmNoYW5n
ZWRfZmlsZXMoKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3Rlc3RfZmlsZV9jb21taXQyJyBp
biBmaWxlcykKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCd0ZXN0X2ZpbGVfY29tbWl0MScgaW4g
ZmlsZXMpCiAKICAgICBkZWYgdGVzdF9jaGFuZ2VkX2ZpbGVzX25vdF9zeW5jZWQoc2VsZik6CiAg
ICAgICAgIHJ1bl9jb21tYW5kKFsnZ2l0JywgJ2NoZWNrb3V0JywgJy1iJywgJ215LWJyYW5jaCcs
ICd0cnVua34zJ10pCiAgICAgICAgIHNlbGYuX3R3b19sb2NhbF9jb21taXRzKCkKLSAgICAgICAg
c2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0aCkKLSAgICAgICAg
ZmlsZXMgPSBzY20uY2hhbmdlZF9maWxlcygpCisgICAgICAgIGZpbGVzID0gc2VsZi5zY20uY2hh
bmdlZF9maWxlcygpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJ3Rlc3RfZmlsZTInIGluIGZp
bGVzKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3Rlc3RfZmlsZV9jb21taXQyJyBpbiBmaWxl
cykKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCd0ZXN0X2ZpbGVfY29tbWl0MScgaW4gZmlsZXMp
CkBAIC0xNDc3LDggKzE0NDUsNyBAQCBjbGFzcyBHaXRTVk5UZXN0KFNDTVRlc3QpOgogICAgIGRl
ZiB0ZXN0X2NoYW5nZWRfZmlsZXNfbm90X3N5bmNlZChzZWxmKToKICAgICAgICAgcnVuX2NvbW1h
bmQoWydnaXQnLCAnY2hlY2tvdXQnLCAnLWInLCAnbXktYnJhbmNoJywgJ3RydW5rfjMnXSkKICAg
ICAgICAgc2VsZi5fdHdvX2xvY2FsX2NvbW1pdHMoKQotICAgICAgICBzY20gPSBkZXRlY3Rfc2Nt
X3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRoKQotICAgICAgICBmaWxlcyA9IHNjbS5jaGFu
Z2VkX2ZpbGVzKCkKKyAgICAgICAgZmlsZXMgPSBzZWxmLnNjbS5jaGFuZ2VkX2ZpbGVzKCkKICAg
ICAgICAgc2VsZi5hc3NlcnRGYWxzZSgndGVzdF9maWxlMicgaW4gZmlsZXMpCiAgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZSgndGVzdF9maWxlX2NvbW1pdDInIGluIGZpbGVzKQogICAgICAgICBzZWxm
LmFzc2VydFRydWUoJ3Rlc3RfZmlsZV9jb21taXQxJyBpbiBmaWxlcykKQEAgLTE1NzgsMTYgKzE1
NDUsMTYgQEAgY2xhc3MgR2l0U1ZOVGVzdChTQ01UZXN0KToKICAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKCItbW9yZSB0ZXN0IGNvbnRlbnQiIGluIGNhY2hlZF9kaWZmKQogCiAgICAgZGVmIHRlc3Rf
ZXhpc3RzKHNlbGYpOgotICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9j
aGVja291dF9wYXRoKQotICAgICAgICBzZWxmLl9zaGFyZWRfdGVzdF9leGlzdHMoc2NtLCBzY20u
Y29tbWl0X2xvY2FsbHlfd2l0aF9tZXNzYWdlKQorICAgICAgICBzZWxmLl9zaGFyZWRfdGVzdF9l
eGlzdHMoc2VsZi5zY20sIHNlbGYuc2NtLmNvbW1pdF9sb2NhbGx5X3dpdGhfbWVzc2FnZSkKIAog
CiAjIFdlIG5lZWQgdG8gc3BsaXQgb2ZmIG1vcmUgb2YgdGhlc2UgU0NNIHRlc3RzIHRvIHVzZSBt
b2NrcyBpbnN0ZWFkIG9mIHRoZSBmaWxlc3lzdGVtLgogIyBUaGlzIGNsYXNzIGlzIHRoZSBmaXJz
dCBwYXJ0IG9mIHRoYXQuCiBjbGFzcyBHaXRUZXN0V2l0aE1vY2sodW5pdHRlc3QuVGVzdENhc2Up
OgogICAgIGRlZiBtYWtlX3NjbShzZWxmLCBsb2dnaW5nX2V4ZWN1dGl2ZT1GYWxzZSk6CisgICAg
ICAgIGN3ZCA9IHRlbXBmaWxlLm1rZHRlbXAoc3VmZml4PSJnaXRfdGVzdF93aXRoX21vY2siKQog
ICAgICAgICAjIFdlIGRvIHRoaXMgc2hvdWxkX2xvZyBkYW5jZSB0byBhdm9pZCBsb2dnaW5nIHdo
ZW4gR2l0Ll9faW5pdF9fIHJ1bnMgc3lzY3RsIG9uIG1hYyB0byBjaGVjayBmb3IgNjQtYml0IHN1
cHBvcnQuCi0gICAgICAgIHNjbSA9IEdpdChjd2Q9Tm9uZSwgZXhlY3V0aXZlPU1vY2tFeGVjdXRp
dmUoKSkKKyAgICAgICAgc2NtID0gR2l0KGN3ZCwgZXhlY3V0aXZlPU1vY2tFeGVjdXRpdmUoKSkK
ICAgICAgICAgc2NtLl9leGVjdXRpdmUuX3Nob3VsZF9sb2cgPSBsb2dnaW5nX2V4ZWN1dGl2ZQog
ICAgICAgICByZXR1cm4gc2NtCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL2NoZWNrb3V0L3NjbS9zdm4ucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9jaGVja291dC9zY20vc3ZuLnB5CmluZGV4IDEzMjNiNzAyYzFiZThkNTE2N2JhODZkMDFkYjNi
YjU1OGM3ZDE0ZGUuLmM4YzBiYzlkOTVlMzk5MzE0MmM0YThkYjE3ZmNlMjhhMTkxYWQzNDkgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zdm4u
cHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3N2bi5w
eQpAQCAtNDMsOCArNDMsMTUgQEAgX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQog
CiAKICMgQSBtaXhpbiBjbGFzcyB0aGF0IHJlcHJlc2VudHMgY29tbW9uIGZ1bmN0aW9uYWxpdHkg
Zm9yIFNWTiBhbmQgR2l0LVNWTi4KLWNsYXNzIFNWTlJlcG9zaXRvcnk6CitjbGFzcyBTVk5SZXBv
c2l0b3J5KG9iamVjdCk6CisgICAgIyBGSVhNRTogVGhlc2UgYmVsb25nIGluIGNvbW1vbi5jb25m
aWcudXJscworICAgIHN2bl9zZXJ2ZXJfaG9zdCA9ICJzdm4ud2Via2l0Lm9yZyIKKyAgICBzdm5f
c2VydmVyX3JlYWxtID0gIjxodHRwOi8vc3ZuLndlYmtpdC5vcmc6ODA+IE1hYyBPUyBGb3JnZSIK
KwogICAgIGRlZiBoYXNfYXV0aG9yaXphdGlvbl9mb3JfcmVhbG0oc2VsZiwgcmVhbG0sIGhvbWVf
ZGlyZWN0b3J5PW9zLmdldGVudigiSE9NRSIpKToKKyAgICAgICAgIyBJZiB3ZSBhcmUgd29ya2lu
ZyBvbiBhIGZpbGU6Ly8gcmVwb3NpdG9yeSByZWFsbSB3aWxsIGJlIE5vbmUKKyAgICAgICAgaWYg
cmVhbG0gaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgICMgaWdub3Jl
IGZhbHNlIHBvc2l0aXZlcyBmb3IgbWV0aG9kcyBpbXBsZW1lbnRlZCBpbiB0aGUgbWl4ZWUgY2xh
c3MuIHB5bGludDogZGlzYWJsZS1tc2c9RTExMDEKICAgICAgICAgIyBBc3N1bWVzIGZpbmQgYW5k
IGdyZXAgYXJlIGluc3RhbGxlZC4KICAgICAgICAgaWYgbm90IG9zLnBhdGguaXNkaXIob3MucGF0
aC5qb2luKGhvbWVfZGlyZWN0b3J5LCAiLnN1YnZlcnNpb24iKSk6CkBAIC02Myw5ICs3MCw2IEBA
IGNsYXNzIFNWTlJlcG9zaXRvcnk6CiAKIAogY2xhc3MgU1ZOKFNDTSwgU1ZOUmVwb3NpdG9yeSk6
Ci0gICAgIyBGSVhNRTogVGhlc2UgYmVsb25nIGluIGNvbW1vbi5jb25maWcudXJscwotICAgIHN2
bl9zZXJ2ZXJfaG9zdCA9ICJzdm4ud2Via2l0Lm9yZyIKLSAgICBzdm5fc2VydmVyX3JlYWxtID0g
IjxodHRwOi8vc3ZuLndlYmtpdC5vcmc6ODA+IE1hYyBPUyBGb3JnZSIKIAogICAgIGV4ZWN1dGFi
bGVfbmFtZSA9ICJzdm4iCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182098</attachid>
            <date>2013-01-10 02:36:13 -0800</date>
            <delta_ts>2013-01-10 18:49:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106420-20130110213316.patch</filename>
            <type>text/plain</type>
            <size>5962</size>
            <attacher name="Tim &apos;mithro&apos; Ansell">mithro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5MzAwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggODA0NjNiZWJlMzJhODVlMDUwZjhhZjU1ZGYxYjE0NGIw
NWQ4MjlmMS4uODBmZDQwNGNhZmY5MzA0ZmQ1ZDM3NjhlMGUzZTdiZGY0ZDUxMGE3MCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3
IEBACisyMDEzLTAxLTA4ICBUaW0gJ21pdGhybycgQW5zZWxsICA8bWl0aHJvQG1pdGhpcy5jb20+
CisKKyAgICAgICAgRml4aW5nIEF1dGhlbnRpY2F0aW9uRXJyb3Igd2hlbiBydW5uaW5nIHRlc3Qt
d2Via2l0cHkgYXMgYSBub24tY29tbWl0dGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2NDIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9z
Y20vZ2l0LnB5OgorICAgICAgICAoR2l0LnB1c2hfbG9jYWxfY29tbWl0c190b19zZXJ2ZXIpOgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zY21fdW5pdHRl
c3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3N2
bi5weToKKyAgICAgICAgKFNWTlJlcG9zaXRvcnkpOgorICAgICAgICAoU1ZOUmVwb3NpdG9yeS5o
YXNfYXV0aG9yaXphdGlvbl9mb3JfcmVhbG0pOgorCisyMDEzLTAxLTEwICBUaW0gJ21pdGhybycg
QW5zZWxsICA8bWl0aHJvQG1pdGhpcy5jb20+CisKKyAgICAgICAgQ2hhbmdpbmcgdGVzdHMgdG8g
YmUgY29uc2lzdGVudCBhbmQgdXNlIHNlbGYuc2NtIHJhdGhlciB0aGVuIHJlY3JlYXRpbmcgdGhl
IHNjbSBvYmplY3QuCisgICAgICAgIChNaXNzZWQgYSBjb3VwbGUpCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY1MzYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9u
L2NoZWNrb3V0L3NjbS9zY21fdW5pdHRlc3QucHk6CisKIDIwMTMtMDEtMTAgIFRpbSAnbWl0aHJv
JyBBbnNlbGwgIDxtaXRocm9AbWl0aGlzLmNvbT4KIAogICAgICAgICBDaGFuZ2luZyB0ZXN0cyB0
byBiZSBjb25zaXN0ZW50IGFuZCB1c2Ugc2VsZi5zY20gcmF0aGVyIHRoZW4gcmVjcmVhdGluZyB0
aGUgc2NtIG9iamVjdC4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L2NoZWNrb3V0L3NjbS9naXQucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVj
a291dC9zY20vZ2l0LnB5CmluZGV4IGU4ZjE0ZGUyYzZlZDJiYWQxNDNmNzZjNTgwMzBmZWI1YzE5
ZmI0ZTAuLjZiOGYzOGY2NjBmZTZhNDFjMjJkNDY3ZDFhN2Y2ZjE3YmIxMjVkNDAgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9naXQucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL2dpdC5weQpAQCAt
NDUyLDggKzQ1Miw4IEBAIGNsYXNzIEdpdChTQ00sIFNWTlJlcG9zaXRvcnkpOgogCiAgICAgZGVm
IHB1c2hfbG9jYWxfY29tbWl0c190b19zZXJ2ZXIoc2VsZiwgdXNlcm5hbWU9Tm9uZSwgcGFzc3dv
cmQ9Tm9uZSk6CiAgICAgICAgIGRjb21taXRfY29tbWFuZCA9IFsnc3ZuJywgJ2Rjb21taXQnXQot
ICAgICAgICBpZiAobm90IHVzZXJuYW1lIG9yIG5vdCBwYXNzd29yZCkgYW5kIG5vdCBzZWxmLmhh
c19hdXRob3JpemF0aW9uX2Zvcl9yZWFsbShTVk4uc3ZuX3NlcnZlcl9yZWFsbSk6Ci0gICAgICAg
ICAgICByYWlzZSBBdXRoZW50aWNhdGlvbkVycm9yKFNWTi5zdm5fc2VydmVyX2hvc3QsIHByb21w
dF9mb3JfcGFzc3dvcmQ9VHJ1ZSkKKyAgICAgICAgaWYgKG5vdCB1c2VybmFtZSBvciBub3QgcGFz
c3dvcmQpIGFuZCBub3Qgc2VsZi5oYXNfYXV0aG9yaXphdGlvbl9mb3JfcmVhbG0oc2VsZi5zdm5f
c2VydmVyX3JlYWxtKToKKyAgICAgICAgICAgIHJhaXNlIEF1dGhlbnRpY2F0aW9uRXJyb3Ioc2Vs
Zi5zdm5fc2VydmVyX2hvc3QsIHByb21wdF9mb3JfcGFzc3dvcmQ9VHJ1ZSkKICAgICAgICAgaWYg
dXNlcm5hbWU6CiAgICAgICAgICAgICBkY29tbWl0X2NvbW1hbmQuZXh0ZW5kKFsiLS11c2VybmFt
ZSIsIHVzZXJuYW1lXSkKICAgICAgICAgb3V0cHV0ID0gc2VsZi5fcnVuX2dpdChkY29tbWl0X2Nv
bW1hbmQsIGVycm9yX2hhbmRsZXI9Y29tbWl0X2Vycm9yX2hhbmRsZXIsIGlucHV0PXBhc3N3b3Jk
KQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2Nt
L3NjbV91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0
L3NjbS9zY21fdW5pdHRlc3QucHkKaW5kZXggNGZlYjQzMGViYzRiOTM1ZjBkNjk2YThmMDQyYzIz
M2ZiOGM4ODI0YS4uZTVkZGNlMGYxYWE3YTViNjYzN2MwMzlhODdjY2M4ZDNmODU5ZDQ4MiAxMDA2
NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3NjbV91
bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9z
Y20vc2NtX3VuaXR0ZXN0LnB5CkBAIC0xMjUsNyArMTI1LDcgQEAgZGVmIF9naXRfZGlmZigqYXJn
cyk6CiAKIAogIyBFeGlzdHMgdG8gc2hhcmUgc3ZuIHJlcG9zaXRvcnkgY3JlYXRpb24gY29kZSBi
ZXR3ZWVuIHRoZSBnaXQgYW5kIHN2biB0ZXN0cwotY2xhc3MgU1ZOVGVzdFJlcG9zaXRvcnk6Citj
bGFzcyBTVk5UZXN0UmVwb3NpdG9yeShvYmplY3QpOgogICAgIEBjbGFzc21ldGhvZAogICAgIGRl
ZiBfc3ZuX2FkZChjbHMsIHBhdGgpOgogICAgICAgICBydW5fY29tbWFuZChbInN2biIsICJhZGQi
LCBwYXRoXSkKQEAgLTYyNiw2ICs2MjYsNyBAQCBjbGFzcyBTVk5UZXN0KFNDTVRlc3QpOgogICAg
ICAgICBTVk5UZXN0UmVwb3NpdG9yeS5zZXR1cChzZWxmKQogICAgICAgICBvcy5jaGRpcihzZWxm
LnN2bl9jaGVja291dF9wYXRoKQogICAgICAgICBzZWxmLnNjbSA9IGRldGVjdF9zY21fc3lzdGVt
KHNlbGYuc3ZuX2NoZWNrb3V0X3BhdGgpCisgICAgICAgIHNlbGYuc2NtLnN2bl9zZXJ2ZXJfcmVh
bG0gPSBOb25lCiAgICAgICAgICMgRm9yIGhpc3RvcmljYWwgcmVhc29ucywgd2UgdGVzdCBzb21l
IGNoZWNrb3V0IGNvZGUgaGVyZSB0b28uCiAgICAgICAgIHNlbGYuY2hlY2tvdXQgPSBDaGVja291
dChzZWxmLnNjbSkKIApAQCAtNzE0LDcgKzcxNSw3IEBAIFExZFRCeDBBQUFCNDJpdGc0R2xnWUpq
R3dNRER5T0RNeE1EdzM0R0JnUUVBSlBRREpBPT0KICAgICAgICAgc2VsZi5fc2hhcmVkX3Rlc3Rf
Y29tbWl0X3dpdGhfbWVzc2FnZSgiZGJhdGVzQHdlYmtpdC5vcmciKQogCiAgICAgZGVmIHRlc3Rf
Y29tbWl0X3dpdGhvdXRfYXV0aG9yaXphdGlvbihzZWxmKToKLSAgICAgICAgc2VsZi5zY20uaGFz
X2F1dGhvcml6YXRpb25fZm9yX3JlYWxtID0gbGFtYmRhIHJlYWxtOiBGYWxzZQorICAgICAgICBz
ZWxmLnNjbS5zdm5fc2VydmVyX3JlYWxtID0gU1ZOLnN2bl9zZXJ2ZXJfcmVhbG0KICAgICAgICAg
c2VsZi5hc3NlcnRSYWlzZXMoQXV0aGVudGljYXRpb25FcnJvciwgc2VsZi5fc2hhcmVkX3Rlc3Rf
Y29tbWl0X3dpdGhfbWVzc2FnZSkKIAogICAgIGRlZiB0ZXN0X2hhc19hdXRob3JpemF0aW9uX2Zv
cl9yZWFsbV91c2luZ19jcmVkZW50aWFsc193aXRoX3Bhc3N0eXBlKHNlbGYpOgpAQCAtMTAwNCw3
ICsxMDA1LDcgQEAgY2xhc3MgR2l0VGVzdChTQ01UZXN0KToKIAogICAgIGRlZiB0ZXN0X2hlYWRf
c3ZuX3JldmlzaW9uKHNlbGYpOgogICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxm
LnVudHJhY2tpbmdfY2hlY2tvdXRfcGF0aCkKLSAgICAgICAgIyBJZiB3ZSBjbG9uZWQgYSBnaXQg
cmVwbyB0cmFja2luZyBhbiBTVkcgcmVwbywgdGhpcyB3b3VsZCBnaXZlIHRoZSBzYW1lIHJlc3Vs
dCBhcworICAgICAgICAjIElmIHdlIGNsb25lZCBhIGdpdCByZXBvIHRyYWNraW5nIGFuIFNWTiBy
ZXBvLCB0aGlzIHdvdWxkIGdpdmUgdGhlIHNhbWUgcmVzdWx0IGFzCiAgICAgICAgICMgc2VsZi5f
c2hhcmVkX3Rlc3RfaGVhZF9zdm5fcmV2aXNpb24oKS4KICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChzY20uaGVhZF9zdm5fcmV2aXNpb24oKSwgJycpCiAKQEAgLTEwMzgsNiArMTAzOSw3IEBAIGNs
YXNzIEdpdFNWTlRlc3QoU0NNVGVzdCk6CiAgICAgICAgIFNWTlRlc3RSZXBvc2l0b3J5LnNldHVw
KHNlbGYpCiAgICAgICAgIHNlbGYuX3NldHVwX2dpdF9jaGVja291dCgpCiAgICAgICAgIHNlbGYu
c2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0aCkKKyAgICAgICAg
c2VsZi5zY20uc3ZuX3NlcnZlcl9yZWFsbSA9IE5vbmUKICAgICAgICAgIyBGb3IgaGlzdG9yaWNh
bCByZWFzb25zLCB3ZSB0ZXN0IHNvbWUgY2hlY2tvdXQgY29kZSBoZXJlIHRvby4KICAgICAgICAg
c2VsZi5jaGVja291dCA9IENoZWNrb3V0KHNlbGYuc2NtKQogCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc3ZuLnB5IGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3N2bi5weQppbmRleCAxMzIzYjcwMmMxYmU4
ZDUxNjdiYTg2ZDAxZGIzYmI1NThjN2QxNGRlLi5jOGMwYmM5ZDk1ZTM5OTMxNDJjNGE4ZGIxN2Zj
ZTI4YTE5MWFkMzQ5IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9j
aGVja291dC9zY20vc3ZuLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2No
ZWNrb3V0L3NjbS9zdm4ucHkKQEAgLTQzLDggKzQzLDE1IEBAIF9sb2cgPSBsb2dnaW5nLmdldExv
Z2dlcihfX25hbWVfXykKIAogCiAjIEEgbWl4aW4gY2xhc3MgdGhhdCByZXByZXNlbnRzIGNvbW1v
biBmdW5jdGlvbmFsaXR5IGZvciBTVk4gYW5kIEdpdC1TVk4uCi1jbGFzcyBTVk5SZXBvc2l0b3J5
OgorY2xhc3MgU1ZOUmVwb3NpdG9yeShvYmplY3QpOgorICAgICMgRklYTUU6IFRoZXNlIGJlbG9u
ZyBpbiBjb21tb24uY29uZmlnLnVybHMKKyAgICBzdm5fc2VydmVyX2hvc3QgPSAic3ZuLndlYmtp
dC5vcmciCisgICAgc3ZuX3NlcnZlcl9yZWFsbSA9ICI8aHR0cDovL3N2bi53ZWJraXQub3JnOjgw
PiBNYWMgT1MgRm9yZ2UiCisKICAgICBkZWYgaGFzX2F1dGhvcml6YXRpb25fZm9yX3JlYWxtKHNl
bGYsIHJlYWxtLCBob21lX2RpcmVjdG9yeT1vcy5nZXRlbnYoIkhPTUUiKSk6CisgICAgICAgICMg
SWYgd2UgYXJlIHdvcmtpbmcgb24gYSBmaWxlOi8vIHJlcG9zaXRvcnkgcmVhbG0gd2lsbCBiZSBO
b25lCisgICAgICAgIGlmIHJlYWxtIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQog
ICAgICAgICAjIGlnbm9yZSBmYWxzZSBwb3NpdGl2ZXMgZm9yIG1ldGhvZHMgaW1wbGVtZW50ZWQg
aW4gdGhlIG1peGVlIGNsYXNzLiBweWxpbnQ6IGRpc2FibGUtbXNnPUUxMTAxCiAgICAgICAgICMg
QXNzdW1lcyBmaW5kIGFuZCBncmVwIGFyZSBpbnN0YWxsZWQuCiAgICAgICAgIGlmIG5vdCBvcy5w
YXRoLmlzZGlyKG9zLnBhdGguam9pbihob21lX2RpcmVjdG9yeSwgIi5zdWJ2ZXJzaW9uIikpOgpA
QCAtNjMsOSArNzAsNiBAQCBjbGFzcyBTVk5SZXBvc2l0b3J5OgogCiAKIGNsYXNzIFNWTihTQ00s
IFNWTlJlcG9zaXRvcnkpOgotICAgICMgRklYTUU6IFRoZXNlIGJlbG9uZyBpbiBjb21tb24uY29u
ZmlnLnVybHMKLSAgICBzdm5fc2VydmVyX2hvc3QgPSAic3ZuLndlYmtpdC5vcmciCi0gICAgc3Zu
X3NlcnZlcl9yZWFsbSA9ICI8aHR0cDovL3N2bi53ZWJraXQub3JnOjgwPiBNYWMgT1MgRm9yZ2Ui
CiAKICAgICBleGVjdXRhYmxlX25hbWUgPSAic3ZuIgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182241</attachid>
            <date>2013-01-10 18:49:54 -0800</date>
            <delta_ts>2013-01-10 19:19:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106420-20130111134656.patch</filename>
            <type>text/plain</type>
            <size>5593</size>
            <attacher name="Tim &apos;mithro&apos; Ansell">mithro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5MzkyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTQ5ZDQwZWE3NWM2MzBhMjllYWU3ZTA4ZGIzZjkwMjEz
ODc5YzFmMi4uZWUwODdhZWQ5NTI3MjUxMGUxMThhYzRkNTFhMjFkMTZlNTg0N2E3YiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3
IEBACisyMDEzLTAxLTA4ICBUaW0gJ21pdGhybycgQW5zZWxsICA8bWl0aHJvQG1pdGhpcy5jb20+
CisKKyAgICAgICAgRml4aW5nIEF1dGhlbnRpY2F0aW9uRXJyb3Igd2hlbiBydW5uaW5nIHRlc3Qt
d2Via2l0cHkgYXMgYSBub24tY29tbWl0dGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2NDIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9z
Y20vZ2l0LnB5OgorICAgICAgICAoR2l0LnB1c2hfbG9jYWxfY29tbWl0c190b19zZXJ2ZXIpOgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zY21fdW5pdHRl
c3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3N2
bi5weToKKyAgICAgICAgKFNWTlJlcG9zaXRvcnkpOgorICAgICAgICAoU1ZOUmVwb3NpdG9yeS5o
YXNfYXV0aG9yaXphdGlvbl9mb3JfcmVhbG0pOgorCiAyMDEzLTAxLTEwICBDaHJpc3RvcGhlIER1
bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+CiAKICAgICAgICAgW0VGTF1bamhidWls
ZF0gVXNlIHRhcmJhbGxzIGZvciBnc3RyZWFtZXIgaW5zdGVhZCBvZiBnaXQKZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9naXQucHkgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vZ2l0LnB5CmluZGV4IGU4ZjE0
ZGUyYzZlZDJiYWQxNDNmNzZjNTgwMzBmZWI1YzE5ZmI0ZTAuLjZiOGYzOGY2NjBmZTZhNDFjMjJk
NDY3ZDFhN2Y2ZjE3YmIxMjVkNDAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL2NoZWNrb3V0L3NjbS9naXQucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9j
b21tb24vY2hlY2tvdXQvc2NtL2dpdC5weQpAQCAtNDUyLDggKzQ1Miw4IEBAIGNsYXNzIEdpdChT
Q00sIFNWTlJlcG9zaXRvcnkpOgogCiAgICAgZGVmIHB1c2hfbG9jYWxfY29tbWl0c190b19zZXJ2
ZXIoc2VsZiwgdXNlcm5hbWU9Tm9uZSwgcGFzc3dvcmQ9Tm9uZSk6CiAgICAgICAgIGRjb21taXRf
Y29tbWFuZCA9IFsnc3ZuJywgJ2Rjb21taXQnXQotICAgICAgICBpZiAobm90IHVzZXJuYW1lIG9y
IG5vdCBwYXNzd29yZCkgYW5kIG5vdCBzZWxmLmhhc19hdXRob3JpemF0aW9uX2Zvcl9yZWFsbShT
Vk4uc3ZuX3NlcnZlcl9yZWFsbSk6Ci0gICAgICAgICAgICByYWlzZSBBdXRoZW50aWNhdGlvbkVy
cm9yKFNWTi5zdm5fc2VydmVyX2hvc3QsIHByb21wdF9mb3JfcGFzc3dvcmQ9VHJ1ZSkKKyAgICAg
ICAgaWYgKG5vdCB1c2VybmFtZSBvciBub3QgcGFzc3dvcmQpIGFuZCBub3Qgc2VsZi5oYXNfYXV0
aG9yaXphdGlvbl9mb3JfcmVhbG0oc2VsZi5zdm5fc2VydmVyX3JlYWxtKToKKyAgICAgICAgICAg
IHJhaXNlIEF1dGhlbnRpY2F0aW9uRXJyb3Ioc2VsZi5zdm5fc2VydmVyX2hvc3QsIHByb21wdF9m
b3JfcGFzc3dvcmQ9VHJ1ZSkKICAgICAgICAgaWYgdXNlcm5hbWU6CiAgICAgICAgICAgICBkY29t
bWl0X2NvbW1hbmQuZXh0ZW5kKFsiLS11c2VybmFtZSIsIHVzZXJuYW1lXSkKICAgICAgICAgb3V0
cHV0ID0gc2VsZi5fcnVuX2dpdChkY29tbWl0X2NvbW1hbmQsIGVycm9yX2hhbmRsZXI9Y29tbWl0
X2Vycm9yX2hhbmRsZXIsIGlucHV0PXBhc3N3b3JkKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3NjbV91bml0dGVzdC5weSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zY21fdW5pdHRlc3QucHkKaW5kZXgg
NGZlYjQzMGViYzRiOTM1ZjBkNjk2YThmMDQyYzIzM2ZiOGM4ODI0YS4uZTVkZGNlMGYxYWE3YTVi
NjYzN2MwMzlhODdjY2M4ZDNmODU5ZDQ4MiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3NjbV91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc2NtX3VuaXR0ZXN0LnB5CkBAIC0xMjUs
NyArMTI1LDcgQEAgZGVmIF9naXRfZGlmZigqYXJncyk6CiAKIAogIyBFeGlzdHMgdG8gc2hhcmUg
c3ZuIHJlcG9zaXRvcnkgY3JlYXRpb24gY29kZSBiZXR3ZWVuIHRoZSBnaXQgYW5kIHN2biB0ZXN0
cwotY2xhc3MgU1ZOVGVzdFJlcG9zaXRvcnk6CitjbGFzcyBTVk5UZXN0UmVwb3NpdG9yeShvYmpl
Y3QpOgogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBfc3ZuX2FkZChjbHMsIHBhdGgpOgogICAg
ICAgICBydW5fY29tbWFuZChbInN2biIsICJhZGQiLCBwYXRoXSkKQEAgLTYyNiw2ICs2MjYsNyBA
QCBjbGFzcyBTVk5UZXN0KFNDTVRlc3QpOgogICAgICAgICBTVk5UZXN0UmVwb3NpdG9yeS5zZXR1
cChzZWxmKQogICAgICAgICBvcy5jaGRpcihzZWxmLnN2bl9jaGVja291dF9wYXRoKQogICAgICAg
ICBzZWxmLnNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuc3ZuX2NoZWNrb3V0X3BhdGgpCisg
ICAgICAgIHNlbGYuc2NtLnN2bl9zZXJ2ZXJfcmVhbG0gPSBOb25lCiAgICAgICAgICMgRm9yIGhp
c3RvcmljYWwgcmVhc29ucywgd2UgdGVzdCBzb21lIGNoZWNrb3V0IGNvZGUgaGVyZSB0b28uCiAg
ICAgICAgIHNlbGYuY2hlY2tvdXQgPSBDaGVja291dChzZWxmLnNjbSkKIApAQCAtNzE0LDcgKzcx
NSw3IEBAIFExZFRCeDBBQUFCNDJpdGc0R2xnWUpqR3dNRER5T0RNeE1EdzM0R0JnUUVBSlBRREpB
PT0KICAgICAgICAgc2VsZi5fc2hhcmVkX3Rlc3RfY29tbWl0X3dpdGhfbWVzc2FnZSgiZGJhdGVz
QHdlYmtpdC5vcmciKQogCiAgICAgZGVmIHRlc3RfY29tbWl0X3dpdGhvdXRfYXV0aG9yaXphdGlv
bihzZWxmKToKLSAgICAgICAgc2VsZi5zY20uaGFzX2F1dGhvcml6YXRpb25fZm9yX3JlYWxtID0g
bGFtYmRhIHJlYWxtOiBGYWxzZQorICAgICAgICBzZWxmLnNjbS5zdm5fc2VydmVyX3JlYWxtID0g
U1ZOLnN2bl9zZXJ2ZXJfcmVhbG0KICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXV0aGVudGlj
YXRpb25FcnJvciwgc2VsZi5fc2hhcmVkX3Rlc3RfY29tbWl0X3dpdGhfbWVzc2FnZSkKIAogICAg
IGRlZiB0ZXN0X2hhc19hdXRob3JpemF0aW9uX2Zvcl9yZWFsbV91c2luZ19jcmVkZW50aWFsc193
aXRoX3Bhc3N0eXBlKHNlbGYpOgpAQCAtMTAwNCw3ICsxMDA1LDcgQEAgY2xhc3MgR2l0VGVzdChT
Q01UZXN0KToKIAogICAgIGRlZiB0ZXN0X2hlYWRfc3ZuX3JldmlzaW9uKHNlbGYpOgogICAgICAg
ICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLnVudHJhY2tpbmdfY2hlY2tvdXRfcGF0aCkK
LSAgICAgICAgIyBJZiB3ZSBjbG9uZWQgYSBnaXQgcmVwbyB0cmFja2luZyBhbiBTVkcgcmVwbywg
dGhpcyB3b3VsZCBnaXZlIHRoZSBzYW1lIHJlc3VsdCBhcworICAgICAgICAjIElmIHdlIGNsb25l
ZCBhIGdpdCByZXBvIHRyYWNraW5nIGFuIFNWTiByZXBvLCB0aGlzIHdvdWxkIGdpdmUgdGhlIHNh
bWUgcmVzdWx0IGFzCiAgICAgICAgICMgc2VsZi5fc2hhcmVkX3Rlc3RfaGVhZF9zdm5fcmV2aXNp
b24oKS4KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzY20uaGVhZF9zdm5fcmV2aXNpb24oKSwg
JycpCiAKQEAgLTEwMzgsNiArMTAzOSw3IEBAIGNsYXNzIEdpdFNWTlRlc3QoU0NNVGVzdCk6CiAg
ICAgICAgIFNWTlRlc3RSZXBvc2l0b3J5LnNldHVwKHNlbGYpCiAgICAgICAgIHNlbGYuX3NldHVw
X2dpdF9jaGVja291dCgpCiAgICAgICAgIHNlbGYuc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2Vs
Zi5naXRfY2hlY2tvdXRfcGF0aCkKKyAgICAgICAgc2VsZi5zY20uc3ZuX3NlcnZlcl9yZWFsbSA9
IE5vbmUKICAgICAgICAgIyBGb3IgaGlzdG9yaWNhbCByZWFzb25zLCB3ZSB0ZXN0IHNvbWUgY2hl
Y2tvdXQgY29kZSBoZXJlIHRvby4KICAgICAgICAgc2VsZi5jaGVja291dCA9IENoZWNrb3V0KHNl
bGYuc2NtKQogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVj
a291dC9zY20vc3ZuLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQv
c2NtL3N2bi5weQppbmRleCAxMzIzYjcwMmMxYmU4ZDUxNjdiYTg2ZDAxZGIzYmI1NThjN2QxNGRl
Li5jOGMwYmM5ZDk1ZTM5OTMxNDJjNGE4ZGIxN2ZjZTI4YTE5MWFkMzQ5IDEwMDY0NAotLS0gYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc3ZuLnB5CisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zdm4ucHkKQEAgLTQzLDgg
KzQzLDE1IEBAIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKIAogCiAjIEEgbWl4
aW4gY2xhc3MgdGhhdCByZXByZXNlbnRzIGNvbW1vbiBmdW5jdGlvbmFsaXR5IGZvciBTVk4gYW5k
IEdpdC1TVk4uCi1jbGFzcyBTVk5SZXBvc2l0b3J5OgorY2xhc3MgU1ZOUmVwb3NpdG9yeShvYmpl
Y3QpOgorICAgICMgRklYTUU6IFRoZXNlIGJlbG9uZyBpbiBjb21tb24uY29uZmlnLnVybHMKKyAg
ICBzdm5fc2VydmVyX2hvc3QgPSAic3ZuLndlYmtpdC5vcmciCisgICAgc3ZuX3NlcnZlcl9yZWFs
bSA9ICI8aHR0cDovL3N2bi53ZWJraXQub3JnOjgwPiBNYWMgT1MgRm9yZ2UiCisKICAgICBkZWYg
aGFzX2F1dGhvcml6YXRpb25fZm9yX3JlYWxtKHNlbGYsIHJlYWxtLCBob21lX2RpcmVjdG9yeT1v
cy5nZXRlbnYoIkhPTUUiKSk6CisgICAgICAgICMgSWYgd2UgYXJlIHdvcmtpbmcgb24gYSBmaWxl
Oi8vIHJlcG9zaXRvcnkgcmVhbG0gd2lsbCBiZSBOb25lCisgICAgICAgIGlmIHJlYWxtIGlzIE5v
bmU6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICAjIGlnbm9yZSBmYWxzZSBwb3Np
dGl2ZXMgZm9yIG1ldGhvZHMgaW1wbGVtZW50ZWQgaW4gdGhlIG1peGVlIGNsYXNzLiBweWxpbnQ6
IGRpc2FibGUtbXNnPUUxMTAxCiAgICAgICAgICMgQXNzdW1lcyBmaW5kIGFuZCBncmVwIGFyZSBp
bnN0YWxsZWQuCiAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZGlyKG9zLnBhdGguam9pbihob21l
X2RpcmVjdG9yeSwgIi5zdWJ2ZXJzaW9uIikpOgpAQCAtNjMsOSArNzAsNiBAQCBjbGFzcyBTVk5S
ZXBvc2l0b3J5OgogCiAKIGNsYXNzIFNWTihTQ00sIFNWTlJlcG9zaXRvcnkpOgotICAgICMgRklY
TUU6IFRoZXNlIGJlbG9uZyBpbiBjb21tb24uY29uZmlnLnVybHMKLSAgICBzdm5fc2VydmVyX2hv
c3QgPSAic3ZuLndlYmtpdC5vcmciCi0gICAgc3ZuX3NlcnZlcl9yZWFsbSA9ICI8aHR0cDovL3N2
bi53ZWJraXQub3JnOjgwPiBNYWMgT1MgRm9yZ2UiCiAKICAgICBleGVjdXRhYmxlX25hbWUgPSAi
c3ZuIgogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>