<?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>77153</bug_id>
          
          <creation_ts>2012-01-26 15:24:08 -0800</creation_ts>
          <short_desc>webkitpy: re-land cleanup of test scaffolding</short_desc>
          <delta_ts>2012-01-26 16:16:41 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Pranke">dpranke</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>ojan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>543552</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-01-26 15:24:08 -0800</bug_when>
    <thetext>webkitpy: re-land cleanup of test scaffolding</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543557</commentid>
    <comment_count>1</comment_count>
      <attachid>124190</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-01-26 15:26:17 -0800</bug_when>
    <thetext>Created attachment 124190
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543581</commentid>
    <comment_count>2</comment_count>
      <attachid>124190</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-01-26 15:37:00 -0800</bug_when>
    <thetext>Comment on attachment 124190
Patch

I&apos;m not sure this is really worth the trouble.  But this looks technically OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543628</commentid>
    <comment_count>3</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-01-26 16:16:41 -0800</bug_when>
    <thetext>Committed r106060: &lt;http://trac.webkit.org/changeset/106060&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124190</attachid>
            <date>2012-01-26 15:26:17 -0800</date>
            <delta_ts>2012-01-26 15:37:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77153-20120126152614.patch</filename>
            <type>text/plain</type>
            <size>18618</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2MDE1CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYzVlYzQ0ZThmZWIwNmIzMDU2NDliYmM5NTU5MzExMjcy
