�����JFIF��XX����������    $.' ",#(7),01444'9=82<.342  2!!22222222222222222222222222222222222222222222222222�����"����4���������������������������� ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������,�PG"Z_�4�˷����kjز�Z�,F+��_z�,�© �����zh6�٨�ic�fu������������������������������������#ډb���_�N��?�����������wQ���5-�~�I���8���������������������������������TK<5o�Iv-������������������k�_U_������������������������������~b�M��d��������Ӝ�U�Hh��?]��E�w��Q���k�{��_}qFW7HTՑ��Y��F�����?_�'ϔ��_�Ջt������������������������=||I �����6�έ"�����D���/[�k�9����Y�8������ds|\���Ҿp6�Ҵ���]��.����6���z<�v��@]�i%������������������������$j��~����g��J>��no����pM[me�i$[�����������s�o�ᘨ�˸ nɜG-�ĨU�ycP���3.DB�li�;���������������������hj���x����7Z^�N�h��������N3u{�:j�����x�힞��#M��&��jL P@��_���� P�������������������&��o8��������9������@Sz���6�t7#O�ߋ �����s}Yf�T������lmr����Z)'N��k�۞p�����w\�T���������������ȯ?�8`���O��i{wﭹW�[�r�� ��Q4F�׊������3m&L�=��h3�������z~��#����\�l :�F,j@�� ʱ�wQT����8�"kJO����6�֚l������������������}����R�>ډK���]��y����&����p�}b������;N�1�m�r$����|��7�>e�@���B�TM*-i�H��g�D�)� E�m�|�ؘbҗ�a���Ҿ����������������t4�����o���G��*oCN�rP���Q��@z,|?W[0���������:�n,j���WiE��W������$~/�hp\��?��{(�0���+�Y8rΟ�+����>S-S���������������VN;���}�s?.����� w��9��˟<���Mq4�Wv'������{)0�1mB����V����W[��������8�/<� �%���wT^�5���b��)iM� p�g�N�&ݝ������������VO~��q���u���9��� ����!��J27�����$����O-���! �:���%H��� ـ�������y�ΠM=t{!S�� �oK8�������t<����è��������:a��������[������ա�H���~��w��Qz`�p����o�^ ������Q��n����� �,uu�C��$ ^���,�������8�#��:�6��e�|~�����������!�3��3.�\0�����q��o�4`.|� ����y�Q�`~;�d�ׯ,��O�Zw�������`73�v�܋�<�����Ȏ�� ـ4k��5�K�a�u�=9Yd��$>x�A�&�� j0� ���vF��� Y���|�y��� ~�6�@c��1vOp��������Ig�����4��l�OD�����L����� R���c���j�_�uX�6��3?nk��Wy�f;^*B� ��@���~a�`��Eu�������+�����6�L��.ü>��}y���}_�O�6�͐�:�Yr���G�X��kG������l^w����������~㒶sy���Iu�!���� W ��X��N�7BV��O��!X�2����wvG�R�f�T#�����t�/?���%8�^�W�aT����G�cL�M���I��(J����1~�8�?aT ���]����AS�E��(��*E}� 2������#I/�׍qz��^t�̔���������b�Yz4x����t�){ OH�����+(E��A&�N�������XT��o��"�XC����'���)}�J�z�p� ����~5�}�^����+�6����w��c��Q�|�Lp�d�H��}�(�.|����k��c4^�����"�����Z?ȕ ��a<�������L�!0�39C� �Eu�����C�F�Ew�ç ;�n?�*o���B�8�bʝ���'#Rqf����M}7����]�������s2tcS{�\icTx;�\��7K���P������ʇ Z O-��~�������c>"��?��������P�����E��O�8��@�8��G��Q�g�a�Վ���󁶠��䧘��_%#r�>�����1�z�a���eb��qcP��ѵ��n���#L��� =��׀t� L�7�`�����V����A{�C:�g���e@�����w1 Xp�3�c3�ġ�������p��M"'-�@n4���fG���B3�DJ�8[Jo�ߐ���gK)ƛ��$���� �������8�3�����+���� �����6�ʻ���� ���S�kI�*KZlT _`�������?��K�����QK�d���������B`�s}�>���`������*�>��,*@J�d�oF*�����弝��O}�k��s��]��y�ߘ�������c1G�V���<=�7��7����6��q�PT��tXԀ�!9*4�4Tހ���3XΛex�46�������Y��D ����� ����BdemDa����\�_l,����G�/���֌7���Y�](�xTt^%�GE�����4�}bT����ڹ�����;��Y)���B�Q��u��>J/J ���⮶.�XԄ��j�ݳ������+E��d ���r�5�_D�����1 ���o�� �B�x�΢�#����<��W�����8���R6�@���g�M�.��� dr�D��>(otU��@�x=��~v���2� ӣ�d�oBd�����3�eO�6�㣷����������ݜ�6��6Y��Qz`����S��{���\P��~z m5{J/L��1������<�e�ͅPu���b�]�ϔ��������'�������f�b� Zpw��c`"��i���BD@:)ִ�:�]��h���v�E��w���T�l�������P����"Ju�}��وV ��J��G6��. J/�Qgl߭�e�����@�z�Zev2u����)]կ���������7x�������s�M�-<ɯ�c��r��v�����@��$�ޮ}lk���a����'����>x��O\�Z������Fu>������ck#��&:��`�$��ai�>2Δ����l���oF[h�������lE�ܺ�Π���k:)���`������� $[6�����9�����kOw�\|�����8}������ބ:��񶐕��������I�A1/���=�2[�,�!��.}gN#�u����b���� ~���������݊��}34q�����d�E��L��������c��$���"�[q�U�硬g^��%B ��z���r�p�������J�ru%v\h�����1Y�ne`������ǥ:g����pQM~�^��Xi� ��`S�:V2������9.�P���V������?B�k�� ��������AEvw%�_�9C�Q����wKekP�ؠ�\������;Io d�{ ߞo�c1eP�����\� `����E=���@K<�Y��������eڼ�J����w����{av�F�'�M�@��������������/J��+9p����|]���������Iw &`���8���&�M�hg���[�{�������Xj���%��Ӓ�������������������$��(�����ʹN�������<>�I���RY�����K2�NPlL�ɀ�)��&e��������B+ь����(������������������� � �JTx����_?EZ� }@���� 6�U���뙢ط�z��dWI��n` D����噥�[��uV��"�G&�����Ú����2�g�}&m���������������������?ċ���"����Om#�������������������������� ��{���������������������ON��"S�X���Ne��ysQ���@�������������Fn��Vg�����dX�~nj����������������������]J�<�K]:����FW���b�������62����������=��5f����JKw����bf�X������������������������55��~J �%^�������:�-�QIE��P��v�nZum� z � ~ə ���� ���ة����;�f��\v�������g�8�1��f2�������������������������4;�V���ǔ�)�������������������9���1\������������������������������c��v�/'Ƞ�w������������������$�4�R-��t����������������������������������� e�6�/�ġ �̕Ecy�J���u�B���<�W�ַ~�w[B1L۲�-JS΂�{���΃�������������������������������������������A��20�c#���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������@���� 0!1@AP"#2Q`$3V�%45a6�FRUq����� ������^7ׅ,$n��������+��F�`��2X'��0vM��p�L=�������5��8������u�p~���.�`r�����\����O��,ư�0oS ��_�M�����l���4�kv\JSd���x���SW�<��Ae�IX����������$I���w�:S���y���›R��9�Q[���,�5�;�@]�%���u�@ *ro�lbI �� ��+���%m:�͇ZV�����u�̉����θau<�fc�.����{�4Ա� �Q����*�Sm��8\ujqs]{kN���)qO�y�_*dJ�b�7���yQqI&9�ԌK!�M}�R�;�������S�T���1���i[U�ɵz�]��U)V�S6���3$K{��ߊ<�(� E]Զ[ǼENg�����'�\?#)Dkf��J���o��v���'�%ƞ�&K�u��!��b�35LX�Ϸ��63$K�a�;�9>,R��W��3�3� d�JeTYE.Mϧ��-�o�j3+y��y^�c�������VO�9NV\nd�1 ��!͕_)a�v;����թ�M�lWR1��)El��P;��yوÏ�u 3�k�5Pr6<�⒲l�!˞*��u־�n�!�l:����UNW ��%��Chx8vL'��X�@��*��)���̮��ˍ��� ����D-M�+J�U�kvK����+�x8��cY������?�Ԡ��~3mo��|�u@[XeY�C�\Kp�x8�oC�C�&����N�~3-H���� ��MX�s�u<`���~"WL��$8ξ��3���a�)|:@�m�\���^�`�@ҷ)�5p+��6���p�%i)P M���ngc�����#0Aruz���RL+xSS?���ʮ}()#�t��mˇ!��0}}y����<�e� �-ή�Ԩ��X������ MF���ԙ~l L.3���}�V뽺�v������멬��Nl�)�2����^�Iq��a��M��qG��T�����c3#������3U�Ǎ���}��לS�|qa��ڃ�+���-��2�f����/��bz��ڐ�� �ݼ[2�ç����k�X�2�* �Z�d���J�G����M*9W���s{��w���T��x��y,�in�O�v��]���n����P�$��JB@=4�OTI�n��e�22a\����q�d���%�$��(���:���: /*�K[PR�fr\nڙdN���F�n�$�4��[�� U�zƶ����� �mʋ���,�ao�u 3�z� �x��Kn����\[��VFmbE;�_U��&V�Gg�]L�۪&#n%�$ɯ��dG���D�TI=�%+AB�Ru#��b4�1�»x�cs�YzڙJG��f��Il���d�eF'T� iA��T���uC�$����Y��H?����[!G`}���ͪ� �纤Hv\������j�Ex�K���!���OiƸ�Yj�+u-<���'q����uN�*�r\��+�]���<�wOZ.fp�ێ��,-*)V?j-kÊ#�`�r��dV����(�ݽBk�����G�ƛk�QmUڗe��Z���f}|����8�8��a���i��3'J�����~G_�^���d�8w������ R�`(�~�.��u���l�s+g�bv���W���lGc}��u���afE~1�Ue������Z�0�8�=e�� f@/�jqEKQQ�J���oN��J���W5~M>$6�Lt�;$ʳ{���^��6�{����v6���ķܰg�V�cnn �~z�x�«�,2�u�?cE+Ș�H؎�%�Za�)���X>uW�Tz�Nyo����s���FQƤ��$��*�&�LLXL)�1�" L��eO��ɟ�9=���:t��Z���c��Ž���Y?�ӭV�wv�~,Y��r�ۗ�|�y��GaF�����C�����.�+� ���v1���fήJ�����]�S��T��B��n5sW}y�$��~z�'�c ��8 ��� ,! �p��VN�S��N�N�q��y8z˱�A��4��*��'������2n<�s���^ǧ˭P�Jޮɏ�U�G�L�J�*#��<�V��t7�8����TĜ>��i}K%,���)[��z�21z ?�N�i�n1?T�I�R#��m-�����������������1����lA�`��fT5+��ܐ�c�q՝��ʐ��,���3�f2U�եmab��#ŠdQ�y>\��)�SLY����w#��.���ʑ�f��� ,"+�w�~�N�'�c�O�3F�������N<���)j��&��,-� �љ���֊�_�zS���TǦ����w�>��?�������n��U仆�V���e�����0���$�C�d���rP �m�׈e�Xm�Vu� �L��.�bֹ��� �[Դaզ���*��\y�8�Է:�Ez\�0�Kq�C b��̘��cө���Q��=0Y��s�N��S.����3.���O�o:���#���v7�[#߫ ��5�܎�L���Er4���9n��COWlG�^��0k�%<���ZB���aB_���������'=��{i�v�l�$�uC���mƎҝ{�c㱼�y]���W�i ��ߧc��m�H� m�"�"�����;Y�ߝ�Z�Ǔ�����:S#��|}�y�,/k�Ld� TA�(�AI$+I3��;Y*���Z��}|��ӧO��d�v��..#:n��f>�>���ȶI�TX��� 8��y����"d�R�|�)0���=���n4��6ⲑ�+��r<�O�܂~zh�z����7ܓ�HH�Ga롏���nCo�>������a ���~]���R���̲c?�6(�q�;5%� |�uj�~z8R�=X��I�V=�|{v�Gj\gc��q����z�؋%M�ߍ����1y��#��@f^���^�>N������#x#۹��6�Y~�?�dfPO��{��P�4��V��u1E1J �*|���%����JN��`eWu�zk M6���q t[�� ��g�G���v��WIG��u_ft����5�j�"�Y�:T��ɐ���*�;� e5���4����q$C��2d�}���� _S�L#m�Yp��O�.�C�;��c����Hi#֩%+) �Ӎ��ƲV���SYź��g |���tj��3�8���r|���V��1#;.SQ�A[���S������#���`n�+���$��$�I �P\[�@�s��(�ED�z���P��])8�G#��0B��[ى��X�II�q<��9�~[Z멜�Z�⊔IWU&A>�P~�#��dp<�?����7���c��'~���5 ��+$���lx@�M�dm��n<=e�dyX��?{�|Aef ,|n3�<~z�ƃ�uۧ�����P��Y,�ӥQ�*g�#먙R�\���;T��i,��[9Qi歉����c>]9�� ��"�c��P�� �Md?٥��If�ت�u��k��/����F��9�c*9��Ǎ:�ØF���z�n*�@|I�ށ9����N3{'��[�'ͬ�Ҳ4��#}��!�V� Fu��,�,mTIk���v C�7v���B�6k�T9��1�*l� '~��ƞF��lU��'�M ����][ΩũJ_�{�i�I�n��$����L�� j��O�dx�����kza۪��#�E��Cl����x˘�o�����V���ɞ�ljr��)�/,�߬h�L��#��^��L�ф�,íMƁe�̩�NB�L�����iL����q�}��(��q��6IçJ$�W�E$��:������=#����(�K�B����zђ <��K(�N�۫K�w��^O{!����)��H���>x�������lx�?>Պ�+�>�W���,Ly!_�D���Ō�l���Q�!�[ �S����J��1��Ɛ�Y}��b,+�Lo�x�ɓ)����=�y�oh�@�꥟/��I��ѭ=��P�y9��� �ۍYӘ�e+�p�Jnϱ?V\SO%�(�t� ���=?MR�[Ș�����d�/ ��n�l��B�7j� ��!�;ӥ�/�[-���A�>��dN�sLj ��,ɪv��=1c�.SQ�O3�U���ƀ�ܽ�E����������̻��9G�ϷD�7(�}��Ävӌ\��y�_0[w ���<΍>����a_��[0+�L��F.�޺��f�>oN�T����q;���y\��bՃ��y�jH�<|q-eɏ�_?_9+P���Hp$�����[ux�K w�Mw��N�ی'$Y2�=��q���KB��P��~�������Yul:�[<����F1�2�O���5=d����]Y�sw:���Ϯ���E��j,_Q��X��z`H1,#II ��d�wr��P˂@�ZJV����y$�\y�{}��^~���[:N����ߌ�U�������O��d�����ؾe��${p>G��3c���Ė�lʌ�� ת��[��`ϱ�-W����dg�I��ig2��� ��}s ��ؤ(%#sS@���~���3�X�nRG�~\jc3�v��ӍL��M[JB�T��s3}��j�Nʖ��W����;7���ç?=X�F=-�=����q�ߚ���#���='�c��7���ڑW�I(O+=:uxq�������������e2�zi+�kuG�R��������0�&e�n���iT^J����~\jy���p'dtG��s����O��3����9* �b#Ɋ�� p������[Bws�T�>d4�ۧs���nv�n���U���_�~,�v����ƜJ1��s�� �QIz���)�(lv8M���U=�;����56��G���s#�K���MP�=��LvyGd��}�VwWBF�'�à �?MH�U�g2�� ����!�p�7Q��j��ڴ����=��j�u��� Jn�A s���uM������e��Ɔ�Ҕ�!)�'��8Ϣ�ٔ���ޝ(��Vp���צ֖d=�IC�J�Ǡ{q������kԭ�߸���i��@K����u�|�p=..�*+����x�����z[Aqġ#s2a�Ɗ���RR�)*HRsi�~�a &f��M��P����-K�L@��Z��Xy�'x�{}��Zm+���:�)�) IJ�-i�u���� ���ܒH��'��L(7�y�GӜq���� j��� 6ߌg1�g�o���,kر���tY�?W,���p���e���f�OQS��!K�۟cҒA�|ս�j�>��=⬒��˧L[�� �߿2JaB~R��u�:��Q�] �0H~���]�7��Ƽ�I���(�}��cq '�ήET���q�?f�ab���ӥvr� �)o��-Q��_'����ᴎo��K������;��V���o��%���~OK ����*��b�f:���-ťIR��`B�5!RB@���ï�� �u �̯e\�_U�_������� g�ES��3��������QT��a�����x����U<~�c?�*�#]�MW,[8O�a�x��]�1bC|踤�P��lw5V%�)�{t�<��d��5���0i�XSU��m:��Z�┵�i�"��1�^B�-��P�hJ��&)O��*�D��c�W��vM��)����}���P��ܗ-q����\mmζZ-l@�}��a��E�6��F�@��&Sg@���ݚ�M����� ȹ 4����#p�\H����dYDo�H���"��\��..R�B�H�z_�/5˘����6��KhJR��P�mƶi�m���3��,#c�co��q�a)*P�t����R�m�k�7x�D�E�\Y�閣_X�<���~�)���c[[�BP����6�Yq���S��0����%_����;��Àv�~�| VS؇ ��'O0��F0��\���U�-�d@�����7�SJ*z��3n��y��P����O����������m�~�P�3|Y��ʉr#�C�<�G~�.,! ���bqx���h~0=��!ǫ�jy����l��O,�[B��~��|9��ٱ����Xly�#�i�B��g%�S��������tˋ���e���ې��\[d�t)��.+u�|1 ������#�~Oj����hS�%��i.�~X���I�H�m��0n���c�1uE�q��cF�RF�o���7� �O�ꮧ� ���ۛ{��ʛi5�rw?׌#Qn�TW��~?y$��m\�\o����%W� ?=>S�N@�� �Ʈ���R����N�)�r"C�:��:����� �����#��qb��Y�. �6[��2K����2u�Ǧ�HYR��Q�MV��� �G�$��Q+.>�����nNH��q�^��� ����q��mM��V��D�+�-�#*�U�̒ ���p욳��u:�������IB���m����PV@O���r[b= �� ��1U�E��_Nm�yKbN�O���U�}�the�`�|6֮P>�\2�P�V���I�D�i�P�O;�9�r�mAHG�W�S]��J*�_�G��+kP�2����Ka�Z���H�'K�x�W�MZ%�O�YD�Rc+o��?�q��Ghm��d�S�oh�\�D�|:W������UA�Qc yT�q��������~^�H��/��#p�CZ���T�I�1�ӏT����4��"�ČZ�����}��`w�#�*,ʹ�� ��0�i��課�Om�*�da��^gJ݅{���l�e9uF#T�ֲ��̲�ٞC"�q���ߍ ոޑ�o#�XZTp����@ o�8��(jd��xw�]�,f���`~��|,s��^����f�1���t��|��m�򸄭/ctr��5s��7�9Q�4�H1꠲BB@�l9@���C�����+�wp�xu�£Yc�9��?`@#�o�mH�s2��)�=��2�.�l����jg�9$�Y�S�%*L������R�Y������7Z���,*=�䷘$�������arm�o�ϰ���UW.|�r�uf����IGw�t����Zwo��~5 ��YյhO+=8fF�)�W�7�L9lM�̘·Y���֘YLf�큹�pRF���99.A �"wz��=E\Z���'a� 2��Ǚ�#;�'}�G���*��l��^"q��+2FQ� hj��kŦ��${���ޮ-�T�٭cf�|�3#~�RJ����t��$b�(R��(����r���dx� >U b�&9,>���%E\� Ά�e�$��'�q't��*�א���ެ�b��-|d���SB�O�O��$�R+�H�)�܎�K��1m`;�J�2�Y~9��O�g8=vqD`K[�F)k�[���1m޼c��n���]s�k�z$@��)!I �x՝"v��9=�ZA=`Ɠi �:�E��)`�7��vI��}d�YI�_ �o�:ob���o ���3Q��&D&�2=�� �Ά��;>�h����y.*ⅥS������Ӭ�+q&����j|UƧ�����}���J0��WW< ۋS�)jQR�j���Ư��rN)�Gű�4Ѷ(�S)Ǣ�8��i��W52���No˓� ۍ%�5brOn�L�;�n��\G����=�^U�dI���8$�&���h��'���+�(������cȁ߫k�l��S^���cƗjԌE�ꭔ��gF���Ȓ��@���}O���*;e�v�WV���YJ\�]X'5��ղ�k�F��b 6R�o՜m��i N�i�����>J����?��lPm�U��}>_Z&�KK��q�r��I�D�Չ~�q�3fL�:S�e>���E���-G���{L�6p�e,8��������QI��h��a�Xa��U�A'���ʂ���s�+טIjP�-��y�8ۈZ?J$��W�P� ��R�s�]��|�l(�ԓ��sƊi��o(��S0���Y� 8�T97.�����WiL��c�~�dxc�E|�2!�X�K�Ƙਫ਼�$((�6�~|d9u+�qd�^3�89��Y�6L�.I�����?���iI�q���9�)O/뚅����O���X��X�V��ZF[�یgQ�L��K1���RҖr@v�#��X�l��F���Нy�S�8�7�kF!A��sM���^rkp�jP�DyS$N���q���nxҍ!U�f�!eh�i�2�m����`�Y�I�9r�6� �TF���C}/�y�^���Η���5d�'��9A-��J��>{�_l+�`��A���[�'��յ�ϛ#w:݅�%��X�}�&�PSt�Q�"�-��\縵�/����$Ɨh�Xb�*�y��BS����;W�ջ_mc�����vt?2}1�;qS�d�d~u:2k5�2�R�~�z+|HE!)�Ǟl��7`��0�<�,�2*���Hl-��x�^����'_TV�gZA�'j� ^�2Ϊ��N7t�����?w�� �x1��f��Iz�C-Ȗ��K�^q�;���-W�DvT�7��8�Z�������� hK�(P:��Q- �8�n�Z���܃e貾�<�1�YT<�,�����"�6{�/ �?�͟��|1�:�#g��W�>$����d��J��d�B���=��jf[��%rE^��il:��B���x���Sּ�1հ��,�=��*�7 fcG��#q� �eh?��2�7�����,�!7x��6�n�LC�4x��},Geǝ�tC.��vS �F�43��zz\��;QYC,6����~;RYS/6���|2���5���v��T��i����������mlv��������&� �nRh^ejR�LG�f���? �ۉҬܦƩ��|��Ȱ����>3����!v��i�ʯ�>�v��オ�X3e���_1z�Kȗ\<������!�8���V��]��?b�k41�Re��T�q��mz��TiOʦ�Z��Xq���L������q"+���2ۨ��8}�&N7XU7Ap�d�X��~�׿��&4e�o�F��� �H�����O���č�c�� 懴�6���͉��+)��v;j��ݷ�� �UV�� i��� j���Y9GdÒJ1��詞�����V?h��l�����l�cGs�ځ�������y�Ac������\V3�? �� ܙg�>qH�S,�E�W�[�㺨�uch�⍸�O�}���a��>�q�6�n6�����N6�q��������N� ���! 1AQaq�0@����"2BRb�#Pr���3C`��Scst���$4D���%Td���� ?�����N����a��3��m���C���w��������xA�m�q�m����m������$����4n淿t'��C"w��zU=D�\R+w�p+Y�T�&�պ@��ƃ��3ޯ?�Aﶂ��aŘ���@-�����Q�=���9D��ռ�ѻ@��M�V��P��܅�G5�f�Y<�u=,EC)�<�Fy'�"�&�չ�X~f��l�KԆV��?�� �W�N����=(� �;���{�r����ٌ�Y���h{�١������jW����P���Tc�����X�K�r��}���w�R��%��?���E��m�� �Y�q|����\lEE4����r���}�lsI�Y������f�$�=�d�yO����p�����yBj8jU�o�/�S��?�U��*������ˍ�0�������u�q�m [�?f����a�� )Q�>����6#������� ?����0UQ����,IX���(6ڵ[�DI�MNލ�c&���υ�j\��X�R|,4��� j������T�hA�e��^���d���b<����n�� �즇�=!���3�^�`j�h�ȓr��jẕ�c�,ٞX����-����a�ﶔ���#�$��]w�O��Ӫ�1y%��L�Y<�wg#�ǝ�̗`�x�xa�t�w��»1���o7o5��>�m뭛C���Uƃߜ}�C���y1Xνm�F8�jI���]����H���ۺиE@I�i;r�8ӭ�����V�F�Շ| ��&?�3|x�B�MuS�Ge�=Ӕ�#BE5G������Y!z��_e��q�р/W>|-�Ci߇�t�1ޯќd�R3�u��g�=0 5��[?�#͏��q�cf���H��{ ?u�=?�?ǯ���}Z��z���hmΔ�BFTW�����<�q��(v� ��!��z���iW]*�J�V�z��gX֧A�q�&��/w���u�gYӘa���; �i=����g:��?2�dž6�ى�k�4�>�Pxs����}������G�9���3 ���)gG�R<>r h�$��'nc�h�P��Bj��J�ҧH� -��N1���N��?��~��}-q!=��_2hc�M��l�vY%UE�@|�v����M2�.Y[|y�"Eï��K�ZF,�ɯ?,q�?v�M 80jx�"�;�9vk�����+ ֧�� �ȺU��?�%�vcV��mA�6��Qg^M�����A}�3�nl� QRN�l8�kkn�'�����(��M�7m9و�q���%ޟ���*h$Zk"��$�9��: �?U8�Sl��,,|ɒ��xH(ѷ����Gn�/Q�4�P��G�%��Ա8�N��!� �&�7�;���eKM7�4��9R/%����l�c>�x;������>��C�:�����t��h?aKX�bhe�ᜋ^�$�Iհ �hr7%F$�E��Fd���t��5���+�(M6�t����Ü�UU|zW�=a�Ts�Tg������dqP�Q����b'�m���1{|Y����X�N��b �P~��F^F:����k6�"�j!�� �I�r�`��1&�-$�Bevk:y���#y�w��I0��x��=D�4��tU���P�ZH��ڠ底taP��6����b>�xa�����Q�#� WeF��ŮNj�p�J* mQ�N�����*I�-*�ȩ�F�g�3 �5��V�ʊ�ɮ�a��5F���O@{���NX��?����H�]3��1�Ri_u��������ѕ�� ����0��� F��~��:60�p�͈�S��qX#a�5>���`�o&+�<2�D����: �������ڝ�$�nP���*)�N�|y�Ej�F�5ټ�e���ihy�Z �>���k�bH�a�v��h�-#���!�Po=@k̆IEN��@��}Ll?j�O������߭�ʞ���Q|A07x���wt!xf���I2?Z��<ץ�T���cU�j��]���陎Ltl �}5�ϓ��$�,��O�mˊ�;�@O��jE��j(�ا,��LX���LO���Ц�90�O �.����a��nA���7������j4 ��W��_ٓ���zW�jcB������y՗+EM�)d���N�g6�y1_x��p�$Lv�:��9�"z��p���ʙ$��^��JԼ*�ϭ����o���=x�Lj�6�J��u82�A�H�3$�ٕ@�=Vv�]�'�qEz�;I˼��)��=��ɯ���x �/�W(V���p�����$ �m�������u�����񶤑Oqˎ�T����r��㠚x�sr�GC��byp�G��1ߠ�w e�8�$⿄����/�M{*}��W�]˷.�CK\�ުx���/$�WP�w���r� |i���&�}�{�X� �>��$-��l���?-z���g����lΆ���(F���h�vS*���b���߲ڡn,|)mrH[���a�3�ר�[1��3o_�U�3�TC�$��(�=�)0�kgP���� ��u�^=��4 �WYCҸ:��vQ�ר�X�à��tk�m,�t*��^�,�}D*�� �"(�I��9R����>`�`��[~Q]�#af��i6l��8���6�:,s�s�N6�j"�A4���IuQ��6E,�GnH��zS�HO�uk�5$�I�4��ؤ�Q9�@��C����wp��BGv[]�u�Ov����0I4���\��y�����Q�Ѹ��~>Z��8�T��a��q�ޣ;z��a���/��S��I:�ܫ_�|������>=Z����8:�S��U�I�J��"IY���8%b8���H��:�QO�6�;7�I�S��J��ҌAά3��>c���E+&jf$eC+�z�;��V����� �r���ʺ������my�e���aQ�f&��6�ND���.:��NT�vm�<- u���ǝ\MvZY�N�NT��-A�>jr!S��n�O 1�3�Ns�%�3D@���`������ܟ 1�^c<���� �a�ɽ�̲�Xë#�w�|y�cW�=�9I*H8�p�^(4���՗�k��arOcW�tO�\�ƍR��8����'�K���I�Q�����?5�>[�}��yU�ײ -h��=��% q�ThG�2�)���"ו3]�!kB��*p�FDl�A���,�eEi�H�f�Ps�����5�H:�Փ~�H�0Dت�D�I����h�F3�������c��2���E��9�H��5�zԑ�ʚ�i�X�=:m�xg�hd(�v����׊�9iS��O��d@0ڽ���:�p�5�h-��t�&���X�q�ӕ,��ie�|���7A�2���O%P��E��htj��Y1��w�Ѓ!����  ���� ࢽ��My�7�\�a�@�ţ�J ��4�Ȼ�F�@o�̒?4�wx��)��]�P��~�����u�����5�����7X ��9��^ܩ�U;Iꭆ 5 �������eK2�7(�{|��Y׎ �V��\"���Z�1� Z�����}��(�Ǝ"�1S���_�vE30>���p;� ΝD��%x�W�?W?v����o�^V�i�d��r[��/&>�~`�9Wh��y�;���R���� ;;ɮT��?����r$�g1�K����A��C��c��K��l:�'��3 c�ﳯ*"t8�~l��)���m��+U,z��`(��>yJ�?����h>��]��v��ЍG*�{`��;y]��I�T� ;c��NU�fo¾h���/$���|NS���1�S�"�H��V���T���4��uhǜ�]�v;���5�͠x��'C\�SBpl���h}�N����� A�Bx���%��ޭ�l��/����T��w�ʽ]D�=����K���ž�r㻠l4�S�O?=�k �M:� ��c�C�a�#ha���)�ѐxc�s���gP�iG���{+���x���Q���I= �� z��ԫ+ �8"�k�ñ�j=|����c ��y��CF��/���*9ж�h{ �?4�o� ��k�m�Q�N�x��;�Y��4膚�a�w?�6�>�e]�����Q�r�:����g�,i"�����ԩA��*M�<�G��b�if��l^M��5�� �Ҩ�{����6J��ZJ�����P�*�����Y���ݛu�_4�9�I8�7���������,^ToR���m4�H��?�N�S�ѕw��/S��甍�@�9H�S�T��t�ƻ���ʒU��*{Xs�@����f������֒Li�K{H�w^���������Ϥm�tq���s� ���ք��f:��o~s��g�r��ט� �S�ѱC�e]�x���a��) ���(b-$(�j>�7q�B?ӕ�F��hV25r[7 Y� }L�R��}����*sg+��x�r�2�U=�*'WS��ZDW]�WǞ�<��叓���{�$�9Ou4��y�90-�1�'*D`�c�^o?(�9��u���ݐ��'PI&� f�Jݮ�������:wS����jfP1F:X �H�9dԯ����˝[�_54 �}*;@�ܨ�� ð�yn�T���?�ןd�#���4rG�ͨ��H�1�|-#���Mr�S3��G�3�����)�.᧏3v�z֑��r����$G"�`j �1t��x0<Ɔ�Wh6�y�6��,œ�Ga��gA����y��b��)���h�D��ß�_�m��ü �gG;��e�v��ݝ�nQ� ��C����-�*��o���y�a��M��I�>�<���]obD��"�:���G�A��-\%LT�8���c�)��+y76���o�Q�#*{�(F�⽕�y����=���rW�\p���۩�c���A���^e6��K������ʐ�cVf5$�'->���ՉN"���F�"�UQ@�f��Gb~��#�&�M=��8�ט�JNu9��D��[̤�s�o�~������� G��9T�tW^g5y$b��Y'��س�Ǵ�=��U-2 #�MC�t(�i� �lj�@Q 5�̣i�*�O����s�x�K�f��}\��M{E�V�{�υ��Ƈ�����);�H����I��fe�Lȣr�2��>��W��I�Ȃ6������i��k�� �5�YOxȺ����>��Y�f5'��|��H+��98pj�n�.O�y�������jY��~��i�w'������l�;�s�2��Y��:'lg�ꥴ)o#'Sa�a�K��Z� �m��}�`169�n���"���x��I ��*+� }F<��cГ���F�P�������ֹ*�PqX�x۩��,� ��N�� �4<-����%����:��7����W���u�`����� $�?�I��&����o��o��`v�>��P��"��l���4��5'�Z�gE���8���?��[�X�7(��.Q�-��*���ތL@̲����v��.5���[��=�t\+�CNܛ��,g�SQnH����}*F�G16���&:�t��4ُ"A��̣��$�b �|����#rs��a�����T�� ]�<�j��B�S�('$�ɻ� �wP;�/�n��?�ݜ��x�F��yUn�~mL*-�������Xf�wd^�a�}��f�,=t�׵i�.2/wpN�Ep8�OР���•��R�FJ� 55TZ��T �ɭ�<��]��/�0�r�@�f��V��V����Nz�G��^���7hZi����k��3�,kN�e|�vg�1{9]_i��X5y7� 8e]�U����'�-2,���e"����]ot�I��Y_��n�(JҼ��1�O ]bXc���Nu�No��pS���Q_���_�?i�~�x h5d'�(qw52] ��'ޤ�q��o1�R!���`ywy�A4u���h<קy���\[~�4�\ X�Wt/� 6�����n�F�a8��f���z �3$�t(���q��q�x��^�XWeN'p<-v�!�{�(>ӽDP7��ո0�y)�e$ٕv�Ih'Q�EA�m*�H��RI��=:��� ���4牢) �%_iN�ݧ�l]� �Nt���G��H�L��� ɱ�g<���1V�,�J~�ٹ�"K��Q�� 9�HS�9�?@��k����r�;we݁�]I�!{ �@�G�[�"��`���J:�n]�{�cA�E����V��ʆ���#��U9�6����j�#Y�m\��q�e4h�B�7��C�������d<�?J����1g:ٳ���=Y���D�p�ц� ׈ǔ��1�]26؜oS�'��9�V�FVu�P�h�9�xc�oq�X��p�o�5��Ա5$�9W�V(�[Ak�aY錎qf;�'�[�|���b�6�Ck��)��#a#a˙��8���=äh�4��2��C��4tm^ �n'c����]GQ$[Wҿ��i���vN�{Fu ��1�gx��1┷���N�m��{j-,��x�� Ūm�ЧS�[�s���Gna���䑴�� x�p 8<������97�Q���ϴ�v�aϚG��Rt�Һ׈�f^\r��WH�JU�7Z���y)�vg=����n��4�_)y��D'y�6�]�c�5̪��\� �PF�k����&�c;��cq�$~T�7j ���nç]�<�g ":�to�t}�159�<�/�8������m�b�K#g'I'.W������6��I/��>v��\�MN��g���m�A�yQL�4u�Lj�j9��#44�t��l^�}L����n��R��!��t��±]��r��h6ٍ>�yҏ�N��fU�� ���� Fm@�8}�/u��jb9������he:A�y�ծw��GpΧh�5����l}�3p468��)U��d��c����;Us/�֔�YX�1�O2��uq�s��`hwg�r~�{ R��mhN��؎*q 42�*th��>�#���E����#��Hv�O����q�}������6�e��\�,Wk�#���X��b>��p}�դ��3���T5��†��6��[��@��P�y*n��|'f�֧>�lư΂�̺����SU�'*�q�p�_S�����M�� '��c�6������m�� ySʨ;M��r���Ƌ�m�Kxo,���Gm�P��A�G�:��i��w�9�}M(�^�V��$ǒ�ѽ�9���|���� �a����J�SQ�a���r�B;����}���ٻ֢�2�%U���c�#�g���N�a�ݕ�'�v�[�OY'��3L�3�;,p�]@�S��{ls��X�'���c�jw��k'a�.��}�}&�� �dP�*�bK=ɍ!����;3n�gΊU�ߴmt�'*{,=SzfD� A��ko~�G�aoq�_mi}#�m�������P�Xhύ�����mxǍ�΂���巿zf��Q���c���|kc�����?���W��Y�$���_Lv����l߶��c���`?����l�j�ݲˏ!V��6����U�Ђ(A���4y)H���p�Z_�x��>���e���R��$�/�`^'3qˏ�-&Q�=?��CFVR �D�fV�9��{�8g�������n�h�(P"��6�[�D���< E�����~0<@�`�G�6����Hг�cc�� �c�K.5��D��d�B���`?�XQ��2��ٿyqo&+�1^� DW�0�ꊩ���G�#��Q�nL3��c���������/��x ��1�1�[y�x�პCW��C�c�UĨ80�m�e�4.{�m��u���I=��f�����0QRls9���f���������9���~f�����Ǩ��a�"@�8���ȁ�Q����#c�ic������G��$���G���r/$W�(��W���V�"��m�7�[m�A�m����bo��D� j����۳� l���^�k�h׽����� ��#� iXn�v��eT�k�a�^Y�4�BN���ĕ���0������� !01@Q"2AaPq3BR�������?�����@4�Q�����T3,���㺠�W�[=JK�Ϟ���2�r^7��vc�:�9 �E�ߴ�w�S#d���Ix��u��:��Hp��9E!�� V 2;73|F��9Y���*ʬ�F��D����u&���y؟��^EA��A��(ɩ���^��GV:ݜDy�`��Jr29ܾ�㝉��[���E;Fzx��YG��U�e�Y�C���� ����v-tx����I�sם�Ę�q��Eb�+P\ :>�i�C'�;�����k|z�رn�y]�#ǿb��Q��������w�����(�r|ӹs��[�D��2v-%��@;�8<a���[\o[ϧw��I!��*0�krs)�[�J9^��ʜ��p1)� "��/_>��o��<1����A�E�y^�C��`�x1'ܣn�p��s`l���fQ��):�l����b>�Me�jH^?�kl3(�z:���1ŠK&?Q�~�{�ٺ�h�y���/�[��V�|6��}�KbX����mn[-��7�5q�94�������dm���c^���h� X��5��<�eޘ>G���-�}�دB�ޟ� ��|�rt�M��V+�]�c?�-#ڛ��^ǂ}���Lkr���O��u�>�-D�ry� D?:ޞ�U��ǜ�7�V��?瓮�"�#���r��չģVR;�n���/_� ؉v�ݶe5d�b9��/O��009�G���5n�W����JpA�*�r9�>�1��.[t���s�F���nQ� V 77R�]�ɫ8����_0<՜�IF�u(v��4��F�k�3��E)��N:��yڮe��P�`�1}�$WS��J�SQ�N�j��ٺ��޵�#l���ј(�5=��5�lǏmoW�v-�1����v,W�mn��߀$x�<����v�j(����c]��@#��1������Ǔ���o'��u+����;G�#�޸��v-lη��/(`i⣍Pm^����ԯ̾9Z��F��������n��1��� ��]�[��)�'�������:�֪�W��FC����� �B9،!?���]��V��A�Վ�M��b�w��G F>_DȬ0¤�#�QR�[V��kz���m�w�"��9ZG�7'[��=�Q����j8R?�zf�\a�=��O�U����*oB�A�|G���2�54 �p��.w7� �� ���&������ξxGHp� B%��$g�����t�Џ򤵍z���HN�u�Я�-�'4��0���;_���3������� !01"@AQa2Pq#3BR�������?����ʩca��en��^��8���<�u#��m*08r��y�N"�<�Ѳ0��@\�p��� �����Kv�D��J8�Fҽ� �f�Y��-m�ybX�NP����}�!*8t(�OqѢ��Q�wW�K��ZD��Δ^e��!� ��B�K��p~�����e*l}z#9ң�k���q#�Ft�o��S�R����-�w�!�S���Ӥß|M�l޶V��!eˈ�8Y���c�ЮM2��tk���� ������J�fS����Ö*i/2�����n]�k�\���|4yX�8��U�P.���Ы[���l��@"�t�<������5�lF���vU�����W��W��;�b�cД^6[#7@vU�xgZv��F�6��Q,K�v��� �+Ъ��n��Ǣ��Ft���8��0��c�@�!�Zq s�v�t�;#](B��-�nῃ~���3g������5�J�%���O������n�kB�ĺ�.r��+���#�N$?�q�/�s�6��p��a����a��J/��M�8��6�ܰ"�*������ɗud"\w���aT(����[��F��U՛����RT�b���n�*��6���O��SJ�.�ij<�v�MT��R\c��5l�sZB>F��<7�;EA��{��E���Ö��1U/�#��d1�a�n.1ě����0�ʾR�h��|�R��Ao�3�m3 ��%�� ���28Q�� ��y��φ���H�To�7�lW>����#i`�q���c����a��� �m,B�-j����݋�'mR1Ήt�>��V��p���s�0IbI�C.���1R�ea�����]H�6�����������4B>��o��](��$B���m�����a�!=���?�B� K�Ǿ+�Ծ"�n���K��*��+��[T#�{�E�J�S����Q�����s�5�:�U�\wĐ�f�3����܆&�)�����I���Ԇw��E T�lrTf6Q|R�h:��[K�� �z��c֧�G�C��%\��_�a��84��HcO�bi��ؖV��7H �)*ģK~Xhչ0��4?�0��� �E<���}3���#���u�?�� ��|g�S�6ꊤ�|�I#Hڛ� �ա��w�X��9��7���Ŀ%�SL��y6č��|�F�a 8���b���$�sק�h���b9RAu7�˨p�Č�_\*w��묦��F ����4D~�f����|(�"m���NK��i�S�>�$d7SlA��/�²����SL��|6N�}���S�˯���g��]6��; �#�.��<���q'Q�1|KQ$�����񛩶"�$r�b:���N8�w@��8$�� �AjfG|~�9F ���Y��ʺ��Bwؒ������M:I岎�G��`s�YV5����6��A �b:�W���G�q%l�����F��H���7�������Fsv7���k�� 403WebShell
403Webshell
Server IP : 84.32.84.52  /  Your IP : 216.73.216.150
Web Server : LiteSpeed
System : Linux in-mum-web1874.main-hosting.eu 5.14.0-570.21.1.el9_6.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Jun 11 07:22:35 EDT 2025 x86_64
User : u862839997 ( 862839997)
PHP Version : 8.2.30
Disable Function : system, exec, shell_exec, passthru, mysql_list_dbs, ini_alter, dl, symlink, link, chgrp, leak, popen, apache_child_terminate, virtual, mb_send_mail
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /opt/gsutil/gslib/tests/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /opt/gsutil/gslib/tests/__pycache__/util.cpython-39.pyc
a

