Topic: General purpose utilities for template
Author: Vincent Reverdy <vince.rev@gmail.com>
Date: Sat, 3 Mar 2018 22:55:38 -0800 (PST)
Raw View
------=_Part_10232_1978397646.1520146538613
Content-Type: multipart/alternative;
boundary="----=_Part_10233_2019831081.1520146538613"
------=_Part_10233_2019831081.1520146538613
Content-Type: text/plain; charset="UTF-8"
Hey,
I was starting to think about putting together a proposal to add minor
helper classes to either type_traits/utility/tuple to help with some of the
operations done again and again when doing template metaprogramming.
Here is a list of a few I can think of, but I would have liked to hear
other suggestions. Names are just indicative, and bikeshedding would happen
for all of these types.
- *std::blank*, defined as an empty struct
struct blank{};
- *std::pack*, to hold a parameter pack of type
template <class... T> struct pack{};
- *std::convertible*, a type convertible to anything
struct convertible{template <class T> constexpr operator T() const
noexcept;};
- *std::copy_qualifiers*, a type traits copying ref and cv qualifiers
from one type to another
template <class From, class To> struct copy_qualifiers {using type = /*
cv-ref qualfiers of From applied to To*/;};
Other suggestions?
--
You received this message because you are subscribed to the Google Groups "ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an email to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
To view this discussion on the web visit https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/e3415a75-7e20-48dd-9e24-0e4681f46e53%40isocpp.org.
------=_Part_10233_2019831081.1520146538613
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr">Hey,<br><br>I was starting to think about putting together=
a proposal to add minor helper classes to either type_traits/utility/tuple=
to help with some of the operations done again and again when doing templa=
te metaprogramming.<br>Here is a list of a few I can think of, but I would =
have liked to hear other suggestions. Names are just indicative, and bikesh=
edding would happen for all of these types.<br><br><ul><li><b>std::blank</b=
>, defined as an empty struct <div style=3D"background-color: rgb(250, 250,=
250); border-color: rgb(187, 187, 187); border-style: solid; border-width:=
1px; overflow-wrap: break-word;" class=3D"prettyprint"><code class=3D"pret=
typrint"><div class=3D"subprettyprint"><span style=3D"color: #008;" class=
=3D"styled-by-prettify">struct</span><span style=3D"color: #000;" class=3D"=
styled-by-prettify"> blank</span><span style=3D"color: #660;" class=3D"styl=
ed-by-prettify">{};</span></div></code></div></li><li><b>std::pack</b>, to =
hold a parameter pack of type<div style=3D"background-color: rgb(250, 250, =
250); border-color: rgb(187, 187, 187); border-style: solid; border-width: =
1px; overflow-wrap: break-word;" class=3D"prettyprint"><code class=3D"prett=
yprint"><div class=3D"subprettyprint"><span style=3D"color: #008;" class=3D=
"styled-by-prettify">template</span><span style=3D"color: #000;" class=3D"s=
tyled-by-prettify"> </span><span style=3D"color: #660;" class=3D"styled-by-=
prettify"><</span><span style=3D"color: #008;" class=3D"styled-by-pretti=
fy">class</span><span style=3D"color: #660;" class=3D"styled-by-prettify">.=
...</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> T</span=
><span style=3D"color: #660;" class=3D"styled-by-prettify">></span><span=
style=3D"color: #000;" class=3D"styled-by-prettify"> </span><span style=3D=
"color: #008;" class=3D"styled-by-prettify">struct</span><span style=3D"col=
or: #000;" class=3D"styled-by-prettify"> pack</span><span style=3D"color: #=
660;" class=3D"styled-by-prettify">{};</span><span style=3D"color: #000;" c=
lass=3D"styled-by-prettify"><br></span></div></code></div></li><li><b>std::=
convertible</b>, a type convertible to anything<div style=3D"background-col=
or: rgb(250, 250, 250); border-color: rgb(187, 187, 187); border-style: sol=
id; border-width: 1px; overflow-wrap: break-word;" class=3D"prettyprint"><c=
ode class=3D"prettyprint"><div class=3D"subprettyprint"><span style=3D"colo=
r: #008;" class=3D"styled-by-prettify">struct</span><span style=3D"color: #=
000;" class=3D"styled-by-prettify"> convertible</span><span style=3D"color:=
#660;" class=3D"styled-by-prettify">{</span><span style=3D"color: #008;" c=
lass=3D"styled-by-prettify">template</span><span style=3D"color: #000;" cla=
ss=3D"styled-by-prettify"> </span><span style=3D"color: #660;" class=3D"sty=
led-by-prettify"><</span><span style=3D"color: #008;" class=3D"styled-by=
-prettify">class</span><span style=3D"color: #000;" class=3D"styled-by-pret=
tify"> T</span><span style=3D"color: #660;" class=3D"styled-by-prettify">&g=
t;</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> </span>=
<span style=3D"color: #008;" class=3D"styled-by-prettify">constexpr</span><=
span style=3D"color: #000;" class=3D"styled-by-prettify"> </span><span styl=
e=3D"color: #008;" class=3D"styled-by-prettify">operator</span><span style=
=3D"color: #000;" class=3D"styled-by-prettify"> T</span><span style=3D"colo=
r: #660;" class=3D"styled-by-prettify">()</span><span style=3D"color: #000;=
" class=3D"styled-by-prettify"> </span><span style=3D"color: #008;" class=
=3D"styled-by-prettify">const</span><span style=3D"color: #000;" class=3D"s=
tyled-by-prettify"> noexcept</span><span style=3D"color: #660;" class=3D"st=
yled-by-prettify">;};</span><span style=3D"color: #000;" class=3D"styled-by=
-prettify"><br></span></div></code></div></li><li><b>std::copy_qualifiers</=
b>, a type traits copying ref and cv qualifiers from one type to another<co=
de class=3D"prettyprint"><div class=3D"subprettyprint"><div style=3D"backgr=
ound-color: rgb(250, 250, 250); border-color: rgb(187, 187, 187); border-st=
yle: solid; border-width: 1px; overflow-wrap: break-word;" class=3D"prettyp=
rint"><code class=3D"prettyprint"><div class=3D"subprettyprint"><span style=
=3D"color: #008;" class=3D"styled-by-prettify">template</span><span style=
=3D"color: #000;" class=3D"styled-by-prettify"> </span><span style=3D"color=
: #660;" class=3D"styled-by-prettify"><</span><span style=3D"color: #008=
;" class=3D"styled-by-prettify">class</span><span style=3D"color: #000;" cl=
ass=3D"styled-by-prettify"> </span><span style=3D"color: #606;" class=3D"st=
yled-by-prettify">From</span><span style=3D"color: #660;" class=3D"styled-b=
y-prettify">,</span><span style=3D"color: #000;" class=3D"styled-by-prettif=
y"> </span><span style=3D"color: #008;" class=3D"styled-by-prettify">class<=
/span><span style=3D"color: #000;" class=3D"styled-by-prettify"> </span><sp=
an style=3D"color: #606;" class=3D"styled-by-prettify">To</span><span style=
=3D"color: #660;" class=3D"styled-by-prettify">></span><span style=3D"co=
lor: #000;" class=3D"styled-by-prettify"> </span><span style=3D"color: #008=
;" class=3D"styled-by-prettify">struct</span><span style=3D"color: #000;" c=
lass=3D"styled-by-prettify"> copy_qualifiers </span><span style=3D"color: #=
660;" class=3D"styled-by-prettify">{</span><span style=3D"color: #008;" cla=
ss=3D"styled-by-prettify">using</span><span style=3D"color: #000;" class=3D=
"styled-by-prettify"> type </span><span style=3D"color: #660;" class=3D"sty=
led-by-prettify">=3D</span><span style=3D"color: #000;" class=3D"styled-by-=
prettify"> </span><span style=3D"color: #800;" class=3D"styled-by-prettify"=
>/* cv-ref qualfiers of From applied to To*/</span><span style=3D"color: #6=
60;" class=3D"styled-by-prettify">;};</span><span style=3D"color: #000;" cl=
ass=3D"styled-by-prettify"><br></span></div></code></div><span style=3D"col=
or: #000;" class=3D"styled-by-prettify"></span></div></code></li></ul><p>Ot=
her suggestions?<br></p></div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/e3415a75-7e20-48dd-9e24-0e4681f46e53%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/e3415a75-7e20-48dd-9e24-0e4681f46e53=
%40isocpp.org</a>.<br />
------=_Part_10233_2019831081.1520146538613--
------=_Part_10232_1978397646.1520146538613--
.
Author: Richard Hodges <hodges.r@gmail.com>
Date: Sun, 4 Mar 2018 11:58:12 +0100
Raw View
--94eb2c060312f0de050566941567
Content-Type: text/plain; charset="UTF-8"
For my part, while I think the general idea is a good one, it seems to me
that you will make a stronger argument if you are able to provide
motivating use-cases to strengthen the argument for each type/template.
Do you have some examples?
On 4 March 2018 at 07:55, Vincent Reverdy <vince.rev@gmail.com> wrote:
> Hey,
>
> I was starting to think about putting together a proposal to add minor
> helper classes to either type_traits/utility/tuple to help with some of the
> operations done again and again when doing template metaprogramming.
> Here is a list of a few I can think of, but I would have liked to hear
> other suggestions. Names are just indicative, and bikeshedding would happen
> for all of these types.
>
>
> - *std::blank*, defined as an empty struct
> struct blank{};
> - *std::pack*, to hold a parameter pack of type
> template <class... T> struct pack{};
> - *std::convertible*, a type convertible to anything
> struct convertible{template <class T> constexpr operator T() const
> noexcept;};
> - *std::copy_qualifiers*, a type traits copying ref and cv qualifiers
> from one type to another
> template <class From, class To> struct copy_qualifiers {using type = /*
> cv-ref qualfiers of From applied to To*/;};
>
> Other suggestions?
>
> --
> You received this message because you are subscribed to the Google Groups
> "ISO C++ Standard - Future Proposals" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to std-proposals+unsubscribe@isocpp.org.
> To post to this group, send email to std-proposals@isocpp.org.
> To view this discussion on the web visit https://groups.google.com/a/
> isocpp.org/d/msgid/std-proposals/e3415a75-7e20-48dd-
> 9e24-0e4681f46e53%40isocpp.org
> <https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/e3415a75-7e20-48dd-9e24-0e4681f46e53%40isocpp.org?utm_medium=email&utm_source=footer>
> .
>
--
You received this message because you are subscribed to the Google Groups "ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an email to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
To view this discussion on the web visit https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/CALvx3hacsACYSq%2Bh7BHNCjZ2rpajbdcBxa8GigKuHnjO79YDyQ%40mail.gmail.com.
--94eb2c060312f0de050566941567
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr">For my part, while I think the general idea is a good one,=
it seems to me that you will make a stronger argument if you are able to p=
rovide motivating use-cases to strengthen the argument for each type/templa=
te.<div><br></div><div>Do you have some examples?</div><div><br><div><br></=
div></div></div><div class=3D"gmail_extra"><br><div class=3D"gmail_quote">O=
n 4 March 2018 at 07:55, Vincent Reverdy <span dir=3D"ltr"><<a href=3D"m=
ailto:vince.rev@gmail.com" target=3D"_blank">vince.rev@gmail.com</a>></s=
pan> wrote:<br><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex=
;border-left:1px #ccc solid;padding-left:1ex"><div dir=3D"ltr">Hey,<br><br>=
I was starting to think about putting together a proposal to add minor help=
er classes to either type_traits/utility/tuple to help with some of the ope=
rations done again and again when doing template metaprogramming.<br>Here i=
s a list of a few I can think of, but I would have liked to hear other sugg=
estions. Names are just indicative, and bikeshedding would happen for all o=
f these types.<br><br><ul><li><b>std::blank</b>, defined as an empty struct=
<div style=3D"background-color:rgb(250,250,250);border-color:rgb(187,187,1=
87);border-style:solid;border-width:1px" class=3D"m_6942501654450711629pret=
typrint"><code class=3D"m_6942501654450711629prettyprint"><div class=3D"m_6=
942501654450711629subprettyprint"><span style=3D"color:#008" class=3D"m_694=
2501654450711629styled-by-prettify">struct</span><span style=3D"color:#000"=
class=3D"m_6942501654450711629styled-by-prettify"> blank</span><span style=
=3D"color:#660" class=3D"m_6942501654450711629styled-by-prettify">{};</span=
></div></code></div></li><li><b>std::pack</b>, to hold a parameter pack of =
type<div style=3D"background-color:rgb(250,250,250);border-color:rgb(187,18=
7,187);border-style:solid;border-width:1px" class=3D"m_6942501654450711629p=
rettyprint"><code class=3D"m_6942501654450711629prettyprint"><div class=3D"=
m_6942501654450711629subprettyprint"><span style=3D"color:#008" class=3D"m_=
6942501654450711629styled-by-prettify">template</span><span style=3D"color:=
#000" class=3D"m_6942501654450711629styled-by-prettify"> </span><span style=
=3D"color:#660" class=3D"m_6942501654450711629styled-by-prettify"><</spa=
n><span style=3D"color:#008" class=3D"m_6942501654450711629styled-by-pretti=
fy">class</span><span style=3D"color:#660" class=3D"m_6942501654450711629st=
yled-by-prettify">...</span><span style=3D"color:#000" class=3D"m_694250165=
4450711629styled-by-prettify"> T</span><span style=3D"color:#660" class=3D"=
m_6942501654450711629styled-by-prettify">></span><span style=3D"color:#0=
00" class=3D"m_6942501654450711629styled-by-prettify"> </span><span style=
=3D"color:#008" class=3D"m_6942501654450711629styled-by-prettify">struct</s=
pan><span style=3D"color:#000" class=3D"m_6942501654450711629styled-by-pret=
tify"> pack</span><span style=3D"color:#660" class=3D"m_6942501654450711629=
styled-by-prettify">{};</span><span style=3D"color:#000" class=3D"m_6942501=
654450711629styled-by-prettify"><br></span></div></code></div></li><li><b>s=
td::convertible</b>, a type convertible to anything<div style=3D"background=
-color:rgb(250,250,250);border-color:rgb(187,187,187);border-style:solid;bo=
rder-width:1px" class=3D"m_6942501654450711629prettyprint"><code class=3D"m=
_6942501654450711629prettyprint"><div class=3D"m_6942501654450711629subpret=
typrint"><span style=3D"color:#008" class=3D"m_6942501654450711629styled-by=
-prettify">struct</span><span style=3D"color:#000" class=3D"m_6942501654450=
711629styled-by-prettify"> convertible</span><span style=3D"color:#660" cla=
ss=3D"m_6942501654450711629styled-by-prettify">{</span><span style=3D"color=
:#008" class=3D"m_6942501654450711629styled-by-prettify">template</span><sp=
an style=3D"color:#000" class=3D"m_6942501654450711629styled-by-prettify"> =
</span><span style=3D"color:#660" class=3D"m_6942501654450711629styled-by-p=
rettify"><</span><span style=3D"color:#008" class=3D"m_69425016544507116=
29styled-by-prettify">class</span><span style=3D"color:#000" class=3D"m_694=
2501654450711629styled-by-prettify"> T</span><span style=3D"color:#660" cla=
ss=3D"m_6942501654450711629styled-by-prettify">></span><span style=3D"co=
lor:#000" class=3D"m_6942501654450711629styled-by-prettify"> </span><span s=
tyle=3D"color:#008" class=3D"m_6942501654450711629styled-by-prettify">const=
expr</span><span style=3D"color:#000" class=3D"m_6942501654450711629styled-=
by-prettify"> </span><span style=3D"color:#008" class=3D"m_6942501654450711=
629styled-by-prettify">operator</span><span style=3D"color:#000" class=3D"m=
_6942501654450711629styled-by-prettify"> T</span><span style=3D"color:#660"=
class=3D"m_6942501654450711629styled-by-prettify">()</span><span style=3D"=
color:#000" class=3D"m_6942501654450711629styled-by-prettify"> </span><span=
style=3D"color:#008" class=3D"m_6942501654450711629styled-by-prettify">con=
st</span><span style=3D"color:#000" class=3D"m_6942501654450711629styled-by=
-prettify"> noexcept</span><span style=3D"color:#660" class=3D"m_6942501654=
450711629styled-by-prettify">;};</span><span style=3D"color:#000" class=3D"=
m_6942501654450711629styled-by-prettify"><br></span></div></code></div></li=
><li><b>std::copy_qualifiers</b>, a type traits copying ref and cv qualifie=
rs from one type to another<code class=3D"m_6942501654450711629prettyprint"=
><div class=3D"m_6942501654450711629subprettyprint"><div style=3D"backgroun=
d-color:rgb(250,250,250);border-color:rgb(187,187,187);border-style:solid;b=
order-width:1px" class=3D"m_6942501654450711629prettyprint"><code class=3D"=
m_6942501654450711629prettyprint"><div class=3D"m_6942501654450711629subpre=
ttyprint"><span style=3D"color:#008" class=3D"m_6942501654450711629styled-b=
y-prettify">template</span><span style=3D"color:#000" class=3D"m_6942501654=
450711629styled-by-prettify"> </span><span style=3D"color:#660" class=3D"m_=
6942501654450711629styled-by-prettify"><</span><span style=3D"color:#008=
" class=3D"m_6942501654450711629styled-by-prettify">class</span><span style=
=3D"color:#000" class=3D"m_6942501654450711629styled-by-prettify"> </span><=
span style=3D"color:#606" class=3D"m_6942501654450711629styled-by-prettify"=
>From</span><span style=3D"color:#660" class=3D"m_6942501654450711629styled=
-by-prettify">,</span><span style=3D"color:#000" class=3D"m_694250165445071=
1629styled-by-prettify"> </span><span style=3D"color:#008" class=3D"m_69425=
01654450711629styled-by-prettify">class</span><span style=3D"color:#000" cl=
ass=3D"m_6942501654450711629styled-by-prettify"> </span><span style=3D"colo=
r:#606" class=3D"m_6942501654450711629styled-by-prettify">To</span><span st=
yle=3D"color:#660" class=3D"m_6942501654450711629styled-by-prettify">></=
span><span style=3D"color:#000" class=3D"m_6942501654450711629styled-by-pre=
ttify"> </span><span style=3D"color:#008" class=3D"m_6942501654450711629sty=
led-by-prettify">struct</span><span style=3D"color:#000" class=3D"m_6942501=
654450711629styled-by-prettify"> copy_qualifiers </span><span style=3D"colo=
r:#660" class=3D"m_6942501654450711629styled-by-prettify">{</span><span sty=
le=3D"color:#008" class=3D"m_6942501654450711629styled-by-prettify">using</=
span><span style=3D"color:#000" class=3D"m_6942501654450711629styled-by-pre=
ttify"> type </span><span style=3D"color:#660" class=3D"m_69425016544507116=
29styled-by-prettify">=3D</span><span style=3D"color:#000" class=3D"m_69425=
01654450711629styled-by-prettify"> </span><span style=3D"color:#800" class=
=3D"m_6942501654450711629styled-by-prettify">/* cv-ref qualfiers of From ap=
plied to To*/</span><span style=3D"color:#660" class=3D"m_69425016544507116=
29styled-by-prettify">;};</span><span style=3D"color:#000" class=3D"m_69425=
01654450711629styled-by-prettify"><br></span></div></code></div><span style=
=3D"color:#000" class=3D"m_6942501654450711629styled-by-prettify"></span></=
div></code></li></ul><p>Other suggestions?<span class=3D"HOEnZb"><font colo=
r=3D"#888888"><br></font></span></p></div><span class=3D"HOEnZb"><font colo=
r=3D"#888888">
<p></p>
-- <br>
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br>
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org" target=3D"_=
blank">std-proposals+unsubscribe@<wbr>isocpp.org</a>.<br>
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org" target=3D"_blank">std-proposals@isocpp.org</a>.<br>
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/e3415a75-7e20-48dd-9e24-0e4681f46e53%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter" target=3D"_blank">=
https://groups.google.com/a/<wbr>isocpp.org/d/msgid/std-<wbr>proposals/e341=
5a75-7e20-48dd-<wbr>9e24-0e4681f46e53%40isocpp.org</a><wbr>.<br>
</font></span></blockquote></div><br></div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/CALvx3hacsACYSq%2Bh7BHNCjZ2rpajbdcBxa=
8GigKuHnjO79YDyQ%40mail.gmail.com?utm_medium=3Demail&utm_source=3Dfooter">h=
ttps://groups.google.com/a/isocpp.org/d/msgid/std-proposals/CALvx3hacsACYSq=
%2Bh7BHNCjZ2rpajbdcBxa8GigKuHnjO79YDyQ%40mail.gmail.com</a>.<br />
--94eb2c060312f0de050566941567--
.
Author: =?UTF-8?B?R2HFoXBlciBBxb5tYW4=?= <gasper.azman@gmail.com>
Date: Sun, 04 Mar 2018 11:21:23 +0000
Raw View
--00000000000072dcb30566946956
Content-Type: text/plain; charset="UTF-8"
I call copy_qualifiers "like" in the deducing this paper. I plan to
propose it in a separate library extension paper along with forward_like.
I like your other proposals. Also see the std::type discussion around the
std;:identity paper, I forget the number, by Timur.
G
On Sun, Mar 4, 2018, 10:58 Richard Hodges <hodges.r@gmail.com> wrote:
> For my part, while I think the general idea is a good one, it seems to me
> that you will make a stronger argument if you are able to provide
> motivating use-cases to strengthen the argument for each type/template.
>
> Do you have some examples?
>
>
>
> On 4 March 2018 at 07:55, Vincent Reverdy <vince.rev@gmail.com> wrote:
>
>> Hey,
>>
>> I was starting to think about putting together a proposal to add minor
>> helper classes to either type_traits/utility/tuple to help with some of the
>> operations done again and again when doing template metaprogramming.
>> Here is a list of a few I can think of, but I would have liked to hear
>> other suggestions. Names are just indicative, and bikeshedding would happen
>> for all of these types.
>>
>>
>> - *std::blank*, defined as an empty struct
>> struct blank{};
>> - *std::pack*, to hold a parameter pack of type
>> template <class... T> struct pack{};
>> - *std::convertible*, a type convertible to anything
>> struct convertible{template <class T> constexpr operator T() const
>> noexcept;};
>> - *std::copy_qualifiers*, a type traits copying ref and cv qualifiers
>> from one type to another
>> template <class From, class To> struct copy_qualifiers {using type = /*
>> cv-ref qualfiers of From applied to To*/;};
>>
>> Other suggestions?
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "ISO C++ Standard - Future Proposals" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to std-proposals+unsubscribe@isocpp.org.
>> To post to this group, send email to std-proposals@isocpp.org.
>> To view this discussion on the web visit
>> https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/e3415a75-7e20-48dd-9e24-0e4681f46e53%40isocpp.org
>> <https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/e3415a75-7e20-48dd-9e24-0e4681f46e53%40isocpp.org?utm_medium=email&utm_source=footer>
>> .
>>
>
> --
> You received this message because you are subscribed to the Google Groups
> "ISO C++ Standard - Future Proposals" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to std-proposals+unsubscribe@isocpp.org.
> To post to this group, send email to std-proposals@isocpp.org.
> To view this discussion on the web visit
> https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/CALvx3hacsACYSq%2Bh7BHNCjZ2rpajbdcBxa8GigKuHnjO79YDyQ%40mail.gmail.com
> <https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/CALvx3hacsACYSq%2Bh7BHNCjZ2rpajbdcBxa8GigKuHnjO79YDyQ%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
>
--
You received this message because you are subscribed to the Google Groups "ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an email to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
To view this discussion on the web visit https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/CAANG%3DkWYr4My4ocY37oi-Nk_paCCegG3LtngSz4Lp5SXpAWF8w%40mail.gmail.com.
--00000000000072dcb30566946956
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"auto">I call copy_qualifiers=C2=A0 "like" in the dedu=
cing this paper. I plan to propose it in a separate library extension paper=
along with forward_like.<div dir=3D"auto"><br></div><div dir=3D"auto">I li=
ke your other proposals. Also see the std::type discussion around the std;:=
identity paper, I forget the number, by Timur.</div><div dir=3D"auto"><br><=
/div><div dir=3D"auto">G</div></div><br><div class=3D"gmail_quote"><div dir=
=3D"ltr">On Sun, Mar 4, 2018, 10:58 Richard Hodges <<a href=3D"mailto:ho=
dges.r@gmail.com">hodges.r@gmail.com</a>> wrote:<br></div><blockquote cl=
ass=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;p=
adding-left:1ex"><div dir=3D"ltr">For my part, while I think the general id=
ea is a good one, it seems to me that you will make a stronger argument if =
you are able to provide motivating use-cases to strengthen the argument for=
each type/template.<div><br></div><div>Do you have some examples?</div><di=
v><br><div><br></div></div></div><div class=3D"gmail_extra"><br><div class=
=3D"gmail_quote">On 4 March 2018 at 07:55, Vincent Reverdy <span dir=3D"ltr=
"><<a href=3D"mailto:vince.rev@gmail.com" target=3D"_blank" rel=3D"noref=
errer">vince.rev@gmail.com</a>></span> wrote:<br><blockquote class=3D"gm=
ail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-le=
ft:1ex"><div dir=3D"ltr">Hey,<br><br>I was starting to think about putting =
together a proposal to add minor helper classes to either type_traits/utili=
ty/tuple to help with some of the operations done again and again when doin=
g template metaprogramming.<br>Here is a list of a few I can think of, but =
I would have liked to hear other suggestions. Names are just indicative, an=
d bikeshedding would happen for all of these types.<br><br><ul><li><b>std::=
blank</b>, defined as an empty struct <div style=3D"background-color:rgb(25=
0,250,250);border-color:rgb(187,187,187);border-style:solid;border-width:1p=
x" class=3D"m_2110700416761080958m_6942501654450711629prettyprint"><code cl=
ass=3D"m_2110700416761080958m_6942501654450711629prettyprint"><div class=3D=
"m_2110700416761080958m_6942501654450711629subprettyprint"><span style=3D"c=
olor:#008" class=3D"m_2110700416761080958m_6942501654450711629styled-by-pre=
ttify">struct</span><span style=3D"color:#000" class=3D"m_21107004167610809=
58m_6942501654450711629styled-by-prettify"> blank</span><span style=3D"colo=
r:#660" class=3D"m_2110700416761080958m_6942501654450711629styled-by-pretti=
fy">{};</span></div></code></div></li><li><b>std::pack</b>, to hold a param=
eter pack of type<div style=3D"background-color:rgb(250,250,250);border-col=
or:rgb(187,187,187);border-style:solid;border-width:1px" class=3D"m_2110700=
416761080958m_6942501654450711629prettyprint"><code class=3D"m_211070041676=
1080958m_6942501654450711629prettyprint"><div class=3D"m_211070041676108095=
8m_6942501654450711629subprettyprint"><span style=3D"color:#008" class=3D"m=
_2110700416761080958m_6942501654450711629styled-by-prettify">template</span=
><span style=3D"color:#000" class=3D"m_2110700416761080958m_694250165445071=
1629styled-by-prettify"> </span><span style=3D"color:#660" class=3D"m_21107=
00416761080958m_6942501654450711629styled-by-prettify"><</span><span sty=
le=3D"color:#008" class=3D"m_2110700416761080958m_6942501654450711629styled=
-by-prettify">class</span><span style=3D"color:#660" class=3D"m_21107004167=
61080958m_6942501654450711629styled-by-prettify">...</span><span style=3D"c=
olor:#000" class=3D"m_2110700416761080958m_6942501654450711629styled-by-pre=
ttify"> T</span><span style=3D"color:#660" class=3D"m_2110700416761080958m_=
6942501654450711629styled-by-prettify">></span><span style=3D"color:#000=
" class=3D"m_2110700416761080958m_6942501654450711629styled-by-prettify"> <=
/span><span style=3D"color:#008" class=3D"m_2110700416761080958m_6942501654=
450711629styled-by-prettify">struct</span><span style=3D"color:#000" class=
=3D"m_2110700416761080958m_6942501654450711629styled-by-prettify"> pack</sp=
an><span style=3D"color:#660" class=3D"m_2110700416761080958m_6942501654450=
711629styled-by-prettify">{};</span><span style=3D"color:#000" class=3D"m_2=
110700416761080958m_6942501654450711629styled-by-prettify"><br></span></div=
></code></div></li><li><b>std::convertible</b>, a type convertible to anyth=
ing<div style=3D"background-color:rgb(250,250,250);border-color:rgb(187,187=
,187);border-style:solid;border-width:1px" class=3D"m_2110700416761080958m_=
6942501654450711629prettyprint"><code class=3D"m_2110700416761080958m_69425=
01654450711629prettyprint"><div class=3D"m_2110700416761080958m_69425016544=
50711629subprettyprint"><span style=3D"color:#008" class=3D"m_2110700416761=
080958m_6942501654450711629styled-by-prettify">struct</span><span style=3D"=
color:#000" class=3D"m_2110700416761080958m_6942501654450711629styled-by-pr=
ettify"> convertible</span><span style=3D"color:#660" class=3D"m_2110700416=
761080958m_6942501654450711629styled-by-prettify">{</span><span style=3D"co=
lor:#008" class=3D"m_2110700416761080958m_6942501654450711629styled-by-pret=
tify">template</span><span style=3D"color:#000" class=3D"m_2110700416761080=
958m_6942501654450711629styled-by-prettify"> </span><span style=3D"color:#6=
60" class=3D"m_2110700416761080958m_6942501654450711629styled-by-prettify">=
<</span><span style=3D"color:#008" class=3D"m_2110700416761080958m_69425=
01654450711629styled-by-prettify">class</span><span style=3D"color:#000" cl=
ass=3D"m_2110700416761080958m_6942501654450711629styled-by-prettify"> T</sp=
an><span style=3D"color:#660" class=3D"m_2110700416761080958m_6942501654450=
711629styled-by-prettify">></span><span style=3D"color:#000" class=3D"m_=
2110700416761080958m_6942501654450711629styled-by-prettify"> </span><span s=
tyle=3D"color:#008" class=3D"m_2110700416761080958m_6942501654450711629styl=
ed-by-prettify">constexpr</span><span style=3D"color:#000" class=3D"m_21107=
00416761080958m_6942501654450711629styled-by-prettify"> </span><span style=
=3D"color:#008" class=3D"m_2110700416761080958m_6942501654450711629styled-b=
y-prettify">operator</span><span style=3D"color:#000" class=3D"m_2110700416=
761080958m_6942501654450711629styled-by-prettify"> T</span><span style=3D"c=
olor:#660" class=3D"m_2110700416761080958m_6942501654450711629styled-by-pre=
ttify">()</span><span style=3D"color:#000" class=3D"m_2110700416761080958m_=
6942501654450711629styled-by-prettify"> </span><span style=3D"color:#008" c=
lass=3D"m_2110700416761080958m_6942501654450711629styled-by-prettify">const=
</span><span style=3D"color:#000" class=3D"m_2110700416761080958m_694250165=
4450711629styled-by-prettify"> noexcept</span><span style=3D"color:#660" cl=
ass=3D"m_2110700416761080958m_6942501654450711629styled-by-prettify">;};</s=
pan><span style=3D"color:#000" class=3D"m_2110700416761080958m_694250165445=
0711629styled-by-prettify"><br></span></div></code></div></li><li><b>std::c=
opy_qualifiers</b>, a type traits copying ref and cv qualifiers from one ty=
pe to another<code class=3D"m_2110700416761080958m_6942501654450711629prett=
yprint"><div class=3D"m_2110700416761080958m_6942501654450711629subprettypr=
int"><div style=3D"background-color:rgb(250,250,250);border-color:rgb(187,1=
87,187);border-style:solid;border-width:1px" class=3D"m_2110700416761080958=
m_6942501654450711629prettyprint"><code class=3D"m_2110700416761080958m_694=
2501654450711629prettyprint"><div class=3D"m_2110700416761080958m_694250165=
4450711629subprettyprint"><span style=3D"color:#008" class=3D"m_21107004167=
61080958m_6942501654450711629styled-by-prettify">template</span><span style=
=3D"color:#000" class=3D"m_2110700416761080958m_6942501654450711629styled-b=
y-prettify"> </span><span style=3D"color:#660" class=3D"m_21107004167610809=
58m_6942501654450711629styled-by-prettify"><</span><span style=3D"color:=
#008" class=3D"m_2110700416761080958m_6942501654450711629styled-by-prettify=
">class</span><span style=3D"color:#000" class=3D"m_2110700416761080958m_69=
42501654450711629styled-by-prettify"> </span><span style=3D"color:#606" cla=
ss=3D"m_2110700416761080958m_6942501654450711629styled-by-prettify">From</s=
pan><span style=3D"color:#660" class=3D"m_2110700416761080958m_694250165445=
0711629styled-by-prettify">,</span><span style=3D"color:#000" class=3D"m_21=
10700416761080958m_6942501654450711629styled-by-prettify"> </span><span sty=
le=3D"color:#008" class=3D"m_2110700416761080958m_6942501654450711629styled=
-by-prettify">class</span><span style=3D"color:#000" class=3D"m_21107004167=
61080958m_6942501654450711629styled-by-prettify"> </span><span style=3D"col=
or:#606" class=3D"m_2110700416761080958m_6942501654450711629styled-by-prett=
ify">To</span><span style=3D"color:#660" class=3D"m_2110700416761080958m_69=
42501654450711629styled-by-prettify">></span><span style=3D"color:#000" =
class=3D"m_2110700416761080958m_6942501654450711629styled-by-prettify"> </s=
pan><span style=3D"color:#008" class=3D"m_2110700416761080958m_694250165445=
0711629styled-by-prettify">struct</span><span style=3D"color:#000" class=3D=
"m_2110700416761080958m_6942501654450711629styled-by-prettify"> copy_qualif=
iers </span><span style=3D"color:#660" class=3D"m_2110700416761080958m_6942=
501654450711629styled-by-prettify">{</span><span style=3D"color:#008" class=
=3D"m_2110700416761080958m_6942501654450711629styled-by-prettify">using</sp=
an><span style=3D"color:#000" class=3D"m_2110700416761080958m_6942501654450=
711629styled-by-prettify"> type </span><span style=3D"color:#660" class=3D"=
m_2110700416761080958m_6942501654450711629styled-by-prettify">=3D</span><sp=
an style=3D"color:#000" class=3D"m_2110700416761080958m_6942501654450711629=
styled-by-prettify"> </span><span style=3D"color:#800" class=3D"m_211070041=
6761080958m_6942501654450711629styled-by-prettify">/* cv-ref qualfiers of F=
rom applied to To*/</span><span style=3D"color:#660" class=3D"m_21107004167=
61080958m_6942501654450711629styled-by-prettify">;};</span><span style=3D"c=
olor:#000" class=3D"m_2110700416761080958m_6942501654450711629styled-by-pre=
ttify"><br></span></div></code></div><span style=3D"color:#000" class=3D"m_=
2110700416761080958m_6942501654450711629styled-by-prettify"></span></div></=
code></li></ul><p>Other suggestions?<span class=3D"m_2110700416761080958HOE=
nZb"><font color=3D"#888888"><br></font></span></p></div><span class=3D"m_2=
110700416761080958HOEnZb"><font color=3D"#888888">
<p></p>
-- <br>
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br>
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org" target=3D"_=
blank" rel=3D"noreferrer">std-proposals+unsubscribe@isocpp.org</a>.<br>
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org" target=3D"_blank" rel=3D"noreferrer">std-proposals@isocpp.org</a>.<br=
>
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/e3415a75-7e20-48dd-9e24-0e4681f46e53%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter" target=3D"_blank" =
rel=3D"noreferrer">https://groups.google.com/a/isocpp.org/d/msgid/std-propo=
sals/e3415a75-7e20-48dd-9e24-0e4681f46e53%40isocpp.org</a>.<br>
</font></span></blockquote></div><br></div>
<p></p>
-- <br>
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br>
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org" target=3D"_=
blank" rel=3D"noreferrer">std-proposals+unsubscribe@isocpp.org</a>.<br>
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org" target=3D"_blank" rel=3D"noreferrer">std-proposals@isocpp.org</a>.<br=
>
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/CALvx3hacsACYSq%2Bh7BHNCjZ2rpajbdcBxa=
8GigKuHnjO79YDyQ%40mail.gmail.com?utm_medium=3Demail&utm_source=3Dfoote=
r" target=3D"_blank" rel=3D"noreferrer">https://groups.google.com/a/isocpp.=
org/d/msgid/std-proposals/CALvx3hacsACYSq%2Bh7BHNCjZ2rpajbdcBxa8GigKuHnjO79=
YDyQ%40mail.gmail.com</a>.<br>
</blockquote></div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/CAANG%3DkWYr4My4ocY37oi-Nk_paCCegG3Lt=
ngSz4Lp5SXpAWF8w%40mail.gmail.com?utm_medium=3Demail&utm_source=3Dfooter">h=
ttps://groups.google.com/a/isocpp.org/d/msgid/std-proposals/CAANG%3DkWYr4My=
4ocY37oi-Nk_paCCegG3LtngSz4Lp5SXpAWF8w%40mail.gmail.com</a>.<br />
--00000000000072dcb30566946956--
.
Author: Larry Evans <cppljevans@suddenlink.net>
Date: Mon, 5 Mar 2018 02:16:57 -0600
Raw View
On 03/04/2018 12:55 AM, Vincent Reverdy wrote:
> Hey,
>
> I was starting to think about putting together a proposal to add minor
> helper classes to either type_traits/utility/tuple to help with some of the
> operations done again and again when doing template metaprogramming.
> Here is a list of a few I can think of, but I would have liked to hear
> other suggestions. Names are just indicative, and bikeshedding would happen
> for all of these types.
>
>
> - *std::blank*, defined as an empty struct
> struct blank{};
or:
using blank=std::tuple<>;
another name is unit:
https://en.wikipedia.org/wiki/Unit_type
> - *std::pack*, to hold a parameter pack of type
> template <class... T> struct pack{};
> - *std::convertible*, a type convertible to anything
> struct convertible{template <class T> constexpr operator T() const
> noexcept;};
> - *std::copy_qualifiers*, a type traits copying ref and cv qualifiers
> from one type to another
> template <class From, class To> struct copy_qualifiers {using type = /*
> cv-ref qualfiers of From applied to To*/;};
>
> Other suggestions?
>
https://github.com/cppljevans/variadic_templates/blob/master/boost/mpl/while.hpp
https://github.com/cppljevans/variadic_templates/blob/master/boost/mpl/if_recur.hpp
--
You received this message because you are subscribed to the Google Groups "ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an email to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
To view this discussion on the web visit https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/p7iu9q%24c8r%241%40blaine.gmane.org.
.
Author: Arthur O'Dwyer <arthur.j.odwyer@gmail.com>
Date: Mon, 5 Mar 2018 14:34:38 -0800 (PST)
Raw View
------=_Part_15098_1595620590.1520289278796
Content-Type: multipart/alternative;
boundary="----=_Part_15099_1964672083.1520289278797"
------=_Part_15099_1964672083.1520289278797
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
On Saturday, March 3, 2018 at 10:55:38 PM UTC-8, Vincent Reverdy wrote:
>
> Hey,
>
> I was starting to think about putting together a proposal to add minor=20
> helper classes to either type_traits/utility/tuple to help with some of t=
he=20
> operations done again and again when doing template metaprogramming.
> Here is a list of a few I can think of, but I would have liked to hear=20
> other suggestions. Names are just indicative, and bikeshedding would happ=
en=20
> for all of these types.
>
>
> - *std::blank*, defined as an empty struct=20
> struct blank{};
> =20
> This type has almost as many names as `std::byte`. For example:=20
`monostate`, `in_place_t`, `nothrow_t`, `void`, `nullptr_t`. I don't think=
=20
we should make any more synonyms for it without a very clear use-case. In=
=20
fact, `monostate` has a really clear and specific use-case and I *still*=20
don't think it should have been standardized.
=20
>
> - *std::pack*, to hold a parameter pack of type
> template <class... T> struct pack{};
> =20
> Bikeshed: I spell this as `typelist<Ts...>`.
> - *std::convertible*, a type convertible to anything
> struct convertible{template <class T> constexpr operator T() const=20
> noexcept;};
> =20
> Consider whether you ever want
struct convertible2 {
template<class T> constexpr operator T&&() const noexcept;
};
and/or
struct convertible3 {
template<class T> explicit constexpr operator T() const noexcept;
};
and if so, how many types should be standardized. My instinct is not to=20
standardize this without both a clear use-case and some evidence that this=
=20
specific definition is necessary and sufficient to solve that use-case.
> - *std::copy_qualifiers*, a type traits copying ref and cv qualifiers=
=20
> from one type to another
> template <class From, class To> struct copy_qualifiers {using type =3D=
/*=20
> cv-ref qualfiers of From applied to To*/;};
> =20
> Bikeshed: You'll want all three of `std::copy_cv_t`,=20
`std::copy_reference_t`, `std::copy_cvref_t`.
Consider whether `copy_reference_t<int&&, int&>` should be `int&&` or=20
`int&`.
Consider whether `copy_reference_t<int, int&>` should be `int` or `int&`.
https://stackoverflow.com/questions/31171682/type-trait-for-copying-cv-refe=
rence-qualifiers
To your list of metaprogramming utilities I would add...
*std::priority_tag=20
<https://github.com/Quuxplusone/from-scratch/blob/master/include/scratch/bi=
ts/type-traits/priority-tag.h>*,=20
a type trait for creating ranked overload sets
template<size_t I> struct priority_tag : priority_tag<I-1> {};
template<> struct priority_tag<0> {};
*std::index_constant=20
<https://github.com/Quuxplusone/from-scratch/blob/master/include/scratch/bi=
ts/type-traits/integral-constant.h#L24>*,=20
a convenience alias for std::integral_constant (useful in the=20
implementation of std::variant's getters, for example)
template<size_t I> using index_constant =3D integral_constant<size_t, I>;
*std::false_v=20
<https://github.com/Quuxplusone/from-scratch/blob/master/include/scratch/bi=
ts/type-traits/false-v.h>*,=20
a convenience alias for false which is "dependent" in template contexts=20
(useful in static_asserts)
template<class...> inline constexpr bool false_v =3D false;
=E2=80=93Arthur
--=20
You received this message because you are subscribed to the Google Groups "=
ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
To view this discussion on the web visit https://groups.google.com/a/isocpp=
..org/d/msgid/std-proposals/0411546e-b09b-4819-a970-0c809c030980%40isocpp.or=
g.
------=_Part_15099_1964672083.1520289278797
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr">On Saturday, March 3, 2018 at 10:55:38 PM UTC-8, Vincent R=
everdy wrote:<blockquote class=3D"gmail_quote" style=3D"margin: 0;margin-le=
ft: 0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;"><div dir=3D"ltr">=
Hey,<br><br>I was starting to think about putting together a proposal to ad=
d minor helper classes to either type_traits/utility/tuple to help with som=
e of the operations done again and again when doing template metaprogrammin=
g.<br>Here is a list of a few I can think of, but I would have liked to hea=
r other suggestions. Names are just indicative, and bikeshedding would happ=
en for all of these types.<br><br><ul><li><b>std::blank</b>, defined as an =
empty struct <div style=3D"background-color:rgb(250,250,250);border-color:r=
gb(187,187,187);border-style:solid;border-width:1px"><code><div><span style=
=3D"color:#008">struct</span><span style=3D"color:#000"> blank</span><span =
style=3D"color:#660">{};</span></div></code></div></li></ul></div></blockqu=
ote><div>This type has almost as many names as `std::byte`. For example: `m=
onostate`, `in_place_t`, `nothrow_t`, `void`, `nullptr_t`. I don't thin=
k we should make any more synonyms for it without a very clear use-case. In=
fact, `monostate` has a really clear and specific use-case and I <i>still<=
/i> don't think it should have been standardized.</div><div>=C2=A0</div=
><blockquote class=3D"gmail_quote" style=3D"margin: 0;margin-left: 0.8ex;bo=
rder-left: 1px #ccc solid;padding-left: 1ex;"><div dir=3D"ltr"><ul><li><b>s=
td::pack</b>, to hold a parameter pack of type<div style=3D"background-colo=
r:rgb(250,250,250);border-color:rgb(187,187,187);border-style:solid;border-=
width:1px"><code><div><span style=3D"color:#008">template</span><span style=
=3D"color:#000"> </span><span style=3D"color:#660"><</span><span style=
=3D"color:#008">class</span><span style=3D"color:#660">...</span><span styl=
e=3D"color:#000"> T</span><span style=3D"color:#660">></span><span style=
=3D"color:#000"> </span><span style=3D"color:#008">struct</span><span style=
=3D"color:#000"> pack</span><span style=3D"color:#660">{};</span></div></co=
de></div></li></ul></div></blockquote><div>Bikeshed: I spell this as `typel=
ist<Ts...>`.</div><div><br></div><blockquote class=3D"gmail_quote" st=
yle=3D"margin: 0;margin-left: 0.8ex;border-left: 1px #ccc solid;padding-lef=
t: 1ex;"><div dir=3D"ltr"><ul><li><b>std::convertible</b>, a type convertib=
le to anything<div style=3D"background-color:rgb(250,250,250);border-color:=
rgb(187,187,187);border-style:solid;border-width:1px"><code><div><span styl=
e=3D"color:#008">struct</span><span style=3D"color:#000"> convertible</span=
><span style=3D"color:#660">{</span><span style=3D"color:#008">template</sp=
an><span style=3D"color:#000"> </span><span style=3D"color:#660"><</span=
><span style=3D"color:#008">class</span><span style=3D"color:#000"> T</span=
><span style=3D"color:#660">></span><span style=3D"color:#000"> </span><=
span style=3D"color:#008">constexpr</span><span style=3D"color:#000"> </spa=
n><span style=3D"color:#008">operator</span><span style=3D"color:#000"> T</=
span><span style=3D"color:#660">()</span><span style=3D"color:#000"> </span=
><span style=3D"color:#008">const</span><span style=3D"color:#000"> noexcep=
t</span><span style=3D"color:#660">;};</span></div></code></div></li></ul><=
/div></blockquote><div>Consider whether you ever want</div><div>=C2=A0 =C2=
=A0 struct convertible2 {</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 template<=
;class T> constexpr operator T&&() const noexcept;</div><div>=C2=
=A0 =C2=A0 };</div><div>and/or</div><div><div>=C2=A0 =C2=A0 struct converti=
ble3 {</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 template<class T> explic=
it constexpr operator T() const noexcept;</div><div>=C2=A0 =C2=A0 };</div><=
/div><div>and if so, how many types should be standardized. My instinct is =
not to standardize this without both a clear use-case and some evidence tha=
t this specific definition is necessary and sufficient to solve that use-ca=
se.</div><div><br></div><blockquote class=3D"gmail_quote" style=3D"margin: =
0;margin-left: 0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;"><div d=
ir=3D"ltr"><ul><li><b>std::copy_qualifiers</b>, a type traits copying ref a=
nd cv qualifiers from one type to another<code><div><div style=3D"backgroun=
d-color:rgb(250,250,250);border-color:rgb(187,187,187);border-style:solid;b=
order-width:1px"><code><div><span style=3D"color:#008">template</span><span=
style=3D"color:#000"> </span><span style=3D"color:#660"><</span><span s=
tyle=3D"color:#008">class</span><span style=3D"color:#000"> </span><span st=
yle=3D"color:#606">From</span><span style=3D"color:#660">,</span><span styl=
e=3D"color:#000"> </span><span style=3D"color:#008">class</span><span style=
=3D"color:#000"> </span><span style=3D"color:#606">To</span><span style=3D"=
color:#660">></span><span style=3D"color:#000"> </span><span style=3D"co=
lor:#008">struct</span><span style=3D"color:#000"> copy_qualifiers </span><=
span style=3D"color:#660">{</span><span style=3D"color:#008">using</span><s=
pan style=3D"color:#000"> type </span><span style=3D"color:#660">=3D</span>=
<span style=3D"color:#000"> </span><span style=3D"color:#800">/* cv-ref qua=
lfiers of From applied to To*/</span><span style=3D"color:#660">;};</span><=
/div></code></div></div></code></li></ul></div></blockquote><div>Bikeshed: =
You'll want all three of `std::copy_cv_t`, `std::copy_reference_t`, `st=
d::copy_cvref_t`.</div><div>Consider whether `copy_reference_t<int&&=
amp;, int&>` should be `int&&` or `int&`.</div><div>Cons=
ider whether `copy_reference_t<int, int&>` should be `int` or `in=
t&`.</div><div><a href=3D"https://stackoverflow.com/questions/31171682/=
type-trait-for-copying-cv-reference-qualifiers">https://stackoverflow.com/q=
uestions/31171682/type-trait-for-copying-cv-reference-qualifiers</a><br></d=
iv><div><br></div><div>To your list of metaprogramming utilities I would ad=
d...</div><div><br></div><div><b><a href=3D"https://github.com/Quuxplusone/=
from-scratch/blob/master/include/scratch/bits/type-traits/priority-tag.h">s=
td::priority_tag</a></b>, a type trait for creating ranked overload sets</d=
iv><div class=3D"prettyprint" style=3D"background-color: rgb(250, 250, 250)=
; border: 1px solid rgb(187, 187, 187); word-wrap: break-word;"><code class=
=3D"prettyprint"><div class=3D"subprettyprint"><span style=3D"color: #008;"=
class=3D"styled-by-prettify">template</span><span style=3D"color: #660;" c=
lass=3D"styled-by-prettify"><</span><span style=3D"color: #000;" class=
=3D"styled-by-prettify">size_t I</span><span style=3D"color: #660;" class=
=3D"styled-by-prettify">></span><span style=3D"color: #000;" class=3D"st=
yled-by-prettify"> </span><span style=3D"color: #008;" class=3D"styled-by-p=
rettify">struct</span><span style=3D"color: #000;" class=3D"styled-by-prett=
ify"> priority_tag </span><span style=3D"color: #660;" class=3D"styled-by-p=
rettify">:</span><span style=3D"color: #000;" class=3D"styled-by-prettify">=
priority_tag</span><span style=3D"color: #660;" class=3D"styled-by-prettif=
y"><</span><span style=3D"color: #000;" class=3D"styled-by-prettify">I</=
span><span style=3D"color: #660;" class=3D"styled-by-prettify">-</span><spa=
n style=3D"color: #066;" class=3D"styled-by-prettify">1</span><span style=
=3D"color: #660;" class=3D"styled-by-prettify">></span><span style=3D"co=
lor: #000;" class=3D"styled-by-prettify"> </span><span style=3D"color: #660=
;" class=3D"styled-by-prettify">{};</span><span style=3D"color: #000;" clas=
s=3D"styled-by-prettify"><br></span><span style=3D"color: #008;" class=3D"s=
tyled-by-prettify">template</span><span style=3D"color: #660;" class=3D"sty=
led-by-prettify"><></span><span style=3D"color: #000;" class=3D"style=
d-by-prettify"> </span><span style=3D"color: #008;" class=3D"styled-by-pret=
tify">struct</span><span style=3D"color: #000;" class=3D"styled-by-prettify=
"> priority_tag</span><span style=3D"color: #660;" class=3D"styled-by-prett=
ify"><</span><span style=3D"color: #066;" class=3D"styled-by-prettify">0=
</span><span style=3D"color: #660;" class=3D"styled-by-prettify">></span=
><span style=3D"color: #000;" class=3D"styled-by-prettify"> </span><span st=
yle=3D"color: #660;" class=3D"styled-by-prettify">{};</span><span style=3D"=
color: #000;" class=3D"styled-by-prettify"><br></span></div></code></div><d=
iv><br></div><div><b><a href=3D"https://github.com/Quuxplusone/from-scratch=
/blob/master/include/scratch/bits/type-traits/integral-constant.h#L24">std:=
:index_constant</a></b>, a convenience alias for std::integral_constant (us=
eful in the implementation of std::variant's getters, for example)</div=
><div><div class=3D"prettyprint" style=3D"background-color: rgb(250, 250, 2=
50); border: 1px solid rgb(187, 187, 187); word-wrap: break-word;"><code cl=
ass=3D"prettyprint"><div class=3D"subprettyprint"><span style=3D"color: #00=
8;" class=3D"styled-by-prettify">template</span><span style=3D"color: #660;=
" class=3D"styled-by-prettify"><</span><span style=3D"color: #000;" clas=
s=3D"styled-by-prettify">size_t I</span><span style=3D"color: #660;" class=
=3D"styled-by-prettify">></span><span style=3D"color: #000;" class=3D"st=
yled-by-prettify"> </span><span style=3D"color: #008;" class=3D"styled-by-p=
rettify">using</span><span style=3D"color: #000;" class=3D"styled-by-pretti=
fy"> index_constant </span><span style=3D"color: #660;" class=3D"styled-by-=
prettify">=3D</span><span style=3D"color: #000;" class=3D"styled-by-prettif=
y"> integral_constant</span><span style=3D"color: #660;" class=3D"styled-by=
-prettify"><</span><span style=3D"color: #000;" class=3D"styled-by-prett=
ify">size_t</span><span style=3D"color: #660;" class=3D"styled-by-prettify"=
>,</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> I</span=
><span style=3D"color: #660;" class=3D"styled-by-prettify">>;</span></di=
v></code></div></div><div><br></div><div><b><a href=3D"https://github.com/Q=
uuxplusone/from-scratch/blob/master/include/scratch/bits/type-traits/false-=
v.h">std::false_v</a></b>, a convenience alias for <font face=3D"courier ne=
w, monospace">false</font> which is "dependent" in template conte=
xts (useful in static_asserts)<br><div class=3D"prettyprint" style=3D"backg=
round-color: rgb(250, 250, 250); border: 1px solid rgb(187, 187, 187); word=
-wrap: break-word;"><code class=3D"prettyprint"><div class=3D"subprettyprin=
t"><span style=3D"color: #008;" class=3D"styled-by-prettify">template</span=
><span style=3D"color: #660;" class=3D"styled-by-prettify"><</span><span=
style=3D"color: #008;" class=3D"styled-by-prettify">class</span><span styl=
e=3D"color: #660;" class=3D"styled-by-prettify">...></span><span style=
=3D"color: #000;" class=3D"styled-by-prettify"> </span><span style=3D"color=
: #008;" class=3D"styled-by-prettify">inline</span><span style=3D"color: #0=
00;" class=3D"styled-by-prettify"> </span><span style=3D"color: #008;" clas=
s=3D"styled-by-prettify">constexpr</span><span style=3D"color: #000;" class=
=3D"styled-by-prettify"> </span><span style=3D"color: #008;" class=3D"style=
d-by-prettify">bool</span><span style=3D"color: #000;" class=3D"styled-by-p=
rettify"> false_v </span><span style=3D"color: #660;" class=3D"styled-by-pr=
ettify">=3D</span><span style=3D"color: #000;" class=3D"styled-by-prettify"=
> </span><span style=3D"color: #008;" class=3D"styled-by-prettify">false</s=
pan><span style=3D"color: #660;" class=3D"styled-by-prettify">;</span></div=
></code></div></div><div><br></div>=E2=80=93Arthur</div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/0411546e-b09b-4819-a970-0c809c030980%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/0411546e-b09b-4819-a970-0c809c030980=
%40isocpp.org</a>.<br />
------=_Part_15099_1964672083.1520289278797--
------=_Part_15098_1595620590.1520289278796--
.
Author: florian.csdt@gmail.com
Date: Thu, 8 Mar 2018 02:36:02 -0800 (PST)
Raw View
------=_Part_1721_1631275218.1520505362174
Content-Type: multipart/alternative;
boundary="----=_Part_1722_1792002011.1520505362175"
------=_Part_1722_1792002011.1520505362175
Content-Type: text/plain; charset="UTF-8"
I really like this idea.
When writing template metaprograms, we always need roughly the same helpers.
- std::blank: why not, but I'm not sure it would be a good thing to have
a common name for many different purposes
- std::pack<T...>: Very useful, but I agree with Arthur, std::typelist
would probably be a better name. The thing with this one, we would need
some meta-functions to work with (like getting the n-th element, getting
the size, and other stuff like that). So I would say a full proposal only
for this one might be better.
- std::convertible: I'm not sure about the name here, it is too vague
and looks like a type trait
- std::copy_qualifiers: this one is great, but need some variants (like
Arthur said)
- std::priority_tag<size_t>: I would avoid this one: I completely
understand the use case, but this would incentivize people to use index
priority and the will use quite high priorities, and thus create a hell lot
of (useless) types. If there is another way to do it without relying on
inheritance (which will create all the higher priority types), then sure,
it would be a good idea.
- std::index_constant: yes, really simple, but would standardize a
common practice (maybe needs a shorter name?)
- std::false_v<...>: I agree it would be cool, but I'm not about the
interface... Could it be better if not using types as template parameters?
Now some more ideas:
- If you have std::false_v, you should also have std::true_v with the
same interface just for the sake of consistency
- std::sink
struct sink { template <class T> constexpr sink(T&&) noexcept {} };
std::sink is constructible from any expression.
- maybe we would also need to have something hybrid between std::sink
and std::convertible:
struct sink_convertible : sink, convertible { using sink::sink; };
- std::convertible_ptr
struct convertible_ptr { constexpr convertible operator*() noexcept {
return {}; } /* some functions to have iterator semantic */};
Like std::convertible, but with iterator semantic.
Florian
--
You received this message because you are subscribed to the Google Groups "ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an email to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
To view this discussion on the web visit https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/b184aa97-d05a-4f2f-9f53-b68550e57936%40isocpp.org.
------=_Part_1722_1792002011.1520505362175
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr">I really like this idea.<br><br>When writing template meta=
programs, we always need roughly the same helpers.<br><br><ul><li>std::blan=
k: why not, but I'm not sure it would be a good thing to have a common =
name for many different purposes</li><li>std::pack<T...>: Very useful=
, but I agree with Arthur, std::typelist would probably be a better name. T=
he thing with this one, we would need some meta-functions to work with (lik=
e getting the n-th element, getting the size, and other stuff like that). S=
o I would say a full proposal only for this one might be better.<br></li><l=
i>std::convertible: I'm not sure about the name here, it is too vague a=
nd looks like a type trait</li><li>std::copy_qualifiers: this one is great,=
but need some variants (like Arthur said)</li><li>std::priority_tag<siz=
e_t>: I would avoid this one: I completely understand the use case, but =
this would incentivize people to use index priority and the will use quite =
high priorities, and thus create a hell lot of (useless) types. If there is=
another way to do it without relying on inheritance (which will create all=
the higher priority types), then sure, it would be a good idea.<br></li><l=
i>std::index_constant: yes, really simple, but would standardize a common p=
ractice (maybe needs a shorter name?)</li><li>std::false_v<...>: I ag=
ree it would be cool, but I'm not about the interface... Could it be be=
tter if not using types as template parameters?</li></ul><br>Now some more =
ideas:<br><ul><li>If you have std::false_v, you should also have std::true_=
v with the same interface just for the sake of consistency</li><li><code>st=
d::sink<div style=3D"background-color: rgb(250, 250, 250); border-color: rg=
b(187, 187, 187); border-style: solid; border-width: 1px; overflow-wrap: br=
eak-word;" class=3D"prettyprint"><code class=3D"prettyprint"><div class=3D"=
subprettyprint"><span style=3D"color: #008;" class=3D"styled-by-prettify">s=
truct</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> sink=
</span><span style=3D"color: #660;" class=3D"styled-by-prettify">{</span><=
span style=3D"color: #000;" class=3D"styled-by-prettify"> </span><span styl=
e=3D"color: #008;" class=3D"styled-by-prettify">template</span><span style=
=3D"color: #000;" class=3D"styled-by-prettify"> </span><span style=3D"color=
: #660;" class=3D"styled-by-prettify"><</span><span style=3D"color: #008=
;" class=3D"styled-by-prettify">class</span><span style=3D"color: #000;" cl=
ass=3D"styled-by-prettify"> T</span><span style=3D"color: #660;" class=3D"s=
tyled-by-prettify">></span><span style=3D"color: #000;" class=3D"styled-=
by-prettify"> </span><span style=3D"color: #008;" class=3D"styled-by-pretti=
fy">constexpr</span><span style=3D"color: #000;" class=3D"styled-by-prettif=
y"> sink</span><span style=3D"color: #660;" class=3D"styled-by-prettify">(<=
/span><span style=3D"color: #000;" class=3D"styled-by-prettify">T</span><sp=
an style=3D"color: #660;" class=3D"styled-by-prettify">&&)</span><s=
pan style=3D"color: #000;" class=3D"styled-by-prettify"> noexcept </span><s=
pan style=3D"color: #660;" class=3D"styled-by-prettify">{}</span><span styl=
e=3D"color: #000;" class=3D"styled-by-prettify"> </span><span style=3D"colo=
r: #660;" class=3D"styled-by-prettify">};</span><span style=3D"color: #000;=
" class=3D"styled-by-prettify"><br></span></div></code></div>std::sink is c=
onstructible from any expression.</code></li><li><code>maybe we would also =
need to have something hybrid between std::sink and std::convertible:<div s=
tyle=3D"background-color: rgb(250, 250, 250); border-color: rgb(187, 187, 1=
87); border-style: solid; border-width: 1px; overflow-wrap: break-word;" cl=
ass=3D"prettyprint"><code class=3D"prettyprint"><div class=3D"subprettyprin=
t"><span style=3D"color: #008;" class=3D"styled-by-prettify">struct</span><=
span style=3D"color: #000;" class=3D"styled-by-prettify"> sink_convertible =
</span><span style=3D"color: #660;" class=3D"styled-by-prettify">:</span><s=
pan style=3D"color: #000;" class=3D"styled-by-prettify"> sink</span><span s=
tyle=3D"color: #660;" class=3D"styled-by-prettify">,</span><span style=3D"c=
olor: #000;" class=3D"styled-by-prettify"> convertible </span><span style=
=3D"color: #660;" class=3D"styled-by-prettify">{</span><span style=3D"color=
: #000;" class=3D"styled-by-prettify"> </span><span style=3D"color: #008;" =
class=3D"styled-by-prettify">using</span><span style=3D"color: #000;" class=
=3D"styled-by-prettify"> sink</span><span style=3D"color: #660;" class=3D"s=
tyled-by-prettify">::</span><span style=3D"color: #000;" class=3D"styled-by=
-prettify">sink</span><span style=3D"color: #660;" class=3D"styled-by-prett=
ify">;</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> </s=
pan><span style=3D"color: #660;" class=3D"styled-by-prettify">};</span><cod=
e></code><span style=3D"color: #000;" class=3D"styled-by-prettify"><br></sp=
an><code></code></div></code></div></code></li></ul><ul><li>std::convertibl=
e_ptr<div style=3D"background-color: rgb(250, 250, 250); border-color: rgb(=
187, 187, 187); border-style: solid; border-width: 1px; overflow-wrap: brea=
k-word;" class=3D"prettyprint"><code class=3D"prettyprint"><div class=3D"su=
bprettyprint"><span style=3D"color: #008;" class=3D"styled-by-prettify">str=
uct</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> conver=
tible_ptr </span><span style=3D"color: #660;" class=3D"styled-by-prettify">=
{</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> </span><=
span style=3D"color: #008;" class=3D"styled-by-prettify">constexpr</span><s=
pan style=3D"color: #000;" class=3D"styled-by-prettify"> convertible </span=
><span style=3D"color: #008;" class=3D"styled-by-prettify">operator</span><=
span style=3D"color: #660;" class=3D"styled-by-prettify">*()</span><span st=
yle=3D"color: #000;" class=3D"styled-by-prettify"> noexcept </span><span st=
yle=3D"color: #660;" class=3D"styled-by-prettify">{</span><span style=3D"co=
lor: #000;" class=3D"styled-by-prettify"> </span><span style=3D"color: #008=
;" class=3D"styled-by-prettify">return</span><span style=3D"color: #000;" c=
lass=3D"styled-by-prettify"> </span><span style=3D"color: #660;" class=3D"s=
tyled-by-prettify">{};</span><span style=3D"color: #000;" class=3D"styled-b=
y-prettify"> </span><span style=3D"color: #660;" class=3D"styled-by-prettif=
y">}</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> </spa=
n><span style=3D"color: #800;" class=3D"styled-by-prettify">/* some functio=
ns to have iterator semantic */</span><span style=3D"color: #660;" class=3D=
"styled-by-prettify">};</span><span style=3D"color: #000;" class=3D"styled-=
by-prettify"><br></span></div></code></div>Like std::convertible, but with =
iterator semantic.<br></li></ul>Florian<br></div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/b184aa97-d05a-4f2f-9f53-b68550e57936%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/b184aa97-d05a-4f2f-9f53-b68550e57936=
%40isocpp.org</a>.<br />
------=_Part_1722_1792002011.1520505362175--
------=_Part_1721_1631275218.1520505362174--
.
Author: Vincent Reverdy <vince.rev@gmail.com>
Date: Fri, 6 Apr 2018 02:34:07 -0700 (PDT)
Raw View
------=_Part_7993_777198510.1523007248058
Content-Type: multipart/alternative;
boundary="----=_Part_7994_2031283909.1523007248058"
------=_Part_7994_2031283909.1523007248058
Content-Type: text/plain; charset="UTF-8"
Hello all,
Here is the current paper. Comments are welcome.
I didn't put things related to convertible/sink, because I think it
deserves its own paper.
For the typelist, I am expecting something along this line coming from SG7.
And for the priority_tag for overloads it will probably come in a later
proposal of mine.
Best,
Vincent
--
You received this message because you are subscribed to the Google Groups "ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an email to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
To view this discussion on the web visit https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/b2ecb2d3-4f2a-4d17-a9a9-eec3c51a71c3%40isocpp.org.
------=_Part_7994_2031283909.1523007248058
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><div>Hello all,</div><div><br></div><div>Here is the curre=
nt paper. Comments are welcome.</div><div>I didn't put things related t=
o convertible/sink, because I think it deserves its own paper.</div><div>Fo=
r the typelist, I am expecting something along this line coming from SG7.<b=
r></div><div>And for the priority_tag for overloads it will probably come i=
n a later proposal of mine.</div><div><br></div><div>Best,</div><div>Vincen=
t<br></div></div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/b2ecb2d3-4f2a-4d17-a9a9-eec3c51a71c3%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/b2ecb2d3-4f2a-4d17-a9a9-eec3c51a71c3=
%40isocpp.org</a>.<br />
------=_Part_7994_2031283909.1523007248058--
------=_Part_7993_777198510.1523007248058
Content-Type: application/pdf; name=d1016r0.pdf
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=d1016r0.pdf
X-Attachment-Id: 7048976e-e917-4647-b687-967573354a2a
Content-ID: <7048976e-e917-4647-b687-967573354a2a>
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
86SQ1wNr1udTNZ2oLydN6xnXFAvSNNsKH/0kjszyqdzrxjjbfv74znHe1aFscJh8/87pY2IrQ0nA
4dccJ/cE1TGPHQdLn6VtMELvDeZzx3jYAdH3e7mJtD08YuVP3PP9Xi9/9+OhZ/NS1qfGTmp5s+65
EoSWdBV6z+fz6I+KG+Sn5AjHjptEBtXuTtxc7Q2ha25ePiqEMp1Pdj8eQnsO4ItjzOUcfT+Ar+M6
suYT6FT1pf8Prf2hlQ4KrYRgiP+HQuvOkIY+wO3GkC9LTqPri/TqTPULofVrAPdM2MfmHspOT/AX
A2QKIszxSXxo4C27jVzC37R0S9vJHHu/ZlB+TeBoUQ9me67pY7z0bRjS6w0Ho/gIhxyfhb3r7Cf5
jsXK3Us2/ctYSZwz+R4vC/QBr2MCOFZ8IN2xk3j6KHxqv5X+M4mWvNbT50GqR6bkved8I93zsZY9
rm6c5NbNqXz/jLyl8yHyixRiriZ29P12E+0ElncCgD7UsK9GcFg2Dq4RbHG3cLQaodgj6YfIJ3jI
p9kg+9N0hfoxTsl+c7tXe5sPLyOokKatwamMMH5fEeFj2A+9qyJCAL+oEd7tXQ4+PaKe+GbzvxC4
rmBlbmRzdHJlYW0KZW5kb2JqCjE0MyAwIG9iago0OTI1CmVuZG9iagoxNDggMCBvYmoKPDwvTGVu
Z3RoIDE0OSAwIFIvRmlsdGVyIC9GbGF0ZURlY29kZT4+CnN0cmVhbQp4nN1bSY8dtxG+v9/gQx+f
DAzDfckxC5wEARInAnIIAkEZjWTFs8gjWbb/faqarKXf61lez+iQQIdpstnF+qqKVR/Jpx8ma9xk
8d/4e361+9XfyvTu485N73bYU3yqJvspxRhMS9Ptxe7t7gd4lVyo0xU+wJvpcgcD8/IZB1zuvtv9
Y7re/TDNfSjxLDg/zZ+lPp+zefrdze5b+FdMK9H76aedNWn6ZudjNLXVKflYTM0wn/TkYJKffPDG
tQbtkg186V02KSRun++8tfBp4R5Xq3HFswRp9znOd9IDwkEkC3ANtJIZ5iZMwCr096xh//oAwjlY
REQQrL/vgo8meNXFHV3N4Bz4wQnQlsAfRQOt1vgWZEQuJrUopuI2aSI9XVUW0IHwDAOoqDB3sILz
xwf6zzBZgMBEv76DAHJz2E3jz/nV9JuXcyiUqZmWS63Ty7e7HpRuAnNVD9GUQjTRw6ur3T/3f3wB
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
ploIRDdDKNuKIYnddzwYgH9ABqtO8wHah1hv8JwB/DboJ/6g1t2z37/GOxHwD7I8Mgs4x5/Z4Q+o
1qNlblZr+4AtI+z8gDu2+MBZgBWMdsDvMdSDHJnGvy7StuJH3or5j0uP4TohvktWP+A8a+vvixK6
p/4RXQPr1x0wtmYBDbtj8IYH7Bl7ORJrA9aMbR8uJlU85NsN84axX+Nl8cVhv2IptvX7EJCwfCqC
db2gkfXyLVusq2lbouzXnKHsKEN5xUj++nEzjmwgfzwpsiZOkMr1ceULu1etWmrKL8dKtRR0+Nnx
PT+a1JCfftNn4PMEnn+g//E8/8DGaT1/iBCI5yfk+CVDV+zsLxncPW2/71rDZaZ5I3o+YsDYvOng
hsEXDO7O5to/822l74ZOUC9fPOzVsXLuS7c/YN8mlRIAfnYFKXMJtpIqBuonif0swQD+9QDXmxz/
38EA/uW+9E6xwJeL/wIkXyzTZW5kc3RyZWFtCmVuZG9iagoxNzMgMCBvYmoKNDYzMQplbmRvYmoK
MTc4IDAgb2JqCjw8L0xlbmd0aCAxNzkgMCBSL0ZpbHRlciAvRmxhdGVEZWNvZGU+PgpzdHJlYW0K
eJztW0mPHUkRvr/fwKGOrwVd5L6MEIgBxCIOzGCJA4NGdrvtsabbbm8zDL+eL5eIjHyv+nW7x7IQ
IB86KyszMr7YI+v59aJWvajyr/+9uN79/Mu4PH+708vzXZmJxqc1mMU7Z9fslzeXu2e713jltU3L
dRngzXK1w8Iwj8uCq903u78tL3evlzpXKJ5bbZa6zbfztArLb1/tvsC/uObojFm+36nVL7/fGefW
lNPijYtrCjhvzAS7erMYa1adM55jWLHT6LB66/n5YmeUwtbIMzqlVUfDFMZzO+NiN2ZAHCSZgM7g
apxQH3EAs9DeM4dt9wGEC0hkkCBYf91Z41ZrxBRPNDat1tCDHkCzhz6iBJrUarIdK0JcfXZDVPxM
nIyZxioTaED4hA50sFAnmMG6+YD/CpMJDJhFr89hQLqa3dL/XFwvnz+qphCXvOYQU1oePds1o9QL
xJUMrMlbtzqDV9e7v+//eAardSqk/cuzc7XaZJI3+3d1rIMJZv+mjFWE9LPevzo7N3mNVsf907be
KuX378X4AhSNVcBDZHz2Yf8C0y6aWGjgyBx1iHxmyPkfj/60+90jWK92ThUfGXjHTLc1cL+aYZ3a
aQMNCCVqm8OazVhhkyt/mQI/s7XyTNXDIFCVNE7oShws9PfEYdt9AKGocZAYavxQBdoAxeVZgX85
AyfJ2wi56lWnmIWoSb4qxUkZl2UcozI5Nv1ql3TS+7dFdzn6FFkdxnm3Rj0FD5rpHuGcWZXwKWfC
ap30KafVGtJYYTNilAw/9Mw+xTPd/YlADw50AgUPZqG/Jw777hlC9SomMdRhimC1lVB5pjOKA1Yn
goNXHnKcoOaSBoYsYlxF8KBHxkkTndG+uaFg4oSST+/vibm2+YD7ipJJCJRBg5cJJc9QiCuxWqJM
HqFcovShcDAWeMQWIaX+yChpojPaN3cURJxQ8untPTPXNh9w31ASCYkymzmKjBlCWQJ1EIE+uDmK
mODSOqUCOKCRcqLnkQpopjNLBDoUOoGhEgv9PXHYd88QKlQmIaDGaFYbJFSe6YxGn9cgoMZShkxQ
I6KIFVCj9msQUPmZofJMY5YJNCh8AkFlFvp74rDvniFUqExCQE1er3GqZHimM5psXpUINUh5q9PL
lODjGoXxRiRYJeyCnwdUmqEE3wk0KHwCQWUW+nvisO+eIVSoTOLBucFY7Cw8ytzwRQntMCNnKEPX
TPC45AejoZL9FaeKkTR+UkYeZUrJE5zLWxmQFJJ1TxOwdTOyNupM641vguHqi2d6+YVydlXDEK1D
mLfSEC0SEeoLsQLBQg1DHM8kvjHTKigm0MorPoHKL2ahvWcO2+4DCEU7g8TQTinsbUBw1dLvxgzB
hQc7Adfjb5zg+qBb0KYViBhOwOVnhssznWEi0OHQCQyXWGjvmcO2+wDCBdqS/0pY0CKTeLCPWTQh
WW0V0KgWVZ6qrW/E+NiLfDROlsSyNhPeKQmKsrrSQ8hMw/1ao+dCQKCSRc2YaYJ3wRtZm7mSsERl
doEdKDJENeeCQmDXggI9k2zHTBX+IFBVM07oqhss9PfEYd89QyiqGySG6lyEMpy00jHTGUWXssZh
pQ4dxyoTgYsoNEQx50KKLXIQUnoeSGmm8coEGhI6gIAyA/018dc3zwAqUKIgcJbUkCacPNPZTGgo
tcSJbOUnnDGvSeg8omHVwib4mXHyTGeVCHQg/QDCyQy018xf23wAoOHsFATOrOxqpHuOGcKJ4ljU
Zy5FJ3u8wghqDFHRueTC6qWk6JmB8kznlQh0JHQCIyUW2nvmsO0+gFCRMokf2bw7jy7vsHn/TW3d
ItrN3MNG0NH1pK7wIIdiwZMWV0JOVAF4xJ4eV7y1tmf4BM1yiPFRwQul1sZMky/qetsK1iZ/DxBN
IKQhH4Kp92C8wuUmHqJAzyTCMVNlPAhUDYwTuoYGC+09c9h2H0AoGhokhoZ8TGFVcYJKM53RGO1q
R9z00cfWYjLUWFpSJ1aY3MIeUaBnhsoznVki0KHQCQSVWejvicO+e4ZQoTIJATUh3roJKs90RhPi
dRRQE0pNPUFNpS8VekeVKKu+8cxQeaYxywQaFD6BoDIL/T1x2HfPECpUJvHgbO9haTkf3Lb8QeRy
4Vs3Z+cWHhW0OUr22uvkfXcom7VlhwohIdpI0Y+ZJrgQIFBxOxlCUGuWokc76FfjxAqIxDtBgZ5J
NmOmCm8QqKIdJ3TRDxb6e+Kw754hFNEPEkP0IJLWMEHlmc5o9H7NAmp0qhUVDBU10xoE1Ii0I/r5
8cxQeaYxywQaFD6BoDIL/T1x2HfPECpUJiGgJhSySsaTMdMZTdbLpicknWXLA06Scs15CWrWq5XC
oucBlWYas0ygQeETCCqz0N8Th333DKFCZRIPdqiAkt74fHsKKxfDxqMidrdVvsLlZEM7nKvX1HVF
JedyaVgFOXa/9vkFVU79/GJQsdZPLnEelwXT55fUPr/k+vXFoO9sX1+gpf71pVxu5+z1IgYhZ0h6
eVO+BqEkMCVctW9CutxoQXO5fRPSpyoDsII4mZCXt671XUZus9yVlM7fmGDoYj9qxMTeloTkVWtL
bNIq5RapbHDKFgkWjWhrbEBfgqHK1hiUD2VJtlrTtXKjclGpqKRyJ1iHn52dO9S3xuv+naAtJtpe
t0uEYxrvxeq2wqAXlENJ4xU4QbkCdIU/yDHBD8AeJG6tUq4cbmFugLl/hSBd7qgQFMBpWYt+bv9y
LHjdjs4qBGKjjrucwJRko4kGnsISM9nHylGRNrqcvtwaHSajQ5WpqtGhnPRkaPMYC7aMzpVvf1gZ
yOgsGV0xMo+XsDCvDWp3dKsZCczCuYtTw3KqT7t7mBm8VyMQOnj5lA4ReVJeHCJLgFFXM/u8uFjU
kCA1s5D7/tszFDKwVk6GNlECDBltLfXG8Ipec4JV+p5UZ+nbEqTYCVul2Y3r9PMaLJRJXtxBIfG4
6mkYKIWAMAmkfILUiQRSrhyhMxIITMZ0CUaICv38YmOM5fo2qjWhWKl/Ut+gPlyCufb1upBdI8hW
Cf56SLDfxRWfoe9v1VRJQP3uADzgQYqiVfbG8zZwS/oo1L4r0w5naF++/Fhv0ZaGbRLXjYQxsOum
Pa2L8touHffP2i7UqgYRtig6J8cfkVwLsMU23SQDVJ4Opq2WR0+B+kn9BJiLh16N4eMxfDmG31ZF
a+V1pzxL15WLY+eJ8q9q4HPZm8ksjnULY16j++i6RaGKlu9/WbcvhurejuHXY/hiU83fjOHlGL7Z
3PZO2gyKCoUYe4tNXZ62Hq1LDs4fbD0mom7yH916DOINyP7fej6OcWwb3bPTJpHcGkuiO20SB8nW
xNKhfvRkC1mjduzJ9svCiVdKp0SJFT1J0wtqj1LnPi5id1zRaRVsrgFUKx1zIm2F7PqvMErlKNW9
qaKESKlKHSuDd915NYaPJT0efjtl6buCd6kaY6lwvfxlSAOL5sxJwyuVHfq1UlrMhodG3KD+LxKw
3hXkpTYssP1chtCleykDm5UrvJhOljVJk62OlmSLijpMK0Sl8q+6JCXDumKeW7E5Jrv+avdyI6i9
Kz/sQNu1/6Htcrp1QtXjW0SAWwkHFdDG8L7FEWS+otglA9bZxnJT9tCIxgYM70Z0aQZsmxqSIcwO
LSLxr3WUNaTUAlttkFZ7I4KUiIoiutUGUKsiJBnRhJw+O6u/fkrWno73pvwuS5sPj/cHse4g3ldZ
g2yVzidxKyGdl5OtjfTQkkl2aMn7z72S8m4qyd+LrRejxKcMAhcRHneLJ3/frNqkH+EKddOdrtCM
J4UJ5avOK0LGk355F5xgZdB/NTKH5I/TpZsCydzb9CXxdNgZ4c7HoLeCzgjotwSdCr8HnRB9nPuq
GnRinvQmT2w0nHcRFUGxKOdwqjVkQAeVBlwK9iExMY6rrnf67UDddB+1UhlSTj93WUMzYTlHdZad
Mo0LYWlXI9L2z6XRuk2tb5YlMXJ2mEKRaFelrYgjbgqBoIKTCVZYyHNZnQyFifTSyigVygcXKZjj
NrfK6HmPmXr/1V7WOIO7TYub3fvoeLDlTVvtqn0+qY5uYTvCB4RpdWoaRxJLMW2t6AGbFXFzZGZ1
tRTOsamiwnwm9snFsze2CJL2j5og5e1C3XnZrNmrksu6Mbc7C1Ropoa3hPCmnKQ7+2plyMR+UQmZ
u7z/6Vm5CsO+KIbNcttR1XDLpV498c+FdoRXGhl/n1TrV7rVsSnHpM12ASc2bV+ofHXG3J/OYxo5
dNUP6FtO5zGQRRfV+5brkaamGnNr9u0YvtvMeWL28nTOKzflyCsbOe+42Kiu3G+p+JON1tvVL/Sf
DFvP9bATYTIvN2dF+zt1rFuzd/SpSaNms8zFnf5/aMWfrtB9UM6p4T/YGD9FqvnwYrrnkjTF4Dn2
tbiVb60FZCfeQorkYOtYBlUDi0GdnpPtkaV8AaBuuRfMRFfHjavWWrX1391Dcfx7/TItcimpLUcu
iqJho0pzzf1+Ei8fvp3Htlt/G8oPfbtN/2KI9v2mi4gW/mpzVqz9YQx/eQ/P0lzqTP3j6YuLUiJt
sr/Nx83s7MdXFGKbuNl4fAtUuvZ6e2+kCHD13llJ2zmVu6UtXx7bqnByEfRa4nZo/tKm2CIKDnQI
G2L7bhP09iXP9lXxu3vL4iBb3D+Blob2IRd/dyTQ+qvTnkAvR84TufRmMyn+MIZfj6FoJUUuFcn2
jlxar8Dij2sfs8qjf3Rz/jjuH7W4gIzmlgub/iuLFOxmoyYMWmQ5Ed7+k+5nOKVspJFs7tNSjsOm
QuRIKwfu+0+RbN/1OzQgmz244sHwzjOeThm9FtsmwHjcQaVSmRBQGzlffpl+3KgY2dTX7Od1+X2Q
vj37SSIy54l6udcT9R5U2LG4OhLFobwv2rjhCFZqU9wl3FaYbV3E35IT06qMXj7ldTilkoNcdCqV
qFgqGOJSXpbM6bPVjkfdXv90sOXZpw1N3gdGZSfzenXI8yzZc+N8SUzdiJC5mfeT7crTMXyxGYNf
3EVBxOCrKmzjnAzXgpZIh+J71s/Ozj3kgziKTneeLf+XxEorEA3KDWt2uyL5evMwkVpFbSFOmFNr
zZVf7P4NSBhsV2VuZHN0cmVhbQplbmRvYmoKMTc5IDAgb2JqCjM4MjkKZW5kb2JqCjE4NCAwIG9i
ago8PC9MZW5ndGggMTg1IDAgUi9GaWx0ZXIgL0ZsYXRlRGVjb2RlPj4Kc3RyZWFtCnic7V1ZjxxH
cn7vv2A/9JPRY+yU8j5sWcDau9q1AQPWLgE/eA2C0xqSIw1nqDko0b/eEXlERFbXjHh0q0lB5MNE
RWVGxpeZcWRWVvUPazXptcL/7e/21eqLv8T1i9uVXr9YIScan6Zg1t45O2W/vjlfPV/9ALe8tmn9
Cgm4s75cQcEw0ljgcvVy9d/rq9UP68JDiadWm3Wp5mt7WoX1H65X38D/OOXojFn/uFKTX/9pZZyb
Uk5rb1ycUoD2mBPs5M3aWDPpnOE6hglqGh0mbz1db1dGKagaiaNTmnQ0JIGvaxvbFXNAOIgkATqD
VtxCuYQGSIV6nzSstWcQttAjLKLD+uvKGjdZI1jEqGparWEcNAPNHsYjSqBJTSZbLhHi5LPjrqLr
rglzqqokoAKhFhpQVqEwSMFSeaZ/gUkCGCaO6wuYQLpMu3X7s321/tcnZSrEdZ5yiCmtnzxf1Ump
19BdycBs8tZNzsCtV6v/2fz7Ccxap0LaXJ2cqskmk7zZ3BVaBxPM5gZpFaH3s95cn5yaPEWr4+bb
Wt4q5Tf3gt6CRGMV4OlifPZhcwFsF01EGdBkjjpEajPk/L9P/mP1xycwe7VzCm2E8TKnzTXQfjI8
O7XTBkZADKK2OUzZcAmbHP4lCXRNs5U4ZRxYQBkkbqENIqvQ7ncNa+0ZBBxGFsHD+L4DaAMMXB4H
8L9OQJPkbYR+1ZNOMYuu7v2rUhwG4xzpGJXJsY6vdkknvbnFscvRp0jDYZx3U9SD8+icZhHOmUkJ
m3ImTNZJm3JaTSFxCZvBR0n306/JpojTzL8LaM6ht9CdB6nQ7ncNW+0RQrEqEsHDYbBjtZVQidMU
hQYmJ5yDVx76cYCaMQxwX8Q4CefRLwlnZzRFW+WKgoR3lNR6u9+Vq5Vn2heUJEKgDBp0GVASp7s4
9NUSZfLgyiVKH1ADLuDBt4heapeEsjOaoq1yQ9GFd5TUer1PytXKM+0ryi5Cosxm9CLM6SjRUQfh
6IMbvYgJLk1DKAADNLKf+jWHgs5pynYBDUpvgaB2Fdr9rmGrPUIoUEmEgBqjmWyQUInTFI0+T0FA
jZiGDFAjeBEroEbtpyCg0jVBJU5VlgRUKNRCh0oqtPtdw1Z7hFCgkggBNXk9xSGTIU5TNNk8KeFq
IORNTq+HAB+nKCZvhACrxLyga4baOT3ANwEVCrXQoZIK7X7XsNUeIRSoJOKDY4OxUBN1lLHhG3Tt
MI2c6RG6RIJnGB+MhiHZXFKo4KDx90h5SFMwTlAsr2lAUhCsW5iAuW4oTFhvfO0UyryI01IvSGUn
xZPQOnDxVk5CC0EIcgtRAhyF4knI173rmFOzJxJQUytqoadepEK9TxrW2jMIODIsQuSYAZyqlvbG
nA4VLNcJqB7+xgGqD7o6614CPIUTUOmaoBKnKdsFNCi9BYLaVaj3ScNaewahQCURHzwJLWTpWS1l
mJBOqTykIy8FvTvNfDRO5owyeRHTVwoUeWeRBz4l8fzElZgLAexYxnzm1G53wRuZujj05yJx2UIN
iMEi2XFBgd/TQkK/7j3LnNL1LKAMDLfQBo5VaPe7hq32CGG7wt7/068T2ssVi+A56SLMMifNjzlN
UVifTJHNz8FaY5IhwEVIMUQa50KK1W90pP2akXZO1ZUEVCS9gQ6UFGi3u36t8gigAO0SBE4MCmnA
SZymZoKlpJY4IU75AWfMUxJjHmGpqsWcoGvCSZymahfQgLQGOk5SoN4m/WrlGYCKs0kQOLOyk5F+
hzkdJ6TFIjNzKTq5ukNFILsQuZxLLkxe9lS/JqDEabp2AQ1Jb4GQdhXqfdKw1p5BKEhJxAe7U+dh
ZTdfsP9bWa5FWGLm5gmDjq4FcgUXkhQFzqqrDDn1qO/BnTZX6a21LaonGFPymnX/yEcFVihHjTm1
fyGjtzVVrf3vAUrtkD5CPgRTdsCohMu1e7qEft27kDmlj1lAGQFuoY0Qq1Dvk4a19gwCjhCL4BHy
MYVJxQFq5zRFY7STZb/po491cUlQIy5GnShhcnV7XUK/JqjEacp2AQ1Kb6FDJRXa/a5hqz1CKFBJ
hICawN+6ASpxmqIJ/HUUUBMkmXqAmnBFKsYd8kOZ8/E1QSVOVZYEVCjUQodKKrT7XcNWe4RQoJKI
j9wu8zDfcp7ttvxZpCrCzl6fnFqwrqDNTi6jvU7eN+OyWVsyrhAS+Bw5AMyp3RcCdKvYnQwhqCnL
AYDloJ+MEyWgY7wTEvp17yHmlC5kAaWDuYU2AKxCu981bLVHCDgALIIHAISkKQxQidMUjd5PWUCN
TtXUgqBCSjgFATVC8BHreb4mqMSpypKACoVa6FBJhXa/a9hqjxAKVBIhoCbI05X0Ksxpiibr5cIn
JJ3lsgc0ScpVE+5Qs56s7Kx+zVA7pypLAioUaqFDJRXa/a5hqz1CKFBJxAeHswArFuPzw+EMN4aN
h4TfPZTYC5OTC1o2rrZkKCWKOJdxwSrEkfnVxy+Q65THLwby1vLIJY40Fhgev6T6+CWXpy8G1p71
6QuMUnv6gpvbOXu9FkTIGXp6fYNPgyAxMOi06jMhjTtaMHK5PhPSj/kpUAW8ZYIYvbSt7zJEODt0
q7Y24nqpgHfwDzqw8o0NA13LZK19zxRC8ioOZdCz2YSjcwvuDmZKsGVsLLh0lXsz3iQLyzWopWDN
p1utMqgvrk9MmHLKrrpGG5yyOGS1Da/D5v/KjkWCxZ19SGArbrKPm+s6sBFWFmnzTyenABGmSk1l
bDCwSG7zJGQVwuZVmRwZAqQkn52YCAMBeVHXyme7eVtaBEuww4yBRFGVGQMZoe+zZKShwNKMcfjg
DkqGPmMszxgIiFgG5ofXBvJvyP0AUjF9NEkc9wj27N5hkoDtaXBjDmx0CGbgN1KGlBImEPgJMUms
NiGQOcFM7WtwWPKY/nhABZt7aIMhkQ9ucG1uvQM/yM+NUvS9IkyUnqjqaF1f0xtPi/qgdZlR3sJS
Lz3Q4CVXE8KEhJrI5mDwwZQFT+6UH/S5rk3EbJpHgcneZMHEyq0Fq3RopIahlAVaBq1BnCxRGi57
bG1bLEcvEugMkxN8KRBKgYExIQbbagijYNVtsLVJMPZ1rOvw3Twy4BC8l7KXiPrBSgUcvYd1Thlw
6A5IkiE24JbLaXboONAUiPuauZfMfcbkHRc4J/fKaB+bmMt6glODhbQZ9fxySfSH9YM2+CTOjfK3
J6cJllYm4kCeJtw5TcWBde4tc2/3AxN8vUfvINV4cnKqcYls7OarPSKGVY1OY0uAB9avIL2YTCdv
mLxnclvI6FJxuh8P3RjI4M1sJoITh3AVnc1Ft0Y+BRLWKTi7njP3nskrLrBl7h2TF1zgeqimPWLy
m3/eX0eTicEY+vwZmJjU8xAmJuUf0cSkGoc1MdnS0U0szmYimIJWGmyhRNdOPmXyFZJQ0eFMHZiV
PGPynIreLIp6TvfvmXnF5JbJOyoqFLxerPWUir5eLHpB969m8oXWlUS1ISeABOIgHgCP9Fj76XsA
qechPICUf0QPINU4rAeQLR3dA4TZTHw3D7BjK4+4ADamXWHXi9W+W5Qw9wc7wuYGj32lJaB3s3iH
8f8QFm/xcZDWn7zFD3oewOIH+cex+AjL2UGNr09OvZmStrEmftC4Tpvf7RF8cpNX9oPAwwLT7wk8
nn/VsMwf1JhOTiNu1AU9IxPaBRjD74EEs/Cm7E938gWTT5h8y+RrJs+ZBEzF88BSfI/OFboIVtQz
YLfCY3bqhqh7ovbtWa3LMH56VEYsM26ZFMsXUUCsWd6MqxOxkmnkMybPGql18Rmp52llHdN8Wtkr
3Z9Pix777dP3aVLPQ/g0Kf94Wcygxl84i9mnI8Msxu8CbnguGeUziVJg348f81M2s36vTjxab6sT
B0dm9gndOHCHS8iLg67Io8uuIW9um7h7Ql6e49pRjZkHhwY1QP/MPHjAw2czYMfy4E7FSZnZYF90
n3rbiaedoFtXnXjTCfTaMDY6x6Jl4T3rxFknpL+eyS5ZKS5ZzUE8eLBTufWpe3Cp5yE8uJR/xKxU
qvHLZaUfAP4QWalU41eVlUpgR81KvR6VueCV8ny9X7lXTIpV9R2TL5m8mZWtwn5s3LpZ38kLJq+Y
fMPkNZN96a9LUtG5Z0xeMlnyXVsaPoS3xGehxn/63lLqeQhvKeUfMd+Vahw2350DPlK+K9X4hfLd
XeRHyXelGr+qfFcCO2q+62aDfcFu93bmwyv3iknhre+Y+5K5N4tlf2SukDuPDZU7jw2V+0hsqNxZ
bNht7eawEcNC1A2f/nOeQc9DRAwp/4j5tVTjl8uvPwD8IfJrqcavKr+WwI6aX1s9KjPb1MXQaDxt
DhgvN3W/Z+75uEPcuDeLBWg34l5uJrR9YHTG+PKoOcz2r4lTVp+Bc5N6HsK5SflHTIelGl8fNB2e
A/6F02GFpjbr9weTwohZMjj239cewSNdX2EBIL0vForRP5QsupNoobjnFupjl8b9nslzJp9y2ZvF
Ardc4J65l0zeLQoDrnGqHED5kkPC14zid4DCIekkNkRcaiUkQ0ZnXrpEYz5vTQGPjsJU8Ogd6hKi
uENfnzk18prJ75nERAobhib+tsFMykMHB1bNbP6hKaFsIZ0pLug5FyDdTdG9qIZFEaZJupDozGIJ
SY05SWaMJaTXtK8q8LeTPfq44GGO5XGOXRUPBUonmhY1r+zkT1xgOxZo3NfMvVtS9r31DBDcTdCj
njAqSx0ByYjO3q7VB/RHwPCd7djOFzzM/0ijODGzzDo8q463O/OL/eDGV4ZMmuE+aTNehcV4N2mX
szJrQXiY/OPRapPAnypH5+jLmy0ff47eZPxaUFP0r6hc8hpC9Fs8I+6gm5IezsiXd1FgkaJKTkVs
PjEuz8W3w/BRufatJHy/A+0Nj9nPj7W/FOLOW0XwN6/xs0ABYqY8Ty+kvS4fcrLgpCozK+WkOud0
RF4cpxeH4b8VzX4rDsZf8MF4qeUFH64vXQH9k9LQQ+3tU6+Gw/P4aSq7loS3Gta0YoR1VAbfxe6H
5zXYOsTPvZyeNxFSGPfpH/MZ9DxATjTIP15ONKhx0IN9Q0tHP9g3n4kY6X2J+bPD85UpjsZfMnm9
VOmemDfMLBlBDc0HODpnAizT46f/kHLQ8xA2JeUf0aakGoe1KdnSJ2FTUqGfsamH30fZsbk7YopX
UG4Oa1MeQ+RnYFNSz0PYlJR/RJuSahzWpmRLR7cpP5uJ4wNpPDkDxeQD6efMvV98TL3lAuIx9QVz
rxerPV0scMbkd1zg/MHWyoMEdxB7tQnm66f/6HnQ8xD2KuUf0V6lGoe1V9nS0e3VzGbiz76VKaLc
szHJbAUuFwucLRag08wHeSsTn7Krz+CdrEHPQ5iYlH9EE5NqHNbEZEsXbEFXTF4yuVMATQyfdeHW
pqnHPHG3zxuxgOK075Zvc9p3zsyfiPlarrSSjmX39owfql0vkpf7eZqlUzkRsNM1j77DsB2tdvfF
BVHtnskbJs8X5b7B/fpU8P9L3/ktZ8jadvAt7xE/JeaWmZfEvGbmLTHvmXlDzHN8ZJkL+SXff8Lv
U3zVHjjYiN8RKQ8cXPmkiA74sVeNWjdZz5ZUEa2e0+bpAZ7SGWUnFT+DHSmp5yHcmpR/RLcm1Tis
W5Mt/ebWBrc275pH3drzRa81+7JEI+8W/d7N/tzac2beE/OKmVti3jHzmpg3vxa3prOePoPXaaWa
B3BqUvzxfJrU4qAuTTb0m0cjjxbjvGeGU/20wzF8fKNyH9xEWTjrP//8xtImysLbAuMmysJpzC1z
75gUbwugo8SDCmCo6CiTL46o77+KsTKJNmDbDmzj3jP3isktF7hj7gVzr8dqu02IAmdc4Dvmimf/
W+aWsx22nF/4kjwnWo7LZQNp5oSZlE64edlnJOByKTSc0zP4QzhhUE1/Bi8AD3oewg1L+Uf0w1KN
wzpi2dJvnpg88XwQZrllO74pDnXOXuVv3Nn+WOOKAmeLBZbPjc7SzIQ+tXi5hM4m1DyzkePyuTGf
MXm5SIoCZ2MBXkvbsnt4ZHf3TgeAoL6evB4/pJk++gCQdn5yoc2L/wTlFP5sVurHaUJU9ItbwWXT
j/cEW44j0hmh5W9ZirNAVZwNjj5ia13on5Oef2ryXU7LWMgsfBCfmlT4g3P1tMyjX64FK5/wS5Ya
uxCSkwg+IPr+px23ee/+zAU/+l7Nn9do/Znj0EHfn8BSR2vl6JxTSu9yFKp9Pxi/Inq/2IWzz4Ti
8STlocFX/GFTcUiqD19y/fdx8JRUO2WFH02VXxKt574gTOjZ4akiONvN4pGr/kVVE/s5rvpBI2wB
AnWQ6vSDXMY8cJKrtlvdEEr1zvdKKcQHKvFpLHmi60x0cAXpfLXS0tc+1bOKTVz/zRbrXP/4atIW
hZRvpUceJAidDacKM5waBsMa/sJ6zKPGOP3x1/YUfl33ybcweWYfgnX4ceWdbi7320k8H8svJUCH
OOvM0D71ncTCAsRXYNvBPwtl6snVqqF0Vu9gW+A3ys9cSttK+aONC5+4oNhiXH84wS8me+X6jCuW
sfgl3e1wv9oCZvU4VAm6R5527FNq+Grvba0F/f6gocourpMev/xsUS5QcjD6bLHpgc/2tsI+GGlM
DxxafNuPNcaBXepF752tv4NVR/RqXoJPRjo0I3m+8aobt/l55+QWvFCZY9QrV2KOfjt0G85XnfLQ
RaSRHWz1XgihgfSDvG6gan5utRiYxyljuoV1EWCs40gC7aHv8PU+oGDqmjZqkJqFNABsWjuVBdjd
w6OlbD8Pq/HdJIANko2YpaLoe5obLFcnCNT7NreoQY5a+Mi2OH/7qnzoPDvIO7sfKlFJTOcdhNU4
Ty2YH3ansLOfhCEOB4l3QtyYXcihflElJzXa6u5AFVMSE16Wvq1CQpJt34vzwVsC9RKLZvx4u5Q7
HgOu6bnoatztVNn2mXgxBq9GPmXyOZP3TF4xuZXxikgh93qsBr2mvG66jdMAMnTngu66zU1YHpVG
S1zEB34v4ftm74rvFZPni9yzxQI3D3RWj7b76avdFl4vlr1YrHb3oOY8Bu9h6/hLgV6Hfdu6C5Bk
6/bJ3T+LbPWNSAjQaB34wLrgQdJnv2Rlj38s38KaA8rLAjspWyHxV5rRkvuPMWOwEr51ntUUDcaw
hi1Bdv1j9VLiBYUdi3/ZS+dHwx3Cj1KfYa5w2S3HX9ZIvjLR+8HYxSR396WDAlkULWFdQaaZZ6ki
Si2f+QcfE/AxydvKdEYP4WgRWpLpggzJow+uQ4geryauGIhdt3ZZ7YV0XNxeCRtWKWVlfJj/GkPr
H9HFz0sJByvXtOh3kp18SAtuRxjkm0Xj/X400w+yTWMQlN/zktKYSaHUedYrJnIbHAg9jwfIEprL
kEAH6jysI5fFveQskBY8Zky4cZqBODAyDOi6/25lmfFM9XQy6XdJJ2VKJxT7u2LHyvq8sGZtybVo
cOmnPRZ/M2N0IKe4F2WNxxfLeyS5Lov2nNzQmlCNZzG99qRnM7e+9uRE7iDWtGTiYkFKt89E4ruw
YI2hL2YivrpVTFK58mZcs4S+uu7pVlN0Z/Plm9X/AxeSlG1lbmRzdHJlYW0KZW5kb2JqCjE4NSAw
IG9iago1Njg2CmVuZG9iagoxOTAgMCBvYmoKPDwvTGVuZ3RoIDE5MSAwIFIvRmlsdGVyIC9GbGF0
ZURlY29kZT4+CnN0cmVhbQp4nOVcSZNkt3G+12/woY41Ee5n7Itusq3wcjLtifCB4oHTs4kxC8kh
g6R/vb8EkInEq6qe7p5WSCGJh3kPD0jkl3sC1frhaDZ7NPTf+Pf2/eGf/jsf33w62OObA41kF8uW
3DGG4Lcajz++Orw+/IBP0fpyfE8P+HJ8d8DEtD7ThHeHt4f/PX44/HBsY0Txxlt3bMti38+adPzX
j4ev8F/eag7OHX85mC0e/+3gQthKLcfoQt5Kwn5zJPktuqPzbrO14j2nDSudTVv0Ud5vD84YLM0y
YkvZbHZCYb73PW4PcwTEQVII2Aqu5g7tFRsIC/27cNhX7yDcQiKTBMP6n4N3YfNODclAZ9NbCz3Y
CbRG6CNroMVsrvo5I+Ut1jBFJe/MyRzprAqBDkR2GEAnC21AGGyLd/w3mEJgwiS9voEB2WZ2x/HP
7fvjPz9vppCPdaspl3J8/vrQjdIeIa7iYE3Rhy04fHp/+Pr0H89gtcGkcvrw7MZsvrgS3emn9myT
S+70Iz2bDOlXe/r47MbVLXubTy/7fG9MPP2snm9B0XkDPEwm1phOf8JwyC4TDWxZs01Z9ky1fvP8
Pw9/eA7rtSEY8pGJd44MWwP3m5vWaYN10IBSovU1bdXNGb4E+lcoyLtYq4w0PUwCTUlzh6HEycL4
zhz21TsIpMZJYqrxoQr0CYqrqwL/6xk4KdFnyNVutuSqRM3yNSUvynhFzzkbV3PXrw3FFnv6RLqr
OZYs6nAhhi3bJXjwyPCIENxmlE8FlzYftE8Fa7ZU5gxfEaN0+OF38SkZGe7PBEZw4B04eAgL4ztz
OFavEJpXCYmpDkeCtV5DlZHBKDbYggoO0UTIcYFaKQ1MWeS8qeDBr4KTBwajY3FHIcQZpew+vjNz
ffGO+4ZSSCiUyYKXBaWMcIijWK1RlohQrlHGRBzMCRGxRUlpvApKHhiMjsUDBRNnlLJ7/y7M9cU7
7jtKJqFRVrdGkTnCKClQJxXoU1ijiEuhbEsqgAM6LSd+n6mARwazTGBA4R0EKrMwvjOHY/UKoUEV
Egpqzm7zSUOVkcFojnVLCmqmMmSBmhFFvIKabdySgirvAlVGOrNCoEORHRiqsDC+M4dj9QqhQRUS
CmqJdstLJSMjg9Hi62ZUqEHK24I9Lgk+b1kZb0aCNcou5H1C5RFO8INAhyI7MFRhYXxnDsfqFUKD
KiQenRucx0riUeeGryi0w4yC4wzdMsG3lB+chUpO7yRVzKTxD/QUUaZQnpBc3suAYpCsR5qArTtJ
Ez662IUilZeMjNILpexmphH6gBDvtRF6JCHUFmoGAoWZRjjfWXRzpFdPQqCXVrIDl17CQv8uHPbV
OwikmUlC1ZgJQdVqf5sjDBWeGxTUiH/zAjUm24M1z0CkCAqqvAtUGRnMMoEBhXcQqMxC/y4c9tU7
CA2qkHi0EXpU6dVcqjBRTpm6lCNv1fO5mcXsgq4ZdfGizFcTVHVno4eYUqZ9WvRBISX4sc75c6SL
PaTodOkSKJ6rwuUWK5CDVbETkkHcs4oCv7Nk50gT/STQFDN3GIqbLIzvzOFYvUIgxU0SU3HUeIYM
dQRtp3NkMItCfsvTTgOK8k3HypCRi1W9E1LJ3cEYLb9PtDzS+RUCHQ1vwGCFgfGZ+RuLVwC3aJr/
BkFBg0xhKjBQSigLThkZbBY0klbjRJaKC85ct6KMOaNRtcrY5V1wyshglQkMIGMDxikM9M/CX1+8
A9BxDgoKZzV+czrqzBHGiaJY1WWh5KB7O2IEtYWq5EIJaYtaUvwuQGVk8MoEBhLeQZAyC/27cNhX
7yA0pELi0cE0RPR1+3b9X1qzltFg1hEHk81hpHGDF/2oJrzogTLVwjk/IpiOQBm99yOnF+hUYmY/
PYrZILxorc2RLl/U874Xql3+EVC6QFhDMSXXzr9kRqhdPEyB31mEc6TJeBJoGpg7DA1NFvp34bCv
3kEgDU0SU0Mxl7SZvEDlkcFozn7zMyHEHHNvLQVqplY0qBmu9njOFPhdoMrIYJYJDCi8A0MVFsZ3
5nCsXiE0qEJCQS1IJGGBKiOD0YJElBXUghLTLlAL9aNK76gOdcU33wWqjHRmhUCHIjswVGFhfGcO
x+oVQoMqJL7wsCzC3mrdnbX8uypUlJ99/+zGw7uSdWeVjI22xDicy1frxblSKog5WgFzpIsvJYhV
nU2mlMxWtQLQDMbNBTUDgolBUeB3ltAcaSKcBJqA5w5DAZOF8Z05HKtXCKSASWIqAETKlhaoMjIY
zTFuVUHNwfSaSaCiINySgpqRfFQ3P98Fqox0ZoVAhyI7MFRhYXxnDsfqFUKDKiQU1IIq3eioMkcG
o8VH3fakYqtuesBJMaG7MEOtdvNaWPw+ofJIZ1YIdCiyA0MVFsZ35nCsXiE0qELi0eksoV9xsV5P
Z3Qs7CLK/XCtrFcup9vZ6VyjYWgzGrlQqV1V5MT9+uULap12+eJQkLcLl7w+04Tl8qX0y5fa7l4c
Os9+9wItjbsXOtquNdqjeki1QtLHH+kuCIWBo6DVb4QsnWdBc7XfCNm74hRYQbQsyNGXDvVDRYbz
i1it95m6pQY+4H8QYB93Pi3PfU61NnKlkEo0eZlDkc0X0s4nhDtYSvJNNx4h3VTeJrri0axhlUHH
Z8eqptQ3H5+5tNVSQw+NPgXjSWV9j2jT6f/aeUVBa+evERzTXY359LErNqNlKqffPbsBRJiKHzcT
qZrEbFsAauca1sC6/bCIPmNQDAb95PlGbXhsBDcLpZkb8Nu02BJKSNNsCbViZPtZnzHhki0FutDD
zMS25JUthVqNO6qHiGoN4RW2FK3DMOpETwdKx0TeCxNBTiyw4M/bE9zUIuIFuPOS97BFqUeSJRqZ
bk9/aC08zN2efiVJBIilyJFRkuox1SbDfncUqtMzhhN6KOv0BhYU/YaoJbdINDySJ5Tez6Dgr25d
2Ol5A1vhbUrmYRSyw+2NQZShhT4Gcvxx5USOcnrdR4OJZGL0GEsdUQYOMIKMhbr6hUoNxml4iDy2
VdKwYrOVmk2gA4xGCe0T+EI1h8RYTr8NUaHX4BKhwg9eDfCIXF+/km1/XSYTCTyPGsJkG9NpIww5
ICbRBAoezi4TlHDeN+GYkFzV697NGb03gKnXPnkE0Bftfs8XyOzlvJsbs13sxIpJEO9tv0NCm+JB
GHVcSiQy8opAB6SIV+b4/CXMZ5Ve8+qcLB/1ONQkoxGpyZ2+eab6j0pXk/6oH6K3Lmr7960bj+wA
Lc/Y4QDmCxzAZnCUugM87yJKETb9lu86C5V7N+ikUNGmC3onF2G9+zEXNnJmjui6YY6BzJEmoILn
Y1ky6HHalSHxoShHFv1i1Jz5kqKaWm9oE6T6Uk53mZkrabGiOVepbTSH0bCvDf9oF7mwKPI1goFM
dvrjqQ1XA0i/DLkRjbeKTWWq0/PeDhoSWdr3T10qIKHBvdMTZIuPQx3qttMj7emdWQuJzhTJi0q2
rDGP+aQx8gDUtqLdkgfUhul1H/XQ9PVNmhegTzMxshfciom/24kQRmPrnV4iuhkm5DVDL9TO3/Wb
3UT6nRtqPv/4rBMpyO9Kl58GVmPF2QnDDYO4sXSThUKlYflZbfnhTK8t3v+ghn9eZCNB/h+xZ6SS
Rn4/QDH+wzntNi4xaLgBQo8mBi8IHo3xvPVuq7qcUGukhbByjruxNBPrScXH2ogExBl/JWUIk4vz
YImFBUc2Oahylxw46I6LeW+iE/HYqPa67AOKg+m/LwerkJNOlm/PlOFQ3pOyERNR2KqYCLEhtikL
HuVgrr00RMooJZw+fup1WEUBCnHKnB+bARoUKM1y0TqghgEvnm4uII3fenRERdjZ7ssGJ2t0RqNp
EOuYEyWaCyGm+U3XGZJE1rp41XWRM+dQs0Y/5VYcCHxW2UnP1V71p50C2uRPXQFIClCbbxGmnsda
mtpdDVUBckJ3NVQdHerLy76jMN3O0UE8wYK0L/ZkEcy80Rsew/URp/28FGEqC32kXOHQ5yzy3iho
dDV8jbmoD6nUHhUH7C7q4kM9fjMnq2R/n2IXrUikU7snrnapnylo5f9Oqt3XmJBsQsO3j34obdtN
3Qw45zuPkEi1cYyxbxzJ7e5ISkxtodv4NQ8smV93whl10NXQfca98tEQQ9bBQa9rJgpF+LvyK3u3
Tq8t3Tu/Jer3z4reB5e0DkXi5tnIAx1FhvjFFS2SCrSfu5H/fnSxxV+M/DYh8GfG8rq3xSG6Ed5B
jlKhRPqRGWCSoffQaCei6z20r8GW1kKTDmnhxxdz5Xft0aDAHSmg0dCZ5qexMNGjJ9eMvqUOGE2p
tn4uddjoNsQRxrKWlj5YVfO0tEqMBsrw7l72PPP1T2OhudQMXLBo2rqkq7lZSgmmi3bvYh3QGPbk
uLp9kx3urIWJcGYPpAZwVwoTv9lqYmslTOuDcXdvQbehgj7lqmmch9JGo0VE9N4IYb8qjvY9DeJ/
XGeM3jlfSbTnTY06N5TQgMBGv5n50Pz2xtJvTOwuLa+xvkWyanuM9fCyJpx+42bq1fJWZe47Azxi
tptxNul1qj1U6Vo9co4Go78fYRRp5t5RNJsa7fUkQLKCQ87sYx+bBHZ+SacpJu/NvIn5M8H5+hY7
0215MUydiVRa/XhBKm38cld1Nbd0qXg+GKFYVOVg5GpmoaBSHRLDZD/dw0mZwMxjDyyvILL2A4An
Lq9coJ+85L+X8uoB3ZqaMIzBgou1nxtOG/6cdVI/12vnEOcNB00AOfRg1Es+vJqx9IMXOaBzyPF0
Efel5Yyznn7a/LnzuSaQmJd4rDR4OWj2dsfs2h1lGVqKwwDLU5qfOnZg85P9PrFFLGXL92rG95dN
6bdhrbYsO35kB3JXa5F9cMZsRM5+zdS888rR8s8L26oLZ7P63cVIdccNWg7o2k2lvzcqG75ls4HZ
/k+pjzaq2rKobX/GVKLlGnkI2t0n4/Ys4hagymLeNJtzBPriqZYWvRbbKGNQ0RS5ZmjBcJy4c7J0
9qr22AvSakf7KwAP2cTpM8lfTJhxJsx45eD4TiimoK7zRbeND4lrOkUr9pSVv9OpmPqFYsmNXdmy
/KS5ZcmXMzu/kBsX8ZEZ0MviW/0kx+S8A9/Se6i0Had3LewLBXLD0NhBcC/u3G4anHYnakuiGLbw
zqT72dHYeT2mVVarZDXOT0PKZXlWhq3q7L3btu3PBUIXrHz65KumxdZg7V720H7WgWM5jpYLB66A
YAeX7XFIqLjlpmMYG6JCcjPExW4TCO3t3I94sCYuV2DLBH303ih4khOMpdUsesKbyZu2+UG5IZnw
d5bR8Fn3gApvauWhcTP039XpuPn4owUJm/TDb1C959EC7K1eOlT+9t08MFCP36rzgjYcSDukkQRa
xl86Uo7+c+cCNW2FsF8+F2gpzutY9xdumdZzhkecnO0MP1BS0VWruoVQ/CifvBbOGpcp+Vg1ZT1D
VRja06Y5766gJ/fruXs0xpaHGjz94XH2T14oOPqjWP+YQmF3tYvc/0IVBOo7Ky8HXbHqyd+pMnM9
TGjR1V+16j9zV/2Xb4fomGm5XnmAyWC8/WH5E5tMRa4hsl9SW+p2pGe4GhP41it3nQBJo4SiOxJ2
03vdR3L8uCNAdj0/JBjd69CzZX2/fO/GFsL6YxbdsgpvWQfvO2xwXzTuvbKVaeo7F+Gfi9tnlwRS
xsgOOqJyNZrT+kuAfmxEf9krKfOCgnOwVwoXHYeHbJI+qfSKR2HsomTGJWVnpRea9FtE4kiFJ9a3
zTuLu7s0bP1MTDFqWurI826DYWpdwm7J1ZfF8ku3/PbXkO1qFoamv18wKfoJygP75tWcgcQ8OMwy
3QfGMDp8oUujp63zEBgdUf0rCmGqxX76DBdbWf7ZNvjzGa5P9ZfAp0AXKNdPchp479fWZlZZ9+wY
Hmg+9FPz/OQZkP4vF/K59Wjv6c2VdTpivJkRQVnAWQnyoOqI4kS6ktPucY7y9DUNHeGUx9ZgZ7/p
yTEGv0uR3Qvoxx7869HdYcf90sFw5HLJlnPNqqy9ZMjLbz0vVfVfHf4fpqL/vmVuZHN0cmVhbQpl
bmRvYmoKMTkxIDAgb2JqCjQ1MzIKZW5kb2JqCjE5OCAwIG9iago8PC9MZW5ndGggMTk5IDAgUi9G
aWx0ZXIgL0ZsYXRlRGVjb2RlPj4Kc3RyZWFtCnic3VxZjx3HdX6fp+Q9Ae7jHdjTqX0xggBOnM1A
ECkm4AfZEMThZpoiKQ5Jif71+c6p7VR338sZjsYIIkGY6uquU2ffqq5+OKhFHxT9W/9ef3/xD/8T
D89vLvTh+QXNROPTEszBO2eX7A/vnl48u/gBr7y26fA9DfDm8OoCH4Z5TB+8unhx8fvD64sfDjxH
EK+sNgde5st+WoXDb95cfI1/45KjM+bw44Va/OHfL4xzS8rp4I2LSwrYb8wEu3hzMNYsOmc8x7Bg
pdFh8db35+sLoxSWxj6jU1p0NB3CeC57XF+MGQAHyA5AZ2A1duBHbNBRKO87hmX1ioRrcGSAaGT9
7sIat1gjpvpEQdNqDTnoQWj2kEeUhCa1mGzHFyEuPrvBqv7cMBkzBdUOoBDSd6iEDhR4oiPIi1f4
M5kdwCCT5PocCqRZ7Q71z/X3h39+xKoQD3nJIaZ0ePTsoiilPoBdyUCbvHWLM3j1/cU3x/+8hNY6
FdLx9eWVWmwyyZvjex7rYII5vqOxiuB+1sc3l1cmL9HqeHxSvrdK+eMHMb4GRGMV6GlgfPbh+CdM
u2giwcCWOeoQ+54h5z8++u3Fvz6C9mrnFNnIoHfMVF0D9osZ2qmdNpCAEKK2OSzZjC9scvS3Q+jP
XVv7DMthAGAhjR2qEAcK9X3DsKxekUBiHCCGGO8qQBsguDwL8KtLYJK8jeCrXnSKWbC68VelOAnj
KY1jVCbHIl/tkk76eEOyy9Gn2MVhnHdL1JPzaDPVIpwzixI25UxYrJM25bRaQhpf2AwfJd1Pe+42
1Weq+TcA1Tm0HZrz6CjU9w3Dunomga2qgxjiMMRYbSWpfaYiig0WJ5yDVx58nEjNFAYGL2JchPNo
j53ONlERrYsLFR14o7LvXt835MriFfZMZQchqAwauExU9pnm4shXSyqThyuXVPpAGIwPPHyL4FJ9
7FS2iYpoXVypaMAblX338r4jVxavsC9UNhCSymxmLzJmGpXkqINw9MHNXsQEl5YpFMAAjeRTex6h
oM1UZBuASkrboZPaUKjvG4Z19UwCk9pBCFJjNIsNktQ+UxGNPi9BkBopDZlIjfAiVpAatV+CILU/
d1L7TEG2Ayik9B0aqR2F+r5hWFfPJDCpHYQgNXm9xCmT6TMV0WTzooSrQchbnD5MAT4uUShvRIBV
Qi/68yC1zbQAXwEUUvoOjdSOQn3fMKyrZxKY1A7ii2ODsVhJOMrY8DW5dqiRMy1CcyT4juKD0RDJ
8VUPFSNo/B2NPNIUihM9lpc0ICkE6xomoOumhwnrjS9M6ZlXn6mpF1LZRQ0ltA4u3koltAhCyC3E
F3AUaijheG6sGzMle+oASmrVd2ipV0ehvO8YltUrEkgyA4TIMQOcqpb2NmYaqbBcJ0j1+BsnUn3Q
xVm3L+ApnCC1P3dS+0xFtgGopLQdOqkNhfK+Y1hWr0hgUjuIL1ZCiyw9q70ME+mUylM68kKMt2rm
o3EyZ5TJi1BfCVDknQwPPiUN/dSog1wIsGMZ88dMYbsL3sjUxZE/F4nLNVYgBotkxwUFv6cFhPbc
ODtmmPUDAAtm7FAFN1Co7xuGdfVMAglugBiCcxGicFJHx0xFFEn8EoeOOiTki/STLiIOi1zHhRSL
cTVK2/OgtM0UXDuAQknboBHaEaivG3518UwAE9ogDDqpwHbkPdNEa5+pqCbUXFrSCofuJ1pjXpKQ
e0RNp4Ve9OdOa5+p6DYAlZi6QaO1I1Bed/zK4hUB1xfP/j8SRQKsEISiZmUXI73OmGl0IikWeZlL
0cnajhBBbiEyOZdcWLzkVHvuhPaZimsDUClpO3RKGwrlfcewrF6RwJR2EF/sTJ1HXbcu1/+Fi7WI
AjNXPxh0dDWMKzzIofjgcXGUIacW8z2caXWU3lpbY3qCTLvPLN0jHxXci5TamCn8RT5vS6Ja+O9B
SmFIk5APwXD/q3/hcmFPg9CeGwvHDPN4AGAJjB2qhAYK5X3HsKxekUASGiCGhHxMYVFxIrXNVERj
tIsdAcFHH0tp2UmNVIo68YXJxZ83CO25k9pnKrINQCWl7dBI7SjU9w3DunomgUntIASpCYHETaT2
mYpoQiCKgtSEFFNPpCaqR4XckR3KjG88d1L7TEG2Ayik9B0aqR2F+r5hWFfPJDCpHcQ9m2Ue+pbz
qtfyHyJREXb29vLKwrqCNptMRnudvK/GZbO23bhCSPA5UgBjprAvBLBV9CZDCGrJUgAoBv1inPgC
jPFOQGjPjUNjhlk4ADCDxw5VAAOF+r5hWFfPJJAABoghAABJS5hI7TMV0ej9kgWp0amSM3VSkRAu
QZAaEXxENT+eO6l9piDbARRS+g6N1I5Cfd8wrKtnEpjUDkKQmpClK+lVxkxFNFkvy56QdJZFDzBJ
yhUTbqRmvVjJrPY8SG0zBdkOoJDSd2ikdhTq+4ZhXT2TwKR2EF8czgLqFePz6XBGbWHjke67U2m9
MDlZzg7jqgUDf8HgXKZyVYDr5lcOX5Dr8OGLQULOBy5xHtMH0+FLKocvmc9eDCrPcvYCKdWzF2pt
5+z1QQxCzuD04R2dBSExMOS0yomQpn4WJJfLiZA+56eACrxlQozea+q7jAhnJ7ZqayNVS0y8wz9g
YJk3Nkzj8k3W2rdMISSv4vQNeTabSDo3cHfQlGBZNhYuXeW2jTfJoljDKoWKT9dVLNTnby5NWHLK
rrhGG5yyJLKyh9fh+BfuVySUdvYUwPq5yT4e3xTBRpRM6firyyuQCFWxx2eFnEynF0VRQlah6UEZ
F9Q1CK3QofV2Ax2JERaE45vKlQD2H1+WXRU8e6WPwexDbMwyvktiaHhB5Ql94vDUMU8wiM9grgBQ
sAW8jYhXVnfe+lxyOpBgYpr0HumuYr1HXuubrs9jfLCn944OH/FlaHpvhd67nJU5iIFHZolQAL33
2mAaOa1T8MnhEMjVQJ8RwBPM7fPKD5+i4Z4dfM8UpLFHygALPwY4rPy/IaKjV863aAwt4qYWGIvc
SR46tQ5DsLafeeneCzO+uhGl4LVonfWOVtYjLDI8EhnNOuWr9GAjuffbLHRz2vB6oNQ2TNFvd/QJ
QPqO7dAsK9VzeQb3spAIy62QaSQB3xQQSI9rOQB9yRNGT+om0e4RwJ9sCIgKnm3a580lUiAN0615
j4rah7K7xe7m+M3vad6Dlb3ZaBVs/s+sxLq4AprV0L6eUuUqRJNhy082guNvC12whz9eitIl06mm
PciBt9p4qY4WpsMRtqhj0oqCHGujuoc2GoRR70X3KzpEEuKiI3+SvdSCqkrB6OP37P6yQ+gkBnT9
kaKQPBfq/a7AhnCx0lBk0a5JItgsFfb5GIoPalMtQs8ZDasCFYgVJRFcWWhSIZ63Y8dfAgfk60gV
hKqRRMAxBEzBMaPtgoQKXHv0BDx6VtwlaAKp5H9dIm6V0BNJ5a76mH0ecNCpOGubHRjGztpRbgKE
4Kz75y8H6KcbgJBL9dUBIdhXVFfC1UiGrGmoCh7cEMsN6/Z3ZehzTVdYW4XFSnaJbKU1Na3rsnIq
u0neA977qj5KD41/NaygDB0SKAoGyMu1jccfi/hC7i6Gv634+Ig86XnBHXX/ANs0Nbnzfofx2mK4
Iu1N3QEe8nE165iHWRPbEQCR2hyuNB2XIRsSvGbfLBn4kcYORp0mX/lndkDK5na4bZ315DJILYoH
BVd0jnziTZNqdsfCAl4NbyyGwtwYbKI0SS67KXCjSlJPnlUUQpCz7ysEmP2PhFikLs1w5tKJPq1g
Q1i5cAYAi2ffa5D1Tsu23nJjut/Rzg7p1rTwU9nPgaJ7BASxJetQyuQY5ELyF1EhfY0TbGEgHyZc
z+r8J/b9EPkSfLfWE+ovlfNFZWOy6+m+M/M/MP/rwRfB6/hUd2lVTkNUUX76qWgsnMx042XasIP7
qSCEROn4h+MwvvaeraWRyfbikGtVN1p7fEjHzwprTj8cZCtMbU4/yvGXn8JR0RqTPhc/splC1JnI
hU3go6cvXuyJ/n1FCL7quhq58mZtFfRFmmZfSa/dxUJ+CVVThFSaXwqORcizXBbR0Of0cxoCFHtO
Cf9wySw3CrxdLq+yoirPHv+N2BxyqQQ0l2R2u19zvF2RhJ7zhaBMOQGzJVFaPDt0thmP5DnoZjOn
PHvf4KZwJeRUNUHluPFXla9is2ci5khwY7uublbs/Bmz59V8wC3c3W7OcdXonINMyT0yEpeaeyCD
C2eTD5OjrfluRt4G0oEC3Jti1lDBhaxyN5dAxQ/vYBunl0u+epesFWlr9JxNyiTVkDuIvWbi7oy7
d81Epa0Jbi9LbTVHaSMgaYbn+0Wpn2Dpv6g5vQo9S49TRSRqmR1vt2P/igjSRbVKuWBXtQVPR9je
Q9ph3z02xU56rdiMB2icFftMAXhf7O5Y/zVrtd4DMkbsQxBKawxCntWLq6iF8Q2/KGuo6ILKVDop
RZV8Hwj1NMaQR27qiQyM7yXct4hC/MBmVT3/homP1En/NekhsqZk9ysL6gCNBOCcdTsFjduxbizv
pQWqDG4D6bzs1BVaIeDVugLavobGy1IkXWaeIIx+esv3Z1PWWdQj+4WHV3xNeLfwsHSMoleBDxnI
Qh2/O7YKeBmQL7qCNK3pCh2SNl3JhiMj7xvyrSI1w1Vysy26yF0IRzr/Ssn0HaI+l4yVT9wtlLtD
W5krYTbyjXN7vB3ICRgiiZAw+OKUzg7+4SeB0RVXmAlAqr0F7+cvasluIweTlKPi0MYZjvPJyg03
3e5a8mlqU2mqNTlFhDdfEGxrtEt2r6SiqsxxOYmhpjvseznkTguLEPPZxHUPSy8u0A0dEQxaKRn1
nWqt5RLqh5AUj397eRUVtQnD8XcEgPqnaaeY1br2YIs/e1rIozTuVmklvoXMJw8+lVX0gdaj0s+3
sZeq+NW+jZP2bRVh15OBr+hjr5XfTx0wRHbaPhbq8GGX+heVonxSxyXx7YNdPKFHDrRJPySsoA6/
HcO3YygsRix7PYbvx/DpGL6TcEmtqUj+OCb/cQy/GsN/+gwDoYRIXxoZI/B9FHa4l2zu1qD7CexN
saOo06r/ITEroZVj3bsz0XEWwjo6Grr2aEKJju+Htb0bww9jyBhSU14kmnePzJlNVs97/3LKYTd4
I+O2WYVZeRinmzH8dgyF43g8hi9nUurwegzf7wL7yMpjXNMYnryDxhgkyM433G9TTkI0S9Kyj/NR
uIZ9CFv94i+22TKBuyl7RBVWCfLPpmHWcYd6T8PWxvlhtt4NAnfWMBsj/Ltfa9gVucpk1vmDPMAw
mUL+FJi3EWJVND8ty2LSJ6L8CQgb2w/B+rw+9iAxoS5dN0JZeqOO4Wp4p1Lg+XP1fQ363Kqh/t2q
juFtWo+EMwjZ22VuZb/KvJgZIddUgnxuQdIBWCpNWkNxP6wqaNlH2mRRtkZgym9S6S325m3juvjU
HVcna8rRufTJEC72aNB6i6O7mTlTYxjlNNBHRPSfhIWuMzW2OflBTdRUWNWFwz5XeVryys8tGa5k
XDmGZPJCXLVneTZSd4WJ8/lhCsvK2t30XPgn0WwhU9R2Sdbcx2K456Qi2Jibb10fGZJI1cZ2aDqp
B7cd2iakMDW3ZFLeNFVa17CZE0c9YucnAs2S4wcEyXQq9V/1ta4a6+berzTC3i6xo6+ZevMixbWN
PfjptZnj+gB9siSlZWbPb9QUe7itHcu7ZV9N0xVd/7P31XT2VPSX4PVfl9Tbij4lK2svgeyrMSua
YtVba/EzW+LX9hiHp583gYdV/SIOvIilelpVZGKDm4FtfCAj9NPn+C9NuElQ7R3ssEeUCi70/oub
UPiPL65XWbpARwDx3k0oTT9U1FWWv2b/ikKh3oDS3ALfaraglSW87nVWJsljzPlkke4LUVScq+gy
G2sR7N3ILdgERUUtjFRcrvhv+ri0ymVSOhroErm/v+w1UdWi5KbTNAoFtlTlp2LzqmPFhdHepEpb
hKRK8eH9p8IAh3UnriRsbIpnC3nW5CjD24mLJPOtBt6QsnlqIgadnDOCGe/Ke0oF5LIiMzobe10P
JBGzUi8iNq0gilBzJ4hti2g7YSPv6620VekgYs2APMfVzh+6KhcUp9SnW2ANRuW8za4dVPup/S2R
EGXzJmxVRsz9qB0PUzNDDltpcopVryNfsCsexu6eCPyVwpZA6j5xq97PWld0/cijZekhyhg+9hVM
70n+lIfWDe7QsJL3trZn6O3+grT6coMsT2UGz+XpxFE2W9ZqWrrpghqWiXZW0ylgMaa4JNdb4k92
9VWkV/dvtxj6sZ09UC/ex3qjS5Ajel37/avvxlDU0G/mb+9SOJ/AMxvKymc85e2BcsR8ptcRKJfs
fZrdDOo29zvhDpFMzinV/TMqTa3ssHdSuTlcpPxXxo3y/ytJyrtJXTY3rIoxb08u5/yK7/DS0Kfd
uzG3dTzlsmT2JTHzQHZ+T1oBuYEGGbX2re+OVx41/TZ9nCZn+iWADvfOlFJaHMJiy5QKv4y5VeXP
Hi2tGMAihH+fbpYI+YzburuNR+ATkFPfuvH4bAxF4/T1GG66jdWSW9337ryBcX/Kp8P+aR5xQJ28
YLlhDMqUTPcEuZ8E5Vas3JpbCRvNjt47K1x7u+47nymLk+ZzvRZCNLjjpvdYLq+83QW96iJtnVhe
9YfPHC48k3nH3onC9a7D/dPlnu993YX37e77x2P4ctfRrzY7e3xjFq96v+NXu/71zO9GIjwpFUHB
ej40omtz8PP1z+eNdz9stI4+/awotpL1AUxl3dovtqJQxewyKzm4jjh4dYV8oPZ/Wb9QTU/BrXkT
Ox19f7YVVzM6PjkTWcen2hFZ3Urc/migt9SgQz7PJot4y8aSjH6gTK0ngufzs5bYP3h+VsH+FXIy
FBI+pFlp/w/mZPTTAousZcLzTE52By+AWgAw0+QFUr63G7CATmAf1A0IuFN/ox3VnTsMfBhXLNzL
dD2FblDlKEL84xZjX4pjn239p+Kd7PdWV2m4rrSbXv1sx9Pl+gr/9AWAHs5jS9KiXl+kIbfae8eO
frKxe/HNndlEiUv+jfWlB0C/YyQJtGI/TBKfDm5gBBiZdsOG0ZP9gvM9y5JxEonWWXlnWXxbt4P0
t2eIvUEgDm5qmrM6uGFBmFEkPNCNQL/MnYdTBzcFC3v85tZYbH4+tgl1gX5rKddxrcgdrzv+VKQr
jGC4+AXX1xf/C79LiC5lbmRzdHJlYW0KZW5kb2JqCjE5OSAwIG9iago1NDAxCmVuZG9iagoyMDQg
MCBvYmoKPDwvTGVuZ3RoIDIwNSAwIFIvRmlsdGVyIC9GbGF0ZURlY29kZT4+CnN0cmVhbQp4nN1Z
yY5duQ3dv2/I4i5fAbGiecgmQAZkWKW7DWSRDgL7eWgj5TlOkHx9jiSSol6VDbedTVK1eLqURJ0j
UiR179vDGnfY/k+/l5enn31bjufvT+54fuqS4lM12R8pxmBaOt49PT07vUVXcqEeL3sDPcftCQPz
3u4Dbk8/nP50vDq9PYasa3wQnD/GtDTXczYfv359+gb/xbQSvT/+ebImHb89+RhNbfVIPhZTM9Zb
khxM8ocP3rjW8FyywUzvskkhyfPl5K3F1CISV6txxYuG9TzXuJyWBMqhUhS4BlRrhfGIBQTC7BeE
c/YVhQt2ZKlgWt+dgo8meCUSwYQZnIMd3CLaEuxRNNFqjW9hjcjFpBbXVskzI1mSCVUUTCKyAhFd
EIZAAI7JV/gHTVGwaHa7PocDueF2B/1cXh6/fDhcoRzNtFxqPR4+O02ndAe2q3p4UwrRRI+ul6c/
n39/A6+NNtfzq5sH1oTqa/Lnv4+2yz7787vetgW739z59c0D30wJrpyfzPHB2nT+oNoXaPTBgg+r
SS3l8wuIY/Gl68CSrbhcZM3c2l8e/uH0m4fwXhej7Wdk8V0S8jWgN355p4vOwwLKiC60bJpfI0KN
/Vc0yLN4q0iGHZaCYaS1AhlxQaB+RjhnX1HoZlwqlhl/rAFDhuHabsA/3gBJTaFgX51xtTS11by/
tpbNGE97uxTrW5n2dbG66s7vu+1aSbWIOXxM0RS3BQ+W0ImI0RurzlT02YSoz1R01uS6RoSGGKXD
Dz/LmRIJHX9WQMGBV+DgIRConxHS7J3COFWiYpnD9411QVMVCQHFAiaq4JBswj5uVFtPA2svSjEq
ePCj8GQBAaXJk4UoZ5ayOvUzuDn5Cv1gKSoUy+yAZWMpEg5xPVZrljUhlGuWKXcEa0BCbFG7RI/C
kgUElCYTC1bOLGX12S/g5uQr9JMlq9Asm9+jyJIwyx6oswr0Oe5RxOdYzZYKcAC93id+XqmAJQSW
FRAVXkGoMgTqZ4Q0e6cwqIoKRbUUb0LWVEVCQEtqJiuqpZchG9WCKBIU1eKSyYqqPAtVkUywomBS
kRWYqkCgfkZIs3cKg6qoUFRrcqZslYxICGgNzVgVapDyTHTHluCLKcp5CxKsVX4hz4sqSzjBk4JJ
RVZgqgKB+hkhzd4pDKqi4otzgw+Y2THq3PBND+1wo+g5Q49M8KjnB+9gkvOtpIqVNH7SWwllSs8T
kstnGVAtkjWlCfi6lzQRkk9zU6TyEgmVXihljV1OGCJCfNBOGJCEUFuoEQgUdjnheuatW5JZPYmC
WVrJClx6CYTZLwjn7CsK3TJLhaoxM4Kq0+dtSZgqTm5UVBN+y0Y1ZTeDNY9ApIiKqjwLVZEQWFZA
VHgFocoQZr8gnLOvKAyqouKLnTCgSm/2vgoT5ZRtWznyg2rfdbNUfNQ1oy5elPtqharuHPoQU+ry
T4d7UMwZ51jn/CWZ2x5z8rp0iT2eq8LlghnIwarYidki7jmlgZ95Z5dkbP1SMAyzViDDLQjUzwhp
9k6hG26pWIaLBaaI2keXhICiiDdl+WhEQW50nIwFeVjVOjHXMg8XM+XnxZQlE6somEx4ASYqAKib
8dHkncAgyhoUzx4568ZTJASz4r7lNE8E87TxLM1UZfOC+5xTPiHPwlMkBJUVEBFagHkKgNkt+Obk
KwKTJ2lYPPuLBBSHwXh9QJeEuaJ+VCVMrCXqa1AHgzSsip5YIy7Rerf4WciKhPCyAmLDKwhbhjD7
BeGcfUXhcnr2/0kLRhQVXxxOY8LN7vrC/qtxXSu4YjaKhNmVSInc4kE31YDHM1TmVjnrJ4RTCpUp
hEBZvcJdJWrO90epWAQY7ZBLMvcXFX2Yperc/wQqc0PYQilnP96AyYjY5vawBn7mLVySscdLwbDA
WoEstCDMfkE4Z19R6BZaKpaFUqnZ2LJRZQkBLSWYsFJCKqnMy6VQLf0yGtUI32ZEZw38LFRFQmBZ
AVHhFZiqQKB+RkizdwqDqqhQVCtSSdyoioSAVqSioqhWFJluo1r7jVTZHfWhrvnWs1AVyQQrCiYV
WYGpCgTqZ4Q0e6cwqIqKr3xdluBvrV29bfmdKlXUOXtz8yDgdGXn79QyLrmaEh2u0FyQw5VzRczR
BliSuX05Y1vV28mcszVNGwDXwWR8VCOwMSkqDfzMO7QkYwuXgrHBawUywIJA/YyQZu8UugGWimUA
KKkmb1RFQkBLSqYpqiXaWTUJVZSEJiuqBXlV3efXs1AVyQQrCiYVWYGpCgTqZ4Q0e6cwqIoKRbWi
Trc6qiwJAa0h6YtPrq7paw+QVBvnEWaqzZmgN4ufF1WWTLCiYFKRFZiqQKB+RkizdwqDqqj44nSW
cWPxqX08nfUXwz6h4I8fK+zVkdMX2nW46MowRgx1sfULq1Inx29+fkEZNz6/eJTk45NL2dt9wPb5
pc7PL218ffG4e86vL7ASfX3pL7dbS+5Qjdwadvp4178GoTDwPWjNb0Kuv9GC5dr8JuQ+FacABdGy
Ikff91o/NmS4sG2rC6H0+9IgH/GHDZxyH/LWnmOac4krhVyTLduYHtlC7dZ5j3AHT8lh2CYgpNvG
yyRfA65rmGVx53M0axj1+esbn02rLc7QGHK0oZtsrpFcPv97vLGouNyFjymk4b6lcn49DVtwaarn
n988AEW4SqBvE7nZnHl8tGVGYRJP5A48yZWmeI7wuF7rptbR10S5hFUFYY2eXGwqedJHRDyF82uk
Bl96B2+F9ePeygPeqnkfMCCHYG1UYxWMu7sgiPouhBTnaBin1M3RUd/a4egoZBM7997GgPscPfbv
jRiZ2dEDO3p37IROeHVyHhcid+CGbnsA6XEEzhpQX9XP8WwEDIfYGxFYtgyMYIf5wUMbavXh2d92
rslaVyvnWkTm88vhOC310/7oBuVUtLVRBrY5tPPfxt650upw3xRwKCN9i+rnh2NEgC/1retUo0ZV
UbfYfpqPh0+A48Wa+X41/7qaz1bzg15FmpfVHIZtrRv+9Wq+G/HQYVH1GgO5NY5ggoa1OLJ6/8db
WO/YABE3bIyeBrBfbgDfCrJJmQb4rqOqCIxO3uEgvM1o6xA65WvgENMLxjwPJU523+KPbDsNDhaB
4F99MDig+UaN0Kof35mJiwy/yBxKLl2JRf2Y9Yr/6POi6zdA8iCEPXaVmmvROIhWqXyZwvFr/O1z
wHg/aRVtuWejH9HIr++ac0vffcIIu7/Jm91SkMbibgS11pvVfLr7DjUfreZn+9knneV+nAGFpA1+
x/n9eS3z/c22zh2v6zcB1JJ0vh5TSZ07rWlG3GIvYi+F/9VmjatSIKKgYHulkh3deJt82W6lFS3V
tv1p/9ydDOIw1kNQgQeN3NUNbhGApkt49j/4FFf6ufXAPIFX2Mj3XG8zu1lxKWsK/H4TPqOgXKR1
f7+cKIVEb8aTeYhC8x1BA4JYNwQvFmw6FQGLLGX3LtuNB9u0/mXrgesfuFC9DJvdPdYDBoXpsG/O
L0bEThaxZAtvVykFS9r+oua/nFN8/5aO9Pe/lVNUyni0mrf3NtWxf7yat3u0+JHpxabxVZ5tEXGT
BPqvTi/9BalLX59eUAChDPLaRMr3ZlBGAdu8Ft8/WKelyxKvs/d+LlfWKUHmGEe++0FpXsUqlTlU
alExQw2grOagTo8YC48veeRpxZU+tr84qrl/QplwcvnIantY6hpQ/H5uPEVxmHSweHLndEsK1fF0
SNkukkFHTTs52Kxi3H3B9HbFcOl+fNP9NSIAqaOjBk4b5ZTqPeFmc/dvTv8Bt1/0amVuZHN0cmVh
bQplbmRvYmoKMjA1IDAgb2JqCjI4NDYKZW5kb2JqCjIxMCAwIG9iago8PC9MZW5ndGggMjExIDAg
Ui9GaWx0ZXIgL0ZsYXRlRGVjb2RlPj4Kc3RyZWFtCnic7T3bbiVHbu/6hjycxyNg1Vv3S3ZtYDfZ
bBxgjTgeIA/ZQJDPyLJgjTTSGY1n/PUh60Ky+rSUubSsQRDMg9jsahZZxeKt6tTcbtSkNwr/tb+7
V0e//4+4udgf6c3FEWKi8WkKZuOds1P2m7vzox+PbuGV1zZtXiEAbzZXR9AwjDA2uDr66eg/N9dH
t5uCQ4onVptN+czX/rQKm3++OfoO/sUpR2fM5pcjNfnNX4+Mc1PKaeONi1MK0B9jgp282RhrJp0z
PMcwwZdGh8lbT8+7I6MUfBoJo1OadDREgZ9rH7sjxgBxIEkEdAauuIfyCB0QC/U9cVi/nomwgxFh
El2s74+scZM1AkWIyqbVGuZBs6DZw3xEKWhSk8mWW4Q4+ex4qOi5c8KYyioRqIJQD01QZqEgiMHy
8Yz/IiYRYDFxXi9AgXRRu037s3u1+fOLogpxk6ccYkqbFz8eVaXUGxiuZECbvHWTM/Dq1dF/bb85
Bq11KqTt9fGJmmwyyZvtmwLrYILZ3iGsIox+1tub4xOTp2h13L6s7a1Sfnsv4B1QNFaBPJ2Mzz5s
LwHtoolIA7rMUYdIfYac//vFvx395QVor3ZO4RpheRnTdA24nwxrp3bawAyISdQ2hykbbmGTw79E
gZ5JWwlT5oEJlEniHtokMgvtfeewfj0TAaeRSfA0fuwE2gATl8cJ/Pdj4CR5G2Fc9aRTzGKo+/iq
FIfJOEc4RmVyrPOrXdJJb/c4dzn6FGk6jPNuinowHh3TVoRzZlJiTTkTJuvkmnJaTSFxC5vBRknz
059pTRGmLf9OoBmH3kM3HsRCe985bF+PIpRVRSR4OgwOrLZSVMI0RqGDyQnj4JWHcRxEzegGeCxi
nITx6I8kZ0c0RtvHVQoi3qWk3tv7zlz9eMZ9kZJICCmDBl4GKQnTTRzaaill8mDKpZQ+IAfcwINt
EaPUHknKjmiMto+bFJ14l5J6r++JufrxjPsqZSchpcxmtCKM6VKioQ7C0Ac3WhETXJoGVwAL0Mhx
6s/sCjqmMdsJNFF6DyRqZ6G97xy2r0cRiqhEQogao5lskKISpjEafZ6CEDViGDKIGsGKWCFq1H4K
QlR6JlEJU5klAlUU6qGLSiy0953D9vUoQhGVSAhRk9dTHCIZwjRGk82TEqYGXN7k9GZw8HGKQnkj
OFgl9IKeWdSO6Q6+EaiiUA9dVGKhve8ctq9HEYqoROKTfYOx8CXyKH3Dd2jaQY2c6R66eIIz9A9G
w5Rsr8hVsNP4B4Q8hCnoJ8iX1zAgKXDWzU2ArhtyE9YbXweFIi/CtNALQtlJsRJaBybeSiW04IQg
thAtwFAoVkJ+7kPHmBo9EYEaWlEPPfQiFup74rB+PRMBZ4ZJiBgzgFHVcr0xposKK9cJUT38jYOo
PuhqrHsLsBROiErPJCphGrOdQBOl90Cidhbqe+Kwfj0ToYhKJD5ZCS1E6VktRZgQTqk8hCM/CfhQ
zXw0TsaMMngR6isJiriz0AObklg/XQiwhqW/Z0wdche8kWGLQ1sugpYdfAH+VwQ6LiiweVpQ6M99
VBlThp0JlEnhHtqkMQvtfeewfT2KgJPGJHjSXIRpcFI/GdMYhQB+iqyfDoLxSdpIF8EHizjHhRTr
wuqS9meWtGMqr0SgStI76IISA+115699PApQBO0UhJxoNdMgJ2EamwlyLS3lBEPuBzljnpKY8wi5
nBY6Qc8kJ2Eaq51AE6R10OUkBupr4q9+PBOgytkoCDmzspORC5MxXU6IG0Xo4lJ0Mv1BRsD9imDH
JQfJsxyp/kyCEqbx2gk0SXoPJGlnob4nDuvXMxGKpETik+2N85D6zDPafyr5TIQcLDdTEXR0zdMp
eJCgaPBDtSUhp+4WPdibZku8tba5vQRzyskqpOE+KliDcs4YU0cXAl5bI7k6+h4EqcPR58eHYEqB
iFq4XAenU+jPfQAZU0aYCZTx5x7a/DAL9T1xWL+eibA7wkH+6/9N0X46YhKsej6mMKk4iNoxjdEY
7WTZIfjoY00rSdSIaagTLUyu9rxT6M8kKmEas51AE6X30EUlFtr7zmH7ehShiEokhKgJHIkbRCVM
YzSBI4pC1AThpR5ETZiLinmHyFBGe/xMohKmMksEqijUQxeVWGjvO4ft61GEIiqR+GSD4kHTcp5V
WP5VhCfCdLw+PrFgMII2B/GL9jp53+yFzdqSvagF2RASGFM5AYypwxcCDKuoS4YQ1JTlBEAi6Cfj
RAsYGO8Ehf7cR4gxZQiZQBlg7qFNALPQ3ncO29ejCDgBTIInAIikKQyiEqYxGr2fshA1OlVjJhIV
gsEpCFEjeFWRyfMziUqYyiwRqKJQD11UYqG97xy2r0cRiqhEQoiaIEJX0qowpjGarJcpT0g6y4QH
OEnK1SXcRc16snKw+jOL2jGVWSJQRaEeuqjEQnvfOWxfjyIUUYnEZ9afA2QsxueHvTUWho2HgN89
FNiL5ScTWl5oLWUoLQo5lzFhFeRoKdbtFwjlyvaLgbC8bLnEEcYGw/ZLqtsvuey+GMg96+4LzFXb
fcHids5ebwQQcobx3tzhbhDEPQZNV90T0ljRgvnLdU9IPzaswArYzAQhyFJZ32Xwc7YN698uy7hq
a2xN122w0bsyljZplWpg08Ar0VjCZ2XYsta+z0hIXsX2qUqQ0t3UeQgeVhx0dGIt+urc0ruD5p26
1wENKNaMkvOyxV390KkWcNlgINfd/uPxiYOswIzY1nlWIWxflZnP4AMleHZsYFh0cETYZ7t9jzmp
AmW3gzpAkKuKOkA067sKjDA0WFIHh7ty0DJ0dbCsDuDzsA1MvtcGcgeIW0GdJ1CMgKsOJrUsOvcB
GgALS4OlcrAMB68FpiHljYOkCvIwubCsNiHQWgE17Ak2pGum1/5VsLn7MJu83JXBxNt6B6bO9Izd
QpYqW7cSkvHkEpOOsoHoBBXEW4hHHupaEGtpfrSOtqNAxWpb0Ejcf0LOnKLqAMjkcYeqdJHNgP5J
yHRev4xi06uigTR4Ame3v9QWJrXNqqyUO2xb2Gi1sBy9cPI5QuafYeHDh7B+GBBKAAoc0eRWHdAp
QYaUqg7gVrJXOntb9eZBfQD3vRTFAF3rIQmDnhSqCurD749PopqSgjEEMCmD8Pab4xMInsFnlL24
DsLAZYdWpewUdewFY+8Ye8YgLG4YHWwBdoawN/yZ6GK/2NvZyE7DQgOwU5DpOWyACbd2RUs7+BIF
QicVwf6DaZ5g+GtvDcQu9AQaH4tADXvBoMDeoRQO4cIkQt60cYjghre3DN4vNrhm7I6x5+SOWFHK
dH3SBFvIBDZOgXIaXycYRwkGzKoiTQdfMfiawSsGzxgcKCww+9F8gr2a8sjlH9cbBfCHUwBXPdCH
AU8J1CamIiQWxVMuQjbsnrH7dYSEPMUoP7Lx4vhEY3EHlsLvQE8dggaxEWvMOWzfYgNcg2779XpD
AvFIOYow8IJaDF7IpbIMKnRH0D1BO9FujYFBt6bDbP5xfcJKNTAasEy0wg6LAe/YcwYvuMEdY88Y
vOIGp4zdMXjDDa4Zu2fwzUB3oS000OhOICb9w/oL2OIZmWC/8AU8cLnyAoa4caT/A8twswherSMZ
JL/Jz2bgz7xqV1yUGksVECAOXd1LM0TG6ZKx14y9WGc5gm2ArP1gtHMCnTclcJJgBJ2v6UDHnjK4
4wbis2vG7hn7hsEzbnA9NABWwXub7VcI4iacK4aiOVHhT9+MDreBFwzeMXjG4BWDp6NzbuDNYm/7
xY7PHuLMOAghdKpLpOSxn607DnJv5w/mDCK5CPOJbC+AV0v9f3zXkG6F2eL/XXNgEPfiWnG42wpL
hXr+w3qSg4l02saNxULIc62Z7CF39EEyIaJV1DWwIpip3o8Rc8OeDjFsx75n8PXwGap+6qsAYgMY
5R9K4JpUKWcsgVcMnjK443j3hsFrBvcMvuHQ92yxLWq2DQD7NY2/CZDjJD8b2qJIpsQnATwwZLQ4
tB27jlMzWCVXQ89fc3frevmqwsFhofUZdRjrFJKLH1kFcc4xZ6vhVMfuGTvT54ad6XPDvmZs0WeQ
CYa06LMuYe8H6TOofnM3TQM/Vp0b+Nuqc5hyivNRjmAsbU1AOnjF4J7BlVQbfaoemPial8+yaq9R
abClGp6WKw0Im1JpqBN7TdAbgs4JuljAtZQcQVE3EKWJW7aj92ODw8rDTjZYP6LHkqb/0lPygcsn
SMkH+s+Xkg9sPJiS9zx8Yr0dQYxzkl43T8+4PTXw92xpuocszMyYGdP0hWx5TNMltkX1ImMXufl+
kcItg/eLDQQPu6EBznR0T5Ob6zDZ/MWvZMnlH1FX0bblpk3QRc2kGvgrg+cMnjKI5Q7U/LoEYCrx
wN3ElVYEccjBlX/zNMkyJIgGPMkg10HQFF12LWiKVvkWNBXsSsmy9SXvklxcjpluA18yKLT/3aj9
DbtfbHvL4P1iA9HbqP1D2gx5qPXztLnVnmdpc8NeHIvi9JBBN6zIlfdjW1EKxwYmNb8LuX0mYiYR
D4DdDQ1MyR1TUVmLaXOpGUQs4tcqfgd/rXqoXSoSN+wpYzGe00AB6Da7Dj1X7cQWuegs/v4jNvWF
pqFYe40nsU1NYBt23QS22hHlJmfNl25HJJdPERFI+s8YEUg2/tci/bdPV6SPbuTlno3Zb2XiMKox
YWTjFRfBSz0cF4je/szYc8aeMvZyqJ33Bm9mn1XwghucDwX+Bbr7xY5vGXu/2EDsLOyG3vCsDJiB
mb0U23Yze1lqDmS2Lhaxd4w9Zex+0RzeMvZ+kdjMXnIDYS9RIwx46Ka+aO1QfbGAYay0oucDiAeD
0Bz+0BSpIhutK0LeMPIXANE2Q7dgItHtW5PBRK5mGk0uJ2G+bMsomVwlwIoBKaRqXdYPoMAvgmMb
2L5ftKyXjL1m7ErGBQInp8YZntuWCs5tC23nCduysGP4cvGzd4sU5lakgg9akYXedkMDaUXChAdU
XpUSGHiQ3OppBfyZwXMGTxm8ZPCawTeHn2lXjE8DBfaOwVMG94ttbxm8X2xwzeBuaGBcKDX/WbDW
ArBZsCaMT2twytgSrKE5llsJ34qtBFQ668yEZ6ZevASteYKIDH+hDyvkCzc7gskniMck+WcIx0Ch
THYDF48knFh+iTJcWzXhxHsp/MDKY0X6JwrGTJ7wdJ/kYgyqulV60PCJfHPZ8IlqizB8spgiQzgy
fAsNRBc/Hi8dtrjDCVR4T8TcSvpSeD8j6GeCzgk6JeiSoGuCXjaofdKs1DvGnjK4H9s28JbB+8UG
1wzuhgbGlTxx1R3elCfvzTDzvRRYrs0g8FcGzxm8YfDHVfZ9vYlT0Gm+NjFeBjV/APz7Fl1DLNUI
XKcaN1ji9u/HuGZDCb9xjw2jVZcesOlrbEQYPAub4tJGRMypZHLfczD2Lwx+w+C3DP6Jwb+sX2HE
S23CF398b+DyKTyRpP9Mrki5kY2x/g+ZVTLaPc1WQI3XZ8rwDKeDsNKp/MjGW9pquCHokqCXBJ0e
i62LstUL7vqrFSsm0U7O2gPm0Pr46nk6eMngy9W2VL2d6cfSdsOkXc7KbATgjZ8f+lZYbfHjyf/P
PvhvFOhCaCWc75G35DXo7ns8sQ7eUSW+CghPr5dfxmilVdmxJzQfZe+/vMdz+P3MPpjOehgef22C
fr+evvePH7OHDwPaLoO/ddFOHvsX1F6Xa6VssPK8vWBndurfl37rDwQUtOh3UZVuGwwuKDUxIAcZ
uaxoq3SoQwHjk8bfArSf+no1nOrHi7LsRgLe4slWMcHauXJxVJtgj3eD0aH+Tz5FAlnSRkOg4BIf
Qjrc5H7FWHGw6Iqx4nj9cMR/FTuqaxlRson5IuR4qW38fV655In2m8BaeOUGtj+wXFIygbXCfyyu
hYGL2XYTh/8PbDctn9I8PNw5Owi9fErzcOepWHb4zutHtpvEYUkO6n+jQ5omybLt2fGwB8UN+JDm
QxtPrWrxYbUM3nhqxQxUU4c/+nrCc5HFHESwLDp/+fZA8rlm+GjQ/LqR/nNsLEF44OPIxrCxtHKk
eChwk+eKpTxbDB/XERiPrkASN7Ix8SGzEax1PbPq9hmQDNmODNxzQWbPxvmSseub7HLxy8I6bMcM
31NM/Jqg8+MHImZVNlm+6tvXrmgQXt2nHzq193m2I/iitF+87ZB8PoXtkPSfZ1O62A7Jxm+ZeqZ6
8mvoX0Rn1wyKY+acAF5Lxca7jLDkM/PX8+rd7CcVB1HCO0K+HuIFiNDRp+LmpUX3a2XSJ8B1fh1U
ruH1MwXEUqc4KN/AKwb3x8PvSZshOGXsW1zrwL73a2bHFrVygdlu+s7Y9F0dmEnc5z1f5/ciGi8E
CSMbTxH4ePyNY/jyjZfk8ymMl6T/jMZLsvEcxkv2///GqxuvuQI+fqZ4KTB5+ySlPJvwjooD3voI
3DF4z+A6C9MpvNBOj30vGagPquRprSz0QZU8m7Dq9tmlPK3xNzPttxt/A+YUXsedemEsREU3eQeX
TS/UBdCpt6Lat3x5hqjqVXI2OLocp9zr0Yp9IUf0IIiOJqOOWiyT6Uy3hbt6k04dbCmPLqXCTdu9
v+Qa3zWDLxk8Z/Adl/5OGdwxONzFMZQJG/iGwbNjDQzbchhseA/CK68/sqrn8BSgpskOYE6ASqvr
PXrfD6ykCa8CyXjdks8bNI/R1z8p98rgR6tLLtMLf/GaK58frfy+KhOpDNiECpvsYG3Ia1dkcbRV
aC2e9Xrfqrx2XvuF1s6G4BZ1IAewP3j9yWM6IObqnMELBu/kZBJ49YCS9Nn+OB1ZajsqyeEMuDyF
ZLtwv9QBFUXzUlZ+oCa+OFw2TBqDzWG4lrh6dLjOF0fudHEMzmm4bhl5v0jrWg7y0ODRMQL6msao
GiMzXizUyvQ+Br08KkAipfj4qLxc5HnZkOwX2w4D0EflI+XvXuMDzADY78mGuLYZCHFSSLaYgT8h
c1Fb6+R9S/eDlZ/trBQj0Ax+Un5sfVWJgF2RbmW89+jQBuCdHzZ9iB9YbfoW9PvT1BcCKBOI94Nt
sbLCpS6XG+rKNeu052XlZ/1erH4LUNnJ2hEkdqnqHOTgYiAbnugm7IOOL1p3NdYvs5Tw9DLutqVI
bsBa7WmPLSTiMjXWgU308XgGKSfao4NkKwzwObUdZUOyqYTMi3dliZXe5HDe0f/9UtBdjkyuyFvn
6l1erhzFF+JJlhc7FNcBSmqLZkg0QF04gXwFb7zbnGj8nxvwpj2hAp4CrjITv5axgXVsLA1pDIt7
p7YKAClLSv1CQ1xzwqtK14wX2OHdedbIFtd173N+RZu4t2zYJz34n3W+O/ofDj7EdmVuZHN0cmVh
bQplbmRvYmoKMjExIDAgb2JqCjU0OTAKZW5kb2JqCjIxNiAwIG9iago8PC9MZW5ndGggMjE3IDAg
Ui9GaWx0ZXIgL0ZsYXRlRGVjb2RlPj4Kc3RyZWFtCnic7TzbbmTHce/zDXmY+GEzNMSjvl8kx8DG
NhwFDhwlG+TBDghqdpZiMsuhZoaUDMP/nqrqS1UPz66p1WxsJMICyzp1uquruu7dh/xmqSa9VPiv
/ly/XXz6r3F5c1jo5c0CMdH4NAWz9M7ZKfvlfrN4s/gGXnlt0/ItAvBmuV3AwDDCOGC7+HrxH8u7
xTdLwiHFS6vNkqb5sp5WYfnL3eJL+BenHJ0xy28XavLLXy+Mc1PKaemNi1MKsB5jgp28WRprJp0z
PMcwwUyjw+St78/rhVEKpsaO0SlNOppOgZ/LGusFY4A4kOwEdAaueAV6hAU6C+V957DMPhFhDTvC
JJpY/7awxk3WCFRHFDat1qAHzYJmD/qIUtCkJpMtjwhx8tnxVvXnxgljCqudQBGkr1AFZRYI0Rmk
ySf8k5idAIuJer0BA9Jkdsv6Y/12+Q+vyBTiMk85xJSWr94silHqJWxXMmBN3rrJGXj1dvG71RcX
YLVOhbS6u7hUk00mebM6EqyDCWa1R1hF2P2sV7uLS5OnaHVcvS7jrVJ+9SDgNVA0VoE8jYzPPqxu
Ae2iiUgDlsxRh9jXDDn/56t/WvzqFVivdk6hj7C8jKm2BtxPhq1TO21AA0KJ2uYwZcMjbHL4s1Po
z91aO4b0wARISbxCVSKzUN83DsvsExFQjUyC1fh9FWgDKC6PCvyXC+AkeRthX/WkU8xiq9v+qhQH
ZWwQjlGZHIt+tUs66dUBdZejT7GrwzjvpqiH4NEw1SOcM5MSPuVMmKyTPuW0mkLiETZDjJLhpz13
n+qY6v6NQA0ObYUWPDoL9X3jsM4eRSCv6iRYHQY3VlspasdURmGByYng4JWHfRxEzZgGeC9inETw
aI9dzoaojNbJRYpOvEnZV6/vG3Nl8gn3JGUnIaQMGngZpOyYFuIwVkspk4dQLqX0ATngAR5ii9il
+tilbIjKaJ1cpWjEm5R99fK+M1cmn3BfpGwkpJTZjFGEMU1KDNRBBPrgxihigkvTkArAAY3cp/bM
qaBhKrONQBWlrdBFbSzU943DOnsUgUTtJISoMZrJBilqx1RGo89TEKJGLEMGUSNEEStEjdpPQYja
n7uoHVOY7QSKKH2FJmpnob5vHNbZowgkaichRE1eT3GoZDqmMppsnpQINZDyJqeXQ4KPUxTGGyHB
KmEX/ZlFbZiW4CuBIkpfoYnaWajvG4d19igCidpJfHBuMBZmIo8yN3yJoR3MyJmWoSkTXGN+MBpU
str2VMFJ428Q8lCmYJ7oubyUAUlBsq5pAmzd9DRhvfFlU3rl1TG19IJSdlJshNZBiLfSCC0kIagt
xAgIFIqNkJ/b1jGmVE+dQCmt+gqt9OoslPedwzL7RATUDJMQNWaAoKqlvzGmiQqe64SoHn7GQVQf
dAnWbQRECidE7c9d1I6pzDYCVZS2Qhe1sVDedw7L7BMRSNRO4oON0EKVntVchQnllMpDOfK1gJ+a
mY/GyZpRFi/CfCVBUXcSPYgpie3ThQA+LPM9Y8qWu+CNLFscxnJRtKxhBuRfUei4oCDmaUGhPbdd
ZQxtOxMgpfAKVWnMQn3fOKyzRxFQaUyCleYiqMFJ+2RMZRQK+CmyfTooxicZI12EHCzqHBdSLI7V
JG3PLGnDFF47gSJJW6AJ2hmorxt/dfIoAAnaKAg5MWqmQc6OqWwm6LW0lBMCuR/kjHlKQucRejkt
bKI/dzk7prLaCFRB6gJNzs5Aed35K5NPBChyVgpCzqzsZKRjMqbJCXWjKF1cik62P8gIpF9R7Ljk
oHmWO9Weu6AdU3ltBKokbYUuaWOhvO8cltknIpCkncQHxxvnofU57Wh/Qf1MhB4s11ARdHQ10yl4
kKAY8FWJJSGnlhY9xJsaS7y1tqa9BDrlZnX564WPCnxQ6owxZXeh4LWlkiu770GQsh1NPz4EQwdE
fYTLZXMahfbcNpAxtMNMgPafV6j6YRbK+85hmX0iAuqHSbB+8DzLxxQmFQdxG6YyG6OdLEdOH30s
/VcXN2K/5sQIk0vgaxTacxe3YyrDjUAVp63QxO0s1PeNwzp7FGG9ePN/UyzQYifBWvQJEokbRO2Y
ymiCRBSFqAnKSz2ImrAXFSYNlaGs9vi5i9oxhdlOoIjSV2iidhbq+8ZhnT2KQKJ2Eh8cUDw4Uc4n
Jyz/KMoTETruLy4tBIygzZP6RXudvK/xwmZte7woB7IhJAimUgGMKdsXAmyrOJcMIagpSwVAI+gn
48QI2BjvBIX23HaIMbSFTIA2mFeoCmAW6vvGYZ09ioAKYBKsACCSpjCI2jGV0ej9lIWo0alSM3VR
oRicghA1QlYVnTw/d1E7pjDbCRRR+gpN1M5Cfd84rLNHEUjUTkKImqBCVzJgMqYymqyXLU9IOsuG
BzhJyhUXbqJmPVm5We2ZRW2YwmwnUETpKzRROwv1feOwzh5FIFE7iR94/hygYzE+vztb48Gw8VDw
u3cV9sL9ZEPLjlZbBhpB5FzGhlWQ665Yrl+glKPrFwNlOV25xBHGAcP1SyrXL5luXwz0nuX2BXRV
b1/wcDtnr5cCCDnDfi/3eBsEdY/B0FXuhDSeaIH+crkT0u/bVmAFYmaCEmTuWN9lSOG2bus/39K+
amtsaddtsNE72kubtEqlsKngVgyW8DVtW9baN42E5FWsU1WClm5X9BA8eBwsdGktliG5tndPhjfq
XgcMoHhmlJyXI/ZlolO14LLBQK+7+oyOMqAQ8wk1CLuR5WYY8HcDiVMtX71erN5cbw+bq8eLV//1
dNugTfGqjfxdFTH55EwTMasQ6u2GhZhp59ZD7wdTresd9w91uW5ZUC8rsiwojH2zphGGAXOW5fCC
D0aGZllWWJbLWZmlADyUphBywbK8NoCGotgmixEgoEuD6BaquPQc84I5GsKgAx8fUiKsAfMdZIsI
HV0xL1CMwnuCZOt1ToiqXzFAZWpa7w77t3pEtNNOpVZw62hdH6374ZPx7XYIDKB7rYW2mEzLW3Ck
uHpT0FA5GRgNORj8NfdrDFdcHDfODfJoO0XW+xtaBh2HWKrglsEDgxsCM1jN6orBR4pWWnld1xv3
L0BzA1UK2xnKrXLI8tKrXaJpHdIs19Amm5Rio3Lk5fcMPjD4HFZrIZLx2s8uJeCtNl7aErRDlOaq
LXn4P4I9ki29P85FSCQBMomDPcTOIqopxfqjWaP6/taYyXo0koVc5Is1viQjiJBBpKUJuxTm9Rrt
CDNgaCdQZF7XSAKm+WpHsCG5jHWoqlbh2XGAAHcXUMjrHNt9moraB7ba5g9WabJropv5ohX2pq4B
wXb1loJdSWj3wlq2TEPY00iDFozBNtOiiUQaihxne9kanFhwxiR53pMRx8q/0TU344Adm9vJWDq4
s66uZ3Iwq++KniAnxWFEPViGyCIM9TlmZjN0wxA5z2xmQBbehWJmv6KDTEj5uvEvIpqpWrMqG6Ob
1si2hNaaemKu+0Xx5U3ZTycu0kvIa5vR50Gu/rbYBqGFTUkj+Jr3fz4Uwl5Z6HJqUDmw5kR8uZ7F
3jK4ng01YtphFtxcYKZG29mPK5wGKNAzlCzApIxHXsfJ+nPnNuvBd2PNbf+ObMWgoCCoGvDZsGM1
m6dYILLZqbYcaDl8YK6Cit4F5T88VxF4xeB8AlAKSwcAaJ/bs9huqJfxcLnutrU64RVedSqoPUAW
b4uG3rnzINlcox1hCz1e0eB3CLrs/KcXl+i4CgoCABNeAysDbgfFNhReHr2uQtcdetuh+w5tOwSa
SND6tdcWCDqK0A3cAYjvodh9ZOwtY18zdsPga2TPIKt4bNiY/gOAkO1gBKSkS4ghEJ1osQIdO/R1
hx7kuIi3VzqufntxCVUfYP3q7xj8JayJR+wQJSAGpATI7HDNht0wdt9bH+lPS/1hmoIobZcWPzOB
SEuaAlESbJBVFNIa+JbBewa3DF4zOFCYYfZ78wkuPuWRy5+dbxegiYA8o0f6a9rwZGIiIfECNmUS
smIPjD2cR0g8E7NuZOO3vMoDr31k7IaxewZf8oDtrCA7tieQ1OB3X1BifXK+TTUgRc4zm1oNessM
XDP2wNjzbKqBGjdEP7IxoS/DghDvEUzomAbBpALUwKsvAIL3JtNHVjPghsE9gy8ZFNJtGbtjcM0g
yGyo9k6rn5/VtZ22cWnxCMEN+39qFtfSkoV9n2P/s8ftdyMbsIpWEA6hhFwzuGPwnsENg68ZvGLw
msHtLEh0IYrrYTUx7TjLw/69qxnd2TFaYu8ZPDK4YxBzQUZ159Ufz6fuBAnLg7YVxN1Ua9p7yj9A
3dVUROBXDG4ZvGVwfZ5oZsDxoCUfOPrsvAJDPb40+B0VDCH6D7Ph+Zaxd4y9OZOYeOlvRzZE4XHN
dcWWsduxSKngmgdcMfaIEQrQ0C7+PYLAPjQpkBfAtRIepKFu8ZjQUMcJ2FiKI0BGVxrZinzJyG1H
bhm560h0FIfxKa4+/wg6S1CQhr+8ziQbtx9TZyBJOUHNKEgJRA3cERiRwj2DGwZfM3jF4DWD21lQ
0F3PTkNjwRxlvBy7/3OrvZ7F3o90n/IAdI3DO8IApdul9orq3i/Y+O5GUOyDsOMKvhwlFjYtLFkI
j1jtKO/Ekmkx73ssAdwJqPELPmMhFXfs5/3q4iweEPG72DgppzlMl45m36HbDj3O9EVH0QOdxyEC
OcLA1hirLx3ePEEiv8TLN/wVB+pehSdcz7qKcKDneA1EMUxChK3paDebxY4MbhjEnO2QWj4JW8Q0
NN2vfrN49dPi7B+ZbZFQ72bB57B9nmgL4U778BePtpKNq9n9PTJ2P2roae9+ZOzhJNoW8H2KhdBj
6sJ4i0GKreA1DzgydsfYPWOvGDzODhDEbsexFcTa32mMThQVEbSGmr7aPTxwb3Rk7Iaxe8a+nO2u
tow9afochEWdKNJBNIaG7dzWBwWpzngYZP+KCtKBo/MWpDFDh6OTn0w79fprPEuxdrI6jnye8zTF
qUmZk3343288dcTzNjOyUbt9/NC4nAEkDUXIxGX1Sz7w27Nb3FxcBjwgsVTDaXRp787ZrHfbwS/A
dGX2kTW/Y/CWwdfn2Sg8/YKaZFh7ze2FaGbuGHsYI3HF7seupA4QxLAlxi9NgPvfr0qPkVQpcmoL
c82Dt4x9YKyoCK96v3Jk5B8YvJftUOtnfgp6xd8F0JF69XoA+wlgI4ZqQ2EUNWwolDfwhkEqIy0d
mL3g4PqCg+vE2GnEakUV8PVzlrBIwq9+fwGsOUNinPHAQKsEBR34B36h4lJvgpr5v8HTMEiaRlY9
O1bDn7WFDWO/Y+y9TPFnMd+MB3x5lANtqwnyt7CVAUsCV22S0vGBc/BmFityu8jiW8Z+rEricbYk
eJw9LhVpXhQK4q7garZ8EPcK90NRwefA3Rtu2SiF1W6fgKDIGqYIXDN4xeARZQMXgLa3VR3KFgsP
ilb+49BrXfpAHy60rsOXrkMU37uLuYpwfzHXzIuqX1SaB7aPz9hqPkMs2Ky1p7GwBJS70Wg4Cgnd
FqQwurUcqbEbBlYoDuL5r6aA1k6jd3xG/cDYI2M3DGJvrUvb+sm7o5vBoEh+DZAv3txAjEJoaMDP
t4y9Zuyesa9xtUil4894iZecLsfM2cADMyl1j9J73JRmXmgnewZvGKS462k1NBm6WyuZfBZEA7I2
QNPRb8PltLGrv4R9nHLK1dKUKRP+dMaAC/VnNlB3QVx3pvZBoigU5R8WQxaPjGLRMobh+H2DM5u3
SL4Nu+mW+F2H7qX1nuXuxTrYUj9KXNJ+Mf3bvvaB1+akvh4jLDvekzl87rln5MNA6ImH8uJfjfGd
D1CfcESxGewdaouPHJtN0j02Rw7NsbgygLq4J9Y0IfZLphHcMbhm8KqTFQT2DN6MQyt4bLdUolZq
yQGdU3jvdhZ8RnJoHhtzah5La3kKji+fEx9CIJW8qOFKF5D0ZKkCq9gRxAQQLQWmNpaSElZ5Rp8m
JWehdILe9sek9IOTEuqg7gcOjeWA5im4Y3DNoJh2nB27Z/BqdpoYcIMGHqnuQs6w4TNUmJFAtsRf
lNjRIVnD3jF2w1gS3lCg6LkXwzZZODQi0HY2C9+xJe4Z/JYt8XocULGUhRN1CD0LU+9CnaoKPQtD
kr1h8MCM/ZzHfsQs3MH35V78ZUFoQS/7Me3Hyr349yWU/f+Ue6XEP+beM+ReSnzPy0UlqbzgCPGC
I8Q0gnUAXUBlipSftOMCV4+9wb9TzRwQmXJvQE3qbWm9+argmgdcMRajPP3aIJ1eaBNrMGjJN3Dy
pRyIH0Za9zQHRvrDVT/mwB8bM9JUtdpiMnMXqwzONGaflKAa66FeTRO3DN7NghsG8Q4taKqLiYcq
xmyXlz5+lwdls8c/2fLcTHOuDwhtTOPa80eGP+TzXrxAcNksY5yCTvNf91INLz94KB8b4C/pkeNX
8MgDbhkrPo64mp1W6MaWYutHDBsGxUcMx3al74tJm4RWj95GBlm+6WzgFo9a0eQPjMP4r1yP/5iC
nFv9hA+UH3vwQBaffF/zwEjO/FeM5Px5cnLNk8g1nK5VSHNavLMAv+/FKP1WpAxISXtKQOu6MRQl
CWgfWNSPUgh3ZNy+4R4asOaX7bORqrHyxxXay23DbYqXB7BIL34vay6QiMbwbbUdHZ8XdGqG/Qkn
UPL9mlc/b3tUzZMCwqcdKSr3HU/CfVOZ6moIuPihnnOlBqrgnsH/ZvCWwTsGb+a+HPkgh4v4qb6f
gvf8DeWMF534VgVvecCasVez0w4XJ25GAzaMbcZRk2X9kKckSwrxMpOJRLVl7IGxG8ZeMfg4ZrJ6
E/KsixlP5veiOTIC6DyKun8J0uup3EeVb2975qf+j8zszH4urqi47q8fJ5GfO6o2brkzOwzmWm30
xFw1iq+lm7c20/pey73L5QnY88sf4vKgP0UbeHZHJwswpI3a6b4vyUPoNva93eQllGIO/4Dt+DnT
00HQcrgnlHqum/le4svF/wD5ogwRZW5kc3RyZWFtCmVuZG9iagoyMTcgMCBvYmoKNTIzNAplbmRv
YmoKMjIyIDAgb2JqCjw8L0xlbmd0aCAyMjMgMCBSL0ZpbHRlciAvRmxhdGVEZWNvZGU+PgpzdHJl
YW0KeJztPNtyXMdx7/sNedjK06JiHM39oihM2YntJBWnopisPDgpFgiAFGIQhIiLTKX87+numenu
WSwhXhYiFbn4wN4+c3r6Pj0zffDt2ix2bfBf///45eqL/8jrF1cru36xQkx2sSzJrWMIfqlx/fp0
9Xz1LTyK1pf1SwTgyfp8BQPTDOOA89U3q/9cX6y+XRMOKR5669b0WmzzWZPW//hq9TX8y0vNwbn1
dyuzxPVvVy6EpdSyji7kpSSYTzDJL9GtnXeLrRV+57TAm86mJfrIv49Xzhh4NTPGlrLY7JiC/G5z
HK8EA8SBJBOwFbiSGegnTMAstOfMYXt7S4Rj0IiQGGL9fuVdWLxTKEY0Nr21YAcrgtYI9sha0GIW
V72MSHmJNYiq+PfgRDCNVSbQBOEZuqDCAiGYQXp5i38SkwmImGjXF+BAltxu3f87frn+1WNyhbyu
S025lPXj56vmlHYN6ioOvCn6sAQHj16u/rD55wPw2mBS2VwcHJrFF1ei21wTbJNLbvMaYZNB+9Vu
Xh0curpkb/PmpI33xsTNjYKPgaLzBuQZZGKNaXMG6JBdRhowZc02ZZ4z1frfj/9l9evH4L02BIMx
IvIKpvsacL848U4brAMLKCNaX9NSnYzwJeD/TIF/s7cyhuwgBMhIMkM3orDQnw8O29tbIqAZhYSY
8X0N6BMYrs4G/PcD4KREn0GvdrElV6XqoV9T8mSMU4RzNq7mZl8bii12c4W2qzmWzOZwIYYl2yl5
DEyPiBDcYlRMBZcWH3RMBWuWVGSEr5CjdPoZvzmmGNPDfxDoyWHMMJIHs9CfDw7727MIFFVMQszh
ULHWa1EZ0xmFCZagkkM0EfQ4iVpxGRBd5Lyo5DF+spwD0RntLzcpmPiQkmfvzwdz7eUt7klKJqGk
TBZ4maRkzEhxmKu1lCVCKtdSxoQcyIAIuUVpqf9kKQeiM9pf7lIM4kNKnr09Z+bay1vcNykHCS1l
dXMWEcyQEhN1Uok+hTmLuBTKMi0FEIBO62n8lqVgYDqzg0AXZczAog4W+vPBYX97FoFEZRJK1Jzd
4pMWlTGd0RzrkpSoGcuQSdQMWcQrUbONS1Ki8m8WlTGNWSbQROEZhqjMQn8+OOxvzyKQqExCiVqi
XfJUyTCmM1p8XYxKNbDkLcGupwU+L1k5b4YF1ii/4N8i6sCMBb4TaKLwDENUZqE/Hxz2t2cRSFQm
8cFrg/PwJvKo14avMbWDGwU3VmhaCY5wfXAWTLI556VCFo2/QihCmYLrBK/lrQwoBhbrvkyArzte
Jnx0sSmFKy/G9NILStnFiBP6ACneayf0sAhBbaFGQKIw4oTye6hOMK16YgKttOIZRunFLLTnzGF7
e0sEtIyQUDVmgqRqdbwJZogKkRuUqBH+z5OoMdmWrMcIyBRBicq/WVTGdGYHgS7KmIFFHSy058xh
e3tLBBKVSXywE3qo0qvZVWFCOWXqVI58o+C7bhazC7pm1MWLcl9NUNWdRA9yShH/DClBDOv1XjBN
5SFFp8uWgLlcFS3H8Aasv6rQCclAzrOKwvg9tCoYUrsQIKPIDN1owkJ/Pjjsb88ioNGEhBgtZDBD
0P4pmM4oFPBLFv8MUIwvOkeGDGuwqnNCKrkF1pB0/BZJB6bxygSaJGOCISgz0B8P/vrLswAk6KCg
5MSsWSY5GdPZLLDXslpOSORxkjPXpSibZ9jLWeUT/JvlZExndRDogvQJhpzMQHvM/LWXtwRocnYK
Ss5q/OJ0YApmyAl1oypdQslBb3+QEVh+VbETSoDNs9bU+M2CMqbzOgh0ScYMLOlgoT1nDtvbWyKQ
pEzig/NNiLD12d7R/gPtZzLswWpPFcnm0Fc6Az80qAY8a7kk1TKWxQj5pueS6L3vy14Bm8pmdf3b
VcwGYlDbTDBNu1Dw+lbJNe1HEKSpY9gnpuTogIhHhNqUMyiM30OBgiENCwHSv8zQ7SMstOfMYXt7
SwS0j5AQ+8Rc0mLyJOrAdEZz9ouXrBlzzG3vxaJm3KsFNcLVlvQGhfGbRWVMZ3YQ6KKMGYaozEJ/
Pjjsb88ikKhMQkTFo7tYIOOGSVzGdGYLZOysxC1Qh9lJ3IKbNmV7KKF0WSS/WVzGNIaZQBOHZxji
Mgv9+eCwvz2LcLx6/v9TLLAik/jghBIhiGrdOmH5J1WeqNRxeXDoIWEk6+7ULzbaEmPPF75az/mi
HcimVCCZagMIpqkvJVCrOpdMKZmlagPARjAuLqgRoJgYFIXxe2hIMKRCIUAKlhm6AYSF/nxw2N+e
RUADCAkxABApS5pEZUxnNMe4VCVqDqbVTCwqFINLUqJmWFXVTl5+s6iMacwygSYKzzBEZRb688Fh
f3sWgURlEkrUAhW60QlTMJ3R4qPe8qRiq97wACfFhJadhqjVLl4ra/wWUQemMcsEmig8wxCVWejP
B4f97VkEEpVJfOT5c4Idi4v17as1Hgy7CAV/eFthr8JPb2gl0PqWgUYQuVBxw6rIcSi26xco5ej6
xUFZTlcueYZxwHT9Utr1S6XbFwd7z3b7Arbqty94uF1rtGsFpFpB3+vXeBsEdY/D1NXuhCyeaIH9
arsTsvepFViBnFmgBNl1rB8qLOG+q/V3Z6RX651v23WffI6BdOmLNaUVNh08V4M1fERqq9bGYZFU
osn9VVNgS/eq2SFFiDiY6NB7LENq397dGT6oR5swgeKZUQlRj3jdXgymF1w+Odjrbr6kowwoxGJB
C4I2qlaGg3h3UBOY9eOT1eb6zeXp0+uDx/8jlob61ZCloVCNw7ozDAN2WTrghRuMTMPSXlk61Grc
WgERSkVIgWDpaB2goUjtd34JQwwsSBEW3sHcEEUW0lKAmJuWKJijVKh93VKs11HkrUupX6+gS2xe
ktJqgEhEbY+rlnHqk0DFfenyUPTSaG+qc1aje+x42JzyvVC3dfTg2YItsCNvMWxcid1MsMJoKcBm
3nU7/WFzK7wqts8EPCGwGhM2TwW8pkmsibZPMqsq4vlxjGMScB3YPYKrzJx+oxRyisIE2JGWrhtv
bKILFWdhQ7B5IXOfyfPj/lbOuHnAGrWkcZgBMTPNoF5Tl154iYYkfE56hGJTVQ4V7+n8WgMRTB61
swEhSAd2OBtuykHlzdnwgjoaCy+BZl7f43hgn121UQaxQKvBe9jZ2+Z4XxwcZtC2AYdAsIJPmrL5
14PDEsAGBqVi8ELAPwJoEXaoOXzLYRIY0DVD3+14KhBSNLD/birDnbiFZPIGQKg08ajoUrCnAj6V
AfCas0hs8wtAJhgAJr6lodnTGkJDbXYoycCeCPhUBnRaOVgiVhyO2DwnbnNIlE4HeC7glYCnAj4V
8LZJmT2e3PLEFzLxCQ5AuJDmDLxWMI926IahU4aeMnTLq6S4Gtn7gzwEAg08BCv71Fci5MijWjNN
H3CxSphrBvZSsOeCPRLwWgac7mL2vfmEhRQ82M18frU/PViHoRlm+pAsSgEpMqaYw4Kn9QUPKBh7
Jdir/YgJ9UXElU2z8fjg0OKpk/PgpPuTGFxx2/DHIs+5SHmkpVSy70Ngh1EStvS+UIbKzpUtENIl
RJLbPNqfGhyQTNXPDNyQmDnU0E0MOT5SXuzYC8G+2I8e6ExyRxyCwA4Wqzcc/Jf3pgbMqQVAWIf/
DkAoY0C75EF4qwzZ5m8fIHeADaP5CeQOzedD5A5N/1PkDijjofKd2Fhk3VxkNV1k4QTXaFUpbskO
bYRwhOJpnwFmPB5JTFzdSPhcSVCdCfZCsHuKL8wcbssHbjlsXjF0xtDJ28LL4hJO4QU6hJK8FzK0
xL+RJf5SsKc/VHzs0Rs9xLyt+Y6kyCvUgFQe9Yx6JuDJXrQMm0eItDLPTVUaTBMdOtuYEJ0tJFIq
emPElFUJhOrcUbLHS3dY8x71xym05EWnDXtLXti0FCFqPvfkNfH5AMlrov/pktfExmeSvOrMlWSI
C4bOd+SPC1m9wZnw3hBgVC04SA4QDZh0wLHbpmggrxh5zdCpPP4TIy8F+Rq3Zpkqo2e0YYNYI/I7
wPP9BHrA5pc8K+adtk2ikd3bplxATzHuSq8+c3ptddDAngr4VAaM9OorxEsvHZFHXGNcsd2dMwTt
uSCvGHkqyKeMvBbkG0ZeChJecthsC1hKeyhtRTel7GtSc1P0D99dmrhehOul+zGsMI8E+6WMBdAm
bGaytMtsLBwJC+eMvJn46gp4iBRa4hLLTyCFaj4fIoVq+p8whWo2Pp8Uqrn6SwptKRTS593oed+z
oHesSD8gZXr6bICSHlVqgdSEuqv0/cDAngr4VED12hsBL6fXnEuUIUeNGCrXiMa3GhEFCtvJUkA8
McFjtkdThlR50yYcQLnyvsR/oxO/DViv7syV73R/4EOIeKM37g8gwuDRR98f4OG9H4cDvwPmDPb9
F98P4lM2/MlACtWNXjy8M7hFdAC5ymigsdkHfTnQB7s4vvaAgjtNNwl8fZBxGUU0mA4jw4OajK38
WUJoV3Z3bxIsBLDhm4RruTN4I+ClgKcCvvUm4T0O2l3KHpsNulUwbKrvtzr33wCCuy7JgAEcOGlK
azw/z7H9V+o4qn9vu1ayg0Wyi0k9BfwexSvRsknoeqFd9ACd6Ma1ENlEXX2cNvPgleGLWYc7boUU
urdvJu69Is84F3dQbHxPFi4px9GSbGqq0x2NGk0XSxYWOzr6pkuTMryLTNncKITg6m6HgY2fcX49
XT3Rm4rImYDvcvU0wvhdzG0snsZN5o4fb21jwR27tZ8gm5D6ghsd2hDSvYGtJjcCDVKNfLHV7E7G
jn66ecJVinwAwvJYLPyW68Vnit5b7rrYp0r3S3CJsvkNZEhkFbDUKQwrKHjrv/2ypUtr3ebX7b0C
EnzXZiS5dt+X4aVbu1Er99/2ASMp9CxjoPIcze54cadfvFEvdu8OkM/K270QsQHAo65WyKnX+JEW
kKMVFHOn95ZKBrw0TKmIkd7Tq1xODttw9utVrfkk6w/MEok5kvN3B462FeFO7FtImHVK6Xc8LcAu
b7LkbJvhrRdyNXrMllGa7t5HXR/PfvimVax7Mkxk9+9PwukN+jUwF6oOxtHHDnmqf6+HxctLJBCX
tgCygGOZLWH4pkMrNDVbA6kV9Ik5JU16aanUdTmx2afuTgfXXTKH+yiwZ7KtVOSAUERHs1uuGqvI
Hh2g54YAW/iSR45teR/IRl35gy7xbl4vpj5SD9OeSxxHHxD1EudXyGuGwGMNWTs6h1KcC5zjbtBi
J++dtNhHVByM31JCHih6zdsxODudPft6BeEf3tIqkTE3vEuBQ8Y4fff1Cp5gkQkAmWL8VhapqEPP
5Q3UQbCL5jaCj9rhOxcgy/vPfoc/8fkAO/yJ/qe7HZ7YeNDb4TsC/8i3wxBbUFzMbDxpAgN+r8cU
2GOZtnR7pS9+7tmYH6tx+7oNhq3szMzzucVFQIsf5sAK/gBXu3gagNXFZx/4ms+HCHxN/xMGvmbj
YQN/W+BPFPiajQcOfD3Vpwz8CAE/MQOBn1BsqkU0aDEJgDa+ktvyx6KjX+z3gprv5p/oKfZ3bQ3k
K+6OtOQnckB7SlkEaz19/nvesb727ETgmz7AtW6Zjj3ddfPx3nwGX6ACtDOf/7XBLIx/sIJKeGwj
jPSNCYMYQtS75CmEOvZWsEeCPUe148dNiS2bybD9LFQddeLEDB8Mg/vN3wCYm+W2+OnTHU/TfQA/
T/iU9JEc2BI7Az6YYRndb6IeyZnv/+7vUgqYLpgpDdXQOprBS0MPZwKPdmLPBDxuVw7FUNtwjQB5
T1cOfQ27EOyVgNMix9g/CfZSsP3aoR9K907bGwGv9QXEXhKMc0vyYdbPrQT3kaSSc8GqfjjMFJgf
IKBUg9lfo/9Tkwb5G9q3X6GiD/nE/t8P3Tv2VsCjaUDzt7Kd2SgA5KwfshUHAMIHkvE4ADwHQLPH
mORYsFsM9QHvFAA/GJCtNsukIOrAS1u3Coc24X6/rA/x86fkYts6/lmatB+grLM5LX58zvMZl3UT
nw9Q1k30P11ZN7HxoGXdHYE/TVk3sfGwZd001acu6yZmflZl3ST5Z1zWTXz+SGVdxBt1XERwqQe1
07wMHwiM193USNRC06Phav9chwZ8L+CpNFAiuYSB5wOR07D1jjh6NIE5JurX3H9dZlOgE9K/1GW7
67JJPz+Zuow8mF0YtTJcmOADgYcLtzadgT0T8HsByYUD1XC8sXAtIkam4rKq3F9WGffAZRXEOh25
L/h3YEeP02i3utAfr+3DWzCY5tleUj4oeD+iPHb+kg/NBKIPZZIWWs2MH1+2YGfW8NbURJPxe9W5
ND0Woq/eGhwmUR/ZV4L9qnllca6vfMXRfZUGceXDwmefpV6ExceVJcjaM8zySsxyI9hngj3XnyLu
peCraSkQ3ZqhPS62+DFVynkifyalBbhActjt5PdV1sA81YRpvkdSZ3wp1Qc3rfr3TWrF4rFB6p5E
eQE9KdEyRwM69kLAkwPVqwcJEAnHtwT8x3xe2z61cJP8X0iioq9rDbXQvdMetGO3kq8M2E6+9x4K
9QY4im9kKLjtQ6FeoWxVM+pQqA+4FezRgS53nC2k2F5EYhfdE2lvVt3LW5vifdRryFENENr4B6Wd
7GcePDG1MqlSt+xIDteSMl4L9kywF4J9ob5e3n/gK238KIGv5vtZBr6S/0cPfCqNPmDb0LH3bBto
P7J1lruPoIU6yeBfXbcmLDH2hPnnu9bBNoetdpPkK4xy+/6LHPgnbINJd9pNVGPJH7HPxtrAfzIK
+6ZUp8juTqiT+Q9G3NNnR2j6yJH/BAcrATIcNo/t6vawLmETWdcHePxSfRn6MAtWa0Z3neHf0y5g
lj23roYIKx+QJQX+UhSo2kdVj7Hop7flAQ+tbYw1wa1Qd3tKidqtasbjJq60m0RvmnWY+KSXrLcx
Y8f83MaMdq4l/HAbMx6jRu6YupbOnTe6++q9unx2/0GUxJP8PXW9hRrd5CB3zOwM/oVnv28zOwhI
JPszNvPzuV2vg+dzZ929Fr+93+KwstVY3JhPtVdf3E0msPKUnVx7u7hSdjnnawFvPpJVcs5s73HO
r1f/B6Eap0FlbmRzdHJlYW0KZW5kb2JqCjIyMyAwIG9iago1MzA2CmVuZG9iagoyMjggMCBvYmoK
PDwvTGVuZ3RoIDIyOSAwIFIvRmlsdGVyIC9GbGF0ZURlY29kZT4+CnN0cmVhbQp4nO1cS28cxxG+
72/IYY/LIBz3+5FLECeBkwAB4kRADnEgSKRECaLelhz/+3z9qOrq3SGXSzM5RIZgcKZnurq+elf3
rN9v1aK3qvzrfy9eb776W9xefdzo7dWmjETj0xLM1jtnl+y3H55tnm/e45HXNm1flws82V5v8GKY
r8sL15sXm39s32zeb+tYoXhutdnWab6tp1XY/v7t5lv8i0uOzpjtDxu1+O03G+PcknLaeuPikgLW
GyPBLt5sjTWLzhn3MSyYaXRYvPV8f7ExSmFq5BGd0qKjYQrjvq1xsRkjIA6STEBncDVWqLdYgFlo
z5nDNnsPwgUkMkgQrL9vrHGLNWKIBxqbVmvoQQ+g2UMfUQJNajHZjjdCXHx2Q1R8T5yMkcYqE2hA
eIUOdLBQB5jBOnmP/wqTCQyYRa9XMCBdzW7b/1y83n79qJpC3OYlh5jS9tHzTTNKvYW4koE1eesW
Z/Do9eafuz+dwWqdCmn35uxcLTaZ5M3u+3qtgwlm96FcqwjpZ717e3Zu8hKtjrvL9r5Vyu8+iesL
UDRWAQ+R8dmH3UsMu2hioYElc9Qh8poh5389+vPmD49gvdo5VXxk4B0j3dbA/WKGdWqnDTQglKht
Dks24w2bXPnLFPierZVHqh4GgaqksUJX4mChPycO2+w9CEWNg8RQ46kKtAGKy7MC/3oGTpK3EXLV
i04xC1GTfFWKkzKelesYlcmx6Ve7pJPefSy6y9GnyOowzrsl6il40Ej3COfMooRPORMW66RPOa2W
kMYbNiNGyfBD9+xTPNLdnwj04EArUPBgFvpz4rDPniFUr2ISQx2mCFZbCZVHOqNYYHEiOHjlIccJ
ai5pYMgixkUED7plnDTQGe2TGwomTih59f6cmGuT97ivKJmEQBk0eJlQ8giFuBKrJcrkEcolSh8K
B+MFj9gipNRvGSUNdEb75I6CiBNKXr09Z+ba5D3uG0oiIVFmM0eRMUIoS6AOItAHN0cRE1xaplQA
BzRSTnQ/UgGNdGaJQIdCKzBUYqE/Jw777BlChcokBNQYzWKDhMojndHo8xIE1FjKkAlqRBSxAmrU
fgkCKt8zVB5pzDKBBoVXIKjMQn9OHPbZM4QKlUkIqMnrJU6VDI90RpPNixKhBilvcXo7Jfi4RGG8
EQlWCbvg+wGVRijBdwINCq9AUJmF/pw47LNnCBUqk7h3bjAWMwuPMjd8W0I7zMgZytA1Ezwp+cFo
qGR3zaliJI1flCuPMqXkCc7lrQxICsm6pwnYuuE0Yb3xTShcefFIL71Qyi5qGKF1CPFWGqFFEkJt
Id5AoFDDCMc9iW6MtOqJCbTSileg0otZaM+ZwzZ7D0LRzCAhasyAoKqlv40RggrPdQKqx984QfVB
t2BNbyBSOAGV7xkqj3RmiUCHQiswVGKhPWcO2+w9CBUqk7i3EVpU6VmtVZgop1SeypEX4vrQzHw0
TtaMsngR5isJirqz0kNMScM+XQjwYZnvx0gTuQveyLLFlVguipYLzED+FYWOCwoxTwsKdE9SHSNV
7INAVcpYoSttsNCfE4d99gyhKG2QGEpzEWpw0j7HSGcUBfwSh306FOOLjJEuIgeLOseFFJtjEVK6
H0hppPHKBBoSWoCAMgP9MfHXJ88AKlCiIHCWqJkmnDzS2UzotbTEiUDuJ5wxL0noPKKX08Im+J5x
8khnlQh0IH0BwskMtMfMX5u8B6Dh7BQEzqzsYqRjjhHCibpRlC4uRSfbn8II0q8odlxyaJ6lpOie
gfJI55UIdCS0AiMlFtpz5rDN3oNQkTKJe8cb59H67He0v6v9TEQPlnuoCDq6nukUbuSleOFpiyUh
J0qLHvGmxxJvre1pL0GnHFZ8VPA/qa8x0iSLYte2Kq5J3gNEEwXpxodg6uYQv+FyEwxRoHsS3hip
0h0EquzHCl03g4X2nDlss/cgFN0MEkM3PqawqDhBpZHOaIx2sSNi+uhj67sYaix9mhNvmNwCHlGg
e4bKI51ZItCh0AoElVnoz4nDPnuGUKEyCQE1IdK6CSqPdEYTInUUUBPqLz1BTaVZE3pH6STLoXHP
UHmkMcsEGhRegaAyC/05cdhnzxAqVCZxb4/zsLSc97Yg/ijyt/Ctd2fnFh4VtDlI8Nrr5H13KJu1
Hbs/26tNCAmxRop/jDThhQChim27EIJashQ/+iS/GCfegFi8ExTonuQzRqoAB4Eq3rFCF/9goT8n
DvvsGcLFpsjwm/9PaC82g8SwLBBJS5ig8khnNHq/ZAE1OtWqJYaKMnAJAmpEPhU9/LhnqDzSmGUC
DQqvQFCZhf6cOOyzZwgVKpMQUBNqcyXD5RjpjCbrZbMTks6y1QEnSbkWmwhq1ouVwqL7AZVGGrNM
oEHhFQgqs9CfE4d99gyhQmUS944XAV2K8fnmDF02g41Hke9uKuZFRJFN7IgdvU2ob1RyLpcmVZDj
6NKOXFC+1SMXg1K8HrPE+bq8MB25pHbkkuuJi0G/2U5coKV+4lI2tHP2eisuQs6Q9PZDOQFCrWNK
NG7nQLrsYkFzuZ0D6du28sEK0kBC2bG2le8yUredxKqtjWH3tqEPZeEqTJu0ShnCbO8YG0iayrRA
jG5exdJzjTc6lRidd7tfn5071OVG+93bz6WnU+jpdA3t/Y0PfU2FWkm8QRR931DAkgnN4A9ID9bC
OUHvebu24LAdK4SsAr2tbUjEofXMoVNoAK/e9JnxpokX41JObPTqy3KYECelW71nrdFhsh9Uwqra
D0peTzYzX+OFNftx5egObwayH0v2U+zF4yGMxWuD/gK1LXrH4pfFPWEDzTuP2wvcUCOiObjrlLYR
QlLelo1wZ0Ozl6+Lr0TYi6NGO0Bxr85QcEEanLRtokQdMiREfTvMu9fGORg6DKqjdDCEbrYTtkqz
P9bhq+r1yiQvEj8yiKsugwul4NlSHMah2lGe5aF0KqVMFwi8zXT5RUgqQFTORF/Ko6iWhKKq/6nv
q9MFmOuWgy5UkRm7w/12CLDvoxnPWxVBayGfvq2RUICaSRKtAYEL0jRwSeoo1D6XYYc14HbPYOve
om8O6yReNxLGJNuVp3XRXZul4+55m4WS2iBSFj3n5PgAyLVAWQzTTTJAgexg12r76BKoL+rxHTTk
+klevXw3Ln8cl4/H5S+ryrXyui8yC9qXPf/Ai/ym7ly67M1kIIdaRtQvbecDa1mhnwLVn7VcNHe9
qvA34/LZvRSOtk5ld6rCkWrqhqxUeMo/WeMgi0rnZ42f7tcfx+XLcXl1zFAuz1AYKiTXG55/nC9v
MSSNkKyyPtmQkBAXnR7ckJCmkv6iE8TT1dDxZNUiXt2uW1dOBZ0/WbcmpnJ0+NC6haWl/EUHiZer
Hvp4NQYINb9Y9fEPq9O+lzZDQWLdpp4diQy6NFv5ZOtREM7DBwbUFPmLjgsPahrrJvf8doNIboml
DTrRIBBNVOnaH7bILDFKgeoXbBFCn6K4eLdqEY9nM3j4VsJ4q/8LlSXIluPvL1nNz1erABHHPx7T
+OfbNR7ckn0ytF6Dp3LI8gNT2pfQkNgq11C/gbxXjFNEo08/kdVqnPFYtbq3F2Q0uiX9wHtBpn5q
3DPSX8C1Kh9+whC6dWioX+wLlY0274r8entQNiDpjCdr/oijbBfxu2b3XpjdJ6GMw80lKEx6grDo
uqkL7nSerLibacjxFo1XPqLtJqui9kFYerX/vov8pJi3U8An3y0FqlZa8fFv2QS766ZV0ouGTMem
VSoF5C2bVjpHpKiTE82e9+1FIBAte89VzxdDdZMW+fLHcfnVuBTTrlcpvBmXz8bl41q/GefkCmLW
ekXw/aqLfThS63l0c3Wj9aeHAHuflvircXnvvROqdtej5LV8dY0bscJDSjYFuAVHrHIMEMuJRP/S
vyarSTqmVN0qQDjV+5wWL8rkdF4mIQoFR1Gi6qhHCR/58wxDH2Q47ygmIfv4+qWihf+5IJbYz4/e
OicntWgCF40jTlmJoOU8hxhZjeTcRr8kONA52onslGlyoNPtsGfRenG5fniPYiLEGKc0LaJeDzLW
mnxTZDkMD96Gsut9colyJECUKKr16RHi8bj8uO/V9fLqWIS45Aix/vyEbSCE2MjbifI8ovxmJZWP
Y+lnD1Z5I4ucN9PLZUHndC3LqnWoKb9crueXJ42cnw9LxPFHEwWiC1mdA0P1sEXllEVO+rG5SPn+
avdDeY48lA6Kr5adLocBf7ebA9BwTMhXBT+hlK4xfXH55MxW/8zTMsJ7hCNW//ZLE1U579S1SKwc
xb1F5lOjXpRG6XU3vz1VxForo+OexxzG8WSWYPV94vi9jyy+O+OZNWz4ECD61MKGLa1/2xw7iHSk
kapJYPs01ThsS6vHcavoUQ7r8mO5ztjr4U5PxuWrGzL2muudtrF7q9AyPBGm/bCl+uuxvEidr46V
6p9WsdwBN+Xpu8OGY8MneCPz8Fi0whbalu4wXIBz2+VIkkdSBurm8vnIA5eUCmEJVPczxmnF4T2T
B2WMy1tWOPUMwYGotivqoTSh7B3SxA1qlRVAi7aoWfBf/zVlUi5MaUXGhQvOCyNDUNRHV/+UqhAn
no85wr0+rdsZ29Z6I5+CjKOiDxZiFt4nouvnY953p/hyJJJ4dWvGDwJf06RDmkormix5mRUZxKx/
i4JVpMF1T73dFcsXVtY8dPGWHLJQ98Snq54ogr7wk3byQp9gHJ68pEUBNUm31+21PT6SfXResjdx
JfushwQxKuLAdApwUwNz21avRj8+LPezKKr6Z9xe3Yn/dUN/t8rTehnxdBXKx7tDKbvWzI/ov97s
l0nRe2f3A4UveWJvI8/WqjCUaFRMXivRalFTlKXzyI2Sd1NoK90ejGI0e7LCYaLiaz0q/7wRder1
cK29OdXH7tog+Ywi2dxjD/d2H/MwiUK2OtnLVXsV2ez5uPy0avEiYX6/6gcfbvfNGw3i8DOtWkT2
H9wjM01Z4HpkK8ooOczbFKsvU90/W4Kk/HSUb1KzIj1edCOIds4Zw0uHFfdOJCF/SjZqa4MuPumb
2jPO3XmlvXfOjP/nQFP3h5MNpPwsPZffKksDWW8x1g+31mPb2/ndERs6s6fzGRNkvWfIsmOszcst
McgYtLaR61cqO+Lo5lJe3w86rG/FN7u1jxS17MH5R445ylGp3l+1lZPSc3d8ENGECQoPeTshPq+q
tPvtWt/N0rEqImVYm5GeesPmzkXbaFARzfMNr/DeAUVJHa1b3732zIYjNpSbqk3pOMIZ5qVbYx7c
TdqRB0AspX5AEXPKRxqNoBZvT/8S70ijERbl7V0jrwisoui5Xr0UL6yXTc9uD8LZIoVqc6coLArN
O0bh9eMKmcQP4uPeu1KzsolY3QGThvK2D2ez3kgIhg+ydn3hhuhfWau/RRcLrweSo57bHB9h5H8T
cmiPTZQmPbOsbjwLrsV22ZOzYkcOnXNxFzVtB1VGxLtt9eB9OvTFORl8u/kPN40762VuZHN0cmVh
bQplbmRvYmoKMjI5IDAgb2JqCjQxMDYKZW5kb2JqCjIzNCAwIG9iago8PC9MZW5ndGggMjM1IDAg
Ui9GaWx0ZXIgL0ZsYXRlRGVjb2RlPj4Kc3RyZWFtCnic3VxLjxy3Eb7Pb8hhjrsGRPP9yM15OQmC
II4F5BAEgrzWykpWki3JcpJfn+KjHuzlzu7OjG0g2MN2V39NVvH7yCKb3fPdXiuz1/Vv/L96vfv0
r2n/8v3O7F/uqiXZkFW0++C9UyXs373YXe++g0vBuLx/XQ/gyv5mB8A4H1fAze6b3d/2b3bf7Zut
lvjEGbtvt4Ven9Fx/5u3uy/gL6mSvLX7H3Zahf3nO+u9yiXvg/VJ5Qj1sSU6FezeOqtMKXCeooI7
rYkquEDnVzurNdyayGJyViZZKoHPex1XO7ZA4VAkFWAKeMU1tFOogFzo18nDfvcmhCtoES4Cw/py
56xXzgoTGbqbzhjgwXCgJQAfSQaatbLFMSImFYrnpqJz9IQt3VUqoAdCNYxA2YVmIAfbzRv/W5hU
AIdZeX0JAjJNdvvx7+r1/ldPmxTSvqgSU877p9e7Lkqzh+bKFtQUnFfewqXXu79f/OESVOt1zBdv
Lp9o5bLNwV58aMcm2mgv3tVjnaD1i7l4e/nEFpWcSRdfd7zTOlx8L46voETrNMSDxYQS4sUrMPtk
Uy0DqizJxER1xlL+8fSPu98+BfUa73XtIxwvW4bWwHtlWZ3GGwsMCBKNK1EVywiXff1PJdA5qZUs
jQcuoJHENQwS2YVxHT3sd29CqDRyEUzjYwl0EYgrM4F/uQRPcnAJ2tUok1MRTY3tq3OayHhRj1PS
tqTOr/HZZHPxvnJXUsiJ6LA+eJXMNHigZfQI763Sok95G5Xzsk95o1XMjHAFxig5/OA59SmyjO6P
BYzBAWvAwYNcGNfRw3H3HELrVVQE02FrwxonQyXLcBQqUF4MDkEHaMcp1FLTALdFSkoMHnhKcaJh
ODpu7lFQ4Rgl1T6uo3P95o33LUoqQkQZDfgyRUkWHOLqWC2jzAGGchlliNUDBgQYW0QrjVOKEg3D
0XHziAILxyip9n6dnOs3b7zvUWIRMspi51GELRhlHaijGOijn0cRG31WUyqADmhlO+E5pwK0DGex
gBEK1kChogvjOno47p5DaKFSESLUlKxyUYZKluFoCkVFEWqq05Ap1ASjiBOhJhNUFKHSOYVKlu4s
FdBDoRowVHJhXEcPx91zCC1UKkKEmoNRaZrJkGU4ml1RWgw1kPKUN/spwSeVhHgTJFgtdEHnHCpa
MMGPAnooVAOGSi6M6+jhuHsOoYVKRRydG6yDO6uPMjd8UYd2kJG3mKFbJnhe84M1QMnFDaUKThq/
qEcBpik1T1Au79OArCFZjzQBWreUJlywoTcKzbzIMqZeMJVVmkXoPAzxTorQQRKCuYVAwEChWYR8
jk3Hlj57ogL61IpqwKkXudCvk4f97k0IlRkuQswxIwyqRvY3tmCo0HO9CDXA/zSFGqLpgzUiYKTw
IlQ6p1DJMpzFAkYoWAOFii706+Rhv3sTQguVijhahA5m6UWvZpgwndJlmo58I45vyywk6+WcUU5e
hHxlgWLe2cqDMSWzPn2M0IdlvmdLb3Ifg5XTFl/HcjFpuYI7IP+KiY6PGsY8I0rAc2xVtrRm5wIa
KVzDII1dGNfRw3H3HEIljYtg0nwCGrzUJ1uGozCBV4n16WEyruQY6RPkYDHP8TGn3rEwUjznSNHS
faUCeiRYAQZKDozL6N+4eQ6gBYoliDjrqJmnOMky3Myw1jIyThjIwxRnKioLzhOs5YzQBJ1TnGQZ
rmIBI5BRAcZJDvTL5F+/eRNAj3OUIOIs2ikrOyZbME6YN4qpi8/Jy+VPdQTSr5js+Oxh8SxbCs8p
ULIMX7GAEQnWQJGiC/06edjv3oTQIqUijh5vfIClz3ZF++u2nkmwBitjqIgm+ZHpNJzIQwH4qo8l
sWRMiwHGmzGWBOfcSHsZOKVhJSQN/U/yxZbesjDZdX0W11s+QBC9KZCbEKNtD4cI4UtvGCwBz7Hx
2NJalwtobc81DG7YhX6dPOx3b0Ko3HARzE1IOSqdplDRMhxNySnHI2ZIIfV1F4Wa6jrNC4QtfcDD
EvCcQiXLcBYLGKFgDRgquTCuo4fj7jmEFioVIULNMNL6KVSyDEczjNRJhJph/mWmUHNdrAneYeok
p0N8TqGSpTtLBfRQqAYMlVwY19HDcfccQguViji6xwVQWimbRxC/F/lb9K1vL5846FHR2FsJ3gST
QxgdyhXj+OnP/vNdjBnGGtn8bOmNFyM0qnhsF2PUqsjmh3VSUNYLBDRL8KIEPMf2YUtrQC6gNS/X
MJqfXRjX0cNx9xxCbX4ugpu/PiCGgrKKU7hkGc6mEFQR4Sav+7SCwoX5kooi3ASJRyx2+ZzCJUt3
mAro4VANGC65MK6jh+PuOYSr3fX/Z1jAIhXBLMYMc3Mth0u2DEezC3KxE7MpcqkDnmTt+9iEoRaj
nGwsPOdQ0dKdpQJ6KFQDhkoujOvo4bh7DqGFSkUcPV5EWKXYUO7O0PVhsA0wyfd3TebFiCIXsTx2
jGVCQ7TifKmLVFEcjS59ywWmb23LxcJUvG2zpPm4AqYtl9y3XErbcbGw3uw7LsDS2HGpD7RLCWYv
DmIp0NL7d3UHCOY6to7GfR/I1KdYwFzp+0Dm0KN8cAXSQIZpx+pRvi+Qut3UrMa5FC/e9uhjrbg1
pstG5wKN2THWRWxNbftADKt5neqaixGjlJR88Be/vHziYV5uTbh4+7Gu6TSs6Uwb2gfi3ahTw1xJ
ILDEMB4oQJUZFoM/QHpwDjonlHfdjx14eN0KgbaL+NAiFh2Rzn48AnIxw8Kw1gPidViPLSGR57Ci
yjDJa4GG7C02gNewepQ33FFO97fd2drIWRMnNcG8WDc1wQQ4oILmYwCs1OTrRh4gI6rJif27OPbv
6u6dKb4+WYNVUYQLdTKiIQu7QJab+mTMlLbShCWmq0/SXrOlTplKbijng6lP4RhFFoHShwQJKXG1
8odJFIxcdRENE9PYBfkld8bf0SE/MarjVUrSF7QIXx7rR7GwItj4sajcG6iqOFE5WY6vHDirOzFz
5X+mAY4r9zrUB4SicrScUDnMBmHxMlf+2aLypNu8RlSOlhMqz1B5Dgv6+9D+2W0Ggoah0En6ySL8
IPFHSEVtq5zEPyyT+H1p2x1C/NG0pHdETH1DGtauwcESPvSY3rGkX/Dhaz4UCejjEvuMD5/z4c3y
8NklZE9Y3CWYS69qeCWzHR1+WNYrPH+/6Iw4DFAL8lDBLUgdlFHUiRlFPYlQ3NsECiXPKOoWAoXa
ZBTpl1GkHEKxuhhFWvIwb4LkK7Q0LJOWILsok6WWIJmqbE7SEswdvR7942rJqWD6P0vVfMKHn/Lh
1VJA03QItbQW4ycHREFNwTLhpiAJMIpkwiiSAKFYJgKFEmAUyUSgUAKMIpkwiiRAKJYJo0gUMG+B
abDQRDdMkrBA35RaXawPh05ShE0wBconKeL9ckR4uRwcBPlfkyLW198/bMTARhFqoUYhJRCIxUIg
EgKChFYYhDogEEuFQSgDArFSCEQqQJAQCoFIFrY+XzdSF8MyCcPUfSUjlVH5je4kZRgPObV0ZXy1
7N7PlxT/6wBZ5CjTx44SOYwi/hhF7BCKCRQopIdRxKBAIT+MIgoZRQQRijlkFFEGy466JygoGxZJ
mSs5wIpUUmZ02+U9hTJt655cY+zVsiM9W3ZVQd439yVvcdsHqQTsy2ulvLhbE9wSrBJuCVSAQJFK
GIUKYBSrRKCGAgSKVCJQQwECRSphFCqAUawSRqEmAGWU90ITaJk0kWEVk73QhCv19Zx4iiZgTQte
mVuiOJ3ztZauDzBN8TH3HB8xzSjinlHENKGYe4FCphlF3AsUMs0o4p5RxDShmHtGEdOwAINFmGR6
WCamk6trE8l09kXldBLTqSaGh3b/eyds4rbvl6o41KcpPuae4yNeGUXcM4p4JRRzL1DIK6OIe4FC
XhlF3DOKeCUUc88oYjrZiKjB9LBMTEcYk6OctAHKKnvUMpeYjlVR/oFMXy+JfLOUwoelFN4dYJri
Y+45PuKVUcQ9o4hXQjH3AoW8Moq4FyjklVHEPaOIV0Ix94wipgMwF+WTL7RMTPsU6vNvwXSA+0/r
0tCkuoQfl+hXS855vfZseV3k+X8u88eystv6oVYjC7caiYVBaGEQaYVAZBEglAqD0CJAqBQGoYVB
JBQCkYVBpByfDIKGcoZlUg4Yax4RyvEx1d2QU6Tj6vuQ8fHZ4N6nQs+XInjgZI9CZQFwqMQuo0gB
jCJ6CcUSECjkl1GkAYFCghlFImAUMUwoVgGjiHTnnfLyWSFaJtLrNliWz3ecc3Vj7BTObVABWuvA
XO/rZV/9932ieLss7L3s4jhcrBeFh4YAaglWCbUECYBBJBICEf8EYo0wCOlnEEmEQcg+g0ghBCLy
CcQCIRCpwZqgsnzah5ZJDbrY+sLLa6kPU3frT5GDsSqbsYIXA754ivPtUg7PHsYb+SyYJJ+JJkYx
lYQinggluGQUEsUoJpNRyBSjmE1CEVWEEnQSitjTubEh2BsWyZ4tsY78gjyd23dUp5CnNawix4O5
6/uG5/f38Sg2Az5dsSsn9t/f86j2492aoJZgkXBLoAAYRBphEPJPIJaIAA36GUQKEaDBPoNIIAxC
8gnE+mAQqgFAWiX5lBYtN+1dmvpZnK477gF6nvGmf4AB/Bqrc91SsjoqbewD9t3vev1JBQtDh011
v6Dc/gJrmtTN32DFUui7uhDL7Zeei9N1r+z95RMHK9akLX2alYobcOND3W5qpbig07zfBGZvXLH4
ir8VL/iLN6y0Kr69mwAHWjvocrLJfG7LZWwyU9/SLKPJjtgZpiaDmIq1P8822mq8rZ/LWZt0OeM2
mpCgqS8KV8mdWYImA08mzBK8/aGHc8YsVPDIzzxIieJ9nGlnApQfXfGQ0kh79wkNG6a+g1E7OAnN
wogVjhcaNYwU2pE7Ko+beUkZ1BQWNawY/7R7+snR9X9c3rZeA6xXkjftY9Dgw2Y10Pyz5kT/rlau
cvj2xOLXw8P10rrGvqHwr1bXz9cSR++9LVx9yN7befS1XnqsR7w7FxHnacDHjN53ub1owPVAPrfl
CV6f832M8/WbozOhiADb8vhM2HVxqkSXQ8y9I8OhTGxMfV/Wz5kY5qynZmJjoRwff/pMzGWtX3u9
44cAXq5b60Cqbh+DOM7UxjqlT8/URtdfCDG3MvVdL7CsqD9f0l4q9khXjs7f2PvufJp3Hv/uyd9n
bImjU/liHDoilR/p9fny4znb8uhUiW35iACWY/oZW/joBIqxrPLnz9TWm0Vl9+8si8qzN/v5smpN
QfU5wbnXt67+uIK28/q2f9oQy/jtIKO9m1La18ukd+Dnh7Kp35fLIqYfRWjZNnh3RwY9+O16CsWm
cM5v1+/IzsRAXfEGQwzUR3HOHZ+eiQG5kD7+BbRN1/xJ3ouqT3Z89I/dKtt0t5/nbR3Rx7xNpT7d
PHcf884pm9Oqj53xu+k+ZYXShLqF/j+Ip5iiE4ml89tLW8DcBnv+aFR87fXfZs7RAOSOkh/+bdgd
vYw4MNBohSgI1gPaHN3JiALZyZow+hcT277RrdsE0K3bl4a6dfvSULcuBL/pm4fq377hgB/uzfml
W7evsnTrIm1vOtyPUP+rZVu9Yev0igUMHqn+CN5XfH37hsUtNj6QdbGafwytz9m6nXd063ZIu4V9
MbmyHVJCcHWP+vw7I/WnGJKbh5Tzfhi+3rbAeM7bPSmcO7rndkd/27n6suGWuK7uE+J2R99766Qm
tlPJjeSoJ/PFW7vNt1wVQjz4gO96KcKbpfMvluF/PNRLhMvTXug9Li82Q7/Y/Q83y1diZW5kc3Ry
ZWFtCmVuZG9iagoyMzUgMCBvYmoKNDM1MgplbmRvYmoKMjQwIDAgb2JqCjw8L0xlbmd0aCAyNDEg
MCBSL0ZpbHRlciAvRmxhdGVEZWNvZGU+PgpzdHJlYW0KeJzdWruSHbcRzecbHEx4N1gY70fqR9F2
ZFqscuByIF1rKZXvil5KKpf/3g30c2ZJ1XJDFYMd9ADd5zQa3Y25fNq9C7uf/+jv9XH77d/a/v7H
LezvtylpsXRX415yTm6U/eO328P2BK9KSH1/nA/wZr9tMLEen+eE2/bd9vf9h+1pX7Kp8T6FuK9l
Be0FX/c/fNjewr/mRssx7v/dvCv7my3m7Proe4m5uV7BnkpqciXuMUUXxoBxqw5WxlBdSUXG1y16
D0ubSELvLrQoGnSMNq6bSkA5qBQFYQAqtbCGYEAg4HtBiKtPFK7gEVXBtL7aUswuRSMSAcJMIcA+
BCU6CuxHs0S7d3EknVGbKyOrq2TMSFSCUEUBEhELRFQhLIEAXItP+BdNUaA0576+hwAKK+x2+nN9
3H/3boVC24cbtfW+v3vYMCjDDu7qEaKppOxyhFeP2z8uf76DqM2+9ssPd/fepR57iZef1nOoscbL
x/nsG3h/hMuHu/s4XEuhXf6F85P35fKzeb6Cxpg88GE1ZZR6+R7EucU2dYDJ0UJtYrOO8c93f9n+
+A6iN+Ts5xlRviqhWAP0Lmp0hhwi7IDZxJBGdSPqjNTz/CsaZCzRKpK1D6pgbZJaoE1UCPSeEeLq
E4W5japCt/FLNzBV2Lhx3MC/3gGSXlIDvwYXehvG1exf39thM76dz635OBrub8g99HD5ce7daKU3
2Y6YS3YtHJIHS+hE5BydN2cqx+pStmcqB+9q1xlpQI6y6YfHcqZEQsefFVByYAucPAQCvWeEtPpI
YZ0qUaHbEadjQ7JURUJAwYDLJjkUX8CPB6pjlgH1RWvOJA8eCk8WEFBajCxEObMU6/SeweHiE/rF
UlQYljUAlgNLkXCKm7nasuwFUrllWepEoBMK5BbjJRoKSxYQUFpMLFg5sxTr+F7A4eITemTJKizL
EY9ZRCXMcibqahJ9zccsEmvu7lAK4ABG6yceaylgCYFlBUSFLQhVhkDvGSGtPlJYVEWFodpadKla
qiIhoK0MVw3VNtuQA9UGWSQZqi0UVw1VGQtVkSBYUYBUxAJTFQj0nhHS6iOFRVVUGKq9BNcOnYxI
CGhPw3mTaqDkuRz2Q4FvrpngbVBgvYkLGStVlnCBJwVIRSwwVYFA7xkhrT5SWFRFxatrQ0ywcmK0
teHtTO0QRjlyhV6V4OtZH2KALbncpFRo0fjNfCrQpsw6IbUc24DuoVhTmYBYj1ImUokFnSKdl0io
9YJW1nkNwpQhxScbhAmKEPQWZgYkCq9BqGN2nUqwexIF2FqJBW69BAK+F4S4+kRh7oyqMD1mhaQa
7HlTCVOFk5sN1QJ/24FqqQGTNc+ATJENVRkLVZEQWFZAVNiCUGUI+F4Q4uoThUVVVLw6CBN06cN/
qsOEdsqPQzvynXl+HmalxWx7Rtu8mPC1Ck3fufRBTukan7lWOMO23qsEXZ5ribZtyTOXm6blCiug
/ppGJ1cPOS8YDTxmr6pkuV0VrE1RC7RpCoHeM0JafaQwN01V6KblBtuQbXyqhIBCA++axmeGZtzZ
HJkb1GDT5+TaGx4sZspjZcoSxCoKkAkbYKICgF4zPlp8JLCIsgbDc2bNfuApEoLZ4a4VLE9I5OXA
sw3XzZ43uMsFExMyFp4iIaisgIiQAeYpAPC14MPFJwLIkzQYnsMnF+3BVAnzhL7RtC65t2yvPxMI
lF/T7OSe4fJsPcVjISoSwsoKiAlbEKYMAd8LQlx9orCYiopX55tc4OpzvtH+ft1nGtzBBqWKGlqm
SudhYB/NhG8wl9TRuSwWyDeUS0pKicpehz2VtFKah/Nn90sl6FlodhN2cej5AiTQFbw3pda4Pg7J
jDzQMayBx+w8lSzvqoLle7VAe6MQ8L0gxNUnCnNvVIXuTWm9Ot8OVFlCQFtLLmnGLK00vHcJ1Tbv
adnMiAMTHmvgsVAVCYFlBUSFLTBVgUDvGSGtPlJYVEWFodoh0+YDVZEQ0A6ZuhmqHfqvcKDa52XN
7Du0TrYd0rFQFQmCFQVIRSwwVYFA7xkhrT5SWFRFxatPXIFIG+P0CeJPpn6bs/Wfu/sEJ6qG+KzA
hxJ6KXSg0ghJv/7sb7ZaO+Qa636VoPNqBaeaz3a1Vu+GdT/ck4qL2cwAt5RsNPCY/aOS5UBVsNyr
Fsj9CoHeM0JafaQw3a8q1P2gpLt6oCoSAtpKccNQbdljSyFUoVdy1VBtUHTMRVfHQlUkCFYUIBWx
wFQFAr1nhLT6SGFRFRVKdX4Lrx2aWG/zikoIbE/F3gpqD8PeCQBN9xkPMdMdwSXrMB4rXZYgYFGA
dMQC0xUI9J4R0uojhev28OukBbsoKl6dLyrcUmIZn6/Q82NwLNDk58818yaj2Eus5g66JqwZS10e
85Jq1El2mR+exyhhNw91DPDI/vH9bJJgcd1TiNBrltVQsqR5+kgFTRCMI9RMWFQgycY+ZDzTwlhZ
myU32Ka0MjFLamswY4hOHaPVubEk8RAK6+cfwSGS+fNRg/tqavMTGlxr04w6SFkpRRbcfkGQU5rt
HEggURUIC5aI0nW1HvvJyIqLk5KXGGZPPReQneqhU45FlJ6NTMPPCKsAijjsppAp0PFA16AwcHx9
AdKTkdtqhw7gv8jRZBkkTJAkqhSxn4xc5Te/UPGo3c8HmLU04I9+MUf+0e9pVqSw3LXyT0HXrR1e
3yrDArHm4DPqr/N7FIQWw3rEEIYgM9A/L9E4mjehpnGkeiEtAd6zHayIRy0vtF3g8hjHJyVkq3po
U6piOdnB5PaMN0vq/Io06xwxaiXNu6xoofH1ZWhPdqbfzwy+0Odkf0qIJyNkvczgZMfEVA8UU30m
aQ4KCqpkgiqvI5kx6OePDGh4xONzThpST3CYcyf93u+ykNRno75N06NWidn5TDELGbFhZAV+PsZs
8nBHzX11TTNlBpHcfkEyTbiMezO/YUeRqF7wK1Srsx1sbY5aXmi7Yq3+lIRstdhcVL1nOzZmDW+R
jFnJdma0iklJooXH15ehPdm5yVltr/Q5258S5CkIRS8xONnRmJWQrWHXmKCYKueYmjnykWLH5yYx
ZZ7XnNsz/bnkXdfhf64IciS4FOvZVQncyteP99gkUCJ/lte5RdBaQR0CCbj8sz4dSxGTlmH+3GT7
AxY8bF7++4euh04yJdm52WBAbBWYPv9HAdTODPvx5vzWTu86vQcPbdthej9ND9DwlEjzoVU7qafX
dgEHyVd4DzzJ7cxS513tRveKz3alkNNgN3ocpx9LoPOaebF1QFCwK32H/WL3bdDH6TrAA5evUV56
jtRTovzfcL2FcuJHv/zvDmI6xHT58DMKU6uXhzUXmssaoS2N0F37Wub1Fyfk46qptgJOO4Esr+b4
p/kV3Q9oIuzjvFenPsJoB2hmxver1w7Zt3L5gHNSKaFIS/x2+z8BnTgIZW5kc3RyZWFtCmVuZG9i
agoyNDEgMCBvYmoKMjU3NAplbmRvYmoKNCAwIG9iago8PC9UeXBlL1BhZ2UvTWVkaWFCb3ggWzAg
MCA2MTIgNzkyXQovUm90YXRlIDAvUGFyZW50IDMgMCBSCi9SZXNvdXJjZXM8PC9Qcm9jU2V0Wy9Q
REYgL1RleHRdCi9FeHRHU3RhdGUgMTQgMCBSCi9Gb250IDE1IDAgUgo+PgovQ29udGVudHMgNSAw
IFIKPj4KZW5kb2JqCjE2IDAgb2JqCjw8L1R5cGUvUGFnZS9NZWRpYUJveCBbMCAwIDYxMiA3OTJd
Ci9Sb3RhdGUgMC9QYXJlbnQgMyAwIFIKL1Jlc291cmNlczw8L1Byb2NTZXRbL1BERiAvVGV4dF0K
L0V4dEdTdGF0ZSAyMSAwIFIKL0ZvbnQgMjIgMCBSCj4+Ci9Db250ZW50cyAxNyAwIFIKPj4KZW5k
b2JqCjIzIDAgb2JqCjw8L1R5cGUvUGFnZS9NZWRpYUJveCBbMCAwIDYxMiA3OTJdCi9Sb3RhdGUg
MC9QYXJlbnQgMyAwIFIKL1Jlc291cmNlczw8L1Byb2NTZXRbL1BERiAvVGV4dF0KL0V4dEdTdGF0
ZSAzMCAwIFIKL0ZvbnQgMzEgMCBSCj4+Ci9Db250ZW50cyAyNCAwIFIKPj4KZW5kb2JqCjMyIDAg
b2JqCjw8L1R5cGUvUGFnZS9NZWRpYUJveCBbMCAwIDYxMiA3OTJdCi9Sb3RhdGUgMC9QYXJlbnQg
MyAwIFIKL1Jlc291cmNlczw8L1Byb2NTZXRbL1BERiAvVGV4dF0KL0V4dEdTdGF0ZSAzNSAwIFIK
L0ZvbnQgMzYgMCBSCj4+Ci9Db250ZW50cyAzMyAwIFIKPj4KZW5kb2JqCjM3IDAgb2JqCjw8L1R5
cGUvUGFnZS9NZWRpYUJveCBbMCAwIDYxMiA3OTJdCi9Sb3RhdGUgMC9QYXJlbnQgMyAwIFIKL1Jl
c291cmNlczw8L1Byb2NTZXRbL1BERiAvVGV4dF0KL0V4dEdTdGF0ZSA0MCAwIFIKL0ZvbnQgNDEg
MCBSCj4+Ci9Db250ZW50cyAzOCAwIFIKPj4KZW5kb2JqCjQyIDAgb2JqCjw8L1R5cGUvUGFnZS9N
ZWRpYUJveCBbMCAwIDYxMiA3OTJdCi9Sb3RhdGUgMC9QYXJlbnQgMyAwIFIKL1Jlc291cmNlczw8
L1Byb2NTZXRbL1BERiAvVGV4dF0KL0V4dEdTdGF0ZSA0NSAwIFIKL0ZvbnQgNDYgMCBSCj4+Ci9D
b250ZW50cyA0MyAwIFIKPj4KZW5kb2JqCjQ3IDAgb2JqCjw8L1R5cGUvUGFnZS9NZWRpYUJveCBb
MCAwIDYxMiA3OTJdCi9Sb3RhdGUgMC9QYXJlbnQgMyAwIFIKL1Jlc291cmNlczw8L1Byb2NTZXRb
L1BERiAvVGV4dF0KL0V4dEdTdGF0ZSA1MCAwIFIKL0ZvbnQgNTEgMCBSCj4+Ci9Db250ZW50cyA0
OCAwIFIKPj4KZW5kb2JqCjUyIDAgb2JqCjw8L1R5cGUvUGFnZS9NZWRpYUJveCBbMCAwIDYxMiA3
OTJdCi9Sb3RhdGUgMC9QYXJlbnQgMyAwIFIKL1Jlc291cmNlczw8L1Byb2NTZXRbL1BERiAvVGV4
dF0KL0V4dEdTdGF0ZSA1NSAwIFIKL0ZvbnQgNTYgMCBSCj4+Ci9Db250ZW50cyA1MyAwIFIKPj4K
ZW5kb2JqCjU3IDAgb2JqCjw8L1R5cGUvUGFnZS9NZWRpYUJveCBbMCAwIDYxMiA3OTJdCi9Sb3Rh
dGUgMC9QYXJlbnQgMyAwIFIKL1Jlc291cmNlczw8L1Byb2NTZXRbL1BERiAvVGV4dF0KL0V4dEdT
dGF0ZSA2MiAwIFIKL0ZvbnQgNjMgMCBSCj4+Ci9Db250ZW50cyA1OCAwIFIKPj4KZW5kb2JqCjY0
IDAgb2JqCjw8L1R5cGUvUGFnZS9NZWRpYUJveCBbMCAwIDYxMiA3OTJdCi9Sb3RhdGUgMC9QYXJl
bnQgMyAwIFIKL1Jlc291cmNlczw8L1Byb2NTZXRbL1BERiAvVGV4dF0KL0V4dEdTdGF0ZSA3MSAw
IFIKL0ZvbnQgNzIgMCBSCj4+Ci9Db250ZW50cyA2NSAwIFIKPj4KZW5kb2JqCjczIDAgb2JqCjw8
L1R5cGUvUGFnZS9NZWRpYUJveCBbMCAwIDYxMiA3OTJdCi9Sb3RhdGUgMC9QYXJlbnQgMyAwIFIK
L1Jlc291cmNlczw8L1Byb2NTZXRbL1BERiAvVGV4dF0KL0V4dEdTdGF0ZSA3NiAwIFIKL0ZvbnQg
NzcgMCBSCj4+Ci9Db250ZW50cyA3NCAwIFIKPj4KZW5kb2JqCjc4IDAgb2JqCjw8L1R5cGUvUGFn
ZS9NZWRpYUJveCBbMCAwIDYxMiA3OTJdCi9Sb3RhdGUgMC9QYXJlbnQgMyAwIFIKL1Jlc291cmNl
czw8L1Byb2NTZXRbL1BERiAvVGV4dF0KL0V4dEdTdGF0ZSA4MSAwIFIKL0ZvbnQgODIgMCBSCj4+
Ci9Db250ZW50cyA3OSAwIFIKPj4KZW5kb2JqCjgzIDAgb2JqCjw8L1R5cGUvUGFnZS9NZWRpYUJv
eCBbMCAwIDYxMiA3OTJdCi9Sb3RhdGUgMC9QYXJlbnQgMyAwIFIKL1Jlc291cmNlczw8L1Byb2NT
ZXRbL1BERiAvVGV4dF0KL0V4dEdTdGF0ZSA4NiAwIFIKL0ZvbnQgODcgMCBSCj4+Ci9Db250ZW50
cyA4NCAwIFIKPj4KZW5kb2JqCjg4IDAgb2JqCjw8L1R5cGUvUGFnZS9NZWRpYUJveCBbMCAwIDYx
MiA3OTJdCi9Sb3RhdGUgMC9QYXJlbnQgMyAwIFIKL1Jlc291cmNlczw8L1Byb2NTZXRbL1BERiAv
VGV4dF0KL0V4dEdTdGF0ZSA5MSAwIFIKL0ZvbnQgOTIgMCBSCj4+Ci9Db250ZW50cyA4OSAwIFIK
Pj4KZW5kb2JqCjkzIDAgb2JqCjw8L1R5cGUvUGFnZS9NZWRpYUJveCBbMCAwIDYxMiA3OTJdCi9S
b3RhdGUgMC9QYXJlbnQgMyAwIFIKL1Jlc291cmNlczw8L1Byb2NTZXRbL1BERiAvVGV4dF0KL0V4
dEdTdGF0ZSA5NiAwIFIKL0ZvbnQgOTcgMCBSCj4+Ci9Db250ZW50cyA5NCAwIFIKPj4KZW5kb2Jq
Cjk4IDAgb2JqCjw8L1R5cGUvUGFnZS9NZWRpYUJveCBbMCAwIDYxMiA3OTJdCi9Sb3RhdGUgMC9Q
YXJlbnQgMyAwIFIKL1Jlc291cmNlczw8L1Byb2NTZXRbL1BERiAvVGV4dF0KL0V4dEdTdGF0ZSAx
MDEgMCBSCi9Gb250IDEwMiAwIFIKPj4KL0NvbnRlbnRzIDk5IDAgUgo+PgplbmRvYmoKMTAzIDAg
b2JqCjw8L1R5cGUvUGFnZS9NZWRpYUJveCBbMCAwIDcyNS42NyA1NDQuMjVdCi9Sb3RhdGUgMC9Q
YXJlbnQgMyAwIFIKL1Jlc291cmNlczw8L1Byb2NTZXRbL1BERiAvSW1hZ2VDIC9UZXh0XQovRXh0
R1N0YXRlIDExNiAwIFIKL1hPYmplY3QgMTE3IDAgUgovRm9udCAxMTggMCBSCj4+Ci9Db250ZW50
cyAxMDQgMCBSCj4+CmVuZG9iagoxMTkgMCBvYmoKPDwvVHlwZS9QYWdlL01lZGlhQm94IFswIDAg
NzI1LjY3IDU0NC4yNV0KL1JvdGF0ZSAwL1BhcmVudCAzIDAgUgovUmVzb3VyY2VzPDwvUHJvY1Nl
dFsvUERGIC9JbWFnZUMgL1RleHRdCi9FeHRHU3RhdGUgMTI2IDAgUgovWE9iamVjdCAxMjcgMCBS
Ci9Gb250IDEyOCAwIFIKPj4KL0NvbnRlbnRzIDEyMCAwIFIKPj4KZW5kb2JqCjEyOSAwIG9iago8
PC9UeXBlL1BhZ2UvTWVkaWFCb3ggWzAgMCA3MjUuNjcgNTQ0LjI1XQovUm90YXRlIDAvUGFyZW50
IDMgMCBSCi9SZXNvdXJjZXM8PC9Qcm9jU2V0Wy9QREYgL0ltYWdlQyAvVGV4dF0KL0V4dEdTdGF0
ZSAxMzIgMCBSCi9YT2JqZWN0IDEzMyAwIFIKL0ZvbnQgMTM0IDAgUgo+PgovQ29udGVudHMgMTMw
IDAgUgo+PgplbmRvYmoKMTM1IDAgb2JqCjw8L1R5cGUvUGFnZS9NZWRpYUJveCBbMCAwIDcyNS42
NyA1NDQuMjVdCi9Sb3RhdGUgMC9QYXJlbnQgMyAwIFIKL1Jlc291cmNlczw8L1Byb2NTZXRbL1BE
RiAvSW1hZ2VDIC9UZXh0XQovRXh0R1N0YXRlIDEzOCAwIFIKL1hPYmplY3QgMTM5IDAgUgovRm9u
dCAxNDAgMCBSCj4+Ci9Db250ZW50cyAxMzYgMCBSCj4+CmVuZG9iagoxNDEgMCBvYmoKPDwvVHlw
ZS9QYWdlL01lZGlhQm94IFswIDAgNzI1LjY3IDU0NC4yNV0KL1JvdGF0ZSAwL1BhcmVudCAzIDAg
UgovUmVzb3VyY2VzPDwvUHJvY1NldFsvUERGIC9JbWFnZUMgL1RleHRdCi9FeHRHU3RhdGUgMTQ0
IDAgUgovWE9iamVjdCAxNDUgMCBSCi9Gb250IDE0NiAwIFIKPj4KL0NvbnRlbnRzIDE0MiAwIFIK
Pj4KZW5kb2JqCjE0NyAwIG9iago8PC9UeXBlL1BhZ2UvTWVkaWFCb3ggWzAgMCA3MjUuNjcgNTQ0
LjI1XQovUm90YXRlIDAvUGFyZW50IDMgMCBSCi9SZXNvdXJjZXM8PC9Qcm9jU2V0Wy9QREYgL0lt
YWdlQyAvVGV4dF0KL0V4dEdTdGF0ZSAxNTAgMCBSCi9YT2JqZWN0IDE1MSAwIFIKL0ZvbnQgMTUy
IDAgUgo+PgovQ29udGVudHMgMTQ4IDAgUgo+PgplbmRvYmoKMTUzIDAgb2JqCjw8L1R5cGUvUGFn
ZS9NZWRpYUJveCBbMCAwIDcyNS42NyA1NDQuMjVdCi9Sb3RhdGUgMC9QYXJlbnQgMyAwIFIKL1Jl
c291cmNlczw8L1Byb2NTZXRbL1BERiAvSW1hZ2VDIC9UZXh0XQovRXh0R1N0YXRlIDE1NiAwIFIK
L1hPYmplY3QgMTU3IDAgUgovRm9udCAxNTggMCBSCj4+Ci9Db250ZW50cyAxNTQgMCBSCj4+CmVu
ZG9iagoxNTkgMCBvYmoKPDwvVHlwZS9QYWdlL01lZGlhQm94IFswIDAgNzI1LjY3IDU0NC4yNV0K
L1JvdGF0ZSAwL1BhcmVudCAzIDAgUgovUmVzb3VyY2VzPDwvUHJvY1NldFsvUERGIC9JbWFnZUMg
L1RleHRdCi9FeHRHU3RhdGUgMTYyIDAgUgovWE9iamVjdCAxNjMgMCBSCi9Gb250IDE2NCAwIFIK
Pj4KL0NvbnRlbnRzIDE2MCAwIFIKPj4KZW5kb2JqCjE2NSAwIG9iago8PC9UeXBlL1BhZ2UvTWVk
aWFCb3ggWzAgMCA3MjUuNjcgNTQ0LjI1XQovUm90YXRlIDAvUGFyZW50IDMgMCBSCi9SZXNvdXJj
ZXM8PC9Qcm9jU2V0Wy9QREYgL0ltYWdlQyAvVGV4dF0KL0V4dEdTdGF0ZSAxNjggMCBSCi9YT2Jq
ZWN0IDE2OSAwIFIKL0ZvbnQgMTcwIDAgUgo+PgovQ29udGVudHMgMTY2IDAgUgo+PgplbmRvYmoK
MTcxIDAgb2JqCjw8L1R5cGUvUGFnZS9NZWRpYUJveCBbMCAwIDcyNS42NyA1NDQuMjVdCi9Sb3Rh
dGUgMC9QYXJlbnQgMyAwIFIKL1Jlc291cmNlczw8L1Byb2NTZXRbL1BERiAvSW1hZ2VDIC9UZXh0
XQovRXh0R1N0YXRlIDE3NCAwIFIKL1hPYmplY3QgMTc1IDAgUgovRm9udCAxNzYgMCBSCj4+Ci9D
b250ZW50cyAxNzIgMCBSCj4+CmVuZG9iagoxNzcgMCBvYmoKPDwvVHlwZS9QYWdlL01lZGlhQm94
IFswIDAgNzI1LjY3IDU0NC4yNV0KL1JvdGF0ZSAwL1BhcmVudCAzIDAgUgovUmVzb3VyY2VzPDwv
UHJvY1NldFsvUERGIC9JbWFnZUMgL1RleHRdCi9FeHRHU3RhdGUgMTgwIDAgUgovWE9iamVjdCAx
ODEgMCBSCi9Gb250IDE4MiAwIFIKPj4KL0NvbnRlbnRzIDE3OCAwIFIKPj4KZW5kb2JqCjE4MyAw
IG9iago8PC9UeXBlL1BhZ2UvTWVkaWFCb3ggWzAgMCA3MjUuNjcgNTQ0LjI1XQovUm90YXRlIDAv
UGFyZW50IDMgMCBSCi9SZXNvdXJjZXM8PC9Qcm9jU2V0Wy9QREYgL0ltYWdlQyAvVGV4dF0KL0V4
dEdTdGF0ZSAxODYgMCBSCi9YT2JqZWN0IDE4NyAwIFIKL0ZvbnQgMTg4IDAgUgo+PgovQ29udGVu
dHMgMTg0IDAgUgo+PgplbmRvYmoKMTg5IDAgb2JqCjw8L1R5cGUvUGFnZS9NZWRpYUJveCBbMCAw
IDcyNS42NyA1NDQuMjVdCi9Sb3RhdGUgMC9QYXJlbnQgMyAwIFIKL1Jlc291cmNlczw8L1Byb2NT
ZXRbL1BERiAvSW1hZ2VDIC9UZXh0XQovRXh0R1N0YXRlIDE5NCAwIFIKL1hPYmplY3QgMTk1IDAg
UgovRm9udCAxOTYgMCBSCj4+Ci9Db250ZW50cyAxOTAgMCBSCj4+CmVuZG9iagoxOTcgMCBvYmoK
PDwvVHlwZS9QYWdlL01lZGlhQm94IFswIDAgNzI1LjY3IDU0NC4yNV0KL1JvdGF0ZSAwL1BhcmVu
dCAzIDAgUgovUmVzb3VyY2VzPDwvUHJvY1NldFsvUERGIC9JbWFnZUMgL1RleHRdCi9FeHRHU3Rh
dGUgMjAwIDAgUgovWE9iamVjdCAyMDEgMCBSCi9Gb250IDIwMiAwIFIKPj4KL0NvbnRlbnRzIDE5
OCAwIFIKPj4KZW5kb2JqCjIwMyAwIG9iago8PC9UeXBlL1BhZ2UvTWVkaWFCb3ggWzAgMCA3MjUu
NjcgNTQ0LjI1XQovUm90YXRlIDAvUGFyZW50IDMgMCBSCi9SZXNvdXJjZXM8PC9Qcm9jU2V0Wy9Q
REYgL0ltYWdlQyAvVGV4dF0KL0V4dEdTdGF0ZSAyMDYgMCBSCi9YT2JqZWN0IDIwNyAwIFIKL0Zv
bnQgMjA4IDAgUgo+PgovQ29udGVudHMgMjA0IDAgUgo+PgplbmRvYmoKMjA5IDAgb2JqCjw8L1R5
cGUvUGFnZS9NZWRpYUJveCBbMCAwIDcyNS42NyA1NDQuMjVdCi9Sb3RhdGUgMC9QYXJlbnQgMyAw
IFIKL1Jlc291cmNlczw8L1Byb2NTZXRbL1BERiAvSW1hZ2VDIC9UZXh0XQovRXh0R1N0YXRlIDIx
MiAwIFIKL1hPYmplY3QgMjEzIDAgUgovRm9udCAyMTQgMCBSCj4+Ci9Db250ZW50cyAyMTAgMCBS
Cj4+CmVuZG9iagoyMTUgMCBvYmoKPDwvVHlwZS9QYWdlL01lZGlhQm94IFswIDAgNzI1LjY3IDU0
NC4yNV0KL1JvdGF0ZSAwL1BhcmVudCAzIDAgUgovUmVzb3VyY2VzPDwvUHJvY1NldFsvUERGIC9J
bWFnZUMgL1RleHRdCi9FeHRHU3RhdGUgMjE4IDAgUgovWE9iamVjdCAyMTkgMCBSCi9Gb250IDIy
MCAwIFIKPj4KL0NvbnRlbnRzIDIxNiAwIFIKPj4KZW5kb2JqCjIyMSAwIG9iago8PC9UeXBlL1Bh
Z2UvTWVkaWFCb3ggWzAgMCA3MjUuNjcgNTQ0LjI1XQovUm90YXRlIDAvUGFyZW50IDMgMCBSCi9S
ZXNvdXJjZXM8PC9Qcm9jU2V0Wy9QREYgL0ltYWdlQyAvVGV4dF0KL0V4dEdTdGF0ZSAyMjQgMCBS
Ci9YT2JqZWN0IDIyNSAwIFIKL0ZvbnQgMjI2IDAgUgo+PgovQ29udGVudHMgMjIyIDAgUgo+Pgpl
bmRvYmoKMjI3IDAgb2JqCjw8L1R5cGUvUGFnZS9NZWRpYUJveCBbMCAwIDcyNS42NyA1NDQuMjVd
Ci9Sb3RhdGUgMC9QYXJlbnQgMyAwIFIKL1Jlc291cmNlczw8L1Byb2NTZXRbL1BERiAvSW1hZ2VD
IC9UZXh0XQovRXh0R1N0YXRlIDIzMCAwIFIKL1hPYmplY3QgMjMxIDAgUgovRm9udCAyMzIgMCBS
Cj4+Ci9Db250ZW50cyAyMjggMCBSCj4+CmVuZG9iagoyMzMgMCBvYmoKPDwvVHlwZS9QYWdlL01l
ZGlhQm94IFswIDAgNzI1LjY3IDU0NC4yNV0KL1JvdGF0ZSAwL1BhcmVudCAzIDAgUgovUmVzb3Vy
Y2VzPDwvUHJvY1NldFsvUERGIC9JbWFnZUMgL1RleHRdCi9FeHRHU3RhdGUgMjM2IDAgUgovWE9i
amVjdCAyMzcgMCBSCi9Gb250IDIzOCAwIFIKPj4KL0NvbnRlbnRzIDIzNCAwIFIKPj4KZW5kb2Jq
CjIzOSAwIG9iago8PC9UeXBlL1BhZ2UvTWVkaWFCb3ggWzAgMCA3MjUuNjcgNTQ0LjI1XQovUm90
YXRlIDAvUGFyZW50IDMgMCBSCi9SZXNvdXJjZXM8PC9Qcm9jU2V0Wy9QREYgL0ltYWdlQyAvVGV4
dF0KL0V4dEdTdGF0ZSAyNDYgMCBSCi9YT2JqZWN0IDI0NyAwIFIKL0ZvbnQgMjQ4IDAgUgo+Pgov
Q29udGVudHMgMjQwIDAgUgo+PgplbmRvYmoKMyAwIG9iago8PCAvVHlwZSAvUGFnZXMgL0tpZHMg
Wwo0IDAgUgoxNiAwIFIKMjMgMCBSCjMyIDAgUgozNyAwIFIKNDIgMCBSCjQ3IDAgUgo1MiAwIFIK
NTcgMCBSCjY0IDAgUgo3MyAwIFIKNzggMCBSCjgzIDAgUgo4OCAwIFIKOTMgMCBSCjk4IDAgUgox
MDMgMCBSCjExOSAwIFIKMTI5IDAgUgoxMzUgMCBSCjE0MSAwIFIKMTQ3IDAgUgoxNTMgMCBSCjE1
OSAwIFIKMTY1IDAgUgoxNzEgMCBSCjE3NyAwIFIKMTgzIDAgUgoxODkgMCBSCjE5NyAwIFIKMjAz
IDAgUgoyMDkgMCBSCjIxNSAwIFIKMjIxIDAgUgoyMjcgMCBSCjIzMyAwIFIKMjM5IDAgUgpdIC9D
b3VudCAzNwo+PgplbmRvYmoKMSAwIG9iago8PC9UeXBlIC9DYXRhbG9nIC9QYWdlcyAzIDAgUgov
TWV0YWRhdGEgMjY5IDAgUgo+PgplbmRvYmoKNyAwIG9iago8PC9UeXBlL0V4dEdTdGF0ZQovT1BN
IDE+PmVuZG9iagoxNCAwIG9iago8PC9SNwo3IDAgUj4+CmVuZG9iagoxNSAwIG9iago8PC9SOAo4
IDAgUi9SMTAKMTAgMCBSL1IxMgoxMiAwIFI+PgplbmRvYmoKMjEgMCBvYmoKPDwvUjcKNyAwIFI+
PgplbmRvYmoKMjIgMCBvYmoKPDwvUjgKOCAwIFIvUjEwCjEwIDAgUi9SMTIKMTIgMCBSL1IxOQox
OSAwIFI+PgplbmRvYmoKMzAgMCBvYmoKPDwvUjcKNyAwIFI+PgplbmRvYmoKMzEgMCBvYmoKPDwv
UjgKOCAwIFIvUjEwCjEwIDAgUi9SMjYKMjYgMCBSL1IxMgoxMiAwIFIvUjI4CjI4IDAgUi9SMTkK
MTkgMCBSPj4KZW5kb2JqCjM1IDAgb2JqCjw8L1I3CjcgMCBSPj4KZW5kb2JqCjM2IDAgb2JqCjw8
L1IxMAoxMCAwIFIvUjI2CjI2IDAgUi9SMjgKMjggMCBSL1IxOQoxOSAwIFI+PgplbmRvYmoKNDAg
MCBvYmoKPDwvUjcKNyAwIFI+PgplbmRvYmoKNDEgMCBvYmoKPDwvUjgKOCAwIFIvUjEwCjEwIDAg
Ui9SMjYKMjYgMCBSL1IyOAoyOCAwIFIvUjE5CjE5IDAgUj4+CmVuZG9iago0NSAwIG9iago8PC9S
Nwo3IDAgUj4+CmVuZG9iago0NiAwIG9iago8PC9SOAo4IDAgUi9SMTAKMTAgMCBSL1IyNgoyNiAw
IFIvUjI4CjI4IDAgUi9SMTkKMTkgMCBSPj4KZW5kb2JqCjUwIDAgb2JqCjw8L1I3CjcgMCBSPj4K
ZW5kb2JqCjUxIDAgb2JqCjw8L1I4CjggMCBSL1IxMAoxMCAwIFIvUjI2CjI2IDAgUi9SMjgKMjgg
MCBSL1IxOQoxOSAwIFI+PgplbmRvYmoKNTUgMCBvYmoKPDwvUjcKNyAwIFI+PgplbmRvYmoKNTYg
MCBvYmoKPDwvUjgKOCAwIFIvUjEwCjEwIDAgUi9SMjYKMjYgMCBSL1IyOAoyOCAwIFIvUjE5CjE5
IDAgUj4+CmVuZG9iago2MiAwIG9iago8PC9SNwo3IDAgUj4+CmVuZG9iago2MyAwIG9iago8PC9S
OAo4IDAgUi9SMTAKMTAgMCBSL1I2MAo2MCAwIFIvUjE5CjE5IDAgUj4+CmVuZG9iago3MSAwIG9i
ago8PC9SNwo3IDAgUj4+CmVuZG9iago3MiAwIG9iago8PC9SOAo4IDAgUi9SMTAKMTAgMCBSL1Iy
NgoyNiAwIFIvUjEyCjEyIDAgUi9SMjgKMjggMCBSL1I2Nwo2NyAwIFIvUjE5CjE5IDAgUi9SNjkK
NjkgMCBSPj4KZW5kb2JqCjc2IDAgb2JqCjw8L1I3CjcgMCBSPj4KZW5kb2JqCjc3IDAgb2JqCjw8
L1IxMAoxMCAwIFIvUjI2CjI2IDAgUi9SMjgKMjggMCBSPj4KZW5kb2JqCjgxIDAgb2JqCjw8L1I3
CjcgMCBSPj4KZW5kb2JqCjgyIDAgb2JqCjw8L1I4CjggMCBSL1IxMAoxMCAwIFIvUjI2CjI2IDAg
Ui9SMjgKMjggMCBSL1I2Nwo2NyAwIFIvUjE5CjE5IDAgUj4+CmVuZG9iago4NiAwIG9iago8PC9S
Nwo3IDAgUj4+CmVuZG9iago4NyAwIG9iago8PC9SOAo4IDAgUi9SMTAKMTAgMCBSL1I2Nwo2NyAw
IFIvUjE5CjE5IDAgUj4+CmVuZG9iago5MSAwIG9iago8PC9SNwo3IDAgUj4+CmVuZG9iago5MiAw
IG9iago8PC9SOAo4IDAgUi9SMTAKMTAgMCBSL1I2MAo2MCAwIFIvUjY3CjY3IDAgUi9SMTkKMTkg
MCBSPj4KZW5kb2JqCjk2IDAgb2JqCjw8L1I3CjcgMCBSPj4KZW5kb2JqCjk3IDAgb2JqCjw8L1I4
CjggMCBSL1IxMAoxMCAwIFIvUjYwCjYwIDAgUi9SNjcKNjcgMCBSL1IxOQoxOSAwIFI+PgplbmRv
YmoKMTAxIDAgb2JqCjw8L1I3CjcgMCBSPj4KZW5kb2JqCjEwMiAwIG9iago8PC9SOAo4IDAgUi9S
MTAKMTAgMCBSL1I2MAo2MCAwIFIvUjY3CjY3IDAgUi9SMTkKMTkgMCBSPj4KZW5kb2JqCjExNiAw
IG9iago8PC9SNwo3IDAgUj4+CmVuZG9iagoxMTcgMCBvYmoKPDwvUjExMwoxMTMgMCBSL1IxMTIK
MTEyIDAgUi9SMTExCjExMSAwIFIvUjExMAoxMTAgMCBSL1IxMDkKMTA5IDAgUi9SMTA2CjEwNiAw
IFI+PgplbmRvYmoKMTEzIDAgb2JqCjw8L1N1YnR5cGUvSW1hZ2UKL0NvbG9yU3BhY2UvRGV2aWNl
UkdCCi9XaWR0aCA4MQovSGVpZ2h0IDQ1NAovQml0c1BlckNvbXBvbmVudCA4Ci9GaWx0ZXIvRmxh
dGVEZWNvZGUKL0RlY29kZVBhcm1zPDwvUHJlZGljdG9yIDE1Ci9Db2x1bW5zIDgxCi9Db2xvcnMg
Mz4+L0xlbmd0aCA1Njc+PnN0cmVhbQp4nO3PsQnAMAwAQaTFvXpCMkHSPZwKIzfib845uzsz+8y7
/PiWLjAXipmZmZmZW8XMzMzMzK1iZmZmZuZWMTMzMzNzq5iZmZmZuVXMzMzMzNwqZmZmZmZuFTMz
MzMzt4qZmZmZmVvFzMzMzMytYmZmZmbmVjEzMzMzc6uYmZmZmblVzMzMzMzcKmZmZmZmbhUzMzMz
M7eKmZmZmZlbxczMzMzMrWJmZmZm5lYxMzMzM3OrmJmZmZm5VczMzMzM3CpmZmZmZm4VMzMzMzO3
ipmZmZmZW8XMzMzMzK1iZmZmZuZWMTMzMzNzq5iZmZmZuVXMzMzMzNwqZmZmZmZuFTMzMzMzt4qZ
mZmZmVvFzMzMzMytYmZmZmbmVjEzMzMzc6uYmZmZmblVzMzMzMzcKmZmZmZmbhUzMzMzM7eKmZmZ
mZlbxczMzMzMrWJmZmZm5lYxMzMzM3OrmJmZmZm5VczMzMzM3CpmZmZmZm4VMzMzMzO3ipmZmZmZ
W8XMzMzMzK1iZmZmZuZWMTMzMzNzq5iZmZmZuVXMzMzMzNwqZmZmZmZuFTMzMzMzt4qZmZmZmVvF
zMzMzMytYmZmZmbmVjEzMzMzc6uYmZmZmblVzMzMzMzcKmZmZmZmbhUzMzMzM7eKmZmZmZlbxczM
zMzMrWJmZmZm5lYxMzMzM3OrmJmZmZm5VczMzMzM3CpmZmZmZm4VMzMzMzO3ipmZmZmZW8XMzMzM
zK1iZmZmZuZWMfPXC/d7AVLyTr0KZW5kc3RyZWFtCmVuZG9iagoxMTIgMCBvYmoKPDwvU3VidHlw
ZS9JbWFnZQovQ29sb3JTcGFjZS9EZXZpY2VSR0IKL1dpZHRoIDgxCi9IZWlnaHQgMTYxCi9CaXRz
UGVyQ29tcG9uZW50IDgKL0ZpbHRlci9EQ1REZWNvZGUvTGVuZ3RoIDE4NzI+PnN0cmVhbQr/2P/u
AA5BZG9iZQBkAAAAAAH/2wBDAA4KCw0LCQ4NDA0QDw4RFiQXFhQUFiwgIRokNC43NjMuMjI6QVNG
Oj1OPjIySGJJTlZYXV5dOEVmbWVabFNbXVn/2wBDAQ8QEBYTFioXFypZOzI7WVlZWVlZWVlZWVlZ
WVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVn/wAARCAChAFEDASIAAhEBAxEB
/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQID
AAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RF
RkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKz
tLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEB
AQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdh
cRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldY
WVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPE
xcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD0XfVK40nTLqdp
rnTrOaZsbnkgVmOBjkkelTb6N9AHO3/gDQb2XzEimtGJLMLd8Bs+zAgAdgMda5S/+GWoxbmsby3u
lCZw4Mbs3Pygcj05JHWvTw9ODUAfPFxbzWs7Q3MMkMq43JIpVhkZ5B9qjr6B1LStP1eARahax3Cj
7pYYZeQeGHI6Doea848R/Dyawge60mWS7iXGYGQtL1A42j5uST0GAO9AHC0UUUAFFFFABRRRQB7/
AL6XfVffSh6ALIenhqqhqeGoAtBqkVqqq1Sq1AHLeKvA1trG+604R2uoM+5yxIjlz1yBnB75A5Oc
9cjyi9tLiwu5bW7iaGeI7XRuo/xHv3r6EVq5Lx/4Z/tiyOoWiSPqFsm0InPmpnJGPUZJGOTyMHIw
AeQ0UUUAFFFFAHuO+lD1W304PQBZDVIrVVDVIrUAWlapVaqqtUqtQBaVqmVqqq1TIaAPNviL4Xis
s6xZCQrNMTcqSWCM3RhxwCc5yerACuAr6Fv7KHUtPnsrld0M6FG4GR7jPcHke4rwPUbGbTdQnsrl
cSwOUbg4PuM9iOR7GgCtRRRQB7Fvpwaq2+nhqALStUitVVWqVWoAtq1TKaqoamQ0AWkNToaqoanQ
0AWUNeb/ABYssXOn36rId6NA5x8i4O5fxO5vy9jXoyGsHx7Y/b/CV3tj8yW3xOnzY27T8x9/lLcf
1xQB4pRRRQB6oHqRWqqrVMhoAsqanQ1WQ1OlAFlDU6GqyVOlAFlDU6Gq6VOlAFhKlaNJomjlRXjc
FWVhkMD1BHcVClWEoA+caK9J/wCFV/8AUZ/8lf8A7OigCRVqdBQEqRVoAegqdKiUVOgoAlSp0qJB
U6CgCZKnSoUFTpQBMlWEqBKlaRIYmkldUjQFmZjgKB1JPYUAeef8LU/6g3/k1/8AYUV5tRQB62Ep
wWpdlOC0ANValVaFWpVWgByCpkFNVamUUAPQVOgqNBUyCgCVBWH451Eab4UvDlfMuF+zoGBIO7g9
Oh27j+H4VvIK86+K+onzLHTFLBQDcSDAwc5VcHrkYf8AMfgAec0UUUAe07KcEqbZShKAIwtSKtOC
1Iq0ANVamVaFWpVWgBVWpkFNVamVaAIL+9h03T5725bbDAhduRk+wz3J4Hua8D1G+m1LUJ725bMs
7l25OB7DPYDgewruPiR4lS5J0W0ZtsMmblgflYgDCgg8gEnII6qPSvPqACiiigD3jZShKm2UuygC
IJTwtSBaeFoAYq1Iq04LUirQAirXL+PPEv8AYmni0tub27RgrB8GFem/g5z6e4J7YJ4p8b2mif6P
ZiO8vTuDKH+SEjI+Yjvn+Hg9ckcZ8jvbu4v7uW6u5WmnlO53bqf8B7dqAIKKKKACiiigD6G2Uuyp
9lVru9srDZ9tu7e2352+dKqbsdcZPPUUASBKcFrndS8c6DpzFBctdyAgFbZd4GRnO44Uj6H+tcvq
HxPuTLjTtPhjjBPzXBLlh2OARtPqMmgD0S+vbTTbY3F9cR28I/ic4ycE4A7nAPA5rz7xN8RPPgls
9ESSMN8pu2+VsZOdg7ZGMMeRk8A81wl/f3epXLXF9cSXEp/ic5wMk4A7DJPA4qtQAUUUUAFFFFAB
RRRQB0nxB/5HTUP+2f8A6LWuboooAKKKKACiiigAooooAKKKKACiiigD/9kKZW5kc3RyZWFtCmVu
ZG9iagoxMTEgMCBvYmoKPDwvU3VidHlwZS9JbWFnZQovQ29sb3JTcGFjZS9EZXZpY2VSR0IKL1dp
ZHRoIDMwMjQKL0hlaWdodCAyNQovQml0c1BlckNvbXBvbmVudCA4Ci9GaWx0ZXIvRmxhdGVEZWNv
ZGUKL0RlY29kZVBhcm1zPDwvUHJlZGljdG9yIDE1Ci9Db2x1bW5zIDMwMjQKL0NvbG9ycyAzPj4v
TGVuZ3RoIDQwNz4+c3RyZWFtCnic7dohroMAEEDBvycnqcKhqupQKBwKhauqq6rCVeFQCHqFj9ps
MnOCd4AX53n+AQAAAAAAAAAA/3CeZxzHkZ0BAAAAAAAAAABlxL7v2Q0AAAAAAAAAAFBGbNuW3QAA
AAAAAAAAAGXE9/vNbgAAAAAAAAAAgDJiXdfsBgAAAAAAAAAAKCM+n092AwAAAAAAAAAAlBHv9zu7
AQAAAAAAAAAAyojX65XdAAAAAAAAAAAAZcTz+cxuAAAAAAAAAACAMmJZluwGAAAAAAAAAAAoI+Z5
zm4AAAAAAAAAAIAyYpqm7AYAAAAAAAAAACgjxnHMbgAAAAAAAAAAgDJiGIbsBgAAAAAAAAAAKCP6
vs9uAAAAAAAAAACAMuLxeGQ3AAAAAAAAAABAGXG/37MbAAAAAAAAAACgjOi6LrsBAAAAAAAAAADK
iLZtsxsAAAAAAAAAAKCMuN1u2Q0AAAAAAAAAAFBGNE2T3QAAAAAAAAAAAGUYbgAAAAAAAAAA4ALD
DQAAAAAAAAAAXGC4AQAAAAAAAACAC34wgDilCmVuZHN0cmVhbQplbmRvYmoKMTEwIDAgb2JqCjw8
L1N1YnR5cGUvSW1hZ2UKL0NvbG9yU3BhY2UvRGV2aWNlUkdCCi9XaWR0aCAxODEKL0hlaWdodCAx
ODIKL0JpdHNQZXJDb21wb25lbnQgOAovRmlsdGVyL0RDVERlY29kZS9MZW5ndGggMjUyMz4+c3Ry
ZWFtCv/Y/+4ADkFkb2JlAGQAAAAAAf/bAEMADgoLDQsJDg0MDRAPDhEWJBcWFBQWLCAhGiQ0Ljc2
My4yMjpBU0Y6PU4+MjJIYklOVlhdXl04RWZtZVpsU1tdWf/bAEMBDxAQFhMWKhcXKlk7MjtZWVlZ
WVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWf/AABEIALYAtQMB
IgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUE
BAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1
Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOk
paanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAf
AQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQF
ITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdI
SUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1
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
EoAnSp0qBKnSgCdKsJUCVOlAEy9KK4n4h69qWiDTv7NufI87zN/yK2cbMfeB9TRQBm0UUUAFFFFA
BRRRQAUUUUAFFFFABRRRQA5etTpRRQBOlTpRRQBYSp0oooAnSp0oooAnSrCUUUAea/Fm6Rr3TbQB
vMijeVj2wxAH4/If0ooooA//2QplbmRzdHJlYW0KZW5kb2JqCjEwOSAwIG9iago8PC9TdWJ0eXBl
L0ltYWdlCi9Db2xvclNwYWNlL0RldmljZVJHQgovV2lkdGggMTYwCi9IZWlnaHQgMTYxCi9CaXRz
UGVyQ29tcG9uZW50IDgKL0ZpbHRlci9EQ1REZWNvZGUvTGVuZ3RoIDI5NTM+PnN0cmVhbQr/2P/u
AA5BZG9iZQBkAAAAAAH/2wBDAA4KCw0LCQ4NDA0QDw4RFiQXFhQUFiwgIRokNC43NjMuMjI6QVNG
Oj1OPjIySGJJTlZYXV5dOEVmbWVabFNbXVn/2wBDAQ8QEBYTFioXFypZOzI7WVlZWVlZWVlZWVlZ
WVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVn/wAARCAChAKADASIAAhEBAxEB
/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQID
AAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RF
RkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKz
tLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEB
AQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdh
cRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldY
WVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPE
xcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDzaiiigAooooAK
K6bwz4MvvEEX2kyLaWWSoldSS/X7q9wDwTkfjgivTtE8L6ToWHtLffcD/l4m+aTv0PQcHHAGR1zQ
B5pYeAdfvNpe3jtEZN4a4kA9OMDLA89wOldVYfDKwhl3399NdKCCEjQRA46huSSDx0IruS1NL0AY
9r4Q8PWcpki0uFmI24lLSj8mJGferf8AYOi/9AjT/wDwGT/Cre+jfQBWk0XSJpXkl0uxkkclmZrd
CWJ6knHJqldeEPD95KJJdLhVgNuIi0Q/JSBn3rV30u+gDjtS+GumXLF7C5msmJHykeagGOgBIOc8
5JPf8OT1D4fa7ZReYkUN4oBZhbvkrj2YAknsBnpXr4enB6APnWSN4ZXjlRkkQlWVhgqR1BHY02ve
Nc8Pabr8Gy9ixKMbZ48CRQD0BweOTweOfXmvL/Engi/0KB7pZI7qyTG6VflZckDlSe5OOCenOKAO
XooooAKKKKACiiigAr0Pwr8Pmk2XmvJiJkylqGKvk/38YxxzgHPPOMEGX4deFcY1nUrf0a0V/wD0
YR+W38Tjoa9EZqAERUhiSOJFjjQBVVRgKB0AHYU0tSM1RM1ADy1MLVGWphegCUvSb6hL0m+gCffS
h6r76UPQBZD04NVYNTw1AFoNUitVVWqRWoA4TxV8Plm33mgpiZny9qWCpg/3M4xzzgnHPGMAHzWS
N4ZXjlRkkQlWVhgqR1BHY19FK1cJ8R/DX2qB9btf9dCgE8YT76g/f4HUA85/hHbHIB5dRRRQAV03
gbw4niDVHN1u+xWwDyhTguSflXrkA4PI9O2Qa5mvdPCej/2F4fgtXGLh/wB7Pz/Geo6kcAAccHGe
9AGuqpDEkcSKkaKFVVGAoHQAdhUbNTnNQs1ACM1RM1DNUTNQArNUZams1RlqAJC9JvqEvTd9AFjf
Sh6rb6cHoAshqkDVVDU9WoAtq1Sq1VFaplagC0rVMrVUVqmQ0AeV/EDwwmkXA1GzCrZ3MhUxKuBC
2M4HPIOGPAAGMelcXX0Dq+nRavpNzYTHCzpgNz8rdVbGRnBAOO+K8CuYJbW5lt512SwuY3XIOGBw
Rke9AHV/DXTkvfEhnmiZ47SMyqduVD5AXOR15JHfK57V665rjfhfY/Z/D8140e17qY7X3Z3IvA4z
xht/v+ldg5oAjc1A5qRzUDmgBjGoWanOahc0ANZqjZqRmqJmoAcWpu+oy1ML0AT76cHqtvpwagC0
rVKrVVVqlVqALStUymqqGp0NAFlDU6GqqGp0NAFpDXmHxVsUh1Syvk2hrmNkdQuCShHzE9zhgP8A
gIr0xDXO/EOy+2+ErhgsjPbOs6hBnodpz7BWY/hQBreHv+Ra0r/rzh/9AFW3p0MEVrbRW8C7IYUE
aLknCgYA59qY9AELmoHNTPVd6AInNQOaleoHoAic1AxqV6ruaAGs1Rl6RzUTNQBMGp6tVVWqZDQB
aU1MhqshqdKALKGp0NVkqwlAFhDU6Gq6VOlAFhKW6tkvrG4tJSwjnjaJivUBhg49+aalWEoAHqB6
q+Hv+Ra0r/rzh/8AQBVt6AK71XerD1A4oArvUD1YcVA4oArPUD1ZcVA4oArOKhYVZZajK0AQquKm
QUBakVaAJEqdKiQVOgoAlSp0qFBU6CgCdKnSoUFTpQBMlWEqBKlaRIYmkldUjQFmZjgKB1JPYUAc
18PdRl1HwtEJh81o5tg3HzKoBXtxgED8M966JxXmPwqvfJ1i7smaNVuYQ43HDMyHgD8GY/h7V6g4
oArOKgcVacVA4oAquKhcVacVCy0AVGWomWrTLUTLQBVZaYUqyVpuygCDZT1WpNlOC0ANVamUUKtS
qtACoKnQUxVqZBQBIgqdBUaCpkFAEqCsbxte/YPCV+4aMPKnkKHP3t52nHqdpY/hW2grzr4r6ifM
sdMUsFANxIMDBzlVweuRh/zH4AHAWV3cWF3FdWkrQzxHcjr1H+I9u9e9aRqMWr6TbX8Iws6ZK8/K
3RlzgZwQRnvivn6u9+GWupaXc2lXMipFcnfCWOB5nAK9OrDHU/w4HJoA9LcVCwq0y1Cy0AVWWoWW
rbLUTLQBVZaiK1aZaYVoAqlaTZVgpSbKAINlKFqbZShKAIwtSKtPC09VoARVqZVpFWpVWgBVWp0F
NVamVaAGTTRWttLcTtshhQyO2CcKBknj2rwbXNWuNa1Sa9uGbLk7ELZEaZ4UdOB9OeT1Nd18SPEl
u9mdGsplkkMn+lbeQgXBC9ME59Dxtwetea0AFFFFAHsHgTxQNatBYXIYX9tGMsSSJUGBuyf4uRnP
XOR3A6tlr57sru4sLuK6tJWhniO5HXqP8R7d69g8K+MrTX9lrKv2fUQmWjP3JCOuw59OcHn64JoA
32Wo2WrTLUZWgCqVphSrJWmFaAKxSk2VYKUmygCDZShKm2UoSgCILTwtSBKeFoAYq1Kq0oWpFWgA
Va53xp4lTQNNaO3lX+0px+5Xbu2DPLkdh1xnqexANS+JfFtj4ei2krdXpIAtkcAr0OWPO0YPHHOf
qR49q+q3es6hJeXsm+VuABwqL2VR2A/+v1NAFSSR5pXkldnkclmZjksT1JPc02iigAooooAKKKKA
PSPCvxBijtks9eeTcnCXQUtlcfx45z2yAc557k+hQTQ3UCzW00c0LZ2vGwZTg44I96+dau6Xq9/p
Exl0+6kt2P3gpyrcEcqeD1PUcUAe/FaYUrgdN+J8ZULqtgwYA5ktjkE54G1jwMd9x6e/HVaX4q0T
Vdq299GkrbR5U37t9zdFGfvHPHy5/lQBp7KTZVjZSbKAINlLsqbZS7KAIQtPC1mX3iTRNO3C61K3
Vlfy2RG8x1bnIKrkjp3FctqHxPtVixp1hNJIQfmuCECnscAncPUZFAHdTzQ2sDTXM0cMK43PIwVR
k45J964LxH8RYBA9voXmNMcYumUBV5B4Vgc8ZHIGO2a4DVNXv9XmEuoXUk7D7oY4VeAOFHA6DoOa
pUAOkkeaV5JXZ5HJZmY5LE9ST3NNoooAKKKKACiiigAooooAKKKKACiiigDpPh9/yOmn/wDbT/0W
1e20UUAFeJfEH/kdNQ/7Z/8AotaKKAObooooAKKKKACiiigAooooA//ZCmVuZHN0cmVhbQplbmRv
YmoKMTA2IDAgb2JqCjw8L1N1YnR5cGUvSW1hZ2UKL0NvbG9yU3BhY2UvRGV2aWNlUkdCCi9XaWR0
aCAxODE0Ci9IZWlnaHQgMzkKL0JpdHNQZXJDb21wb25lbnQgOAovRmlsdGVyL0ZsYXRlRGVjb2Rl
Ci9EZWNvZGVQYXJtczw8L1ByZWRpY3RvciAxNQovQ29sdW1ucyAxODE0Ci9Db2xvcnMgMz4+L0xl
bmd0aCAzNTQ+PnN0cmVhbQp4nO3YQRGEMADAwCtWUIQiFKEIGQgAATd5t49dBXlnvO/7AwAAAADg
z/M8477v2RkAAAAAAIsa13XNbgAAAAAAWNQ4z3N2AwAAAADAosZxHLMbAAAAAAAWNfZ9n90AAAAA
ALCosW3b7AYAAAAAgEWN2QEAAAAAAOuyUAEAAAAAkoUKAAAAAJAsVAAAAACAZKECAAAAACQLFQAA
AAAgWagAAAAAAMlCBQAAAABIFioAAAAAQLJQAQAAAACShQoAAAAAkCxUAAAAAIBkoQIAAAAAJAsV
AAAAACBZqAAAAAAAyUIFAAAAAEgWKgAAAABAslABAAAAAJKFCgAAAACQLFQAAAAAgGShAgAAAAAk
CxUAAAAAIFmoAAAAAADJQgUAAAAASBYqAAAAAECyUAEAAAAAkoUKAAAAAJAsVAAAAACAZKECAAAA
ACQLFQAAAAAgWagAAAAAAMlCBQAAAABIH+7NDXUKZW5kc3RyZWFtCmVuZG9iagoxMTggMCBvYmoK
PDwvUjEwNwoxMDcgMCBSL1IxMTQKMTE0IDAgUj4+CmVuZG9iagoxMjYgMCBvYmoKPDwvUjcKNyAw
IFI+PgplbmRvYmoKMTI3IDAgb2JqCjw8L1IxMjMKMTIzIDAgUi9SMTIyCjEyMiAwIFIvUjEwNgox
MDYgMCBSPj4KZW5kb2JqCjEyMyAwIG9iago8PC9TdWJ0eXBlL0ltYWdlCi9Db2xvclNwYWNlL0Rl
dmljZVJHQgovV2lkdGggMzYyOQovSGVpZ2h0IDIzCi9CaXRzUGVyQ29tcG9uZW50IDgKL0ZpbHRl
ci9GbGF0ZURlY29kZQovRGVjb2RlUGFybXM8PC9QcmVkaWN0b3IgMTUKL0NvbHVtbnMgMzYyOQov
Q29sb3JzIDM+Pi9MZW5ndGggNDQxPj5zdHJlYW0KeJztzqFqQgEUANDdb7JZrWar1Wo1W61Wq1lZ
GC4MJguDFwYDB4MhA8ODhaFgmAh+w9LlwjlfcOJyud4BAAAAAAAAAAAAwD/F8fiXfQAAAAAAAAAA
AACgnmjbc/YBAAAAAAAAAAAAgHpivz9lHwAAAAAAAAAAAACoJ3a73+wDAAAAAAAAAAAAAPVE0/xk
HwAAAAAAAAAAAACoJ7bbNvsAAAAAAAAAAAAAQD2x2RyyDwAAAAAAAAAAAADUE6vVd/YBAAAAAAAA
AAAAgHpiufzKPgAAAAAAAAAAAABQTywWn9kHAAAAAAAAAAAAAOqJ+fwj+wAAAAAAAAAAAABAPTGb
vWcfAAAAAAAAAAAAAKgnptO37AMAAAAAAAAAAAAA9cRk0mQfAAAAAAAAAAAAAKgnxuPX7AMAAAAA
AAAAAAAA9cRo9JJ9AAAAAAAAAAAAAKCeGA6fsw8AAAAAAAAAAAAA1BODwVP2AQAAAAAAAAAAAIB6
ot9/zD4AAAAAAAAAAAAAUE/0eg/ZBwAAAAAAAAAAAADqiW73PvsAAAAAAAAAAAAAQD3R6ayzDwAA
AAAAAAAAAADUcwOUWC5xCmVuZHN0cmVhbQplbmRvYmoKMTIyIDAgb2JqCjw8L1N1YnR5cGUvSW1h
Z2UKL0NvbG9yU3BhY2UvRGV2aWNlUkdCCi9XaWR0aCAzNjI5Ci9IZWlnaHQgMjMKL0JpdHNQZXJD
b21wb25lbnQgOAovRmlsdGVyL0ZsYXRlRGVjb2RlCi9EZWNvZGVQYXJtczw8L1ByZWRpY3RvciAx
NQovQ29sdW1ucyAzNjI5Ci9Db2xvcnMgMz4+L0xlbmd0aCAzOTQ+PnN0cmVhbQp4nO3aoQ3CABCF
YU4hamoQNRU1DUkFCYoRGIERWIERGIERsCxIwgacuVzyfXkDvAH+OJ8/OwAAAAAAAAAAAAD4U+hQ
AQAAAAAAAAAAAEjQoQIAAAAAAAAAAACQoUMFAAAAAAAAAAAAIEOHCgAAAAAAAAAAAECGDhUAAAAA
AAAAAACADB0qAAAAAAAAAAAAABk6VAAAAAAAAAAAAAAydKgAAAAAAAAAAAAAZOhQAQAAAAAAAAAA
AMjQoQIAAAAAAAAAAACQoUMFAAAAAAAAAAAAICNOp3f1BwAAAAAAAAAAAAD6iW17VX8AAAAAAAAA
AAAAoJ9Y12f1BwAAAAAAAAAAAAD6iWV5VH8AAAAAAAAAAAAAoJ+Y53v1BwAAAAAAAAAAAAD6iWm6
VX8AAAAAAAAAAAAAoJ84HK7VHwAAAAAAAAAAAADoJ8bxUv0BAAAAAAAAAAAAgH5iGI7VHwAAAAAA
AAAAAADoJ/b7qfoDAAAAAAAAAAAAAP3EbwAAAAAAAAAAAADwny9PIRM5CmVuZHN0cmVhbQplbmRv
YmoKMTI4IDAgb2JqCjw8L1IxMDcKMTA3IDAgUi9SMTE0CjExNCAwIFIvUjEyNAoxMjQgMCBSPj4K
ZW5kb2JqCjEzMiAwIG9iago8PC9SNwo3IDAgUj4+CmVuZG9iagoxMzMgMCBvYmoKPDwvUjEyMwox
MjMgMCBSL1IxMjIKMTIyIDAgUi9SMTA2CjEwNiAwIFI+PgplbmRvYmoKMTM0IDAgb2JqCjw8L1Ix
MDcKMTA3IDAgUi9SMTE0CjExNCAwIFIvUjEyNAoxMjQgMCBSPj4KZW5kb2JqCjEzOCAwIG9iago8
PC9SNwo3IDAgUj4+CmVuZG9iagoxMzkgMCBvYmoKPDwvUjEyMwoxMjMgMCBSL1IxMjIKMTIyIDAg
Ui9SMTA2CjEwNiAwIFI+PgplbmRvYmoKMTQwIDAgb2JqCjw8L1IxMDcKMTA3IDAgUi9SMTE0CjEx
NCAwIFIvUjEyNAoxMjQgMCBSPj4KZW5kb2JqCjE0NCAwIG9iago8PC9SNwo3IDAgUj4+CmVuZG9i
agoxNDUgMCBvYmoKPDwvUjEyMwoxMjMgMCBSL1IxMjIKMTIyIDAgUi9SMTA2CjEwNiAwIFI+Pgpl
bmRvYmoKMTQ2IDAgb2JqCjw8L1IxMDcKMTA3IDAgUi9SMTE0CjExNCAwIFIvUjEyNAoxMjQgMCBS
Pj4KZW5kb2JqCjE1MCAwIG9iago8PC9SNwo3IDAgUj4+CmVuZG9iagoxNTEgMCBvYmoKPDwvUjEy
MwoxMjMgMCBSL1IxMjIKMTIyIDAgUi9SMTA2CjEwNiAwIFI+PgplbmRvYmoKMTUyIDAgb2JqCjw8
L1IxMDcKMTA3IDAgUi9SMTE0CjExNCAwIFIvUjEyNAoxMjQgMCBSL1I2OQo2OSAwIFI+PgplbmRv
YmoKMTU2IDAgb2JqCjw8L1I3CjcgMCBSPj4KZW5kb2JqCjE1NyAwIG9iago8PC9SMTIzCjEyMyAw
IFIvUjEyMgoxMjIgMCBSL1IxMDYKMTA2IDAgUj4+CmVuZG9iagoxNTggMCBvYmoKPDwvUjEwNwox
MDcgMCBSL1IxMTQKMTE0IDAgUi9SMTI0CjEyNCAwIFI+PgplbmRvYmoKMTYyIDAgb2JqCjw8L1I3
CjcgMCBSPj4KZW5kb2JqCjE2MyAwIG9iago8PC9SMTIzCjEyMyAwIFIvUjEyMgoxMjIgMCBSL1Ix
MDYKMTA2IDAgUj4+CmVuZG9iagoxNjQgMCBvYmoKPDwvUjEwNwoxMDcgMCBSL1IxMTQKMTE0IDAg
Ui9SMTI0CjEyNCAwIFI+PgplbmRvYmoKMTY4IDAgb2JqCjw8L1I3CjcgMCBSPj4KZW5kb2JqCjE2
OSAwIG9iago8PC9SMTIzCjEyMyAwIFIvUjEyMgoxMjIgMCBSL1IxMDYKMTA2IDAgUj4+CmVuZG9i
agoxNzAgMCBvYmoKPDwvUjEwNwoxMDcgMCBSL1IxMTQKMTE0IDAgUi9SMTI0CjEyNCAwIFI+Pgpl
bmRvYmoKMTc0IDAgb2JqCjw8L1I3CjcgMCBSPj4KZW5kb2JqCjE3NSAwIG9iago8PC9SMTIzCjEy
MyAwIFIvUjEyMgoxMjIgMCBSL1IxMDYKMTA2IDAgUj4+CmVuZG9iagoxNzYgMCBvYmoKPDwvUjEw
NwoxMDcgMCBSL1IxMTQKMTE0IDAgUi9SMTI0CjEyNCAwIFI+PgplbmRvYmoKMTgwIDAgb2JqCjw8
L1I3CjcgMCBSPj4KZW5kb2JqCjE4MSAwIG9iago8PC9SMTIzCjEyMyAwIFIvUjEyMgoxMjIgMCBS
L1IxMDYKMTA2IDAgUj4+CmVuZG9iagoxODIgMCBvYmoKPDwvUjEwNwoxMDcgMCBSL1IxMTQKMTE0
IDAgUi9SMTI0CjEyNCAwIFI+PgplbmRvYmoKMTg2IDAgb2JqCjw8L1I3CjcgMCBSPj4KZW5kb2Jq
CjE4NyAwIG9iago8PC9SMTIzCjEyMyAwIFIvUjEyMgoxMjIgMCBSL1IxMDYKMTA2IDAgUj4+CmVu
ZG9iagoxODggMCBvYmoKPDwvUjEwNwoxMDcgMCBSL1IxMTQKMTE0IDAgUi9SMTI0CjEyNCAwIFI+
PgplbmRvYmoKMTk0IDAgb2JqCjw8L1I3CjcgMCBSPj4KZW5kb2JqCjE5NSAwIG9iago8PC9SMTIz
CjEyMyAwIFIvUjEyMgoxMjIgMCBSL1IxMDYKMTA2IDAgUj4+CmVuZG9iagoxOTYgMCBvYmoKPDwv
UjE5MgoxOTIgMCBSL1IxMDcKMTA3IDAgUi9SMTE0CjExNCAwIFI+PgplbmRvYmoKMjAwIDAgb2Jq
Cjw8L1I3CjcgMCBSPj4KZW5kb2JqCjIwMSAwIG9iago8PC9SMTIzCjEyMyAwIFIvUjEyMgoxMjIg
MCBSL1IxMDYKMTA2IDAgUj4+CmVuZG9iagoyMDIgMCBvYmoKPDwvUjE5MgoxOTIgMCBSL1IxMDcK
MTA3IDAgUi9SMTE0CjExNCAwIFIvUjEyNAoxMjQgMCBSPj4KZW5kb2JqCjIwNiAwIG9iago8PC9S
Nwo3IDAgUj4+CmVuZG9iagoyMDcgMCBvYmoKPDwvUjEyMwoxMjMgMCBSL1IxMjIKMTIyIDAgUi9S
MTA2CjEwNiAwIFI+PgplbmRvYmoKMjA4IDAgb2JqCjw8L1IxMDcKMTA3IDAgUi9SMTE0CjExNCAw
IFIvUjEyNAoxMjQgMCBSPj4KZW5kb2JqCjIxMiAwIG9iago8PC9SNwo3IDAgUj4+CmVuZG9iagoy
MTMgMCBvYmoKPDwvUjEyMwoxMjMgMCBSL1IxMjIKMTIyIDAgUi9SMTA2CjEwNiAwIFI+PgplbmRv
YmoKMjE0IDAgb2JqCjw8L1IxMDcKMTA3IDAgUi9SMTE0CjExNCAwIFIvUjEyNAoxMjQgMCBSPj4K
ZW5kb2JqCjIxOCAwIG9iago8PC9SNwo3IDAgUj4+CmVuZG9iagoyMTkgMCBvYmoKPDwvUjEyMwox
MjMgMCBSL1IxMjIKMTIyIDAgUi9SMTA2CjEwNiAwIFI+PgplbmRvYmoKMjIwIDAgb2JqCjw8L1Ix
MDcKMTA3IDAgUi9SMTE0CjExNCAwIFIvUjE5CjE5IDAgUi9SMTI0CjEyNCAwIFI+PgplbmRvYmoK
MjI0IDAgb2JqCjw8L1I3CjcgMCBSPj4KZW5kb2JqCjIyNSAwIG9iago8PC9SMTIzCjEyMyAwIFIv
UjEyMgoxMjIgMCBSL1IxMDYKMTA2IDAgUj4+CmVuZG9iagoyMjYgMCBvYmoKPDwvUjEwNwoxMDcg
MCBSL1IxMTQKMTE0IDAgUi9SMTkKMTkgMCBSL1IxMjQKMTI0IDAgUj4+CmVuZG9iagoyMzAgMCBv
YmoKPDwvUjcKNyAwIFI+PgplbmRvYmoKMjMxIDAgb2JqCjw8L1IxMjMKMTIzIDAgUi9SMTIyCjEy
MiAwIFIvUjEwNgoxMDYgMCBSPj4KZW5kb2JqCjIzMiAwIG9iago8PC9SMTA3CjEwNyAwIFIvUjEx
NAoxMTQgMCBSL1IxMjQKMTI0IDAgUj4+CmVuZG9iagoyMzYgMCBvYmoKPDwvUjcKNyAwIFI+Pgpl
bmRvYmoKMjM3IDAgb2JqCjw8L1IxMjMKMTIzIDAgUi9SMTIyCjEyMiAwIFIvUjEwNgoxMDYgMCBS
Pj4KZW5kb2JqCjIzOCAwIG9iago8PC9SMTA3CjEwNyAwIFIvUjExNAoxMTQgMCBSL1IxMjQKMTI0
IDAgUj4+CmVuZG9iagoyNDYgMCBvYmoKPDwvUjcKNyAwIFI+PgplbmRvYmoKMjQ3IDAgb2JqCjw8
L1IyNDUKMjQ1IDAgUi9SMjQ0CjI0NCAwIFIvUjI0MwoyNDMgMCBSL1IyNDIKMjQyIDAgUi9SMTEz
CjExMyAwIFIvUjEwNgoxMDYgMCBSPj4KZW5kb2JqCjI0NSAwIG9iago8PC9TdWJ0eXBlL0ltYWdl
Ci9Db2xvclNwYWNlL0RldmljZVJHQgovV2lkdGggODEKL0hlaWdodCAxNjEKL0JpdHNQZXJDb21w
b25lbnQgOAovRmlsdGVyL0RDVERlY29kZS9MZW5ndGggMTg3MT4+c3RyZWFtCv/Y/+4ADkFkb2Jl
AGQAAAAAAf/bAEMADgoLDQsJDg0MDRAPDhEWJBcWFBQWLCAhGiQ0Ljc2My4yMjpBU0Y6PU4+MjJI
YklOVlhdXl04RWZtZVpsU1tdWf/bAEMBDxAQFhMWKhcXKlk7MjtZWVlZWVlZWVlZWVlZWVlZWVlZ
WVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWf/AABEIAKEAUQMBIgACEQEDEQH/xAAfAAAB
BQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiEx
QQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNU
VVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6
wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAA
AAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgU
QpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZn
aGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS
09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/APQbiKG6gaG5hjmibG5JFDKc
HPIPvVL+wdF/6BGn/wDgMn+FWt9LvoA5W/8Ahzolzua2NxZtswoR96bucMQ2SfoCOnauX1D4a6rb
+Y1lPb3iLjaufLkbpng/KMc/xdB+Feph6eGoA+d7i3mtZ2huYZIZVxuSRSrDIzyD7VHX0DqWlafq
8Ai1C1juFH3Swwy8g8MOR0HQ815f4m8BXekQS3llL9rs0+ZhjEka5PJHQgDGSPrgAUAcdRRRQAUU
UUAFFFFAH0Bvpd9Vt9KHoAtB6cGqqGqQNQBaDU9WqqrVKrUAcb4q8AwX++80cR21wqc2yqFjlI6Y
7KcZ9icdOTXl1xbzWs7Q3MMkMq43JIpVhkZ5B9q+iFauN8f+Fv7Utf7R0+33ahF/rFTrMgHp3YcY
74yOeBQB5LRRRQAUUUUAe476UPVffSh6ALQanhqqhqkVqALStUqtVVWqVWoAtq1Sq1VVapkNAHlv
xD8MQ6TNHqNgnl2ty5V4xgLG+Mjb7EA8dBj3AHE19A6vp0Wr6Tc2Exws6YDc/K3VWxkZwQDjvivA
rmCW1uZbeddksLmN1yDhgcEce9AEdFFFAHse+lDVWD08NQBaVqlVqqK1TK1AFpWqZTVVDUyGgC0h
qdDVVDU6GgCyhrzP4qab5V/aalGmFnQxSFY8DcvIJbuSDj6J+XpSGuf8f6cdR8KXBQMZLUi4UAgA
7chs57BSx/AfSgDxaiiigD1QPUitVVWqZDQBaU1MhqshqdKALKGp0NVkqdKALKGp0NV0qdKALCU+
aCK6tpbedd8MyGN1yRlSMEZHtUaVYSgD5xor0n/hVf8A1Gf/ACV/+zooAkVcVMgoC1Iq0ASIKnSo
kFToKAJUqdKiQVMgoAnSp0qFBU6UATJVhKgSpWkSGJpJXVI0BZmY4CgdST2FAHHf8LO0X/n11D/v
2n/xdFeSUUAethKcFqXZTgtADVWpVWhVqVVoAVBU6CmKtTIKAJEFToKjQVMgoAlQVh+OdRGneFLw
5XzLhfs6BgSDu4PTodu4/h+FbyCvOvivqJ8yx0xSwUA3EgwMHOVXB65GH/MfgAec0UUUAe07KUJU
2ylCUARhakVaeFp6rQAirUyrQq1Kq0AKq1MgpqrUyrQBBf3sOm6fPe3LbYYELtyMn2Ge5PA9zXge
o302pahPe3LZlncu3JwPYZ7AcD2Fd18S/EUU4XRrKbcI33XRXONw6JnPODkkY4IHcGvPKACiiigD
3jZShKm2UuygCIJTwtSBKcFoAaq1Iq04LUirQAirXN+NvE39gaesVq8Z1GfhFPJjXnL4+vAz39cE
UeKvGVpoG+1iX7RqJTKxj7kZPTec+nOBz9Mg15DqF/c6neyXl7J5txJjc+0LnAAHAAHQCgCtRRRQ
AUUUUAfQ2yl2VNspdlAEQSnBaxL7xjoFhuD6hHM4TeFtwZN3XjI+UHjuRXK6l8T33FdKsFCgjEly
ckjHI2qeDnvuPT34AO/vr20022NxfXEdvCP4nOMnBOB6nAPA5rz3xN8RPPgls9ESSMN8pu2+VsZO
dg7ZGMMeeTwDzXE6pq9/q8wl1C6kuGH3Qxwq8AcKOB0HQc1SoAKKKKACiiigAooooA9t+IP/ACJW
of8AbP8A9GLXiVFFABRRRQAUUUUAFFFFABRRRQAUUUUAf//ZCmVuZHN0cmVhbQplbmRvYmoKMjQ0
IDAgb2JqCjw8L1N1YnR5cGUvSW1hZ2UKL0NvbG9yU3BhY2UvRGV2aWNlUkdCCi9XaWR0aCAzMDI0
Ci9IZWlnaHQgMjUKL0JpdHNQZXJDb21wb25lbnQgOAovRmlsdGVyL0ZsYXRlRGVjb2RlCi9EZWNv
ZGVQYXJtczw8L1ByZWRpY3RvciAxNQovQ29sdW1ucyAzMDI0Ci9Db2xvcnMgMz4+L0xlbmd0aCA0
MDE+PnN0cmVhbQp4nO3aIa6DABBAwb8nr6lDoepQVShcFQ5VhUPhUCgciqRX+KjNJjMneAd4cV3X
HwAAAAAAAAAA8D9xnmd2AwAAAAAAAAAAlBHHcWQ3AAAAAAAAAABAGbHve3YDAAAAAAAAAACUEdu2
ZTcAAAAAAAAAAEAZsa5rdgMAAAAAAAAAAJQRy7JkNwAAAAAAAAAAQBkxz3N2AwAAAAAAAAAAlBHf
7ze7AQAAAAAAAAAAyohpmrIbAAAAAAAAAACgjBjHMbsBAAAAAAAAAADKiM/nk90AAAAAAAAAAABl
xDAM2Q0AAAAAAAAAAFBG9H2f3QAAAAAAAAAAAGXE+/3ObgAAAAAAAAAAgDKi67rsBgAAAAAAAAAA
KCNer1d2AwAAAAAAAAAAlBFt22Y3AAAAAAAAAABAGdE0TXYDAAAAAAAAAACUEc/nM7sBAAAAAAAA
AADKiMfjkd0AAAAAAAAAAABlGG4AAAAAAAAAAOAGww0AAAAAAAAAANxguAEAAAAAAAAAgBsMNwAA
AAAAAAAAcMMPwm80rAplbmRzdHJlYW0KZW5kb2JqCjI0MyAwIG9iago8PC9TdWJ0eXBlL0ltYWdl
Ci9Db2xvclNwYWNlL0RldmljZVJHQgovV2lkdGggMTgxCi9IZWlnaHQgMTgxCi9CaXRzUGVyQ29t
cG9uZW50IDgKL0ZpbHRlci9EQ1REZWNvZGUvTGVuZ3RoIDI0Njg+PnN0cmVhbQr/2P/uAA5BZG9i
ZQBkAAAAAAH/2wBDAA4KCw0LCQ4NDA0QDw4RFiQXFhQUFiwgIRokNC43NjMuMjI6QVNGOj1OPjIy
SGJJTlZYXV5dOEVmbWVabFNbXVn/2wBDAQ8QEBYTFioXFypZOzI7WVlZWVlZWVlZWVlZWVlZWVlZ
WVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVn/wAARCAC1ALUDASIAAhEBAxEB/8QAHwAA
AQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIh
MUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpT
VFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5
usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAA
AAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEI
FEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVm
Z2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK
0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDurXTdPsZTJZ2NrbyEbS0U
KoSPTIHTgVb31Bvo30AT76N9Qb6N9AEd1pun30okvLG1uJANoaWFXIHpkjpyazrrwh4evJRJLpcK
sBtxEWiH5KQM89a1d9LvoA5HUPhtpNx5jWU9xZu2Nq58yNemeD8xzz/F1P4VzeofDXVbfzGsp7e8
RcbVz5cjdM8H5Rjn+LoPwr1QPSh6APBtV0HVNG2nULOSFWxh+GQk543DIzweM5rNr6NDVgal4L0H
UlObJbaTAUSW37sjBz0Hyk9skH+VAHiNFdtr3w7v7LfNpj/brcZOzpKo5PTo3AHTkk8CuLkjeGV4
5UZJEJVlYYKkdQR2NADaKKKACiiigAooooAKKKKACiiigAooooA+gN9G+oN9JvoAn30u+q++jfQB
Y30u+q++l30AWQ9KHqsHpwegC0HpwaqwenBqALQaqWpaNpmrKRf2UM7EBd5XDgA5wGHIGfQ9zUwa
pA1AHk/iLwBf6a5l00SX9qcnCr+8TnABUfe4I5A9eBXHV9GK1c94q8J2niC2d41jt9QHKThcbzjG
18dRgAZ6jt3BAPFKK0NY0a+0W7a3voGQ5ISQA7JMY5U9xyPpnnBrPoAKKKKACiiigAooooAKKKKA
Pct9JvqDfRvoAn30b6r76XfQBY30u+q2+nB6ALAenB6rB6cHoAtBqeGqqGp4agC0Gp6tVUNUgagC
0rVIrVVVqkVqAFvbK01K2NvfW8dxCf4XGcHBGR6HBPI5ryPxj4Sk0G5ElotxPpzID5zKD5bZwVYj
3xgkDrjnBr2BWpzKk0TxyorxuCrKwyGB6gjuKAPnSiu48X+BH0yKXUNLLTWYJZ4cZaFfUH+JRz7g
Y68muHoAKKKKACiiigAooooA9j30m+od9JvoAn30b6g30b6ALG+lD1X30oegCyHp4aqoenhqALIa
nhqrBqeGoAtK1SK1VVapFagC0rVIrVVVqlVqALStUqtVVWqVWoAtK1eP+OPCf9gzLd2h3afO+1VJ
+aJsE7fcYBwfbB9T62rUl1a29/aS2t3Es0Eq7XRuh/wPv2oA+eKK6Lxl4cfw/qnybTZXJZ7cg8qA
eVOTnIyOe/HuBztABRRRQAUUUUAeq76TfUJek30ATb6XfVffRvoAs76UPVbfTg9AFkNTw1VQ9PDU
AWg1SK1VQ1PVqALatUitVVWqRWoAtq1SK1VVapVagC2rVKrVVVqlVqALStUytVVWqZWoAr67pEOu
6TNYzts34ZJAoJjYdCM/kenBIyM14XqFhc6ZeyWd7H5VxHjcm4NjIBHIJHQivoJTXGfEnQRfaaNV
gRjc2gCyAEndFk54x1BOc8cbs9BQB5PRRRQAUUUUAek0lFFABRRRQAtGaSigB4anhqhpc0AWFapF
aqqtUqtQBaVqlVqqK1TK1AFpWqVWqqrVMrUAWlaplaqqtUymgC0rVMpqqhqZDQBaU1IyJNE0cqK8
bgqysMhgeoI7iq6Gp0NAHiHizQf+Ee1k2izebC6CWJj94KSRhvcEHp168dBiV7H8RNG/tPw+bmMZ
uLDMo56p/GOoHQA9z8uB1rxygAooooA9IooooAKKKKACiiigAooooAKcrU2igCdWqZWqqpqVWoAt
K1TK1VVNTKaALSmp1NVUNTIaALSGp0NVUNTIaALSGp0NVUNToaAJ2RJomjlRXjcFWVhkMD1BHcV4
R4m04aT4hvrJAojjkzGFJICN8yjJ5yARXu6GvOvivpx8yx1NQxUg28hyMDGWXA65OX/IfiAec0UU
UAekUUUUAFFFFABRRRQAUUUUAFFFFAC09TUdKDg0AWUNToaqoanQ0AWUNToarIamQ0AWkNToaqoa
nQ0AWkNTIarIanQ0AWUNUPFFl/aPhnUbYLIzGEuixjLMy/MoA75IAq8hqdDQB840VZ1K1+wald2e
/wAz7PM8W/GN20kZx26UUAd/RRRQAUUUUAFFFFABRRRQAUUUUAFFFFAEiGp0NVlNToaALKGp0NVk
NWEoAsIanQ1XSp0oAsoanQ1WSp0oAspU6VXSp0oA8f8AiRavb+Lp5XKlbmOOVMdQAuzn3yh/SitT
4sWuzUtPvN+fNhaLZjpsbOc++/8ASigCzRRRQAUUUUAFFFFABRRRQAUUUUAFFFFACr1qdKgHWpko
AsJU6VAlTpQBYSp0qulWEoAnSrCVXSp0oAsJU6VAlTpQBw3xP0+9vxpf2KzuLnZ5u7yYmfbnZjOB
x0NFegL0ooA82ooooAKKKKACiiigAooooAKKKKACiiigBR1qZKhXrU6UATpU6VAlTpQBOlTpUKVO
lAE6VOlQJU6UATpVhKgSp0oAmXpRXE/EPXtS0Qad/Ztz5HneZv8AkVs42Y+8D6migDNooooAKKKK
ACiiigAooooAKKKKACiiigBy1OlFFAE6VOlFFAFhKnSiigCdKnSiigCdKsJRRQB558W+mkf9tv8A
2SiiigD/2QplbmRzdHJlYW0KZW5kb2JqCjI0MiAwIG9iago8PC9TdWJ0eXBlL0ltYWdlCi9Db2xv
clNwYWNlL0RldmljZVJHQgovV2lkdGggMTYwCi9IZWlnaHQgMTYwCi9CaXRzUGVyQ29tcG9uZW50
IDgKL0ZpbHRlci9EQ1REZWNvZGUvTGVuZ3RoIDI5MjI+PnN0cmVhbQr/2P/uAA5BZG9iZQBkAAAA
AAH/2wBDAA4KCw0LCQ4NDA0QDw4RFiQXFhQUFiwgIRokNC43NjMuMjI6QVNGOj1OPjIySGJJTlZY
XV5dOEVmbWVabFNbXVn/2wBDAQ8QEBYTFioXFypZOzI7WVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZ
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
jDfKbtvlbGTnYO2RjDHkZPAPNcLf393qVy1xfXElxKf4nOcDJOAOwyTwOKrUAFFFFABRRRQB/9kK
ZW5kc3RyZWFtCmVuZG9iagoyNDggMCBvYmoKPDwvUjEwNwoxMDcgMCBSL1IxMTQKMTE0IDAgUj4+
CmVuZG9iagoxOTIgMCBvYmoKPDwvQmFzZUZvbnQvTkFURURCK0xNU2FuczEwLUJvbGQvRm9udERl
c2NyaXB0b3IgMTkzIDAgUi9UeXBlL0ZvbnQKL0ZpcnN0Q2hhciA5Ny9MYXN0Q2hhciAxMjEvV2lk
dGhzWyA1MjUgNTYxIDQ4OSAwIDUxMSAzMzYgMCAwIDI1NiAyODYgMCAyNTYgMCA1NjEgNTUwCjU2
MSAwIDM3MiA0MjIgNDA0IDU2MSAwIDAgMCA1MDBdCi9FbmNvZGluZy9XaW5BbnNpRW5jb2Rpbmcv
U3VidHlwZS9UeXBlMT4+CmVuZG9iagoxMDcgMCBvYmoKPDwvQmFzZUZvbnQvWlVWVVZDK0xNU2Fu
czgtUmVndWxhci9Gb250RGVzY3JpcHRvciAxMDggMCBSL1R5cGUvRm9udAovRmlyc3RDaGFyIDE2
L0xhc3RDaGFyIDEyMi9XaWR0aHNbCjUwMiA1MDIgMCAwIDAgMCAwIDAgMCAwIDAgNjIwIDU2OSA1
NjkgMCAwCjAgMCAwIDAgMCAwIDAgMCA0MTMgNDEzIDAgODI2IDI5NSAzNTQgMjk1IDUzMQo1MzEg
MCAwIDUzMSA1MzEgNTMxIDAgNTMxIDUzMSAwIDI5NSAwIDAgMCAwIDUwMgowIDcwOCA3MDggNjc5
IDc2NyA2MzcgNjA4IDAgNzUwIDI5NSAwIDAgNTc4IDkyNyA3NTAgNzg1CjY3OSA3ODUgNjg4IDU5
MCA3MjYgNzI5IDcwOCAxMDA0IDAgMCAwIDMwOSAwIDMwOSAwIDAKMCA1MTAgNTQ5IDQ3MiA1NDkg
NDcyIDMyNSA1MzEgNTQ5IDI1MyAyODMgNTE5IDI1MyA4NDQgNTQ5IDUzMQo1NDkgNTQ5IDM2MyA0
MDcgMzg0IDU0OSA0OTAgNzI2IDQ5MCA0OTAgNDYyXQovRW5jb2RpbmcgMjYyIDAgUi9TdWJ0eXBl
L1R5cGUxPj4KZW5kb2JqCjI2MiAwIG9iago8PC9UeXBlL0VuY29kaW5nL0Jhc2VFbmNvZGluZy9X
aW5BbnNpRW5jb2RpbmcvRGlmZmVyZW5jZXNbCjE2L3F1b3RlZGJsbGVmdC9xdW90ZWRibHJpZ2h0
CjI3L2ZmL2ZpL2ZsXT4+CmVuZG9iago4IDAgb2JqCjw8L0Jhc2VGb250L1hYUlhUWitMTVJvbWFu
MTAtQm9sZC9Gb250RGVzY3JpcHRvciA5IDAgUi9UeXBlL0ZvbnQKL0ZpcnN0Q2hhciAyOC9MYXN0
Q2hhciAxMjIvV2lkdGhzWyA2MzkgMCAwIDAKMCAwIDAgMCAwIDAgMCAzMTkgMCAwIDAgMCAzMTkg
MzgzIDMxOSAwCjAgNTc1IDU3NSA1NzUgNTc1IDU3NSA1NzUgNTc1IDU3NSA1NzUgMzE5IDAgMCAw
IDAgMAowIDg2OSA4MTggODMxIDg4MiA3NTYgMCA5MDQgOTAwIDQzNiAwIDAgNjkyIDEwOTIgOTAw
IDg2NAo3ODYgODY0IDg2MyA2MzkgODAwIDg4NSAwIDExODkgMCAwIDAgMzE5IDAgMzE5IDAgMAow
IDU1OSA2MzkgNTExIDYzOSA1MjcgMzUxIDU3NSA2MzkgMzE5IDM1MSA2MDcgMzE5IDk1OCA2Mzkg
NTc1CjYzOSA2MDcgNDc0IDQ1NCA0NDcgNjM5IDYwNyA4MzEgMCA2MDcgNTExXQovRW5jb2Rpbmcg
MjYzIDAgUi9TdWJ0eXBlL1R5cGUxPj4KZW5kb2JqCjI2MyAwIG9iago8PC9UeXBlL0VuY29kaW5n
L0Jhc2VFbmNvZGluZy9XaW5BbnNpRW5jb2RpbmcvRGlmZmVyZW5jZXNbCjI4L2ZpCjM5L3F1b3Rl
cmlnaHRdPj4KZW5kb2JqCjEwIDAgb2JqCjw8L0Jhc2VGb250L1VEUVNHSStMTVJvbWFuMTAtUmVn
dWxhci9Gb250RGVzY3JpcHRvciAxMSAwIFIvVHlwZS9Gb250Ci9GaXJzdENoYXIgMTYvTGFzdENo
YXIgMjUyL1dpZHRoc1sKNDcyIDQ3MiAwIDAgMCAwIDEwMDAgMCAwIDAgMCA1ODMgNTU2IDU1NiAw
IDAKMCAwIDAgMCAwIDAgMCAyNzggMzg5IDM4OSAwIDc3OCAyNzggMzMzIDI3OCA1MDAKNTAwIDUw
MCA1MDAgNTAwIDUwMCA1MDAgNTAwIDUwMCA1MDAgNTAwIDI3OCAwIDAgMCAwIDQ3Mgo3NzggNzUw
IDcwOCA3MjIgNzY0IDY4MSA2NTMgNzg1IDc1MCAzNjEgNTE0IDc3OCA2MjUgOTE3IDc1MCA3NzgK
NjgxIDc3OCA3MzYgNTU2IDcyMiA3NTAgNzUwIDEwMjggMCAwIDAgMjc4IDAgMjc4IDAgMAowIDUw
MCA1NTYgNDQ0IDU1NiA0NDQgMzA2IDUwMCA1NTYgMjc4IDMwNiA1MjggMjc4IDgzMyA1NTYgNTAw
CjU1NiA1MjggMzkyIDM5NCAzODkgNTU2IDUyOCA3MjIgNTI4IDUyOCA0NDQgMCAwIDAgMCAwCjAg
MCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAKMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAw
IDAgNDg0CjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAKMCAwIDAgMCAwIDAgMCAwIDAg
MCAwIDAgMCAwIDAgMAowIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwCjAgMCAwIDAgMCAw
IDAgMCAwIDAgMCAwIDAgMCAwIDAKMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMAowIDAg
MCAwIDAgMCAwIDAgMCAwIDAgMCA1NTZdCi9FbmNvZGluZyAyNjQgMCBSL1N1YnR5cGUvVHlwZTE+
PgplbmRvYmoKMjY0IDAgb2JqCjw8L1R5cGUvRW5jb2RpbmcvQmFzZUVuY29kaW5nL1dpbkFuc2lF
bmNvZGluZy9EaWZmZXJlbmNlc1sKMTYvcXVvdGVkYmxsZWZ0L3F1b3RlZGJscmlnaHQKMjIvZW1k
YXNoCjI3L2ZmL2ZpL2ZsCjM5L3F1b3RlcmlnaHQKMTU5L3NlY3Rpb25dPj4KZW5kb2JqCjI2IDAg
b2JqCjw8L0Jhc2VGb250L1lOWVdWTytMTVJvbWFuOS1JdGFsaWMvRm9udERlc2NyaXB0b3IgMjcg
MCBSL1R5cGUvRm9udAovRmlyc3RDaGFyIDI4L0xhc3RDaGFyIDEyMi9XaWR0aHNbIDU3NyAwIDAg
MAowIDAgNDE3IDAgMCAwIDAgMzE1IDQyMCA0MjAgNTI1IDAgMzE1IDM2NyAzMTUgNTI1CjAgNTI1
IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgMCAzMTUgMCAwIDAgMAowIDc2MyAwIDcz
NSA3NzUgNjk2IDAgMCA3NjMgMzk2IDAgMCAwIDAgMCA3ODcKNjk2IDc4NyAwIDAgNzM1IDAgNzYz
IDAgMCAwIDAgMCAwIDAgMCA3NjMKMCA1MjUgNDcyIDQ3MiA1MjUgNDcyIDMxNSA0NzIgNTI1IDMx
NSAwIDQ3MiAyNjIgODQwIDU3NyA1MjUKNTI1IDQ3MiA0MzMgNDIwIDM0MSA1NTEgNDcyIDY4MiA0
NzQgNDk4IDQyMF0KL0VuY29kaW5nIDI2NSAwIFIvU3VidHlwZS9UeXBlMT4+CmVuZG9iagoyNjUg
MCBvYmoKPDwvVHlwZS9FbmNvZGluZy9CYXNlRW5jb2RpbmcvV2luQW5zaUVuY29kaW5nL0RpZmZl
cmVuY2VzWwoyOC9maQozOS9xdW90ZXJpZ2h0CjQyL2FzdGVyaXNrbWF0aF0+PgplbmRvYmoKMTIg
MCBvYmoKPDwvQmFzZUZvbnQvU1VPQlpEK0xNUm9tYW4xMi1Cb2xkL0ZvbnREZXNjcmlwdG9yIDEz
IDAgUi9UeXBlL0ZvbnQKL0ZpcnN0Q2hhciA0OS9MYXN0Q2hhciAxMjEvV2lkdGhzWyA1NjMgNTYz
IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAKMCA4NTAgMCA4MTMgMCAwIDAgMCAwIDAgMCAwIDAg
MCAwIDAKNzY5IDAgMCAwIDAgMCAwIDExNjIgMCAwIDAgMzEzIDAgMzEzIDAgMAowIDU0NyA2MjUg
NTAwIDYyNSA1MTMgMzQ0IDU2MyAwIDMxMyAwIDAgMzEzIDkzOCA2MjUgNTYzCjYyNSAwIDQ2MCA0
NDQgNDM4IDYyNSAwIDgxMyAwIDU5NF0KL0VuY29kaW5nL1dpbkFuc2lFbmNvZGluZy9TdWJ0eXBl
L1R5cGUxPj4KZW5kb2JqCjI4IDAgb2JqCjw8L0Jhc2VGb250L1JNWVJKVytMTU1vbm85LVJlZ3Vs
YXIvRm9udERlc2NyaXB0b3IgMjkgMCBSL1R5cGUvRm9udAovRmlyc3RDaGFyIDMzL0xhc3RDaGFy
IDEyNS9XaWR0aHNbIDUyNSA1MjUgMCAwIDAgNTI1IDAgNTI1IDUyNSA1MjUgMCA1MjUgMCA1MjUg
MAowIDAgMCAwIDAgMCAwIDAgMCAwIDUyNSA1MjUgNTI1IDUyNSA1MjUgMAowIDUyNSAwIDAgMCAw
IDUyNSAwIDAgNTI1IDAgMCAwIDAgMCA1MjUKMCAwIDAgMCA1MjUgMCAwIDAgNTI1IDAgMCAwIDAg
MCAwIDUyNQowIDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1
IDUyNSA1MjUgNTI1CjUyNSAwIDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUy
NSAwIDUyNV0KL0VuY29kaW5nL1dpbkFuc2lFbmNvZGluZy9TdWJ0eXBlL1R5cGUxPj4KZW5kb2Jq
CjYwIDAgb2JqCjw8L0Jhc2VGb250L0lHUU5RSitMTVJvbWFuMTAtSXRhbGljL0ZvbnREZXNjcmlw
dG9yIDYxIDAgUi9UeXBlL0ZvbnQKL0ZpcnN0Q2hhciAyMi9MYXN0Q2hhciAxMjAvV2lkdGhzWyAx
MDIyIDAgMCAwIDAgMCAwIDU4OCAwIDAKMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDc2NyAwIDAgMCA1
MTEKMCA1MTEgNTExIDAgMCAwIDAgMCAwIDAgMzA3IDAgMCAwIDAgMAowIDAgNzA0IDcxNiAwIDY3
OCAwIDc3NCAwIDM4NiA1MjUgMCA2MjcgMCAwIDc2NwowIDAgNzI5IDU2MiA3MTYgMCAwIDk5OSAw
IDAgMCAwIDAgMCAwIDAKMCA1MTEgNDYwIDQ2MCA1MTEgNDYwIDAgNDYwIDUxMSAzMDcgMCA0NjAg
MjU2IDgxOCA1NjIgNTExCjUxMSA0NjAgNDIyIDQwOSAzMzIgNTM3IDQ2MCA2NjQgNDY0XQovRW5j
b2RpbmcgMjY2IDAgUi9TdWJ0eXBlL1R5cGUxPj4KZW5kb2JqCjI2NiAwIG9iago8PC9UeXBlL0Vu
Y29kaW5nL0Jhc2VFbmNvZGluZy9XaW5BbnNpRW5jb2RpbmcvRGlmZmVyZW5jZXNbCjIyL2VtZGFz
aAoyOS9mbF0+PgplbmRvYmoKMTE0IDAgb2JqCjw8L0Jhc2VGb250L1paRkdKVStMTVNhbnMxMC1S
ZWd1bGFyL0ZvbnREZXNjcmlwdG9yIDExNSAwIFIvVHlwZS9Gb250Ci9GaXJzdENoYXIgMjgvTGFz
dENoYXIgMTIyL1dpZHRoc1sgNTM2IDAgMCAwCjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAw
IDAKMCAwIDAgMCAwIDAgMCAwIDAgMCAyNzggMCAwIDAgMCAwCjAgNjY3IDAgNjM5IDAgMCAwIDAg
MCAyNzggMCAwIDAgODc1IDAgMAo2MzkgNzM2IDAgNTU2IDY4MSAwIDAgMCAwIDAgMCAwIDAgMCAw
IDAKMCA0ODEgNTE3IDQ0NCA1MTcgNDQ0IDMwNiA1MDAgNTE3IDIzOSAyNjcgNDg5IDIzOSA3OTQg
NTE3IDUwMAo1MTcgNTE3IDM0MiAzODMgMzYxIDUxNyA0NjEgNjgzIDQ2MSA0NjEgNDM1XQovRW5j
b2RpbmcgMjY3IDAgUi9TdWJ0eXBlL1R5cGUxPj4KZW5kb2JqCjI2NyAwIG9iago8PC9UeXBlL0Vu
Y29kaW5nL0Jhc2VFbmNvZGluZy9XaW5BbnNpRW5jb2RpbmcvRGlmZmVyZW5jZXNbCjI4L2ZpXT4+
CmVuZG9iago2NyAwIG9iago8PC9CYXNlRm9udC9PVFZaS0grTE1Sb21hbjctUmVndWxhci9Gb250
RGVzY3JpcHRvciA2OCAwIFIvVHlwZS9Gb250Ci9GaXJzdENoYXIgNDkvTGFzdENoYXIgNDkvV2lk
dGhzWyA1NjldCi9FbmNvZGluZy9XaW5BbnNpRW5jb2RpbmcvU3VidHlwZS9UeXBlMT4+CmVuZG9i
agoxOSAwIG9iago8PC9CYXNlRm9udC9HSFRDT0MrTE1Nb25vMTAtUmVndWxhci9Gb250RGVzY3Jp
cHRvciAyMCAwIFIvVHlwZS9Gb250Ci9GaXJzdENoYXIgMzgvTGFzdENoYXIgMTI1L1dpZHRoc1sg
NTI1IDAgNTI1IDUyNSA1MjUgMCA1MjUgNTI1IDUyNSA1MjUKNTI1IDUyNSA1MjUgNTI1IDAgMCAw
IDAgMCAwIDUyNSA1MjUgNTI1IDUyNSA1MjUgMAowIDAgMCAwIDAgMCA1MjUgMCAwIDUyNSAwIDAg
MCAwIDAgMAowIDAgMCAwIDUyNSA1MjUgMCAwIDAgMCAwIDUyNSAwIDUyNSAwIDUyNQowIDUyNSA1
MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1CjUy
NSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSAwIDUyNSA1MjUgNTI1IDUyNSAwIDUyNV0KL0VuY29k
aW5nL1dpbkFuc2lFbmNvZGluZy9TdWJ0eXBlL1R5cGUxPj4KZW5kb2JqCjEyNCAwIG9iago8PC9C
YXNlRm9udC9SRVZLTEMrTE1Nb25vOC1SZWd1bGFyL0ZvbnREZXNjcmlwdG9yIDEyNSAwIFIvVHlw
ZS9Gb250Ci9GaXJzdENoYXIgMzMvTGFzdENoYXIgMTI1L1dpZHRoc1sgNTMxIDUzMSAwIDAgMCA1
MzEgNTMxIDUzMSA1MzEgNTMxIDUzMSA1MzEgNTMxIDUzMSA1MzEKNTMxIDUzMSA1MzEgNTMxIDUz
MSA1MzEgNTMxIDUzMSA1MzEgNTMxIDUzMSA1MzEgNTMxIDUzMSA1MzEgMAowIDUzMSA1MzEgNTMx
IDUzMSA1MzEgNTMxIDAgMCA1MzEgMCAwIDUzMSAwIDUzMSA1MzEKNTMxIDAgNTMxIDUzMSA1MzEg
NTMxIDAgMCAwIDAgMCA1MzEgMCA1MzEgMCA1MzEKMCA1MzEgNTMxIDUzMSA1MzEgNTMxIDUzMSA1
MzEgNTMxIDUzMSA1MzEgNTMxIDUzMSA1MzEgNTMxIDUzMQo1MzEgNTMxIDUzMSA1MzEgNTMxIDUz
MSA1MzEgNTMxIDUzMSA1MzEgNTMxIDUzMSAwIDUzMV0KL0VuY29kaW5nIDI2OCAwIFIvU3VidHlw
ZS9UeXBlMT4+CmVuZG9iagoyNjggMCBvYmoKPDwvVHlwZS9FbmNvZGluZy9CYXNlRW5jb2Rpbmcv
V2luQW5zaUVuY29kaW5nL0RpZmZlcmVuY2VzWwozOS9xdW90ZXJpZ2h0XT4+CmVuZG9iago2OSAw
IG9iago8PC9CYXNlRm9udC9OU05MTkgrTE1Nb25vTHQxMC1Cb2xkL0ZvbnREZXNjcmlwdG9yIDcw
IDAgUi9UeXBlL0ZvbnQKL0ZpcnN0Q2hhciA0Mi9MYXN0Q2hhciAxMjEvV2lkdGhzWyA1MjUgMCAw
IDAgMCAwCjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDUyNSAwIDUyNSAwCjAgMCAwIDAgMCAwIDAg
MCAwIDAgMCAwIDAgMCAwIDAKMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgNTI1CjAgNTI1
IDAgNTI1IDUyNSA1MjUgNTI1IDUyNSAwIDUyNSAwIDUyNSA1MjUgNTI1IDUyNSA1MjUKNTI1IDAg
NTI1IDUyNSA1MjUgMCA1MjUgMCAwIDUyNV0KL0VuY29kaW5nL1dpbkFuc2lFbmNvZGluZy9TdWJ0
eXBlL1R5cGUxPj4KZW5kb2JqCjE5MyAwIG9iago8PC9UeXBlL0ZvbnREZXNjcmlwdG9yL0ZvbnRO
YW1lL05BVEVEQitMTVNhbnMxMC1Cb2xkL0ZvbnRCQm94Wy03MSAtMjA1IDUyMyA3MDVdL0ZsYWdz
IDMyCi9Bc2NlbnQgNzA1Ci9DYXBIZWlnaHQgNzA1Ci9EZXNjZW50IC0yMDUKL0l0YWxpY0FuZ2xl
IDAKL1N0ZW1WIDc4Ci9NaXNzaW5nV2lkdGggMjgwCi9YSGVpZ2h0IDQ3NQovQ2hhclNldCgvYS9i
L2MvZS9mL2kvai9sL24vby9wL3Ivcy90L3UveSkvRm9udEZpbGUzIDI0OSAwIFI+PgplbmRvYmoK
MjQ5IDAgb2JqCjw8L0ZpbHRlci9GbGF0ZURlY29kZQovU3VidHlwZS9UeXBlMUMvTGVuZ3RoIDE3
NDA+PnN0cmVhbQp4nG1Ue1ATdx7fJZDdWs5T0tXjiLt715d6SMG2JxZ7VdQWaS1vC5ZiAwiJPMIj
EB4iCYS8vktIAuGtiFWsVg1Szgo+6nNqrXacZuqd1xtblN51uKlj7+but87Pqbch0Bvmmj925vfb
5PPK5/slieAggiTJ+W9sTlOVVsZEr4jXFuf7b54RI0hRGSQukW3AKnHgQUYIhMogNPiCkrofhuoX
oq2/RAkLCBlJvpVfvF5bVluhKVTr+JXR0c+vWCE9V/O5tXx8FJ+oyivS6iuLNLyqNJ9PjNocxb+p
1UuXGn6ptpTP3a5WFRfw2gI+fXsmn5G2MTWNfy01KSM5bVnUHE2zB4IgFpRqyyoqdVWq3Nq87QWa
HcUEkUQkEylEGpFOZBBbiHhiPbGV2EC8SrxGJBKvE5uJhZJLIphQE8fI5WRd0KIge9DfZbmyL4O3
Bl8LSQ65IY+SH5ffRUfmPwqKWULsrUa3fOAL+wQp0RqkXKxIEK2nGHSIUpz857bRp3+b80rZLtZ+
Rv6BqS+X1cgLGw0F3MNgqrCzcZj9UH7c032MQ+XUncujH5/y6DJZfJAqctePzr6aL44bbqFJH3lY
gi9CSpnYi6oYFBs3gVfhuD+sxC/iVRPxKAbF3PGhWBYru5g1EM1jAr796s8w+R9EwPMvswGleF01
et2Hbt8ir0hgqX6wAVTPnAaUgjclb6nUFLLDDR4NWzAj8txckZupk1kXoAdopAaUfobDShuTB/gJ
HKKrbe9oZCv7wQm7aWSiOj1H9p0A+gcBz9vGzX9E6mKllMSQKYk3XIZEkWPGqQFw12rjjZjIZu3X
AuEUzQ1neIY3kYKpv4xcbdsttAIcoCW8A4cJKZRvvyCH76EX78lEHv2GgYslx2r78rxql6o93ZPX
DiP06JH2kc+9FVUHWI+xFdrAA60dQltru+eiJLRvS4+hLa+zSCgHOgf/GvCTWwdLhiq5Y0UjpkuG
981nm2AbnZ1vyt+W1n0xmzU7rY4WMIKtyd5ia2hMBSNde7MS2At1o9AP9FkU1oaW+r12LJe0dfqQ
wYcW68m7aJFMfGycAYfN3bLXPGBzNYEZ7PaWFkNzWZUK6Mqd/dc5ZJikurzg9RZCI7fydiCN4kAa
sTrKUACFhV7o4gawS/6M990bHR9B38dsv/PybthDB/5bwxUxUk/OdFA23cAfqWmcPPl24y41h43U
JnXqhrSWnnMsGpt9NU2Bhyn+csm/hr6Ab8bZ8kD9hmfrNygZuX+dHEWLUJwfuVRC3kuhlThSyMrO
smgT2OomsxUMYHKlCM1Ci9PsltJ1SJ8TJ88Mfgr0+b4dyZyaUuNeG35248V1d4/e9NwY5/RzeLDy
30xUJFhVZd7j3yPOfVCY6azEPulDVfq5lT0FKBUnr856x9jEooaAmdnWTs22th8OgTAylnUW+qTO
amY6a2fWQSQOVlXs7zGwqJfq7jq0bwzo+/DcWsmtFau+EW/qSa+4SSaWiOuZoTLYxVbJ66EKduqs
5pdwuTmBtsvNp3O/e/cf2qum3iygy+UNFVBucZhazRxKefhCc7XVYDWGN+6oy8mAHaDrMbjNDptg
BdrcbG1sdr3qsHAdjedtfYAWwGk0r/09tEos/ZWzG1rB6e/3d3f9/ZbmdNhv+J0zDHRaxmzdtMPm
MVpsYDSydTuzc1cD/STc/+yvzq9/uDZUX+Llugz/1/IOU1td+9uDJZ6NQONlURvxevzSxFr0u6FP
hKOfcwd7BQE8fsZH00mvOIeUvrDDiLEj2fdItlixVKxE3QxikibwMlbhxC+sicGROHYqDsUcv+Q8
cp0b7HQ7oAvc1vft7ZbDdqEJLGADgzE5M8lUBLTiDRwCjZPWz2i0X75vv3CSwzI3o0jG+XJF8RXH
wM07EV9Bb4rjZb+GZKV/SyzyoSU+jS9sAoX/HoUvVvDiwgckM0bBe3ZB46YVma7SatgZsRaH1uHl
XBxVrZaG4ygMcvhvlMI0szgUCYHVIV2ln5L/NFqZiJQfgA+vfTDQVDPAKvhmt8PmjOgGT580ucQj
h58/R49CERV2Hj2LeT//FbTlf7M00zH845wNpYh2ixeYPYGvZAbGrYYqddacYM/K/+jafci/F1gl
gVVfi38KwKtQeIPEEO5nuIR0RYz45izD9M8fFlAVkJdUq2vrqZKCF2wWhyWiWVocTeUWo6kGrHTN
be1VVhGMgka+vMcpnnoQFvyTAMXSn5UQMPggUR9Yw5ItcepnR2d29qsGxZx+pDnoEOS+eUj5ODtP
9tYTr4Q+BqGPn9vjcgmCo01wOYTQ0HtdXdJJOjucjtBfEMR/AevCuX0KZW5kc3RyZWFtCmVuZG9i
agoxMDggMCBvYmoKPDwvVHlwZS9Gb250RGVzY3JpcHRvci9Gb250TmFtZS9aVVZVVkMrTE1TYW5z
OC1SZWd1bGFyL0ZvbnRCQm94Wy02NSAtMjUwIDkwOSA3NTBdL0ZsYWdzIDQKL0FzY2VudCA3NTAK
L0NhcEhlaWdodCA3NTAKL0Rlc2NlbnQgLTI1MAovSXRhbGljQW5nbGUgMAovU3RlbVYgMTM2Ci9N
aXNzaW5nV2lkdGggMjgwCi9DaGFyU2V0KC9BL0IvQy9EL0UvRi9IL0kvTC9NL04vTy9QL1EvUi9T
L1QvVS9WL1cvYS9iL2JyYWNrZXRsZWZ0L2JyYWNrZXRyaWdodC9jL2NvbG9uL2NvbW1hL2QvZS9l
aWdodC9mL2ZmL2ZpL2ZpdmUvZmwvZm91ci9nL2gvaHlwaGVuL2kvai9rL2wvbS9uL28vcC9wYXJl
bmxlZnQvcGFyZW5yaWdodC9wZXJpb2QvcGx1cy9xL3F1ZXN0aW9uL3F1b3RlZGJsbGVmdC9xdW90
ZWRibHJpZ2h0L3Ivcy9zZXZlbi9zbGFzaC90L3RocmVlL3Uvdi93L3gveS96L3plcm8pL0ZvbnRG
aWxlMyAyNTAgMCBSPj4KZW5kb2JqCjI1MCAwIG9iago8PC9GaWx0ZXIvRmxhdGVEZWNvZGUKL1N1
YnR5cGUvVHlwZTFDL0xlbmd0aCA0NjY2Pj5zdHJlYW0KeJx9WAtcjOnbfqZp3nckqcabxjKTU3JK
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
ytYSDSpAG2/tLDpKBehpGVzS++ezXUX/9Tmt2MO8637wPpx/mFFotPeXaagvjNTshzX7V2dto4fU
bPrekaepeS8re/u2rOyeT80BCP0PGS+XOwplbmRzdHJlYW0KZW5kb2JqCjkgMCBvYmoKPDwvVHlw
ZS9Gb250RGVzY3JpcHRvci9Gb250TmFtZS9YWFJYVForTE1Sb21hbjEwLUJvbGQvRm9udEJCb3hb
LTU2IC0yNTAgMTE2NCA3NTBdL0ZsYWdzIDYKL0FzY2VudCA3NTAKL0NhcEhlaWdodCA2OTgKL0Rl
c2NlbnQgLTI1MAovSXRhbGljQW5nbGUgMAovU3RlbVYgMTU2Ci9NaXNzaW5nV2lkdGggMjgwCi9Y
SGVpZ2h0IDQ1NQovQ2hhclNldCgvQS9CL0MvRC9FL0cvSC9JL0wvTS9OL08vUC9RL1IvUy9UL1Uv
Vy9hL2IvYnJhY2tldGxlZnQvYnJhY2tldHJpZ2h0L2MvY29sb24vY29tbWEvZC9lL2VpZ2h0L2Yv
ZmkvZml2ZS9mb3VyL2cvaC9oeXBoZW4vaS9qL2svbC9tL24vbmluZS9vL29uZS9wL3BlcmlvZC9x
L3F1b3RlcmlnaHQvci9zL3NldmVuL3NpeC90L3RocmVlL3R3by91L3Yvdy95L3opL0ZvbnRGaWxl
MyAyNTEgMCBSPj4KZW5kb2JqCjI1MSAwIG9iago8PC9GaWx0ZXIvRmxhdGVEZWNvZGUKL1N1YnR5
cGUvVHlwZTFDL0xlbmd0aCA2MTIzPj5zdHJlYW0KeJyNWQlYFFe2rrahq9wAKZtVq3EDN9S4JDFx
QRQ1BlFBEbURUFCUyCogiNqy2fRpGtlFkE1QBKVlEaVEjfuWTWMSfTExRDNJXBLijHMKL/PybiM6
cTJv3vvqo/moqq6655z//P/5LzLGrBcjk8ksPRd6R2wKCn9jgqt7xAfBplMukqNMGtRLGiz3IYZB
ZvrOZHPoJ4d+ZmcHDVZbS4oBCJboacXIZbLlIeGzIyITojesD93sNHHChEmurvRzqtOaBCf3cU4L
gtaGRcTHhG1wCgoPdlowbuE4J6+IeHpyg9PIiHCnNSGhQR+sc4pY57Q0xM9pmY+Ht4/TPO9Fyxb7
jBr3+qpe/cUwzPRZ4e4RsyPnRHlEx8zbPD/2vbj4oDWeCWsXJgZ7hSxat3j9klDvDT4bl4Yt+2DT
8ndcVg0a6+867o2JkyZPefOtt6cyzFBmETOMWcwMZ5YwIxhvxpnxYZYyI5llzCjGlxnNLGf8GHdm
NuPKrGTmMOOYVYwHM56Zy0xg5jFvMPOZicx7zCRmATOZeZ+ZwngybzILGS/mbcaR4ZhpzCamPzOD
sWAsGWuGZwYySsaGsWXsGHvGgZlBE86YMZuZz2ULZdW9xvQ6K3eS75L/YrbQ7Kl5vvkDhVrRqHjK
LuHkXFbvvr0X9b7WZ2qfh33d+p7sF9PvYf8V/VstHC3NLe9azbR6PGDagJ+t11of55fyjweqBtYq
PZVa5TXlI5sgmwqbczb/ZfMPWw/bC3bhdqft/e2fOgQ7PHTciIctfpeHRDIgorMorY6XdX5qI45m
SV6nuaZ6BySCfQTsSklNIPquX+zSkrQpM4GLUyuwt6ERzsNRrb3IwkTYo8oqPIX9zbFccZk4m49V
KxoMD6EFmuA+1Gs5chtTlWSLAhVYa27xe6/t903v6xDV56zRdDIQFbZ8jURsxLlYyP5tWaPLGF9v
vygBGZa/TdxSzNXs1RwIVpGrc9UsWhvQWmtObw1hUdbedu1IedxMgVS+uEQfL5/Yz/T4E0YsEWXo
grZ4FofKO9PQSwmPpnxC+uYhU/rRZbjN/Tj5azJF6JqrRqbrAWHUUrAC37l3/4mKuONd5YxVC0cL
ZAKW4AJFx75p/qoD5GvlDiADyXCBeOIJ9FWUgQhHAg8HgQ9oOAvp87QmiTfK6nAg5uBAudSI4Up0
GN9B3iJvTxhB7InVfRd8F6d934GWAhlYoJwMhCE84QGZ70/A6ZIjQunRY+VtcAyOba0ILd8AS2EV
RyOaYWA0ovRclF1HV0nbJu/MwXhlWao+cXsyJOqEVOJA+ns5w3R4a//yK+oLO76EH+C8AZlrH3/0
8fcFZ+jj4eHMCsIbtugzKoGr1mdWqzCMLYW8hOSMjNQU4b3FC0/N3zcP7EkmcSWjSBAJQvobM3ER
mqMlsqoXZSO+Ig4xYruYJIY1WT9DBeBAYk5LaIkDbXmOkR5jjBLtJ/xMhrv5fpCwWWhj+TyGePSU
METVpX+thF4s764JbTm+s9kRR//2A6pUZKANGeKxfME2NZxdLWj2gB5KOQxl+SEaKNXri4qams9k
VwD3yXkvYk1XJY/qoNWWHnSXepBkiy7yzov4gxIjyWhUkpVCl/ur8s5W4AocTde6UUVc9Eogsh2+
YatXzZu01Qs44iw9QGfFx/DtljaPer/ceTCOpr7X6o6eoCWrJlkDrexuVMilJ8RXKc6Vfl7D+k4L
bfM5tIhmznn4RKIiQzomo6rtRFFTq4os78GkH7YrIQG0SXFrF/tpNgG3cNFFtMehX4iXvzo5bYUp
t3/VmzBbL2K+aE0DGYpTRHShWbbln3euxwNKtSKWCBETyUK60LFYf07xKD9wlkrEI2rFrOTA0cJS
zMexCr4Zp0C1ezHpz4mKDzDN/B8yU/Df0uA7rRUWv8vulLzqvGcUFGixFS1s+ZGSl2Sm/HBZzXKP
tSs8NwtozvK3yDt/6rsGuA5G2vKTcTZ7owotfoUtieFr6uJraurKmwT6+IvFTFpdmFFyrLNuuIk7
btryW6RJ6KSElvj60IPBNWHZ0/esy1lQACJ39Sco/bIhfOluQZ+kTy8Hbj/srlR93Y3JXRmwJViI
2hOavRa4TWQcENu1ZZFliaqm0Ia029uMaV9uh8Wc23iIHRJ1q2WHkF6UDtuAi4G0zSoiY7dA8r6c
TNhbLvDa6pLWsDNQBva1OA7Q2QQY7WjaTLhMlPq86KfRJnZoxwSlyIZqJ0MwLIFxsMzAqXG4Mwtb
IDx4c1RSWFoYTIEpNSuvBp7bfhP+AmhWdvFoW9Op20cfwd//z+5yvzg7fznFiI6MJy5kLVmFI8h4
LDj8NPPqKVVt5OWoHOCKYM9eFfqzNI9n3mbSmvB3EX3irZ+iQi1iH4qEx5I1Wik/VPux88JiIpbA
9UoBayhtE2f0UbM6l5UjR2q59bR035ADCqfvY29+deLCLcHiuR0teaOIhd0tMhS/MMXbYSMShgKe
EdkQ7SgIpMcoCDEFzZBC8gUW/rsr3V3ENhieUGpvgSfQoOXoU7ARvyCNf7rygjDSPsSOc7KXLC83
cTy7MBUaVRLDkvf/iTAfdqqfr/sMbdVZAX9+7co21ulu7C/Vn8OdVmG6KTnNg/7Z8EPlkguNREEj
UYjsGrpef3qMgjWm9SroehVqtpmuqpUeT6BZ29PRJXHSCFFWLZ2WS7elIbTw0RnhumiYYLBTs6U1
2hSAjPSdKsIRA+Gx2vysqCBWWqIwmKuvszi7q19h9B7YA/YlkG/IL8d3ULLLLsrKuQ49XN39eOsq
TCKzcJYPbhyCGwE3DsVZtrxHZ2v3CzdnbNLFwBjTC/PadBqtNk2nVQ0leUSBh83P0/cptEEQlLlV
b6++xJavAC0A7DLdNI0stePnD8UCcz7QdJ+llsjoumjVLynQtatPTmLWziqwr4Ks/JwSjtc9w8Jn
pPC1szgcn9nxs/bszsq95GghnU8zbhJx0SF0NVofwN4YbFJjtXRqv7JyO2wXvPQ01EqOAvrBnI/I
KG9isWtSQP2WA7V15ccObSnRZgoHs+v0hcB9WR80U7WBnaMlOclARnC8ZgxaJXz2tdh8rELg3T4A
/78KJxVlhbBfRfyRVfKHx4zfHu23tv44Mjix6JRB6IGMURpoxCXneuQFrUzSEtmjLK4/kxHuK8Lj
YwRsZV/pSrCq67HIFpeW7Csu5fiPUnLblj1wxFFPewQF1LA0Kjh8jb8mDDwg+OzOvRxmsQfqT9ac
Aw4tgPT3MHFwU+0fgIWXRXmnbTfzpsxNJBPJPOCGU5g5iooAmnJYCQHg/Me+kG6wPXKhNkoXRVkF
sqhG9iXCYmjBexBGh4YdqvQdhKV0wGPlv8BrUdeQzatiV4XNmwP22yBDn2LIy6osgnrucMz+DRHh
W4L9xDWXb1+8euGAgGGSf06RgQLPnvbF74MoaUiWTdZUpQAHFOGAN3CALf+TFI29lUXbYGeCLmN7
uhDluWqLH1URFaBL63lAG1TWl2i1e1T80oStGXHJDi+L20647CUCX07mzaJL5Yj9z2NxHL55CLkc
mi2z2aZsBYhSOxWskR8e+lCqNb2t+bnxFbOQKDYWNKCJJqld1XYkVarWVGkgltJgtClplxW8G8Tq
dBFaChVtTAZEOEar6TlDwwVodOS1x+CMqWPFaJb3S4BEfUJmuEGnhwpOEvUsVnU9Meer4vMK0wsc
yyB3b1Ye1knETt9dC9NTjD9BsyOvaYafqWZxL/IDTZIZnc8kd7m0BlfT0iY7b/UidsBNUeAh/Edu
QWYm5NmXb4MEoUuu2EFmm4uK7Ke1xqfAfacgdV1MsgYyINk+dg+UCpKV4iVgN4mSnELWJKs9I4It
v0B68orr/sbyLX8AK1nOrmhcnr3RNHQMnUSGELsfx+LIKyf3V9WqVrK8G8rM+AMJ29csnelILAD7
3zgJZ6sbVTXHxPxauABNYRXhXDet0/R/Sz/oxEALgO30w5a36uzo5CngeCdtiDcEO/LWQbC8mxCr
WH7YPijR7cuo0ep1EMt1jWK7hkqh5rxfoUanj3MkCS/q8h+qkvqHqni+XpUyVkrv+tacr9iRr9cV
Ox6AvEqV9CULFXr9QQPHWxn2Z8JBR5oyS6VJ3TwP4zvds/L+h9jvoVxKpijdtwXSEzPSt6YJcau8
wxbQ/AzRof1pFZ5TVOTDgdq0WytOqdYZfffNpZcmTx5OBhCHX0fjFJzY8qxENRYdlCRFkdmoP1Z+
uLqpqbAGsDdkElt9qImYA9oZzbFORVO36M9CV3lnE/6oxA/ICBxKokkCHd5GknVkLTqRYRiPiSjg
CAwSiOteJXjsmhg0d7W7R+wyWAzuB9d8tfFqyk1oh+uG745/2nzlk6pLdDT6LKLpvYb3s2bAPBPc
AtaaRq2nIkYaZZRVmQdoKZfekzqVx9afmD6KMEHEXHB2U39Jnv7rcPUUWZH072Cx11d5Vbt3Q0aO
kKRJ2QJbuMD6LdWH6sqbKVPKrR1Mz89txrYXoy82mEIKkXYosdfI78g7QteUl9Sk+JNk56IHiyrk
PsfeKuJqMwdmkDECccA2dFTgaJg5W0XdDPE34thHcx7FPIoyotmjgEfrjeubrTH3PqAc7tvyTId0
jnJbZWK9f5JaGxog8NWRhQlB5bMcyfCl0z3WlK2p26yKCE3bCHGQlLWyKWy71j0OPDm/c26UGT3u
XLpxKOXa/CMCvzjyoM8iGOMYRbU7XR+Qo2mAfZCftTc7l+P7Rca0ns6ocsTh5+7cEKMPJxWrDhWX
ZxboM9IzkiGN4/tERpckVFeXlO4XSNhY5WqYP0ngL0ZOgk9OnIBP7t+H+atVaN7VX7k+eBmxIf1W
trZevgZFAvZW1KI5LFS9gAbxRddDTdB0yijpmqyv04xaGtHLeBldNhlt+Z1una0pylzYl5CUsT1V
J6SFLNQlwmbYBMGXqOBo8O3rLTgSZQ5/glMgDqLzWVLFYX1uk3CQmJdN+wk4fqbbb/XY51Oae+xQ
UvdIRo15L/bw+g/nA+fnv2FVml6Tma4ilpe0OBbuUBv98OjNM4/a956As3An/uSbHD9R0zDfMGWx
AxHISWW0ZlN6JHBLU+sKD9SUHj54RONZpnrps18x0z+t9q3XrLbfkpBYQYc/KfjHfxTUU/8vr71a
Y0JhrRFru33LIMBBv1GLNfgUFZ7OXx4qK6juxOl2btcJ6erw2E2wCJJvph/LKEj5TLd7242ltYHF
yB06/RF8zHWQXvfIYqHLirLN318C10iBS80wBa7xBXBrsTdbBMehdkNdKJ3N3eE9WHljw/HYq7ua
gfv7nh+KVUSURil94G0yVSAcvb+PAqdkTvei+ZDNjHrpfv4LJ1h/gxOIBTK2fBU22ogLJReWv0Dc
TQm49E/TY2Ew5+0+kzqULaH1gYGhoYGB9aEtLfX1LT3DCnUSgS0S2yK7/hg/eyyXbmKAkrbHO3cn
lJIRtXZr83yOwBWu5eDVX7/u2EAGVQpZMZDx0u3g+90mIUWn26kRVgcsaV2Qt4qq49jZY4YuOOxf
HqtqW3kkFWUx9+mYVRG3N6mKNgi3KmrusJlkbBmOShF0+2B37Evjs6Db+ORlZubkCq2tH6/8Ka0Z
7HHqVTTvUL3gIzqZwDlJ3x29Dw44RhPAmBJQi2VBSknDEk9T9CVQAXszKnbBdojjuoawK5JmL9qa
kpmVJJQW7S6HvVx91IH1Aj8/JDpyvYpP9r684Zv2h2eeCfzAzsFmf05TZzPF4B1RdkzEVDpWpdCx
KkOaq4wzudMpijiSRjU2D83z7+Jw4G533SGuasVZA2WYS/Sgv86aCu8q3fmKxWGQ/24+UfQM8bSU
P54LEHF5j5vFJaZYKqV7NmIiGwjarO3FZDqut0ObjqKCvJxPwJ6Kops2MhqiHHknwnZPzV6VYNDm
ppAlZJSd5M/yeX9qgX4G7N/dAjxbU5mbXVbUQazt8nYUx4OWS06gA7KaPZT5vX43GOGI7kiGSWk2
t5i2ax6/UGYa80fdwuzU2f5CmN16hHnkH4T57uvC3J+l5CFbSWRkdgbanhf4CdJkkyMzfZd6Mke+
+Q+ubCxL7Kltk+Fa9P6OSo2lIA2gd74UXqeXwvsC/3TANZEBZ0rWUWylRNDpyPKf/Sluy+7+Pr3s
9a26oBc/tnzb83dfcMhTv+bhE5av8I8S4n8abwiByeC9OsyTM+3d3f3Pe3fft109UhE/4xWf/IdL
dClmVfeZPXGdjqJs/yCzzXLTHrQpm5G60IzVEAILYT3NBlsFJ6FGQ9y6fOyIh7Ta/JGoCNG6Ug8b
DNMglN7RzjYPIYPI3/63q5j6D1n21lduKbsY3SVfO3Tv8n397FbpZ7vsEn1mraEssxyKTdavO784
Ae1wguwuTpDjTqnXn3mDNP+bJun+riSLQ9/u77rJMVv6WPnZuvNL/D8IDVx7IOR0RVnu3mIhjZh5
LI1N3KXdpYVUbmfBztwilH2HTj1PIIYrz3tdkeHAK3JsJQbllWHPe/31Cpn630nsq23Xp+IXyJca
ZaaOWYeM3DSmzpXGsGROmm6XOXF5orj3acOPNeXp2yuFxLTIRFjLBddEGY/WVDWfCbhOehErMjyY
9BZcXs0ulga07K7cU5zP7s+GUBX59BWCupc162Vg0+VoqFV+uuHCq7jqykoMBiGFyBb4xiWkpWu1
VNNNce39Wzuq/iUsJQ3Lm4b1PIlM9frrf/ca5mXaD9ixjEH3x7I9eFGON9Fd+ZhcHM2+qkZPJe78
GwKXPqfdkCZej5fhDuxLJ1DqXJykW2wF5EdpMiA1WZjhPZzOLly8ukxRDOf0l0q5riKiUrPHDc+g
jR7P4LjWtO9L7RZewCENovUFFLJRMOBwJxRs+RKpCKOpzdDGJ7+/LVWT5gZb6eDqohAbz7ScOMzx
z1Fx77r40AHZYV9QG9DfdeEbi08m7a9rqjh1Jqg4KUuo2d9QYASuvXWe29yQeR5zqHMmQdt3UBMS
b5/A8qnSLAV9vaalDl1nNuLoxs9xcEOj9deockVVAA4GHGzLC25SJc5XwrnwdipJn5XfugDt3O2Z
V+kL+05//93A2siGE1V1Ry8uK9ilF+oPHs+tBe5bw/sbt+uI7bA01ZqMDF26bqcuY6dp2rLSJOTD
PoFvYI4rUAaj/NQwYljU8qxDq1SH86qqoJnjzzInwmoDgkIj/d54vAiVAu/E4Lxbv/5F1Z1wlInS
Cprxe6bdIKq7o1H2WBwtTWUPZOyOiNPpknYI5Leu98zV2EzZz8y0qfSX7v8kfN/9n4T1VF8JKBDw
mnl35Ffo5Dvc+ANa1cXT5DsEo8MDHGrLn6SZ91ciO+0nMjLcVxumFtCOPZhekHGEOn7nH9G8Kiej
YIdWB7s0Ku9Y37RAmAm+pVF5ydTMaIHbBpqtKnKCpfxesSczKzdHaGw9m09HjAcw6V13cCH9Yjx3
XwhS8ReNmTX7mx0+DNwbk7Q82evNO2+iFU5+8gNaCN3Lw2to9ZbxJFpVN1qfpI7Cy2SSnWhBgpTo
5HyL9KdCGksHwKCZXCkLqChvydm7XzxrvEKHxNP74Ii2cvP69IRI2MRtqIxobNxf3XA16JqJwKZO
Ibun5b3bPFcQZ34Vc4NGpXr0DTqoyKBMpTPMcl4e2VicImytg1uwj8MBZ8VzD8HNxbSo/DjpAA6o
ozVYhgPk0rlOOyUJVGwG4rJ7W1Zcli4vI59TK0JJDhXm/K/27MnKLMi+CyX0DdMVCbFb4hJixxCz
2cQRyEjO4zxkF4u7PxZaWThpOJkj5n1Sfqm+GcfjfLv8AsiEeu5FGsY3Sg6NspPtH7Xj+HY5jX8R
HZOYt8SVB28Ya4/DRe63CSeIgqg8po0J2Od5J0B4a12AN8ziSH9k/FCJk+/ex16CE95SwsqoDQHh
ZPQ9u615ESVwhLvxQ07TvVNr5gnlXX2Vb7lu9R7lffrOnQ9b6ssEHDzzePTROFhl372KchzQZsRn
jbLbtF8X4WDTOr5RfgJYSHaSoSPfIXSc/sUNLevFnBsNQiwL7smLkzYkBgeungsJsD5zU1mh4WgR
nOCObD4YHBwTFTLvtDfK0QbfuId5Ahn8i9IzasRbY+HLX5/A13+/VOm7M0so3AhLYANnoSmQFufh
6vL8AoXYBxV9hT5mSyP69YZ+fQ8bDHp9ZpY+J+fI5X79xOxje7ILDLk064Z+/RnmfwCtqlDSCmVu
ZHN0cmVhbQplbmRvYmoKMTEgMCBvYmoKPDwvVHlwZS9Gb250RGVzY3JpcHRvci9Gb250TmFtZS9V
RFFTR0krTE1Sb21hbjEwLVJlZ3VsYXIvRm9udEJCb3hbLTQwIC0yNTAgMTAwOSA3NTBdL0ZsYWdz
IDQKL0FzY2VudCA3NTAKL0NhcEhlaWdodCA3NTAKL0Rlc2NlbnQgLTI1MAovSXRhbGljQW5nbGUg
MAovU3RlbVYgMTUxCi9NaXNzaW5nV2lkdGggMjgwCi9DaGFyU2V0KC9BL0IvQy9EL0UvRi9HL0gv
SS9KL0svTC9NL04vTy9QL1EvUi9TL1QvVS9WL1cvYS9hdC9iL2JyYWNrZXRsZWZ0L2JyYWNrZXRy
aWdodC9jL2NvbG9uL2NvbW1hL2QvZS9laWdodC9lbWRhc2gvZi9mZi9maS9maXZlL2ZsL2ZvdXIv
Zy9oL2h5cGhlbi9pL2ovay9sL20vbi9uaW5lL28vb25lL3AvcGFyZW5sZWZ0L3BhcmVucmlnaHQv
cGVyaW9kL3BsdXMvcS9xdWVzdGlvbi9xdW90ZWRibGxlZnQvcXVvdGVkYmxyaWdodC9xdW90ZXJp
Z2h0L3Ivcy9zZWN0aW9uL3NldmVuL3NpeC9zbGFzaC90L3RocmVlL3R3by91L3VkaWVyZXNpcy92
L3cveC95L3ovemVybykvRm9udEZpbGUzIDI1MiAwIFI+PgplbmRvYmoKMjUyIDAgb2JqCjw8L0Zp
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
9nUvjq2VRqnChHWCMjWwOl4VA/EQy2AaeyBj+vHt1k+O1YQDNyBExy8pRr65GTqJoc+Vvlwfo40b
7fv1hn59dakaoSEyNRrthX799C3aDE2GVqtNz0jr15+i/gdeIeNPCmVuZHN0cmVhbQplbmRvYmoK
MjcgMCBvYmoKPDwvVHlwZS9Gb250RGVzY3JpcHRvci9Gb250TmFtZS9ZTllXVk8rTE1Sb21hbjkt
SXRhbGljL0ZvbnRCQm94Wy01MSAtMjUwIDg4NSA3NTBdL0ZsYWdzIDQKL0FzY2VudCA3NTAKL0Nh
cEhlaWdodCA3NTAKL0Rlc2NlbnQgLTI1MAovSXRhbGljQW5nbGUgMAovU3RlbVYgMTMyCi9NaXNz
aW5nV2lkdGggMjgwCi9DaGFyU2V0KC9BL0MvRC9FL0gvSS9PL1AvUS9UL1YvYS9hc3Rlcmlza21h
dGgvYi9jL2NvbW1hL2QvZS9laWdodC9mL2ZpL2ZpdmUvZm91ci9nL2gvaHlwaGVuL2kvay9sL20v
bi9uaW5lL28vb25lL3AvcGFyZW5sZWZ0L3BhcmVucmlnaHQvcGVyaW9kL3EvcXVvdGVkYmwvcXVv
dGVyaWdodC9yL3Mvc2VtaWNvbG9uL3NldmVuL3NpeC9zbGFzaC90L3RocmVlL3R3by91L3VuZGVy
c2NvcmUvdi93L3gveS96KS9Gb250RmlsZTMgMjUzIDAgUj4+CmVuZG9iagoyNTMgMCBvYmoKPDwv
RmlsdGVyL0ZsYXRlRGVjb2RlCi9TdWJ0eXBlL1R5cGUxQy9MZW5ndGggNjc1ND4+c3RyZWFtCnic
rXkJWBRntnZhS1saNInYSiemihh3xz2j0SSTuETjvgGKiIgg+750Q+8rvZzem24aaPZGoNk3QXCP
UWJcEkezj1kmk8RJMsm9Mzdfk+Kf+38NmElyb+7kzv/L8/g8NF1V5zvnfc9531MBxMQJREBAwCM7
d+3PTI/NWLd0W15sWnKc/7P5vscDfLMn+J5gHWJM308eVgRCEAuCJl6cPefQdN+kR1HxwyjyEWJi
QMDBhAzBpsyswpzkxKS80FUrVqxeuhT/vy70eGHoxmWh22PjUjP5uanJobEZ8aHbl+1aFro7k48/
TA5dmJkRevxEUmxaQmhmQmjYiUOh4Qde2n8gdOv+PeF7Dyxa9rOwHvwam5t3Iic5NzU9Ni+JIIh1
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
OYdCjCVGl6Hk1o6QqgKr2oYnH9ddUYG5nl/j2+REeYbyGrZnyvWHqCkTw8JigiZD0EMek9FgMJoN
5k63Iyio21BpMBksBqPDaAmaShD/F5JyA7AKZW5kc3RyZWFtCmVuZG9iagoxMyAwIG9iago8PC9U
eXBlL0ZvbnREZXNjcmlwdG9yL0ZvbnROYW1lL1NVT0JaRCtMTVJvbWFuMTItQm9sZC9Gb250QkJv
eFswIC0yNTAgMTEzOSA3NTBdL0ZsYWdzIDMyCi9Bc2NlbnQgNzUwCi9DYXBIZWlnaHQgNzAwCi9E
ZXNjZW50IC0yNTAKL0l0YWxpY0FuZ2xlIDAKL1N0ZW1WIDE3MAovTWlzc2luZ1dpZHRoIDI4MAov
WEhlaWdodCA0NTYKL0NoYXJTZXQoL0EvQy9QL1cvYS9iL2JyYWNrZXRsZWZ0L2JyYWNrZXRyaWdo
dC9jL2QvZS9mL2cvaS9sL20vbi9vL29uZS9wL3Ivcy90L3R3by91L3cveSkvRm9udEZpbGUzIDI1
NCAwIFI+PgplbmRvYmoKMjU0IDAgb2JqCjw8L0ZpbHRlci9GbGF0ZURlY29kZQovU3VidHlwZS9U
eXBlMUMvTGVuZ3RoIDI5MDE+PnN0cmVhbQp4nI1WCVAUZxbucWC6QSRKOxxBuwcV4wGKR6Jm44mC
F4qiQoLHzCiXIKMgIMgt1/AYcAYEA4IcSjjGIAKNShYRE1MRjSZRK1Wr0Ry7ZhOTjRJ9jT/ZbA8k
WTeb2trqmq7p/l//r/s73nsyymoEJZPJXljrt1G3RxM9a7bnMl3ULsutl0RXmThuhDheDqRwnFXs
QKY12MnBzuriuFELHLB6DEa8gGtHU3KZLDAk2lu3NzEmIix8v2q2l9ccT0/pvEClTVQtm6FardkZ
qUuIjYxQaaJ3qVbP8JuhWqdLkG5GqKboolXakHBNVKhKF6raFBKk2hywYmOAynfj+s3+AVNn/Odb
/XZFUZTr0mid996Y2P1xCRpt4s5dIaH+YRFRewKDt1mWJ1DrKX9qErWBCqA2UZupLVQQtYzypt6g
llMrKB/Kl5pFraRWU37UOmo+9Rq1iHKgWGqcBAVlRWVS/bJ1slsjNo44K98lb7NirVqtX7FuVbys
KKfH0EA/ZFbZeNhk2VywDbP9aSQ3cvHIlJGP0Gz/s3yDngIBvQRxe4JsoNtR8KDJkQH7rEr94Vhw
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
QXnp0a59l6DcYqjeTz/qjm5JO8I3VNQVHTPk5UjjSioT/+aBkyffrKrmSMg05TbwmcuxxdRcuHHu
HNz44gvw2caj1eALyvDwDcSZY5enE+ewS619V6CcR4Xi5kepgZY6Pv+Xzqbu/hwnOUjGJUy/E3sC
mx0FP3E6zb5LFlnEePm5lnZDGo/egj4LS6zz6+KPyvaIphBt5O5d2lNRre3N5jPcr/uKD4cqurW0
42k8I00/AzwtNcnnisd7Qzt+LO1YDx8PzzLyxqFXqjfvfm6C2jH8c2KvP3MfnqIe7LpArCZv9Y08
yB2871u+BqZDoF98MDM0UnX+HyPVdZTduXDldE3cwj8YqYZC/leA/Tir/LL4AZUgs8zjTlK9IjJ9
NCyDWIOLmi77ElIA8nIzefLa4EbiK0ZZfyMoIvUzpHEyCqZJQYz6Ht1OKDJ+kCI+0vLfBUW0fqqk
lUjwgJihZcz8iTEmFVo6idQ1TMYKXCZqnNF7UGM8OHS3Cg4XmaowUXzkbKo0GO9ZeokFeFLY+8y+
V4Zje+XYRgqVvROf2ff3kjn/TKb/O2CNFPAsmczZ1P9P+4mb6GHVS9QVCn0JMkxBa7mY4CiQ8eId
ukEPkdzSNURumZUPqKsUb0OPse0oM1hDeDWNWwzWvzyNttiHLt2C7BK6oD+OlYsGjFRqFHnxWf7J
GYeyFkKyVEpmKiTDjkT5Z9e74VsXtFV9TJyJ9bQ1HluE5NqmlupzHVHVUUVc27meompgHnQu8V64
xVur5skekpCRCXpIdEkS59P2aWWifwnuOH6kTCHYomwkZ2u1SWdnA3YjGwoLCgsLDAXFptLbdnYd
RefKDhtKTIWGkiK7URT1Lxf7X+4KZW5kc3RyZWFtCmVuZG9iagoyOSAwIG9iago8PC9UeXBlL0Zv
bnREZXNjcmlwdG9yL0ZvbnROYW1lL1JNWVJKVytMTU1vbm85LVJlZ3VsYXIvRm9udEJCb3hbLTYg
LTIyOCA1MTkgNjk0XS9GbGFncyAzNAovQXNjZW50IDY5NAovQ2FwSGVpZ2h0IDYyNQovRGVzY2Vu
dCAtMjI4Ci9JdGFsaWNBbmdsZSAwCi9TdGVtViAxMjcKL01pc3NpbmdXaWR0aCAyODAKL1hIZWln
aHQgNDQyCi9DaGFyU2V0KC9BL0YvSS9PL1QvWC9hL2FtcGVyc2FuZC9hc3Rlcmlzay9iL2JyYWNl
bGVmdC9icmFjZXJpZ2h0L2MvY29sb24vY29tbWEvZC9lL2VxdWFsL2V4Y2xhbS9mL2cvZ3JlYXRl
ci9oL2kvai9rL2wvbGVzcy9tL24vby9wL3BhcmVubGVmdC9wYXJlbnJpZ2h0L3BlcmlvZC9xdW90
ZWRibC9yL3Mvc2VtaWNvbG9uL3QvdS91bmRlcnNjb3JlL3Yvdy94L3kveikvRm9udEZpbGUzIDI1
NSAwIFI+PgplbmRvYmoKMjU1IDAgb2JqCjw8L0ZpbHRlci9GbGF0ZURlY29kZQovU3VidHlwZS9U
eXBlMUMvTGVuZ3RoIDQxNjQ+PnN0cmVhbQp4nI1XCVRT19a+MeTmCqhIGoXa3kudnnV6tLa1w3vO
I4o4QVWwikgAGRKGECBhCgiEnTDP8xhGEUURKw7UKramVq2obfVva7Wt1tfWdtlzuw7rX/9JgoYO
r+tnZbHWuefcvff99re/vY+AshtDCQQCp/WenvII+RvzNgcGKcP8o8zPZvJTBPxzY/jnhftxHF/5
m4cIHIXgaDfwnLTNGX0+EWkmoHVOlFAgeFsWvlyuiI8KCQqOcXvZ3X3BvHnk/xtue+Ldls138/AP
CJWrokND3Pwj9rp5zPec77ZBriIPQ9xmySPc9gQG+4fJ3OQyt62B29y8t6zcvMVt9WYv741bXpz/
h6hGlhRF/XNpxDa5ImpVdIxybazKP25PfEDC3kAvWVBwyL6toWHhb771r5n/XjTrxdlz5+9SJ74w
laKmUl7UG9RGahO1hfoHtZXypnyo2dTb1DZqGbWdWk7toFZQvtRKahXlTq2m1lBrKQ9qHfUqtZ7y
pDZQU6jnqOcpMcVSHDWWsqccqHHUBGoJ5Ue9Q42hhJQ7QZGyo1IpLEgVvDdmyZhWoavwXbupdgV2
t0SLRJ/Q2+gvxavFPzOezLGx7mPzx/5sv8PhHw61jpRjiuPtcUHjOsZvGW8Y/+WEBROGnZY7FTvd
n7ho4k1nqfNrzr7OtyW7JV2S/0Wd4/l6MN038TNUghY+WMind0g7I0HNxtPYnq9Ob0stCgHXVDoE
UtPSw7D9cLVLPK1RQOi+ZqjkkICuMEJHpxKCubr7IjSfrpsnClbCvlAjVDzZ5fAStFWKJ9LNSNyJ
5uceZvS0IabYV5/OWJyjAZOXyfn+ENo4NFnSx5eRABSgYXchFf3Djr43/HYm7AtkJZdbsqv2sIvp
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
NzA1Ci9EZXNjZW50IC0yNTAKL0l0YWxpY0FuZ2xlIDAKL1N0ZW1WIDE2OAovTWlzc2luZ1dpZHRo
IDI4MAovWEhlaWdodCA0NDIKL0NoYXJTZXQoL0IvQy9FL0cvSS9KL0wvTy9SL1MvVC9XL2EvYi9j
L2NvbG9uL2QvZS9lbWRhc2gvZmwvZy9oL2kvay9sL20vbi9vL29uZS9wL3BsdXMvcS9yL3Mvc2xh
c2gvdC90d28vdS92L3cveCkvRm9udEZpbGUzIDI1NiAwIFI+PgplbmRvYmoKMjU2IDAgb2JqCjw8
L0ZpbHRlci9GbGF0ZURlY29kZQovU3VidHlwZS9UeXBlMUMvTGVuZ3RoIDUxMzE+PnN0cmVhbQp4
nK1YCVQUZ7autqUtl3GdHmmTVBGTGDTRMZq4JGOiMYzGDXfUOMgmi83SIEtD03s33V239w1o1pa9
AQUEARXRGKNGEzQxZo/GrM55Oe+9yWT+IsWM72/AiZk3yXPmvMOB01RX1f//9373u993ecTYMQSP
x5u2YePWjLTY9KcWzn85OzY1JT54cQ77AI99cAz7ED+Ls/7ADmpCYBIfJo199cFZrunozWmoYAqK
nErwebyoJMnqDEl+VkpScnbYooULF8+fj/8uD4vLD3txQdi62HhxRt5BcUpYbHpC2LoFGxeEbcrI
wxdTwsIz0sPi9ifHpiaGZSSGbd+/K2zHtoit28LWbI3csXnb3AX/uK2//08QxNz0FzNWSzIjsg6u
yc55OXddXqw0bkN8wv7IpOStKdu2i1PTop594qHfPvWbRQQRSTxCbCYeJbYQW4k5xDZiOxFO7CB2
EvOIKOIJYhfxIrGbWE3MJ14iIojfEwuJtcTLxGJiHfE08QyxgdhIbCKWEQ8Qk4h0YioxnTARM4h5
OG7EWKKPt4/XPWbJGMQ/NNYQMjHEIIgUXB5XOO57Mp38dnzPhE0Tx00snTR7ku5XK391ePKUyXVT
oqf+fur1aY3Ts2asn3H2133CWuHXv4mcuX2mO3Ra6POiMahl8p0xi5YRKj87389jZ5ytuMBnP0WP
CD1a0CnAVGigtBLJ3C1A5jK+0lpPnauGrjrdicbCOfKT7f49y1+JlCoo3cmUphhIgrxsWZo0XrEJ
gFR7wF5iNvvtVMXVypMBIOsgXSUzSg0yeiV32qRnisAoUrkKq4rLnZVO6ih62u53VNv9opJTYC5v
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
bWUvWlpGR0pVK0xNU2FuczEwLVJlZ3VsYXIvRm9udEJCb3hbLTYxIC0yMDYgNzc0IDcxNl0vRmxh
Z3MgNAovQXNjZW50IDcxNgovQ2FwSGVpZ2h0IDcxNgovRGVzY2VudCAtMjA2Ci9JdGFsaWNBbmds
ZSAwCi9TdGVtViAxMTYKL01pc3NpbmdXaWR0aCAyODAKL1hIZWlnaHQgNDYxCi9DaGFyU2V0KC9B
L0MvSS9NL1AvUS9TL1QvYS9iL2MvY29sb24vZC9lL2YvZmkvZy9oL2kvai9rL2wvbS9uL28vcC9x
L3Ivcy90L3Uvdi93L3gveS96KS9Gb250RmlsZTMgMjU3IDAgUj4+CmVuZG9iagoyNTcgMCBvYmoK
PDwvRmlsdGVyL0ZsYXRlRGVjb2RlCi9TdWJ0eXBlL1R5cGUxQy9MZW5ndGggMjkxMT4+c3RyZWFt
CnicXVYJVBPnFp4hZCYiUCVNSJROcKtojwpYN5RXZC1RIGxiVSybQAgSQBZREKyiwA+4FGQRnwIq
iorUBdwXwIiCC6JgFFEKWq27x3on74fjmyie19ecOZPz3+Te/y7f/e4lCUMDgiTJ4fM9fINjVthY
T/JZFpEYHRyvF37LjiRZCwP2G54nDtGV6oL4yJiHjA0vWhgXmcHZ4ZDwFXgOI3gkGRChdlLHpsQr
IyITLG2tradOmsS9Z1mGpFg6TraUB4eq1MkrVErL4JgwS/lkj8mWnupkTqi0tFLHWIYsiwyODrdU
h1v6LVto6e/r4uNr6ebj5a/wnTD5n259ORMEMXZujNopNi5+RUKie1Jy8MqQlFCPVWHLwhUR3pFK
3yg/VfRyOwuCGE14EQpiLOFN+BC+hB/hTywgJhIBxELCkfiJcCIWEc7EZGIx4UK4Em6EDfEjYUu4
E3Lie2IeMY2YT3gQnsRIYjkxjssTYcgZySZukO5kFfnR4DuDcoMeHsObzovm3Ta0M0w2fMCfxk/l
36PE1CqqkzanAwUWgm2Cu0PIIelDrhrxjKYZeRhVGjUOtYSDph8NSquJXUkQ1Mi6JpNV7AeezkyM
S3Ry/lQKlwzI+XeouxDEh3qqEwfxJ0CxCOdS52BM+GjutUtT/WhrrSCXykvbGl/hLuCsGeqtsUwz
2aWFRVoe6yaGc/S11CfY1GaR27pM5pZT/wItZNPXdnd3Ps91VjG4njZlszJa4HUzuV8LhzkdJcSK
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
q97P7ASj+8w6+mZy0G0Ga472OTKmhdbd7FVRn62tHurf5ROJN+HANdh2jWy8B7/d47EbwVuEWqNP
J1YuORtVMKXCu2T1puV71m9R70P1As3Fy388PB0VXcuU3vc76FfmqG/v7ydYBZUEHw2WHV9an65J
e5RUmFUVv3NVeRQKErj7uVuH2BTemsGk2vX63U+7iqQg+eMNGOgZyoib68Et7INPfh7qSOvTN5kz
zFeIWOTQX0gLN//osyFFvaJwVyKT5HlafTJzD5IKDa9eOf9MJhyr4xv20UIrW1v9dNmnh7yO12oG
Z/pQn7nwkU6i44la+9/LYcSXHn88YNinM6SEij6Kk+RwEs6Hp72DQ+5hO49VibEP7IY54MC3ofDP
OIzPLnUakN+EUfT9brDGCfwvydVrdHGtZa0nhE9jkTci7n+r32L9w9MF6kt2ffVjbOIVoPYPZ+I6
XbaokBNaEhIbIWgfXAVv7O2683SzfBlXu38cB4cw6obqbvJFNw9+hAFR98yZdDf+/M0FLrEY7HWT
5rTuhc1mbzpgKZfFW2wgy376z71+VvS58jNYsegSNqGFL8CEbjlcuntX+fqMMuYGnZkXXxCDBHMV
LuNl1l+YgTZNLGcVZRBQvr2cajbSDmWMDP38fjYegoyHHi3N5T55+dxTaGzcVJyXn68/c0djE4L4
L5AzEFgKZW5kc3RyZWFtCmVuZG9iago2OCAwIG9iago8PC9UeXBlL0ZvbnREZXNjcmlwdG9yL0Zv
bnROYW1lL09UVlpLSCtMTVJvbWFuNy1SZWd1bGFyL0ZvbnRCQm94WzAgMCA0NzMgNjY0XS9GbGFn
cyA2NTU2OAovQXNjZW50IDY2NAovQ2FwSGVpZ2h0IDY2NAovRGVzY2VudCAwCi9JdGFsaWNBbmds
ZSAwCi9TdGVtViA3MAovTWlzc2luZ1dpZHRoIDI4MAovQ2hhclNldCgvb25lKS9Gb250RmlsZTMg
MjU4IDAgUj4+CmVuZG9iagoyNTggMCBvYmoKPDwvRmlsdGVyL0ZsYXRlRGVjb2RlCi9TdWJ0eXBl
L1R5cGUxQy9MZW5ndGggMzE5Pj5zdHJlYW0KeJxjZGBhYmBkZBT08Q3Kz03MM9cNSk0vzUksAgmq
/JBm/CHD9EOWubv7R+5PHdZuHuZuHpYD35cKfQ8S/O7P/91HgIGZkTE8Pd85v6CyKDM9o0TByMDA
WFcXSFoqJFUqOOkpeCUmZ+eXF2dnKiTmpSh46fnqKfjllwMFMxU08vMUklIzEnPSFPLTFEJSIxRC
g12DghXcg/xDA4I19dAdBeMzMDAwGjIwCDEwMTKy+H1fw/efybKQoXv9jyXru9cvLxf6PumOuPCO
H7li61PZ1btnrJH/sY99WWdPvpy3j0FXUjeH8Il09sXdZ7sPLef4M4k9q7tOXS41ne27Wz8rX/n8
H86zvudNnTKfbT3XLW45LpaQfB7Obh7upb29vT19vZN6J61ewcOzfGLvpv6e/kn9k/sn8fAyMAAA
53lzggplbmRzdHJlYW0KZW5kb2JqCjIwIDAgb2JqCjw8L1R5cGUvRm9udERlc2NyaXB0b3IvRm9u
dE5hbWUvR0hUQ09DK0xNTW9ubzEwLVJlZ3VsYXIvRm9udEJCb3hbLTQgLTIyOSA1MzcgNjk0XS9G
bGFncyAzNAovQXNjZW50IDY5NAovQ2FwSGVpZ2h0IDYxMQovRGVzY2VudCAtMjI5Ci9JdGFsaWNB
bmdsZSAwCi9TdGVtViAxMjUKL01pc3NpbmdXaWR0aCAyODAKL1hIZWlnaHQgNDQyCi9DaGFyU2V0
KC9GL0kvVC9VL2EvYW1wZXJzYW5kL2FzdGVyaXNrL2IvYnJhY2VsZWZ0L2JyYWNlcmlnaHQvYnJh
Y2tldGxlZnQvYnJhY2tldHJpZ2h0L2MvY29sb24vY29tbWEvZC9lL2VxdWFsL2YvZy9ncmVhdGVy
L2gvaHlwaGVuL2kvai9rL2wvbGVzcy9tL24vby9vbmUvcC9wYXJlbmxlZnQvcGFyZW5yaWdodC9w
ZXJpb2QvcS9yL3Mvc2VtaWNvbG9uL3NsYXNoL3QvdGhyZWUvdHdvL3UvdW5kZXJzY29yZS92L3gv
eS96L3plcm8pL0ZvbnRGaWxlMyAyNTkgMCBSPj4KZW5kb2JqCjI1OSAwIG9iago8PC9GaWx0ZXIv
RmxhdGVEZWNvZGUKL1N1YnR5cGUvVHlwZTFDL0xlbmd0aCA0MzY4Pj5zdHJlYW0KeJyNWAlYU9e2
PmE4OQWU4RgF9Z7DtXVoVUStXodqcQAFFatMigoiQiAMgTAFkgCGmR1GI/M8GGax4oxFa8VobY0W
bfu19nagdWq1fdf39vFu+31vh4TB1tv34CR8+5x99l7rX//619rwCDMTgsfj2W7dtk0cLV7svHBn
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
GLcyAZrngSzWrPGAFnAenKN7cmfo1ptorgEkeEF/GQXfT9AmUSnxgb8QHAMdFFzGBy25fd7tJ1uq
ulQtFLTHY3Ci8HDt8R8KegBVUl/SjOOX7Ip4qUtT2PwssBuIqcV8IARyoUwo352PD95ZSVlxUc35
R9jWfMjLLfCh0Co+iAIBA9En4z/MPA+o2uaxyjNZCycn8WA2tsXTWHycuRpS/y8DaVZaWjYTstwv
XZony0/MwxtJarOr6vpKjp9mXqxy5o+VXVg0oRDhemk3MIzJF40bklwusk/QajwSSMUMUpK0zeAH
j++eOkHRD65fPvvxV9Oh1Zy7aDKyeGfl8lBNek1DU42mPLtCWcpUnT3X8SGg7n2xb6mr/w53bxbF
Ik9lRlY2UDhEtoBqhi6G97HIjVLoD9DiMLXHqQ4xcSpkUpB3mYKr+UADzvi17WndWhQGqBRcnmLr
crBAMXkYPxGFMPjBVRGn4r0i8vaCHAq58XGfJESz80YgxVvWfP+o/usqVlUCLgAN9SMfx6zqWPWx
qvOqZkNsjCWh4GPor7U7Pbx9uGIYWuiCMRLRXDxcLwC39w66t18+pvkIXKLurP8U8ZGV6x43UYui
Xu93ZdaR3EKmo+O2/nh+84IwIEoeFpPARsRK8oR5O3PkAERT+sRhzpL0kScfbN7h6bXVOXht2blY
tri4FB+YqGZpvSQ+QR6x5OcduFGa9u39B8zk9DJuQxlcU1ZURmotdJaMhZm32Oo1YGV5vLpEpf8p
ri8qsbLqaSgoKlXVqY5c6jpiNYkg/hd7gwCWCmVuZHN0cmVhbQplbmRvYmoKMTI1IDAgb2JqCjw8
L1R5cGUvRm9udERlc2NyaXB0b3IvRm9udE5hbWUvUkVWS0xDK0xNTW9ubzgtUmVndWxhci9Gb250
QkJveFstNSAtMjI4IDU0NSA2OTRdL0ZsYWdzIDYKL0FzY2VudCA2OTQKL0NhcEhlaWdodCA2MjYK
L0Rlc2NlbnQgLTIyOAovSXRhbGljQW5nbGUgMAovU3RlbVYgMTM1Ci9NaXNzaW5nV2lkdGggMjgw
Ci9YSGVpZ2h0IDQ0MQovQ2hhclNldCgvQS9CL0MvRC9FL0YvSS9ML04vTy9QL1IvUy9UL1UvYS9h
bXBlcnNhbmQvYXN0ZXJpc2svYi9icmFjZWxlZnQvYnJhY2VyaWdodC9icmFja2V0bGVmdC9icmFj
a2V0cmlnaHQvYy9jb2xvbi9jb21tYS9kL2UvZWlnaHQvZXF1YWwvZXhjbGFtL2YvZml2ZS9mb3Vy
L2cvZ3JlYXRlci9oL2h5cGhlbi9pL2ovay9sL2xlc3MvbS9uL25pbmUvby9vbmUvcC9wYXJlbmxl
ZnQvcGFyZW5yaWdodC9wZXJpb2QvcGx1cy9xL3F1b3RlZGJsL3F1b3RlcmlnaHQvci9zL3NlbWlj
b2xvbi9zZXZlbi9zaXgvc2xhc2gvdC90aHJlZS90d28vdS91bmRlcnNjb3JlL3Yvdy94L3kvei96
ZXJvKS9Gb250RmlsZTMgMjYwIDAgUj4+CmVuZG9iagoyNjAgMCBvYmoKPDwvRmlsdGVyL0ZsYXRl
RGVjb2RlCi9TdWJ0eXBlL1R5cGUxQy9MZW5ndGggNjM3ND4+c3RyZWFtCnicjVkHXFRX1n/jwJsX
xcbLIFjeIzHRxBY0mpjEgmCLigUVW1ApQ4cBBoZehg53QHovIyCIIgqCDSNqjIpxEmMbjYkptmR1
o9ls9rzksr/vu1Nwxs3ufp/4A+57d+4995z/+Z//uYgoqyGUSCQatcrNTR4mnzvdXeYfHeIVqX82
SRgnEsYPESaIs3Cs0PP7CmtkI0Y2VmfGv1JjK7w5GspHwspRlFgk2uQX6ioPj4sM9A+Icpzl5PT2
9Onk+3uO3nGOLjMcV3j5BMtjFMGBjl5hvo4rZrjNcFwtjyEPAx3fkIc5essCvEL8HOV+jhtkmx03
rl/ivt5xmfuajWvXvznjX6wyDSmK+nBRmIvcNXxxxJLIpYqo6A+VMV6x3qvifOJ9V8vW+K31D3AP
XB+0IXhjSOj7H8ybNH/ygjfenLJt6jTP6TN2vOWUMHNW0tuz57zz7itzX32Pol6l1lATqbXUa9Q6
6nXKnZpEracmUxuojZQHNYXaRG2mXKgtlCs1ndpKLaa2UUuot6illBO1jJpJLac+pN6mVlCzqZXU
HGoV9Q7lRq2mxlHjqQmUhOIohuKpl6ih1DBqHmVDDacWUCOokZQzNYoaTX1E2VIstZ16mZJSdtQY
yp4aQjlQYmostYLEhLKiEqgBUYrokyHvD+kV24mzrUZaJVmLrOvooXQSfV4yVfIJs4b56qXFL9UP
XTu0Y5jtsAKbCTYqmwfD1w7vHlE4cvTIW6MWjHo82n/0p7abbD9mrdiD7JOXXV6ulgZLe6T/sFtp
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
51wb+hv6jyEt8/W7d4gLhr8z772ZIParzCZecIn5cN3CsdMfOoEd2D18+BPnBIekmzdsd+bYducN
x059fPb4zZtnPbfw1figdJWb+1yOdX939af92stn79y5vHH5YK14poST5CQjn33zTAxRwpfSAxE1
UTHypACuGu9Ux+RHtSGHfSi/SV3NgAf4SjvkVTFREQmB5PWOfKU6eh9yaEP5jep6xhjzOfqwi07p
uvVRF5N4fyaFdGx19Q1sPfE9PByL788E+ofTJ4qKuWQ8cr6TE8pGAUhZzRAJVNMc1xgaGqsM29Dt
8RtwpKd8GTbyc76Srl7hudTZ/cLNu1fOXANxFebCuRGqMsG1DBZUF6hp7VDdMG6o1Qa5zUvIZlhn
i5r8yy9UNxSU2Nh0VlSoC8rU6np1mTDEZjhF/S9hGAv0CmVuZHN0cmVhbQplbmRvYmoKNzAgMCBv
YmoKPDwvVHlwZS9Gb250RGVzY3JpcHRvci9Gb250TmFtZS9OU05MTkgrTE1Nb25vTHQxMC1Cb2xk
L0ZvbnRCQm94WzAgLTIyMyA1MjIgNjE3XS9GbGFncyAzMgovQXNjZW50IDYxNwovQ2FwSGVpZ2h0
IDYxNwovRGVzY2VudCAtMjIzCi9JdGFsaWNBbmdsZSAwCi9TdGVtViA3OAovTWlzc2luZ1dpZHRo
IDI4MAovWEhlaWdodCA0NDYKL0NoYXJTZXQoL2EvYXN0ZXJpc2svYy9kL2UvZi9nL2dyZWF0ZXIv
aS9rL2wvbGVzcy9tL24vby9wL3Ivcy90L3VuZGVyc2NvcmUvdi95KS9Gb250RmlsZTMgMjYxIDAg
Uj4+CmVuZG9iagoyNjEgMCBvYmoKPDwvRmlsdGVyL0ZsYXRlRGVjb2RlCi9TdWJ0eXBlL1R5cGUx
Qy9MZW5ndGggMjM5OD4+c3RyZWFtCnicdVULUFNXGr4BcnNR+pBreCztudm1a6WCYtVpnW61tSj4
tr6r+Aiv8AhJCoEkAhIIguRcAgIJhgQ04akggegWQcbHTqu7PkZBibYWrLudviu1lZ47c7ozexOk
Oju7uZM789/55zv/953v/38BEeBHCASCF9euW6dUKNeqF8REL1fKk73fZnMRAu4lP+5lf4hzuCbu
30IY5A+DAi68NO2LYFQ7A6W+gNa/SPgLBNtTVe8pVbrsdFmaWvJ6TMzC6Gj+vUSSqJMsnydZLU3K
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
X29TXf5mgJWiPKO2DGZSvCR2cHsyb/9k3r3uvp6jtZNZmt+zbN6sJ3zv5HFGjYDL/F4MHQXmolrs
REvDEP+qr20wQ0d4m9qq1R+C+nyAb+Pd+tKCYpgbDgvMB+pL0F28N8ymN0HeZ01Oa9uzcOiSGDYU
Hymqw3fR3rB8C48AKa26UJXbUFxvYJATL8X8v8jgw1M5C5ssPI4NoNtot6XGdzKPhgR5XJxGgLLv
3b3nz+1FcjE8esBcbsqzbmvNsn19Lqyhlreqg6qCrp0A+62p/EVoNvYmJxtTikHlrPkX882HoAGG
5+Tn6tT1pTYD882O+TsKDIUGqA4vh7JBgPyuVswSFrMpbjfbawYVv3yW0L7fBOtgeLPN0ejr7IX3
eTo4UHw6iS0E+ApZmGRMTDxltDLoCmk9xZ5mntdbuDct6E1LlYX0TBubDqYFbFEGBcKg6QPOKtb7
q26qOhwUNFTJsjV8dLSOrQt6jiD+A1TjQiwKZW5kc3RyZWFtCmVuZG9iagoyNjkgMCBvYmoKPDwv
VHlwZS9NZXRhZGF0YQovU3VidHlwZS9YTUwvTGVuZ3RoIDEzNTY+PnN0cmVhbQo8P3hwYWNrZXQg
YmVnaW49J++7vycgaWQ9J1c1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCc/Pgo8P2Fkb2JlLXhhcC1m
aWx0ZXJzIGVzYz0iQ1JMRiI/Pgo8eDp4bXBtZXRhIHhtbG5zOng9J2Fkb2JlOm5zOm1ldGEvJyB4
OnhtcHRrPSdYTVAgdG9vbGtpdCAyLjkuMS0xMywgZnJhbWV3b3JrIDEuNic+CjxyZGY6UkRGIHht
bG5zOnJkZj0naHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIycgeG1s
bnM6aVg9J2h0dHA6Ly9ucy5hZG9iZS5jb20vaVgvMS4wLyc+CjxyZGY6RGVzY3JpcHRpb24gcmRm
OmFib3V0PSd1dWlkOjYxZTk0NWY0LTcxOTktMTFmMy0wMDAwLWY1Y2ZkZDEyMWU3YScgeG1sbnM6
cGRmPSdodHRwOi8vbnMuYWRvYmUuY29tL3BkZi8xLjMvJyBwZGY6UHJvZHVjZXI9J0dQTCBHaG9z
dHNjcmlwdCA5LjE4Jy8+CjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSd1dWlkOjYxZTk0NWY0
LTcxOTktMTFmMy0wMDAwLWY1Y2ZkZDEyMWU3YScgeG1sbnM6eG1wPSdodHRwOi8vbnMuYWRvYmUu
Y29tL3hhcC8xLjAvJz48eG1wOk1vZGlmeURhdGU+MjAxOC0wNC0wNlQwNDoyODoxNS0wNTowMDwv
eG1wOk1vZGlmeURhdGU+Cjx4bXA6Q3JlYXRlRGF0ZT4yMDE4LTA0LTA2VDA0OjI4OjE1LTA1OjAw
PC94bXA6Q3JlYXRlRGF0ZT4KPHhtcDpDcmVhdG9yVG9vbD5HUEwgR2hvc3RzY3JpcHQgOTE4IChw
czJ3cml0ZSk8L3htcDpDcmVhdG9yVG9vbD48L3JkZjpEZXNjcmlwdGlvbj4KPHJkZjpEZXNjcmlw
dGlvbiByZGY6YWJvdXQ9J3V1aWQ6NjFlOTQ1ZjQtNzE5OS0xMWYzLTAwMDAtZjVjZmRkMTIxZTdh
JyB4bWxuczp4YXBNTT0naHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLycgeGFwTU06RG9j
dW1lbnRJRD0ndXVpZDo2MWU5NDVmNC03MTk5LTExZjMtMDAwMC1mNWNmZGQxMjFlN2EnLz4KPHJk
ZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9J3V1aWQ6NjFlOTQ1ZjQtNzE5OS0xMWYzLTAwMDAtZjVj
ZmRkMTIxZTdhJyB4bWxuczpkYz0naHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8nIGRj
OmZvcm1hdD0nYXBwbGljYXRpb24vcGRmJz48ZGM6dGl0bGU+PHJkZjpBbHQ+PHJkZjpsaSB4bWw6
bGFuZz0neC1kZWZhdWx0Jz5VbnRpdGxlZDwvcmRmOmxpPjwvcmRmOkFsdD48L2RjOnRpdGxlPjwv
cmRmOkRlc2NyaXB0aW9uPgo8L3JkZjpSREY+CjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9J3cnPz4KZW5kc3RyZWFtCmVuZG9iagoyIDAg
b2JqCjw8L1Byb2R1Y2VyKEdQTCBHaG9zdHNjcmlwdCA5LjE4KQovQ3JlYXRpb25EYXRlKEQ6MjAx
ODA0MDYwNDI4MTUtMDUnMDAnKQovTW9kRGF0ZShEOjIwMTgwNDA2MDQyODE1LTA1JzAwJykKL0Ny
ZWF0b3IoR1BMIEdob3N0c2NyaXB0IDkxOCBcKHBzMndyaXRlXCkpPj5lbmRvYmoKeHJlZgowIDI3
MAowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAxNjE4NDEgMDAwMDAgbiAKMDAwMDI1NjI2OCAwMDAw
MCBuIAowMDAwMTYxNTA4IDAwMDAwIG4gCjAwMDAxNTQ3NzkgMDAwMDAgbiAKMDAwMDAwMDAxNSAw
MDAwMCBuIAowMDAwMDAxMzQxIDAwMDAwIG4gCjAwMDAxNjE5MDcgMDAwMDAgbiAKMDAwMDE4NzA0
MCAwMDAwMCBuIAowMDAwMTk5ODI4IDAwMDAwIG4gCjAwMDAxODc2MDMgMDAwMDAgbiAKMDAwMDIw
NjQ2OSAwMDAwMCBuIAowMDAwMTg5MTIzIDAwMDAwIG4gCjAwMDAyMjI2MjkgMDAwMDAgbiAKMDAw
MDE2MTk0OCAwMDAwMCBuIAowMDAwMTYxOTc4IDAwMDAwIG4gCjAwMDAxNTQ5MzkgMDAwMDAgbiAK
MDAwMDAwMTM2MSAwMDAwMCBuIAowMDAwMDA1MTg1IDAwMDAwIG4gCjAwMDAxOTExMjMgMDAwMDAg
biAKMDAwMDI0MDEwNiAwMDAwMCBuIAowMDAwMTYyMDMwIDAwMDAwIG4gCjAwMDAxNjIwNjAgMDAw
MDAgbiAKMDAwMDE1NTEwMSAwMDAwMCBuIAowMDAwMDA1MjA2IDAwMDAwIG4gCjAwMDAwMTE2MTcg
MDAwMDAgbiAKMDAwMDE4ODU1MSAwMDAwMCBuIAowMDAwMjE1MzQ2IDAwMDAwIG4gCjAwMDAxODk0
ODQgMDAwMDAgbiAKMDAwMDIyNTkyOSAwMDAwMCBuIAowMDAwMTYyMTIzIDAwMDAwIG4gCjAwMDAx
NjIxNTMgMDAwMDAgbiAKMDAwMDE1NTI2MyAwMDAwMCBuIAowMDAwMDExNjM4IDAwMDAwIG4gCjAw
MDAwMTQyODcgMDAwMDAgbiAKMDAwMDE2MjIzOCAwMDAwMCBuIAowMDAwMTYyMjY4IDAwMDAwIG4g
CjAwMDAxNTU0MjUgMDAwMDAgbiAKMDAwMDAxNDMwOCAwMDAwMCBuIAowMDAwMDIxMDc1IDAwMDAw
IG4gCjAwMDAxNjIzMzMgMDAwMDAgbiAKMDAwMDE2MjM2MyAwMDAwMCBuIAowMDAwMTU1NTg3IDAw
MDAwIG4gCjAwMDAwMjEwOTYgMDAwMDAgbiAKMDAwMDAyNzg4NSAwMDAwMCBuIAowMDAwMTYyNDM3
IDAwMDAwIG4gCjAwMDAxNjI0NjcgMDAwMDAgbiAKMDAwMDE1NTc0OSAwMDAwMCBuIAowMDAwMDI3
OTA2IDAwMDAwIG4gCjAwMDAwMzQ3ODcgMDAwMDAgbiAKMDAwMDE2MjU0MSAwMDAwMCBuIAowMDAw
MTYyNTcxIDAwMDAwIG4gCjAwMDAxNTU5MTEgMDAwMDAgbiAKMDAwMDAzNDgwOCAwMDAwMCBuIAow
MDAwMDM4NzI2IDAwMDAwIG4gCjAwMDAxNjI2NDUgMDAwMDAgbiAKMDAwMDE2MjY3NSAwMDAwMCBu
IAowMDAwMTU2MDczIDAwMDAwIG4gCjAwMDAwMzg3NDcgMDAwMDAgbiAKMDAwMDA0MTU1MyAwMDAw
MCBuIAowMDAwMTg5OTI1IDAwMDAwIG4gCjAwMDAyMzA2MTIgMDAwMDAgbiAKMDAwMDE2Mjc0OSAw
MDAwMCBuIAowMDAwMTYyNzc5IDAwMDAwIG4gCjAwMDAxNTYyMzUgMDAwMDAgbiAKMDAwMDA0MTU3
NCAwMDAwMCBuIAowMDAwMDQzNDkxIDAwMDAwIG4gCjAwMDAxOTA5NTggMDAwMDAgbiAKMDAwMDIz
OTQ4MCAwMDAwMCBuIAowMDAwMTkyMTQzIDAwMDAwIG4gCjAwMDAyNTIwNDggMDAwMDAgbiAKMDAw
MDE2Mjg0MiAwMDAwMCBuIAowMDAwMTYyODcyIDAwMDAwIG4gCjAwMDAxNTYzOTcgMDAwMDAgbiAK
MDAwMDA0MzUxMiAwMDAwMCBuIAowMDAwMDQ0NTYzIDAwMDAwIG4gCjAwMDAxNjI5NzkgMDAwMDAg
biAKMDAwMDE2MzAwOSAwMDAwMCBuIAowMDAwMTU2NTU5IDAwMDAwIG4gCjAwMDAwNDQ1ODMgMDAw
MDAgbiAKMDAwMDA0NzI3MCAwMDAwMCBuIAowMDAwMTYzMDYzIDAwMDAwIG4gCjAwMDAxNjMwOTMg
MDAwMDAgbiAKMDAwMDE1NjcyMSAwMDAwMCBuIAowMDAwMDQ3MjkxIDAwMDAwIG4gCjAwMDAwNTA2
MzUgMDAwMDAgbiAKMDAwMDE2MzE3OCAwMDAwMCBuIAowMDAwMTYzMjA4IDAwMDAwIG4gCjAwMDAx
NTY4ODMgMDAwMDAgbiAKMDAwMDA1MDY1NiAwMDAwMCBuIAowMDAwMDUzNTI0IDAwMDAwIG4gCjAw
MDAxNjMyNzEgMDAwMDAgbiAKMDAwMDE2MzMwMSAwMDAwMCBuIAowMDAwMTU3MDQ1IDAwMDAwIG4g
CjAwMDAwNTM1NDUgMDAwMDAgbiAKMDAwMDA1NjE1OCAwMDAwMCBuIAowMDAwMTYzMzc1IDAwMDAw
IG4gCjAwMDAxNjM0MDUgMDAwMDAgbiAKMDAwMDE1NzIwNyAwMDAwMCBuIAowMDAwMDU2MTc5IDAw
MDAwIG4gCjAwMDAwNTc3OTYgMDAwMDAgbiAKMDAwMDE2MzQ3OSAwMDAwMCBuIAowMDAwMTYzNTEw
IDAwMDAwIG4gCjAwMDAxNTczNzEgMDAwMDAgbiAKMDAwMDA1NzgxOCAwMDAwMCBuIAowMDAwMDYw
NjAxIDAwMDAwIG4gCjAwMDAxNzI4ODQgMDAwMDAgbiAKMDAwMDE4NjQxMyAwMDAwMCBuIAowMDAw
MTk0NjAwIDAwMDAwIG4gCjAwMDAxNjk3ODMgMDAwMDAgbiAKMDAwMDE2NzExMiAwMDAwMCBuIAow
MDAwMTY2NTAyIDAwMDAwIG4gCjAwMDAxNjQ0ODMgMDAwMDAgbiAKMDAwMDE2MzcxNiAwMDAwMCBu
IAowMDAwMTkwNDU1IDAwMDAwIG4gCjAwMDAyMzYxNjkgMDAwMDAgbiAKMDAwMDE2MzU4NSAwMDAw
MCBuIAowMDAwMTYzNjE2IDAwMDAwIG4gCjAwMDAxNzM0NDEgMDAwMDAgbiAKMDAwMDE1NzU2OCAw
MDAwMCBuIAowMDAwMDYwNjIzIDAwMDAwIG4gCjAwMDAwNjQ2OTAgMDAwMDAgbiAKMDAwMDE3NDIy
NSAwMDAwMCBuIAowMDAwMTczNTgxIDAwMDAwIG4gCjAwMDAxOTE1NjMgMDAwMDAgbiAKMDAwMDI0
NTAzMSAwMDAwMCBuIAowMDAwMTczNDg5IDAwMDAwIG4gCjAwMDAxNzM1MjAgMDAwMDAgbiAKMDAw
MDE3NDgyMiAwMDAwMCBuIAowMDAwMTU3NzY1IDAwMDAwIG4gCjAwMDAwNjQ3MTIgMDAwMDAgbiAK
MDAwMDA2OTY5MyAwMDAwMCBuIAowMDAwMTc0ODgzIDAwMDAwIG4gCjAwMDAxNzQ5MTQgMDAwMDAg
biAKMDAwMDE3NDk3NSAwMDAwMCBuIAowMDAwMTU3OTYyIDAwMDAwIG4gCjAwMDAwNjk3MTUgMDAw
MDAgbiAKMDAwMDA3NTcxMCAwMDAwMCBuIAowMDAwMTc1MDM2IDAwMDAwIG4gCjAwMDAxNzUwNjcg
MDAwMDAgbiAKMDAwMDE3NTEyOCAwMDAwMCBuIAowMDAwMTU4MTU5IDAwMDAwIG4gCjAwMDAwNzU3
MzIgMDAwMDAgbiAKMDAwMDA4MDczMSAwMDAwMCBuIAowMDAwMTc1MTg5IDAwMDAwIG4gCjAwMDAx
NzUyMjAgMDAwMDAgbiAKMDAwMDE3NTI4MSAwMDAwMCBuIAowMDAwMTU4MzU2IDAwMDAwIG4gCjAw
MDAwODA3NTMgMDAwMDAgbiAKMDAwMDA4NDYzNSAwMDAwMCBuIAowMDAwMTc1MzQyIDAwMDAwIG4g
CjAwMDAxNzUzNzMgMDAwMDAgbiAKMDAwMDE3NTQzNCAwMDAwMCBuIAowMDAwMTU4NTUzIDAwMDAw
IG4gCjAwMDAwODQ2NTcgMDAwMDAgbiAKMDAwMDA5MDE4NSAwMDAwMCBuIAowMDAwMTc1NTA2IDAw
MDAwIG4gCjAwMDAxNzU1MzcgMDAwMDAgbiAKMDAwMDE3NTU5OCAwMDAwMCBuIAowMDAwMTU4NzUw
IDAwMDAwIG4gCjAwMDAwOTAyMDcgMDAwMDAgbiAKMDAwMDA5NDg4MiAwMDAwMCBuIAowMDAwMTc1
NjU5IDAwMDAwIG4gCjAwMDAxNzU2OTAgMDAwMDAgbiAKMDAwMDE3NTc1MSAwMDAwMCBuIAowMDAw
MTU4OTQ3IDAwMDAwIG4gCjAwMDAwOTQ5MDQgMDAwMDAgbiAKMDAwMDA5OTYxOCAwMDAwMCBuIAow
MDAwMTc1ODEyIDAwMDAwIG4gCjAwMDAxNzU4NDMgMDAwMDAgbiAKMDAwMDE3NTkwNCAwMDAwMCBu
IAowMDAwMTU5MTQ0IDAwMDAwIG4gCjAwMDAwOTk2NDAgMDAwMDAgbiAKMDAwMDEwNDM0NSAwMDAw
MCBuIAowMDAwMTc1OTY1IDAwMDAwIG4gCjAwMDAxNzU5OTYgMDAwMDAgbiAKMDAwMDE3NjA1NyAw
MDAwMCBuIAowMDAwMTU5MzQxIDAwMDAwIG4gCjAwMDAxMDQzNjcgMDAwMDAgbiAKMDAwMDEwODI3
MCAwMDAwMCBuIAowMDAwMTc2MTE4IDAwMDAwIG4gCjAwMDAxNzYxNDkgMDAwMDAgbiAKMDAwMDE3
NjIxMCAwMDAwMCBuIAowMDAwMTU5NTM4IDAwMDAwIG4gCjAwMDAxMDgyOTIgMDAwMDAgbiAKMDAw
MDExNDA1MiAwMDAwMCBuIAowMDAwMTc2MjcxIDAwMDAwIG4gCjAwMDAxNzYzMDIgMDAwMDAgbiAK
MDAwMDE3NjM2MyAwMDAwMCBuIAowMDAwMTU5NzM1IDAwMDAwIG4gCjAwMDAxMTQwNzQgMDAwMDAg
biAKMDAwMDExODY4MCAwMDAwMCBuIAowMDAwMTg2MTcwIDAwMDAwIG4gCjAwMDAxOTI1MDggMDAw
MDAgbiAKMDAwMDE3NjQyNCAwMDAwMCBuIAowMDAwMTc2NDU1IDAwMDAwIG4gCjAwMDAxNzY1MTYg
MDAwMDAgbiAKMDAwMDE1OTkzMiAwMDAwMCBuIAowMDAwMTE4NzAyIDAwMDAwIG4gCjAwMDAxMjQx
NzcgMDAwMDAgbiAKMDAwMDE3NjU3NyAwMDAwMCBuIAowMDAwMTc2NjA4IDAwMDAwIG4gCjAwMDAx
NzY2NjkgMDAwMDAgbiAKMDAwMDE2MDEyOSAwMDAwMCBuIAowMDAwMTI0MTk5IDAwMDAwIG4gCjAw
MDAxMjcxMTkgMDAwMDAgbiAKMDAwMDE3Njc0MyAwMDAwMCBuIAowMDAwMTc2Nzc0IDAwMDAwIG4g
CjAwMDAxNzY4MzUgMDAwMDAgbiAKMDAwMDE2MDMyNiAwMDAwMCBuIAowMDAwMTI3MTQxIDAwMDAw
IG4gCjAwMDAxMzI3MDUgMDAwMDAgbiAKMDAwMDE3Njg5NiAwMDAwMCBuIAowMDAwMTc2OTI3IDAw
MDAwIG4gCjAwMDAxNzY5ODggMDAwMDAgbiAKMDAwMDE2MDUyMyAwMDAwMCBuIAowMDAwMTMyNzI3
IDAwMDAwIG4gCjAwMDAxMzgwMzUgMDAwMDAgbiAKMDAwMDE3NzA0OSAwMDAwMCBuIAowMDAwMTc3
MDgwIDAwMDAwIG4gCjAwMDAxNzcxNDEgMDAwMDAgbiAKMDAwMDE2MDcyMCAwMDAwMCBuIAowMDAw
MTM4MDU3IDAwMDAwIG4gCjAwMDAxNDM0MzcgMDAwMDAgbiAKMDAwMDE3NzIxMyAwMDAwMCBuIAow
MDAwMTc3MjQ0IDAwMDAwIG4gCjAwMDAxNzczMDUgMDAwMDAgbiAKMDAwMDE2MDkxNyAwMDAwMCBu
IAowMDAwMTQzNDU5IDAwMDAwIG4gCjAwMDAxNDc2MzkgMDAwMDAgbiAKMDAwMDE3NzM3NyAwMDAw
MCBuIAowMDAwMTc3NDA4IDAwMDAwIG4gCjAwMDAxNzc0NjkgMDAwMDAgbiAKMDAwMDE2MTExNCAw
MDAwMCBuIAowMDAwMTQ3NjYxIDAwMDAwIG4gCjAwMDAxNTIwODcgMDAwMDAgbiAKMDAwMDE3NzUz
MCAwMDAwMCBuIAowMDAwMTc3NTYxIDAwMDAwIG4gCjAwMDAxNzc2MjIgMDAwMDAgbiAKMDAwMDE2
MTMxMSAwMDAwMCBuIAowMDAwMTUyMTA5IDAwMDAwIG4gCjAwMDAxNTQ3NTcgMDAwMDAgbiAKMDAw
MDE4MzA1MiAwMDAwMCBuIAowMDAwMTgwNDM2IDAwMDAwIG4gCjAwMDAxNzk4MzIgMDAwMDAgbiAK
MDAwMDE3NzgxNCAwMDAwMCBuIAowMDAwMTc3NjgzIDAwMDAwIG4gCjAwMDAxNzc3MTQgMDAwMDAg
biAKMDAwMDE4NjEyMiAwMDAwMCBuIAowMDAwMTkyNzc0IDAwMDAwIG4gCjAwMDAxOTUwNzYgMDAw
MDAgbiAKMDAwMDIwMDI2MCAwMDAwMCBuIAowMDAwMjA3MDA5IDAwMDAwIG4gCjAwMDAyMTU3ODkg
MDAwMDAgbiAKMDAwMDIyMjk0MiAwMDAwMCBuIAowMDAwMjI2MzYyIDAwMDAwIG4gCjAwMDAyMzA5
NTIgMDAwMDAgbiAKMDAwMDIzNjQ4MyAwMDAwMCBuIAowMDAwMjM5NzAyIDAwMDAwIG4gCjAwMDAy
NDA1NzcgMDAwMDAgbiAKMDAwMDI0NTU4OCAwMDAwMCBuIAowMDAwMjUyMzUwIDAwMDAwIG4gCjAw
MDAxODY5MTkgMDAwMDAgbiAKMDAwMDE4NzUwNCAwMDAwMCBuIAowMDAwMTg4Mzk0IDAwMDAwIG4g
CjAwMDAxODkwMDggMDAwMDAgbiAKMDAwMDE5MDM2MCAwMDAwMCBuIAowMDAwMTkwODczIDAwMDAw
IG4gCjAwMDAxOTIwNTAgMDAwMDAgbiAKMDAwMDI1NDgzNCAwMDAwMCBuIAp0cmFpbGVyCjw8IC9T
aXplIDI3MCAvUm9vdCAxIDAgUiAvSW5mbyAyIDAgUgovSUQgWzwzMTEzMTZDNkQyNzA5MjRBNkM5
RTk4MDM0MTQ4OTJCMT48MzExMzE2QzZEMjcwOTI0QTZDOUU5ODAzNDE0ODkyQjE+XQo+PgpzdGFy
dHhyZWYKMjU2NDM0CiUlRU9GCg==
------=_Part_7993_777198510.1523007248058--
.
Author: florian.csdt@gmail.com
Date: Fri, 6 Apr 2018 05:02:48 -0700 (PDT)
Raw View
------=_Part_8372_1638058681.1523016168939
Content-Type: multipart/alternative;
boundary="----=_Part_8373_241090994.1523016168939"
------=_Part_8373_241090994.1523016168939
Content-Type: text/plain; charset="UTF-8"
Just a quick comment, what is the distinction between std::copy_* and
std::clone_*?
I think I understand the difference, but it is never stated in the document.
Also, I would not recommend to inherit from std::blank if the condition is
false in std::inherit_if<>. I would use an internal type that is not
accessible by the user.
Finally, I would probably recommend an extra one:
template <class T>
using inherit_if_valid = inherit_if<is_inheritable_v<T>, T>;
I think it will be a pretty common pattern.
--
You received this message because you are subscribed to the Google Groups "ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an email to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
To view this discussion on the web visit https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/e1b23f7b-466a-49ed-844b-111411772cc8%40isocpp.org.
------=_Part_8373_241090994.1523016168939
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr">Just a quick comment, what is the distinction between <spa=
n style=3D"font-family: courier new, monospace;">std::copy_*</span> and <sp=
an style=3D"font-family: courier new, monospace;">std::clone_*</span>?<br>I=
think I understand the difference, but it is never stated in the document.=
<br><br>Also, I would not recommend to inherit from <span style=3D"font-fam=
ily: courier new, monospace;">std::blank</span> if the condition is false i=
n <span style=3D"font-family: courier new, monospace;">std::inherit_if<&=
gt;</span>. I would use an internal type that is not accessible by the user=
..<br><br>Finally, I would probably recommend an extra one: <br><div style=
=3D"background-color: rgb(250, 250, 250); border-color: rgb(187, 187, 187);=
border-style: solid; border-width: 1px; overflow-wrap: break-word;" class=
=3D"prettyprint"><code class=3D"prettyprint"><div class=3D"subprettyprint">=
<span style=3D"color: #008;" class=3D"styled-by-prettify">template</span><s=
pan style=3D"color: #000;" class=3D"styled-by-prettify"> </span><span style=
=3D"color: #660;" class=3D"styled-by-prettify"><</span><span style=3D"co=
lor: #008;" class=3D"styled-by-prettify">class</span><span style=3D"color: =
#000;" class=3D"styled-by-prettify"> T</span><span style=3D"color: #660;" c=
lass=3D"styled-by-prettify">></span><span style=3D"color: #000;" class=
=3D"styled-by-prettify"><br></span><span style=3D"color: #008;" class=3D"st=
yled-by-prettify">using</span><span style=3D"color: #000;" class=3D"styled-=
by-prettify"> inherit_if_valid </span><span style=3D"color: #660;" class=3D=
"styled-by-prettify">=3D</span><span style=3D"color: #000;" class=3D"styled=
-by-prettify"> inherit_if</span><span style=3D"color: #660;" class=3D"style=
d-by-prettify"><</span><span style=3D"color: #000;" class=3D"styled-by-p=
rettify">is_inheritable_v</span><span style=3D"color: #660;" class=3D"style=
d-by-prettify"><</span><span style=3D"color: #000;" class=3D"styled-by-p=
rettify">T</span><span style=3D"color: #660;" class=3D"styled-by-prettify">=
>,</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> T</s=
pan><span style=3D"color: #660;" class=3D"styled-by-prettify">>;</span><=
span style=3D"color: #000;" class=3D"styled-by-prettify"><br></span></div><=
/code></div>I think it will be a pretty common pattern.<br><br></div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/e1b23f7b-466a-49ed-844b-111411772cc8%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/e1b23f7b-466a-49ed-844b-111411772cc8=
%40isocpp.org</a>.<br />
------=_Part_8373_241090994.1523016168939--
------=_Part_8372_1638058681.1523016168939--
.
Author: Vincent Reverdy <vince.rev@gmail.com>
Date: Fri, 6 Apr 2018 05:37:38 -0700 (PDT)
Raw View
------=_Part_8310_853688663.1523018258450
Content-Type: multipart/alternative;
boundary="----=_Part_8311_257465456.1523018258450"
------=_Part_8311_257465456.1523018258450
Content-Type: text/plain; charset="UTF-8"
Stated on the top of page 3:
The difference is that the copiers directly copy the qualifiers of the
first argument to the second, while cloners first discard the qualifiers of
the second argument. For example copy_cv_t<volatile int, const
double>evaluates to const volatile double while clone_cv_t<volatile int,
const double> evaluates to volatile double, and copy_all_pointers_t<int***,
double*> evaluates to double**** while clone_all_pointers_t<int***,
double*> evaluates to double***.
And thanks for the other remarks!
--
You received this message because you are subscribed to the Google Groups "ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an email to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
To view this discussion on the web visit https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/ae303c7d-ab2e-4dd4-b7a3-416a1f97ceee%40isocpp.org.
------=_Part_8311_257465456.1523018258450
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><div>Stated on the top of page 3:<br></div><div>The differ=
ence is that the copiers directly copy the qualifiers of the first argument=
to the second, while cloners first discard the qualifiers of the second ar=
gument. For example=C2=A0copy_cv_t<volatile int, const double>evaluat=
es to const volatile double while clone_cv_t<volatile=C2=A0 int, const d=
ouble> evaluates to volatile double, and copy_all_pointers_t<int***, =
double*> evaluates to double**** while clone_all_pointers_t<int***, d=
ouble*> evaluates to double***.</div><div><br></div><div>And thanks for =
the other remarks!<br></div></div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/ae303c7d-ab2e-4dd4-b7a3-416a1f97ceee%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/ae303c7d-ab2e-4dd4-b7a3-416a1f97ceee=
%40isocpp.org</a>.<br />
------=_Part_8311_257465456.1523018258450--
------=_Part_8310_853688663.1523018258450--
.
Author: florian.csdt@gmail.com
Date: Fri, 6 Apr 2018 05:57:06 -0700 (PDT)
Raw View
------=_Part_8371_1059112186.1523019426373
Content-Type: multipart/alternative;
boundary="----=_Part_8372_1119295597.1523019426373"
------=_Part_8372_1119295597.1523019426373
Content-Type: text/plain; charset="UTF-8"
Indeed, I missed it...
Now I wonder. What does happen if pointers are cv-qualified?
using T = copy_all_pointers_t<const int*const*const, float>;
// T is const float*const*const
// or T is float*const*const
// or T is float*const*
// or T is float**
I'm pretty sure the inner cv-qualifiers should be copied. I'm also quite
confident that the most inner cv-qualifier should be discarded.
What about the outer cv-qualifiers?
--
You received this message because you are subscribed to the Google Groups "ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an email to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
To view this discussion on the web visit https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/aacca2ae-b51c-4dc7-ae96-c23a1f47f2d7%40isocpp.org.
------=_Part_8372_1119295597.1523019426373
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr">Indeed, I missed it...<br><br>Now I wonder. What does happ=
en if pointers are cv-qualified?<div style=3D"background-color: rgb(250, 25=
0, 250); border-color: rgb(187, 187, 187); border-style: solid; border-widt=
h: 1px; overflow-wrap: break-word;" class=3D"prettyprint"><code class=3D"pr=
ettyprint"><div class=3D"subprettyprint"><span style=3D"color: #008;" class=
=3D"styled-by-prettify">using</span><span style=3D"color: #000;" class=3D"s=
tyled-by-prettify"> T </span><span style=3D"color: #660;" class=3D"styled-b=
y-prettify">=3D</span><span style=3D"color: #000;" class=3D"styled-by-prett=
ify"> copy_all_pointers_t</span><span style=3D"color: #660;" class=3D"style=
d-by-prettify"><const </span><span style=3D"color: #008;" class=3D"style=
d-by-prettify">int</span><span style=3D"color: #660;" class=3D"styled-by-pr=
ettify">*</span><span style=3D"color: #008;" class=3D"styled-by-prettify">c=
onst</span><span style=3D"color: #660;" class=3D"styled-by-prettify">*</spa=
n><span style=3D"color: #008;" class=3D"styled-by-prettify">const</span><sp=
an style=3D"color: #660;" class=3D"styled-by-prettify">,</span><span style=
=3D"color: #000;" class=3D"styled-by-prettify"> </span><span style=3D"color=
: #008;" class=3D"styled-by-prettify">float</span><span style=3D"color: #66=
0;" class=3D"styled-by-prettify">>;</span><code class=3D"prettyprint"><s=
pan style=3D"color: #000;" class=3D"styled-by-prettify"><br></span><span st=
yle=3D"color: #800;" class=3D"styled-by-prettify">// =C2=A0 =C2=A0T is cons=
t float*const*</span><code class=3D"prettyprint"><span style=3D"color: #000=
;" class=3D"styled-by-prettify">const</span></code></code><code class=3D"pr=
ettyprint"><span style=3D"color: #000;" class=3D"styled-by-prettify"><br></=
span><span style=3D"color: #800;" class=3D"styled-by-prettify">// or T is f=
loat*const*</span><code class=3D"prettyprint"><span style=3D"color: #000;" =
class=3D"styled-by-prettify">const</span></code></code><code class=3D"prett=
yprint"><span style=3D"color: #000;" class=3D"styled-by-prettify"><br></spa=
n><span style=3D"color: #800;" class=3D"styled-by-prettify">// or T is floa=
t*const*</span><span style=3D"color: #000;" class=3D"styled-by-prettify"></=
span></code><code class=3D"prettyprint"><span style=3D"color: #000;" class=
=3D"styled-by-prettify"><br></span><span style=3D"color: #800;" class=3D"st=
yled-by-prettify">// or T is float**</span><span style=3D"color: #000;" cla=
ss=3D"styled-by-prettify"><br></span></code><span style=3D"color: #000;" cl=
ass=3D"styled-by-prettify"></span></div></code></div><br>I'm pretty sur=
e the inner cv-qualifiers should be copied. I'm also quite confident th=
at the most inner cv-qualifier should be discarded.<br>What about the outer=
cv-qualifiers?<br></div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/aacca2ae-b51c-4dc7-ae96-c23a1f47f2d7%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/aacca2ae-b51c-4dc7-ae96-c23a1f47f2d7=
%40isocpp.org</a>.<br />
------=_Part_8372_1119295597.1523019426373--
------=_Part_8371_1059112186.1523019426373--
.
Author: Vincent Reverdy <vince.rev@gmail.com>
Date: Fri, 6 Apr 2018 06:16:37 -0700 (PDT)
Raw View
------=_Part_8909_777248776.1523020597789
Content-Type: multipart/alternative;
boundary="----=_Part_8910_1088839135.1523020597789"
------=_Part_8910_1088839135.1523020597789
Content-Type: text/plain; charset="UTF-8"
It's an open question that will be ask to LEWG. For now the behavior is
that it copies pointers and their qualification (in the same way
remove_pointer removes pointers and their qualification).
So T is float*const*const
--
You received this message because you are subscribed to the Google Groups "ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an email to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
To view this discussion on the web visit https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/619b9207-cd1c-4e1e-be6b-b9dcb5116ab6%40isocpp.org.
------=_Part_8910_1088839135.1523020597789
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><div>It's an open question that will be ask to LEWG. F=
or now the behavior is that it copies pointers and their qualification (in =
the same way remove_pointer removes pointers and their qualification).</div=
><div>So <code><code><span style=3D"color:#800">T is float*const*</span><co=
de><span style=3D"color:#000">const</span></code></code><code><span style=
=3D"color:#000"><br></span></code></code></div></div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/619b9207-cd1c-4e1e-be6b-b9dcb5116ab6%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/619b9207-cd1c-4e1e-be6b-b9dcb5116ab6=
%40isocpp.org</a>.<br />
------=_Part_8910_1088839135.1523020597789--
------=_Part_8909_777248776.1523020597789--
.
Author: "Vicente J. Botet Escriba" <vicente.botet@wanadoo.fr>
Date: Fri, 6 Apr 2018 17:37:46 +0200
Raw View
This is a multi-part message in MIME format.
--------------71DFEA813C398DEB41E154DE
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: quoted-printable
Le 06/04/2018 =C3=A0 11:34, Vincent Reverdy a =C3=A9crit=C2=A0:
> Hello all,
>
> Here is the current paper. Comments are welcome.
> I didn't put things related to convertible/sink, because I think it=20
> deserves its own paper.
> For the typelist, I am expecting something along this line coming from=20
> SG7.
> And for the priority_tag for overloads it will probably come in a=20
> later proposal of mine.
>
Hi Vincent,
are you working on some improvement to std::overload [P0051R0]?
Associated to the copy_/clone_ transformation traits I have needed often=20
a rebind which has similar use cases (See P0343R1=20
<http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0343r1.pdf>)
BTW, What is the difference between is_functor and is_function_object?=20
Having the test of the standard could help.
When do you need to use is_closure?
For type_t, false_v, .... I read the=C2=A0 Arthur O=E2=80=99Dwyer's blog. I=
believe=20
the paper should be more specific about the example so that people are=20
not required to read the blog (which btw it is iteresting).
Best,
Vicente
BTW, the links of the references are broken (no link at all).
--=20
You received this message because you are subscribed to the Google Groups "=
ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
To view this discussion on the web visit https://groups.google.com/a/isocpp=
..org/d/msgid/std-proposals/90b61131-1000-f81e-14bf-30f85283c504%40wanadoo.f=
r.
--------------71DFEA813C398DEB41E154DE
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<html>
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dutf-8=
">
</head>
<body text=3D"#000000" bgcolor=3D"#FFFFFF">
<div class=3D"moz-cite-prefix">Le 06/04/2018 =C3=A0 11:34, Vincent Reve=
rdy
a =C3=A9crit=C2=A0:<br>
</div>
<blockquote type=3D"cite"
cite=3D"mid:b2ecb2d3-4f2a-4d17-a9a9-eec3c51a71c3@isocpp.org">
<div dir=3D"ltr">
<div>Hello all,</div>
<div><br>
</div>
<div>Here is the current paper. Comments are welcome.</div>
<div>I didn't put things related to convertible/sink, because I
think it deserves its own paper.</div>
<div>For the typelist, I am expecting something along this line
coming from SG7.<br>
</div>
<div>And for the priority_tag for overloads it will probably
come in a later proposal of mine.</div>
<div><br>
</div>
</div>
</blockquote>
Hi Vincent,<br>
<br>
are you working on some improvement to std::overload [P0051R0]?<br>
<br>
Associated to the copy_/clone_ transformation traits I have needed
often a rebind which has similar use cases (See <a
href=3D"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0343r1.pdf=
">P0343R1</a>)<br>
<br>
BTW, What is the difference between is_functor and
is_function_object? Having the test of the standard could help.<br>
<br>
When do you need to use is_closure?<br>
<br>
For type_t, false_v, .... I read the=C2=A0 Arthur O=E2=80=99Dwyer's blo=
g. I
believe the paper should be more specific about the example so that
people are not required to read the blog (which btw it is
iteresting).<br>
<br>
Best,<br>
Vicente<br>
<br>
BTW, the links of the references are broken (no link at all).<br>
</body>
</html>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/90b61131-1000-f81e-14bf-30f85283c504%=
40wanadoo.fr?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/90b61131-1000-f81e-14bf-30f85283c504=
%40wanadoo.fr</a>.<br />
--------------71DFEA813C398DEB41E154DE--
.
Author: Vincent Reverdy <vince.rev@gmail.com>
Date: Fri, 6 Apr 2018 09:05:24 -0700 (PDT)
Raw View
------=_Part_9237_1473890920.1523030724761
Content-Type: multipart/alternative;
boundary="----=_Part_9238_1068216390.1523030724761"
------=_Part_9238_1068216390.1523030724761
Content-Type: text/plain; charset="UTF-8"
@Vicente
Hi Vicente,
Yes, I am working on an update and improvement of the overload proposal. It
will be in 3 parts (independent, but related)
- New type traits: this one
- A std::functor class
- Classes to create custom overload set and sequences (+ new very useful
and weird metaprogramming tricks based on that)
I will look closely to P0343R1. In the standard, a pointer to function is
considered to be a function object. That's why I propose to have is_functor
and is_function_object (more details here
<https://stackoverflow.com/questions/49503229/are-function-pointers-function-objects-in-c>
).
For the broken links, sorry.
Best,
Vincent
--
You received this message because you are subscribed to the Google Groups "ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an email to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
To view this discussion on the web visit https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/7c8f2068-5434-4294-a3ab-0691dc39b6c1%40isocpp.org.
------=_Part_9238_1068216390.1523030724761
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><div>@Vicente</div><div><br></div><div>Hi Vicente,</div><d=
iv><br></div><div>Yes, I am working on an update and improvement of the ove=
rload proposal. It will be in 3 parts (independent, but related)<br></div><=
div><ul><li>New type traits: this one</li><li>A std::functor class</li><li>=
Classes to create custom overload set and sequences (+ new very useful and =
weird metaprogramming tricks based on that)</li></ul><div>I will look close=
ly to P0343R1. In the standard, a pointer to function is considered to be a=
function object. That's why I propose to have is_functor and is_functi=
on_object (more details <a href=3D"https://stackoverflow.com/questions/4950=
3229/are-function-pointers-function-objects-in-c">here</a>).</div><div><br>=
</div><div>For the broken links, sorry.</div><div><br></div><div>Best,</div=
><div>Vincent<br></div><div><br></div></div></div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/7c8f2068-5434-4294-a3ab-0691dc39b6c1%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/7c8f2068-5434-4294-a3ab-0691dc39b6c1=
%40isocpp.org</a>.<br />
------=_Part_9238_1068216390.1523030724761--
------=_Part_9237_1473890920.1523030724761--
.
Author: Nicol Bolas <jmckesson@gmail.com>
Date: Fri, 6 Apr 2018 09:50:54 -0700 (PDT)
Raw View
------=_Part_9486_2100634485.1523033454430
Content-Type: multipart/alternative;
boundary="----=_Part_9487_860283003.1523033454430"
------=_Part_9487_860283003.1523033454430
Content-Type: text/plain; charset="UTF-8"
On Friday, April 6, 2018 at 5:34:08 AM UTC-4, Vincent Reverdy wrote:
>
> Hello all,
>
> Here is the current paper. Comments are welcome.
> I didn't put things related to convertible/sink, because I think it
> deserves its own paper.
> For the typelist, I am expecting something along this line coming from SG7.
> And for the priority_tag for overloads it will probably come in a later
> proposal of mine.
>
In the function traits, there seem to be some superfluous ones. Or at
least, things that need to have motivation applied to them.
`is_callable` is useful primarily as a component of other traits.
`is_functor` is really just the intersection of `is_class||is_union` and
`is_callable`. But this is really the wrong intersection. The principle
motivational use for `is_functor` would be for something like
`std::overload`, whose types must be classes and callable. But the thing
is, `std::overload`'s callable types must be *inheritable*, since that's
how `std::overload` implements stuff. So `std::overload` would really be
using `is_callable` and `is_inheritable` to guard the types it is provided.
So, can you provide a use case for `is_functor`, where code can accept
*any* class with an overloaded `operator()`, even if it cannot inherit from
it? If not, then this is not needed.
`is_function_object` seems dubious. See, the most useful place one might
see it is in algorithms. But quite frankly, algorithms ought to be adjusted
to use `std::invoke`, so that they can take member pointers too.
So, can you provide a use case for an interface that *should* explicitly
exclude member pointers?
`is_closure` seems not just useless but anti-useful. Closures and lambdas
are nothing more than syntactic sugar. Any interface that accepts a lambda
ought to also be able to accept a user-defined class type. To do otherwise
creates a user-hostile interface; we *don't want* users to be able to
restrict interfaces in this way.
Can you provide a use case for this trait that doesn't make the interface
actively worse than using `is_functor`?
--
You received this message because you are subscribed to the Google Groups "ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an email to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
To view this discussion on the web visit https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/08cab291-d82d-4620-a825-6331deafc8fa%40isocpp.org.
------=_Part_9487_860283003.1523033454430
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr">On Friday, April 6, 2018 at 5:34:08 AM UTC-4, Vincent Reve=
rdy wrote:<blockquote class=3D"gmail_quote" style=3D"margin: 0;margin-left:=
0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;"><div dir=3D"ltr"><di=
v>Hello all,</div><div><br></div><div>Here is the current paper. Comments a=
re welcome.</div><div>I didn't put things related to convertible/sink, =
because I think it deserves its own paper.</div><div>For the typelist, I am=
expecting something along this line coming from SG7.<br></div><div>And for=
the priority_tag for overloads it will probably come in a later proposal o=
f mine.</div></div></blockquote><div><br>In the function traits, there seem=
to be some superfluous ones. Or at least, things that need to have motivat=
ion applied to them.<br><br>`is_callable` is useful primarily as a componen=
t of other traits.<br><br>`is_functor` is really just the intersection of `=
is_class||is_union` and
`is_callable`. But this is really the wrong intersection. The principle mo=
tivational use for `is_functor` would be for something like `std::overload`=
, whose types must be classes and callable. But the thing is, `std::overloa=
d`'s callable types must be <i>inheritable</i>, since that's how `s=
td::overload` implements stuff. So `std::overload` would really be using `i=
s_callable` and `is_inheritable` to guard the types it is provided.<br><br>=
So, can you provide a use case for `is_functor`, where code can accept *any=
* class with an overloaded `operator()`, even if it cannot inherit from it?=
If not, then this is not needed.<br><br>`is_function_object` seems dubious=
.. See, the most useful place one might see it is in algorithms. But quite f=
rankly, algorithms ought to be adjusted to use `std::invoke`, so that they =
can take member pointers too.<br><br>So, can you provide a use case for an =
interface that <i>should</i> explicitly exclude member pointers?<br><br>`is=
_closure` seems not just useless but anti-useful. Closures and lambdas are =
nothing more than syntactic sugar. Any interface that accepts a lambda ough=
t to also be able to accept a user-defined class type. To do otherwise crea=
tes a user-hostile interface; we <i>don't want</i> users to be able to =
restrict interfaces in this way.<br><br>Can you provide a use case for this=
trait that doesn't make the interface actively worse than using `is_fu=
nctor`?<br></div></div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/08cab291-d82d-4620-a825-6331deafc8fa%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/08cab291-d82d-4620-a825-6331deafc8fa=
%40isocpp.org</a>.<br />
------=_Part_9487_860283003.1523033454430--
------=_Part_9486_2100634485.1523033454430--
.
Author: "Arthur O'Dwyer" <arthur.j.odwyer@gmail.com>
Date: Fri, 6 Apr 2018 13:04:03 -0700
Raw View
--001a114db3c8d3d2f10569338ed6
Content-Type: text/plain; charset="UTF-8"
On Fri, Apr 6, 2018 at 2:34 AM, Vincent Reverdy <vince.rev@gmail.com> wrote:
> Hello all,
>
> Here is the current paper. Comments are welcome.
> I didn't put things related to convertible/sink, because I think it
> deserves its own paper.
> For the typelist, I am expecting something along this line coming from SG7.
> And for the priority_tag for overloads it will probably come in a later
> proposal of mine.
>
On inherit_if<T>: I would remove or significantly rework this part.
- What's the use-case? Given that [[no_unique_address]] is coming to deal
with EBO, do we *have* a use-case anymore?
- is_inheritable<T> sounds useful at first but is likely to be
unimplementable in any actually useful way. Should it yield false for
classes with private destructors? Deleted move operations? What else?
- You show an example of a class inheriting from an integral type, which is
forbidden.
- You seem to suggest that inherit_if_t<B, T> should be exactly
conditional_t<B, T, blank>, which (A) is not a significant savings and (B)
does not permit multiple inheritance from several different "falsey"
inherit_if_ts.
template<class... Ts> struct NaiveCompressedTuple :
inherit_if_t<is_inheritable_v<Ts>, Ts> {};
NaiveCompressedTuple<int, short> x; // fails to compile because you
can't inherit twice from std::blank
I believe there are enough problems with inherit_if, and enough better
solutions in the pipeline, that you should rip it out of your proposal.
I don't object to `std::blank` in principle, but with `inherit_if` gone you
have no more use-cases for `blank` and so it should go as well, or else you
should add more motivation for it.
On remove_all_pointers: The use-case for remove_all_extents is to take a
possibly-array type and boil it down to a non-array type with the same
copyability/destructibility properties, for the specific purpose of
computing those properties. I don't believe you have any use-case for
remove_all_pointers.
Philosophically, you need to explain why you feel the need for
remove_all_extents and remove_all_pointers, but you don't feel the need for
remove_all_extents_and_pointers (which would be able to boil `int *(*)[5]`
down to just `int`).
Philosophically, you need to explain why you desire this behavior:
using A = int;
using B = double;
using C = double*;
static_assert(is_same_v<clone_all_pointers_t<A**, B**>, B**>);
static_assert(is_same_v<clone_all_pointers_t<A**, C**>, C*>); // EEK!
I claim that you *don't* desire this behavior, that you have no use-case
for this foo_all_pointers stuff, and you should just rip it out of the
proposal.
On copy_x and clone_x: Anecdotally, I have done a similar thing for cvref
qualifiers in some codebase, and then discovered that there was a much
better solution that didn't involve copying cvref qualifiers.
- Nit: When there are two options T/F, I'm used to them coming in that
order and with the obvious meanings. Please write out "From" and "To"
instead of "F" and "T".
- So, for 'x' in {const, volatile, pointer}, we have
template<From, To> using copy_x = conditional_t<is_x<From>, add_x<To>,
To>;
template<From, To> using clone_x = copy_x<From, remove_x<To>>;
And then we have some more general helpers {cv, reference, extent} and some
wacky ones {pointers, extents}.
I am mildly uncomfortable with the existence of *both* copy_x and clone_x.
If you provided only copy_x, how much extra typing would the user have to
do to get the effect of clone_x? If you provided only clone_x, how much
extra typing would the user have to do to get the effect of copy_x? I'd
like to see a discussion with examples, in the paper.
You should remove the discussion of the behavior of "hypothetical
clone_signedness." Don't waste my brain's time thinking about it; just say
why you're not proposing it and move on.
In exchange for all the stuff I'm saying is flawed and needs to go... I
think you should go ahead and include `priority_tag`. If someone else is
proposing it as well, that's cool; just try to make sure you're putting it
in the same place as them, so there's no merge conflict.
HTH,
Arthur
--
You received this message because you are subscribed to the Google Groups "ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an email to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
To view this discussion on the web visit https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/CADvuK0%2Bec8YaKSc7DUo8R7GwHJ_EKr92WOTu%2BtR4suV-cr4G8Q%40mail.gmail.com.
--001a114db3c8d3d2f10569338ed6
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr">On Fri, Apr 6, 2018 at 2:34 AM, Vincent Reverdy <span dir=
=3D"ltr"><<a href=3D"mailto:vince.rev@gmail.com" target=3D"_blank">vince=
..rev@gmail.com</a>></span> wrote:<br><div class=3D"gmail_extra"><div cla=
ss=3D"gmail_quote"><blockquote class=3D"gmail_quote" style=3D"margin:0px 0p=
x 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color=
:rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"><div>Hello all,</div><=
div><br></div><div>Here is the current paper. Comments are welcome.</div><d=
iv>I didn't put things related to convertible/sink, because I think it =
deserves its own paper.</div><div>For the typelist, I am expecting somethin=
g along this line coming from SG7.<br></div><div>And for the priority_tag f=
or overloads it will probably come in a later proposal of mine.</div></div>=
</blockquote><div><br></div><div>On inherit_if<T>: I would remove or =
significantly rework this part.</div><div>- What's the use-case? Given =
that [[no_unique_address]] is coming to deal with EBO, do we <i><b>have</b>=
</i> a use-case anymore?</div><div>- is_inheritable<T> sounds useful =
at first but is likely to be unimplementable in any actually useful way. Sh=
ould it yield <font face=3D"monospace, monospace">false</font> for classes =
with private destructors? Deleted move operations? What else?</div><div>- Y=
ou show an example of a class inheriting from an integral type, which is fo=
rbidden.</div><div>- You seem to suggest that inherit_if_t<B, T> shou=
ld be exactly conditional_t<B, T, blank>, which (A) is not a signific=
ant savings and (B) does not permit multiple inheritance from several diffe=
rent "falsey" inherit_if_ts.</div><div><br></div><div>=C2=A0 =C2=
=A0 template<class... Ts> struct NaiveCompressedTuple : inherit_if_t&=
lt;is_inheritable_v<Ts>, Ts> {};</div><div>=C2=A0 =C2=A0 NaiveComp=
ressedTuple<int, short> x; =C2=A0// fails to compile because you can&=
#39;t inherit twice from std::blank</div><div><br></div><div>I believe ther=
e are enough problems with inherit_if, and enough better solutions in the p=
ipeline, that you should rip it out of your proposal.</div><div><br></div><=
div><div>I don't object to `std::blank` in principle, but with `inherit=
_if` gone you have no more use-cases for `blank` and so it should go as wel=
l, or else you should add more motivation for it.</div></div><div><br></div=
><div>On remove_all_pointers: The use-case for remove_all_extents is to tak=
e a possibly-array type and boil it down to a non-array type with the same =
copyability/destructibility properties, for the specific purpose of computi=
ng those properties. I don't believe you have any use-case for remove_a=
ll_pointers.</div><div>Philosophically, you need to explain why you feel th=
e need for remove_all_extents and remove_all_pointers, but you don't fe=
el the need for remove_all_extents_and_pointers (which would be able to boi=
l `int *(*)[5]` down to just `int`).</div><div><br></div><div>Philosophical=
ly, you need to explain why you desire this behavior:</div><div>=C2=A0 =C2=
=A0 using A =3D int;</div><div>=C2=A0 =C2=A0 using B =3D double;</div><div>=
=C2=A0 =C2=A0 using C =3D double*;</div><div>=C2=A0 =C2=A0 static_assert(is=
_same_v<clone_all_pointers_t<A**, B**>, B**>);</div><div><div>=
=C2=A0 =C2=A0 static_assert(is_same_v<clone_all_pointers_t<A**, C**&g=
t;, C*>); =C2=A0// EEK!</div></div><div>I claim that you <b><i>don't=
</i></b> desire this behavior, that you have no use-case for this foo_all_p=
ointers stuff, and you should just rip it out of the proposal.</div><div><b=
r></div><div>On copy_x and clone_x: Anecdotally, I have done a similar thin=
g for cvref qualifiers in some codebase, and then discovered that there was=
a much better solution that didn't involve copying cvref qualifiers.</=
div><div>- Nit: When there are two options T/F, I'm used to them coming=
in that order and with the obvious meanings.=C2=A0Please write out "F=
rom" and "To" instead of "F" and "T".=C2=
=A0</div><div>- So, for 'x' in {const, volatile, pointer}, we have<=
/div><div>=C2=A0 =C2=A0=C2=A0template<From, To>=C2=A0using copy_x =3D=
conditional_t<is_x<From>, add_x<To>, To>;</div><div>=C2=
=A0 =C2=A0 template<From, To> using clone_x =3D copy_x<From, remov=
e_x<To>>;</div><div>And then we have some more general helpers {cv=
, reference, extent} and some wacky ones {pointers, extents}.</div><div><br=
></div><div><div>I am mildly uncomfortable with the existence of=C2=A0<i><b=
>both</b></i>=C2=A0copy_x and clone_x. If you provided only copy_x, how muc=
h extra typing would the user have to do to get the effect of clone_x? If y=
ou provided only clone_x, how much extra typing would the user have to do t=
o get the effect of copy_x? I'd like to see a discussion with examples,=
in the paper.</div></div><div><br></div><div>You should remove the discuss=
ion of the behavior of "hypothetical clone_signedness." Don't=
waste my brain's time thinking about it; just say why you're not p=
roposing it and move on.</div><div><br></div><div>In exchange for all the s=
tuff I'm saying is flawed and needs to go... I think you should go ahea=
d and include `priority_tag`. If someone else is proposing it as well, that=
's cool; just try to make sure you're putting it in the same place =
as them, so there's no merge conflict.</div><div><br></div><div>HTH,</d=
iv><div>Arthur</div></div></div></div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/CADvuK0%2Bec8YaKSc7DUo8R7GwHJ_EKr92WO=
Tu%2BtR4suV-cr4G8Q%40mail.gmail.com?utm_medium=3Demail&utm_source=3Dfooter"=
>https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/CADvuK0%2Bec8=
YaKSc7DUo8R7GwHJ_EKr92WOTu%2BtR4suV-cr4G8Q%40mail.gmail.com</a>.<br />
--001a114db3c8d3d2f10569338ed6--
.
Author: Nicol Bolas <jmckesson@gmail.com>
Date: Fri, 6 Apr 2018 13:22:36 -0700 (PDT)
Raw View
------=_Part_10309_161970202.1523046156473
Content-Type: multipart/alternative;
boundary="----=_Part_10310_209008884.1523046156473"
------=_Part_10310_209008884.1523046156473
Content-Type: text/plain; charset="UTF-8"
On Friday, April 6, 2018 at 4:04:06 PM UTC-4, Arthur O'Dwyer wrote:
>
> On Fri, Apr 6, 2018 at 2:34 AM, Vincent Reverdy <vinc...@gmail.com
> <javascript:>> wrote:
>
>> Hello all,
>>
>> Here is the current paper. Comments are welcome.
>> I didn't put things related to convertible/sink, because I think it
>> deserves its own paper.
>> For the typelist, I am expecting something along this line coming from
>> SG7.
>> And for the priority_tag for overloads it will probably come in a later
>> proposal of mine.
>>
>
> On inherit_if<T>: I would remove or significantly rework this part.
> - What's the use-case? Given that [[no_unique_address]] is coming to deal
> with EBO, do we *have* a use-case anymore?
>
So long as this is possible:
template<typename ...Ts>
class something : Ts... {...};
And this isn't:
template<typename ...Ts>
class something
{
Ts ts...;
};
There's a use case for it.
Granted, I would *much rather* have the latter, but that's a huge can of
worms.
> - is_inheritable<T> sounds useful at first but is likely to be
> unimplementable in any actually useful way. Should it yield false for
> classes with private destructors? Deleted move operations? What else?
> - You show an example of a class inheriting from an integral type, which
> is forbidden.
> - You seem to suggest that inherit_if_t<B, T> should be exactly
> conditional_t<B, T, blank>, which (A) is not a significant savings and (B)
> does not permit multiple inheritance from several different "falsey"
> inherit_if_ts.
>
template<class... Ts> struct NaiveCompressedTuple :
> inherit_if_t<is_inheritable_v<Ts>, Ts> {};
> NaiveCompressedTuple<int, short> x; // fails to compile because you
> can't inherit twice from std::blank
>
That's a good point. If you've got a bunch of `Ts`, you'd have to do
something like `std::conditional_t<is_inheritable<Ts>, Ts,
std::blank<index_of<Ts>>>...`, where `index_of<Ts>` gets the index for the
particular `Ts` in the expansion.
--
You received this message because you are subscribed to the Google Groups "ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an email to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
To view this discussion on the web visit https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/fcb9d6d5-a7bf-4442-9df3-4d112596e6be%40isocpp.org.
------=_Part_10310_209008884.1523046156473
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><br><br>On Friday, April 6, 2018 at 4:04:06 PM UTC-4, Arth=
ur O'Dwyer wrote:<blockquote class=3D"gmail_quote" style=3D"margin: 0;m=
argin-left: 0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;"><div dir=
=3D"ltr">On Fri, Apr 6, 2018 at 2:34 AM, Vincent Reverdy <span dir=3D"ltr">=
<<a href=3D"javascript:" target=3D"_blank" gdf-obfuscated-mailto=3D"6E7V=
czZ2BwAJ" rel=3D"nofollow" onmousedown=3D"this.href=3D'javascript:'=
;return true;" onclick=3D"this.href=3D'javascript:';return true;">v=
inc...@gmail.com</a>></span> wrote:<br><div><div class=3D"gmail_quote"><=
blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-l=
eft-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);pa=
dding-left:1ex"><div dir=3D"ltr"><div>Hello all,</div><div><br></div><div>H=
ere is the current paper. Comments are welcome.</div><div>I didn't put =
things related to convertible/sink, because I think it deserves its own pap=
er.</div><div>For the typelist, I am expecting something along this line co=
ming from SG7.<br></div><div>And for the priority_tag for overloads it will=
probably come in a later proposal of mine.</div></div></blockquote><div><b=
r></div><div>On inherit_if<T>: I would remove or significantly rework=
this part.</div><div>- What's the use-case? Given that [[no_unique_add=
ress]] is coming to deal with EBO, do we <i><b>have</b></i> a use-case anym=
ore?</div></div></div></div></blockquote><div><br>So long as this is possib=
le:<br><br><div style=3D"background-color: rgb(250, 250, 250); border-color=
: rgb(187, 187, 187); border-style: solid; border-width: 1px; overflow-wrap=
: break-word;" class=3D"prettyprint"><code class=3D"prettyprint"><div class=
=3D"subprettyprint"><span style=3D"color: #008;" class=3D"styled-by-prettif=
y">template</span><span style=3D"color: #660;" class=3D"styled-by-prettify"=
><</span><span style=3D"color: #008;" class=3D"styled-by-prettify">typen=
ame</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> </span=
><span style=3D"color: #660;" class=3D"styled-by-prettify">...</span><span =
style=3D"color: #606;" class=3D"styled-by-prettify">Ts</span><span style=3D=
"color: #660;" class=3D"styled-by-prettify">></span><span style=3D"color=
: #000;" class=3D"styled-by-prettify"><br></span><span style=3D"color: #008=
;" class=3D"styled-by-prettify">class</span><span style=3D"color: #000;" cl=
ass=3D"styled-by-prettify"> something </span><span style=3D"color: #660;" c=
lass=3D"styled-by-prettify">:</span><span style=3D"color: #000;" class=3D"s=
tyled-by-prettify"> </span><span style=3D"color: #606;" class=3D"styled-by-=
prettify">Ts</span><span style=3D"color: #660;" class=3D"styled-by-prettify=
">...</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> </sp=
an><span style=3D"color: #660;" class=3D"styled-by-prettify">{...};</span><=
/div></code></div><br>And this isn't:<br><br><div style=3D"background-c=
olor: rgb(250, 250, 250); border-color: rgb(187, 187, 187); border-style: s=
olid; border-width: 1px; overflow-wrap: break-word;" class=3D"prettyprint">=
<code class=3D"prettyprint"><div class=3D"subprettyprint"><span style=3D"co=
lor: #008;" class=3D"styled-by-prettify">template</span><span style=3D"colo=
r: #660;" class=3D"styled-by-prettify"><</span><span style=3D"color: #00=
8;" class=3D"styled-by-prettify">typename</span><span style=3D"color: #000;=
" class=3D"styled-by-prettify"> </span><span style=3D"color: #660;" class=
=3D"styled-by-prettify">...</span><span style=3D"color: #606;" class=3D"sty=
led-by-prettify">Ts</span><span style=3D"color: #660;" class=3D"styled-by-p=
rettify">></span><span style=3D"color: #000;" class=3D"styled-by-prettif=
y"><br></span><span style=3D"color: #008;" class=3D"styled-by-prettify">cla=
ss</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> somethi=
ng<br></span><span style=3D"color: #660;" class=3D"styled-by-prettify">{</s=
pan><span style=3D"color: #000;" class=3D"styled-by-prettify"><br>=C2=A0 =
=C2=A0</span><span style=3D"color: #606;" class=3D"styled-by-prettify">Ts</=
span><span style=3D"color: #000;" class=3D"styled-by-prettify"> ts</span><s=
pan style=3D"color: #660;" class=3D"styled-by-prettify">...;</span><span st=
yle=3D"color: #000;" class=3D"styled-by-prettify"><br></span><span style=3D=
"color: #660;" class=3D"styled-by-prettify">};</span></div></code></div><br=
>There's a use case for it.<br><br>Granted, I would <i>much rather</i> =
have the latter, but that's a huge can of worms.<br>=C2=A0</div><blockq=
uote class=3D"gmail_quote" style=3D"margin: 0;margin-left: 0.8ex;border-lef=
t: 1px #ccc solid;padding-left: 1ex;"><div dir=3D"ltr"><div><div class=3D"g=
mail_quote"><div>- is_inheritable<T> sounds useful at first but is li=
kely to be unimplementable in any actually useful way. Should it yield <fon=
t face=3D"monospace, monospace">false</font> for classes with private destr=
uctors? Deleted move operations? What else?</div><div>- You show an example=
of a class inheriting from an integral type, which is forbidden.</div><div=
>- You seem to suggest that inherit_if_t<B, T> should be exactly cond=
itional_t<B, T, blank>, which (A) is not a significant savings and (B=
) does not permit multiple inheritance from several different "falsey&=
quot; inherit_if_ts.</div></div></div></div></blockquote><blockquote class=
=3D"gmail_quote" style=3D"margin: 0;margin-left: 0.8ex;border-left: 1px #cc=
c solid;padding-left: 1ex;"><div dir=3D"ltr"><div><div class=3D"gmail_quote=
"><div></div><div>=C2=A0 =C2=A0 template<class... Ts> struct NaiveCom=
pressedTuple : inherit_if_t<is_inheritable_v<<wbr>Ts>, Ts> {};<=
/div><div>=C2=A0 =C2=A0 NaiveCompressedTuple<int, short> x; =C2=A0// =
fails to compile because you can't inherit twice from std::blank</div><=
/div></div></div></blockquote><div><br>That's a good point. If you'=
ve got a bunch of `Ts`, you'd have to do=20
something like `std::conditional_t<is_inheritable<Ts>, Ts,=20
std::blank<index_of<Ts>>>...`, where `index_of<Ts>`
gets the index for the particular `Ts` in the expansion.</div><br></div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/fcb9d6d5-a7bf-4442-9df3-4d112596e6be%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/fcb9d6d5-a7bf-4442-9df3-4d112596e6be=
%40isocpp.org</a>.<br />
------=_Part_10310_209008884.1523046156473--
------=_Part_10309_161970202.1523046156473--
.
Author: "Vicente J. Botet Escriba" <vicente.botet@wanadoo.fr>
Date: Sat, 7 Apr 2018 09:20:16 +0200
Raw View
This is a multi-part message in MIME format.
--------------39B72142BF2340DC75B0973E
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: quoted-printable
Le 06/04/2018 =C3=A0 22:22, Nicol Bolas a =C3=A9crit=C2=A0:
>
>
> On Friday, April 6, 2018 at 4:04:06 PM UTC-4, Arthur O'Dwyer wrote:
>
> On Fri, Apr 6, 2018 at 2:34 AM, Vincent Reverdy <vinc...@gmail.com
> <javascript:>> wrote:
>
> Hello all,
>
> Here is the current paper. Comments are welcome.
> I didn't put things related to convertible/sink, because I
> think it deserves its own paper.
> For the typelist, I am expecting something along this line
> coming from SG7.
> And for the priority_tag for overloads it will probably come
> in a later proposal of mine.
>
>
> On inherit_if<T>: I would remove or significantly rework this part.
> - What's the use-case? Given that [[no_unique_address]] is coming
> to deal with EBO, do we /*have*/ a use-case anymore?
>
>
> So long as this is possible:
>
> |
> template<typename...Ts>
> classsomething :Ts...{...};
> |
>
> And this isn't:
>
> |
> template<typename...Ts>
> classsomething
> {
> Tsts...;
> };
> |
>
> There's a use case for it.
I'm not sure.
>
> Granted, I would /much rather/ have the latter, but that's a huge can=20
> of worms.
>
> - is_inheritable<T> sounds useful at first but is likely to be
> unimplementable in any actually useful way. Should it yield false
> for classes with private destructors? Deleted move operations?
> What else?
>
This is why we need it and provided by the compiler.
IMO, it should result in false when you can not inherit from, for=20
whatever reason.
If the compiler have already a reason why
struct D : T {};
is ill formed, the traits must yield false.
This doesn't mean that the wording shouldn't be explicit.
> - You show an example of a class inheriting from an integral type,
> which is forbidden.
> - You seem to suggest that inherit_if_t<B, T> should be exactly
> conditional_t<B, T, blank>, which (A) is not a significant savings
> and (B) does not permit multiple inheritance from several
> different "falsey" inherit_if_ts.
>
> =C2=A0 =C2=A0 template<class... Ts> struct NaiveCompressedTuple :
> inherit_if_t<is_inheritable_v<Ts>, Ts> {};
> =C2=A0 =C2=A0 NaiveCompressedTuple<int, short> x; =C2=A0// fails to c=
ompile
> because you can't inherit twice from std::blank
>
>
> That's a good point. If you've got a bunch of `Ts`, you'd have to do=20
> something like `std::conditional_t<is_inheritable<Ts>, Ts,=20
> std::blank<index_of<Ts>>>...`, where `index_of<Ts>` gets the index for=20
> the particular `Ts` in the expansion.
>
The problem is that usually, when you cannot inherit, you need to wrap=20
the Callable and inherit.
Vincent, what is the use case=C2=A0 for inherit_if? What the user want if n=
ot?
Vicente
--=20
You received this message because you are subscribed to the Google Groups "=
ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
To view this discussion on the web visit https://groups.google.com/a/isocpp=
..org/d/msgid/std-proposals/fba740f1-66a6-badf-0b44-9b92bcf75777%40wanadoo.f=
r.
--------------39B72142BF2340DC75B0973E
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<html>
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dutf-8=
">
</head>
<body text=3D"#000000" bgcolor=3D"#FFFFFF">
<div class=3D"moz-cite-prefix">Le 06/04/2018 =C3=A0 22:22, Nicol Bolas =
a
=C3=A9crit=C2=A0:<br>
</div>
<blockquote type=3D"cite"
cite=3D"mid:fcb9d6d5-a7bf-4442-9df3-4d112596e6be@isocpp.org">
<div dir=3D"ltr"><br>
<br>
On Friday, April 6, 2018 at 4:04:06 PM UTC-4, Arthur O'Dwyer
wrote:
<blockquote class=3D"gmail_quote" style=3D"margin: 0;margin-left:
0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;">
<div dir=3D"ltr">On Fri, Apr 6, 2018 at 2:34 AM, Vincent Reverdy
<span dir=3D"ltr"><<a href=3D"javascript:" target=3D"_blank"
gdf-obfuscated-mailto=3D"6E7VczZ2BwAJ" rel=3D"nofollow"
onmousedown=3D"this.href=3D'javascript:';return true;"
onclick=3D"this.href=3D'javascript:';return true;"
moz-do-not-send=3D"true">vinc...@gmail.com</a>></span>
wrote:<br>
<div>
<div class=3D"gmail_quote">
<blockquote class=3D"gmail_quote" style=3D"margin:0px 0px
0px
0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(2=
04,204,204);padding-left:1ex">
<div dir=3D"ltr">
<div>Hello all,</div>
<div><br>
</div>
<div>Here is the current paper. Comments are
welcome.</div>
<div>I didn't put things related to
convertible/sink, because I think it deserves its
own paper.</div>
<div>For the typelist, I am expecting something
along this line coming from SG7.<br>
</div>
<div>And for the priority_tag for overloads it will
probably come in a later proposal of mine.</div>
</div>
</blockquote>
<div><br>
</div>
<div>On inherit_if<T>: I would remove or
significantly rework this part.</div>
<div>- What's the use-case? Given that
[[no_unique_address]] is coming to deal with EBO, do
we <i><b>have</b></i> a use-case anymore?</div>
</div>
</div>
</div>
</blockquote>
<div><br>
So long as this is possible:<br>
<br>
<div style=3D"background-color: rgb(250, 250, 250);
border-color: rgb(187, 187, 187); border-style: solid;
border-width: 1px; overflow-wrap: break-word;"
class=3D"prettyprint"><code class=3D"prettyprint">
<div class=3D"subprettyprint"><span style=3D"color: #008;"
class=3D"styled-by-prettify">template</span><span
style=3D"color: #660;" class=3D"styled-by-prettify"><<=
/span><span
style=3D"color: #008;" class=3D"styled-by-prettify">typen=
ame</span><span
style=3D"color: #000;" class=3D"styled-by-prettify"> </sp=
an><span
style=3D"color: #660;" class=3D"styled-by-prettify">...</=
span><span
style=3D"color: #606;" class=3D"styled-by-prettify">Ts</s=
pan><span
style=3D"color: #660;" class=3D"styled-by-prettify">><=
/span><span
style=3D"color: #000;" class=3D"styled-by-prettify"><br>
</span><span style=3D"color: #008;"
class=3D"styled-by-prettify">class</span><span
style=3D"color: #000;" class=3D"styled-by-prettify">
something </span><span style=3D"color: #660;"
class=3D"styled-by-prettify">:</span><span style=3D"color=
:
#000;" class=3D"styled-by-prettify"> </span><span
style=3D"color: #606;" class=3D"styled-by-prettify">Ts</s=
pan><span
style=3D"color: #660;" class=3D"styled-by-prettify">...</=
span><span
style=3D"color: #000;" class=3D"styled-by-prettify"> </sp=
an><span
style=3D"color: #660;" class=3D"styled-by-prettify">{...}=
;</span></div>
</code></div>
<br>
And this isn't:<br>
<br>
<div style=3D"background-color: rgb(250, 250, 250);
border-color: rgb(187, 187, 187); border-style: solid;
border-width: 1px; overflow-wrap: break-word;"
class=3D"prettyprint"><code class=3D"prettyprint">
<div class=3D"subprettyprint"><span style=3D"color: #008;"
class=3D"styled-by-prettify">template</span><span
style=3D"color: #660;" class=3D"styled-by-prettify"><<=
/span><span
style=3D"color: #008;" class=3D"styled-by-prettify">typen=
ame</span><span
style=3D"color: #000;" class=3D"styled-by-prettify"> </sp=
an><span
style=3D"color: #660;" class=3D"styled-by-prettify">...</=
span><span
style=3D"color: #606;" class=3D"styled-by-prettify">Ts</s=
pan><span
style=3D"color: #660;" class=3D"styled-by-prettify">><=
/span><span
style=3D"color: #000;" class=3D"styled-by-prettify"><br>
</span><span style=3D"color: #008;"
class=3D"styled-by-prettify">class</span><span
style=3D"color: #000;" class=3D"styled-by-prettify">
something<br>
</span><span style=3D"color: #660;"
class=3D"styled-by-prettify">{</span><span style=3D"color=
:
#000;" class=3D"styled-by-prettify"><br>
=C2=A0 =C2=A0</span><span style=3D"color: #606;"
class=3D"styled-by-prettify">Ts</span><span
style=3D"color: #000;" class=3D"styled-by-prettify"> ts</=
span><span
style=3D"color: #660;" class=3D"styled-by-prettify">...;<=
/span><span
style=3D"color: #000;" class=3D"styled-by-prettify"><br>
</span><span style=3D"color: #660;"
class=3D"styled-by-prettify">};</span></div>
</code></div>
<br>
There's a use case for it.<br>
</div>
</div>
</blockquote>
I'm not sure.<br>
<blockquote type=3D"cite"
cite=3D"mid:fcb9d6d5-a7bf-4442-9df3-4d112596e6be@isocpp.org">
<div dir=3D"ltr">
<div><br>
Granted, I would <i>much rather</i> have the latter, but
that's a huge can of worms.<br>
=C2=A0</div>
<blockquote class=3D"gmail_quote" style=3D"margin: 0;margin-left:
0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;">
<div dir=3D"ltr">
<div>
<div class=3D"gmail_quote">
<div>- is_inheritable<T> sounds useful at first
but is likely to be unimplementable in any actually
useful way. Should it yield <font face=3D"monospace,
monospace">false</font> for classes with private
destructors? Deleted move operations? What else?</div>
</div>
</div>
</div>
</blockquote>
</div>
</blockquote>
This is why we need it and provided by the compiler.<br>
IMO, it should result in false when you can not inherit from, for
whatever reason.<br>
If the compiler have already a reason why<br>
<br>
struct D : T {};<br>
<br>
is ill formed, the traits must yield false.<br>
<br>
This doesn't mean that the wording shouldn't be explicit.<br>
<br>
<blockquote type=3D"cite"
cite=3D"mid:fcb9d6d5-a7bf-4442-9df3-4d112596e6be@isocpp.org">
<div dir=3D"ltr">
<blockquote class=3D"gmail_quote" style=3D"margin: 0;margin-left:
0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;">
<div dir=3D"ltr">
<div>
<div class=3D"gmail_quote">
<div>- You show an example of a class inheriting from an
integral type, which is forbidden.</div>
<div>- You seem to suggest that inherit_if_t<B, T>
should be exactly conditional_t<B, T, blank>,
which (A) is not a significant savings and (B) does
not permit multiple inheritance from several different
"falsey" inherit_if_ts.</div>
</div>
</div>
</div>
</blockquote>
<blockquote class=3D"gmail_quote" style=3D"margin: 0;margin-left:
0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;">
<div dir=3D"ltr">
<div>
<div class=3D"gmail_quote">
<div>=C2=A0 =C2=A0 template<class... Ts> struct
NaiveCompressedTuple :
inherit_if_t<is_inheritable_v<<wbr>Ts>,
Ts> {};</div>
<div>=C2=A0 =C2=A0 NaiveCompressedTuple<int, short> x=
; =C2=A0//
fails to compile because you can't inherit twice from
std::blank</div>
</div>
</div>
</div>
</blockquote>
<div><br>
That's a good point. If you've got a bunch of `Ts`, you'd have
to do something like
`std::conditional_t<is_inheritable<Ts>, Ts,
std::blank<index_of<Ts>>>...`, where
`index_of<Ts>` gets the index for the particular `Ts` in
the expansion.</div>
<br>
</div>
</blockquote>
The problem is that usually, when you cannot inherit, you need to
wrap the Callable and inherit.<br>
Vincent, what is the use case=C2=A0 for inherit_if? What the user want =
if
not?<br>
<br>
<br>
Vicente<br>
</body>
</html>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/fba740f1-66a6-badf-0b44-9b92bcf75777%=
40wanadoo.fr?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/fba740f1-66a6-badf-0b44-9b92bcf75777=
%40wanadoo.fr</a>.<br />
--------------39B72142BF2340DC75B0973E--
.
Author: "Vicente J. Botet Escriba" <vicente.botet@wanadoo.fr>
Date: Sat, 7 Apr 2018 09:35:39 +0200
Raw View
This is a multi-part message in MIME format.
--------------9D4353DCA20244DF3F0B26C8
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: quoted-printable
Le 06/04/2018 =C3=A0 18:05, Vincent Reverdy a =C3=A9crit=C2=A0:
> @Vicente
>
> Hi Vicente,
>
> Yes, I am working on an update and improvement of the overload=20
> proposal. It will be in 3 parts (independent, but related)
>
> * New type traits: this one
> * A std::functor class
>
Could you tell us more?
>
> * Classes to create custom overload set and sequences (+ new very
> useful and weird metaprogramming tricks based on that)
>
How your paper would improve p0051? What is the idea? I'm asking for=20
that because we don't have yet wording for std::overload.
You can check the last draft at=20
https://github.com/viboes/tags/blob/master/doc/proposals/overload/p0051r4.m=
d.
> I will look closely to P0343R1. In the standard, a pointer to function=20
> is considered to be a function object. That's why I propose to have=20
> is_functor and is_function_object (more details here=20
> <https://stackoverflow.com/questions/49503229/are-function-pointers-funct=
ion-objects-in-c>).
is_functor will be equivalent to is_function_object and is_class?
As "functor" doesn't appear in the standard, I would suggest to we look=20
for another name.
Lets reserve "functor" for functors in the category theory (functors,=20
applicatibles, monads) (See=20
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0650r2.pdf)
>
> For the broken links, sorry.
>
It would help the reading ;-)
Best,
Vicente
--=20
You received this message because you are subscribed to the Google Groups "=
ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
To view this discussion on the web visit https://groups.google.com/a/isocpp=
..org/d/msgid/std-proposals/c5985c54-1474-7ff2-7a09-96240779f92b%40wanadoo.f=
r.
--------------9D4353DCA20244DF3F0B26C8
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<html>
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dutf-8=
">
</head>
<body text=3D"#000000" bgcolor=3D"#FFFFFF">
<div class=3D"moz-cite-prefix">Le 06/04/2018 =C3=A0 18:05, Vincent Reve=
rdy
a =C3=A9crit=C2=A0:<br>
</div>
<blockquote type=3D"cite"
cite=3D"mid:7c8f2068-5434-4294-a3ab-0691dc39b6c1@isocpp.org">
<div dir=3D"ltr">
<div>@Vicente</div>
<div><br>
</div>
<div>Hi Vicente,</div>
<div><br>
</div>
<div>Yes, I am working on an update and improvement of the
overload proposal. It will be in 3 parts (independent, but
related)<br>
</div>
<div>
<ul>
<li>New type traits: this one</li>
<li>A std::functor class</li>
</ul>
</div>
</div>
</blockquote>
Could you tell us more?<br>
<blockquote type=3D"cite"
cite=3D"mid:7c8f2068-5434-4294-a3ab-0691dc39b6c1@isocpp.org">
<div dir=3D"ltr">
<div>
<ul>
<li>Classes to create custom overload set and sequences (+
new very useful and weird metaprogramming tricks based on
that)</li>
</ul>
</div>
</div>
</blockquote>
How your paper would improve p0051? What is the idea? I'm asking for
that because we don't have yet wording for std::overload. <br>
You can check the last draft at
<a class=3D"moz-txt-link-freetext" href=3D"https://github.com/viboes/tags/b=
lob/master/doc/proposals/overload/p0051r4.md">https://github.com/viboes/tag=
s/blob/master/doc/proposals/overload/p0051r4.md</a>.<br>
<br>
<blockquote type=3D"cite"
cite=3D"mid:7c8f2068-5434-4294-a3ab-0691dc39b6c1@isocpp.org">
<div dir=3D"ltr">
<div>
<div>I will look closely to P0343R1. In the standard, a
pointer to function is considered to be a function object.
That's why I propose to have is_functor and
is_function_object (more details <a
href=3D"https://stackoverflow.com/questions/49503229/are-function-pointers-=
function-objects-in-c"
moz-do-not-send=3D"true">here</a>).</div>
</div>
</div>
</blockquote>
is_functor will be equivalent to is_function_object and is_class?<br>
As "functor" doesn't appear in the standard, I would suggest to we
look for another name.=C2=A0 <br>
Lets reserve "functor" for functors in the category theory
(functors, applicatibles, monads) (See
<a class=3D"moz-txt-link-freetext" href=3D"http://www.open-std.org/jtc1=
/sc22/wg21/docs/papers/2018/p0650r2.pdf">http://www.open-std.org/jtc1/sc22/=
wg21/docs/papers/2018/p0650r2.pdf</a>)<br>
<blockquote type=3D"cite"
cite=3D"mid:7c8f2068-5434-4294-a3ab-0691dc39b6c1@isocpp.org">
<div dir=3D"ltr">
<div>
<div><br>
</div>
<div>For the broken links, sorry.</div>
<div><br>
</div>
</div>
</div>
</blockquote>
It would help the reading ;-)<br>
<br>
<br>
Best,<br>
Vicente<br>
</body>
</html>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/c5985c54-1474-7ff2-7a09-96240779f92b%=
40wanadoo.fr?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/c5985c54-1474-7ff2-7a09-96240779f92b=
%40wanadoo.fr</a>.<br />
--------------9D4353DCA20244DF3F0B26C8--
.
Author: "Vicente J. Botet Escriba" <vicente.botet@wanadoo.fr>
Date: Sat, 7 Apr 2018 09:49:26 +0200
Raw View
This is a multi-part message in MIME format.
--------------5487E6407ECE25A2EDD764CE
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: quoted-printable
Le 06/04/2018 =C3=A0 18:50, Nicol Bolas a =C3=A9crit=C2=A0:
> On Friday, April 6, 2018 at 5:34:08 AM UTC-4, Vincent Reverdy wrote:
>
> Hello all,
>
> Here is the current paper. Comments are welcome.
> I didn't put things related to convertible/sink, because I think
> it deserves its own paper.
> For the typelist, I am expecting something along this line coming
> from SG7.
> And for the priority_tag for overloads it will probably come in a
> later proposal of mine.
>
>
> In the function traits, there seem to be some superfluous ones. Or at=20
> least, things that need to have motivation applied to them.
>
> `is_callable` is useful primarily as a component of other traits.
>
> `is_functor` is really just the intersection of `is_class||is_union`=20
> and `is_callable`. But this is really the wrong intersection. The=20
> principle motivational use for `is_functor` would be for something=20
> like `std::overload`, whose types must be classes and callable. But=20
> the thing is, `std::overload`'s callable types must be /inheritable/,=20
> since that's how `std::overload` implements stuff. So `std::overload`=20
> would really be using `is_callable` and `is_inheritable` to guard the=20
> types it is provided.
Right. My implementation checks only for the is_inheritable part. The=20
callable part is checked when calling it :(
Having a is_callable could help, to diagnose as soon as possible when=20
when overload takes something that is not callable, but this doesn't=20
mean that it is callblae with the arguments it will be called.
Is when we call it that we really check for the Callable.
To be pedantic, we need is_callable, but from the pragmatical point of=20
view, it is is_invocable that is useful.
BTW, We need that std::invoke is contexpr. Was this fixed already?
>
> So, can you provide a use case for `is_functor`, where code can accept=20
> *any* class with an overloaded `operator()`, even if it cannot inherit=20
> from it? If not, then this is not needed.
>
> `is_function_object` seems dubious. See, the most useful place one=20
> might see it is in algorithms. But quite frankly, algorithms ought to=20
> be adjusted to use `std::invoke`, so that they can take member=20
> pointers too.
>
> So, can you provide a use case for an interface that /should/=20
> explicitly exclude member pointers?
>
> `is_closure` seems not just useless but anti-useful. Closures and=20
> lambdas are nothing more than syntactic sugar. Any interface that=20
> accepts a lambda ought to also be able to accept a user-defined class=20
> type. To do otherwise creates a user-hostile interface; we /don't=20
> want/ users to be able to restrict interfaces in this way.
>
> Can you provide a use case for this trait that doesn't make the=20
> interface actively worse than using `is_functor`?
Agreed for all the comments. We need use cases.
However I will not be against (your approach Vincent) to request traits=20
for everything defined in the standard. But if we don't have use cases=20
for those traits, we don't need to spend time on them.
Vicente
--=20
You received this message because you are subscribed to the Google Groups "=
ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
To view this discussion on the web visit https://groups.google.com/a/isocpp=
..org/d/msgid/std-proposals/9af6e244-f79c-db67-70a1-165a95780f4f%40wanadoo.f=
r.
--------------5487E6407ECE25A2EDD764CE
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<html>
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dutf-8=
">
</head>
<body text=3D"#000000" bgcolor=3D"#FFFFFF">
<div class=3D"moz-cite-prefix">Le 06/04/2018 =C3=A0 18:50, Nicol Bolas =
a
=C3=A9crit=C2=A0:<br>
</div>
<blockquote type=3D"cite"
cite=3D"mid:08cab291-d82d-4620-a825-6331deafc8fa@isocpp.org">
<div dir=3D"ltr">On Friday, April 6, 2018 at 5:34:08 AM UTC-4,
Vincent Reverdy wrote:
<blockquote class=3D"gmail_quote" style=3D"margin: 0;margin-left:
0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;">
<div dir=3D"ltr">
<div>Hello all,</div>
<div><br>
</div>
<div>Here is the current paper. Comments are welcome.</div>
<div>I didn't put things related to convertible/sink,
because I think it deserves its own paper.</div>
<div>For the typelist, I am expecting something along this
line coming from SG7.<br>
</div>
<div>And for the priority_tag for overloads it will probably
come in a later proposal of mine.</div>
</div>
</blockquote>
<div><br>
In the function traits, there seem to be some superfluous
ones. Or at least, things that need to have motivation applied
to them.<br>
<br>
`is_callable` is useful primarily as a component of other
traits.<br>
<br>
`is_functor` is really just the intersection of
`is_class||is_union` and `is_callable`. But this is really the
wrong intersection. The principle motivational use for
`is_functor` would be for something like `std::overload`,
whose types must be classes and callable. But the thing is,
`std::overload`'s callable types must be <i>inheritable</i>,
since that's how `std::overload` implements stuff. So
`std::overload` would really be using `is_callable` and
`is_inheritable` to guard the types it is provided.<br>
</div>
</div>
</blockquote>
Right. My implementation checks only for the is_inheritable part.
The callable part is checked when calling it :(<br>
Having a is_callable could help, to diagnose as soon as possible
when when overload takes something that is not callable, but this
doesn't mean that it is callblae with the arguments it will be
called. <br>
Is when we call it that we really check for the Callable.<br>
To be pedantic, we need is_callable, but from the pragmatical point
of view, it is is_invocable that is useful. <br>
BTW, We need that std::invoke is contexpr. Was this fixed already?<br>
<blockquote type=3D"cite"
cite=3D"mid:08cab291-d82d-4620-a825-6331deafc8fa@isocpp.org">
<div dir=3D"ltr">
<div><br>
So, can you provide a use case for `is_functor`, where code
can accept *any* class with an overloaded `operator()`, even
if it cannot inherit from it? If not, then this is not needed.<br=
>
<br>
`is_function_object` seems dubious. See, the most useful place
one might see it is in algorithms. But quite frankly,
algorithms ought to be adjusted to use `std::invoke`, so that
they can take member pointers too.<br>
<br>
So, can you provide a use case for an interface that <i>should</i=
>
explicitly exclude member pointers?<br>
<br>
`is_closure` seems not just useless but anti-useful. Closures
and lambdas are nothing more than syntactic sugar. Any
interface that accepts a lambda ought to also be able to
accept a user-defined class type. To do otherwise creates a
user-hostile interface; we <i>don't want</i> users to be able
to restrict interfaces in this way.<br>
<br>
Can you provide a use case for this trait that doesn't make
the interface actively worse than using `is_functor`?<br>
</div>
</div>
</blockquote>
Agreed for all the comments. We need use cases. <br>
<br>
However I will not be against (your approach Vincent) to request
traits for everything defined in the standard. But if we don't have
use cases for those traits, we don't need to spend time on them.<br>
<br>
Vicente<br>
</body>
</html>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/9af6e244-f79c-db67-70a1-165a95780f4f%=
40wanadoo.fr?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/9af6e244-f79c-db67-70a1-165a95780f4f=
%40wanadoo.fr</a>.<br />
--------------5487E6407ECE25A2EDD764CE--
.
Author: Vincent Reverdy <vince.rev@gmail.com>
Date: Sun, 8 Apr 2018 02:42:05 -0700 (PDT)
Raw View
------=_Part_17721_403492997.1523180525627
Content-Type: multipart/alternative;
boundary="----=_Part_17722_390135425.1523180525627"
------=_Part_17722_390135425.1523180525627
Content-Type: text/plain; charset="UTF-8"
Thanks all for the feedback.
I will work far more on use cases and will try to provide examples for
every single type trait. All these type traits have motivations:
- either I have had several use cases for them in my own code base
- or they are here for completeness because of a similar trait falls
into the previous bullet point
@Arthur O'Dwyer:
Thanks for the feeback on the inherit_* thingy. I will completely rework
this part (because I still think these are useful traits).
For the "priority tag", I need to see first, how it interacts with the
overload proposal I am working on. I have used such a tool before (under
the name of "overload_rank"). But if you want to proceed and write a paper
with the wording without waiting on me, I will definitely vote for it,
because I've had a lot of use cases.
@Vicente:
The details about the two other proposals will come (hopefully before
Rapperswill), but I have a lot on my plate right now. My idea is to split
the problem about overload in first having a way to transform any callable
into an inheritable class with a function call operator (an improved
std::function), and have the overload proposal relying on it. Currently I
have no magical technique for non-inheritable classes, BUT, if we have the
overload tools relying on the function call operator proposal, then it
becomes the problem of the function call operator proposa (which will have
a far less large scope than the overload proposal)l. And my guess is that
reflection will provide us a way to deal with non-inheritable classes. I
promise more details will come with time.
(As a note, I am looking far more for constructive feedback (ie how the
current version can be improved) than on "this is bullshit and useless and
this part should be riped appart" comments. I don't necessarily disagree
whether a part is not that relevant, but there are standpoints in between
"this can be improved" and "this is complete bullshit". It's not because
someone never had a use case, that others haven't. Also, if you think that
something else should be included, feel free to write motivations, use
cases and wording. Help is very welcome! Thank you very much!)
--
You received this message because you are subscribed to the Google Groups "ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an email to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
To view this discussion on the web visit https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/b857bf08-6f01-475c-a458-72dda248415e%40isocpp.org.
------=_Part_17722_390135425.1523180525627
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><div>Thanks all for the feedback.</div><div><br></div><div=
>I will work far more on use cases and will try to provide examples for eve=
ry single type trait. All these type traits have motivations:</div><div><ul=
><li>either I have had several use cases for them in my own code base</li><=
li>or they are here for completeness because of a similar trait falls into =
the previous bullet point</li></ul><div>@Arthur O'Dwyer:</div><div>Than=
ks for the feeback on the inherit_* thingy. I will completely rework this p=
art (because I still think these are useful traits).</div><div><br></div><d=
iv>For the "priority tag", I need to see first, how it interacts =
with the overload proposal I am working on. I have used such a tool before =
(under the name of "overload_rank"). But if you want to proceed a=
nd write a paper with the wording without waiting on me, I will definitely =
vote for it, because I've had a lot of use cases.</div><div><br></div><=
div>@Vicente:</div><div>The details about the two other proposals will come=
(hopefully before Rapperswill), but I have a lot on my plate right now. My=
idea is to split the problem about overload in first having a way to trans=
form any callable into an inheritable class with a function call operator (=
an improved std::function), and have the overload proposal relying on it. C=
urrently I have no magical technique for non-inheritable classes, BUT, if w=
e have the overload tools relying on the function call operator proposal, t=
hen it becomes the problem of the function call operator proposa (which wil=
l have a far less large scope than the overload proposal)l. And my guess is=
that reflection will provide us a way to deal with non-inheritable classes=
.. I promise more details will come with time.</div><div><br></div><div>(As =
a note, I am looking far more for constructive feedback (ie how the current=
version can be improved) than on "this is bullshit and useless and th=
is part should be riped appart" comments. I don't necessarily disa=
gree whether a part is not that relevant, but there are standpoints in betw=
een "this can be improved" and "this is complete bullshit&qu=
ot;. It's not because someone never had a use case, that others haven&#=
39;t. Also, if you think that something else should be included, feel free =
to write motivations, use cases and wording. Help is very welcome! Thank yo=
u very much!)<br></div></div><br></div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/b857bf08-6f01-475c-a458-72dda248415e%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/b857bf08-6f01-475c-a458-72dda248415e=
%40isocpp.org</a>.<br />
------=_Part_17722_390135425.1523180525627--
------=_Part_17721_403492997.1523180525627--
.
Author: florian.csdt@gmail.com
Date: Mon, 9 Apr 2018 02:49:08 -0700 (PDT)
Raw View
------=_Part_22766_377744220.1523267348099
Content-Type: multipart/alternative;
boundary="----=_Part_22767_1371271557.1523267348099"
------=_Part_22767_1371271557.1523267348099
Content-Type: text/plain; charset="UTF-8"
On the inheritance, a while ago, I was thinking about having the
possibility to inherit from a non-class type.
I don't think we need to change the language for that, but we could have
access to a way to transform any non-class type into a class type.
For this, let me introduce the object metafunction:
template <class T>
using object = /* implementation defined */;
I think this could be naively implemented like this:
template <class T>
class objectified;
template <>
class objectified<int> {
private:
int data;
public:
objectified() = default;
objectified(const objectified&) = default;
objectified& operator=(const objectified&) = default;
~objectified() = default;
objectified(int data) : data(data) {}
operator const int&() const& { return data; }
operator const int&&() const&& { return data; }
operator int&() & { return data; }
operator int&&() && { return data; }
/* implements all operations supported by int */
};
// other specializations
template <class T>
struct objectify {
using type = T;
};
template <>
struct objectify<int> {
using type = objectified<int>;
};
// other specializations
template <class T>
using object = typename objectify<T>::type;
With that, you don't need a special case when you need to inherit from a
non-class type:
template <class T>
class proxy : std::object<T> { /* whatever */ };
If T is a class, then std::object<T> is T.
Otherwise, it is a type with the same behavior (at least what is actually
achievable with a class).
Of course, this could be implemented in a much more generic way, not
relying on specializing for every single literal type.
Concerning the priority_tag, we need to be careful how it is implemented
(inheritance will blow up compilation time for extreme priorities).
So I don't know how to implement it while avoiding long compilations...
In that respect, overload_rank could much easier to implement
--
You received this message because you are subscribed to the Google Groups "ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an email to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
To view this discussion on the web visit https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/c02a5596-ff2b-4a51-b01f-3544255ddeb9%40isocpp.org.
------=_Part_22767_1371271557.1523267348099
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr">On the inheritance, a while ago, I was thinking about havi=
ng the possibility to inherit from a non-class type.<br>I don't think w=
e need to change the language for that, but we could have access to a way t=
o transform any non-class type into a class type.<br><br>For this, let me i=
ntroduce the object metafunction:<br><div style=3D"background-color: rgb(25=
0, 250, 250); border-color: rgb(187, 187, 187); border-style: solid; border=
-width: 1px; overflow-wrap: break-word;" class=3D"prettyprint"><code class=
=3D"prettyprint"><div class=3D"subprettyprint"><span style=3D"color: #008;"=
class=3D"styled-by-prettify">template</span><span style=3D"color: #000;" c=
lass=3D"styled-by-prettify"> </span><span style=3D"color: #660;" class=3D"s=
tyled-by-prettify"><</span><span style=3D"color: #008;" class=3D"styled-=
by-prettify">class</span><span style=3D"color: #000;" class=3D"styled-by-pr=
ettify"> T</span><span style=3D"color: #660;" class=3D"styled-by-prettify">=
></span><span style=3D"color: #000;" class=3D"styled-by-prettify"><br></=
span><span style=3D"color: #008;" class=3D"styled-by-prettify">using</span>=
<span style=3D"color: #000;" class=3D"styled-by-prettify"> </span><span sty=
le=3D"color: #008;" class=3D"styled-by-prettify">object</span><span style=
=3D"color: #000;" class=3D"styled-by-prettify"> </span><span style=3D"color=
: #660;" class=3D"styled-by-prettify">=3D</span><span style=3D"color: #000;=
" class=3D"styled-by-prettify"> </span><span style=3D"color: #800;" class=
=3D"styled-by-prettify">/* implementation defined */</span><span style=3D"c=
olor: #660;" class=3D"styled-by-prettify">;</span><span style=3D"color: #00=
0;" class=3D"styled-by-prettify"><br></span></div></code></div><br>I think =
this could be naively implemented like this:<br><div style=3D"background-co=
lor: rgb(250, 250, 250); border-color: rgb(187, 187, 187); border-style: so=
lid; border-width: 1px; overflow-wrap: break-word;" class=3D"prettyprint"><=
code class=3D"prettyprint"><div class=3D"subprettyprint"><span style=3D"col=
or: #008;" class=3D"styled-by-prettify">template</span><span style=3D"color=
: #000;" class=3D"styled-by-prettify"> </span><span style=3D"color: #660;" =
class=3D"styled-by-prettify"><</span><span style=3D"color: #008;" class=
=3D"styled-by-prettify">class</span><span style=3D"color: #000;" class=3D"s=
tyled-by-prettify"> T</span><span style=3D"color: #660;" class=3D"styled-by=
-prettify">></span><span style=3D"color: #000;" class=3D"styled-by-prett=
ify"><br></span><span style=3D"color: #008;" class=3D"styled-by-prettify">c=
lass</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> objec=
tified</span><span style=3D"color: #000;" class=3D"styled-by-prettify">;<br=
><br>template <><br>class objectified<int> {<br>=C2=A0 private:=
<br>=C2=A0=C2=A0=C2=A0 int data;<br>=C2=A0 public:</span><span style=3D"col=
or: #000;" class=3D"styled-by-prettify"><code class=3D"prettyprint"><span s=
tyle=3D"color: #000;" class=3D"styled-by-prettify"><br>=C2=A0 =C2=A0 object=
ified</span><span style=3D"color: #660;" class=3D"styled-by-prettify">()</s=
pan><span style=3D"color: #000;" class=3D"styled-by-prettify"> </span><span=
style=3D"color: #660;" class=3D"styled-by-prettify">=3D</span><span style=
=3D"color: #000;" class=3D"styled-by-prettify"> </span><span style=3D"color=
: #008;" class=3D"styled-by-prettify">default</span><span style=3D"color: #=
660;" class=3D"styled-by-prettify">;</span><span style=3D"color: #000;" cla=
ss=3D"styled-by-prettify"><br>=C2=A0 =C2=A0 objectified</span><span style=
=3D"color: #660;" class=3D"styled-by-prettify">(</span><span style=3D"color=
: #008;" class=3D"styled-by-prettify">const</span><span style=3D"color: #00=
0;" class=3D"styled-by-prettify"> objectified</span><span style=3D"color: #=
660;" class=3D"styled-by-prettify">&)</span><span style=3D"color: #000;=
" class=3D"styled-by-prettify"> </span><span style=3D"color: #660;" class=
=3D"styled-by-prettify">=3D</span><span style=3D"color: #000;" class=3D"sty=
led-by-prettify"> </span><span style=3D"color: #008;" class=3D"styled-by-pr=
ettify">default</span><span style=3D"color: #660;" class=3D"styled-by-prett=
ify">;</span><code class=3D"prettyprint"><span style=3D"color: #000;" class=
=3D"styled-by-prettify"><br>=C2=A0 =C2=A0 objectified</span><span style=3D"=
color: #660;" class=3D"styled-by-prettify">&</span><span style=3D"color=
: #000;" class=3D"styled-by-prettify"> </span><span style=3D"color: #008;" =
class=3D"styled-by-prettify">operator</span><span style=3D"color: #660;" cl=
ass=3D"styled-by-prettify">=3D(</span><span style=3D"color: #008;" class=3D=
"styled-by-prettify">const</span><span style=3D"color: #000;" class=3D"styl=
ed-by-prettify"> objectified</span><span style=3D"color: #660;" class=3D"st=
yled-by-prettify">&)</span><span style=3D"color: #000;" class=3D"styled=
-by-prettify"> </span><span style=3D"color: #660;" class=3D"styled-by-prett=
ify">=3D</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> <=
/span><span style=3D"color: #008;" class=3D"styled-by-prettify">default</sp=
an><span style=3D"color: #660;" class=3D"styled-by-prettify">;</span><span =
style=3D"color: #000;" class=3D"styled-by-prettify"></span></code><code cla=
ss=3D"prettyprint"><span style=3D"color: #000;" class=3D"styled-by-prettify=
"><br>=C2=A0=C2=A0=C2=A0 ~objectified() =3D default;<br><br>=C2=A0=C2=A0=C2=
=A0 objectified(int data) : data(data) {}</span></code></code></span><span =
style=3D"color: #000;" class=3D"styled-by-prettify"><code class=3D"prettypr=
int"><code class=3D"prettyprint"><span style=3D"color: #000;" class=3D"styl=
ed-by-prettify"><code class=3D"prettyprint"><span style=3D"color: #000;" cl=
ass=3D"styled-by-prettify"><code class=3D"prettyprint"><code class=3D"prett=
yprint"><span style=3D"color: #000;" class=3D"styled-by-prettify"><br>=C2=
=A0=C2=A0=C2=A0 operator const int&() const& { return data; }</span=
></code></code></span></code></span></code></code></span><span style=3D"col=
or: #000;" class=3D"styled-by-prettify"><code class=3D"prettyprint"><code c=
lass=3D"prettyprint"><span style=3D"color: #000;" class=3D"styled-by-pretti=
fy"><code class=3D"prettyprint"><span style=3D"color: #000;" class=3D"style=
d-by-prettify"><code class=3D"prettyprint"><code class=3D"prettyprint"><spa=
n style=3D"color: #000;" class=3D"styled-by-prettify"><code class=3D"pretty=
print"><span style=3D"color: #000;" class=3D"styled-by-prettify"><code clas=
s=3D"prettyprint"><code class=3D"prettyprint"><span style=3D"color: #000;" =
class=3D"styled-by-prettify"><br>=C2=A0=C2=A0=C2=A0 operator const int&=
&() const&& { return data; }</span></code></code></span></code>=
</span></code></code></span></code></span></code></code></span><span style=
=3D"color: #000;" class=3D"styled-by-prettify"><code class=3D"prettyprint">=
<code class=3D"prettyprint"><span style=3D"color: #000;" class=3D"styled-by=
-prettify"><code class=3D"prettyprint"><span style=3D"color: #000;" class=
=3D"styled-by-prettify"><code class=3D"prettyprint"><code class=3D"prettypr=
int"><span style=3D"color: #000;" class=3D"styled-by-prettify"><code class=
=3D"prettyprint"><span style=3D"color: #000;" class=3D"styled-by-prettify">=
<code class=3D"prettyprint"><code class=3D"prettyprint"><span style=3D"colo=
r: #000;" class=3D"styled-by-prettify"><code class=3D"prettyprint"><span st=
yle=3D"color: #000;" class=3D"styled-by-prettify"><code class=3D"prettyprin=
t"><code class=3D"prettyprint"><span style=3D"color: #000;" class=3D"styled=
-by-prettify"><br>=C2=A0=C2=A0=C2=A0 operator int&() & { return dat=
a; }</span></code></code></span></code></span></code></code></span></code><=
/span></code></code></span></code></span></code></code></span><span style=
=3D"color: #000;" class=3D"styled-by-prettify"><code class=3D"prettyprint">=
<code class=3D"prettyprint"><span style=3D"color: #000;" class=3D"styled-by=
-prettify"><code class=3D"prettyprint"><span style=3D"color: #000;" class=
=3D"styled-by-prettify"><code class=3D"prettyprint"><code class=3D"prettypr=
int"><span style=3D"color: #000;" class=3D"styled-by-prettify"><code class=
=3D"prettyprint"><span style=3D"color: #000;" class=3D"styled-by-prettify">=
<code class=3D"prettyprint"><code class=3D"prettyprint"><span style=3D"colo=
r: #000;" class=3D"styled-by-prettify"><code class=3D"prettyprint"><span st=
yle=3D"color: #000;" class=3D"styled-by-prettify"><code class=3D"prettyprin=
t"><code class=3D"prettyprint"><span style=3D"color: #000;" class=3D"styled=
-by-prettify"><code class=3D"prettyprint"><span style=3D"color: #000;" clas=
s=3D"styled-by-prettify"><code class=3D"prettyprint"><code class=3D"prettyp=
rint"><span style=3D"color: #000;" class=3D"styled-by-prettify"><br>=C2=A0=
=C2=A0=C2=A0 operator int&&() && { return data; }</span></c=
ode></code></span></code></span></code></code></span></code></span></code><=
/code></span></code></span></code></code></span></code><br><br>=C2=A0=C2=A0=
=C2=A0 /* implements all operations supported by int */<br></span></code></=
code>};<br>// other specializations<br><br>template <class T><br>stru=
ct objectify {<br>=C2=A0 using type =3D T;<br>};<br>template <><br>st=
ruct objectify<int> {<br>=C2=A0 using type =3D objectified<int>=
;<br>};<br>// other specializations<br><br>template <class T><br>usin=
g object =3D typename objectify<T>::type;<br></span></div></code></di=
v><br>With that, you don't need a special case when you need to inherit=
from a non-class type:<br><div style=3D"background-color: rgb(250, 250, 25=
0); border-color: rgb(187, 187, 187); border-style: solid; border-width: 1p=
x; overflow-wrap: break-word;" class=3D"prettyprint"><code class=3D"prettyp=
rint"><div class=3D"subprettyprint"><span style=3D"color: #606;" class=3D"s=
tyled-by-prettify">template <class T><br>class proxy : std::object<=
;T> { /* whatever */ };<br></span><span style=3D"color: #660;" class=3D"=
styled-by-prettify"></span></div></code></div><br>If <span style=3D"font-fa=
mily: courier new, monospace;">T</span> is a class, then <span style=3D"fon=
t-family: courier new, monospace;">std::object<T></span> is <span sty=
le=3D"font-family: courier new, monospace;">T</span>.<br>Otherwise, it is a=
type with the same behavior (at least what is actually achievable with a c=
lass).<br>Of course, this could be implemented in a much more generic way, =
not relying on specializing for every single literal type.<br><br><br>Conce=
rning the <span style=3D"font-family: courier new, monospace;">priority_tag=
</span>, we need to be careful how it is implemented (inheritance will blow=
up compilation time for extreme priorities).<br>So I don't know how to=
implement it while avoiding long compilations...<br>In that respect, <span=
style=3D"font-family: courier new, monospace;">overload_rank</span> could =
much easier to implement<br><br></div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/c02a5596-ff2b-4a51-b01f-3544255ddeb9%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/c02a5596-ff2b-4a51-b01f-3544255ddeb9=
%40isocpp.org</a>.<br />
------=_Part_22767_1371271557.1523267348099--
------=_Part_22766_377744220.1523267348099--
.
Author: =?UTF-8?Q?Iv=C3=A1n_Sanz?= <ivansanzcarasa@gmail.com>
Date: Mon, 09 Apr 2018 09:55:22 +0000
Raw View
--0000000000001e7bc705696768b0
Content-Type: text/plain; charset="UTF-8"
std::never would be really useful when working with SFINAE to avoid two
fase lookup
--
You received this message because you are subscribed to the Google Groups "ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an email to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
To view this discussion on the web visit https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/CADhC_A1KJr%2BuwPPgs0vk-tA20MZXB9f_vwStFufuGRnG5Og9hg%40mail.gmail.com.
--0000000000001e7bc705696768b0
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"auto">std::never would be really useful when working with SFINA=
E to avoid two fase lookup</div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/CADhC_A1KJr%2BuwPPgs0vk-tA20MZXB9f_vw=
StFufuGRnG5Og9hg%40mail.gmail.com?utm_medium=3Demail&utm_source=3Dfooter">h=
ttps://groups.google.com/a/isocpp.org/d/msgid/std-proposals/CADhC_A1KJr%2Bu=
wPPgs0vk-tA20MZXB9f_vwStFufuGRnG5Og9hg%40mail.gmail.com</a>.<br />
--0000000000001e7bc705696768b0--
.
Author: Vincent Reverdy <vince.rev@gmail.com>
Date: Mon, 9 Apr 2018 05:14:03 -0700 (PDT)
Raw View
------=_Part_23080_1349124998.1523276043822
Content-Type: multipart/alternative;
boundary="----=_Part_23081_1920673750.1523276043822"
------=_Part_23081_1920673750.1523276043822
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Could you explain in more details, what std::never would be?=20
(declaration/definition)
Le lundi 9 avril 2018 04:55:34 UTC-5, Iv=C3=A1n Sanz a =C3=A9crit :
>
> std::never would be really useful when working with SFINAE to avoid two=
=20
> fase lookup
>
--=20
You received this message because you are subscribed to the Google Groups "=
ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
To view this discussion on the web visit https://groups.google.com/a/isocpp=
..org/d/msgid/std-proposals/b69d44eb-00f2-4885-80f8-979602bd64d1%40isocpp.or=
g.
------=_Part_23081_1920673750.1523276043822
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr">Could you explain in more details, what std::never would b=
e? (declaration/definition)<br><br>Le lundi 9 avril 2018 04:55:34 UTC-5, Iv=
=C3=A1n Sanz a =C3=A9crit=C2=A0:<blockquote class=3D"gmail_quote" style=3D"=
margin: 0;margin-left: 0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;=
"><div dir=3D"auto">std::never would be really useful when working with SFI=
NAE to avoid two fase lookup</div>
</blockquote></div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/b69d44eb-00f2-4885-80f8-979602bd64d1%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/b69d44eb-00f2-4885-80f8-979602bd64d1=
%40isocpp.org</a>.<br />
------=_Part_23081_1920673750.1523276043822--
------=_Part_23080_1349124998.1523276043822--
.
Author: "Arthur O'Dwyer" <arthur.j.odwyer@gmail.com>
Date: Mon, 9 Apr 2018 11:40:04 -0700
Raw View
--001a113f0bba0a8c9305696ebcb7
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
On Mon, Apr 9, 2018 at 2:49 AM, <florian.csdt@gmail.com> wrote:
>
> Concerning the priority_tag, we need to be careful how it is implemented
> (inheritance will blow up compilation time for extreme priorities).
> So I don't know how to implement it while avoiding long compilations...
> In that respect, overload_rank could much easier to implement
>
Can you post the implementation of overload_rank that you're thinking of?
In a quick Google search for "overload_rank c++", I found only this
overload_rank<K>
<https://stackoverflow.com/questions/42044116/no-matching-function-stdforwa=
rd-with-lambdas>
which is identical to priority_tag<K>, and this rank<K>
<http://detercode121.blogspot.com/2011/07/c-can-overloads-for-generic-funct=
ions.html>
which is also identical to priority_tag<K>.
template<size_t K> struct priority_tag : priority_tag<K-1> {};
template<> struct priority_tag<0> {};
As for "extreme priorities", notice that the former link's code dispatches
on overload_rank<5> and the latter's dispatches on rank<256>, and neither
writer cares to talk about compilation overhead (because it is negligible).
Instantiating even 256 empty struct types is child's play to a compiler
that can easily compile programs with literally *thousands* of functions.
However, when I use priority_tag<K>, I am generally careful to use the
lowest priorities that get my job done correctly =E2=80=94 more out of a se=
nse of
self-documenting code, than out of a concern for efficiency.
=E2=80=93Arthur
--=20
You received this message because you are subscribed to the Google Groups "=
ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
To view this discussion on the web visit https://groups.google.com/a/isocpp=
..org/d/msgid/std-proposals/CADvuK0JYFTKiROEnLRyEdgOQbopGwFRbtMurqd6tuTfJsjx=
bsQ%40mail.gmail.com.
--001a113f0bba0a8c9305696ebcb7
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr">On Mon, Apr 9, 2018 at 2:49 AM, <span dir=3D"ltr"><<a =
href=3D"mailto:florian.csdt@gmail.com" target=3D"_blank">florian.csdt@gmail=
..com</a>></span> wrote:<div class=3D"gmail_extra"><div class=3D"gmail_qu=
ote"><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;bo=
rder-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,2=
04);padding-left:1ex"><div dir=3D"ltr"><br>Concerning the <span style=3D"fo=
nt-family:"courier new",monospace">priority_tag</span>, we need t=
o be careful how it is implemented (inheritance will blow up compilation ti=
me for extreme priorities).<br>So I don't know how to implement it whil=
e avoiding long compilations...<br>In that respect, <span style=3D"font-fam=
ily:"courier new",monospace">overload_rank</span> could much easi=
er to implement</div></blockquote><div><br></div><div>Can you post the impl=
ementation of overload_rank that you're thinking of?</div><div>In a qui=
ck Google search for "overload_rank c++", I found only=C2=A0<a hr=
ef=3D"https://stackoverflow.com/questions/42044116/no-matching-function-std=
forward-with-lambdas">this overload_rank<K></a> which is identical to=
priority_tag<K>, and <a href=3D"http://detercode121.blogspot.com/201=
1/07/c-can-overloads-for-generic-functions.html">this rank<K></a> whi=
ch is also identical to priority_tag<K>.</div><div><br></div><div>=C2=
=A0 =C2=A0 template<size_t K> struct priority_tag : priority_tag<K=
-1> {};</div><div>=C2=A0 =C2=A0 template<> struct priority_tag<=
0> {};</div><div><br></div><div>As for "extreme priorities", n=
otice that the former link's code dispatches on overload_rank<5> =
and the latter's dispatches on rank<256>, and neither writer care=
s to talk about compilation overhead (because it is negligible). Instantiat=
ing even 256 empty struct types is child's play to a compiler that can =
easily compile programs with literally <i>thousands</i> of functions.=C2=A0=
However, when I use priority_tag<K>, I am generally careful to use t=
he lowest priorities that get my job done correctly =E2=80=94 more out of a=
sense of self-documenting code, than out of a concern for efficiency.</div=
><div><br></div><div>=E2=80=93Arthur</div></div></div></div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/CADvuK0JYFTKiROEnLRyEdgOQbopGwFRbtMur=
qd6tuTfJsjxbsQ%40mail.gmail.com?utm_medium=3Demail&utm_source=3Dfooter">htt=
ps://groups.google.com/a/isocpp.org/d/msgid/std-proposals/CADvuK0JYFTKiROEn=
LRyEdgOQbopGwFRbtMurqd6tuTfJsjxbsQ%40mail.gmail.com</a>.<br />
--001a113f0bba0a8c9305696ebcb7--
.
Author: blackm4ster@gmail.com
Date: Tue, 10 Apr 2018 00:43:57 -0700 (PDT)
Raw View
------=_Part_26884_1688359889.1523346237131
Content-Type: multipart/alternative;
boundary="----=_Part_26885_1453659109.1523346237131"
------=_Part_26885_1453659109.1523346237131
Content-Type: text/plain; charset="UTF-8"
It could be as simple as this:
template<typename...>
struct never;
This is very helpful when voiding two phase lookup:
// this can be optimized by the compiler as "false_type" doesn't depend on
anything
template<typename...>
struct always_false : std::false_type { };
// this forces compiler to not optimize it
template<>
struct force_false<std::never<>> : std::true_type { };
--
You received this message because you are subscribed to the Google Groups "ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an email to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
To view this discussion on the web visit https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/3664c080-f445-429d-96e7-78db2fb35e46%40isocpp.org.
------=_Part_26885_1453659109.1523346237131
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr">It could be as simple as this:<br><div><br></div><div>temp=
late<typename...><br></div><div>struct never;</div><div><br></div><di=
v>This is very helpful when voiding two phase lookup:</div><div><br></div><=
div>// this can be optimized by the compiler as "false_type" does=
n't depend on anything<br></div><div>template<typename...></div><=
div>struct always_false : std::false_type { };</div><div><br></div><div>// =
this forces compiler to not optimize it<br></div><div>template<><br>s=
truct force_false<std::never<>> : std::true_type { };<br></div>=
</div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/3664c080-f445-429d-96e7-78db2fb35e46%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/3664c080-f445-429d-96e7-78db2fb35e46=
%40isocpp.org</a>.<br />
------=_Part_26885_1453659109.1523346237131--
------=_Part_26884_1688359889.1523346237131--
.
Author: =?UTF-8?Q?Iv=C3=A1n_Sanz?= <ivansanzcarasa@gmail.com>
Date: Tue, 10 Apr 2018 00:45:26 -0700 (PDT)
Raw View
------=_Part_26925_676088486.1523346326061
Content-Type: multipart/alternative;
boundary="----=_Part_26926_1314525845.1523346326061"
------=_Part_26926_1314525845.1523346326061
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
It could be as simple as this:
template<typename...>
struct never;
This is very helpful when voiding two phase lookup:
// this can be optimized by the compiler as "false_type" doesn't depend on=
=20
anything
template<typename...>
struct always_false : std::false_type { };
// this forces compiler to not optimize it
template<>
struct force_false<std::never<>> : std::true_type { };
El lunes, 9 de abril de 2018, 14:14:03 (UTC+2), Vincent Reverdy escribi=C3=
=B3:
>
> Could you explain in more details, what std::never would be?=20
> (declaration/definition)
>
> Le lundi 9 avril 2018 04:55:34 UTC-5, Iv=C3=A1n Sanz a =C3=A9crit :
>>
>> std::never would be really useful when working with SFINAE to avoid two=
=20
>> fase lookup
>>
>
--=20
You received this message because you are subscribed to the Google Groups "=
ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
To view this discussion on the web visit https://groups.google.com/a/isocpp=
..org/d/msgid/std-proposals/ef3507ba-609a-4c67-9149-338ebfc433a7%40isocpp.or=
g.
------=_Part_26926_1314525845.1523346326061
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr">It could be as simple as this:<br><div><br></div><div>temp=
late<typename...><br></div><div>struct never;</div><div><br></div><di=
v>This is very helpful when voiding two phase lookup:</div><div><br></div><=
div>// this can be optimized by the compiler as "false_type" does=
n't depend on anything<br></div><div>template<typename...></div><=
div>struct always_false : std::false_type { };</div><div><br></div><div>// =
this forces compiler to not optimize it<br></div>template<><br>struct=
force_false<std::never<>> : std::true_type { };<br><br>El lune=
s, 9 de abril de 2018, 14:14:03 (UTC+2), Vincent Reverdy escribi=C3=B3:<bl=
ockquote class=3D"gmail_quote" style=3D"margin: 0;margin-left: 0.8ex;border=
-left: 1px #ccc solid;padding-left: 1ex;"><div dir=3D"ltr">Could you explai=
n in more details, what std::never would be? (declaration/definition)<br><b=
r>Le lundi 9 avril 2018 04:55:34 UTC-5, Iv=C3=A1n Sanz a =C3=A9crit=C2=A0:<=
blockquote class=3D"gmail_quote" style=3D"margin:0;margin-left:0.8ex;border=
-left:1px #ccc solid;padding-left:1ex"><div dir=3D"auto">std::never would b=
e really useful when working with SFINAE to avoid two fase lookup</div>
</blockquote></div></blockquote></div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/ef3507ba-609a-4c67-9149-338ebfc433a7%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/ef3507ba-609a-4c67-9149-338ebfc433a7=
%40isocpp.org</a>.<br />
------=_Part_26926_1314525845.1523346326061--
------=_Part_26925_676088486.1523346326061--
.
Author: florian.csdt@gmail.com
Date: Tue, 10 Apr 2018 02:52:13 -0700 (PDT)
Raw View
------=_Part_27961_761518063.1523353933671
Content-Type: multipart/alternative;
boundary="----=_Part_27962_634650762.1523353933671"
------=_Part_27962_634650762.1523353933671
Content-Type: text/plain; charset="UTF-8"
First, about the priority_tag: the problem is not that you will use
priority_tag<10000> (because you won't), but beginners will do.
It's true that it's fast to compile (at least for 900), but at some point,
you get a compiler error because it tries to instantiate more nested
templates than their own limit (900 for GCC by default).
So if you use an extreme priority like 800, and you use it in heavily
templated code, you might reach this limit without even thinking about it.
About overload_rank, I might have misunderstood what it actually is.
So let me give what I understood:
template <class... Fs>
class overload_rank {};
template <class F, class... Fs>
class overload_rank<F, Fs...> : overload_rank<Fs...> {
private:
F f;
overload_rank<Fs...>& base() { return *this; }
public:
overload_rank(F f, Fs... fs) : overload_rank<Fs...>(std::move(fs)...), f
(std::move(f)) {}
overload_rank(const overload_rank &) = default;
overload_rank( overload_rank&&) = default;
overload_rank& operator=(const overload_rank &) = default;
overload_rank& operator=( overload_rank&&) = default;
~overload_rank() = default;
// This is the prefered overload as it is constrained
template <class... Args>
requires requires(F f){ f(std::declval<Args&&>()...); }
decltype(auto) operator()(Args&&... args)
noexcept(noexcept(f(std::forward<Args>(args)...))) {
return f(std::forward<Args>(args)...);
}
template <class... Args>
decltype(auto) operator()(Args&&... args)
noexcept(noexcept(base()(std::forward<Args>(args)...))) {
return base()(std::forward<Args>(args)...);
}
};
Here is a use example:
auto g(void*) { return "void*"; }
auto g(int) { return "int"; }
overload_rank f{[](void*){ return "void*"; }, [](int){ return "int"; }};
f(0); // -> "void*"
//g(0); // ambiguous overload
Writing this, I realize this is not really an overload_rank, but an
ordered_overload.
Back to the point: this class is easily implementable with any priority_tag.
But that might not be the same thing as you designed by overload_rank.
--
You received this message because you are subscribed to the Google Groups "ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an email to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
To view this discussion on the web visit https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/dff5a752-a7fe-47de-9ca0-4771c41b6c54%40isocpp.org.
------=_Part_27962_634650762.1523353933671
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr">First, about the priority_tag: the problem is not that you=
will use priority_tag<10000> (because you won't), but beginners =
will do.<br>It's true that it's fast to compile (at least for 900),=
but at some point, you get a compiler error because it tries to instantiat=
e more nested templates than their own limit (900 for GCC by default).<br>S=
o if you use an extreme priority like 800, and you use it in heavily templa=
ted code, you might reach this limit without even thinking about it.<br><br=
>About overload_rank, I might have misunderstood what it actually is.<br>So=
let me give what I understood:<br><br><div style=3D"background-color: rgb(=
250, 250, 250); border-color: rgb(187, 187, 187); border-style: solid; bord=
er-width: 1px; overflow-wrap: break-word;" class=3D"prettyprint"><code clas=
s=3D"prettyprint"><div class=3D"subprettyprint"><span style=3D"color: #008;=
" class=3D"styled-by-prettify">template</span><span style=3D"color: #000;" =
class=3D"styled-by-prettify"> </span><span style=3D"color: #660;" class=3D"=
styled-by-prettify"><</span><span style=3D"color: #008;" class=3D"styled=
-by-prettify">class</span><span style=3D"color: #660;" class=3D"styled-by-p=
rettify">...</span><span style=3D"color: #000;" class=3D"styled-by-prettify=
"> </span><span style=3D"color: #606;" class=3D"styled-by-prettify">Fs</spa=
n><span style=3D"color: #660;" class=3D"styled-by-prettify">></span><spa=
n style=3D"color: #000;" class=3D"styled-by-prettify"><br></span><span styl=
e=3D"color: #008;" class=3D"styled-by-prettify">class</span><span style=3D"=
color: #000;" class=3D"styled-by-prettify"> overload_rank </span><span styl=
e=3D"color: #660;" class=3D"styled-by-prettify">{};</span><span style=3D"co=
lor: #000;" class=3D"styled-by-prettify"><br><br></span><span style=3D"colo=
r: #008;" class=3D"styled-by-prettify">template</span><span style=3D"color:=
#000;" class=3D"styled-by-prettify"> </span><span style=3D"color: #660;" c=
lass=3D"styled-by-prettify"><</span><span style=3D"color: #008;" class=
=3D"styled-by-prettify">class</span><span style=3D"color: #000;" class=3D"s=
tyled-by-prettify"> F</span><span style=3D"color: #660;" class=3D"styled-by=
-prettify">,</span><span style=3D"color: #000;" class=3D"styled-by-prettify=
"> </span><span style=3D"color: #008;" class=3D"styled-by-prettify">class</=
span><span style=3D"color: #660;" class=3D"styled-by-prettify">...</span><s=
pan style=3D"color: #000;" class=3D"styled-by-prettify"> </span><span style=
=3D"color: #606;" class=3D"styled-by-prettify">Fs</span><span style=3D"colo=
r: #660;" class=3D"styled-by-prettify">></span><span style=3D"color: #00=
0;" class=3D"styled-by-prettify"><br></span><span style=3D"color: #008;" cl=
ass=3D"styled-by-prettify">class</span><span style=3D"color: #000;" class=
=3D"styled-by-prettify"> overload_rank</span><span style=3D"color: #660;" c=
lass=3D"styled-by-prettify"><</span><span style=3D"color: #000;" class=
=3D"styled-by-prettify">F</span><span style=3D"color: #660;" class=3D"style=
d-by-prettify">,</span><span style=3D"color: #000;" class=3D"styled-by-pret=
tify"> </span><span style=3D"color: #606;" class=3D"styled-by-prettify">Fs<=
/span><span style=3D"color: #660;" class=3D"styled-by-prettify">...></sp=
an><span style=3D"color: #000;" class=3D"styled-by-prettify"> </span><span =
style=3D"color: #660;" class=3D"styled-by-prettify">:</span><span style=3D"=
color: #000;" class=3D"styled-by-prettify"> overload_rank</span><span style=
=3D"color: #660;" class=3D"styled-by-prettify"><</span><span style=3D"co=
lor: #606;" class=3D"styled-by-prettify">Fs</span><span style=3D"color: #66=
0;" class=3D"styled-by-prettify">...></span><span style=3D"color: #000;"=
class=3D"styled-by-prettify"> </span><span style=3D"color: #660;" class=3D=
"styled-by-prettify">{</span><span style=3D"color: #000;" class=3D"styled-b=
y-prettify"><br>=C2=A0 </span><span style=3D"color: #008;" class=3D"styled-=
by-prettify">private</span><span style=3D"color: #660;" class=3D"styled-by-=
prettify">:</span><span style=3D"color: #000;" class=3D"styled-by-prettify"=
><br>=C2=A0 =C2=A0 F f</span><span style=3D"color: #660;" class=3D"styled-b=
y-prettify">;</span><span style=3D"color: #000;" class=3D"styled-by-prettif=
y"><br>=C2=A0=C2=A0=C2=A0 overload_rank<Fs...>& base() { return *=
this; }<br>=C2=A0 </span><span style=3D"color: #008;" class=3D"styled-by-pr=
ettify">public</span><span style=3D"color: #660;" class=3D"styled-by-pretti=
fy">:</span><span style=3D"color: #000;" class=3D"styled-by-prettify"><br>=
=C2=A0 =C2=A0 overload_rank</span><span style=3D"color: #660;" class=3D"sty=
led-by-prettify">(</span><span style=3D"color: #000;" class=3D"styled-by-pr=
ettify">F f</span><span style=3D"color: #660;" class=3D"styled-by-prettify"=
>,</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> </span>=
<span style=3D"color: #606;" class=3D"styled-by-prettify">Fs</span><span st=
yle=3D"color: #660;" class=3D"styled-by-prettify">...</span><span style=3D"=
color: #000;" class=3D"styled-by-prettify"> fs</span><span style=3D"color: =
#660;" class=3D"styled-by-prettify">)</span><span style=3D"color: #000;" cl=
ass=3D"styled-by-prettify"> </span><span style=3D"color: #660;" class=3D"st=
yled-by-prettify">:</span><span style=3D"color: #000;" class=3D"styled-by-p=
rettify"> overload_rank</span><span style=3D"color: #660;" class=3D"styled-=
by-prettify"><</span><span style=3D"color: #606;" class=3D"styled-by-pre=
ttify">Fs</span><span style=3D"color: #660;" class=3D"styled-by-prettify">.=
...>(</span><span style=3D"color: #000;" class=3D"styled-by-prettify">std=
</span><span style=3D"color: #660;" class=3D"styled-by-prettify">::</span><=
span style=3D"color: #000;" class=3D"styled-by-prettify">move</span><span s=
tyle=3D"color: #660;" class=3D"styled-by-prettify">(</span><span style=3D"c=
olor: #000;" class=3D"styled-by-prettify">fs</span><span style=3D"color: #6=
60;" class=3D"styled-by-prettify">)...),</span><span style=3D"color: #000;"=
class=3D"styled-by-prettify"> f</span><span style=3D"color: #660;" class=
=3D"styled-by-prettify">(</span><span style=3D"color: #000;" class=3D"style=
d-by-prettify">std</span><span style=3D"color: #660;" class=3D"styled-by-pr=
ettify">::</span><span style=3D"color: #000;" class=3D"styled-by-prettify">=
move</span><span style=3D"color: #660;" class=3D"styled-by-prettify">(</spa=
n><span style=3D"color: #000;" class=3D"styled-by-prettify">f</span><span s=
tyle=3D"color: #660;" class=3D"styled-by-prettify">))</span><span style=3D"=
color: #000;" class=3D"styled-by-prettify"> </span><span style=3D"color: #6=
60;" class=3D"styled-by-prettify">{}</span><code class=3D"prettyprint"><cod=
e class=3D"prettyprint"><span style=3D"color: #000;" class=3D"styled-by-pre=
ttify"><br>=C2=A0 =C2=A0 overload_rank</span><span style=3D"color: #660;" c=
lass=3D"styled-by-prettify">(</span><span style=3D"color: #008;" class=3D"s=
tyled-by-prettify">const</span><span style=3D"color: #000;" class=3D"styled=
-by-prettify"> overload_rank </span><span style=3D"color: #660;" class=3D"s=
tyled-by-prettify">&)</span><span style=3D"color: #000;" class=3D"style=
d-by-prettify"> </span><span style=3D"color: #660;" class=3D"styled-by-pret=
tify">=3D</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> =
</span><span style=3D"color: #008;" class=3D"styled-by-prettify">default</s=
pan><span style=3D"color: #660;" class=3D"styled-by-prettify">;</span><span=
style=3D"color: #000;" class=3D"styled-by-prettify"><br></span></code><cod=
e class=3D"prettyprint"><span style=3D"color: #000;" class=3D"styled-by-pre=
ttify">=C2=A0 =C2=A0 overload_rank</span><span style=3D"color: #660;" class=
=3D"styled-by-prettify">(</span><span style=3D"color: #008;" class=3D"style=
d-by-prettify">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 </span><span style=3D"color: =
#000;" class=3D"styled-by-prettify">overload_rank</span><span style=3D"colo=
r: #660;" class=3D"styled-by-prettify">&&)</span><span style=3D"col=
or: #000;" class=3D"styled-by-prettify"> </span><span style=3D"color: #660;=
" class=3D"styled-by-prettify">=3D</span><span style=3D"color: #000;" class=
=3D"styled-by-prettify"> </span><span style=3D"color: #008;" class=3D"style=
d-by-prettify">default</span><span style=3D"color: #660;" class=3D"styled-b=
y-prettify">;</span><span style=3D"color: #000;" class=3D"styled-by-prettif=
y"></span></code></code><code class=3D"prettyprint"><code class=3D"prettypr=
int"><span style=3D"color: #000;" class=3D"styled-by-prettify"><br>=C2=A0 =
=C2=A0 overload_rank& operator=3D</span><span style=3D"color: #660;" cl=
ass=3D"styled-by-prettify">(</span><span style=3D"color: #008;" class=3D"st=
yled-by-prettify">const</span><span style=3D"color: #000;" class=3D"styled-=
by-prettify"> overload_rank </span><span style=3D"color: #660;" class=3D"st=
yled-by-prettify">&)</span><span style=3D"color: #000;" class=3D"styled=
-by-prettify"> </span><span style=3D"color: #660;" class=3D"styled-by-prett=
ify">=3D</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> <=
/span><span style=3D"color: #008;" class=3D"styled-by-prettify">default</sp=
an><span style=3D"color: #660;" class=3D"styled-by-prettify">;</span><span =
style=3D"color: #000;" class=3D"styled-by-prettify"><br></span></code><code=
class=3D"prettyprint"><span style=3D"color: #000;" class=3D"styled-by-pret=
tify">=C2=A0 =C2=A0 overload_rank</span><span style=3D"color: #660;" class=
=3D"styled-by-prettify">& operator=3D(</span><span style=3D"color: #008=
;" class=3D"styled-by-prettify">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 </span><span=
style=3D"color: #000;" class=3D"styled-by-prettify">overload_rank</span><s=
pan style=3D"color: #660;" class=3D"styled-by-prettify">&&)</span><=
span style=3D"color: #000;" class=3D"styled-by-prettify"> </span><span styl=
e=3D"color: #660;" class=3D"styled-by-prettify">=3D</span><span style=3D"co=
lor: #000;" class=3D"styled-by-prettify"> </span><span style=3D"color: #008=
;" class=3D"styled-by-prettify">default</span><span style=3D"color: #660;" =
class=3D"styled-by-prettify">;</span><span style=3D"color: #000;" class=3D"=
styled-by-prettify"></span></code></code><code class=3D"prettyprint"><span =
style=3D"color: #000;" class=3D"styled-by-prettify"><br>=C2=A0=C2=A0=C2=A0 =
~overload_rank() =3D default;<br></span></code><span style=3D"color: #000;"=
class=3D"styled-by-prettify"><br>=C2=A0=C2=A0 // This is the prefered over=
load as it is constrained<br>=C2=A0=C2=A0 template <class... Args><br=
>=C2=A0=C2=A0 requires requires(F f){ f(std::declval<Args&&>(=
)...); }<br>=C2=A0=C2=A0 decltype(auto) operator()(Args&&... args) =
noexcept(noexcept(f(std::forward<Args>(args)...))) {</span><br><span =
style=3D"color: #000;" class=3D"styled-by-prettify"><code class=3D"prettypr=
int"><span style=3D"color: #000;" class=3D"styled-by-prettify">=C2=A0=C2=A0=
=C2=A0=C2=A0 return f(std::forward<Args>(args)...)</span></code>;<br>=
=C2=A0=C2=A0 }</span><br><span style=3D"color: #000;" class=3D"styled-by-pr=
ettify"><code class=3D"prettyprint"><span style=3D"color: #000;" class=3D"s=
tyled-by-prettify"><br>=C2=A0=C2=A0 template <class... Args><br>=C2=
=A0=C2=A0 decltype(auto) operator()(Args&&... args) noexcept(noexce=
pt(base()(std::forward<Args>(args)...))) {</span><br><span style=3D"c=
olor: #000;" class=3D"styled-by-prettify"><code class=3D"prettyprint"><span=
style=3D"color: #000;" class=3D"styled-by-prettify">=C2=A0=C2=A0=C2=A0=C2=
=A0 return base()(std::forward<Args>(args)...)</span></code>;<br>=C2=
=A0=C2=A0 }<br></span></code></span><span style=3D"color: #660;" class=3D"s=
tyled-by-prettify">};</span><span style=3D"color: #000;" class=3D"styled-by=
-prettify"><br></span></div></code></div><br>Here is a use example:<div sty=
le=3D"background-color: rgb(250, 250, 250); border-color: rgb(187, 187, 187=
); border-style: solid; border-width: 1px; overflow-wrap: break-word;" clas=
s=3D"prettyprint"><code class=3D"prettyprint"><div class=3D"subprettyprint"=
><span style=3D"color: #606;" class=3D"styled-by-prettify"></span><span sty=
le=3D"color: #660;" class=3D"styled-by-prettify">auto g(void*) { return &qu=
ot;void*"; }<br>auto g(int)=C2=A0=C2=A0 { return "int";=C2=
=A0=C2=A0 }<br><br>overload_rank f{[](void*){ return "void*"; }, =
[](int){ return "int"; }};<br>f(0); // -> "void*"<br=
>//g(0); // ambiguous overload<br></span></div></code></div><br>Writing thi=
s, I realize this is not really an <span style=3D"font-family: courier new,=
monospace;">overload_rank</span>, but an <span style=3D"font-family: couri=
er new, monospace;">ordered_overload</span>.<br>Back to the point: this cla=
ss is easily implementable with any <span style=3D"font-family: courier new=
, monospace;">priority_tag</span>. But that might not be the same thing as =
you designed by overload_rank.<br><br></div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/dff5a752-a7fe-47de-9ca0-4771c41b6c54%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/dff5a752-a7fe-47de-9ca0-4771c41b6c54=
%40isocpp.org</a>.<br />
------=_Part_27962_634650762.1523353933671--
------=_Part_27961_761518063.1523353933671--
.
Author: Vincent Reverdy <vince.rev@gmail.com>
Date: Tue, 10 Apr 2018 10:40:51 -0700 (PDT)
Raw View
------=_Part_29695_420953698.1523382051565
Content-Type: multipart/alternative;
boundary="----=_Part_29696_267690237.1523382051565"
------=_Part_29696_267690237.1523382051565
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
@Ivan:
I'm not sure I understand correclty.
Would this bring anything more than:
template <class...> using void_t =3D void; // Already included in C++17
template <class...> inline constexpr bool false_v =3D false; // Already=20
included in the proposal
template <class...> inline constexpr bool true_v =3D true; // Already=20
included in the proposal
and if so, what?
Thanks!
Le mardi 10 avril 2018 02:45:26 UTC-5, Iv=C3=A1n Sanz a =C3=A9crit :
>
> It could be as simple as this:
>
> template<typename...>
> struct never;
>
> This is very helpful when voiding two phase lookup:
>
> // this can be optimized by the compiler as "false_type" doesn't depend o=
n=20
> anything
> template<typename...>
> struct always_false : std::false_type { };
>
> // this forces compiler to not optimize it
> template<>
> struct force_false<std::never<>> : std::true_type { };
>
> El lunes, 9 de abril de 2018, 14:14:03 (UTC+2), Vincent Reverdy escribi=
=C3=B3:
>>
>> Could you explain in more details, what std::never would be?=20
>> (declaration/definition)
>>
>> Le lundi 9 avril 2018 04:55:34 UTC-5, Iv=C3=A1n Sanz a =C3=A9crit :
>>>
>>> std::never would be really useful when working with SFINAE to avoid two=
=20
>>> fase lookup
>>>
>>
--=20
You received this message because you are subscribed to the Google Groups "=
ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
To view this discussion on the web visit https://groups.google.com/a/isocpp=
..org/d/msgid/std-proposals/52b67400-9e4e-41e1-a027-aa0b0cb4e8cf%40isocpp.or=
g.
------=_Part_29696_267690237.1523382051565
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><div>@Ivan:</div><div><br></div><div>I'm not sure I un=
derstand correclty.</div><div>Would this bring anything more than:</div><di=
v><br></div><div style=3D"background-color: rgb(250, 250, 250); border-colo=
r: rgb(187, 187, 187); border-style: solid; border-width: 1px; overflow-wra=
p: break-word;" class=3D"prettyprint"><code class=3D"prettyprint"><div clas=
s=3D"subprettyprint"><span style=3D"color: #008;" class=3D"styled-by-pretti=
fy">template</span><span style=3D"color: #000;" class=3D"styled-by-prettify=
"> </span><span style=3D"color: #660;" class=3D"styled-by-prettify"><</s=
pan><span style=3D"color: #008;" class=3D"styled-by-prettify">class</span><=
span style=3D"color: #660;" class=3D"styled-by-prettify">...></span><spa=
n style=3D"color: #000;" class=3D"styled-by-prettify"> </span><span style=
=3D"color: #008;" class=3D"styled-by-prettify">using</span><span style=3D"c=
olor: #000;" class=3D"styled-by-prettify"> void_t </span><span style=3D"col=
or: #660;" class=3D"styled-by-prettify">=3D</span><span style=3D"color: #00=
0;" class=3D"styled-by-prettify"> </span><span style=3D"color: #008;" class=
=3D"styled-by-prettify">void</span><span style=3D"color: #660;" class=3D"st=
yled-by-prettify">;</span><span style=3D"color: #000;" class=3D"styled-by-p=
rettify"> </span><span style=3D"color: #800;" class=3D"styled-by-prettify">=
// Already included in C++17</span><span style=3D"color: #000;" class=3D"st=
yled-by-prettify"><br></span><span style=3D"color: #008;" class=3D"styled-b=
y-prettify">template</span><span style=3D"color: #000;" class=3D"styled-by-=
prettify"> </span><span style=3D"color: #660;" class=3D"styled-by-prettify"=
><</span><span style=3D"color: #008;" class=3D"styled-by-prettify">class=
</span><span style=3D"color: #660;" class=3D"styled-by-prettify">...></s=
pan><span style=3D"color: #000;" class=3D"styled-by-prettify"> </span><span=
style=3D"color: #008;" class=3D"styled-by-prettify">inline</span><span sty=
le=3D"color: #000;" class=3D"styled-by-prettify"> </span><span style=3D"col=
or: #008;" class=3D"styled-by-prettify">constexpr</span><span style=3D"colo=
r: #000;" class=3D"styled-by-prettify"> </span><span style=3D"color: #008;"=
class=3D"styled-by-prettify">bool</span><span style=3D"color: #000;" class=
=3D"styled-by-prettify"> false_v </span><span style=3D"color: #660;" class=
=3D"styled-by-prettify">=3D</span><span style=3D"color: #000;" class=3D"sty=
led-by-prettify"> </span><span style=3D"color: #008;" class=3D"styled-by-pr=
ettify">false</span><span style=3D"color: #660;" class=3D"styled-by-prettif=
y">;</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> </spa=
n><span style=3D"color: #800;" class=3D"styled-by-prettify">// Already incl=
uded in the proposal</span><span style=3D"color: #000;" class=3D"styled-by-=
prettify"><br></span><span style=3D"color: #008;" class=3D"styled-by-pretti=
fy">template</span><span style=3D"color: #000;" class=3D"styled-by-prettify=
"> </span><span style=3D"color: #660;" class=3D"styled-by-prettify"><</s=
pan><span style=3D"color: #008;" class=3D"styled-by-prettify">class</span><=
span style=3D"color: #660;" class=3D"styled-by-prettify">...></span><spa=
n style=3D"color: #000;" class=3D"styled-by-prettify"> </span><span style=
=3D"color: #008;" class=3D"styled-by-prettify">inline</span><span style=3D"=
color: #000;" class=3D"styled-by-prettify"> </span><span style=3D"color: #0=
08;" class=3D"styled-by-prettify">constexpr</span><span style=3D"color: #00=
0;" class=3D"styled-by-prettify"> </span><span style=3D"color: #008;" class=
=3D"styled-by-prettify">bool</span><span style=3D"color: #000;" class=3D"st=
yled-by-prettify"> true_v </span><span style=3D"color: #660;" class=3D"styl=
ed-by-prettify">=3D</span><span style=3D"color: #000;" class=3D"styled-by-p=
rettify"> </span><span style=3D"color: #008;" class=3D"styled-by-prettify">=
true</span><span style=3D"color: #660;" class=3D"styled-by-prettify">;</spa=
n><span style=3D"color: #000;" class=3D"styled-by-prettify"> </span><span s=
tyle=3D"color: #800;" class=3D"styled-by-prettify">// Already included in t=
he proposal</span></div></code></div><div><br></div><div>and if so, what?</=
div><div>Thanks!<br></div><br>Le mardi 10 avril 2018 02:45:26 UTC-5, Iv=C3=
=A1n Sanz a =C3=A9crit=C2=A0:<blockquote class=3D"gmail_quote" style=3D"mar=
gin: 0;margin-left: 0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;"><=
div dir=3D"ltr">It could be as simple as this:<br><div><br></div><div>templ=
ate<typename...><br></div><div>struct never;</div><div><br></div><div=
>This is very helpful when voiding two phase lookup:</div><div><br></div><d=
iv>// this can be optimized by the compiler as "false_type" doesn=
't depend on anything<br></div><div>template<typename...></div><d=
iv>struct always_false : std::false_type { };</div><div><br></div><div>// t=
his forces compiler to not optimize it<br></div>template<><br>struct =
force_false<std::never<>> : std::true_type { };<br><br>El lunes=
, 9 de abril de 2018, 14:14:03 (UTC+2), Vincent Reverdy escribi=C3=B3:<blo=
ckquote class=3D"gmail_quote" style=3D"margin:0;margin-left:0.8ex;border-le=
ft:1px #ccc solid;padding-left:1ex"><div dir=3D"ltr">Could you explain in m=
ore details, what std::never would be? (declaration/definition)<br><br>Le l=
undi 9 avril 2018 04:55:34 UTC-5, Iv=C3=A1n Sanz a =C3=A9crit=C2=A0:<blockq=
uote class=3D"gmail_quote" style=3D"margin:0;margin-left:0.8ex;border-left:=
1px #ccc solid;padding-left:1ex"><div dir=3D"auto">std::never would be real=
ly useful when working with SFINAE to avoid two fase lookup</div>
</blockquote></div></blockquote></div></blockquote></div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/52b67400-9e4e-41e1-a027-aa0b0cb4e8cf%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/52b67400-9e4e-41e1-a027-aa0b0cb4e8cf=
%40isocpp.org</a>.<br />
------=_Part_29696_267690237.1523382051565--
------=_Part_29695_420953698.1523382051565--
.
Author: =?UTF-8?Q?Iv=C3=A1n_Sanz?= <ivansanzcarasa@gmail.com>
Date: Tue, 10 Apr 2018 12:08:15 -0700 (PDT)
Raw View
------=_Part_30238_790864008.1523387296079
Content-Type: multipart/alternative;
boundary="----=_Part_30239_868201715.1523387296079"
------=_Part_30239_868201715.1523387296079
Content-Type: text/plain; charset="UTF-8"
Sorry, the compiler output doesn't properly work in that link.
*This is the correct one: https://godbolt.org/g/s2hPVJ
<https://godbolt.org/g/s2hPVJ>*
--
You received this message because you are subscribed to the Google Groups "ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an email to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
To view this discussion on the web visit https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/4f5bc68f-8007-40a7-b3af-780f738c9be7%40isocpp.org.
------=_Part_30239_868201715.1523387296079
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><div>Sorry, the compiler output doesn't properly work =
in that link.</div><div><b>This is the correct one: <a href=3D"https://godb=
olt.org/g/s2hPVJ">https://godbolt.org/g/s2hPVJ</a></b><br></div></div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/4f5bc68f-8007-40a7-b3af-780f738c9be7%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/4f5bc68f-8007-40a7-b3af-780f738c9be7=
%40isocpp.org</a>.<br />
------=_Part_30239_868201715.1523387296079--
------=_Part_30238_790864008.1523387296079--
.
Author: =?UTF-8?Q?Iv=C3=A1n_Sanz?= <ivansanzcarasa@gmail.com>
Date: Tue, 10 Apr 2018 12:03:42 -0700 (PDT)
Raw View
------=_Part_29929_1258397447.1523387022631
Content-Type: multipart/alternative;
boundary="----=_Part_29930_246456535.1523387022633"
------=_Part_29930_246456535.1523387022633
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
I'll try to explain the problem in a simple way.
Imagine that you are doing SFINAE with lambdas, so you created this struct=
=20
to handle all the overloads:
template<typename... TOverload>
struct sfinae_lambda : TOverload...
{
constexpr sfinae_lambda(TOverload... overloads)
: TOverload(overloads)...
{}
using TOverload::operator()...;
};
template<typename... TOverloads>
constexpr auto make_sfinae_lambda(TOverloads... overloads)
{
return sfinae_lambda<TOverloads...>(overloads...);
}
It could be used like this:
constexpr auto overload0 =3D [](int x) { return "int"; };
constexpr auto overload1 =3D [](const char* s) { return "const char*"; };
constexpr auto overloaded_lambda =3D make_sfinae_lambda(overload0, overload=
1);
cout << overloaded_lambda(123) << endl; // int
cout << overloaded_lambda("hello!") << endl; // const char*
cout << overloaded_lambda(vector<int>{1, 2, 3}) << endl; // really nasty=20
compilation error!!!
Now our goal is to customize the compilation error to be something like:=20
"no possible overload found". How to do it?
Let's add a new method to our sfinae_lambda:
template<typename... TArgs>
constexpr auto operator()(TArgs&&... args) const
{
// force compilation error if compiler gets here
static_assert(false, "no possible overload found");
}
Nice idea, but it doesn't work. Why? the compiler isn't even waiting until=
=20
it gets into this method to compile our assert, it optimizes and=20
precompiles the body because of the two phase lookup. What does this mean?=
=20
If the assertion doesn't depend on any unknown type, it can be optimized=20
and triggered before knowing it. This breaks our nice solution. How to fix=
=20
it? let's make it depend on the parameter types!
// always false, ignore template types
template<typename...>
struct always_false : std::false_type { };
....
template<typename... TArgs>
constexpr auto operator()(TArgs&&... args) const
{
// force compilation error if compiler gets here
static_assert(
always_false<decltype(args)...>::value,
"no possible overload found");
}
Aaand... this works on current GCC and CLANG! but from the standard point=
=20
of view, this can also be optimized by the compilers, the thing is that=20
they are not as smart (right now, give them some time).
Then, how to make it so the standard forbids it to be optimized? Creating a=
=20
valid specialization inherits true_type! But what can we put in there? this=
=20
must be something that people will *never *pass in there.
Solution?
template<typename...>
struct never;
// and the specialization to explicity specify that this will never be true=
=20
(but disallow compiler optimizations)
template<>
struct always_false<std::never<>> : std::true_type { };
Wow, this was nice to write.
*The whole proof of concept can be found here: https://godbolt.org/g/SbtXWA=
=20
<https://godbolt.org/g/SbtXWA>*
std::never gives us the possibility to have a type provided by the standard=
=20
that will never be instantiated/used.
El martes, 10 de abril de 2018, 20:05:59 (UTC+2), Arthur O'Dwyer escribi=C3=
=B3:
>
> On Tue, Apr 10, 2018 at 10:40 AM, Vincent Reverdy <vinc...@gmail.com=20
> <javascript:>> wrote:
>
>> @Ivan:
>>
>> I'm not sure I understand correclty.
>> Would this bring anything more than:
>>
>> template <class...> using void_t =3D void; // Already included in C++17
>> template <class...> inline constexpr bool false_v =3D false; // Already=
=20
>> included in the proposal
>> template <class...> inline constexpr bool true_v =3D true; // Already=20
>> included in the proposal
>>
>> and if so, what?
>> Thanks!
>>
>> Le mardi 10 avril 2018 02:45:26 UTC-5, Iv=C3=A1n Sanz a =C3=A9crit :
>>>
>>> It could be as simple as this:
>>>
>>> template<typename...>
>>> struct never;
>>>
>>> This is very helpful when voiding two phase lookup:
>>>
>>> // this can be optimized by the compiler as "false_type" doesn't depend=
=20
>>> on anything
>>> template<typename...>
>>> struct always_false : std::false_type { };
>>>
>>
> This smells like a misunderstanding of what the compiler is allowed to do=
,=20
> at least as of C++17. In C++17 and later (and in practice earlier as well=
,=20
> AFAIK), the compiler is *forbidden* to compile the following program:
>
> template<class...> using void_t =3D void; // part of the C++17 stand=
ard=20
> library
>
> template<class T> void must_sfinae(T t) -> void_t<typename=20
> T::value_type> {}
>
> int main() {
> must_sfinae(1); // must SFINAE away, must not simply return void
> }
>
> Ivan, if you know of a compiler that miscompiles this program today,=20
> please tell us about it!
>
> =E2=80=93Arthur
>
> P.S.: libc++ has a helper type called `__nat` ("not a type") that is used=
=20
> in metaprogramming; but I don't know anything about how it's used. A quic=
k=20
> peek tells me it's not much like Ivan's "std::never", despite the=20
> superficially similar name.
>
--=20
You received this message because you are subscribed to the Google Groups "=
ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
To view this discussion on the web visit https://groups.google.com/a/isocpp=
..org/d/msgid/std-proposals/69efc05e-8704-4161-a0f0-263a64ab53bd%40isocpp.or=
g.
------=_Part_29930_246456535.1523387022633
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><div>I'll try to explain the problem in a simple way.<=
/div><div><br></div><div>Imagine that you are doing SFINAE with lambdas, so=
you created this struct to handle all the overloads:</div><div><br></div><=
div><div style=3D"background-color: rgb(250, 250, 250); border-color: rgb(1=
87, 187, 187); border-style: solid; border-width: 1px; overflow-wrap: break=
-word;" class=3D"prettyprint"><code class=3D"prettyprint"><div class=3D"sub=
prettyprint"><div style=3D"color: #000000;background-color: #fffffe;font-fa=
mily: Consolas, "><div><span style=3D"color: #0000ff;"><span style=3D"color=
: #008;" class=3D"styled-by-prettify">template</span></span><span style=3D"=
color: #000000;"><span style=3D"color: #660;" class=3D"styled-by-prettify">=
<</span></span><span style=3D"color: #0000ff;"><span style=3D"color: #00=
8;" class=3D"styled-by-prettify">typename</span></span><span style=3D"color=
: #000000;"><span style=3D"color: #660;" class=3D"styled-by-prettify">...</=
span><span style=3D"color: #000;" class=3D"styled-by-prettify"> </span><spa=
n style=3D"color: #606;" class=3D"styled-by-prettify">TOverload</span><span=
style=3D"color: #660;" class=3D"styled-by-prettify">></span></span></di=
v><div><span style=3D"color: #0000ff;"><span style=3D"color: #008;" class=
=3D"styled-by-prettify">struct</span></span><span style=3D"color: #000000;"=
><span style=3D"color: #000;" class=3D"styled-by-prettify"> sfinae_lambda <=
/span><span style=3D"color: #660;" class=3D"styled-by-prettify">:</span><sp=
an style=3D"color: #000;" class=3D"styled-by-prettify"> </span><span style=
=3D"color: #606;" class=3D"styled-by-prettify">TOverload</span><span style=
=3D"color: #660;" class=3D"styled-by-prettify">...</span></span></div><div>=
<span style=3D"color: #000000;"><span style=3D"color: #660;" class=3D"style=
d-by-prettify">{</span></span></div><div><span style=3D"color: #000000;"><s=
pan style=3D"color: #000;" class=3D"styled-by-prettify"> =C2=A0 =C2=A0 </sp=
an></span><span style=3D"color: #0000ff;"><span style=3D"color: #008;" clas=
s=3D"styled-by-prettify">constexpr</span></span><span style=3D"color: #0000=
00;"><span style=3D"color: #000;" class=3D"styled-by-prettify"> sfinae_lamb=
da</span><span style=3D"color: #660;" class=3D"styled-by-prettify">(</span>=
<span style=3D"color: #606;" class=3D"styled-by-prettify">TOverload</span><=
span style=3D"color: #660;" class=3D"styled-by-prettify">...</span><span st=
yle=3D"color: #000;" class=3D"styled-by-prettify"> overloads</span><span st=
yle=3D"color: #660;" class=3D"styled-by-prettify">)</span></span></div><div=
><span style=3D"color: #000000;"><span style=3D"color: #000;" class=3D"styl=
ed-by-prettify"> =C2=A0 =C2=A0 =C2=A0 =C2=A0</span><span style=3D"color: #6=
60;" class=3D"styled-by-prettify">:</span><span style=3D"color: #000;" clas=
s=3D"styled-by-prettify"> </span><span style=3D"color: #606;" class=3D"styl=
ed-by-prettify">TOverload</span><span style=3D"color: #660;" class=3D"style=
d-by-prettify">(</span><span style=3D"color: #000;" class=3D"styled-by-pret=
tify">overloads</span><span style=3D"color: #660;" class=3D"styled-by-prett=
ify">)...</span></span></div><div><span style=3D"color: #000000;"><span sty=
le=3D"color: #000;" class=3D"styled-by-prettify"> =C2=A0 =C2=A0 </span><spa=
n style=3D"color: #660;" class=3D"styled-by-prettify">{}</span></span></div=
><span style=3D"color: #000;" class=3D"styled-by-prettify"><br></span><div>=
<span style=3D"color: #000000;"><span style=3D"color: #000;" class=3D"style=
d-by-prettify">=C2=A0 =C2=A0 </span></span><span style=3D"color: #0000ff;">=
<span style=3D"color: #008;" class=3D"styled-by-prettify">using</span></spa=
n><span style=3D"color: #000000;"><span style=3D"color: #000;" class=3D"sty=
led-by-prettify"> </span><span style=3D"color: #606;" class=3D"styled-by-pr=
ettify">TOverload</span><span style=3D"color: #660;" class=3D"styled-by-pre=
ttify">::</span></span><span style=3D"color: #0000ff;"><span style=3D"color=
: #008;" class=3D"styled-by-prettify">operator</span></span><span style=3D"=
color: #000000;"><span style=3D"color: #660;" class=3D"styled-by-prettify">=
()...;</span></span></div><div><span style=3D"color: #000000;"><span style=
=3D"color: #660;" class=3D"styled-by-prettify">};</span><span style=3D"colo=
r: #000;" class=3D"styled-by-prettify"><br><br></span></span><span style=3D=
"color: #000;" class=3D"styled-by-prettify"><br></span><div style=3D"color:=
#000000;background-color: #fffffe;font-family: Consolas, "><div><span styl=
e=3D"color: #0000ff;"><span style=3D"color: #008;" class=3D"styled-by-prett=
ify">template</span></span><span style=3D"color: #000000;"><span style=3D"c=
olor: #660;" class=3D"styled-by-prettify"><</span></span><span style=3D"=
color: #0000ff;"><span style=3D"color: #008;" class=3D"styled-by-prettify">=
typename</span></span><span style=3D"color: #000000;"><span style=3D"color:=
#660;" class=3D"styled-by-prettify">...</span><span style=3D"color: #000;"=
class=3D"styled-by-prettify"> </span><span style=3D"color: #606;" class=3D=
"styled-by-prettify">TOverloads</span><span style=3D"color: #660;" class=3D=
"styled-by-prettify">></span></span></div><div><span style=3D"color: #00=
00ff;"><span style=3D"color: #008;" class=3D"styled-by-prettify">constexpr<=
/span></span><span style=3D"color: #000000;"><span style=3D"color: #000;" c=
lass=3D"styled-by-prettify"> </span></span><span style=3D"color: #0000ff;">=
<span style=3D"color: #008;" class=3D"styled-by-prettify">auto</span></span=
><span style=3D"color: #000000;"><span style=3D"color: #000;" class=3D"styl=
ed-by-prettify"> make_sfinae_lambda</span><span style=3D"color: #660;" clas=
s=3D"styled-by-prettify">(</span><span style=3D"color: #606;" class=3D"styl=
ed-by-prettify">TOverloads</span><span style=3D"color: #660;" class=3D"styl=
ed-by-prettify">...</span><span style=3D"color: #000;" class=3D"styled-by-p=
rettify"> overloads</span><span style=3D"color: #660;" class=3D"styled-by-p=
rettify">)</span></span></div><div><span style=3D"color: #000000;"><span st=
yle=3D"color: #660;" class=3D"styled-by-prettify">{</span></span></div><div=
><span style=3D"color: #000000;"><span style=3D"color: #000;" class=3D"styl=
ed-by-prettify"> =C2=A0 =C2=A0</span></span><span style=3D"color: #0000ff;"=
><span style=3D"color: #008;" class=3D"styled-by-prettify">return</span></s=
pan><span style=3D"color: #000000;"><span style=3D"color: #000;" class=3D"s=
tyled-by-prettify"> sfinae_lambda</span><span style=3D"color: #660;" class=
=3D"styled-by-prettify"><</span><span style=3D"color: #606;" class=3D"st=
yled-by-prettify">TOverloads</span><span style=3D"color: #660;" class=3D"st=
yled-by-prettify">...>(</span><span style=3D"color: #000;" class=3D"styl=
ed-by-prettify">overloads</span><span style=3D"color: #660;" class=3D"style=
d-by-prettify">...);</span></span></div><div><span style=3D"color: #000000;=
"><span style=3D"color: #660;" class=3D"styled-by-prettify">}</span></span>=
</div></div><span style=3D"color: #000000;"></span></div></div></div></code=
></div><br>It could be used like this:</div><div><br></div><div><div style=
=3D"background-color: rgb(250, 250, 250); border-color: rgb(187, 187, 187);=
border-style: solid; border-width: 1px; overflow-wrap: break-word;" class=
=3D"prettyprint"><code class=3D"prettyprint"><div class=3D"subprettyprint">=
<div style=3D"color: #000000;background-color: #fffffe;font-family: Consola=
s, "><div><span style=3D"color: #0000ff;"><span style=3D"color: #008;" clas=
s=3D"styled-by-prettify">constexpr</span></span><span style=3D"color: #0000=
00;"><span style=3D"color: #000;" class=3D"styled-by-prettify"> </span></sp=
an><span style=3D"color: #0000ff;"><span style=3D"color: #008;" class=3D"st=
yled-by-prettify">auto</span></span><span style=3D"color: #000000;"><span s=
tyle=3D"color: #000;" class=3D"styled-by-prettify"> overload0 </span><span =
style=3D"color: #660;" class=3D"styled-by-prettify">=3D</span><span style=
=3D"color: #000;" class=3D"styled-by-prettify"> </span><span style=3D"color=
: #660;" class=3D"styled-by-prettify">[](</span></span><span style=3D"color=
: #0000ff;"><span style=3D"color: #008;" class=3D"styled-by-prettify">int</=
span></span><span style=3D"color: #000000;"><span style=3D"color: #000;" cl=
ass=3D"styled-by-prettify"> x</span><span style=3D"color: #660;" class=3D"s=
tyled-by-prettify">)</span><span style=3D"color: #000;" class=3D"styled-by-=
prettify"> </span><span style=3D"color: #660;" class=3D"styled-by-prettify"=
>{</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> </span>=
</span><span style=3D"color: #0000ff;"><span style=3D"color: #008;" class=
=3D"styled-by-prettify">return</span></span><span style=3D"color: #000000;"=
><span style=3D"color: #000;" class=3D"styled-by-prettify"> </span></span><=
span style=3D"color: #a31515;"><span style=3D"color: #080;" class=3D"styled=
-by-prettify">"int"</span></span><span style=3D"color: #000000;">=
<span style=3D"color: #660;" class=3D"styled-by-prettify">;</span><span sty=
le=3D"color: #000;" class=3D"styled-by-prettify"> </span><span style=3D"col=
or: #660;" class=3D"styled-by-prettify">};</span></span></div><div><span st=
yle=3D"color: #000000;"><span style=3D"color: #000;" class=3D"styled-by-pre=
ttify"> </span></span><span style=3D"color: #0000ff;"><span style=3D"color:=
#008;" class=3D"styled-by-prettify">constexpr</span></span><span style=3D"=
color: #000000;"><span style=3D"color: #000;" class=3D"styled-by-prettify">=
</span></span><span style=3D"color: #0000ff;"><span style=3D"color: #008;"=
class=3D"styled-by-prettify">auto</span></span><span style=3D"color: #0000=
00;"><span style=3D"color: #000;" class=3D"styled-by-prettify"> overload1 <=
/span><span style=3D"color: #660;" class=3D"styled-by-prettify">=3D</span><=
span style=3D"color: #000;" class=3D"styled-by-prettify"> </span><span styl=
e=3D"color: #660;" class=3D"styled-by-prettify">[](</span></span><span styl=
e=3D"color: #0000ff;"><span style=3D"color: #008;" class=3D"styled-by-prett=
ify">const</span></span><span style=3D"color: #000000;"><span style=3D"colo=
r: #000;" class=3D"styled-by-prettify"> </span></span><span style=3D"color:=
#0000ff;"><span style=3D"color: #008;" class=3D"styled-by-prettify">char</=
span></span><span style=3D"color: #000000;"><span style=3D"color: #660;" cl=
ass=3D"styled-by-prettify">*</span><span style=3D"color: #000;" class=3D"st=
yled-by-prettify"> s</span><span style=3D"color: #660;" class=3D"styled-by-=
prettify">)</span><span style=3D"color: #000;" class=3D"styled-by-prettify"=
> </span><span style=3D"color: #660;" class=3D"styled-by-prettify">{</span>=
<span style=3D"color: #000;" class=3D"styled-by-prettify"> </span></span><s=
pan style=3D"color: #0000ff;"><span style=3D"color: #008;" class=3D"styled-=
by-prettify">return</span></span><span style=3D"color: #000000;"><span styl=
e=3D"color: #000;" class=3D"styled-by-prettify"> </span></span><span style=
=3D"color: #a31515;"><span style=3D"color: #080;" class=3D"styled-by-pretti=
fy">"const char*"</span></span><span style=3D"color: #000000;"><s=
pan style=3D"color: #660;" class=3D"styled-by-prettify">;</span><span style=
=3D"color: #000;" class=3D"styled-by-prettify"> </span><span style=3D"color=
: #660;" class=3D"styled-by-prettify">};</span><span style=3D"color: #000;"=
class=3D"styled-by-prettify"><br></span></span><span style=3D"color: #0000=
ff;"><span style=3D"color: #008;" class=3D"styled-by-prettify">constexpr</s=
pan></span><span style=3D"color: #000000;"><span style=3D"color: #000;" cla=
ss=3D"styled-by-prettify"> </span></span><span style=3D"color: #0000ff;"><s=
pan style=3D"color: #008;" class=3D"styled-by-prettify">auto</span></span><=
span style=3D"color: #000000;"><span style=3D"color: #000;" class=3D"styled=
-by-prettify"> overloaded_lambda </span><span style=3D"color: #660;" class=
=3D"styled-by-prettify">=3D</span><span style=3D"color: #000;" class=3D"sty=
led-by-prettify"> make_sfinae_lambda</span><span style=3D"color: #660;" cla=
ss=3D"styled-by-prettify">(</span><span style=3D"color: #000;" class=3D"sty=
led-by-prettify">overload0</span><span style=3D"color: #660;" class=3D"styl=
ed-by-prettify">,</span><span style=3D"color: #000;" class=3D"styled-by-pre=
ttify"> overload1</span><span style=3D"color: #660;" class=3D"styled-by-pre=
ttify">);</span></span></div><span style=3D"color: #000;" class=3D"styled-b=
y-prettify"><br></span><div><span style=3D"color: #000000;"><span style=3D"=
color: #000;" class=3D"styled-by-prettify">cout </span><span style=3D"color=
: #660;" class=3D"styled-by-prettify"><<</span><span style=3D"color: =
#000;" class=3D"styled-by-prettify"> overloaded_lambda</span><span style=3D=
"color: #660;" class=3D"styled-by-prettify">(</span></span><span style=3D"c=
olor: #09885a;"><span style=3D"color: #066;" class=3D"styled-by-prettify">1=
23</span></span><span style=3D"color: #000000;"><span style=3D"color: #660;=
" class=3D"styled-by-prettify">)</span><span style=3D"color: #000;" class=
=3D"styled-by-prettify"> </span><span style=3D"color: #660;" class=3D"style=
d-by-prettify"><<</span><span style=3D"color: #000;" class=3D"styled-=
by-prettify"> endl</span><span style=3D"color: #660;" class=3D"styled-by-pr=
ettify">;</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> =
</span></span><span style=3D"color: #008000;"><span style=3D"color: #800;" =
class=3D"styled-by-prettify">// int</span><span style=3D"color: #000;" clas=
s=3D"styled-by-prettify"><br></span></span><span style=3D"color: #000000;">=
<span style=3D"color: #000;" class=3D"styled-by-prettify">cout </span><span=
style=3D"color: #660;" class=3D"styled-by-prettify"><<</span><span s=
tyle=3D"color: #000;" class=3D"styled-by-prettify"> overloaded_lambda</span=
><span style=3D"color: #660;" class=3D"styled-by-prettify">(</span></span><=
span style=3D"color: #a31515;"><span style=3D"color: #080;" class=3D"styled=
-by-prettify">"hello!"</span></span><span style=3D"color: #000000=
;"><span style=3D"color: #660;" class=3D"styled-by-prettify">)</span><span =
style=3D"color: #000;" class=3D"styled-by-prettify"> </span><span style=3D"=
color: #660;" class=3D"styled-by-prettify"><<</span><span style=3D"co=
lor: #000;" class=3D"styled-by-prettify"> endl</span><span style=3D"color: =
#660;" class=3D"styled-by-prettify">;</span><span style=3D"color: #000;" cl=
ass=3D"styled-by-prettify"> </span></span><span style=3D"color: #008000;"><=
span style=3D"color: #800;" class=3D"styled-by-prettify">// const char*</sp=
an></span><span style=3D"color: #000000;"><span style=3D"color: #000;" clas=
s=3D"styled-by-prettify"><br>cout </span><span style=3D"color: #660;" class=
=3D"styled-by-prettify"><<</span><span style=3D"color: #000;" class=
=3D"styled-by-prettify"> overloaded_lambda</span><span style=3D"color: #660=
;" class=3D"styled-by-prettify">(</span><span style=3D"color: #000;" class=
=3D"styled-by-prettify">vector</span><span style=3D"color: #080;" class=3D"=
styled-by-prettify"><</span></span><span style=3D"color: #0000ff;"><span=
style=3D"color: #080;" class=3D"styled-by-prettify">int</span></span><span=
style=3D"color: #000000;"><span style=3D"color: #080;" class=3D"styled-by-=
prettify">></span><span style=3D"color: #660;" class=3D"styled-by-pretti=
fy">{</span></span><span style=3D"color: #09885a;"><span style=3D"color: #0=
66;" class=3D"styled-by-prettify">1</span></span><span style=3D"color: #000=
000;"><span style=3D"color: #660;" class=3D"styled-by-prettify">,</span><sp=
an style=3D"color: #000;" class=3D"styled-by-prettify"> </span></span><span=
style=3D"color: #09885a;"><span style=3D"color: #066;" class=3D"styled-by-=
prettify">2</span></span><span style=3D"color: #000000;"><span style=3D"col=
or: #660;" class=3D"styled-by-prettify">,</span><span style=3D"color: #000;=
" class=3D"styled-by-prettify"> </span></span><span style=3D"color: #09885a=
;"><span style=3D"color: #066;" class=3D"styled-by-prettify">3</span></span=
><span style=3D"color: #000000;"><span style=3D"color: #660;" class=3D"styl=
ed-by-prettify">})</span><span style=3D"color: #000;" class=3D"styled-by-pr=
ettify"> </span><span style=3D"color: #660;" class=3D"styled-by-prettify">&=
lt;<</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> en=
dl</span><span style=3D"color: #660;" class=3D"styled-by-prettify">;</span>=
<span style=3D"color: #000;" class=3D"styled-by-prettify"> </span></span><s=
pan style=3D"color: #008000;"><span style=3D"color: #800;" class=3D"styled-=
by-prettify">// really nasty compilation error!!!</span></span></div></div>=
</div></code></div><br>Now our goal is to customize the compilation error t=
o be something like: "no possible overload found". How to do it?<=
/div><div>Let's add a new method to our sfinae_lambda:</div><div><br></=
div><div><div style=3D"background-color: rgb(250, 250, 250); border-color: =
rgb(187, 187, 187); border-style: solid; border-width: 1px; overflow-wrap: =
break-word;" class=3D"prettyprint"><code class=3D"prettyprint"><div class=
=3D"subprettyprint"><div style=3D"color: #000000;background-color: #fffffe;=
font-family: Consolas, "><div><span style=3D"color: #000000;"></span><span =
style=3D"color: #0000ff;"><span style=3D"color: #008;" class=3D"styled-by-p=
rettify">template</span></span><span style=3D"color: #000000;"><span style=
=3D"color: #660;" class=3D"styled-by-prettify"><</span></span><span styl=
e=3D"color: #0000ff;"><span style=3D"color: #008;" class=3D"styled-by-prett=
ify">typename</span></span><span style=3D"color: #000000;"><span style=3D"c=
olor: #660;" class=3D"styled-by-prettify">...</span><span style=3D"color: #=
000;" class=3D"styled-by-prettify"> </span><span style=3D"color: #606;" cla=
ss=3D"styled-by-prettify">TArgs</span><span style=3D"color: #660;" class=3D=
"styled-by-prettify">></span></span></div><div><span style=3D"color: #00=
0000;"><span style=3D"color: #000;" class=3D"styled-by-prettify"> </span></=
span><span style=3D"color: #0000ff;"><span style=3D"color: #008;" class=3D"=
styled-by-prettify">constexpr</span></span><span style=3D"color: #000000;">=
<span style=3D"color: #000;" class=3D"styled-by-prettify"> </span></span><s=
pan style=3D"color: #0000ff;"><span style=3D"color: #008;" class=3D"styled-=
by-prettify">auto</span></span><span style=3D"color: #000000;"><span style=
=3D"color: #000;" class=3D"styled-by-prettify"> </span></span><span style=
=3D"color: #0000ff;"><span style=3D"color: #008;" class=3D"styled-by-pretti=
fy">operator</span></span><span style=3D"color: #000000;"><span style=3D"co=
lor: #660;" class=3D"styled-by-prettify">()(</span><span style=3D"color: #6=
06;" class=3D"styled-by-prettify">TArgs</span><span style=3D"color: #660;" =
class=3D"styled-by-prettify">&&...</span><span style=3D"color: #000=
;" class=3D"styled-by-prettify"> args</span><span style=3D"color: #660;" cl=
ass=3D"styled-by-prettify">)</span><span style=3D"color: #000;" class=3D"st=
yled-by-prettify"> </span></span><span style=3D"color: #0000ff;"><span styl=
e=3D"color: #008;" class=3D"styled-by-prettify">const</span></span></div><d=
iv><span style=3D"color: #000000;"><span style=3D"color: #000;" class=3D"st=
yled-by-prettify"> </span><span style=3D"color: #660;" class=3D"styled-by-p=
rettify">{</span></span></div><div><span style=3D"color: #000000;"><span st=
yle=3D"color: #000;" class=3D"styled-by-prettify"> =C2=A0 =C2=A0 </span></s=
pan><span style=3D"color: #0000ff;"><span style=3D"color: #800;" class=3D"s=
tyled-by-prettify">// force compilation error if compiler gets here</span><=
span style=3D"color: #000;" class=3D"styled-by-prettify"><br>=C2=A0 =C2=A0 =
</span><span style=3D"color: #008;" class=3D"styled-by-prettify">static_ass=
ert</span><span style=3D"color: #660;" class=3D"styled-by-prettify">(</span=
><span style=3D"color: #008;" class=3D"styled-by-prettify">false</span><spa=
n style=3D"color: #660;" class=3D"styled-by-prettify">,</span><span style=
=3D"color: #000;" class=3D"styled-by-prettify"> </span><span style=3D"color=
: #080;" class=3D"styled-by-prettify">"</span></span><span style=3D"co=
lor: #0000ff;"><span style=3D"color: #080;" class=3D"styled-by-prettify">no=
possible overload found"</span><span style=3D"color: #660;" class=3D"=
styled-by-prettify">);</span></span><span style=3D"color: #000000;"></span>=
</div><div><span style=3D"color: #000000;"><span style=3D"color: #660;" cla=
ss=3D"styled-by-prettify">}</span></span></div></div></div></code></div><br=
>Nice idea, but it doesn't work. Why? the compiler isn't even waiti=
ng until it gets into this method to compile our assert, it optimizes and p=
recompiles the body because of the two phase lookup. What does this mean? I=
f the assertion doesn't depend on any unknown type, it can be optimized=
and triggered before knowing it. This breaks our nice solution. How to fix=
it? let's make it depend on the parameter types!</div><div><br></div><=
div><div style=3D"background-color: rgb(250, 250, 250); border-color: rgb(1=
87, 187, 187); border-style: solid; border-width: 1px; overflow-wrap: break=
-word;" class=3D"prettyprint"><code class=3D"prettyprint"><div class=3D"sub=
prettyprint"><span style=3D"color: #800;" class=3D"styled-by-prettify">// a=
lways false, ignore template types</span><span style=3D"color: #000;" class=
=3D"styled-by-prettify"><br></span><span style=3D"color: #008;" class=3D"st=
yled-by-prettify">template</span><span style=3D"color: #660;" class=3D"styl=
ed-by-prettify"><</span><span style=3D"color: #008;" class=3D"styled-by-=
prettify">typename</span><span style=3D"color: #660;" class=3D"styled-by-pr=
ettify">...></span><span style=3D"color: #000;" class=3D"styled-by-prett=
ify"><br></span><span style=3D"color: #008;" class=3D"styled-by-prettify">s=
truct</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> alwa=
ys_false </span><span style=3D"color: #660;" class=3D"styled-by-prettify">:=
</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> std</span=
><span style=3D"color: #660;" class=3D"styled-by-prettify">::</span><span s=
tyle=3D"color: #000;" class=3D"styled-by-prettify">false_type </span><span =
style=3D"color: #660;" class=3D"styled-by-prettify">{</span><span style=3D"=
color: #000;" class=3D"styled-by-prettify"> </span><span style=3D"color: #6=
60;" class=3D"styled-by-prettify">};</span><span style=3D"color: #000;" cla=
ss=3D"styled-by-prettify"><br><br></span><span style=3D"color: #660;" class=
=3D"styled-by-prettify">...</span><span style=3D"color: #000;" class=3D"sty=
led-by-prettify"><br><br></span><div><span style=3D"color: #0000ff;"><span =
style=3D"color: #008;" class=3D"styled-by-prettify">template</span></span><=
span style=3D"color: #000000;"><span style=3D"color: #660;" class=3D"styled=
-by-prettify"><</span></span><span style=3D"color: #0000ff;"><span style=
=3D"color: #008;" class=3D"styled-by-prettify">typename</span></span><span =
style=3D"color: #000000;"><span style=3D"color: #660;" class=3D"styled-by-p=
rettify">...</span><span style=3D"color: #000;" class=3D"styled-by-prettify=
"> </span><span style=3D"color: #606;" class=3D"styled-by-prettify">TArgs</=
span><span style=3D"color: #660;" class=3D"styled-by-prettify">></span><=
/span></div><div><span style=3D"color: #000000;"><span style=3D"color: #000=
;" class=3D"styled-by-prettify"> </span></span><span style=3D"color: #0000f=
f;"><span style=3D"color: #008;" class=3D"styled-by-prettify">constexpr</sp=
an></span><span style=3D"color: #000000;"><span style=3D"color: #000;" clas=
s=3D"styled-by-prettify"> </span></span><span style=3D"color: #0000ff;"><sp=
an style=3D"color: #008;" class=3D"styled-by-prettify">auto</span></span><s=
pan style=3D"color: #000000;"><span style=3D"color: #000;" class=3D"styled-=
by-prettify"> </span></span><span style=3D"color: #0000ff;"><span style=3D"=
color: #008;" class=3D"styled-by-prettify">operator</span></span><span styl=
e=3D"color: #000000;"><span style=3D"color: #660;" class=3D"styled-by-prett=
ify">()(</span><span style=3D"color: #606;" class=3D"styled-by-prettify">TA=
rgs</span><span style=3D"color: #660;" class=3D"styled-by-prettify">&&a=
mp;...</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> arg=
s</span><span style=3D"color: #660;" class=3D"styled-by-prettify">)</span><=
span style=3D"color: #000;" class=3D"styled-by-prettify"> </span></span><sp=
an style=3D"color: #0000ff;"><span style=3D"color: #008;" class=3D"styled-b=
y-prettify">const</span></span></div><div><span style=3D"color: #000000;"><=
span style=3D"color: #000;" class=3D"styled-by-prettify"> </span><span styl=
e=3D"color: #660;" class=3D"styled-by-prettify">{</span></span></div><div><=
span style=3D"color: #000000;"><span style=3D"color: #000;" class=3D"styled=
-by-prettify"> =C2=A0 =C2=A0 </span></span><span style=3D"color: #0000ff;">=
<span style=3D"color: #800;" class=3D"styled-by-prettify">// force compilat=
ion error if compiler gets here</span><span style=3D"color: #000;" class=3D=
"styled-by-prettify"><br>=C2=A0 =C2=A0 </span><span style=3D"color: #008;" =
class=3D"styled-by-prettify">static_assert</span><span style=3D"color: #660=
;" class=3D"styled-by-prettify">(</span></span><span style=3D"color: #0000f=
f;"><span style=3D"color: #660;" class=3D"styled-by-prettify"><code class=
=3D"prettyprint"><span style=3D"color: #000;" class=3D"styled-by-prettify">=
<br>=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 always_false</span><span sty=
le=3D"color: #000;" class=3D"styled-by-prettify"><decltype(args)...>:=
:value</span></code></span><span style=3D"color: #660;" class=3D"styled-by-=
prettify">,</span><span style=3D"color: #000;" class=3D"styled-by-prettify"=
></span><span style=3D"color: #080;" class=3D"styled-by-prettify"><br>=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "</span></span><span style=3D"=
color: #0000ff;"><span style=3D"color: #080;" class=3D"styled-by-prettify">=
no possible overload found"</span><span style=3D"color: #660;" class=
=3D"styled-by-prettify">);</span></span><span style=3D"color: #000000;"></s=
pan></div><div><span style=3D"color: #000000;"><span style=3D"color: #660;"=
class=3D"styled-by-prettify">}</span></span></div></div></code></div><br>A=
aand... this works on current GCC and CLANG! but from the standard point of=
view, this can also be optimized by the compilers, the thing is that they =
are not as smart (right now, give them some time).</div><div>Then, how to m=
ake it so the standard forbids it to be optimized? Creating a valid special=
ization inherits true_type! But what can we put in there? this must be some=
thing that people will <b>never </b>pass in there.</div><div>Solution?</div=
><div><br></div><div style=3D"background-color: rgb(250, 250, 250); border-=
color: rgb(187, 187, 187); border-style: solid; border-width: 1px; overflow=
-wrap: break-word;" class=3D"prettyprint"><code class=3D"prettyprint"><div =
class=3D"subprettyprint"><span><div>template<typename...><br>struct n=
ever;<br><br>// and the specialization to explicity specify that this will =
never be true (but disallow compiler optimizations)<br><span><div>template&=
lt;></div><div>struct always_false<std::never<>> : std::true=
_type { };</div></span></div></span><span style=3D"color: #606;" class=3D"s=
tyled-by-prettify"></span><span style=3D"color: #000;" class=3D"styled-by-p=
rettify"></span><span style=3D"color: #660;" class=3D"styled-by-prettify"><=
/span><span style=3D"color: #000;" class=3D"styled-by-prettify"></span><spa=
n style=3D"color: #660;" class=3D"styled-by-prettify"></span></div></code><=
/div><div><br></div><div>Wow, this was nice to write.</div><div><b>The whol=
e proof of concept can be found here: <a href=3D"https://godbolt.org/g/SbtX=
WA">https://godbolt.org/g/SbtXWA</a></b><br></div><div><br></div><div>std::=
never gives us the possibility to have a type provided by the standard that=
will never be instantiated/used.<br></div><div><br></div>El martes, 10 de =
abril de 2018, 20:05:59 (UTC+2), Arthur O'Dwyer escribi=C3=B3:<blockquo=
te class=3D"gmail_quote" style=3D"margin: 0;margin-left: 0.8ex;border-left:=
1px #ccc solid;padding-left: 1ex;"><div dir=3D"ltr">On Tue, Apr 10, 2018 a=
t 10:40 AM, Vincent Reverdy <span dir=3D"ltr"><<a href=3D"javascript:" t=
arget=3D"_blank" gdf-obfuscated-mailto=3D"Rk0EnjnABwAJ" rel=3D"nofollow" on=
mousedown=3D"this.href=3D'javascript:';return true;" onclick=3D"thi=
s.href=3D'javascript:';return true;" _pageexpand_=3D"4">vinc...@gma=
il.com</a>></span> wrote:<br><div><div class=3D"gmail_quote"><blockquote=
class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left-width:=
1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left=
:1ex"><div dir=3D"ltr"><div>@Ivan:</div><div><br></div><div>I'm not sur=
e I understand correclty.</div><div>Would this bring anything more than:</d=
iv><div><br></div><div style=3D"background-color:rgb(250,250,250);border:1p=
x solid rgb(187,187,187)"><code><div><span style=3D"color:rgb(0,0,136)">tem=
plate</span><span style=3D"color:rgb(0,0,0)"> </span><span style=3D"color:r=
gb(102,102,0)"><</span><span style=3D"color:rgb(0,0,136)">class</span><s=
pan style=3D"color:rgb(102,102,0)">...></span><span style=3D"color:rgb(0=
,0,0)"> </span><span style=3D"color:rgb(0,0,136)">using</span><span style=
=3D"color:rgb(0,0,0)"> void_t </span><span style=3D"color:rgb(102,102,0)">=
=3D</span><span style=3D"color:rgb(0,0,0)"> </span><span style=3D"color:rgb=
(0,0,136)">void</span><span style=3D"color:rgb(102,102,0)">;</span><span st=
yle=3D"color:rgb(0,0,0)"> </span><span style=3D"color:rgb(136,0,0)">// Alre=
ady included in C++17</span><span style=3D"color:rgb(0,0,0)"><br></span><sp=
an style=3D"color:rgb(0,0,136)">template</span><span style=3D"color:rgb(0,0=
,0)"> </span><span style=3D"color:rgb(102,102,0)"><</span><span style=3D=
"color:rgb(0,0,136)">class</span><span style=3D"color:rgb(102,102,0)">...&g=
t;</span><span style=3D"color:rgb(0,0,0)"> </span><span style=3D"color:rgb(=
0,0,136)">inline</span><span style=3D"color:rgb(0,0,0)"> </span><span style=
=3D"color:rgb(0,0,136)">constexpr</span><span style=3D"color:rgb(0,0,0)"> <=
/span><span style=3D"color:rgb(0,0,136)">bool</span><span style=3D"color:rg=
b(0,0,0)"> false_v </span><span style=3D"color:rgb(102,102,0)">=3D</span><s=
pan style=3D"color:rgb(0,0,0)"> </span><span style=3D"color:rgb(0,0,136)">f=
alse</span><span style=3D"color:rgb(102,102,0)">;</span><span style=3D"colo=
r:rgb(0,0,0)"> </span><span style=3D"color:rgb(136,0,0)">// Already include=
d in the proposal</span><span style=3D"color:rgb(0,0,0)"><br></span><span s=
tyle=3D"color:rgb(0,0,136)">template</span><span style=3D"color:rgb(0,0,0)"=
> </span><span style=3D"color:rgb(102,102,0)"><</span><span style=3D"col=
or:rgb(0,0,136)">class</span><span style=3D"color:rgb(102,102,0)">...></=
span><span style=3D"color:rgb(0,0,0)"> </span><span style=3D"color:rgb(0,0,=
136)">inline</span><span style=3D"color:rgb(0,0,0)"> </span><span style=3D"=
color:rgb(0,0,136)">constexpr</span><span style=3D"color:rgb(0,0,0)"> </spa=
n><span style=3D"color:rgb(0,0,136)">bool</span><span style=3D"color:rgb(0,=
0,0)"> true_v </span><span style=3D"color:rgb(102,102,0)">=3D</span><span s=
tyle=3D"color:rgb(0,0,0)"> </span><span style=3D"color:rgb(0,0,136)">true</=
span><span style=3D"color:rgb(102,102,0)">;</span><span style=3D"color:rgb(=
0,0,0)"> </span><span style=3D"color:rgb(136,0,0)">// Already included in t=
he proposal</span></div></code></div><div><br></div><div>and if so, what?</=
div><div>Thanks!<br></div><span><br>Le mardi 10 avril 2018 02:45:26 UTC-5, =
Iv=C3=A1n Sanz a =C3=A9crit=C2=A0:<blockquote class=3D"gmail_quote" style=
=3D"margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;=
border-left-color:rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr">It co=
uld be as simple as this:<br><div><br></div><div>template<typename...>=
;<br></div><div>struct never;</div><div><br></div><div>This is very helpful=
when voiding two phase lookup:</div><div><br></div><div>// this can be opt=
imized by the compiler as "false_type" doesn't depend on anyt=
hing<br></div><div>template<typename...></div><div>struct always_fals=
e : std::false_type { };</div></div></blockquote></span></div></blockquote>=
<div><br></div><div>This smells like a misunderstanding of what the compile=
r is allowed to do, at least as of C++17. In C++17 and later (and in practi=
ce earlier as well, AFAIK), the compiler is <b><i>forbidden</i></b> to comp=
ile the following program:</div><div><br></div><div>=C2=A0 =C2=A0 template&=
lt;class...> using void_t =3D void; =C2=A0// part of the C++17 standard =
library</div><div><br></div><div>=C2=A0 =C2=A0 template<class T> void=
must_sfinae(T t) -> void_t<typename T::value_type> {}</div><div><=
br></div><div>=C2=A0 =C2=A0 int main() {</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=
=A0 must_sfinae(1); =C2=A0// must SFINAE away, must not simply return void<=
/div><div>=C2=A0 =C2=A0 }</div><div><br></div><div>Ivan, if you know of a c=
ompiler that miscompiles this program today, please tell us about it!</div>=
<div><br></div><div>=E2=80=93Arthur</div><div><br></div><div>P.S.: libc++ h=
as a helper type called `__nat` ("not a type") that is used in me=
taprogramming; but I don't know anything about how it's used. A qui=
ck peek tells me it's not much like Ivan's "std::never", =
despite the superficially similar name.</div></div></div></div>
</blockquote></div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/69efc05e-8704-4161-a0f0-263a64ab53bd%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/69efc05e-8704-4161-a0f0-263a64ab53bd=
%40isocpp.org</a>.<br />
------=_Part_29930_246456535.1523387022633--
------=_Part_29929_1258397447.1523387022631--
.
Author: "Arthur O'Dwyer" <arthur.j.odwyer@gmail.com>
Date: Tue, 10 Apr 2018 12:39:39 -0700
Raw View
--001a1140f702ef19c1056983ae01
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
On Tue, Apr 10, 2018 at 12:03 PM, Iv=C3=A1n Sanz <ivansanzcarasa@gmail.com>
wrote:
>
> // always false, ignore template types
> template<typename...>
> struct always_false : std::false_type { };
>
> ...
>
> template<typename... TArgs>
> constexpr auto operator()(TArgs&&... args) const
> {
> // force compilation error if compiler gets here
> static_assert(
> always_false<decltype(args)...>::value,
> "no possible overload found");
> }
>
Simpler, and already part of the proposal:
template<typename... TArgs>
constexpr auto operator()(TArgs&&... args) const
{
// force compilation error if compiler gets here
static_assert(
std::false_v<TArgs...>,
"no possible overload found");
}
See also https://quuxplusone.github.io/blog/2018/04/02/false-v/
--=20
You received this message because you are subscribed to the Google Groups "=
ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
To view this discussion on the web visit https://groups.google.com/a/isocpp=
..org/d/msgid/std-proposals/CADvuK0J_T6Ndx5keFixv5s%2BQ1BBqAP9EAoukTPaJDwZyb=
zp6ig%40mail.gmail.com.
--001a1140f702ef19c1056983ae01
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr">On Tue, Apr 10, 2018 at 12:03 PM, Iv=C3=A1n Sanz <span dir=
=3D"ltr"><<a href=3D"mailto:ivansanzcarasa@gmail.com" target=3D"_blank">=
ivansanzcarasa@gmail.com</a>></span> wrote:<br><div class=3D"gmail_extra=
"><div class=3D"gmail_quote"><blockquote class=3D"gmail_quote" style=3D"mar=
gin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-=
left-color:rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"><div><br></d=
iv><div><div style=3D"background-color:rgb(250,250,250);border:1px solid rg=
b(187,187,187)" class=3D"gmail-m_-9124797034848160397prettyprint"><code cla=
ss=3D"gmail-m_-9124797034848160397prettyprint"><div class=3D"gmail-m_-91247=
97034848160397subprettyprint"><span style=3D"color:rgb(136,0,0)" class=3D"g=
mail-m_-9124797034848160397styled-by-prettify">// always false, ignore temp=
late types</span><span class=3D"gmail-"><span style=3D"color:rgb(0,0,0)" cl=
ass=3D"gmail-m_-9124797034848160397styled-by-prettify"><br></span><span sty=
le=3D"color:rgb(0,0,136)" class=3D"gmail-m_-9124797034848160397styled-by-pr=
ettify">template</span><span style=3D"color:rgb(102,102,0)" class=3D"gmail-=
m_-9124797034848160397styled-by-prettify"><</span><span style=3D"color:r=
gb(0,0,136)" class=3D"gmail-m_-9124797034848160397styled-by-prettify">typen=
ame</span><span style=3D"color:rgb(102,102,0)" class=3D"gmail-m_-9124797034=
848160397styled-by-prettify">...></span><span style=3D"color:rgb(0,0,0)"=
class=3D"gmail-m_-9124797034848160397styled-by-prettify"><br></span><span =
style=3D"color:rgb(0,0,136)" class=3D"gmail-m_-9124797034848160397styled-by=
-prettify">struct</span><span style=3D"color:rgb(0,0,0)" class=3D"gmail-m_-=
9124797034848160397styled-by-prettify"> always_false </span><span style=3D"=
color:rgb(102,102,0)" class=3D"gmail-m_-9124797034848160397styled-by-pretti=
fy">:</span><span style=3D"color:rgb(0,0,0)" class=3D"gmail-m_-912479703484=
8160397styled-by-prettify"> std</span><span style=3D"color:rgb(102,102,0)" =
class=3D"gmail-m_-9124797034848160397styled-by-prettify">::</span><span sty=
le=3D"color:rgb(0,0,0)" class=3D"gmail-m_-9124797034848160397styled-by-pret=
tify">false_type </span><span style=3D"color:rgb(102,102,0)" class=3D"gmail=
-m_-9124797034848160397styled-by-prettify">{</span><span style=3D"color:rgb=
(0,0,0)" class=3D"gmail-m_-9124797034848160397styled-by-prettify"> </span><=
span style=3D"color:rgb(102,102,0)" class=3D"gmail-m_-9124797034848160397st=
yled-by-prettify">};</span><span style=3D"color:rgb(0,0,0)" class=3D"gmail-=
m_-9124797034848160397styled-by-prettify"><br><br></span></span><span style=
=3D"color:rgb(102,102,0)" class=3D"gmail-m_-9124797034848160397styled-by-pr=
ettify">...</span><span style=3D"color:rgb(0,0,0)" class=3D"gmail-m_-912479=
7034848160397styled-by-prettify"><br><br></span><div><span style=3D"color:r=
gb(0,0,255)"><span style=3D"color:rgb(0,0,136)" class=3D"gmail-m_-912479703=
4848160397styled-by-prettify">template</span></span><span style=3D"color:rg=
b(0,0,0)"><span style=3D"color:rgb(102,102,0)" class=3D"gmail-m_-9124797034=
848160397styled-by-prettify"><</span></span><span style=3D"color:rgb(0,0=
,255)"><span style=3D"color:rgb(0,0,136)" class=3D"gmail-m_-912479703484816=
0397styled-by-prettify">typename</span></span><span style=3D"color:rgb(0,0,=
0)"><span style=3D"color:rgb(102,102,0)" class=3D"gmail-m_-9124797034848160=
397styled-by-prettify">...</span><span style=3D"color:rgb(0,0,0)" class=3D"=
gmail-m_-9124797034848160397styled-by-prettify"> </span><span style=3D"colo=
r:rgb(102,0,102)" class=3D"gmail-m_-9124797034848160397styled-by-prettify">=
TArgs</span><span style=3D"color:rgb(102,102,0)" class=3D"gmail-m_-91247970=
34848160397styled-by-prettify">></span></span></div><div><span style=3D"=
color:rgb(0,0,0)"><span style=3D"color:rgb(0,0,0)" class=3D"gmail-m_-912479=
7034848160397styled-by-prettify"> </span></span><span style=3D"color:rgb(0,=
0,255)"><span style=3D"color:rgb(0,0,136)" class=3D"gmail-m_-91247970348481=
60397styled-by-prettify">constexpr</span></span><span style=3D"color:rgb(0,=
0,0)"><span style=3D"color:rgb(0,0,0)" class=3D"gmail-m_-912479703484816039=
7styled-by-prettify"> </span></span><span style=3D"color:rgb(0,0,255)"><spa=
n style=3D"color:rgb(0,0,136)" class=3D"gmail-m_-9124797034848160397styled-=
by-prettify">auto</span></span><span style=3D"color:rgb(0,0,0)"><span style=
=3D"color:rgb(0,0,0)" class=3D"gmail-m_-9124797034848160397styled-by-pretti=
fy"> </span></span><span style=3D"color:rgb(0,0,255)"><span style=3D"color:=
rgb(0,0,136)" class=3D"gmail-m_-9124797034848160397styled-by-prettify">oper=
ator</span></span><span style=3D"color:rgb(0,0,0)"><span style=3D"color:rgb=
(102,102,0)" class=3D"gmail-m_-9124797034848160397styled-by-prettify">()(</=
span><span style=3D"color:rgb(102,0,102)" class=3D"gmail-m_-912479703484816=
0397styled-by-prettify">TArgs</span><span style=3D"color:rgb(102,102,0)" cl=
ass=3D"gmail-m_-9124797034848160397styled-by-prettify">&&...</span>=
<span style=3D"color:rgb(0,0,0)" class=3D"gmail-m_-9124797034848160397style=
d-by-prettify"> args</span><span style=3D"color:rgb(102,102,0)" class=3D"gm=
ail-m_-9124797034848160397styled-by-prettify">)</span><span style=3D"color:=
rgb(0,0,0)" class=3D"gmail-m_-9124797034848160397styled-by-prettify"> </spa=
n></span><span style=3D"color:rgb(0,0,255)"><span style=3D"color:rgb(0,0,13=
6)" class=3D"gmail-m_-9124797034848160397styled-by-prettify">const</span></=
span></div><div><span style=3D"color:rgb(0,0,0)"><span style=3D"color:rgb(0=
,0,0)" class=3D"gmail-m_-9124797034848160397styled-by-prettify"> </span><sp=
an style=3D"color:rgb(102,102,0)" class=3D"gmail-m_-9124797034848160397styl=
ed-by-prettify">{</span></span></div><div><span style=3D"color:rgb(0,0,0)">=
<span style=3D"color:rgb(0,0,0)" class=3D"gmail-m_-9124797034848160397style=
d-by-prettify"> =C2=A0 =C2=A0 </span></span><span style=3D"color:rgb(0,0,25=
5)"><span style=3D"color:rgb(136,0,0)" class=3D"gmail-m_-912479703484816039=
7styled-by-prettify">// force compilation error if compiler gets here</span=
><span style=3D"color:rgb(0,0,0)" class=3D"gmail-m_-9124797034848160397styl=
ed-by-prettify"><br>=C2=A0 =C2=A0 </span><span style=3D"color:rgb(0,0,136)"=
class=3D"gmail-m_-9124797034848160397styled-by-prettify">static_assert</sp=
an><span style=3D"color:rgb(102,102,0)" class=3D"gmail-m_-91247970348481603=
97styled-by-prettify">(</span></span><span style=3D"color:rgb(0,0,255)"><sp=
an style=3D"color:rgb(102,102,0)" class=3D"gmail-m_-9124797034848160397styl=
ed-by-prettify"><code class=3D"gmail-m_-9124797034848160397prettyprint"><sp=
an style=3D"color:rgb(0,0,0)" class=3D"gmail-m_-9124797034848160397styled-b=
y-prettify"><br>=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 always_false</sp=
an><span style=3D"color:rgb(0,0,0)" class=3D"gmail-m_-9124797034848160397st=
yled-by-prettify"><decltype(args)...<wbr>>::value</span></code></span=
><span style=3D"color:rgb(102,102,0)" class=3D"gmail-m_-9124797034848160397=
styled-by-prettify">,</span><span style=3D"color:rgb(0,0,0)" class=3D"gmail=
-m_-9124797034848160397styled-by-prettify"></span><span style=3D"color:rgb(=
0,136,0)" class=3D"gmail-m_-9124797034848160397styled-by-prettify"><br>=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "</span></span><span style=3D"=
color:rgb(0,0,255)"><span style=3D"color:rgb(0,136,0)" class=3D"gmail-m_-91=
24797034848160397styled-by-prettify">no possible overload found"</span=
><span style=3D"color:rgb(102,102,0)" class=3D"gmail-m_-9124797034848160397=
styled-by-prettify">);</span></span><span style=3D"color:rgb(0,0,0)"></span=
></div><div><span style=3D"color:rgb(0,0,0)"><span style=3D"color:rgb(102,1=
02,0)" class=3D"gmail-m_-9124797034848160397styled-by-prettify">}</span></s=
pan></div></div></code></div></div></div></blockquote><div><br></div><div>S=
impler, and already part of the proposal:</div><div><br></div><div><div sty=
le=3D"font-family:monospace;font-size:10.40000057220459px"><span style=3D"c=
olor:rgb(0,0,255)"><span class=3D"gmail-m_-9124797034848160397styled-by-pre=
ttify" style=3D"color:rgb(0,0,136)">template</span></span><span style=3D"co=
lor:rgb(0,0,0)"><span class=3D"gmail-m_-9124797034848160397styled-by-pretti=
fy" style=3D"color:rgb(102,102,0)"><</span></span><span style=3D"color:r=
gb(0,0,255)"><span class=3D"gmail-m_-9124797034848160397styled-by-prettify"=
style=3D"color:rgb(0,0,136)">typename</span></span><span style=3D"color:rg=
b(0,0,0)"><span class=3D"gmail-m_-9124797034848160397styled-by-prettify" st=
yle=3D"color:rgb(102,102,0)">...</span><span class=3D"gmail-m_-912479703484=
8160397styled-by-prettify">=C2=A0</span><span class=3D"gmail-m_-91247970348=
48160397styled-by-prettify" style=3D"color:rgb(102,0,102)">TArgs</span><spa=
n class=3D"gmail-m_-9124797034848160397styled-by-prettify" style=3D"color:r=
gb(102,102,0)">></span></span></div><div style=3D"font-family:monospace;=
font-size:10.40000057220459px"><span style=3D"color:rgb(0,0,0)"><span class=
=3D"gmail-m_-9124797034848160397styled-by-prettify"></span></span><span sty=
le=3D"color:rgb(0,0,255)"><span class=3D"gmail-m_-9124797034848160397styled=
-by-prettify" style=3D"color:rgb(0,0,136)">constexpr</span></span><span sty=
le=3D"color:rgb(0,0,0)">=C2=A0</span><span style=3D"color:rgb(0,0,255)"><sp=
an class=3D"gmail-m_-9124797034848160397styled-by-prettify" style=3D"color:=
rgb(0,0,136)">auto</span></span><span style=3D"color:rgb(0,0,0)">=C2=A0</sp=
an><span style=3D"color:rgb(0,0,255)"><span class=3D"gmail-m_-9124797034848=
160397styled-by-prettify" style=3D"color:rgb(0,0,136)">operator</span></spa=
n><span style=3D"color:rgb(0,0,0)"><span class=3D"gmail-m_-9124797034848160=
397styled-by-prettify" style=3D"color:rgb(102,102,0)">()(</span><span class=
=3D"gmail-m_-9124797034848160397styled-by-prettify" style=3D"color:rgb(102,=
0,102)">TArgs</span><span class=3D"gmail-m_-9124797034848160397styled-by-pr=
ettify" style=3D"color:rgb(102,102,0)">&&...</span><span class=3D"g=
mail-m_-9124797034848160397styled-by-prettify">=C2=A0args</span><span class=
=3D"gmail-m_-9124797034848160397styled-by-prettify" style=3D"color:rgb(102,=
102,0)">)</span><span class=3D"gmail-m_-9124797034848160397styled-by-pretti=
fy">=C2=A0</span></span><span style=3D"color:rgb(0,0,255)"><span class=3D"g=
mail-m_-9124797034848160397styled-by-prettify" style=3D"color:rgb(0,0,136)"=
>const</span></span></div><div style=3D"font-family:monospace;font-size:10.=
40000057220459px"><span style=3D"color:rgb(0,0,0)"><span class=3D"gmail-m_-=
9124797034848160397styled-by-prettify"></span><span class=3D"gmail-m_-91247=
97034848160397styled-by-prettify" style=3D"color:rgb(102,102,0)">{</span></=
span></div><div style=3D"font-family:monospace;font-size:10.40000057220459p=
x"><span style=3D"color:rgb(0,0,0)">=C2=A0 =C2=A0=C2=A0</span><span style=
=3D"color:rgb(0,0,255)"><span class=3D"gmail-m_-9124797034848160397styled-b=
y-prettify" style=3D"color:rgb(136,0,0)">// force compilation error if comp=
iler gets here</span><span class=3D"gmail-m_-9124797034848160397styled-by-p=
rettify" style=3D"color:rgb(0,0,0)"><br>=C2=A0 =C2=A0=C2=A0</span><span cla=
ss=3D"gmail-m_-9124797034848160397styled-by-prettify" style=3D"color:rgb(0,=
0,136)">static_assert</span><span class=3D"gmail-m_-9124797034848160397styl=
ed-by-prettify" style=3D"color:rgb(102,102,0)">(</span></span><span style=
=3D"color:rgb(0,0,255)"><span class=3D"gmail-m_-9124797034848160397styled-b=
y-prettify" style=3D"color:rgb(102,102,0)"><code class=3D"gmail-m_-91247970=
34848160397prettyprint"><span class=3D"gmail-m_-9124797034848160397styled-b=
y-prettify" style=3D"color:rgb(0,0,0)"><br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 std:=
:false_v</span><span class=3D"gmail-m_-9124797034848160397styled-by-prettif=
y" style=3D"color:rgb(0,0,0)"><TArgs...<wbr>></span></code></span><sp=
an class=3D"gmail-m_-9124797034848160397styled-by-prettify" style=3D"color:=
rgb(102,102,0)">,</span><span class=3D"gmail-m_-9124797034848160397styled-b=
y-prettify" style=3D"color:rgb(0,0,0)"></span><span class=3D"gmail-m_-91247=
97034848160397styled-by-prettify" style=3D"color:rgb(0,136,0)"><br>=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "</span></span><span style=3D"col=
or:rgb(0,0,255)"><span class=3D"gmail-m_-9124797034848160397styled-by-prett=
ify" style=3D"color:rgb(0,136,0)">no possible overload found"</span><s=
pan class=3D"gmail-m_-9124797034848160397styled-by-prettify" style=3D"color=
:rgb(102,102,0)">);</span></span><span style=3D"color:rgb(0,0,0)"></span></=
div><div style=3D"font-family:monospace;font-size:10.40000057220459px"><spa=
n style=3D"color:rgb(0,0,0)"><span class=3D"gmail-m_-9124797034848160397sty=
led-by-prettify" style=3D"color:rgb(102,102,0)">}</span></span></div></div>=
<div><br></div><div>See also=C2=A0<a href=3D"https://quuxplusone.github.io/=
blog/2018/04/02/false-v/">https://quuxplusone.github.io/blog/2018/04/02/fal=
se-v/</a></div></div></div></div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/CADvuK0J_T6Ndx5keFixv5s%2BQ1BBqAP9EAo=
ukTPaJDwZybzp6ig%40mail.gmail.com?utm_medium=3Demail&utm_source=3Dfooter">h=
ttps://groups.google.com/a/isocpp.org/d/msgid/std-proposals/CADvuK0J_T6Ndx5=
keFixv5s%2BQ1BBqAP9EAoukTPaJDwZybzp6ig%40mail.gmail.com</a>.<br />
--001a1140f702ef19c1056983ae01--
.
Author: Barry Revzin <barry.revzin@gmail.com>
Date: Tue, 10 Apr 2018 12:48:31 -0700 (PDT)
Raw View
------=_Part_30284_774968273.1523389711983
Content-Type: multipart/alternative;
boundary="----=_Part_30285_1563869365.1523389711984"
------=_Part_30285_1563869365.1523389711984
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
On Tuesday, April 10, 2018 at 2:03:42 PM UTC-5, Iv=C3=A1n Sanz wrote:
>
>
> // always false, ignore template types
> template<typename...>
> struct always_false : std::false_type { };
>
> ...
>
> template<typename... TArgs>
> constexpr auto operator()(TArgs&&... args) const
> {
> // force compilation error if compiler gets here
> static_assert(
> always_false<decltype(args)...>::value,
> "no possible overload found");
> }
>
> Aaand... this works on current GCC and CLANG! but from the standard point=
=20
> of view, this can also be optimized by the compilers, the thing is that=
=20
> they are not as smart (right now, give them some time).
> Then, how to make it so the standard forbids it to be optimized? Creating=
=20
> a valid specialization inherits true_type! But what can we put in there?=
=20
> this must be something that people will *never *pass in there.
> Solution?
>
No, it cannot be "optimized by the compilers." This is a dependent value,=
=20
and there is always the potential that a hypothetical specialization of=20
always_false *could exist* somewhere, in some other code, that may or may=
=20
not be included before this by a user. You do not actually have to create=
=20
such a specialization yourself to prevent this from happening. Indeed, it=
=20
would be actively counterproductive for you to do so since suddenly your=20
always_false isn't actually always false.=20
>
--=20
You received this message because you are subscribed to the Google Groups "=
ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
To view this discussion on the web visit https://groups.google.com/a/isocpp=
..org/d/msgid/std-proposals/61c8450d-4585-4275-acee-6ddc56fb73f3%40isocpp.or=
g.
------=_Part_30285_1563869365.1523389711984
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><br><br>On Tuesday, April 10, 2018 at 2:03:42 PM UTC-5, Iv=
=C3=A1n Sanz wrote:<blockquote class=3D"gmail_quote" style=3D"margin: 0;mar=
gin-left: 0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;"><div dir=3D=
"ltr"><div><div style=3D"background-color:rgb(250,250,250);border-color:rgb=
(187,187,187);border-style:solid;border-width:1px"><code><span style=3D"col=
or:#800"><br>// always false, ignore template types</span><span style=3D"co=
lor:#000"><br></span><span style=3D"color:#008">template</span><span style=
=3D"color:#660"><</span><span style=3D"color:#008">typename</span><span =
style=3D"color:#660">...></span><span style=3D"color:#000"><br></span><s=
pan style=3D"color:#008">struct</span><span style=3D"color:#000"> always_fa=
lse </span><span style=3D"color:#660">:</span><span style=3D"color:#000"> s=
td</span><span style=3D"color:#660">::</span><span style=3D"color:#000">fal=
se_type </span><span style=3D"color:#660">{</span><span style=3D"color:#000=
"> </span><span style=3D"color:#660">};</span><span style=3D"color:#000"><b=
r><br></span><span style=3D"color:#660">...</span><span style=3D"color:#000=
"><br><br></span><div><span style=3D"color:#0000ff"><span style=3D"color:#0=
08">template</span></span><span style=3D"color:#000000"><span style=3D"colo=
r:#660"><</span></span><span style=3D"color:#0000ff"><span style=3D"colo=
r:#008">typename</span></span><span style=3D"color:#000000"><span style=3D"=
color:#660">...</span><span style=3D"color:#000"> </span><span style=3D"col=
or:#606">TArgs</span><span style=3D"color:#660">></span></span></div><di=
v><span style=3D"color:#000000"><span style=3D"color:#000"> </span></span><=
span style=3D"color:#0000ff"><span style=3D"color:#008">constexpr</span></s=
pan><span style=3D"color:#000000"><span style=3D"color:#000"> </span></span=
><span style=3D"color:#0000ff"><span style=3D"color:#008">auto</span></span=
><span style=3D"color:#000000"><span style=3D"color:#000"> </span></span><s=
pan style=3D"color:#0000ff"><span style=3D"color:#008">operator</span></spa=
n><span style=3D"color:#000000"><span style=3D"color:#660">()(</span><span =
style=3D"color:#606">TArgs</span><span style=3D"color:#660">&&...</=
span><span style=3D"color:#000"> args</span><span style=3D"color:#660">)</s=
pan><span style=3D"color:#000"> </span></span><span style=3D"color:#0000ff"=
><span style=3D"color:#008">const</span></span></div><div><span style=3D"co=
lor:#000000"><span style=3D"color:#000"> </span><span style=3D"color:#660">=
{</span></span></div><div><span style=3D"color:#000000"><span style=3D"colo=
r:#000"> =C2=A0 =C2=A0 </span></span><span style=3D"color:#0000ff"><span st=
yle=3D"color:#800">// force compilation error if compiler gets here</span><=
span style=3D"color:#000"><br>=C2=A0 =C2=A0 </span><span style=3D"color:#00=
8">static_assert</span><span style=3D"color:#660">(</span></span><span styl=
e=3D"color:#0000ff"><span style=3D"color:#660"><code><span style=3D"color:#=
000"><br>=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 always_false</span><spa=
n style=3D"color:#000"><decltype(args)...<wbr>>::value</span></code><=
/span><span style=3D"color:#660">,</span><span style=3D"color:#000"></span>=
<span style=3D"color:#080"><br>=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 &=
quot;</span></span><span style=3D"color:#0000ff"><span style=3D"color:#080"=
>no possible overload found"</span><span style=3D"color:#660">);</span=
></span><span style=3D"color:#000000"></span></div><div><span style=3D"colo=
r:#000000"><span style=3D"color:#660">}</span></span></div></code></div><br=
>Aaand... this works on current GCC and CLANG! but from the standard point =
of view, this can also be optimized by the compilers, the thing is that the=
y are not as smart (right now, give them some time).</div><div>Then, how to=
make it so the standard forbids it to be optimized? Creating a valid speci=
alization inherits true_type! But what can we put in there? this must be so=
mething that people will <b>never </b>pass in there.</div><div>Solution?</d=
iv></div></blockquote><div><br></div><div>No, it cannot be "optimized =
by the compilers." This is a dependent value, and there is always the =
potential that a hypothetical specialization of always_false <i>could exist=
</i>=C2=A0somewhere, in some other code, that may or may not be included be=
fore this by a user. You do not actually have to create such a specializati=
on yourself to prevent this from happening. Indeed, it would be actively co=
unterproductive for you to do so since suddenly your always_false isn't=
actually always false.=C2=A0</div><blockquote class=3D"gmail_quote" style=
=3D"margin: 0;margin-left: 0.8ex;border-left: 1px #ccc solid;padding-left: =
1ex;"><div dir=3D"ltr"><blockquote class=3D"gmail_quote" style=3D"margin:0;=
margin-left:0.8ex;border-left:1px #ccc solid;padding-left:1ex">
</blockquote></div></blockquote></div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/61c8450d-4585-4275-acee-6ddc56fb73f3%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/61c8450d-4585-4275-acee-6ddc56fb73f3=
%40isocpp.org</a>.<br />
------=_Part_30285_1563869365.1523389711984--
------=_Part_30284_774968273.1523389711983--
.
Author: =?UTF-8?Q?Iv=C3=A1n_Sanz?= <ivansanzcarasa@gmail.com>
Date: Tue, 10 Apr 2018 13:02:32 -0700 (PDT)
Raw View
------=_Part_30050_1849725617.1523390552430
Content-Type: multipart/alternative;
boundary="----=_Part_30051_1554300464.1523390552430"
------=_Part_30051_1554300464.1523390552430
Content-Type: text/plain; charset="UTF-8"
> Simpler, and already part of the proposal:
>
> template<typename... TArgs>
> constexpr auto operator()(TArgs&&... args) const
> {
> // force compilation error if compiler gets here
> static_assert(
>
> std::false_v<TArgs...>,
> "no possible overload found");
> }
>
Interesting, didn't hear about this one, thanks.
No, it cannot be "optimized by the compilers." This is a dependent value,
> and there is always the potential that a hypothetical specialization of
> always_false *could exist* somewhere, in some other code, that may or may
> not be included before this by a user. You do not actually have to create
> such a specialization yourself to prevent this from happening. Indeed, it
> would be actively counterproductive for you to do so since suddenly your
> always_false isn't actually always false.
>
Right, I didn't even think about the fact that you can "specialize
anything, anywhere". Cool, this reduces the complexity a lot, thanks.
--
You received this message because you are subscribed to the Google Groups "ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an email to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
To view this discussion on the web visit https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/12c01635-16fd-4901-942c-71d63071ac1a%40isocpp.org.
------=_Part_30051_1554300464.1523390552430
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<br><blockquote class=3D"gmail_quote" style=3D"margin: 0px 0px 0px 0.8ex; b=
order-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"><div>Simpler,=
and already part of the proposal:</div><div><br></div><div><div class=3D"F=
0XO1GC-Db-b"><div style=3D"font-family:monospace;font-size:10.4000005722045=
9px"><span style=3D"color:rgb(0,0,255)"><span style=3D"color:rgb(0,0,136)">=
template</span></span><span style=3D"color:rgb(0,0,0)"><span style=3D"color=
:rgb(102,102,0)"><</span></span><span style=3D"color:rgb(0,0,255)"><span=
style=3D"color:rgb(0,0,136)">typename</span></span><span style=3D"color:rg=
b(0,0,0)"><span style=3D"color:rgb(102,102,0)">...</span><span>=C2=A0</span=
><span style=3D"color:rgb(102,0,102)">TArgs</span><span style=3D"color:rgb(=
102,102,0)">></span></span></div><div style=3D"font-family:monospace;fon=
t-size:10.40000057220459px"><span style=3D"color:rgb(0,0,0)"><span></span><=
/span><span style=3D"color:rgb(0,0,255)"><span style=3D"color:rgb(0,0,136)"=
>constexpr</span></span><span style=3D"color:rgb(0,0,0)">=C2=A0</span><span=
style=3D"color:rgb(0,0,255)"><span style=3D"color:rgb(0,0,136)">auto</span=
></span><span style=3D"color:rgb(0,0,0)">=C2=A0</span><span style=3D"color:=
rgb(0,0,255)"><span style=3D"color:rgb(0,0,136)">operator</span></span><spa=
n style=3D"color:rgb(0,0,0)"><span style=3D"color:rgb(102,102,0)">()(</span=
><span style=3D"color:rgb(102,0,102)">TArg<wbr>s</span><span style=3D"color=
:rgb(102,102,0)">&&...</span><span>=C2=A0args</span><span style=3D"=
color:rgb(102,102,0)">)</span><span>=C2=A0</span></span><span style=3D"colo=
r:rgb(0,0,255)"><span style=3D"color:rgb(0,0,136)">const</span></span></div=
><div style=3D"font-family:monospace;font-size:10.40000057220459px"><span s=
tyle=3D"color:rgb(0,0,0)"><span></span><span style=3D"color:rgb(102,102,0)"=
>{</span></span></div></div><div style=3D"font-family:monospace;font-size:1=
0.40000057220459px"><div class=3D"F0XO1GC-Db-b"><span style=3D"color:rgb(0,=
0,0)">=C2=A0 =C2=A0=C2=A0</span><span style=3D"color:rgb(0,0,255)"><span st=
yle=3D"color:rgb(136,0,0)">// force compilation error if compiler gets here=
</span><span style=3D"color:rgb(0,0,0)"><br>=C2=A0 =C2=A0=C2=A0</span><span=
style=3D"color:rgb(0,0,136)">static_assert</span><span style=3D"color:rgb(=
102,102,0)">(</span></span></div><span style=3D"color:rgb(0,0,255)"><span s=
tyle=3D"color:rgb(102,102,0)"><code><span style=3D"color:rgb(0,0,0)"><br>=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 std::false_v</span><span style=3D"color:rgb(0,0=
,0)"><TArgs...></span></code></span><span style=3D"color:rgb(102,102,=
0)">,</span><span style=3D"color:rgb(0,0,0)"></span><span style=3D"color:rg=
b(0,136,0)"><br>=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "</span></s=
pan><span style=3D"color:rgb(0,0,255)"><span style=3D"color:rgb(0,136,0)">n=
o possible overload found"</span><span style=3D"color:rgb(102,102,0)">=
);</span></span><span style=3D"color:rgb(0,0,0)"></span></div><div style=3D=
"font-family:monospace;font-size:10.40000057220459px"><span style=3D"color:=
rgb(0,0,0)"><span style=3D"color:rgb(102,102,0)">}</span></span></div></div=
></blockquote><div><br></div><div>Interesting, didn't hear about this o=
ne, thanks.</div><div><br></div><blockquote class=3D"gmail_quote" style=3D"=
margin: 0px 0px 0px 0.8ex; border-left: 1px solid rgb(204, 204, 204); paddi=
ng-left: 1ex;"><div><div></div><div>No, it cannot be=20
"optimized by the compilers." This is a dependent value, and ther=
e is=20
always the potential that a hypothetical specialization of always_false <i>=
could exist</i>=C2=A0somewhere,
in some other code, that may or may not be included before this by a=20
user. You do not actually have to create such a specialization yourself=20
to prevent this from happening. Indeed, it would be actively=20
counterproductive for you to do so since suddenly your always_false=20
isn't actually always false. <br></div></div></blockquote><div>=C2=A0</=
div><div>=C2=A0Right, I didn't even think about the fact that you can &=
quot;specialize anything, anywhere". Cool, this reduces the complexity=
a lot, thanks.<br></div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/12c01635-16fd-4901-942c-71d63071ac1a%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/12c01635-16fd-4901-942c-71d63071ac1a=
%40isocpp.org</a>.<br />
------=_Part_30051_1554300464.1523390552430--
------=_Part_30050_1849725617.1523390552430--
.