<?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>177269</bug_id>
          
          <creation_ts>2017-09-20 14:13:53 -0700</creation_ts>
          <short_desc>WSL should not type-check functions in the standard library that it does not use</short_desc>
          <delta_ts>2018-10-13 19:32:20 -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>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>176199</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>jfbastien</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1350970</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-09-20 14:13:53 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350976</commentid>
    <comment_count>1</comment_count>
      <attachid>321367</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-09-20 14:19:11 -0700</bug_when>
    <thetext>Created attachment 321367
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350982</commentid>
    <comment_count>2</comment_count>
      <attachid>321367</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-09-20 14:26:04 -0700</bug_when>
    <thetext>Comment on attachment 321367
the patch

View in context: https://bugs.webkit.org/attachment.cgi?id=321367&amp;action=review

r=me

&gt; Tools/WebGPUShadingLanguageRI/NameContext.js:97
&gt; +        if (thing.kind == Func) {

=== ?

&gt; Tools/WebGPUShadingLanguageRI/Prepare.js:29
&gt; +    return function(origin, lineNumberOffset, text) {

Why?

&gt; Tools/WebGPUShadingLanguageRI/ProgramWithUnnecessaryThingsRemoved.js:33
&gt; +        if (statement.origin.originKind == &quot;user&quot;)

=== ?

&gt; Tools/WebGPUShadingLanguageRI/ProgramWithUnnecessaryThingsRemoved.js:40
&gt; +    // We need these even if the program doesn&apos;t mention them by name.

Why?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351017</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-09-20 15:09:14 -0700</bug_when>
    <thetext>(In reply to JF Bastien from comment #2)
&gt; Comment on attachment 321367 [details]
&gt; the patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=321367&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; &gt; Tools/WebGPUShadingLanguageRI/NameContext.js:97
&gt; &gt; +        if (thing.kind == Func) {
&gt; 
&gt; === ?

Fixed.

&gt; 
&gt; &gt; Tools/WebGPUShadingLanguageRI/Prepare.js:29
&gt; &gt; +    return function(origin, lineNumberOffset, text) {
&gt; 
&gt; Why?

arguments.length doesn&apos;t work in arrow functions.

&gt; 
&gt; &gt; Tools/WebGPUShadingLanguageRI/ProgramWithUnnecessaryThingsRemoved.js:33
&gt; &gt; +        if (statement.origin.originKind == &quot;user&quot;)
&gt; 
&gt; === ?

Fixed.

&gt; 
&gt; &gt; Tools/WebGPUShadingLanguageRI/ProgramWithUnnecessaryThingsRemoved.js:40
&gt; &gt; +    // We need these even if the program doesn&apos;t mention them by name.
&gt; 
&gt; Why?

Later phases resolve these directly sometimes (the compiler will say things like program.globalNameContext.get(Type, &quot;void&quot;) and expect non-null).

For example even if you compile &quot;int foo() { return 42; }&quot;, we will resolve void just to make sure that int isn&apos;t the same as void - because if int was void then the return shouldn&apos;t return a value.

Also if you compile &quot;double foo() { return 42; }&quot; we will also resolve int because &quot;42&quot; might be an int (we actually select double as 42&apos;s type but not before trying int).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351030</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-09-20 15:41:17 -0700</bug_when>
    <thetext>Landed in https://trac.webkit.org/changeset/222295/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353302</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-27 12:20:01 -0700</bug_when>
    <thetext>&lt;rdar://problem/34693070&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1468981</commentid>
    <comment_count>6</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-10-13 19:32:20 -0700</bug_when>
    <thetext>Migrated to https://github.com/gpuweb/WHLSL/issues/177</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321367</attachid>
            <date>2017-09-20 14:19:11 -0700</date>
            <delta_ts>2017-09-20 14:26:04 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>21583</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIyMjI4NykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDU2IEBACisyMDE3LTA5LTIwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisK
KyAgICAgICAgV1NMIHNob3VsZCBub3QgdHlwZS1jaGVjayBmdW5jdGlvbnMgaW4gdGhlIHN0YW5k
YXJkIGxpYnJhcnkgdGhhdCBpdCBkb2VzIG5vdCB1c2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NzI2OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgT25jZSB3ZSBhZGRlZCBhbGwgb2YgdGhl
IHN3aXp6bGluZyBvcGVyYXRvcnMsIHRoZSBzaXplIG9mIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IGJh
bGxvb25lZCB0byB0aGUgcG9pbnQKKyAgICAgICAgd2hlcmUgaXQncyBqdXN0IG5vdCBwcmFjdGlj
YWwgdG8gY29tcGlsZSBhbnl0aGluZyBhbnltb3JlLiBJZiB5b3Ugd2FudCB0byBjb21waWxlCisg
ICAgICAgICJpbnQgZm9vKGludCB4KSB7IHJldHVybiB4fSIgdGhlbiBpdCB3aWxsIHRha2Ugc29t
ZSByaWRpY3Vsb3VzIGFtb3VudCBvZiB0aW1lIChtYW55IHNlY29uZHMpIGJlY2F1c2UgV1NMCisg
ICAgICAgIHdpbGwgaGF2ZSB0byB0eXBlIGNoZWNrIGFsbCBvZiB0aG9zZSBzd2l6emxpbmcgb3Bl
cmF0b3JzLgorICAgICAgICAKKyAgICAgICAgVGhpcyBjaGFuZ2UgbWFrZXMgaXQgc28gdGhhdCBh
ZnRlciBwYXJzaW5nIHRoZSB3aG9sZSBwcm9ncmFtLCB3ZSByZW1vdmUgdGhlIHRoaW5ncyB0aGF0
IHdlIGFyZW4ndCB1c2luZy4KKyAgICAgICAgV2UgY2FuIG1ha2UgYSByZWFsbHkgZ29vZCBlc3Rp
bWF0ZSBvZiB3aGF0IHdlIG5lZWQgZXZlbiBiZWZvcmUgZG9pbmcgYW55IG5hbWUgcmVzb2x1dGlv
bi4gSW4gcHJhY3RpY2UsCisgICAgICAgIHRoaXMgY2hhbmdlIHJlbW92ZXMgYWxtb3N0IGFsbCBv
ZiB0aGUgdGhpbmdzIGZyb20gUHJvZ3JhbSBiZWZvcmUgd2UgZ2V0IHRvIHRoZSBoYXJkIHdvcmsg
b2YgdHlwZQorICAgICAgICBjaGVja2luZy4gVGhhdCdzIHRydWUgYmVjYXVzZSB0aGUgc3RhbmRh
cmQgbGlicmFyeSBjb250YWlucyBfbWFueV8gdGhpbmdzIGFuZCB5b3UnZCBoYXZlIHRvIHRyeSB2
ZXJ5CisgICAgICAgIGhhcmQgdG8gdXNlIGFsbCBvZiB0aGVtLgorICAgICAgICAKKyAgICAgICAg
VGhpcyBpcyBhIDEzeCBzcGVlZC11cCBmb3IgVGVzdC5qcy4gSXQgd2VudCBmcm9tIDE1NSBzZWNv
bmRzIHRvIDEyIHNlY29uZHMgb24gbXkgbWFjaGluZS4KKworICAgICAgICAqIFdlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL0FsbC5qczoKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9D
b25zdGV4cHJUeXBlUGFyYW1ldGVyLmpzOgorICAgICAgICAoQ29uc3RleHByVHlwZVBhcmFtZXRl
ci5wcm90b3R5cGUuZ2V0IG9yaWdpbik6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvSW50cmluc2ljcy5qczoKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9MZXhl
ci5qczoKKyAgICAgICAgKExleGVyKToKKyAgICAgICAgKExleGVyLnByb3RvdHlwZS5nZXQgb3Jp
Z2luS2luZCk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTGV4ZXJUb2tlbi5q
czoKKyAgICAgICAgKExleGVyVG9rZW4ucHJvdG90eXBlLmdldCBsZXhlcik6CisgICAgICAgIChM
ZXhlclRva2VuLnByb3RvdHlwZS5nZXQgb3JpZ2luKToKKyAgICAgICAgKExleGVyVG9rZW4ucHJv
dG90eXBlLmdldCBvcmlnaW5LaW5kKToKKyAgICAgICAgKExleGVyVG9rZW4ucHJvdG90eXBlLmdl
dCBpc0ludGVybmFsKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9OYW1lQ29u
dGV4dC5qczoKKyAgICAgICAgKGlzV2lsZGNhcmRLaW5kKToKKyAgICAgICAgKE5hbWVDb250ZXh0
LnByb3RvdHlwZS5hZGQpOgorICAgICAgICAoTmFtZUNvbnRleHQucHJvdG90eXBlLmdldCBsZXQp
OgorICAgICAgICAoTmFtZUNvbnRleHQucHJvdG90eXBlLm1hcEZvcik6IERlbGV0ZWQuCisgICAg
ICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTmFtZUZpbmRlci5qczogQWRkZWQuCisgICAg
ICAgIChOYW1lRmluZGVyKToKKyAgICAgICAgKE5hbWVGaW5kZXIuZ2V0IHdvcmtsaXN0KToKKyAg
ICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9OYW1lUmVzb2x2ZXIuanM6CisgICAgICAg
IChOYW1lUmVzb2x2ZXIucHJvdG90eXBlLnZpc2l0UHJvdG9jb2xEZWNsKToKKyAgICAgICAgKiBX
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9PcmlnaW5LaW5kLmpzOiBBZGRlZC4KKyAgICAgICAgKGlz
T3JpZ2luS2luZCk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUHJlcGFyZS5q
czoKKyAgICAgICAgKGxldC5wcmVwYXJlKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9Qcm9ncmFtV2l0aFVubmVjZXNzYXJ5VGhpbmdzUmVtb3ZlZC5qczogQWRkZWQuCisgICAg
ICAgIChwcm9ncmFtV2l0aFVubmVjZXNzYXJ5VGhpbmdzUmVtb3ZlZCk6CisgICAgICAgICogV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5odG1sOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL1Rlc3QuanM6CisgICAgICAgIChkb1Rlc3QpOgorICAgICAgICAqIFdlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL2luZGV4Lmh0bWw6CisKIDIwMTctMDktMjAgIEFsZXggQ2hyaXN0ZW5z
ZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgQWN0aW9uVHlw
ZTo6SW52YWxpZEFjdGlvbgpJbmRleDogVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQWxs
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0FsbC5qcwko
cmV2aXNpb24gMjIyMjgxKQorKysgVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQWxsLmpz
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsNiArMTA4LDcgQEAgbG9hZCgiTG9vcENoZWNrZXIuanMi
KTsKIGxvYWQoIk1ha2VBcnJheVJlZkV4cHJlc3Npb24uanMiKTsKIGxvYWQoIk1ha2VQdHJFeHBy
ZXNzaW9uLmpzIik7CiBsb2FkKCJOYW1lQ29udGV4dC5qcyIpOworbG9hZCgiTmFtZUZpbmRlci5q
cyIpOwogbG9hZCgiTmFtZVJlc29sdmVyLmpzIik7CiBsb2FkKCJOYXRpdmVGdW5jLmpzIik7CiBs
b2FkKCJOYXRpdmVGdW5jSW5zdGFuY2UuanMiKTsKQEAgLTExNiwxMCArMTE3LDEyIEBAIGxvYWQo
Ik5hdGl2ZVR5cGVJbnN0YW5jZS5qcyIpOwogbG9hZCgiTm9ybWFsVXNlUHJvcGVydHlSZXNvbHZl
ci5qcyIpOwogbG9hZCgiTnVsbExpdGVyYWwuanMiKTsKIGxvYWQoIk51bGxUeXBlLmpzIik7Cits
b2FkKCJPcmlnaW5LaW5kLmpzIik7CiBsb2FkKCJPdmVybG9hZFJlc29sdXRpb25GYWlsdXJlLmpz
Iik7CiBsb2FkKCJQYXJzZS5qcyIpOwogbG9hZCgiUHJlcGFyZS5qcyIpOwogbG9hZCgiUHJvZ3Jh
bS5qcyIpOworbG9hZCgiUHJvZ3JhbVdpdGhVbm5lY2Vzc2FyeVRoaW5nc1JlbW92ZWQuanMiKTsK
IGxvYWQoIlByb3BlcnR5UmVzb2x2ZXIuanMiKTsKIGxvYWQoIlByb3RvY29sLmpzIik7CiBsb2Fk
KCJQcm90b2NvbERlY2wuanMiKTsKSW5kZXg6IFRvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L0NvbnN0ZXhwclR5cGVQYXJhbWV0ZXIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvQ29uc3RleHByVHlwZVBhcmFtZXRlci5qcwkocmV2aXNpb24gMjIyMjgx
KQorKysgVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQ29uc3RleHByVHlwZVBhcmFtZXRl
ci5qcwkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQCBjbGFzcyBDb25zdGV4cHJUeXBl
UGFyYW1ldGVyIGV4dGVuZHMgVmFsCiAgICAgICAgIHRoaXMuX3R5cGUgPSB0eXBlOwogICAgIH0K
ICAgICAKKyAgICBnZXQgb3JpZ2luKCkgeyByZXR1cm4gdGhpcy5fb3JpZ2luOyB9CiAgICAgZ2V0
IG5hbWUoKSB7IHJldHVybiB0aGlzLl9uYW1lOyB9CiAgICAgZ2V0IHR5cGUoKSB7IHJldHVybiB0
aGlzLl90eXBlOyB9CiAgICAgZ2V0IGlzQ29uc3RleHByKCkgeyByZXR1cm4gdHJ1ZTsgfQpJbmRl
eDogVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvSW50cmluc2ljcy5qcwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9JbnRyaW5zaWNzLmpzCShyZXZpc2lv
biAyMjIyODEpCisrKyBUb29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9JbnRyaW5zaWNzLmpz
CSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiBjbGFzcyBJbnRyaW5zaWNzIHsKICAg
ICBjb25zdHJ1Y3RvcihuYW1lQ29udGV4dCkKICAgICB7Ci0gICAgICAgIHRoaXMucHJpbWl0aXZl
ID0gbmV3IFByb3RvY29sRGVjbChudWxsLCAiUHJpbWl0aXZlIik7CisgICAgICAgIHRoaXMucHJp
bWl0aXZlID0gbmV3IFByb3RvY29sRGVjbCh7b3JpZ2luOiAiPGludGVybmFsPiIsIG9yaWdpblN0
cmluZzogIm5hdGl2ZSIsIGlzSW50ZXJuYWw6IHRydWV9LCAiUHJpbWl0aXZlIik7CiAgICAgICAg
IHRoaXMucHJpbWl0aXZlLmlzUHJpbWl0aXZlID0gdHJ1ZTsKICAgICAgICAgbmFtZUNvbnRleHQu
YWRkKHRoaXMucHJpbWl0aXZlKTsKICAgICAgICAgCkluZGV4OiBUb29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9MZXhlci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9MZXhlci5qcwkocmV2aXNpb24gMjIyMjgxKQorKysgVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvTGV4ZXIuanMJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDggQEAKIGNs
YXNzIExleGVyIHsKICAgICBjb25zdHJ1Y3RvcihvcmlnaW4sIG9yaWdpbktpbmQsIGxpbmVOdW1i
ZXJPZmZzZXQsIHRleHQpCiAgICAgeworICAgICAgICBpZiAoIWlzT3JpZ2luS2luZChvcmlnaW5L
aW5kKSkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIG9yaWdpbiBraW5kOiAiICsg
b3JpZ2luS2luZCk7CiAgICAgICAgIHRoaXMuX29yaWdpbiA9IG9yaWdpbjsKICAgICAgICAgdGhp
cy5fb3JpZ2luS2luZCA9IG9yaWdpbktpbmQ7CiAgICAgICAgIHRoaXMuX2xpbmVOdW1iZXJPZmZz
ZXQgPSBsaW5lTnVtYmVyT2Zmc2V0OwpAQCAtNDcsNiArNDksOCBAQCBjbGFzcyBMZXhlciB7CiAg
ICAgICAgIHJldHVybiB0aGlzLl9vcmlnaW4gKyAiOiIgKyAodGhpcy5saW5lTnVtYmVyICsgMSk7
CiAgICAgfQogICAgIAorICAgIGdldCBvcmlnaW5LaW5kKCkgeyByZXR1cm4gdGhpcy5fb3JpZ2lu
S2luZDsgfQorICAgIAogICAgIGxpbmVOdW1iZXJGb3JJbmRleChpbmRleCkKICAgICB7CiAgICAg
ICAgIGxldCBtYXRjaGVzID0gdGhpcy5fdGV4dC5zdWJzdHJpbmcoMCwgaW5kZXgpLm1hdGNoKC9c
bi9nKTsKSW5kZXg6IFRvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0xleGVyVG9rZW4uanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTGV4ZXJUb2tlbi5q
cwkocmV2aXNpb24gMjIyMjgxKQorKysgVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTGV4
ZXJUb2tlbi5qcwkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsMTEgQEAgY2xhc3MgTGV4ZXJU
b2tlbiB7CiAgICAgICAgIHRoaXMuX3RleHQgPSB0ZXh0OwogICAgIH0KICAgICAKKyAgICBnZXQg
bGV4ZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2xleGVyOworICAgIH0KKyAgICAK
ICAgICBnZXQga2luZCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fa2luZDsKQEAgLTQ1
LDcgKzUwLDE3IEBAIGNsYXNzIExleGVyVG9rZW4gewogICAgIAogICAgIGdldCBvcmlnaW4oKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2xleGVyLm9yaWdpbjsKKyAgICAgICAgcmV0dXJu
IHRoaXMubGV4ZXIub3JpZ2luOworICAgIH0KKyAgICAKKyAgICBnZXQgb3JpZ2luS2luZCgpCisg
ICAgeworICAgICAgICByZXR1cm4gdGhpcy5sZXhlci5vcmlnaW5LaW5kOworICAgIH0KKyAgICAK
KyAgICBnZXQgaXNJbnRlcm5hbCgpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogICAgIAogICAgIGdldCBpbmRleCgpCkluZGV4OiBUb29scy9XZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9OYW1lQ29udGV4dC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9OYW1lQ29udGV4dC5qcwkocmV2aXNpb24gMjIyMjgxKQorKysgVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvTmFtZUNvbnRleHQuanMJKHdvcmtpbmcgY29weSkKQEAgLTI0LDEx
ICsyNCwxMSBAQAogICovCiAidXNlIHN0cmljdCI7CiAKLWNvbnN0IE5vdEZ1bmMgPSBTeW1ib2wo
KTsKK2NvbnN0IEFueXRoaW5nID0gU3ltYm9sKCk7CiAKIGZ1bmN0aW9uIGlzV2lsZGNhcmRLaW5k
KGtpbmQpCiB7Ci0gICAgcmV0dXJuIGtpbmQgPT0gTm90RnVuYzsKKyAgICByZXR1cm4ga2luZCA9
PSBBbnl0aGluZzsKIH0KIAogY2xhc3MgTmFtZUNvbnRleHQgewpAQCAtNDIsMjQgKzQyLDEyIEBA
IGNsYXNzIE5hbWVDb250ZXh0IHsKICAgICAgICAgdGhpcy5fcHJvZ3JhbSA9IG51bGw7CiAgICAg
fQogICAgIAotICAgIG1hcEZvcihraW5kKQotICAgIHsKLSAgICAgICAgc3dpdGNoIChraW5kKSB7
Ci0gICAgICAgIGNhc2UgTm90RnVuYzoKLSAgICAgICAgY2FzZSBWYWx1ZToKLSAgICAgICAgY2Fz
ZSBUeXBlOgotICAgICAgICBjYXNlIFByb3RvY29sOgotICAgICAgICBjYXNlIEZ1bmM6Ci0gICAg
ICAgICAgICByZXR1cm4gdGhpcy5fbWFwOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJCYWQga2luZDogIiArIGtpbmQpOwotICAgICAgICB9Ci0gICAgfQot
ICAgIAogICAgIGFkZCh0aGluZykKICAgICB7CiAgICAgICAgIGlmICghdGhpbmcubmFtZSkKICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKCF0aGluZy5vcmlnaW4pCisgICAgICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoIlRoaW5nIGRvZXMgbm90IGhhdmUgb3JpZ2luOiAiICsgdGhpbmcp
OwogICAgICAgICAKICAgICAgICAgaWYgKHRoaW5nLmlzTmF0aXZlICYmICF0aGluZy5pbXBsZW1l
bnRhdGlvbikgewogICAgICAgICAgICAgaWYgKCF0aGlzLl9pbnRyaW5zaWNzKQpAQCAtODgsNyAr
NzYsNyBAQCBjbGFzcyBOYW1lQ29udGV4dCB7CiAgICAgCiAgICAgZ2V0KGtpbmQsIG5hbWUpCiAg
ICAgewotICAgICAgICBsZXQgcmVzdWx0ID0gdGhpcy5tYXBGb3Ioa2luZCkuZ2V0KG5hbWUpOwor
ICAgICAgICBsZXQgcmVzdWx0ID0gdGhpcy5fbWFwLmdldChuYW1lKTsKICAgICAgICAgaWYgKCFy
ZXN1bHQgJiYgdGhpcy5fZGVsZWdhdGUpCiAgICAgICAgICAgICByZXR1cm4gdGhpcy5fZGVsZWdh
dGUuZ2V0KGtpbmQsIG5hbWUpOwogICAgICAgICBpZiAocmVzdWx0ICYmICFpc1dpbGRjYXJkS2lu
ZChraW5kKSAmJiByZXN1bHQua2luZCAhPSBraW5kKQpAQCAtOTYsNiArODQsMjYgQEAgY2xhc3Mg
TmFtZUNvbnRleHQgewogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAKKyAgICB1
bmRlcmx5aW5nVGhpbmdzKGtpbmQsIG5hbWUpCisgICAgeworICAgICAgICBsZXQgdGhpbmdzID0g
dGhpcy5nZXQoa2luZCwgbmFtZSk7CisgICAgICAgIHJldHVybiBOYW1lQ29udGV4dC51bmRlcmx5
aW5nVGhpbmdzKHRoaW5ncyk7CisgICAgfQorICAgIAorICAgIHN0YXRpYyAqdW5kZXJseWluZ1Ro
aW5ncyh0aGluZykKKyAgICB7CisgICAgICAgIGlmICghdGhpbmcpCisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIGlmICh0aGluZy5raW5kID09IEZ1bmMpIHsKKyAgICAgICAgICAgIGlmICgh
KHRoaW5nIGluc3RhbmNlb2YgQXJyYXkpKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJv
cigiRnVuYyB0aGluZyBpcyBub3QgYXJyYXk6ICIgKyB0aGluZyk7CisgICAgICAgICAgICBmb3Ig
KGxldCBmdW5jIG9mIHRoaW5nKQorICAgICAgICAgICAgICAgIHlpZWxkIGZ1bmM7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgeWllbGQgdGhpbmc7CisgICAgfQorICAg
IAogICAgIHJlc29sdmVGdW5jT3ZlcmxvYWQobmFtZSwgdHlwZUFyZ3VtZW50cywgYXJndW1lbnRU
eXBlcywgcmV0dXJuVHlwZSwgYWxsb3dFbnRyeVBvaW50ID0gZmFsc2UpCiAgICAgewogICAgICAg
ICBsZXQgZnVuY3Rpb25zID0gdGhpcy5nZXQoRnVuYywgbmFtZSk7CkluZGV4OiBUb29scy9XZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9OYW1lRmluZGVyLmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dl
YkdQVVNoYWRpbmdMYW5ndWFnZVJJL05hbWVGaW5kZXIuanMJKG5vbmV4aXN0ZW50KQorKysgVG9v
bHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTmFtZUZpbmRlci5qcwkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDk0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisidXNlIHN0cmljdCI7CisKK2NsYXNzIE5hbWVGaW5kZXIgZXh0ZW5kcyBWaXNpdG9yIHsK
KyAgICBjb25zdHJ1Y3RvcigpCisgICAgeworICAgICAgICBzdXBlcigpOworICAgICAgICB0aGlz
Ll9zZXQgPSBuZXcgU2V0KCk7CisgICAgICAgIHRoaXMuX3dvcmtsaXN0ID0gW107CisgICAgfQor
ICAgIAorICAgIGdldCBzZXQoKSB7IHJldHVybiB0aGlzLl9zZXQ7IH0KKyAgICBnZXQgd29ya2xp
c3QoKSB7IHJldHVybiB0aGlzLl93b3JrbGlzdDsgfQorICAgIAorICAgIGFkZChuYW1lKQorICAg
IHsKKyAgICAgICAgaWYgKHRoaXMuX3NldC5oYXMobmFtZSkpCisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIHRoaXMuX3NldC5hZGQobmFtZSk7CisgICAgICAgIHRoaXMuX3dvcmtsaXN0LnB1
c2gobmFtZSk7CisgICAgfQorICAgIAorICAgIHZpc2l0UHJvdG9jb2xSZWYobm9kZSkKKyAgICB7
CisgICAgICAgIHRoaXMuYWRkKG5vZGUubmFtZSk7CisgICAgICAgIHN1cGVyLnZpc2l0UHJvdG9j
b2xSZWYobm9kZSk7CisgICAgfQorICAgIAorICAgIHZpc2l0VHlwZVJlZihub2RlKQorICAgIHsK
KyAgICAgICAgdGhpcy5hZGQobm9kZS5uYW1lKTsKKyAgICAgICAgc3VwZXIudmlzaXRUeXBlUmVm
KG5vZGUpOworICAgIH0KKyAgICAKKyAgICB2aXNpdFZhcmlhYmxlUmVmKG5vZGUpCisgICAgewor
ICAgICAgICB0aGlzLmFkZChub2RlLm5hbWUpOworICAgICAgICBzdXBlci52aXNpdFZhcmlhYmxl
UmVmKG5vZGUpOworICAgIH0KKyAgICAKKyAgICB2aXNpdFR5cGVPclZhcmlhYmxlUmVmKG5vZGUp
CisgICAgeworICAgICAgICB0aGlzLmFkZChub2RlLm5hbWUpOworICAgIH0KKworICAgIF9oYW5k
bGVQcm9wZXJ0eUFjY2Vzcyhub2RlKQorICAgIHsKKyAgICAgICAgdGhpcy5hZGQobm9kZS5nZXRG
dW5jTmFtZSk7CisgICAgICAgIHRoaXMuYWRkKG5vZGUuc2V0RnVuY05hbWUpOworICAgICAgICB0
aGlzLmFkZChub2RlLmFuZEZ1bmNOYW1lKTsKKyAgICB9CisgICAgCisgICAgdmlzaXREb3RFeHBy
ZXNzaW9uKG5vZGUpCisgICAgeworICAgICAgICB0aGlzLl9oYW5kbGVQcm9wZXJ0eUFjY2Vzcyhu
b2RlKTsKKyAgICAgICAgc3VwZXIudmlzaXREb3RFeHByZXNzaW9uKG5vZGUpOworICAgIH0KKyAg
ICAKKyAgICB2aXNpdEluZGV4RXhwcmVzc2lvbihub2RlKQorICAgIHsKKyAgICAgICAgdGhpcy5f
aGFuZGxlUHJvcGVydHlBY2Nlc3Mobm9kZSk7CisgICAgICAgIHN1cGVyLnZpc2l0SW5kZXhFeHBy
ZXNzaW9uKG5vZGUpOworICAgIH0KKyAgICAKKyAgICB2aXNpdENhbGxFeHByZXNzaW9uKG5vZGUp
CisgICAgeworICAgICAgICB0aGlzLmFkZChub2RlLm5hbWUpOworICAgICAgICBzdXBlci52aXNp
dENhbGxFeHByZXNzaW9uKG5vZGUpOworICAgIH0KK30KKwpJbmRleDogVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvTmFtZVJlc29sdmVyLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL05hbWVSZXNvbHZlci5qcwkocmV2aXNpb24gMjIyMjgxKQorKysg
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTmFtZVJlc29sdmVyLmpzCSh3b3JraW5nIGNv
cHkpCkBAIC0xNzEsMTMgKzE3MSwxNSBAQCBjbGFzcyBOYW1lUmVzb2x2ZXIgZXh0ZW5kcyBWaXNp
dG9yIHsKICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0eXBlQXJndW1lbnRzLmxlbmd0aDsg
KytpKSB7CiAgICAgICAgICAgICBsZXQgdHlwZUFyZ3VtZW50ID0gdHlwZUFyZ3VtZW50c1tpXTsK
ICAgICAgICAgICAgIGlmICh0eXBlQXJndW1lbnQgaW5zdGFuY2VvZiBUeXBlT3JWYXJpYWJsZVJl
ZikgewotICAgICAgICAgICAgICAgIGxldCB0aGluZyA9IHRoaXMuX25hbWVDb250ZXh0LmdldChO
b3RGdW5jLCB0eXBlQXJndW1lbnQubmFtZSk7CisgICAgICAgICAgICAgICAgbGV0IHRoaW5nID0g
dGhpcy5fbmFtZUNvbnRleHQuZ2V0KEFueXRoaW5nLCB0eXBlQXJndW1lbnQubmFtZSk7CiAgICAg
ICAgICAgICAgICAgaWYgKCF0aGluZykKICAgICAgICAgICAgICAgICAgICAgbmV3IFdUeXBlRXJy
b3IodHlwZUFyZ3VtZW50Lm9yaWdpbi5vcmlnaW5TdHJpbmcsICJDb3VsZCBub3QgZmluZCB0eXBl
IG9yIHZhcmlhYmxlIG5hbWVkICIgKyB0eXBlQXJndW1lbnQubmFtZSk7Ci0gICAgICAgICAgICAg
ICAgaWYgKHRoaW5nIGluc3RhbmNlb2YgVmFsdWUpIHsKKyAgICAgICAgICAgICAgICBpZiAodGhp
bmcgaW5zdGFuY2VvZiBWYWx1ZSkKICAgICAgICAgICAgICAgICAgICAgdHlwZUFyZ3VtZW50c1tp
XSA9IG5ldyBWYXJpYWJsZVJlZih0eXBlQXJndW1lbnQub3JpZ2luLCB0eXBlQXJndW1lbnQubmFt
ZSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgZWxzZSBpZiAodGhp
bmcgaW5zdGFuY2VvZiBUeXBlKQogICAgICAgICAgICAgICAgICAgICB0eXBlQXJndW1lbnRzW2ld
ID0gbmV3IFR5cGVSZWYodHlwZUFyZ3VtZW50Lm9yaWdpbiwgdHlwZUFyZ3VtZW50Lm5hbWUsIFtd
KTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBX
VHlwZUVycm9yKHR5cGVBcmd1bWVudC5vcmlnaW4ub3JpZ2luU3RyaW5nLCAiVHlwZSBhcmd1bWVu
dCByZXNvbHZlZCB0byB3cm9uZyBraW5kIG9mIHRoaW5nOiAiICsgdGhpbmcua2luZCk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmICh0eXBlQXJndW1lbnRbaV0g
aW5zdGFuY2VvZiBWYWx1ZQpJbmRleDogVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvT3Jp
Z2luS2luZC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9P
cmlnaW5LaW5kLmpzCShub25leGlzdGVudCkKKysrIFRvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL09yaWdpbktpbmQuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworInVzZSBzdHJpY3QiOworCitj
b25zdCBvcmlnaW5LaW5kcyA9IFsibmF0aXZlIiwgInVzZXIiXTsKKworZnVuY3Rpb24gaXNPcmln
aW5LaW5kKG9yaWdpbktpbmQpCit7CisgICAgc3dpdGNoIChvcmlnaW5LaW5kKSB7CisgICAgY2Fz
ZSAibmF0aXZlIjoKKyAgICBjYXNlICJ1c2VyIjoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKwpJbmRleDogVG9vbHMv
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUHJlcGFyZS5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9X
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QcmVwYXJlLmpzCShyZXZpc2lvbiAyMjIyODEpCisrKyBU
b29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QcmVwYXJlLmpzCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiwxNCArMjYsMTggQEAKIAogbGV0IHByZXBhcmUgPSAoKCkgPT4gewogICAgIGxldCBzdGFu
ZGFyZFByb2dyYW07Ci0gICAgcmV0dXJuIChvcmlnaW4sIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQp
ID0+IHsKKyAgICByZXR1cm4gZnVuY3Rpb24ob3JpZ2luLCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0
KSB7CiAgICAgICAgIGlmICghc3RhbmRhcmRQcm9ncmFtKSB7CiAgICAgICAgICAgICBzdGFuZGFy
ZFByb2dyYW0gPSBuZXcgUHJvZ3JhbSgpOwogICAgICAgICAgICAgcGFyc2Uoc3RhbmRhcmRQcm9n
cmFtLCAiL2ludGVybmFsL3N0ZGxpYiIsICJuYXRpdmUiLCA3Miwgc3RhbmRhcmRMaWJyYXJ5KTsK
ICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgaWYgKCFhcmd1bWVudHMubGVuZ3RoKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAKICAgICAgICAgbGV0IHByb2dyYW0gPSBjbG9uZVBy
b2dyYW0oc3RhbmRhcmRQcm9ncmFtKTsKICAgICAgICAgcGFyc2UocHJvZ3JhbSwgb3JpZ2luLCAi
dXNlciIsIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpOworICAgICAgICBwcm9ncmFtID0gcHJvZ3Jh
bVdpdGhVbm5lY2Vzc2FyeVRoaW5nc1JlbW92ZWQocHJvZ3JhbSk7CiAgICAgICAgIAogICAgICAg
ICBmb2xkQ29uc3RleHBycyhwcm9ncmFtKTsKICAgICAgICAgbGV0IG5hbWVSZXNvbHZlciA9IGNy
ZWF0ZU5hbWVSZXNvbHZlcihwcm9ncmFtKTsKSW5kZXg6IFRvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL1Byb2dyYW1XaXRoVW5uZWNlc3NhcnlUaGluZ3NSZW1vdmVkLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Byb2dyYW1XaXRoVW5uZWNlc3NhcnlU
aGluZ3NSZW1vdmVkLmpzCShub25leGlzdGVudCkKKysrIFRvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL1Byb2dyYW1XaXRoVW5uZWNlc3NhcnlUaGluZ3NSZW1vdmVkLmpzCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKyJ1c2Ugc3RyaWN0IjsKKworZnVuY3Rpb24gcHJvZ3JhbVdpdGhVbm5lY2Vzc2Fy
eVRoaW5nc1JlbW92ZWQocHJvZ3JhbSkKK3sKKyAgICBsZXQgbmFtZUZpbmRlciA9IG5ldyBOYW1l
RmluZGVyKCk7CisgICAgCisgICAgLy8gQnVpbGQgb3VyIHJvb3RzLgorICAgIGZvciAobGV0IHN0
YXRlbWVudCBvZiBwcm9ncmFtLnRvcExldmVsU3RhdGVtZW50cykgeworICAgICAgICBpZiAoc3Rh
dGVtZW50Lm9yaWdpbi5vcmlnaW5LaW5kID09ICJ1c2VyIikKKyAgICAgICAgICAgIG5hbWVGaW5k
ZXIuYWRkKHN0YXRlbWVudC5uYW1lKTsKKyAgICB9CisgICAgCisgICAgLy8gVW5mb3J0dW5hdGVs
eSwgd2UgY2Fubm90IGtub3cgeWV0IHdoaWNoIG9wZXJhdG9yIGNhc3RzIHdlJ2xsIG5lZWQuCisg
ICAgbmFtZUZpbmRlci5hZGQoIm9wZXJhdG9yIGNhc3QiKTsKKyAgICAKKyAgICAvLyBXZSBuZWVk
IHRoZXNlIGV2ZW4gaWYgdGhlIHByb2dyYW0gZG9lc24ndCBtZW50aW9uIHRoZW0gYnkgbmFtZS4K
KyAgICBuYW1lRmluZGVyLmFkZCgidm9pZCIpOworICAgIG5hbWVGaW5kZXIuYWRkKCJib29sIik7
CisgICAgbmFtZUZpbmRlci5hZGQoImludCIpOworICAgIAorICAgIC8vIFB1bGwgaW4gdGhpbmdz
IGFzIG5lY2Vzc2FyeS4KKyAgICB3aGlsZSAobmFtZUZpbmRlci53b3JrbGlzdC5sZW5ndGgpIHsK
KyAgICAgICAgbGV0IG5hbWUgPSBuYW1lRmluZGVyLndvcmtsaXN0LnBvcCgpOworICAgICAgICBm
b3IgKGxldCB0aGluZyBvZiBwcm9ncmFtLmdsb2JhbE5hbWVDb250ZXh0LnVuZGVybHlpbmdUaGlu
Z3MoQW55dGhpbmcsIG5hbWUpKQorICAgICAgICAgICAgdGhpbmcudmlzaXQobmFtZUZpbmRlcik7
CisgICAgfQorICAgIAorICAgIGxldCByZXN1bHQgPSBuZXcgUHJvZ3JhbSgpOworICAgIGZvciAo
bGV0IG5hbWUgb2YgbmFtZUZpbmRlci5zZXQpIHsKKyAgICAgICAgZm9yIChsZXQgdGhpbmcgb2Yg
cHJvZ3JhbS5nbG9iYWxOYW1lQ29udGV4dC51bmRlcmx5aW5nVGhpbmdzKEFueXRoaW5nLCBuYW1l
KSkgeworICAgICAgICAgICAgaWYgKCF0aGluZy5vcmlnaW4uaXNJbnRlcm5hbCkKKyAgICAgICAg
ICAgICAgICByZXN1bHQuYWRkKHRoaW5nKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorCkluZGV4OiBUb29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9U
ZXN0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVz
dC5odG1sCShyZXZpc2lvbiAyMjIyODEpCisrKyBUb29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9UZXN0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTg1LDYgKzg1LDcgQEAKIDxzY3JpcHQgc3Jj
PSJNYWtlQXJyYXlSZWZFeHByZXNzaW9uLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJNYWtl
UHRyRXhwcmVzc2lvbi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iTmFtZUNvbnRleHQuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ik5hbWVGaW5kZXIuanMiPjwvc2NyaXB0PgogPHNjcmlw
dCBzcmM9Ik5hbWVSZXNvbHZlci5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iTmF0aXZlRnVu
Yy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iTmF0aXZlRnVuY0luc3RhbmNlLmpzIj48L3Nj
cmlwdD4KQEAgLTkzLDExICs5NCwxMyBAQAogPHNjcmlwdCBzcmM9Ik5vcm1hbFVzZVByb3BlcnR5
UmVzb2x2ZXIuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ik51bGxMaXRlcmFsLmpzIj48L3Nj
cmlwdD4KIDxzY3JpcHQgc3JjPSJOdWxsVHlwZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
T3JpZ2luS2luZC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iT3ZlcmxvYWRSZXNvbHV0aW9u
RmFpbHVyZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iUGFyc2UuanMiPjwvc2NyaXB0Pgog
PHNjcmlwdCBzcmM9IlByZXBhcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IlByb3BlcnR5
UmVzb2x2ZXIuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IlByb2dyYW0uanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9IlByb2dyYW1XaXRoVW5uZWNlc3NhcnlUaGluZ3NSZW1vdmVkLmpzIj48
L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJQcm90b2NvbC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNy
Yz0iUHJvdG9jb2xEZWNsLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJQcm90b2NvbEZ1bmNE
ZWNsLmpzIj48L3NjcmlwdD4KSW5kZXg6IFRvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rl
c3QuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5q
cwkocmV2aXNpb24gMjIyMjgxKQorKysgVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVz
dC5qcwkod29ya2luZyBjb3B5KQpAQCAtNDQwMyw2ICs0NDAzLDExIEBAIGlmICh0aGlzWyJhcmd1
bWVudHMiXSkgewogZnVuY3Rpb24qIGRvVGVzdChvYmplY3QpCiB7CiAgICAgbGV0IGJlZm9yZSA9
IHByZWNpc2VUaW1lKCk7CisgICAgCisgICAgcHJpbnQoIkNvbXBpbGluZyBzdGFuZGFyZCBsaWJy
YXJ5Li4uIik7CisgICAgeWllbGQ7CisgICAgcHJlcGFyZSgpOworICAgIHByaW50KCIgICAgT0sh
Iik7CiAKICAgICBmb3IgKGxldCBzIGluIG9iamVjdCkgewogICAgICAgICBpZiAocy5zdGFydHNX
aXRoKCJURVNUXyIpICYmIHMubWF0Y2goZmlsdGVyKSkgewpJbmRleDogVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvaW5kZXguaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9pbmRleC5odG1sCShyZXZpc2lvbiAyMjIyODEpCisrKyBUb29scy9XZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9pbmRleC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC04NSw2ICs4
NSw3IEBACiA8c2NyaXB0IHNyYz0iTWFrZUFycmF5UmVmRXhwcmVzc2lvbi5qcyI+PC9zY3JpcHQ+
CiA8c2NyaXB0IHNyYz0iTWFrZVB0ckV4cHJlc3Npb24uanMiPjwvc2NyaXB0PgogPHNjcmlwdCBz
cmM9Ik5hbWVDb250ZXh0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJOYW1lRmluZGVyLmpz
Ij48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJOYW1lUmVzb2x2ZXIuanMiPjwvc2NyaXB0PgogPHNj
cmlwdCBzcmM9Ik5hdGl2ZUZ1bmMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ik5hdGl2ZUZ1
bmNJbnN0YW5jZS5qcyI+PC9zY3JpcHQ+CkBAIC05MywxMSArOTQsMTMgQEAKIDxzY3JpcHQgc3Jj
PSJOb3JtYWxVc2VQcm9wZXJ0eVJlc29sdmVyLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJO
dWxsTGl0ZXJhbC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iTnVsbFR5cGUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ik9yaWdpbktpbmQuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9
Ik92ZXJsb2FkUmVzb2x1dGlvbkZhaWx1cmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IlBh
cnNlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJQcmVwYXJlLmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQgc3JjPSJQcm9wZXJ0eVJlc29sdmVyLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJQ
cm9ncmFtLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJQcm9ncmFtV2l0aFVubmVjZXNzYXJ5
VGhpbmdzUmVtb3ZlZC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iUHJvdG9jb2wuanMiPjwv
c2NyaXB0PgogPHNjcmlwdCBzcmM9IlByb3RvY29sRGVjbC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0
IHNyYz0iUHJvdG9jb2xGdW5jRGVjbC5qcyI+PC9zY3JpcHQ+Cg==
</data>
<flag name="review"
          id="341364"
          type_id="1"
          status="+"
          setter="jfbastien"
    />
          </attachment>
      

    </bug>

</bugzilla>