NThhNzNhZS4uZmU3Mjg2NzMzN2EwMGVjMGMzN2VhZGU0YmJjM2NlMTY4YzMyMDZmMSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMz
IEBACisyMDEyLTAxLTI2ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIHdlYmtpdHB5OiByZS1sYW5kIGNsZWFudXAgb2YgdGVzdCBzY2FmZm9sZGluZworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzcxNTMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIGFuIGF0
dGVtcHQgdG8gcmVsYW5kIHRoZSBjaGFuZ2UgaW4gYnVnIDc2OTczIC8gCisgICAgICAgIHIxMDU5
MzUuIE15IGVhcmxpZXIgYXR0ZW1wdCB0byBtYW5pcHVsYXRlIFBZVEhPTlBBVEgKKyAgICAgICAg
c2VlbXMgdG8gb25seSB3b3JrIHNvbWUgb2YgdGhlIHRpbWUsIGZvciByZWFzb25zIHRoYXQKKyAg
ICAgICAgZWx1ZGUgbWUuIERpcmVjdGx5IGFkZGluZyBUb29scy9TY3JpcHRzIHRvIHN5cy5wYXRo
IGZyb20KKyAgICAgICAgaW5zaWRlIHRoZSB0ZXN0IHNjcmlwdCBhcHBlYXJzIHRvIHdvcmsgKG1v
cmU/KSByZWxpYWJseS4KKworICAgICAgICBBbHNvLCBpdCBzZWVtZWQgbGlrZSB0aGUgZmlsZXMg
ZGlkbid0IGFjdHVhbGx5IGdldCBkZWxldGVkCisgICAgICAgIHRoZSBsYXN0IHRpbWU7IEkgZG9u
J3Qga25vdyB3aHkuCisKKyAgICAgICAgKiBTY3JpcHRzL3Rlc3Qtd2Via2l0cHk6CisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2V4ZWN1dGl2ZV91bml0dGVzdC5weToK
KyAgICAgICAgKGNvbW1hbmRfbGluZSk6CisgICAgICAgIChFeGVjdXRpdmVUZXN0KToKKyAgICAg
ICAgKEV4ZWN1dGl2ZVRlc3QudGVzdF9ydW5fY29tbWFuZF9hcmdzX3R5cGUpOgorICAgICAgICAo
RXhlY3V0aXZlVGVzdC50ZXN0X3J1bl9jb21tYW5kX3dpdGhfdW5pY29kZSk6CisgICAgICAgIChF
eGVjdXRpdmVUZXN0LnRlc3RfcnVubmluZ19waWRzKToKKyAgICAgICAgKG1haW4pOgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxldXRpbHMucHk6IFJlbW92ZWQu
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90ZXN0L2NhdC5weTogUmVtb3ZlZC4KKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rlc3QvY2F0X3VuaXR0ZXN0LnB5OiBSZW1vdmVkLgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdGVzdC9lY2hvLnB5OiBSZW1vdmVkLgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvdGVzdC9lY2hvX3VuaXR0ZXN0LnB5OiBSZW1vdmVkLgorCiAyMDEy
LTAxLTI2ICBDYWlvIE1hcmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8gIDxjYWlvLm9saXZlaXJhQG9w
ZW5ib3NzYS5vcmc+CiAKICAgICAgICAgSW1wbGVtZW50IG92ZXJyaWRlUHJlZmVyZW5jZSBmb3Ig
Ym9vbGVhbiBwcmVmZXJlbmNlcyBpbiBXZWJLaXRUZXN0UnVubmVyCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3Rlc3Qtd2Via2l0cHkgYi9Ub29scy9TY3JpcHRzL3Rlc3Qtd2Via2l0cHkKaW5k
ZXggNTVhZDk3YjU1ZDQ1MWI2NTQwMWU2YWU3MDczNDE3NjEwY2YwYTIxZi4uNDI5OGZlYWUyMzcz
YTdiOGEzN2M0MGZiOWM4ZDA1NzQ2NWJkOTU2YSAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy90
ZXN0LXdlYmtpdHB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvdGVzdC13ZWJraXRweQpAQCAtNDIsNyAr
NDIsNyBAQCBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoInRlc3Qtd2Via2l0cHkiKQogCiAKIGlm
IF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgd2Via2l0X3Jvb3QgPSBvcy5wYXRoLmRpcm5h
bWUob3MucGF0aC5kaXJuYW1lKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykpKQorICAgIHdlYmtp
dF9yb290ID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmRpcm5hbWUo
b3MucGF0aC5hYnNwYXRoKF9fZmlsZV9fKSkpKQogCiAgICAgIyBGSVhNRTogV2Ugc2hvdWxkIHBy
b2JhYmx5IHRlc3QgZWFjaCBwYWNrYWdlIHNlcGFyYXRlbHkgdG8gYXZvaWQgbmFtaW5nIGNvbmZs
aWN0cy4KICAgICBkaXJzID0gWwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9j
b21tb24vc3lzdGVtL2V4ZWN1dGl2ZV91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL3N5c3RlbS9leGVjdXRpdmVfdW5pdHRlc3QucHkKaW5kZXggYTA4NzhmOWNlODNh
MjY0YzFmMGI0ZjU0OWU4Y2VkN2MyOGE3MTZmMC4uYzYzZmYzNTU1YWUxOGU3MDEzMDIxOTBiN2Jh
YjdlOWRlZTdhODdhZCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24v
c3lzdGVtL2V4ZWN1dGl2ZV91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9zeXN0ZW0vZXhlY3V0aXZlX3VuaXR0ZXN0LnB5CkBAIC0zMyw5ICszMywxNCBAQCBp
bXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiAKKyMgU2luY2Ug
d2UgZXhlY3V0ZSB0aGlzIHNjcmlwdCBkaXJlY3RseSBhcyBwYXJ0IG9mIHRoZSB1bml0IHRlc3Rz
LCB3ZSBuZWVkIHRvIGVuc3VyZQorIyB0aGF0IFRvb2xzL1NjcmlwdHMgaXMgaW4gc3lzLnBhdGgg
Zm9yIHRoZSBuZXh0IGltcG9ydHMgdG8gd29yayBjb3JyZWN0bHkuCitzY3JpcHRfZGlyID0gb3Mu
cGF0aC5kaXJuYW1lKG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJu
YW1lKG9zLnBhdGguYWJzcGF0aChfX2ZpbGVfXykpKSkpCitpZiBzY3JpcHRfZGlyIG5vdCBpbiBz
eXMucGF0aDoKKyAgICBzeXMucGF0aC5hcHBlbmQoc2NyaXB0X2RpcikKKwogZnJvbSB3ZWJraXRw
eS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgRXhlY3V0aXZlLCBTY3JpcHRFcnJvcgog
ZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW1fbW9jayBpbXBvcnQgTW9ja0Zp
bGVTeXN0ZW0KLWZyb20gd2Via2l0cHkudGVzdCBpbXBvcnQgY2F0LCBlY2hvCiAKIAogY2xhc3Mg
U2NyaXB0RXJyb3JUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTY0LDggKzY5LDExIEBAIGRl
ZiBuZXZlcl9lbmRpbmdfY29tbWFuZCgpOgogICAgIHJldHVybiBbJ3llcyddCiAKIAotY2xhc3Mg
RXhlY3V0aXZlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CitkZWYgY29tbWFuZF9saW5lKGNtZCwg
KmFyZ3MpOgorICAgIHJldHVybiBbc3lzLmV4ZWN1dGFibGUsIF9fZmlsZV9fLCAnLS0nICsgY21k
XSArIGxpc3QoYXJncykKIAorCitjbGFzcyBFeGVjdXRpdmVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNl
KToKICAgICBkZWYgYXNzZXJ0X2ludGVycHJldGVyX2Zvcl9jb250ZW50KHNlbGYsIGludGVwcmV0
ZXIsIGNvbnRlbnQpOgogICAgICAgICBmcyA9IE1vY2tGaWxlU3lzdGVtKCkKICAgICAgICAgZmls
ZV9wYXRoID0gTm9uZQpAQCAtMTAyLDggKzExMCw4IEBAIGNsYXNzIEV4ZWN1dGl2ZVRlc3QodW5p
dHRlc3QuVGVzdENhc2UpOgogICAgICAgICBleGVjdXRpdmUgPSBFeGVjdXRpdmUoKQogICAgICAg
ICBzZWxmLmFzc2VydFJhaXNlcyhBc3NlcnRpb25FcnJvciwgZXhlY3V0aXZlLnJ1bl9jb21tYW5k
LCAiZWNobyIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yLCBleGVj
dXRpdmUucnVuX2NvbW1hbmQsIHUiZWNobyIpCi0gICAgICAgIGV4ZWN1dGl2ZS5ydW5fY29tbWFu
ZChlY2hvLmNvbW1hbmRfYXJndW1lbnRzKCdmb28nKSkKLSAgICAgICAgZXhlY3V0aXZlLnJ1bl9j
b21tYW5kKHR1cGxlKGVjaG8uY29tbWFuZF9hcmd1bWVudHMoJ2ZvbycpKSkKKyAgICAgICAgZXhl
Y3V0aXZlLnJ1bl9jb21tYW5kKGNvbW1hbmRfbGluZSgnZWNobycsICdmb28nKSkKKyAgICAgICAg
ZXhlY3V0aXZlLnJ1bl9jb21tYW5kKHR1cGxlKGNvbW1hbmRfbGluZSgnZWNobycsICdmb28nKSkp
CiAKICAgICBkZWYgdGVzdF9ydW5fY29tbWFuZF93aXRoX3VuaWNvZGUoc2VsZik6CiAgICAgICAg
ICIiIlZhbGlkYXRlIHRoYXQgaXQgaXMgc2FmZSB0byBwYXNzIHVuaWNvZGUoKSBvYmplY3RzCkBA
IC0xMjQsMjQgKzEzMiwyNCBAQCBjbGFzcyBFeGVjdXRpdmVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNl
KToKIAogICAgICAgICBleGVjdXRpdmUgPSBFeGVjdXRpdmUoKQogCi0gICAgICAgIG91dHB1dCA9
IGV4ZWN1dGl2ZS5ydW5fY29tbWFuZChjYXQuY29tbWFuZF9hcmd1bWVudHMoKSwgaW5wdXQ9dW5p
Y29kZV90b3JfaW5wdXQpCisgICAgICAgIG91dHB1dCA9IGV4ZWN1dGl2ZS5ydW5fY29tbWFuZChj
b21tYW5kX2xpbmUoJ2NhdCcpLCBpbnB1dD11bmljb2RlX3Rvcl9pbnB1dCkKICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbHMob3V0cHV0LCB1bmljb2RlX3Rvcl9vdXRwdXQpCiAKLSAgICAgICAgb3V0
cHV0ID0gZXhlY3V0aXZlLnJ1bl9jb21tYW5kKGVjaG8uY29tbWFuZF9hcmd1bWVudHMoIi1uIiwg
dW5pY29kZV90b3JfaW5wdXQpKQorICAgICAgICBvdXRwdXQgPSBleGVjdXRpdmUucnVuX2NvbW1h
bmQoY29tbWFuZF9saW5lKCdlY2hvJywgdW5pY29kZV90b3JfaW5wdXQpKQogICAgICAgICBzZWxm
LmFzc2VydEVxdWFscyhvdXRwdXQsIHVuaWNvZGVfdG9yX291dHB1dCkKIAotICAgICAgICBvdXRw
dXQgPSBleGVjdXRpdmUucnVuX2NvbW1hbmQoZWNoby5jb21tYW5kX2FyZ3VtZW50cygiLW4iLCB1
bmljb2RlX3Rvcl9pbnB1dCksIGRlY29kZV9vdXRwdXQ9RmFsc2UpCisgICAgICAgIG91dHB1dCA9
IGV4ZWN1dGl2ZS5ydW5fY29tbWFuZChjb21tYW5kX2xpbmUoJ2VjaG8nLCB1bmljb2RlX3Rvcl9p
bnB1dCksIGRlY29kZV9vdXRwdXQ9RmFsc2UpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG91
dHB1dCwgZW5jb2RlZF90b3IpCiAKICAgICAgICAgIyBNYWtlIHN1cmUgdGhhdCBzdHIoKSBpbnB1
dCBhbHNvIHdvcmtzLgotICAgICAgICBvdXRwdXQgPSBleGVjdXRpdmUucnVuX2NvbW1hbmQoY2F0
LmNvbW1hbmRfYXJndW1lbnRzKCksIGlucHV0PWVuY29kZWRfdG9yLCBkZWNvZGVfb3V0cHV0PUZh
bHNlKQorICAgICAgICBvdXRwdXQgPSBleGVjdXRpdmUucnVuX2NvbW1hbmQoY29tbWFuZF9saW5l
KCdjYXQnKSwgaW5wdXQ9ZW5jb2RlZF90b3IsIGRlY29kZV9vdXRwdXQ9RmFsc2UpCiAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWxzKG91dHB1dCwgZW5jb2RlZF90b3IpCiAKICAgICAgICAgIyBGSVhN
RTogV2Ugc2hvdWxkIG9ubHkgaGF2ZSBvbmUgcnVuKiBtZXRob2QgdG8gdGVzdAotICAgICAgICBv
dXRwdXQgPSBleGVjdXRpdmUucnVuX2FuZF90aHJvd19pZl9mYWlsKGVjaG8uY29tbWFuZF9hcmd1
bWVudHMoIi1uIiwgdW5pY29kZV90b3JfaW5wdXQpLCBxdWlldD1UcnVlKQorICAgICAgICBvdXRw
dXQgPSBleGVjdXRpdmUucnVuX2FuZF90aHJvd19pZl9mYWlsKGNvbW1hbmRfbGluZSgnZWNobycs
IHVuaWNvZGVfdG9yX2lucHV0KSwgcXVpZXQ9VHJ1ZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bHMob3V0cHV0LCB1bmljb2RlX3Rvcl9vdXRwdXQpCiAKLSAgICAgICAgb3V0cHV0ID0gZXhlY3V0
aXZlLnJ1bl9hbmRfdGhyb3dfaWZfZmFpbChlY2hvLmNvbW1hbmRfYXJndW1lbnRzKCItbiIsIHVu
aWNvZGVfdG9yX2lucHV0KSwgcXVpZXQ9VHJ1ZSwgZGVjb2RlX291dHB1dD1GYWxzZSkKKyAgICAg
ICAgb3V0cHV0ID0gZXhlY3V0aXZlLnJ1bl9hbmRfdGhyb3dfaWZfZmFpbChjb21tYW5kX2xpbmUo
J2VjaG8nLCB1bmljb2RlX3Rvcl9pbnB1dCksIHF1aWV0PVRydWUsIGRlY29kZV9vdXRwdXQ9RmFs
c2UpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG91dHB1dCwgZW5jb2RlZF90b3IpCiAKICAg
ICBkZWYgdGVzdF9raWxsX3Byb2Nlc3Moc2VsZik6CkBAIC0yMDcsMyArMjE1LDE3IEBAIGNsYXNz
IEV4ZWN1dGl2ZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBleGVjdXRpdmUgPSBF
eGVjdXRpdmUoKQogICAgICAgICBwaWRzID0gZXhlY3V0aXZlLnJ1bm5pbmdfcGlkcygpCiAgICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5nZXRwaWQoKSBpbiBwaWRzKQorCisKK2RlZiBtYWluKHBs
YXRmb3JtLCBzdGRpbiwgc3Rkb3V0LCBjbWQsIGFyZ3MpOgorICAgIGlmIHBsYXRmb3JtID09ICd3
aW4zMicgYW5kIGhhc2F0dHIoc3Rkb3V0LCAnZmlsZW5vJyk6CisgICAgICAgIGltcG9ydCBtc3Zj
cnQKKyAgICAgICAgbXN2Y3J0LnNldG1vZGUoc3Rkb3V0LmZpbGVubygpLCBvcy5PX0JJTkFSWSkK
KyAgICBpZiBjbWQgPT0gJy0tY2F0JzoKKyAgICAgICAgc3Rkb3V0LndyaXRlKHN0ZGluLnJlYWQo
KSkKKyAgICBlbGlmIGNtZCA9PSAnLS1lY2hvJzoKKyAgICAgICAgc3Rkb3V0LndyaXRlKCcgJy5q
b2luKGFyZ3MpKQorICAgIHJldHVybiAwCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXycgYW5k
IGxlbihzeXMuYXJndikgPiAxIGFuZCBzeXMuYXJndlsxXSBpbiAoJy0tY2F0JywgJy0tZWNobycp
OgorICAgIHN5cy5leGl0KG1haW4oc3lzLnBsYXRmb3JtLCBzeXMuc3RkaW4sIHN5cy5zdGRvdXQs
IHN5cy5hcmd2WzFdLCBzeXMuYXJndlsyOl0pKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGV1dGlscy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL3N5c3RlbS9maWxldXRpbHMucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDU1ODIxZjgzNTgzOGRmZTM1NjhkNzU1MDdkZDlhMjI0MTE0YzZjNjcuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vc3lzdGVtL2ZpbGV1dGlscy5weQorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAg
QEAKLSMgQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMg
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotaW1wb3J0IHN5cwot
Ci0KLWRlZiBtYWtlX3N0ZG91dF9iaW5hcnkoKToKLSAgICAiIiJQdXRzIHN5cy5zdGRvdXQgaW50
byBiaW5hcnkgbW9kZSAob24gcGxhdGZvcm1zIHRoYXQgaGF2ZSBhIGRpc3RpbmN0aW9uCi0gICAg
YmV0d2VlbiB0ZXh0IGFuZCBiaW5hcnkgbW9kZSkuIiIiCi0gICAgaWYgc3lzLnBsYXRmb3JtICE9
ICd3aW4zMicgb3Igbm90IGhhc2F0dHIoc3lzLnN0ZG91dCwgJ2ZpbGVubycpOgotICAgICAgICBy
ZXR1cm4KLSAgICBpbXBvcnQgbXN2Y3J0Ci0gICAgaW1wb3J0IG9zCi0gICAgbXN2Y3J0LnNldG1v
ZGUoc3lzLnN0ZG91dC5maWxlbm8oKSwgb3MuT19CSU5BUlkpCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rlc3QvY2F0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0
L2NhdC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWM1NmQxYzdmMTc4ZDNlZjRi
YzAwYTQ1Y2E0ZjA2MmEzNjY1OGRkMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3QvY2F0LnB5CisrKyAvZGV2
L251bGwKQEAgLTEsNDIgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBt
ZXQ6Ci0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECi0jIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMg
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgot
IyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotCi1pbXBvcnQgb3MucGF0aAotaW1wb3J0IHN5cwotCi0jIEFkZCBXZWJLaXRUb29scy9T
Y3JpcHRzIHRvIHRoZSBwYXRoIHRvIGVuc3VyZSB3ZSBjYW4gZmluZCB3ZWJraXRweS4KLXN5cy5w
YXRoLmFwcGVuZChvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKG9zLnBhdGguZGlybmFt
ZShfX2ZpbGVfXykpKSkKLQotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBmaWxl
dXRpbHMKLQotCi1kZWYgY29tbWFuZF9hcmd1bWVudHMoKmFyZ3MpOgotICAgIHJldHVybiBbc3lz
LmV4ZWN1dGFibGUsIF9fZmlsZV9fXSArIGxpc3QoYXJncykKLQotCi1kZWYgbWFpbigpOgotICAg
IGZpbGV1dGlscy5tYWtlX3N0ZG91dF9iaW5hcnkoKQotICAgIHN5cy5zdGRvdXQud3JpdGUoc3lz
LnN0ZGluLnJlYWQoKSkKLSAgICByZXR1cm4gMAotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18n
OgotICAgIHN5cy5leGl0KG1haW4oKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdGVzdC9jYXRfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3QvY2F0
X3VuaXR0ZXN0LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZWQxZjY3OWE4NDg3
YTBhM2Q1MTMzMDBhYWY4NmI3NWNiZTJiYTY5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdC9jYXRfdW5pdHRl
c3QucHkKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAx
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JyBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0KLWltcG9ydCBTdHJpbmdJTwotaW1wb3J0IG9zLnBhdGgKLWlt
cG9ydCBzeXMKLWltcG9ydCB1bml0dGVzdAotCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0g
aW1wb3J0IGV4ZWN1dGl2ZSwgb3V0cHV0Y2FwdHVyZQotZnJvbSB3ZWJraXRweS50ZXN0IGltcG9y
dCBjYXQKLQotCi1jbGFzcyBDYXRUZXN0KG91dHB1dGNhcHR1cmUuT3V0cHV0Q2FwdHVyZVRlc3RD
YXNlQmFzZSk6Ci0gICAgZGVmIGFzc2VydF9jYXQoc2VsZiwgaW5wdXQpOgotICAgICAgICBzYXZl
ZF9zdGRpbiA9IHN5cy5zdGRpbgotICAgICAgICBzeXMuc3RkaW4gPSBTdHJpbmdJTy5TdHJpbmdJ
TyhpbnB1dCkKLSAgICAgICAgY2F0Lm1haW4oKQotICAgICAgICBzZWxmLmFzc2VydFN0ZG91dChp
bnB1dCkKLSAgICAgICAgc3lzLnN0ZGluID0gc2F2ZWRfc3RkaW4KLQotICAgIGRlZiB0ZXN0X2Jh
c2ljKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydF9jYXQoJ2ZvbyBiYXIgYmF6XG4nKQotCi0g
ICAgZGVmIHRlc3Rfbm9fbmV3bGluZShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRfY2F0KCdm
b28gYmFyIGJheicpCi0KLSAgICBkZWYgdGVzdF91bmljb2RlKHNlbGYpOgotICAgICAgICBzZWxm
LmFzc2VydF9jYXQodSdXZWJLaXQgXHUyNjYxIFRvciBBcm5lIFZlc3RiXHUwMEY4IScpCi0KLSAg
ICBkZWYgdGVzdF9hc19jb21tYW5kKHNlbGYpOgotICAgICAgICBpbnB1dCA9ICdmb28gYmFyIGJh
elxuJwotICAgICAgICBvdXRwdXQgPSBleGVjdXRpdmUuRXhlY3V0aXZlKCkucnVuX2NvbW1hbmQo
Y2F0LmNvbW1hbmRfYXJndW1lbnRzKCksIGlucHV0PWlucHV0KQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGlucHV0LCBvdXRwdXQpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3Rlc3QvZWNoby5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdC9lY2hvLnB5CmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZDRkOGUyZDUyYjhmOWM2MDQyOGIzYmEzMmUzMDIw
ZTk0MjdkMWM5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdC9lY2hvLnB5CisrKyAvZGV2L251bGwKQEAgLTEs
NTIgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1pbXBv
cnQgb3MucGF0aAotaW1wb3J0IHN5cwotCi0jIEFkZCBXZWJLaXRUb29scy9TY3JpcHRzIHRvIHRo
ZSBwYXRoIHRvIGVuc3VyZSB3ZSBjYW4gZmluZCB3ZWJraXRweS4KLXN5cy5wYXRoLmFwcGVuZChv
cy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykp
KSkKLQotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBmaWxldXRpbHMKLQotCi1k
ZWYgY29tbWFuZF9hcmd1bWVudHMoKmFyZ3MpOgotICAgIHJldHVybiBbc3lzLmV4ZWN1dGFibGUs
IF9fZmlsZV9fXSArIGxpc3QoYXJncykKLQotCi1kZWYgbWFpbihhcmdzPU5vbmUpOgotICAgIGlm
IGFyZ3MgaXMgTm9uZToKLSAgICAgICAgYXJncyA9IHN5cy5hcmd2WzE6XQotCi0gICAgZmlsZXV0
aWxzLm1ha2Vfc3Rkb3V0X2JpbmFyeSgpCi0KLSAgICBwcmludF9uZXdsaW5lID0gVHJ1ZQotICAg
IGlmIGxlbihhcmdzKSBhbmQgYXJnc1swXSA9PSAnLW4nOgotICAgICAgICBwcmludF9uZXdsaW5l
ID0gRmFsc2UKLSAgICAgICAgZGVsIGFyZ3NbMF0KLSAgICBzeXMuc3Rkb3V0LndyaXRlKCcgJy5q
b2luKGFyZ3MpKQotICAgIGlmIHByaW50X25ld2xpbmU6Ci0gICAgICAgIHN5cy5zdGRvdXQud3Jp
dGUoJ1xuJykKLSAgICByZXR1cm4gMAotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAg
IHN5cy5leGl0KG1haW4oKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVz
dC9lY2hvX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L2VjaG9fdW5p
dHRlc3QucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjMTNiNWVlYTE5ZTIzZDVh
NzZlMTg0NmI4Y2M1MGZkNDc2YzJlMzkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L2VjaG9fdW5pdHRlc3Qu
cHkKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
IyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBB
TkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0KLWltcG9ydCBvcy5wYXRoCi1pbXBvcnQgc3lzCi1pbXBvcnQgdW5p
dHRlc3QKLQotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBleGVjdXRpdmUsIG91
dHB1dGNhcHR1cmUKLWZyb20gd2Via2l0cHkudGVzdCBpbXBvcnQgZWNobwotCi0KLWNsYXNzIEVj
aG9UZXN0KG91dHB1dGNhcHR1cmUuT3V0cHV0Q2FwdHVyZVRlc3RDYXNlQmFzZSk6Ci0gICAgZGVm
IHRlc3RfYmFzaWMoc2VsZik6Ci0gICAgICAgIGVjaG8ubWFpbihbJ2ZvbycsICdiYXInLCAnYmF6
J10pCi0gICAgICAgIHNlbGYuYXNzZXJ0U3Rkb3V0KCdmb28gYmFyIGJhelxuJykKLQotICAgIGRl
ZiB0ZXN0X25vX25ld2xpbmUoc2VsZik6Ci0gICAgICAgIGVjaG8ubWFpbihbJy1uJywgJ2Zvbycs
ICdiYXInLCAnYmF6J10pCi0gICAgICAgIHNlbGYuYXNzZXJ0U3Rkb3V0KCdmb28gYmFyIGJheicp
Ci0KLSAgICBkZWYgdGVzdF91bmljb2RlKHNlbGYpOgotICAgICAgICBlY2hvLm1haW4oW3UnV2Vi
S2l0IFx1MjY2MScsICdUb3IgQXJuZScsIHUnVmVzdGJcdTAwRjghJ10pCi0gICAgICAgIHNlbGYu
YXNzZXJ0U3Rkb3V0KHUnV2ViS2l0IFx1MjY2MSBUb3IgQXJuZSBWZXN0Ylx1MDBGOCFcbicpCi0K
LSAgICBkZWYgdGVzdF9hcmd1bWVudF9vcmRlcihzZWxmKToKLSAgICAgICAgZWNoby5tYWluKFsn
Zm9vJywgJy1uJywgJ2JhciddKQotICAgICAgICBzZWxmLmFzc2VydFN0ZG91dCgnZm9vIC1uIGJh
clxuJykKLQotICAgIGRlZiB0ZXN0X2VtcHR5X2FyZ3VtZW50cyhzZWxmKToKLSAgICAgICAgb2xk
X2FyZ3YgPSBzeXMuYXJndgotICAgICAgICBzeXMuYXJndiA9IFsnZWNoby5weScsICdmb28nLCAn
YmFyJywgJ2JheiddCi0gICAgICAgIGVjaG8ubWFpbihbXSkKLSAgICAgICAgc2VsZi5hc3NlcnRT
dGRvdXQoJ1xuJykKLSAgICAgICAgc3lzLmFyZ3YgPSBvbGRfYXJndgotCi0gICAgZGVmIHRlc3Rf
bm9fYXJndW1lbnRzKHNlbGYpOgotICAgICAgICBvbGRfYXJndiA9IHN5cy5hcmd2Ci0gICAgICAg
IHN5cy5hcmd2ID0gWydlY2hvLnB5JywgJ2ZvbycsICdiYXInLCAnYmF6J10KLSAgICAgICAgZWNo
by5tYWluKCkKLSAgICAgICAgc2VsZi5hc3NlcnRTdGRvdXQoJ2ZvbyBiYXIgYmF6XG4nKQotICAg
ICAgICBzeXMuYXJndiA9IG9sZF9hcmd2Ci0KLSAgICBkZWYgdGVzdF9hc19jb21tYW5kKHNlbGYp
OgotICAgICAgICBvdXRwdXQgPSBleGVjdXRpdmUuRXhlY3V0aXZlKCkucnVuX2NvbW1hbmQoZWNo
by5jb21tYW5kX2FyZ3VtZW50cygnZm9vJywgJ2JhcicsICdiYXonKSkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChvdXRwdXQsICdmb28gYmFyIGJhelxuJykK
</data>
<flag name="review"
          id="125389"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>