œ_#ÁÕ§TE NAŒ“KeÉ:”(åŽÖJÞùY’‚ñùž7; «]Û ý`8g“¯B© jdÖÖ¸ðzœ¸¦4Ç3Kó^(ÍÖ¼ Õ€pvìwšõB4df$Èü^0˜…åÌC$#2FŽÑ§±¦ÛZ/÷š&m£ñzÒÖ ’.Î]!Î;ƒ(Õ–¢d/—#Kª+tZyuÏB>NÛÖ†(¸ŒSà'³„Y˜´-_•¦¼´˜OlNK§¶ÒàŠˆTHµƒeTPå·fïM’…þuÏÍüp6دªE£åü‡ZØ'CKF#â«;‹eyO Qp„†l"ö1èíÙP ÏŒúl! BÝ2ñª•_VÁÉ÷3eu`–F¸ìI--ö<¿žë¯4õ캿¢)34Å{wMÉ2ÆÖFŸ¥`e9Ú¶¸P‡.”FÔï rY ‚²ÈTB,{ÛœéJ}«àQ4¹0Rû4D‚B§S‘ dO•v¾„™Sן¯3FeŸ™«+ÓâwH dÕÛÌì·P4ë&¥#rÜÉ Ù¦ê†ý·xòqk¯2,¹§™E\ék‚×Sá”ÚºÙ⺷ö£6…à ʾ qSá³Å|;àû}4Ÿ($â¹VY~óÍ!èÜÒŒËX½Ù1j‚VíÍŸš³+œ]«½g{_{/vµ½\¢¶vÉWKÿ:ñám½ ¥ S²x‘t ŽšÝÙÿÀÇ^ný PK IW™k‚½÷ á _rels/.relsUT dìd dìd dìd’ÏNÃ0‡ï{ŠÈ÷ÕÝ@¡¥» ¤Ý*`%îÑ&QâÁöö‚J£ì°cœŸ¿|¶²ÙÆA½rL½wVE Šñ¶w†çúay * 9Kƒw¬áÈ ¶ÕbóÄIîI]’Ê—4t"á1™ŽGJ…ìòMããH’±Å@æ…ZÆuYÞ`üÍ€jÂT;«!îì T}|Û7MoøÞ›ýÈNN<|v–í2ÄÜ¥ÏèšbË¢Ázó˜Ë )„"£OÏ7ú{ZYÈ’yÞç#1'tuÉM?6o>Z´_å9›ëKÚ˜}?þ³žÏÌ·N>fµx PK IWª½e ¢ U € word/document.xmlUT dìdPK IWþË3” z €J¢ word/settings.xmlUT dìdPK IWC‡{š' ƒ €¤ docProps/custom.xmlUT dìdPK IW츱=Œ €‡¥ [Content_Types].xmlUT dìdPK IWV%ë±" €U§ docProps/app.xmlUT dìdPK IW€RŒ 3 €¶¨ docProps/core.xmlUT dìdPK IWkòDn ô €ª word/_rels/document.xml.relsUT dìdPK IW;$î €Î« word/fontTable.xmlUT dìdPK IW+åäz] ÷. €ý¬ word/numbering.xmlUT dìdPK IW¤2×r- ¿ €›° word/styles.xmlUT dìdPK IWMFÒ ø €´ word/header1.xmlUT dìdPK IWF— T e €· word/media/image1.jpegUT dìdPK IW!Yéáå €°Ë word/media/image2.pngUT dìdPK IW°Àºë ú €ÙÌ word/media/image3.pngUT dìdPK IW$“†ª L €Î word/footer1.xmlUT dìdPK IWzaGôM €ñÑ word/footer2.xmlUT dìdPK IW–µâº P €}Õ word/theme/theme1.xmlUT dìdPK IW™k‚½÷ á €{Û _rels/.relsUT PK ! bîh^ [Content_Types].xml ¢( ¬”ËNÃ0E÷HüCä-Jܲ@5í‚Ç*Q>Àēƪc[žiiÿž‰ûB¡j7±ÏÜ{2ñÍh²nm¶‚ˆÆ»R‹ÈÀU^7/ÅÇì%¿’rZYï @1__f› ˜q·ÃR4DáAJ¬h>€ãÚÇV߯¹ªZ¨9ÈÛÁàNVÞ8Ê©ÓãÑÔji){^óã-I‹"{Üv^¥P!XS)bR¹rú—K¾s(¸3Õ`cÞ0†½ÝÎß»¾7M4²©ŠôªZÆk+¿|\|z¿(Ž‹ôPúº6h_-[ž@!‚ÒØ Pk‹´2nÏ}Ä?£LËð Ýû%áÄßdºždN"m,à¥ÇžDO97*‚~§Èɸ8ÀOíc|n¦Ñ äEøÿöéºóÀBÉÀ!$}‡íàÈé;{ìÐå[ƒîñ–é2þ ÿÿ PK ! µU0#ô L _rels/.rels ¢( ¬’MOÃ0†ïHü‡È÷ÕÝBKwAH»!T~€Iܵ£$Ý¿'TƒG½~üÊÛÝ<êÈ!öâ4¬‹;#¶w†—úqu *&r–Fq¬áÄvÕõÕö™GJy(v½*«¸¨¡KÉß#FÓñD±Ï.W ¥†=™ZÆMYÞbø®ÕBS톰·7 ê“Ï›×–¦é ?ˆ9LìÒ™ÈsbgÙ®|Èl!õùUSh9i°bžr:"y_dlÀóD›¿ý|-NœÈR"4ø2ÏGÇ% õZ´4ñËyÄ7 ëÈðÉ‚‹¨Þ ÿÿ PK ! Q48wÛ — xl/workbook.xml¤UÙnâ0}iþ!cñ‡ *–¢AšVU×$dC¬&vÆv UÕŸë@XÊK§/¹p|Žï¹N÷b“¥Ö •Š ÞC¸î"‹òHÄŒ¯zèá~b·‘¥4á1I§=ôJºèÿüÑ] ù¼âÙ ®z(Ñ:GE ͈ª‹œrˆ,…̈†©\9*—”Ä*¡Tg©ã¹nàd„q´Eåg0ÄrÉ":Q‘Q®· ’¦D}•°\UhYô¸ŒÈç"·#‘å ±`)Ó¯%(²²(œ®¸d‘‚ì nZ w v¡ñª• t¶TÆ")”Xê:@;[Ògú±ë`|²›ó=ø’ïHúÂL÷¬dðEVÁ+8€a÷Ûh¬Uz%„Íû"ZsÏÍCýî’¥ôqk]‹äù5ÉL¦Rd¥Dé˘i÷P ¦bM/|dÉ",…¨çãFNoçiûéë>aêiçsó#ðÄ ÕTr¢éHp ÜIú®ÝJìQ"ÀÜÖ-ý[0I¡¦ÀZ Z…d¡nˆN¬B¦=4 g %PDF-1.4 %âãÏÓ 3 0 obj << /Linearized 1 /L 422775 ÿØÿà JFIF ÿÛ C ÿÛ C ÿÀ X" ÿÄ ÿÄ H !1A"Qaq2‘¡#±ÁBRÑ3Cbrá$S‚¢²ð4ñ%6DTc’ÂsÿÄ ÿÄ = !1AQ"aq‘Á2R¡±BÑð#3br’²4á$‚¢ÂñÿÚ ? áHBßÝ`„! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! ! stream
3
�F\�� � $ @ s� d dl Z d dlmZ d dlmZ d dlmZmZmZm Z m
Z
mZ d dlm
ZmZmZ d dlmZ d dlmZmZ d dlmZ d d lmZmZmZ m!Z"m#Z$m%Z&m'Z(m)Z* d
ddd
ddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-g$Z+ej,Z-ej.Z/dnZ0ej1Z2ej3Z4ej5Z6ej7Z8G d1d� de9�Z:ee e:�Z;e*e:�Z<d2d3� Z=d4d5� Z>dod6d7�Z?d8d9� Z@d:d;� ZAd<d=� ZBG d>d?� d?eC�ZDG d@d� deC�ZEeeEeFdAeG�ZHG dBdC� dCeC�ZIdDd� ZJdEd� ZKG dFd� deC�ZLeeLeFdGeG�ZMG dHd� deC�ZNeeNeFdIeG�ZOG dJd� deC�ZPeePeFdKeG�ZQG dLd� deC�ZReeReFdMeG�ZSG dNd� deC�ZTG dOd� deC�ZUeeUeFdPeG�ZVG dQd� de9�ZWG dRd� deC�ZXdSd� ZYdTd� ZZdUd� Z[dpdVd�Z\G dWd� deC�Z]G dXd � d eC�Z^ee^eFdYeG�Z_G dZd!� d!eC�Z`ee`eFd[eG�ZaG d\d"� d"eC�ZbeebeFd]eG�ZcG d^d#� d#eC�ZdeedeFd_eG�ZeG d`da� daeC�Zfdbd$� Zgdqdcd%�Zhddd&� Zided'� Zjdfd(� Zkdgd)� Zldhd*� Zmdid+� Zndjd,� Zodrdkd-�Zpejq� ejr� ejsdl� dS )s� N)� b16encode)�partial)�__eq__�__ne__�__lt__�__le__�__gt__�__ge__)�
integer_types� text_type�PY3)�x509)�dsa�rsa)�
deprecated)�ffi�lib�exception_from_error_queue�byte_string�native�UNSPECIFIED�text_to_bytes_and_warn�make_assert�FILETYPE_PEM�
FILETYPE_ASN1�
FILETYPE_TEXT�TYPE_RSA�TYPE_DSA�Error�PKey�get_elliptic_curves�get_elliptic_curve�X509Name�
X509Extension�X509Req�X509�X509StoreFlags� X509Store�X509StoreContextError�X509StoreContext�load_certificate�dump_certificate�dump_publickey�dump_privatekey�Revoked�CRL�PKCS7�PKCS12�NetscapeSPKI�load_publickey�load_privatekey�dump_certificate_request�load_certificate_request�sign�verify�dump_crl�load_crl�load_pkcs7_data�load_pkcs12� � � c @ s e Zd ZdZdS )r z7
An error occurred in an `OpenSSL.crypto` API.
N)�__name__�
__module__�__qualname__�__doc__� rD rD �/usr/lib/python3.6/crypto.pyr N s c C s ddl m} | S )ap
Importing the backend from cryptography has the side effect of activating
the osrandom engine. This mutates the global state of OpenSSL in the
process and causes issues for various programs that use subinterpreters or
embed Python. By putting the import in this function we can avoid
triggering this side effect unless _get_backend is called.
r )�backend)Z,cryptography.hazmat.backends.openssl.backendrF )rF rD rD rE �_get_backendX s rG c C s t d| f ��dS )z�
An OpenSSL API failed somehow. Additionally, the failure which was
encountered isn't one that's exercised by the test suite so future behavior
of pyOpenSSL is now somewhat less predictable.
zUnknown %s failureN)�RuntimeError)�whererD rD rE �_untested_errord s rJ c C sd | dkrt jt j� �}t j}n(tjd| �}t j|t| ��}|fdd�}t|tj k� tj
||�}|S )z�
Allocate a new OpenSSL memory BIO.
Arrange for the garbage collector to clean it up automatically.
:param buffer: None or some bytes to use to put into the BIO so that they
can be read out.
Nzchar[]c S s
t j| �S )N)�_lib�BIO_free)�bio�refrD rD rE �free~ s z_new_mem_buf.<locals>.free)rK �BIO_new� BIO_s_memrL �_ffi�newZBIO_new_mem_buf�len�_openssl_assert�NULL�gc)�bufferrM rO �datarD rD rE �_new_mem_bufm s rZ c C s. t jd�}tj| |�}t j|d |�dd� S )zO
Copy the contents of an OpenSSL BIO object into a Python byte string.
zchar**r N)rR rS rK ZBIO_get_mem_datarX )rM �
result_bufferZ
buffer_lengthrD rD rE �_bio_to_string� s
r\ c C s2 t |t�std��tj| |�}|dkr.td��dS )a�
The the time value of an ASN1 time object.
@param boundary: An ASN1_TIME pointer (or an object safely
castable to that type) which will have its value set.
@param when: A string representation of the desired time value.
@raise TypeError: If C{when} is not a L{bytes} string.
@raise ValueError: If C{when} does not represent a time in the required
format.
@raise RuntimeError: If the time value cannot be set for some other
(unspecified) reason.
zwhen must be a byte stringr zInvalid stringN)�
isinstance�bytes� TypeErrorrK ZASN1_TIME_set_string�
ValueError)�boundary�when�
set_resultrD rD rE �_set_asn1_time� s
rd c C s� t jd| �}tj|�dkrdS tj|�tjkr>t jtj|��S t jd�}tj | |� |d t j
krltd� n6t jd|d �}tj|�}t j|�}tj|d � |S dS )a]
Retrieve the time value of an ASN1 time object.
@param timestamp: An ASN1_GENERALIZEDTIME* (or an object safely castable to
that type) from which the time value will be retrieved.
@return: The time value from C{timestamp} as a L{bytes} string in a certain
format. Or C{None} if the object contains no time value.
zASN1_STRING*r NzASN1_GENERALIZEDTIME**�ASN1_TIME_to_generalizedtime)
rR �castrK �ASN1_STRING_lengthZASN1_STRING_typeZV_ASN1_GENERALIZEDTIME�string�ASN1_STRING_datarS re rV rJ ZASN1_GENERALIZEDTIME_free)Z timestampZstring_timestampZgeneralized_timestampZstring_data�
string_resultrD rD rE �_get_asn1_time� s
rk c @ s$ e Zd Zdd� Zdd� Zdd� ZdS )�_X509NameInvalidatorc C s
g | _ d S )N)�_names)�selfrD rD rE �__init__� s z_X509NameInvalidator.__init__c C s | j j|� d S )N)rm �append)rn �namerD rD rE �add� s z_X509NameInvalidator.addc C s x| j D ]}|`qW d S )N)rm �_name)rn rq rD rD rE �clear� s z_X509NameInvalidator.clearN)r@ rA rB ro rr rt rD rD rD rE rl � s rl c @ sT e Zd ZdZdZdZdd� Zdd� Zedd � �Z d
d� Z
dd
� Zdd� Zdd� Z
dS )r zD
A class representing an DSA or RSA public key or key pair.
FTc C s"