<?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>229439</bug_id>
          
          <creation_ts>2021-08-24 02:47:39 -0700</creation_ts>
          <short_desc>ANGLE Metal infinities and NaNs generated with incorrect syntax</short_desc>
          <delta_ts>2021-08-30 11:13:10 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>ANGLE</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=226953</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=229508</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kimmo Kinnunen">kkinnunen</reporter>
          <assigned_to name="Kimmo Kinnunen">kkinnunen</assigned_to>
          <cc>cxiaoji</cc>
    
    <cc>dino</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gman</cc>
    
    <cc>kbr</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>kpiddington</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1786699</commentid>
    <comment_count>0</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-08-24 02:47:39 -0700</bug_when>
    <thetext>ANGLE Metal infinities and NaNs generated with incorrect syntax
0./0. -&gt; NANnanf
1./0. -&gt; inff</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1786700</commentid>
    <comment_count>1</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-08-24 02:48:39 -0700</bug_when>
    <thetext>&lt;rdar://81033366&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1786702</commentid>
    <comment_count>2</comment_count>
      <attachid>436272</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-08-24 03:10:42 -0700</bug_when>
    <thetext>Created attachment 436272
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1786703</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-08-24 03:11:55 -0700</bug_when>
    <thetext>Note that there are important steps to take when updating ANGLE. See https://trac.webkit.org/wiki/UpdatingANGLE</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1786704</commentid>
    <comment_count>4</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-08-24 03:14:12 -0700</bug_when>
    <thetext>Actually, just NANs are incorrect. For ToT, infs were ok since bug 226953 which caused this regression.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1786910</commentid>
    <comment_count>5</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2021-08-24 13:45:55 -0700</bug_when>
    <thetext>+Gregg Tavares as FYI, who&apos;s been rediscovering some of these during the upstreaming process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1787084</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-08-24 23:04:33 -0700</bug_when>
    <thetext>Committed r281547 (240914@main): &lt;https://commits.webkit.org/240914@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 436272.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788582</commentid>
    <comment_count>7</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-08-30 11:13:10 -0700</bug_when>
    <thetext>*** Bug 229508 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436272</attachid>
            <date>2021-08-24 03:10:42 -0700</date>
            <delta_ts>2021-08-24 23:04:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229439-20210824131040.patch</filename>
            <type>text/plain</type>
            <size>22826</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNDM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9DaGFuZ2VMb2cgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DaGFuZ2VMb2cKaW5k
