<?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>198198</bug_id>
          
          <creation_ts>2019-05-23 15:16:08 -0700</creation_ts>
          <short_desc>[WHLSL] Make sure we properly emit code for &quot;&amp;*x&quot;</short_desc>
          <delta_ts>2019-05-31 11:17:22 -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>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>198399</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>jonlee</cc>
    
    <cc>justin_fan</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>rmorisset</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1538804</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-05-23 15:16:08 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1538805</commentid>
    <comment_count>1</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-05-23 15:16:54 -0700</bug_when>
    <thetext>int foo(thread Bar* bar) {
    return bar-&gt;x;
}

turns into

int foo(thread Bar* bar) {
   return *operator&amp;.x(&amp;*bar);
}

the &quot;&amp;*bar&quot; is suspect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1538813</commentid>
    <comment_count>2</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2019-05-23 15:32:22 -0700</bug_when>
    <thetext>Yeah, the parser turns bar-&gt;x into (*bar).x, then the property resolver reduces the dot expression via the ander. The ander requires a pointer, so we get one by calling &amp;. The checker detects that (*bar) is an lvalue, so we think it&apos;s legal to say &amp;(*bar)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1538823</commentid>
    <comment_count>3</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-05-23 16:06:02 -0700</bug_when>
    <thetext>Actually, after Robin and Myles thought about it, it seems like it&apos;s correct. &quot;*x&quot; is an lvalue if x is an lvalue.

I guess we sort of need to treat &quot;*x&quot; like C++ treats references. Not sure how far this will extend in terms of implementation. But there&apos;s a chance all we need is an AST rewrite rule since we can&apos;t variables with reference types.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1538824</commentid>
    <comment_count>4</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-05-23 16:06:32 -0700</bug_when>
    <thetext>As Myles suggested, a good test would be
&amp;*p == p =&gt; true</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1538829</commentid>
    <comment_count>5</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2019-05-23 16:30:17 -0700</bug_when>
    <thetext>One way to do this would be a pass that cancels out adjacent &amp; and * operators. But that may not be sufficient.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1538988</commentid>
    <comment_count>6</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2019-05-24 09:36:48 -0700</bug_when>
    <thetext>For &amp;*x, the emitted Metal code right now will be

auto temp = *x;
auto temp2 = &amp;temp;

Which is wrong. Perhaps we could modify the Metal codegen to instead emit

auto&amp; temp = *x;
auto temp2 = &amp;temp;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1538989</commentid>
    <comment_count>7</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2019-05-24 09:40:45 -0700</bug_when>
    <thetext>If we take this approach, it may actually solve https://bugs.webkit.org/show_bug.cgi?id=197448.

*x = 4;

Would get compiled to

auto&amp; temp = *x;
temp = 4;

