<?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>68039</bug_id>
          
          <creation_ts>2011-09-13 16:17:19 -0700</creation_ts>
          <short_desc>need command line util to print png checksums</short_desc>
          <delta_ts>2017-07-18 08:29:32 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>ASSIGNED</bug_status>
          <resolution></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>
          
          <blocked>67880</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Pranke">dpranke</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>466644</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-09-13 16:17:19 -0700</bug_when>
    <thetext>it would be nice if we had a command line utility to print/verify the PNG checksums.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466645</commentid>
    <comment_count>1</comment_count>
      <attachid>107250</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-09-13 16:18:00 -0700</bug_when>
    <thetext>Created attachment 107250
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466650</commentid>
    <comment_count>2</comment_count>
      <attachid>107250</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-09-13 16:19:15 -0700</bug_when>
    <thetext>Comment on attachment 107250
Patch

Tools/scripts/read-checksum-from-png</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466675</commentid>
    <comment_count>3</comment_count>
      <attachid>107256</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-09-13 16:36:52 -0700</bug_when>
    <thetext>Created attachment 107256
revise to shell out to ImageDiff</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466676</commentid>
    <comment_count>4</comment_count>
      <attachid>107256</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-09-13 16:38:20 -0700</bug_when>
    <thetext>Comment on attachment 107256
revise to shell out to ImageDiff

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

&gt; Tools/Scripts/read-checksum-from-png:45
&gt; +        proc = port_obj.popen([image_diff_path, &apos;--validate-checksum&apos;, &apos;--tolerance&apos;, str(tolerance)],

I don&apos;t think you want to send --tolerance when validating.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466690</commentid>
    <comment_count>5</comment_count>
      <attachid>107259</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-09-13 16:53:02 -0700</bug_when>
    <thetext>Created attachment 107259
Kinda working patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466716</commentid>
    <comment_count>6</comment_count>
      <attachid>107265</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-09-13 17:16:28 -0700</bug_when>
    <thetext>Created attachment 107265
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466729</commentid>
    <comment_count>7</comment_count>
      <attachid>107265</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-09-13 17:38:53 -0700</bug_when>
    <thetext>Comment on attachment 107265
Patch

R-&apos;ing just so I can clean it up a bit as per our discussion ... there should be some tests and it might be nice if we didn&apos;t have to launch imagediff for each PNG.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466738</commentid>
    <comment_count>8</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-09-13 17:52:35 -0700</bug_when>
    <thetext>Yeah, it&apos;s pretty slow to run on all PNG files (40 minutes and counting...)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466788</commentid>
    <comment_count>9</comment_count>
      <attachid>107276</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-09-13 19:56:43 -0700</bug_when>
    <thetext>Created attachment 107276
clean up, add tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466790</commentid>
    <comment_count>10</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-09-13 19:57:59 -0700</bug_when>
    <thetext>Okay, I&apos;ve uploaded a version with the python coded to my satisfaction. However, when I try to run things with the patched ImageDiff, it just hangs for me (ImageDiff hangs even if I feed in sample data on stdin by hand).

Simon, does this patch work for you?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466817</commentid>
    <comment_count>11</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-09-13 21:16:57 -0700</bug_when>
    <thetext>My patch was working for me on Mac. Of course I only changed Mac&apos;s ImageDiff, so this won&apos;t work on all platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467094</commentid>
    <comment_count>12</comment_count>
      <attachid>107276</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-09-14 09:59:26 -0700</bug_when>
    <thetext>Comment on attachment 107276
clean up, add tests

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

&gt; Tools/Scripts/webkitpy/layout_tests/read_checksum_from_png.py:76
&gt; +def main(argv, stdout, port):
&gt; +    parser = optparse.OptionParser()

Nit: It&apos;s a bit weird to have a main() function in a random .py file.  It might make more sense to push the command line parsing into read-checksum-from-png and put 2 functions here: one for validating and one for just reading the checksum.  It would make the unittests more clear too.  *shrug*

&gt; Tools/Scripts/webkitpy/layout_tests/read_checksum_from_png.py:78
&gt; +    parser.add_option(&apos;-v&apos;, &apos;--validate&apos;, action=&apos;store_true&apos;,
&gt; +                        help=&apos;recompute/validate checksums using ImageDiff&apos;)

Should we only add --validate for the mac port since it&apos;s the only one that supports this mode?

&gt; Tools/Scripts/webkitpy/layout_tests/read_checksum_from_png.py:91
&gt; +            stdout.write(&quot;%s: %s\n&quot; % (filename, expected_checksum))

FWIW, the old output format put the checksum first because they line up nicely (unlike filenames).  It makes it easier to scan the output.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467100</commentid>
    <comment_count>13</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-09-14 10:10:50 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 107276 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=107276&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/read_checksum_from_png.py:76
&gt; &gt; +def main(argv, stdout, port):
&gt; &gt; +    parser = optparse.OptionParser()
&gt; 
&gt; Nit: It&apos;s a bit weird to have a main() function in a random .py file.  It might make more sense to push the command line parsing into read-checksum-from-png and put 2 functions here: one for validating and one for just reading the checksum.  It would make the unittests more clear too.  *shrug*
&gt; 

Yeah, I waffled on this a bit myself. NRWT pushes the main() into the .py module as well. Mostly I wanted to be able to get test coverage of the main routine, and you can&apos;t import the top-level script to test it. I could&apos;ve written integration tests for it, I suppose, but we don&apos;t run those by default.

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/read_checksum_from_png.py:78
&gt; &gt; +    parser.add_option(&apos;-v&apos;, &apos;--validate&apos;, action=&apos;store_true&apos;,
&gt; &gt; +                        help=&apos;recompute/validate checksums using ImageDiff&apos;)
&gt; 
&gt; Should we only add --validate for the mac port since it&apos;s the only one that supports this mode?
&gt;

Good point. I should probably update the help comment as well to indicate that this only works with an Apple Mac build (since even Chromium on Mac won&apos;t work).
 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/read_checksum_from_png.py:91
&gt; &gt; +            stdout.write(&quot;%s: %s\n&quot; % (filename, expected_checksum))
&gt; 
&gt; FWIW, the old output format put the checksum first because they line up nicely (unlike filenames).  It makes it easier to scan the output.

Good idea. Will fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482713</commentid>
    <comment_count>14</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-10-12 14:27:54 -0700</bug_when>
    <thetext>I thought checksums were dead?  Did this get landed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482744</commentid>
    <comment_count>15</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-10-12 14:47:33 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; I thought checksums were dead?  Did this get landed?

The checksum still exist, they&apos;re just embedded directly into the PNGs. This has not been landed yet; it&apos;s still on my to-do plate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601611</commentid>
    <comment_count>16</comment_count>
      <attachid>136991</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-04-12 16:21:36 -0700</bug_when>
    <thetext>Created attachment 136991
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601614</commentid>
    <comment_count>17</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-04-12 16:25:24 -0700</bug_when>
    <thetext>Okay, coming back to this at long last, I&apos;ve re-cast this as a webkit-patch print-* command, and made this a pure-python solution (using a third party library called pypng, which is MIT-licensed). This is slow, but has the advantage that it is (a) dirt simple and (b) does not require N different ImageDiff routines to be updated and plumbed through the Port classes.

Theoretically we could even use this lib and get rid of ImageDiff altogether, although it&apos;s probably too slow for that. I have not benchmarked this code.

We could potentially also use the Python Imaging Library, which does have native implementations of these routines, but I figure if we go that route we should just modify the ImageDiffs.

If this route is preferable, I can write a couple of unit tests and land as-is; otherwise I can re-cast the original implementation into the webkit-patch command framework and land that instead.

WDYT?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601620</commentid>
    <comment_count>18</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-04-12 16:31:38 -0700</bug_when>
    <thetext>This approach seems fine to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601653</commentid>
    <comment_count>19</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-04-12 17:25:02 -0700</bug_when>
    <thetext>Sigh. Unfortunately, it appears that we get a bunch of MISMATCH reports on PNGs that I&apos;m assuming don&apos;t actually mismatch. It is unclear whether it will be more effort to debug what&apos;s going on than to use the ImageDiff based approaches ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616682</commentid>
    <comment_count>20</comment_count>
      <attachid>136991</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-05-04 14:37:54 -0700</bug_when>
    <thetext>Comment on attachment 136991
Patch

clearing r?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618228</commentid>
    <comment_count>21</comment_count>
      <attachid>140650</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-05-07 19:39:25 -0700</bug_when>
    <thetext>Created attachment 140650
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618229</commentid>
    <comment_count>22</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-05-07 19:40:49 -0700</bug_when>
    <thetext>Okay, I&apos;ve abandoned the pure-python approach for now, and replaced the read-checksum-from-png script with a webkit-patch print-checksums command (and added unit tests).

Can someone please take a look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618240</commentid>
    <comment_count>23</comment_count>
      <attachid>140650</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-05-07 19:54:37 -0700</bug_when>
    <thetext>Comment on attachment 140650
Patch

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

&gt; Tools/DumpRenderTree/cg/ImageDiffCG.cpp:174
&gt; +// FIXME: duplicated from PixelDumpSupportCG, but that has dependencies that ImageDiff doesn&apos;t want.

Could you be more explicit?  This seems like a huge amount of code to copy/paste.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618247</commentid>
    <comment_count>24</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-05-07 19:58:32 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; (From update of attachment 140650 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=140650&amp;action=review
&gt; 
&gt; &gt; Tools/DumpRenderTree/cg/ImageDiffCG.cpp:174
&gt; &gt; +// FIXME: duplicated from PixelDumpSupportCG, but that has dependencies that ImageDiff doesn&apos;t want.
&gt; 
&gt; Could you be more explicit?  This seems like a huge amount of code to copy/paste.

That&apos;s up to smfr, I didn&apos;t do that part :).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618248</commentid>
    <comment_count>25</comment_count>
      <attachid>140650</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-05-07 20:00:21 -0700</bug_when>
    <thetext>Comment on attachment 140650
Patch

Attachment 140650 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12649244</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>622105</commentid>
    <comment_count>26</comment_count>
      <attachid>140650</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-05-11 16:32:37 -0700</bug_when>
    <thetext>Comment on attachment 140650
Patch

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

&gt;&gt;&gt; Tools/DumpRenderTree/cg/ImageDiffCG.cpp:174
&gt;&gt;&gt; +// FIXME: duplicated from PixelDumpSupportCG, but that has dependencies that ImageDiff doesn&apos;t want.
&gt;&gt; 
&gt;&gt; Could you be more explicit?  This seems like a huge amount of code to copy/paste.
&gt; 
&gt; That&apos;s up to smfr, I didn&apos;t do that part :).

I can&apos;t recall what dependencies I was talking about (if indeed I wrote that comment).

But it seems that we could call computeMD5HashStringForBitmapContext() here and share code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660082</commentid>
    <comment_count>27</comment_count>
      <attachid>140650</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-06-28 19:51:31 -0700</bug_when>
    <thetext>Comment on attachment 140650
Patch

clearing r? on this ... i&apos;ll get back to it at some point with the cleanups</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669681</commentid>
    <comment_count>28</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-07-13 19:30:19 -0700</bug_when>
    <thetext>resetting the owner in case someone else wants to take a look, as these bugs aren&apos;t on my immediate to-do list.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107250</attachid>
            <date>2011-09-13 16:18:00 -0700</date>
            <delta_ts>2011-09-13 16:36:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68039-20110913161759.patch</filename>
            <type>text/plain</type>
            <size>1772</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTQ5NzQKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiNWNlMDI1OTIyYmFmOTlhZTNiNDNkNWRmNmIyNzYxYmFk
MzM4MTk3Li40MDA1YjA3YTRmZGI0NDFjZjE0YWEzZjc5NDQ4ZWY5ODNjMGU2ODE3IDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIg
QEAKKzIwMTEtMDktMTMgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgTW9kaWZ5IHRoZSByZWFkX2NoZWNrc3VtX2Zyb21fcG5nIHNjcmlwdCBzbyBpdCBjYW4g
YmUgdXNlZCBmcm9tIHRoZSBjb21tYW5kIGxpbmUgdG8gZXh0cmFjdCBjaGVja3N1bXMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODAzOQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcmVhZF9jaGVja3N1bV9mcm9tX3BuZy5weToKKwogMjAxMS0wOS0x
MiAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVzaHVmZmxlIHNv
bWUgY29kZSBpbiBXZWJLaXREcml2ZXIuX3JlYWRfYmxvY2sgaW4gcHJlcGFyYXRpb24gZm9yIHJl
YWRpbmcgc3RkZXJyL3N0ZG91dCBzZXBhcmF0ZWx5CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9yZWFkX2NoZWNrc3VtX2Zyb21fcG5nLnB5IGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcmVhZF9jaGVja3N1bV9mcm9tX3BuZy5weQpp
bmRleCA3MGEwNTAyYjczYmY3NThlZGE1MTY0MmZjMTZmOWI5YzFlZDRkMGFmLi45ZDJiZTA5MmYw
MTcyNzAwNDUxNTY2MWE4ZTQ0ZjBjYjg2ODM0YzM0IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9yZWFkX2NoZWNrc3VtX2Zyb21fcG5nLnB5CisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3JlYWRfY2hlY2tzdW1fZnJvbV9wbmcu
cHkKQEAgLTI2LDcgKzI2LDcgQEAKICMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogIyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLQoraW1wb3J0IHN5cwogCiBkZWYgcmVhZF9jaGVja3N1bShmaWxlaGFuZGxlKToK
ICAgICAjIFdlIGV4cGVjdCB0aGUgY29tbWVudCB0byBiZSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRo
ZSBmaWxlLgpAQCAtMzgsMyArMzgsOSBAQCBkZWYgcmVhZF9jaGVja3N1bShmaWxlaGFuZGxlKToK
IAogICAgIGNoZWNrc3VtX3BvcyA9IGNvbW1lbnRfcG9zICsgbGVuKGNvbW1lbnRfa2V5KQogICAg
IHJldHVybiBkYXRhW2NoZWNrc3VtX3BvczpjaGVja3N1bV9wb3MgKyAzMl0KKworCitpZiBfX25h
bWVfXyA9PSAnX19tYWluX18nOgorICAgIGZvciBmaWxlbmFtZSBpbiBzeXMuYXJndlsxOl06Cisg
ICAgICAgIGZpbGVoYW5kbGUgPSBvcGVuKGZpbGVuYW1lKQorICAgICAgICBwcmludCAiY2hlY2tz
dW0gZm9yICVzIGlzICVzIiAlIChmaWxlbmFtZSwgc3RyKHJlYWRfY2hlY2tzdW0oZmlsZWhhbmRs
ZSkpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107256</attachid>
            <date>2011-09-13 16:36:52 -0700</date>
            <delta_ts>2011-09-13 17:16:21 -0700</delta_ts>
            <desc>revise to shell out to ImageDiff</desc>
            <filename>bug-68039-20110913163651.patch</filename>
            <type>text/plain</type>
            <size>2434</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTQ5NzQKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiNWNlMDI1OTIyYmFmOTlhZTNiNDNkNWRmNmIyNzYxYmFk
MzM4MTk3Li40MDA1YjA3YTRmZGI0NDFjZjE0YWEzZjc5NDQ4ZWY5ODNjMGU2ODE3IDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIg
QEAKKzIwMTEtMDktMTMgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgTW9kaWZ5IHRoZSByZWFkX2NoZWNrc3VtX2Zyb21fcG5nIHNjcmlwdCBzbyBpdCBjYW4g
YmUgdXNlZCBmcm9tIHRoZSBjb21tYW5kIGxpbmUgdG8gZXh0cmFjdCBjaGVja3N1bXMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODAzOQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcmVhZF9jaGVja3N1bV9mcm9tX3BuZy5weToKKwogMjAxMS0wOS0x
MiAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVzaHVmZmxlIHNv
bWUgY29kZSBpbiBXZWJLaXREcml2ZXIuX3JlYWRfYmxvY2sgaW4gcHJlcGFyYXRpb24gZm9yIHJl
YWRpbmcgc3RkZXJyL3N0ZG91dCBzZXBhcmF0ZWx5CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L3JlYWQtY2hlY2tzdW0tZnJvbS1wbmcgYi9Ub29scy9TY3JpcHRzL3JlYWQtY2hlY2tzdW0tZnJv
bS1wbmcKaW5kZXggYWIwOGIyNTNiOWM3MzBmMjJiOThjYTQxZmY2NjM4ODQ1NTExZDZjZi4uMjQ1
MjljZmIwM2NlNmM4OTI1MTUzYzdhNzJlMDEyODNkNTRiMTdmZCAxMDA3NTUKLS0tIGEvVG9vbHMv
U2NyaXB0cy9yZWFkLWNoZWNrc3VtLWZyb20tcG5nCisrKyBiL1Rvb2xzL1NjcmlwdHMvcmVhZC1j
aGVja3N1bS1mcm9tLXBuZwpAQCAtMjgsMTIgKzI4LDM1IEBACiAjIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIGZy
b20gX19mdXR1cmVfXyBpbXBvcnQgd2l0aF9zdGF0ZW1lbnQKKworaW1wb3J0IG9wdHBhcnNlCiBp
bXBvcnQgc3lzCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IGV4ZWN1dGl2ZQor
ZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMgaW1wb3J0IHBvcnQKIAogZnJvbSB3ZWJraXRweS5s
YXlvdXRfdGVzdHMgaW1wb3J0IHJlYWRfY2hlY2tzdW1fZnJvbV9wbmcKIAorZGVmIHZhbGlkYXRl
X2NoZWNrc3VtX3VzaW5nX2ltYWdlX2RpZmYoZmlsZW5hbWUpOgorICAgIHBvcnRfb2JqID0gcG9y
dC5nZXQoKQorICAgIGltYWdlX2RpZmZfcGF0aCA9IHBvcnRfb2JqLl9wYXRoX3RvX2ltYWdlX2Rp
ZmYoKQorICAgIHRvbGVyYW5jZSA9IDAuMQorICAgIHdpdGggb3BlbihmaWxlbmFtZSwgJ3InKSBh
cyBmaWxlaGFuZGxlOgorICAgICAgICBpbWFnZV9jb250ZW50cyA9IGZpbGVoYW5kbGUucmVhZCgp
CisgICAgICAgIHByb2MgPSBwb3J0X29iai5wb3BlbihbaW1hZ2VfZGlmZl9wYXRoLCAnLS12YWxp
ZGF0ZS1jaGVja3N1bScsICctLXRvbGVyYW5jZScsIHN0cih0b2xlcmFuY2UpXSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0ZGluPWV4ZWN1dGl2ZS5QSVBFLCBzdGRvdXQ9c3lzLnN0
ZG91dCkKKyAgICAgICAgcHJvYy5zdGRpbi53cml0ZSgnQ29udGVudC1MZW5ndGg6ICVkXG4lcycg
JSAobGVuKGltYWdlX2NvbnRlbnRzKSwgaW1hZ2VfY29udGVudHMpKQorICAgICAgICBwcm9jLnN0
ZGluLmNsb3NlKCkKKyAgICAgICAgIyBQcmVzdW1hYmx5IHRoZSB2YWxpZGF0ZWQgY2hlY2tzdW0g
d3JpdGVzIHRvIHN0ZG91dC4KKyAgICAgICAgcHJvYy53YWl0KCkKIAogaWYgJ19fbWFpbl9fJyA9
PSBfX25hbWVfXzoKKyAgICBwYXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIoKQorICAgIHBh
cnNlci5hZGRfb3B0aW9uKCctdicsICctLXZhbGlkYXRlJywgYWN0aW9uPSdzdG9yZV90cnVlJywK
KyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdyZWNvbXB1dGUvdmFsaWRhdGUgY2hlY2tzdW1z
IHVzaW5nIEltYWdlRGlmZicpCisgICAgb3B0aW9ucywgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdz
KCkKKwogICAgIGZvciBmaWxlbmFtZSBpbiBzeXMuYXJndlsxOl06CiAgICAgICAgIHdpdGggb3Bl
bihmaWxlbmFtZSwgJ3InKSBhcyBmaWxlaGFuZGxlOgogICAgICAgICAgICAgcHJpbnQgIiVzOiAl
cyIgJSAocmVhZF9jaGVja3N1bV9mcm9tX3BuZy5yZWFkX2NoZWNrc3VtKGZpbGVoYW5kbGUpLCBm
aWxlbmFtZSkKKyAgICAgICAgaWYgb3B0aW9ucy52YWxpZGF0ZToKKyAgICAgICAgICAgIHZhbGlk
YXRlX2NoZWNrc3VtX3VzaW5nX2ltYWdlX2RpZmYoZmlsZW5hbWUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107259</attachid>
            <date>2011-09-13 16:53:02 -0700</date>
            <delta_ts>2011-09-13 17:16:24 -0700</delta_ts>
            <desc>Kinda working patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>1673</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvcmVhZC1jaGVja3N1bS1mcm9tLXBuZyBiL1Rvb2xz
