<?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>199093</bug_id>
          
          <creation_ts>2019-06-20 17:24:39 -0700</creation_ts>
          <short_desc>[WHLSL] Import bitwise bool tests</short_desc>
          <delta_ts>2019-07-03 10:16:31 -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>WebGPU</component>
          <version>Other</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>InRadar</keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>195681</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Justin Fan">justin_fan</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>saam</cc>
    
    <cc>tsavell</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1546754</commentid>
    <comment_count>0</comment_count>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2019-06-20 17:24:39 -0700</bug_when>
    <thetext>The following code fails to compile in the checker:

[numthreads(1, 1, 1)]
compute void _compute_main(device bool[] result : register(u0))
{
     result[0] = true;
}

However, it works if int/uint/uchar/float or float4 is substituted for bool (with a matching literal assignment).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1546755</commentid>
    <comment_count>1</comment_count>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2019-06-20 17:28:13 -0700</bug_when>
    <thetext>Neither replacing the &apos;true&apos; literal with &apos;0 == 0&apos; or the body with:

bool b = 0 == 0;
result[0] = b;

were successful past the checker.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1547873</commentid>
    <comment_count>2</comment_count>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2019-06-25 16:31:32 -0700</bug_when>
    <thetext>The following code also fails in the checker:

[numthreads(1, 1, 1)]
compute void _compute_main(device bool[] result : register(u0)) {}

However, replacing &apos;bool&apos; with &apos;int&apos; successfully compiles.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1548188</commentid>
    <comment_count>3</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-06-26 16:27:41 -0700</bug_when>
    <thetext>Have a fix. We&apos;re failing in PODChecker.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1548207</commentid>
    <comment_count>4</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-06-26 16:35:47 -0700</bug_when>
    <thetext>This is on purpose for various reasons. The main one being we aren&apos;t specifying bool&apos;s bit pattern. So we are going to make the harness work around this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1548631</commentid>
    <comment_count>5</comment_count>
      <attachid>373056</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-06-27 15:12:35 -0700</bug_when>
    <thetext>Created attachment 373056
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1549270</commentid>
    <comment_count>6</comment_count>
      <attachid>373248</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-07-01 12:29:15 -0700</bug_when>
    <thetext>Created attachment 373248
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1549671</commentid>
    <comment_count>7</comment_count>
      <attachid>373248</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-07-02 12:06:50 -0700</bug_when>
    <thetext>Comment on attachment 373248
patch

Clearing flags on attachment: 373248

Committed r247067: &lt;https://trac.webkit.org/changeset/247067&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1549672</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-07-02 12:06:52 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1549673</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-07-02 12:07:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/52537914&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1549914</commentid>
    <comment_count>10</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2019-07-03 10:16:31 -0700</bug_when>
    <thetext>Looks like the new test webgpu/whlsl-bitwise-bool-ops.html

added in https://trac.webkit.org/changeset/247067/webkit

is timing out on Mojave Debug WK2

History: https://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.html#showAllRuns=true&amp;tests=webgpu%2Fwhlsl-bitwise-bool-ops.html</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>373056</attachid>
            <date>2019-06-27 15:12:35 -0700</date>
            <delta_ts>2019-07-01 12:29:15 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>11311</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJlcGFyZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xQcmVwYXJlLmNwcAkocmV2aXNpb24gMjQ2ODg5KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xQcmVwYXJlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAsNyAr
NjAsNyBAQCBuYW1lc3BhY2UgV0hMU0wgewogCiBzdGF0aWMgY29uc3RleHByIGJvb2wgZHVtcEFT
VEJlZm9yZUVhY2hQYXNzID0gZmFsc2U7CiBzdGF0aWMgY29uc3RleHByIGJvb2wgZHVtcEFTVEFm
dGVyUGFyc2luZyA9IGZhbHNlOwotc3RhdGljIGNvbnN0ZXhwciBib29sIGR1bXBBU1RBdEVuZCA9
IGZhbHNlOworc3RhdGljIGNvbnN0ZXhwciBib29sIGR1bXBBU1RBdEVuZCA9IHRydWU7CiBzdGF0
aWMgY29uc3RleHByIGJvb2wgYWx3YXlzRHVtcFBhc3NGYWlsdXJlcyA9IGZhbHNlOwogc3RhdGlj
IGNvbnN0ZXhwciBib29sIGR1bXBQYXNzRmFpbHVyZSA9IGR1bXBBU1RCZWZvcmVFYWNoUGFzcyB8
fCBkdW1wQVNUQWZ0ZXJQYXJzaW5nIHx8IGR1bXBBU1RBdEVuZCB8fCBhbHdheXNEdW1wUGFzc0Zh
aWx1cmVzOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TFN0YW5kYXJkTGlicmFyeS50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xTdGFuZGFyZExpYnJhcnkudHh0CShyZXZpc2lvbiAyNDY4ODkp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN0YW5kYXJkTGli
cmFyeS50eHQJKHdvcmtpbmcgY29weSkKQEAgLTc0NCw2ICs3NDQsMTIgQEAgb3BlcmF0b3IgdWlu
dDIodWludCB4LCB1aW50IHkpIHsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCituYXRpdmUgYm9v
bCBvcGVyYXRvcj09KHVjaGFyLCB1Y2hhcik7CituYXRpdmUgYm9vbCBvcGVyYXRvcj09KHVzaG9y
dCwgdXNob3J0KTsKK25hdGl2ZSBib29sIG9wZXJhdG9yPT0oY2hhciwgY2hhcik7CituYXRpdmUg
Ym9vbCBvcGVyYXRvcj09KHNob3J0LCBzaG9ydCk7CituYXRpdmUgYm9vbCBvcGVyYXRvcj09KGhh
bGYsIGhhbGYpOworCiBuYXRpdmUgaW50IG9wZXJhdG9yKyhpbnQsIGludCk7CiBuYXRpdmUgaW50
IG9wZXJhdG9yLShpbnQsIGludCk7CiBuYXRpdmUgaW50IG9wZXJhdG9yKihpbnQsIGludCk7CkBA
IC0xMTcyLDQgKzExNzgsNTIgQEAgbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8
ZmxvYQogbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ0PiwgdWludCBN
aXBMZXZlbCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdo
dCwgZGV2aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKIG5hdGl2ZSB2b2lkIEdldERpbWVuc2lv
bnMoVGV4dHVyZTJEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdp
ZHRoLCB0aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9m
TGV2ZWxzKTsKIAorCituYXRpdmUgYm9vbCBvcGVyYXRvcj09KGJvb2wsIGJvb2wpOworbmF0aXZl
IGJvb2wgb3BlcmF0b3ImJihib29sLCBib29sKTsKK25hdGl2ZSBib29sIG9wZXJhdG9yfHwoYm9v
bCwgYm9vbCk7Citib29sIG9wZXJhdG9yJihib29sIGEsIGJvb2wgYikgeworICAgIHJldHVybiBh
ICYmIGI7Cit9Citib29sIG9wZXJhdG9yfChib29sIGEsIGJvb2wgYikgeworICAgIHJldHVybiBh
IHx8IGI7Cit9Citib29sIG9wZXJhdG9yXihib29sIGEsIGJvb2wgYikgeworICAgIGlmIChhKQor
ICAgICAgICByZXR1cm4gIWI7CisgICAgcmV0dXJuIGI7Cit9Citib29sIG9wZXJhdG9yfihib29s
IHZhbHVlKSB7CisgICAgcmV0dXJuICF2YWx1ZTsKK30KKworb3BlcmF0b3IgYm9vbCh1Y2hhciB4
KSB7CisgICAgcmV0dXJuIHggIT0gMDsKK30KK29wZXJhdG9yIGJvb2wodXNob3J0IHgpIHsKKyAg
ICByZXR1cm4geCAhPSAwOworfQorb3BlcmF0b3IgYm9vbCh1aW50IHgpIHsKKyAgICByZXR1cm4g
eCAhPSAwOworfQorb3BlcmF0b3IgYm9vbChjaGFyIHgpIHsKKyAgICByZXR1cm4geCAhPSAwOwor
fQorb3BlcmF0b3IgYm9vbChzaG9ydCB4KSB7CisgICAgcmV0dXJuIHggIT0gMDsKK30KK29wZXJh
dG9yIGJvb2woaW50IHgpIHsKKyAgICByZXR1cm4geCAhPSAwOworfQorb3BlcmF0b3IgYm9vbCho
YWxmIHgpIHsKKyAgICByZXR1cm4geCAhPSAwOworfQorb3BlcmF0b3IgYm9vbChmbG9hdCB4KSB7
CisgICAgcmV0dXJuIHggIT0gMDsKK30KKworb3BlcmF0b3IgaW50KGJvb2wgeCkgeworICAgIHJl
dHVybiB4ID8gMSA6IDA7Cit9CisKIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTkyODkwIEluc2VydCB0aGUgcmVzdCBvZiB0aGUgc3RhbmRhcmQgbGli
cmFyeSBvbmNlIHRoZSBwYXJzZXIgaXMgZmFzdCBlbm91Z2gKSW5kZXg6IExheW91dFRlc3RzL3dl
YmdwdS93aGxzbC1iaXR3aXNlLWJvb2wtb3BzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsLWJpdHdpc2UtYm9vbC1vcHMuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBM
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wtYml0d2lzZS1ib29sLW9wcy5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTU1IEBACis8IURPQ1RZUEUgaHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1
bm5lciBbIGV4cGVyaW1lbnRhbDpXZWJHUFVFbmFibGVkPXRydWUgXSAtLT4KKzxodG1sPgorPG1l
dGEgY2hhcnNldD11dGYtOD4KKzxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgor
PHRpdGxlPlRlc3QgdGhlIFdITFNMIHRlc3QgaGFybmVzcy48L3RpdGxlPgorPHNjcmlwdCBzcmM9
ImpzL3dobHNsLXRlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2NvbnN0IGVwc2ls
b24gPSAwLjAwMDE7CisKK2NvbnN0IHdobHNsVGVzdHMgPSB7fTsKKword2hsc2xUZXN0cy5ib29s
Qml0QW5kID0gKCkgPT4geworICAgIGNvbnN0IHNvdXJjZSA9IGAKKyAgICAgICAgYm9vbCBmb28o
Ym9vbCBhLCBib29sIGIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhICYgYjsKKyAg
ICAgICAgfQorICAgIGA7CisKKyAgICB3ZWJHUFVQcm9taXNlVGVzdChhc3luYyAoKSA9PiB7Cisg
ICAgICAgIHRyeSB7CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9
IGF3YWl0IGNhbGxCb29sRnVuY3Rpb24oc291cmNlLCAiZm9vIiwgW21ha2VCb29sKHRydWUpLCBt
YWtlQm9vbCh0cnVlKV0pOworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LCB0
cnVlLCAiVGVzdCByZXR1cm5lZCBleHBlY3RlZCB2YWx1ZS4iKTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBjYWxsQm9v
bEZ1bmN0aW9uKHNvdXJjZSwgImZvbyIsIFttYWtlQm9vbChmYWxzZSksIG1ha2VCb29sKGZhbHNl
KV0pOworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LCBmYWxzZSwgIlRlc3Qg
cmV0dXJuZWQgZXhwZWN0ZWQgdmFsdWUuIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihz
b3VyY2UsICJmb28iLCBbbWFrZUJvb2wodHJ1ZSksIG1ha2VCb29sKGZhbHNlKV0pOworICAgICAg
ICAgICAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LCBmYWxzZSwgIlRlc3QgcmV0dXJuZWQgZXhw
ZWN0ZWQgdmFsdWUuIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihzb3VyY2UsICJmb28i
LCBbbWFrZUJvb2woZmFsc2UpLCBtYWtlQm9vbCh0cnVlKV0pOworICAgICAgICAgICAgICAgIGFz
c2VydF9lcXVhbHMocmVzdWx0LCBmYWxzZSwgIlRlc3QgcmV0dXJuZWQgZXhwZWN0ZWQgdmFsdWUu
Iik7CisgICAgICAgICAgICB9CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgaWYg
KCEoZSBpbnN0YW5jZW9mIFdlYkdQVVVuc3VwcG9ydGVkRXJyb3IpKQorICAgICAgICAgICAgICAg
IHRocm93IGU7CisgICAgICAgIH0KKyAgICB9LCAiQm9vbCBiaXQgYW5kIik7Cit9OworCit3aGxz
bFRlc3RzLmJvb2xCaXRPciA9ICgpID0+IHsKKyAgICBjb25zdCBzb3VyY2UgPSBgCisgICAgICAg
IGJvb2wgZm9vKGJvb2wgYSwgYm9vbCBiKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4g
YSB8IGI7CisgICAgICAgIH0KKyAgICBgOworCisgICAgd2ViR1BVUHJvbWlzZVRlc3QoYXN5bmMg
KCkgPT4geworICAgICAgICB0cnkgeworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGxl
dCByZXN1bHQgPSBhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHNvdXJjZSwgImZvbyIsIFttYWtlQm9v
bCh0cnVlKSwgbWFrZUJvb2wodHJ1ZSldKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxz
KHJlc3VsdCwgdHJ1ZSwgIlRlc3QgcmV0dXJuZWQgZXhwZWN0ZWQgdmFsdWUuIik7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gYXdh
aXQgY2FsbEJvb2xGdW5jdGlvbihzb3VyY2UsICJmb28iLCBbbWFrZUJvb2woZmFsc2UpLCBtYWtl
Qm9vbChmYWxzZSldKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwgZmFs
c2UsICJUZXN0IHJldHVybmVkIGV4cGVjdGVkIHZhbHVlLiIpOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IGNhbGxCb29s
RnVuY3Rpb24oc291cmNlLCAiZm9vIiwgW21ha2VCb29sKHRydWUpLCBtYWtlQm9vbChmYWxzZSld
KTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwgdHJ1ZSwgIlRlc3QgcmV0
dXJuZWQgZXhwZWN0ZWQgdmFsdWUuIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihzb3Vy
Y2UsICJmb28iLCBbbWFrZUJvb2woZmFsc2UpLCBtYWtlQm9vbCh0cnVlKV0pOworICAgICAgICAg
ICAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LCB0cnVlLCAiVGVzdCByZXR1cm5lZCBleHBlY3Rl
ZCB2YWx1ZS4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAg
ICAgICBpZiAoIShlIGluc3RhbmNlb2YgV2ViR1BVVW5zdXBwb3J0ZWRFcnJvcikpCisgICAgICAg
ICAgICAgICAgdGhyb3cgZTsKKyAgICAgICAgfQorICAgIH0sICJCb29sIGJpdCBvciIpOworfTsK
Kword2hsc2xUZXN0cy5ib29sQml0Tm90ID0gKCkgPT4geworICAgIGNvbnN0IHNvdXJjZSA9IGAK
KyAgICAgICAgYm9vbCBmb28oYm9vbCBhKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4g
fmE7CisgICAgICAgIH0KKyAgICBgOworCisgICAgd2ViR1BVUHJvbWlzZVRlc3QoYXN5bmMgKCkg
PT4geworICAgICAgICB0cnkgeworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGxldCBy
ZXN1bHQgPSBhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHNvdXJjZSwgImZvbyIsIFttYWtlQm9vbCh0
cnVlKV0pOworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LCBmYWxzZSwgIlRl
c3QgcmV0dXJuZWQgZXhwZWN0ZWQgdmFsdWUuIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgY2FsbEJvb2xGdW5jdGlv
bihzb3VyY2UsICJmb28iLCBbbWFrZUJvb2woZmFsc2UpXSk7CisgICAgICAgICAgICAgICAgYXNz
ZXJ0X2VxdWFscyhyZXN1bHQsIHRydWUsICJUZXN0IHJldHVybmVkIGV4cGVjdGVkIHZhbHVlLiIp
OworICAgICAgICAgICAgfQorICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIGlmICgh
KGUgaW5zdGFuY2VvZiBXZWJHUFVVbnN1cHBvcnRlZEVycm9yKSkKKyAgICAgICAgICAgICAgICB0
aHJvdyBlOworICAgICAgICB9CisgICAgfSwgIkJvb2wgYml0IG5vdCIpOworfTsKKworZnVuY3Rp
b24gcnVuVGVzdHMob2JqKSB7CisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCAo
KSA9PiB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBmb3IgKGNvbnN0IG5hbWUgaW4gb2Jq
KSB7CisgICAgICAgICAgICAgICAgaWYgKCFuYW1lLnN0YXJ0c1dpdGgoIl8iKSkKKyAgICAgICAg
ICAgICAgICAgICAgb2JqW25hbWVdKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gY2F0Y2gg
KGUpIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdGhy
b3cgZTsKKyAgICAgICAgfQorICAgIH0pOworfQorCitydW5UZXN0cyh3aGxzbFRlc3RzKTsKKwor
Y29uc3QgY2hlY2tCb29scyA9IChtc2cgPSAiUmV0dXJuIGFuIGV4cGVjdGVkIGJvb2wgdmFsdWUu
IiwgYm9keSwgYXJnVmFsdWVzID0gW10sIGV4cGVjdGVkID0gdHJ1ZSkgPT4geworICAgIC8vIEZJ
WE1FIChodHRwczovL3dlYmtpdC5vcmcvYi8xOTkwOTMpOiBCb29sW10gZnVuY3Rpb25zIGRvbid0
IGNvbXBpbGUsIHNvIG5vLW9wIGZvciBub3cuCisgICAgcmV0dXJuOworCisgICAgY29uc3QgW3Ny
YywgbmFtZSwgdmFsdWVzXSA9IGFwcGVuZFNjYWxhckZ1bmN0aW9uVG9Tb3VyY2UoIiIsICJib29s
IiwgYm9keSwgYXJnVmFsdWVzKTsgCisKKyAgICB3ZWJHUFVQcm9taXNlVGVzdChhc3luYyAoKSA9
PiB7CisgICAgICAgIHJldHVybiBjYWxsQm9vbEZ1bmN0aW9uKHNyYywgbmFtZSwgdmFsdWVzKS50
aGVuKHJlc3VsdCA9PiB7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwgZXhwZWN0
ZWQsICJUZXN0IHJldHVybmVkIGV4cGVjdGVkIHZhbHVlLiIpOworICAgICAgICB9LCBlID0+IHsK
KyAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBXZWJHUFVVbnN1cHBvcnRlZEVycm9yKSkK
KyAgICAgICAgICAgICAgICB0aHJvdyBlOworICAgICAgICB9KTsKKyAgICB9LCBtc2cpOworfTsK
KworY29uc3Qgd2ViR1BVUHJvbWlzZVRlc3QgPSAodGVzdEZ1bmMsIG1zZykgPT4geworICAgIHBy
b21pc2VfdGVzdChhc3luYyAoKSA9PiB7IAorICAgICAgICByZXR1cm4gdGVzdEZ1bmMoKS5jYXRj
aChlID0+IHsKKyAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIFdlYkdQVVVuc3VwcG9ydGVkRXJy
b3IpKQorICAgICAgICAgICAgdGhyb3cgZTsKKyAgICAgICAgfSk7CisgICAgfSwgbXNnKTsKK30K
Kzwvc2NyaXB0PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsLWNvbXB1
dGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wtY29tcHV0ZS5o
dG1sCShyZXZpc2lvbiAyNDY4ODkpCisrKyBMYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wtY29tcHV0
ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC03LDYgKzcsMTEgQEAKIDxib2R5PgogPHNjcmlwdD4K
IGNvbnN0IHNoYWRlclNvdXJjZSA9IGAKK2Jvb2wgZm9vKGludCBhLCBpbnQgYikKK3sKKyAgICBy
ZXR1cm4gYm9vbChhKSAmIGJvb2woYik7Cit9CisKIFtudW10aHJlYWRzKDIsIDEsIDEpXQogY29t
cHV0ZSB2b2lkIGNvbXB1dGVTaGFkZXIoZGV2aWNlIGZsb2F0W10gYnVmZmVyIDogcmVnaXN0ZXIo
dTApLCBmbG9hdDMgdGhyZWFkSUQgOiBTVl9EaXNwYXRjaFRocmVhZElEKSB7CiAgICAgYnVmZmVy
W3VpbnQodGhyZWFkSUQueCldID0gYnVmZmVyW3VpbnQodGhyZWFkSUQueCldICogMi4wOwpJbmRl
eDogTGF5b3V0VGVzdHMvd2ViZ3B1L2pzL3dobHNsLXRlc3QtaGFybmVzcy5qcwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy93ZWJncHUvanMvd2hsc2wtdGVzdC1oYXJuZXNzLmpzCShyZXZpc2lv
biAyNDY4ODkpCisrKyBMYXlvdXRUZXN0cy93ZWJncHUvanMvd2hsc2wtdGVzdC1oYXJuZXNzLmpz
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBAIGZ1bmN0aW9uIGNvbnZlcnRUeXBlVG9B
cnJheVR5cGUodHlwZSkKIHsKICAgICBzd2l0Y2godHlwZSkgewogICAgICAgICBjYXNlIFR5cGVz
LkJPT0w6Ci0gICAgICAgICAgICByZXR1cm4gVWludDhBcnJheTsKKyAgICAgICAgICAgIHJldHVy
biBJbnQzMkFycmF5OwogICAgICAgICBjYXNlIFR5cGVzLklOVDoKICAgICAgICAgICAgIHJldHVy
biBJbnQzMkFycmF5OwogICAgICAgICBjYXNlIFR5cGVzLlVDSEFSOgpAQCAtNjEsNiArNjEsMjcg
QEAgZnVuY3Rpb24gY29udmVydFR5cGVUb1dITFNMVHlwZSh0eXBlKQogICAgIH0KIH0KIAorZnVu
Y3Rpb24gd2hsc2xBcmd1bWVudFR5cGUodHlwZSkKK3sKKyAgICBpZiAodHlwZSA9PT0gVHlwZXMu
Qk9PTCkKKyAgICAgICAgcmV0dXJuICJpbnQiOworICAgIHJldHVybiBjb252ZXJ0VHlwZVRvV0hM
U0xUeXBlKHR5cGUpOworfQorCitmdW5jdGlvbiBjb252ZXJ0VG9PdXRwdXRUeXBlKGNvZGUsIHR5
cGUpCit7CisgICAgaWYgKHR5cGUgIT09IFR5cGVzLkJPT0wpCisgICAgICAgIHJldHVybiBjb2Rl
OworICAgIHJldHVybiBgaW50KCR7Y29kZX0pYDsKK30KKworZnVuY3Rpb24gY29udmVydFRvSW5w
dXRUeXBlKGNvZGUsIHR5cGUpCit7CisgICAgaWYgKHR5cGUgIT09IFR5cGVzLkJPT0wpCisgICAg
ICAgIHJldHVybiBjb2RlOworICAgIHJldHVybiBgYm9vbCgke2NvZGV9KWA7Cit9CisKIC8qIEhh
cm5lc3MgQ2xhc3NlcyAqLwogCiBjbGFzcyBXZWJHUFVVbnN1cHBvcnRlZEVycm9yIGV4dGVuZHMg
RXJyb3IgewpAQCAtMTk2LDEyICsyMTcsMTQgQEAgdXNpbmcgbmFtZXNwYWNlIG1ldGFsOwogCiAg
ICAgICAgIGxldCBlbnRyeVBvaW50Q29kZTsKICAgICAgICAgaWYgKHRoaXMuX2lzV0hMU0wpIHsK
LSAgICAgICAgICAgIGFyZ3NEZWNsYXJhdGlvbnMudW5zaGlmdChgZGV2aWNlICR7Y29udmVydFR5
cGVUb1dITFNMVHlwZSh0eXBlKX1bXSByZXN1bHQgOiByZWdpc3Rlcih1MClgKTsKKyAgICAgICAg
ICAgIGFyZ3NEZWNsYXJhdGlvbnMudW5zaGlmdChgZGV2aWNlICR7d2hsc2xBcmd1bWVudFR5cGUo
dHlwZSl9W10gcmVzdWx0IDogcmVnaXN0ZXIodTApYCk7CisgICAgICAgICAgICBsZXQgY2FsbENv
ZGUgPSBgJHtuYW1lfSgke2Z1bmN0aW9uQ2FsbEFyZ3Muam9pbigiLCAiKX0pYDsKKyAgICAgICAg
ICAgIGNhbGxDb2RlID0gY29udmVydFRvT3V0cHV0VHlwZShjYWxsQ29kZSwgdHlwZSk7CiAgICAg
ICAgICAgICBlbnRyeVBvaW50Q29kZSA9IGAKIFtudW10aHJlYWRzKDEsIDEsIDEpXQogY29tcHV0
ZSB2b2lkIF9jb21wdXRlX21haW4oJHthcmdzRGVjbGFyYXRpb25zLmpvaW4oIiwgIil9KQogewot
ICAgIHJlc3VsdFswXSA9ICR7bmFtZX0oJHtmdW5jdGlvbkNhbGxBcmdzLmpvaW4oIiwgIil9KTsK
KyAgICByZXN1bHRbMF0gPSAke2NhbGxDb2RlfTsKIH0KIGA7CiAgICAgICAgIH0gZWxzZSB7CkBA
IC0yMTgsNiArMjQxLDcgQEAga2VybmVsIHZvaWQgX2NvbXB1dGVfbWFpbihkZXZpY2UgX2NvbXB1
dAogYDsKICAgICAgICAgfQogICAgICAgICBjb25zdCBjb2RlID0gdGhpcy5fc2hhZGVySGVhZGVy
ICsgZnVuY3Rpb25zICsgZW50cnlQb2ludENvZGU7CisgICAgICAgIGNvbnNvbGUubG9nKGNvZGUp
OwogICAgICAgICB0aGlzLl9jYWxsRnVuY3Rpb24oY29kZSwgYXJnc0xheW91dHMsIGFyZ3NSZXNv
dXJjZUJpbmRpbmdzKTsKICAgICAKICAgICAgICAgdHJ5IHsKQEAgLTMwMSw4ICszMjUsOCBAQCBr
ZXJuZWwgdm9pZCBfY29tcHV0ZV9tYWluKGRldmljZSBfY29tcHV0CiAgICAgICAgIGZvciAobGV0
IGkgPSAxOyBpIDw9IGFyZ3MubGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIGNvbnN0IGFyZyA9
IGFyZ3NbaSAtIDFdOwogICAgICAgICAgICAgaWYgKHRoaXMuX2lzV0hMU0wpIHsKLSAgICAgICAg
ICAgICAgICBhcmdzRGVjbGFyYXRpb25zLnB1c2goYGRldmljZSAke2NvbnZlcnRUeXBlVG9XSExT
TFR5cGUoYXJnLnR5cGUpfVtdIGFyZyR7aX0gOiByZWdpc3Rlcih1JHtpfSlgKTsKLSAgICAgICAg
ICAgICAgICBmdW5jdGlvbkNhbGxBcmdzLnB1c2goYGFyZyR7aX1gICsgKGFyZy5pc0J1ZmZlciA/
ICIiIDogIlswXSIpKTsKKyAgICAgICAgICAgICAgICBhcmdzRGVjbGFyYXRpb25zLnB1c2goYGRl
dmljZSAke3dobHNsQXJndW1lbnRUeXBlKGFyZy50eXBlKX1bXSBhcmcke2l9IDogcmVnaXN0ZXIo
dSR7aX0pYCk7CisgICAgICAgICAgICAgICAgZnVuY3Rpb25DYWxsQXJncy5wdXNoKGNvbnZlcnRU
b0lucHV0VHlwZShgYXJnJHtpfWAgKyAoYXJnLmlzQnVmZmVyID8gIiIgOiAiWzBdIiksIGFyZy50
eXBlKSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGFyZ3NEZWNsYXJh
dGlvbnMucHVzaChgZGV2aWNlICR7Y29udmVydFR5cGVUb1dITFNMVHlwZShhcmcudHlwZSl9KiBh
cmcke2l9IFtbaWQoJHtpfSldXTtgKTsKICAgICAgICAgICAgICAgICBmdW5jdGlvbkNhbGxBcmdz
LnB1c2goKGFyZy5pc0J1ZmZlciA/ICIiIDogIioiKSArIGBhcmdzLmFyZyR7aX1gKTsKQEAgLTQ1
Niw0ICs0ODAsNCBAQCBhc3luYyBmdW5jdGlvbiBjYWxsRmxvYXQ0RnVuY3Rpb24oZnVuY3RpCiBm
dW5jdGlvbiBjYWxsVm9pZEZ1bmN0aW9uKGZ1bmN0aW9ucywgbmFtZSwgYXJncykKIHsKICAgICBo
YXJuZXNzLmNhbGxWb2lkRnVuY3Rpb24oZnVuY3Rpb25zLCBuYW1lLCBhcmdzKTsKLX0KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>373248</attachid>
            <date>2019-07-01 12:29:15 -0700</date>
            <delta_ts>2019-07-02 12:06:50 -0700</delta_ts>
            <desc>patch</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>17291</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0NzAxMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE5LTA3LTAxICBTYWFtIEJh
cmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAgIFtXSExTTF0gSW1wb3J0IGJpdHdp
c2UgYm9vbCB0ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTk5MDkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkIHN0YW5kYXJkIGxpYnJhcnkgZnVuY3Rpb25zIGZvcjoKKyAgICAgICAgLSBib29s
IGJpdCBvcHMKKyAgICAgICAgLSBjb252ZXJ0aW5nIGZyb20gYm9vbCB0byBudW1iZXIKKyAgICAg
ICAgLSBjb252ZXJ0aW5nIGZyb20gbnVtYmVyIHRvIGJvb2wKKworICAgICAgICBUZXN0OiB3ZWJn
cHUvd2hsc2wtYml0d2lzZS1ib29sLW9wcy5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTFN0YW5kYXJkTGlicmFyeS50eHQ6CisKIDIwMTktMDctMDEgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgaU9TOiBSRUdSRVNTSU9O
KGFzeW5jIHNjcm9sbCk6IENhcmV0IGRvZXNuJ3Qgc2Nyb2xsIHdoZW4gc2Nyb2xsaW5nIHRleHRh
cmVhCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN0YW5k
YXJkTGlicmFyeS50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xTdGFuZGFyZExpYnJhcnkudHh0CShyZXZpc2lvbiAyNDY4ODkpCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN0YW5kYXJkTGlicmFyeS50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTc0NCw2ICs3NDQsMTIgQEAgb3BlcmF0b3IgdWludDIodWlu
dCB4LCB1aW50IHkpIHsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCituYXRpdmUgYm9vbCBvcGVy
YXRvcj09KHVjaGFyLCB1Y2hhcik7CituYXRpdmUgYm9vbCBvcGVyYXRvcj09KHVzaG9ydCwgdXNo
b3J0KTsKK25hdGl2ZSBib29sIG9wZXJhdG9yPT0oY2hhciwgY2hhcik7CituYXRpdmUgYm9vbCBv
cGVyYXRvcj09KHNob3J0LCBzaG9ydCk7CituYXRpdmUgYm9vbCBvcGVyYXRvcj09KGhhbGYsIGhh
bGYpOworCiBuYXRpdmUgaW50IG9wZXJhdG9yKyhpbnQsIGludCk7CiBuYXRpdmUgaW50IG9wZXJh
dG9yLShpbnQsIGludCk7CiBuYXRpdmUgaW50IG9wZXJhdG9yKihpbnQsIGludCk7CkBAIC0xMTcy
LDQgKzExNzgsNTIgQEAgbmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYQog
bmF0aXZlIHZvaWQgR2V0RGltZW5zaW9ucyhUZXh0dXJlMkQ8ZmxvYXQ0PiwgdWludCBNaXBMZXZl
bCwgdGhyZWFkZ3JvdXAgdWludCogV2lkdGgsIHRocmVhZGdyb3VwIHVpbnQqIEhlaWdodCwgZGV2
aWNlIHVpbnQqIE51bWJlck9mTGV2ZWxzKTsKIG5hdGl2ZSB2b2lkIEdldERpbWVuc2lvbnMoVGV4
dHVyZTJEPGZsb2F0ND4sIHVpbnQgTWlwTGV2ZWwsIHRocmVhZGdyb3VwIHVpbnQqIFdpZHRoLCB0
aHJlYWRncm91cCB1aW50KiBIZWlnaHQsIHRocmVhZGdyb3VwIHVpbnQqIE51bWJlck9mTGV2ZWxz
KTsKIAorCituYXRpdmUgYm9vbCBvcGVyYXRvcj09KGJvb2wsIGJvb2wpOworbmF0aXZlIGJvb2wg
b3BlcmF0b3ImJihib29sLCBib29sKTsKK25hdGl2ZSBib29sIG9wZXJhdG9yfHwoYm9vbCwgYm9v
bCk7Citib29sIG9wZXJhdG9yJihib29sIGEsIGJvb2wgYikgeworICAgIHJldHVybiBhICYmIGI7
Cit9Citib29sIG9wZXJhdG9yfChib29sIGEsIGJvb2wgYikgeworICAgIHJldHVybiBhIHx8IGI7
Cit9Citib29sIG9wZXJhdG9yXihib29sIGEsIGJvb2wgYikgeworICAgIGlmIChhKQorICAgICAg
ICByZXR1cm4gIWI7CisgICAgcmV0dXJuIGI7Cit9Citib29sIG9wZXJhdG9yfihib29sIHZhbHVl
KSB7CisgICAgcmV0dXJuICF2YWx1ZTsKK30KKworb3BlcmF0b3IgYm9vbCh1Y2hhciB4KSB7Cisg
ICAgcmV0dXJuIHggIT0gMDsKK30KK29wZXJhdG9yIGJvb2wodXNob3J0IHgpIHsKKyAgICByZXR1
cm4geCAhPSAwOworfQorb3BlcmF0b3IgYm9vbCh1aW50IHgpIHsKKyAgICByZXR1cm4geCAhPSAw
OworfQorb3BlcmF0b3IgYm9vbChjaGFyIHgpIHsKKyAgICByZXR1cm4geCAhPSAwOworfQorb3Bl
cmF0b3IgYm9vbChzaG9ydCB4KSB7CisgICAgcmV0dXJuIHggIT0gMDsKK30KK29wZXJhdG9yIGJv
b2woaW50IHgpIHsKKyAgICByZXR1cm4geCAhPSAwOworfQorb3BlcmF0b3IgYm9vbChoYWxmIHgp
IHsKKyAgICByZXR1cm4geCAhPSAwOworfQorb3BlcmF0b3IgYm9vbChmbG9hdCB4KSB7CisgICAg
cmV0dXJuIHggIT0gMDsKK30KKworb3BlcmF0b3IgaW50KGJvb2wgeCkgeworICAgIHJldHVybiB4
ID8gMSA6IDA7Cit9CisKIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTkyODkwIEluc2VydCB0aGUgcmVzdCBvZiB0aGUgc3RhbmRhcmQgbGlicmFyeSBv
bmNlIHRoZSBwYXJzZXIgaXMgZmFzdCBlbm91Z2gKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0Njg5MSkK
KysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBA
CisyMDE5LTA3LTAxICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IFtXSExTTF0gSW1wb3J0IGJpdHdpc2UgYm9vbCB0ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5MDkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBtYWtlcyBpdCBzbyB0aGF0IHdl
IGNhbiBtYXJrIGJvb2xzIGFzIGlucHV0IGFuZCBvdXRwdXQgdHlwZXMgaW4gdGhlCisgICAgICAg
IFdITFNMIGhhcm5lc3MuIFNpbmNlIGJvb2wgaXMgbm90IHNvbWV0aGluZyBXSExTTCBpdHNlbGYg
YWxsb3dzIGFzIGFuIGVudHJ5cG9pbnQKKyAgICAgICAgaW5wdXQvb3V0cHV0IHR5cGUgKGJlY2F1
c2Ugd2UgZG9uJ3Qgc3BlY2lmeSBpdHMgYml0IHBhdHRlcm4pLCB3ZSBjb252ZXJ0IGJldHdlZW4K
KyAgICAgICAgYm9vbCBhbmQgaW50IGluIHRoZSBpbnB1dCBhbmQgb3V0cHV0IG9mIHRoZSBmdW5j
dGlvbi4gRm9yIG5vdywgIHdlIGRvbid0IHN1cHBvcnQKKyAgICAgICAgYSBidWZmZXIgb2YgYm9v
bHMgZm9yIHRoZSBpbnB1dCB0eXBlIGFzIGEgc2ltcGxpZmljYXRpb24sIHNvIHdlIGRvbid0IGhh
dmUgdG8gd29ycnkKKyAgICAgICAgYWJvdXQgZHluYW1pY2FsbHkgY29udmVydGluZyBhbiBpbnQg
YnVmZmVyIHRvIGEgYm9vbCBidWZmZXIuIFdlIGNvdWxkIGFkZCB0aGlzCisgICAgICAgIGluIHRo
ZSBmdXR1cmUgaWYgd2UgZm91bmQgaXQgaGVscGZ1bCwgYnV0IHdlIGRvbid0IGhhdmUgYSBzdHJv
bmcgcmVhc29uIGZvciBzdXBwb3J0aW5nCisgICAgICAgIGl0IHJpZ2h0IG5vdy4KKyAgICAgICAg
CisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBzdGFydHMgdGhlIHByb2Nlc3Mgb2YgaW1wb3J0aW5n
IHRoZSBXSExTTCB0ZXN0IHN1aXRlIGJ5IGltcG9ydGluZyBib29sCisgICAgICAgIGJpdCBvcCB0
ZXN0cy4KKworICAgICAgICAqIHdlYmdwdS9qcy93aGxzbC10ZXN0LWhhcm5lc3MuanM6CisgICAg
ICAgIChjb252ZXJ0VHlwZVRvQXJyYXlUeXBlKToKKyAgICAgICAgKHdobHNsQXJndW1lbnRUeXBl
KToKKyAgICAgICAgKGNvbnZlcnRUb1dITFNMT3V0cHV0VHlwZSk6CisgICAgICAgIChjb252ZXJ0
VG9XSExTTElucHV0VHlwZSk6CisgICAgICAgIChEYXRhKToKKyAgICAgICAgKEhhcm5lc3MucHJv
dG90eXBlLmdldCBpc1dITFNMKToKKyAgICAgICAgKEhhcm5lc3MucHJvdG90eXBlLmFzeW5jLmNh
bGxUeXBlZEZ1bmN0aW9uKToKKyAgICAgICAgKEhhcm5lc3MucHJvdG90eXBlLl9zZXRVcEFyZ3Vt
ZW50cyk6CisgICAgICAgIChjYWxsVm9pZEZ1bmN0aW9uKToKKyAgICAgICAgKiB3ZWJncHUvd2hs
c2wtYml0d2lzZS1ib29sLW9wcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYmdw
dS93aGxzbC1iaXR3aXNlLWJvb2wtb3BzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYmdwdS93
aGxzbC10ZXN0LWhhcm5lc3MtdGVzdC1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViZ3B1L3do
bHNsLXRlc3QtaGFybmVzcy10ZXN0Lmh0bWw6CisKIDIwMTktMDYtMjcgIFNhYW0gQmFyYXRpICA8
c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gU2tpcCBXZWJHUFUgdGVz
dHMgb24gSGlnaCBTaWVycmEgc2luY2UgV2ViR1BVIGlzIGRpc2FibGVkLgpJbmRleDogTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsLWJpdHdpc2UtYm9vbC1vcHMtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL3dlYmdwdS93aGxzbC1iaXR3aXNlLWJvb2wtb3BzLWV4cGVjdGVk
LnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wtYml0d2lzZS1i
b29sLW9wcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2IEBACisKK1BB
U1MgQm9vbCBiaXQgYW5kIAorUEFTUyBCb29sIGJpdCBvciAKK1BBU1MgQm9vbCBiaXQgb3IgCitQ
QVNTIEJvb2wgYml0IG5vdCAKKwpJbmRleDogTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsLWJpdHdp
c2UtYm9vbC1vcHMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wt
Yml0d2lzZS1ib29sLW9wcy5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL3dlYmdw
dS93aGxzbC1iaXR3aXNlLWJvb2wtb3BzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwx
NzUgQEAKKzwhRE9DVFlQRSBodG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZXhwZXJpbWVu
dGFsOldlYkdQVUVuYWJsZWQ9dHJ1ZSBdIC0tPgorPGh0bWw+Cis8bWV0YSBjaGFyc2V0PXV0Zi04
PgorPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+Cis8dGl0bGU+VGVzdCB0aGUg
V0hMU0wgdGVzdCBoYXJuZXNzLjwvdGl0bGU+Cis8c2NyaXB0IHNyYz0ianMvd2hsc2wtdGVzdC1o
YXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5l
c3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3Jl
cG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorY29uc3QgZXBzaWxvbiA9IDAuMDAwMTsKKwor
Y29uc3Qgd2hsc2xUZXN0cyA9IHt9OworCit3aGxzbFRlc3RzLmJvb2xCaXRBbmQgPSAoKSA9PiB7
CisgICAgY29uc3Qgc291cmNlID0gYAorICAgICAgICBib29sIGZvbyhib29sIGEsIGJvb2wgYikK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGEgJiBiOworICAgICAgICB9CisgICAgYDsK
KworICAgIHdlYkdQVVByb21pc2VUZXN0KGFzeW5jICgpID0+IHsKKyAgICAgICAgdHJ5IHsKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgY2FsbEJvb2xG
dW5jdGlvbihzb3VyY2UsICJmb28iLCBbbWFrZUJvb2wodHJ1ZSksIG1ha2VCb29sKHRydWUpXSk7
CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQsIHRydWUsICJUZXN0IHJldHVy
bmVkIGV4cGVjdGVkIHZhbHVlLiIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IGNhbGxCb29sRnVuY3Rpb24oc291cmNl
LCAiZm9vIiwgW21ha2VCb29sKGZhbHNlKSwgbWFrZUJvb2woZmFsc2UpXSk7CisgICAgICAgICAg
ICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQsIGZhbHNlLCAiVGVzdCByZXR1cm5lZCBleHBlY3Rl
ZCB2YWx1ZS4iKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIGxldCByZXN1bHQgPSBhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHNvdXJjZSwgImZvbyIsIFtt
YWtlQm9vbCh0cnVlKSwgbWFrZUJvb2woZmFsc2UpXSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0
X2VxdWFscyhyZXN1bHQsIGZhbHNlLCAiVGVzdCByZXR1cm5lZCBleHBlY3RlZCB2YWx1ZS4iKTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGxldCByZXN1
bHQgPSBhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHNvdXJjZSwgImZvbyIsIFttYWtlQm9vbChmYWxz
ZSksIG1ha2VCb29sKHRydWUpXSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1
bHQsIGZhbHNlLCAiVGVzdCByZXR1cm5lZCBleHBlY3RlZCB2YWx1ZS4iKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2Yg
V2ViR1BVVW5zdXBwb3J0ZWRFcnJvcikpCisgICAgICAgICAgICAgICAgdGhyb3cgZTsKKyAgICAg
ICAgfQorICAgIH0sICJCb29sIGJpdCBhbmQiKTsKK307CisKK3dobHNsVGVzdHMuYm9vbEJpdE9y
ID0gKCkgPT4geworICAgIGNvbnN0IHNvdXJjZSA9IGAKKyAgICAgICAgYm9vbCBmb28oYm9vbCBh
LCBib29sIGIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhIHwgYjsKKyAgICAgICAg
fQorICAgIGA7CisKKyAgICB3ZWJHUFVQcm9taXNlVGVzdChhc3luYyAoKSA9PiB7CisgICAgICAg
IHRyeSB7CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0
IGNhbGxCb29sRnVuY3Rpb24oc291cmNlLCAiZm9vIiwgW21ha2VCb29sKHRydWUpLCBtYWtlQm9v
bCh0cnVlKV0pOworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LCB0cnVlLCAi
VGVzdCByZXR1cm5lZCBleHBlY3RlZCB2YWx1ZS4iKTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBjYWxsQm9vbEZ1bmN0
aW9uKHNvdXJjZSwgImZvbyIsIFttYWtlQm9vbChmYWxzZSksIG1ha2VCb29sKGZhbHNlKV0pOwor
ICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LCBmYWxzZSwgIlRlc3QgcmV0dXJu
ZWQgZXhwZWN0ZWQgdmFsdWUuIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihzb3VyY2Us
ICJmb28iLCBbbWFrZUJvb2wodHJ1ZSksIG1ha2VCb29sKGZhbHNlKV0pOworICAgICAgICAgICAg
ICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LCB0cnVlLCAiVGVzdCByZXR1cm5lZCBleHBlY3RlZCB2
YWx1ZS4iKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IGxldCByZXN1bHQgPSBhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHNvdXJjZSwgImZvbyIsIFttYWtl
Qm9vbChmYWxzZSksIG1ha2VCb29sKHRydWUpXSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2Vx
dWFscyhyZXN1bHQsIHRydWUsICJUZXN0IHJldHVybmVkIGV4cGVjdGVkIHZhbHVlLiIpOworICAg
ICAgICAgICAgfQorICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIGlmICghKGUgaW5z
dGFuY2VvZiBXZWJHUFVVbnN1cHBvcnRlZEVycm9yKSkKKyAgICAgICAgICAgICAgICB0aHJvdyBl
OworICAgICAgICB9CisgICAgfSwgIkJvb2wgYml0IG9yIik7Cit9OworCit3aGxzbFRlc3RzLmJv
b2xCaXRYb3IgPSAoKSA9PiB7CisgICAgY29uc3Qgc291cmNlID0gYAorICAgICAgICBib29sIGZv
byhib29sIGEsIGJvb2wgYikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGEgXiBiOwor
ICAgICAgICB9CisgICAgYDsKKworICAgIHdlYkdQVVByb21pc2VUZXN0KGFzeW5jICgpID0+IHsK
KyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBsZXQgcmVzdWx0
ID0gYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihzb3VyY2UsICJmb28iLCBbbWFrZUJvb2wodHJ1ZSks
IG1ha2VCb29sKHRydWUpXSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQs
IGZhbHNlLCAiVGVzdCByZXR1cm5lZCBleHBlY3RlZCB2YWx1ZS4iKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBjYWxs
Qm9vbEZ1bmN0aW9uKHNvdXJjZSwgImZvbyIsIFttYWtlQm9vbChmYWxzZSksIG1ha2VCb29sKGZh
bHNlKV0pOworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LCBmYWxzZSwgIlRl
c3QgcmV0dXJuZWQgZXhwZWN0ZWQgdmFsdWUuIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgY2FsbEJvb2xGdW5jdGlv
bihzb3VyY2UsICJmb28iLCBbbWFrZUJvb2wodHJ1ZSksIG1ha2VCb29sKGZhbHNlKV0pOworICAg
ICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LCB0cnVlLCAiVGVzdCByZXR1cm5lZCBl
eHBlY3RlZCB2YWx1ZS4iKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHNvdXJjZSwgImZv
byIsIFttYWtlQm9vbChmYWxzZSksIG1ha2VCb29sKHRydWUpXSk7CisgICAgICAgICAgICAgICAg
YXNzZXJ0X2VxdWFscyhyZXN1bHQsIHRydWUsICJUZXN0IHJldHVybmVkIGV4cGVjdGVkIHZhbHVl
LiIpOworICAgICAgICAgICAgfQorICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIGlm
ICghKGUgaW5zdGFuY2VvZiBXZWJHUFVVbnN1cHBvcnRlZEVycm9yKSkKKyAgICAgICAgICAgICAg
ICB0aHJvdyBlOworICAgICAgICB9CisgICAgfSwgIkJvb2wgYml0IG9yIik7Cit9OworCit3aGxz
bFRlc3RzLmJvb2xCaXROb3QgPSAoKSA9PiB7CisgICAgY29uc3Qgc291cmNlID0gYAorICAgICAg
ICBib29sIGZvbyhib29sIGEpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiB+YTsKKyAg
ICAgICAgfQorICAgIGA7CisKKyAgICB3ZWJHUFVQcm9taXNlVGVzdChhc3luYyAoKSA9PiB7Cisg
ICAgICAgIHRyeSB7CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9
IGF3YWl0IGNhbGxCb29sRnVuY3Rpb24oc291cmNlLCAiZm9vIiwgW21ha2VCb29sKHRydWUpXSk7
CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQsIGZhbHNlLCAiVGVzdCByZXR1
cm5lZCBleHBlY3RlZCB2YWx1ZS4iKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHNvdXJj
ZSwgImZvbyIsIFttYWtlQm9vbChmYWxzZSldKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1
YWxzKHJlc3VsdCwgdHJ1ZSwgIlRlc3QgcmV0dXJuZWQgZXhwZWN0ZWQgdmFsdWUuIik7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgaWYgKCEoZSBpbnN0
YW5jZW9mIFdlYkdQVVVuc3VwcG9ydGVkRXJyb3IpKQorICAgICAgICAgICAgICAgIHRocm93IGU7
CisgICAgICAgIH0KKyAgICB9LCAiQm9vbCBiaXQgbm90Iik7Cit9OworCitmdW5jdGlvbiBydW5U
ZXN0cyhvYmopIHsKKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsICgpID0+IHsK
KyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZvciAoY29uc3QgbmFtZSBpbiBvYmopIHsKKyAg
ICAgICAgICAgICAgICBpZiAoIW5hbWUuc3RhcnRzV2l0aCgiXyIpKQorICAgICAgICAgICAgICAg
ICAgICBvYmpbbmFtZV0oKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBjYXRjaCAoZSkgewor
ICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgIHRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgCisgICAgICAgICAgICB0aHJvdyBlOwor
ICAgICAgICB9CisgICAgfSk7Cit9CisKK3J1blRlc3RzKHdobHNsVGVzdHMpOworCitjb25zdCB3
ZWJHUFVQcm9taXNlVGVzdCA9ICh0ZXN0RnVuYywgbXNnKSA9PiB7CisgICAgcHJvbWlzZV90ZXN0
KGFzeW5jICgpID0+IHsgCisgICAgICAgIHJldHVybiB0ZXN0RnVuYygpLmNhdGNoKGUgPT4gewor
ICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgV2ViR1BVVW5zdXBwb3J0ZWRFcnJvcikpCisgICAg
ICAgICAgICB0aHJvdyBlOworICAgICAgICB9KTsKKyAgICB9LCBtc2cpOworfQorPC9zY3JpcHQ+
Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wtdGVzdC1oYXJuZXNzLXRl
c3QtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3dlYmdwdS93aGxzbC10
ZXN0LWhhcm5lc3MtdGVzdC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI0Njg4OSkKKysrIExheW91
dFRlc3RzL3dlYmdwdS93aGxzbC10ZXN0LWhhcm5lc3MtdGVzdC1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTEsMTIgKzEsMTUgQEAKIAorUEFTUyBSZXR1cm4gYSBsaXRlcmFsIG9mIHR5
cGUgYm9vbC4gCiBQQVNTIFJldHVybiBhbiBleHBlY3RlZCBmbG9hdDQgdmFsdWUuIAogUEFTUyBS
ZXR1cm4gYW4gZXhwZWN0ZWQgaW50IHZhbHVlLiAKIFBBU1MgUmV0dXJuIGFuIGV4cGVjdGVkIHVp
bnQgdmFsdWUuIAogUEFTUyBSZXR1cm4gYW4gZXhwZWN0ZWQgZmxvYXQgdmFsdWUuIAorUEFTUyBV
cGxvYWQgYW5kIHJldHVybiBhIGJvb2wgdmFsdWUuIAogUEFTUyBSZXR1cm4gYW4gZXhwZWN0ZWQg
ZmxvYXQ0IHZhbHVlLiAKIFBBU1MgUmV0dXJuIGFuIGV4cGVjdGVkIGludCB2YWx1ZS4gCiBQQVNT
IFJldHVybiBhbiBleHBlY3RlZCB1aW50IHZhbHVlLiAKIFBBU1MgUmV0dXJuIGFuIGV4cGVjdGVk
IGZsb2F0IHZhbHVlLiAKK1BBU1MgVXBsb2FkIG1hbnkgYm9vbCB2YWx1ZXMgYW5kIHJldHVybiBh
IGNhbGN1bGF0ZWQgcmVzdWx0LiAKIFBBU1MgUmV0dXJuIGFuIGV4cGVjdGVkIGZsb2F0NCB2YWx1
ZS4gCiBQQVNTIFJldHVybiBhbiBleHBlY3RlZCBpbnQgdmFsdWUuIAogUEFTUyBSZXR1cm4gYW4g
ZXhwZWN0ZWQgdWludCB2YWx1ZS4gCkluZGV4OiBMYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wtdGVz
dC1oYXJuZXNzLXRlc3QuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wtdGVzdC1oYXJuZXNzLXRlc3QuaHRtbAkocmV2aXNpb24gMjQ2ODg5KQorKysgTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsLXRlc3QtaGFybmVzcy10ZXN0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTU4LDE2ICs1OCwxMSBAQCB3aGxzbFRlc3RzLm1hbnlBcmd1bWVudHMgPSAoKSA9PiB7CiAKIHdo
bHNsVGVzdHMuYnVmZmVyc1dpdGhPbmVWYWx1ZSA9ICgpID0+IHsKICAgICBjb25zdCBib2R5ID0g
YHJldHVybiBpbjBbMF07YAotICAgIGNoZWNrQm9vbHMoIkFjY2VzcyBhbmQgcmV0dXJuIGEgc2lu
Z2xlIGJvb2wgdGhyb3VnaCBhIGJvb2xbXS4iLCBib2R5LCBbW3RydWVdXSk7CiAgICAgY2hlY2tG
bG9hdDRzKGJvZHksIFtbWzAsIDEsIDIsIDNdXV0pOwogICAgIGNoZWNrTnVtZXJpY1NjYWxhcnMo
Ym9keSwgW1s0Ml1dLCA0Mik7CiB9OwogCiB3aGxzbFRlc3RzLm11bHRpcGxlQnVmZmVyQXJndW1l
bnRzID0gKCkgPT4gewotICAgIGNoZWNrQm9vbHMoIkFjY2VzcyBtdWx0aXBsZSBib29scyB0aHJv
dWdoIHZhcmlvdXMgYnVmZmVycyBhbmQgcmV0dXJuIGEgYm9vbC4iLCAKLSAgICAgICAgInJldHVy
biBpbjBbMF0gJiBpbjBbMV0gJiBpbjBbMl0gJiBpbjEgJiBpbjJbMF07IiwgCi0gICAgICAgIFtb
dHJ1ZSwgdHJ1ZSwgdHJ1ZV0sIHRydWUsIFt0cnVlXV0pOwotCiAgICAgbGV0IGJvZHkgPSBgCiAg
ICAgZmxvYXQgeCA9IGluMFswXS54ICsgaW4wWzFdLnggKyBpbjBbMl0ueCArIGluMS54ICsgaW4y
WzBdLng7CiAgICAgZmxvYXQgeSA9IGluMFswXS55ICsgaW4wWzFdLnkgKyBpbjBbMl0ueSArIGlu
MS55ICsgaW4yWzBdLnk7CkBAIC0xNjgsOSArMTYzLDYgQEAgY29uc3QgY2hlY2tOdW1lcmljU2Nh
bGFycyA9IChib2R5LCBhcmdWYQogfTsKIAogY29uc3QgY2hlY2tCb29scyA9IChtc2cgPSAiUmV0
dXJuIGFuIGV4cGVjdGVkIGJvb2wgdmFsdWUuIiwgYm9keSwgYXJnVmFsdWVzID0gW10sIGV4cGVj
dGVkID0gdHJ1ZSkgPT4gewotICAgIC8vIEZJWE1FIChodHRwczovL3dlYmtpdC5vcmcvYi8xOTkw
OTMpOiBCb29sW10gZnVuY3Rpb25zIGRvbid0IGNvbXBpbGUsIHNvIG5vLW9wIGZvciBub3cuCi0g
ICAgcmV0dXJuOwotCiAgICAgY29uc3QgW3NyYywgbmFtZSwgdmFsdWVzXSA9IGFwcGVuZFNjYWxh
ckZ1bmN0aW9uVG9Tb3VyY2UoIiIsICJib29sIiwgYm9keSwgYXJnVmFsdWVzKTsgCiAKICAgICB3
ZWJHUFVQcm9taXNlVGVzdChhc3luYyAoKSA9PiB7CkBAIC0yMzEsNCArMjIzLDQgQEAgY29uc3Qg
d2ViR1BVUHJvbWlzZVRlc3QgPSAodGVzdEZ1bmMsIG1zZwogICAgIH0sIG1zZyk7CiB9CiA8L3Nj
cmlwdD4KLTwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8L2h0bWw+CkluZGV4
OiBMYXlvdXRUZXN0cy93ZWJncHUvanMvd2hsc2wtdGVzdC1oYXJuZXNzLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL3dlYmdwdS9qcy93aGxzbC10ZXN0LWhhcm5lc3MuanMJKHJldmlzaW9u
IDI0Njg4OSkKKysrIExheW91dFRlc3RzL3dlYmdwdS9qcy93aGxzbC10ZXN0LWhhcm5lc3MuanMJ
KHdvcmtpbmcgY29weSkKQEAgLTIyLDEwICsyMiwxMiBAQCBmdW5jdGlvbiBpc1ZlY3RvclR5cGUo
dHlwZSkKICAgICB9CiB9CiAKLWZ1bmN0aW9uIGNvbnZlcnRUeXBlVG9BcnJheVR5cGUodHlwZSkK
K2Z1bmN0aW9uIGNvbnZlcnRUeXBlVG9BcnJheVR5cGUoaXNXSExTTCwgdHlwZSkKIHsKICAgICBz
d2l0Y2godHlwZSkgewogICAgICAgICBjYXNlIFR5cGVzLkJPT0w6CisgICAgICAgICAgICBpZiAo
aXNXSExTTCkKKyAgICAgICAgICAgICAgICByZXR1cm4gSW50MzJBcnJheTsKICAgICAgICAgICAg
IHJldHVybiBVaW50OEFycmF5OwogICAgICAgICBjYXNlIFR5cGVzLklOVDoKICAgICAgICAgICAg
IHJldHVybiBJbnQzMkFycmF5OwpAQCAtNjEsNiArNjMsMjcgQEAgZnVuY3Rpb24gY29udmVydFR5
cGVUb1dITFNMVHlwZSh0eXBlKQogICAgIH0KIH0KIAorZnVuY3Rpb24gd2hsc2xBcmd1bWVudFR5
cGUodHlwZSkKK3sKKyAgICBpZiAodHlwZSA9PT0gVHlwZXMuQk9PTCkKKyAgICAgICAgcmV0dXJu
ICJpbnQiOworICAgIHJldHVybiBjb252ZXJ0VHlwZVRvV0hMU0xUeXBlKHR5cGUpOworfQorCitm
dW5jdGlvbiBjb252ZXJ0VG9XSExTTE91dHB1dFR5cGUoY29kZSwgdHlwZSkKK3sKKyAgICBpZiAo
dHlwZSAhPT0gVHlwZXMuQk9PTCkKKyAgICAgICAgcmV0dXJuIGNvZGU7CisgICAgcmV0dXJuIGBp
bnQoJHtjb2RlfSlgOworfQorCitmdW5jdGlvbiBjb252ZXJ0VG9XSExTTElucHV0VHlwZShjb2Rl
LCB0eXBlKQoreworICAgIGlmICh0eXBlICE9PSBUeXBlcy5CT09MKQorICAgICAgICByZXR1cm4g
Y29kZTsKKyAgICByZXR1cm4gYGJvb2woJHtjb2RlfSlgOworfQorCiAvKiBIYXJuZXNzIENsYXNz
ZXMgKi8KIAogY2xhc3MgV2ViR1BVVW5zdXBwb3J0ZWRFcnJvciBleHRlbmRzIEVycm9yIHsKQEAg
LTkxLDE0ICsxMTQsMTQgQEAgY2xhc3MgRGF0YSB7CiAgICAgICAgIH0KIAogICAgICAgICB0aGlz
Ll90eXBlID0gdHlwZTsKLSAgICAgICAgdGhpcy5fYnl0ZUxlbmd0aCA9IChjb252ZXJ0VHlwZVRv
QXJyYXlUeXBlKHR5cGUpKS5CWVRFU19QRVJfRUxFTUVOVCAqIHZhbHVlcy5sZW5ndGg7CisgICAg
ICAgIHRoaXMuX2J5dGVMZW5ndGggPSAoY29udmVydFR5cGVUb0FycmF5VHlwZShoYXJuZXNzLmlz
V0hMU0wsIHR5cGUpKS5CWVRFU19QRVJfRUxFTUVOVCAqIHZhbHVlcy5sZW5ndGg7CiAKICAgICAg
ICAgY29uc3QgW2J1ZmZlciwgYXJyYXlCdWZmZXJdID0gaGFybmVzcy5kZXZpY2UuY3JlYXRlQnVm
ZmVyTWFwcGVkKHsKICAgICAgICAgICAgIHNpemU6IHRoaXMuX2J5dGVMZW5ndGgsCiAgICAgICAg
ICAgICB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuU1RPUkFHRSB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9S
RUFECiAgICAgICAgIH0pOwogCi0gICAgICAgIGNvbnN0IHR5cGVkQXJyYXkgPSBuZXcgKGNvbnZl
cnRUeXBlVG9BcnJheVR5cGUodHlwZSkpKGFycmF5QnVmZmVyKTsKKyAgICAgICAgY29uc3QgdHlw
ZWRBcnJheSA9IG5ldyAoY29udmVydFR5cGVUb0FycmF5VHlwZShoYXJuZXNzLmlzV0hMU0wsIHR5
cGUpKShhcnJheUJ1ZmZlcik7CiAgICAgICAgIHR5cGVkQXJyYXkuc2V0KHZhbHVlcyk7CiAgICAg
ICAgIGJ1ZmZlci51bm1hcCgpOwogCkBAIC0xNTcsNiArMTgwLDExIEBAIHVzaW5nIG5hbWVzcGFj
ZSBtZXRhbDsKICAgICAgICAgYDsKICAgICB9CiAKKyAgICBnZXQgaXNXSExTTCgpCisgICAgewor
ICAgICAgICByZXR1cm4gdGhpcy5faXNXSExTTDsKKyAgICB9CisKICAgICAvKioKICAgICAgKiBS
ZXR1cm4gdGhlIHJldHVybiB2YWx1ZSBvZiBhIFdITFNMIGZ1bmN0aW9uLgogICAgICAqIEBwYXJh
bSB7VHlwZXN9IHR5cGUgLSBUaGUgcmV0dXJuIHR5cGUgb2YgdGhlIFdITFNMIGZ1bmN0aW9uLgpA
QCAtMTk2LDEyICsyMjQsMTQgQEAgdXNpbmcgbmFtZXNwYWNlIG1ldGFsOwogCiAgICAgICAgIGxl
dCBlbnRyeVBvaW50Q29kZTsKICAgICAgICAgaWYgKHRoaXMuX2lzV0hMU0wpIHsKLSAgICAgICAg
ICAgIGFyZ3NEZWNsYXJhdGlvbnMudW5zaGlmdChgZGV2aWNlICR7Y29udmVydFR5cGVUb1dITFNM
VHlwZSh0eXBlKX1bXSByZXN1bHQgOiByZWdpc3Rlcih1MClgKTsKKyAgICAgICAgICAgIGFyZ3NE
ZWNsYXJhdGlvbnMudW5zaGlmdChgZGV2aWNlICR7d2hsc2xBcmd1bWVudFR5cGUodHlwZSl9W10g
cmVzdWx0IDogcmVnaXN0ZXIodTApYCk7CisgICAgICAgICAgICBsZXQgY2FsbENvZGUgPSBgJHtu
YW1lfSgke2Z1bmN0aW9uQ2FsbEFyZ3Muam9pbigiLCAiKX0pYDsKKyAgICAgICAgICAgIGNhbGxD
b2RlID0gY29udmVydFRvV0hMU0xPdXRwdXRUeXBlKGNhbGxDb2RlLCB0eXBlKTsKICAgICAgICAg
ICAgIGVudHJ5UG9pbnRDb2RlID0gYAogW251bXRocmVhZHMoMSwgMSwgMSldCiBjb21wdXRlIHZv
aWQgX2NvbXB1dGVfbWFpbigke2FyZ3NEZWNsYXJhdGlvbnMuam9pbigiLCAiKX0pCiB7Ci0gICAg
cmVzdWx0WzBdID0gJHtuYW1lfSgke2Z1bmN0aW9uQ2FsbEFyZ3Muam9pbigiLCAiKX0pOworICAg
IHJlc3VsdFswXSA9ICR7Y2FsbENvZGV9OwogfQogYDsKICAgICAgICAgfSBlbHNlIHsKQEAgLTIy
NSw3ICsyNTUsNyBAQCBrZXJuZWwgdm9pZCBfY29tcHV0ZV9tYWluKGRldmljZSBfY29tcHV0CiAg
ICAgICAgIH0gY2F0Y2ggewogICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJIYXJuZXNzIGVy
cm9yOiBVbmFibGUgdG8gcmVhZCByZXN1bHRzISIpOwogICAgICAgICB9Ci0gICAgICAgIGNvbnN0
IGFycmF5ID0gbmV3IChjb252ZXJ0VHlwZVRvQXJyYXlUeXBlKHR5cGUpKShyZXN1bHQpOworICAg
ICAgICBjb25zdCBhcnJheSA9IG5ldyAoY29udmVydFR5cGVUb0FycmF5VHlwZSh0aGlzLl9pc1dI
TFNMLCB0eXBlKSkocmVzdWx0KTsKICAgICAgICAgdGhpcy5fcmVzdWx0QnVmZmVyLnVubWFwKCk7
CiAKICAgICAgICAgcmV0dXJuIGFycmF5OwpAQCAtMzAxLDggKzMzMSw4IEBAIGtlcm5lbCB2b2lk
IF9jb21wdXRlX21haW4oZGV2aWNlIF9jb21wdXQKICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkg
PD0gYXJncy5sZW5ndGg7ICsraSkgewogICAgICAgICAgICAgY29uc3QgYXJnID0gYXJnc1tpIC0g
MV07CiAgICAgICAgICAgICBpZiAodGhpcy5faXNXSExTTCkgewotICAgICAgICAgICAgICAgIGFy
Z3NEZWNsYXJhdGlvbnMucHVzaChgZGV2aWNlICR7Y29udmVydFR5cGVUb1dITFNMVHlwZShhcmcu
dHlwZSl9W10gYXJnJHtpfSA6IHJlZ2lzdGVyKHUke2l9KWApOwotICAgICAgICAgICAgICAgIGZ1
bmN0aW9uQ2FsbEFyZ3MucHVzaChgYXJnJHtpfWAgKyAoYXJnLmlzQnVmZmVyID8gIiIgOiAiWzBd
IikpOworICAgICAgICAgICAgICAgIGFyZ3NEZWNsYXJhdGlvbnMucHVzaChgZGV2aWNlICR7d2hs
c2xBcmd1bWVudFR5cGUoYXJnLnR5cGUpfVtdIGFyZyR7aX0gOiByZWdpc3Rlcih1JHtpfSlgKTsK
KyAgICAgICAgICAgICAgICBmdW5jdGlvbkNhbGxBcmdzLnB1c2goY29udmVydFRvV0hMU0xJbnB1
dFR5cGUoYGFyZyR7aX1gICsgKGFyZy5pc0J1ZmZlciA/ICIiIDogIlswXSIpLCBhcmcudHlwZSkp
OwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBhcmdzRGVjbGFyYXRpb25z
LnB1c2goYGRldmljZSAke2NvbnZlcnRUeXBlVG9XSExTTFR5cGUoYXJnLnR5cGUpfSogYXJnJHtp
fSBbW2lkKCR7aX0pXV07YCk7CiAgICAgICAgICAgICAgICAgZnVuY3Rpb25DYWxsQXJncy5wdXNo
KChhcmcuaXNCdWZmZXIgPyAiIiA6ICIqIikgKyBgYXJncy5hcmcke2l9YCk7CkBAIC00NTYsNCAr
NDg2LDQgQEAgYXN5bmMgZnVuY3Rpb24gY2FsbEZsb2F0NEZ1bmN0aW9uKGZ1bmN0aQogZnVuY3Rp
b24gY2FsbFZvaWRGdW5jdGlvbihmdW5jdGlvbnMsIG5hbWUsIGFyZ3MpCiB7CiAgICAgaGFybmVz
cy5jYWxsVm9pZEZ1bmN0aW9uKGZ1bmN0aW9ucywgbmFtZSwgYXJncyk7Ci19ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQorfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>