<?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>220410</bug_id>
          
          <creation_ts>2021-01-07 05:36:43 -0800</creation_ts>
          <short_desc>WebKit::IPC::Encoder needs definitions of all enum types with custom validity checker at the Encoder definition time</short_desc>
          <delta_ts>2021-01-11 05:05:25 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>WebKit Local 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>
          <dependson>220319</dependson>
          <blocked>217211</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kimmo Kinnunen">kkinnunen</reporter>
          <assigned_to name="Kimmo Kinnunen">kkinnunen</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1717933</commentid>
    <comment_count>0</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-01-07 05:36:43 -0800</bug_when>
    <thetext>WebKit::IPC::Encoder needs definitions of all enum values at the Encoder definition time

This is a problem because Encoder is used to encode arbitrary content. 

The expectation is that all the definitions would be needed at _instantiation time_. This is true for other encoded types, but not for enums.

The source is that WTF::isValidEnum() is defined as few functions.
It is the intention of the original writer that clients &quot;override&quot; these isValidEnum() functions for the custom enums, and then the encoder would use these.

However, since the functions are freestanding functions, they do not share a base function template that would be then overridden by specializations of the function templates.
C++ does not have specialised function templates.

This means that calls made by Encoder into WTF::isValidEnum() are matched at definition time. If the custom enums are included, then the compile works. If the custom enums are not included at this point, the compile fails.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717944</commentid>
    <comment_count>1</comment_count>
      <attachid>417179</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-01-07 07:57:23 -0800</bug_when>
    <thetext>Created attachment 417179
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1718003</commentid>
    <comment_count>2</comment_count>
      <attachid>417179</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-01-07 11:10:01 -0800</bug_when>
    <thetext>Comment on attachment 417179
Patch

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

&gt; Source/WTF/wtf/EnumTraits.h:63
&gt; +auto isValidEnum(T t) -&gt; decltype(EnumTraits&lt;E&gt;::isValidEnum(t), bool())

Why isn’t this one constexpr?

&gt; Source/WebCore/platform/ContextMenuItem.h:213
&gt; +    static bool isValidEnum(T action)

Why isn’t this one constexpr?

&gt; Source/WebKit/Scripts/webkit/messages.py:993
&gt; +    result.append(&apos;    static bool isValidEnum(T messageName)\n&apos;)

Why isn’t this one constexpr?

&gt; Source/WebKit/Scripts/webkit/messages.py:996
&gt; +    result.append(&apos;        static_assert(sizeof(T) == sizeof(IPC::MessageName), &quot;isValidEnum&lt;IPC::MessageName&gt; should only be called with 16-bit types&quot;);\n&apos;)
&gt; +    result.append(&apos;        static_assert(std::is_unsigned&lt;T&gt;::value, &quot;isValidEnum&lt;IPC::MessageName&gt; should only be called with unsigned types&quot;);\n&apos;)

These could be done with enable_if instead of static_assert inside the function. How did you choose?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1718223</commentid>
    <comment_count>3</comment_count>
      <attachid>417246</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-01-07 23:11:48 -0800</bug_when>
    <thetext>Created attachment 417246
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1718227</commentid>
    <comment_count>4</comment_count>
      <attachid>417246</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-01-07 23:22:14 -0800</bug_when>
    <thetext>Comment on attachment 417246
Patch

Thanks.

