%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /usr/share/system-config-printer/__pycache__/
Upload File :
Create Path :
Current File : //usr/share/system-config-printer/__pycache__/asyncpk1.cpython-312.pyc

�

Hfqg���ddlZddlZddlmZ	ddlZej
dd�ddlmZej
dd�ddlmZddl	Z	ddl
Z
ddlZddlZ
ddlZddl�ddlZd	Zd
Zd	ZdZdaGd�d
�ZGd�d�ZGd�d�Zedk(rFddlmZddlmZed�Gd�d�Ze�ddlmZed��ej<�yy#Y��xYw)�N)�reduce�Gdkz3.0)r�Gtk)r)�*z#org.opensuse.CupsPkHelper.Mechanism�/z1org.opensuse.CupsPkHelper.Mechanism.NotPrivilegedc�B�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zy
)�_PK1AsyncMethodCallc��||_||_||_||_||_||_||_||_|	|_|
|_	d|_
td|z�y)NFz+_PK1AsyncMethodCall: %s)�_bus�_conn�_pk_method_name�_pk_args�_client_reply_handler�_client_error_handler�
_unpack_fn�_fallback_fn�_fallback_args�_fallback_kwds�
_destroyed�
debugprint)�self�bus�conn�pk_method_name�pk_args�
reply_handler�
error_handler�	unpack_fn�fallback_fn�args�kwdss           �,/usr/share/system-config-printer/asyncpk1.py�__init__z_PK1AsyncMethodCall.__init__<se����	���
�-�����
�%2��"�%2��"�#���'���"���"�������.��5�6�c�4�tjd|z�y)Nz-_PK1AsyncMethodCall: %s��debugr�rs r"�__del__z_PK1AsyncMethodCall.__del__Ls��
���4�t�;�<r$c��|jjtt�}t	j
|t�}|j|j�}	t|�d|���||j|j|jdd��y#t$r1}tdt|�z�|j�Yd}~yd}~wwxYw)N�
: calling i)rr�timeoutzType error in PK call: %s)r�
get_object�CUPS_PK_NAME�CUPS_PK_PATH�dbus�	Interface�
CUPS_PK_IFACE�get_dbus_methodr
rr�_pk_reply_handler�_pk_error_handler�	TypeError�repr�call_fallback_fn)r�object�proxy�	pk_method�es     r"�callz_PK1AsyncMethodCall.callOs������%�%�l�L�A������
�6���)�)�4�+?�+?�@�	�	%��D�)�<�=���
�
�&*�&<�&<�&*�&<�&<� $�
&���	%��3�d�A�h�>�?��!�!�$�$��	%�s�8B�	C�'C	�	Cc�V�td|z�d|_|`|`|`|`|`|`|`|`	|`
|`y)N�DESTROY: %sT)rrrrr
rrrrrrrr(s r"�_destroyz_PK1AsyncMethodCall._destroy^sN���M�D�(�)�����I��J�� ��M��&��&��O������r$c��|jryt|�dk(r~	tj�t	|�d|j
���|j|j|j|��	tj�|j�yt	dt|�z�|j�y#Y��xYw#Y�DxYw)N�z": no error, calling reply handler z PolicyKit method failed with: %s)r�strr�
threads_enterrrrr�
threads_leaver@r7r8)r�errorr s   r"r4z%_PK1AsyncMethodCall._pk_reply_handlerls����?�?����;�"��
��!�!�$�
��t�9�9�;�
<��&�&��
�
�O�D�O�O�d�4K�L�
��!�!�$�
�M�M����6��u��E�F���� ��
���
��s�C�5C	�C�	C
c��|jry|j�tk(r�tjtj
d�}	t
j�t|�d|j���|j|j|�	t
j�|j�ytd|j�dt|����|j�y#Y��xYw#Y�QxYw)N�pkcancelz!: no auth, calling error handler zPolicyKit call to z did not work: )r�
get_dbus_name�CUPS_PK_NEED_AUTH�cups�IPPError�IPP_NOT_AUTHORIZEDrrDrrrrEr@r
r7r8�r�excs  r"r5z%_PK1AsyncMethodCall._pk_error_handler�s����?�?������#4�4��-�-��!8�!8�*�E�C�
��!�!�$�
��t�9�9�;�
<��&�&��
�
�C�8�
��!�!�$�
�M�M�����)�)�4��:�7�	8���� ��
���
��s�
C/�C6�/C3�6C:c���|j|jd<|j|jd<t|�d|j���|j|j
i|j��y)Nrrr+)�_ipp_reply_handlerr�_ipp_error_handlerrrrr(s r"r8z$_PK1AsyncMethodCall.call_fallback_fn�sb��/3�/F�/F����O�,�/3�/F�/F����O�,���d�.?�.?�@�A�����D�/�/�G�4�3F�3F�Gr$c��|jryt|�d|j���|j|jg|���|j	�y�Nz: chaining up to )rrrrr@�rrr s   r"rQz&_PK1AsyncMethodCall._ipp_reply_handler��I���?�?���t�/3�/I�/I�K�	L�"��"�"�D�J�J�6��6��
�
�r$c��|jryt|�d|j���|j|jg|���|j	�yrT)rrrrr@rUs   r"rRz&_PK1AsyncMethodCall._ipp_error_handler�rVr$N)�__name__�
__module__�__qualname__r#r)r=r@r4r5r8rQrR�r$r"r	r	;s0��7� =�
%� �!�,!�0H��r$r	c�*�eZdZd�Zd�Zd�Zd�Zd�Zy)�_WriteToTmpFilec��||_||_tjd��\}}t	j
|�||_td|z�||_y)Nz/tmp)�dirzCreated tempfile %s)	�_reply_handler�_error_handler�tempfile�mkstemp�os�close�	_filenamer�_kwds)rr!rr�tmpfd�tmpfnames      r"r#z_WriteToTmpFile.__init__�sQ��+���+���%�,�,�&�9����
���%��!����)�H�4�5���
r$c��	tj|j�tjd|jz�y#tjd�YyxYw)NzRemoved tempfile %szNo tempfile to remove)rd�unlinkrfr'rr(s r"r)z_WriteToTmpFile.__del__�sE��	7��I�I�t�~�~�&����3�d�n�n�D�E��	7����5�6�s�AA�Ac��|jS�N)rfr(s r"�get_filenamez_WriteToTmpFile.get_filename�s���~�~�r$c���tj|jtj�}tj|d�}d|j
vr�|j
d}tj|dtj�|j�}|dk7r�tj||jd��|j�}|dk7r�;nk|j
d}|jd�|j�}|dk7r6|j|jd��|j�}|dk7r�6|j�|j||�y)N�rt�fdrrBzUTF-8�file)rd�openrf�O_RDONLY�fdopenrg�lseek�SEEK_SET�readline�write�encode�seekrer`)rr�nonerh�tmpfilerq�line�file_objects        r"rz_WriteToTmpFile.reply_handler�s�����������5���)�)�U�D�)���4�:�:�����D�!�B��H�H�b�!�R�[�[�)��#�#�&�D��"�*����"�d�k�k�'�2�3��'�'�*���"�*��*�*�V�,�K����a� ��#�#�&�D��"�*��!�!�4�;�;�w�#7�8��'�'�*���"�*�	�
�
�����T�4�(r$c�(�|j||�yrm)ra�rrrOs   r"rz_WriteToTmpFile.error_handler�s�����T�3�'r$N)rXrYrZr#r)rnrrr[r$r"r]r]�s��
�7��)�*(r$r]c�f�eZdZ		dd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d	�Z
d
�Zd�Zd�Z
d
�Zd�Zd�Zy)�
PK1ConnectionNc�l�tj||||||��|_	tj�|_t��S|j
�rF	|j
jtt�}tj|tj�}|j�}	t j"j$j'|	�}
|
j)d�D]�}|j*j-d�t.k7r�&|j)d�D]v}|j*j-d�dk7r�"d}
|j)d�D](}|j*j-d�}|d	k7r�$|
d
z
}
�*|
dk(a	t1d|
dk(z�nnt7|jj8�}g}t;|j�D]s}|j=d�r�t?|j|�}t7|�|k7r�:tA||�r�GtC|||jE|��|jG|��u||_$t1d|z�y#tjjtf$rd|_Y��IwxYw#t2$r"}t1d
t5|�z�Yd}~��d}~wwxYw)N)rr�host�port�
encryption�parent�	interface�name�method�
DevicesGetr�arg�	direction�in��zDevicesGet new API: %sz&Exception assessing DevicesGet API: %s�_�+%s)%�asyncipp�IPPAuthConnectionrr0�	SystemBus�_system_bus�
exceptions�
DBusException�AttributeError�_DevicesGet_uses_new_apir-r.r/r1�INTROSPECTABLE_IFACE�
Introspect�xml�etree�ElementTree�XML�findall�attrib�getr2r�	Exceptionr7�type�getPrintersr_�
startswith�getattr�hasattr�setattr�
_make_binding�append�	_bindings)rrrr�r�r�r��objr:�api�topr�r��num_argsr�r�r<�
methodtype�bindings�fname�fns                     r"r#zPK1Connection.__init__�sm���/�/�
�@M�7;�$�=G�9?�	A��
�	$�#�~�~�/�D��$�+��0@�0@�
Q��&�&�1�1�,��M������T�-F�-F�G���&�&�)���i�i�+�+�/�/��5��!$���k�!:��I� �'�'�+�+�V�4�
�E� �"+�"3�"3�X�">���!�=�=�,�,�f�5��E�$�#$��#)�>�>�5�#9�*�C�(+�
�
����(D�I�(�D�0� (�$��M�H�*�4<�q�=�0�"�$<��A�
�$N�O��� �)�2�4�:�:�1�1�2�
����$�*�*�%�	(�E�����%���$�*�*�e�,�B��R�y�J�&���D�%�(���u�d�&8�&8�"�&=�>�����'�	(�"����E�D�L�!��c���-�-�~�>�	$�#�D��	$��B�
Q��D�t�Q�x�O�P�P��
Q�s*�I�EJ�*J�J�	J3�J.�.J3c�4�tjd|z�y�Nz-%sr&r(s r"r)zPK1Connection.__del__&s��
���%�$�,�'r$c������fd�}|S)Nc���td�dd|jd�|jd�d�||�
}|j�y)Nrr)r	r�r8)r r!�opr�rs   ��r"�bindingz,PK1Connection._make_binding.<locals>.binding*sD���$�d�D�$��&*�h�h��&@�&*�h�h��&@�&*�B��d�<�B�
���"r$r[)rr�r�s`` r"r�zPK1Connection._make_binding)s���	#��r$c��td|z�|jj�|jD]}t	||��y�Nr?)rr�destroyr��delattr)rr�s  r"r�zPK1Connection.destroy3s<���M�D�(�)��
�
�����~�~�	$�G��T�7�#�	$r$c��||�Srmr[)r�typ�vals   r"�_coercezPK1Connection._coerce:s���C�y�r$c
��|j�}|jd�}|jd�}d|vr|d=d|vr|d=d|vr|d=d||dg}|j�|Sg}	d}
|D].}	|j||
|�}|	j|�|
dz
}
�0||
dD]M\}
}|
|vr.	|j||
||
�}|	j|�||
=n|	j|�|
dz
}
�O|r0t
dtt|j���z�|Sd|d<t|	�|d
<t
d|�d|�d
t|	����|S#t$r||
\}
}||k7r|cYcS|
dz
}
Y��t
$r+}t
d	t|��d
||
���|cYd}~cSd}~wwxYw#t
$r.}t
d	t||
��d
||
���|cYd}~cSd}~wwxYw)z+Collapse args and kwds into a single tuple.rr�auth_handlerTr[Nrr�zError converting z to zLeftover keywords: %sF�z
Converted r)�copyr�r�r��
IndexErrorr6rr7r��list�keys�tuple)r�types�paramsr r!�
leftover_kwdsrr�result�tup�argindexr�r��kw�defaultr<s                r"�_args_kwds_to_tuplez!PK1Connection._args_kwds_to_tuple=s%���	�	��
�%�)�)�?�;�
�%�)�)�?�;�
��m�+��o�.��m�+��o�.��]�*��n�-��
�}�b�9�����#��M������	�C�
��l�l�E�(�O�S�9�� 
�J�J�����M�H�'	�*"�(�)�,�	�K�B���]�"�"��,�,��h���r�9J�K�C��
�
�C� �!�"�%��
�
�G�$���M�H�	� ��/�$��]�=O�=O�=R�8S�2T�T�U��M���q�	��3�K��q�	��t�T�5�#�;�G�H��
��S�	
�$�X�.���G��c�>�!�M��A�
����
��!�3�Z��x��:�;��
��
��!�"��!%�}�R�'8�!9�5��?�!L�M�!�M��"�sH�&E�#F&�F#�(F#�0F#�8F�F#�F#�&	G�/!G�G�Gc
��t|j|||||||||	�
}
|s	td|z�|
j�|r|
j�Sy#tj
$r#}tdt
|�z�d}Yd}~�Dd}~wwxYw)NzCalling PK method %szD-Bus call failed: %sT)r	r�rr=r0r�r7r8)r�
use_pycupsrrrrrrr r!�asyncmethodcallr<s            r"�
_call_with_pkzPK1Connection._call_with_pk}s���.�t�/?�/?��/=�w�/<�/<�/8�+�/3�T�;���
"��2�^�C�D��$�$�'�
�"�3�3�6�6���	�%�%�
"��3�d�A�h�>�?�!�
��
"�s�A�B	�&B�B	c��yrmr[r(s r"�_nothing_to_unpackz PK1Connection._nothing_to_unpack�s��r$c���tr6|jttttgdddgfdgfg||�\}}}}nx|jtttgddgfdgfg||�\}}}}|sGt|�}dD],}t	||�dkDrtd�||�||<�(d||<�.t
|�}|j|d	||||j|jj||�	y)
N)r,r)�limitr�include_schemes�exclude_schemes)r��rc��|dz|zS)N�,r[)�x�ys  r"�<lambda>z*PK1Connection.getDevices.<locals>.<lambda>�s��9:�S��1��r$rBr�)r�r��intr��lenrr�r��_unpack_getDevices_replyr�
getDevices)	rr r!r�rrr��newtup�
paramindexs	         r"r�zPK1Connection.getDevices�s/��#��,�,�s�C��t�.D�/=�/;�0A�2�/F�0A�2�/F�/H�/3�D�:�
�Z��
�
��,�,�s�D�$�.?�/;�0A�2�/F�0A�2�/F�/H�/3�D�	:�
�Z��
�
���s���"(�0�J��F�:�.�/�!�3�-3�6E�5;�J�5G�.I��z�*�.0��z�*�
0��V�n�����J�(�#�}�m� �9�9� �J�J�1�1�4��	?r$c��t�}|j�D]>\}}t|�tjk(rt|�|t|�<�:|||<�@t�}d}dt|�z}|j
�D�cgc]}|j|�s�|��}	}t|	�dkDr�d}
t�}|	D]/}|dt|�t|�z
}|dk7r	||||<�+||}
�1|
�|||
<|dz
}dt|�z}|j
�D�cgc]}|j|�s�|��}	}t|	�dkDr��|Scc}wcc}w)Nr�:z
device-urir�)	�dict�itemsr�r0�StringrCr��endswithr�)
r�dbusdict�
result_str�key�value�devices�n�affixr��device_keys�
device_uri�device_dict�keywithaffixs
             r"r�z&PK1Connection._unpack_getDevices_reply�sa���V�
