CLUSTER, reform_and_rewrite_tuple(), and parallelism
During preliminary analysis of what it would take to produce a
parallel CLUSTER patch that is analogous of what I came up with for
CREATE INDEX, which in general seems quite possible, I identified
reform_and_rewrite_tuple() as a major bottleneck for the current
CLUSTER implementation.
Excluding the cost of the subsequent REINDEX of the clustered-on
index, reform_and_rewrite_tuple() appears to account for roughly 25% -
35% of both the cache misses, and instructions executed, for my test
case (this used a tuplesort, not an indexscan on the old heap
relation, of course). Merging itself was far less expensive (with my
optimization of how the heap is maintained during merging + 16
tapes/runs), so it would be reasonable to not parallelize that part,
just as it was for parallel CREATE INDEX. I don't think that it's
reasonable to not do anything about this reform_and_rewrite_tuple()
bottleneck, though.
Does anyone have any ideas on how to:
1). Directly address the reform_and_rewrite_tuple() bottleneck.
and/or:
2). Push down some or all of the reform_and_rewrite_tuple() work till
before tuples are passed to the tuplesort.
"2" would probably make it straightforward to have
reform_and_rewrite_tuple() work occur in parallel workers instead,
which buys us a lot.
--
Peter Geoghegan
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
Does anyone have any ideas on how to:
1). Directly address the reform_and_rewrite_tuple() bottleneck.
What part of is actually the expensive bit? It does a whole lot of
things. Forming/Deforming tuples, the hash lookups in
rewrite_heap_tuple(), ...?
Andres
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
On Wed, Aug 17, 2016 at 4:16 PM, Andres Freund <andres@anarazel.de> wrote:
Does anyone have any ideas on how to:
1). Directly address the reform_and_rewrite_tuple() bottleneck.
What part of is actually the expensive bit? It does a whole lot of
things. Forming/Deforming tuples, the hash lookups in
rewrite_heap_tuple(), ...?
Perhaps the attached svg "flamegraph" will give you some idea. This is
based on the "perf cache-misses" event type.
--
Peter Geoghegan
Attachments:
On 2016-08-17 16:23:29 -0700, Peter Geoghegan wrote:
On Wed, Aug 17, 2016 at 4:16 PM, Andres Freund <andres@anarazel.de> wrote:
Does anyone have any ideas on how to:
1). Directly address the reform_and_rewrite_tuple() bottleneck.
What part of is actually the expensive bit? It does a whole lot of
things. Forming/Deforming tuples, the hash lookups in
rewrite_heap_tuple(), ...?Perhaps the attached svg "flamegraph" will give you some idea. This is
based on the "perf cache-misses" event type.
Could you also provide a strace -ttt -T -c and a cpu cycles flamegraph?
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
On Wed, Aug 17, 2016 at 4:28 PM, Andres Freund <andres@anarazel.de> wrote:
Could you also provide a strace -ttt -T -c and a cpu cycles flamegraph?
Here is the output from that strace invocation, plus a -p (to attach
to the relevant backend):
strace: -t has no effect with -c
strace: -T has no effect with -c
strace: Process 27986 attached
strace: Process 27986 detached
% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------- ----------------
55.75 0.629331 17981 35 16 unlink
17.49 0.197422 0 2505449 write
11.69 0.132000 11000 12 fsync
8.13 0.091799 0 2078837 read
5.32 0.060000 12000 5 ftruncate
0.98 0.011011 24 460 brk
0.64 0.007218 1805 4 munmap
0.00 0.000050 0 6382 lseek
0.00 0.000000 0 58 5 open
0.00 0.000000 0 58 close
0.00 0.000000 0 14 stat
0.00 0.000000 0 4 mmap
0.00 0.000000 0 2 rt_sigprocmask
0.00 0.000000 0 12 6 rt_sigreturn
0.00 0.000000 0 1 select
0.00 0.000000 0 16 sendto
0.00 0.000000 0 2 1 recvfrom
0.00 0.000000 0 16 kill
0.00 0.000000 0 19 semop
0.00 0.000000 0 63 getrusage
0.00 0.000000 0 5 epoll_create
0.00 0.000000 0 9 4 epoll_wait
0.00 0.000000 0 10 epoll_ctl
------ ----------- ----------- --------- --------- ----------------
100.00 1.128831 4591473 32 total
This doesn't seem that interesting, but not sure what you're looking for.
I also attach cycles flamegraph.
trace_sort indicated that the tuplesort CLUSTER takes just under 3
minutes (this includes writing out the new heap, of course).
--
Peter Geoghegan
Attachments:
cycles-cluster-presorted-flamegraph.svg.gzapplication/x-gzip; name=cycles-cluster-presorted-flamegraph.svg.gzDownload
�c��W cycles-cluster-presorted-flamegraph.svg �=ks�F���_1�n6���!YN���].I��$w^�
$A'�`�I%��~�3p@B�x��S�$=3==������eL>�i%�+�j�B�<XM�8Y�W�*Q�~r����?�??�$��9����}��9Q�G��������/����!T������,�|}1m�[mkjI:}��E4�F 8B@4��(���T�%pf ��m4����R�0�/r�D=G!�*N�����|~��
���g��J��Np����UvU����� ���������?bO�/����8X�d�{BjMn`�l���A�k�M�(���Q����I���(����|>b�0��Y��8��,/H�8"�"es�p8C!�9"N���:3�����p��'�'��0Ha�i�r����<M6��Bn)�
~@_ ��3�/~�8��5���$N�+�/!�Nb6�B8�K��`���/�����#��!��C���� �p��&Y�?�f���z~�H�R�7X(Mn��q�����\��}I&�4K��u��0�$a 67�1I�u./N������/��}����C��i�Q��$�'�q����"���\E��<=A��H���7��L��4�l��Wm�/��|v�z:P�2�fQ���Q<� O���s e��H5�P|
_-l���m0�X
� Y������V8L�/>����Fd�l���
�c��%I��*��@����fB�d~�'�x�rO3
��)�7!�)��dD!gl��~���-�+Lb�����"_����i|����7vz��V�d����@�o�,Wa:Pn�[x�R�r�A��8���<����+�@��?�[\�?�[����*�����P[�!��"��80"J_��d���v?9��D��~=A��P��+8@P)y�����<bp0�}�`��*H�FW�%��Z����2:;��������Z�9��"�I����H�/�(�0
�C�5�G#@4��6|���>�#���������:>��g���IK(�\9ck VN<��_5�����7�x�Cj� ����.����pP9���y�w�v�vu:�4\�����C��B��?�z���<������|y�g/=�Y?�������: �#�6q�xW��/��LM8������XA7�YO��m3=�cNr>�C
`�=��Kn��i��� T����YN�D]\�y��A�����c������b�ye���g�;���9dN��~���E�V�#�H��m��*s��ns43�h��11Q��v_h�\�M������Q�A.9�`��&�6�=F:�����_G�f2Du������
ln5��i�����B7��P�B����=��qIvO@����%mz��3����9l���l3��8�jE�8M$�0����0�|�.��$K����u������1�O�cEEp�V��ska���{st���&J%�+y3Y��"{c%mb��4���,�c�����;>����u�'SU���hp)^I���a';���C���<@u>u4�q��:�����*4�) �}������j �Q"H�pH��N�����
��<�I�<<tN����b8N��$�_�Z�C��|
���Bc�q��Q�������aEe���NE�~(BaU�W[���$#C�
����V���� �-�U��2�U!��3�b v{���Gr���S�C��f��(��/��rA~N����Xx����
�g�(��l'8�E;�C��M�� ���:e������P�q,h,��$�`��G�t��*���#�9�Ub���q�c"6����U8����p~p���Qs���1��Y������ �2IZH���������)�����A�0��2 ���n�K�<��@�E��� �%��i����Y�=c�]1�/f�x����y��IU�^���$��&
����qn��k �W���������X�e�0s�Iq%�s0a%����(�[`�JV��'�������������V"�d�-U.R��X�p&D�N�����������k�����]���X�Q��O��?��4����J�%�8N&7������ �'V�J��b��;_��J����!�lv�������������'RfQ+���=�x���e�QL���u
V^b�4-�Oi8wkL�(�(v&�p��p~A����J���i ���T�hX������w�L����������r��'}x��m��*�]�*w���>���+�@?����5z�]^���� ��p�@z�+�%��q���y��;��8���'��Vx�A�i� ������G"�T>c�!����@U���!��B�d��u8E��
�BXA���0����E����!�e�,��j��@)r�L���*�{����
�9�l��h�j��� ��;��~��-�� 2�
��&`(g)�� �a��j�J"o�G)���$1���U�Ec�S��X�)�x�c����L����wE"�`4{XFF��(�|<0L]�U�9��!��<-�a);�����v�i^a���H��C/N"`Y�����M�84zr�I<��\�%
��!=��$��i�=kV�T���u����I�9y�2 ����d�t��������)���#�d�����Mm�B1��Nrd�s*��An�[TuO�4��m�
J� ���o�E�}�]��&�d~;�r�����&[�7E�m}��L���p�%q��F���o�r5d�s��� +�B�,�>K�����T2�1O� �r�j������z@�E�;������Z�P$k������r�(�2���N����K��$����f- O��
V�v���22%�4L5���iG0g�b��4��`$����,_Y<�'A�
�D�j2��e#�d���I)���O����d��"��������lw���W��g�$�����r�q�<�/-yG����~F!�kfQ���GBBF�:����V�[�!
|D�����S��W�.������_���q�3�|�s���
Jt�wk�gj��T2w��j;�%k�vN"������ �� 1s�}0��s�z8�N���?���R6i<���+d���x�J"���{ W�2�N�P�5��/cX0��s������8�Q�
�i�
�����U�q�'��IR7��jP^����OM��dI~V|���j_���n�^�%�N0ty�X�� �G���-���r/�:~u7F��`sM��J��������l���/C���*X�V���� ��0�/��c�S�,�V g�9��X|��r����' kCi��b�v��v��e��)���)���WE�q@ ��aR��>��K�����fu�J���d@�:��0s���!��`J5�PC(
�7KU�
f�'���`����5U�LR����_���
������f�nZ�'%�F�AC��q?����
�Rh����BC��4��+�5{BC���hz5D�@"�m�3��h�ww3"�E���f"���ND��#�z��z-�����nID����Jm�F�-��D�u�GDt]��n'�Wp���C����V
�d;jMC���]�}�4|���
�q�"�C�[�E���]��4-�u�Z�!
C������'d'�b���F�E��
MOum��BA��5T���VtA= .��&
��J�8������� �W���u�����Ftm�I���
U=������>t�>f�BA������-���v�e�M�U�N�^��Q.���'�l�2m�������e���&eh���T��ev���=t��(;�F�,<DGV�n�s�ut�
�h�X���2l��L�a���vk HqT�IBd�������Wc��M6��^
�������I�S}��P��A)�e�vK{b*��c��+�}�d���:�(�M�/����$�z)i������}Ul�n��Y5��lr
M�jT��644���6�+$���k�j����5����:n�0��,�g���5����K|��d��Y�/��)gcZ�
��N��z�%y�O6���`�:��:�{�S)y�$�6���IqAe��~��,'�E�tT�V��+���5u)��������W]S5; ���Q�\h=����
�;��S��h)�(acT��GTtU�R�N�� �I�^�l�����-e�������;e��U����l�5=�m�l��et���2F��A����MO�'Ac�
��BKZ_Mq�J@��4Zg�N�����~-K�2��Y����B�g������9�gYL�lG0a��U��0{�Wpa$ZN:TB�.Tq��v�Y��j���v�p, ���x��hC�����W����������s���^�{f��6�\m�5�L65�������B������p�m��;�O�8�� s��Mu����T���c
�S�N90�E�������6Z�������Qv�{��v+����������&U��vk��4�{Q��'}X�)z�M�F����7V�EE��s���>�`�"�m�:��Bl��c7�at�m��i�Pv��>�nU�I�"�4,9��@�Nf��=����o W��E�����>����S�e��i�H�NY0�����z���Z(DJ����Y%b��Q�N�
,�������)y7T��:���Y4�T�0�MY
�����<X��\���8�F����Rv6������L��8�5�N�0��I�>F����m~���z���V�6k�6�u?��s}�A<_���l��^���}����.o
T���[��H����Z�_�UhzM��39�N�����'��x��D�����+q���gWi�
X�$u�����N�M������������G�~���P�������ntt�aC���}�`����K���|����P�>����eUj��xQv�S;v�cH�{�J�W\�Argd��`u�������!T#�&
���T/0uC���8;����x���]�b���U�}=��<��;,R��|���BL���/]ay���l9O����q=���&�4�o�0��Y��E}�]00�4� ��M{h]�7v��-��W� !,:h��>5���U�����N:��4��$��S��S�������lv����n�����}]����6�j:���c��M���^y�V�$c�VV-]���~Z�1���tmz����K;��0]F� �mf�0}�}��n��@ C�
j��������e��MA9�8z=Is=�����w-9������C��j�iB��ATs�MYo����n�1�M��)������\���z���z���&���@m��+�h[�%�cY���i_���]"�0����F���~��o2�h%���t�����\aM�JV������B����>�����?-����&���8��Mn����������>��Kk���?'q}������8O��0���_�k�6�v�<���� ��;V!������
@|;�L�mk��k�[��B�%�V�Hx#�m���7���Hx�[1����]^���~G �o\��b ���_����]�6�c�����6���:��$[�]�^��E����j��X=6DO�S��s����sX�@�������k�U���j�����R!�}-*�_*�
A��m��+�+)�B�Y�$��`+6�m�Q�����k{�
��I��tm����f��{RK5}��������b�.F[*Z����S�i*��6%
���vk0�u�x?e�r:��H7�/��:�Jq`���6_����;���"����&-��Z�e�;�����,m����5LX���8�^����4�u��X�����e4���U�������xL�^�U�Kd��%��W8�R3�y���������������\l�x�����dxf�����\euu�`�F*%�|�?���]��&�$A�U��y<��7��3"�k%/�*Ms ��As/�d�����m�{X����!zi� o�}�V���I���2lK?����i�hMn����m�h\�.�X��C��i�]N2p�����7��
��?Im��:/'�����&N��x��xagx��X��4�;"���Z2B�cCmj�Gj���fskJ��ha��&��F�.;���A%�t����c�@�/��-(�1��>gL�!�:��zML�Sq����L����m�{�?=�SDS�\��jf.W�v�=��C� �f���g'�����;DZ��g��s��K"c6���Es� ��\���F1�]I��z0�
4
�����*��������* �����H�<k��1�vO_v�O;d8=��f4P�h`u�����j�\.�{�~`5qr�F'i�[s��~��A?5Y���1�.:0C�K�V�z�����@����p�" ��f��dh�6 \���8.��e.����V�R2T�B��������O��T�eW("�|�w�����}�&�������#�8�DO.M�Z��
_4m�h�F;..n��?�|W���F�f!%�-9v����@��W_�������W��D��"�1����~�[�a�D9]~1h���
bX��������uV}/V�FJ�S.*Z-B���������hy�^�p�D���A"�Tb����{~xy��}�����/������p!�T=QT%�D��,��iH+����p�iK&�W��@-U4��V���)� ���[92�J���%/���cX�?AE�sV��������W�b�m��;��[\�W`C�7������8�����(w��V{�(����]�����r�������w|�oc "����w_~��n0�ye��]�Ml=�s�-'E���d���Q�[2Z�B���Tx
��&x��(>D�Vh��i�^�M��`�C���D���jC(gCM�a\���Z��+��gMl���x�~<H=�-&��0al~���(O��^��w�_<�Q��*�J���4���iE�&��Q�
m'r�b~���H����w����W��������oo_��t�_��(���#�� �n�U�ML4�3�;�F�$��7g6�2�P�����N~�g]�n>���7m��>�6xu�#�i<��:
��i%�8i���|�����G
�ps��� $�C^O�Z��$��<���S(�0�Hc����y��!@�I`�=�.�R����������m�g�TI"������'���/M�����I3���n����A��E -Y�#��Ka.�l��E�B���TQt�xm"��&hY�:�U�[H�t~=��4���-@�����M��/�{���������4�A
��8��+���+<�W�.���@+=�Rg���U����8%Y� ;m����I�W�(��jZ,����
=+��'A�JR,��*��,k��9�L+:��U�Q��!�r�n�b
�
�v����_,�pR�}{��&����������z�����\�al�� L.c������1�WF����NA S���,�����s;B�i;���� ��Y�W�n^�L��OT]���\��/�b_CS�����k�5`�������������W+�� ��������a��y�����l��:��H�!v,fX�����JPla9k"��8*wG�]�)��d2������H�/����������V(��h�b������T66�'S�����w2����pK>]�T���>v4�*��!-�X�+>�����D�@���x�N#����z��]^����9.k��-��"� �K���y�g���p�J�3�����0��5��
29H���V��x�_#�$������oN��h���7�#N;����J�GZ�q�a����S��E��]���u���0^�����������2�v�cP]���vw���\m�������������!�e�\|���x��L����b(����U ��Y����c`�2�z�
7��R�����7�>�i�����w������i����������v�'����wle")�r� \�������IAL~�">]!nu��;����[���d�{���q\��$� �������|^�r|��y���3\^�|�]PI|55�< 2�gh�,�YMC�������A�ZM�?��K����������
�0SU��I������veA�?h�������T_k�P�BP��w�I��a��<KI�,���U$l���T[1OQ�I�
��N�k=6��vD1�f���
�D�~�K��b(��>7���x��N�*������a������y�a���
���I9Z�%p����&,�#Vr�>�D��Y�\�������U�~���jr�;D_���<F]pX����
�X����A��/
J5��e$Oh���dq� ��^B3+�g�9D����~m�r&��2q�Y������U���P��Q%N�������^#�7���t� ��k �}t2+���!����P�=�v��$u��{xa�B�5�N�
��u����Q�6���`���[A��:l�'�O��W�7Zry���<^]��<���R�lu#��_�VBB�rM_7�Q�v:�����~��D����8�R ���M=i��.�3m�|$��q�4�Va��/w��u�y�Z����.��l �6�N{4/�i2����&��@:0��n;����G �7�e~�u�U���m�]#q)k��:.��im��[J�����������F@HA%��� ���\SP��!�c����0��k,����l-i�[D��u����]��o�`�����Z�,�$$����c����~>f</)t(���{��g,���On7�37���V�y���������/��~��o�?������ed�%�����P��%��L��y�z��t��4�b(x DQo|=���%���g��O�V���^ki��y�8��o��������n�V�=� ���,G���I��D���}+t0�T��`R>9��w_w�?�������������a�������b�?/�!.����9�p�����K3�4��>�J3�*�����l^I��h������w:]
�l���d�W��M.����}���b��!������\������ax0�� .��.k�(C���~�g���$7B0���<���.L#�N�fB+��� �xV��Q,(�8�/����x\i.�j�p�W1�Te��#�OMjqr�����������������&�D6����@���2���V�mK5$�
\�7N'm������������_}K����@��u4���HC�e�.(UT�A���)�`V�,P�Pt �!Z�������g('���Si��VB�"c�x�ay�d�L5L�,�o\��? ),PD�g�8�G�����b�U�'�-�b���%t�5vUOd��_���..
�R=,1(4Ex_VI>&���]���e�Y����/�xta~+��4���a��!��h����3�E��C���0u5�6L69�q����e����*l�XR�_�NlQ����TZ)���� � ��FR=���6��-5oD�r���6O�
�������d%��h;YA� "���9/��L����_�%��HDS��"�dm�F[k#^�����/l<��/NHd%^djH��)n���R��?w�e�]%�D
���5�4~�(����D�Y4Z�p���Ue5�&@�ON��|uY�� �H�+0��B���XY�Vl9�������|�����? �j��mE�����p�d�V_����c�r�>X��O��)�6~��c��+*�����Kh����6�Hf�����_�`F$��a%�2x���l��a�<^��>�������fLzb���bH)�����O�������)�|Lr���20�)*�����L ���e*������Z���i��q�Mk�L!�����2��P��6{m?99I�]���+��fX����
q���6�*�+����{_�T���K��i��.CA)�� i������n���bV$m�g�����/��F�ec^���Km�� ��b�l�:��2�H{���i�e�����{��ey�7���>�h�����7���#En��j{�rs���|7}�W�4moR�xq�C"
��h��%�_E�g�Z��/�I:�
�e�^����0��.S�7e����D
�U��7�Z�!�}������ �w�#D��\��{}H��/�`�$�/5����,/@e ����m�W7��M�M
��+�nTq�U�@:���X�~-�\��0�sd�v7�n�K�@s�����I�lgH�
|���Q���<@g�h&��r��7,C���(N����$N�9��L7#-|Q�q�0
�)I>�@,�>K�\���lX}��]P�����'��
q��F�t��(�X��Q��T������#�.$�@��:���j�n������[WI��$"�C��d{�j1�L�Yy���� [W�x��$i\q��U$��2���E�rMv���Z8�}���7���>�`.�@�8�,�j�e;������j5��F,m���;�v
N�
]��k@�w$f����TW���
,�f��*��l����7��| ���l�Tl���R��:A��������L��U����<���BB{\�
"���$�����}8�aH)�����Q�1by�����8�A�$�w�qQ����#�?�u��w�&��2v�UA�M�YuV�����y�CZ�96��Ky������l�7��{���O~���!�����d;���L��Q|�k�(�x�qhI
��_�������XA�#��5H��!��j4�]�b�!�R\g����;,�VeQf���%���0k� >~��W�*�9���ys4�{�I��������o������u�s�V':g���S����2�eo�����7�'��y0�i}���t�'����CQx � &�@�*FQ���K���~��J_�6�����q�s�
,�3��a�
� s��-;(�����jra�4��� ����@��A�lx^�����8D����b�����A m,�.m�8u��@ e
4*�:�Sd������F�0v��� ��)Sq<��=�I�I�������.,t�RUr�������rrL��]�sK,��9��F�����Z��E$�����J�����XD���x�T�<���O��E6kg��M��*'N|qX$
L�lXNR�O�@>3�V1���I����)����V�Y� �C�C�dM�YB�iFV(2\D������4$��R���Q��<K��(�_=dYisI�c�F\�~r����� 4������<��3�|O]�f#n���}r��u���4�aj
j�4^������w�p��}��_��o_��������D_[? ��"��]��.j*|����$h�m�d����� �l�k�+������8ZU�v�M �4��F8n���9�-�d���g�����:��q�+�CY+/Z�d�� TO���X���Q9.K��z�m?���0��������h{f0~QY��Q��uN����,zV��t-�U����d����9�'�l�)d{��FM3s�!��3�"�fs}UGrjg7I���f�����\UA��{m����JD�@"���������b-o�k�X�
q��E�x6)65.I��3x�t�E�Rk!B�-��x��R��/a':'A��E�g ������%rSN�8�)��)�q�5=I���J��p�X��Gv�����h����jqH��!�G�IZ|Mf=��&��;t�^q�%|%sy�MB����1�/���3d��.MF����N����{69��bRN��^����e�3o�?^��������?��>19 ����F0kK����B�S�25%��"m���7n���w��&'ka�����d�N���#�O
��L%�TB���#D;�l��5�A�>��VC�GUFE�+��lv�.%ar�����CK���@(�K���:r��' �h�Lb+���"��O�ba�*,:��Y% ��ra+�v����27Ua���nK�����v�I��xY6���e��#K�2���sO����r���n����A��?�}��)7E<Q��Mb��bE�)��Q�l�[EyvFu4���Vq���8���a7�����h�(-x��l�a��|���k{�&��W��{)7f�_���)����E})�,�\��T���� �v�f�XG���x9V����������z�A������/��LIq.G����FL��f!��F���N�?z��([C�,p)K��Q�B��z�����~r6��|lq�p�L�!�� t;��d5�=>�����X�����u��g��������m��`��(�������J�{� ����c�3��Tb��L&',6�0v=���g��V�7��D��Fj��u�@��IA� 0�}�5+bN-�E�T��Y���u�Vs�j/l;^���s�_���Yj��c�~e��yYw�p����;1�K=����W�� �.�������"����"aU������!��������i��`�M��[I�%X�d6������[���EQ��1���
��}fa����0lpq,�:��@m��KW9g���NG��S��A�{��S� �TR
�Y���_7�m/?��j�B�-�8�t�XOQ���ey
z�X�����Dr���b���(lk&M�T�1Am�
& ����A'%Q<��8������ 8�r�,��m�j�6_3 R������AT�[�17������{������8��T��q,^�W4�q��^7��� 1&(��c�"�Ea���l�N;�Lw����8�)M�}7��J V��>��ER;PS5�1��q$M��6���������Df�Uh����5�N��M�9��&�g�d2!��D2z��8�wy��"1 2�wD����������������m��}�p�9�_���eku1D������9��J*399)J�����GN��2����U����N�Kj��G�+���0�������| �J��g��������r$�Q�b$�j3�EgC���F���C��D��g���|��������ts���w����9~����:^�6;������~����p^ �#��'gx)1�jA���5+��o��f7YG����)�t�T��*������*������1�3������H�7�Ps1�Yt��O��$���B���i�$����d����h���*�d�"^]��m��
����Q�U|�4D����p�^�oap�n?����!��t��6z��K��~�.��s�_�����0K@2Ml���7����F��rv=~5Y�gv�[tI�B�t�)hbv��� �[������*P�&V������������v����ob�(�j0����K��������>u�������/�?��������)B����_��y�H[�f��&�0�4��|�����,�PV�*mck7&
)i\'��/]#-.6$�b� �L���Y��f�/�F�q��w�7���n���.����Z|E���St<B0T��E:$Qo^��o1�p�}Z�-�,��6�c40Y�G��&�Lc��~�h�O(jt���JJ�B"���)7�eW���o�/V2�n��?��4��Kl��o���bq~NO��A����W�������Rt����jR���y������8nc��Z��Q$n^>�w8����^&�X�zj�f$#{j����Jp��'!�&��G ����a��`D��I��|d���a:�+����O{!R��*$+�l���s�@�������?��=���_��X�T�����Z�4��8���L����6����%)���Vc��?����K���0<�������4g=?��9h���J�"��P�'>�Y�O� ��P�`�����!���BwE
F��JO�W�a.>�c�E9Y�v�%!���(����MA���4(��b��;V�+Y��d5��'j��%W�N��b����GX*/#a�3r�IR�n�e����\?������a�����dh�(��_3Pm)�d��=��#
���v�C�������(KUs6q��U�c�,7���Q����$�a�K�8�g�$��d;��26X���C.&[����2��M�#�4��"J�v��)*����J�W�hU�xY����:~f��j�i����H}�E��e�=��}
���
�0������l}��M���m�j����m�f/��p��p���e
�n�w����A&��Q��-�
Jun�j�%+���l��M�[��$��� c��r���t�����B�7!��8}�v�>st����7s�.���V�jV�j��+�>�lx7;���%����?��j��`�L+D
h���}RX������Iln�Qa��Q�Yw� %�����<�������O#�m��C����BsN�b���}m���$c�� &��������)���)bcVB�o��p2��
����F�
G�E�"����d����$� �$2������?\���~��{�?������t�W��d����5v���I��� m��=YH����X:4��-
����
��1�Y��*�m��b6�0�-P0?��"���_"�6�|��'!,�@�2��5z��F[;���}��Hh^�v(x��M�I.�+[��Ri�/3�w�$z/Y�~���Ml�-q�;��yY���R�XJ+��>
c%�K2�5�/ _��������X+�@;�G�"l���Eb� �<E���,ivW",�J�`�T��5���<��c��x%X����$�h=l8��T��5*1�( ��,}�_�jhv0�M,�f
�D1
Z ~]��j�������N=����Y4J84���T�7UCoV��"p�=�SN�Mb^����\_p���f&/�z�l���<��2������/��I��DH��*��K��6�>;�U�}���i"6������G���+9�1���L��g�yp�������4�dX}h+�,����xHlNX�O�/7�w��/;�N,����������A�Q�M�����8-x=/�w^����@��W��B4E�%����V��X��1+�mV��K�f�`����UmY�U����2g��]��9���)z�n3��C_'