<?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>31923</bug_id>
          
          <creation_ts>2009-11-27 01:15:19 -0800</creation_ts>
          <short_desc>[bzt] Unit test download commands</short_desc>
          <delta_ts>2009-11-27 09:38:00 -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>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>eric</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>166859</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-11-27 01:15:19 -0800</bug_when>
    <thetext>Unit test for great justice</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166860</commentid>
    <comment_count>1</comment_count>
      <attachid>43938</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-11-27 01:16:08 -0800</bug_when>
    <thetext>Created attachment 43938
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166902</commentid>
    <comment_count>2</comment_count>
      <attachid>43938</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-11-27 08:23:15 -0800</bug_when>
    <thetext>Comment on attachment 43938
Patch

I don&apos;t understand why you&apos;re adding &quot;return tool&quot;:
 43         return tool

Why?
232              bugs_to_patches[bug_id] = bugs_to_patches.get(bug_id, []).append(patch)
 234             bugs_to_patches[bug_id] = bugs_to_patches.get(bug_id, []) + [patch]

Does .append() return none?  Was it not working before?

I&apos;m not sure I understand:
 36     def _default_options(self):
either, but it&apos;s nice to list them all.

Why does MockBugzilla inherit from Mock?
 34 class MockBugzilla(Mock):

I&apos;m not saying it shouldn&apos;t, just not sure what that adds.