L1NjcmlwdHMvcmVhZC1jaGVja3N1bS1mcm9tLXBuZwppbmRleCBhYjA4YjI1Li41MzQ2NTA1IDEw
MDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3JlYWQtY2hlY2tzdW0tZnJvbS1wbmcKKysrIGIvVG9v
bHMvU2NyaXB0cy9yZWFkLWNoZWNrc3VtLWZyb20tcG5nCkBAIC0yOCwxMiArMjgsMzcgQEAKICMg
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KIAogZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB3aXRoX3N0YXRlbWVudAorCitp
bXBvcnQgb3B0cGFyc2UKK2ltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lzCiAKK2Zyb20gd2Vi
a2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgZXhlY3V0aXZlCitmcm9tIHdlYmtpdHB5LmxheW91
dF90ZXN0cyBpbXBvcnQgcG9ydAorCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cyBpbXBvcnQg
cmVhZF9jaGVja3N1bV9mcm9tX3BuZwogCitkZWYgdmFsaWRhdGVfY2hlY2tzdW1fdXNpbmdfaW1h
Z2VfZGlmZihmaWxlbmFtZSk6CisgICAgcG9ydF9vYmogPSBwb3J0LmdldCgpCisgICAgaW1hZ2Vf
ZGlmZl9wYXRoID0gcG9ydF9vYmouX3BhdGhfdG9faW1hZ2VfZGlmZigpCisgICAgdG9sZXJhbmNl
ID0gMC4xCisgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAncicpIGFzIGZpbGVoYW5kbGU6CisgICAg
ICAgIGltYWdlX2NvbnRlbnRzID0gZmlsZWhhbmRsZS5yZWFkKCkKKyAgICAgICAgcHJvYyA9IHN1
YnByb2Nlc3MuUG9wZW4oW2ltYWdlX2RpZmZfcGF0aCwgJy0tdmFsaWRhdGUtY2hlY2tzdW0nXSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGluPXN1YnByb2Nlc3MuUElQRSwgc3Rk
b3V0PXN5cy5zdGRvdXQpCisgICAgICAgIHByb2Muc3RkaW4ud3JpdGUoJ0NvbnRlbnQtTGVuZ3Ro
OiAlZFxuJXMnICUgKGxlbihpbWFnZV9jb250ZW50cyksIGltYWdlX2NvbnRlbnRzKSkKKyAgICAg
ICAgcHJvYy5zdGRpbi5jbG9zZSgpCisgICAgICAgICMgUHJlc3VtYWJseSB0aGUgdmFsaWRhdGVk
IGNoZWNrc3VtIHdyaXRlcyB0byBzdGRvdXQuCisgICAgICAgIHByb2Mud2FpdCgpCiAKIGlmICdf
X21haW5fXycgPT0gX19uYW1lX186Ci0gICAgZm9yIGZpbGVuYW1lIGluIHN5cy5hcmd2WzE6XToK
KyAgICBwYXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIoKQorICAgIHBhcnNlci5hZGRfb3B0
aW9uKCctdicsICctLXZhbGlkYXRlJywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAg
ICAgICAgICAgICBoZWxwPSdyZWNvbXB1dGUvdmFsaWRhdGUgY2hlY2tzdW1zIHVzaW5nIEltYWdl
RGlmZicpCisgICAgb3B0aW9ucywgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKKworICAgIGZv
ciBmaWxlbmFtZSBpbiBhcmdzOgogICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICdyJykgYXMg
ZmlsZWhhbmRsZToKICAgICAgICAgICAgIHByaW50ICIlczogJXMiICUgKHJlYWRfY2hlY2tzdW1f
ZnJvbV9wbmcucmVhZF9jaGVja3N1bShmaWxlaGFuZGxlKSwgZmlsZW5hbWUpCisgICAgICAgIGlm
IG9wdGlvbnMudmFsaWRhdGU6CisgICAgICAgICAgICB2YWxpZGF0ZV9jaGVja3N1bV91c2luZ19p
bWFnZV9kaWZmKGZpbGVuYW1lKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107265</attachid>
            <date>2011-09-13 17:16:28 -0700</date>
            <delta_ts>2011-09-13 19:56:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68039-20110913171626.patch</filename>
            <type>text/plain</type>
            <size>8145</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTQ5NjMKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCAyZGM4YTk3ODMxMDkxYWVkODg2OGY5YTRmNDkxOGJhMjIy
NzY2NjY2Li5lM2QzOTRkODg5NGFkZTlhMTQ2ODhmNTE1ZWJkNDZkNGYyZTM3MDBiIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYg
QEAKKzIwMTEtMDktMTMgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisK
KyAgICAgICAgTmVlZCBjb21tYW5kIGxpbmUgdXRpbCB0byBwcmludCBwbmcgY2hlY2tzdW1zCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODAzOQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgQWRk
IGEgLS1jb21wdXRlLWNoZWNrc3VtIG9wdGlvbiB0byBJbWFnZURpZmYgZm9yIE1hYworICAgICAg
ICB0aGF0IHdpbGwgY29tcHV0ZSBhIGNoZWNrc3VtIGZyb20gdGhlIGltYWdlIGRhdGEsIGFuZAor
ICAgICAgICBzcGl0IGl0IG91dCB0byBzdGRvdXQuCisgICAgICAgIAorICAgICAgICBFbmhhbmNl
IHJlYWQtY2hlY2tzdW0tZnJvbS1wbmcgdG8gY2FsbCBJbWFnZURpZmYgd2l0aAorICAgICAgICB0
aGlzIGZsYWcsIGFuZCBwcmludCBvdXQgd2hldGhlciB0aGUgY29tcHV0ZWQgaGFzaAorICAgICAg
ICBtYXRjaGVzIHRoZSBvbmUgc2F2ZWQgaW4gdGhlIGltYWdlLgorICAgICAgICAKKyAgICAgICAg
Rml4IGEgc3BlbGxpbmcgZXJyb3IgaW4gYXBwbGUucHkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9jZy9JbWFnZURpZmZDRy5jcHA6CisgICAgICAgIChjb21wdXRlTUQ1SGFzaFN0cmluZ0Zv
ckltYWdlKToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIFNjcmlwdHMvcmVhZC1jaGVja3N1
bS1mcm9tLXBuZzoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2FwcGxlLnB5OgorCiAyMDExLTA5LTEyICBCYWxhenMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0
Lm9yZz4KIAogICAgICAgICBbUXRdW1dLMl0gV2ViS2l0VGVzdFJ1bm5lciBkb2VzIG5vdCBwcm9k
dWNlIGNyYXNoIGxvZ3MKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2NnL0ltYWdl
RGlmZkNHLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2NnL0ltYWdlRGlmZkNHLmNwcAppbmRl
eCBiNGY0MzJmOGExNTdjODE5MWE0OTBiYTk5OTEyMWVhMzM0ZTdjNmFjLi5mM2I3Y2ZhNzc1YWRj
ZjQ0ZTg0Yzk0ODM3MDM2ZWI4OGRkNTM4ZjUxIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jZy9JbWFnZURpZmZDRy5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2cvSW1h
Z2VEaWZmQ0cuY3BwCkBAIC00Nyw2ICs0Nyw4IEBACiAjaW5jbHVkZSA8SW1hZ2VJTy9DR0ltYWdl
RGVzdGluYXRpb24uaD4KIAogI2lmIFBMQVRGT1JNKE1BQykKKyNkZWZpbmUgQ09NTU9OX0RJR0VT
VF9GT1JfT1BFTlNTTAorI2luY2x1ZGUgPENvbW1vbkNyeXB0by9Db21tb25EaWdlc3QuaD4KICNp
bmNsdWRlIDxMYXVuY2hTZXJ2aWNlcy9VVENvcmVUeXBlcy5oPgogI2VuZGlmCiAKQEAgLTE2Niw2
ICsxNjgsNDkgQEAgc3RhdGljIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjcmVhdGVEaWZmZXJlbmNl
SW1hZ2UoQ0dJbWFnZVJlZiBiYXNlSW1hZ2UsIENHSW1hZ2UKICAgICByZXR1cm4gZGlmZkltYWdl
OwogfQogCisvLyBGSVhNRTogZHVwbGljYXRlZCBmcm9tIFBpeGVsRHVtcFN1cHBvcnRDRywgYnV0
IHRoYXQgaGFzIGRlcGVuZGVuY2llcyB0aGF0IEltYWdlRGlmZiBkb2Vzbid0IHdhbnQuCit2b2lk
IGNvbXB1dGVNRDVIYXNoU3RyaW5nRm9ySW1hZ2UoQ0dJbWFnZVJlZiBpbWFnZSwgY2hhciBoYXNo
U3RyaW5nWzMzXSkKK3sKKyAgICBzaXplX3QgcGl4ZWxzV2lkZSA9IENHSW1hZ2VHZXRXaWR0aChp
bWFnZSk7CisgICAgc2l6ZV90IHBpeGVsc0hpZ2ggPSBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlKTsK
KyAgICBzaXplX3QgYnl0ZXNQZXJSb3cgPSAoNCAqIHBpeGVsc1dpZGUgKyA2MykgJiB+NjM7Cisg
ICAgdm9pZCogYnVmZmVyID0gY2FsbG9jKHBpeGVsc0hpZ2gsIGJ5dGVzUGVyUm93KTsKKworICAg
IENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlUkdC
KCk7CisgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBDR0JpdG1hcENvbnRleHRDcmVhdGUoYnVm
ZmVyLCBwaXhlbHNXaWRlLCBwaXhlbHNIaWdoLCA4LCBieXRlc1BlclJvdywgY29sb3JTcGFjZSwg
a0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMySG9z
dCk7CisgICAgQ0dDb2xvclNwYWNlUmVsZWFzZShjb2xvclNwYWNlKTsKKworICAgIENHQ29udGV4
dERyYXdJbWFnZShjb250ZXh0LCBDR1JlY3RNYWtlKDAsIDAsIHBpeGVsc1dpZGUsIHBpeGVsc0hp
Z2gpLCBpbWFnZSk7CisKKyAgICAvLyBXZSBuZWVkIHRvIHN3YXAgdGhlIGJ5dGVzIHRvIGVuc3Vy
ZSBjb25zaXN0ZW50IGhhc2hlcyBpbmRlcGVuZGVudGx5IG9mIGVuZGlhbm5lc3MKKyAgICBNRDVf
Q1RYIG1kNUNvbnRleHQ7CisgICAgTUQ1X0luaXQoJm1kNUNvbnRleHQpOworICAgIHVuc2lnbmVk
IGNoYXIqIGJpdG1hcERhdGEgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4oQ0dCaXRtYXBD
b250ZXh0R2V0RGF0YShjb250ZXh0KSk7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIGlmICgoQ0dC
aXRtYXBDb250ZXh0R2V0Qml0bWFwSW5mbyhjb250ZXh0KSAmIGtDR0JpdG1hcEJ5dGVPcmRlck1h
c2spID09IGtDR0JpdG1hcEJ5dGVPcmRlcjMyQmlnKSB7CisgICAgICAgIGZvciAodW5zaWduZWQg
cm93ID0gMDsgcm93IDwgcGl4ZWxzSGlnaDsgcm93KyspIHsKKyAgICAgICAgICAgIHVpbnQzMl90
IGJ1ZmZlcltwaXhlbHNXaWRlXTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgY29sdW1uID0g
MDsgY29sdW1uIDwgcGl4ZWxzV2lkZTsgY29sdW1uKyspCisgICAgICAgICAgICAgICAgYnVmZmVy
W2NvbHVtbl0gPSBPU1JlYWRMaXR0bGVJbnQzMihiaXRtYXBEYXRhLCA0ICogY29sdW1uKTsKKyAg
ICAgICAgICAgIE1ENV9VcGRhdGUoJm1kNUNvbnRleHQsIGJ1ZmZlciwgNCAqIHBpeGVsc1dpZGUp
OworICAgICAgICAgICAgYml0bWFwRGF0YSArPSBieXRlc1BlclJvdzsKKyAgICAgICAgfQorICAg
IH0gZWxzZQorI2VuZGlmCisgICAgeworICAgICAgICBmb3IgKHVuc2lnbmVkIHJvdyA9IDA7IHJv
dyA8IHBpeGVsc0hpZ2g7IHJvdysrKSB7CisgICAgICAgICAgICBNRDVfVXBkYXRlKCZtZDVDb250
ZXh0LCBiaXRtYXBEYXRhLCA0ICogcGl4ZWxzV2lkZSk7CisgICAgICAgICAgICBiaXRtYXBEYXRh
ICs9IGJ5dGVzUGVyUm93OworICAgICAgICB9CisgICAgfQorICAgIHVuc2lnbmVkIGNoYXIgaGFz
aFsxNl07CisgICAgTUQ1X0ZpbmFsKGhhc2gsICZtZDVDb250ZXh0KTsKKworICAgIGhhc2hTdHJp
bmdbMF0gPSAnXDAnOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTY7IGkrKykKKyAgICAgICAg
c25wcmludGYoaGFzaFN0cmluZywgMzMsICIlcyUwMngiLCBoYXNoU3RyaW5nLCBoYXNoW2ldKTsK
K30KKwogc3RhdGljIGlubGluZSBib29sIGltYWdlSGFzQWxwaGEoQ0dJbWFnZVJlZiBpbWFnZSkK
IHsKICAgICBDR0ltYWdlQWxwaGFJbmZvIGluZm8gPSBDR0ltYWdlR2V0QWxwaGFJbmZvKGltYWdl
KTsKQEAgLTE4MCwxNiArMjI1LDE3IEBAIGludCBtYWluKGludCBhcmdjLCBjb25zdCBjaGFyKiBh
cmd2W10pCiAgICAgX3NldG1vZGUoMSwgX09fQklOQVJZKTsKICNlbmRpZgogCi0gICAgZmxvYXQg
dG9sZXJhbmNlID0gMC4wZjsKLQorICAgIGZsb2F0IHRvbGVyYW5jZSA9IDA7CisgICAgYm9vbCBj
b21wdXRlQ2hlY2tzdW0gPSBmYWxzZTsKKyAgICAKICAgICBmb3IgKGludCBpID0gMTsgaSA8IGFy
Z2M7ICsraSkgewogICAgICAgICBpZiAoIXN0cmNtcChhcmd2W2ldLCAiLXQiKSB8fCAhc3RyY21w
KGFyZ3ZbaV0sICItLXRvbGVyYW5jZSIpKSB7CiAgICAgICAgICAgICBpZiAoaSA+PSBhcmdjIC0g
MSkKICAgICAgICAgICAgICAgICBleGl0KDEpOwogICAgICAgICAgICAgdG9sZXJhbmNlID0gc3Ry
dG9mKGFyZ3ZbaSArIDFdLCAwKTsKICAgICAgICAgICAgICsraTsKLSAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoIXN0cmNtcChhcmd2W2ldLCAiLS1j
b21wdXRlLWNoZWNrc3VtIikpCisgICAgICAgICAgICBjb21wdXRlQ2hlY2tzdW0gPSB0cnVlOwog
ICAgIH0KIAogICAgIGNoYXIgYnVmZmVyWzIwNDhdOwpAQCAtMjE0LDYgKzI2MCwxMiBAQCBpbnQg
bWFpbihpbnQgYXJnYywgY29uc3QgY2hhciogYXJndltdKQogICAgICAgICAgICAgICAgIGZwdXRz
KCJlcnJvciwgaW1hZ2Ugc2l6ZSBtdXN0IGJlIHNwZWNpZmllZC5cbiIsIHN0ZG91dCk7CiAgICAg
ICAgIH0KIAorICAgICAgICBpZiAoY29tcHV0ZUNoZWNrc3VtICYmIGFjdHVhbEltYWdlKSB7Cisg
ICAgICAgICAgICBjaGFyIGFjdHVhbEhhc2hbMzNdOworICAgICAgICAgICAgY29tcHV0ZU1ENUhh
c2hTdHJpbmdGb3JJbWFnZShhY3R1YWxJbWFnZS5nZXQoKSwgYWN0dWFsSGFzaCk7CisgICAgICAg
ICAgICBwcmludGYoIiVzIiwgYWN0dWFsSGFzaCk7CisgICAgICAgIH0KKwogICAgICAgICBpZiAo
YWN0dWFsSW1hZ2UgJiYgYmFzZWxpbmVJbWFnZSkgewogICAgICAgICAgICAgUmV0YWluUHRyPENH
SW1hZ2VSZWY+IGRpZmZJbWFnZTsKICAgICAgICAgICAgIGZsb2F0IGRpZmZlcmVuY2UgPSAxMDAu
MGY7CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3JlYWQtY2hlY2tzdW0tZnJvbS1wbmcgYi9U
b29scy9TY3JpcHRzL3JlYWQtY2hlY2tzdW0tZnJvbS1wbmcKaW5kZXggYWIwOGIyNTNiOWM3MzBm
MjJiOThjYTQxZmY2NjM4ODQ1NTExZDZjZi4uMGUyYzVmYWJhYmY0YmQ4NDczOWRlMDM1NzhiZWIx
Y2YyY2FiMzQwYSAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9yZWFkLWNoZWNrc3VtLWZyb20t
cG5nCisrKyBiL1Rvb2xzL1NjcmlwdHMvcmVhZC1jaGVja3N1bS1mcm9tLXBuZwpAQCAtMjgsMTIg
KzI4LDQ3IEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgd2l0aF9z
dGF0ZW1lbnQKKworaW1wb3J0IG9wdHBhcnNlCitpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHN5
cwogCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IGV4ZWN1dGl2ZQorZnJvbSB3
ZWJraXRweS5sYXlvdXRfdGVzdHMgaW1wb3J0IHBvcnQKKwogZnJvbSB3ZWJraXRweS5sYXlvdXRf
dGVzdHMgaW1wb3J0IHJlYWRfY2hlY2tzdW1fZnJvbV9wbmcKIAorZGVmIGNvbXB1dGVfY2hlY2tz
dW1fdXNpbmdfaW1hZ2VfZGlmZihmaWxlbmFtZSk6CisgICAgcG9ydF9vYmogPSBwb3J0LmdldCgp
CisgICAgaW1hZ2VfZGlmZl9wYXRoID0gcG9ydF9vYmouX3BhdGhfdG9faW1hZ2VfZGlmZigpCisg
ICAgdG9sZXJhbmNlID0gMC4xCisgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAncicpIGFzIGZpbGVo
YW5kbGU6CisgICAgICAgIGltYWdlX2NvbnRlbnRzID0gZmlsZWhhbmRsZS5yZWFkKCkKKyAgICAg
ICAgcHJvYyA9IHN1YnByb2Nlc3MuUG9wZW4oW2ltYWdlX2RpZmZfcGF0aCwgJy0tY29tcHV0ZS1j
aGVja3N1bSddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkaW49c3VicHJvY2Vz
cy5QSVBFLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFKQorICAgICAgICBwcm9jLnN0ZGluLndyaXRl
KCdDb250ZW50LUxlbmd0aDogJWRcbiVzJyAlIChsZW4oaW1hZ2VfY29udGVudHMpLCBpbWFnZV9j
b250ZW50cykpCisgICAgICAgIHByb2Muc3RkaW4uY2xvc2UoKQorICAgICAgICAjIFByZXN1bWFi
bHkgdGhlIHZhbGlkYXRlZCBjaGVja3N1bSB3cml0ZXMgdG8gc3Rkb3V0LgorICAgICAgICBwcm9j
LndhaXQoKQorICAgICAgICByZXR1cm4gcHJvYy5zdGRvdXQucmVhZGxpbmUoKTsKIAogaWYgJ19f
bWFpbl9fJyA9PSBfX25hbWVfXzoKLSAgICBmb3IgZmlsZW5hbWUgaW4gc3lzLmFyZ3ZbMTpdOgot
ICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICdyJykgYXMgZmlsZWhhbmRsZToKLSAgICAgICAg
ICAgIHByaW50ICIlczogJXMiICUgKHJlYWRfY2hlY2tzdW1fZnJvbV9wbmcucmVhZF9jaGVja3N1
bShmaWxlaGFuZGxlKSwgZmlsZW5hbWUpCisgICAgcGFyc2VyID0gb3B0cGFyc2UuT3B0aW9uUGFy
c2VyKCkKKyAgICBwYXJzZXIuYWRkX29wdGlvbignLXYnLCAnLS12YWxpZGF0ZScsIGFjdGlvbj0n
c3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgaGVscD0ncmVjb21wdXRlL3ZhbGlk
YXRlIGNoZWNrc3VtcyB1c2luZyBJbWFnZURpZmYnKQorICAgIG9wdGlvbnMsIGFyZ3MgPSBwYXJz
ZXIucGFyc2VfYXJncygpCisKKyAgICBmb3IgZmlsZW5hbWUgaW4gYXJnczoKKyAgICAgICAgYWN0
dWFsX2NoZWNrc3VtID0gJycKKyAgICAgICAgaWYgb3B0aW9ucy52YWxpZGF0ZToKKyAgICAgICAg
ICAgIGFjdHVhbF9jaGVja3N1bSA9IGNvbXB1dGVfY2hlY2tzdW1fdXNpbmdfaW1hZ2VfZGlmZihm
aWxlbmFtZSkKKyAgICAgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgJ3InKSBhcyBmaWxlaGFu
ZGxlOgorICAgICAgICAgICAgICAgIGV4cGVjdGVkX2NoZWNrc3VtID0gcmVhZF9jaGVja3N1bV9m
cm9tX3BuZy5yZWFkX2NoZWNrc3VtKGZpbGVoYW5kbGUpOworCisgICAgICAgICAgICBpZiBleHBl
Y3RlZF9jaGVja3N1bSA9PSBhY3R1YWxfY2hlY2tzdW06CisgICAgICAgICAgICAgICAgcHJpbnQg
IiVzOiBPSyIgJSAoZmlsZW5hbWUpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAg
IHByaW50ICIlczogYmFkIGNoZWNrc3VtIChzYXZlZCAlcywgYWN0dWFsICVzKSIgJSAoZmlsZW5h
bWUsIGV4cGVjdGVkX2NoZWNrc3VtLCBhY3R1YWxfY2hlY2tzdW0pCisgICAgICAgIGVsc2U6Cisg
ICAgICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICdyJykgYXMgZmlsZWhhbmRsZToKKyAgICAg
ICAgICAgICAgICBwcmludCAiJXM6ICVzIiAlIChyZWFkX2NoZWNrc3VtX2Zyb21fcG5nLnJlYWRf
Y2hlY2tzdW0oZmlsZWhhbmRsZSksIGZpbGVuYW1lKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9hcHBsZS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYXBwbGUucHkKaW5kZXggOTQ3NzE4NGYxNWZhNjA4YWRj
N2UyYWFkODllZWJhN2I3NWU1NzkxNi4uMzM3Y2VjMDFjMGFiMTAwMTlkMDYzZmI4Mjg3Mzg2YzU4
NDU3ZWE1OCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9hcHBsZS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2FwcGxlLnB5CkBAIC03Myw3ICs3Myw3IEBAIGNsYXNzIEFwcGxlUG9ydChXZWJLaXRQb3J0
KToKICAgICAgICAgICAgIGFzc2VydCBwb3J0X25hbWUgaW4gc2VsZi5WRVJTSU9OX0ZBTExCQUNL
X09SREVSLCAiJXMgaXMgbm90IGluICVzIiAlIChwb3J0X25hbWUsIHNlbGYuVkVSU0lPTl9GQUxM
QkFDS19PUkRFUikKICAgICAgICAgICAgIHNlbGYuX3ZlcnNpb24gPSBzZWxmLl9zdHJpcF9wb3J0
X25hbWVfcHJlZml4KHBvcnRfbmFtZSkKIAotICAgICMgRklYTUU6IEEgbW9yZSBzb3BoaXNpdGNh
dGVkIHZlcnNpb24gb2YgdGhpcyBmdW5jdGlvbiBzaG91bGQgbW92ZSB0byBXZWJLaXRQb3J0IGFu
ZCByZXBsYWNlIGFsbCBjYWxscyB0byBuYW1lKCkuCisgICAgIyBGSVhNRTogQSBtb3JlIHNvcGhp
c3RpY2F0ZWQgdmVyc2lvbiBvZiB0aGlzIGZ1bmN0aW9uIHNob3VsZCBtb3ZlIHRvIFdlYktpdFBv
cnQgYW5kIHJlcGxhY2UgYWxsIGNhbGxzIHRvIG5hbWUoKS4KICAgICBkZWYgX3BvcnRfbmFtZV93
aXRoX3ZlcnNpb24oc2VsZik6CiAgICAgICAgIGNvbXBvbmVudHMgPSBbc2VsZi5wb3J0X25hbWVd
CiAgICAgICAgIGlmIHNlbGYuX3ZlcnNpb24gIT0gc2VsZi5GVVRVUkVfVkVSU0lPTjoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107276</attachid>
            <date>2011-09-13 19:56:43 -0700</date>
            <delta_ts>2012-04-12 16:21:33 -0700</delta_ts>
            <desc>clean up, add tests</desc>
            <filename>bug-68039-20110913195642.patch</filename>
            <type>text/plain</type>
            <size>15583</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTUwNjAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlNmZhZGZiYWI1ZTNlYzc2NjZhYmY5MTUwMTk1NDUwYjJl