+(Wg	t�@s�ddlmZddlmZddlmZddlmZddlmZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlZddlZddlZddlZddlZddlZddlmZddlmZddlZddlZddlZdd	lmZdd
lmZddl Z ddl!m"Z"ddl!m#Z#dd
l$m%Z%ddl&m'Z(ddl)m*Z*ddl+m,Z,m-Z-ddl.m/Z/ddl0m1Z1ddl2m3Z3ddl4m5Z5e3�sddl6Z6ddl7Z7dd�Z8dd�Z9dd�Z:dd�Z;e*�<�e=e*j>d�Z?e
�@�ZAe%dd��ZBe%dd��ZCe%d d��ZDe%d!d��ZEd�d#d$�ZFd�d%d&�ZGd�d'd(�ZHd)ZIe1eI�ZJd*ZKe1eK�ZLd+ZMe1eM�ZNd,ZOe1eO�ZPd-ZQd.ZRd/ZSd0ZTd1ZUd2ZVd3ZWd4ZXd5ZYd6ZZd7Z[d8Z\d9Z]d:Z^d;Z_d<Z`d=Zad>Zbd>Zcd"Zdd"Zed?Zfd@ZgdAZhdBZidCZjdDZkGdEdF�dFel�ZmemjnfdGdH�ZodIdJ�ZpdKdL�Zqejr�sdMdNd��o
ejr�sdMdOd�Ztejr�sdMdPdQ��udR�Zve-�Zwejr�sdMdSd�duZxejr�sdMdTd�duZyejr�sdUdVdW��z�dXkZ{dYdZ�Z|d[d\�Z}e}�Z~d]d^�Zd_d`�Z�dadb�Z�Gdcdd�dde j��Z�e��Z�Gdedf�dfe j��Z�dgZ�dhdi�Z�djdk�Z�dldm�Z�dndo�Z�dpdq�Z�edrds��Z�ed�dtdu��Z�edvdw��Z�edxdy��Z�dzd{�Z�d|d}�Z�d~d�Z�ed�d���Z�d�d��Z�d�d��Z�Gd�d��d�el�Z�Gd�d��d�el�Z�Gd�d��d�el�Z�Gd�d��d�e��Z�dS)��)�absolute_import)�print_function)�division)�unicode_literals)�contextmanagerN)�urllib)�	cStringIO)�KmsApi)�PopulateProjectId)�ResumableDownloadException)�ResumableUploadException)�LazyWrapper)�
posix_util)�UsingCrcmodExtension�HasUserSpecifiedGsHost)�UTF8)�#Base64Sha256FromBase64EncryptionKey)�
IS_WINDOWS)�MakeHumanReadablecCs�tdd�t��D��}d}|dkrx||vr4|d7}qzt�|�|d7}Wqty`|YStytYqxYq0qtd��dS)NcSsg|]
}|j�qS�)�gr_gid)�.0�grouprr�/opt/gsutil/gslib/tests/util.py�
<listcomp>B�z!GetInvalidGid.<locals>.<listcomp>i�lrT�zUnable to generate GID for )�sorted�grp�getgrall�getgrgid�KeyError�
OverflowError�	Exception)Zall_gid�gidrrr�
GetInvalidGid@s
r%cs6t��t�}t|�dkr�S�fdd�t|�D�dS)Nrcsg|]}|�kr|�qSrr�r�g�Zprimary_gidrrrgrz$GetNonPrimaryGid.<locals>.<listcomp>r)�
GetPrimaryGid�
GetUserGroups�len�list)Zuser_groupsrr(r�GetNonPrimaryGid\s
r-cCst��S�N)�os�getgidrrrrr)isr)cCstt�gdd�t��D��S)NcSsg|]}t�|jvr|j�qSr)�	USER_NAME�gr_memrr&rrrrnrz!GetUserGroups.<locals>.<listcomp>)�setr)rrrrrrr*ls�r*�cCst�t�jSr.)�pwd�getpwuid�USER_ID�pw_namerrrr�<lambda>srr9cCstdd�t��D��ddS)NcSsg|]
}|j�qSr)�pw_uid)r�userrrrrxrz<lambda>.<locals>.<listcomp>���r)rr5�getpwallrrrrr9xrcCst�Sr.)r%rrrrr9}rcCst�Sr.)r*rrrrr9�rFcCsr|r
d}ntj�ddd�}dd�|�ddg}tjdddt�g||}t�s`tt	j
�g|}n|}d	d
�|D�S)zFAdds config options to a list of strings defining a gsutil subcommand.F�GSUtil�use_gcloud_storagez-ozGSUtil:use_gcloud_storage={}z#GSUtil:hidden_shim_mode=no_fallbackz--testexceptiontraceszGSUtil:default_project_id=cSsg|]}t�|��qSr)�six�
ensure_str)r�partrrrr�rz$GetGsutilCommand.<locals>.<listcomp>)�boto�config�getbool�format�gslib�GSUTIL_PATHr
�InvokedFromParFile�str�sys�
executable)Zraw_command�force_gsutilr?Zgcloud_storage_settingZgsutil_commandZ#gsutil_command_with_executable_pathrrr�GetGsutilCommand�s*
�����rNcCsvtj��}|r|�|�t�}t�|�D]\}}t�|�|t�|�<q(ttd�rVtj	nd}t
j|t
jt
jt
j||d�S)zCReturns a subprocess.Popen object for for running a gsutil command.�setsidN)�stdout�stderr�stdin�env�
preexec_fn)
r/�environ�copy�update�dictr@�	iteritemsrA�hasattrrO�
subprocess�Popen�PIPE)�cmd�env_varsrS�envstr�k�vrTrrr�GetGsutilSubprocess�s

�rccs�|dur.tjr$t|t�s.|�t�}n
|�t�}d|i}�fdd�}tjrRd|d<nt�d|�}|���j	fi|��}tjs�|�
�zdd�|D�}Wn ty�dd�|D�}Yn0|S)	N�inputcst�t��j�tj�dSr.)r/�killpg�getpgid�pid�signal�SIGKILLr��processrr�Kill�sz$CommunicateWithTimeout.<locals>.Kill��timeoutcSsg|]}t�|��qSr�r@�ensure_text�r�outputrrrr�rz*CommunicateWithTimeout.<locals>.<listcomp>cSsg|]}t�|t�d���qS)F)r@rp�locale�getpreferredencodingrqrrrr�s�)r@�PY3�
isinstance�bytes�encoder�	threading�Timer�start�communicate�cancel�UnicodeDecodeError)rkrRZcomm_kwargsrl�timerZc_outrrjr�CommunicateWithTimeout�s*


�r�s,iMSM9eeXliDZHSBJZO71R98tfeW/+87VXTpk5chGd6Y=s,4TSaQ3S4U+5oxAbByA7HgIigD51zfzGed/c03Ts2TXc=s,HO4Q2X28N/6SmuAJ1v1CTuJjf5emQcXf7YriKzT1gj0=s,U6zIErjZCK/IpIeDS0pJrDayqlZurY8M9dvPJU0SXI8=s,MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTI=sdnF5x6K/8ZZRzpfSlMMM+w==sbarzN7UdGUp1E+RbVvZSTy1R8g==zCrcTMQ==sbar2zIk4lOfUiA+szcorNIotEMg==zQScXtg==sbar3z9iW6smjfu9hm0A//VQTQfw==zs0yUtQ==sbar4zkPCx6uZiUOU7W6E+cDCZFg==zZ4bwXg==sbar5z758XbXQOVkp8fTKMm83NXA==zle1zXQ==Tz&/tmp/.boto.parallel_upload_test_configzPThis sync will orphan file(s), please fix their permissions before trying again.z$Mode for %s won't allow read access.z+GID for %s doesn't exist on current system.z+UID for %s doesn't exist on current system.z,Insufficient access with uid/gid/mode for %sc@s(eZdZdZdZdZdZdZdZdZ	dS)	�KmsTestingResourceszCConstants for KMS resource names to be used in integration testing.zus-central1z$keyring-for-gsutil-integration-testsz key-for-gsutil-integration-testsz!key-for-gsutil-integration-tests2zkey-for-gsutil-no-authz-cryptokey-for-gsutil-integration-tests-%d%d%dN)
�__name__�
__module__�__qualname__�__doc__�KEYRING_LOCATION�KEYRING_NAME�CONSTANT_KEY_NAMEZCONSTANT_KEY_NAME2Z"CONSTANT_KEY_NAME_DO_NOT_AUTHORIZEZMUTABLE_KEY_NAME_TEMPLATErrrrr�sr�cCsXtt���}|jtd�tjtjd�}|�||�}t	ddd|gdd�}t
|�}t|�|S)zAEnsures test keys exist and that the service agent is authorized.N)�location�kms�	authorizez-kT)rM)r	�logging�	getLogger�
CreateKeyRingr
r�r�r��CreateCryptoKeyrNrcr�)�key_name�kms_apiZkeyring_fully_qualified_nameZkey_fully_qualified_namer^rkrrr�"AuthorizeProjectToUseTestingKmsKey)s���r�cCst�|t|��S)a	Builds a regex to match a file name for a file that would be orphaned.

  Args:
    obj: Object uri.
    err_str: The error string to search for.

  Returns:
    A regex that will match the file name and with the error text for a file
    that would be orphaned.
  )�re�compile�ObjectToURI)�objZerr_strrrr�BuildErrorRegex<sr�cs t�fdd�|���d�D��S)a�Returns set of object name tails.

  Tails can be compared between source and dest, past the point at which the
  command was done. For example if test ran {cp,mv,rsync}
  gs://bucket1/dir gs://bucket2/dir2, the tails for listings from bucket1
  would start after "dir", while the tails for listings from bucket2 would
  start after "dir2".

  Args:
    start_point: The target of the cp command, e.g., for the above command it
                 would be gs://bucket1/dir for the bucket1 listing results and
                 gs://bucket2/dir2 for the bucket2 listing results.
    listing: The listing over which to compute tail.

  Returns:
    Object name tails.
  c3s|]}|t��d�VqdSr.)r+)r�l��start_pointrr�	<genexpr>\rzTailSet.<locals>.<genexpr>�
)r3�strip�split)r��listingrr�r�TailSetJsr��Credentials�aws_access_key_id�aws_secret_access_key�gs_service_key_file�z.p12�gs_host�gs_portr>�
prefer_api�json�XMLcCstrt�|�Sdd�SdS)NcSs|Sr.r��funcrrrr9rrz!SkipForP12Creds.<locals>.<lambda>)�
HAS_P12_CREDS�unittest�skip��reasonrrr�SkipForP12Credsns
r�cCs0d}ts(zddl}Wnty&Yn0|duS)Nr)r�argcomplete�ImportError)r�rrr�_ArgcompleteAvailabletsr�cCsl|�dd�}ttj�|��}t�|d�|d<|d�d�rP|ddd�|d<tj�|�}|�dd�}|S)z�Normalizes the path component of a URI.

  Args:
    uri: URI to normalize.

  Returns:
    Normalized URI.

  Examples:
    gs://foo//bar -> gs://foo/bar
    gs://foo/./bar -> gs://foo/bar
  zgs://zfile://�z//rN)	�replacer,r�parse�urlparse�	posixpath�normpath�
startswith�
urlunparse)�uri�parsedZunparsedrrr�
_NormalizeURI�sr�cCs&|js|js|jdkrdS|jp$|jS)z�Returns a the generation for a StorageUri.

  Args:
    uri: boto.storage_uri.StorageURI object to get the URI from.

  Returns:
    Generation string for the URI.
  �s3�null)�
generation�
version_id�scheme)r�rrr�GenerationFromURI�s	
r�cGs�t|�r,d�tj�tjj|jg|�R���St|tj	�rRd�tjj|g|�R��St�
|j�}|r�dd�|D�}td�|g|��}|�
d�r�|dd�}|S)a�Returns the storage URI string for a given StorageUri or file object.

  Args:
    obj: The object to get the URI from. Can be a file object, a subclass of
         boto.storage_uri.StorageURI, or a string. If a string, it is assumed to
         be a local on-disk path.
    *suffixes: Suffixes to append. For example, ObjectToUri(bucketuri, 'foo')
               would return the URI for a key name 'foo' inside the given
               bucket.

  Returns:
    Storage URI string.
  z	file://{}cSsg|]}t�|��qSrro)r�suffixrrrr�rzObjectToURI.<locals>.<listcomp>�/Nr<)�is_filerFr/�path�abspath�join�namervr@�string_typesrpr�r��endswith)r��suffixesr�Z
suffixes_listrrrr��s�
r�cseZdZ�fdd�Z�ZS)�GSMockConnectioncs(d|d<d|_tt|�j|i|��dS)N�gs�providerr)�debug�superr��__init__)�self�args�kwargs��	__class__rrr��szGSMockConnection.__init__)r�r�r�r��
__classcell__rrr�rr��sr�c@s\eZdZddd�Zddd�Zddd�Zddd	�Zdd
d�Zddd
�Zddd�Z	ddd�Z
dS)�GSMockBucketStorageUriNcCstSr.)�mock_connection)r��
access_key_id�secret_access_keyrrr�connect�szGSMockBucketStorageUri.connectcCs|��S)z:Dummy implementation to allow parallel uploads with tests.)�new_key)r��
components�headersrrr�compose�szGSMockBucketStorageUri.composecCsdS)N�USr�r�r�rrr�get_location�sz#GSMockBucketStorageUri.get_locationcCstjj��Sr.)rCr��cors�Corsr�rrr�get_cors�szGSMockBucketStorageUri.get_corscCstjj��Sr.)rCr��encryptionconfig�EncryptionConfigr�rrr�get_encryption_config�sz,GSMockBucketStorageUri.get_encryption_configcCsdSr.rr�rrr�get_lifecycle_config�sz+GSMockBucketStorageUri.get_lifecycle_configcCsdSr.rr�rrr�get_website_config�sz)GSMockBucketStorageUri.get_website_configcCsdSr.rr�rrr�get_versioning_config�sz,GSMockBucketStorageUri.get_versioning_config)NN)N)N)N)N)N)N)N)r�r�r�r�r�r�r�r�r�r�r�rrrrr��s






r�ZTestRemoveSectioncCsttj�||d�}tj�|�s8|�|tdf�tj�|�|�|||f�|dur`tj�||�ntj�|||�dS)a�Sets boto configuration temporarily for testing.

  SetBotoConfigForTest should be called by tests instead of this function.
  This will ensure that the configuration is reverted to its original setting
  using _RevertBotoConfig.

  Args:
    section: Boto config section to set
    name: Boto config name to set
    value: Value to set
    revert_list: List for tracking configs to revert.
  N)	rCrD�get�has_section�append�TEST_BOTO_REMOVE_SECTION�add_section�
remove_optionr3)�sectionr��value�revert_listZ
prev_valuerrr�_SetBotoConfig�s
r�cCsjg}|D]F\}}}|dur>|tkr.|�|�qNtj�||�qtj�|||�q|D]}tj�|�qTdS)z�Reverts boto config modifications made by _SetBotoConfig.

  Args:
    revert_list: List of boto config modifications created by calls to
                 _SetBotoConfig.
  N)r�r�rCrDr�r3�remove_section)r�Zsections_to_remover�r�r�rrr�_RevertBotoConfigsr�cst����fdd��}|S)a`Decorator for tests that perform file to object transfers, or vice versa.

  This forces the test to run once normally, and again with special boto
  config settings that will ensure that the test follows the parallel composite
  upload and/or sliced object download code paths.

  Args:
    func: Function to wrap.

  Returns:
    Wrapped function.
  csV�|i|��tsRt�rRtgd����|i|��Wd�n1sH0YdS)N))r>�#parallel_composite_upload_threshold�1)r>� sliced_object_download_thresholdr�)r>�%sliced_object_download_max_components�3)r>�check_hashes�always)�RUN_S3_TESTSr�SetBotoConfigForTest)r�r�r�rr�Wrapper1s
z.SequentialAndParallelTransfer.<locals>.Wrapper)�	functools�wraps)r�rrr�r�SequentialAndParallelTransfer#sr
cCsRi}|D]D}|d|d|d}}}||vr8i||<|dur||||<q|S)a�Converts the input config list to a dict that is easy to write to a file.

  This is used to reset the boto config contents for a test instead of
  preserving the existing values.

  Args:
    boto_config_list: list of tuples of:
        (boto config section to set, boto config name to set, value to set)
        If value to set is None, no entry is created.

  Returns:
    Dictionary of {section: {keys: values}} for writing to the file.
  rrr�Nr)�boto_config_list�sectionsZconfig_entryr��keyr�rrr�_SectionDictFromConfigListCsrcCsvt|d��X}t�|�D]<\}}|�d|�t�|�D]\}}|�d||f�q6qWd�n1sh0YdS)zFWrites a section dict from _SectionDictFromConfigList to tmp_filename.�wz[%s]
z%s = %s
N)�openr@rY�write)Zsection_dict�tmp_filename�tmp_filer�Zkey_value_pairsr
r�rrr�_WriteSectionDictToFile\s
rccs4tdg��dVWd�n1s&0YdS)zHSets a dummy project in boto config for the duration of a 'with' clause.)r>�default_project_idZ
dummy_projN)rrrrr�SetDummyProjectForUnitTestesrccsNg}d}�z
tjdd�\}}t�|�|r�|D]<}|d}tjrTt|t�rT|�t	�}t
|d|d||�q.t|d��}tj
�|�Wd�q�1s�0Yntt|�|�t|��dVWd�n1s�0YWt|�|�rJzt�|�Wnt�yYn0n4t|�|�rHzt�|�Wnt�yFYn00dS)aASets the input list of boto configs for the duration of a 'with' clause.

  This preserves any existing boto configuration unless it is overwritten in
  the provided boto_config_list.

  Args:
    boto_config_list: list of tuples of:
        (boto config section to set, boto config name to set, value to set)
    use_existing_config: If True, apply boto_config_list to the existing
        configuration, preserving any original values unless they are
        overwritten. Otherwise, apply boto_config_list to a blank configuration.

  Yields:
    Once after config is set.
  Nzgsutil-temp-cfg)�prefixr�rrr)�tempfile�mkstempr/�closer@rurvrw�decoderr�rrCrDrrr�_SetBotoConfigFileForTestr��remove�OSError)rZuse_existing_configZrevert_configsrZtmp_fd�boto_configZ
boto_valuerrrrrnsB


�,�
&�rc#sT�fdd�}i�|D]}tj�|��|<qz||�dVW|��n
|��0dS)z0Sets OS environment variables for a single test.csNt�|�D]>\}}tj�|��|<|dur6|tj|<q
|tjvr
tj|=q
dSr.)r@rYr/rUr�)Z
dict_to_applyrarb�Z
old_valuesrr�_ApplyDictToEnvironment�s
z6SetEnvironmentForTest.<locals>._ApplyDictToEnvironmentN)r/rUr�)Zenv_variable_dictr!rarr r�SetEnvironmentForTest�sr"c
cs�ztjd}d}Wnty(d}Yn0|tjd<z(dVW|rN|tjd<q~tj�dd�n |rn|tjd<ntj�dd�0dS)a�Sets a given file as the boto config file for a single test.

  This function applies only the configuration in boto_config_path and will
  ignore existing configuration. It should not be called directly by tests;
  instead, use SetBotoConfigForTest.

  Args:
    boto_config_path: Path to config file to use.

  Yields:
    When configuration has been applied, and again when reverted.
  �BOTO_CONFIGTFN)r/rUr!�pop)Zboto_config_pathZold_boto_config_env_variableZboto_config_was_setrrrr�s


�rcCsHt�d�}g}t�tj�D](\}}}|�|�}|r|�|�d��q|S)z?Returns a list of the names of the test modules in gslib.tests.z^test_(?P<name>.*)$r�)	r�r��pkgutil�iter_modules�gslib_tests�__path__�matchr�r)�matcher�names�_�modname�mrrr�GetTestNames�s

r/cCstjrt|t�St|tj�Sr.)r@�PY2rv�file�io�IOBase)r�rrrr��s
r�cCs8t|tjtjf�r"|�dd���Std�t|����dS)aReturns a copy of the given name with any invalid characters replaced.

  Args:
    name Union[str, unicode, bytes]: The bucket name to transform into a valid name.

  Returns:
    Union[str, unicode, bytes] The version of the bucket name containing only
      valid characters.
  r,�-z*Unable to format name. Incorrect Type: {0}N)	rvr@�	text_type�binary_typer��lower�	TypeErrorrF�type)r�rrr�MakeBucketNameValid�s
�r:c	cshd}zt��}Wnty"Yn0|r2t�|�zdVW|rd|rdt�|�n|rb|rbt�|�0dS)aChanges the working directory for the duration of a 'with' call.

  Args:
    new_working_directory: The directory to switch to before executing wrapped
      code. A None value indicates that no switching is necessary.

  Yields:
    Once after working directory has been changed.
  N)r/�getcwdr�chdir)Znew_working_directoryZprev_working_directoryrrr�WorkingDirectory�s
�r=cCs"t��dd�}|sdSd|jjvS)N�
__loader__F�	zipimport)�globalsr�r�r�)�loaderrrrrIsrIcCst�rt�|�Sdd�SdS)NcSs|Sr.rr�rrrr9rz SkipForParFile.<locals>.<lambda>)rIr�r�r�rrr�SkipForParFiles
rBc@s eZdZdZdd�Zdd�ZdS)�HaltingCopyCallbackHandlerzFTest callback handler for intentionally stopping a resumable transfer.cCs||_||_dSr.)�
_is_upload�
_halt_at_byte)r��	is_upload�halt_at_byterrrr�&sz#HaltingCopyCallbackHandler.__init__cCsF||jkrBtj�d|jt|�t|�f�|jr:td��ntd��dS)aDForcibly exits if the transfer has passed the halting point.

    Note that this function is only called when the conditions in
    gslib.progress_callback.ProgressCallbackWithTimeout.Progress are met, so
    self._halt_at_byte is only precise if it's divisible by
    gslib.progress_callback._START_BYTES_PER_CALLBACK.
    z4Halting transfer after byte %s. %s/%s transferred.
zArtifically halting upload.�Artifically halting download.N)rErKrQrrrDrr)r��total_bytes_transferred�
total_sizerrr�call+s

���
zHaltingCopyCallbackHandler.callN�r�r�r�r�r�rKrrrrrC#srCc@s eZdZdZdd�Zdd�ZdS)�#HaltOneComponentCopyCallbackHandlerz=Test callback handler for stopping part of a sliced download.cCsd|_||_dSr.)�_last_progress_byterE)r�rGrrrr�Asz,HaltOneComponentCopyCallbackHandler.__init__cCsD|jdur:|j|jkr"|kr:nntj�d�td��||_dS)zCForcibly exits if the passed the halting point since the last call.NzHalting transfer.
rH)rNrErKrQrr)r�Zcurrent_progress_byteZtotal_size_unusedrrrrKGs
��
z(HaltOneComponentCopyCallbackHandler.callNrLrrrrrM>srMc@seZdZdZddd�ZdS)�
TestParamsakAllows easier organization of test parameters.

  This class allows grouping of test parameters, which include args and kwargs
  to be used, as well as the expected result based on those arguments.

  For example, to test an Add function, one might do:

  params = TestParams(args=(1, 2, 3), expected=6)
  self.assertEqual(Add(*(params.args)), params.expected)
  NcCs\|durt�n||_|dur"t�n||_||_t|ttf�sDtd��t|jt�sXtd��dS)Nz'TestParam args must be a tuple or list.z TestParam kwargs must be a dict.)�tupler�rXr��expectedrvr,r8)r�r�r�rQrrrr�\szTestParams.__init__)NNN)r�r�r�r�r�rrrrrOPsrOc@s eZdZdZdd�Zdd�ZdS)�
CaptureStdoutz�Context manager.

  For example, this function has the lines printed by the function call
  stored as a list in output:

  with CaptureStdout() as output:
    function(input_to_function)
  cCstj|_t�t_|_|Sr.)rKrP�_stdoutr�	_stringio)r�rrr�	__enter__qszCaptureStdout.__enter__cGs$|�|j�����|`|jt_dSr.)�extendrT�getvalue�
splitlinesrSrKrP)r�r�rrr�__exit__vszCaptureStdout.__exit__N)r�r�r�r�rUrYrrrrrRgs	rR)F)N)N)T)��
__future__rrrr�
contextlibrrrsr�r/r%r�r�r2rhr[rKrryr�r@�	six.movesrrrC�crcmodrG�
gslib.kms_apir	�gslib.project_idr
Zmock_storage_service�gslib.cloud_apirr�gslib.lazy_wrapperr
�gslib.tests�testsr'Zgslib.utilsrZgslib.utils.boto_utilrr�gslib.utils.constantsr�gslib.utils.encryption_helperr�gslib.utils.system_utilr�gslib.utils.unit_utilrrr5r%r-r)r*�InitializeDefaultMode�int�SYSTEM_POSIX_MODE�DEFAULT_MODE�getuidr7r1ZINVALID_UIDZINVALID_GID�USER_GROUPSrNrcr�ZTEST_ENCRYPTION_KEY1ZTEST_ENCRYPTION_KEY1_SHA256_B64ZTEST_ENCRYPTION_KEY2ZTEST_ENCRYPTION_KEY2_SHA256_B64ZTEST_ENCRYPTION_KEY3ZTEST_ENCRYPTION_KEY3_SHA256_B64ZTEST_ENCRYPTION_KEY4ZTEST_ENCRYPTION_KEY4_SHA256_B64ZTEST_ENCRYPTION_KEY_S3ZTEST_ENCRYPTION_KEY_S3_MD5ZTEST_ENCRYPTION_CONTENT1ZTEST_ENCRYPTION_CONTENT1_MD5ZTEST_ENCRYPTION_CONTENT1_CRC32CZTEST_ENCRYPTION_CONTENT2ZTEST_ENCRYPTION_CONTENT2_MD5ZTEST_ENCRYPTION_CONTENT2_CRC32CZTEST_ENCRYPTION_CONTENT3ZTEST_ENCRYPTION_CONTENT3_MD5ZTEST_ENCRYPTION_CONTENT3_CRC32CZTEST_ENCRYPTION_CONTENT4ZTEST_ENCRYPTION_CONTENT4_MD5ZTEST_ENCRYPTION_CONTENT4_CRC32CZTEST_ENCRYPTION_CONTENT5ZTEST_ENCRYPTION_CONTENT5_MD5ZTEST_ENCRYPTION_CONTENT5_CRC32C�RUN_INTEGRATION_TESTSZRUN_UNIT_TESTSr�USE_MULTIREGIONAL_BUCKETSZ%PARALLEL_COMPOSITE_UPLOAD_TEST_CONFIGZ
ORPHANED_FILEZPOSIX_MODE_ERRORZPOSIX_GID_ERRORZPOSIX_UID_ERRORZPOSIX_INSUFFICIENT_ACCESS_ERROR�objectr�r�r�r�r�rDr��HAS_S3_CREDSr�r�ZHAS_NON_DEFAULT_GS_HOSTZHAS_GS_HOSTZHAS_GS_PORT�upperZUSING_JSON_APIr�r�ZARGCOMPLETE_AVAILABLEr�r�r�ZMockConnectionr�r�ZMockBucketStorageUrir�r�r�r�r
rrrrr"rr/r�r:r=rIrBrCrMrOr,rRrrrr�<module>s,
�


&�����
�
�� 	
.




Youez - 2016 - github.com/yon3zu
LinuXploit