<?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>35788</bug_id>
          
          <creation_ts>2010-03-05 07:20:31 -0800</creation_ts>
          <short_desc>test-webkitpy: Display a warning if testing with a version higher than 2.5</short_desc>
          <delta_ts>2010-03-13 14:38:56 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>31533</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Jerdonek">cjerdonek</reporter>
          <assigned_to name="Chris Jerdonek">cjerdonek</assigned_to>
          <cc>abarth</cc>
    
    <cc>cjerdonek</cc>
    
    <cc>dpranke</cc>
    
    <cc>eric</cc>
    
    <cc>hamaji</cc>
    
    <cc>levin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>196415</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-03-05 07:20:31 -0800</bug_when>
    <thetext>webkitpy was developed to work with Python 2.5 or higher.  We should display a warning to the user if they are testing it with something higher than that.  Otherwise, the user can be misled into thinking their changes are fine when they are really not (this has happened to me a couple times now):

https://bugs.webkit.org/show_bug.cgi?id=33365
https://bugs.webkit.org/show_bug.cgi?id=35163#c21

Note that we are still in discussion about whether to reduce 2.5 to something lower:

https://lists.webkit.org/pipermail/webkit-dev/2010-March/011810.html
https://bugs.webkit.org/show_bug.cgi?id=35584

That discussion will not change the substance of this patch (we would just need to update the configuration variable).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>196421</commentid>
    <comment_count>1</comment_count>
      <attachid>50097</attachid>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-03-05 07:39:35 -0800</bug_when>
    <thetext>Created attachment 50097
Proposed patch

Note that this patch does not say anything about the minimum version that WebKit should support (we are still discussing that).  It just says what webkitpy is currently intended to support (2.5).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>196561</commentid>
    <comment_count>2</comment_count>
      <attachid>50097</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-03-05 11:26:43 -0800</bug_when>
    <thetext>Comment on attachment 50097
Proposed patch

Why would we want to display a warning if using something higher?

In that case, why wouldn&apos;t we just use #!/usr/bin/python2.5 and fail instead of warn?

I think a warning/error is only needed if python is &lt; 2.5

Why not just &quot;import webkitpy&quot; here?
 34 from webkitpy import MINIMUM_SUPPORTED_PYTHON_VERSION as _min_version

If version-checking is something the module should support, why not put the code outside of test-webkitpy?

And why not use logging.warn?

I think parts of this change are great! (like splitting out unttests.py).  But since I expect python to be forward compatible (or mostly?) I am suprised we&apos;d bother showing a warning to 2.6 users (which is all Mac OS X 10.6 users!)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>196582</commentid>
    <comment_count>3</comment_count>
      <attachid>50097</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-03-05 12:29:20 -0800</bug_when>
    <thetext>Comment on attachment 50097
Proposed patch

r- for my above nits.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>196589</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-03-05 12:43:10 -0800</bug_when>
    <thetext>(In reply to comment #2)

Thanks a lot, Eric!

&gt; (From update of attachment 50097 [details])
&gt; Why would we want to display a warning if using something higher?

It reminds developers using test-webkitpy that they should really be testing with Python 2.5 if they want to be sure of their change -- since that is what other contributors use.   

&gt; In that case, why wouldn&apos;t we just use #!/usr/bin/python2.5 and fail instead of
&gt; warn?

Not every developer has 2.5.  This point was also made here:

https://bugs.webkit.org/show_bug.cgi?id=31533#c2

I don&apos;t think we should prevent developers using 2.5 from developing fixes -- just warn them.  For most small fixes, it&apos;s not critical for the individual developer  to be testing with 2.5 as they develop, but it&apos;s good that they at least be aware.

Also, I think test-webkitpy should succeed for versions higher than 2.5 on the basis that 2.5 is the minimum supported version.  It wasn&apos;t meant to be the only supported version.

&gt; I think a warning/error is only needed if python is &lt; 2.5

That sounds like a good idea.

In this patch I was more concerned about developers using 2.6 rather than 2.4 since test-webkitpy already gives a message for 2.4 -- a failure message.  :)

But telling them why it fails would be a nice addition.

&gt; Why not just &quot;import webkitpy&quot; here?
&gt;  34 from webkitpy import MINIMUM_SUPPORTED_PYTHON_VERSION as _min_version

I&apos;ve gotten into the practice of importing particular identifiers because I find that it&apos;s easier this way to see what outside identifiers each module is using (i.e. what the dependencies are in a module).

&gt; If version-checking is something the module should support, why not put the
&gt; code outside of test-webkitpy?

That&apos;s a good idea.  I thought about doing that, and there are a few reasons I didn&apos;t do it in this patch.  For starters, I wanted the warning to display prior to test-webkitpy erroring out.  If we put the version-checking functionality in webkitpy itself, then test-webkitpy can error out before getting to the version check.  This is because webkit/__init__.py executes code (autoinstall stuff).

It&apos;s on my to-do list to move the autoinstall initialization code out of webkit/__init__.py into a different place (probably webkit/thirdparty/autoinstalled/__init__.py).  That will allow people to import from webkitpy without immediately triggering errors.

This also one of the reasons I put the call to Init() before importing the unit tests.  (I made a code comment about this.)

The other reasons have to do with only needing this for test-webkitpy for now and not having a good place for it.  test-webkitpy isn&apos;t a wrapper for a corresponding module in webkitpy.  And I didn&apos;t want to put the code in a shared area until being more sure of what the API should be.

&gt; And why not use logging.warn?

In the end I think we should.  I wanted to postpone logging changes to a later patch because there are other logging considerations that should probably be taken into account, and I didn&apos;t want to get into them here.  They are mostly around distinguishing between log messages you do want to show and messages you don&apos;t want to show (because they are side effects of testing code that has logging).

&gt; I think parts of this change are great! (like splitting out unttests.py).  But
&gt; since I expect python to be forward compatible (or mostly?) I am suprised we&apos;d
&gt; bother showing a warning to 2.6 users (which is all Mac OS X 10.6 users!)

This was actually one of the driving reasons for this patch -- because it can be a surprise to 2.6 users that not everyone else is using 2.6, and that this matters (it was to me until I broke stuff).  This patch helps inform 2.6 users that they should take 2.5 compatibility into consideration when developing Python changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>196592</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-03-05 12:47:09 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; I don&apos;t think we should prevent developers using 2.5 from developing fixes --
&gt; just warn them.

^not using</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>196893</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-03-06 05:36:11 -0800</bug_when>
    <thetext>(In reply to comment #4)

&gt; &gt; If version-checking is something the module should support, why not put the
&gt; &gt; code outside of test-webkitpy?
&gt; 
&gt; That&apos;s a good idea.  I thought about doing that, and there are a few reasons I
&gt; didn&apos;t do it in this patch.  For starters, I wanted the warning to display
&gt; prior to test-webkitpy erroring out.  If we put the version-checking
&gt; functionality in webkitpy itself, then test-webkitpy can error out before
&gt; getting to the version check.  This is because webkit/__init__.py executes code
&gt; (autoinstall stuff).
&gt; 
&gt; It&apos;s on my to-do list to move the autoinstall initialization code out of
&gt; webkit/__init__.py into a different place (probably
&gt; webkit/thirdparty/autoinstalled/__init__.py).  That will allow people to import
&gt; from webkitpy without immediately triggering errors.

I made a report for this to-do here:

https://bugs.webkit.org/show_bug.cgi?id=35828</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>196942</commentid>
    <comment_count>7</comment_count>
      <attachid>50156</attachid>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-03-06 15:59:20 -0800</bug_when>
    <thetext>Created attachment 50156
Proposed patch 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>196946</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-03-06 16:09:31 -0800</bug_when>
    <thetext>(In reply to comment #2)

In this latest patch--

&gt; I think a warning/error is only needed if python is &lt; 2.5

I added a warning for &lt; 2.5.  This code is in the versioning.check_version() method.

&gt; Why not just &quot;import webkitpy&quot; here?
&gt;  34 from webkitpy import MINIMUM_SUPPORTED_PYTHON_VERSION as _min_version

There is no longer a need to import this value.  It is in webkitpy/init/versioning.py.

&gt; If version-checking is something the module should support, why not put the
&gt; code outside of test-webkitpy?

Done.

&gt; And why not use logging.warn?

Done.

I am addressing the issues I raised in my comment 4 in separate patches so that I could address your suggestions in this patch.  These additional issues are--

(1) Move the autoinstall code out of webkitpy/__init__.py.

https://bugs.webkit.org/show_bug.cgi?id=35828

(2) Adjust the unit tests as necessary so that &quot;side-effect&quot; log messages do not render to the screen while running unit tests.  This mainly involves adjusting the code in webkit/init/logtesting.py.  (No bug report yet.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>196950</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-03-06 16:43:00 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (2) Adjust the unit tests as necessary so that &quot;side-effect&quot; log messages do
&gt; not render to the screen while running unit tests.  This mainly involves
&gt; adjusting the code in webkit/init/logtesting.py.  (No bug report yet.)

Created a report for this here:

https://bugs.webkit.org/show_bug.cgi?id=35835</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199346</commentid>
    <comment_count>10</comment_count>
      <attachid>50156</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-03-13 02:13:53 -0800</bug_when>
    <thetext>Comment on attachment 50156
Proposed patch 2

I was hoping you were going to fix my --all hack too.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199411</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-03-13 14:18:03 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 50156 [details])
&gt; I was hoping you were going to fix my --all hack too.  :)

One thing at a time... :)

Thanks again for reviewing all these patches, Adam.  I really appreciate it!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199413</commentid>
    <comment_count>12</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-03-13 14:23:56 -0800</bug_when>
    <thetext>Well, I appreciate your patches.  Our Python is become much better structured thanks to you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199416</commentid>
    <comment_count>13</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-03-13 14:38:56 -0800</bug_when>
    <thetext>Manually committed (via git svn dcommit):

http://trac.webkit.org/changeset/55970</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50097</attachid>
            <date>2010-03-05 07:39:35 -0800</date>
            <delta_ts>2010-03-06 15:59:20 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>_patch-35788-1.diff</filename>
            <type>text/plain</type>
            <size>9625</size>
            <attacher name="Chris Jerdonek">cjerdonek</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA5OTVhYzI1Li44YTI1YjgwIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTAtMDMt
MDUgIENocmlzIEplcmRvbmVrICA8Y2plcmRvbmVrQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIHRlc3Qtd2Via2l0cHkgc2Ny
aXB0IG5vdyBkaXNwbGF5cyBhIHdhcm5pbmcgdG8gdGhlIHVzZXIKKyAgICAgICAgaWYgcnVuIHdp
dGggYSBQeXRob24gdmVyc2lvbiBoaWdoZXIgdGhhbiB0aGUgbWluaW11bSB2ZXJzaW9uCisgICAg
ICAgIHRoZSB3ZWJraXRweSBwYWNrYWdlIHdhcyBtZWFudCB0byBzdXBwb3J0LgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTc4OAorCisgICAgICAg
IEJ5IHByb3ZpZGluZyBhIHJlbWluZGVyIHRvIHRoZSB1c2VyLCB0aGlzIGNoYW5nZSBoZWxwcyB0
byBwcmV2ZW50CisgICAgICAgIGRldmVsb3BlcnMgZnJvbSB0aGlua2luZyB0aGVpciBjaGFuZ2Vz
IHRvIHdlYmtpdHB5IGFyZSBva2F5IHdoZW4KKyAgICAgICAgdGhleSBhcmUgcmVhbGx5IG5vdC4K
KworICAgICAgICAqIFNjcmlwdHMvdGVzdC13ZWJraXRweToKKyAgICAgICAgICAtIEFkZGVkIGNv
ZGUgdG8gZGlzcGxheSBhIHdhcm5pbmcgaWYgdGVzdC13ZWJraXRweSBpcyBydW4gd2l0aAorICAg
ICAgICAgICAgYSBQeXRob24gdmVyc2lvbiBoaWdoZXIgdGhhbiB3aGF0IHdlYmtpdHB5IHdhcyBt
ZWFudCB0byBzdXBwb3J0LgorICAgICAgICAgIC0gTW92ZWQgdGhlICJmcm9tIC4uLl91bml0dGVz
dCBpbXBvcnQgKiIgbGluZXMgdG8gdGhlIG5ldworICAgICAgICAgICAgZmlsZSBTY3JpcHRzL3dl
YmtpdHB5L3VuaXR0ZXN0cy5weS4gVGhpcyBhbGxvd3MgdGhlIHdhcm5pbmcKKyAgICAgICAgICAg
IHRvIGJlIGRpc3BsYXllZCBpZiBhbiBlcnJvciBvY2N1cnMgd2hpbGUgaW50ZXJwcmV0aW5nIHRo
ZQorICAgICAgICAgICAgdW5pdCB0ZXN0IGNvZGUuCisgICAgICAgICAgLSBBZGRlZCBhbiBpbml0
KCkgbWV0aG9kIHRvIGNvbnRhaW4gdGhlIHdhcm5pbmcgY29kZS4KKworICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvX19pbml0X18ucHk6CisgICAgICAgICAgLSBBZGRlZCBhIE1JTklNVU1fU1VQ
UE9SVEVEX1BZVEhPTl9WRVJTSU9OIHZhcmlhYmxlLgorCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9zdHlsZS91bml0dGVzdHMucHk6CisgICAgICAgICAgLSBGaXhlZC91cGRhdGVkIGEgY29k
ZSBjb21tZW50LgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS91bml0dGVzdHMucHk6IEFk
ZGVkLgorICAgICAgICAgIC0gTW92ZWQgdGhlICJmcm9tIC4uLl91bml0dGVzdCBpbXBvcnQgKiIg
bGluZXMgZnJvbSB0ZXN0LXdlYmtpdHB5LgorCiAyMDEwLTAzLTAyICBHdXN0YXZvIE5vcm9uaGEg
U2lsdmEgIDxndXN0YXZvLm5vcm9uaGFAY29sbGFib3JhLmNvLnVrPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3Jp
cHRzL3Rlc3Qtd2Via2l0cHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3Rlc3Qtd2Via2l0cHkKaW5k
ZXggODYxNzMzMC4uNWMyODExNiAxMDA3NTUKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy90ZXN0
LXdlYmtpdHB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvdGVzdC13ZWJraXRweQpAQCAtMSw1
ICsxLDYgQEAKICMhL3Vzci9iaW4vZW52IHB5dGhvbgogIyBDb3B5cmlnaHQgKGMpIDIwMDkgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDEwIENocmlz
IEplcmRvbmVrIChjamVyZG9uZWtAd2Via2l0Lm9yZykKICMKICMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKQEAgLTMwLDM4ICszMSwzOSBAQAogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0
CiAKLWZyb20gd2Via2l0cHkuYnVnemlsbGFfdW5pdHRlc3QgaW1wb3J0ICoKLWZyb20gd2Via2l0
cHkuYnVpbGRib3RfdW5pdHRlc3QgaW1wb3J0ICoKLWZyb20gd2Via2l0cHkuY2hhbmdlbG9nc191
bml0dGVzdCBpbXBvcnQgKgotZnJvbSB3ZWJraXRweS5jb21tYW5kcy5kb3dubG9hZF91bml0dGVz
dCBpbXBvcnQgKgotZnJvbSB3ZWJraXRweS5jb21tYW5kcy5lYXJseV93YXJuaW5nX3N5c3RlbV91
bml0dGVzdCBpbXBvcnQgKgotZnJvbSB3ZWJraXRweS5jb21tYW5kcy5vcGVuYnVnc191bml0dGVz
dCBpbXBvcnQgT3BlbkJ1Z3NUZXN0Ci1mcm9tIHdlYmtpdHB5LmNvbW1hbmRzLnVwbG9hZF91bml0
dGVzdCBpbXBvcnQgKgotZnJvbSB3ZWJraXRweS5jb21tYW5kcy5xdWVyaWVzX3VuaXR0ZXN0IGlt
cG9ydCAqCi1mcm9tIHdlYmtpdHB5LmNvbW1hbmRzLnF1ZXVlc191bml0dGVzdCBpbXBvcnQgKgot
ZnJvbSB3ZWJraXRweS5jb21taXR0ZXJzX3VuaXR0ZXN0IGltcG9ydCAqCi1mcm9tIHdlYmtpdHB5
LmNyZWRlbnRpYWxzX3VuaXR0ZXN0IGltcG9ydCAqCi1mcm9tIHdlYmtpdHB5LmRpZmZfcGFyc2Vy
X3VuaXR0ZXN0IGltcG9ydCAqCi1mcm9tIHdlYmtpdHB5LmV4ZWN1dGl2ZV91bml0dGVzdCBpbXBv
cnQgKgotZnJvbSB3ZWJraXRweS5ncmFtbWFyX3VuaXR0ZXN0IGltcG9ydCAqCi1mcm9tIHdlYmtp
dHB5LmxheW91dF90ZXN0cy5wb3J0Lm1hY191bml0dGVzdCBpbXBvcnQgKgotZnJvbSB3ZWJraXRw
eS5tdWx0aWNvbW1hbmR0b29sX3VuaXR0ZXN0IGltcG9ydCAqCi1mcm9tIHdlYmtpdHB5Lm5ldHdv
cmt0cmFuc2FjdGlvbl91bml0dGVzdCBpbXBvcnQgKgotZnJvbSB3ZWJraXRweS5wYXRjaGNvbGxl
Y3Rpb25fdW5pdHRlc3QgaW1wb3J0ICoKLWZyb20gd2Via2l0cHkucXVldWVlbmdpbmVfdW5pdHRl
c3QgaW1wb3J0ICoKLWZyb20gd2Via2l0cHkuc3RlcHMuc3RlcHNfdW5pdHRlc3QgaW1wb3J0ICoK
LWZyb20gd2Via2l0cHkuc3RlcHMuY2xvc2VidWdmb3JsYW5kZGlmZl91bml0dGVzdCBpbXBvcnQg
KgotZnJvbSB3ZWJraXRweS5zdGVwcy51cGRhdGVjaGFuZ2Vsb2dzd2l0aHJldmlld191bml0dGVz
dHMgaW1wb3J0ICoKLWZyb20gd2Via2l0cHkuc3R5bGUudW5pdHRlc3RzIGltcG9ydCAqICMgZm9y
IGNoZWNrLXdlYmtpdC1zdHlsZQotZnJvbSB3ZWJraXRweS51c2VyX3VuaXR0ZXN0IGltcG9ydCAq
Ci1mcm9tIHdlYmtpdHB5LndlYmtpdF9sb2dnaW5nX3VuaXR0ZXN0IGltcG9ydCAqCi1mcm9tIHdl
YmtpdHB5LndlYmtpdHBvcnRfdW5pdHRlc3QgaW1wb3J0ICoKK2Zyb20gd2Via2l0cHkgaW1wb3J0
IE1JTklNVU1fU1VQUE9SVEVEX1BZVEhPTl9WRVJTSU9OIGFzIF9taW5fdmVyc2lvbgorCisKKyMg
RklYTUU6IENvbmZpZ3VyZSBsb2dnaW5nIHdpdGhpbiBpbml0KCkgc28gaW1wb3J0YW50IGxvZyBt
ZXNzYWdlcyB3aWxsCisjICAgICAgICBkaXNwbGF5IHdoaWxlIHJ1bm5pbmcgdW5pdCB0ZXN0cy4K
K2RlZiBpbml0KCk6CisgICAgIiIiRXhlY3V0ZSBjb2RlIHByaW9yIHRvIGltcG9ydGluZyBmcm9t
IHdlYmtpdHB5LnVuaXR0ZXN0cy4iIiIKKyAgICAjIFdlIHVzZSBzeXMudmVyc2lvbl9pbmZvIHJh
dGhlciB0aGFuIHN5cy52ZXJzaW9uIHNpbmNlIGl0cyBmaXJzdAorICAgICMgdGhyZWUgZWxlbWVu
dHMgYXJlIGd1YXJhbnRlZWQgdG8gYmUgaW50ZWdlcnMuCisgICAgdmVyc2lvbiA9ICIlcy4lcyIg
JSAoc3lzLnZlcnNpb25faW5mb1swXSwgc3lzLnZlcnNpb25faW5mb1sxXSkKKworICAgICMgRXhj
bHVkZSB0aGUgbWljcm8gdmVyc2lvbiBudW1iZXIgZnJvbSB0aGUgY29tcGFyaXNvbiBmb3Igbm93
LgorICAgIGlmIHZlcnNpb24gPiBfbWluX3ZlcnNpb25bOjNdOgorICAgICAgICAjIFRoZSB2ZXJz
aW9uIG51bWJlciBwb3J0aW9uIG9mIHRoZSB2ZXJzaW9uIHN0cmluZywgZm9yIGV4YW1wbGUgIjIu
Ni40Ii4KKyAgICAgICAgZGlzcGxheV92ZXJzaW9uID0gc3lzLnZlcnNpb24uc3BsaXQoKVswXQor
ICAgICAgICBtZXNzYWdlID0gKCJXQVJOSU5HOiBZb3UgYXJlIHRlc3Rpbmcgd2Via2l0cHkgd2l0
aCBhIFB5dGhvbiAiCisgICAgICAgICAgICAgICAgICAgInZlcnNpb24gKCVzKSBoaWdoZXIgdGhh
biB0aGUgbWluaW11bSB2ZXJzaW9uICglcykgaXQgIgorICAgICAgICAgICAgICAgICAgICJ3YXMg
bWVhbnQgdG8gc3VwcG9ydC5cbiIKKyAgICAgICAgICAgICAgICAgICAlIChkaXNwbGF5X3ZlcnNp
b24sIF9taW5fdmVyc2lvbikpCisgICAgICAgIHN5cy5zdGRlcnIud3JpdGUobWVzc2FnZSkKKwog
CiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgICMgRklYTUU6IFRoaXMgaXMgYSBoYWNr
LCBidXQgSSdtIHRpcmVkIG9mIGNvbW1lbnRpbmcgb3V0IHRoZSB0ZXN0LgotICAgICMgICAgICAg
IFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE4MTgKLSAgICBp
ZiBsZW4oc3lzLmFyZ3YpID4gMSBhbmQgc3lzLmFyZ3ZbMV0gPT0gIi0tYWxsIjoKLSAgICAgICAg
c3lzLmFyZ3YucmVtb3ZlKCItLWFsbCIpCi0gICAgICAgIGZyb20gd2Via2l0cHkuc2NtX3VuaXR0
ZXN0IGltcG9ydCAqCiAKKyAgICBpbml0KCkKKworICAgICMgV2UgaW1wb3J0IHRoZSB1bml0IHRl
c3QgY29kZSBhZnRlciBpbml0KCkgdG8gZW5zdXJlIHRoYXQgdGhlCisgICAgIyB1c2VyIHNlZXMg
dGhlIFB5dGhvbiB2ZXJzaW9uIHdhcm5pbmcgYWJvdmUgaW4gY2FzZSBhbiBlcnJvcgorICAgICMg
b2NjdXJzIHdoaWxlIGludGVycHJldGluZyB3ZWJraXRweS51bml0dGVzdHMuICBUaGlzIGFsc28g
YWxsb3dzCisgICAgIyBsb2dnaW5nIHRvIGJlIGNvbmZpZ3VyZWQgcHJpb3IgdG8gaW1wb3J0aW5n
IC0tIGZvciBleGFtcGxlIHRvCisgICAgIyBlbmFibGUgdGhlIGRpc3BsYXkgb2YgYXV0b2luc3Rh
bGwgbG9nZ2luZy5sb2cgbWVzc2FnZXMgd2hpbGUKKyAgICAjIHJ1bm5pbmcgdGhlIHVuaXQgdGVz
dHMuCisgICAgZnJvbSB3ZWJraXRweS51bml0dGVzdHMgaW1wb3J0ICoKKworICAgICMgUnVucyB0
aGUgdW5pdCB0ZXN0cy4KICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvX19pbml0X18ucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L19faW5pdF9fLnB5CmluZGV4IGVmYThjN2EuLjUwN2Y5M2QgMTAwNjQ0Ci0tLSBhL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvX19pbml0X18ucHkKKysrIGIvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9fX2luaXRfXy5weQpAQCAtMSw1ICsxLDggQEAKICMgUmVxdWlyZWQg
Zm9yIFB5dGhvbiB0byBzZWFyY2ggdGhpcyBkaXJlY3RvcnkgZm9yIG1vZHVsZSBmaWxlcwogCisj
IFRoZSBtaW5pbXVtIFB5dGhvbiB2ZXJzaW9uIHRoaXMgcGFja2FnZSBzdXBwb3J0cy4KK01JTklN
VU1fU1VQUE9SVEVEX1BZVEhPTl9WRVJTSU9OID0gIjIuNSIKKwogaW1wb3J0IHRoaXJkcGFydHku
YXV0b2luc3RhbGwgYXMgYXV0b2luc3RhbGwKIAogIyBMaXN0IG91ciB0aGlyZC1wYXJ0eSBsaWJy
YXJ5IGRlcGVuZGVuY2llcyBoZXJlIGFuZCB3aGVyZSB0aGV5IGNhbiBiZQpkaWZmIC0tZ2l0IGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS91bml0dGVzdHMucHkgYi9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL3VuaXR0ZXN0cy5weQppbmRleCA2MjYxNWFiLi5m
NDQ5MTEyIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL3Vu
aXR0ZXN0cy5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL3VuaXR0
ZXN0cy5weQpAQCAtMzAsNyArMzAsOCBAQAogCiAiIiJSdW5zIHN0eWxlIHBhY2thZ2UgdW5pdCB0
ZXN0cy4iIiIKIAotIyBUaGlzIG1vZHVsZSBpcyBpbXBvcnRlZCBieSB0ZXN0LXdlYmtpdHB5Lgor
IyBUaGlzIG1vZHVsZSBpcyBpbXBvcnRlZCBieSB0aGUgbW9kdWxlIHRoYXQgaW1wb3J0cyBhbGwg
dGhlIHdlYmtpdHB5CisjIHVuaXQgdGVzdHMuCiAKIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVz
dApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS91bml0dGVzdHMucHkg
Yi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3VuaXR0ZXN0cy5weQpuZXcgZmlsZSBtb2Rl
IDEwMDc1NQppbmRleCAwMDAwMDAwLi4zMjM3MWJmCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS91bml0dGVzdHMucHkKQEAgLTAsMCArMSw2NSBAQAorIyEv
dXNyL2Jpbi9lbnYgcHl0aG9uCisjIENvcHlyaWdodCAoYykgMjAwOSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6
CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIyBUaGlzIG1vZHVsZSBpcyBp
bXBvcnRlZCBieSBTY3JpcHRzL3Rlc3Qtd2Via2l0cHkuCisKK2ltcG9ydCBzeXMKKworZnJvbSB3
ZWJraXRweS5idWd6aWxsYV91bml0dGVzdCBpbXBvcnQgKgorZnJvbSB3ZWJraXRweS5idWlsZGJv
dF91bml0dGVzdCBpbXBvcnQgKgorZnJvbSB3ZWJraXRweS5jaGFuZ2Vsb2dzX3VuaXR0ZXN0IGlt
cG9ydCAqCitmcm9tIHdlYmtpdHB5LmNvbW1hbmRzLmRvd25sb2FkX3VuaXR0ZXN0IGltcG9ydCAq
Citmcm9tIHdlYmtpdHB5LmNvbW1hbmRzLmVhcmx5X3dhcm5pbmdfc3lzdGVtX3VuaXR0ZXN0IGlt
cG9ydCAqCitmcm9tIHdlYmtpdHB5LmNvbW1hbmRzLm9wZW5idWdzX3VuaXR0ZXN0IGltcG9ydCBP
cGVuQnVnc1Rlc3QKK2Zyb20gd2Via2l0cHkuY29tbWFuZHMudXBsb2FkX3VuaXR0ZXN0IGltcG9y
dCAqCitmcm9tIHdlYmtpdHB5LmNvbW1hbmRzLnF1ZXJpZXNfdW5pdHRlc3QgaW1wb3J0ICoKK2Zy
b20gd2Via2l0cHkuY29tbWFuZHMucXVldWVzX3VuaXR0ZXN0IGltcG9ydCAqCitmcm9tIHdlYmtp
dHB5LmNvbW1pdHRlcnNfdW5pdHRlc3QgaW1wb3J0ICoKK2Zyb20gd2Via2l0cHkuY3JlZGVudGlh
bHNfdW5pdHRlc3QgaW1wb3J0ICoKK2Zyb20gd2Via2l0cHkuZGlmZl9wYXJzZXJfdW5pdHRlc3Qg
aW1wb3J0ICoKK2Zyb20gd2Via2l0cHkuZXhlY3V0aXZlX3VuaXR0ZXN0IGltcG9ydCAqCitmcm9t
IHdlYmtpdHB5LmdyYW1tYXJfdW5pdHRlc3QgaW1wb3J0ICoKK2Zyb20gd2Via2l0cHkubGF5b3V0
X3Rlc3RzLnBvcnQubWFjX3VuaXR0ZXN0IGltcG9ydCAqCitmcm9tIHdlYmtpdHB5Lm11bHRpY29t
bWFuZHRvb2xfdW5pdHRlc3QgaW1wb3J0ICoKK2Zyb20gd2Via2l0cHkubmV0d29ya3RyYW5zYWN0
aW9uX3VuaXR0ZXN0IGltcG9ydCAqCitmcm9tIHdlYmtpdHB5LnBhdGNoY29sbGVjdGlvbl91bml0
dGVzdCBpbXBvcnQgKgorZnJvbSB3ZWJraXRweS5xdWV1ZWVuZ2luZV91bml0dGVzdCBpbXBvcnQg
KgorZnJvbSB3ZWJraXRweS5zdGVwcy5zdGVwc191bml0dGVzdCBpbXBvcnQgKgorZnJvbSB3ZWJr
aXRweS5zdGVwcy5jbG9zZWJ1Z2ZvcmxhbmRkaWZmX3VuaXR0ZXN0IGltcG9ydCAqCitmcm9tIHdl
YmtpdHB5LnN0ZXBzLnVwZGF0ZWNoYW5nZWxvZ3N3aXRocmV2aWV3X3VuaXR0ZXN0cyBpbXBvcnQg
KgorZnJvbSB3ZWJraXRweS5zdHlsZS51bml0dGVzdHMgaW1wb3J0ICogIyBmb3IgY2hlY2std2Vi
a2l0LXN0eWxlCitmcm9tIHdlYmtpdHB5LnVzZXJfdW5pdHRlc3QgaW1wb3J0ICoKK2Zyb20gd2Vi
a2l0cHkud2Via2l0X2xvZ2dpbmdfdW5pdHRlc3QgaW1wb3J0ICoKK2Zyb20gd2Via2l0cHkud2Vi
a2l0cG9ydF91bml0dGVzdCBpbXBvcnQgKgorCisjIEZJWE1FOiBUaGlzIGlzIGEgaGFjaywgYnV0
IEknbSB0aXJlZCBvZiBjb21tZW50aW5nIG91dCB0aGUgdGVzdC4KKyMgICAgICAgIFNlZSBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE4MTgKK2lmIGxlbihzeXMuYXJn
dikgPiAxIGFuZCBzeXMuYXJndlsxXSA9PSAiLS1hbGwiOgorICAgIHN5cy5hcmd2LnJlbW92ZSgi
LS1hbGwiKQorICAgIGZyb20gd2Via2l0cHkuc2NtX3VuaXR0ZXN0IGltcG9ydCAqCg==
</data>
<flag name="review"
          id="33148"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50156</attachid>
            <date>2010-03-06 15:59:20 -0800</date>
            <delta_ts>2010-03-13 02:13:52 -0800</delta_ts>
            <desc>Proposed patch 2</desc>
            <filename>_patch-35788-2.diff</filename>
            <type>text/plain</type>
            <size>23461</size>
            <attacher name="Chris Jerdonek">cjerdonek</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA5OTVhYzI1Li44NTQ2MThmIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAgQEAKKzIwMTAtMDMt
MDYgIENocmlzIEplcmRvbmVrICA8Y2plcmRvbmVrQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIHRlc3Qtd2Via2l0cHkgc2Ny
aXB0IG5vdyB3YXJucyB0aGUgdXNlciBpZiB0aGUgc2NyaXB0IGlzCisgICAgICAgIGJlaW5nIHJ1
biB1c2luZyBhIFB5dGhvbiB2ZXJzaW9uIGRpZmZlcmVudCBmcm9tIHRoZSBtaW5pbXVtCisgICAg
ICAgIHZlcnNpb24gdGhlIHdlYmtpdHB5IHBhY2thZ2Ugd2FzIG1lYW50IHRvIHN1cHBvcnQuCisK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1Nzg4CisK
KyAgICAgICAgV2FybmluZyBkZXZlbG9wZXJzIGlmIHRoZWlyIFB5dGhvbiB2ZXJzaW9uIGlzIHRv
byBsb3cgd2lsbCBoZWxwCisgICAgICAgIHRoZW0gdW5kZXJzdGFuZCB3aHkgdGVzdC13ZWJraXRw
eSBpcyBmYWlsaW5nLiAgU2Vjb25kbHksIHdhcm5pbmcKKyAgICAgICAgZGV2ZWxvcGVycyBpZiB0
aGVpciBQeXRob24gdmVyc2lvbiBpcyBoaWdoZXIgdGhhbiB0aGUgbWluaW11bSB3aWxsCisgICAg
ICAgIGhlbHAgdGhlbSB1bmRlcnN0YW5kIHRoYXQgdGhlaXIgY2hhbmdlcyBtYXkgbm90IGJlIG9r
YXkgZm9yIHRoZQorICAgICAgICBtaW5pbXVtIHN1cHBvcnRlZCB2ZXJzaW9uLCBldmVuIGlmIHRl
c3Qtd2Via2l0cHkgaXMgcGFzc2luZy4KKworICAgICAgICAqIFNjcmlwdHMvdGVzdC13ZWJraXRw
eToKKyAgICAgICAgICAtIE1vdmVkIHRoZSAiZnJvbSAuLi5fdW5pdHRlc3QgaW1wb3J0ICoiIGxp
bmVzIHRvIHRoZSBuZXcKKyAgICAgICAgICAgIGZpbGUgU2NyaXB0cy93ZWJraXRweS91bml0dGVz
dHMucHkuICBUaGlzIHdpbGwgYWxsb3cgdGhlCisgICAgICAgICAgICB2ZXJzaW9uLWNoZWNrIHdh
cm5pbmcgdG8gYmUgZGlzcGxheWVkIGV2ZW4gaWYgYW4gZXJyb3Igb2NjdXJzCisgICAgICAgICAg
ICB3aGlsZSBpbnRlcnByZXRpbmcgKGkuZS4gaW1wb3J0aW5nKSB0aGUgdW5pdCB0ZXN0IGNvZGUu
CisgICAgICAgICAgLSBBZGRlZCBjb25maWd1cmVfbG9nZ2luZygpIHRvIGNvbmZpZ3VyIGxvZ2dp
bmcgZm9yIHRlc3Qtd2Via2l0cHkuCisgICAgICAgICAgLSBBZGRlZCBhbiBpbml0KCkgbWV0aG9k
IHRvIGNvbmZpZ3VyZSBsb2dnaW5nIGFuZCBjaGVjayB0aGUKKyAgICAgICAgICAgIGN1cnJlbnQg
UHl0aG9uIHZlcnNpb24uCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2luaXQvdW5pdHRl
c3RzLnB5OiBBZGRlZC4KKyAgICAgICAgICAtIEFkZGVkIGEgZmlsZSB0byBpbXBvcnQgYWxsIHVu
aXQgdGVzdCBtb2R1bGVzIGluIHRoZQorICAgICAgICAgICAgd2Via2l0cHkuaW5pdCBwYWNrYWdl
LgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9pbml0L3ZlcnNpb25pbmcucHk6IEFkZGVk
LgorICAgICAgICAgIC0gQWRkZWQgYSBfTUlOSU1VTV9TVVBQT1JURURfUFlUSE9OX1ZFUlNJT04g
dmFyaWFibGUgYW5kIHNldAorICAgICAgICAgICAgaXQgZXF1YWwgdG8gMi41LgorICAgICAgICAg
IC0gQWRkZWQgYSBjb21wYXJlX3ZlcnNpb24oKSBtZXRob2QgdG8gY29tcGFyZSB0aGUgY3VycmVu
dCBQeXRob24KKyAgICAgICAgICAgIHZlcnNpb24gYWdhaW5zdCBhIHRhcmdldCB2ZXJzaW9uLgor
ICAgICAgICAgIC0gQWRkZWQgYSBjaGVja192ZXJzaW9uKCkgbWV0aG9kIHRvIGNoZWNrIHRoZSBj
dXJyZW50IFB5dGhvbgorICAgICAgICAgICAgdmVyc2lvbiBhZ2FpbnN0IHRoZSBjdXJyZW50IG1p
bmltdW0gc3VwcG9ydGVkIHZlcnNpb24sIGFuZCB0bworICAgICAgICAgICAgbG9nIGEgd2Fybmlu
ZyBtZXNzYWdlIGlmIHRoZSBjaGVjayBmYWlscy4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvaW5pdC92ZXJzaW9uaW5nX3VuaXR0ZXN0LnB5OiBBZGRlZC4KKyAgICAgICAgICAtIEFkZGVk
IHVuaXQgdGVzdHMgZm9yIHRoZSBmdW5jdGlvbnMgaW4gdmVyc2lvbmluZy5weS4KKworICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvdW5pdHRlc3RzLnB5OgorICAgICAgICAgIC0gRml4
ZWQvdXBkYXRlZCBhIGNvZGUgY29tbWVudC4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
dW5pdHRlc3RzLnB5OiBBZGRlZC4KKyAgICAgICAgICAtIE1vdmVkIHRoZSAiZnJvbSAuLi5fdW5p
dHRlc3QgaW1wb3J0ICoiIGxpbmVzIGZyb20gdGVzdC13ZWJraXRweS4KKwogMjAxMC0wMy0wMiAg
R3VzdGF2byBOb3JvbmhhIFNpbHZhICA8Z3VzdGF2by5ub3JvbmhhQGNvbGxhYm9yYS5jby51az4K
IAogICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292LgpkaWZmIC0tZ2l0IGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy90ZXN0LXdlYmtpdHB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy90
ZXN0LXdlYmtpdHB5CmluZGV4IDg2MTczMzAuLjcxYjZkZWMgMTAwNzU1Ci0tLSBhL1dlYktpdFRv
b2xzL1NjcmlwdHMvdGVzdC13ZWJraXRweQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3Rlc3Qt
d2Via2l0cHkKQEAgLTEsNSArMSw2IEBACiAjIS91c3IvYmluL2VudiBweXRob24KICMgQ29weXJp
Z2h0IChjKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdo
dCAoQykgMjAxMCBDaHJpcyBKZXJkb25layAoY2plcmRvbmVrQHdlYmtpdC5vcmcpCiAjCiAjIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0yNyw0MSArMjgsNTQgQEAKICMgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAKK2ltcG9ydCBsb2dnaW5nCiBpbXBvcnQgc3lzCiBpbXBvcnQg
dW5pdHRlc3QKIAotZnJvbSB3ZWJraXRweS5idWd6aWxsYV91bml0dGVzdCBpbXBvcnQgKgotZnJv
bSB3ZWJraXRweS5idWlsZGJvdF91bml0dGVzdCBpbXBvcnQgKgotZnJvbSB3ZWJraXRweS5jaGFu
Z2Vsb2dzX3VuaXR0ZXN0IGltcG9ydCAqCi1mcm9tIHdlYmtpdHB5LmNvbW1hbmRzLmRvd25sb2Fk
X3VuaXR0ZXN0IGltcG9ydCAqCi1mcm9tIHdlYmtpdHB5LmNvbW1hbmRzLmVhcmx5X3dhcm5pbmdf
c3lzdGVtX3VuaXR0ZXN0IGltcG9ydCAqCi1mcm9tIHdlYmtpdHB5LmNvbW1hbmRzLm9wZW5idWdz
X3VuaXR0ZXN0IGltcG9ydCBPcGVuQnVnc1Rlc3QKLWZyb20gd2Via2l0cHkuY29tbWFuZHMudXBs
b2FkX3VuaXR0ZXN0IGltcG9ydCAqCi1mcm9tIHdlYmtpdHB5LmNvbW1hbmRzLnF1ZXJpZXNfdW5p
dHRlc3QgaW1wb3J0ICoKLWZyb20gd2Via2l0cHkuY29tbWFuZHMucXVldWVzX3VuaXR0ZXN0IGlt
cG9ydCAqCi1mcm9tIHdlYmtpdHB5LmNvbW1pdHRlcnNfdW5pdHRlc3QgaW1wb3J0ICoKLWZyb20g
d2Via2l0cHkuY3JlZGVudGlhbHNfdW5pdHRlc3QgaW1wb3J0ICoKLWZyb20gd2Via2l0cHkuZGlm
Zl9wYXJzZXJfdW5pdHRlc3QgaW1wb3J0ICoKLWZyb20gd2Via2l0cHkuZXhlY3V0aXZlX3VuaXR0
ZXN0IGltcG9ydCAqCi1mcm9tIHdlYmtpdHB5LmdyYW1tYXJfdW5pdHRlc3QgaW1wb3J0ICoKLWZy
b20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQubWFjX3VuaXR0ZXN0IGltcG9ydCAqCi1mcm9t
IHdlYmtpdHB5Lm11bHRpY29tbWFuZHRvb2xfdW5pdHRlc3QgaW1wb3J0ICoKLWZyb20gd2Via2l0
cHkubmV0d29ya3RyYW5zYWN0aW9uX3VuaXR0ZXN0IGltcG9ydCAqCi1mcm9tIHdlYmtpdHB5LnBh
dGNoY29sbGVjdGlvbl91bml0dGVzdCBpbXBvcnQgKgotZnJvbSB3ZWJraXRweS5xdWV1ZWVuZ2lu
ZV91bml0dGVzdCBpbXBvcnQgKgotZnJvbSB3ZWJraXRweS5zdGVwcy5zdGVwc191bml0dGVzdCBp
bXBvcnQgKgotZnJvbSB3ZWJraXRweS5zdGVwcy5jbG9zZWJ1Z2ZvcmxhbmRkaWZmX3VuaXR0ZXN0
IGltcG9ydCAqCi1mcm9tIHdlYmtpdHB5LnN0ZXBzLnVwZGF0ZWNoYW5nZWxvZ3N3aXRocmV2aWV3
X3VuaXR0ZXN0cyBpbXBvcnQgKgotZnJvbSB3ZWJraXRweS5zdHlsZS51bml0dGVzdHMgaW1wb3J0
ICogIyBmb3IgY2hlY2std2Via2l0LXN0eWxlCi1mcm9tIHdlYmtpdHB5LnVzZXJfdW5pdHRlc3Qg
aW1wb3J0ICoKLWZyb20gd2Via2l0cHkud2Via2l0X2xvZ2dpbmdfdW5pdHRlc3QgaW1wb3J0ICoK
LWZyb20gd2Via2l0cHkud2Via2l0cG9ydF91bml0dGVzdCBpbXBvcnQgKgoraW1wb3J0IHdlYmtp
dHB5LmluaXQudmVyc2lvbmluZyBhcyB2ZXJzaW9uaW5nCisKK19sb2cgPSBsb2dnaW5nLmdldExv
Z2dlcigidGVzdC13ZWJraXRweSIpCisKKworZGVmIGNvbmZpZ3VyZV9sb2dnaW5nKCk6CisgICAg
IiIiQ29uZmlndXJlIHRoZSByb290IGxvZ2dlciB0byBsb2cgaW5mbyBtZXNzYWdlcyBhbmQgYWJv
dmUuIiIiCisgICAgaGFuZGxlciA9IGxvZ2dpbmcuU3RyZWFtSGFuZGxlcihzeXMuc3RkZXJyKQor
ICAgIGZvcm1hdHRlciA9IGxvZ2dpbmcuRm9ybWF0dGVyKCJbJShsZXZlbG5hbWUpc10gJShuYW1l
KXM6ICUobWVzc2FnZSlzIikKKyAgICBoYW5kbGVyLnNldEZvcm1hdHRlcihmb3JtYXR0ZXIpCisK
KyAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigpCisgICAgbG9nZ2VyLnNldExldmVsKGxv
Z2dpbmcuSU5GTykKKyAgICBsb2dnZXIuYWRkSGFuZGxlcihoYW5kbGVyKQorCisKK2RlZiBpbml0
KCk6CisgICAgIiIiRXhlY3V0ZSBjb2RlIHByaW9yIHRvIGltcG9ydGluZyBmcm9tIHdlYmtpdHB5
LnVuaXR0ZXN0cy4iIiIKKyAgICBjb25maWd1cmVfbG9nZ2luZygpCisKKyAgICB2ZXJzaW9uaW5n
LmNoZWNrX3ZlcnNpb24oKQorCisgICAgKGNvbXBhcmlzb24sIGN1cnJlbnRfdmVyc2lvbiwgbWlu
aW11bV92ZXJzaW9uKSA9IFwKKyAgICAgICAgdmVyc2lvbmluZy5jb21wYXJlX3ZlcnNpb24oKQor
CisgICAgaWYgY29tcGFyaXNvbiA+IDA6CisgICAgICAgICMgVGhlbiB0aGUgY3VycmVudCB2ZXJz
aW9uIGlzIGxhdGVyIHRoYW4gdGhlIG1pbmltdW0gdmVyc2lvbi4KKyAgICAgICAgbWVzc2FnZSA9
ICgiWW91IGFyZSB0ZXN0aW5nIHdlYmtpdHB5IHdpdGggYSBQeXRob24gdmVyc2lvbiAoJXMpICIK
KyAgICAgICAgICAgICAgICAgICAiaGlnaGVyIHRoYW4gdGhlIG1pbmltdW0gdmVyc2lvbiAoJXMp
IGl0IHdhcyBtZWFudCAiCisgICAgICAgICAgICAgICAgICAgInRvIHN1cHBvcnQuIiAlIChjdXJy
ZW50X3ZlcnNpb24sIG1pbmltdW1fdmVyc2lvbikpCisgICAgICAgIF9sb2cud2FybihtZXNzYWdl
KQorCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgIyBGSVhNRTogVGhpcyBpcyBh
IGhhY2ssIGJ1dCBJJ20gdGlyZWQgb2YgY29tbWVudGluZyBvdXQgdGhlIHRlc3QuCi0gICAgIyAg
ICAgICAgU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTgxOAot
ICAgIGlmIGxlbihzeXMuYXJndikgPiAxIGFuZCBzeXMuYXJndlsxXSA9PSAiLS1hbGwiOgotICAg
ICAgICBzeXMuYXJndi5yZW1vdmUoIi0tYWxsIikKLSAgICAgICAgZnJvbSB3ZWJraXRweS5zY21f
dW5pdHRlc3QgaW1wb3J0ICoKIAorICAgIGluaXQoKQorCisgICAgIyBXZSBpbXBvcnQgdGhlIHVu
aXQgdGVzdCBjb2RlIGFmdGVyIGluaXQoKSB0byBlbnN1cmUgdGhhdCBhbnkKKyAgICAjIFB5dGhv
biB2ZXJzaW9uIHdhcm5pbmdzIGFyZSBkaXNwbGF5ZWQgaW4gY2FzZSBhbiBlcnJvciBvY2N1cnMK
KyAgICAjIHdoaWxlIGludGVycHJldGluZyB3ZWJraXRweS51bml0dGVzdHMuICBUaGlzIGFsc28g
YWxsb3dzCisgICAgIyBsb2dnaW5nIHRvIGJlIGNvbmZpZ3VyZWQgcHJpb3IgdG8gaW1wb3J0aW5n
IC0tIGZvciBleGFtcGxlIHRvCisgICAgIyBlbmFibGUgdGhlIGRpc3BsYXkgb2YgYXV0b2luc3Rh
bGwgbG9nZ2luZy5sb2cgbWVzc2FnZXMgd2hpbGUKKyAgICAjIHJ1bm5pbmcgdGhlIHVuaXQgdGVz
dHMuCisgICAgZnJvbSB3ZWJraXRweS51bml0dGVzdHMgaW1wb3J0ICoKKworICAgICMgUnVucyB0
aGUgdW5pdCB0ZXN0cy4KICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvaW5pdC91bml0dGVzdHMucHkgYi9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2luaXQvdW5pdHRlc3RzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjk3ZWNkMzMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2luaXQvdW5pdHRlc3RzLnB5CkBAIC0wLDAgKzEsMjcgQEAKKyMgQ29weXJpZ2h0
IChDKSAyMDEwIENocmlzIEplcmRvbmVrIChjamVyZG9uZWtAd2Via2l0Lm9yZykKKyMKKyMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIwor
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIiIiUnVucyBpbml0IHBhY2thZ2Ug
dW5pdCB0ZXN0cy4iIiIKKworIyBUaGlzIG1vZHVsZSBpcyBpbXBvcnRlZCBieSB0aGUgbW9kdWxl
IHRoYXQgaW1wb3J0cyBhbGwgd2Via2l0cHkgdW5pdCB0ZXN0cy4KKworZnJvbSB2ZXJzaW9uaW5n
X3VuaXR0ZXN0IGltcG9ydCAqCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2luaXQvdmVyc2lvbmluZy5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvaW5p
dC92ZXJzaW9uaW5nLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlYjAw
OGUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2luaXQv
dmVyc2lvbmluZy5weQpAQCAtMCwwICsxLDEyNiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTAgQ2hy
aXMgSmVyZG9uZWsgKGNqZXJkb25la0B3ZWJraXQub3JnKQorIworIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiJTdXBwb3J0cyBQeXRob24gdmVyc2lvbiBjaGVja2lu
Zy4iIiIKKworaW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBzeXMKKworX2xvZyA9IGxvZ2dpbmcuZ2V0
TG9nZ2VyKCJ3ZWJraXRweS5pbml0LnZlcnNpb25pbmciKQorCisjIFRoZSBtaW5pbXVtIFB5dGhv
biB2ZXJzaW9uIHRoZSB3ZWJraXRweSBwYWNrYWdlIHN1cHBvcnRzLgorX01JTklNVU1fU1VQUE9S
VEVEX1BZVEhPTl9WRVJTSU9OID0gIjIuNSIKKworCitkZWYgY29tcGFyZV92ZXJzaW9uKHN5c21v
ZHVsZT1Ob25lLCB0YXJnZXRfdmVyc2lvbj1Ob25lKToKKyAgICAiIiJDb21wYXJlIHRoZSBjdXJy
ZW50IFB5dGhvbiB2ZXJzaW9uIHdpdGggYSB0YXJnZXQgdmVyc2lvbi4KKworICAgIEFyZ3M6Cisg
ICAgICBzeXNtb2R1bGU6IEFuIG9iamVjdCB3aXRoIHZlcnNpb24gYW5kIHZlcnNpb25faW5mbyBk
YXRhIGF0dHJpYnV0ZXMKKyAgICAgICAgICAgICAgICAgdXNlZCB0byBkZXRlY3QgdGhlIGN1cnJl
bnQgUHl0aG9uIHZlcnNpb24uICBUaGUgYXR0cmlidXRlcworICAgICAgICAgICAgICAgICBzaG91
bGQgaGF2ZSB0aGUgc2FtZSBzZW1hbnRpY3MgYXMgc3lzLnZlcnNpb24gYW5kCisgICAgICAgICAg
ICAgICAgIHN5cy52ZXJzaW9uX2luZm8uICBUaGlzIHBhcmFtZXRlciBzaG91bGQgb25seSBiZSB1
c2VkCisgICAgICAgICAgICAgICAgIGZvciB1bml0IHRlc3RpbmcuICBEZWZhdWx0cyB0byBzeXMu
CisgICAgICB0YXJnZXRfdmVyc2lvbjogQSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBQeXRob24g
dmVyc2lvbiB0byBjb21wYXJlCisgICAgICAgICAgICAgICAgICAgICAgdGhlIGN1cnJlbnQgdmVy
c2lvbiBhZ2FpbnN0LiAgVGhlIHN0cmluZyBzaG91bGQgaGF2ZQorICAgICAgICAgICAgICAgICAg
ICAgIG9uZSBvZiB0aGUgZm9sbG93aW5nIHRocmVlIGZvcm1zOiAyLCAyLjUsIG9yIDIuNS4zLgor
ICAgICAgICAgICAgICAgICAgICAgIERlZmF1bHRzIHRvIHRoZSBtaW5pbXVtIHZlcnNpb24gdGhh
dCB0aGUgd2Via2l0cHkKKyAgICAgICAgICAgICAgICAgICAgICBwYWNrYWdlIHN1cHBvcnRzLgor
CisgICAgUmV0dXJuczoKKyAgICAgIEEgdHJpcGxlIG9mIChjb21wYXJpc29uLCBjdXJyZW50X3Zl
cnNpb24sIHRhcmdldF92ZXJzaW9uKS4KKworICAgICAgY29tcGFyaXNvbjogQW4gaW50ZWdlciBy
ZXByZXNlbnRpbmcgdGhlIHJlc3VsdCBvZiBjb21wYXJpbmcgdGhlCisgICAgICAgICAgICAgICAg
ICBjdXJyZW50IHZlcnNpb24gd2l0aCB0aGUgdGFyZ2V0IHZlcnNpb24uICBBIHBvc2l0aXZlCisg
ICAgICAgICAgICAgICAgICBudW1iZXIgbWVhbnMgdGhlIGN1cnJlbnQgdmVyc2lvbiBpcyBncmVh
dGVyIHRoYW4gdGhlCisgICAgICAgICAgICAgICAgICB0YXJnZXQsIDAgbWVhbnMgdGhleSBhcmUg
dGhlIHNhbWUsIGFuZCBhIG5lZ2F0aXZlIG51bWJlcgorICAgICAgICAgICAgICAgICAgbWVhbnMg
dGhlIGN1cnJlbnQgdmVyc2lvbiBpcyBsZXNzIHRoYW4gdGhlIHRhcmdldC4KKyAgICAgICAgICAg
ICAgICAgICAgICBUaGlzIG1ldGhvZCBjb21wYXJlcyB2ZXJzaW9uIGluZm9ybWF0aW9uIG9ubHkg
dXAKKyAgICAgICAgICAgICAgICAgIHRvIHRoZSBwcmVjaXNpb24gb2YgdGhlIGdpdmVuIHRhcmdl
dCB2ZXJzaW9uLiAgRm9yCisgICAgICAgICAgICAgICAgICBleGFtcGxlLCBpZiB0aGUgdGFyZ2V0
IHZlcnNpb24gaXMgMi42IGFuZCB0aGUgY3VycmVudAorICAgICAgICAgICAgICAgICAgdmVyc2lv
biBpcyAyLjUuMywgdGhpcyBtZXRob2QgdXNlcyAyLjUgZm9yIHRoZSBwdXJwb3NlcworICAgICAg
ICAgICAgICAgICAgb2YgY29tcGFyaW5nIHdpdGggdGhlIHRhcmdldC4KKyAgICAgIGN1cnJlbnRf
dmVyc2lvbjogQSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBjdXJyZW50IFB5dGhvbiB2ZXJzaW9u
LCBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgZXhhbXBsZSAyLjUuMy4KKyAgICAgIHRhcmdl
dF92ZXJzaW9uOiBBIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHZlcnNpb24gdGhhdCB0aGUgY3Vy
cmVudAorICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb24gd2FzIGNvbXBhcmVkIGFnYWluc3Qs
IGZvciBleGFtcGxlIDIuNS4KKworICAgICIiIgorICAgIGlmIHN5c21vZHVsZSBpcyBOb25lOgor
ICAgICAgICBzeXNtb2R1bGUgPSBzeXMKKyAgICBpZiB0YXJnZXRfdmVyc2lvbiBpcyBOb25lOgor
ICAgICAgICB0YXJnZXRfdmVyc2lvbiA9IF9NSU5JTVVNX1NVUFBPUlRFRF9QWVRIT05fVkVSU0lP
TgorCisgICAgIyBUaGUgbnVtYmVyIG9mIHZlcnNpb24gcGFydHMgdG8gY29tcGFyZS4KKyAgICBw
cmVjaXNpb24gPSBsZW4odGFyZ2V0X3ZlcnNpb24uc3BsaXQoIi4iKSkKKworICAgICMgV2UgdXNl
IHN5cy52ZXJzaW9uX2luZm8gcmF0aGVyIHRoYW4gc3lzLnZlcnNpb24gc2luY2UgaXRzIGZpcnN0
CisgICAgIyB0aHJlZSBlbGVtZW50cyBhcmUgZ3VhcmFudGVlZCB0byBiZSBpbnRlZ2Vycy4KKyAg
ICBjdXJyZW50X3ZlcnNpb25faW5mb190b19jb21wYXJlID0gc3lzbW9kdWxlLnZlcnNpb25faW5m
b1s6cHJlY2lzaW9uXQorICAgICMgQ29udmVydCBpbnRlZ2VycyB0byBzdHJpbmdzLgorICAgIGN1
cnJlbnRfdmVyc2lvbl9pbmZvX3RvX2NvbXBhcmUgPSBtYXAoc3RyLCBjdXJyZW50X3ZlcnNpb25f
aW5mb190b19jb21wYXJlKQorICAgIGN1cnJlbnRfdmVyc2lvbl90b19jb21wYXJlID0gIi4iLmpv
aW4oY3VycmVudF92ZXJzaW9uX2luZm9fdG9fY29tcGFyZSkKKworICAgICMgQ29tcGFyZSB2ZXJz
aW9uIHN0cmluZ3MgbGV4aWNvZ3JhcGhpY2FsbHkuCisgICAgaWYgY3VycmVudF92ZXJzaW9uX3Rv
X2NvbXBhcmUgPiB0YXJnZXRfdmVyc2lvbjoKKyAgICAgICAgY29tcGFyaXNvbiA9IDEKKyAgICBl
bGlmIGN1cnJlbnRfdmVyc2lvbl90b19jb21wYXJlID09IHRhcmdldF92ZXJzaW9uOgorICAgICAg
ICBjb21wYXJpc29uID0gMAorICAgIGVsc2U6CisgICAgICAgIGNvbXBhcmlzb24gPSAtMQorCisg
ICAgIyBUaGUgdmVyc2lvbiBudW1iZXIgcG9ydGlvbiBvZiB0aGUgY3VycmVudCB2ZXJzaW9uIHN0
cmluZywgZm9yCisgICAgIyBleGFtcGxlICIyLjYuNCIuCisgICAgY3VycmVudF92ZXJzaW9uID0g
c3lzbW9kdWxlLnZlcnNpb24uc3BsaXQoKVswXQorCisgICAgcmV0dXJuIChjb21wYXJpc29uLCBj
dXJyZW50X3ZlcnNpb24sIHRhcmdldF92ZXJzaW9uKQorCisKKyMgRklYTUU6IEFkZCBhIGxvZ2dp
bmcgbGV2ZWwgcGFyYW1ldGVyIHRvIGFsbG93IHRoZSB2ZXJzaW9uIG1lc3NhZ2UKKyMgICAgICAg
IHRvIGJlIGxvZ2dlZCBhdCBsZXZlbHMgb3RoZXIgdGhhbiBXQVJOSU5HLCBmb3IgZXhhbXBsZSBD
UklUSUNBTC4KK2RlZiBjaGVja192ZXJzaW9uKHN5c21vZHVsZT1Ob25lLCB0YXJnZXRfdmVyc2lv
bj1Ob25lKToKKyAgICAiIiJDaGVjayB0aGUgY3VycmVudCBQeXRob24gdmVyc2lvbiBhZ2FpbnN0
IGEgdGFyZ2V0IHZlcnNpb24uCisKKyAgICBMb2dzIGEgd2FybmluZyBtZXNzYWdlIGlmIHRoZSBj
dXJyZW50IHZlcnNpb24gaXMgbGVzcyB0aGFuIHRoZQorICAgIHRhcmdldCB2ZXJzaW9uLgorCisg
ICAgQXJnczoKKyAgICAgIHN5c21vZHVsZTogU2VlIHRoZSBjb21wYXJlX3ZlcnNpb24oKSBkb2Nz
dHJpbmcuCisgICAgICB0YXJnZXRfdmVyc2lvbjogU2VlIHRoZSBjb21wYXJlX3ZlcnNpb24oKSBk
b2NzdHJpbmcuCisKKyAgICBSZXR1cm5zOgorICAgICAgQSBib29sZWFuIHZhbHVlIG9mIHdoZXRo
ZXIgdGhlIGN1cnJlbnQgdmVyc2lvbiBpcyBncmVhdGVyIHRoYW4KKyAgICAgIG9yIGVxdWFsIHRv
IHRoZSB0YXJnZXQgdmVyc2lvbi4KKworICAgICIiIgorICAgIChjb21wYXJpc29uLCBjdXJyZW50
X3ZlcnNpb24sIHRhcmdldF92ZXJzaW9uKSA9IFwKKyAgICAgICAgY29tcGFyZV92ZXJzaW9uKHN5
c21vZHVsZSwgdGFyZ2V0X3ZlcnNpb24pCisKKyAgICBpZiBjb21wYXJpc29uID49IDA6CisgICAg
ICAgICMgVGhlbiB0aGUgY3VycmVudCB2ZXJzaW9uIGlzIGF0IGxlYXN0IHRoZSBtaW5pbXVtIHZl
cnNpb24uCisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBtZXNzYWdlID0gKCJXZWJLaXQgUHl0
aG9uIHNjcmlwdHMgZG8gbm90IHN1cHBvcnQgeW91ciBjdXJyZW50IFB5dGhvbiAiCisgICAgICAg
ICAgICAgICAidmVyc2lvbiAoJXMpLiAgVGhlIG1pbmltdW0gc3VwcG9ydGVkIHZlcnNpb24gaXMg
JXMuIgorICAgICAgICAgICAgICAgJSAoY3VycmVudF92ZXJzaW9uLCB0YXJnZXRfdmVyc2lvbikp
CisgICAgX2xvZy53YXJuKG1lc3NhZ2UpCisgICAgcmV0dXJuIEZhbHNlCmRpZmYgLS1naXQgYS9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2luaXQvdmVyc2lvbmluZ191bml0dGVzdC5weSBi
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvaW5pdC92ZXJzaW9uaW5nX3VuaXR0ZXN0LnB5
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5ODQyZWEKLS0tIC9kZXYvbnVs
bAorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2luaXQvdmVyc2lvbmluZ191bml0
dGVzdC5weQpAQCAtMCwwICsxLDEzMSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTAgQ2hyaXMgSmVy
ZG9uZWsgKGNqZXJkb25la0B3ZWJraXQub3JnKQorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5E
CisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCisiIiJDb250YWlucyB1bml0IHRlc3RzIGZvciB2ZXJzaW9uaW5nLnB5
LiIiIgorCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IHVuaXR0ZXN0CisKK2Zyb20gbG9ndGVzdGlu
ZyBpbXBvcnQgVW5pdFRlc3RMb2cKK2Zyb20gdmVyc2lvbmluZyBpbXBvcnQgY2hlY2tfdmVyc2lv
bgorZnJvbSB2ZXJzaW9uaW5nIGltcG9ydCBjb21wYXJlX3ZlcnNpb24KKworY2xhc3MgTW9ja1N5
cyhvYmplY3QpOgorCisgICAgIiIiQSBtb2NrIHN5cyBtb2R1bGUgZm9yIHBhc3NpbmcgdG8gdmVy
c2lvbi1jaGVja2luZyBtZXRob2RzLiIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGN1cnJl
bnRfdmVyc2lvbik6CisgICAgICAgICIiIkNyZWF0ZSBhbiBpbnN0YW5jZS4KKworICAgICAgICBj
dXJyZW50X3ZlcnNpb246IEEgdmVyc2lvbiBzdHJpbmcgd2l0aCBtYWpvciwgbWlub3IsIGFuZCBt
aWNybworICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb24gcGFydHMuCisKKyAgICAgICAg
IiIiCisgICAgICAgIHZlcnNpb25faW5mbyA9IGN1cnJlbnRfdmVyc2lvbi5zcGxpdCgiLiIpCisg
ICAgICAgIHZlcnNpb25faW5mbyA9IG1hcChpbnQsIHZlcnNpb25faW5mbykKKworICAgICAgICBz
ZWxmLnZlcnNpb24gPSBjdXJyZW50X3ZlcnNpb24gKyAiIFZlcnNpb24gZGV0YWlscy4iCisgICAg
ICAgIHNlbGYudmVyc2lvbl9pbmZvID0gdmVyc2lvbl9pbmZvCisKKworY2xhc3MgQ29tcGFyZVZl
cnNpb25UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgICIiIlRlc3RzIGNvbXBhcmVfdmVy
c2lvbigpLiIiIgorCisgICAgZGVmIF9tb2NrX3N5cyhzZWxmLCBjdXJyZW50X3ZlcnNpb24pOgor
ICAgICAgICByZXR1cm4gTW9ja1N5cyhjdXJyZW50X3ZlcnNpb24pCisKKyAgICBkZWYgdGVzdF9k
ZWZhdWx0X21pbmltdW1fdmVyc2lvbihzZWxmKToKKyAgICAgICAgIiIiVGVzdCB0aGUgY29uZmln
dXJlZCBtaW5pbXVtIHZlcnNpb24gdGhhdCB3ZWJraXRweSBzdXBwb3J0cy4iIiIKKyAgICAgICAg
KGNvbXBhcmlzb24sIGN1cnJlbnRfdmVyc2lvbiwgbWluX3ZlcnNpb24pID0gY29tcGFyZV92ZXJz
aW9uKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMobWluX3ZlcnNpb24sICIyLjUiKQorCisg
ICAgZGVmIGNvbXBhcmVfdmVyc2lvbihzZWxmLCB0YXJnZXRfdmVyc2lvbiwgY3VycmVudF92ZXJz
aW9uPU5vbmUpOgorICAgICAgICAiIiJDYWxsIGNvbXBhcmVfdmVyc2lvbigpLiIiIgorICAgICAg
ICBpZiBjdXJyZW50X3ZlcnNpb24gaXMgTm9uZToKKyAgICAgICAgICAgIGN1cnJlbnRfdmVyc2lv
biA9ICIyLjUuMyIKKyAgICAgICAgbW9ja19zeXMgPSBzZWxmLl9tb2NrX3N5cyhjdXJyZW50X3Zl
cnNpb24pCisgICAgICAgIHJldHVybiBjb21wYXJlX3ZlcnNpb24obW9ja19zeXMsIHRhcmdldF92
ZXJzaW9uKQorCisgICAgZGVmIGNvbXBhcmUoc2VsZiwgdGFyZ2V0X3ZlcnNpb24sIGN1cnJlbnRf
dmVyc2lvbj1Ob25lKToKKyAgICAgICAgIiIiQ2FsbCBjb21wYXJlX3ZlcnNpb24oKSwgYW5kIHJl
dHVybiB0aGUgY29tcGFyaXNvbi4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuY29tcGFyZV92ZXJz
aW9uKHRhcmdldF92ZXJzaW9uLCBjdXJyZW50X3ZlcnNpb24pWzBdCisKKyAgICBkZWYgdGVzdF9y
ZXR1cm5lZF9jdXJyZW50X3ZlcnNpb24oc2VsZik6CisgICAgICAgICIiIlRlc3QgdGhlIGN1cnJl
bnRfdmVyc2lvbiByZXR1cm4gdmFsdWUuIiIiCisgICAgICAgIGN1cnJlbnRfdmVyc2lvbiA9IHNl
bGYuY29tcGFyZV92ZXJzaW9uKCIyLjUiKVsxXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhj
dXJyZW50X3ZlcnNpb24sICIyLjUuMyIpCisKKyAgICBkZWYgdGVzdF9yZXR1cm5lZF90YXJnZXRf
dmVyc2lvbihzZWxmKToKKyAgICAgICAgIiIiVGVzdCB0aGUgY3VycmVudF92ZXJzaW9uIHJldHVy
biB2YWx1ZS4iIiIKKyAgICAgICAgdGFyZ2V0X3ZlcnNpb24gPSBzZWxmLmNvbXBhcmVfdmVyc2lv
bigiMi41IilbMl0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHModGFyZ2V0X3ZlcnNpb24sICIy
LjUiKQorCisgICAgZGVmIHRlc3RfdGFyZ2V0X3ZlcnNpb25fbWFqb3Ioc2VsZik6CisgICAgICAg
ICIiIlRlc3QgbWFqb3IgdmVyc2lvbiBmb3IgdGFyZ2V0LiIiIgorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFscygtMSwgc2VsZi5jb21wYXJlKCIzIikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxz
KDAsIHNlbGYuY29tcGFyZSgiMiIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscygxLCBzZWxm
LmNvbXBhcmUoIjIiLCAiMy4wLjAiKSkKKworICAgIGRlZiB0ZXN0X3RhcmdldF92ZXJzaW9uX21p
bm9yKHNlbGYpOgorICAgICAgICAiIiJUZXN0IG1pbm9yIHZlcnNpb24gZm9yIHRhcmdldC4iIiIK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoLTEsIHNlbGYuY29tcGFyZSgiMi42IikpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDAsIHNlbGYuY29tcGFyZSgiMi41IikpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWxzKDEsIHNlbGYuY29tcGFyZSgiMi40IikpCisKKyAgICBkZWYgdGVzdF90
YXJnZXRfdmVyc2lvbl9taWNybyhzZWxmKToKKyAgICAgICAgIiIiVGVzdCBtaW5vciB2ZXJzaW9u
IGZvciB0YXJnZXQuIiIiCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKC0xLCBzZWxmLmNvbXBh
cmUoIjIuNS40IikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDAsIHNlbGYuY29tcGFyZSgi
Mi41LjMiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoMSwgc2VsZi5jb21wYXJlKCIyLjUu
MiIpKQorCisKK2NsYXNzIENoZWNrVmVyc2lvblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisg
ICAgIiIiVGVzdHMgY2hlY2tfdmVyc2lvbigpLiIiIgorCisgICAgZGVmIHNldFVwKHNlbGYpOgor
ICAgICAgICBzZWxmLl9sb2cgPSBVbml0VGVzdExvZyhzZWxmKQorCisgICAgZGVmIHRlYXJEb3du
KHNlbGYpOgorICAgICAgICBzZWxmLl9sb2cudGVhckRvd24oKQorCisgICAgZGVmIF9jaGVja192
ZXJzaW9uKHNlbGYsIG1pbmltdW1fdmVyc2lvbik6CisgICAgICAgICIiIkNhbGwgY2hlY2tfdmVy
c2lvbigpLiIiIgorICAgICAgICBtb2NrX3N5cyA9IE1vY2tTeXMoIjIuNS4zIikKKyAgICAgICAg
cmV0dXJuIGNoZWNrX3ZlcnNpb24obW9ja19zeXMsIG1pbmltdW1fdmVyc2lvbikKKworICAgIGRl
ZiB0ZXN0X3RydWVfcmV0dXJuX3ZhbHVlKHNlbGYpOgorICAgICAgICAiIiJUZXN0IHRoZSBjb25m
aWd1cmVkIG1pbmltdW0gdmVyc2lvbiB0aGF0IHdlYmtpdHB5IHN1cHBvcnRzLiIiIgorICAgICAg
ICBpc19jdXJyZW50ID0gc2VsZi5fY2hlY2tfdmVyc2lvbigiMi40IikKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbHMoVHJ1ZSwgaXNfY3VycmVudCkKKyAgICAgICAgc2VsZi5fbG9nLmFzc2VydE1l
c3NhZ2VzKFtdKSAgIyBObyB3YXJuaW5nIHdhcyBsb2dnZWQuCisKKyAgICBkZWYgdGVzdF9mYWxz
ZV9yZXR1cm5fdmFsdWUoc2VsZik6CisgICAgICAgICIiIlRlc3QgdGhlIGNvbmZpZ3VyZWQgbWlu
aW11bSB2ZXJzaW9uIHRoYXQgd2Via2l0cHkgc3VwcG9ydHMuIiIiCisgICAgICAgIGlzX2N1cnJl
bnQgPSBzZWxmLl9jaGVja192ZXJzaW9uKCIyLjYiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
cyhGYWxzZSwgaXNfY3VycmVudCkKKyAgICAgICAgZXhwZWN0ZWRfbWVzc2FnZSA9ICgiV0FSTklO
RzogV2ViS2l0IFB5dGhvbiBzY3JpcHRzIGRvIG5vdCBzdXBwb3J0ICIKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAieW91ciBjdXJyZW50IFB5dGhvbiB2ZXJzaW9uICgyLjUuMykuICAiCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBtaW5pbXVtIHN1cHBvcnRlZCB2ZXJzaW9u
IGlzIDIuNi5cbiIpCisgICAgICAgIHNlbGYuX2xvZy5hc3NlcnRNZXNzYWdlcyhbZXhwZWN0ZWRf
bWVzc2FnZV0pCisKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5
bGUvdW5pdHRlc3RzLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS91bml0
dGVzdHMucHkKaW5kZXggNjI2MTVhYi4uZDJiNDk2NiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9zdHlsZS91bml0dGVzdHMucHkKKysrIGIvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9zdHlsZS91bml0dGVzdHMucHkKQEAgLTMwLDcgKzMwLDcgQEAKIAogIiIi
UnVucyBzdHlsZSBwYWNrYWdlIHVuaXQgdGVzdHMuIiIiCiAKLSMgVGhpcyBtb2R1bGUgaXMgaW1w
b3J0ZWQgYnkgdGVzdC13ZWJraXRweS4KKyMgVGhpcyBtb2R1bGUgaXMgaW1wb3J0ZWQgYnkgdGhl
IG1vZHVsZSB0aGF0IGltcG9ydHMgYWxsIHdlYmtpdHB5IHVuaXQgdGVzdHMuCiAKIGltcG9ydCBz
eXMKIGltcG9ydCB1bml0dGVzdApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS91bml0dGVzdHMucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3VuaXR0ZXN0
cy5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi45OTZkYWIyCi0tLSAvZGV2
L251bGwKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS91bml0dGVzdHMucHkKQEAg
LTAsMCArMSw2NiBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjIENvcHlyaWdodCAoYykgMjAw
OSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwor
IyBUaGlzIG1vZHVsZSBpcyBpbXBvcnRlZCBieSBTY3JpcHRzL3Rlc3Qtd2Via2l0cHkuCisKK2lt
cG9ydCBzeXMKKworZnJvbSB3ZWJraXRweS5idWd6aWxsYV91bml0dGVzdCBpbXBvcnQgKgorZnJv
bSB3ZWJraXRweS5idWlsZGJvdF91bml0dGVzdCBpbXBvcnQgKgorZnJvbSB3ZWJraXRweS5jaGFu
Z2Vsb2dzX3VuaXR0ZXN0IGltcG9ydCAqCitmcm9tIHdlYmtpdHB5LmNvbW1hbmRzLmRvd25sb2Fk
X3VuaXR0ZXN0IGltcG9ydCAqCitmcm9tIHdlYmtpdHB5LmNvbW1hbmRzLmVhcmx5X3dhcm5pbmdf
c3lzdGVtX3VuaXR0ZXN0IGltcG9ydCAqCitmcm9tIHdlYmtpdHB5LmNvbW1hbmRzLm9wZW5idWdz
X3VuaXR0ZXN0IGltcG9ydCBPcGVuQnVnc1Rlc3QKK2Zyb20gd2Via2l0cHkuY29tbWFuZHMudXBs
b2FkX3VuaXR0ZXN0IGltcG9ydCAqCitmcm9tIHdlYmtpdHB5LmNvbW1hbmRzLnF1ZXJpZXNfdW5p
dHRlc3QgaW1wb3J0ICoKK2Zyb20gd2Via2l0cHkuY29tbWFuZHMucXVldWVzX3VuaXR0ZXN0IGlt
cG9ydCAqCitmcm9tIHdlYmtpdHB5LmNvbW1pdHRlcnNfdW5pdHRlc3QgaW1wb3J0ICoKK2Zyb20g
d2Via2l0cHkuY3JlZGVudGlhbHNfdW5pdHRlc3QgaW1wb3J0ICoKK2Zyb20gd2Via2l0cHkuZGlm
Zl9wYXJzZXJfdW5pdHRlc3QgaW1wb3J0ICoKK2Zyb20gd2Via2l0cHkuZXhlY3V0aXZlX3VuaXR0
ZXN0IGltcG9ydCAqCitmcm9tIHdlYmtpdHB5LmdyYW1tYXJfdW5pdHRlc3QgaW1wb3J0ICoKK2Zy
b20gd2Via2l0cHkuaW5pdC51bml0dGVzdHMgaW1wb3J0ICogICMgZm9yIHRoZSB3ZWJraXRweS5p
bml0IHBhY2thZ2UKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQubWFjX3VuaXR0ZXN0
IGltcG9ydCAqCitmcm9tIHdlYmtpdHB5Lm11bHRpY29tbWFuZHRvb2xfdW5pdHRlc3QgaW1wb3J0
ICoKK2Zyb20gd2Via2l0cHkubmV0d29ya3RyYW5zYWN0aW9uX3VuaXR0ZXN0IGltcG9ydCAqCitm
cm9tIHdlYmtpdHB5LnBhdGNoY29sbGVjdGlvbl91bml0dGVzdCBpbXBvcnQgKgorZnJvbSB3ZWJr
aXRweS5xdWV1ZWVuZ2luZV91bml0dGVzdCBpbXBvcnQgKgorZnJvbSB3ZWJraXRweS5zdGVwcy5z
dGVwc191bml0dGVzdCBpbXBvcnQgKgorZnJvbSB3ZWJraXRweS5zdGVwcy5jbG9zZWJ1Z2Zvcmxh
bmRkaWZmX3VuaXR0ZXN0IGltcG9ydCAqCitmcm9tIHdlYmtpdHB5LnN0ZXBzLnVwZGF0ZWNoYW5n
ZWxvZ3N3aXRocmV2aWV3X3VuaXR0ZXN0cyBpbXBvcnQgKgorZnJvbSB3ZWJraXRweS5zdHlsZS51
bml0dGVzdHMgaW1wb3J0ICogICMgZm9yIHRoZSB3ZWJraXRweS5zdHlsZSBwYWNrYWdlCitmcm9t
IHdlYmtpdHB5LnVzZXJfdW5pdHRlc3QgaW1wb3J0ICoKK2Zyb20gd2Via2l0cHkud2Via2l0X2xv
Z2dpbmdfdW5pdHRlc3QgaW1wb3J0ICoKK2Zyb20gd2Via2l0cHkud2Via2l0cG9ydF91bml0dGVz
dCBpbXBvcnQgKgorCisjIEZJWE1FOiBUaGlzIGlzIGEgaGFjaywgYnV0IEknbSB0aXJlZCBvZiBj
b21tZW50aW5nIG91dCB0aGUgdGVzdC4KKyMgICAgICAgIFNlZSBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE4MTgKK2lmIGxlbihzeXMuYXJndikgPiAxIGFuZCBzeXMu
YXJndlsxXSA9PSAiLS1hbGwiOgorICAgIHN5cy5hcmd2LnJlbW92ZSgiLS1hbGwiKQorICAgIGZy
b20gd2Via2l0cHkuc2NtX3VuaXR0ZXN0IGltcG9ydCAqCg==
</data>
<flag name="review"
          id="33228"
          type_id="1"
          status="+"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="33229"
          type_id="3"
          status="-"
          setter="cjerdonek"
    />
          </attachment>
      

    </bug>

</bugzilla>