�"�.�.�+�	(�J�C���S�z�T�[�[�(�(+�U��
�3��9�%�"'�
�3��		(��&��
���c�1�g�
��",�/�/�"4�K�Q��
�
�E�8J�q�K��K��;��!�#��J��&�K� +�
:��"�#D�C��$6��e��$D�E���,�&�'1�,�'?�K��$�!+�L�!9�J�
:��%�&1��
�#�
��F�A��#�q�'�M�E�&0�o�o�&8�O��A�J�J��<N�1�O�K�O��;��!�#�"���%L�� Ps�E
�E
�E�6Ec��|jttgddg||�\}}}}|j|d||||j|j
j||�	y)N�NN)NF�JobCancelPurge)r�r��boolr�r�r�	cancelJob�rr r!r�rrr�s       r"rzPK1Connection.cancelJob�si���(�(�3��+�+7�+8�+:�*.��6�	��]�M�	�
	
���J�,�c�=�-� �3�3� �J�J�0�0�$��	>r$c��|jttgddg||�\}}}}|j|d||||j|j
j||�	y)Nr��JobSetHoldUntil)r�r�rCr�r�r�setJobHoldUntilrs       r"rzPK1Connection.setJobHoldUntil�sj���(�(�3��*�+7�+7�+9�*.��6�	��]�M�	�
	