Which I think is correct</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1538996</commentid>
    <comment_count>8</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-05-24 09:58:40 -0700</bug_when>
    <thetext>(In reply to Myles C. Maxfield from comment #7)
&gt; If we take this approach, it may actually solve
&gt; https://bugs.webkit.org/show_bug.cgi?id=197448.
&gt; 
&gt; *x = 4;
&gt; 
&gt; Would get compiled to
&gt; 
&gt; auto&amp; temp = *x;
&gt; temp = 4;
&gt; 
&gt; Which I think is correct

Looks like it’d be correct. Though we’d need to make sure to selectively emit references since I’m assuming “auto&amp; temp = 42” is invalid metal</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1538997</commentid>
    <comment_count>9</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-05-24 09:59:28 -0700</bug_when>
    <thetext>(In reply to Saam Barati from comment #8)
&gt; (In reply to Myles C. Maxfield from comment #7)
&gt; &gt; If we take this approach, it may actually solve
&gt; &gt; https://bugs.webkit.org/show_bug.cgi?id=197448.
&gt; &gt; 
&gt; &gt; *x = 4;
&gt; &gt; 
&gt; &gt; Would get compiled to
&gt; &gt; 
&gt; &gt; auto&amp; temp = *x;
&gt; &gt; temp = 4;
&gt; &gt; 
&gt; &gt; Which I think is correct
&gt; 
&gt; Looks like it’d be correct. Though we’d need to make sure to selectively
&gt; emit references since I’m assuming “auto&amp; temp = 42” is invalid metal

Oooh. I think you mean just for dereference nodes!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1540676</commentid>
    <comment_count>10</comment_count>
      <attachid>371046</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-05-31 01:56:40 -0700</bug_when>
    <thetext>Created attachment 371046
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1540731</commentid>
    <comment_count>11</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2019-05-31 09:12:13 -0700</bug_when>
    <thetext>*** Bug 197448 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1540775</commentid>
    <comment_count>12</comment_count>
      <attachid>371046</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-05-31 11:16:51 -0700</bug_when>
    <thetext>Comment on attachment 371046
patch

Clearing flags on attachment: 371046

Committed r245973: &lt;https://trac.webkit.org/changeset/245973&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1540776</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-05-31 11:16:52 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1540777</commentid>
    <comment_count>14</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-05-31 11:17:22 -0700</bug_when>
    <thetext>&lt;rdar://problem/51308436&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>371046</attachid>
            <date>2019-05-31 01:56:40 -0700</date>
            <delta_ts>2019-05-31 11:16:51 -0700</delta_ts>
            <desc>patch</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>10880</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0NTk1NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDE5LTA1LTMxICBTYWFtIEJh
cmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAgIFtXSExTTF0gTWFrZSBzdXJlIHdl
IHByb3Blcmx5IGVtaXQgY29kZSBmb3IgIiYqeCIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODE5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEkgcmFuIGludG8gdGhpcyB3aGVuIHRyeWluZyB0byB0ZXN0
IHplcm8tZmlsbGluZyBjb2RlLCBzbyBsZXQncyBqdXN0IGZpeCBpdC4KKyAgICAgICAgVGhlIGlz
c3VlIGlzIHRoYXQgdGhlIHByb3BlcnR5IHJlc29sdmVyIGVuZHMgdXAgZW1pdHRpbmcgY29kZSB0
aGF0IGxvb2tzIGxpa2UKKyAgICAgICAgIiYqeCIuIFRoZSBzZW1hbnRpY3Mgb2YgdGhpcyBhcmUg
c3VjaCB0aGF0IGl0IHNob3VsZCByZXN1bHQgaW4ganVzdCB4LgorICAgICAgICBIb3dldmVyLCB3
ZSBlbWl0dGVkIE1ldGFsIGNvZGUgaW4gc3VjaCBhIHdheSB3aGVyZSB3ZSdkIGVuZCB1cCB3aXRo
IGEgcG9pbnRlcgorICAgICAgICB0byBhIHRlbXBvcmFyeSB2YWx1ZS4gVG8gZml4IHRoaXMsIERl
cmVmZXJlbmNlRXhwcmVzc2lvbiB3aWxsIGVtaXQgY29kZSB0aGF0IHJlc3VsdHMKKyAgICAgICAg
aW4gYSByZWZlcmVuY2UgdHlwZS4gVGhlbiwgTWFrZVBvaW50ZXJFeHByZXNzaW9uIHdpbGwgY29y
cmVjdGx5IHJldHVybiB0aGUKKyAgICAgICAgcG9pbnRlciBiYWNraW5nIHRoYXQgcmVmZXJlbmNl
IHR5cGUuCisgICAgICAgIAorICAgICAgICBCZWNhdXNlIG9mIHRoaXMsIHdlIGFsc28gbm8gbG9u
Z2VyIG5lZWQgdG8gcGF0dGVybiBtYXRjaCB0aGUgbGhzIG9mIGFzc2lnbm1lbnQKKyAgICAgICAg
ZXhwcmVzc2lvbnMgc2luY2Ugd2Ugd2lsbCBub3cgYmUgYXNzaWduaW5nIHRvIGEgcmVmZXJlbmNl
IHR5cGUuCisKKyAgICAgICAgVGVzdDogd2ViZ3B1L3dobHNsLXN0b3JlLXRvLXByb3BlcnR5LXVw
ZGF0ZXMtcHJvcGVybHkuaHRtbAorCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0
YWwvV0hMU0xGdW5jdGlvbldyaXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6TWV0
YWw6OkZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQpOgorCiAyMDE5LTA1LTMwICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBT
dXBwcmVzcyAtV3VudXNlZC12YXJpYWJsZSB3YXJuaW5ncyBmb3IgdGhlIHVudXNlZCBzdGF0aWMK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRnVu
Y3Rpb25Xcml0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML01ldGFsL1dITFNMRnVuY3Rpb25Xcml0ZXIuY3BwCShyZXZpc2lvbiAyNDU5NTcp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEZ1bmN0
aW9uV3JpdGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDU3LDE1ICs0NTcsNiBAQCB2b2lkIEZ1
bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUCiAKIHZvaWQgRnVuY3Rpb25EZWZpbml0
aW9uV3JpdGVyOjp2aXNpdChBU1Q6OkFzc2lnbm1lbnRFeHByZXNzaW9uJiBhc3NpZ25tZW50RXhw
cmVzc2lvbikKIHsKLSAgICBpZiAoaXM8QVNUOjpEZXJlZmVyZW5jZUV4cHJlc3Npb24+KGFzc2ln
bm1lbnRFeHByZXNzaW9uLmxlZnQoKSkpIHsKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRv
d25jYXN0PEFTVDo6RGVyZWZlcmVuY2VFeHByZXNzaW9uPihhc3NpZ25tZW50RXhwcmVzc2lvbi5s
ZWZ0KCkpLnBvaW50ZXIoKSk7Ci0gICAgICAgIGF1dG8gbGVmdE5hbWUgPSBtX3N0YWNrLnRha2VM
YXN0KCk7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChhc3NpZ25tZW50RXhwcmVzc2lvbi5y
aWdodCgpKTsKLSAgICAgICAgYXV0byByaWdodE5hbWUgPSBtX3N0YWNrLnRha2VMYXN0KCk7Ci0g
ICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygnKicsIGxlZnROYW1lLCAi
ID0gIiwgcmlnaHROYW1lLCAiO1xuIikpOwotICAgICAgICBtX3N0YWNrLmFwcGVuZChyaWdodE5h
bWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQogICAgIGNoZWNrRXJyb3JBbmRWaXNpdChhc3Np
Z25tZW50RXhwcmVzc2lvbi5sZWZ0KCkpOwogICAgIGF1dG8gbGVmdE5hbWUgPSBtX3N0YWNrLnRh
a2VMYXN0KCk7CiAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGFzc2lnbm1lbnRFeHByZXNzaW9uLnJp
Z2h0KCkpOwpAQCAtNTEwLDcgKzUwMSw3IEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVy
Ojp2aXNpdChBU1QKICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZGVyZWZlcmVuY2VFeHByZXNzaW9u
LnBvaW50ZXIoKSk7CiAgICAgYXV0byByaWdodCA9IG1fc3RhY2sudGFrZUxhc3QoKTsKICAgICBh
dXRvIHZhcmlhYmxlTmFtZSA9IGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgpOwotICAgIG1fc3Ry
aW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZyhtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5
cGUoZGVyZWZlcmVuY2VFeHByZXNzaW9uLnJlc29sdmVkVHlwZSgpKSwgJyAnLCB2YXJpYWJsZU5h
bWUsICIgPSAqIiwgcmlnaHQsICI7XG4iKSk7CisgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCht
YWtlU3RyaW5nKEFTVDo6dG9TdHJpbmcoKmRlcmVmZXJlbmNlRXhwcmVzc2lvbi50eXBlQW5ub3Rh
dGlvbigpLmxlZnRBZGRyZXNzU3BhY2UoKSksICcgJywgbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVG
b3JUeXBlKGRlcmVmZXJlbmNlRXhwcmVzc2lvbi5yZXNvbHZlZFR5cGUoKSksICImICIsIHZhcmlh
YmxlTmFtZSwgIiA9ICoiLCByaWdodCwgIjtcbiIpKTsKICAgICBtX3N0YWNrLmFwcGVuZCh2YXJp
YWJsZU5hbWUpOwogfQogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDU5NTcpCisrKyBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxOS0wNS0zMSAg
U2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAgICBbV0hMU0xdIE1ha2Ug
c3VyZSB3ZSBwcm9wZXJseSBlbWl0IGNvZGUgZm9yICImKngiCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgxOTgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdlYmdwdS93aGxzbC1zdG9yZS10by1wcm9w
ZXJ0eS11cGRhdGVzLXByb3Blcmx5LWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdl
YmdwdS93aGxzbC1zdG9yZS10by1wcm9wZXJ0eS11cGRhdGVzLXByb3Blcmx5Lmh0bWw6IEFkZGVk
LgorCiAyMDE5LTA1LTMwICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAg
ICAgIGlPUzogTWFpbiBmcmFtZSBzaG91bGQgYmUgc2Nyb2xsYWJsZSB3aGVuIHBpbmNoIHpvb21l
ZCBvciBzb2Z0d2FyZSBrZXlib2FyZCBpcyB1cApJbmRleDogTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsLXN0b3JlLXRvLXByb3BlcnR5LXVwZGF0ZXMtcHJvcGVybHktZXhwZWN0ZWQuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wtc3RvcmUtdG8tcHJvcGVydHktdXBk
YXRlcy1wcm9wZXJseS1leHBlY3RlZC5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC1zdG9yZS10by1wcm9wZXJ0eS11cGRhdGVzLXByb3Blcmx5LWV4cGVjdGVk
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRo
PSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KKzxzY3JpcHQ+Cithc3luYyBmdW5jdGlvbiBz
dGFydCgpIHsKKyAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2Fu
dmFzIik7CisgICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCIyZCIpOworICAg
IGNvbnRleHQuZmlsbFN0eWxlID0gImJsdWUiOworICAgIGNvbnRleHQuZmlsbFJlY3QoMCwgMCwg
NDAwLCA0MDApOworICAgIGNvbnRleHQuZmlsbFN0eWxlID0gIndoaXRlIjsKKyAgICBjb250ZXh0
LmZpbGxSZWN0KDEwMCwgMTAwLCAyMDAsIDIwMCk7Cit9Cit3aW5kb3cuYWRkRXZlbnRMaXN0ZW5l
cigibG9hZCIsIHN0YXJ0KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsLXN0b3JlLXRvLXByb3BlcnR5LXVwZGF0ZXMtcHJvcGVybHku
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wtc3RvcmUtdG8tcHJv
cGVydHktdXBkYXRlcy1wcm9wZXJseS5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC1zdG9yZS10by1wcm9wZXJ0eS11cGRhdGVzLXByb3Blcmx5Lmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwxNDYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBo
ZWlnaHQ9IjQwMCI+PC9jYW52YXM+Cis8c2NyaXB0PgorY29uc3Qgc2hhZGVyU291cmNlID0gYAor
c3RydWN0IFZlcnRleE91dCB7CisgICAgZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRpb247Cisg
ICAgZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMCk7Cit9CisKK3N0cnVjdCBCYXIgeworICAgIGlu
dCB4OworICAgIGZsb2F0IHk7CisgICAgaW50IHo7Cit9CisKK3N0cnVjdCBGb28geworICAgIEJh
ciBiYXI7CisgICAgQmFyIGJhcjI7Cit9CisKK3RocmVhZCBGb28qIHB0cigpIHsKKyAgICBGb28g
bG9jYWw7CisgICAgcmV0dXJuICZsb2NhbDsKK30KKwordmVydGV4IFZlcnRleE91dCB2ZXJ0ZXhT
aGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmlidXRlKDApLCBmbG9hdCBzaGFkZSA6IGF0dHJp
YnV0ZSgxKSkgeworICAgIFZlcnRleE91dCByZXN1bHQ7CisKKyAgICB0aHJlYWQgRm9vKiBwID0g
cHRyKCk7CisgICAgcC0+YmFyMi55ID0gMS4wOworICAgIGZsb2F0IHZhbHVlID0gcC0+YmFyMi55
OworCisgICAgcmVzdWx0LnBvc2l0aW9uID0gcG9zaXRpb247CisgICAgcmVzdWx0LnNoYWRlID0g
dmFsdWU7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitmcmFnbWVudCBmbG9hdDQgZnJhZ21l
bnRTaGFkZXIoZmxvYXQgc2hhZGUgOiBhdHRyaWJ1dGUoMCkpIDogU1ZfVGFyZ2V0IDAgeworICAg
IHJldHVybiBmbG9hdDQoc2hhZGUsIHNoYWRlLCBzaGFkZSwgMS4wKTsKK30KK2A7Cithc3luYyBm
dW5jdGlvbiBzdGFydCgpIHsKKyAgICBjb25zdCBhZGFwdGVyID0gYXdhaXQgbmF2aWdhdG9yLmdw
dS5yZXF1ZXN0QWRhcHRlcigpOworICAgIGNvbnN0IGRldmljZSA9IGF3YWl0IGFkYXB0ZXIucmVx
dWVzdERldmljZSgpOworCisgICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNo
YWRlck1vZHVsZSh7Y29kZTogc2hhZGVyU291cmNlLCBpc1dITFNMOiB0cnVlfSk7CisgICAgY29u
c3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0
ZXhTaGFkZXIifTsKKyAgICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9k
dWxlLCBlbnRyeVBvaW50OiAiZnJhZ21lbnRTaGFkZXIifTsKKyAgICBjb25zdCBwcmltaXRpdmVU
b3BvbG9neSA9ICJ0cmlhbmdsZS1zdHJpcCI7CisgICAgY29uc3QgcmFzdGVyaXphdGlvblN0YXRl
ID0ge2Zyb250RmFjZTogImN3IiwgY3VsbE1vZGU6ICJub25lIn07CisgICAgY29uc3QgYWxwaGFC
bGVuZCA9IHt9OworICAgIGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsKKyAgICBjb25zdCBjb2xvclN0
YXRlcyA9IFt7Zm9ybWF0OiAicmdiYTh1bm9ybSIsIGFscGhhQmxlbmQsIGNvbG9yQmxlbmQsIHdy
aXRlTWFzazogMTV9XTsgLy8gR1BVQ29sb3JXcml0ZUJpdHMuQUxMCisgICAgY29uc3QgZGVwdGhT
dGVuY2lsU3RhdGUgPSBudWxsOworCisgICAgY29uc3QgYXR0cmlidXRlMCA9IHtzaGFkZXJMb2Nh
dGlvbjogMCwgZm9ybWF0OiAiZmxvYXQ0Iiwgb2Zmc2V0OiAwfTsKKyAgICBjb25zdCBhdHRyaWJ1
dGUxID0ge3NoYWRlckxvY2F0aW9uOiAxLCBmb3JtYXQ6ICJmbG9hdCIsIG9mZnNldDogMTZ9Owor
ICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBbYXR0cmlidXRlMCwgYXR0cmlidXRlMV07CisgICAgY29u
c3QgaW5wdXQwID0ge3N0cmlkZTogMjAsIGF0dHJpYnV0ZVNldDogYXR0cmlidXRlc307CisgICAg
Y29uc3QgaW5wdXRzID0gW2lucHV0MF07CisgICAgY29uc3QgdmVydGV4SW5wdXQgPSB7dmVydGV4
QnVmZmVyczogaW5wdXRzfTsKKworICAgIGNvbnN0IGJpbmRHcm91cExheW91dERlc2NyaXB0b3Ig
PSB7YmluZGluZ3M6IFt7YmluZGluZzogMCwgdmlzaWJpbGl0eTogNywgdHlwZTogInVuaWZvcm0t
YnVmZmVyIn1dfTsKKyAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXQgPSBkZXZpY2UuY3JlYXRlQmlu
ZEdyb3VwTGF5b3V0KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IpOworICAgIGNvbnN0IHBpcGVs
aW5lTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kR3JvdXBMYXlvdXRzOiBbYmluZEdyb3VwTGF5b3V0
XX07CisgICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBkZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlv
dXQocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKTsKKworICAgIGNvbnN0IHJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvciA9IHt2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgcHJpbWl0aXZlVG9wb2xv
Z3ksIHJhc3Rlcml6YXRpb25TdGF0ZSwgY29sb3JTdGF0ZXMsIGRlcHRoU3RlbmNpbFN0YXRlLCB2
ZXJ0ZXhJbnB1dCwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlvdXR9OworICAg
IGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvcik7CisKKyAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRGVzY3JpcHRv
ciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA1ICogNCwgdXNhZ2U6
IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURX07CisgICAg
Y29uc3QgdmVydGV4QnVmZmVyMCA9IGRldmljZS5jcmVhdGVCdWZmZXIodmVydGV4QnVmZmVyMERl
c2NyaXB0b3IpOworICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlciA9IGF3YWl0IHZl
cnRleEJ1ZmZlcjAubWFwV3JpdGVBc3luYygpOworICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBGbG9h
dDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHZlcnRleEJ1ZmZlcjBBcnJheUJ1ZmZlcik7Cisg
ICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVswXSA9IC0wLjU7CisgICAgdmVydGV4QnVmZmVy
MEZsb2F0MzJBcnJheVsxXSA9IC0wLjU7CisgICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsy
XSA9IDEuMDsKKyAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzNdID0gMS4wOworICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbNF0gPSAxLjA7CisKKyAgICB2ZXJ0ZXhCdWZmZXIwRmxv
YXQzMkFycmF5WzVdID0gLTAuNTsKKyAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzZdID0g
MC41OworICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbN10gPSAxLjA7CisgICAgdmVydGV4
QnVmZmVyMEZsb2F0MzJBcnJheVs4XSA9IDEuMDsKKyAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFy
cmF5WzldID0gMS4wOworCisgICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMF0gPSAwLjU7
CisgICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMV0gPSAtMC41OworICAgIHZlcnRleEJ1
ZmZlcjBGbG9hdDMyQXJyYXlbMTJdID0gMS4wOworICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJy
YXlbMTNdID0gMS4wOworICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTRdID0gMS4wOwor
CisgICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNV0gPSAwLjU7CisgICAgdmVydGV4QnVm
ZmVyMEZsb2F0MzJBcnJheVsxNl0gPSAwLjU7CisgICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJh
eVsxN10gPSAxLjA7CisgICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxOF0gPSAxLjA7Cisg
ICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxOV0gPSAxLjA7CisgICAgdmVydGV4QnVmZmVy
MC51bm1hcCgpOworCisgICAgY29uc3QgcmVzb3VyY2VCdWZmZXJEZXNjcmlwdG9yID0ge3NpemU6
IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlVO
SUZPUk0gfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OworICAgIGNvbnN0IHJlc291cmNlQnVm
ZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihyZXNvdXJjZUJ1ZmZlckRlc2NyaXB0b3IpOworICAg
IGNvbnN0IHJlc291cmNlQnVmZmVyQXJyYXlCdWZmZXIgPSBhd2FpdCByZXNvdXJjZUJ1ZmZlci5t
YXBXcml0ZUFzeW5jKCk7CisgICAgY29uc3QgcmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJyYXkgPSBu
ZXcgRmxvYXQzMkFycmF5KHJlc291cmNlQnVmZmVyQXJyYXlCdWZmZXIpOworICAgIHJlc291cmNl
QnVmZmVyRmxvYXQzMkFycmF5WzBdID0gMTsKKyAgICByZXNvdXJjZUJ1ZmZlci51bm1hcCgpOwor
CisgICAgY29uc3QgYnVmZmVyQmluZGluZyA9IHtidWZmZXI6IHJlc291cmNlQnVmZmVyLCBzaXpl
OiA0fTsKKyAgICBjb25zdCBiaW5kR3JvdXBCaW5kaW5nID0ge2JpbmRpbmc6IDAsIHJlc291cmNl
OiBidWZmZXJCaW5kaW5nfTsKKyAgICBjb25zdCBiaW5kR3JvdXBEZXNjcmlwdG9yID0ge2xheW91
dDogYmluZEdyb3VwTGF5b3V0LCBiaW5kaW5nczogW2JpbmRHcm91cEJpbmRpbmddfTsKKyAgICBj
b25zdCBiaW5kR3JvdXAgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKGJpbmRHcm91cERlc2NyaXB0
b3IpOworCisgICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZh
cyIpOworICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgiZ3B1Iik7CisgICAg
Y29uc3Qgc3dhcENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2UsIGZvcm1hdDogImJncmE4dW5vcm0i
fTsKKyAgICBjb25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2Fw
Q2hhaW5EZXNjcmlwdG9yKTsKKyAgICBjb25zdCBvdXRwdXRUZXh0dXJlID0gc3dhcENoYWluLmdl
dEN1cnJlbnRUZXh0dXJlKCk7CisgICAgY29uc3Qgb3V0cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRU
ZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCk7CisKKyAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9
IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQorICAgIGNvbnN0IHJlZCA9IHty
OiAwLCBnOiAwLCBiOiAxLCBhOiAxfTsKKyAgICBjb25zdCBjb2xvckF0dGFjaG1lbnRzID0gW3th
dHRhY2htZW50OiBvdXRwdXRUZXh0dXJlVmlldywgcmVzb2x2ZVRhcmdldDogbnVsbCwgbG9hZE9w
OiAiY2xlYXIiLCBzdG9yZU9wOiAic3RvcmUiLCBjbGVhckNvbG9yOiByZWR9XTsKKyAgICBjb25z
dCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKKyAgICBjb25zdCByZW5kZXJQYXNzRGVz
Y3JpcHRvciA9IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50fTsKKyAg
ICBjb25zdCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFz
cyhyZW5kZXJQYXNzRGVzY3JpcHRvcik7CisgICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxp
bmUocmVuZGVyUGlwZWxpbmUpOworICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgw
LCBiaW5kR3JvdXApOworICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwg
W3ZlcnRleEJ1ZmZlcjBdLCBbMF0pOworICAgIHJlbmRlclBhc3NFbmNvZGVyLmRyYXcoNCwgMSwg
MCwgMCk7CisgICAgcmVuZGVyUGFzc0VuY29kZXIuZW5kUGFzcygpOworICAgIGNvbnN0IGNvbW1h
bmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKKyAgICBkZXZpY2UuZ2V0UXVldWUo
KS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKKworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9CitpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Cit3aW5kb3cuYWRkRXZlbnRMaXN0
ZW5lcigibG9hZCIsIHN0YXJ0KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>