ZTljOGNhLi40NmRjZmIzNGJlMDI4Yzc5NDBmN2M3NzhhY2VlNzdhMGI0NTI3ZTVjIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUg
QEAKKzIwMTEtMDktMTMgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisK
KyAgICAgICAgTmVlZCBjb21tYW5kIGxpbmUgdXRpbCB0byBwcmludCBwbmcgY2hlY2tzdW1zCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODAzOQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgQWRk
IGEgLS1jb21wdXRlLWNoZWNrc3VtIG9wdGlvbiB0byBJbWFnZURpZmYgZm9yIE1hYworICAgICAg
ICB0aGF0IHdpbGwgY29tcHV0ZSBhIGNoZWNrc3VtIGZyb20gdGhlIGltYWdlIGRhdGEsIGFuZAor
ICAgICAgICBzcGl0IGl0IG91dCB0byBzdGRvdXQuCisgICAgICAgIAorICAgICAgICBFbmhhbmNl
IHJlYWQtY2hlY2tzdW0tZnJvbS1wbmcgdG8gY2FsbCBJbWFnZURpZmYgd2l0aAorICAgICAgICB0
aGlzIGZsYWcsIGFuZCBwcmludCBvdXQgd2hldGhlciB0aGUgY29tcHV0ZWQgaGFzaAorICAgICAg
ICBtYXRjaGVzIHRoZSBvbmUgc2F2ZWQgaW4gdGhlIGltYWdlLgorCisgICAgICAgIEZpeCBhIHNw
ZWxsaW5nIGVycm9yIGluIGFwcGxlLnB5LgorCisgICAgICAgIEFkZCBhIHBvcGVuKCkgY2FsbCB0
byBFeGVjdXRpdmVNb2NrLgorCisgICAgICAgIERpcmsgUHJhbmtlIDxkcHJhbmtlQGNocm9taXVt
Lm9yZz4gY2hpcHBlZCBpbiBvbiB0aGUgcHl0aG9uIGNvZGUKKyAgICAgICAgZm9yIHRoaXMgcGF0
Y2guCisgICAgICAgIAorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2NnL0ltYWdlRGlmZkNHLmNw
cDoKKyAgICAgICAgKGNvbXB1dGVNRDVIYXNoU3RyaW5nRm9ySW1hZ2UpOgorICAgICAgICAobWFp
bik6CisgICAgICAgICogU2NyaXB0cy9yZWFkLWNoZWNrc3VtLWZyb20tcG5nOgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9leGVjdXRpdmVfbW9jay5weToKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2FwcGxlLnB5OgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weToKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9yZWFkX2NoZWNrc3VtX2Zyb21fcG5nLnB5
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3JlYWRfY2hlY2tzdW1f
ZnJvbV9wbmdfdW5pdHRlc3QucHk6CisKIDIwMTEtMDktMTMgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBEaXNhYmxlIEMrKyBleGNlcHRpb25zIHdoZW4g
YnVpbGRpbmcgd2l0aCBjbGFuZwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2cv
SW1hZ2VEaWZmQ0cuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2cvSW1hZ2VEaWZmQ0cuY3Bw
CmluZGV4IGI0ZjQzMmY4YTE1N2M4MTkxYTQ5MGJhOTk5MTIxZWEzMzRlN2M2YWMuLmYzYjdjZmE3
NzVhZGNmNDRlODRjOTQ4MzcwMzZlYjg4ZGQ1MzhmNTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2NnL0ltYWdlRGlmZkNHLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
Zy9JbWFnZURpZmZDRy5jcHAKQEAgLTQ3LDYgKzQ3LDggQEAKICNpbmNsdWRlIDxJbWFnZUlPL0NH
SW1hZ2VEZXN0aW5hdGlvbi5oPgogCiAjaWYgUExBVEZPUk0oTUFDKQorI2RlZmluZSBDT01NT05f
RElHRVNUX0ZPUl9PUEVOU1NMCisjaW5jbHVkZSA8Q29tbW9uQ3J5cHRvL0NvbW1vbkRpZ2VzdC5o
PgogI2luY2x1ZGUgPExhdW5jaFNlcnZpY2VzL1VUQ29yZVR5cGVzLmg+CiAjZW5kaWYKIApAQCAt
MTY2LDYgKzE2OCw0OSBAQCBzdGF0aWMgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNyZWF0ZURpZmZl
cmVuY2VJbWFnZShDR0ltYWdlUmVmIGJhc2VJbWFnZSwgQ0dJbWFnZQogICAgIHJldHVybiBkaWZm
SW1hZ2U7CiB9CiAKKy8vIEZJWE1FOiBkdXBsaWNhdGVkIGZyb20gUGl4ZWxEdW1wU3VwcG9ydENH
LCBidXQgdGhhdCBoYXMgZGVwZW5kZW5jaWVzIHRoYXQgSW1hZ2VEaWZmIGRvZXNuJ3Qgd2FudC4K
K3ZvaWQgY29tcHV0ZU1ENUhhc2hTdHJpbmdGb3JJbWFnZShDR0ltYWdlUmVmIGltYWdlLCBjaGFy
IGhhc2hTdHJpbmdbMzNdKQoreworICAgIHNpemVfdCBwaXhlbHNXaWRlID0gQ0dJbWFnZUdldFdp
ZHRoKGltYWdlKTsKKyAgICBzaXplX3QgcGl4ZWxzSGlnaCA9IENHSW1hZ2VHZXRIZWlnaHQoaW1h
Z2UpOworICAgIHNpemVfdCBieXRlc1BlclJvdyA9ICg0ICogcGl4ZWxzV2lkZSArIDYzKSAmIH42
MzsKKyAgICB2b2lkKiBidWZmZXIgPSBjYWxsb2MocGl4ZWxzSGlnaCwgYnl0ZXNQZXJSb3cpOwor
CisgICAgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVEZXZp
Y2VSR0IoKTsKKyAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IENHQml0bWFwQ29udGV4dENyZWF0
ZShidWZmZXIsIHBpeGVsc1dpZGUsIHBpeGVsc0hpZ2gsIDgsIGJ5dGVzUGVyUm93LCBjb2xvclNw
YWNlLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0IHwga0NHQml0bWFwQnl0ZU9yZGVy
MzJIb3N0KTsKKyAgICBDR0NvbG9yU3BhY2VSZWxlYXNlKGNvbG9yU3BhY2UpOworCisgICAgQ0dD
b250ZXh0RHJhd0ltYWdlKGNvbnRleHQsIENHUmVjdE1ha2UoMCwgMCwgcGl4ZWxzV2lkZSwgcGl4
ZWxzSGlnaCksIGltYWdlKTsKKworICAgIC8vIFdlIG5lZWQgdG8gc3dhcCB0aGUgYnl0ZXMgdG8g
ZW5zdXJlIGNvbnNpc3RlbnQgaGFzaGVzIGluZGVwZW5kZW50bHkgb2YgZW5kaWFubmVzcworICAg
IE1ENV9DVFggbWQ1Q29udGV4dDsKKyAgICBNRDVfSW5pdCgmbWQ1Q29udGV4dCk7CisgICAgdW5z
aWduZWQgY2hhciogYml0bWFwRGF0YSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihDR0Jp
dG1hcENvbnRleHRHZXREYXRhKGNvbnRleHQpKTsKKyNpZiBQTEFURk9STShNQUMpCisgICAgaWYg
KChDR0JpdG1hcENvbnRleHRHZXRCaXRtYXBJbmZvKGNvbnRleHQpICYga0NHQml0bWFwQnl0ZU9y
ZGVyTWFzaykgPT0ga0NHQml0bWFwQnl0ZU9yZGVyMzJCaWcpIHsKKyAgICAgICAgZm9yICh1bnNp
Z25lZCByb3cgPSAwOyByb3cgPCBwaXhlbHNIaWdoOyByb3crKykgeworICAgICAgICAgICAgdWlu
dDMyX3QgYnVmZmVyW3BpeGVsc1dpZGVdOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBjb2x1
bW4gPSAwOyBjb2x1bW4gPCBwaXhlbHNXaWRlOyBjb2x1bW4rKykKKyAgICAgICAgICAgICAgICBi
dWZmZXJbY29sdW1uXSA9IE9TUmVhZExpdHRsZUludDMyKGJpdG1hcERhdGEsIDQgKiBjb2x1bW4p
OworICAgICAgICAgICAgTUQ1X1VwZGF0ZSgmbWQ1Q29udGV4dCwgYnVmZmVyLCA0ICogcGl4ZWxz
V2lkZSk7CisgICAgICAgICAgICBiaXRtYXBEYXRhICs9IGJ5dGVzUGVyUm93OworICAgICAgICB9
CisgICAgfSBlbHNlCisjZW5kaWYKKyAgICB7CisgICAgICAgIGZvciAodW5zaWduZWQgcm93ID0g
MDsgcm93IDwgcGl4ZWxzSGlnaDsgcm93KyspIHsKKyAgICAgICAgICAgIE1ENV9VcGRhdGUoJm1k
NUNvbnRleHQsIGJpdG1hcERhdGEsIDQgKiBwaXhlbHNXaWRlKTsKKyAgICAgICAgICAgIGJpdG1h
cERhdGEgKz0gYnl0ZXNQZXJSb3c7CisgICAgICAgIH0KKyAgICB9CisgICAgdW5zaWduZWQgY2hh
ciBoYXNoWzE2XTsKKyAgICBNRDVfRmluYWwoaGFzaCwgJm1kNUNvbnRleHQpOworCisgICAgaGFz
aFN0cmluZ1swXSA9ICdcMCc7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAxNjsgaSsrKQorICAg
ICAgICBzbnByaW50ZihoYXNoU3RyaW5nLCAzMywgIiVzJTAyeCIsIGhhc2hTdHJpbmcsIGhhc2hb
aV0pOworfQorCiBzdGF0aWMgaW5saW5lIGJvb2wgaW1hZ2VIYXNBbHBoYShDR0ltYWdlUmVmIGlt
YWdlKQogewogICAgIENHSW1hZ2VBbHBoYUluZm8gaW5mbyA9IENHSW1hZ2VHZXRBbHBoYUluZm8o
aW1hZ2UpOwpAQCAtMTgwLDE2ICsyMjUsMTcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNvbnN0IGNo
YXIqIGFyZ3ZbXSkKICAgICBfc2V0bW9kZSgxLCBfT19CSU5BUlkpOwogI2VuZGlmCiAKLSAgICBm
bG9hdCB0b2xlcmFuY2UgPSAwLjBmOwotCisgICAgZmxvYXQgdG9sZXJhbmNlID0gMDsKKyAgICBi
b29sIGNvbXB1dGVDaGVja3N1bSA9IGZhbHNlOworICAgIAogICAgIGZvciAoaW50IGkgPSAxOyBp
IDwgYXJnYzsgKytpKSB7CiAgICAgICAgIGlmICghc3RyY21wKGFyZ3ZbaV0sICItdCIpIHx8ICFz
dHJjbXAoYXJndltpXSwgIi0tdG9sZXJhbmNlIikpIHsKICAgICAgICAgICAgIGlmIChpID49IGFy
Z2MgLSAxKQogICAgICAgICAgICAgICAgIGV4aXQoMSk7CiAgICAgICAgICAgICB0b2xlcmFuY2Ug
PSBzdHJ0b2YoYXJndltpICsgMV0sIDApOwogICAgICAgICAgICAgKytpOwotICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmICghc3RyY21wKGFyZ3ZbaV0s
ICItLWNvbXB1dGUtY2hlY2tzdW0iKSkKKyAgICAgICAgICAgIGNvbXB1dGVDaGVja3N1bSA9IHRy
dWU7CiAgICAgfQogCiAgICAgY2hhciBidWZmZXJbMjA0OF07CkBAIC0yMTQsNiArMjYwLDEyIEBA
IGludCBtYWluKGludCBhcmdjLCBjb25zdCBjaGFyKiBhcmd2W10pCiAgICAgICAgICAgICAgICAg
ZnB1dHMoImVycm9yLCBpbWFnZSBzaXplIG11c3QgYmUgc3BlY2lmaWVkLlxuIiwgc3Rkb3V0KTsK
ICAgICAgICAgfQogCisgICAgICAgIGlmIChjb21wdXRlQ2hlY2tzdW0gJiYgYWN0dWFsSW1hZ2Up
IHsKKyAgICAgICAgICAgIGNoYXIgYWN0dWFsSGFzaFszM107CisgICAgICAgICAgICBjb21wdXRl
TUQ1SGFzaFN0cmluZ0ZvckltYWdlKGFjdHVhbEltYWdlLmdldCgpLCBhY3R1YWxIYXNoKTsKKyAg
ICAgICAgICAgIHByaW50ZigiJXMiLCBhY3R1YWxIYXNoKTsKKyAgICAgICAgfQorCiAgICAgICAg
IGlmIChhY3R1YWxJbWFnZSAmJiBiYXNlbGluZUltYWdlKSB7CiAgICAgICAgICAgICBSZXRhaW5Q
dHI8Q0dJbWFnZVJlZj4gZGlmZkltYWdlOwogICAgICAgICAgICAgZmxvYXQgZGlmZmVyZW5jZSA9
IDEwMC4wZjsKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvcmVhZC1jaGVja3N1bS1mcm9tLXBu
ZyBiL1Rvb2xzL1NjcmlwdHMvcmVhZC1jaGVja3N1bS1mcm9tLXBuZwppbmRleCBhYjA4YjI1M2I5
YzczMGYyMmI5OGNhNDFmZjY2Mzg4NDU1MTFkNmNmLi45YWI5NjA3OGFhNDY3NGFjMzI3MzY5NTky
MmYyYTY5M2Y3YzAzMjM0IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3JlYWQtY2hlY2tzdW0t
ZnJvbS1wbmcKKysrIGIvVG9vbHMvU2NyaXB0cy9yZWFkLWNoZWNrc3VtLWZyb20tcG5nCkBAIC0y
NywxMyArMjcsMTAgQEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLWZyb20gX19m
dXR1cmVfXyBpbXBvcnQgd2l0aF9zdGF0ZW1lbnQKIGltcG9ydCBzeXMKIAorZnJvbSB3ZWJraXRw
eS5sYXlvdXRfdGVzdHMgaW1wb3J0IHBvcnQKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzIGlt
cG9ydCByZWFkX2NoZWNrc3VtX2Zyb21fcG5nCiAKLQotaWYgJ19fbWFpbl9fJyA9PSBfX25hbWVf
XzoKLSAgICBmb3IgZmlsZW5hbWUgaW4gc3lzLmFyZ3ZbMTpdOgotICAgICAgICB3aXRoIG9wZW4o
ZmlsZW5hbWUsICdyJykgYXMgZmlsZWhhbmRsZToKLSAgICAgICAgICAgIHByaW50ICIlczogJXMi
ICUgKHJlYWRfY2hlY2tzdW1fZnJvbV9wbmcucmVhZF9jaGVja3N1bShmaWxlaGFuZGxlKSwgZmls
ZW5hbWUpCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgcmVhZF9jaGVja3N1bV9mcm9t
X3BuZy5tYWluKHN5cy5hcmd2WzE6XSwgc3lzLnN0ZG91dCwgcG9ydC5nZXQoKSkKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9leGVjdXRpdmVfbW9jay5w
eSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9leGVjdXRpdmVfbW9jay5w
eQppbmRleCAwZTkzMzEyMmI4NTllYmU5NjFkMjI0ODZhYzMzM2M5MjM2MjQ0NTAwLi44MThkYjY5
YmMxYmJhYzZkY2EyZDJlYWUxZmNhNjkxNmQ3MzA4MWZkIDEwMDY0NAotLS0gYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZXhlY3V0aXZlX21vY2sucHkKKysrIGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2V4ZWN1dGl2ZV9tb2NrLnB5CkBAIC0zMCwx
MCArMzAsMTUgQEAKIAogIyBGSVhNRTogVW5pZnkgd2l0aCB0b29sL21vY2t0b29sLk1vY2tFeGVj
dXRpdmUuCiAKK2ltcG9ydCBTdHJpbmdJTworCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0g
aW1wb3J0IGV4ZWN1dGl2ZQogCiAKIGNsYXNzIE1vY2tFeGVjdXRpdmUyKG9iamVjdCk6CisgICAg
UElQRSA9IGV4ZWN1dGl2ZS5FeGVjdXRpdmUuUElQRQorICAgIFNURE9VVCA9IGV4ZWN1dGl2ZS5F
eGVjdXRpdmUuU1RET1VUCisKICAgICBkZWYgX19pbml0X18oc2VsZiwgb3V0cHV0PScnLCBleGl0
X2NvZGU9MCwgZXhjZXB0aW9uPU5vbmUsCiAgICAgICAgICAgICAgICAgIHJ1bl9jb21tYW5kX2Zu
PU5vbmUsIHN0ZGVycj0nJyk6CiAgICAgICAgIHNlbGYuX291dHB1dCA9IG91dHB1dApAQCAtNDEs
NiArNDYsNyBAQCBjbGFzcyBNb2NrRXhlY3V0aXZlMihvYmplY3QpOgogICAgICAgICBzZWxmLl9l
eGl0X2NvZGUgPSBleGl0X2NvZGUKICAgICAgICAgc2VsZi5fZXhjZXB0aW9uID0gZXhjZXB0aW9u
CiAgICAgICAgIHNlbGYuX3J1bl9jb21tYW5kX2ZuID0gcnVuX2NvbW1hbmRfZm4KKyAgICAgICAg
c2VsZi5fc3RkaW4gPSBTdHJpbmdJTy5TdHJpbmdJTygpCiAKICAgICBkZWYgY3B1X2NvdW50KHNl
bGYpOgogICAgICAgICByZXR1cm4gMgpAQCAtNTEsNiArNTcsMTcgQEAgY2xhc3MgTW9ja0V4ZWN1
dGl2ZTIob2JqZWN0KToKICAgICBkZWYga2lsbF9wcm9jZXNzKHNlbGYsIHBpZCk6CiAgICAgICAg
IHBhc3MKIAorICAgIGRlZiBwb3BlbihzZWxmLCBjbWQ9Tm9uZSwgc3Rkb3V0PU5vbmUsIHN0ZGVy
cj1Ob25lLCAqKmt3YXJncyk6CisgICAgICAgIGNsYXNzIE1vY2tQcm9jZXNzT2JqZWN0KG9iamVj
dCk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgbW9ja19leGVjdXRpdmUpOgorICAg
ICAgICAgICAgICAgIHNlbGYuc3RkaW4gPSBtb2NrX2V4ZWN1dGl2ZS5fc3RkaW4KKyAgICAgICAg
ICAgICAgICBzZWxmLnN0ZG91dCA9IFN0cmluZ0lPLlN0cmluZ0lPKG1vY2tfZXhlY3V0aXZlLl9v
dXRwdXQpCisKKyAgICAgICAgICAgIGRlZiB3YWl0KHNlbGYpOgorICAgICAgICAgICAgICAgIHBh
c3MKKworICAgICAgICByZXR1cm4gTW9ja1Byb2Nlc3NPYmplY3Qoc2VsZikKKwogICAgIGRlZiBy
dW5fY29tbWFuZChzZWxmLAogICAgICAgICAgICAgICAgICAgICBhcmdzLAogICAgICAgICAgICAg
ICAgICAgICBjd2Q9Tm9uZSwKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvYXBwbGUucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L2FwcGxlLnB5CmluZGV4IDk0NzcxODRmMTVmYTYwOGFkYzdlMmFhZDg5ZWViYTdi
NzVlNTc5MTYuLjMzN2NlYzAxYzBhYjEwMDE5ZDA2M2ZiODI4NzM4NmM1ODQ1N2VhNTggMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYXBwbGUucHkK
KysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9hcHBsZS5weQpA
QCAtNzMsNyArNzMsNyBAQCBjbGFzcyBBcHBsZVBvcnQoV2ViS2l0UG9ydCk6CiAgICAgICAgICAg
ICBhc3NlcnQgcG9ydF9uYW1lIGluIHNlbGYuVkVSU0lPTl9GQUxMQkFDS19PUkRFUiwgIiVzIGlz
IG5vdCBpbiAlcyIgJSAocG9ydF9uYW1lLCBzZWxmLlZFUlNJT05fRkFMTEJBQ0tfT1JERVIpCiAg
ICAgICAgICAgICBzZWxmLl92ZXJzaW9uID0gc2VsZi5fc3RyaXBfcG9ydF9uYW1lX3ByZWZpeChw
b3J0X25hbWUpCiAKLSAgICAjIEZJWE1FOiBBIG1vcmUgc29waGlzaXRjYXRlZCB2ZXJzaW9uIG9m
IHRoaXMgZnVuY3Rpb24gc2hvdWxkIG1vdmUgdG8gV2ViS2l0UG9ydCBhbmQgcmVwbGFjZSBhbGwg
Y2FsbHMgdG8gbmFtZSgpLgorICAgICMgRklYTUU6IEEgbW9yZSBzb3BoaXN0aWNhdGVkIHZlcnNp
b24gb2YgdGhpcyBmdW5jdGlvbiBzaG91bGQgbW92ZSB0byBXZWJLaXRQb3J0IGFuZCByZXBsYWNl
IGFsbCBjYWxscyB0byBuYW1lKCkuCiAgICAgZGVmIF9wb3J0X25hbWVfd2l0aF92ZXJzaW9uKHNl
bGYpOgogICAgICAgICBjb21wb25lbnRzID0gW3NlbGYucG9ydF9uYW1lXQogICAgICAgICBpZiBz
ZWxmLl92ZXJzaW9uICE9IHNlbGYuRlVUVVJFX1ZFUlNJT046CmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHkgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHkKaW5kZXggYTBiY2FhNTU5M2MxNjI1
N2IxNTYwYzFmNzliY2ExMTRiZjc1ZTUwMi4uZTRiNzE5MzViMWUxYTYzYzVjODM3NTkzODNmNjIx
OWY2NzYyYzMxYiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC90ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvdGVzdC5weQpAQCAtMjk2LDYgKzI5NiwxMiBAQCBjbGFzcyBUZXN0UG9ydChQb3J0KToK
ICAgICAgICAgIyB0aGUgbW9ja19kcnQgRHJpdmVyLiBXZSByZXR1cm4gc29tZXRoaW5nLCBidXQg
bWFrZSBzdXJlIGl0J3MgdXNlbGVzcy4KICAgICAgICAgcmV0dXJuICdqdW5rJwogCisgICAgZGVm
IF9wYXRoX3RvX2ltYWdlX2RpZmYoc2VsZik6CisgICAgICAgICMgVGhpcyByb3V0aW5lIHNob3Vs
ZG4ndCBub3JtYWxseSBiZSBjYWxsZWQsIGJ1dCBpdCBpcyBjYWxsZWQgYnkKKyAgICAgICAgIyBz
b21lIHVuaXQgdGVzdHMuCisgICAgICAgIHJldHVybiAnL2p1bmsvSW1hZ2VEaWZmJworCisKICAg
ICBkZWYgYmFzZWxpbmVfc2VhcmNoX3BhdGgoc2VsZik6CiAgICAgICAgIHNlYXJjaF9wYXRocyA9
IHsKICAgICAgICAgICAgICd0ZXN0LW1hYy1zbm93bGVvcGFyZCc6IFsndGVzdC1tYWMtc25vd2xl
b3BhcmQnXSwKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3JlYWRfY2hlY2tzdW1fZnJvbV9wbmcucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9yZWFkX2NoZWNrc3VtX2Zyb21fcG5nLnB5CmluZGV4IDcwYTA1MDJiNzNiZjc1OGVk
YTUxNjQyZmMxNmY5YjljMWVkNGQwYWYuLmY1YjEzOWNiOTQzZTM1MjU2M2UyNTUxYjIyZDYzYWVj
OWVhZGJlYWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3JlYWRfY2hlY2tzdW1fZnJvbV9wbmcucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcmVhZF9jaGVja3N1bV9mcm9tX3BuZy5weQpAQCAtMjcsNiArMjcsMTAgQEAK
ICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQg
d2l0aF9zdGF0ZW1lbnQKKworaW1wb3J0IG9wdHBhcnNlCisKIAogZGVmIHJlYWRfY2hlY2tzdW0o
ZmlsZWhhbmRsZSk6CiAgICAgIyBXZSBleHBlY3QgdGhlIGNvbW1lbnQgdG8gYmUgYXQgdGhlIGJl
Z2lubmluZyBvZiB0aGUgZmlsZS4KQEAgLTM4LDMgKzQyLDUzIEBAIGRlZiByZWFkX2NoZWNrc3Vt
KGZpbGVoYW5kbGUpOgogCiAgICAgY2hlY2tzdW1fcG9zID0gY29tbWVudF9wb3MgKyBsZW4oY29t
bWVudF9rZXkpCiAgICAgcmV0dXJuIGRhdGFbY2hlY2tzdW1fcG9zOmNoZWNrc3VtX3BvcyArIDMy
XQorCisKK2NsYXNzIENoZWNrZXIob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcG9y
dCk6CisgICAgICAgIHNlbGYucG9ydCA9IHBvcnQKKyAgICAgICAgc2VsZi5wcm9jID0gTm9uZQor
CisgICAgZGVmIHN0YXJ0KHNlbGYpOgorICAgICAgICBpbWFnZV9kaWZmX3BhdGggPSBzZWxmLnBv
cnQuX3BhdGhfdG9faW1hZ2VfZGlmZigpCisgICAgICAgIGV4ZWN1dGl2ZSA9IHNlbGYucG9ydC5l
eGVjdXRpdmUKKyAgICAgICAgc2VsZi5wcm9jID0gZXhlY3V0aXZlLnBvcGVuKFtpbWFnZV9kaWZm
X3BhdGgsICctLWNvbXB1dGUtY2hlY2tzdW0nXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0ZGluPWV4ZWN1dGl2ZS5QSVBFLCBzdGRvdXQ9ZXhlY3V0aXZlLlBJUEUpCisK
KyAgICBkZWYgdmFsaWRhdGUoc2VsZiwgaW1hZ2VfY29udGVudHMpOgorICAgICAgICBzZWxmLnBy
b2Muc3RkaW4ud3JpdGUoJ0NvbnRlbnQtTGVuZ3RoOiAlZFxuJXMnICUgKGxlbihpbWFnZV9jb250
ZW50cyksIGltYWdlX2NvbnRlbnRzKSkKKyAgICAgICAgcmV0dXJuIHNlbGYucHJvYy5zdGRvdXQu
cmVhZGxpbmUoKS5zdHJpcCgpCisKKyAgICBkZWYgc3RvcChzZWxmKToKKyAgICAgICAgc2VsZi5w
cm9jLnN0ZGluLmNsb3NlKCkKKyAgICAgICAgc2VsZi5wcm9jLndhaXQoKQorCisgICAgZGVmIGNo
ZWNrKHNlbGYsIGZpbGVuYW1lLCBleHBlY3RlZF9jaGVja3N1bSk6CisgICAgICAgIGltYWdlX2Nv
bnRlbnRzID0gc2VsZi5wb3J0LmZpbGVzeXN0ZW0ucmVhZF9iaW5hcnlfZmlsZShmaWxlbmFtZSkK
KyAgICAgICAgYWN0dWFsX2NoZWNrc3VtID0gc2VsZi52YWxpZGF0ZShpbWFnZV9jb250ZW50cykK
KyAgICAgICAgaWYgZXhwZWN0ZWRfY2hlY2tzdW0gPT0gYWN0dWFsX2NoZWNrc3VtOgorICAgICAg
ICAgICAgcmV0dXJuICIlczogT0siICUgKGZpbGVuYW1lKQorICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgcmV0dXJuICIlczogYmFkIGNoZWNrc3VtIChzYXZlZCAlcywgYWN0dWFsICVzKSIgJSAo
ZmlsZW5hbWUsIGV4cGVjdGVkX2NoZWNrc3VtLCBhY3R1YWxfY2hlY2tzdW0pCisKKworZGVmIG1h
aW4oYXJndiwgc3Rkb3V0LCBwb3J0KToKKyAgICBwYXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJz
ZXIoKQorICAgIHBhcnNlci5hZGRfb3B0aW9uKCctdicsICctLXZhbGlkYXRlJywgYWN0aW9uPSdz
dG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3JlY29tcHV0ZS92YWxp
ZGF0ZSBjaGVja3N1bXMgdXNpbmcgSW1hZ2VEaWZmJykKKyAgICBvcHRpb25zLCBhcmdzID0gcGFy
c2VyLnBhcnNlX2FyZ3MoYXJndikKKworICAgIGNoZWNrZXIgPSBDaGVja2VyKHBvcnQpCisgICAg
aWYgb3B0aW9ucy52YWxpZGF0ZToKKyAgICAgICAgY2hlY2tlci5zdGFydCgpCisKKyAgICBmb3Ig
ZmlsZW5hbWUgaW4gYXJnczoKKyAgICAgICAgd2l0aCBwb3J0LmZpbGVzeXN0ZW0ub3Blbl9iaW5h
cnlfZmlsZV9mb3JfcmVhZGluZyhmaWxlbmFtZSkgYXMgZmlsZWhhbmRsZToKKyAgICAgICAgICAg
IGV4cGVjdGVkX2NoZWNrc3VtID0gcmVhZF9jaGVja3N1bShmaWxlaGFuZGxlKQorICAgICAgICBp
ZiBvcHRpb25zLnZhbGlkYXRlOgorICAgICAgICAgICAgc3Rkb3V0LndyaXRlKCIlc1xuIiAlIGNo
ZWNrZXIuY2hlY2soZmlsZW5hbWUsIGV4cGVjdGVkX2NoZWNrc3VtKSkKKyAgICAgICAgZWxzZToK
KyAgICAgICAgICAgIHN0ZG91dC53cml0ZSgiJXM6ICVzXG4iICUgKGZpbGVuYW1lLCBleHBlY3Rl
ZF9jaGVja3N1bSkpCisKKyAgICBpZiBvcHRpb25zLnZhbGlkYXRlOgorICAgICAgICBjaGVja2Vy
LnN0b3AoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cmVhZF9jaGVja3N1bV9mcm9tX3BuZ191bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3JlYWRfY2hlY2tzdW1fZnJvbV9wbmdfdW5pdHRlc3QucHkKaW5kZXgg
NzM3NTc0MWFjMjExNzQ1MWU4ZDgzZjFlMWEyZDI2MTA1Mjk2MTExYi4uY2ZkZjAyY2Y5ZGJlNTUy
NWY1YWE5OTYxZmYyMWFlMGU2OTk3OTQ1NCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcmVhZF9jaGVja3N1bV9mcm9tX3BuZ191bml0dGVzdC5weQorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9yZWFkX2NoZWNrc3VtX2Zyb21f
cG5nX3VuaXR0ZXN0LnB5CkBAIC0yNCwxMCArMjQsMTMgQEAKIAogaW1wb3J0IFN0cmluZ0lPCiBp
bXBvcnQgdW5pdHRlc3QKKworZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBleGVj
dXRpdmVfbW9jawogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMgaW1wb3J0IHJlYWRfY2hlY2tz
dW1fZnJvbV9wbmcKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzIGltcG9ydCBwb3J0CiAKIAot
Y2xhc3MgUmVhZENoZWNrc3VtRnJvbVBuZ1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3Mg
UmVhZENoZWNrc3VtVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfcmVhZF9j
aGVja3N1bShzZWxmKToKICAgICAgICAgIyBUZXN0IGEgZmlsZSB3aXRoIHRoZSBjb21tZW50Lgog
ICAgICAgICBmaWxlaGFuZGxlID0gU3RyaW5nSU8uU3RyaW5nSU8oJycnXHg4OVBOR1xyXG5ceDFh
XG5ceDAwXHgwMFx4MDBccklIRFJceDAwXHgwMFx4MDMgXHgwMFx4MDBceDAyWFx4MDhceDAyXHgw
MFx4MDBceDAwXHgxNVx4MTRceDE1J1x4MDBceDAwXHgwMCl0RVh0Y2hlY2tzdW1ceDAwM2M0MTM0
ZmUyNzM5ODgwMzUzZjkxYzViODRjYWRiYWFDXHhiOD9ceGVjXHgwMFx4MDBceDE2XHhmZUlEQVR4
XHg5Y1x4ZWRceGRkW1x4OGNVXHhlNVx4YzFceGZmXHhmMTVUXHgxOFx4MGVhLClceGE2XHg4MFha
PFx4MTBcblx4ZDZIXHhjNFZceDg4fVx4YjVceGE5XHhkNnJceGQ1XHgwYmtpMFx4YTZceGI1aWhc
eGQyXHhkZVx4OThQSHpceGQxXHgwMj1cXHEjXHgwMVx4OGJceGE1ckpceDhiXHg4OGlceGFjTVx4
YzVoXHg4Y2JNayhceDFlekAhXHgwY1x4ZDVceGQyXHhjMlx4YjQ0XHgxY1x4ODQ4XHgxZEYoXHhl
Ylx4N2ZceGIxXHhmZlx4ZDlceGVmfmdceGQ2XHhkZTNceGUwb1x4MTBceGVjXHhlN3NhNntceGQ2
elx4ZDZceGIzXHhkN1x4ZjNceGE4XzdceGRiTVtZXHg5Nlx4MDVceDAwXHgwMDlceGMzXHhkZVx4
ZWJcdFx4MDBceDAwXHhiY1x4ZGZceDA4LFx4MDBceDgwMFx4ODFceDA1XHgwMFx4MTAmXHhiMFx4
MDBceDAwXHhjMlx4MDRceDE2XHgwMEBceDk4XHhjMFx4MDJceDAwXHgwOFx4MTNYXHgwMFx4MDBh
XHgwMlx4MGJceDAwIEwceDAxXHgwMFx4ODRcdCxceDAwXHg4MDBceDgxXHgwNVx4MDBceDEwXHhk
NjRceGIwXHhkYVx4OWFceGRiXHhiNm1ceGRiXHhiNGlceGQzXHhmYVx4OWZyXHhmM1x4Y2Q3XHgw
Zlx4ZTVUXHgwN1x4ZTVceGQ0XHhhOScnJykKQEAgLTQwLDUgKzQzLDQ0IEBAIGNsYXNzIFJlYWRD
aGVja3N1bUZyb21QbmdUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbHMoTm9uZSwgY2hlY2tzdW0pCiAKIAorY2xhc3MgQ2hlY2tlclRlc3QodW5pdHRlc3Qu
VGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2NoZWNrZXIoc2VsZik6CisgICAgICAgIHBvcnRfb2Jq
ID0gcG9ydC5nZXQoJ3Rlc3QnKQorICAgICAgICBwb3J0X29iai5leGVjdXRpdmUgPSBleGVjdXRp
dmVfbW9jay5Nb2NrRXhlY3V0aXZlMihvdXRwdXQ9J2ltYWdlLWNoZWNrc3VtXG5mb29cbicpCisK
KyAgICAgICAgY2hlY2tlciA9IHJlYWRfY2hlY2tzdW1fZnJvbV9wbmcuQ2hlY2tlcihwb3J0X29i
aikKKyAgICAgICAgaW1hZ2VfZmlsZW5hbWUgPSAnL3Rlc3QuY2hlY2tvdXQvTGF5b3V0VGVzdHMv
cGFzc2VzL2ltYWdlLWV4cGVjdGVkLnBuZycKKyAgICAgICAgY2hlY2tlci5zdGFydCgpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNoZWNrZXIuY2hlY2soaW1hZ2VfZmlsZW5hbWUsICdpbWFn
ZS1jaGVja3N1bScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnJXM6IE9LJyAlIGltYWdl
X2ZpbGVuYW1lKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNoZWNrZXIuY2hlY2soaW1h
Z2VfZmlsZW5hbWUsICdpbWFnZS1jaGVja3N1bScpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAnJXM6IGJhZCBjaGVja3N1bSAoc2F2ZWQgaW1hZ2UtY2hlY2tzdW0sIGFjdHVhbCBmb28pJyAl
IGltYWdlX2ZpbGVuYW1lKQorICAgICAgICBjaGVja2VyLnN0b3AoKQorCisKK2NsYXNzIE1haW5U
ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9yZWFkKHNlbGYpOgorICAgICAg
ICBwb3J0X29iaiA9IHBvcnQuZ2V0KCd0ZXN0JykKKyAgICAgICAgaW1hZ2VfZmlsZW5hbWUgPSAn
L3Rlc3QuY2hlY2tvdXQvTGF5b3V0VGVzdHMvcGFzc2VzL2ltYWdlLWV4cGVjdGVkLnBuZycKKwor
ICAgICAgICBzdGRvdXQgPSBTdHJpbmdJTy5TdHJpbmdJTygpCisgICAgICAgIGFyZ3YgPSBbaW1h
Z2VfZmlsZW5hbWVdCisgICAgICAgIHJlYWRfY2hlY2tzdW1fZnJvbV9wbmcubWFpbihhcmd2LCBz
dGRvdXQsIHBvcnRfb2JqKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzdGRvdXQuZ2V0dmFs
dWUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIiVzOiBpbWFnZS1jaGVja3N1bVxuIiAl
IGltYWdlX2ZpbGVuYW1lKQorCisgICAgZGVmIHRlc3RfdmFsaWRhdGUoc2VsZik6CisgICAgICAg
IHBvcnRfb2JqID0gcG9ydC5nZXQoJ3Rlc3QnKQorICAgICAgICBwb3J0X29iai5leGVjdXRpdmUg
PSBleGVjdXRpdmVfbW9jay5Nb2NrRXhlY3V0aXZlMihvdXRwdXQ9J2ltYWdlLWNoZWNrc3VtXG5m
b29cbicpCisKKyAgICAgICAgaW1hZ2VfZmlsZW5hbWUgPSAnL3Rlc3QuY2hlY2tvdXQvTGF5b3V0
VGVzdHMvcGFzc2VzL2ltYWdlLWV4cGVjdGVkLnBuZycKKworICAgICAgICBzdGRvdXQgPSBTdHJp
bmdJTy5TdHJpbmdJTygpCisgICAgICAgIGFyZ3YgPSBbJy0tdmFsaWRhdGUnLCBpbWFnZV9maWxl
bmFtZSwgaW1hZ2VfZmlsZW5hbWVdCisgICAgICAgIHJlYWRfY2hlY2tzdW1fZnJvbV9wbmcubWFp
bihhcmd2LCBzdGRvdXQsIHBvcnRfb2JqKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzdGRv
dXQuZ2V0dmFsdWUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIiVzOiBPS1xuJXM6IGJh
ZCBjaGVja3N1bSAoc2F2ZWQgaW1hZ2UtY2hlY2tzdW0sIGFjdHVhbCBmb28pXG4iICUgKGltYWdl
X2ZpbGVuYW1lLCBpbWFnZV9maWxlbmFtZSkpCisKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6
CiAgICAgdW5pdHRlc3QubWFpbigpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136991</attachid>
            <date>2012-04-12 16:21:36 -0700</date>
            <delta_ts>2012-05-07 19:39:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68039-20120412162135.patch</filename>
            <type>text/plain</type>
            <size>5507</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0MDE0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTRhYWJjZDc3YmRlNDM5ZGI2YjMyYzg3MDMwNDZlYTBk