I would think that we would make:
 35     patch1 = {
into an array eventually.  THen the fetch_attachment lookup is super-simple.

Is this gonna be a problem?
 93         self.checkout_root = os.getcwd()
Does it ever touch the disk?  Will it end up leaving turd files as a result of the test, or fail if you run-webkit-tests from a non-scm directory?

Otherwise looks OK.  The return and .append change are at least un-explained.  The return tool change might be &quot;wrong&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166907</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-11-27 09:22:55 -0800</bug_when>
    <thetext>&gt; I don&apos;t understand why you&apos;re adding &quot;return tool&quot;:
&gt;  43         return tool
&gt; Why?

Yeah, this isn&apos;t needed until the future.  I&apos;ll add it then.

&gt; 232              bugs_to_patches[bug_id] = bugs_to_patches.get(bug_id,
&gt; []).append(patch)
&gt;  234             bugs_to_patches[bug_id] = bugs_to_patches.get(bug_id, []) +
&gt; [patch]
&gt; 
&gt; Does .append() return none? 

Yes.

&gt; Was it not working before?

Right, it was broken if you had multiple patches per bug.

&gt; I&apos;m not sure I understand:
&gt;  36     def _default_options(self):
&gt; either, but it&apos;s nice to list them all.

Basically, I want to test the default path through each command, so i have to use an options object with the default values.

&gt; Why does MockBugzilla inherit from Mock?
&gt;  34 class MockBugzilla(Mock):

So I don&apos;t have have implement all the functions that return None.  Mock takes care of that more me.  Eventually we should assert which functions actually got used, but that&apos;s for the future.

&gt; I would think that we would make:
&gt;  35     patch1 = {
&gt; into an array eventually.  THen the fetch_attachment lookup is super-simple.

Ok.

&gt; Is this gonna be a problem?
&gt;  93         self.checkout_root = os.getcwd()
&gt; Does it ever touch the disk?  Will it end up leaving turd files as a result of
&gt; the test, or fail if you run-webkit-tests from a non-scm directory?

As far as I know, this should be fine.  The issue is that some of the commands cd to this directory, so we need something real.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166908</commentid>
    <comment_count>4</comment_count>
      <attachid>43957</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-11-27 09:31:11 -0800</bug_when>
    <thetext>Created attachment 43957
download_unittest</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166909</commentid>
    <comment_count>5</comment_count>
      <attachid>43957</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-11-27 09:34:16 -0800</bug_when>
    <thetext>Comment on attachment 43957
download_unittest

 76         raise Exception(&quot;Bogus attachment_id in fetch_attachment.&quot;)
Doesn&apos;t actually match what the original would do (which in some cases we actually would want to test).  But we can cover that when we actually test bugzilla.py against some sort of bugzilla-like instance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166910</commentid>
    <comment_count>6</comment_count>
      <attachid>43957</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-11-27 09:37:55 -0800</bug_when>
    <thetext>Comment on attachment 43957
download_unittest

Clearing flags on attachment: 43957

Committed r51442: &lt;http://trac.webkit.org/changeset/51442&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166911</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-11-27 09:38:00 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43938</attachid>
            <date>2009-11-27 01:16:08 -0800</date>
            <delta_ts>2009-11-27 09:31:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-31923-20091127011607.patch</filename>
            <type>text/plain</type>
            <size>9431</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCAxMzM4ZDc5Li45YzYwYTEwIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjAgQEAKIDIwMDktMTEt
MjcgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAorICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbYnp0XSBVbml0IHRlc3QgZG93bmxvYWQgY29t
bWFuZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMx
OTIzCisKKyAgICAgICAgQWRkcyBkb3dubG9hZF91bml0dGVzdCBhbmQgZml4ZXMgYSBidWcgZm91
bmQgd2hpbGUgdGVzdGluZy4KKworICAgICAgICAqIFNjcmlwdHMvbW9kdWxlcy9jb21tYW5kcy9j
b21tYW5kdGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL21vZHVsZXMvY29tbWFuZHMvZG93bmxv
YWQucHk6CisgICAgICAgICogU2NyaXB0cy9tb2R1bGVzL2NvbW1hbmRzL2Rvd25sb2FkX3VuaXR0
ZXN0LnB5OiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL21vZHVsZXMvbW9ja19idWd6aWxsYXRv
b2wucHk6CisgICAgICAgICogU2NyaXB0cy9ydW4td2Via2l0LXVuaXR0ZXN0czoKKworMjAwOS0x
MS0yNyAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCiAgICAgICAgIFVucmV2aWV3
ZWQgImJ1aWxkIiBmaXggZm91bmQgd2hpbGUgd3JpdGluZyB1bml0IHRlc3RzLgogCiAgICAgICAg
ICogU2NyaXB0cy9tb2R1bGVzL2NvbW1hbmRzL2Rvd25sb2FkLnB5OgpkaWZmIC0tZ2l0IGEvV2Vi
S2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NvbW1hbmRzL2NvbW1hbmR0ZXN0LnB5IGIvV2ViS2l0
VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NvbW1hbmRzL2NvbW1hbmR0ZXN0LnB5CmluZGV4IDYxOGE1
MTcuLjEwMGMxOTggMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9jb21t
YW5kcy9jb21tYW5kdGVzdC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvY29t
bWFuZHMvY29tbWFuZHRlc3QucHkKQEAgLTQwLDMgKzQwLDQgQEAgY2xhc3MgQ29tbWFuZHNUZXN0
KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgKHN0ZG91dF9zdHJpbmcsIHN0ZGVycl9zdHJp
bmcpID0gY2FwdHVyZS5yZXN0b3JlX291dHB1dCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
c3Rkb3V0X3N0cmluZywgZXhwZWN0ZWRfc3Rkb3V0KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGV4cGVjdGVkX3N0ZGVyciwgZXhwZWN0ZWRfc3RkZXJyKQorICAgICAgICByZXR1cm4gdG9vbApk
aWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NvbW1hbmRzL2Rvd25sb2Fk
LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NvbW1hbmRzL2Rvd25sb2FkLnB5Cmlu
ZGV4IDk4YThlYmIuLjM2NWI0MDcgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9k
dWxlcy9jb21tYW5kcy9kb3dubG9hZC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVs
ZXMvY29tbWFuZHMvZG93bmxvYWQucHkKQEAgLTc5LDYgKzc5LDcgQEAgY2xhc3MgQnVpbGQoQ29t
bWFuZCk6CiAgICAgICAgIHNlcXVlbmNlLnJ1bl9hbmRfaGFuZGxlX2Vycm9ycygpCiAKIAorIyBG
SVhNRTogUmVxdWlyZXMgdW5pdCB0ZXN0LiBCbG9ja2luZyBpc3N1ZTogV2ViS2l0QXBwbHlpbmdT
Y3JpcHRzCiBjbGFzcyBBcHBseUF0dGFjaG1lbnQoQ29tbWFuZCk6CiAgICAgbmFtZSA9ICJhcHBs
eS1hdHRhY2htZW50IgogICAgIHNob3dfaW5fbWFpbl9oZWxwID0gVHJ1ZQpAQCAtOTQsNiArOTUs
NyBAQCBjbGFzcyBBcHBseUF0dGFjaG1lbnQoQ29tbWFuZCk6CiAgICAgICAgIFdlYktpdEFwcGx5
aW5nU2NyaXB0cy5hcHBseV9wYXRjaGVzX3dpdGhfb3B0aW9ucyh0b29sLnNjbSgpLCBbYXR0YWNo
bWVudF0sIG9wdGlvbnMpCiAKIAorIyBGSVhNRTogUmVxdWlyZXMgdW5pdCB0ZXN0LiBCbG9ja2lu
ZyBpc3N1ZTogV2ViS2l0QXBwbHlpbmdTY3JpcHRzCiBjbGFzcyBBcHBseVBhdGNoZXMoQ29tbWFu
ZCk6CiAgICAgbmFtZSA9ICJhcHBseS1wYXRjaGVzIgogICAgIHNob3dfaW5fbWFpbl9oZWxwID0g
VHJ1ZQpAQCAtMjI5LDcgKzIzMSw3IEBAIGNsYXNzIEFic3RyYWN0UGF0Y2hQcm9jZXNzaW5nQ29t
bWFuZChDb21tYW5kKToKICAgICAgICAgYnVnc190b19wYXRjaGVzID0ge30KICAgICAgICAgZm9y
IHBhdGNoIGluIHBhdGNoZXM6CiAgICAgICAgICAgICBidWdfaWQgPSBwYXRjaFsiYnVnX2lkIl0K
LSAgICAgICAgICAgIGJ1Z3NfdG9fcGF0Y2hlc1tidWdfaWRdID0gYnVnc190b19wYXRjaGVzLmdl
dChidWdfaWQsIFtdKS5hcHBlbmQocGF0Y2gpCisgICAgICAgICAgICBidWdzX3RvX3BhdGNoZXNb
YnVnX2lkXSA9IGJ1Z3NfdG9fcGF0Y2hlcy5nZXQoYnVnX2lkLCBbXSkgKyBbcGF0Y2hdCiAgICAg
ICAgIHJldHVybiBidWdzX3RvX3BhdGNoZXMKIAogICAgIGRlZiBleGVjdXRlKHNlbGYsIG9wdGlv
bnMsIGFyZ3MsIHRvb2wpOgpAQCAtMzUwLDYgKzM1Miw3IEBAIGNsYXNzIExhbmRQYXRjaGVzKEFi
c3RyYWN0UGF0Y2hMYW5kaW5nQ29tbWFuZCk6CiAgICAgICAgIHJldHVybiBhbGxfcGF0Y2hlcwog
CiAKKyMgRklYTUU6IFJlcXVpcmVzIHVuaXQgdGVzdC4KIGNsYXNzIFJvbGxvdXQoQ29tbWFuZCk6
CiAgICAgbmFtZSA9ICJyb2xsb3V0IgogICAgIHNob3dfaW5fbWFpbl9oZWxwID0gVHJ1ZQpkaWZm
IC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NvbW1hbmRzL2Rvd25sb2FkX3Vu
aXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NvbW1hbmRzL2Rvd25sb2Fk
X3VuaXR0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwZmZmNmUK
LS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvY29tbWFuZHMv
ZG93bmxvYWRfdW5pdHRlc3QucHkKQEAgLTAsMCArMSw2NSBAQAorIyBDb3B5cmlnaHQgKEMpIDIw
MDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
IyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2lt
cG9ydCB1bml0dGVzdAorCitmcm9tIG1vZHVsZXMuY29tbWFuZHMuY29tbWFuZHRlc3QgaW1wb3J0
IENvbW1hbmRzVGVzdAorZnJvbSBtb2R1bGVzLmNvbW1hbmRzLmRvd25sb2FkIGltcG9ydCAqCitm
cm9tIG1vZHVsZXMubW9jayBpbXBvcnQgTW9jaworCitjbGFzcyBEb3dubG9hZENvbW1hbmRzVGVz
dChDb21tYW5kc1Rlc3QpOgorICAgIGRlZiBfZGVmYXVsdF9vcHRpb25zKHNlbGYpOgorICAgICAg
ICBvcHRpb25zID0gTW9jaygpCisgICAgICAgIG9wdGlvbnMuZm9yY2VfY2xlYW4gPSBGYWxzZQor
ICAgICAgICBvcHRpb25zLmNsZWFuID0gVHJ1ZQorICAgICAgICBvcHRpb25zLmNoZWNrX2J1aWxk
ZXJzID0gVHJ1ZQorICAgICAgICBvcHRpb25zLnF1aWV0ID0gRmFsc2UKKyAgICAgICAgb3B0aW9u
cy5ub25faW50ZXJhY3RpdmUgPSBGYWxzZQorICAgICAgICBvcHRpb25zLnVwZGF0ZSA9IFRydWUK
KyAgICAgICAgb3B0aW9ucy5idWlsZCA9IFRydWUKKyAgICAgICAgb3B0aW9ucy50ZXN0ID0gVHJ1
ZQorICAgICAgICBvcHRpb25zLmNsb3NlX2J1ZyA9IFRydWUKKyAgICAgICAgcmV0dXJuIG9wdGlv
bnMKKworICAgIGRlZiB0ZXN0X2J1aWxkKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydF9leGVj
dXRlX291dHB1dHMoQnVpbGQoKSwgW10sIG9wdGlvbnM9c2VsZi5fZGVmYXVsdF9vcHRpb25zKCkp
CisKKyAgICBkZWYgdGVzdF9sYW5kX2RpZmYoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0X2V4
ZWN1dGVfb3V0cHV0cyhMYW5kRGlmZigpLCBbNDJdLCBvcHRpb25zPXNlbGYuX2RlZmF1bHRfb3B0
aW9ucygpKQorCisgICAgZGVmIHRlc3RfY2hlY2tfc3R5bGUoc2VsZik6CisgICAgICAgIHNlbGYu
YXNzZXJ0X2V4ZWN1dGVfb3V0cHV0cyhDaGVja1N0eWxlKCksIFsxOTddLCBvcHRpb25zPXNlbGYu
X2RlZmF1bHRfb3B0aW9ucygpKQorCisgICAgZGVmIHRlc3RfYnVpbGRfYXR0YWNobWVudChzZWxm
KToKKyAgICAgICAgc2VsZi5hc3NlcnRfZXhlY3V0ZV9vdXRwdXRzKEJ1aWxkQXR0YWNobWVudCgp
LCBbMTk3XSwgb3B0aW9ucz1zZWxmLl9kZWZhdWx0X29wdGlvbnMoKSkKKworICAgIGRlZiB0ZXN0
X2xhbmRfYXR0YWNobWVudChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRfZXhlY3V0ZV9vdXRw
dXRzKExhbmRBdHRhY2htZW50KCksIFsxOTddLCBvcHRpb25zPXNlbGYuX2RlZmF1bHRfb3B0aW9u
cygpKQorCisgICAgZGVmIHRlc3RfbGFuZF9wYXRjaGVzKHNlbGYpOgorICAgICAgICBzZWxmLmFz
c2VydF9leGVjdXRlX291dHB1dHMoTGFuZFBhdGNoZXMoKSwgWzQyXSwgb3B0aW9ucz1zZWxmLl9k
ZWZhdWx0X29wdGlvbnMoKSkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxl
cy9tb2NrX2J1Z3ppbGxhdG9vbC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9tb2Nr
X2J1Z3ppbGxhdG9vbC5weQppbmRleCA4MDE1ZjEwLi45ZWJiMjg3IDEwMDY0NAotLS0gYS9XZWJL
aXRUb29scy9TY3JpcHRzL21vZHVsZXMvbW9ja19idWd6aWxsYXRvb2wucHkKKysrIGIvV2ViS2l0
VG9vbHMvU2NyaXB0cy9tb2R1bGVzL21vY2tfYnVnemlsbGF0b29sLnB5CkBAIC0yNiwxMSArMjYs
MjYgQEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKK2ltcG9ydCBvcworCitmcm9t
IG1vZHVsZXMubW9jayBpbXBvcnQgTW9jawogZnJvbSBtb2R1bGVzLnNjbSBpbXBvcnQgQ29tbWl0
TWVzc2FnZQogCi1jbGFzcyBNb2NrQnVnemlsbGEoKToKLSAgICBwYXRjaDEgPSB7ICJpZCI6IDE5
NywgImJ1Z19pZCI6IDQyLCAidXJsIjogImh0dHA6Ly9leGFtcGxlLmNvbS8xOTciLCAiaXNfb2Jz
b2xldGUiOiBGYWxzZSB9Ci0gICAgcGF0Y2gyID0geyAiaWQiOiAxMjgsICJidWdfaWQiOiA0Miwg
InVybCI6ICJodHRwOi8vZXhhbXBsZS5jb20vMTI4IiwgImlzX29ic29sZXRlIjogRmFsc2UgfQor
Y2xhc3MgTW9ja0J1Z3ppbGxhKE1vY2spOgorICAgIHBhdGNoMSA9IHsKKyAgICAgICAgImlkIjog
MTk3LAorICAgICAgICAiYnVnX2lkIjogNDIsCisgICAgICAgICJ1cmwiOiAiaHR0cDovL2V4YW1w
bGUuY29tLzE5NyIsCisgICAgICAgICJpc19vYnNvbGV0ZSI6IEZhbHNlLAorICAgICAgICAicmV2
aWV3ZXIiOiAiUmV2aWV3ZXIxIgorICAgIH0KKyAgICBwYXRjaDIgPSB7CisgICAgICAgICJpZCI6
IDEyOCwKKyAgICAgICAgImJ1Z19pZCI6IDQyLAorICAgICAgICAidXJsIjogImh0dHA6Ly9leGFt
cGxlLmNvbS8xMjgiLAorICAgICAgICAiaXNfb2Jzb2xldGUiOiBGYWxzZSwKKyAgICAgICAgInJl
dmlld2VyIjogIlJldmlld2VyMiIKKyAgICB9CiAKICAgICBkZWYgZmV0Y2hfYnVnX2lkc19mcm9t
X2NvbW1pdF9xdWV1ZShzZWxmKToKICAgICAgICAgcmV0dXJuIFs0MiwgNzVdCkBAIC01MywxNyAr
NjgsMTUgQEAgY2xhc3MgTW9ja0J1Z3ppbGxhKCk6CiAgICAgICAgICAgICByZXR1cm4gW3NlbGYu
cGF0Y2gxLCBzZWxmLnBhdGNoMl0KICAgICAgICAgcmV0dXJuIE5vbmUKIAotICAgIGRlZiBjbG9z
ZV9idWdfYXNfZml4ZWQoc2VsZiwgYnVnX2lkLCBjb21tZW50X3RleHQ9Tm9uZSk6Ci0gICAgICAg
IHBhc3MKLQotICAgIGRlZiBvYnNvbGV0ZV9hdHRhY2htZW50KHNlbGYsIGF0dGFjaG1lbnRfaWQs
IGNvbW1lbnRfdGV4dD1Ob25lKToKLSAgICAgICAgcGFzcwotCi0gICAgZGVmIGFkZF9wYXRjaF90
b19idWcoc2VsZiwgYnVnX2lkLCBwYXRjaF9maWxlX29iamVjdCwgZGVzY3JpcHRpb24sIGNvbW1l
bnRfdGV4dD1Ob25lLCBtYXJrX2Zvcl9yZXZpZXc9RmFsc2UsIG1hcmtfZm9yX2NvbW1pdF9xdWV1
ZT1GYWxzZSk6Ci0gICAgICAgIHBhc3MKKyAgICBkZWYgZmV0Y2hfYXR0YWNobWVudChzZWxmLCBh
dHRhY2htZW50X2lkKToKKyAgICAgICAgaWYgYXR0YWNobWVudF9pZCA9PSAxOTc6CisgICAgICAg
ICAgICByZXR1cm4gc2VsZi5wYXRjaDEKKyAgICAgICAgaWYgYXR0YWNobWVudF9pZCA9PSAxMjg6
CisgICAgICAgICAgICByZXR1cm4gc2VsZi5wYXRjaDIKKyAgICAgICAgcmFpc2UgRXhjZXB0aW9u
KCJCb2d1cyBhdHRhY2htZW50X2lkIGluIGZldGNoX2F0dGFjaG1lbnQuIikKIAogCi1jbGFzcyBN
b2NrQnVpbGRCb3QoKToKK2NsYXNzIE1vY2tCdWlsZEJvdChNb2NrKToKICAgICBkZWYgYnVpbGRl
cl9zdGF0dXNlcyhzZWxmKToKICAgICAgICAgcmV0dXJuIFt7CiAgICAgICAgICAgICAibmFtZSI6
ICJCdWlsZGVyMSIsCkBAIC03NCw3ICs4NywxMSBAQCBjbGFzcyBNb2NrQnVpbGRCb3QoKToKICAg
ICAgICAgfV0KIAogCi1jbGFzcyBNb2NrU0NNKCk6CitjbGFzcyBNb2NrU0NNKE1vY2spOgorICAg
IGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgTW9jay5fX2luaXRfXyhzZWxmKQorICAgICAg
ICBzZWxmLmNoZWNrb3V0X3Jvb3QgPSBvcy5nZXRjd2QoKQorCiAgICAgZGVmIGNyZWF0ZV9wYXRj
aChzZWxmKToKICAgICAgICAgcmV0dXJuICJQYXRjaDEiCiAKQEAgLTk1LDExICsxMTIsMTggQEAg
Y2xhc3MgTW9ja1NDTSgpOgogICAgICAgICAgICAgcmV0dXJuICJQYXRjaDIiCiAgICAgICAgIHJh
aXNlIEV4Y2VwdGlvbigiQm9ndXMgY29tbWl0X2lkIGluIGNvbW1pdF9tZXNzYWdlX2Zvcl9sb2Nh
bF9jb21taXQuIikKIAorICAgIGRlZiBtb2RpZmllZF9jaGFuZ2Vsb2dzKHNlbGYpOgorICAgICAg
ICAjIElkZWFsbHkgd2UnZCByZXR1cm4gc29tZXRoaW5nIG1vcmUgaW50ZXJlc3RpbmcgaGVyZS4K
KyAgICAgICAgIyBUaGUgcHJvYmxlbSBpcyB0aGF0IExhbmREaWZmIHdpbGwgdHJ5IHRvIGFjdHVh
bGx5IHJlYWQgdGhlIHBhdGggZnJvbSBkaXNrIQorICAgICAgICByZXR1cm4gW10KKwogCiBjbGFz
cyBNb2NrQnVnemlsbGFUb29sKCk6Ci0gICAgYnVncyA9IE1vY2tCdWd6aWxsYSgpCi0gICAgYnVp
bGRib3QgPSBNb2NrQnVpbGRCb3QoKQorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAg
c2VsZi5idWdzID0gTW9ja0J1Z3ppbGxhKCkKKyAgICAgICAgc2VsZi5idWlsZGJvdCA9IE1vY2tC
dWlsZEJvdCgpCisgICAgICAgIHNlbGYuc3RlcHMgPSBNb2NrKCkKKyAgICAgICAgc2VsZi5fc2Nt
ID0gTW9ja1NDTSgpCiAKLSAgICBfc2NtID0gTW9ja1NDTSgpCiAgICAgZGVmIHNjbShzZWxmKToK
ICAgICAgICAgcmV0dXJuIHNlbGYuX3NjbQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0
cy9ydW4td2Via2l0LXVuaXR0ZXN0cyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvcnVuLXdlYmtpdC11
bml0dGVzdHMKaW5kZXggZjQ0N2RmYS4uNDJiZmU2NSAxMDA3NTUKLS0tIGEvV2ViS2l0VG9vbHMv
U2NyaXB0cy9ydW4td2Via2l0LXVuaXR0ZXN0cworKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3J1
bi13ZWJraXQtdW5pdHRlc3RzCkBAIC0zMiw2ICszMiw3IEBAIGltcG9ydCB1bml0dGVzdAogZnJv
bSBtb2R1bGVzLmJ1Z3ppbGxhX3VuaXR0ZXN0IGltcG9ydCAqCiBmcm9tIG1vZHVsZXMuYnVpbGRi
b3RfdW5pdHRlc3QgaW1wb3J0ICoKIGZyb20gbW9kdWxlcy5jaGFuZ2Vsb2dzX3VuaXR0ZXN0IGlt
cG9ydCAqCitmcm9tIG1vZHVsZXMuY29tbWFuZHMuZG93bmxvYWRfdW5pdHRlc3QgaW1wb3J0ICoK
IGZyb20gbW9kdWxlcy5jb21tYW5kcy51cGxvYWRfdW5pdHRlc3QgaW1wb3J0ICoKIGZyb20gbW9k
dWxlcy5jb21tYW5kcy5xdWVyaWVzX3VuaXR0ZXN0IGltcG9ydCAqCiBmcm9tIG1vZHVsZXMuY29t
bWl0dGVyc191bml0dGVzdCBpbXBvcnQgKgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43957</attachid>
            <date>2009-11-27 09:31:11 -0800</date>
            <delta_ts>2009-11-27 09:37:55 -0800</delta_ts>
            <desc>download_unittest</desc>
            <filename>bug-31923-20091127093110.patch</filename>
            <type>text/plain</type>
            <size>8999</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCAxMzM4ZDc5Li5lMDBlOGVkIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjIgQEAKIDIwMDktMTEt
MjcgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAorICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbYnp0XSBVbml0IHRlc3QgZG93bmxvYWQgY29t
bWFuZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMx
OTIzCisKKyAgICAgICAgQWRkcyBkb3dubG9hZF91bml0dGVzdCBhbmQgZml4ZXMgYSBidWcgZm91
bmQgd2hpbGUgdGVzdGluZy4KKworICAgICAgICAqIFNjcmlwdHMvbW9kdWxlcy9jb21tYW5kcy9j
b21tYW5kdGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL21vZHVsZXMvY29tbWFuZHMvZG93bmxv
YWQucHk6CisgICAgICAgICAgICBGaXhlZCBhIGJ1ZyB3aGVyZSB3ZSdkIHRocm93IGFuIGVycm9y
IGJlY2F1c2UgW10uYXBwZW5kIHJldHVybnMKKyAgICAgICAgICAgIE5vbmUuCisgICAgICAgICog
U2NyaXB0cy9tb2R1bGVzL2NvbW1hbmRzL2Rvd25sb2FkX3VuaXR0ZXN0LnB5OiBBZGRlZC4KKyAg
ICAgICAgKiBTY3JpcHRzL21vZHVsZXMvbW9ja19idWd6aWxsYXRvb2wucHk6CisgICAgICAgICog
U2NyaXB0cy9ydW4td2Via2l0LXVuaXR0ZXN0czoKKworMjAwOS0xMS0yNyAgQWRhbSBCYXJ0aCAg
PGFiYXJ0aEB3ZWJraXQub3JnPgorCiAgICAgICAgIFVucmV2aWV3ZWQgImJ1aWxkIiBmaXggZm91
bmQgd2hpbGUgd3JpdGluZyB1bml0IHRlc3RzLgogCiAgICAgICAgICogU2NyaXB0cy9tb2R1bGVz
L2NvbW1hbmRzL2Rvd25sb2FkLnB5OgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9t
b2R1bGVzL2NvbW1hbmRzL2Rvd25sb2FkLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVz
L2NvbW1hbmRzL2Rvd25sb2FkLnB5CmluZGV4IDk4YThlYmIuLjM2NWI0MDcgMTAwNjQ0Ci0tLSBh
L1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9jb21tYW5kcy9kb3dubG9hZC5weQorKysgYi9X
ZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvY29tbWFuZHMvZG93bmxvYWQucHkKQEAgLTc5LDYg
Kzc5LDcgQEAgY2xhc3MgQnVpbGQoQ29tbWFuZCk6CiAgICAgICAgIHNlcXVlbmNlLnJ1bl9hbmRf
aGFuZGxlX2Vycm9ycygpCiAKIAorIyBGSVhNRTogUmVxdWlyZXMgdW5pdCB0ZXN0LiBCbG9ja2lu
ZyBpc3N1ZTogV2ViS2l0QXBwbHlpbmdTY3JpcHRzCiBjbGFzcyBBcHBseUF0dGFjaG1lbnQoQ29t
bWFuZCk6CiAgICAgbmFtZSA9ICJhcHBseS1hdHRhY2htZW50IgogICAgIHNob3dfaW5fbWFpbl9o
ZWxwID0gVHJ1ZQpAQCAtOTQsNiArOTUsNyBAQCBjbGFzcyBBcHBseUF0dGFjaG1lbnQoQ29tbWFu
ZCk6CiAgICAgICAgIFdlYktpdEFwcGx5aW5nU2NyaXB0cy5hcHBseV9wYXRjaGVzX3dpdGhfb3B0
aW9ucyh0b29sLnNjbSgpLCBbYXR0YWNobWVudF0sIG9wdGlvbnMpCiAKIAorIyBGSVhNRTogUmVx
dWlyZXMgdW5pdCB0ZXN0LiBCbG9ja2luZyBpc3N1ZTogV2ViS2l0QXBwbHlpbmdTY3JpcHRzCiBj
bGFzcyBBcHBseVBhdGNoZXMoQ29tbWFuZCk6CiAgICAgbmFtZSA9ICJhcHBseS1wYXRjaGVzIgog
ICAgIHNob3dfaW5fbWFpbl9oZWxwID0gVHJ1ZQpAQCAtMjI5LDcgKzIzMSw3IEBAIGNsYXNzIEFi
c3RyYWN0UGF0Y2hQcm9jZXNzaW5nQ29tbWFuZChDb21tYW5kKToKICAgICAgICAgYnVnc190b19w
YXRjaGVzID0ge30KICAgICAgICAgZm9yIHBhdGNoIGluIHBhdGNoZXM6CiAgICAgICAgICAgICBi
dWdfaWQgPSBwYXRjaFsiYnVnX2lkIl0KLSAgICAgICAgICAgIGJ1Z3NfdG9fcGF0Y2hlc1tidWdf
aWRdID0gYnVnc190b19wYXRjaGVzLmdldChidWdfaWQsIFtdKS5hcHBlbmQocGF0Y2gpCisgICAg
ICAgICAgICBidWdzX3RvX3BhdGNoZXNbYnVnX2lkXSA9IGJ1Z3NfdG9fcGF0Y2hlcy5nZXQoYnVn
X2lkLCBbXSkgKyBbcGF0Y2hdCiAgICAgICAgIHJldHVybiBidWdzX3RvX3BhdGNoZXMKIAogICAg
IGRlZiBleGVjdXRlKHNlbGYsIG9wdGlvbnMsIGFyZ3MsIHRvb2wpOgpAQCAtMzUwLDYgKzM1Miw3
IEBAIGNsYXNzIExhbmRQYXRjaGVzKEFic3RyYWN0UGF0Y2hMYW5kaW5nQ29tbWFuZCk6CiAgICAg
ICAgIHJldHVybiBhbGxfcGF0Y2hlcwogCiAKKyMgRklYTUU6IFJlcXVpcmVzIHVuaXQgdGVzdC4K
IGNsYXNzIFJvbGxvdXQoQ29tbWFuZCk6CiAgICAgbmFtZSA9ICJyb2xsb3V0IgogICAgIHNob3df
aW5fbWFpbl9oZWxwID0gVHJ1ZQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1
bGVzL2NvbW1hbmRzL2Rvd25sb2FkX3VuaXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9t
b2R1bGVzL2NvbW1hbmRzL2Rvd25sb2FkX3VuaXR0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmQwZmZmNmUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9T
Y3JpcHRzL21vZHVsZXMvY29tbWFuZHMvZG93bmxvYWRfdW5pdHRlc3QucHkKQEAgLTAsMCArMSw2
NSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRp
b24uCisjICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisj
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
IyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCB1bml0dGVzdAorCitmcm9tIG1vZHVsZXMuY29t
bWFuZHMuY29tbWFuZHRlc3QgaW1wb3J0IENvbW1hbmRzVGVzdAorZnJvbSBtb2R1bGVzLmNvbW1h
bmRzLmRvd25sb2FkIGltcG9ydCAqCitmcm9tIG1vZHVsZXMubW9jayBpbXBvcnQgTW9jaworCitj
bGFzcyBEb3dubG9hZENvbW1hbmRzVGVzdChDb21tYW5kc1Rlc3QpOgorICAgIGRlZiBfZGVmYXVs
dF9vcHRpb25zKHNlbGYpOgorICAgICAgICBvcHRpb25zID0gTW9jaygpCisgICAgICAgIG9wdGlv
bnMuZm9yY2VfY2xlYW4gPSBGYWxzZQorICAgICAgICBvcHRpb25zLmNsZWFuID0gVHJ1ZQorICAg
ICAgICBvcHRpb25zLmNoZWNrX2J1aWxkZXJzID0gVHJ1ZQorICAgICAgICBvcHRpb25zLnF1aWV0
ID0gRmFsc2UKKyAgICAgICAgb3B0aW9ucy5ub25faW50ZXJhY3RpdmUgPSBGYWxzZQorICAgICAg
ICBvcHRpb25zLnVwZGF0ZSA9IFRydWUKKyAgICAgICAgb3B0aW9ucy5idWlsZCA9IFRydWUKKyAg
ICAgICAgb3B0aW9ucy50ZXN0ID0gVHJ1ZQorICAgICAgICBvcHRpb25zLmNsb3NlX2J1ZyA9IFRy
dWUKKyAgICAgICAgcmV0dXJuIG9wdGlvbnMKKworICAgIGRlZiB0ZXN0X2J1aWxkKHNlbGYpOgor
ICAgICAgICBzZWxmLmFzc2VydF9leGVjdXRlX291dHB1dHMoQnVpbGQoKSwgW10sIG9wdGlvbnM9
c2VsZi5fZGVmYXVsdF9vcHRpb25zKCkpCisKKyAgICBkZWYgdGVzdF9sYW5kX2RpZmYoc2VsZik6
CisgICAgICAgIHNlbGYuYXNzZXJ0X2V4ZWN1dGVfb3V0cHV0cyhMYW5kRGlmZigpLCBbNDJdLCBv
cHRpb25zPXNlbGYuX2RlZmF1bHRfb3B0aW9ucygpKQorCisgICAgZGVmIHRlc3RfY2hlY2tfc3R5
bGUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0X2V4ZWN1dGVfb3V0cHV0cyhDaGVja1N0eWxl
KCksIFsxOTddLCBvcHRpb25zPXNlbGYuX2RlZmF1bHRfb3B0aW9ucygpKQorCisgICAgZGVmIHRl
c3RfYnVpbGRfYXR0YWNobWVudChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRfZXhlY3V0ZV9v
dXRwdXRzKEJ1aWxkQXR0YWNobWVudCgpLCBbMTk3XSwgb3B0aW9ucz1zZWxmLl9kZWZhdWx0X29w
dGlvbnMoKSkKKworICAgIGRlZiB0ZXN0X2xhbmRfYXR0YWNobWVudChzZWxmKToKKyAgICAgICAg
c2VsZi5hc3NlcnRfZXhlY3V0ZV9vdXRwdXRzKExhbmRBdHRhY2htZW50KCksIFsxOTddLCBvcHRp
b25zPXNlbGYuX2RlZmF1bHRfb3B0aW9ucygpKQorCisgICAgZGVmIHRlc3RfbGFuZF9wYXRjaGVz
KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydF9leGVjdXRlX291dHB1dHMoTGFuZFBhdGNoZXMo
KSwgWzQyXSwgb3B0aW9ucz1zZWxmLl9kZWZhdWx0X29wdGlvbnMoKSkKZGlmZiAtLWdpdCBhL1dl
YktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9tb2NrX2J1Z3ppbGxhdG9vbC5weSBiL1dlYktpdFRv
b2xzL1NjcmlwdHMvbW9kdWxlcy9tb2NrX2J1Z3ppbGxhdG9vbC5weQppbmRleCA4MDE1ZjEwLi45
ZWJiMjg3IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvbW9ja19idWd6
aWxsYXRvb2wucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL21vY2tfYnVnemls
bGF0b29sLnB5CkBAIC0yNiwxMSArMjYsMjYgQEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAKK2ltcG9ydCBvcworCitmcm9tIG1vZHVsZXMubW9jayBpbXBvcnQgTW9jawogZnJvbSBt
b2R1bGVzLnNjbSBpbXBvcnQgQ29tbWl0TWVzc2FnZQogCi1jbGFzcyBNb2NrQnVnemlsbGEoKToK
LSAgICBwYXRjaDEgPSB7ICJpZCI6IDE5NywgImJ1Z19pZCI6IDQyLCAidXJsIjogImh0dHA6Ly9l
eGFtcGxlLmNvbS8xOTciLCAiaXNfb2Jzb2xldGUiOiBGYWxzZSB9Ci0gICAgcGF0Y2gyID0geyAi
aWQiOiAxMjgsICJidWdfaWQiOiA0MiwgInVybCI6ICJodHRwOi8vZXhhbXBsZS5jb20vMTI4Iiwg
ImlzX29ic29sZXRlIjogRmFsc2UgfQorY2xhc3MgTW9ja0J1Z3ppbGxhKE1vY2spOgorICAgIHBh
dGNoMSA9IHsKKyAgICAgICAgImlkIjogMTk3LAorICAgICAgICAiYnVnX2lkIjogNDIsCisgICAg
ICAgICJ1cmwiOiAiaHR0cDovL2V4YW1wbGUuY29tLzE5NyIsCisgICAgICAgICJpc19vYnNvbGV0
ZSI6IEZhbHNlLAorICAgICAgICAicmV2aWV3ZXIiOiAiUmV2aWV3ZXIxIgorICAgIH0KKyAgICBw
YXRjaDIgPSB7CisgICAgICAgICJpZCI6IDEyOCwKKyAgICAgICAgImJ1Z19pZCI6IDQyLAorICAg
ICAgICAidXJsIjogImh0dHA6Ly9leGFtcGxlLmNvbS8xMjgiLAorICAgICAgICAiaXNfb2Jzb2xl
dGUiOiBGYWxzZSwKKyAgICAgICAgInJldmlld2VyIjogIlJldmlld2VyMiIKKyAgICB9CiAKICAg
ICBkZWYgZmV0Y2hfYnVnX2lkc19mcm9tX2NvbW1pdF9xdWV1ZShzZWxmKToKICAgICAgICAgcmV0
dXJuIFs0MiwgNzVdCkBAIC01MywxNyArNjgsMTUgQEAgY2xhc3MgTW9ja0J1Z3ppbGxhKCk6CiAg
ICAgICAgICAgICByZXR1cm4gW3NlbGYucGF0Y2gxLCBzZWxmLnBhdGNoMl0KICAgICAgICAgcmV0
dXJuIE5vbmUKIAotICAgIGRlZiBjbG9zZV9idWdfYXNfZml4ZWQoc2VsZiwgYnVnX2lkLCBjb21t
ZW50X3RleHQ9Tm9uZSk6Ci0gICAgICAgIHBhc3MKLQotICAgIGRlZiBvYnNvbGV0ZV9hdHRhY2ht
ZW50KHNlbGYsIGF0dGFjaG1lbnRfaWQsIGNvbW1lbnRfdGV4dD1Ob25lKToKLSAgICAgICAgcGFz
cwotCi0gICAgZGVmIGFkZF9wYXRjaF90b19idWcoc2VsZiwgYnVnX2lkLCBwYXRjaF9maWxlX29i
amVjdCwgZGVzY3JpcHRpb24sIGNvbW1lbnRfdGV4dD1Ob25lLCBtYXJrX2Zvcl9yZXZpZXc9RmFs
c2UsIG1hcmtfZm9yX2NvbW1pdF9xdWV1ZT1GYWxzZSk6Ci0gICAgICAgIHBhc3MKKyAgICBkZWYg
ZmV0Y2hfYXR0YWNobWVudChzZWxmLCBhdHRhY2htZW50X2lkKToKKyAgICAgICAgaWYgYXR0YWNo
bWVudF9pZCA9PSAxOTc6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5wYXRjaDEKKyAgICAgICAg
aWYgYXR0YWNobWVudF9pZCA9PSAxMjg6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5wYXRjaDIK
KyAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJCb2d1cyBhdHRhY2htZW50X2lkIGluIGZldGNoX2F0
dGFjaG1lbnQuIikKIAogCi1jbGFzcyBNb2NrQnVpbGRCb3QoKToKK2NsYXNzIE1vY2tCdWlsZEJv
dChNb2NrKToKICAgICBkZWYgYnVpbGRlcl9zdGF0dXNlcyhzZWxmKToKICAgICAgICAgcmV0dXJu
IFt7CiAgICAgICAgICAgICAibmFtZSI6ICJCdWlsZGVyMSIsCkBAIC03NCw3ICs4NywxMSBAQCBj
bGFzcyBNb2NrQnVpbGRCb3QoKToKICAgICAgICAgfV0KIAogCi1jbGFzcyBNb2NrU0NNKCk6Citj
bGFzcyBNb2NrU0NNKE1vY2spOgorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgTW9j
ay5fX2luaXRfXyhzZWxmKQorICAgICAgICBzZWxmLmNoZWNrb3V0X3Jvb3QgPSBvcy5nZXRjd2Qo
KQorCiAgICAgZGVmIGNyZWF0ZV9wYXRjaChzZWxmKToKICAgICAgICAgcmV0dXJuICJQYXRjaDEi
CiAKQEAgLTk1LDExICsxMTIsMTggQEAgY2xhc3MgTW9ja1NDTSgpOgogICAgICAgICAgICAgcmV0
dXJuICJQYXRjaDIiCiAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiQm9ndXMgY29tbWl0X2lkIGlu
IGNvbW1pdF9tZXNzYWdlX2Zvcl9sb2NhbF9jb21taXQuIikKIAorICAgIGRlZiBtb2RpZmllZF9j
aGFuZ2Vsb2dzKHNlbGYpOgorICAgICAgICAjIElkZWFsbHkgd2UnZCByZXR1cm4gc29tZXRoaW5n
IG1vcmUgaW50ZXJlc3RpbmcgaGVyZS4KKyAgICAgICAgIyBUaGUgcHJvYmxlbSBpcyB0aGF0IExh
bmREaWZmIHdpbGwgdHJ5IHRvIGFjdHVhbGx5IHJlYWQgdGhlIHBhdGggZnJvbSBkaXNrIQorICAg
ICAgICByZXR1cm4gW10KKwogCiBjbGFzcyBNb2NrQnVnemlsbGFUb29sKCk6Ci0gICAgYnVncyA9
IE1vY2tCdWd6aWxsYSgpCi0gICAgYnVpbGRib3QgPSBNb2NrQnVpbGRCb3QoKQorICAgIGRlZiBf
X2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi5idWdzID0gTW9ja0J1Z3ppbGxhKCkKKyAgICAg
ICAgc2VsZi5idWlsZGJvdCA9IE1vY2tCdWlsZEJvdCgpCisgICAgICAgIHNlbGYuc3RlcHMgPSBN
b2NrKCkKKyAgICAgICAgc2VsZi5fc2NtID0gTW9ja1NDTSgpCiAKLSAgICBfc2NtID0gTW9ja1ND
TSgpCiAgICAgZGVmIHNjbShzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuX3NjbQpkaWZmIC0t
Z2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9ydW4td2Via2l0LXVuaXR0ZXN0cyBiL1dlYktpdFRv
b2xzL1NjcmlwdHMvcnVuLXdlYmtpdC11bml0dGVzdHMKaW5kZXggZjQ0N2RmYS4uNDJiZmU2NSAx
MDA3NTUKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9ydW4td2Via2l0LXVuaXR0ZXN0cworKysg
Yi9XZWJLaXRUb29scy9TY3JpcHRzL3J1bi13ZWJraXQtdW5pdHRlc3RzCkBAIC0zMiw2ICszMiw3
IEBAIGltcG9ydCB1bml0dGVzdAogZnJvbSBtb2R1bGVzLmJ1Z3ppbGxhX3VuaXR0ZXN0IGltcG9y
dCAqCiBmcm9tIG1vZHVsZXMuYnVpbGRib3RfdW5pdHRlc3QgaW1wb3J0ICoKIGZyb20gbW9kdWxl
cy5jaGFuZ2Vsb2dzX3VuaXR0ZXN0IGltcG9ydCAqCitmcm9tIG1vZHVsZXMuY29tbWFuZHMuZG93
bmxvYWRfdW5pdHRlc3QgaW1wb3J0ICoKIGZyb20gbW9kdWxlcy5jb21tYW5kcy51cGxvYWRfdW5p
dHRlc3QgaW1wb3J0ICoKIGZyb20gbW9kdWxlcy5jb21tYW5kcy5xdWVyaWVzX3VuaXR0ZXN0IGlt
cG9ydCAqCiBmcm9tIG1vZHVsZXMuY29tbWl0dGVyc191bml0dGVzdCBpbXBvcnQgKgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>