Cache lookup errors with functions manipulation object addresses
Hi all,
Per an offline report from Moshe Jacobson, it is possible to trigger
easily cache lookup errors using pg_describe_object with invalid
object IDs and pg_describe_object(). I had a closer look at things in
this area, to notice that there are other user-facing failures as many
things use the same interface:
=# select pg_identify_object('pg_class'::regclass, 0::oid, 0);
ERROR: XX000: cache lookup failed for relation 0
=# select pg_describe_object('pg_class'::regclass, 0::oid, 0);
ERROR: XX000: cache lookup failed for relation 0
=# select pg_identify_object_as_address('pg_class'::regclass, 0::oid, 0);
ERROR: XX000: cache lookup failed for relation 0
As my previous opinion on the matter in
/messages/by-id/87wpxfygg9.fsf@credativ.de, I
still think that "cache lookup" failures should not be things a user
is able to trigger at will, and that those errors should be replaced
by proper NULL results. That's clearly not an item for PG10, but we
could consider improving things for PG11. Still, we are talking about
adding NULLness handling in getObjectDescription(), which goes into
low-level functions to grab the name of some objects, and some of
those functions have their own way to deal with incorrect objects
(format_type_be returns "???" for example for functions).
Would we want to improve the error handling of such objects? Or that's
not worth the effort? Álvaro, what's your take on the matter as you
worked a lot on that?
Thoughts,
--
Michael
--
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, Jul 19, 2017 at 2:25 AM, Michael Paquier
<michael.paquier@gmail.com> wrote:
Would we want to improve the error handling of such objects?
+1 for such an improvement.
--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company
--
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, Jul 19, 2017 at 7:29 PM, Robert Haas <robertmhaas@gmail.com> wrote:
On Wed, Jul 19, 2017 at 2:25 AM, Michael Paquier
<michael.paquier@gmail.com> wrote:Would we want to improve the error handling of such objects?
+1 for such an improvement.
Attached is a patch for all that. Here are some notes:
- format_type_be and friends use allow_invalid. I have added a flag to
control the NULL-ness as many code paths rely on existing APIs, and
introduced an _extended version of this API. I would argue for the
removal of allow_invalid to give more flexibility to callers, but this
impacts extensions :(
- A similar thing is needed for format_operator().
- We could really add a missing_ok to get_attname, but that does not
seem worth the refactoring with modules potentially calling it..
- GetForeignDataWrapper is extended with a missing_ok, unfortunately
not saving one cache lookup in GetForeignDataWrapperByName.
- Same remark as the previous one for GetForeignServer.
- get_publication_name and get_subscription_name gain a missing_ok.
- getObjectDescription and getObjectIdentity are called in quite a
couple of places. We could have those have a kind of missing_ok, but
as the status is just for adding cache lookup errors I have kept the
interface simple as this keeps the code in objectaddress.c more simple
as well. getObjectIdentity is used mainly in sepgsql, which I have not
compiled yet so I may have missed something :) getObjectDescription is
used in more places in the backend code, but I am not much into
complicating the objaddr API with this patch more.
- I have added tests for all the OCLASS objects, for a total more or
less 120 cache lookup errors that a user can face.
- Some docs are present as well, but I think that they are a bit
incomplete. I'll review them a bit later.
- The patch is large, 800 lines are used for the tests which is very mechanical:
32 files changed, 1721 insertions(+), 452 deletions(-)
Thanks,
--
Michael
Attachments:
objaddr_nullness_v1.patch.gzapplication/x-gzip; name=objaddr_nullness_v1.patch.gzDownload
��pY objaddr_nullness_v1.patch �}kw�F��g�W����)���~�3��H�G;����Mrg���(qM Z�f��oUu7� ����O"�@?������a�g3V���=f���+��O^���|�A|��l����|eZ����l�&�vsZ�O��Yw���]�l4z���Z�������������e�V��������Gw�7�+k��]�����O�c�{�a�]��h9+ci>a�s���`O�&�{cy����Y9|��a|5^�54x�Tx�*���M�U;8����k���w�3�3~r���T�;�P��f����P^<g���������aZU�C`�
L���h�O��b��y��V�=����������^�w��u����[��������������������l���0d�K�.4om������tZ�z�i6F��i����k%L�H#�n�:`G��k����CV����gL�������r������~#�@i����OT��*{C�*T�v����Dz��k��dn?���|���������o_�,�.����U��*]����$�Y��wtI���((���1�v���A�[�-�=�w�I�In+LM�������� ��~���"�s\EU6��{�/��c��3-����3V�����1���@~��-�
J����P�}�(��p����d [5��w-4^!O��=��&�o6�%��(�<)�1��F_��&������z�X���{�����,�S��g�W���;���>5�]����:;��?��������e,�f�����[��2�������Sl�-l��f
��@|@0T��?m�V�����q�YB�%���[������!{3����~zK���V�x��e�,�hqI���2\���%���y��v<1��P������R4��i��7�N�>��h��s�a)FZKY���HJ�FI� )�" :7���*W��s�����c�^�@t�(�!)�
5����@5l�F:[���q��@VI�l���.\;��_<��������"B�������4�h,6�[g���,"�
,����q���&.(>������M��W��A�8���F��)y����L��
��+,kl%�V[h��a!Va]US)�[�i.j"�S��������ndj����z��� B_�@h����Z1�~X�B�'+�
���������{0\����uM�k/�P�3��V�ERz���J�u\����;&l�������M3� �}7@!�N#���R�Y�7���Q�<��]�9�eU��#|��9��n��/�|y����f�C�o�rq�s�����5�>|�\�p%r��.?~93�g���������nD���s]� � �Yh�����l�5}������Ns8�X �h�M#��FS�d�N���>�H:��X������|rNdaOP����s<f�_E��l&T��o��9��xX�'p��M�@2�+?�*�]�|��R�<�(���@�y�"V;�������@���(�`|���9���+G�\���]���=����8>;�=���fT���7��$���cx��x��w�A����"��X�x�,�:�R��KQ� ������ Bdb3�^~V42[��r��g�\��I����V�W�����p2h�[X�O�b���`��ED���f���G����u"����B����~��>p����������8XOS�4�������>On�//^r���WR/'S���"��j���zX�Y����g<4��9�u��96�^��o���H8�J����]N��XP��d��'V�^�OZ�i�9ht��lA���[){�j�"%|�2U��ly����������e2�w���H��@l��7�P;�o��X�������ip]�W-�����)b[`��'*�/@��cO-s�XR���Z)�P�l���������)��H��L�b�~�Fw!�l�z$���F#;���������HSH}=�.n���<����6���
�`:
d�]���0�w�\8A�(l��Z�h�!�V�33�����^eN�3k��[��h@���K\X�2������a�1��S8�{W��Y��3�Z�����[��W�CO�p�?<
�`��vy��i9�#�a�zC�L�SBe:X/Wt��f����(��%��/�UwmL#k8�~����+�/+Y)m�>�-���Z�n��W��oN�:zwy�?�O���'�F��L�{�$c�QY� ;������f�Qm6sb=�v�4"\;��s�A��z��#Y�h��%^��������5WS��3������)�e��Q�gd#uN�A�k<;|�����?�v�G-B��!��r�x��e����(U~������g��a{H��u���2\�O$�j55�U5��h
�+��4k)doW��f��li`�*�����t�n�;}�����>Y�M���=���F�)��������h��B�K�'���4j
���m5���������J?e(��OJ�A�����6p��'@%1�Mhv� ���,'�#�5{:��5 �@� �#�a��� L��f�dRp�1�U���+���������s/��*��"���?��?�O�!$e��"�T����5�����T���U=��O8������HrT,AG����9T7"�t��cY(;e:�����5��X�u������������!�����BZ����$����,W���hw����n_������^Z��t������E�Kjw]2�v���[��E�P�x��4T���o�������a���u�A�6�6n���3�m��U�T����J�/�4�7�a�KIR����G.�}z����Z%x�(�D�����$�R�OL�3�����n<D=j�*,q�t�j
��p��x�.����<\�o�w��zO���1yk��k�n�p���N�����n�9&�}��)������L/*R��Kz�9,s3�T]��� �J�t��n�?�w��f�3mu&�$�� ��^����S�x~�0����>���J�%t�\�t��4��Uy��<���y�[q@ecX�����uT5j�������
�_����7�qn���1`cz�1>���p��n�x13������:����Z2��e�n�k���0�F��5�0��S�pF��X�'<���x�����!�UE�~��yp��M:���?�
�8~��}�Kt�S/<�����Ojz�T���>�[�������p(~�������]�b(��8+���.����*=�w���k,<�#��'w�2�l�.�*p��F�{���� �;�D,�4����D/_ro���a���z���Z�+�mYi��7�#t�%w8�9��9�����NoQ�#4?�G*�f��������v�����l�T��@e�{~'�`������,�U�����`������c�\��Ba�gZxK@.v�[����n�����[�o�Z��;2-7��E�Fs�P�=��$+$g1�� C�bOjH�
��wc>�0B�d��Q��zB��,�0^cq�<��/���!����`&��Ksr���I�r8��'~��cpm� C
�����3�ICY"��%�q>0qlE�0K�"U�0��������<:�^�
DM4����^�z��
�JQH
j^�v_�uc,p^&U�;" A�#;�S���b������hr 8���VS�O��b����?K�C
E������8X2��3�p�:+^�Z ���|�8��`����������Y�!���obL? A���/k5}�S��"��f���5l��z�;�Z�1�F���Mq���i6�$��G���X�g��]�������C��o]�FU8L��=�th ��C��B���KcklV�R1��R ���0f�E�Y���������Q�1�6;Lm���J����S�e��~0���~�r��A��x�<Tdt�� m�f���=x��#G���:^�Hyx�X�3���^����]�.�F����X����������������"��K���^�l��~����M`j�d�_�y����{�2�����G��~�#QB�M^��/�$��?�9P.C����S�n�@DKk����p�t���k�}$�jk]<�����\��K��������K>���@���i�,{�d�B����9���F��fa2$�{2Oy�`��g�s�����R�k96���o�?Q��X�������%45��8�>�[f��G��i-a4����& ]�P�
=�.3��H��|�B|+8�� �H>��3��c��^j`�YA_��j��@'J7(2�g�>#�Q�:�7��j���$��p��.�#�r�P�L��h�?��%�7��Z���������d�0�0���oO��Vq;��9���M�_����&����x�*���ri�s8}/_�Bw,����zF'tc��7'��b���7v�}���E�m�:��sg��/����:�M�Z��}����BE<���Z�p��apny��9nQ��
l|���A/�&7�}��$��$%S
5�iVH�[Aaj��2�/�o�H!��)U������
�t�=l
o����C *=��G��7$�c��d8���K`�l��K`��]����_`<��*3<b;pJ������q��G�~f8��*�3
�*^_A�>�
��������*��Rk�� 4�@R���Dh�;���^����Z��EFT�'}c�%��,A�I24�!*d�Q��7�Q*�h�
���j��&�X��b�af�N~�^]^���p����"�m��T�m���'B=��[
Wi���@��� $~���+�A���+j'����@V�4Z�GA�����G���TN��E�?�A/l��l`����*O���)QTG9@St�����[RY�.y��9�k�Lvzrszr6���rj���l��T�>�(�[�|$B���S���je ��93�f�>�;V����������5���t�����}��$�3��4���:�1J_�E��VxT��t��a�'\2-�{�P0��N�����;\Zb��8���>�����6���J��q9�lf3��(��M��M�RS�te�����r�x������y&��}�>J7m�kM~h�����v���f���8?Z"�plmcx��L�����s_jN"�m�q��K"�"�)d���'�2�n���r�M�@x? ��f ]��b�l
�$8��
���C������a$�6��n�P�"rD�7�r���E���*�Q(D�zp���2-�LWKTN����<�zj������)'���I;��Do�%����j#�n#��������HW|�Q���������d�?�U��Q���D-���'���%���p_��!��V�@L�����8�Z�����HB�&�+��/����?�,o8����������D����X�mb���U���������
�,\��$;y�0rA�k�Z�_I>����%�*���l����T�,��x�������s�&lkc����L�3����Bx�!����E��2��F�1�S���'�����?��5�V��4��@��2��)._��D
ty��V�/W*&��?�]]�+P�����zC/p�����8�����-�+O�+&�T��>osS��E���F���U�f<rQ���-<�������@Yd���z#�g��/�d�:�5yc|����(�1pGyj�WX�!obS��bEE6, mkl}�v�[�H����>9�@��g�bd�A�oF4���s���\�2��4�zx���$?4�@�ZJ$Q`��}�
E!-���`���� ��'7�/�\�7T�]L���!L
pK��y t���6"��
Wq��J��)-�GdX��-P�<�D{����2�������K,�:�s��s��Ia�&s�,� �C
J>p��2�q��k����7���^��R �����ihY+D��YX��( -|}O�����U'S�����m���x8�Y�ZMLi��w�������`/�D�7t�!�5+hY{y~�,�:7�X���m�Z�r��%,��?����\��a�C.[S�\�K>����'qK`&�����i�GZ��#�VI8������;�Vp&�`��
�L�F����q%F� e��N�k>�x���E����R���b �����y��e��Q�M�*j��t��eqrV���A�\������z�XJB>���� ����� �i��_�
��@n���-'0���JDa�*90(M��'�>��a����0�#Z�A��f���YX"����%"�������,W
� t�G�%�^���)��=��
�EBY%��,N�52#Z:u��[����[�(�
�*i�U��2N�V��A��w!=g�86g&�]l
�-�V�V��T�u��0�U���(W9����\�y�&��{a��6h�9���F�K��-v�QQTB������%�2�#�Q*�&��������+��A|���;+ l'�� ���D�����]��^^g����I����s�b�uX#���JPj��3�ExrL�����+�V�-�N�Kt��N{=M�����.���� tPYm�����TDs��.F����"'� ������~/�'E�����[�
�3����m��S�C�������d E�T!�$�a�Qm���j��(]�^�I�^�k��:��kD��i�a��F��z��i��/Te�3�=�rA�/������`~��y����o�g�x
���GV1�����b�������8@��3���]n�M7�T��;&�8����5��*����s�~|� �p� �8�1���� 2���|����C���eL
\,E[���f�I���k8!#V�pMJMC�Vn �:h��*�v������������ t��O��6�8��
�u��b��� �K��d�$rW��$zO�H$��UT�W��$o*��%�$}�o�t���S�w�����F�w����s�m��9>���';DT�������� _�������h��F�O����X�����l�����p&S���+Z>���U`��/������!����Db����{P;����{�D>O��+�^*��2j���ii>mK!�<�
m~��~/�6�����MR��n�wf��l�K����*|����g�h����,j}>���vy���c�+��rN5c����c���d��B���I����&�.j{���x�-�T������8����r��8W�QT���3�������9��{w��\V
�"�������F���d����"4����x����v��+l��{]�k������ �SE�\
T���
D�~� G.�Y��?��k�fe�z��j���������_�srr�s���U��r ��kT���K#�?�a�tA��������o���������(jX��PTa��_�t��a�=�����a��`���`��8��L%a���4�b�2�9N��������X^�I|��-� e���Qy;zw��o�-tz�rM��{Df�GT��tz�&3:;be�h5��������o�-d����������W� u:�������` �C��T�����#i2���j/�H�<�=l%8����<����-vD����X��������l �mI0x��� �BDi�������u�P��d�����kE���J^ A�A9�D����r�������d�O~tb�z$�u�1������2�&��K��@��%�����i��&���|�����/�xA�3�`�vj��~]��C_�c���x��_�=i>ds��<�d�0���V�D���)����|ADdK)�������'*2�>T��-�H�x���@��V�"��-����������o@��
�-��S��Y�f9������hR���J�5G#v^�v�Yb�W����h�BG���P� $i�3��n�/���)
a3I�"m�ON�f��T�&k��{EE��|��U\G&��E ����"F;��:/a�����vg���pW�#26F������ka�����+
g��K��A���5�pD����������oA
f}��Y/3�B>�����O��8����Z�~�Yj#C*���#]%�����jia��Jk{1�f6��x�Y�'0.B�A�`C�.w�Yn��S.��~k�k�W�d�t�V�q����)il�����9m0��f�M�������Hz��it��[\����������Ev��z3���j����Xy������+[���:
�h"��>��S��v���F,
���FA����W�gT���Z;Q�YE-����$�^:9�f��^\"_�����b<0Y�/�`�����s���'�!��u��������y������U���n&�)�nu�2-o7����5g��;>~�n_��F�����E�3�_\�^�.���w���X��0��i�2zY�7Z�|h�9��3��;����=)����#+f-���;�������� Y� ��y����')�>U�C9t�ni�L`��� ��(�j.�P@3m��'{C��3n'� ���n�Y���8�����
�[��D<�Bpr\�Q�}�|��+��D&��~���$�@b�z�wQ�(��T-��p6���#OU
�7bJ�>+a��38�������>�$����4�}�l~y�G%.��Z���O��D��E������35Bl�!B������t���m(���S`�;
�I&���O�����yo�9t��R�`�J�L4%�H0�N!�BA��>�bL|!�O����O�� ��~��s������G�!�w[��j'o�t|�#��������� 4�
��|�.�`2�Os�wY��HE<��I�����,�q���vb�&�p�_�����h#���FD�:��E���������(8�O��P.=��_.��|��L�(xc���a�����c|T9�{R�
��W�)�V;��1����n���;���w���f.R?�����S�R�*�J�������������(��K��
��>"!]������x�b�
��E���3�B�U�N��<Q��;��g�-V���?!`��\���\'4>�U/v&�!/$�i�0�S�h�"o'�*}z�&�i�N@|��
�Q�vK�(D������c������@;���?E��G9�������NR\$l[@8"f[�7���~7'��Z�1�IR
���0~���Q���(H���`KV�b���|T�����=WP�r�T_tv��I��|TUF� ������~��w�8���+#�k��A"�d��W�|�����$ib(������^0c=$�����s���V�<h����s`�����2������>����7���7�i4�H'e9^f��W�����6����+TN;h4�����v�aJ��P�X7x(�g��B���lX���? ,�^�D`8��X��*��!��z PY��0D?�� t�l(�9�%M�g+s�T�fF������Iu0�m�@�$ �q��8D
����'���&3e�����\w�i4�Q�Mt��p���o��1�y�[��
���d��R���'��3/����O��v�5tt+x>� )D��1|�0_�B�� C�Ze�\Z��� "%��kkU �BV���d}�����&~/�p&������8��R�#0���5\ ���f�I���%W�4ZMB���U0���f����r���_�����9����-���F��E�]��@����:|�������i��a�����
��=@y�If���GK&�y���Q�J�+���it(
���� @� (T�"-l�4�*sm6�Q�%�/Xf�����Y��i30�:�G����/�C�0,c������l/�� �.=�i�`�&��5U���������]�I6t�f��V�
�M`���3&v+���)����s��,�.�k����W'�K�
���(eT�R!V������x��eA���I���a�c3��Bc;���\��o\k�Y�&���0�&� <��2�Uy2w_����@�q_�j���8M��~0H�gUE�Wmw�*�K��%�m���)P $'ad"���U]��7=?��(��tt.�"+������k������L�C��E=iz�n���N�|����8��-�B ��N
�����\��+�}R��S�*��X���V)���O�\��LE�u�b4���Y^�$��M�T%���+f
,�T��L���kdMK8e-f{�e�_�����* ����]iQ�H�U&pt��IKq���`����oN|5I�w���C4�qM��~i| �5�w�<���\��[,��,�u�m>�G�u9'NS��iol6)&D]|"��\[��4�K9��G
�KvE���+��H�����A��A��]���|/�z���s�(�,g�(q���2�rA�d�
�(n��8
{�2����������������N�[�G��`J���y�p7&:i�*�Rc������
�/��Q�m�����T��r��:y���2"jtAD��nuv�K�u�(����%�z���V\%���5�`wA��N�;��QE��n��\�(���+�S���$�*�j��z��
�6�S����4�:v�������#e�:r�K�{?Y�:�~���A4~Q^�������5�/2���q� Rn��U��Y6��]9���U��I d��c������&9*u:���pX,�R���i���FIJ��6����MY��A�����m���v��h�Cu�
~�����3yy���JN-n����X{9N������'p��p�������h<�TI/3D)��@x�LPY��F�N��9���_�����~��y��F�(��JK~Q�"+G����� c����!)���)w�w�����6wH����8�b��""O��~���$z{��������+?I��c=9��oqf������hd��x4���)�>��*R7��|�����LK����i��j��f�P����\c4d�6=�ls�/�l���3m$�|��W-�dcS�wk����x��>7�����>�YZ�V�#�6�?��$<� [0���c�@���7��%�������v�z����������z��������`���UV��>'By�~���P4�N?���,l~g���g�@����9q���������rT����B�w=�~�#�L�~���r/� B[\:�w���B��?!:���T�>'B�Y?T~tv�wB����t�5��a�����C��
���!_EMf�`40~6���YD��Y�������H��l ��
e�����@������
��
�<s�Qg�V��X��/O�M@(f}n�_yd��r�w�i���^n�[^k���q�_]\�No��fv�v4g�N������Z�A4�~a��4t�c6i2��zA�q�E�'���7��:�������I��w�� DN��[{���#eA������l�����G��MZ�u���mXd<���p�w���3��+���^T�&*(�,O��$?���������������R7�s$],�#���2f7(�b1�A ��b,s@�����%�0��&��`�F�_��k~Dt_��� �I^�b�/��q��
>.����$�+��-����"�]ti�w�I������
�G(1Kbg�eq�����M.�v���.��KX8Ln\|��$'�5J��n���M�P�R�(+u�����e)B��R7;/��1���)�M�n�r�h��OhM�BC�i�&{���B=��=��M����;�q0�{��g�+��9�>�y�Q|���r=�������������c���9�WV���,f��gt��~bAM���q-he����0T�y����Ec��h���Q�.�������)�\�'b���.�S$}��������>�K~�
EQ�������SA5�Bn��0IU5�#�D�P�2ZTZ�I5nb4���?c@@5[��{F����*�������ZrRb0>��v7�R����� TF:f�CY��H/�XBz�n�lW � �����T�o�<��!�D�8���q������~'y���z������� �h���*����/��$�5��U�&1�����p�x�:�D�B yAJf��S6�V� H�'f������~���v��Y��n�f���t��j��}=9::���_�Kdw�����t�3*d������
V�H*�����������W����<+3iE��X������z�N�c:��y�_p9cb�����ZN,�o���UQj���vD�����\1�����/�ev�R0�
KH�"���0++(�Pbf�tQ���� R'0�6�� �Q��b`J�Q��
�1P�U*��Lm�����g�����1:�_\���/�W�����?�9���*<8<3��t��!���0���H�/
��b��A\�i'@fU{_�T`���G�nR�L;_m�E�����*�'Az�� =?���>�\Z��e�3�]>���
����B�5����$����� �0Y29�(� D���E�����I��������I2��H@u�%������Hg���}#��5����*^*���G2w���'<s��� �C8 �1"��u����
'�{{swko��Z�6E1��������m��c05��zg��L;}�������K��Ey��!�2�����,�BW�N��j�XMD�6B��K����P�Lh�[�*)�4)I�L)�=�����5�pA"v��d�K��R�����a�`�T [s��#\Vq.�I����&�/!���;��q����o�v��dYU��vA.(#�Ss�M�����������L�Ii+u1)��8�����?[M��X��2
d����o>(P4t���|k�sr������|�a!r�p
$�����'������l|6�]��.N_�_����7����M�yn�R���������WvM.�e��,Y:+.�����h���Ul���"�
�S�o��G?����RUt?4{��Po5*a����s���"f��.$A�"�u�1���u��I�G�X������z�c�;W����[�<VM��I*gO��^8�kVq��Y���(6�R�0��a�ZY�F�g��Y��%~�����f�V���^=Z�f�� X[��`�E��,.P����^Xs*���{��f8_���s���FO6�������U �\<e�^'|�����*�}���
WH'���T����R�C6��g��
*K`_�%�H���!<�uGOK�Y��
��o���j�U~�`=���n��l�E<*/��%_[�E�VZj������h�}�T����x'
v�����z��L��� ��Byd��O�f��XP���h������p?����LyH� ��Tq5TN���I�m��S�"�t�t�f��&���K[�ei5(����]x��n=����c�����(�90~7���U�)%��]�$��6�w��@�%o��xsz}~�|t��Y0�:����?��t�A7�4������4h/���t_�Ll�+,��X`����nO&V�^������������f}%%���)8}�C�K��B7���<����>M���������?WvB�VReJawk�U*�In �J��t�Iw��Q����iD<s��e�q����aV~�L���
ed��� 6�%�U���n�F�1$\�g7�����4c�p}Z���l�m}���9���d�P��E�n ���
��8�]i������?*O�
�Z���
GT�:^) �����'~����o���a���f����;
��z}:�Z�~����0
��4&�#����;�/-����g9������m���Z�m�@��8�R�s!-����%������� �s������a�{l/�w�m���|�w"���,����\I����*�������?
���w �l�/c�mqJ$�nF������w'�g��"��p��.>j�+m!������
b�X���:q��0 ��Kq�����W�KQ��0@���C �I�O���r�����t�IWx-�k�^�!��G��ixI��+�>�xK���
D9�[�rvF����q�T�;O�3H�
���
lde�����&����3���n�����FO|��o��D�u��>��f��3s�%Y���49I���?d���������K�g��W1����J�F�T�9����}��A�zrU��'RE�*,^O���rE!)H���z h����K�M��B��q�0��f�������%��`�A
7�"������+~|)(����EgL���T��;F^��QM�}}#U�������|����E�?�H��LwwqBu>�����T����oN�����iXdP �����/��0��$1j�:�����x���������������������OU
�!-q��Q�M���L/Gc%�(`w����/��������f�:���Q��!M�F��1�^h�]my�l6d~
�����F��HR�x�J�IF!����Qp��-3"
%O��a�-ibs�Bu����f��u>��o�B�Hd�N9� 2c��m
�O�DN�����c��&���=����'�J|�
����Z�N�������`�H�+G��-z�U��y 0A>+%��dY�����7c1h��)DW��S�������9�J�l���K[�A���V��(HC�YE�,L^�s?doIF!���|�-l8������H ����sG���s��;<'r���������d����7h�,�2O��BV��"�d�h��l��C8����l�AQ�J@�bHF���Y�#��~�0?)�����r��<��,��%�><���,$��u/<�@v-�U��e����!��T���~L�/���� .���OkxE�%��";fs�po���^������nV���M�W��f�|��2�m-���A�����Ej�.���^�g�a���QE�����G����aQ�lW������������� ��k�[���u��?���zp9w9�-l���,�0��5p��z�F.G����[��D����v}G��ScO���R�.m]��e���r�e5L����E���=��;�+��7�0���d&�����P6" $oUAz��B��n(<M��{#&� �D%��)�����J1�����_��L���_��M��� Sed��V�(A���@������.����aCK
6�;x��Xz@Wo�
nrBv#��X�<��2������kas���&��|��8
��b$�n�0G�t�6� �y��j@�+ k\90�tK�l�����hh���[��� ��=�����~{'�����w#�����Wc�s�I=��L���X=���"&v�~Qj�����F���_�(�P����F�����5����Fv��������Kl^"*��{�X��1X��o�/��r�������'���U�����{l9����;cm�c����&eL# �zP ���Zv�~�5���u��r��b��p��
��x_�\'�"u���+�z���|=������NR��4If����=����b�����u- ~#\�l���������`�jw�Nh�����n��7�8���|trq�����K
W���p�
���7�?spt����oB�&��vSeS
�K��UX]A
��,���S�s����:T���d7�� |�l�%:��+�8��'�U{H�|��VK�VF��ke9��%�l�htz>�w"Zc����4w���K6�&;�����3�Z��]��@"����_�B�+m��g�V=��D���9����l3/!9�Ex_�0��V����/����4$�0?�=�>q^>�����`{i-]�����h���`�k�3��Z��E3���"��@@X~���b��%��l�'�n�a���i��n4��|Io'~C/�-��8�' %W-LY�@u�m���� ��^���(_:[�'5=��������-%��n�4��`���b��z(<��t��%g�`a]�<r�������O�'WW<8}�/�������-��='X�|O��1
�!�D�m
zi����X�jg.�t���@c�d�z�����%���+����#�ZU��R�J��s����Im'�zo����{����:�Df�@&E�7����TQ�B�[$!�1����&��e#uA�Mk�5��5��.f1�Y�~2%�����ac#=�(��17_Ip��m|�U,q����p;h�U,6n��mv�L�� F
������7 ^��+p��WX��a��n�4�����az�/
o�*��L�PJH��dfL�����g�Y��j��d� ���|�T�{� ��������3����<>��m��oG��D�����m�����������^���&����+h
b��E�B�������k>{D����v����54"Y�D8����8�$|�7�����>���~S�SVf�������a���1p�JC���� �W�<��oS��a �Z�N��C9E�m���i�[�+�;0awD��B�#��i��3
I b �����N0
� a������cLh?��Ly���g�=J�E�0�C���\����<4�����|f���H�B:�C����������yk&���X�sO� ����?���7�N��N?yb:@��Xi'���$��VBz��Z"