MTExNTQ2Ny4uMWZlNTkxOTk5OTNiZDkwMTExNjU2NjA5ODU5NmE4NzNjNTViZDdjNSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMw
IEBACiAyMDEyLTA0LTEyICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCisg
ICAgICAgIG5lZWQgY29tbWFuZCBsaW5lIHV0aWwgdG8gcHJpbnQgcG5nIGNoZWNrc3VtcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjgwMzkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFk
ZHMgYSAnd2Via2l0LXBhdGNoIHByaW50LWNoZWNrc3VtcycgY29tbWFuZCB0aGF0CisgICAgICAg
IHByaW50cyBib3RoIHRoZSBlbWJlZGRlZCBhbmQgY29tcHV0ZWQgKGFjdHVhbCkgY2hlY2tzdW1z
IGZvciBvbmUKKyAgICAgICAgb3IgbW9yZSBQTkdzIGFzIGZlZCB0byB0aGUgY29tbWFuZCBsaW5l
LiBUaGUgUE5HIGRlY29tcHJlc3Npb24KKyAgICAgICAgcm91dGluZSBpcyBwdXJlIHB5dGhvbiwg
d2hpY2ggaXMgc2xvdywgYnV0IGhhcyB0aGUgYWR2YW50YWdlIG9mCisgICAgICAgIGJlaW5nIHBv
cnRhYmxlIGFuZCBub3QgcmVxdWlyaW5nIE4gZGlmZmVyZW50IGltcGxlbWVudGF0aW9ucyBvZgor
ICAgICAgICBJbWFnZURpZmYgdG8gYmUgbW9kaWZpZWQuCisKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9yZWFkX2NoZWNrc3VtX2Zyb21fcG5nLnB5OgorICAgICAgICAo
cmVhZF9jaGVja3N1bSk6CisgICAgICAgIChjb21wdXRlX2NoZWNrc3VtKToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvX19pbml0X18ucHk6CisgICAgICAgIChBdXRvaW5z
dGFsbEltcG9ydEhvb2suZmluZF9tb2R1bGUpOgorICAgICAgICAoQXV0b2luc3RhbGxJbXBvcnRI
b29rLl9pbnN0YWxsX3B5cG5nKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29t
bWFuZHMvcXVlcmllcy5weToKKyAgICAgICAgKFByaW50QmFzZWxpbmVzLl9wbGF0Zm9ybV9mb3Jf
cGF0aCk6CisgICAgICAgIChQcmludENoZWNrc3Vtcyk6CisgICAgICAgIChQcmludENoZWNrc3Vt
cy5leGVjdXRlKToKKworMjAxMi0wNC0xMiAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVt
Lm9yZz4KKwogICAgICAgICB0ZXN0LXdlYmtpdHB5IGZhaWxzIG9uIG1ldGVyZWRfc3RyZWFtX3Vu
aXR0ZXN0IGZvciBub24tVVMgV2VzdCBDb2FzdCBUaW1lIFpvbmVzCiAgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MzU4MwogCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9yZWFkX2NoZWNrc3VtX2Zyb21fcG5nLnB5
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcmVhZF9jaGVja3N1bV9mcm9t
X3BuZy5weQppbmRleCA3MGEwNTAyYjczYmY3NThlZGE1MTY0MmZjMTZmOWI5YzFlZDRkMGFmLi42
M2YyNzQ0MWI0YmMxM2E4NjQyYzU0MjViNTk0Yzg5YzJhMzE4ZjliIDEwMDY0NAotLS0gYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9yZWFkX2NoZWNrc3VtX2Zyb21fcG5nLnB5
CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3JlYWRfY2hlY2tzdW1f
ZnJvbV9wbmcucHkKQEAgLTI3LDYgKzI3LDEwIEBACiAjIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogCitpbXBvcnQgaGFzaGxpYgorCitmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkuYXV0b2lu
c3RhbGxlZC5weXBuZyBpbXBvcnQgcG5nCisKIAogZGVmIHJlYWRfY2hlY2tzdW0oZmlsZWhhbmRs
ZSk6CiAgICAgIyBXZSBleHBlY3QgdGhlIGNvbW1lbnQgdG8gYmUgYXQgdGhlIGJlZ2lubmluZyBv
ZiB0aGUgZmlsZS4KQEAgLTM4LDMgKzQyLDExIEBAIGRlZiByZWFkX2NoZWNrc3VtKGZpbGVoYW5k
bGUpOgogCiAgICAgY2hlY2tzdW1fcG9zID0gY29tbWVudF9wb3MgKyBsZW4oY29tbWVudF9rZXkp
CiAgICAgcmV0dXJuIGRhdGFbY2hlY2tzdW1fcG9zOmNoZWNrc3VtX3BvcyArIDMyXQorCisKK2Rl
ZiBjb21wdXRlX2NoZWNrc3VtKGZpbGVoYW5kbGUpOgorICAgIHJlYWRlciA9IHBuZy5SZWFkZXIo
ZmlsZT1maWxlaGFuZGxlKQorICAgIHdpZHRoLCBoZWlnaHQsIHBpeGVscywgbWV0YWRhdGEgPSBy
ZWFkZXIucmVhZF9mbGF0KCkKKyAgICBtZDUgPSBoYXNobGliLm1kNSgpCisgICAgbWQ1LnVwZGF0
ZShwaXhlbHMpCisgICAgcmV0dXJuIG1kNS5kaWdlc3QoKS5lbmNvZGUoJ2hleF9jb2RlYycpCmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvX19pbml0X18ucHkg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvX19pbml0X18ucHkKaW5kZXggYTBj
ZjBmNGQ0Y2IwYWEzNGU5NDBlNDM1MWRjYzY2M2MyNDY0ZDVhNC4uMTRlNDBiM2ZmMzQ0ZWY3ZDY4
NjBhN2VjM2U5YzM0OGI4ZTU5NzVmZCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90aGlyZHBhcnR5L19faW5pdF9fLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhp
cmRwYXJ0eS9fX2luaXRfXy5weQpAQCAtODQsNiArODQsOCBAQCBjbGFzcyBBdXRvaW5zdGFsbElt
cG9ydEhvb2sob2JqZWN0KToKICAgICAgICAgICAgIHNlbGYuX2luc3RhbGxfcHl3ZWJzb2NrZXQo
KQogICAgICAgICBlbGlmICcuYnVpbGRib3QnIGluIGZ1bGxuYW1lOgogICAgICAgICAgICAgc2Vs
Zi5faW5zdGFsbF9idWlsZGJvdCgpCisgICAgICAgIGVsaWYgJy5weXBuZycgaW4gZnVsbG5hbWU6
CisgICAgICAgICAgICBzZWxmLl9pbnN0YWxsX3B5cG5nKCkKIAogICAgIGRlZiBfaW5zdGFsbF9t
ZWNoYW5pemUoc2VsZik6CiAgICAgICAgIHNlbGYuX2luc3RhbGwoImh0dHA6Ly9weXBpLnB5dGhv
bi5vcmcvcGFja2FnZXMvc291cmNlL20vbWVjaGFuaXplL21lY2hhbml6ZS0wLjIuNS50YXIuZ3oi
LApAQCAtMTM4LDUgKzE0MCwxNCBAQCBjbGFzcyBBdXRvaW5zdGFsbEltcG9ydEhvb2sob2JqZWN0
KToKICAgICAgICAgaW5zdGFsbGVyID0gQXV0b0luc3RhbGxlcih0YXJnZXRfZGlyPV9BVVRPSU5T
VEFMTEVEX0RJUikKICAgICAgICAgaW5zdGFsbGVyLmluc3RhbGwodXJsPXVybCwgdXJsX3N1YnBh
dGg9dXJsX3N1YnBhdGgpCiAKKyAgICBkZWYgX2luc3RhbGxfcHlwbmcoc2VsZik6CisgICAgICAg
IGluc3RhbGxlciA9IEF1dG9JbnN0YWxsZXIodGFyZ2V0X2Rpcj1fQVVUT0lOU1RBTExFRF9ESVIp
CisgICAgICAgIGluc3RhbGxlci5pbnN0YWxsKHVybD0iaHR0cDovL3B5cG5nLmdvb2dsZWNvZGUu
Y29tL2ZpbGVzL3B5cG5nLTAuMC4xMi50YXIuZ3oiLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICB1cmxfc3VicGF0aD0icHlwbmctMC4wLjEyL2NvZGUiLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICB0YXJnZXRfbmFtZT0ncHlwbmcnKQorICAgICAgICBpbml0X3BhdGggPSBmcy5qb2luKF9B
VVRPSU5TVEFMTEVEX0RJUiwgInB5cG5nIiwgIl9faW5pdF9fLnB5IikKKyAgICAgICAgaWYgbm90
IGZzLmV4aXN0cyhpbml0X3BhdGgpOgorICAgICAgICAgICAgZnMud3JpdGVfdGV4dF9maWxlKGlu
aXRfcGF0aCwgIiIpCisKIAogc3lzLm1ldGFfcGF0aC5hcHBlbmQoQXV0b2luc3RhbGxJbXBvcnRI
b29rKCkpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMv
cXVlcmllcy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWVyaWVz
LnB5CmluZGV4IGUxMzYwMjE2ZGI2OWIwNTJmYmQxZDAxOWQxODc3NWU1NTRhMTUxNmUuLmIxYWM0
N2IyYjIzNDBiYWRjMmZmNzUwOWQ2MDhhM2Y3OWJlNTY5NjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWVyaWVzLnB5CisrKyBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWVyaWVzLnB5CkBAIC0yOSw2ICsyOSw3IEBACiAK
IGltcG9ydCBmbm1hdGNoCiBpbXBvcnQgcmUKK2ltcG9ydCBzeXMKIAogZnJvbSBvcHRwYXJzZSBp
bXBvcnQgbWFrZV9vcHRpb24KIApAQCAtNTI3LDMgKzUyOCwyNCBAQCBjbGFzcyBQcmludEJhc2Vs
aW5lcyhBYnN0cmFjdERlY2xhcmF0aXZlQ29tbWFuZCk6CiAgICAgICAgIGlmIHBsYXRmb3JtX21h
dGNob2JqOgogICAgICAgICAgICAgcmV0dXJuIHBsYXRmb3JtX21hdGNob2JqLmdyb3VwKDEpCiAg
ICAgICAgIHJldHVybiBOb25lCisKKworY2xhc3MgUHJpbnRDaGVja3N1bXMoQWJzdHJhY3REZWNs
YXJhdGl2ZUNvbW1hbmQpOgorICAgIG5hbWUgPSAncHJpbnQtY2hlY2tzdW1zJworICAgIGhlbHBf
dGV4dCA9ICdQcmludHMgdGhlIGNoZWNrc3VtcyAoZW1iZWRkZWQgYW5kIGFjdHVhbCkgZm9yIHRo
ZSBnaXZlbiBQTkcocykgKGFuZCB3aGV0aGVyIHRoZXkgbWF0Y2gpJworCisgICAgZGVmIGV4ZWN1
dGUoc2VsZiwgb3B0aW9ucywgYXJncywgdG9vbCk6CisgICAgICAgIHBvcnQgPSB0b29sLnBvcnRf
ZmFjdG9yeS5nZXQoKQorICAgICAgICBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cyBpbXBvcnQg
cmVhZF9jaGVja3N1bV9mcm9tX3BuZworICAgICAgICBmb3IgcGF0aCBpbiBhcmdzOgorICAgICAg
ICAgICAgaWYgbm90IHRvb2wuZmlsZXN5c3RlbS5leGlzdHMocGF0aCk6CisgICAgICAgICAgICAg
ICAgcHJpbnQgPj4gc3lzLnN0ZGVyciwgIiVzIG5vdCBmb3VuZCIgJSBwYXRoCisgICAgICAgICAg
ICAgICAgY29udGludWUKKworICAgICAgICAgICAgd2l0aCB0b29sLmZpbGVzeXN0ZW0ub3Blbl9i
aW5hcnlfZmlsZV9mb3JfcmVhZGluZyhwYXRoKSBhcyBmaWxlX2hhbmRsZToKKyAgICAgICAgICAg
ICAgICBlbWJlZGRlZCA9IHJlYWRfY2hlY2tzdW1fZnJvbV9wbmcucmVhZF9jaGVja3N1bShmaWxl
X2hhbmRsZSkKKyAgICAgICAgICAgIHdpdGggdG9vbC5maWxlc3lzdGVtLm9wZW5fYmluYXJ5X2Zp
bGVfZm9yX3JlYWRpbmcocGF0aCkgYXMgZmlsZV9oYW5kbGU6CisgICAgICAgICAgICAgICAgYWN0
dWFsID0gcmVhZF9jaGVja3N1bV9mcm9tX3BuZy5jb21wdXRlX2NoZWNrc3VtKGZpbGVfaGFuZGxl
KQorCisgICAgICAgICAgICB2ZXJpZnlfc3RyID0gJyBNQVRDSCcgaWYgZW1iZWRkZWQgPT0gYWN0
dWFsIGVsc2UgJyBNSVNNQVRDSCcKKyAgICAgICAgICAgIHByaW50ICIlcyAlcyAlcyVzIiAlIChw
YXRoLCBlbWJlZGRlZCwgYWN0dWFsLCB2ZXJpZnlfc3RyKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140650</attachid>
            <date>2012-05-07 19:39:25 -0700</date>
            <delta_ts>2012-06-28 19:51:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68039-20120507193924.patch</filename>
            <type>text/plain</type>
            <size>21640</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2MTYxCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNDgzYzY0NDZjZWVjYTk0ODU2OTJlNWM0YmQ0OGQ2NTg3
