Window functions patch v04 for the September commit fest
Here's the latest window functions patch against HEAD. It seems to be
ready for the September commit fest, as added documents, WINDOW clause
feature and misc tests. I guess this would be the window functions
feature freeze for 8.4. The remaining feature will be implemented for
the later release.
This patch consists of:
- windowed aggregates
- cooperate with GROUP BY aggregates
- some optimizations with multiple windows
- ranking functions
- WINDOW clause
- windowing SQL regression tests
- sgml documents
Looking up the total road map, the dropped features are:
- sliding window (window framing)
- lead(), lag(), etc. that reach for random rows
- user defined window functions
The first and second topics are difficult to implement currently.
Because these features require random row access, it seems that
tuplestore would be able to save multiple positions to mark/restore.
This is fundamental change that is over my capability. Also, user
defined window functions seem to have much more to decide. I think I
can't put into shape the general needs of user's window functions now.
Lacking these feature, this stage looks compatible to SQLServer 2005,
while Oracle and DB2 have almost full of the specification.
Also, current implementation has only a type of plan which uses sort
operation. It should be optimized by re-position the windows and/or
using hashtable.
Oh, git hosting repository is updated as well.
Regards,
--
Hitoshi Harada
Attachments:
window_functions.patch.20080830.gzapplication/x-gzip; name=window_functions.patch.20080830.gzDownload
��"�H window_functions.patch.20080830 ��kw7�(�������������*��h�,yKr<9s��ZdK�1�f���I�o��P@�I������+�n�
�B�����$[����j�_�V.���2~{��������c��N:���[)���$�09;8:�?Oz�t8i?^J^���N��&�d���`*u�����A����+U��t���'��~%E�����IQ�����_�>|��o'�d�?G���U����v�_Q1.;���N��,��d��oT�KW��NF��C����2��bR����A&�������^6�MI�b�L��������U6��l�O����2�����yr1-���P*au,�:�d�<��A1����������"������� G�:�`�FP��S���8�9��:��RM�^e���ar�Te2��p�����L���A�{�y�:d��9&�W�0g��o��QY��)b5F.���������w�
0x~�g}�+�v\�����p2�{n�~�������d:&�w���������Q��+�M������E����A�;����J���R7D<�����������^JN~<8M�'�/�����/�h��r^+�����k�������yU��U��K��X�n$
�S�� ~�_W�ph�sk�7�W�5�%���&�$�����D/�E�#��\'W��j���3k�|X����;W���`l����1�P���^������I�'�8���P�d����K��(���,���N�aF��[���A/6���9�5j�/��m��UR�>3��������>�77����������T$��/R��~X!%���?����^�2��w���.��ir�;,:����E�-.�6fr��n�;�U��*&wir�����7���\"�Xtwu�Y�����go�O��r\����[�\RT�[����
.��"
)�����d�qY���T��fm����2L �&��r
�U7� '�2f��f�_ ��J ���`��u6�t�J����I�:�W�f4�~�E���.�VE��W�����~qy �>DP�t0�
��;�X6��8> �1 �����`�P��kD���`�h�Y�::�wy�u�T��N OD��s(<AI�d`�r)��] �V^�RDk��=j��CX�)�1,S����67����������123�&>��e�a[+���1�A�9 R=I~�v������~@�������} �ak��C>(GI��;��\[]�/��k�����H�d�>7�Yk�km���}n���Vgu�q����0H[����=\�^]�����]�4��<�Zgl�P������-��v������jm,�V���`���Q�8V�-*9�������,[$��`�Y ���^>�$�xQ^���H�K��Z��Az�������,�oW������R�N>'��Jmh��8s�BZ���cT�����k���l���;����g'�����3b>�,���^6�.�Ww�B$���E�!�h����1^�XMNX�����/� I�Z���e�|��
\�seC!������a��)��3����L�a �dM��#�f��q\������"X��{h���:7J�<�p�*5W#��/x�!LA}:DQ��R�v��5��L0��
��e8\dG\���m)a��|,���s^������6z�!q��r|Q��`_d�;@�?�
�;�~��������7�k2��E~������*�^�������AceZ�V'|Y�������6��`���ZF5Dd���qZ�mOs�,��es�1[�� yY�b��N$��h�>�����b�*70aFY������
N���C#8qH��md�0 t�z����R^�1��@Fw�9��~�_�]Z)E������@P
4W�r(���h�� :,4ccd=��~\P�&��$�Y��}(����=���\'��Dzm��xQL��VpQMJ@!��bm�C�(��V8z_�����;��?WTV�������L�9x�w�`4��)��������(���]�Dm��� �`l���p��?�/� 6��a����������K���@��8<;?<������G�%���\ ���<p`T�]��j��-��?����-M���V �cl��'f�L�s�1�tY�� "�.X�-� �Rd��H����-9<>?8=�i�-9�������w��������8?��v�n��#!�������?�8� ;~{ttCyxz��=�;���������s(:���p��� lt�ml�����>��hqml������9` �q��S�<!t�_GO�D}���~1������s��;�z�>q��^;�#�t%��X0$�b�^�N;���`����**��9V��-.��XW}��>~t�
cZ"D:��F�:��0��ur�=�?S9)QfU���4��0�V|.�� T�oz85K<���:!�����.pVI������x��9�)���P!���92� N��u`��F��h���Xt��iE��� ���(���ied4�^�>Xg&��j�5���"��^ti3���
�,�jX���6�P>(���|I�l�K��������������(������A�;(�������jX��V9�0��w�X�����0�j��()���S�)����~=����5���x_���b�q���B��"Z3��I�k���_G7:�)��a ^�2���xwL^mw<i3����5L��Z~j���i�,;e��s|9w�L`>�y1��
$TIk >��7@$��]n5��@_��x�����di��F������H�Pr/������h�= cvRUfO�f:�����9w�!�����%.W�atIcW������],���������/�s�o��A\������.Ih�������Q�Su�K�+��.�$m�Vo)�)I��eVFs��
���C>��$w�����'Amb�������gZ=�w��f�}Y
�"���u Z�
����;
���kn=�^x��������f<�=t�$��K'���,;�����L�@@�en�!����x���Q���}r�y}��3���S���(p��a>��,��\sT���n-��m���a���t�e.x��5���l"� �Q���6v3�����U��A��i��Hq,�W�j���Y������<]�~&��/b���Q���]
e���?�c8�@�=�D�E~���'V�s�1�9gj�e�
��;��2I���,L�e��Qb�kn9�0��81�h��u?)��
Z{LQ�������&�afO{Y5��*��'����+�"(�v�VV+��b���qN������N���Xk��]�q���g�1����e�T�qJ�p�M�K�Z����w���b�
=i���w�Cz��?���{�o�:Lu��#W��>����j�����gA;�����tg{}���lw���m���U9�t(�n���� .��K�V�x$O�0���Eh(�t`�WK���>�S"�oT?�@��..�vm�C���L��>��B :6�`Y�����a��� $�,h��T'�P]�k�������{���%���^&j���@@4'�������)�K�&�[~��@F������{����L��xG�����br��~��Q��������"�������)Vz�����g
� ���HJ� B�gJ~��������+
�,�� Hn���� FTo�G���Z����Y�s6��y7��f�`�}�5�`����� �Lr*26in����og��^.�(34cU�%�%�B�u���n�������
��CLw��as���"
�P�IS1�����<��dmu3]3�� �4?��70��^J����p��
�]S��_'�vY[�JP� �od��a�C�@|)A��@PPM�6�k�U�(�'���@�����U�����4MN�c0l�������Tc�I����.�n�<�j���RM�"�7�"b����JFE��z�Y�qD�v��d���P�S-}�<�qn��/N�[�tmk�Q�!��
!�[�Y����$�dW����Z�������KL)?����E��.�+n���'qK�\��^o��C����
����y|��#
(�h�C��X���Fg5��l�YA���������nh}�5��9�=��t��!9�����ts{�ar�����
��Q���w�f�6�@�H��;��#`�d�/`�5Lnw���������L��k����V ����"F�G ������5_�I�� ������1�K^d��
���l�7gw��e�|A�D0��EJ��Z��j&& �M �>4z �#������o��EY��Eu<XMzQ�}t��S�NS�����~S�-��a��yr��4���l�V-��$e��?�EP�����F���z�������m�O�f��4�6]g�eQ������T��3���5f� �������S�|0�/��������@?�
Q�1/���K�<xJe�e�O�x�e/���T����y������s����l���z��q3������6�y�������/.���G���'��-�W������j�&�>�{�3��K�kU�e>�Kz�y�=�;��Cur�bB(�
<\2����S���U��O����g@"�gt=R�wn�s���[Y�V��<����p��*��[���H���oH�\3����\�P��u�����v�A��E�K K2������2������V�+����7F}xV�����&{��T/e �q���
_�Pm������������4��E��K=J�=��&JZZ��f�-���b7���i�Z~ �*��|0D�������"���K��PJ?y�J�7�&�1U�n��������th
��3��.�x�&��<t�
�C��t�e:2�$��U$+V�����zC���p��o���$�h}#�(y���C�y���a� �}f)��J?���\k�J�\q�tU�Y����&A������0+��?���r�����n\\]O�6,���������`<e5�):���������>�G���:�F���Wt�I4�����W���>nO��a���i�o�g@���.q����D_/W�
��|� w���U�������II���A ��`X �G�M��'H
�Hm\�E��
oK:}W��
PiBO����xP<�T���q�@6�)r������t4���N0N������%�g��j��(���{c��jz����bH���7�r����q2��
���`����K��[��ER�`:&�^P���5��]���C�c���D����%����N� =P
�� ��%.�Q������w�q��y��7� �Y0��B�}#J%�7K8��;��������.�!px(��h��/��Hp�h���zK�`x���#g?�E�5A�ot����>#�=����Z�! �e
+�c�z%3=����C��h$��pS!Oc+P��,��3��8�),��bK��El�vv������j�����8����58�� [�0FL ��V����������{��VP�����'W��J����7}�<�bG����M2�+������_��`�����&j���/n�"�v�~�U��uY��e����9� E��������WbJ��EP��,�4,0�S�d�A���0�vP��'�w��7�
}���]������>ZJ���?�~���1�M�&�&��*3v/��G��=���
�S�H��k3i���wE>�zh���He�Xk��%��~���;���#n�m��g�)P'��H/B����"��P j��a��3��x�<E`�U9��T���]���"���'��|b�$�.GZ���`�-��@�U#<�F�P�`v�.' z~��Q�-�;�Y�Cwa�������H4���?�������qE���� �Ot�8�1��H�K��@j��$bB�xR�4�K(���'���+&������>;$O����w���a�a�������������|-�X*r9��A������Wyh(x���!j�&��,�A>�M��Plg;m!��|h�Bn8xHm�3o�R���1t*��=�0��3Y.T����j:�B��
����Y��������a!��T������p���|R�DG������4�\'
S��Q��1�q-F����
���
�
N��4TW���O�;�0���%0�>�tj����}���|P#�Hz�86��g���Qq�1b�[���7N[��#�.�6�� c��c�)������@P<����t���)�Z�&�-�e���� �`�������_��:G����o$���I���@�VleR���M����P0$���0tl�vC� �hp17.D��t1����J����C[�M�A�c�dj>����H����jv��f�;��K�f��Y�Ck���H���8��8
�_���3B>pr�@�}�>�+�_�`bfv��F&����4����N��L�SeK��r���T��=3�
��n�'��|��fTw�2`P���pB�;@��U5�,�Vu4f�=b�>�Ql�:� &���xLq>�"����$g�r�T��G�e|HbK�w �t-:\��^pk�CK2�,% ���/[V������D1�D���w������������S.[4���b9����;��������v%V�%E���DR<yB���\#D����#���[�{G�W���/��6J�g��,����_H>G��h����G��.=z�K�+�T�.1���>��y�V��|���������%q��g�w3�S�1$m~�]6����hCz��#����!�"��e�P��o{���������d$j01��
��1t��Pv���e��5��m��x��������o���!�����&L�S>������y_��xA�6���� 8�6=���_��,k~5{�&�����% ����}x���qn�F��9�`��-)�&1�9�><55��e�96 �`e�����wr������8d��n�K���m�0^���s0a�$�E�?
� �l����ZJ������������i����P��6�����F�N�lR@��v����^�=���[3`�&���6e+�X������O��2��t�o�6'�����,���xe�x�S*|�_�������P�=�^���b��>/�t�of���u��p�G�0�z$�B]��Q>4=���
WK��aX>k����Nk����qfRfS+���m������t�I�P� ��\0�����[40X���H��K�&G���D�S��C��K�@M��r:�������/��zS�K�Kt�X���HUq�I%�3T�p�Q�~I�U�x���?A4��:1��A�$����T7t��m,r���f"����#�E��6f�a�*���g������������5�'~�e��UR�-����p�S���(���Ppe����f${X%z�e@Q
���C_B��f��%6��`�,��L�-(��B0Q>�����M�p��u�2��F=����J����s�
�������e�?(���N��-����.�p�X�} �#��$,R.dv�A.�!hMO)c���.����&�������N�� ilN���ey����i�M
������nc] }D��#�W���LrWX0����#f�
���TU�������L�!L�*Y:O<*�u&��������SM+�]�Aq��X.Nt�xGe7�&F�HV���r�H��b��By���S\:�9�p��� 2����N aQ����s}������?��(c5�# &�D2�Rf�a?����+����a��x�4��H�z��i�o���V��&7#?���.���l9���;4��Rg��� ���4y�TKj�x!y�t��6�|w+YC�c�nW����
�P�U��FYCi���y�w`:,�)�H�{��}���1���6 ������6H�$�cv��4��b&���C�KXi�`o�6�m,.h��F)�����U��P�f��j���%��F������E�����Y~���z����f!������C����dK�5:�����7f��=�����S��t���q;GYC���e �R�7Jx��������c�2
����s}D�'E�i��Gy8F���{�v14��;&�P�����+l�����"Co��"
�p q���p�:A�2�L�,�y��/�4�)��UPg��6 U u(@��c��m��&j&9l�ch�h������N��q,�,~�#�8n:/`@�Ip��02W�<�O�B�X��'���fc���bTr���D����GJ��|�r3�
��y��U��u�MY����������Q�������1����f������n����l"~�&�������Mo6�����6lw���bZU�#������*��h$�|6�%x5!��\���a�����y(�~���T��VN��`*��7h���R�)�s4`���j�-�/�k�����u�h�m���E�\�j���#Qd�D�K ����MbV�BO~},@|�,DF(v#b
x,��1i�)X�Am��f�s���f�uz��G~8
X��v�pn;2=4������H���l�#�}��C�+���GK����F*�n�K��x#wv����&BC������XM������\��3+�L�{�iUM��I�
r�C$p�2Luxf���c�0dy��\�����0���N�����\7��9v��6P@d8��8��s�m��I�
��sY6z�%��/��=��J�T��������"!X3M�g�7���f\�=��S�}�������m6���s{
���������jx���o��B���Yj�0��� �B�
{��g����� ��zf@F�����L�HD"FH/��`�z�/j
����n�fa�1�"�6%Kz����r��;x&mA��Iu��F��5��7�\��N%Re�Eh�t���x�I�\@��,��>���LF��M�C���.4���NI�h���===8>ONO�)%�t���sTVm�H�gI���W��A�^�4��O5b����Iy��bb{��n���h���Aew�[T[?����oU��7����M6~��k;w��i9�L���!��5fe��_�����g�p&�<n��� ��-�<����XvtQ�����b;�iG�������8��$t(�EXt;VG��h\N����!O�`O�9d,��
b)P��B��+{[�=�i����z_���7���@w����_{�W�F,���� �K��"f�blj��`��x�#Vj�G6Ol��&
�|���]������h���1M�M��"l9<��y�T=��R�� [��Rq��x��w)����a�^Do]�W����3Q��`M����Mr�������������K��A���_X��"2p���i�G1��Y�z�����M���������m��}��,t����{�<��Lu���)�`�q��K��H-���������M���e��p_�kQ��>��6���0v��gM�m0��eh�Qsi�i!f��� �[�����7��k��ZZ�w�������(F�or�1�M������0q,c-�M�7�����l\���4��0�oO�����9f���~#s���/����U6M1�����9����_NQ! z��D���h>*'�UOIU,y���BA[�����-��P7�x}Z�/�!���\�6��[������%G���2?Xp�3S�����(��K��`B��
d���*��1���Ho��xz��mM�-o2������z,d�
��i$��r?�x1���w!���md_c�']��9���9kq-{j61���6�
������R�-K^����]c�'�n>�|�1i&&����h�\SM���������l��)��/��2�h2�&����{+A&�3�su����I�J�9:1�'�/J-�] �d
���hu�x������S��v�_���A�6�)e�R��"0�7]��HJkl��`���h�U�� o�J~����������;m.�z��/K��W����-L���[�������AJ ^x%��h^�V����t�F�q>�f=���w�����u�g�����C`���Q�Tib����������~qwK�2�� �L������=[X;�X�1���K����e@2�Q#$fj!����k��Z�e�||���Z[��R������}��d���CQN�&����L���n,+���2hUK���7�a�K1M��e�:+OV�;���y~0Ry���rrU�.�F6��[��m��M�S,h*�'�)��U�"['*�����|�k�g��wHZ���]�\w��Vi��6�WJ�U�X���U>=����a���������
�Et7��OYX�����iu���1���d,����!�� d��v� ��h���lK�������<���
�}������$�B�8Fh X���vm9�^�D��>���C�PKW������.�5�M��6�3���QY�b��M��u�����&�����F(�QgPLz;���)&U�y��fyY-
9�B��9%dr���x�����N�p"�i���6��>�)�:�a��2 �����a�H��iC�\c��@�` �@A�����c=���5-�Z���gr��Z��
���l���=�VK�zXe������B�Z`z���Y��������/�tt���;L�"�<�#���Sh�JlLq}�D�E��T�'H��[6��-P�\���
��.p���AW���@��`��b2��.�D(#��Ux�SA{�\$����{R�
��'���o4�?�5�A�N��i�J�T6�<47�cy�VMy��{�wtt�vp�}q�r���y�������>�]����|~��{�BfX��\:�{���gG'�g�zHnL| ���TO#��+G��3]�/�S%2�~�KA5�F&�\�n�v���B=��'x�������X�w*l=��18<�-oq�K�RP�K)����E>��_W��6^O�U�YN�>��M�����������^��}}�����h�Q^��
���S����i�"�&�d�L�x>���F ��3$�e���zb;^��/���
i���_��RU+���Xon��m�<OVyq4�rq�r�����+��F��:���X�:S��3:o��+r9Ab��}�eq/�3������P���+ ���lk=6��K��h3aqh|
>�A"+�4��� ��j@j%0R�5�h���Ms��)�?��9o���L���x�D�s�sR)z��=�"����;�"�x��=�-��E��%U�v���o��Q,w�N_�ITB<�oK%��������(�
��&<�F0?��
�����`l��i5$�dI9b�\*8|�7R��1)L�5�G96���
`x9/erQ� �� I�{$�K�(fx.���E�����<J�WK����\��wb�D�@�v���D?���y��,�TJ��z�mC�Y�����,��lP��,����G����t�I��uz���j�IfP)����g�B�0�
���u�KV��BprN��:.%yCFH�����g76�Q�����'O�0?W����W�[��5E��~��q/�+�n�VT��X��4�@���l��\4>{Q��5����D��5�� ^M�E��
=�iZ� O�} g~�Fz� ������H���9yz&+\���� r���yo ���}�k������~���w��x3dT��]=�����3��~�H��ET��$�Gc|�����=������a�y6�]��U���{�������Gwr���a0J�K���!��������|�����2}0������c$��e��H������xLj�zf�� �YMP,%����O�������Oy��o
v4��G�L�&(����.<��15��H�o����K~����Q����
��W�a�����=��`�4����r�J��/`�t������@��G��;?��E���3���� � ��0�"�:�/
!HG�����?u�L*�o���I�����~��:g����������h5!�]�%��.�S{`>��K��Yy;��5��P9$�e�80��iMH�Jmr�� �v{��\�? ��I�~k�,��G��X�`!.aW����������f�'h����X�-�Y�[���6�"��}�;�}�z����[�q,�:>�yD��7�����v4�zP4x#�m���p�^��Z���&M��JZ0�F�41��L�a��� MA�[
�i���6�g�@���V�&��&�)*)*f��T������Z���HI'�q]$��Q�R�<��
��f���ek�Qq��w�zx�(����J]
:�&��w�v�X����u�^�v(�����_���f-����P��y�M�u2���l^!�kAY)�2��)Q]�l�\h,��M�S����O=��@=~�r��2�����ei�M?����.�(�D�LNC*H�i ����k��g�&�J�����C��O<���[&q����cL�A�t�>�e��
`��&��k9�j>,�x�<����S����w1���0�w�s���
����$��9�}~!�4�,�b|1D�jNk~:��3t��[�0S�0���h��||�f2��n��t���6E�����r���OW����������F)����$���_�i�E�)��,��{�Y<k���B13 ��������p�-k�!C:X(��|�����5�g_4�;L�5���Rd@RM��1��N�����[�t�md��2�.!YP�� 3�r�BL��r����A>V[_�������Jk�����q7�;�!k{D#S��W��,5�ov��Z"�(q(�����6���t���� m�x�!"M�������sm�<
J�?�@���b�3>�?yq�=<�q���E}�x�%n��8|UvX�n���C�M�mS��0�fU����!x�g$��B=$4�<�����v�'��l�A����n]��_���]���<���=��4���MM��cm��D��0������f,���t0��(��.��U�"�l��:t�*�������4D�x��W�Jz�������j���H]�Ax�d�1�6���p������"v�����G���v���`�)�^gg�k
���s��-��q;�^X��pP��6���R^zg�
s��D��N��x�k/�1wdo�!&!���_h������ ����V�S]���|�c��$��;<f��qk�M����bg��W���<�*$a�i <��E�p����M_�9������I��Qo��?��yO��-�Y�h'_�[�58��}��(<�����
+<:/Z�������7>&7��T�����L�A:7E3�I��Uw�gf��[�|gZ���l���2������]ibW��)�\��/Kr%��� ���U-?TK��{���6���
fY�>�gs��$��eQ=��0:���"}E�E'��������������hVwL�$���U\v���M��kx ,�$���d�;���O��K� �A���H ��1�A��������3/������c��N��^��Em=��w��B�d�F�����?���H����]����NAo�u�\]��Lf-La�2\l8��u:�_��Y��@���%���
h��&OTk!X�:G�=N�/���+ �
���+&%�Nx� �GF��N bMGN��z��4w�%���������e����$��(��<GW��&'�/N��Jz���z��f�e ��OV�Q�&�8�?:�8��UxN�+��k���(H����P5?4^f�C��\��U��'�����n:���C�FI�6E���eG��Qo���n:S�d�w7�Cb���:�Ja
:��O����s�` ���jk���r�*�|~I�5�4@�v�T����m����`������������)S��a<��@aY���$B���Q��x����z�XE��l'�2�pb��.(��hA�e��J � ����s�k�tq.M������=0����)���dB�N��|X�����1����"xjPL�pi����|r���U�H:8%�iU|�M*�&�N��o^�)���_��Ig)YI���������7r��`���$1��i:)'�Z��f��Iw�3����������l����\�(���9[�}���h�b@-,2��<:�;�iw�W-��l_�l�����d���Vm�����7y�_Ta�r��Op����7���SCe�S��Q2��8��r��A�-Nyv ��d� ��&������A������s28�x�B���4Cw����>����|�����,����w�]�U&*D�z��D�($a��k�<#b�&Qy�$`��{����&���1�U�����ZA�9�B�����eDN��fz���y�{���l�)�!�� w�P���2.3�.�g|��t�����t��a�x
����;���9?m#�,^aE�0/:?�a��L�"��Q�����z`W
q���A����J�
��7�������h�D$�F��3\�gl�Bv]����Z�U������g�9�����!%�&�3�G��{�B�x/r�F1������)���H1��\x�j��\<��'�����r[Z�tT�=L���*���tz��S�x A�������k�o2<�3���s08t��Wnx��YF���\{�$���/����)��/�za��E�IdZ��Sx!m=i&.��G�V�0���'�J5���Z���B��W�fHJ���{�����bN���?�����n����],}T��6�M�Wa��c���6�c>H��L��� t4�: c_���F�a�R�����96���m���X��>��y��`U�fA��J&��\��7?u�����N�/�^���h�:T�� L��*"�/��~l<����]���l���p�����M�8g���Np���1�����r��%����w���:
���e���R���@K ��� ��m�����E�|���Z�$���"�����tgcW�/>M��C�j��lm�;�kf��rJj���EV���4�^�KK�7..~?c��GX��m�`�Z\T|��9J<�<�u���&P#�=:��#�������h���5�bT�Na������y��i�������E-g�x�
3v��B;��������v�W7��h����d�F=l{<���DhG��A=�Ant�M�W,��l$�
�7��0(�?���7&|(�L��]+�a��6�������A�X��7/b��������h�AR�P�[� �ft���F�����+���&����qB�O�~���3�rt�/��Y���nY�iy�i,^����b�$��8��]�����&�.P�G�����;;�'w���������J�D��!�l\�)�����l���L}���E���f����*���4����F����Z
vf��:��8����������U����d�DOP�*�Icc�}�w�5�
o9K�s�8�:����E��� ��9�v�} -���t�%���]x�2��g�\�#�E���;����Y(�����F�m#��=}%�����f�v_}�m#�m�4������r���xF�|��������j�������;��zgs��G��^���i�kXrms�"�E��w�N��� S�@�1e��g�^�������a7�_]lr��D�gD��D�MoN_��x� �F���&�vg�6Z6G��[g�x
���}(��]/D���C^�zE��:L���D�����oo����~���lD)�=�*m$D�� *nZ�X����b���O_��gt�S�f����D��k6q��z�(��<��W�A���M�D�&���(HPg�� ~�(����T�#.�N�������l�A��v!p�/B�z�H�����x���)�{����Dp���wb��0�I���?.XMN:=��\����j{M�K�H���O�����tgG��|E�{�LD�����|��������Z�����/�;���������+�[�����mt����p;�ri(/�bQ�%��� 3��=+� ?��6�������q�K)3|fY��. ��^��io��q�6��������25��LS�q����BA��"K��E��!/��X����B���'����h`k��m����f9w%�{�
�]�la�m���j�q�X�{ |���2�v���v�6�K,E���z
v@�k1��?���S��n����,��W�����������hmsfysgcl������ "��)��_0���������&�>���K�E|L��|8��������I��/�(��Ll�A�)f�cr6��Cp�L�������j[�}��-�1����W9����hYE�����p
*�� �W; �W�6�8/T�z��l�>��44K�UX��u�i�|�O�~_1�Q?6�{4���6
�i7��f����<�O��$\2Ml�y����:�#��>3|�;�igcw->7� �+�'ccw'�lv��d�8,*�v�'�Ksvp=7������/�5���-�L�[e�������LI�L//n����J��?�t�����('+��yU$F[��tk���0��N.:&ZM��
�T>��6w�j7
8�9��Cx�,#:E9m����6�����*��9�0��e ���B�\6B\�����#1�A�rwm���\�M0��X�i�o������0��K��&-�%b����c����n��+�DC ��Yu]� |h�G�����w���%u{c-���v�/�q���B����6����EH��bn�����W�/�s���q�E�:_�z�������&/�����(�a����k��g�_��s��$���\t6�P ��8*:A7O���#�AZ�.4G2`�u ���_��E��V+Q���J�=h�fj��Z����V"���
,�9����l�:�Z�Y�S�:������� �> *�Y���5��x�b������0�(^��w�+����{�!Rd[ad�����F3F�-��[�?V"�������5|�
��K���z���6���F��������z�
C jb1 ��N�
uQ sWc P��9� ;i��Q����
�^�����8��&���z2l�P�)5)M������Q\�(�
P����w�UF�E�9�*
�]�:�9�7{������d���(H/��^�U�y^�Z����V"p������2�g,5PBB83'�4
|~��\�3gbz���x�gkt�'���D7��[[[�H��R�(3l��������7����
�i9S��`}q�x����vZ�nV�����]��t�d.5�G��������uP8�������|�-e]-��Q����EP8\Z��p/�l��Z����5������f5���VL�.��z`O+��M�`�Q=���Z���o)F�`�p��U���PAl�U�53�!�t���y^7]&�a��c�+,�z*]T�Z��A;������|����G
��|��V��u�������|-~M��Y�����1>rf������� ��}����kjz����k����u�3�u�B������z'����hXYq��a������4$�
������!z?O�B154x�����c'`�������VH<D�.DF�4Q�^3R� ���,<��>3�J5�>8}T%
�4��@����}��mV��b���)����PXc&���>#�f�%���DHb� ������P���oo��;k��������F���;��-z��+;s:�3����������������9�����#/}W�������f�c���nn���-�u��������5�L}���<��9�� ������Ss`R��������NN�_���}#�b
:��R#�P�2�B��� ;���%hX���6%P�xM�dk(����w��6�cr�y��u��>c|��ab�O�� ���>G�8�8�m�����:���W�����Av��/��c�7��ydw6��XO��W�����1��P0���_��
���T�&���w>^e���l0�����\66m;k����(��Z0�K��vG��kE)`���D<.1.% ��.�37�r3��#�bN�_�_f��]�o��WX��l��T��_hW��.�:�T�(8���a�����N`Q�lx�`$[�r{�M�����h������$��$^����V����^%�?xs�I�����U���J:�A��]�������-�o��(nl�;����-�.���t��27�MM��:?��u����?����������N:(U��LK�����4w9$�����tw=��on�-��sD���k'El�����q�W�����LI���9nC�_4����B���E?�[Z�s���u+���*�k��t}�ZbN�.�A���}����="��rdA�o�(��x��=�L j��%�J�7%,k��
���>I�~�gC�!,\w�O�Lo��U�UZ)?�����|�f�<��.������^�&������h2��LVT�
���"s��I��=���] 2�=}�3|lK���V��G�
%�{�X3�R�{�g����=%9�~�>��[NA��.�1��lziB�R������N#�Pj��z��yr>