���J�-�s�M�)�4�+B�+B� �J�J�6�6��d�	Dr$c��|jtgdg||�\}}}}|j|d||||j|jj
||�	y)Nr��
JobRestart)r�r�r�r�r�
restartJobrs       r"rzPK1Connection.restartJob�sa���(�(�3�%�+7�.�*.��6�	��]�M�	�	
���J�(�#�}�)�4�+B�+B� �J�J�1�1�4��	?r$c�F�|jttgddg||�\}}}}|r�t|�dk(rd|vst|�dk(r�d}|j�D]
}|dvs�d}n|r�t|�dk(r|d}	n|d}	t	|||�}
|jdd	|	|
j
�f|
j|
j|j|jj||�	y|j|d	||||j|jj||�	y)
N)�resourceN)�filenameNrr
r�T)r
rqrrrrF�FileGet)r�rCr�r�r]r�rnrrr�r�getFile)rr r!r�rrr��can_use_tempfile�eachr
�wrappers           r"r
zPK1Connection.getFile�sI���(�(�3��*�+=�+=�+?�*.��6�	��]�M�	���d��q��Z�4�%7��d��q��#'� � �I�I�L��D��$F�F�+0�(��	�$��D�z�Q��#'�
�#3��#'��7��-�t�/<�/<�>�G��&�&��(1�)1�7�3G�3G�3J�(K�(/�(=�(=�(/�(=�(=�(,�(?�(?�(,�
�
�(:�(:�D�$�
H�����J�%�s�M�)�4�+B�+B� �J�J�.�.��d�	<r$)NNNNNN)rXrYrZr#r)r�r�r�r�r�r�r�r�rrrr
r[r$r"r�r��sS��9=�?C�;"�z(��$��>�@7�*�#?�J �D
>�
D�	?�(<r$r��__main__)�GObject)�
set_debuggingTc�x�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zd�Zd�Zy)�UIc���tj�}tj�}|j|�tjjd�}|j
|ddd�|jd|j�tjjd�}|j
|ddd�|jd|j�|jd�||_tjjd�}|j
|ddd�|jd|j�|jd�||_
tjjd�}|j
|ddd�|jd|j�|jd�||_tjjd�}|j
|ddd�|jd|j �|jd�||_|jd	|j$�|j'�d|_t+d
|z�y)N�GoFr�clicked�Fetchz
Cancel jobzGet filezSomething harmlessr�r�)r�Window�VBox�add�Button�new_with_label�
pack_start�connect�button_clicked�
fetch_clicked�
set_sensitive�fetch_button�cancel_clicked�
cancel_button�get_file_clicked�get_file_button�harmless_clicked�harmless_buttonr��show_allrr)r�w�v�bs    r"r#zUI.__init__Js����
�
�
�A�����A�
�E�E�1�I��
�
�)�)�4�0�A�
�L�L�!�U�E�1�-�
�I�I�y�$�"5�"5�6��
�
�)�)�7�3�A�
�L�L�!�U�E�1�-�
�I�I�y�$�"4�"4�5�
�O�O�U�#� !�D���
�
�)�)�<�8�A�
�L�L�!�U�E�1�-�
�I�I�y�$�"5�"5�6�
�O�O�U�#�!"�D���
�
�)�)�:�6�A�
�L�L�!�U�E�1�-�
�I�I�y�$�"7�"7�8�
�O�O�U�#�#$�D� ��
�
�)�)�+?�@�A�
�L�L�!�U�E�1�-�
�I�I�y�$�"7�"7�8�
�O�O�U�#�#$�D� �
�I�I�y�$�,�,�/�
�J�J�M��D�I�����%r$c�4�tjd|z�yr�r&r(s r"r)z
UI.__del__js�����e�d�l�+r$c��td|z�	|jj�|`t	j
�y#t$rY� wxYwr�)rrr�r�r�	main_quit)r�windows  r"r�z
UI.destroymsI���
��,�-�
��	�	�!�!�$��I�
�M�M���"�
��
�s�A�	A
�A
c��|jr|jj�t|j|j��|_y�N�rr)rr�r��	connected�connection_error�r�buttons  r"r!zUI.button_clickedws5���y�y��	�	�!�!�$�%�T�^�^�59�5J�5J�L�D�Ir$c���td�|jjd�|jjd�|jjd�|j
jd�y)N�	ConnectedT)�printr$r#r&r(r*�rrr�s   r"r6zUI.connected~sZ���+�����+�+�T�2����,�,�d�3�� � �.�.��5�� � �.�.��5r$c��td�|�)NzFailed to connect)r<)rrrFs   r"r7zUI.connection_error�s���%�&��Kr$c�|�td�|jj|j|j��y)Nzfetch devices...r5)r<rr��got_devices�get_devices_errorr8s  r"r"zUI.fetch_clicked�s4���%�&��I�I� � ��0@�0@�04�0F�0F�
!�
Hr$c�V�||jk7rtd�ytd|z�y)NzIgnoring stale replyzgot devices: %s�rr<)rrr�s   r"r@zUI.got_devices�s(���t�y�y� ��,�-���#�g�-�.r$c�h�||jk7rtd�ytdt|�z�y)N�Ignoring stale errorzdevices error: %s�rr<r7r�s   r"rAzUI.get_devices_error�s,���t�y�y� ��,�-���%��c�
�2�3r$c�~�td�|jjd|j|j��y)Nz
Cancel job...r�r5)r<rr�job_canceled�cancel_job_errorr8s  r"r%zUI.cancel_clicked�s6���/�"��I�I����/3�/@�/@�/3�/D�/D�
 �
Fr$c�V�||jk7rtd|z�ytd�y)N�Ignoring stale reply for %szJob canceledrC�rrr|s   r"rHzUI.job_canceled�s'���t�y�y� ��3�d�:�;���.�!r$c�n�||jk7rtd|z�ytdt|�z�y)NzIgnoring stale error for %szcancel error: %srFr�s   r"rIzUI.cancel_job_error�s1���t�y�y� ��3�d�:�;���$�t�S�z�1�2r$c��tdd�|_|jjd|j|j|j
��y)Nz
cupsd.confr,z/admin/conf/cupsd.conf)rrrr)rs�my_filerr
�got_file�get_file_errorr8s  r"r'zUI.get_file_clicked�sA����s�3�D�L��I�I���7�d�l�l�-1�]�]�-1�-@�-@�
�
Br$c�V�||jk7rtd|z�ytd�y)NrKzGot filerCrLs   r"rPzUI.got_file�s'���t�y�y� ��3�d�:�;���*�r$c�h�||jk7rtd�ytdt|�z�y)NrEzget file error: %srFr�s   r"rQzUI.get_file_error�s,���t�y�y� ��,�-���&��s��3�4r$c�f�|jj|j|j��yr4)r�getJobs�got_jobs�get_jobs_errorr8s  r"r)zUI.harmless_clicked�s)���I�I���T�]�]�-1�-@�-@�
�
Br$c�h�||jk7rtdt|�z�yt|�y)NzIgnoring stale reply from %srFr=s   r"rVzUI.got_jobs�s*���t�y�y� ��4�t�T�{�B�C���&�Mr$c�2�tdt|�z�y)Nzget jobs error: %s)r<r7rNs  r"rWzUI.get_jobs_error�s���&��s��3�4r$N)rXrYrZr#r)r�r!r6r7r"r@rAr%rHrIr'rPrQr)rVrWr[r$r"rrIsb��	&�@	,�	�	L�	6�	�	H�
	/�	4�	F�	"�	3�	B�	�	5�	B�	�	5r$r)�
DBusGMainLoop)�set_as_default)rKr0�	functoolsr�gi�require_version�
gi.repositoryrrrd�sysrb�xml.etree.ElementTreer�r�r'r.r/r2rJr�r	r]r�rXrrr�dbus.mainloop.glibrZ�mainr[r$r"�<module>rds���*���	�
��B���u�e�$�!��B���u�e�$�!�
�
������5����5�
�G�� ��
v�v�v-(�-(�d<�<�z
�z��%�#��4��F5�F5�P�E�0��$�'��C�H�H�K�_��O	��s�6C�C

Zerion Mini Shell 1.0