MDNmYTFmMS4uOGViODE0YjE0NWMwMDY0ODgwNTZmNDdmZDcyZmI2MjFhNWNkYzU1NSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMw
IEBACisyMDEyLTA1LTA3ICBEaXJrIFByYW5rZSA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgTmVlZCBjb21tYW5kIGxpbmUgdXRpbCB0byBwcmludCBwbmcgY2hlY2tzdW1zCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODAzOQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgQmFzZWQg
b24gd29yayBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgQWRkIGEgLS1jb21wdXRlLWNoZWNr
c3VtIG9wdGlvbiB0byBJbWFnZURpZmYgZm9yIE1hYworICAgICAgICB0aGF0IHdpbGwgY29tcHV0
ZSBhIGNoZWNrc3VtIGZyb20gdGhlIGltYWdlIGRhdGEsIGFuZAorICAgICAgICBzcGl0IGl0IG91
dCB0byBzdGRvdXQuCisgICAgICAgIAorICAgICAgICBSZXBsYWNlIHJlYWQtY2hlY2tzdW0tZnJv
bS1wbmcgd2l0aCAnd2Via2l0LXBhdGNoIHByaW50LWNoZWNrc3VtcycKKyAgICAgICAgdGhhdCBj
YW4gY2FsbCBJbWFnZURpZmYgd2l0aCB0aGlzIGZsYWcgYW5kIHByaW50IG91dCB3aGV0aGVyIHRo
ZSBjb21wdXRlZCBoYXNoCisgICAgICAgIG1hdGNoZXMgdGhlIG9uZSBzYXZlZCBpbiB0aGUgaW1h
Z2UuCisgICAgICAgIAorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2NnL0ltYWdlRGlmZkNHLmNw
cDoKKyAgICAgICAgKGNvbXB1dGVNRDVIYXNoU3RyaW5nRm9ySW1hZ2UpOgorICAgICAgICAobWFp
bik6CisgICAgICAgICogU2NyaXB0cy9yZWFkLWNoZWNrc3VtLWZyb20tcG5nOiBSZW1vdmVkLgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWVyaWVzLnB5OgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWVyaWVzX3VuaXR0ZXN0LnB5
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdF91bml0
dGVzdC5weToKKwogMjAxMi0wNS0wNCAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBSZXZlcnQgdG8gdXNpbmcgY2hyb21pdW0gLS10ZXN0LXNoZWxsIG1vZGUg
b24gU0wgaW4gTlJXVApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2cvSW1hZ2VE
aWZmQ0cuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2cvSW1hZ2VEaWZmQ0cuY3BwCmluZGV4
IGRiMzU0MzczMDYxZTU1MzViNWM1OThjNmM5YjdmYmViN2Q2NDgxODIuLjFlOGUxMGFiMTA3MDJm
MDY2ZTNhOGMwZjVmMzI3ZjQzOTUzZTc4OWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2NnL0ltYWdlRGlmZkNHLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jZy9JbWFn
ZURpZmZDRy5jcHAKQEAgLTUwLDYgKzUwLDggQEAKICNpbmNsdWRlIDxJbWFnZUlPL0NHSW1hZ2VE
ZXN0aW5hdGlvbi5oPgogCiAjaWYgUExBVEZPUk0oTUFDKQorI2RlZmluZSBDT01NT05fRElHRVNU
X0ZPUl9PUEVOU1NMCisjaW5jbHVkZSA8Q29tbW9uQ3J5cHRvL0NvbW1vbkRpZ2VzdC5oPgogI2lu
Y2x1ZGUgPExhdW5jaFNlcnZpY2VzL1VUQ29yZVR5cGVzLmg+CiAjZW5kaWYKIApAQCAtMTIzLDIx
ICsxMjUsMjEgQEAgc3RhdGljIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjcmVhdGVEaWZmZXJlbmNl
SW1hZ2UoQ0dJbWFnZVJlZiBiYXNlSW1hZ2UsIENHSW1hZ2UKICAgICAgICAgICAgIGZsb2F0IGJs
dWUgPSAocGl4ZWxbMl0gLSBiYXNlUGl4ZWxbMl0pIC8gbWF4PGZsb2F0PigyNTUgLSBiYXNlUGl4
ZWxbMl0sIGJhc2VQaXhlbFsyXSk7CiAgICAgICAgICAgICBmbG9hdCBhbHBoYSA9IChwaXhlbFsz
XSAtIGJhc2VQaXhlbFszXSkgLyBtYXg8ZmxvYXQ+KDI1NSAtIGJhc2VQaXhlbFszXSwgYmFzZVBp
eGVsWzNdKTsKICAgICAgICAgICAgIGZsb2F0IGRpc3RhbmNlID0gc3FydGYocmVkICogcmVkICsg
Z3JlZW4gKiBncmVlbiArIGJsdWUgKiBibHVlICsgYWxwaGEgKiBhbHBoYSkgLyAyLjBmOwotICAg
ICAgICAgICAgCisKICAgICAgICAgICAgICpkaWZmKysgPSAodW5zaWduZWQgY2hhcikoZGlzdGFu
Y2UgKiAyNTUuMGYpOwotICAgICAgICAgICAgCisKICAgICAgICAgICAgIGlmIChkaXN0YW5jZSA+
PSAxLjBmIC8gMjU1LjBmKSB7CiAgICAgICAgICAgICAgICAgY291bnQgKz0gMS4wZjsKICAgICAg
ICAgICAgICAgICBzdW0gKz0gZGlzdGFuY2U7CiAgICAgICAgICAgICAgICAgaWYgKGRpc3RhbmNl
ID4gbWF4RGlzdGFuY2UpCiAgICAgICAgICAgICAgICAgICAgIG1heERpc3RhbmNlID0gZGlzdGFu
Y2U7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgYmFzZVBpeGVs
ICs9IDQ7CiAgICAgICAgICAgICBwaXhlbCArPSA0OwogICAgICAgICB9CiAgICAgfQotICAgIAor
CiAgICAgLy8gQ29tcHV0ZSB0aGUgZGlmZmVyZW5jZSBhcyBhIHBlcmNlbnRhZ2UgY29tYmluaW5n
IGJvdGggdGhlIG51bWJlciBvZiBkaWZmZXJlbnQgcGl4ZWxzIGFuZCB0aGVpciBkaWZmZXJlbmNl
IGFtb3VudCBpLmUuIHRoZSBhdmVyYWdlIGRpc3RhbmNlIG92ZXIgdGhlIGVudGlyZSBpbWFnZQog
ICAgIGlmIChjb3VudCA+IDAuMGYpCiAgICAgICAgIGRpZmZlcmVuY2UgPSAxMDAuMGYgKiBzdW0g
LyAoaGVpZ2h0ICogd2lkdGgpOwpAQCAtMTUyLDI3ICsxNTQsNzAgQEAgc3RhdGljIFJldGFpblB0
cjxDR0ltYWdlUmVmPiBjcmVhdGVEaWZmZXJlbmNlSW1hZ2UoQ0dJbWFnZVJlZiBiYXNlSW1hZ2Us
IENHSW1hZ2UKICAgICAgICAgICAgIGZvcihzaXplX3QgcCA9IDA7IHAgPCBoZWlnaHQgKiB3aWR0
aDsgKytwKQogICAgICAgICAgICAgICAgIGRpZmZbcF0gPSBkaWZmW3BdIC8gbWF4RGlzdGFuY2U7
CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgc3RhdGljIENHQ29sb3JTcGFjZVJlZiBk
aWZmQ29sb3JzcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZURldmljZUdyYXkoKTsKICAgICAgICAg
UmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBwcm92aWRlcihBZG9wdENGLCBDR0RhdGFQcm92
aWRlckNyZWF0ZVdpdGhEYXRhKDAsIGRpZmZCdWZmZXIsIHdpZHRoICogaGVpZ2h0LCByZWxlYXNl
TWFsbG9jQnVmZmVyKSk7CiAgICAgICAgIGRpZmZJbWFnZS5hZG9wdENGKENHSW1hZ2VDcmVhdGUo
d2lkdGgsIGhlaWdodCwgOCwgOCwgd2lkdGgsIGRpZmZDb2xvcnNwYWNlLCAwLCBwcm92aWRlci5n
ZXQoKSwgMCwgZmFsc2UsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpKTsKICAgICB9CiAgICAg
ZWxzZQogICAgICAgICBmcmVlKGRpZmZCdWZmZXIpOwotICAgIAorCiAgICAgLy8gRGVzdHJveSBk
cmF3aW5nIGJ1ZmZlcnMKICAgICBpZiAoYnVmZmVyKQogICAgICAgICBmcmVlKGJ1ZmZlcik7CiAg
ICAgaWYgKGJhc2VCdWZmZXIpCiAgICAgICAgIGZyZWUoYmFzZUJ1ZmZlcik7Ci0gICAgCisKICAg
ICByZXR1cm4gZGlmZkltYWdlOwogfQogCisvLyBGSVhNRTogZHVwbGljYXRlZCBmcm9tIFBpeGVs
RHVtcFN1cHBvcnRDRywgYnV0IHRoYXQgaGFzIGRlcGVuZGVuY2llcyB0aGF0IEltYWdlRGlmZiBk
b2Vzbid0IHdhbnQuCit2b2lkIGNvbXB1dGVNRDVIYXNoU3RyaW5nRm9ySW1hZ2UoQ0dJbWFnZVJl
ZiBpbWFnZSwgY2hhciBoYXNoU3RyaW5nWzMzXSkKK3sKKyAgICBzaXplX3QgcGl4ZWxzV2lkZSA9
IENHSW1hZ2VHZXRXaWR0aChpbWFnZSk7CisgICAgc2l6ZV90IHBpeGVsc0hpZ2ggPSBDR0ltYWdl
R2V0SGVpZ2h0KGltYWdlKTsKKyAgICBzaXplX3QgYnl0ZXNQZXJSb3cgPSAoNCAqIHBpeGVsc1dp
ZGUgKyA2MykgJiB+NjM7CisgICAgdm9pZCogYnVmZmVyID0gY2FsbG9jKHBpeGVsc0hpZ2gsIGJ5
dGVzUGVyUm93KTsKKworICAgIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlID0gQ0dDb2xvclNw
YWNlQ3JlYXRlRGV2aWNlUkdCKCk7CisgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBDR0JpdG1h
cENvbnRleHRDcmVhdGUoYnVmZmVyLCBwaXhlbHNXaWRlLCBwaXhlbHNIaWdoLCA4LCBieXRlc1Bl
clJvdywgY29sb3JTcGFjZSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCB8IGtDR0Jp
dG1hcEJ5dGVPcmRlcjMySG9zdCk7CisgICAgQ0dDb2xvclNwYWNlUmVsZWFzZShjb2xvclNwYWNl
KTsKKworICAgIENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0LCBDR1JlY3RNYWtlKDAsIDAsIHBp
eGVsc1dpZGUsIHBpeGVsc0hpZ2gpLCBpbWFnZSk7CisKKyAgICAvLyBXZSBuZWVkIHRvIHN3YXAg
dGhlIGJ5dGVzIHRvIGVuc3VyZSBjb25zaXN0ZW50IGhhc2hlcyBpbmRlcGVuZGVudGx5IG9mIGVu
ZGlhbm5lc3MKKyAgICBNRDVfQ1RYIG1kNUNvbnRleHQ7CisgICAgTUQ1X0luaXQoJm1kNUNvbnRl
eHQpOworICAgIHVuc2lnbmVkIGNoYXIqIGJpdG1hcERhdGEgPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBjaGFyKj4oQ0dCaXRtYXBDb250ZXh0R2V0RGF0YShjb250ZXh0KSk7CisjaWYgUExBVEZPUk0o
TUFDKQorICAgIGlmICgoQ0dCaXRtYXBDb250ZXh0R2V0Qml0bWFwSW5mbyhjb250ZXh0KSAmIGtD
R0JpdG1hcEJ5dGVPcmRlck1hc2spID09IGtDR0JpdG1hcEJ5dGVPcmRlcjMyQmlnKSB7CisgICAg
ICAgIGZvciAodW5zaWduZWQgcm93ID0gMDsgcm93IDwgcGl4ZWxzSGlnaDsgcm93KyspIHsKKyAg
ICAgICAgICAgIHVpbnQzMl90IGJ1ZmZlcltwaXhlbHNXaWRlXTsKKyAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgY29sdW1uID0gMDsgY29sdW1uIDwgcGl4ZWxzV2lkZTsgY29sdW1uKyspCisgICAg
ICAgICAgICAgICAgYnVmZmVyW2NvbHVtbl0gPSBPU1JlYWRMaXR0bGVJbnQzMihiaXRtYXBEYXRh
LCA0ICogY29sdW1uKTsKKyAgICAgICAgICAgIE1ENV9VcGRhdGUoJm1kNUNvbnRleHQsIGJ1ZmZl
ciwgNCAqIHBpeGVsc1dpZGUpOworICAgICAgICAgICAgYml0bWFwRGF0YSArPSBieXRlc1BlclJv
dzsKKyAgICAgICAgfQorICAgIH0gZWxzZQorI2VuZGlmCisgICAgeworICAgICAgICBmb3IgKHVu
c2lnbmVkIHJvdyA9IDA7IHJvdyA8IHBpeGVsc0hpZ2g7IHJvdysrKSB7CisgICAgICAgICAgICBN
RDVfVXBkYXRlKCZtZDVDb250ZXh0LCBiaXRtYXBEYXRhLCA0ICogcGl4ZWxzV2lkZSk7CisgICAg
ICAgICAgICBiaXRtYXBEYXRhICs9IGJ5dGVzUGVyUm93OworICAgICAgICB9CisgICAgfQorICAg
IHVuc2lnbmVkIGNoYXIgaGFzaFsxNl07CisgICAgTUQ1X0ZpbmFsKGhhc2gsICZtZDVDb250ZXh0
KTsKKworICAgIGhhc2hTdHJpbmdbMF0gPSAnXDAnOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
MTY7IGkrKykKKyAgICAgICAgc25wcmludGYoaGFzaFN0cmluZywgMzMsICIlcyUwMngiLCBoYXNo
U3RyaW5nLCBoYXNoW2ldKTsKK30KKwogc3RhdGljIGlubGluZSBib29sIGltYWdlSGFzQWxwaGEo
Q0dJbWFnZVJlZiBpbWFnZSkKIHsKICAgICBDR0ltYWdlQWxwaGFJbmZvIGluZm8gPSBDR0ltYWdl
R2V0QWxwaGFJbmZvKGltYWdlKTsKLSAgICAKKwogICAgIHJldHVybiAoaW5mbyA+PSBrQ0dJbWFn
ZUFscGhhUHJlbXVsdGlwbGllZExhc3QpICYmIChpbmZvIDw9IGtDR0ltYWdlQWxwaGFGaXJzdCk7
CiB9CiAKQEAgLTE4Myw3ICsyMjgsOCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY29uc3QgY2hhciog
YXJndltdKQogICAgIF9zZXRtb2RlKDEsIF9PX0JJTkFSWSk7CiAjZW5kaWYKIAotICAgIGZsb2F0
IHRvbGVyYW5jZSA9IDAuMGY7CisgICAgZmxvYXQgdG9sZXJhbmNlID0gMDsKKyAgICBib29sIGNv
bXB1dGVDaGVja3N1bSA9IGZhbHNlOwogCiAgICAgZm9yIChpbnQgaSA9IDE7IGkgPCBhcmdjOyAr
K2kpIHsKICAgICAgICAgaWYgKCFzdHJjbXAoYXJndltpXSwgIi10IikgfHwgIXN0cmNtcChhcmd2
W2ldLCAiLS10b2xlcmFuY2UiKSkgewpAQCAtMTkxLDggKzIzNyw4IEBAIGludCBtYWluKGludCBh
cmdjLCBjb25zdCBjaGFyKiBhcmd2W10pCiAgICAgICAgICAgICAgICAgZXhpdCgxKTsKICAgICAg
ICAgICAgIHRvbGVyYW5jZSA9IHN0cnRvZihhcmd2W2kgKyAxXSwgMCk7CiAgICAgICAgICAgICAr
K2k7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYg
KCFzdHJjbXAoYXJndltpXSwgIi0tY29tcHV0ZS1jaGVja3N1bSIpKQorICAgICAgICAgICAgY29t
cHV0ZUNoZWNrc3VtID0gdHJ1ZTsKICAgICB9CiAKICAgICBjaGFyIGJ1ZmZlclsyMDQ4XTsKQEAg
LTIxNyw2ICsyNjMsMTIgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNvbnN0IGNoYXIqIGFyZ3ZbXSkK
ICAgICAgICAgICAgICAgICBmcHV0cygiZXJyb3IsIGltYWdlIHNpemUgbXVzdCBiZSBzcGVjaWZp
ZWQuXG4iLCBzdGRlcnIpOwogICAgICAgICB9CiAKKyAgICAgICAgaWYgKGNvbXB1dGVDaGVja3N1
bSAmJiBhY3R1YWxJbWFnZSkgeworICAgICAgICAgICAgY2hhciBhY3R1YWxIYXNoWzMzXTsKKyAg
ICAgICAgICAgIGNvbXB1dGVNRDVIYXNoU3RyaW5nRm9ySW1hZ2UoYWN0dWFsSW1hZ2UuZ2V0KCks
IGFjdHVhbEhhc2gpOworICAgICAgICAgICAgcHJpbnRmKCIlc1xuIiwgYWN0dWFsSGFzaCk7Cisg
ICAgICAgIH0KKwogICAgICAgICBpZiAoYWN0dWFsSW1hZ2UgJiYgYmFzZWxpbmVJbWFnZSkgewog
ICAgICAgICAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGRpZmZJbWFnZTsKICAgICAgICAgICAg
IGZsb2F0IGRpZmZlcmVuY2UgPSAxMDAuMGY7CkBAIC0yNDUsNyArMjk3LDcgQEAgaW50IG1haW4o
aW50IGFyZ2MsIGNvbnN0IGNoYXIqIGFyZ3ZbXSkKICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0
ZG91dCwgImRpZmY6ICUwMS4yZiUlIGZhaWxlZFxuIiwgZGlmZmVyZW5jZSk7CiAgICAgICAgICAg
ICB9IGVsc2UKICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZG91dCwgImRpZmY6ICUwMS4yZiUl
IHBhc3NlZFxuIiwgZGlmZmVyZW5jZSk7Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgYWN0
dWFsSW1hZ2UgPSAwOwogICAgICAgICAgICAgYmFzZWxpbmVJbWFnZSA9IDA7CiAgICAgICAgIH0K
ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvcmVhZC1jaGVja3N1bS1mcm9tLXBuZyBiL1Rvb2xz
L1NjcmlwdHMvcmVhZC1jaGVja3N1bS1mcm9tLXBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUK
aW5kZXggYWIwOGIyNTNiOWM3MzBmMjJiOThjYTQxZmY2NjM4ODQ1NTExZDZjZi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9TY3JpcHRzL3JlYWQt
Y2hlY2tzdW0tZnJvbS1wbmcKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi0jIS91c3Iv
YmluL2VudiBweXRob24KLSMgQ29weXJpZ2h0IChjKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMK
LSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQot
IyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwot
IyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
Ci0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0
IHdpdGhfc3RhdGVtZW50Ci1pbXBvcnQgc3lzCi0KLWZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3Rz
IGltcG9ydCByZWFkX2NoZWNrc3VtX2Zyb21fcG5nCi0KLQotaWYgJ19fbWFpbl9fJyA9PSBfX25h
bWVfXzoKLSAgICBmb3IgZmlsZW5hbWUgaW4gc3lzLmFyZ3ZbMTpdOgotICAgICAgICB3aXRoIG9w
ZW4oZmlsZW5hbWUsICdyJykgYXMgZmlsZWhhbmRsZToKLSAgICAgICAgICAgIHByaW50ICIlczog
JXMiICUgKHJlYWRfY2hlY2tzdW1fZnJvbV9wbmcucmVhZF9jaGVja3N1bShmaWxlaGFuZGxlKSwg
ZmlsZW5hbWUpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L2Jhc2UucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2Jhc2UucHkKaW5kZXggZWE5MjI1YjcyNzBiZTkwNzhjNmM1ZWI5YjQzZTk5YmEyOTg5NTg1YS4u
NGY3OTgyZjBhZTkzOGQ0NDZjYWFmYjc0OWQ3ZjdiYTY4ZmU2Y2VhNyAxMDA3NTUKLS0tIGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CisrKyBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQpAQCAtMjcxLDYgKzI3
MSw5IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAgICAgIiIiCiAgICAgICAgIHJhaXNlIE5v
dEltcGxlbWVudGVkRXJyb3IoJ1BvcnQuZGlmZl9pbWFnZScpCiAKKyAgICBkZWYgY29tcHV0ZV9p
bWFnZV9jaGVja3N1bShzZWxmLCBwYXRoKToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRF
cnJvcignUG9ydC5jb21wdXRlX2ltYWdlX2NoZWNrc3VtJykKKwogICAgIGRlZiBkaWZmX3RleHQo
c2VsZiwgZXhwZWN0ZWRfdGV4dCwgYWN0dWFsX3RleHQsIGV4cGVjdGVkX2ZpbGVuYW1lLCBhY3R1
YWxfZmlsZW5hbWUpOgogICAgICAgICAiIiJSZXR1cm5zIGEgc3RyaW5nIGNvbnRhaW5pbmcgdGhl
IGRpZmYgb2YgdGhlIHR3byB0ZXh0IHN0cmluZ3MKICAgICAgICAgaW4gJ3VuaWZpZWQgZGlmZicg
Zm9ybWF0LiIiIgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC93ZWJraXQucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L3dlYmtpdC5weQppbmRleCBhNDFkNjJlMzI4MzQ4NTVmMDZhNGJjODQ5NDI3ZjVjNjViMzI5
MWQzLi42MmYwNTE1MDdkYjI0N2VlNjJiNjIxYTg1YTA5ODcyYzdkMDJiYjZjIDEwMDY0NAotLS0g
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weQorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weQpAQCAt
MjI3LDYgKzIyNywxMyBAQCBjbGFzcyBXZWJLaXRQb3J0KFBvcnQpOgogCiAgICAgICAgIHJldHVy
biAob3V0cHV0X2ltYWdlLCBkaWZmX3BlcmNlbnQpCiAKKyAgICBkZWYgY29tcHV0ZV9pbWFnZV9j
aGVja3N1bShzZWxmLCBwYXRoKToKKyAgICAgICAgIyBJZiB3ZSBlbmQgdXAgY2FsbGluZyB0aGlz
IGZyZXF1ZW50bHkgaXQgbWlnaHQgbWFrZSBzZW5zZSB0byBydW4gSW1hZ2VEaWZmCisgICAgICAg
ICMgdW5kZXIgU2VydmVyUHJvY2VzcyBzbyB3ZSBkaWRuJ3QgbGF1bmNoIGEgbmV3IHByb2Nlc3Mg
Zm9yIGV2ZXIgY2FsbC4KKyAgICAgICAgaW1hZ2VfY29udGVudHMgPSBzZWxmLl9maWxlc3lzdGVt
LnJlYWRfYmluYXJ5X2ZpbGUocGF0aCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX2V4ZWN1dGl2ZS5y
dW5fY29tbWFuZChbc2VsZi5fcGF0aF90b19pbWFnZV9kaWZmKCksICctLWNvbXB1dGUtY2hlY2tz
dW0nXSwKKyAgICAgICAgICAgIGlucHV0PSdDb250ZW50LUxlbmd0aDogJWRcbiVzJyAlIChsZW4o
aW1hZ2VfY29udGVudHMpLCBpbWFnZV9jb250ZW50cykpLnN0cmlwKCkKKwogICAgIGRlZiBzZXR1
cF9lbnZpcm9uX2Zvcl9zZXJ2ZXIoc2VsZiwgc2VydmVyX25hbWU9Tm9uZSk6CiAgICAgICAgIGNs
ZWFuX2VudiA9IHN1cGVyKFdlYktpdFBvcnQsIHNlbGYpLnNldHVwX2Vudmlyb25fZm9yX3NlcnZl
cihzZXJ2ZXJfbmFtZSkKICAgICAgICAgc2VsZi5fY29weV92YWx1ZV9mcm9tX2Vudmlyb25faWZf
c2V0KGNsZWFuX2VudiwgJ1dFQktJVF9URVNURk9OVFMnKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXRfdW5pdHRlc3QucHkgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdF91bml0dGVzdC5weQpp
bmRleCA2MzUwMmE1NzAxNTFlMmFlNTI2NzllZTNkNTBmM2YwMTQ0MjA2ZTQ2Li4zOWQ2NDYzYmU2
Y2FlNzRhYjUyYTAyMzY3MDIxZjVlM2QwZGQ0YmJhIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdF91bml0dGVzdC5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdF91bml0dGVzdC5weQpA
QCAtMjgsNyArMjgsNyBAQAogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCB1bml0dGVzdAogCi1mcm9t
IHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlX21vY2sgaW1wb3J0IE1vY2tFeGVjdXRp
dmUKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmVfbW9jayBpbXBvcnQgTW9j
a0V4ZWN1dGl2ZSwgTW9ja0V4ZWN1dGl2ZTIKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5m
aWxlc3lzdGVtX21vY2sgaW1wb3J0IE1vY2tGaWxlU3lzdGVtCiBmcm9tIHdlYmtpdHB5LmNvbW1v
bi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQogZnJvbSB3ZWJraXRw
eS5jb21tb24uc3lzdGVtLnN5c3RlbWhvc3RfbW9jayBpbXBvcnQgTW9ja1N5c3RlbUhvc3QKQEAg
LTIzOCw2ICsyMzgsMTMgQEAgY2xhc3MgV2ViS2l0UG9ydFRlc3QocG9ydF90ZXN0Y2FzZS5Qb3J0
VGVzdENhc2UpOgogICAgICAgICBwb3J0Ll9hcGFjaGVfY29uZmlnX2ZpbGVfbmFtZV9mb3JfcGxh
dGZvcm0gPSBsYW1iZGEgcGxhdGZvcm06ICdodHRwZC5jb25mJwogICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFscyhwb3J0Ll9wYXRoX3RvX2FwYWNoZV9jb25maWdfZmlsZSgpLCAnL21vY2stY2hlY2tv
dXQvTGF5b3V0VGVzdHMvaHR0cC9jb25mL2h0dHBkLmNvbmYnKQogCisgICAgZGVmIHRlc3RfY29t
cHV0ZV9pbWFnZV9jaGVja3N1bShzZWxmKToKKyAgICAgICAgcG9ydCA9IHNlbGYubWFrZV9wb3J0
KCkKKyAgICAgICAgcG9ydC5fZXhlY3V0aXZlID0gTW9ja0V4ZWN1dGl2ZTIob3V0cHV0PSdNT0NL
IGhhc2gnKQorICAgICAgICBwb3J0Ll9maWxlc3lzdGVtLndyaXRlX2JpbmFyeV9maWxlKCcvbW9j
ay1jaGVja291dC9MYXlvdXRUZXN0cy9wYXNzZXMvaW1hZ2UtZXhwZWN0ZWQucG5nJywgJ21vY2sg
ZGF0YScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHBvcnQuY29tcHV0ZV9pbWFnZV9jaGVj
a3N1bSgnL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvcGFzc2VzL2ltYWdlLWV4cGVjdGVkLnBu
ZycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnTU9DSyBoYXNoJykKKwogCiBjbGFzcyBN
b2NrU2VydmVyUHJvY2VzcyhvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsaW5lcz1O
b25lKToKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Jl
YWRfY2hlY2tzdW1fZnJvbV9wbmdfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9yZWFkX2NoZWNrc3VtX2Zyb21fcG5nX3VuaXR0ZXN0LnB5CmluZGV4IDcz
NzU3NDFhYzIxMTc0NTFlOGQ4M2YxZTFhMmQyNjEwNTI5NjExMWIuLjc1Yjc5NWYwOWUzN2JjOWNj
YWU3NzU0NzUwYmUyY2M0Y2IyZTE3YzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3JlYWRfY2hlY2tzdW1fZnJvbV9wbmdfdW5pdHRlc3QucHkKKysrIGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcmVhZF9jaGVja3N1bV9mcm9tX3Bu
Z191bml0dGVzdC5weQpAQCAtMjgsMTEgKzI4LDE0IEBAIGZyb20gd2Via2l0cHkubGF5b3V0X3Rl
c3RzIGltcG9ydCByZWFkX2NoZWNrc3VtX2Zyb21fcG5nCiAKIAogY2xhc3MgUmVhZENoZWNrc3Vt
RnJvbVBuZ1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIENIRUNLU1VNID0gJzNjNDEzNGZl
MjczOTg4MDM1M2Y5MWM1Yjg0Y2FkYmFhJworICAgIFBOR19XSVRIX0NPTU1FTlQgPSAnJydceDg5
UE5HXHJcblx4MWFcblx4MDBceDAwXHgwMFxySUhEUlx4MDBceDAwXHgwMyBceDAwXHgwMFx4MDJY
XHgwOFx4MDJceDAwXHgwMFx4MDBceDE1XHgxNFx4MTUnXHgwMFx4MDBceDAwKXRFWHRjaGVja3N1
bVx4MDAlc0NceGI4P1x4ZWNceDAwXHgwMFx4MTZceGZlSURBVHhceDljXHhlZFx4ZGRbXHg4Y1Vc
eGU1XHhjMVx4ZmZceGYxNVRceDE4XHgwZWEsKVx4YTZceDgwWFo8XHgxMFxuXHhkNkhceGM0Vlx4
ODh9XHhiNVx4YTlceGQ2clx4ZDVceDBia2kwXHhhNlx4YjVpaFx4ZDJceGRlXHg5OFBIelx4ZDFc
eDAyPVxccSNceDAxXHg4Ylx4YTVySlx4OGJceDg4aVx4YWNNXHhjNWhceDhjYk1rKFx4MWV6QCFc
eDBjXHhkNVx4ZDJceGMyXHhiNDRceDFjXHg4NDhceDFkRihceGViXHg3Zlx4YjFceGZmXHhkOVx4
ZWZ+Z1x4ZDZceGRlM1x4ZTBvXHgxMFx4ZWNceGU3c2E2e1x4ZDZ6XHhkNlx4YjNceGQ3XHhmM1x4
YThfN1x4ZGJNW1lceDk2XHgwNVx4MDBceDAwOVx4YzNceGRlXHhlYlx0XHgwMFx4MDBceGJjXHhk
Zlx4MDgsXHgwMFx4ODAwXHg4MVx4MDVceDAwXHgxMCZceGIwXHgwMFx4MDBceGMyXHgwNFx4MTZc
eDAwQFx4OThceGMwXHgwMlx4MDBceDA4XHgxM1hceDAwXHgwMGFceDAyXHgwYlx4MDAgTBx4MDFc
eDAwXHg4NFx0LFx4MDBceDgwMFx4ODFceDA1XHgwMFx4MTBceGQ2NFx4YjBceGRhXHg5YVx4ZGJc
eGI2bVx4ZGJceGI0aVx4ZDNceGZhXHg5ZnJceGYzXHhjZDdceDBmXHhlNVRceDA3XHhlNVx4ZDRc
eGE5JycnICUgQ0hFQ0tTVU0KKwogICAgIGRlZiB0ZXN0X3JlYWRfY2hlY2tzdW0oc2VsZik6CiAg
ICAgICAgICMgVGVzdCBhIGZpbGUgd2l0aCB0aGUgY29tbWVudC4KLSAgICAgICAgZmlsZWhhbmRs
ZSA9IFN0cmluZ0lPLlN0cmluZ0lPKCcnJ1x4ODlQTkdcclxuXHgxYVxuXHgwMFx4MDBceDAwXHJJ
SERSXHgwMFx4MDBceDAzIFx4MDBceDAwXHgwMlhceDA4XHgwMlx4MDBceDAwXHgwMFx4MTVceDE0
XHgxNSdceDAwXHgwMFx4MDApdEVYdGNoZWNrc3VtXHgwMDNjNDEzNGZlMjczOTg4MDM1M2Y5MWM1
Yjg0Y2FkYmFhQ1x4Yjg/XHhlY1x4MDBceDAwXHgxNlx4ZmVJREFUeFx4OWNceGVkXHhkZFtceDhj
VVx4ZTVceGMxXHhmZlx4ZjE1VFx4MThceDBlYSwpXHhhNlx4ODBYWjxceDEwXG5ceGQ2SFx4YzRW
XHg4OH1ceGI1XHhhOVx4ZDZyXHhkNVx4MGJraTBceGE2XHhiNWloXHhkMlx4ZGVceDk4UEh6XHhk
MVx4MDI9XFxxI1x4MDFceDhiXHhhNXJKXHg4Ylx4ODhpXHhhY01ceGM1aFx4OGNiTWsoXHgxZXpA
IVx4MGNceGQ1XHhkMlx4YzJceGI0NFx4MWNceDg0OFx4MWRGKFx4ZWJceDdmXHhiMVx4ZmZceGQ5
XHhlZn5nXHhkNlx4ZGUzXHhlMG9ceDEwXHhlY1x4ZTdzYTZ7XHhkNnpceGQ2XHhiM1x4ZDdceGYz
XHhhOF83XHhkYk1bWVx4OTZceDA1XHgwMFx4MDA5XHhjM1x4ZGVceGViXHRceDAwXHgwMFx4YmNc
eGRmXHgwOCxceDAwXHg4MDBceDgxXHgwNVx4MDBceDEwJlx4YjBceDAwXHgwMFx4YzJceDA0XHgx
Nlx4MDBAXHg5OFx4YzBceDAyXHgwMFx4MDhceDEzWFx4MDBceDAwYVx4MDJceDBiXHgwMCBMHHgw
MVx4MDBceDg0XHQsXHgwMFx4ODAwXHg4MVx4MDVceDAwXHgxMFx4ZDY0XHhiMFx4ZGFceDlhXHhk
Ylx4YjZtXHhkYlx4YjRpXHhkM1x4ZmFceDlmclx4ZjNceGNkN1x4MGZceGU1VFx4MDdceGU1XHhk
NFx4YTknJycpCisgICAgICAgIGZpbGVoYW5kbGUgPSBTdHJpbmdJTy5TdHJpbmdJTyhzZWxmLlBO
R19XSVRIX0NPTU1FTlQpCiAgICAgICAgIGNoZWNrc3VtID0gcmVhZF9jaGVja3N1bV9mcm9tX3Bu
Zy5yZWFkX2NoZWNrc3VtKGZpbGVoYW5kbGUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCcz
YzQxMzRmZTI3Mzk4ODAzNTNmOTFjNWI4NGNhZGJhYScsIGNoZWNrc3VtKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFscyhzZWxmLkNIRUNLU1VNLCBjaGVja3N1bSkKIAogICAgICAgICAjIFRlc3Qg
YSBmaWxlIHdpdGhvdXQgdGhlIGNvbW1lbnQuCiAgICAgICAgIGZpbGVoYW5kbGUgPSBTdHJpbmdJ
Ty5TdHJpbmdJTygnJydceDg5UE5HXHJcblx4MWFcblx4MDBceDAwXHgwMFxySUhEUlx4MDBceDAw
XHgwMyBceDAwXHgwMFx4MDJYXHgwOFx4MDJceDAwXHgwMFx4MDBceDE1XHgxNFx4MTUnXHgwMFx4
MDBceDE2XHhmZUlEQVR4XHg5Y1x4ZWRceGRkW1x4OGNVXHhlNVx4YzFceGZmXHhmMTVUXHgxOFx4
MGVhLClceGE2XHg4MFhaPFx4MTBcblx4ZDZIXHhjNFZceDg4fVx4YjVceGE5XHhkNnJceGQ1XHgw
YmtpMFx4YTZceGI1aWhceGQyXHhkZVx4OThQSHpceGQxXHgwMj1cXHEjXHgwMVx4OGJceGE1ckpc
eDhiXHg4OGlceGFjTVx4YzVoXHg4Y2JNayhceDFlekAhXHgwY1x4ZDVceGQyXHhjMlx4YjQ0XHgx
Y1x4ODQ4XHgxZEYoXHhlYlx4N2ZceGIxXHhmZlx4ZDlceGVmfmdceGQ2XHhkZTNceGUwb1x4MTBc
eGVjXHhlN3NhNntceGQ2elx4ZDZceGIzXHhkN1x4ZjNceGE4XzdceGRiTVtZXHg5Nlx4MDVceDAw
XHgwMDlceGMzXHhkZVx4ZWJcdFx4MDBceDAwXHhiY1x4ZGZceDA4LFx4MDBceDgwMFx4ODFceDA1
XHgwMFx4MTAmXHhiMFx4MDBceDAwXHhjMlx4MDRceDE2XHgwMEBceDk4XHhjMFx4MDJceDAwXHgw
OFx4MTNYXHgwMFx4MDBhXHgwMlx4MGJceDAwIEwceDAxXHgwMFx4ODRcdCxceDAwXHg4MDBceDgx
XHgwNVx4MDBceDEwXHhkNjRceGIwXHhkYVx4OWFceGRiXHhiNm1ceGRiXHhiNGlceGQzXHhmYVx4
OWZyXHhmM1x4Y2Q3XHgwZlx4ZTVUXHgwN1x4ZTVceGQ0XHhhOVNceDhiXHgxNy9ceDFlP35ceGZj
XHhmOFx4ZjFceGUzXHhlZlx4YmZceGZmXHhmZVx4Zjd6Ok01XHhiYlx4ODdceDE3XHhjYlVaXHg4
ZnxWXHhkN1x4YmRceDEwXHhiNlx4Y2R7Ylx4ODhceGY2alx4YjNceDliP1x4MTRceDliXHhhMT5c
eGU2XHhmOVx4ZDlceGNmXHgwMFx4MTdceDkzJycnKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXJpZXMucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3Rvb2wvY29tbWFuZHMvcXVlcmllcy5weQppbmRleCBlZTQ3NmY5NTM1YTU3MjFlOTI0NmZj
YWY5YmNhMjE5YmQ3OTI2YzJkLi5mNWFmYTFhOGQ2ZjNkYTYxYjRhNmMyOTBlMDU5MjEzNDQxMWQx
MDkxIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVl
cmllcy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVlcmll
cy5weQpAQCAtMjksNiArMjksNyBAQAogCiBpbXBvcnQgZm5tYXRjaAogaW1wb3J0IHJlCitpbXBv
cnQgc3lzCiAKIGZyb20gb3B0cGFyc2UgaW1wb3J0IG1ha2Vfb3B0aW9uCiAKQEAgLTUyNywzICs1
MjgsMzcgQEAgY2xhc3MgUHJpbnRCYXNlbGluZXMoQWJzdHJhY3REZWNsYXJhdGl2ZUNvbW1hbmQp
OgogICAgICAgICBpZiBwbGF0Zm9ybV9tYXRjaG9iajoKICAgICAgICAgICAgIHJldHVybiBwbGF0
Zm9ybV9tYXRjaG9iai5ncm91cCgxKQogICAgICAgICByZXR1cm4gTm9uZQorCisKK2NsYXNzIFBy
aW50Q2hlY2tzdW1zKEFic3RyYWN0RGVjbGFyYXRpdmVDb21tYW5kKToKKyAgICBuYW1lID0gJ3By
aW50LWNoZWNrc3VtcycKKyAgICBoZWxwX3RleHQgPSAnUHJpbnRzIHRoZSBjaGVja3N1bXMgKGVt
YmVkZGVkIGFuZCBhY3R1YWwpIGZvciB0aGUgZ2l2ZW4gUE5HKHMpIChhbmQgd2hldGhlciB0aGV5
IG1hdGNoKScKKworICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgb3B0aW9ucyA9IFsK
KyAgICAgICAgICAgIG1ha2Vfb3B0aW9uKCctLXZhbGlkYXRlJywgYWN0aW9uPSdzdG9yZV90cnVl
JywgZGVmYXVsdD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3JlY29tcHV0
ZS92YWxpZGF0ZSBjaGVja3N1bXMgdXNpbmcgSW1hZ2VEaWZmIChvbmx5IHdvcmtzIHdpdGggQXBw
bGUgTWFjIGN1cnJlbnRseSknKSwKKyAgICAgICAgXQorICAgICAgICBBYnN0cmFjdERlY2xhcmF0
aXZlQ29tbWFuZC5fX2luaXRfXyhzZWxmLCBvcHRpb25zPW9wdGlvbnMpCisKKyAgICBkZWYgZXhl
Y3V0ZShzZWxmLCBvcHRpb25zLCBhcmdzLCB0b29sKToKKyAgICAgICAgZnJvbSB3ZWJraXRweS5s
YXlvdXRfdGVzdHMgaW1wb3J0IHJlYWRfY2hlY2tzdW1fZnJvbV9wbmcKKyAgICAgICAgZm9yIHBh
dGggaW4gYXJnczoKKyAgICAgICAgICAgIGlmIG5vdCB0b29sLmZpbGVzeXN0ZW0uZXhpc3RzKHBh
dGgpOgorICAgICAgICAgICAgICAgIHByaW50ID4+IHN5cy5zdGRlcnIsICIlcyBub3QgZm91bmQi
ICUgcGF0aAorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIHdpdGggdG9v
bC5maWxlc3lzdGVtLm9wZW5fYmluYXJ5X2ZpbGVfZm9yX3JlYWRpbmcocGF0aCkgYXMgZmlsZV9o
YW5kbGU6CisgICAgICAgICAgICAgICAgZW1iZWRkZWQgPSByZWFkX2NoZWNrc3VtX2Zyb21fcG5n
LnJlYWRfY2hlY2tzdW0oZmlsZV9oYW5kbGUpCisKKyAgICAgICAgICAgIGlmIG5vdCBvcHRpb25z
LnZhbGlkYXRlOgorICAgICAgICAgICAgICAgIHByaW50ICIlczogJXMiICUgKGVtYmVkZGVkLCBw
YXRoKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIHBvcnQgPSB0b29s
LnBvcnRfZmFjdG9yeS5nZXQoKQorICAgICAgICAgICAgYWN0dWFsID0gcG9ydC5jb21wdXRlX2lt
YWdlX2NoZWNrc3VtKHBhdGgpCisKKyAgICAgICAgICAgIGlmIGVtYmVkZGVkID09IGFjdHVhbDoK
KyAgICAgICAgICAgICAgICBwcmludCAiJXM6IE9LIiAlIChwYXRoKQorICAgICAgICAgICAgZWxz
ZToKKyAgICAgICAgICAgICAgICBwcmludCAiJXM6IGJhZCBjaGVja3N1bSAoc2F2ZWQgJXMsIGFj
dHVhbCAlcykiICUgKHBhdGgsIGVtYmVkZGVkLCBhY3R1YWwpCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVlcmllc191bml0dGVzdC5weSBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWVyaWVzX3VuaXR0ZXN0LnB5CmluZGV4
IDBmYjU5YTg1M2UxYzVmYjU2MDIxYzIyYzgyYTIzMjI2OGZlNDEzNjYuLjRjM2NjZTExNjU1MWMz
OTRiZjM1Y2E3ODY3OTQ1YTk0Nzk0NzQ5YjIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9jb21tYW5kcy9xdWVyaWVzX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWVyaWVzX3VuaXR0ZXN0LnB5CkBAIC0zNSw2ICsz
NSw3IEBAIGZyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5tb2NrIGltcG9ydCBNb2NrCiBmcm9tIHdl
YmtpdHB5LnRvb2wuY29tbWFuZHMuY29tbWFuZHRlc3QgaW1wb3J0IENvbW1hbmRzVGVzdAogZnJv
bSB3ZWJraXRweS50b29sLmNvbW1hbmRzLnF1ZXJpZXMgaW1wb3J0ICoKIGZyb20gd2Via2l0cHku
dG9vbC5tb2NrdG9vbCBpbXBvcnQgTW9ja1Rvb2wsIE1vY2tPcHRpb25zCitmcm9tIHdlYmtpdHB5
LmxheW91dF90ZXN0cy5yZWFkX2NoZWNrc3VtX2Zyb21fcG5nX3VuaXR0ZXN0IGltcG9ydCBSZWFk
Q2hlY2tzdW1Gcm9tUG5nVGVzdAogCiAKIGNsYXNzIE1vY2tUZXN0UG9ydDEob2JqZWN0KToKQEAg
LTE5NSwzICsxOTYsNTYgQEAgY2xhc3MgUHJpbnRCYXNlbGluZXNUZXN0KHVuaXR0ZXN0LlRlc3RD
YXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc3Rkb3V0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAoJ3Rlc3Qtd2luLXhwLHBhc3Nlcy90ZXh0Lmh0bWwsTm9uZSxwbmcscGFzc2Vz
L3RleHQtZXhwZWN0ZWQucG5nLE5vbmVcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0
ZXN0LXdpbi14cCxwYXNzZXMvdGV4dC5odG1sLE5vbmUsdHh0LHBhc3Nlcy90ZXh0LWV4cGVjdGVk
LnR4dCxOb25lXG4nKSkKKworCitjbGFzcyBQcmludENoZWNrc3Vtc1Rlc3QodW5pdHRlc3QuVGVz
dENhc2UpOgorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5vYyA9IE5vbmUKKyAg
ICAgICAgc2VsZi50b29sID0gTW9ja1Rvb2woKQorICAgICAgICBzZWxmLnRlc3RfcG9ydCA9IHNl
bGYudG9vbC5wb3J0X2ZhY3RvcnkuZ2V0KCd0ZXN0LXdpbi14cCcpCisgICAgICAgIHNlbGYudG9v
bC5wb3J0X2ZhY3RvcnkuZ2V0ID0gbGFtYmRhIHBvcnRfbmFtZT1Ob25lOiBzZWxmLnRlc3RfcG9y
dAorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICBpZiBzZWxmLm9jOgorICAgICAg
ICAgICAgc2VsZi5yZXN0b3JlX291dHB1dCgpCisKKyAgICBkZWYgY2FwdHVyZV9vdXRwdXQoc2Vs
Zik6CisgICAgICAgIHNlbGYub2MgPSBPdXRwdXRDYXB0dXJlKCkKKyAgICAgICAgc2VsZi5vYy5j
YXB0dXJlX291dHB1dCgpCisKKyAgICBkZWYgcmVzdG9yZV9vdXRwdXQoc2VsZik6CisgICAgICAg
IHN0ZG91dCwgc3RkZXJyLCBsb2dzID0gc2VsZi5vYy5yZXN0b3JlX291dHB1dCgpCisgICAgICAg
IHNlbGYub2MgPSBOb25lCisgICAgICAgIHJldHVybiAoc3Rkb3V0LCBzdGRlcnIsIGxvZ3MpCisK
KyAgICBkZWYgdGVzdF9wcmludChzZWxmKToKKyAgICAgICAgY29tbWFuZCA9IFByaW50Q2hlY2tz
dW1zKCkKKyAgICAgICAgY29tbWFuZC5iaW5kX3RvX3Rvb2woc2VsZi50b29sKQorICAgICAgICBz
ZWxmLmNhcHR1cmVfb3V0cHV0KCkKKyAgICAgICAgZmlsZW5hbWUgPSAnL21vY2stY2hlY2tvdXQv
TGF5b3V0VGVzdHMvcGFzc2VzL3RleHQucG5nJworICAgICAgICBzZWxmLnRvb2wuZmlsZXN5c3Rl
bS53cml0ZV9iaW5hcnlfZmlsZShmaWxlbmFtZSwgUmVhZENoZWNrc3VtRnJvbVBuZ1Rlc3QuUE5H
X1dJVEhfQ09NTUVOVCkKKyAgICAgICAgY29tbWFuZC5leGVjdXRlKE1vY2tPcHRpb25zKHZhbGlk
YXRlPUZhbHNlKSwgW2ZpbGVuYW1lXSwgc2VsZi50b29sKQorICAgICAgICBzdGRvdXQsIF8sIF8g
PSBzZWxmLnJlc3RvcmVfb3V0cHV0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc3Rkb3V0
LCAnJXM6ICVzXG4nICUgKFJlYWRDaGVja3N1bUZyb21QbmdUZXN0LkNIRUNLU1VNLCBmaWxlbmFt
ZSkpCisKKyAgICBkZWYgdGVzdF92YWxpZGF0ZShzZWxmKToKKyAgICAgICAgY29tbWFuZCA9IFBy
aW50Q2hlY2tzdW1zKCkKKyAgICAgICAgY29tbWFuZC5iaW5kX3RvX3Rvb2woc2VsZi50b29sKQor
ICAgICAgICBzZWxmLmNhcHR1cmVfb3V0cHV0KCkKKyAgICAgICAgZmlsZW5hbWUgPSAnL21vY2st
Y2hlY2tvdXQvTGF5b3V0VGVzdHMvcGFzc2VzL3RleHQucG5nJworICAgICAgICBzZWxmLnRvb2wu
ZmlsZXN5c3RlbS53cml0ZV9iaW5hcnlfZmlsZShmaWxlbmFtZSwgUmVhZENoZWNrc3VtRnJvbVBu
Z1Rlc3QuUE5HX1dJVEhfQ09NTUVOVCkKKyAgICAgICAgc2VsZi50ZXN0X3BvcnQuY29tcHV0ZV9p
bWFnZV9jaGVja3N1bSA9IGxhbWJkYSBwYXRoOiBSZWFkQ2hlY2tzdW1Gcm9tUG5nVGVzdC5DSEVD
S1NVTQorICAgICAgICBjb21tYW5kLmV4ZWN1dGUoTW9ja09wdGlvbnModmFsaWRhdGU9VHJ1ZSks
IFtmaWxlbmFtZV0sIHNlbGYudG9vbCkKKyAgICAgICAgc3Rkb3V0LCBfLCBfID0gc2VsZi5yZXN0
b3JlX291dHB1dCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHN0ZG91dCwgJyVzOiAlc1xu
JyAlIChmaWxlbmFtZSwgJ09LJykpCisKKyAgICBkZWYgdGVzdF92YWxpZGF0ZV9mYWlscyhzZWxm
KToKKyAgICAgICAgY29tbWFuZCA9IFByaW50Q2hlY2tzdW1zKCkKKyAgICAgICAgY29tbWFuZC5i
aW5kX3RvX3Rvb2woc2VsZi50b29sKQorICAgICAgICBzZWxmLmNhcHR1cmVfb3V0cHV0KCkKKyAg
ICAgICAgZmlsZW5hbWUgPSAnL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvcGFzc2VzL3RleHQu
cG5nJworICAgICAgICBzZWxmLnRvb2wuZmlsZXN5c3RlbS53cml0ZV9iaW5hcnlfZmlsZShmaWxl
bmFtZSwgUmVhZENoZWNrc3VtRnJvbVBuZ1Rlc3QuUE5HX1dJVEhfQ09NTUVOVCkKKyAgICAgICAg
c2VsZi50ZXN0X3BvcnQuY29tcHV0ZV9pbWFnZV9jaGVja3N1bSA9IGxhbWJkYSBwYXRoOiAnYmFk
ZGF0YScKKyAgICAgICAgY29tbWFuZC5leGVjdXRlKE1vY2tPcHRpb25zKHZhbGlkYXRlPVRydWUp
LCBbZmlsZW5hbWVdLCBzZWxmLnRvb2wpCisgICAgICAgIHN0ZG91dCwgXywgXyA9IHNlbGYucmVz
dG9yZV9vdXRwdXQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzdGRvdXQsICclczogYmFk
IGNoZWNrc3VtIChzYXZlZCAlcywgYWN0dWFsICVzKVxuJyAlIChmaWxlbmFtZSwgUmVhZENoZWNr
c3VtRnJvbVBuZ1Rlc3QuQ0hFQ0tTVU0sICdiYWRkYXRhJykpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>