(In reply to Darin Adler from comment #2)
&gt; Comment on attachment 417179 [details]
&gt; &gt; Source/WTF/wtf/EnumTraits.h:63
&gt; &gt; +auto isValidEnum(T t) -&gt; decltype(EnumTraits&lt;E&gt;::isValidEnum(t), bool())
&gt; 
&gt; Why isn’t this one constexpr?

This would require the client-implementable function to be constexpr. None of the current called functions can be usefully constexpr.

&gt; &gt; Source/WebCore/platform/ContextMenuItem.h:213
&gt; &gt; +    static bool isValidEnum(T action)
&gt; 
&gt; Why isn’t this one constexpr?

There are no set of argument values such that an invocation of the function could be an evaluated subexpression of a core constant expression.
Only expression is a call to non-inline (exported) function.

&gt; &gt; Source/WebKit/Scripts/webkit/messages.py:993
&gt; &gt; +    result.append(&apos;    static bool isValidEnum(T messageName)\n&apos;)
&gt; 
&gt; Why isn’t this one constexpr?

Constexpr part is very narrow, and a constant function, false. It&apos;s not useful as constexpr. The intended caller, e.g. the WTF::isValidEnum() is not constexpr due to reasons above.

&gt; 
&gt; &gt; Source/WebKit/Scripts/webkit/messages.py:996
&gt; &gt; +    result.append(&apos;        static_assert(sizeof(T) == sizeof(IPC::MessageName), &quot;isValidEnum&lt;IPC::MessageName&gt; should only be called with 16-bit types&quot;);\n&apos;)
&gt; &gt; +    result.append(&apos;        static_assert(std::is_unsigned&lt;T&gt;::value, &quot;isValidEnum&lt;IPC::MessageName&gt; should only be called with unsigned types&quot;);\n&apos;)
&gt; 
&gt; These could be done with enable_if instead of static_assert inside the
&gt; function. How did you choose?

They were like this before, the patch did not touch them, only change the indent IIRC.

I removed the static asserts as you suggested, here and in ContextMenuItem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1718660</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-01-11 05:04:31 -0800</bug_when>
    <thetext>Committed r271358: &lt;https://trac.webkit.org/changeset/271358&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 417246.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1718661</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-01-11 05:05:25 -0800</bug_when>
    <thetext>&lt;rdar://problem/72994509&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417179</attachid>
            <date>2021-01-07 07:57:23 -0800</date>
            <delta_ts>2021-01-07 23:11:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220410-20210107175722.patch</filename>
            <type>text/plain</type>
            <size>10889</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxMjM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDZhOWRiN2IzZmNhYzczYWM2N2QzYTJl
ODEyZjZiNzYwZWJlMzA5YmQuLjJiMDAwMTRhYzJkMmY4N2I0NWQ5NmY1YjU1YzU3NGFjZThjNThh
MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMjEtMDEtMDcgIEtpbW1vIEtpbm51bmVuICA8a2tp
bm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBXZWJLaXQ6OklQQzo6RW5jb2RlciBuZWVkcyBk
ZWZpbml0aW9ucyBvZiBhbGwgY3VzdG9tIGVudW0gdmFsdWVzIGF0IHRoZSBFbmNvZGVyIGRlZmlu
aXRpb24gdGltZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjIwNDEwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQ2hhbmdlIFdURjo6RW51bVRyYWl0cyB0byBoYXZlIGVpdGhlciBFbnVtVHJhaXRzOjp2YWx1
ZXMgb3IgRW51bVRyYWl0czo6aXNWYWxpZEVudW0oKS4KKyAgICAgICAgUHJldmlvdXNseSwgaWYg
Y2xpZW50cyB3YW50ZWQgdG8gY2hlY2sgaXNWYWxpZEVudW0gZm9yIGN1c3RvbSBlbnVtLCB0aGV5
IGhhZCB0bzoKKyAgICAgICAgIDEpIERlZmluZSBIYXNDdXN0b21Jc1ZhbGlkRW51bTxUaGVpckVu
dW0+IDogdHJ1ZV90eXBlIHt9OworICAgICAgICAgMikgRGVmaW5lIG5ldyBmdW5jdGlvbiB0ZW1w
bGF0ZSBpc1ZhbGlkRW51bSgpIGZvciBUaGVpckVudW0KKyAgICAgICAgIDMpIEVuc3VyZSB0aGF0
IHRoZWlyIGlzVmFsaWRFbnVtKCkgd2FzIGRlZmluZWQgYmVmb3JlIHRoZSBkZWZpbml0aW9uIG9m
IHRoZSBjYWxsIHRvCisgICAgICAgICAgICB0aGUgaXNWYWxpZEVudW0oKS4KKworICAgICAgICBU
aGlzIGhhcyB0aGUgcHJvYmxlbSB0aGF0IGlzVmFsaWRFbnVtKCkgY2Fubm90IGJlIGNhbGxlZCBp
biBnZW5lcmljIGNvZGUsIGJlY2F1c2UKKyAgICAgICAgYXQgdGhlIGRlZmluaXRpb24gdGltZSBn
ZW5lcmljIGNvZGUgdHlwaWNhbGx5IGRvZXMgbm90IGhhdmUgYWxsIHRoZSB0eXBlcyBpbiBzY29w
ZQorICAgICAgICB0aGF0IHdpbGwgYmUgdXNlZCBhdCBpbnN0YW50aWF0aW9uIHRpbWUuCisgICAg
ICAgIEVhY2ggaXNWYWxpZEVudW0oKSBpcyB0aGVpciBvd24gZnVuY3Rpb24gdGVtcGxhdGUsIEMr
KyBkb2VzIG5vdCBoYXZlIGZ1bmN0aW9uIHRlbXBsYXRlCisgICAgICAgIHNwZWNpYWxpemF0aW9u
LgorCisgICAgICAgIEFmdGVyIHRoZSBjaGFuZ2UsIGNsaWVudHMgbmVlZCB0bzoKKyAgICAgICAg
IDEpIERlZmluZSBFbnVtVHJhaXRzPFRoZWlyRW51bT4geyBib29sIGlzVmFsaWRFbnVtKC4uLikg
fQorCisgICAgICAgIEZpeCBieSB1c2luZyB0aGUgZmFjdCB0aGF0IFdURjo6RW51bVRyYWl0cyBp
cyBhIGNsYXNzIGFuZCB0aGF0IGNhbiBoYXZlIHRlbXBsYXRlCisgICAgICAgIHNwZWNpYWxpemF0
aW9ucy4KKworICAgICAgICBDb25zaXN0ZW50IHdpdGggdGhlIEVudW1UcmFpdHM6OnZhbHVlcyBj
YXNlOgorICAgICAgICAgIGEpIEF1dG9tYXRpYyBjYXNlPyAgICAgLS0+IERlZmluZSBFbnVtVHJh
aXRzOjp2YWx1ZXMKKyAgICAgICAgICBiKSBNYW51YWwvY3VzdG9tIGNhc2U/IC0tPiBEZWZpbmUg
RW51bVRyYWl0czo6aXNWYWxpZEVudW0oKQorCisgICAgICAgICogd3RmL0VudW1UcmFpdHMuaDoK
KyAgICAgICAgKFdURjo6aXNWYWxpZEVudW0pOgorCiAyMDIxLTAxLTA3ICBDYXJsb3MgR2FyY2lh
IENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBCdWlsZCBmYWls
dXJlcyB3aXRoIEdUSzQgMy45OS41LjEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxNTI2YmM1MzkyMTczNTI5Njk2
NmFmM2I5YmEyY2NkZGU1MTk0MjJiLi5mZGE2Zjc4YjY4ZDk4NGZjN2U1ZDEwMmUxMmQ2OTAxYjE3
NmQwZGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMDEtMDcgIEtpbW1vIEtp
bm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBXZWJLaXQ6OklQQzo6RW5j
b2RlciBuZWVkcyBkZWZpbml0aW9ucyBvZiBhbGwgY3VzdG9tIGVudW0gdmFsdWVzIGF0IHRoZSBF
bmNvZGVyIGRlZmluaXRpb24gdGltZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIwNDEwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQ2hhbmdlIFdURjo6RW51bVRyYWl0cyB0byBoYXZlIGVpdGhlciBFbnVt
VHJhaXRzOjp2YWx1ZXMgb3IgRW51bVRyYWl0czo6aXNWYWxpZEVudW0oKS4KKworICAgICAgICBD
aGFuZ2UgaGVyZSBuZWVkZWQgdG8gY29uZm9ybSB0byB0aGUgbmV3IHByb3RvY29sLiBGaXhlcyBh
biBpc3N1ZSB3aXRoIHRoZSB0ZW1wbGF0ZSB1c2FnZQorICAgICAgICBpbiBXZWJLaXQ6OklQQzo6
RW5jb2Rlciwgc2VlIFdlYktpdCBhbmQgV1RGIENoYW5nZUxvZ3MgZm9yIGRpc2N1c3Npb24uCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9Db250ZXh0TWVudUl0ZW0uaDoKKyAgICAgICAgKFdURjo6RW51
bVRyYWl0czxXZWJDb3JlOjpDb250ZXh0TWVudUFjdGlvbj46OmlzVmFsaWRFbnVtKToKKwogMjAy
MS0wMS0wNyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgT25seSB1cGRhdGUgdGhlIHJlc291cmNlcyB3aGVuIHJlbmRlcmluZyBTVkcgc2VsZWN0
ZWQgdGV4dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCAyZDAyMGU5MjIyMzFjODU4ZjE1ZDhmMjUwODdhZDJjNmUyZGZk
N2QwLi44YmJkZTY5M2M1ZThmYjcxMTU2OTlkMDc2NGJjNTM3N2YxYjg2N2JjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDIwIEBACisyMDIxLTAxLTA3ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBh
cHBsZS5jb20+CisKKyAgICAgICAgV2ViS2l0OjpJUEM6OkVuY29kZXIgbmVlZHMgZGVmaW5pdGlv
bnMgb2YgYWxsIGN1c3RvbSBlbnVtIHZhbHVlcyBhdCB0aGUgRW5jb2RlciBkZWZpbml0aW9uIHRp
bWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDQx
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5n
ZSBXVEY6OkVudW1UcmFpdHMgdG8gaGF2ZSBlaXRoZXIgRW51bVRyYWl0czo6dmFsdWVzIG9yIEVu
dW1UcmFpdHM6OmlzVmFsaWRFbnVtKCkuCisKKyAgICAgICAgRml4ZXMgdGhlIHVwY29taW5nIHBy
b2JsZW0gd2hlcmUgRW5jb2Rlcjo6ZW5jb2RlKEUpIGZ1bmN0aW9uIGlzIG1vdmVkIGZyb20gRW5j
b2RlcgorICAgICAgICB0byBvdGhlciBjbGFzcywgc3VjaCBhcyBFbmNvZGVyQmFzZSwgYW5kIHdo
ZXJlIHdlIGRvIG5vdCB3YW50IHRvIGFkZCByZWR1bmRhbnQgaW5jbHVkZXMuCisgICAgICAgIFNl
ZSB0aGUgV1RGLyBDaGFuZ2VMb2cgZm9yIGRpc2N1c3Npb25nIHdydCB3aHkgdGhleSB3ZXJlIG5l
ZWRlZCBiZWZvcmUuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuaDoKKyAgICAgICAgKFdU
Rjo6RW51bVRyYWl0czxJUEM6Ok1lc3NhZ2VOYW1lPjo6aXNWYWxpZEVudW0pOgorCiAyMDIxLTAx
LTA1ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgV2Vi
S2l0IElQQyBtZXNzYWdlIG5hbWVzIHNob3VsZCBpbmRpY2F0ZSBpZiB0aGUgbWVzc2FnZSBpcyBz
eW5jaHJvbm91cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRW51bVRyYWl0cy5oIGIvU291
cmNlL1dURi93dGYvRW51bVRyYWl0cy5oCmluZGV4IDk5Mjc4ODcyOTNkMGE3YjNiYTFlODUwNmIw
Y2RhZjM1M2E5OWIyNGEuLjFkZGI5MjE0NTQwZGI4ODBlMDBmYTM2ZTg0MmNmM2YyZjVlYWU4Y2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0VudW1UcmFpdHMuaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9FbnVtVHJhaXRzLmgKQEAgLTUxLDE3ICs1MSwyMSBAQCBzdHJ1Y3QgRW51bVZhbHVlQ2hl
Y2tlcjxULCBFbnVtVmFsdWVzPEU+PiB7CiAgICAgfQogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUg
VT4gY2xhc3MgSGFzQ3VzdG9tSXNWYWxpZEVudW0gOiBwdWJsaWMgc3RkOjpmYWxzZV90eXBlIHsg
fTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgRSwgdHlwZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDxz
dGQ6OmlzX2VudW08RT46OnZhbHVlICYmICFzdGQ6OmlzX3NhbWU8c3RkOjp1bmRlcmx5aW5nX3R5
cGVfdDxFPiwgYm9vbD46OnZhbHVlICYmICFIYXNDdXN0b21Jc1ZhbGlkRW51bTxFPjo6dmFsdWU+
KiA9IG51bGxwdHI+Ci1jb25zdGV4cHIgYm9vbCBpc1ZhbGlkRW51bShUIHQpCit0ZW1wbGF0ZTx0
eXBlbmFtZSBFLCB0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8IXN0ZDo6
aXNfc2FtZV92PHN0ZDo6dW5kZXJseWluZ190eXBlX3Q8RT4sIGJvb2w+Pj4KK2NvbnN0ZXhwciBh
dXRvIGlzVmFsaWRFbnVtKFQgdCkgLT4gZGVjbHR5cGUoRW51bVZhbHVlQ2hlY2tlcjxULCB0eXBl
bmFtZSBFbnVtVHJhaXRzPEU+Ojp2YWx1ZXM+Ojppc1ZhbGlkRW51bSh0KSwgYm9vbCgpKQogewog
ICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFQpID49IHNpemVvZihzdGQ6OnVuZGVybHlpbmdfdHlw
ZV90PEU+KSwgIkludGVncmFsIHR5cGUgbXVzdCBiZSBhdCBsZWFzdCB0aGUgc2l6ZSBvZiB0aGUg
dW5kZXJseWluZyBlbnVtIHR5cGUiKTsKIAogICAgIHJldHVybiBFbnVtVmFsdWVDaGVja2VyPFQs
IHR5cGVuYW1lIEVudW1UcmFpdHM8RT46OnZhbHVlcz46OmlzVmFsaWRFbnVtKHQpOwogfQogCi10
ZW1wbGF0ZTx0eXBlbmFtZSBFLCB0eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNf
c2FtZTxzdGQ6OnVuZGVybHlpbmdfdHlwZV90PEU+LCBib29sPjo6dmFsdWU+KiA9IG51bGxwdHI+
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBFLCB0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxl
X2lmX3Q8IXN0ZDo6aXNfc2FtZV92PHN0ZDo6dW5kZXJseWluZ190eXBlX3Q8RT4sIGJvb2w+Pj4K
K2F1dG8gaXNWYWxpZEVudW0oVCB0KSAtPiBkZWNsdHlwZShFbnVtVHJhaXRzPEU+Ojppc1ZhbGlk
RW51bSh0KSwgYm9vbCgpKQoreworICAgIHJldHVybiBFbnVtVHJhaXRzPEU+Ojppc1ZhbGlkRW51
bSh0KTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgRSwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgPSBz
dGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfc2FtZV92PHN0ZDo6dW5kZXJseWluZ190eXBlX3Q8RT4s
IGJvb2w+Pj4KIGNvbnN0ZXhwciBib29sIGlzVmFsaWRFbnVtKFQgdCkKIHsKICAgICByZXR1cm4g
IXQgfHwgdCA9PSAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGV4
dE1lbnVJdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVudUl0ZW0uaApp
bmRleCBlODQwMGFjZDBjZjg1MjcyM2E1MTlkMDk2MTliNGFmNWI4ZDQ3MWQ1Li43ZmYxMmZjYzgy
NzY1ZDc1NjE4YTM5MjYyN2M4NzJhODRlNzc5MDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9Db250ZXh0TWVudUl0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Db250ZXh0TWVudUl0ZW0uaApAQCAtMjA4LDEzICsyMDgsMTMgQEAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBpc1ZhbGlkQ29udGV4dE1lbnVBY3Rpb24oQ29udGV4dE1lbnVBY3Rpb24pOwogbmFtZXNw
YWNlIFdURiB7CiAKIHRlbXBsYXRlPD4KLWNsYXNzIEhhc0N1c3RvbUlzVmFsaWRFbnVtPFdlYkNv
cmU6OkNvbnRleHRNZW51QWN0aW9uPiA6IHB1YmxpYyBzdGQ6OnRydWVfdHlwZSB7IH07Ci0KLXRl
bXBsYXRlPHR5cGVuYW1lIEUsIHR5cGVuYW1lIFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19z
YW1lX3Y8RSwgV2ViQ29yZTo6Q29udGV4dE1lbnVBY3Rpb24+PiogPSBudWxscHRyPgotYm9vbCBp
c1ZhbGlkRW51bShUIGFjdGlvbikKLXsKLSAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihUKSA9PSBz
aXplb2YoRSksICJpc1ZhbGlkRW51bTxXZWJDb3JlOjpDb250ZXh0TWVudUFjdGlvbj4gc2hvdWxk
IG9ubHkgYmUgY2FsbGVkIHdpdGggMzItYml0IHR5cGVzIik7Ci0gICAgcmV0dXJuIFdlYkNvcmU6
OmlzVmFsaWRDb250ZXh0TWVudUFjdGlvbihzdGF0aWNfY2FzdDxFPihhY3Rpb24pKTsKK3N0cnVj
dCBFbnVtVHJhaXRzPFdlYkNvcmU6OkNvbnRleHRNZW51QWN0aW9uPiB7CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4KKyAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkRW51bShUIGFjdGlvbikKKyAgICB7
CisgICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFQpID09IHNpemVvZihXZWJDb3JlOjpDb250
ZXh0TWVudUFjdGlvbiksICJpc1ZhbGlkRW51bTxXZWJDb3JlOjpDb250ZXh0TWVudUFjdGlvbj4g
c2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdpdGggMzItYml0IHR5cGVzIik7CisgICAgICAgIHJldHVy
biBXZWJDb3JlOjppc1ZhbGlkQ29udGV4dE1lbnVBY3Rpb24oc3RhdGljX2Nhc3Q8V2ViQ29yZTo6
Q29udGV4dE1lbnVBY3Rpb24+KGFjdGlvbikpOworICAgIH07CiB9OwogCiB0ZW1wbGF0ZTw+IHN0
cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVR5cGU+IHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDA2NzVhMzVjOWQxYWI0MjU2YTM2
MDQxYzhiMWIxZjBjOGUwZmM5ZTguLjc1YWMwMWU4YzY5ZDk5YzNjNjkzODFhMzAyZTgxYjAyOWE2
ODgwMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMu
cHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtOTg4
LDE1ICs5ODgsMTYgQEAgZGVmIGdlbmVyYXRlX21lc3NhZ2VfbmFtZXNfaGVhZGVyKHJlY2VpdmVy
cyk6CiAgICAgcmVzdWx0LmFwcGVuZCgnbmFtZXNwYWNlIFdURiB7XG4nKQogICAgIHJlc3VsdC5h
cHBlbmQoJ1xuJykKICAgICByZXN1bHQuYXBwZW5kKCd0ZW1wbGF0ZTw+XG4nKQotICAgIHJlc3Vs
dC5hcHBlbmQoJ2NsYXNzIEhhc0N1c3RvbUlzVmFsaWRFbnVtPElQQzo6TWVzc2FnZU5hbWU+IDog
cHVibGljIHN0ZDo6dHJ1ZV90eXBlIHsgfTtcbicpCi0gICAgcmVzdWx0LmFwcGVuZCgndGVtcGxh
dGU8dHlwZW5hbWUgRSwgdHlwZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX3NhbWVf
djxFLCBJUEM6Ok1lc3NhZ2VOYW1lPj4qID0gbnVsbHB0cj5cbicpCi0gICAgcmVzdWx0LmFwcGVu
ZCgnYm9vbCBpc1ZhbGlkRW51bShUIG1lc3NhZ2VOYW1lKVxuJykKLSAgICByZXN1bHQuYXBwZW5k
KCd7XG4nKQotICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihUKSA9
PSBzaXplb2YoRSksICJpc1ZhbGlkRW51bTxJUEM6Ok1lc3NhZ2VOYW1lPiBzaG91bGQgb25seSBi
ZSBjYWxsZWQgd2l0aCAxNi1iaXQgdHlwZXMiKTtcbicpCi0gICAgcmVzdWx0LmFwcGVuZCgnICAg
IHN0YXRpY19hc3NlcnQoc3RkOjppc191bnNpZ25lZDxUPjo6dmFsdWUsICJpc1ZhbGlkRW51bTxJ
UEM6Ok1lc3NhZ2VOYW1lPiBzaG91bGQgb25seSBiZSBjYWxsZWQgd2l0aCB1bnNpZ25lZCB0eXBl
cyIpO1xuJykKLSAgICByZXN1bHQuYXBwZW5kKCcgICAgaWYgKG1lc3NhZ2VOYW1lID4gc3RhdGlj
X2Nhc3Q8c3RkOjp1bmRlcmx5aW5nX3R5cGU8SVBDOjpNZXNzYWdlTmFtZT46OnR5cGU+KElQQzo6
TWVzc2FnZU5hbWU6Okxhc3QpKVxuJykKLSAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIHJldHVy
biBmYWxzZTtcbicpCi0gICAgcmVzdWx0LmFwcGVuZCgnICAgIHJldHVybiBJUEM6OmlzVmFsaWRN
ZXNzYWdlTmFtZShzdGF0aWNfY2FzdDxFPihtZXNzYWdlTmFtZSkpO1xuJykKKyAgICByZXN1bHQu
YXBwZW5kKCdzdHJ1Y3QgRW51bVRyYWl0czxJUEM6Ok1lc3NhZ2VOYW1lPiB7XG4nKQorICAgIHJl
c3VsdC5hcHBlbmQoJyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPlxuJykKKyAgICByZXN1bHQuYXBw
ZW5kKCcgICAgc3RhdGljIGJvb2wgaXNWYWxpZEVudW0oVCBtZXNzYWdlTmFtZSlcbicpCisgICAg
cmVzdWx0LmFwcGVuZCgnICAgIHtcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAgICAgICBzdGF0
aWNfYXNzZXJ0KHNpemVvZihUKSA9PSBzaXplb2YoSVBDOjpNZXNzYWdlTmFtZSksICJpc1ZhbGlk
RW51bTxJUEM6Ok1lc3NhZ2VOYW1lPiBzaG91bGQgb25seSBiZSBjYWxsZWQgd2l0aCAxNi1iaXQg
dHlwZXMiKTtcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0
ZDo6aXNfdW5zaWduZWQ8VD46OnZhbHVlLCAiaXNWYWxpZEVudW08SVBDOjpNZXNzYWdlTmFtZT4g
c2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdpdGggdW5zaWduZWQgdHlwZXMiKTtcbicpCisgICAgcmVz
dWx0LmFwcGVuZCgnICAgICAgICBpZiAobWVzc2FnZU5hbWUgPiBzdGF0aWNfY2FzdDxzdGQ6OnVu
ZGVybHlpbmdfdHlwZTxJUEM6Ok1lc3NhZ2VOYW1lPjo6dHlwZT4oSVBDOjpNZXNzYWdlTmFtZTo6
TGFzdCkpXG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICAgICAgICAgIHJldHVybiBmYWxzZTtc
bicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAgICAgICByZXR1cm4gSVBDOjppc1ZhbGlkTWVzc2Fn
ZU5hbWUoc3RhdGljX2Nhc3Q8SVBDOjpNZXNzYWdlTmFtZT4obWVzc2FnZU5hbWUpKTtcbicpCisg
ICAgcmVzdWx0LmFwcGVuZCgnICAgIH1cbicpCiAgICAgcmVzdWx0LmFwcGVuZCgnfTtcbicpCiAg
ICAgcmVzdWx0LmFwcGVuZCgnXG4nKQogICAgIHJlc3VsdC5hcHBlbmQoJ30gLy8gbmFtZXNwYWNl
IFdURlxuJykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMv
TWVzc2FnZU5hbWVzLmggYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3Nh
Z2VOYW1lcy5oCmluZGV4IDE1MmIzMzZjNGNjNDg2YTIyN2FlODgxYmFhMTEzN2I3MGY0OGEwMWIu
LmU4Y2IwYjc4OTRmN2RlNWMzZDI5MDE1MDAyNGU2ZGM2OGQzMTU3NTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmgKKysrIGIvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuaApAQCAtMTE1LDE1
ICsxMTUsMTYgQEAgY29uc3RleHByIGJvb2wgbWVzc2FnZUlzU3luYyhNZXNzYWdlTmFtZSBuYW1l
KQogbmFtZXNwYWNlIFdURiB7CiAKIHRlbXBsYXRlPD4KLWNsYXNzIEhhc0N1c3RvbUlzVmFsaWRF
bnVtPElQQzo6TWVzc2FnZU5hbWU+IDogcHVibGljIHN0ZDo6dHJ1ZV90eXBlIHsgfTsKLXRlbXBs
YXRlPHR5cGVuYW1lIEUsIHR5cGVuYW1lIFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19zYW1l
X3Y8RSwgSVBDOjpNZXNzYWdlTmFtZT4+KiA9IG51bGxwdHI+Ci1ib29sIGlzVmFsaWRFbnVtKFQg
bWVzc2FnZU5hbWUpCi17Ci0gICAgc3RhdGljX2Fzc2VydChzaXplb2YoVCkgPT0gc2l6ZW9mKEUp
LCAiaXNWYWxpZEVudW08SVBDOjpNZXNzYWdlTmFtZT4gc2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdp
dGggMTYtYml0IHR5cGVzIik7Ci0gICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3Vuc2lnbmVkPFQ+
Ojp2YWx1ZSwgImlzVmFsaWRFbnVtPElQQzo6TWVzc2FnZU5hbWU+IHNob3VsZCBvbmx5IGJlIGNh
bGxlZCB3aXRoIHVuc2lnbmVkIHR5cGVzIik7Ci0gICAgaWYgKG1lc3NhZ2VOYW1lID4gc3RhdGlj
X2Nhc3Q8c3RkOjp1bmRlcmx5aW5nX3R5cGU8SVBDOjpNZXNzYWdlTmFtZT46OnR5cGU+KElQQzo6
TWVzc2FnZU5hbWU6Okxhc3QpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIElQ
Qzo6aXNWYWxpZE1lc3NhZ2VOYW1lKHN0YXRpY19jYXN0PEU+KG1lc3NhZ2VOYW1lKSk7CitzdHJ1
Y3QgRW51bVRyYWl0czxJUEM6Ok1lc3NhZ2VOYW1lPiB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4KKyAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkRW51bShUIG1lc3NhZ2VOYW1lKQorICAgIHsKKyAg
ICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoVCkgPT0gc2l6ZW9mKElQQzo6TWVzc2FnZU5hbWUp
LCAiaXNWYWxpZEVudW08SVBDOjpNZXNzYWdlTmFtZT4gc2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdp
dGggMTYtYml0IHR5cGVzIik7CisgICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc191bnNpZ25l
ZDxUPjo6dmFsdWUsICJpc1ZhbGlkRW51bTxJUEM6Ok1lc3NhZ2VOYW1lPiBzaG91bGQgb25seSBi
ZSBjYWxsZWQgd2l0aCB1bnNpZ25lZCB0eXBlcyIpOworICAgICAgICBpZiAobWVzc2FnZU5hbWUg
PiBzdGF0aWNfY2FzdDxzdGQ6OnVuZGVybHlpbmdfdHlwZTxJUEM6Ok1lc3NhZ2VOYW1lPjo6dHlw
ZT4oSVBDOjpNZXNzYWdlTmFtZTo6TGFzdCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIHJldHVybiBJUEM6OmlzVmFsaWRNZXNzYWdlTmFtZShzdGF0aWNfY2FzdDxJUEM6Ok1l
c3NhZ2VOYW1lPihtZXNzYWdlTmFtZSkpOworICAgIH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdU
Rgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417246</attachid>
            <date>2021-01-07 23:11:48 -0800</date>
            <delta_ts>2021-01-11 05:04:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220410-20210108091146.patch</filename>
            <type>text/plain</type>
            <size>10322</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxMjg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDVkYmI5YmJiZjY0MGJlN2E3MzgwNTBl
OTQzY2E4MDg3MjQ4MWZmYjQuLmMxZDhkMjI4MjUwZTgxNzQwYzllMzA2OTAyZThiNzdjNDRhOWEz
MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMjEtMDEtMDcgIEtpbW1vIEtpbm51bmVuICA8a2tp
bm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBXZWJLaXQ6OklQQzo6RW5jb2RlciBuZWVkcyBk
ZWZpbml0aW9ucyBvZiBhbGwgY3VzdG9tIGVudW0gdmFsdWVzIGF0IHRoZSBFbmNvZGVyIGRlZmlu
aXRpb24gdGltZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjIwNDEwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAg
Q2hhbmdlIFdURjo6RW51bVRyYWl0cyB0byBoYXZlIGVpdGhlciBFbnVtVHJhaXRzOjp2YWx1ZXMg
b3IgRW51bVRyYWl0czo6aXNWYWxpZEVudW0oKS4KKyAgICAgICAgUHJldmlvdXNseSwgaWYgY2xp
ZW50cyB3YW50ZWQgdG8gY2hlY2sgaXNWYWxpZEVudW0gZm9yIGN1c3RvbSBlbnVtLCB0aGV5IGhh
ZCB0bzoKKyAgICAgICAgIDEpIERlZmluZSBIYXNDdXN0b21Jc1ZhbGlkRW51bTxUaGVpckVudW0+
IDogdHJ1ZV90eXBlIHt9OworICAgICAgICAgMikgRGVmaW5lIG5ldyBmdW5jdGlvbiB0ZW1wbGF0
ZSBpc1ZhbGlkRW51bSgpIGZvciBUaGVpckVudW0KKyAgICAgICAgIDMpIEVuc3VyZSB0aGF0IHRo
ZWlyIGlzVmFsaWRFbnVtKCkgd2FzIGRlZmluZWQgYmVmb3JlIHRoZSBkZWZpbml0aW9uIG9mIHRo
ZSBjYWxsIHRvCisgICAgICAgICAgICB0aGUgaXNWYWxpZEVudW0oKS4KKworICAgICAgICBUaGlz
IGhhcyB0aGUgcHJvYmxlbSB0aGF0IGlzVmFsaWRFbnVtKCkgY2Fubm90IGJlIGNhbGxlZCBpbiBn
ZW5lcmljIGNvZGUsIGJlY2F1c2UKKyAgICAgICAgYXQgdGhlIGRlZmluaXRpb24gdGltZSBnZW5l
cmljIGNvZGUgdHlwaWNhbGx5IGRvZXMgbm90IGhhdmUgYWxsIHRoZSB0eXBlcyBpbiBzY29wZQor
ICAgICAgICB0aGF0IHdpbGwgYmUgdXNlZCBhdCBpbnN0YW50aWF0aW9uIHRpbWUuCisgICAgICAg
IEVhY2ggaXNWYWxpZEVudW0oKSBpcyB0aGVpciBvd24gZnVuY3Rpb24gdGVtcGxhdGUsIEMrKyBk
b2VzIG5vdCBoYXZlIGZ1bmN0aW9uIHRlbXBsYXRlCisgICAgICAgIHNwZWNpYWxpemF0aW9uLgor
CisgICAgICAgIEFmdGVyIHRoZSBjaGFuZ2UsIGNsaWVudHMgbmVlZCB0bzoKKyAgICAgICAgIDEp
IERlZmluZSBFbnVtVHJhaXRzPFRoZWlyRW51bT4geyBib29sIGlzVmFsaWRFbnVtKC4uLikgfQor
CisgICAgICAgIEZpeCBieSB1c2luZyB0aGUgZmFjdCB0aGF0IFdURjo6RW51bVRyYWl0cyBpcyBh
IGNsYXNzIGFuZCB0aGF0IGNhbiBoYXZlIHRlbXBsYXRlCisgICAgICAgIHNwZWNpYWxpemF0aW9u
cy4KKworICAgICAgICBDb25zaXN0ZW50IHdpdGggdGhlIEVudW1UcmFpdHM6OnZhbHVlcyBjYXNl
OgorICAgICAgICAgIGEpIEF1dG9tYXRpYyBjYXNlPyAgICAgLS0+IERlZmluZSBFbnVtVHJhaXRz
Ojp2YWx1ZXMKKyAgICAgICAgICBiKSBNYW51YWwvY3VzdG9tIGNhc2U/IC0tPiBEZWZpbmUgRW51
bVRyYWl0czo6aXNWYWxpZEVudW0oKQorCisgICAgICAgICogd3RmL0VudW1UcmFpdHMuaDoKKyAg
ICAgICAgKFdURjo6aXNWYWxpZEVudW0pOgorCiAyMDIxLTAxLTA3ICBDb21taXQgUXVldWUgIDxj
b21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcg
cjI3MTE5Mi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmODMzZDE3ZjE5ZTE5Y2M0MTRmOGY3ZTY4M2Y0ODU3NTUx
OTJlZjJmLi4xYzhkODNhMGMxZTg5ZWFhMGY0NzUxZmMwMjFiMGUwNWE0M2I2ZWIyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMDEtMDcgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51
bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBXZWJLaXQ6OklQQzo6RW5jb2RlciBuZWVkcyBkZWZp
bml0aW9ucyBvZiBhbGwgY3VzdG9tIGVudW0gdmFsdWVzIGF0IHRoZSBFbmNvZGVyIGRlZmluaXRp
b24gdGltZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjIwNDEwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgQ2hh
bmdlIFdURjo6RW51bVRyYWl0cyB0byBoYXZlIGVpdGhlciBFbnVtVHJhaXRzOjp2YWx1ZXMgb3Ig
RW51bVRyYWl0czo6aXNWYWxpZEVudW0oKS4KKworICAgICAgICBDaGFuZ2UgaGVyZSBuZWVkZWQg
dG8gY29uZm9ybSB0byB0aGUgbmV3IHByb3RvY29sLiBGaXhlcyBhbiBpc3N1ZSB3aXRoIHRoZSB0
ZW1wbGF0ZSB1c2FnZQorICAgICAgICBpbiBXZWJLaXQ6OklQQzo6RW5jb2Rlciwgc2VlIFdlYktp
dCBhbmQgV1RGIENoYW5nZUxvZ3MgZm9yIGRpc2N1c3Npb24uCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9Db250ZXh0TWVudUl0ZW0uaDoKKyAgICAgICAgKFdURjo6RW51bVRyYWl0czxXZWJDb3JlOjpD
b250ZXh0TWVudUFjdGlvbj46OmlzVmFsaWRFbnVtKToKKwogMjAyMS0wMS0wNyAgWmFsYW4gQnVq
dGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIHBheXBhbC5jb206IHRleHQgYXQgdGhl
IGJvdHRvbSBvZiB0aGUgcGFnZSBpcyBub3QgYWxpZ25lZCBwcm9wZXJseQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBl
NmEzMmIxNDllMDI2Mjc3ZTlhZTc2NTA1OTNhNGIxODM0MTc4OWZmLi5lOTM5ZWMxN2JhYjAwNWI2
MjZmNTZkZDBkNTA4ZGU3OTk4ZjIyYWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIx
LTAxLTA3ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAg
V2ViS2l0OjpJUEM6OkVuY29kZXIgbmVlZHMgZGVmaW5pdGlvbnMgb2YgYWxsIGN1c3RvbSBlbnVt
IHZhbHVlcyBhdCB0aGUgRW5jb2RlciBkZWZpbml0aW9uIHRpbWUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDQxMAorCisgICAgICAgIFJldmlld2Vk
IGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIENoYW5nZSBXVEY6OkVudW1UcmFpdHMgdG8gaGF2
ZSBlaXRoZXIgRW51bVRyYWl0czo6dmFsdWVzIG9yIEVudW1UcmFpdHM6OmlzVmFsaWRFbnVtKCku
CisKKyAgICAgICAgRml4ZXMgdGhlIHVwY29taW5nIHByb2JsZW0gd2hlcmUgRW5jb2Rlcjo6ZW5j
b2RlKEUpIGZ1bmN0aW9uIGlzIG1vdmVkIGZyb20gRW5jb2RlcgorICAgICAgICB0byBvdGhlciBj
bGFzcywgc3VjaCBhcyBFbmNvZGVyQmFzZSwgYW5kIHdoZXJlIHdlIGRvIG5vdCB3YW50IHRvIGFk
ZCByZWR1bmRhbnQgaW5jbHVkZXMuCisgICAgICAgIFNlZSB0aGUgV1RGLyBDaGFuZ2VMb2cgZm9y
IGRpc2N1c3Npb25nIHdydCB3aHkgdGhleSB3ZXJlIG5lZWRlZCBiZWZvcmUuCisKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90
ZXN0cy9NZXNzYWdlTmFtZXMuaDoKKyAgICAgICAgKFdURjo6RW51bVRyYWl0czxJUEM6Ok1lc3Nh
Z2VOYW1lPjo6aXNWYWxpZEVudW0pOgorCiAyMDIxLTAxLTA3ICBLYXRlIENoZW5leSAgPGthdGhl
cmluZV9jaGVuZXlAYXBwbGUuY29tPgogCiAgICAgICAgIEVycm9yIGluIGxheW91dCB0ZXN0czog
IlBhc3NlZCBJVFAgZW5hYmxlZCBzdGF0ZSAoMCkgZG9lcyBub3QgbWF0Y2ggVENDIHNldHRpbmcg
KDEpIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRW51bVRyYWl0cy5oIGIvU291cmNlL1dU
Ri93dGYvRW51bVRyYWl0cy5oCmluZGV4IDk5Mjc4ODcyOTNkMGE3YjNiYTFlODUwNmIwY2RhZjM1
M2E5OWIyNGEuLjFkZGI5MjE0NTQwZGI4ODBlMDBmYTM2ZTg0MmNmM2YyZjVlYWU4Y2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0VudW1UcmFpdHMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9F
bnVtVHJhaXRzLmgKQEAgLTUxLDE3ICs1MSwyMSBAQCBzdHJ1Y3QgRW51bVZhbHVlQ2hlY2tlcjxU
LCBFbnVtVmFsdWVzPEU+PiB7CiAgICAgfQogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVT4gY2xh
c3MgSGFzQ3VzdG9tSXNWYWxpZEVudW0gOiBwdWJsaWMgc3RkOjpmYWxzZV90eXBlIHsgfTsKLQot
dGVtcGxhdGU8dHlwZW5hbWUgRSwgdHlwZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDxzdGQ6Omlz
X2VudW08RT46OnZhbHVlICYmICFzdGQ6OmlzX3NhbWU8c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxF
PiwgYm9vbD46OnZhbHVlICYmICFIYXNDdXN0b21Jc1ZhbGlkRW51bTxFPjo6dmFsdWU+KiA9IG51
bGxwdHI+Ci1jb25zdGV4cHIgYm9vbCBpc1ZhbGlkRW51bShUIHQpCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBFLCB0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8IXN0ZDo6aXNfc2Ft
ZV92PHN0ZDo6dW5kZXJseWluZ190eXBlX3Q8RT4sIGJvb2w+Pj4KK2NvbnN0ZXhwciBhdXRvIGlz
VmFsaWRFbnVtKFQgdCkgLT4gZGVjbHR5cGUoRW51bVZhbHVlQ2hlY2tlcjxULCB0eXBlbmFtZSBF
bnVtVHJhaXRzPEU+Ojp2YWx1ZXM+Ojppc1ZhbGlkRW51bSh0KSwgYm9vbCgpKQogewogICAgIHN0
YXRpY19hc3NlcnQoc2l6ZW9mKFQpID49IHNpemVvZihzdGQ6OnVuZGVybHlpbmdfdHlwZV90PEU+
KSwgIkludGVncmFsIHR5cGUgbXVzdCBiZSBhdCBsZWFzdCB0aGUgc2l6ZSBvZiB0aGUgdW5kZXJs
eWluZyBlbnVtIHR5cGUiKTsKIAogICAgIHJldHVybiBFbnVtVmFsdWVDaGVja2VyPFQsIHR5cGVu
YW1lIEVudW1UcmFpdHM8RT46OnZhbHVlcz46OmlzVmFsaWRFbnVtKHQpOwogfQogCi10ZW1wbGF0
ZTx0eXBlbmFtZSBFLCB0eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfc2FtZTxz
dGQ6OnVuZGVybHlpbmdfdHlwZV90PEU+LCBib29sPjo6dmFsdWU+KiA9IG51bGxwdHI+Cit0ZW1w
bGF0ZTx0eXBlbmFtZSBFLCB0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8
IXN0ZDo6aXNfc2FtZV92PHN0ZDo6dW5kZXJseWluZ190eXBlX3Q8RT4sIGJvb2w+Pj4KK2F1dG8g
aXNWYWxpZEVudW0oVCB0KSAtPiBkZWNsdHlwZShFbnVtVHJhaXRzPEU+Ojppc1ZhbGlkRW51bSh0
KSwgYm9vbCgpKQoreworICAgIHJldHVybiBFbnVtVHJhaXRzPEU+Ojppc1ZhbGlkRW51bSh0KTsK
K30KKwordGVtcGxhdGU8dHlwZW5hbWUgRSwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgPSBzdGQ6OmVu
YWJsZV9pZl90PHN0ZDo6aXNfc2FtZV92PHN0ZDo6dW5kZXJseWluZ190eXBlX3Q8RT4sIGJvb2w+
Pj4KIGNvbnN0ZXhwciBib29sIGlzVmFsaWRFbnVtKFQgdCkKIHsKICAgICByZXR1cm4gIXQgfHwg
dCA9PSAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnVJ
dGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVudUl0ZW0uaAppbmRleCBl
ODQwMGFjZDBjZjg1MjcyM2E1MTlkMDk2MTliNGFmNWI4ZDQ3MWQ1Li44NDM3MWZmOGY3MDM5OGE4
ZDgwYzNjNmFkZjliYTdiNzI3ODlhYTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Db250ZXh0TWVudUl0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250
ZXh0TWVudUl0ZW0uaApAQCAtMjA4LDEzICsyMDgsMTIgQEAgV0VCQ09SRV9FWFBPUlQgYm9vbCBp
c1ZhbGlkQ29udGV4dE1lbnVBY3Rpb24oQ29udGV4dE1lbnVBY3Rpb24pOwogbmFtZXNwYWNlIFdU
RiB7CiAKIHRlbXBsYXRlPD4KLWNsYXNzIEhhc0N1c3RvbUlzVmFsaWRFbnVtPFdlYkNvcmU6OkNv
bnRleHRNZW51QWN0aW9uPiA6IHB1YmxpYyBzdGQ6OnRydWVfdHlwZSB7IH07Ci0KLXRlbXBsYXRl
PHR5cGVuYW1lIEUsIHR5cGVuYW1lIFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19zYW1lX3Y8
RSwgV2ViQ29yZTo6Q29udGV4dE1lbnVBY3Rpb24+PiogPSBudWxscHRyPgotYm9vbCBpc1ZhbGlk
RW51bShUIGFjdGlvbikKLXsKLSAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihUKSA9PSBzaXplb2Yo
RSksICJpc1ZhbGlkRW51bTxXZWJDb3JlOjpDb250ZXh0TWVudUFjdGlvbj4gc2hvdWxkIG9ubHkg
YmUgY2FsbGVkIHdpdGggMzItYml0IHR5cGVzIik7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmlzVmFs
aWRDb250ZXh0TWVudUFjdGlvbihzdGF0aWNfY2FzdDxFPihhY3Rpb24pKTsKK3N0cnVjdCBFbnVt
VHJhaXRzPFdlYkNvcmU6OkNvbnRleHRNZW51QWN0aW9uPiB7CisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4KKyAgICBzdGF0aWMgc3RkOjplbmFibGVfaWZfdDxzaXplb2YoVCkgPT0gc2l6ZW9mKFdl
YkNvcmU6OkNvbnRleHRNZW51QWN0aW9uKSwgYm9vbD4gaXNWYWxpZEVudW0oVCBhY3Rpb24pCisg
ICAgeworICAgICAgICByZXR1cm4gV2ViQ29yZTo6aXNWYWxpZENvbnRleHRNZW51QWN0aW9uKHN0
YXRpY19jYXN0PFdlYkNvcmU6OkNvbnRleHRNZW51QWN0aW9uPihhY3Rpb24pKTsKKyAgICB9Owog
fTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpDb250ZXh0TWVudUl0
ZW1UeXBlPiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3Nh
Z2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCAw
Njc1YTM1YzlkMWFiNDI1NmEzNjA0MWM4YjFiMWYwYzhlMGZjOWU4Li5lYTNjMGI3OGFjNjUzMTYw
MGQyZDExYWVlMjE0NWQxYzY4MzQzOGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
bWVzc2FnZXMucHkKQEAgLTk4OCwxNSArOTg4LDE0IEBAIGRlZiBnZW5lcmF0ZV9tZXNzYWdlX25h
bWVzX2hlYWRlcihyZWNlaXZlcnMpOgogICAgIHJlc3VsdC5hcHBlbmQoJ25hbWVzcGFjZSBXVEYg
e1xuJykKICAgICByZXN1bHQuYXBwZW5kKCdcbicpCiAgICAgcmVzdWx0LmFwcGVuZCgndGVtcGxh
dGU8PlxuJykKLSAgICByZXN1bHQuYXBwZW5kKCdjbGFzcyBIYXNDdXN0b21Jc1ZhbGlkRW51bTxJ
UEM6Ok1lc3NhZ2VOYW1lPiA6IHB1YmxpYyBzdGQ6OnRydWVfdHlwZSB7IH07XG4nKQotICAgIHJl
c3VsdC5hcHBlbmQoJ3RlbXBsYXRlPHR5cGVuYW1lIEUsIHR5cGVuYW1lIFQsIHN0ZDo6ZW5hYmxl
X2lmX3Q8c3RkOjppc19zYW1lX3Y8RSwgSVBDOjpNZXNzYWdlTmFtZT4+KiA9IG51bGxwdHI+XG4n
KQotICAgIHJlc3VsdC5hcHBlbmQoJ2Jvb2wgaXNWYWxpZEVudW0oVCBtZXNzYWdlTmFtZSlcbicp
Ci0gICAgcmVzdWx0LmFwcGVuZCgne1xuJykKLSAgICByZXN1bHQuYXBwZW5kKCcgICAgc3RhdGlj
X2Fzc2VydChzaXplb2YoVCkgPT0gc2l6ZW9mKEUpLCAiaXNWYWxpZEVudW08SVBDOjpNZXNzYWdl
TmFtZT4gc2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdpdGggMTYtYml0IHR5cGVzIik7XG4nKQotICAg
IHJlc3VsdC5hcHBlbmQoJyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdW5zaWduZWQ8VD46OnZh
bHVlLCAiaXNWYWxpZEVudW08SVBDOjpNZXNzYWdlTmFtZT4gc2hvdWxkIG9ubHkgYmUgY2FsbGVk
IHdpdGggdW5zaWduZWQgdHlwZXMiKTtcbicpCi0gICAgcmVzdWx0LmFwcGVuZCgnICAgIGlmICht
ZXNzYWdlTmFtZSA+IHN0YXRpY19jYXN0PHN0ZDo6dW5kZXJseWluZ190eXBlPElQQzo6TWVzc2Fn
ZU5hbWU+Ojp0eXBlPihJUEM6Ok1lc3NhZ2VOYW1lOjpMYXN0KSlcbicpCi0gICAgcmVzdWx0LmFw
cGVuZCgnICAgICAgICByZXR1cm4gZmFsc2U7XG4nKQotICAgIHJlc3VsdC5hcHBlbmQoJyAgICBy
ZXR1cm4gSVBDOjppc1ZhbGlkTWVzc2FnZU5hbWUoc3RhdGljX2Nhc3Q8RT4obWVzc2FnZU5hbWUp
KTtcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnc3RydWN0IEVudW1UcmFpdHM8SVBDOjpNZXNzYWdl
TmFtZT4ge1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD5c
bicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAgIHN0YXRpYyBzdGQ6OmVuYWJsZV9pZl90PHNpemVv
ZihUKSA9PSBzaXplb2YoSVBDOjpNZXNzYWdlTmFtZSkgJiYgc3RkOjppc191bnNpZ25lZF92PFQ+
LCBib29sPiBpc1ZhbGlkRW51bShUIG1lc3NhZ2VOYW1lKVxuJykKKyAgICByZXN1bHQuYXBwZW5k
KCcgICAge1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIGlmIChtZXNzYWdlTmFtZSA+
IFdURjo6ZW51bVRvVW5kZXJseWluZ1R5cGUoSVBDOjpNZXNzYWdlTmFtZTo6TGFzdCkpXG4nKQor
ICAgIHJlc3VsdC5hcHBlbmQoJyAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbicpCisgICAgcmVz
dWx0LmFwcGVuZCgnICAgICAgICByZXR1cm4gSVBDOjppc1ZhbGlkTWVzc2FnZU5hbWUoc3RhdGlj
X2Nhc3Q8SVBDOjpNZXNzYWdlTmFtZT4obWVzc2FnZU5hbWUpKTtcbicpCisgICAgcmVzdWx0LmFw
cGVuZCgnICAgIH1cbicpCiAgICAgcmVzdWx0LmFwcGVuZCgnfTtcbicpCiAgICAgcmVzdWx0LmFw
cGVuZCgnXG4nKQogICAgIHJlc3VsdC5hcHBlbmQoJ30gLy8gbmFtZXNwYWNlIFdURlxuJykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVz
LmggYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VOYW1lcy5oCmlu
ZGV4IDE1MmIzMzZjNGNjNDg2YTIyN2FlODgxYmFhMTEzN2I3MGY0OGEwMWIuLjIzZjc1NjA4N2Q2
ODNhZDIyYjA2OGUyYTcxZmQ5NWEwZjNjZTU1NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmgKKysrIGIvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuaApAQCAtMTE1LDE1ICsxMTUsMTQgQEAg
Y29uc3RleHByIGJvb2wgbWVzc2FnZUlzU3luYyhNZXNzYWdlTmFtZSBuYW1lKQogbmFtZXNwYWNl
IFdURiB7CiAKIHRlbXBsYXRlPD4KLWNsYXNzIEhhc0N1c3RvbUlzVmFsaWRFbnVtPElQQzo6TWVz
c2FnZU5hbWU+IDogcHVibGljIHN0ZDo6dHJ1ZV90eXBlIHsgfTsKLXRlbXBsYXRlPHR5cGVuYW1l
IEUsIHR5cGVuYW1lIFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19zYW1lX3Y8RSwgSVBDOjpN
ZXNzYWdlTmFtZT4+KiA9IG51bGxwdHI+Ci1ib29sIGlzVmFsaWRFbnVtKFQgbWVzc2FnZU5hbWUp
Ci17Ci0gICAgc3RhdGljX2Fzc2VydChzaXplb2YoVCkgPT0gc2l6ZW9mKEUpLCAiaXNWYWxpZEVu
dW08SVBDOjpNZXNzYWdlTmFtZT4gc2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdpdGggMTYtYml0IHR5
cGVzIik7Ci0gICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3Vuc2lnbmVkPFQ+Ojp2YWx1ZSwgImlz
VmFsaWRFbnVtPElQQzo6TWVzc2FnZU5hbWU+IHNob3VsZCBvbmx5IGJlIGNhbGxlZCB3aXRoIHVu
c2lnbmVkIHR5cGVzIik7Ci0gICAgaWYgKG1lc3NhZ2VOYW1lID4gc3RhdGljX2Nhc3Q8c3RkOjp1
bmRlcmx5aW5nX3R5cGU8SVBDOjpNZXNzYWdlTmFtZT46OnR5cGU+KElQQzo6TWVzc2FnZU5hbWU6
Okxhc3QpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIElQQzo6aXNWYWxpZE1l
c3NhZ2VOYW1lKHN0YXRpY19jYXN0PEU+KG1lc3NhZ2VOYW1lKSk7CitzdHJ1Y3QgRW51bVRyYWl0
czxJUEM6Ok1lc3NhZ2VOYW1lPiB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBzdGF0
aWMgc3RkOjplbmFibGVfaWZfdDxzaXplb2YoVCkgPT0gc2l6ZW9mKElQQzo6TWVzc2FnZU5hbWUp
ICYmIHN0ZDo6aXNfdW5zaWduZWRfdjxUPiwgYm9vbD4gaXNWYWxpZEVudW0oVCBtZXNzYWdlTmFt
ZSkKKyAgICB7CisgICAgICAgIGlmIChtZXNzYWdlTmFtZSA+IFdURjo6ZW51bVRvVW5kZXJseWlu
Z1R5cGUoSVBDOjpNZXNzYWdlTmFtZTo6TGFzdCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIHJldHVybiBJUEM6OmlzVmFsaWRNZXNzYWdlTmFtZShzdGF0aWNfY2FzdDxJUEM6
Ok1lc3NhZ2VOYW1lPihtZXNzYWdlTmFtZSkpOworICAgIH0KIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdURgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>