ZXggYzI2NThhMzVkMGUwNTYyNDQzOTU5OTIyNzExZDExODhkNWVjMDlkZi4uNmRiODY5ZTE0ZmU3
OTBhNDJjN2VlOWQ0MjVhZWNiZjFlOTkxMTAyYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE5IEBACisyMDIxLTA4LTI0ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5l
bkBhcHBsZS5jb20+CisKKyAgICAgICAgQU5HTEUgTWV0YWwgaW5maW5pdGllcyBhbmQgTmFOcyBn
ZW5lcmF0ZWQgd2l0aCBpbmNvcnJlY3Qgc3ludGF4CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjk0MzkKKyAgICAgICAgPHJkYXI6Ly84MTAzMzM2Nj4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHZW5lcmF0
ZSBOYU4gYW5kIGluZmluaXR5IGNvbnN0YW50IHZhbHVlcyBjb3JyZWN0bHkuCisgICAgICAgIEFu
IGVsc2Ugd2FzIG1pc3NpbmcgZnJvbSBpZi1ibG9jaywgY2F1c2luZyBkb3VibGUgcHJvY2Vzc2lu
Zy4KKworICAgICAgICAqIHNyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERp
cmVjdC9FbWl0TWV0YWwuY3BwOgorICAgICAgICAoR2VuTWV0YWxUcmF2ZXJzZXI6OmVtaXRTaW5n
bGVDb25zdGFudCk6CisgICAgICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF91
dGlscy5tbToKKyAgICAgICAgKHJ4OjptdGw6OkNyZWF0ZVNoYWRlckxpYnJhcnkpOgorCiAyMDIx
LTA4LTE2ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAg
QnVpbGQgQU5HTEUgYXMgYW4gYWRkaXRpb25hbCBzdGF0aWMgbGlicmFyeSBmb3IgdGVzdHMgYW5k
IG90aGVyIGV4ZWN1dGFibGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3QvRW1pdE1ldGFsLmNw
cCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5z
bGF0b3JNZXRhbERpcmVjdC9FbWl0TWV0YWwuY3BwCmluZGV4IGU4ZTkwNTFiZDMwNWYxNGRiYmU0
ZTdmZTQxZjVhNmM3ZmY0Yzc3MDAuLmNhNmRhMDM2NDJiOWY2ZWIyMjFiMTgxMWRjZjZkNWU2N2U4
N2M1NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90
cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC9FbWl0TWV0YWwuY3BwCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRh
bERpcmVjdC9FbWl0TWV0YWwuY3BwCkBAIC0xNTAxLDcgKzE1MDEsNyBAQCB2b2lkIEdlbk1ldGFs
VHJhdmVyc2VyOjplbWl0U2luZ2xlQ29uc3RhbnQoY29uc3QgVENvbnN0YW50VW5pb24gKmNvbnN0
IGNvbnN0VW5pbwogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIG1PdXQgPDwgIk5BTiI7
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoQU5HTEVfVU5MSUtFTFkoaXNpbmYoY29u
c3RVbmlvbi0+Z2V0RkNvbnN0KCkpKSkKKyAgICAgICAgICAgIGVsc2UgaWYgKEFOR0xFX1VOTElL
RUxZKGlzaW5mKGNvbnN0VW5pb24tPmdldEZDb25zdCgpKSkpCiAgICAgICAgICAgICB7CiAgICAg
ICAgICAgICAgICAgaWYoY29uc3RVbmlvbi0+Z2V0RkNvbnN0KCkgPCAwKQogICAgICAgICAgICAg
ICAgIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCBmY2JjMWEyNDljZmY5Mzc3YTI3NjUyM2M4MjdjNTMyOTMzMTk2MWE3Li5h
NzkzZmZmOGNjMWFiMTQ5OTY3YTVlNDNjM2MyYzcyMmNiMjU3MDAyIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTkgQEAKKzIwMjEtMDgtMjQgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4K
KworICAgICAgICBBTkdMRSBNZXRhbCBpbmZpbml0aWVzIGFuZCBOYU5zIGdlbmVyYXRlZCB3aXRo
IGluY29ycmVjdCBzeW50YXgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyOTQzOQorICAgICAgICA8cmRhcjovLzgxMDMzMzY2PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0ZXN0cyB0aGF0IHRlc3Qg
c29tZSBhc3BlY3RzIG9mIE5hTiBhbmQgLStpbmYgdGhhdCB0aGUgR0xTTCBFUyAzLjAwIHNwZWMK
KyAgICAgICAgdGFsa3MgYWJvdXQuCisKKyAgICAgICAgKiB3ZWJnbC9wZW5kaW5nL2NvbmZvcm1h
bmNlMi9nbHNsMy9mbG9hdC1jb25zdGFudC1leHByZXNzaW9ucy1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIHdlYmdsL3BlbmRpbmcvY29uZm9ybWFuY2UyL2dsc2wzL2Zsb2F0LWNvbnN0
YW50LWV4cHJlc3Npb25zLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYmdsL3BlbmRpbmcvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL2dsc2wzL2Zsb2F0LWNvbnN0YW50
LWV4cHJlc3Npb25zLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYmdsL3BlbmRpbmcvcmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvanMvZ2xzbC1jb25mb3JtYW5jZS10ZXN0LmpzOiBBZGRlZC4K
KwogMjAyMS0wOC0yMyAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIERlcHRoIHRlc3QgYWZmZWN0cyBXZWJHTCByZW5kZXJpbmcgd2hlbiBjb250ZXh0IGhh
cyBkZXB0aCA9PSBmYWxzZSwgc3RlbmNpbCA9PSB0cnVlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9wZW5kaW5nL2NvbmZvcm1hbmNlMi9nbHNsMy9mbG9hdC1jb25zdGFudC1leHByZXNz
aW9ucy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJnbC9wZW5kaW5nL2NvbmZvcm1hbmNl
Mi9nbHNsMy9mbG9hdC1jb25zdGFudC1leHByZXNzaW9ucy1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYTk1MDI2YTY0ZjQ2YzNmODk4MGM4ODg2ZThlZTg1NGZlMWE2ZDcxYwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3BlbmRpbmcvY29uZm9ybWFuY2UyL2dsc2wzL2Zsb2F0
LWNvbnN0YW50LWV4cHJlc3Npb25zLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKK1RoaXMg
dGVzdCBydW5zIHRoZSBXZWJHTCBUZXN0IGxpc3RlZCBiZWxvdyBpbiBhbiBpZnJhbWUgYW5kIHJl
cG9ydHMgUEFTUyBvciBGQUlMLgorCitUZXN0OiAuLi8uLi9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZTIvZ2xzbDMvZmxvYXQtY29uc3RhbnQtZXhwcmVzc2lvbnMuaHRtbD93
ZWJnbFZlcnNpb249MgorWyBQQVNTIF0gQWxsIHRlc3RzIHBhc3NlZApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvcGVuZGluZy9jb25mb3JtYW5jZTIvZ2xzbDMvZmxvYXQtY29uc3RhbnQt
ZXhwcmVzc2lvbnMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3BlbmRpbmcvY29uZm9ybWFuY2Uy
L2dsc2wzL2Zsb2F0LWNvbnN0YW50LWV4cHJlc3Npb25zLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTIwMGE2
MjgwMDI2OTA2MTM5N2MwMDExNGQ4NTFhODg5MDBiY2FkZQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmdsL3BlbmRpbmcvY29uZm9ybWFuY2UyL2dsc2wzL2Zsb2F0LWNvbnN0YW50
LWV4cHJlc3Npb25zLmh0bWwKQEAgLTAsMCArMSwxOCBAQAorPCEtLSBUaGlzIGZpbGUgaXMgYXV0
by1nZW5lcmF0ZWQgYnkgVG9vbHMvU2NyaXB0cy91cGRhdGUtd2ViZ2wtY29uZm9ybWFuY2UtdGVz
dHMuIERPIE5PVCBFRElUIC0tPgorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1l
dGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIENvbmZvcm1hbmNlIFRlc3QgV3JhcHBl
ciBmb3IgZmxvYXQtY29uc3RhbnQtZXhwcmVzc2lvbnMuaHRtbDwvdGl0bGU+Cis8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iLi4vLi4vcmVz
b3VyY2VzL3dlYmtpdC13ZWJnbC10ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8cD5UaGlzIHRlc3QgcnVucyB0aGUgV2ViR0wgVGVzdCBsaXN0ZWQgYmVsb3cgaW4g
YW4gaWZyYW1lIGFuZCByZXBvcnRzIFBBU1Mgb3IgRkFJTC48L3A+CitUZXN0OiA8YSBocmVmPSIu
Li8uLi9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvZ2xzbDMvZmxvYXQt
Y29uc3RhbnQtZXhwcmVzc2lvbnMuaHRtbD93ZWJnbFZlcnNpb249MiI+Li4vLi4vcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL2dsc2wzL2Zsb2F0LWNvbnN0YW50LWV4cHJl
c3Npb25zLmh0bWw/d2ViZ2xWZXJzaW9uPTI8L2E+Cis8ZGl2IGlkPSJpZnJhbWUiPgorPGlmcmFt
ZSBzcmM9Ii4uLy4uL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9nbHNs
My9mbG9hdC1jb25zdGFudC1leHByZXNzaW9ucy5odG1sP3dlYmdsVmVyc2lvbj0yIiB3aWR0aD0i
ODAwIiBoZWlnaHQ9IjYwMCI+PC9pZnJhbWU+Cis8L2Rpdj4KKzxkaXYgaWQ9InJlc3VsdCI+PC9k
aXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9wZW5k
aW5nL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9nbHNsMy9mbG9hdC1j
b25zdGFudC1leHByZXNzaW9ucy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcGVuZGluZy9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvZ2xzbDMvZmxvYXQtY29uc3RhbnQt
ZXhwcmVzc2lvbnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zODVhOWFlNDk2ZjdjMjk5Yzg5OTQ2NWE0MTQx
ZTI5M2JlNWQzZGEyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcGVuZGlu
Zy9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvZ2xzbDMvZmxvYXQtY29u
c3RhbnQtZXhwcmVzc2lvbnMuaHRtbApAQCAtMCwwICsxLDEwMyBAQAorPCEtLQorQ29weXJpZ2h0
IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBp
biB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+RmxvYXQgY29uc3RhbnQgZXhw
cmVzc2lvbiBjb3JuZXIgY2FzZXM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvd2Vi
Z2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvZ2xzbC1j
b25mb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0i
ZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IGlk
PSJmc2hhZGVyUG9zaXRpdmVEaXZpc2lvbkJ5WmVyb0lzSW5maW5pdGUiIHR5cGU9Ingtc2hhZGVy
L3gtZnJhZ21lbnQiPiN2ZXJzaW9uIDMwMCBlcworcHJlY2lzaW9uIGhpZ2hwIGZsb2F0Oworb3V0
IHZlYzQgbXlfRnJhZ0NvbG9yOwordW5pZm9ybSBmbG9hdCB1OyAvLyBBc3N1bWVkIHRvIGhhdmUg
dGhlIGRlZmF1bHQgdmFsdWUgMC4wCit2b2lkIG1haW4oKQoreworICAgIC8vIFBvc2l0aXZlIG5v
bi16ZXJvIGRpdmlzaW9uIGJ5IHplcm8gc2hvdWxkIHByb2R1Y2UgaW5maW5pdHkuCisgICAgLy8g
R0xTTCBFUyAzLjAwLjYgNC41LjEgUmFuZ2UgYW5kIFByZWNpc2lvbgorICAgIC8vICJIb3dldmVy
LCBkaXZpZGluZyBhIG5vbi16ZXJvIGJ5IDAgcmVzdWx0cyBpbiB0aGUgYXBwcm9wcmlhdGVseSBz
aWduZWQgSUVFRSBJbmY6CisgICAgLy8gSWYgYm90aCBwb3NpdGl2ZSBhbmQgbmVnYXRpdmUgemVy
b3MgYXJlIGltcGxlbWVudGVkLCB0aGUgY29ycmVjdGx5IHNpZ25lZCBJbmYgd2lsbCBiZQorICAg
IC8vIGdlbmVyYXRlZCwgb3RoZXJ3aXNlIHBvc2l0aXZlIEluZiBpcyBnZW5lcmF0ZWQuIgorICAg
IGZsb2F0IGYgPSAxLiAvIDAuOworICAgIGYgPSB1ID09IDAuID8gZiA6IDEuOworICAgIGJvb2wg
Y29ycmVjdCA9IGlzaW5mKGYpICYmIHNpZ24oZikgPiAwLjsKKyAgICBteV9GcmFnQ29sb3IgPSB2
ZWM0KDAuMCwgY29ycmVjdCA/IDEuIDogMC4sIDAuMCwgMS4wKTsKK30KKzwvc2NyaXB0PgorPHNj
cmlwdCBpZD0iZnNoYWRlck5lZ2F0aXZlRGl2aXNpb25CeVplcm9Jc0luZmluaXRlIiB0eXBlPSJ4
LXNoYWRlci94LWZyYWdtZW50Ij4jdmVyc2lvbiAzMDAgZXMKK3ByZWNpc2lvbiBoaWdocCBmbG9h
dDsKK291dCB2ZWM0IG15X0ZyYWdDb2xvcjsKK3VuaWZvcm0gZmxvYXQgdTsgLy8gQXNzdW1lZCB0
byBoYXZlIHRoZSBkZWZhdWx0IHZhbHVlIDAuMAordm9pZCBtYWluKCkKK3sKKyAgICAvLyBOZWdh
dGl2ZSBub24temVybyBkaXZpc2lvbiBieSB6ZXJvIHNob3VsZCBwcm9kdWNlIG5lZ2F0aXZlIGlu
ZmluaXR5IGlmIHN1cHBvcnRlZCwKKyAgICAvLyBvdGhlcnZpZXMgaW5maW5pdHkuCisgICAgLy8g
R0xTTCBFUyAzLjAwLjYgNC41LjEgUmFuZ2UgYW5kIFByZWNpc2lvbgorICAgIC8vICJIb3dldmVy
LCBkaXZpZGluZyBhIG5vbi16ZXJvIGJ5IDAgcmVzdWx0cyBpbiB0aGUgYXBwcm9wcmlhdGVseSBz
aWduZWQgSUVFRSBJbmY6CisgICAgLy8gSWYgYm90aCBwb3NpdGl2ZSBhbmQgbmVnYXRpdmUgemVy
b3MgYXJlIGltcGxlbWVudGVkLCB0aGUgY29ycmVjdGx5IHNpZ25lZCBJbmYgd2lsbCBiZQorICAg
IC8vIGdlbmVyYXRlZCwgb3RoZXJ3aXNlIHBvc2l0aXZlIEluZiBpcyBnZW5lcmF0ZWQuIgorICAg
IGZsb2F0IGYgPSAtMS4gLyAwLjsKKyAgICBmID0gdSA9PSAwLiA/IGYgOiAxLjsKKyAgICBib29s
IHN1cHBvcnRzTmVnYXRpdmVaZXJvcyA9IHNpZ24oLTAuKSA8IDAuOworICAgIGJvb2wgY29ycmVj
dCA9IGlzaW5mKGYpICYmIChzaWduKGYpIDwgMC4gfHwgIXN1cHBvcnRzTmVnYXRpdmVaZXJvcyk7
CisgICAgbXlfRnJhZ0NvbG9yID0gdmVjNCgwLiwgY29ycmVjdCA/IDEuIDogMC4sIDAuLCAxLik7
Cit9Cis8L3NjcmlwdD4KKworPHNjcmlwdCBpZD0iZnNoYWRlclplcm9EaXZpc2lvbkJ5WmVyb0lz
TmFuIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4jdmVyc2lvbiAzMDAgZXMKK3ByZWNpc2lv
biBoaWdocCBmbG9hdDsKK291dCB2ZWM0IG15X0ZyYWdDb2xvcjsKK3VuaWZvcm0gZmxvYXQgdTsg
Ly8gQXNzdW1lZCB0byBoYXZlIHRoZSBkZWZhdWx0IHZhbHVlIDAuMAordm9pZCBtYWluKCkKK3sK
KyAgICAvLyBOb24temVybyBkaXZpc2lvbiBieSB6ZXJvIHNob3VsZCBwcm9kdWNlIGluZmluaXR5
LgorICAgIC8vIEdMU0wgRVMgMy4wMC42IDQuNS4xIFJhbmdlIGFuZCBQcmVjaXNpb24KKyAgICAv
LyAiTmFOcyBhcmUgbm90IHJlcXVpcmVkIHRvIGJlIGdlbmVyYXRlZC4gU3VwcG9ydCBmb3Igc2ln
bmFsaW5nIE5hTnMgaXMgbm90IHJlcXVpcmVkIGFuZAorICAgIC8vIGV4Y2VwdGlvbnMgYXJlIG5l
dmVyIHJhaXNlZC4gT3BlcmF0aW9ucyBhbmQgYnVpbHQtaW4gZnVuY3Rpb25zIHRoYXQgb3BlcmF0
ZSBvbiBhIE5hTiBhcmUgbm90CisgICAgLy8gcmVxdWlyZWQgdG8gcmV0dXJuIGEgTmFOIGFzIHRo
ZSByZXN1bHQuIEhvd2V2ZXIgaWYgTmFOcyBhcmUgZ2VuZXJhdGVkLCBpc25hbigpIHNob3VsZCBy
ZXR1cm4KKyAgICAvLyB0aGUgY29ycmVjdCB2YWx1ZS4iCisgICAgZmxvYXQgZiA9IDAuIC8gMC47
CisgICAgZiA9IHUgPT0gMC4gPyBmIDogMS47CisgICAgYm9vbCBuYW5XYXNHZW5lcmF0ZWQgPSAh
KGYgPD0gMC4gfHwgMC4gPD0gZik7CisgICAgYm9vbCBjb3JyZWN0ID0gaXNuYW4oZikgfHwgIW5h
bldhc0dlbmVyYXRlZDsKKyAgICBteV9GcmFnQ29sb3IgPSB2ZWM0KDAuLCBjb3JyZWN0ID8gMS4g
OiAwLiwgMC4sIDEuKTsKK30KKzwvc2NyaXB0PgorCis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNj
cmlwdCI+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigpOworCitHTFNMQ29uZm9ybWFuY2VU
ZXN0ZXIucnVuUmVuZGVyVGVzdHMoWworeworICBmU2hhZGVySWQ6ICdmc2hhZGVyUG9zaXRpdmVE
aXZpc2lvbkJ5WmVyb0lzSW5maW5pdGUnLAorICBmU2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgbGlu
a1N1Y2Nlc3M6IHRydWUsCisgIHBhc3NNc2c6ICJQb3NpdGl2ZSBmbG9hdHMgZGl2aWRlZCBieSB6
ZXJvIHNob3VsZCBwcm9kdWNlIGluZmluaXR5LiIKK30sCit7CisgIGZTaGFkZXJJZDogJ2ZzaGFk
ZXJOZWdhdGl2ZURpdmlzaW9uQnlaZXJvSXNJbmZpbml0ZScsCisgIGZTaGFkZXJTdWNjZXNzOiB0
cnVlLAorICBsaW5rU3VjY2VzczogdHJ1ZSwKKyAgcGFzc01zZzogIk5lZ2F0aXZlIGZsb2F0cyBk
aXZpZGVkIGJ5IHplcm8gc2hvdWxkIHByb2R1Y2UgaW5maW5pdHkgb2YgY29ycmVjdCBzaWduLiIK
K30sCit7CisgIGZTaGFkZXJJZDogJ2ZzaGFkZXJaZXJvRGl2aXNpb25CeVplcm9Jc05hbicsCisg
IGZTaGFkZXJTdWNjZXNzOiB0cnVlLAorICBsaW5rU3VjY2VzczogdHJ1ZSwKKyAgcGFzc01zZzog
IkZsb2F0IHplcm8gZGl2aWRlZCBieSB6ZXJvIHNob3VsZCBtYXliZSBwcm9kdWNlIE5hTi4iCit9
CitdLCAyKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ2wvcGVuZGluZy9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9qcy9nbHNsLWNv
bmZvcm1hbmNlLXRlc3QuanMgYi9MYXlvdXRUZXN0cy93ZWJnbC9wZW5kaW5nL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2pzL2dsc2wtY29uZm9ybWFuY2UtdGVzdC5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
ZDZlYWFkNTBmNGIxY2E3ODdjZDVjYmFiZjUwZjA4YzdiYjhmY2U2Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcGVuZGluZy9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9q
cy9nbHNsLWNvbmZvcm1hbmNlLXRlc3QuanMKQEAgLTAsMCArMSw0MTkgQEAKKy8qCitDb3B5cmln
aHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5k
IGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorKi8KK0dMU0xDb25mb3JtYW5jZVRlc3RlciA9IChm
dW5jdGlvbigpeworCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgZGVmYXVsdFZlcnRl
eFNoYWRlciA9IFsKKyAgImF0dHJpYnV0ZSB2ZWM0IHZQb3NpdGlvbjsiLAorICAidm9pZCBtYWlu
KCkiLAorICAieyIsCisgICIgICAgZ2xfUG9zaXRpb24gPSB2UG9zaXRpb247IiwKKyAgIn0iCitd
LmpvaW4oJ1xuJyk7CisKK3ZhciBkZWZhdWx0RnJhZ21lbnRTaGFkZXIgPSBbCisgICJwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsiLAorICAidm9pZCBtYWluKCkiLAorICAieyIsCisgICIgICAgZ2xf
RnJhZ0NvbG9yID0gdmVjNCgxLjAsMC4wLDAuMCwxLjApOyIsCisgICJ9IgorXS5qb2luKCdcbicp
OworCit2YXIgZGVmYXVsdEVTU0wzVmVydGV4U2hhZGVyID0gWworICAiI3ZlcnNpb24gMzAwIGVz
IiwKKyAgImluIHZlYzQgdlBvc2l0aW9uOyIsCisgICJ2b2lkIG1haW4oKSIsCisgICJ7IiwKKyAg
IiAgICBnbF9Qb3NpdGlvbiA9IHZQb3NpdGlvbjsiLAorICAifSIKK10uam9pbignXG4nKTsKKwor
dmFyIGRlZmF1bHRFU1NMM0ZyYWdtZW50U2hhZGVyID0gWworICAiI3ZlcnNpb24gMzAwIGVzIiwK
KyAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OyIsCisgICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7
IiwKKyAgInZvaWQgbWFpbigpIiwKKyAgInsiLAorICAiICAgIG15X0ZyYWdDb2xvciA9IHZlYzQo
MS4wLDAuMCwwLjAsMS4wKTsiLAorICAifSIKK10uam9pbignXG4nKTsKKworZnVuY3Rpb24gbG9n
KG1zZykgeworICBidWZmZXJlZExvZ1RvQ29uc29sZShtc2cpOworfQorCit2YXIgdlNoYWRlckRC
ID0ge307Cit2YXIgZlNoYWRlckRCID0ge307CisKKy8qKgorICogVGhlIGluZm8gcGFyYW1ldGVy
IHNob3VsZCBjb250YWluIHRoZSBmb2xsb3dpbmcga2V5cy4gTm90ZSB0aGF0IHlvdSBtYXkgbGVh
dmUKKyAqIHRoZSBwYXJhbWV0ZXJzIGZvciBvbmUgc2hhZGVyIG91dCwgaW4gd2hpY2ggY2FzZSB0
aGUgZGVmYXVsdCBzaGFkZXIgd2lsbCBiZQorICogdXNlZC4KKyAqIHZTaGFkZXJTb3VyY2U6IHRo
ZSBzb3VyY2UgY29kZSBmb3IgdmVydGV4IHNoYWRlcgorICogdlNoYWRlcklkOiBpZCBvZiBhbiBl
bGVtZW50IGNvbnRhaW5pbmcgdmVydGV4IHNoYWRlciBzb3VyY2UgY29kZS4gVXNlZCBpZgorICog
ICB2U2hhZGVyU291cmNlIGlzIG5vdCBzcGVjaWZpZWQuCisgKiB2U2hhZGVyU3VjY2VzczogdHJ1
ZSBpZiB2ZXJ0ZXggc2hhZGVyIGNvbXBpbGF0aW9uIHNob3VsZAorICogICBzdWNjZWVkLgorICog
ZlNoYWRlclNvdXJjZTogdGhlIHNvdXJjZSBjb2RlIGZvciBmcmFnbWVudCBzaGFkZXIKKyAqIGZT
aGFkZXJJZDogaWQgb2YgYW4gZWxlbWVudCBjb250YWluaW5nIGZyYWdtZW50IHNoYWRlciBzb3Vy
Y2UgY29kZS4gVXNlZCBpZgorICogICBmU2hhZGVyU291cmNlIGlzIG5vdCBzcGVjaWZpZWQuCisg
KiBmU2hhZGVyU3VjY2VzczogdHJ1ZSBpZiBmcmFnbWVudCBzaGFkZXIgY29tcGlsYXRpb24gc2hv
dWxkCisgKiAgIHN1Y2NlZWQuCisgKiBsaW5rU3VjY2VzczogdHJ1ZSBpZiBsaW5rIHNob3VsZCBz
dWNjZWVkCisgKiBwYXNzTXNnOiBtc2cgdG8gZGVzY3JpYmUgc3VjY2VzcyBjb25kaXRpb24uCisg
KiByZW5kZXI6IGlmIHRydWUgcmVuZGVyIHRvIHVuaXQgcXVhZC4gR3JlZW4gPSBzdWNjZXNzCisg
KiB1bmlmb3JtczogYW4gYXJyYXkgb2Ygb2JqZWN0cyBzcGVjaWZ5aW5nIHVuaWZvcm1zIHRvIHNl
dCBwcmlvciB0byByZW5kZXJpbmcuCisgKiAgIEVhY2ggb2JqZWN0IHNob3VsZCBoYXZlIHRoZSBm
b2xsb3dpbmcga2V5czoKKyAqICAgICBuYW1lOiB1bmlmb3JtIHZhcmlhYmxlIG5hbWUgaW4gdGhl
IHNoYWRlciBzb3VyY2UuIFVuaWZvcm0gbG9jYXRpb24gd2lsbAorICogICAgICAgYmUgcXVlcmll
ZCBiYXNlZCBvbiBpdHMgbmFtZS4KKyAqICAgICBmdW5jdGlvbk5hbWU6IG5hbWUgb2YgdGhlIGZ1
bmN0aW9uIHVzZWQgdG8gc2V0IHRoZSB1bmlmb3JtLiBGb3IgZXhhbXBsZToKKyAqICAgICAgICd1
bmlmb3JtMWknCisgKiAgICAgdmFsdWU6IHZhbHVlIG9mIHRoZSB1bmlmb3JtIHRvIHNldC4KKyAq
LworZnVuY3Rpb24gcnVuT25lVGVzdChnbCwgaW5mbykgeworICB2YXIgcGFzc01zZyA9IGluZm8u
cGFzc01zZworICBkZWJ1ZygiIik7CisgIGRlYnVnKCJ0ZXN0OiAiICsgcGFzc01zZyk7CisKKyAg
dmFyIGNvbnNvbGVEaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpOworCisg
IHZhciB2SXNEZWZhdWx0ID0gZmFsc2U7CisgIHZhciBmSXNEZWZhdWx0ID0gZmFsc2U7CisKKyAg
aWYgKGluZm8udlNoYWRlclNvdXJjZSA9PT0gdW5kZWZpbmVkKSB7CisgICAgaWYgKGluZm8udlNo
YWRlcklkKSB7CisgICAgICBpbmZvLnZTaGFkZXJTb3VyY2UgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZChpbmZvLnZTaGFkZXJJZCkudGV4dDsKKyAgICB9IGVsc2UgeworICAgICAgdklzRGVmYXVs
dCA9IHRydWU7CisgICAgfQorICB9CisgIGlmIChpbmZvLmZTaGFkZXJTb3VyY2UgPT09IHVuZGVm
aW5lZCkgeworICAgIGlmIChpbmZvLmZTaGFkZXJJZCkgeworICAgICAgaW5mby5mU2hhZGVyU291
cmNlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaW5mby5mU2hhZGVySWQpLnRleHQ7CisgICAg
fSBlbHNlIHsKKyAgICAgIGZJc0RlZmF1bHQgPSB0cnVlOworICAgIH0KKyAgfQorCisgIHZhciB2
TGFiZWwgPSAodklzRGVmYXVsdCA/ICJkZWZhdWx0IiA6ICJ0ZXN0IikgKyAiIHZlcnRleCBzaGFk
ZXIiOworICB2YXIgZkxhYmVsID0gKGZJc0RlZmF1bHQgPyAiZGVmYXVsdCIgOiAidGVzdCIpICsg
IiBmcmFnbWVudCBzaGFkZXIiOworICBpZiAodklzRGVmYXVsdCkgeworICAgIGluZm8udlNoYWRl
clNvdXJjZSA9IGRlZmF1bHRWZXJ0ZXhTaGFkZXI7CisgICAgaW5mby52U2hhZGVyU3VjY2VzcyA9
IHRydWU7CisgIH0KKyAgaWYgKGZJc0RlZmF1bHQpIHsKKyAgICBpbmZvLmZTaGFkZXJTb3VyY2Ug
PSBkZWZhdWx0RnJhZ21lbnRTaGFkZXI7CisgICAgaW5mby5mU2hhZGVyU3VjY2VzcyA9IHRydWU7
CisgIH0KKworICBpZiAodklzRGVmYXVsdCAhPSBmSXNEZWZhdWx0KSB7CisgICAgLy8gVGhlIGxh
bmd1YWdlIHZlcnNpb24gb2YgdGhlIGRlZmF1bHQgc2hhZGVyIGlzIGNob3NlbgorICAgIC8vIGFj
Y29yZGluZyB0byB0aGUgbGFuZ3VhZ2UgdmVyc2lvbiBvZiB0aGUgb3RoZXIgc2hhZGVyLgorICAg
IC8vIFdlIHJlbHkgb24gIiN2ZXJzaW9uIDMwMCBlcyIgYmVpbmcgaW4gdGhpcyB1c3VhbCBmb3Jt
YXQuCisgICAgLy8gSXQgbXVzdCBiZSBvbiB0aGUgZmlyc3QgbGluZSBvZiB0aGUgc2hhZGVyIGFj
Y29yZGluZyB0byB0aGUgc3BlYy4KKyAgICBpZiAoZklzRGVmYXVsdCkgeworICAgICAgLy8gSWYg
d2UncmUgdXNpbmcgdGhlIGRlZmF1bHQgZnJhZ21lbnQgc2hhZGVyLCB3ZSBuZWVkIHRvIG1ha2Ug
c3VyZSB0aGF0CisgICAgICAvLyBpdCdzIGxhbmd1YWdlIHZlcnNpb24gbWF0Y2hlcyB3aXRoIHRo
ZSB2ZXJ0ZXggc2hhZGVyLgorICAgICAgaWYgKGluZm8udlNoYWRlclNvdXJjZS5zcGxpdCgnXG4n
KVswXSA9PSAnI3ZlcnNpb24gMzAwIGVzJykgeworICAgICAgICBpbmZvLmZTaGFkZXJTb3VyY2Ug
PSBkZWZhdWx0RVNTTDNGcmFnbWVudFNoYWRlcjsKKyAgICAgIH0KKyAgICB9IGVsc2UgeworICAg
ICAgLy8gSWYgd2UncmUgdXNpbmcgdGhlIGRlZmF1bHQgdmVydGV4IHNoYWRlciwgd2UgbmVlZCB0
byBtYWtlIHN1cmUgdGhhdAorICAgICAgLy8gaXQncyBsYW5ndWFnZSB2ZXJzaW9uIG1hdGNoZXMg
d2l0aCB0aGUgZnJhZ21lbnQgc2hhZGVyLgorICAgICAgaWYgKGluZm8uZlNoYWRlclNvdXJjZS5z
cGxpdCgnXG4nKVswXSA9PSAnI3ZlcnNpb24gMzAwIGVzJykgeworICAgICAgICBpbmZvLnZTaGFk
ZXJTb3VyY2UgPSBkZWZhdWx0RVNTTDNWZXJ0ZXhTaGFkZXI7CisgICAgICB9CisgICAgfQorICB9
CisKKyAgdmFyIHZTb3VyY2UgPSBpbmZvLnZTaGFkZXJQcmVwID8gaW5mby52U2hhZGVyUHJlcChp
bmZvLnZTaGFkZXJTb3VyY2UpIDoKKyAgICBpbmZvLnZTaGFkZXJTb3VyY2U7CisKKyAgaWYgKCFx
dWlldE1vZGUoKSkgeworICAgIHd0dS5hZGRTaGFkZXJTb3VyY2UoY29uc29sZURpdiwgdkxhYmVs
LCB2U291cmNlKTsKKyAgfQorCisgIC8vIFJldXNlIGlkZW50aWNhbCBzaGFkZXJzIHNvIHdlIHRl
c3Qgc2hhcmVkIHNoYWRlci4KKyAgdmFyIHZTaGFkZXIgPSB2U2hhZGVyREJbdlNvdXJjZV07Cisg
IGlmICghdlNoYWRlcikgeworICAgIC8vIGxvYWRTaGFkZXIsIHdpdGggb3B0X3NraXBDb21waWxl
U3RhdHVzOiB0cnVlLgorICAgIHZTaGFkZXIgPSB3dHUubG9hZFNoYWRlcihnbCwgdlNvdXJjZSwg
Z2wuVkVSVEVYX1NIQURFUiwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgdHJ1ZSk7CisgICAgbGV0
IGNvbXBpbGVkVlNoYWRlciA9IHZTaGFkZXI7CisgICAgaWYgKHZTaGFkZXIgJiYgIWdsLmdldFNo
YWRlclBhcmFtZXRlcih2U2hhZGVyLCBnbC5DT01QSUxFX1NUQVRVUykpIHsKKyAgICAgIGNvbXBp
bGVkVlNoYWRlciA9IG51bGw7CisgICAgfQorICAgIGlmIChpbmZvLnZTaGFkZXJUZXN0KSB7Cisg
ICAgICBpZiAoIWluZm8udlNoYWRlclRlc3QoY29tcGlsZWRWU2hhZGVyKSkgeworICAgICAgICB0
ZXN0RmFpbGVkKCJbdmVydGV4IHNoYWRlciB0ZXN0XSAiICsgcGFzc01zZyk7CisgICAgICAgIHJl
dHVybjsKKyAgICAgIH0KKyAgICB9CisgICAgLy8gQXMgcGVyIEdMU0wgMS4wLjE3IDEwLjI3IHdl
IGNhbiBvbmx5IGNoZWNrIGZvciBzdWNjZXNzIG9uCisgICAgLy8gY29tcGlsZVNoYWRlciwgbm90
IGZhaWx1cmUuCisgICAgaWYgKCFpbmZvLmlnbm9yZVJlc3VsdHMgJiYgaW5mby52U2hhZGVyU3Vj
Y2VzcyAmJiAhY29tcGlsZWRWU2hhZGVyKSB7CisgICAgICB0ZXN0RmFpbGVkKCJbdW5leHBlY3Rl
ZCB2ZXJ0ZXggc2hhZGVyIGNvbXBpbGUgc3RhdHVzXSAoZXhwZWN0ZWQ6ICIgKworICAgICAgICAg
ICAgICAgICBpbmZvLnZTaGFkZXJTdWNjZXNzICsgIikgIiArIHBhc3NNc2cpOworICAgICAgaWYg
KCFxdWlldE1vZGUoKSAmJiB2U2hhZGVyKSB7CisgICAgICAgIGNvbnN0IGluZm8gPSBnbC5nZXRT
aGFkZXJJbmZvTG9nKHZTaGFkZXIpOworICAgICAgICB3dHUuYWRkU2hhZGVyU291cmNlKGNvbnNv
bGVEaXYsIHZMYWJlbCArICIgaW5mbyBsb2ciLCBpbmZvKTsKKyAgICAgIH0KKyAgICB9CisgICAg
Ly8gU2F2ZSB0aGUgc2hhZGVycyBzbyB3ZSB0ZXN0IHNoYXJlZCBzaGFkZXIuCisgICAgaWYgKGNv
bXBpbGVkVlNoYWRlcikgeworICAgICAgdlNoYWRlckRCW3ZTb3VyY2VdID0gY29tcGlsZWRWU2hh
ZGVyOworICAgIH0gZWxzZSB7CisgICAgICB2U2hhZGVyID0gbnVsbDsKKyAgICB9CisgIH0KKwor
ICB2YXIgZGVidWdTaGFkZXJzID0gZ2wuZ2V0RXh0ZW5zaW9uKCdXRUJHTF9kZWJ1Z19zaGFkZXJz
Jyk7CisgIGlmIChkZWJ1Z1NoYWRlcnMgJiYgdlNoYWRlciAmJiAhcXVpZXRNb2RlKCkpIHsKKyAg
ICB3dHUuYWRkU2hhZGVyU291cmNlKGNvbnNvbGVEaXYsIHZMYWJlbCArICIgdHJhbnNsYXRlZCBm
b3IgZHJpdmVyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnU2hhZGVycy5nZXRUcmFu
c2xhdGVkU2hhZGVyU291cmNlKHZTaGFkZXIpKTsKKyAgfQorCisgIHZhciBmU291cmNlID0gaW5m
by5mU2hhZGVyUHJlcCA/IGluZm8uZlNoYWRlclByZXAoaW5mby5mU2hhZGVyU291cmNlKSA6Cisg
ICAgaW5mby5mU2hhZGVyU291cmNlOworCisgIGlmICghcXVpZXRNb2RlKCkpIHsKKyAgICB3dHUu
YWRkU2hhZGVyU291cmNlKGNvbnNvbGVEaXYsIGZMYWJlbCwgZlNvdXJjZSk7CisgIH0KKworICAv
LyBSZXVzZSBpZGVudGljYWwgc2hhZGVycyBzbyB3ZSB0ZXN0IHNoYXJlZCBzaGFkZXIuCisgIHZh
ciBmU2hhZGVyID0gZlNoYWRlckRCW2ZTb3VyY2VdOworICBpZiAoIWZTaGFkZXIpIHsKKyAgICAv
LyBsb2FkU2hhZGVyLCB3aXRoIG9wdF9za2lwQ29tcGlsZVN0YXR1czogdHJ1ZS4KKyAgICBmU2hh
ZGVyID0gd3R1LmxvYWRTaGFkZXIoZ2wsIGZTb3VyY2UsIGdsLkZSQUdNRU5UX1NIQURFUiwgbnVs
bCwgbnVsbCwgbnVsbCwgbnVsbCwgdHJ1ZSk7CisgICAgbGV0IGNvbXBpbGVkRlNoYWRlciA9IGZT
aGFkZXI7CisgICAgaWYgKGZTaGFkZXIgJiYgIWdsLmdldFNoYWRlclBhcmFtZXRlcihmU2hhZGVy
LCBnbC5DT01QSUxFX1NUQVRVUykpIHsKKyAgICAgIGNvbXBpbGVkRlNoYWRlciA9IG51bGw7Cisg
ICAgfQorICAgIGlmIChpbmZvLmZTaGFkZXJUZXN0KSB7CisgICAgICBpZiAoIWluZm8uZlNoYWRl
clRlc3QoY29tcGlsZWRGU2hhZGVyKSkgeworICAgICAgICB0ZXN0RmFpbGVkKCJbZnJhZ21lbnQg
c2hhZGVyIHRlc3RdICIgKyBwYXNzTXNnKTsKKyAgICAgICAgcmV0dXJuOworICAgICAgfQorICAg
IH0KKyAgICAvL2RlYnVnKGZTaGFkZXIgPT0gbnVsbCA/ICJmYWlsIiA6ICJzdWNjZWVkIik7Cisg
ICAgLy8gQXMgcGVyIEdMU0wgMS4wLjE3IDEwLjI3IHdlIGNhbiBvbmx5IGNoZWNrIGZvciBzdWNj
ZXNzIG9uCisgICAgLy8gY29tcGlsZVNoYWRlciwgbm90IGZhaWx1cmUuCisgICAgaWYgKCFpbmZv
Lmlnbm9yZVJlc3VsdHMgJiYgaW5mby5mU2hhZGVyU3VjY2VzcyAmJiAhY29tcGlsZWRGU2hhZGVy
KSB7CisgICAgICB0ZXN0RmFpbGVkKCJbdW5leHBlY3RlZCBmcmFnbWVudCBzaGFkZXIgY29tcGls
ZSBzdGF0dXNdIChleHBlY3RlZDogIiArCisgICAgICAgICAgICAgICAgaW5mby5mU2hhZGVyU3Vj
Y2VzcyArICIpICIgKyBwYXNzTXNnKTsKKyAgICAgIGlmICghcXVpZXRNb2RlKCkgJiYgZlNoYWRl
cikgeworICAgICAgICBjb25zdCBpbmZvID0gZ2wuZ2V0U2hhZGVySW5mb0xvZyhmU2hhZGVyKTsK
KyAgICAgICAgd3R1LmFkZFNoYWRlclNvdXJjZShjb25zb2xlRGl2LCBmTGFiZWwgKyAiIGluZm8g
bG9nIiwgaW5mbyk7CisgICAgICB9CisgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gU2Fm
ZSB0aGUgc2hhZGVycyBzbyB3ZSB0ZXN0IHNoYXJlZCBzaGFkZXIuCisgICAgaWYgKGNvbXBpbGVk
RlNoYWRlcikgeworICAgICAgZlNoYWRlckRCW2ZTb3VyY2VdID0gY29tcGlsZWRGU2hhZGVyOwor
ICAgIH0gZWxzZSB7CisgICAgICBmU2hhZGVyID0gbnVsbDsKKyAgICB9CisgIH0KKworICBpZiAo
ZGVidWdTaGFkZXJzICYmIGZTaGFkZXIgJiYgIXF1aWV0TW9kZSgpKSB7CisgICAgd3R1LmFkZFNo
YWRlclNvdXJjZShjb25zb2xlRGl2LCBmTGFiZWwgKyAiIHRyYW5zbGF0ZWQgZm9yIGRyaXZlciIs
CisgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1Z1NoYWRlcnMuZ2V0VHJhbnNsYXRlZFNoYWRl
clNvdXJjZShmU2hhZGVyKSk7CisgIH0KKworICBpZiAodlNoYWRlciAmJiBmU2hhZGVyKSB7Cisg
ICAgdmFyIHByb2dyYW0gPSBnbC5jcmVhdGVQcm9ncmFtKCk7CisgICAgZ2wuYXR0YWNoU2hhZGVy
KHByb2dyYW0sIHZTaGFkZXIpOworICAgIGdsLmF0dGFjaFNoYWRlcihwcm9ncmFtLCBmU2hhZGVy
KTsKKworICAgIGlmICh2U291cmNlLmluZGV4T2YoInZQb3NpdGlvbiIpID49IDApIHsKKyAgICAg
IGdsLmJpbmRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCAwLCAidlBvc2l0aW9uIik7CisgICAgfQor
ICAgIGlmICh2U291cmNlLmluZGV4T2YoInRleENvb3JkMCIpID49IDApIHsKKyAgICAgIGdsLmJp
bmRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCAxLCAidGV4Q29vcmQwIik7CisgICAgfQorICAgIGds
LmxpbmtQcm9ncmFtKHByb2dyYW0pOworICAgIHZhciBsaW5rZWQgPSAoZ2wuZ2V0UHJvZ3JhbVBh
cmFtZXRlcihwcm9ncmFtLCBnbC5MSU5LX1NUQVRVUykgIT0gMCk7CisgICAgaWYgKCFsaW5rZWQp
IHsKKyAgICAgIHZhciBlcnJvciA9IGdsLmdldFByb2dyYW1JbmZvTG9nKHByb2dyYW0pOworICAg
ICAgbG9nKCIqKiogRXJyb3IgbGlua2luZyBwcm9ncmFtICciK3Byb2dyYW0rIic6IitlcnJvcik7
CisgICAgfQorICAgIGlmICghaW5mby5pZ25vcmVSZXN1bHRzICYmIGxpbmtlZCAhPSBpbmZvLmxp
bmtTdWNjZXNzKSB7CisgICAgICB0ZXN0RmFpbGVkKCJbdW5leHBlY3RlZCBsaW5rIHN0YXR1c10g
KGV4cGVjdGVkOiAiICsKKyAgICAgICAgICAgICAgICBpbmZvLmxpbmtTdWNjZXNzICsgIikgIiAr
IHBhc3NNc2cpOworICAgICAgcmV0dXJuOworICAgIH0KKyAgfSBlbHNlIHsKKyAgICBpZiAoIWlu
Zm8uaWdub3JlUmVzdWx0cyAmJiBpbmZvLmxpbmtTdWNjZXNzKSB7CisgICAgICB0ZXN0RmFpbGVk
KCJbbGluayBmYWlsZWRdICIgKyBwYXNzTXNnKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisgIH0K
KworICBpZiAocGFyc2VJbnQod3R1LmdldFVybE9wdGlvbnMoKS5kdW1wU2hhZGVycykpIHsKKyAg
ICB2YXIgdkluZm8gPSB7CisgICAgICBzaGFkZXI6IHZTaGFkZXIsCisgICAgICBzaGFkZXJTdWNj
ZXNzOiBpbmZvLnZTaGFkZXJTdWNjZXNzLAorICAgICAgbGFiZWw6IHZMYWJlbCwKKyAgICAgIHNv
dXJjZTogdlNvdXJjZQorICAgIH07CisgICAgdmFyIGZJbmZvID0geworICAgICAgc2hhZGVyOiBm
U2hhZGVyLAorICAgICAgc2hhZGVyU3VjY2VzczogaW5mby5mU2hhZGVyU3VjY2VzcywKKyAgICAg
IGxhYmVsOiBmTGFiZWwsCisgICAgICBzb3VyY2U6IGZTb3VyY2UKKyAgICB9OworICAgIHd0dS5k
dW1wU2hhZGVyc0luZm8oZ2wsIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSwgcGFzc01zZywgdklu
Zm8sIGZJbmZvKTsKKyAgfQorCisgIGlmICghaW5mby5yZW5kZXIpIHsKKyAgICB0ZXN0UGFzc2Vk
KHBhc3NNc2cpOworICAgIHJldHVybjsKKyAgfQorCisgIGdsLnVzZVByb2dyYW0ocHJvZ3JhbSk7
CisKKyAgaWYgKGluZm8udW5pZm9ybXMgIT09IHVuZGVmaW5lZCkgeworICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgaW5mby51bmlmb3Jtcy5sZW5ndGg7ICsraSkgeworICAgICAgdmFyIHVuaWZvcm1M
b2NhdGlvbiA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCBpbmZvLnVuaWZvcm1zW2ld
Lm5hbWUpOworICAgICAgaWYgKHVuaWZvcm1Mb2NhdGlvbiAhPT0gbnVsbCkgeworICAgICAgICBn
bFtpbmZvLnVuaWZvcm1zW2ldLmZ1bmN0aW9uTmFtZV0odW5pZm9ybUxvY2F0aW9uLCBpbmZvLnVu
aWZvcm1zW2ldLnZhbHVlKTsKKyAgICAgICAgZGVidWcoaW5mby51bmlmb3Jtc1tpXS5uYW1lICsg
JyBzZXQgdG8gJyArIGluZm8udW5pZm9ybXNbaV0udmFsdWUpOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgZGVidWcoJ3VuaWZvcm0gJyArIGluZm8udW5pZm9ybXNbaV0ubmFtZSArICcgaGFkIG51
bGwgbG9jYXRpb24gYW5kIHdhcyBub3Qgc2V0Jyk7CisgICAgICB9CisgICAgfQorICB9CisKKyAg
aWYgKGluZm8udW5pZm9ybUJsb2NrcyAhPT0gdW5kZWZpbmVkKSB7CisgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBpbmZvLnVuaWZvcm1CbG9ja3MubGVuZ3RoOyArK2kpIHsKKyAgICAgIHZhciB1bmlm
b3JtQmxvY2tJbmRleCA9IGdsLmdldFVuaWZvcm1CbG9ja0luZGV4KHByb2dyYW0sIGluZm8udW5p
Zm9ybUJsb2Nrc1tpXS5uYW1lKTsKKyAgICAgIGlmICh1bmlmb3JtQmxvY2tJbmRleCAhPT0gbnVs
bCkgeworICAgICAgICBnbC51bmlmb3JtQmxvY2tCaW5kaW5nKHByb2dyYW0sIHVuaWZvcm1CbG9j
a0luZGV4LCBpKTsKKyAgICAgICAgZGVidWcoaW5mby51bmlmb3JtQmxvY2tzW2ldLm5hbWUgKyAn
IChpbmRleCAnICsgdW5pZm9ybUJsb2NrSW5kZXggKyAnKSBib3VuZCB0byBzbG90ICcgKyBpKTsK
KworICAgICAgICB2YXIgdWJvVmFsdWVCdWZmZXIgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgICAg
ICAgZ2wuYmluZEJ1ZmZlckJhc2UoZ2wuVU5JRk9STV9CVUZGRVIsIGksIHVib1ZhbHVlQnVmZmVy
KTsKKyAgICAgICAgZ2wuYnVmZmVyRGF0YShnbC5VTklGT1JNX0JVRkZFUiwgaW5mby51bmlmb3Jt
QmxvY2tzW2ldLnZhbHVlLCBpbmZvLnVuaWZvcm1CbG9ja3NbaV0udXNhZ2UgfHwgZ2wuU1RBVElD
X0RSQVcpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgZGVidWcoJ3VuaWZvcm0gYmxvY2snICsg
aW5mby51bmlmb3JtQmxvY2tzW2ldLm5hbWUgKyAnIGhhZCBudWxsIGJsb2NrIGluZGV4IGFuZCB3
YXMgbm90IHNldCcpOworICAgICAgfQorICAgIH0KKyAgfQorCisgIHd0dS5zZXR1cFVuaXRRdWFk
KGdsKTsKKyAgd3R1LmNsZWFyQW5kRHJhd1VuaXRRdWFkKGdsKTsKKworICB2YXIgZGl2ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgIGRpdi5jbGFzc05hbWUgPSAidGVzdGltYWdl
cyI7CisgIHd0dS5pbnNlcnRJbWFnZShkaXYsICJyZXN1bHQiLCB3dHUubWFrZUltYWdlRnJvbUNh
bnZhcyhnbC5jYW52YXMpKTsKKyAgZGl2LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ2JyJykpOworICBjb25zb2xlRGl2LmFwcGVuZENoaWxkKGRpdik7CisKKyAgdmFyIHRvbGVy
YW5jZSA9IDA7CisgIGlmIChpbmZvLnJlbmRlclRvbGVyYW5jZSAhPT0gdW5kZWZpbmVkKSB7Cisg
ICAgdG9sZXJhbmNlID0gaW5mby5yZW5kZXJUb2xlcmFuY2U7CisgIH0KKyAgaWYgKGluZm8ucmVu
ZGVyQ29sb3IgIT09IHVuZGVmaW5lZCkgeworICAgIHd0dS5jaGVja0NhbnZhcyhnbCwgaW5mby5y
ZW5kZXJDb2xvciwgInNob3VsZCBiZSBleHBlY3RlZCBjb2xvciAiICsgaW5mby5yZW5kZXJDb2xv
ciwgdG9sZXJhbmNlKTsKKyAgfSBlbHNlIHsKKyAgICB3dHUuY2hlY2tDYW52YXMoZ2wsIFswLCAy
NTUsIDAsIDI1NV0sICJzaG91bGQgYmUgZ3JlZW4iLCB0b2xlcmFuY2UpOworICB9Cit9CisKK2Z1
bmN0aW9uIHJ1blRlc3RzKHNoYWRlckluZm9zLCBvcHRfY29udGV4dFZlcnNpb24pIHsKKyAgdmFy
IHd0dSA9IFdlYkdMVGVzdFV0aWxzOworICB2YXIgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnY2FudmFzJyk7CisgIGNhbnZhcy53aWR0aCA9IDMyOworICBjYW52YXMuaGVpZ2h0ID0g
MzI7CisgIHZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoY2FudmFzLCB1bmRlZmluZWQsIG9w
dF9jb250ZXh0VmVyc2lvbik7CisgIGlmICghZ2wpIHsKKyAgICB0ZXN0RmFpbGVkKCJjb250ZXh0
IGRvZXMgbm90IGV4aXN0Iik7CisgICAgZmluaXNoVGVzdCgpOworICAgIHJldHVybjsKKyAgfQor
CisgIGZvciAodmFyIGkgPSAwOyBpIDwgc2hhZGVySW5mb3MubGVuZ3RoOyBpKyspIHsKKyAgICBy
dW5PbmVUZXN0KGdsLCBzaGFkZXJJbmZvc1tpXSk7CisgIH0KKworICBmaW5pc2hUZXN0KCk7Cit9
OworCitmdW5jdGlvbiBnZXRTb3VyY2UoZWxlbSkgeworICB2YXIgc3RyID0gZWxlbS50ZXh0Owor
ICByZXR1cm4gc3RyLnJlcGxhY2UoL15ccyovLCAnJykucmVwbGFjZSgvXHMqJC8sICcnKTsKK30K
KworZnVuY3Rpb24gZ2V0UGFzc01lc3NhZ2Uoc291cmNlKSB7CisgIHZhciBsaW5lcyA9IHNvdXJj
ZS5zcGxpdCgnXG4nKTsKKyAgcmV0dXJuIGxpbmVzWzBdLnN1YnN0cmluZygzKTsKK30KKworZnVu
Y3Rpb24gZ2V0U3VjY2Vzcyhtc2cpIHsKKyAgaWYgKG1zZy5pbmRleE9mKCJmYWlsIikgPj0gMCkg
eworICAgIHJldHVybiBmYWxzZTsKKyAgfQorICBpZiAobXNnLmluZGV4T2YoInN1Y2NlZWQiKSA+
PSAwKSB7CisgICAgcmV0dXJuIHRydWU7CisgIH0KKyAgdGVzdEZhaWxlZCgiYmFkIHRlc3QgZGVz
Y3JpcHRpb24uIE11c3QgaGF2ZSAnZmFpbCcgb3IgJ3N1Y2NlZWQnIik7Cit9CisKK2Z1bmN0aW9u
IHNldHVwVGVzdCgpIHsKKyAgdmFyIGluZm8gPSB7fTsKKworICB2YXIgdlNoYWRlckVsZW0gPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgndmVydGV4U2hhZGVyJyk7CisgIGlmICh2U2hhZGVyRWxl
bSkgeworICAgIGluZm8udlNoYWRlclNvdXJjZSA9IGdldFNvdXJjZSh2U2hhZGVyRWxlbSk7Cisg
ICAgaW5mby5wYXNzTXNnID0gZ2V0UGFzc01lc3NhZ2UoaW5mby52U2hhZGVyU291cmNlKTsKKyAg
ICBpbmZvLnZTaGFkZXJTdWNjZXNzID0gZ2V0U3VjY2VzcyhpbmZvLnBhc3NNc2cpOworICB9CisK
KyAgdmFyIGZTaGFkZXJFbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZyYWdtZW50U2hh
ZGVyJyk7CisgIGlmIChmU2hhZGVyRWxlbSkgeworICAgIGluZm8uZlNoYWRlclNvdXJjZSA9IGdl
dFNvdXJjZShmU2hhZGVyRWxlbSk7CisgICAgaW5mby5wYXNzTXNnID0gZ2V0UGFzc01lc3NhZ2Uo
aW5mby5mU2hhZGVyU291cmNlKTsKKyAgICBpbmZvLmZTaGFkZXJTdWNjZXNzID0gZ2V0U3VjY2Vz
cyhpbmZvLnBhc3NNc2cpOworICB9CisKKyAgLy8gbGlua1N1Y2Nlc3Mgc2hvdWxkIGJlIHRydWUg
aWYgc2hhZGVyIHN1Y2Nlc3MgdmFsdWUgaXMgdW5kZWZpbmVkIG9yIHRydWUgZm9yIGJvdGggc2hh
ZGVycy4KKyAgaW5mby5saW5rU3VjY2VzcyA9IGluZm8udlNoYWRlclN1Y2Nlc3MgIT09IGZhbHNl
ICYmIGluZm8uZlNoYWRlclN1Y2Nlc3MgIT09IGZhbHNlOworCisgIGlmIChpbmZvLnBhc3NNc2cg
PT09IHVuZGVmaW5lZCkgeworICAgIHRlc3RGYWlsZWQoIm5vIHRlc3Qgc2hhZGVyIGZvdW5kLiIp
OworICAgIGZpbmlzaFRlc3QoKTsKKyAgICByZXR1cm47CisgIH0KKworICByZXR1cm4gaW5mbzsK
K30KKworZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgdmFyIGluZm8gPSBzZXR1cFRlc3QoKTsKKyAg
ZGVzY3JpcHRpb24oaW5mby5wYXNzTXNnKTsKKyAgcnVuVGVzdHMoW2luZm9dKTsKK30KKworZnVu
Y3Rpb24gcnVuUmVuZGVyVGVzdHModGVzdHMsIG9wdF9jb250ZXh0VmVyc2lvbikgeworICBmb3Ig
KHZhciBpaSA9IDA7IGlpIDwgdGVzdHMubGVuZ3RoOyArK2lpKSB7CisgICAgdGVzdHNbaWldLnJl
bmRlciA9IHRydWUKKyAgfQorICBydW5UZXN0cyh0ZXN0cywgb3B0X2NvbnRleHRWZXJzaW9uKTsK
K30KKworZnVuY3Rpb24gcnVuUmVuZGVyVGVzdCgpIHsKKyAgdmFyIGluZm8gPSBzZXR1cFRlc3Qo
KTsKKyAgZGVzY3JpcHRpb24oaW5mby5wYXNzTXNnKTsKKyAgcnVuUmVuZGVyVGVzdHMoW2luZm9d
KTsKK30KKworcmV0dXJuIHsKKyAgcnVuVGVzdDogcnVuVGVzdCwKKyAgcnVuVGVzdHM6IHJ1blRl
c3RzLAorICBydW5SZW5kZXJUZXN0OiBydW5SZW5kZXJUZXN0LAorICBydW5SZW5kZXJUZXN0czog
cnVuUmVuZGVyVGVzdHMKK307Cit9KCkpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>