%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /usr/lib/python3/dist-packages/reportlab/platypus/__pycache__/
Upload File :
Create Path :
Current File : //usr/lib/python3/dist-packages/reportlab/platypus/__pycache__/flowables.cpython-312.pyc

�

C��eJw���dZdZddlZddlmZmZddlmZmZddlm	Z	ddl
mZmZm
Z
ddlmZdd	lmZmZmZdd
lmZddlmZddlmZdd
lmZmZmZmZdj?�Z Gd�d�Z!Gd�d�Z"Gd�de"�Z#d�Z$d�d�Z%dZ&d�Z'd�Z(Gd�de"�Z)Gd�de"�Z*Gd�de"�Z+Gd �d!e+�Z,Gd"�d#e+�Z-Gd$�d%e-�Z.Gd&�d'e.�Z/Gd(�d)e.�Z0Gd*�d+e,�Z1d�d,�Z2d-�Z3Gd.�d/�Z4Gd0�d1e4e"�Z5Gd2�d3e5�Z6Gd4�d5e"�Z7d6�Z8Gd7�d8e"�Z9Gd9�d:e"�Z:Gd;�d<e+�Z;Gd=�d>e"�Z<Gd?�d@e"�Z=GdA�dB�Z>dC�Z?GdD�dEe4�Z@GdF�dGe@e"�ZAdH�ZBdI�ZCGdJ�dKe@e"�ZDGdL�dM�ZEGdN�dOe@eEe"�ZFGdP�dQe+�ZGGdR�dSe+�ZHGdT�dUe+�ZIGdV�dWeEe+�ZJGdX�dYe,�ZKGdZ�d[e�ZLGd\�d]eK�ZMGd^�d_e+�ZNdd`lOmPZPeQdadbdcdddedfdgdhdidj�k�
ZRd�dl�ZSGdm�dn�ZTdo�ZUGdp�dqe"�ZVGdr�dseV�ZWddtlmXZXGdu�dv�ZYGdw�dx�ZZGdy�dze@e"�Z[Gd{�d|e"�Z\Gd}�d~e+�Z]Gd�d�e]�Z^Gd��d�e]�Z_Gd��d�e_�Z`Gd��d�e_�ZaGd��d�ea�ZbGd��d�e+�ZcGd��d�e+�Zdy)�z3.3.0a�
A flowable is a "floating element" in a document whose exact position is determined by the
other elements that precede it, such as a paragraph, a diagram interspersed between paragraphs,
a section header, etcetera.  Examples of non-flowables include page numbering annotations,
headers, footers, fixed diagrams or logos, among others.

Flowables are defined here as objects which know how to determine their size and which
can draw themselves onto a page with respect to a relative "origin" position determined
at a higher level. The object's draw() method should assume that (0,0) corresponds to the
bottom left corner of the enclosing rectangle that will contain the object. The attributes
vAlign and hAlign may be used by 'packers' as hints as to how the object should be placed.

Some Flowables also know how to "split themselves".  For example a
long paragraph might split itself between one page and the next.

Packers should set the canv attribute during wrap, split & draw operations to allow
the flowable to work out sizes etc in the proper context.

The "text" of a document usually consists mainly of a sequence of flowables which
flow into a document from top to bottom (with column and page breaks controlled by
higher level components).
�N)�deepcopy�copy)�gray�	lightgrey)�fp_str)�TA_LEFT�	TA_CENTER�TA_RIGHT)�
_baseFontName)�strTypes�rl_safe_exec�annotateException)�ABag)�pdfutils)�stringWidth)�_FUZZ�overlapAttachedSpace�ignoreContainerActions�listWrapOnFakeWidthaAnchorFlowable BalancedColumns BulletDrawer CallerMacro CondPageBreak DDIndenter DocAssert
        DocAssign DocExec DocIf DocPara DocWhile FailOnDraw FailOnWrap Flowable FrameBG FrameSplitter
        HRFlowable Image ImageAndFlowables KeepInFrame KeepTogether LIIndenter ListFlowable ListItem
        Macro NullDraw PTOContainer PageBreak PageBreakIfNotEmpty ParagraphAndImage Preformatted
        SetPageTopFlowables SetTopFlowables SlowPageBreak Spacer TopPadder TraceInfo UseUpSpace XBox
        splitLine splitLinesc��eZdZdZd�Zy)�	TraceInfoz0Holder for info about where an object originatedc�J�d|_d|_d|_d|_d|_y)Nz	(unknown)���)�srcFile�startLineNo�startLinePos�	endLineNo�
endLinePos��selfs �>/usr/lib/python3/dist-packages/reportlab/platypus/flowables.py�__init__zTraceInfo.__init__0s'��"���������������N��__name__�
__module__�__qualname__�__doc__r"�r#r!rr.s
��6�r#rc��eZdZdZdZdZd�Zd�Zdd�Zdd�Z	d�Z
d�Zd	�Zd
�Z
d�Zd�Zd
�Zd�Zd�Zdd�Zed��Zd�Zd�Zy)�Flowablez�Abstract base class for things to be drawn.  Key concepts:

    1. It knows its size
    2. It draws in its own coordinate system (this requires the
       base API to provide a translate() function.

    rc�t�d|_d|_d|_d|_d|_d|_d|_d|_y)Nr�LEFT�BOTTOM)�width�height�wrapped�hAlign�vAlign�
_traceInfo�
_showBoundary�encodingrs r!r"zFlowable.__init__HsA����
����������������!���
��
r#c�6�||_|j�|`y)z#ensure canv is set on and then drawN)�canv�draw�r r8s  r!�_drawOnzFlowable._drawOnZs����	��	�	���Ir#c���|r_t|d�rS|j}|ddtfvr
|d|zz
}|S|dtfvr||z
}|S|dtfvrtdt
|�z��|S)Nr2�CENTER�CENTRE��?�RIGHTr-zBad hAlign value )�hasattrr2r	r
r�
ValueError�str)r �x�sW�as    r!�
_hAlignAdjustzFlowable._hAlignAdjust`s���
�'�$�x�(����A��X�h�	�2�2��S��V���
��	�w�x�(�(��R������6�'�*�*� �!4�S��V�!;�<�<��r#c�X�|j||�}|j�|j||�|j|�t	|d�rI|j
r=|j
t�|jdd|j|j�|j�y)z6Tell it to draw itself on the canvas.  Do not overrider5rN)rG�	saveState�	translater;rAr5�setStrokeColorr�rectr/r0�restoreState�r �canvasrD�y�_sWs     r!�drawOnzFlowable.drawOnks������q��%����������A�����V���4��)�d�.@�.@��!�!�$�'��K�K��!�D�J�J����4����r#c�F�||_|j||�\}}|`||fS)zWintended for use by packers allows setting the canvas on
        during the actual wrap)r8�wrap)r r8�aW�aH�w�hs      r!�wrapOnzFlowable.wrapOnws-����	��y�y��B����1��I��!�t�r#c�2�|j|jfS)z�This will be called by the enclosing frame before objects
        are asked their size, drawn or whatever.  It returns the
        size actually used.�r/r0�r �
availWidth�availHeights   r!rTz
Flowable.wraps���
�
�D�K�K�(�(r#c�0�t|d|j�S)z-This should return the minimum required width�	_minWidth)�getattrr/rs r!�minWidthzFlowable.minWidth�s���t�K��
�
�3�3r#c�<�||_|j||�}|`|S)zXintended for use by packers allows setting the canvas on
        during the actual split)r8�split)r r8rUrV�Ss     r!�splitOnzFlowable.splitOn�s%����	��J�J�r�"����I��r#c��gS)aoThis will be called by more sophisticated frames when
        wrap fails. Stupid flowables should return []. Clever flowables
        should split themselves and return a list of flowables.
        If they decide that nothing useful can be fitted in the
        available space (e.g. if you have a table and not enough
        space for the first row), also return []r))r r]�availheights   r!rdzFlowable.split�s	���	r#c��t|d�r|jSt|d�r,t|jd�r|jjSy)zOreturns boolean determining whether the next flowable should stay with this one�keepWithNext�styler)rArjrkrs r!�getKeepWithNextzFlowable.getKeepWithNext�sC���4��'��0A�0A�)A�
�T�'�
"�w�t�z�z�.�'I�RV�R\�R\�Ri�Ri�Ki�r#c��t|d�r|jSt|d�r,t|jd�r|jjSy)zXreturns how much space should follow this item if another item follows on the same page.�
spaceAfterrkr)rArnrkrs r!�
getSpaceAfterzFlowable.getSpaceAfter�sA���4��%�d�o�o�'=�
�T�'�
"�w�t�z�z�,�'G�PT�PZ�PZ�Pe�Pe�Ie�r#c��t|d�r|jSt|d�r,t|jd�r|jjSy)z[returns how much space should precede this item if another item precedess on the same page.�spaceBeforerkr)rArqrkrs r!�getSpaceBeforezFlowable.getSpaceBefore�sC���4�
�&�t�/?�/?�(?�
�T�'�
"�w�t�z�z�-�'H�QU�Q[�Q[�Qg�Qg�Jg�r#c��y)z?Hook for IndexingFlowables - things which have cross referencesrr)rs r!�
isIndexingzFlowable.isIndexing�s��r#Nc��t|d�r|jd��}n$t|d�rt|j�}nd}|r|r|d|}d|jj
�dt
t|���|j��d	|��S)
z�
        This method should attempt to return a string that can be used to identify
        a particular flowable uniquely. The result can then be used for debugging
        and or error printouts
        �getPlainText�)�identify�textz...N�<� at �>)	rArvrCry�	__class__r%�hex�id�
_frameName�r �maxLen�rs   r!�identityzFlowable.identity�sw���4��(��!�!�1�!�-�A�
�T�6�
"��D�I�I��A��A����'�6�
�A��#'�>�>�#:�#:�C��4��M�4�?�?�K\�^_�`�`r#c�2�tt|dd�dd�S)Nr8�_doctemplate�rars r!r�zFlowable._doctemplate�s���w�t�F�4�0���E�Er#c�0�t|j|d�S�N)rar��r rFs  r!�_doctemplateAttrzFlowable._doctemplateAttr�s���t�(�(��4�0�0r#c�~�t|dd�}|s|jd�}|r|jrd|jzSy)N�_frame�framez	 frame=%s�)rar�r�r �fs  r!r�zFlowable._frameName�s<���D��$�'���d�+�+�G�4�!�����k�A�D�D�0�0�r#�rr�)r%r&r'r(�_fixedWidth�_fixedHeightr"r;rGrRrYrTrbrfrdrlrorrrtr��propertyr�r�r�r)r#r!r+r+=sz����K��L��$�	�
��)�4�������a� �F��F�1�r#r+c�$�eZdZdZdd�Zd�Zd�Zy)�XBoxz~Example flowable - a box with an x through it and a caption.
    This has a known size, so does not need to respond to wrap().c�X�tj|�||_||_||_yr�)r+r"r/r0ry)r r/r0rys    r!r"z
XBox.__init__�s%�����$����
������	r#c�V�d|j�d|j�d|j�d�S)NzXBox(w=z, h=z, t=�))r/r0ryrs r!�__repr__z
XBox.__repr__�s��+/�:�:�t�{�{�D�I�I�N�Nr#c���|jjdd|j|j�|jj	dd|j|j�|jj	d|j|jd�|jjtd�|jjd|jzd|jz|j�y)Nr�r?)	r8rLr/r0�line�setFontr�drawCentredStringryrs r!r9z	XBox.draw�s����	�	���q�!�T�Z�Z����5��	�	���q�!�T�Z�Z����5��	�	���q�$�+�+�t�z�z�1�5�	
�	�	���-��+��	�	�#�#�C��
�
�N�C����O�T�Y�Y�Or#N)zA Box)r%r&r'r(r"r�r9r)r#r!r�r��s��E��O�Pr#r�c�&�t|�r=|dj�dk(r'|dd}t|�r|dj�dk(r�'t|�r=|dj�dk(r'|dd}t|�r|dj�dk(r�'|S)Nrr�rwr)�len�strip)�liness r!�_trimEmptyLinesr��s���

�e�*��q����)�R�/��a�b�	���e�*��q����)�R�/�

�e�*��r����*�b�0��c�r�
���e�*��r����*�b�0��Lr#c��|jd�}|dkDr:t|�}g}|D]&}||dj�}|j|��(|St|�}|S)z�
    tidy up text - carefully, it is probably code.  If people want to
    indent code within a source script, you can supply an arg to dedent
    and it will chop off that many character, otherwise it leaves
    left edge intact.
    �
rN)rdr��rstrip�append)ry�dedentr��	templinesr�s     r!�	_dedenterr��so��
�J�J�t��E�
�a�x�#�E�*�	����	�D����=�'�'�)�D��L�L���	��L� ��&���Lr#z[{( ,.;:/\-c��|�t}|�d}g}|D]1}t|�|kDrt|||||��!|j|��3|S)Nr�)�SPLIT_CHARSr��	splitLiner�)r��maximum_length�split_characters�new_line_characters�lines_splittedr�s      r!�
splitLinesr�sf����&���"� ���N��(���t�9�~�%��d�N�N��1�
3�
�!�!�$�'�(��r#c�\�d}|r�t|�dkDr�d}t|�|krt|�}nt|�D]}|||vs�|dz}�|dk(rdz}|r%|j|d|�d}|t|�z}n|j||d|z�||d}|rt|�dkDr��yyyy)NTrrwF)r��ranger�)�
line_to_splitr�r�r�r��
first_line�split_index�
line_indexs        r!r�r�s����J��C�
�.�q�0����}���/��m�,�K�$�N�3�
1�
�!��,�0@�@�",�q�.�K�	
1���>�$�q�.�K���!�!�-��+�">�?��J��c�"5�6�6�N��!�!�"5��!�K�(�#)�
*�&�k�l�3�
�?�C�
�.�q�0�-�0�-r#c�6�eZdZdZd	d�Zd�Zd�Zd�Zd�Zd�Z	y)
�Preformatteda�This is like the HTML <PRE> tag.
    It attempts to display text exactly as you typed it in a fixed width "typewriter" font.
    By default the line breaks are exactly where you put them, and it will not be wrapped.
    You can optionally define a maximum line length and the code will be wrapped; and
    extra characters to be inserted at the beginning of each wrapped line (e.g. '> ').
    Nc��||_||_t||�|_|r!|rt	|j|||�|_yyy)z�text is the text to display. If dedent is set then common leading space
        will be chopped off the front (for example if the entire text is indented
        6 spaces or more then each line will have 6 spaces removed from the front).
        N)rk�
bulletTextr�r�r�)r ryrkr�r��
maxLineLength�
splitChars�newLineCharss        r!r"zPreformatted.__init__>sH��
��
�$����t�F�+��
��M�#� $�
�
� -� *� ,�	�D�J�"�4r#c��|j}d}|�dt|�z}|�ddj|j��d�S)Nz
Preformatted(zPreformatted(bulletText=%s,z'''\ 
r�z'''))r��repr�joinr�)r �bT�Hs   r!r�zPreformatted.__repr__Ns;��
�_�_����
�>�-��R��8�A�%&��	�	�$�*�*�(=�>�>r#c��||_|jjt|j�z|_|j|j
fSr�)r/rk�leadingr�r�r0r\s   r!rTzPreformatted.wrapUs:����
��j�j�(�(��T�Z�Z��8����
�
�D�K�K�(�(r#c
��|j}|j}|j}t|jD�cgc]}t|||���c}�Scc}wr�)rk�fontSize�fontName�maxr�r)r rkr�r�r�s     r!rbzPreformatted.minWidthZsC���
�
���>�>���>�>���D�J�J�O�D�K��X�h�7�O�P�P��Os�Ac��||jjkrgSt|dz|jjz�}dj|jd|�}dj|j|d�}|j}|j
dk7rt
|�}d|_t||j�t||�gS)N��?r�r)rkr��intr�r��firstLineIndentrr�)r r]r^�linesThatFit�text1�text2rks       r!rdzPreformatted.split`s�������+�+�+��I��;��,�t�z�z�/A�/A�A�B���	�	�$�*�*�Q�|�4�5���	�	�$�*�*�\�]�3�4���
�
��� � �A�%��U�O�E�$%�E�!��U�D�J�J�/��e�U�1K�L�Lr#c��|jj}|j|jjz
}|jjd�|jjr/|jj|jj�|jj||�}|j|jj|jj|jj�|jD]}|j|��|jj|�y)Nz%PreformattedPara)rk�
leftIndentr0r�r8�
addLiteral�	textColor�setFillColor�	beginTextr�r�r�r��textLine�drawText)r �cur_x�cur_y�txrys     r!r9zPreformatted.drawqs���
�
�
�%�%�����d�j�j�1�1�1���	�	���0�1��:�:����I�I�"�"�4�:�:�#7�#7�8�
�Y�Y�
 �
 ���
.��
�
�
�D�J�J�'�'��J�J�'�'��J�J�&�&�	(��J�J�	�D��K�K���	��	�	���2�r#)NrNNr�)
r%r&r'r(r"r�rTrbrdr9r)r#r!r�r�7s'���� ?�)�
Q�M�"r#r�c�\�eZdZdZdZdZ		dd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zdd
�Zy)�Imageaan image (digital picture).  Formats supported by PIL/Java 1.4 (the Python/Java Imaging Library
       are supported. Images as flowables may be aligned horizontally in the
       frame with the hAlign parameter - accepted values are 'CENTER',
       'LEFT' or 'RIGHT' with 'CENTER' being the default.
       We allow for two kinds of lazyness to allow for many images in a document
       which could lead to file handle starvation.
       lazy=1 don't open image until required.
       lazy=2 open image when required then shut it.
    rwNc	��||_||_t|d�}	d|_|	r||_t|�|_nBt|d�r(||_t|�|_d|_d|_d}	n|x|_|_||_|	s�tjj|�ddvrsddlm
}
|
|d	�}		tj|�}	|j#�|d|_|d|_|r
|d
|_d|_|j!|||d�y|	r|j!|||d�y|j!||||�y#|j!||||�Y|j#�yxYw#|j#�wxYw)z8If size to draw at not specified, get it from the image.�readN�	_renderPyTrw)z.jpgz.JPGz.jpegz.JPEGr)�
open_for_read�b�)r2�_maskrA�_drawing�_filer��filename�_img�_dpi�os�path�splitext�reportlab.lib.utilsr�r�readJPEGInfo�_setup�close�
imageWidth�imageHeight)
r r�r/r0�kind�mask�lazyr2�useDPI�fpr�r��infos
             r!r"zImage.__init__�sf�������
�
�X�f�
%����
�
�!�D�J� ��N�D�M�
�X�k�
*�$�D�M��x�.�D�M��D�J��D�I��B�)1�1�D�J�����	��b�g�g�&�&�x�0��3�7Y�Y�
:��h��,�A�
��#�0�0��3�D����	�"�1�g�D�O�#�A�w�D��� ��G��	��D�I��K�K��f�T�!�,�
��K�K��f�T�!�,��K�K��f�T�$�/����K�K��f�T�$�7�����	�����	�s�<E
�
E2� E5�2E5�5Fc��|j}|rH|ddk7r|xjd|dzzc_|ddk7r|xjd|dzzc_yyy)Nr�HgR@rw)r�r�r�)r �dpis  r!�
_dpiAdjustzImage._dpiAdjust�sX���i�i����1�v�r�z�4�?�?�d�S��V�m�;�?��1�v�r�z�4�+�+�t�c�!�f�}�<�+�z�r#c�h�||_||_||_||_|dkr|j	�yy�Nr)�_lazy�_width�_height�_kind�_setup_inner)r r/r0r�r�s     r!r�zImage._setup�s2����
���������
���7�D�%�%�'�7r#c��|j}|j}|j}|j}|ra|j	�\|_|_|jr�t|d�rv|jjjdd�|_nJ|jr>|jj|jjc|_|_d|_|j�|j dk\r|`|dvr+|xs|j
|_|xs|j|_y|dvr/|j
|zdz|_|j|zdz|_y|d	vrat't)|�|j
zt)|�|jz�}|j
|z|_|j|z|_yy)
N�_imager�)r�r�F�)�direct�absolute)�
percentage�%�{�G�z�?)�bound�proportional)rrrr��getSizer�r�r�rArr��getr�r/r0r�r�	drawWidth�
drawHeight�min�float)r r/r0r��img�factors      r!rzImage._setup_inner�sn�����������z�z���i�i���03���
�-�D�O�T�-��y�y�W�S��2��J�J�O�O�/�/��g�>��	�
�]�]�04�
�
�0C�0C�D�M�M�DX�DX�-�D�O�T�-��D�I������:�:�q�=�d�i��(�(�"�5�d�o�o�D�N�$�8��(8�(8�D�O�
�'�
'�!�_�_�U�2�4�7�D�N�"�.�.�v�5�d�:�D�O�
�-�
-���u��d�o�o�5�e�F�m�D�DT�DT�6T�U�F�!�_�_�V�3�D�N�"�.�.�v�5�D�O�.r#c��|j|tzkDs|j|tzkDr|j|jf|_t	t|�|jzt|�|jz�}|xj|zc_|xj|zc_|j|jfSr�)rrr�_oldDrawSizerr)r rUrVrs    r!�
_restrictSizezImage._restrictSize�s����>�>�"�U�(�"�d�o�o�b��h�&>� $������ ?�D����r��4�>�>�1�%��)�D�O�O�2K�L�F��N�N�f�$�N��O�O�v�%�O��~�~�t���.�.r#c�B�t|dd�}|r|\|_|_yy)Nr)rarr)r �dwhs  r!�_unRestrictSizezImage._unRestrictSize�s&���d�>�$�/���.1�+�D�N�D�O�r#c�D�|dk(r`ddlm}||j�|_t	|jt
�sd|_|jdk\rd|_|jS|dvr|j�|j|Stdt|�|fz��)Nr�r)�ImageReaderr	rw)rrr�r�z<Image @ 0x%x>.%s)r�r r�r��
isinstancerrr�__dict__�AttributeErrorr)r rFr s   r!�__getattr__zImage.__getattr__�s����f�9�7�#�D�J�J�/�D�I��d�j�j��2�!��
��:�:�q�=�q�$�*��9�9��
�G�
G������=�=��#�#��0�B�t�H�Q�<�?�@�@r#c�2�|j|jfSr�)rrr\s   r!rTz
Image.wrap�s���~�~�t���.�.r#c��t|dd�}t|dd�}|j}|r�|jt|j�z}|j
t|j�z}|j}	|j||�|j|j||�||_y|j}|dk\rd|_|jj|jxs|j|||j|j
|j��|dk\rdx|_
|_||_yy#||_wxYw)N�_offs_xr�_offs_yr	rw)r�)rar�rrr�rr��	transform�scalerRr8r�	drawImager�r�r�r�)r �dx�dy�d�sx�sy�otransr�s        r!r9z
Image.draws��
�T�)�A�
&��
�T�)�A�
&���M�M������%����"8�8�B����5��)9�)9�#:�:�B��[�[�F�
%�����2��������2�b�)�$����:�:�D��Q�w�Q��
��I�I���D�I�I�$>����$&�$&�$(�N�N�$(�O�O�)-���
 �
&��Q�w�)-�-��	�D�J�!��
���%���s�:/D<�<	Ec��tj||�}|dddk(r/t|jt�r|dd�d|j�d�}|S)N���z>...z
 filename=r|)r+r�r!r�rCr�s   r!r�zImage.identitysG�����d�6�*���R�S�6�6�>�j����s�;�%&�s��V�D�M�M�:�A��r#)NNr
�autorwr=Fr�)r%r&r'r(r�r�r"r�r�rrrr$rTr9r�r)r#r!r�r��sM����K��L�?G�>C�*0�X=�(�6�2/�2�
A�/�"�6r#r�c��eZdZd�Zy)�NullDrawc��yr�r)rs r!r9z
NullDraw.draw#���r#N)r%r&r'r9r)r#r!r6r6"s��
r#r6c�&�eZdZdZdZdZdd�Zd�Zy)�SpacerzdA spacer just takes up space and doesn't draw anything - it guarantees
       a gap between objects.rwc�@�||_|rd|_||_||_y)Ng-C��6?)r/r0�spacebefore)r r/r0�isGlues    r!r"zSpacer.__init__+s"����
���D�K�%�D����r#c�h�|jj�d|j�d|j�d�S)N�(�, r�)r}r%r/r0rs r!r�zSpacer.__repr__2s!��#�~�~�6�6�t�z�z�4�;�;�O�Or#N�F)r%r&r'r(r�r�r"r�r)r#r!r:r:&s��!��K��L��Pr#r:c��eZdZd�Zd�Zd�Zy)�
UseUpSpacec��yr�r)rs r!r"zUseUpSpace.__init__6r8r#c�4�d|jjzS)Nz%s())r}r%rs r!r�zUseUpSpace.__repr__9s������/�/�/�/r#c�,�||_||_||dz
fS)N�:�0�yE>r[r\s   r!rTzUseUpSpace.wrap<s ����
�!����;�t�+�,�,r#N)r%r&r'r"r�rTr)r#r!rCrC5s��
�0�-r#rCc� �eZdZdZ	dd�Zd�Zy)�	PageBreakrwNc��||_yr�)�nextTemplate)r rKs  r!r"zPageBreak.__init__Es
��(��r#c��|jj�d|jrt|j��d�Sd�d�S)Nr?r�r�)r}r%rKr�rs r!r�zPageBreak.__repr__Hs9���>�>�2�2�d�N_�N_�4��8I�8I�3J�3g�h�h�eg�3g�h�hr#r�)r%r&r'�
locChangerr"r�r)r#r!rIrIAs���J�D�)�ir#rIc��eZdZy)�
SlowPageBreakN�r%r&r'r)r#r!rOrOK���r#rOc��eZdZy)�PageBreakIfNotEmptyNrPr)r#r!rSrSNrQr#rSc�,�eZdZdZ	d�Zd�Zd�Zdd�Zy)�
CondPageBreakrwc��||_yr��r0)r r0s  r!r"zCondPageBreak.__init__Ts	����r#c�"�d|j�d�S)NzCondPageBreak(r�rWrs r!r�zCondPageBreak.__repr__Ws��%)�[�[�2�2r#c�~�||jkr.|jd�}|s||fSddlm}|j	|�y)Nr�r��
FrameBreak�rr)r0r��reportlab.platypus.doctemplater[�add_generated_content)r r]r^r�r[s     r!rTzCondPageBreak.wrapZs?���t�{�{�"��%�%�g�.�A��Z��4�4�A�
�#�#�J�/�r#Nc�Z�t|�jdd|j�z�S)Nr�z
,frame=%s))r��replacer��r r�s  r!r�zCondPageBreak.identitybs%���D�z�!�!�#�l�4�?�?�3D�&D�E�Er#r�)r%r&r'rMr"r�rTr�r)r#r!rUrUQs���J�P��3��Fr#rUc�f�t|dd�}t|dd�}|�t}|r%ddlm}	m}
|}t|�x}|_d|_|`	d}d}
d}d}|dd}|�r/|jd�}t|d�r/ddlm}
t||
�r||j|jzz}�O|j||d	�\}}|�|j||f�|r		||�|tkr|tkr��t!||rt#||�n|�}|
|z
}
|s6|j%�}|rt|dd
�r|}t!||z
d�}|
|z
}
n|�|j%�|_d}|j)�}t|dd
�r|}|}|
|z
}
|r��/|�||_||
|z
f|r|_SS#|r|_wwxYw)�;return max width, required height for a list of flowables Fr�Nr�r)�_addGeneratedContent�Indenterrw�frameAction�re��F�_SPACETRANSFER)rarr]rdrerr��_generated_content�poprAr!�left�rightrYr�rr�rrr�_spaceBeforero�_spaceAfter)�Fr]r8�
mergeSpace�obj�dims�	fakeWidth�doct�cframerdre�
doct_frame�Wr��pS�atTopr�rWrX�ss                    r!�_listWrapOnr|es����4��t�,�D�
�T�'�$�
'�F���'�	�
�Q��
�&�z�2�2����$(��!��%�'$�
��
��
����
�a�D������a��A��q��'�C��a��)��!�&�&����.�0�J���(�(�4�
�9�5�C�A�a������a��U�!3��$�Q�v�.��5��q�%�x���A�9�c�!�J�'�!�<�A�
��F�A���$�$�&����q�!1�%�8����A�b�D���A��Q����?�q�7G�7G�7I�C�$4������!�A��q�)�%�0����B�
��G�A�9�:�?�b�C�O��!�B�$�w��#�D�J���6�#�D�J��s�D=F$�
F$�$F0c��t|ttf�s
|duxr|gxsg}ddlm}|D�cgc]}t||�s�|��c}rJd��|Scc}w)z.if it isn't a list or tuple, wrap it in a listNr)�LCActionFlowablez)LCActionFlowables not allowed in sublists)r!�list�tupler]r~)�Vr~rDs   r!�_flowableSublistr��sV���a��e��%�1�D�=�+@�a�S�+F�B�q�?��?�a�
�1�-=� >��?�k�@k�k�?��H��@s�A�Ac��eZdZdd�Zdd�Zy)�_ContainerSpaceNc�j�|�|jn|D] }t|d�r�|j�cSy�Nrfr)�_contentrArr�r �content�cs   r!rrz_ContainerSpace.getSpaceBefore�s9��#*�?�$�-�-��	*�A��1�]�+��'�'�)�)�	*�r#c�|�t|�|jn|�D] }t|d�r�|j�cSyr�)�reversedr�rAror�s   r!roz_ContainerSpace.getSpaceAfter�s<���7�?�$�-�-��H�	)�A��1�]�+����(�(�	)�r#r�)r%r&r'rrror)r#r!r�r��s���r#r�c�2�eZdZdZdd�Zd�Zd�Zd�Zdd�Zy)	�KeepTogetherFNc��ttd�s"ddlm}ddlm}|t_|t_|s|j�g}t|�|_||_y)N�NullActionFlowabler)r�rZ)rAr�r]r�r[r�r��
_maxHeight)r �	flowables�	maxHeightr�r[s     r!r"zKeepTogether.__init__�sJ���|�$8�9�I�A�.@�L�+�&0�L�#���0�0�2�3�I�(��3��
�#��r#c���|j}ttt|��}ddj	|�z}|jdd�}|jj�d|�d|j�d�S)Nr�z
  r?z,maxHeight=r�)	r�r�mapr�r�r`r}r%r�)r r��Ls   r!r�zKeepTogether.__repr__�sX���M�M����T�!��������1����
�I�I�d�F�#��(,���(?�(?��$�/�/�R�Rr#c	�8�g}	t|j||j|��\}}|_|xr|ddxsd|_	||f|_
dfS#td|jj
|jjt|�fz�Y�oxYw)N)rsz%
raised by class %s(%s)@0x%8.8x wrap
rrwi���)r|r�r8rr}r%r&r�_H�_H0�	_wrapInfo)r rUrVrsrxr�s      r!rTzKeepTogether.wrap�s�����	H��d�m�m�B�t�y�y�d�C�C�A�a�����&�D��G�A�J�+�!����B�����(�{���	H��G�4�>�>�Kb�Kb�cg�cq�cq�c|�c|�}�AE�~F�KG�G�
H�s�&A�ABc���t|dd�||fk7r|j||�|jdd}t|dd�x}}|r%t|dd�}|j}|j}|j
|kDxr|jxs||jkD}|j|kDxs|xr|}	|s|	r�d}
|jd�}|r!|r|�}|j}
|j}|r(|jr|s|xr|xrxr
k\xrk\}
n"r 
|jk\r|j
k\rd}
|jd|
r|jn|j��|S)Nr�r��_atTopF�_peekNextFrameTr)
rarTr�rrr�r�r�r��
splitAtTop�insertr[r�)r rUrVre�cfrz�cAW�cAH�C0�C1�fb�panf�nf�nAW�nAHs               r!rdzKeepTogether.split�sP���4��D�)�B�r�7�2�D�I�I�b��4D��M�M�!����T�(�4�0�0��U�
��B�x��-�E��)�)�C��*�*�C�
�W�W�R�Z�
G����0�F�B�t���4F���h�h�r�k�
*�b�l�U��
���B��(�(�)9�:�D��d��V���i�i���j�j���4�?�?�u��G�B�G�2�G�#�s�(�G�s�C�x�H����R�Y�Y��3����<���
�H�H�Q�J�2����4�3J�3J�M�N��r#c
�
�d|jj�dtt|���|j	��ddj|jD�cgc]}|j���c}���}|r|d|S|Scc}w)Nrzr{z> containing :r�r)r}r%r~rr�r�r�r�)r r�r��msgs    r!r�zKeepTogether.identity�s���/3�~�~�/F�/F�s�2�d�8�}�UY�Ud�Ud�Uf�gk�gp�gp�IM�IV�IV�rW�DE�rs�r|�r|�r~�rW�hX�Y����q��=� ��J��	rWs�Br�)	r%r&r'r�r"r�rTrdr�r)r#r!r�r��s!���J�$�S�	��2r#r�c��eZdZdZdZy)�KeepTogetherSplitAtTopzq
    Same as KeepTogether, but it will split content immediately if it cannot
    fit at the top of a frame.
    TN)r%r&r'r(r�r)r#r!r�r��s����Jr#r�c�(�eZdZdZd�Zd�Zd�Zd�Zy)�Macroz�This is not actually drawn (i.e. it has zero height)
    but is executed when it would fit in the frame.  Allows direct
    access to the canvas through the object 'canvas'c��||_yr�)�command)r r�s  r!r"zMacro.__init__�s	����r#c�2�dt|j�zS)Nz	Macro(%s))r�r�rs r!r�zMacro.__repr__�s���T�$�,�,�/�/�/r#c��y�Nr\r)r\s   r!rTz
Macro.wrap�s��r#c�L�t|jdd|ji��y)NrO)�g�l)r
r�r8rs r!r9z
Macro.draws���T�\�\�T�h�t�y�y�-A�Br#N�r%r&r'r(r"r�rTr9r)r#r!r�r��s��8��0��Cr#r�c��yr�r))�args�kwdss  r!�
_nullCallabler�s��r#c�*�eZdZdZdd�Zd�Zd�Zd�Zy)�CallerMacrozf
    like Macro, but with callable command(s)
    drawCallable(self)
    wrapCallable(self,aW,aH)
    Nc�@�|xst|_|xst|_yr�)r��
_drawCallable�
_wrapCallable)r �drawCallable�wrapCallables   r!r"zCallerMacro.__init__
s��)�:�]���)�:�]��r#c�<�d|j�d|j�d�S)NzCallerMacro(�,r�)r�r�rs r!r�zCallerMacro.__repr__s��'+�'9�'9�$�:L�:L�M�Mr#c�*�|j|||�yr�)r��r rUrVs   r!rTzCallerMacro.wraps�����4��2�&�r#c�&�|j|�yr�)r�rs r!r9zCallerMacro.draws�����4� r#�NNr�r)r#r!r�r�s���
;�N��!r#r�c�6�eZdZdZd	d�Zd�Zd�Zd�Zd�Zd�Z	y)
�ParagraphAndImagez combine a Paragraph and an Imagec�J�||_||_||_||_||_yr�)�P�I�xpad�ypad�_side)r r�r�r�r��sides      r!r"zParagraphAndImage.__init__s%����������	���	���
r#c�z�t|jj�|jj��Sr�)r�r�rrr�rs r!rrz ParagraphAndImage.getSpaceBefore!s)���4�6�6�(�(�*�4�6�6�+@�+@�+B�C�Cr#c�z�t|jj�|jj��Sr�)r�r�ror�rs r!rozParagraphAndImage.getSpaceAfter$s)���4�6�6�'�'�)�$�&�&�*>�*>�*@�A�Ar#c���|jj||�\}}||_||_||_|j
}|j}|j}|j}|j}	|j}
||
z
|jz
}||z
|z
}||jz
}
d|_t||z|	dzz�}|j|
g||gzz|gz�|_|j dk(r||zgd|zzdgz|_t%|jj&�|	z|_t+||j(�|_|j|j(fS)Nrr�rlrw)r�rT�wI�hIr/r�rkr�r�r�r��rightIndentr�r��
breakLines�blParar��_offsetsr�r�r0r�)r r]r^r�r�r�rkr�r�r�r��later_widths�intermediate_widths�first_line_width�nIWs               r!rTzParagraphAndImage.wrap'sL�������Z��4���B���������
��F�F�������y�y���y�y���-�-���%�%�
�!�J�.��1B�1B�B��*�T�1�B�6��.��1F�1F�F������2�d�7�W�S�[�)�*���<�<�!1� 2�S�:M�9N�5N� N�P\�~� ]�^����:�:�v����W�I�q��u�-�q�c�1�D�M��q�x�x�~�~�&�w�.����"�Q�X�X�&����
�
�D�K�K�(�(r#c���|j|j|j|jf\}}}}||z|kDst	|j
�dkrgS|j
||�}|s|S|dx}|_|d=|j}t	|jjj�|jz|_t||j�|_|g|zSr)
r�r�r�r�r��fragsrdrkr�r�r�r0r�)	r r]r^r�r�r�r�rerks	         r!rdzParagraphAndImage.split?s����&�&�$�'�'�4�7�7�D�I�I�=���2�r�4�
�d�7�;��#�a�g�g�,��/�"�9�
�G�G�J�{�+����(��q�T���D�F�
�a�D������t�v�v�}�}�*�*�+�E�M�M�9����"�Q�X�X�&����v�a�x�r#c�n�|j}|jdk(r�|jj|d|j|j
z
|jz
�|j|j_	|jj|dd�|j`y|jj||j|jz
|jz
|j|j
z
|jz
�|jj|dd�y#|j`wxYw)Nrlr)r8r�r�rRr0r�r�r�r�r/r�r�r:s  r!r9zParagraphAndImage.drawKs����y�y���:�:�v���F�F�M�M�$�q����T�W�W�!4�T�Y�Y�!>�?�"�m�m�D�F�F�O�
$����
�
�d�1�Q�'��F�F�O��F�F�M�M�$�t�z�z�$�'�'�1�$�)�)�;�D�K�K����<O�PT�PY�PY�<Y�Z��F�F�M�M�$�q��#���F�F�O�s�9D&�&D4N)r�r�rm)
r%r&r'r(r"rrrorTrdr9r)r#r!r�r�s%��*��D�B�)�0
�$r#r�c��eZdZd�Zy)�
FailOnWrapc��td��)Nz3FailOnWrap flowable wrapped and failing as ordered!�rBr\s   r!rTzFailOnWrap.wrapYs���N�O�Or#N)r%r&r'rTr)r#r!r�r�Xs��Pr#r�c��eZdZd�Zd�Zy)�
FailOnDrawc��yr�r)r\s   r!rTzFailOnDraw.wrap]���r#c��td��)Nz2FailOnDraw flowable drawn, and failing as ordered!r�rs r!r9zFailOnDraw.draw`s���M�N�Nr#N)r%r&r'rTr9r)r#r!r�r�\s
���Or#r�c	�<�eZdZdZdddedddddf	d�Zd	�Zd
�Zd�Zy)�
HRFlowablezLike the hr tagz80%rw�roundr=r.Nc
��tj|�||_||_||_||_||_||_||_||_	|	|_
yr�)r+r"r/�	lineWidth�lineCaprqrn�colorr2r3�dash)
r r/�	thicknessr�r�rqrnr2r3r�s
          r!r"zHRFlowable.__init__esR��	���$����
�"������&���$�����
���������	r#c�<�d|j�d|j�d�S)NzHRFlowable(width=z	, height=r�r[rs r!r�zHRFlowable.__repr__xs��48�J�J����L�Lr#c��|j}t|t�rA|j�}|j	d�r|t|dd�zdz}nt|�}t
||�}||_||jfS)Nr
rr)	r/r!rr��endswithrrrr�)r r]r^rWs    r!rTzHRFlowable.wrap{sn���J�J���a��!����	�A��z�z�#��J�u�Q�s��V�}�$<�T�$A���A�h�!���*�������$�.�.� � r#c���|j}|j�|j|j�|j	dddd�|j
j
��|j|j�|jr|j|j�|jdd|j|j�|j�y)Nrrwr	)�buttr��square)r8rI�setLineWidthr��
setLineCapr��lowerrKr�r��setDashr�rr0rMr:s  r!r9zHRFlowable.draw�s����y�y���������$�.�.�)�����!�q�9�$�,�,�:L�:L�:N�O�P����D�J�J�'��9�9�d�l�l�4�9�9�-��	�	�!�Q����T�[�[�1����r#)	r%r&r'r(rr"r�rTr9r)r#r!r�r�cs3��������a��H���&M�!�r#r�c��eZdZd�Zy)�_PTOInfoc�D�t|�|_t|�|_yr�)r��trailer�header)r rrs   r!r"z_PTOInfo.__init__�s��'��0���&�v�.��r#N�r%r&r'r"r)r#r!rr�s��/r#rc�P�t|d�r|j�St|�S)Nr)rAr)rrs r!�	cdeepcopyr�s"���s�:���|�|�~����}�r#c��eZdZdd�Zdd�Zy)�
_ContainerNc	��ddlm}m}	|}
|}d}|�|j}||z}|�|j}|j|||z�}||j|zz
}|}
t|dd�}|D�]�}ts(t||�r|j|j��2t||	�r2||j|zz
}||j|jz|zz}�p|j||d�\}}|tkrt|dd�s��|
|k7r/|j!�}t|dd�s|t#||z
d�z
}||z}|j%�}t|dd�r|}|}t|d	d�}|r�|d
j&r�|d
}|j}|j}|j(}||j*|z
|z
z}|
|||j,z
zz}||z|z}t#|||z
�}t#d||z
�}|j/||||||�||_|j3|||||z
��||d
urt|dd�s||z}|`���y)z"we simulate being added to a framer)�ActionFlowablereNr�rh�	_ZEROSIZEriF�	_frameBGsr)rQ)r]r
rer/r�rGr0rarr!�applyr�rlrmrYrrrr�ro�active�startr�_leftPadding�renderr�rR)r r8rDrPrQr*r�rUr
re�x0�y0ry�ytr�r�rWrXr{�fbg�bg�fbgl�fbgr�bgm�fbw�fbx�fbh�fbys                            r!rRz_Container.drawOn�sb��K�
��
��
��
�:�D�J�J�r�
�e����?��m�m�G����q��U��+��	�T�[�[��
���
����X�d�+���#	�A�)�j��>�.J�����)�)�*���!�H�%��Q�V�V�E�\�!���q�v�v�a�g�g�~�u�,�,����8�8�D��I�.�D�A�q���w�w�q��T�:�H��1�u��$�$�&���q�!1�%�8���Q�r�T�!��$�A�
��F�A����!�A��q�)�%�0����B��%��D�1�C��s�2�w�~�~���W���w�w���x�x���h�h���U�\�\�$�.�t�3�4�����U�%7�%7� 7�8�8���!�e�b�j���"�Q�r�T�l���!�C��G�n���	�	�$�u�S��S��5��A�H�
�H�H�T�!�A�"�Q�$�H�'�����#�G�A�6F�t�,L��R�����G#	r#c��gj}|xs|jD]}|t|���|j|_yr�)r�r�r�__self__)r r��Cr�s    r!�copyContentz_Container.copyContent�s9���I�I���*�T�]�]�	�A�
�i��l�O�	��
�
��
r#)rr�NNr�)r%r&r'rRr!r)r#r!rr�s
��1�f#r#rc�$�eZdZdZdd�Zd�Zd�Zy)�PTOContaineraMPTOContainer(contentList,trailerList,headerList)

    A container for flowables decorated with trailer & header lists.
    If the split operation would be called then the trailer and header
    lists are injected before and after the split. This allows specialist
    "please turn over" and "continued from previous" like behaviours.Nc���t||�}gx|_}t|�D]S}t|t�r|j|j��/|j
|�t|d�r�M||_�Uy)N�_ptoinfo)	rr�r�r!r#�extendr�rAr%)r r�rrr�r �_s       r!r"zPTOContainer.__init__�sc���W�V�$�����
��!�'�*�	=�A��!�L�)�������$�������q��,�1�a�j�	=r#c��t|j||j�\|_|_|j|jfSr�)r|r�r8r/r0r\s   r!rTzPTOContainer.wrap�s4��"-�d�m�m�J�t�y�y�"Q���
�D�K��z�z�$�+�+�%�%r#c�l�ddlm}|dkrgS|j}|j}dx}x}x}x}	}
t	|�}i}dx}
}t|�D�]Q}||}|j}||j�vr]|j}|j}t|||j�\}}t	|�r|dj�}nd}||||f||<n
||\}}}}|j||d�\}}t||�rA|j|jz}|
|jz
}
||jz
}||z}d}	d}
n4|r"t!|j�|	z
d�}
||
z
}|j#�}	|||	zz
}|t!||	�z}||z|t$z
k\rn|dz
}��T||	zz}||z
z
|
z
dz}|d|zk\rj'|||�}ng}t)|
�t)|�zdkDr||
|�g}||
|�g}ngx}}|sl|}|dkDrA||dz
j+�r+|dz}d||_|dkDr||dz
j+�r�+|dk(r|dj+�r|}d|d_t/�g}t	|�dkDr)|d||ddz|zz|z} |z|ddz||dzdz}!n|sgS|d||zz|z} |z||dz}!| t1|!jD�cgc]
}t3|���c}|jD�cgc]
}t3|���c}�gz}|Scc}wcc}w)NrrgrhrwgwJ��?皙�����?rG)r]rer8r�r�r�r%�keysrrr|rrrYr!rlrmr�rorrf�absrlrjrCr#r)"r r]r^rer8r rD�ir�ry�hx�n�I2W�dLeft�dRightr�r��T�Hdr�tW�tH�tSBr'rX�dw�tHSrV�SS�R1I�R2I�jrp�R1�R2s"                                  r!rdzPTOContainer.split�s���;��q�=��)��y�y���M�M������A����B����F���������q��	�A��!��A��
�
�A�����
�"��I�I���h�h��$�Q�
�D�I�I�>���B��q�6��A�$�-�-�/�C��C��2�b����A��!�!�f���"�R���8�8�D��I�6�D�A�q��!�H�%��V�V�A�G�G�^���������!�'�'�!���b� �
�������Q�-�-�/��2�1�5�B���G�A��_�_�&��
��2��I�A��S��R�[�.�C���u�k�%�'�'��
��F�A�=	�B	
�a��d����!�m�C���"�G�
+��
�t�K������4�
�2�.�B��B��u�:�c�&�k�!�$�&��U�F�F�7�+�,�C��E�&�)�*�C��N�C�#���A��A�#�!�A�a�C�&�0�0�2��Q���$%��!��!��A�#�!�A�a�C�&�0�0�2��!�t��!��,�,�.���$%��!��!�
�\�N���r�7�1�9��2�A��r�"�1�v��c�!�!�#�A�%�B��S���A�B����!�A�#�$��'�B���I��2�A��s��1��Q��B��S���1�2���B�
�<��Q�Y�Y�#?��D��G�#?�RS�RZ�RZ�@[�Q��a��@[�\�]�
]�����$@��@[s�,L,�L1r�)r%r&r'r(r"rTrdr)r#r!r#r#�s��I�=�&�Or#r#c��d|dzz}d|z}d|dzz}d|z}||z||zz
}||z}	||z}
||z}||z}|	|z|
|zz}
||z||zz}|
|fS)Nr�r	r))�s0�s1�h0�h1�a11�a12�a21�a22�det�b11�b12�b21�b22rFr�s               r!�_hmodelrN;s���
�R��U�(�C�
�R�%�C�
�R��U�(�C�
�R�%�C�

�c�'�#�c�'�/�C�

�c�'�C��$�s�(�C��$�s�(�C�

�c�'�C��B��s�2�v�
�A��B��s�2�v�
�A��Q�3�Jr#c���|\}}t|�tkr||zSd|z|z}ddlm}||z}||z|z
}|dkry||�}|dk\r||z
}n||z}||z}	t	d|zd|	z�S)z=solve the model v = a/s**2 + b/s for an s which gives us v==hr?r)�sqrtNr�)r,r�mathrPr�)
rX�abrFr��trPr�r�rB�s2s
          r!�_qsolverUKs���
�C�A�a�
�1�v�u�}���s�
��A��a��A��	
��1��A�	�!��A��A���s�4��Q��A��!�t��R�!�V���R�!�V��	
�2��B��r�"�u�b��e��r#c�>�eZdZgddddddfd�Zd�Zdd	�Zd
�Zd
d�Zy)�KeepInFramerw�shrinkr�r-r.Nc
��||_||_||_||_|dvsJ|j	��d|����|dk\sJ|j	��d|����|�t
}||_|xsg|_||_||_	|	|_
y)abmode describes the action to take when overflowing
            error       raise an error in the normal way
            continue    ignore ie just draw it and report maxWidth, maxHeight
            shrink      shrinkToFit
            truncate    fit as much as possible
            set fakeWidth to False to make _listWrapOn do the 'right' thing
        )�error�overflowrX�truncatez invalid mode value rz invalid maxHeight value N)�name�maxWidthr��moder�r�
mergespacer�r3r2rt)
r r^r�r�rqr_r]r2r3rts
          r!r"zKeepInFrame.__init__^s�����	� ��
�"�����	��?�?�t�_c�_l�_l�_n�os�At�t�?��!�|�[�����QZ�[�[�|���,@�z�$����
�2��
�������"��r#c�N�|j|jz
|jz
Sr�)r^�_leftExtraIndent�_rightExtraIndentrs r!�_getAvailableWidthzKeepInFrame._getAvailableWidthss"���}�}�t�4�4�4�t�7M�7M�M�Mr#c�v�d|jj�dtt|���|j	��t|dd�xrdt|dd�zxsd�dt|dd�xrdt
t|dd	��zxsd�d
t|dd�xrdt
t|d��zxsd��
S)
Nrzr{r]r��
 name="%s"z> size=r^z maxWidth=%srrDr�z
 maxHeight=%s)r}r%r~rr�rarras  r!r�zKeepInFrame.identityvs���.2�n�n�.E�.E�s�2�d�8�}�VZ�Ve�Ve�Vg���V�B�'�S�\�7�4��r�;R�-R�Y�WY�Y���Z��+�c���w�t�T^�_`�Ga�@b�1b�i�gi�i���[��,�e��6�'�RV�Wb�Jc�Cd�1d�j�hj�j�l�	lr#c
������ddlm}�j}tt	�j
xs||���tt	�jxs||��}�j�t�j��j���\}}|dk(r:|�tzkDs||tzkDr"d|�d|�d�jd���}||��|�tzkr*||tzkr|tz
�_
|tz
�_�n\|d	vr2t	�|�tz
�_
t	||�tz
�_�n&���fd
�}	|}
|}d}|�tzkDrI|�z}
|	|
�\}}||tzkr'|tz
�_
|tz
�_|
�_||fS|
}|}|}
||z}
|	|
�\}}|tz
�_
|tz
�_|
�_|t	d|z|d
z
�ks||tzk\rp|}dD]i}t!|d|z
zt#||
||��}|	|�\}}||tzks�9|�tzks�F|tz
�_
|tz
�_|�_n�j�jfS)Nr)�LayoutError�rtrZzcontent rDz too large for �)r[r\c���t|�}t�j|�z�j���\}}||z}||z}||fS)Nri)rr|r�r8)rDrxr�rtr^r s   ���r!�funczKeepInFrame.wrap.<locals>.func�sH����!�H��"�4�=�=��8��D�I�I�QZ�[���1��Q����Q����!�t�r#rwgffffff�?�
)rrr*皙�����?g333333�?)r]rhr_rrr^r�rtr|r�r8rr�r/r0�_scalerUrN)r r]r^rhr_r�rxr��identrl�W0�H0rArB�H1r�r{rtr^s`                @@r!rTzKeepInFrame.wrap|s]���>��y�y����T�]�]�8�j��D�E���#�d�n�n�;��K�H�I�	��N�N�	��4�=�=��$�)�)�y�Q���1��'�M�q��%��/�1�Y�u�_�3D��89�!�D�M�M�"�<M�N�E��e�$�$�
����
�1�i��o�#5��5��D�J��E�'�D�K�
�,�
,��X�a���.�D�J��i��*�5�0�D�K�
��B��B��B���%����x�Z���B�x���1��i��o�%�!"�5��D�J�"#�E�'�D�K�"$�D�K��Q�3�J��������9��B���8�D�A�q��5��D�J��E�'�D�K��D�K���T�)�^�I�b�L�1�1�Q�	�%��5G���2��A��	�1�Q�3����2�b��0D�E�A���7�D�A�q��)�E�/�)�a��%��.?�%&�u�W��
�&'��g���&'������z�z�4�;�;�&�&r#c���t|dd�}|jdk(}|dk7xs|}|r�|j�|rL|j�}|j	|||j
|j�|j|d��n.|j||�dx}}|jd|zd|z�tj||||||��|r|j�yy)Nror�r\r)�stroke)rQr*)
rar_rI�	beginPathrLr/r0�clipPathrJr*rrRrM)	r r8rDrPrQr*r\�ss�ps	         r!rRzKeepInFrame.drawOn�s�����X�c�*���9�9�j�(��
�C�Z�
#�8��
��N�N����N�N�$�����q�!�T�Z�Z����4��
�
�a�q�
�)����q��#����!��
�
�3�u�9�c�%�i�0����$��a���5��A�
�t� � �"�2r#r�r�)r%r&r'r"rdr�rTrRr)r#r!rWrW]s5��46�1�8�Z\�dj�rz�GK�#�*N�l�:'�x#r#rWc��eZdZdd�Zdd�Zy)�_FindSplitterMixinNc���d}d}	dx}
}d}|j|�}
t|
�D�]�\}}t|d�r/ddlm}t||�r||j|jzz}�B|j||d�\}}|tks	|tkr�kt||�}|s'|j�}|rt||
z
d�}|	|z
}	n|�|j�|_d}|	|k\s||kDr|||
d||
|dfcS|	|z
}	|	|kDr�||	|z
z
}|rcddl
m}t||tf�rK|j j"}|t%|t'|�z�ztz}||kr||z
}|||z
z
}|}	t)|�j+|||�}|s|||
d||
|dfcS|||
d||ddz|dd|
|dzdzfcS|j-�}
|	|
z
}	���|�|
|_||	|
z
|
gfS#d}Y�]xYw)rcrrwrfrgrhN��	Paragraph)�_getContent�	enumeraterAr]rer!rlrmrYrr�rrrn�reportlab.platypus.paragraphr~r�rkr�r�rrrfroro)r r8r]r^rqrrr��paraFixrxr�ry�sBrzrpr-r�rerWrXr{rVr~r��nHres                         r!�
_findSplitz_FindSplitterMixin._findSplit�s?��
��
�����R������W�%���Q�<�&	�C�A�a��q��'�C��a��)��!�&�&����.�0�J���(�(�4�
�9�5�C�A�a��%�x�1�e�8�X��A�a��A���$�$�&���3�q��t�A�;�q��Q����?�q�7G�7G�7I�C�$4����+�~��:���+�q��!�u�Q�q�r�U�2�2�
��F�A���}� �!�A�#�&���F�!�!�Y�|�$<�=�"#�'�'�/�/��$�S��E�'�N�):�%;�;�E�A���b�5�"��-�"�#�r�"�u�,�����!�!��,�,�T�*�R�@�A���k�1�R�a�5��1�2��6�6��[��2�A��q��!�u��Q�q�r�U�1�Q�q�S�T�7�]�B�B����"�B�
��G�A�M&	�P�?�b�C�O��!�B�$��2�~�����A�s�0G#�#G)c��g}|�|n|j}|D]C}t|t�r |j|j	���3|j|��E|Sr�)r�r!�ListFlowabler&rr�)r r�rpr r�s     r!rz_FindSplitterMixin._getContent�sT�����*�G��
�
���	�A��!�L�)��������)������		�
�r#)rwNNTr�)r%r&r'r�rr)r#r!r{r{�s
��0�dr#r{c�H�eZdZdZ		dd�Zd�Zd�Zd�Zd�Zd�Z	d	�Z
dd
�Zy)
�ImageAndFlowables�(combine a list of flowables and an ImageNc	��t|�|_||_||_||_||_||_||_||_yr�)	r�r��_I�_irpad�_ilpad�_ibpad�_itpadr��	imageHref)	r r�rp�imageLeftPadding�imageRightPadding�imageTopPadding�imageBottomPadding�	imageSider�s	         r!r"zImageAndFlowables.__init__	s?��(��+��
����'���&���(���%�����
�"��r#c�\�t|�}|j�|j�|Sr�)r�_resetr!)r r�s  r!rzImageAndFlowables.deepcopys"����J�����
�	�
�
���r#c��t|d�r
|j}n%t|d�r
|j}n|j}tj||�S)N�_C1�_C0)rAr�r�r�rro)r r s  r!rozImageAndFlowables.getSpaceAftersD���4������A�
�T�%�
 ����A��
�
�A��'�'��Q�/�/r#c�p�t|jj�tj|��Sr�)r�r�rrrrs r!rrz ImageAndFlowables.getSpaceBefore#s'���4�7�7�)�)�+�J�,E�,E�d�,K�L�Lr#c�:�dD]}	t||��y#Y�xYw)N)�	_wrapArgsr�r�)�delattrr�s  r!r�zImageAndFlowables._reset&s)��*�	�A�
���Q��	��
��s��c��|j}|j}t|d�rV|j||fk(r%t	|dd��|j
|jfS|j�|j�||f|_|j||�|j||�\}}||_||_|j}|j}|j}	|j }
||z
|z
|z
x|_}|
|z|	z}|t$kDr#|j'|||�\}
}|_|_n|}
d}|
|t$zkDrg|_|j,|_t/||�x}|_||_|j*s||_n$t3|j*||�\}}||z|_|j
|jfS)Nr�rr)r8r�rAr�rar/r0r�rrTr�_wI�_hIr�r�r�r��_iWrr�r�r�r�r��_aHr|)r r]r^r8r�r�r��ilpad�irpad�ibpad�itpad�iWrVrxrr�W1rss                 r!rTzImageAndFlowables.wrap-s����y�y���G�G���4��$��~�~�
�;�7�7�G�A�n�UY�<Z�<b��z�z�$�+�+�-�-��K�K�M�
����#�[�0���	���z�+�&�����K�8���B�����������������������"�U�*�R�/�%�7�7���2�
�R�Z�%�
��
�e�8�%)�_�_�T�"�R�%@�"�A�b���$�(��A��B��R��X�:��D�H��}�}�D�H��B�r�
�"��T�X���
��x�x��D�K������D�9�E�B�r��R�%�D�K��z�z�4�;�;�&�&r#c
�`�t|d�rJ|j}|j||fk7s
t|dd�� |j	�|j�|j
||�\}}|j|kDrgS|j}|r9|dj|||jz
�}|sg}n|dg}|dd|ddz}ng}t|j|j|z|j|j|j|j|j |j"��g|zS)Nr�rrrw)r�r�r�r�r�r�)rAr�r�rar�rrTr�r�rdr�r�r�r�r�r�r�r�)	r r]r^r�rxr�r�rer�s	         r!rdzImageAndFlowables.splitQs���4��$����A��~�~�
�;�7�7�7�1�^�TX�;Y�;e����
��!�!�#��I�I�j��-���!��8�8�K����
�X�X��
��1����J�{�4�8�8�';�<�A������t�f���q�r�U�2�a�b�6�\���C�!��G�G��H�H�S�L�%)�[�[�&*�k�k�$(�K�K�'+�{�{�"�j�j�D�N�N�D����	r#c�H�|jdk(r,||jz}||jz|jz}n+||jz|jz
|jz
}|}|j
j
||||jz|jz
|jz
�|jrc|j|j|||jz|jz
|jz
||jz||jzfd��|jr/tj
|||||j|j��|jrB|j \}}tj
|||||j"z
|j|��yy)Nrlrw)�relative)r�rU)r�r�r�r�r/r�rRr0r�r�r��linkURLr�rr�r�r�r�)	r r8rDrPrQ�Ix�FxrUrVs	         r!rRzImageAndFlowables.drawOnmsH���:�:�v���T�[�[��B��T�[�[��4�8�8�+�B��T�Z�Z�����(����4�B��B������t�B�q����}�T�[�[�8����A�B��>�>��L�L����"�a����m�D�K�K�.G����.P�RT�W[�W_�W_�R_�ab�cg�cn�cn�an�)o�z{�L�|��8�8����d�D�"�a����d�h�h��O��8�8��^�^�F�B�����d�D�!�Q�t�x�x�Z����R��P�r#)rr�rr�rmNr�)r%r&r'r(r"rrorrr�rTrdrRr)r#r!r�r�s6��2�fg�15�	#��0�M��"'�H�8Qr#r�c�*�eZdZdZdZdd�Zd�Zdd�Zy)	�_AbsRectrwTNc	�t�||_||_||_||_||_||_||_||_yr�)�_x�_yrr�_strokeColor�
_fillColor�_strokeWidth�_strokeDashArray)	r rDrPr/r0�strokeWidth�strokeColor�	fillColor�strokeDashArrays	         r!r"z_AbsRect.__init__�s=��������������'���#���'��� /��r#c��yr�r)r\s   r!rTz
_AbsRect.wrap�r�r#c�p�|jtkD�r"|jtkD�r
|jxr|jduxr|jdk\}|s|j
r�|j
�|r6|j|j�|j|j�|j
r|j|j
�|j|j|j|j|j|rdnd|j
rdnd��|j�yyyy�Nrrw)ru�fill)rrrr�r�r�rIrKr�r�rLr�r�rM)r r8rDrPrQ�sts      r!rRz_AbsRect.drawOn�s����;�;�u�����e�!3��"�"�]�t�'8�'8��'D�]��IZ�IZ�\]�I]�B��T�_�_���� ���'�'��(9�(9�:��%�%�d�&7�&7�8��?�?��%�%�d�o�o�6��	�	�$�'�'�$�'�'�$�+�+�d�l�l�r�!�WX�dh�ds�ds�_`�yz�	�{��!�!�#�%�"4�r#)rNNNr��r%r&r'rrir"rTrRr)r#r!r�r�s���I��N�0��$r#r�c�&�eZdZdZdZd�Zd�Zd�Zy)�	_ExtendBGrwTc�.�||_||_||_yr�)r�r�_bg)r rPr0rr�s     r!r"z_ExtendBG.__init__�s����������r#c��yr�r)r\s   r!rTz_ExtendBG.wrap�r�r#c��|j}|j}|j}|j}|j|z
|j
z
}|j|z
}|j}|j�}	|j||||||�yr�)
r�r�rrlrrm�_x1r8�
getPageNumberr)
r r�rrrrrrr8�pns
          r!rfz_ExtendBG.frameAction�sx��
�X�X���g�g���l�l���w�w���l�l�T�!�B�H�H�,���i�i�$����y�y��
�
�
�
!��
�	�	�$�u�S��S��-r#N)r%r&r'rrir"rTrfr)r#r!r�r��s���I��N��
�	.r#r�c�*�eZdZdZdZdd�Zd�Zdd�Zy)	�_AbsLinerwTNc�f�||_||_||_||_||_||_||_yr�)r�r�r��_y1r�r�r�)r rDrP�x1�y1r�r�r�s        r!r"z_AbsLine.__init__�s6��������������'���'��� /��r#c��yr�r)r\s   r!rTz
_AbsLine.wrap�r�r#c�|�|jr�|j��|jdk\r�|j�|j|j�|j	|j�|j|j|j|j|j�|j�yyyyr)r�r�rIrKr�r�r�r�r�r�rM�r r8rDrPrQs     r!rRz_AbsLine.drawOn�s�������!2�!2�!>�4�CT�CT�VW�CW��N�N������ 1� 1�2����d�/�/�0��I�I�d�g�g�d�g�g�d�h�h�t�x�x�8�����DX�!>�r#)rNNr�r�r)r#r!r�r��s���I��N�0�� r#r�c�J�eZdZdZ									d	d�Zd
d�Zd�Zd�Zd�Zd�Z	y)�BalancedColumnsr�Nc��|xsdt|�z|_|dkrtd|�d|j�����t	|�|_||_||_||_||_	|	|_
|
|_||_||_
|tz
|_||_|
|_||_||_||_||_||_||_y)NzBalancedColumns-%dr	znCols should be at least 2 not z in )rr]rB�
identitityr�r��_nColsrnr�
_innerPadding�
_rightPadding�_topPadding�_bottomPaddingrqr�_needed�showBoundary�endSlack�_boxStrokeColor�_boxStrokeWidth�
_boxFillColor�
_boxMargin�_vLinesStrokeColor�_vLinesStrokeWidth)r rp�nCols�neededrqrnr��leftPadding�innerPadding�rightPadding�
topPadding�
bottomPaddingr]r��boxStrokeColor�boxStrokeWidth�boxFillColor�	boxMargin�vLinesStrokeColor�vLinesStrokeWidths                    r!r"zBalancedColumns.__init__�s����;�0�2�d�8�;��	��!�8��%�PT�P_�P_�Pa�b�c�c�(��+��
����$���'���)���)���%���+���&�����~���(��� ��
�-���-���)���#���"3���"3��r#c
���d|jj�d|j�dtt	|���|j��t
|dd�xrdt
|dd�zxsd�d�	S)Nrzz nCols=r{r]r�rfr|)r}r%r�r~rr�raras  r!r�zBalancedColumns.identity�sb��,0�N�N�,C�,C�T�[�[�RU�VX�Y]�V^�R_�ae�ap�ap�ar���V�B�'�S�\�7�4��r�;R�-R�Y�WY�Y��	r#c��|jSr�)rnrs r!rozBalancedColumns.getSpaceAfter�s�����r#c��|jSr�)rqrs r!rrzBalancedColumns.getSpaceBefore�s�����r#c�6��C�D�E�F�G�H�I�g}�j�Gddlm}m}m}ddlm}ddlm}�j��Gjn�j}	�j��Gjn�j}
�j��Gjn�j}�j��Gjn�j}�Gj}
�Gj}�j�t|	|
�n�j}|dz}�j �E�j"�H||�Hdz
zz
|	z
|
z
t%�H�z�F|}|||zz}�j'�E�F�H|zd��\}}}}|sYt)�j+��d	|�d
|�d�F�d�H|z�d
�j,D�cgc]}|j.j0��c}����i�Dd8�D�E�F�H�fd�	�Id}|r|}n�ddl}�D�Ifd�}d|j5d�dzdzf�Dfd�	}t7t9|t%�H�z�j:dzz�|�}�I|��D|ds'||||�}|r|\}}}}|}d}nS|}�j<}nD|t%�H�z}�I|��D|ds&||||�}|r|\}}}}|}d}n|}�j<}|rJd���I||�\}}}}�Dj?�|dgk(r|dgk(r|r||dg|d}}�Gj@} �GjB}!�GjD}"|!|z|z|z}#||z|z}$|#|$z
}%|t%�H�z}&|
s|r||
|�}'||
|�}(ndx}'}(�jF��jFn�GjF})| |
z�Gjz}*tI�H�D�+cgc]M}+||*|+|&zz|%|&|$|+s|	n|||+�Hdz
k(r|
n||d�jJ|+fz|)�GjL�GjN����O},}+�jQd��C�C�|d�j+�z��tS�Gdd�}-|-r|-dndx}.}/G�C�Gfd�d|�}0|/rtU|%|$|/�G�}.|jW|.��CjX}1|jW|0g|,|,d��|'r|jW|'��jZxr�j\xr�j\dk\xs�j^}2�j`xr�jbxr�jbdk\}3|2s|3�r��jd}4|4sd}4tg|4�dk(r|4dx}5x}6x}7}8nwtg|4�dk(r|4dx}5}8|4dx}6}7nZtg|4�dk(r|4d}5|4dx}6}7|4d}8n:tg|4�dk(r|4d}5|4d}7|4d}8|4d}6nt)d ti|4�z��|*|6z
}9|,dj@|,djDz|7z}:|%|8z
};|$|5z|8z}<|;|<z}=|2r3tk|9|;|:|9z
|<�j^�jZ�j\�!�}>|3r�g}?tId�H�D]n}+d|,|+j@|,|+dz
j@z|,|+dz
jDzz}@|?jWtm|@|;|@|=�jb�j`�"���pn|#}=|%};|2r|jW>�|3r|jo?��jq�}AtI�H�D]]}+||+}B|Br:ts||Bd#�$�}BtA|Bjq��}A|jW|B�|+�Hdz
k7s�M|jW|��_|jW|0|-|1�G��|.r6|rd}At7|%|;�Az
|._:t|#|=�|.jtz
|._;|(r|jW|(�|r�|jWty|fid%�H�d&�jz�d'�j|�d(�j:�d)�jF�d*�j�d+�j�d,�j�d-�j�d.�j�d/�jJd0z�d1�j<�d2�jZ�d3�j\�d4�j^�d5�jd�d6�j`�d7�jb���|$|fScc}wcc}+w)9Nr)rhr
re��FramerZr?rwF)r�z cannot make initial split aW=z aH=z ie cw=z ah=z	
content=c���|�vr�g}d}d}d}|r�dz
nd}t��D]�}�j��||d��\}}	}
}t||�}t||	�}|j|
�||k(rC�j��d|z|d��\}}
}}|
d|z|zkr|j|�|dz
}g}n|}��|dt	|gk7�zz|gk(||||ff�|<�|dS)	Nrr	rF)r�r�rwg���ư>i��)r�r�r�r�r�)�ahr�r�rWrX�cn�icheckr-�wi�hi�c0�c1�wc�hc�cc0�cc1�_fresr8�cwr�r s                �����r!�	splitFuncz5BalancedColumns._generated_content.<locals>.splitFuncs��������������$,��q��"���u���A�%)�_�_�T�"�R��SX�_�%Y�N�B��B���A�b�	�A��A�b�	�A��H�H�R�L��&�y�+/�?�?�4��1�R�4�PR�[`�?�+a�(��B��S���(�
�B��.��H�H�R�L� "�4��A�!#�B�!��B���v�c�"�b�&�k�1�1�"�b�&�!�A�a���C��b�	���9�Q�<�r#c�$���|��|dSrr))r�rr	s ��r!rlz0BalancedColumns._generated_content.<locals>.func/s����"�
��R�y��|�#r#�r	c�h��|||z
|zz
}|||z
|zz}t||z
�|kDr>||�||�kr|}n|}|||z
|zz
}|||z
|zz}t||z
�|kDr�>�j�D���	cgc]\}}}	|s�
|||	f��}
}}}	|
r|
j�|
ddSycc}	}}w)Nrr	)r,�values�sort)r�rFr��tol�grr�r.rD�tf�vrprs           �r!�gssz/BalancedColumns._generated_content.<locals>.gss3s������Q��"��$����Q��"��$���!�a�%�j�3�&���t�a��d�{������Q��U�b�L�(�A��Q��U�b�L�(�A��!�a�%�j�3�&�-2�L�L�N�A�A�&�!�B�q�b�a��1�X�A��A���F�F�H��Q�4��7�N���	Bs�;B-�B-g�������?zunexpected non-empty C2z%s-%d)r�r�r�r�rr�r�_debug�pageTemplatez&%s used in non-doctemplate environmentrrc�0��eZdZdZggdfd�ZW�f�fd�	Zy)�3BalancedColumns._generated_content.<locals>.TActionz?a special Action flowable that sets stuff on the doc template TNc�X�tj|�||_||_||_yr�)r+r"�bgsrpr�)r rrpr�s    r!r"z<BalancedColumns._generated_content.<locals>.TAction.__init__�s%���!�!�$�'���������r#c���|j|_|j�_|j	|j
j�|j�_yr�)rp�framesrr�handle_currentFramer�r)r �docr3r�s   �r!r
z9BalancedColumns._generated_content.<locals>.TAction.apply�s:����6�6���"&�(�(����'�'����	�	�2�"&�(�(��r#)r%r&r'r(r"r
)r3r�s��r!�TActionr�s���Q�#%��T�
�"#�
+r#r)rrrrr��zInvalid value %s for boxMargin)r�r�r�)r�r�rX)r_r�r�rqrnr�r�r�r�r�r�r]z-1r�r�r�r�r�r�r�r�)?r�r]rhr
re�reportlab.platypus.framesr�r[rr�r�r�rbrcr�r�r8r�rr�rBr�r�r}r%rQrPrr�rnr��clearr�r�rr�r�r]�_oASpacerr�rar�r�rr�r�r�r�r�r�r�r�r�r�r&rorWr�rr�r�rq)Jr rUrV�Grhr
rer�r[�lpad�rpad�tpad�bpad�leftExtraIndent�rightExtraIndent�gap�hgap�aH0rxrrr��C2r�r�r�rQrlrrsr�r r�r�r��fw�ftop�fh�y2r,�	indenter0�	indenter1r��obxr-rp�BGs�xbgrr�	oldFrames�doBox�doVLines�obm�obmt�obml�obmr�obmb�obx1�obx2�oby2�obh�oby1�box�vLines�vlx�sa�Cir3rr8rr�r�r	sJ`                                                                  @@@@@@@r!rjz"BalancedColumns._generated_content�s	���������X�X�3�=�%)�%6�%6�%>�u�!�!�D�DU�DU��&*�&8�&8�&@�u�"�"�d�FX�FX��$(�$4�$4�$<�u� � �$�BR�BR��'+�':�':�'B�u�#�#��H[�H[���0�0�� �2�2�� $� 2� 2� :�c�$�t�n��@R�@R���3�w���y�y�������3��a��=� �4�'�$�.��e��
<����
�d�T�k����o�o�d�2�e�B�h�u�o�E���"�S�����
�
���2�b��r��7;�}�}�E�!����-�-�E���
�
��	 �	 �.��
��A�
�
$�"#��	�	�!��q�(8�A�'=�
�&�C��5��<������(;�;�<�R�@�A��a�L���8�A�;���Q�r�N���%&�N�A�r�3���A�$�H��A�#�}�}�H���e��_���"�
��R�y��|��D��2��A��)*���2�s�B���#(����#'�=�=���4�4�4�6�!�!�X�.�
��B��2�
���
��Q�4��8��!��b��R���!��I�q��t�r�A�
�Y�Y��
�Y�Y��
�\�\���$�w�t�|�B���
�$�Y��
��
�B�Y��
�%��,�
���.� �/�!1�3C�2C�D�I� ��1A�B�I�$(�(�I�	�*.�*;�*;�*G�T�&�&�U�M_�M_���� ��!3�!3�3��/4�E�l�

<�*+�
�3�q��t�8�B�r�"�()�D�t�4�%&��a��Z�T�T�d��T�Y�Y�q�M�)�)�%*�^�^��|�|�
%�
<��
<��
�
��
/���9��F�����X�Y�Y��e�K��-��!�3�r�7�t�+��b�	+�n�	+���B�r�"�U�+�C�
�H�H�S�M��H�H�	�	�����A�a��d�#�$��a�h�h�y�)��%�%�Z�$�*>�*>�Z�4�CW�CW�YZ�CZ�q�_c�_q�_q���*�*�e�t�/F�/F�e�4�Kb�Kb�de�Ke���H��/�/�C��i���3�x��{�,/��F�2��2�t�2�d�T��S��1��!�!�f�$��t�!�!�f�$��t��S��1���1�v��!�!�f�$��t��1�v���S��1���1�v���1�v���1�v���1�v�� �!A�D��I�!M�N�N���:�D��R�5�9�9�Q�r�U�\�\�)�D�0�D��d�7�D��T�'�$�,�C���8�D���t�D�$�t�)�S�"&�"4�"4�$(�$8�$8�$(�$8�$8���
����q���G�A��q��t�x�x�!�A�a�C�&�*�*�4�Q�q��s�V�]�]�B�C�C��M�M�(�3�t�C���I`�I`�mq�nE�nE�#F�G�G��D��D��!�(�(�3�-��Q�X�X�f�%�
�
�
�
!���u��	%�A��1��B�� ��B�r�x�8����B�,�,�.�/��������%��'�z�����$�	%�	
�����Y�u�-�.����2���D�\�B�&�C�F��d�4�.�3�6�6�1�C�K��a�h�h�y�)�
�
�H�H����%���<�<��59�5E�5E��RV�Ra�Ra��!%�!2�!2��!%� 1� 1��"&�!3�!3�	�
"&�!3�!3�� $�/�/�
�#'�"5�"5�����4���37�-�-��$(�#7�#7��$(�#7�#7��"&�!3�!3��#�o�o��'+�&=�&=��'+�&=�&=��
�$�1�u���uF��J
<s
�b�
Abc
�*�t|dd�}||j|jztz
krt	�|g}d}n6|sddlm}|dd|ddddd��|_|j||�\}}|s|`|r|j|�dt||�fS)Nr�rr�i���)r�r�r�r�)rarqr�rrIr r�r�rjr^r)r rUrV�
self_framer#rsr�s       r!rTzBalancedColumns.wrap�s����T�(�4�0�
�
�d���t�|�|�+�E�1�1���d�#�A��B��;�#�A�a��:�!�RS�/0�q�B����+�+�B�r�2�E�B����K��7�z�7�7��;���R���|�r#)r	r�rrNNNNNNr�rnNrNNNNr�)
r%r&r'r(r"r�rorrrjrTr)r#r!r�r��sA��2�X\�cg�!�����"�"�4�@�
� �r�hr#r�c�0�eZdZdZdZdZd�Zd�Zd�Zd�Z	y)	�AnchorFlowablezcreate a bookmark in the pdfrwTc�@�tj|dd�||_yr)r:r"�_name)r r]s  r!r"zAnchorFlowable.__init__s������Q�q�!���
r#c�N�|jj�d|j�d�S)Nr?r�)r}r%rNrs r!r�zAnchorFlowable.__repr__s���>�>�2�2�4�:�:�>�>r#c��yr�r)r�s   r!rTzAnchorFlowable.wrap	r�r#c�R�|jj|jdd�yr)r8�bookmarkHorizontalrNrs r!r9zAnchorFlowable.draws���	�	�$�$�T�Z�Z��!�4r#N)
r%r&r'r(rrir"r�rTr9r)r#r!rLrL�s#��&��I��N��?��5r#rLc�$�eZdZd�Zd�Zd�Zd�Zy)�_FBGBagc��t|�}t|jt�xr||jvxs||jk(xr7t|�|jk(xr|j
|j
�k(Sr�)rr!�fidr�cidr�r�)r r�r8rVs    r!�matchesz_FBGBag.matchessj����i���D�H�H�T�*�>�s�d�h�h��O�#�t�x�x�-�M��4��$�(�(�*�M�/3�w�w��8J�8J�8L�/L�	Nr#c��|j|jj�|_t	t
|jdd�S)Nrwr)�_code�codePosrd�_instr�rr:s  r!�getDimsz_FBGBag.getDimss6���Z�Z����-�3�3�5��
��5����A�a��)�)r#c��t||||�g|jdddj|j�|j|j<y)Nrwr� )rr\r�rZr[)r r8rDrPrWrXs      r!�setDimsz_FBGBag.setDimss=��!�!�A�a��?�+��
�
�1�Q��#&�8�8�D�J�J�#7��
�
�4�<�<� r#c�\�t|�tkD�r�t|�tkD�r�|j�}|jt	|�k(rY|j
t	|�k(rA|j|k(r2|j|�\}}	}
}|j||||
||	z|z
�y|j�|j}|r|j|�|j}
|
�|
dkrdn|j}|rA|j|�|j|
�|j }|r|j#|�t	|�|_t	|�|_||_t%|j&�|_|j+|||||rdnd|rdnd��|j-�yyyr�)r,rr�rVrrWr�r]r`rIr�r�r�r�rKr�r�r�r�rZr[rLrM)r r8r�rrrrr��ox�oy�ow�oh�fbgc�sw�sc�das                r!rz_FBGBag.renders_���s�8�E�>�c�#�h�u�n��#�#�%�B��x�x��E��"�t�x�x��D��'9�d�g�g�r�k�"�l�l�4�0���2�b�����T�"�S��B�r�E�#�I�6���� ��~�~����%�%�d�+��%�%���Z�2�a�4�T�T�5E�5E����'�'��+��%�%�b�)��-�-�B�����R�(��e�9����d�8������"�4�:�:�����	�	�#�c�#�c�b��a�$�Q�TU�	�V��!�!�#�/-�>r#N)r%r&r'rXr]r`rr)r#r!rTrTs��N�
*�8�$r#rTc�(�eZdZdZdZdd�Zd�Zd�Zy)�FrameBGa$Start or stop coloring the frame background
    left & right are distances from the edge of the frame to start stop colouring.
    if start in ('frame','frame-permanent') then the background is filled from here to the bottom of the frame and immediately discarded
    for the frame case.
    rwNc��tj|dd�||_|r=ddlm}||�|_||�|_||_||_||_	||_
yy)Nr)�_evalMeasurement)r:r"rr]rmrlrmr�r�r�r�)	r r�rlrmrr�r�r�rms	         r!r"zFrameBG.__init__>s[������Q�q�!���
��G�(��.�D�I�)�%�0�D�J��D�J�*�D��*�D��#2�D� �r#c��|jj�ddjdj�D�cgc]}|�dt	||d�����c}��d�Scc}w)Nr?r@zstart color left right�=r�)r}r%r�rdra)r r-s  r!r�zFrameBG.__repr__Jsl���>�>�2�2�4�9�9�kC�kI�kI�kK�>L�ef��7�SW�XY�Z^�K_�>`�>L�4M�N�	N��>Ls�Ac���t|dd�}|�y|jr�|j}|j}|�dn|}|jjt
|j|j|j|jdvr|jnd|j|j|jddddd���y|jr|jj�yy)Nr�r)r�zframe-permanentrT)rlrmr�rr�r�r�rVrWr�r[r)rarr�r�rr�rTrlrmr�r�rk)r r�rhrgs    r!r9zFrameBG.drawMs�����X�d�+���=�&��:�:��!�!�B��!�!�B��z��r�B��O�O�"�"��T�Y�Y�&*�j�j�*.�*�*�48�J�J�B]�4]�d�j�j�cg�,0�,<�,<�,0�,<�,<�04�0D�0D�&'�&'�%'�*.�'+�"�

#��_�_��O�O���!�r#)NrrTNNN)r%r&r'r(rr"r�r9r)r#r!rkrk7s���
�I�
3�N�"r#rkc�*�eZdZdZdZgdddfd�Zd�Zy)	�
FrameSplittera@When encountered this flowable should either switch directly to nextTemplate
    if remaining space in the current frame is less than gap+required or it should
    temporarily modify the current template to have the frames from nextTemplate
    that are listed in nextFrames and switch to the first of those frames.
    rwrmr�Tc�R�||_|xsg|_||_||_||_yr�)rK�
nextFramesr*�required�adjustHeight)r rKrtr*rurvs      r!r"zFrameSplitter.__init__ls,��(���$�*������� ��
�(��r#c��|j}ddlm}m}m}||j
�g}||j|jztz
kr|jt���n�|jd�}|�|d|j�z��|D�	cgc]}	|	j|j
k(s�|	�� }
}	|
s&||j��d|j
�d���|
d}
|
jD�cgc]}|j|jvs�|��}}|D�cgc]}|j��}
}|jD�cgc]	}||
vs�|��}
}|
rP||j��d|
�d|
j�d	|
�d
|
jD�cgc]}|j��c}��	��|jd�}
|
|
j |
jfd�}||
_||jz
}t#|�D]8\}}t%|�}|j&r||_|j+�|||<�:||
_|j||dj��|j,|�y
cc}	wcc}wcc}wcc}wcc}w)Nr)�NextPageTemplate�CurrentFrameFlowablerh�
pageTemplatesz(%s called in non-doctemplate environmentz.nextTemplate=z
 not foundz frames=z not found in pageTemplate(z)
z has frames rc�2�||_||_|||�yr�)r�onPage)r8rr3r|r7s     r!�unwrapz"FrameSplitter.wrap.<locals>.unwrap�s��"�������t�C� r#r\)r�r]rxryrhrKr*rurr�rIr�r�rrrtr|r�rrvr0r�r^)r rUrVr�rxryrhr#�	templatesrSr3r�rp�Nr}rXr-s                 r!rTzFrameSplitter.wrapssZ������d�d��D�-�-�.�
/��
�d�h�h�t�}�}�$�U�*�*�
�H�H�Y�[�!��-�-�o�>�I�� �!�"L�T�]�]�_�"\�]�]�#�?�Q�q�t�t�T�->�->�'>�q�?�A�?��!�D�M�M�O�TX�Te�Te�"f�g�g���d�A��(�(�>�Q�a�d�d�d�o�o�&=�q�>�A�>����q�t�t��A���/�/�8�Q�Q�a�Z�q�8�A�8��!�dh�dq�dq�ds�tu�vw�vz�vz�{|�MN�MU�MU�~V�HI�~�C�C�~V�#W�X�X��#�#�N�3�A�"#�1�8�8�a�h�h�
!��A�H�����k�A� ��|�
���!��q�'���$�$�q�a�h����
���!��	
�
�A�H�
�H�H�)�!�A�$�'�'�2�3�#��#�#�Q�'���1@��?����8��~Vs0�I(�7I(�8I-�I-� I2�	I7�
I7�	I<N)r%r&r'r(rr"rTr)r#r!rrrres"���
�I�02��R�VZ�)�$r#rr)�_type2formatteru•u●u■u○u◆u❖u➤u❇u❏u★)
�
bulletchar�circler��disc�diamond�	diamondwx�
rarrowhead�sparkle�	squarelrs�	blackstarc���|dk(rtj||�}nt|t|��}|r:t	|t
�r||z}|St
|�r
||�}|Std|z��|S)N�bulletz!unexpected BulletDrawer format %r)�_bulletNamesrr�r�r!r�callablerB)�value�type�formatr{s    r!�
_bulletFormatr��s}���X�~����U�5�)���D�!�#�e�*�-��
��f�X�&���
�A�

�H�	�f�
��q�	�A�
�H��@�6�I�J�J��Hr#c�0�eZdZ										dd�Zdd�Zy)�BulletDrawerNc��||_||_||_||_||_||_||_||_|	|_|
|_	yr�)
r��_bulletAlign�_bulletType�_bulletColor�_bulletFontName�_bulletFontSize�_bulletOffsetY�
_bulletDedent�
_bulletDirr�)r r��bulletAlign�
bulletType�bulletColor�bulletFontName�bulletFontSize�
bulletOffsetY�bulletDedent�	bulletDir�bulletFormats           r!r"zBulletDrawer.__init__�sR����
�'���%���'���-���-���+���)���#���)��r#c��|j}|sy|j�|j||�|j|jz
|j
z}|jdk(r'|j|jz
|jz}n|j|jz
}|j|j|j�|j|j�|j}t!||j"|j �}|dk(r|j%|||�n�|dk(r|j'|||�nt|dvr|j)|||�n\|j+d�s|j+d�r,|ddj-�xsd}|j/||||�nt1d	|z��|j3�y)
N�rtlrlrm)�center�centre�numeric�decimal��.zInvalid bulletAlign: %r)r�rIrJr0r�r�r�r/�_rightIndentr��_leftIndentr�r�r�r�r�r�r��
drawString�drawRightStringr��
startswithr��drawAlignedStringrBrM)	r �indenterr8rDrPrQr�r��pcs	         r!rRzBulletDrawer.drawOn�s����
�
���f��������q�!���O�O�D�0�0�0��1D�1D�D���?�?�E�!�����!6�!6�6��9K�9K�K�A��$�$�t�'9�'9�9�A����T�)�)�$�*>�*>�?����$�+�+�,��'�'���e�D�$4�$4�T�5G�5G�H������O�O�A�a��&�
�'�
!�� � ��1�U�+�
�/�
/��"�"�1�Q�u�-�
�
#�
#�I�
.�+�2H�2H��2S��Q�R��&�&�(�/�C�B��"�"�1�Q�u�R�0��6��D�E�E����r#)
�0rl�1�black�	Helveticar�rr�ltrNr�)r%r&r'r"rRr)r#r!r�r��s*��� &�"� '�#.�#%�"#�!"�#�!%�*�.r#r�c��t||j|j�}t||j|j�Sr�)r�r�rr�r�)r�r�s  r!�_computeBulletWidthr��s3���%��
�
�a�o�o�>�E��u�Q�.�.�q�/@�/@�A�Ar#c�b�eZdZdj�Zdd�Zd�Zdd�Zd�Zd�Zd�Z	d�Z
d
d
�Zy	)�
DDIndenterz/_flowable _leftIndent _rightIndent width heightc�J�||_||_||_d|_d|_yr�)�	_flowabler�r�r/r0)r �flowabler�r�s    r!r"zDDIndenter.__init__�s'��!���%���'�����
���r#c���|jj||jz
|jz
|�}|D�cgc]$}t	||j|j����&c}Scc}w)N)r�r�)r�rdr�r�r��r rUrVrer{s     r!rdzDDIndenter.split�sk���N�N� � ��D�$4�$4�!4�T�5F�5F�!F��K��
$%�	� ��1�#'�#3�#3�$(�$5�$5���	��s�)A'c
��|jj|||jz|td||jz
|jz
��yr)r�rRr�r�r�r�s     r!rRzDDIndenter.drawOnsC�������d�1�T�%5�%5�#5�a��A�c�$�BR�BR�>R�SW�Sd�Sd�>d�8e�fr#c���|jj||jz
|jz
|�\}}||jz|jz|_||_|j|fSr�)r�rTr�r�r/r0�r rUrVrWrXs     r!rTzDDIndenter.wrapsd���n�n�!�!�"�T�%5�%5�"5�d�6G�6G�"G��L���!��t�'�'�'��(9�(9�9��
�����z�z�!�|�r#c���||jvr	|j|St	|j
|�S#t$r$|dvrt|�d|�d|j����Y�BwxYw)N�rqrnz has no attribute z dict=)�_IndenterAttrsr"�KeyErrorr#rar�r�s  r!r$zDDIndenter.__getattr__sz����#�#�#�
`��}�}�Q�'�'��t�~�~�a�(�(���
`��8�8�(�D�8�3E�a�S��t�}�}�o�)^�_�_�9�
`�s�5�*A"�!A"c�n�||jvr||j|<yt|j||�yr�)r�r"�setattrr��r rFrs   r!�__setattr__zDDIndenter.__setattr__s.����#�#�#� �D�M�M�!���D�N�N�1�Q�'r#c�h�||jvr|j|=yt|j|�yr�)r�r"r�r�r�s  r!�__delattr__zDDIndenter.__delattr__s*����#�#�#��
�
�a� ��D�N�N�1�%r#Nc�j�|jj�d|jj|���S)Nz containing )r}r%r�r�ras  r!r�zDDIndenter.identity s'��%)�^�^�%<�%<�T�^�^�=T�=T�U[�=\�]�]r#r\r�r�)r%r&r'rdr�r"rRrTr$r�r�r�r)r#r!r�r��s:��F�L�L�N�N���g��)�(�&�^r#r�c�B�eZdZdj�Zdd�Zd�Zdd�Zy)�
LIIndenterzN_flowable _bullet _leftIndent _rightIndent width height spaceBefore spaceAfterNc�~�||_||_||_||_d|_d|_|�||_|�||_yyr�)r��_bulletr�r�r/r0rqrn)r r�r�r�r�rqrns       r!r"zLIIndenter.__init__%sN��!������%���'�����
�����"�*�D���!�(�D�O�"r#c��|jj||jz
|jz
|�}|D�cgc]<}t	||j|j||duxr|j
xsd����>c}Scc}w)Nr)r�r�r�)r�rdr�r�r�r�r�s     r!rdzLIIndenter.split1s����N�N� � ��D�$4�$4�!4�T�5F�5F�!F��K��$%��
 �	�1�#'�#3�#3�$(�$5�$5�"#�q��t�)�"<����"D����	��s�AA?c
��|jr|jj||||d�|jj|||jz|t	d||jz
|j
z
��yr)r�rRr�r�r�r�r�s     r!rRzLIIndenter.drawOn;sd���<�<��L�L����T�!�A�a�0������d�1�T�%5�%5�#5�a��A�c�$�BR�BR�>R�SW�Sd�Sd�>d�8e�fr#)rrNNNr�)r%r&r'rdr�r"rRr)r#r!r�r�#s ��e�k�k�m�N�
)��gr#r�)�	ListStylec��eZdZ	dd�Zy)�ListItemNc	��t|ttf�s|f}||_ix}|_|r<t|t
�s%t
|jj�d|�d���||_	t
jD]-}||vr|j|�}n|r
t||�}n�)|||<�/dD]'}|j|t||d��}|��#|||<�)y)Nz style argument (z) not a ListStyle)r�rqrn)
r!rr��
_flowables�_paramsr�rBr}r%�_style�defaultsrra)r r�rkr��params�krs       r!r"zListItem.__init__Cs���"�)�T�%�L�1�"��I�#��� "�"������e�I�.� �T�^�^�Md�Md�ej�!k�l�l��D�K��#�#�	�A��D�y��H�H�Q�K����E�!�$����F�1�I�	�7�	�A�����7�5��4�0�1�A��}���q�	�	r#r�rr)r#r!r�r�Bs���'r#r�c��eZdZd�Zy)�	_LIParamsc�<�||_||_||_||_yr�)r�r�r��first)r r�r�r�r�s     r!r"z_LIParams.__init__ms�� ��
������
���
r#Nrr)r#r!r�r�ls��r#r�c�T�eZdZdZ		dd�Zed��Zd�Zd�Zd�Z	dd�Z
dd	�Zd
�Zy)
r��1aAiINc
��||_|r9t|t�s"td|jj
z��||_tjj�D]0\}}t|d|z|j|t|||����2dD]/}|j|t||d��}|��#t|||��1d}|�1t|dd�}|�"|jdk(rd}d}n|j}d}|jdk7rj|r1|D]+}||jvs�td	|�d
|j����n7|jD](}||jvs�td|jz��||_|xst|tt f�|_d|_d|_|j)dd�|_y)
Nz!%s style argument not a ListStyler'r�F�_startr�r�Tzinvalid start=z or bullettype=zinvalid bullettype=%r�caption)r�r!r�rBr}r%rkr��itemsr�rrar��
_numberStylesr�rr��_auto�
_list_content�_dimsrk�_caption)r r�rrkr�r�rr4s        r!r"zListFlowable.__init__us���$$�����e�I�.� �!D�t�~�~�G^�G^�!^�_�_��D�J��%�%�+�+�-�	?�C�A�a��D��Q��t�x�x��'�%��!�*<�=�>�	?�.�	"�A�����7�5��4�0�1�A��}���Q�q�!�	"�
���=��D��$�/�E��}��#�#�X�-�(�E��D� �,�,�E��D����X�%���i�A��� 2� 2�2�(�PU�VZ�Vf�Vf�)g�h�h�i��)�)�U�A��� 2� 2�2�(�)@�4�CS�CS�)S�T�T�U�����;�Z��t�E�l�;��
�!�����
�����4�0��
r#c�`�|j�|j�|_|`|jSr�)r�rr�rs r!r�zListFlowable._content�s0�����%�!%�!1�!1�!3�D�����!�!�!r#c��|j|k7r5t|j||j�\|_|_||_|j|j
fSr�)r�r|r�r8r/r0r�s   r!rTzListFlowable.wrap�sF���:�:�r�>�&1�$�-�-��4�9�9�&M�#�D�J����D�J��z�z�$�+�+�%�%r#c��|jSr�)r�r�s   r!rdzListFlowable.split�s���}�}�r#c
#�&K�|jD�]}}t|ttf�r3|s�t	|�D]!\}}|dk(xrt|t
�|f���#�Mt|t��r|j}|sBt	|j�D])\}}t|t
�rtd��|dk(|f���+��|j�}|jdd�}|jdd�}|jdd�}t|j�dz
}t	|j�D]C\}}|j�}	|s|�||	d<||k(r|�||	d<|rd}dt||	||dk(�f���E��it|t
�|f�����y�w)Nrz"LIIndenter not allowed in ListItemr�rqrnrw)
r�r!rr�r�r�r�r�rBrrkr�r�)
r r�r-�zr�r�rqrnr/r�s
          r!�_flowablesIterzListFlowable._flowablesIter�s��������	6�A��!�T�%�L�)�� )�!��G���1���d�C�:�a�
�+C�'C�Q�F�F�G��A�h�'������ )�!�,�,� 7�&���1�%�a�
�3�",�-Q�"R�R���d�A�g�
�&�
$�[�[�]�F�"�J�J�w�t�4�E�"(�*�*�]�4�"@�K�!'���L��!>�J��A�L�L�)�A�-�A� )�!�,�,� 7�;���1�"�K�K�M�� �[�%<�/:�A�m�,��a�4�J�$:�.8�A�l�O��D�e���1�Q�u�Q��T�!:�:�:�;�%�Q�z�2�2�A�5�5�9	6�s�)F�E%Fc�$�|rm|jd|j�}|jd|j�}|jdd�}|jdd�}t||||||��St||j|j|�S)Nr�r�rqrnr�)rr�r�r�)r r�r�r�r�r�rqrns        r!�_makeLIIndenterzListFlowable._makeLIIndenter�s�������L��1A�1A�B�J� �*�*�]�4�3D�3D�E�K� �*�*�]�4�8�K����L��6�J��h�z�+�f�Q\�hr�s�s��h�t�'7�'7��8I�8I�&�Q�Qr#c���������fd�}nt�dd�����fd�}t||d�|d�|d�|d�|d�|d	�|d
�|d�|d��
�
S)Nc�"��t�d|z�S�Nr'r�)rFr s �r!�getpz&ListFlowable._makeBullet.<locals>.getp�s����t�C��E�*�*r#rkc�l��|�vr�|S�r|�jvrt�|�St�d|z�Sr�)r"ra)rFr�r rks ���r!r�z&ListFlowable._makeBullet.<locals>.getp�s=�����;�v�a�y� 0��Q�%�.�.�0���a��2H��t�C��E�*�*r#r�r�r�r�r�r��calcBulletDedentr�r�)
r�r�r�r�r�r�r�r�r�r�)rar�)r r�r�r�rks` ` @r!�_makeBulletzListFlowable._makeBullet�s����>�
+��F�7�4�0�E�
+�
�� $�]� 3�#�L�1� $�]� 3�#'�(8�#9�#'�(8�#9�"&��"7�!%�&8�!9�"�;�/�!%�n�!5��	r#c	�	�|j}|j}t|ttf�r|}|d}n|g}|d}t|dv�}|r	t|�}|j}|dk(�rV|j}|j}|dk(r|dk(r|j}�n&|dk(r|j}�n|}	d}
|j�D]�\}}|rt|
t||	��}
|s�!|	|z
}	�'t|t�s�8|j}
|
rE|
j |k(rLt|
t|
|
j"��}
t|
j"�}	nt|
t||	��}
|s��|	|z
}	��|dk(r(|dk(r|j|
z
}n:|j|
dzz
}n'|dk(r|j|
z
}n|j|
dzz
}||_g}|j&}d}|j�D�]l\}}t|t(�rv|j}t|ttf�r|d}||vrK|j*r=|j-|�dz}||d|d|z|_|jd}|r
||_n|}i}|s|dz
}t/|d	d�}|�||d	<|r2||j1||j3|�|�
��|s��||z
}��t|t�r�|j}
|
r@|
j |k7rt5d|
j �d|����t|
j"�}n#|j3|t/|d
d���|_|r3t|j6j9d	d��|j6d	<||�|s���||z
}���t|t:�r�|j=|j>�|j1|j@d|�
�}|jBrM|j"�|j"}|rt|�}|j3||j>�|_|r||z
}||���S||j1|d|�
����ot/|dd�}|�8|d}t|j6j9dd�|�|j6d<|jDr|jGd|jD�|S#d}Y��wxYw)Nrr�rwr4r�rlrmr?rq)r�r�zIncluded LIIndenter bulletType=z != OrderedList bulletType=r�)r�rnr)$r�r�r!rr�r�r�r�r�r�r�r�r�r�r�r�r�r��_calcBulletDedentr�r�r��indexrar�r�rBr"rr��updater�r�r�r�r�)r �btr�r
�autov�inc�bd�align�dir�tvalue�maxWr.r�r�re�aSr-�fstart�fparamsrqr�rns                      r!rzListFlowable._getContent	s���
�
�
�������e�T�%�L�)��F��1�I�E��W�F��q�	���"��-� ���
��E�
���
�
��
�v�:��%�%�E��/�/�C��E�z�e�V�m��%�%������&�&�������.�.�0�.�C�A�a��"�4�(;�D��(H�I����#�
��#�A�j�1��I�I��� �|�|�R�/�'*�4�0C�A�a�g�g�0N�'O��),�Q�W�W���#&�t�,?��V�,L�#M�D���#�
��.���:��g�~�!�-�-��4��!�-�-��S��8���F�]��*�*�T�1�B��*�*�T�#�X�5�B�!#�����
�X�X��
���&�&�(�.	G�C�A�a��!�L�)������f�d�5�\�2�#�A�Y�F��V�#��w�w� &���U� 3�A� 5��#)�%�&�>�&��%�.�#@��� !���������
� &���G���Q���%�d�=��>���*�-8�G�M�*���4�'�'���1A�1A�%�1H�PW�'�X�Y�������A�j�)��I�I����|�|�R�'�(�mn�my�my�z|�)}�~�~�����L�E� $� 0� 0��g�a��QU�>V� 0� W�A�I��03�A�J�J�N�N�=�QR�4S�T_�0`�A�J�J�}�-��1��������A�i�(����q�x�x�(��(�(����4�w�(�O���7�7��w�w�*� !������E�
�� $� 0� 0��q�x�x� @�A�I��E�S�L�E��1���4�'�'���W�'�E�F�].	G�`�T�,�t�4�
��!���e�A�'*�1�:�:�>�>�,�q�+I�*�'U�A�J�J�|�$��=�=�!�(�(�1�T�]�]�3����E
���s�S
�
Sr�r�)
r%r&r'r�r"r�r�rTrdr�r�r�rr)r#r!r�r�ssI���M���91�v�"��"�&��6�>R��0or#r�c�<�eZdZdZd�Zd�Zd�Zd
d�Zd�Zd�Z	d�Z
y	)�	TopPadderz�wrap a single flowable so that its first bit will be
    padded to fill out the space so that it appears at the
    bottom of its framec�"�||jd<y)N�
_TopPadder__f)r"r�s  r!r"zTopPadder.__init__v	s��)*��
�
�o�&r#c�l�|jj||�\}}||z
|jd<||fS)N�_TopPadder__dh)rrTr"r�s     r!rTzTopPadder.wrapy	s6���h�h�m�m�B�r�"���!�*,�Q�$��
�
�&�'���s�
r#c�|�|jj||�}t|�dkDrt|d�|d<|S)Nrwr)rrdr�r)r rUrVres    r!rdzTopPadder.split~	s7���H�H�N�N�2�b�!���q�6�!�8��Q�q�T�?�A�a�D��r#c
�t�|jj|||td|jdz
�z
|�y)NrrG)rrRr�rrNs     r!rRzTopPadder.drawOn�	s,��������q��3�q����4��#8�!8��=r#c�2�t|j||�yr�)r�rr�s   r!r�zTopPadder.__setattr__�	s�������1�r#c�.�t|j|�Sr�)rarr�s  r!r$zTopPadder.__getattr__�	s���t�x�x��"�"r#c�0�t|j|�yr�)r�rr�s  r!r�zTopPadder.__delattr__�	s�������r#Nr�)r%r&r'r(r"rTrdrRr�r$r�r)r#r!rrr	s*���+��
�>��#�r#rc�.�eZdZdZdZdd�Zd�Zd�Zd�Zy)	�	DocAssignzJAt wrap time this flowable evaluates var=expr in the doctemplate namespacerwc�B�tj|�|||f|_yr��r+r"r�)r �var�expr�lifes    r!r"zDocAssign.__init__�	s�����$����T�M��	r#c���|jd�}|jt||���	|j�dD]}	||=�S#Y�xYw#dD]
}	||=�#Y�xYwwxYw)N�
_nameSpace��availableWidth�availableHeight)r�r�dictrl)r rUrV�NSr�s     r!�funcWrapzDocAssign.funcWrap�	s���� � ��.��
�	�	�$�b��<�=�	��9�9�;�7�
����1��
�����	8�
����1������	
�s/�A�A
�
A�A%�A�A%�A 	�A%c�r�|jd|jjddz�|j�S)Nr.rw)r�r}r%r�rs r!rlzDocAssign.func�	s4��E�t�$�$�S����)@�)@���)D�%D�E�t�y�y�Q�Qr#c�(�|j||�yr�)r(r�s   r!rTzDocAssign.wrap�	s���
�
�b���r#N��forever)	r%r&r'r(rr"r(rlrTr)r#r!rr�	s��T��I�"�
�R�r#rc��eZdZdZdd�Zy)�DocExecz(at wrap time exec stmt in doc._nameSpacec�@�tj|�||f|_yr�r)r �stmt�lifetimes   r!r"zDocExec.__init__�	s�����$���x�-��	r#Nr+r$r)r#r!r.r.�	s
��2� r#r.c�0�eZdZdZdd�Zd�Zd�Zd�Zd�Zy)	�DocParaaHat wrap time create a paragraph with the value of expr as text
    if format is specified it should use %(__expr__)s for string interpolation
    of the expression expr (if any). It may also use %(name)s interpolations
    for other variables in the namespace.
    suitable defaults will be used if style and klass are None
    Nc�t�tj|�||_||_||_||_||_yr�)r+r"rr�rk�klass�escape)r rr�rkr5r6s      r!r"zDocPara.__init__�	s3�����$����	������
���
���r#c��|j}|r2t|t�st|�}|jd�|�Sy)N�docEval)rr!rCr�)r rs  r!rlzDocPara.func�	s=���y�y����d�3�'��D�	��3�4�(�(��3�D�9�9�r#c�@�|jd�j|�y)Nr�)r�r^)r r�s  r!�add_contentzDocPara.add_content�	s��<����g�&�<�<�d�Cr#c��|j||�}|jrQ|jd�j�}|j	t||���||d<|j|z}|St
|�}|S)Nr"r#�__expr__)r(r�r�rrr&rC)r rUrVr�r's     r!�	get_valuezDocPara.get_value�	ss���
�
�b��$���;�;��$�$�\�2�7�7�9�B��I�I�d�"�R�@�A�"�B�z�N��K�K�"�$�E�����J�E��r#c���|j||�}|j}|sddlm}|j}|sddlm}|�d}|jrddlm}||�}|j|||���y)Nrr})�getSampleStyleSheet�Code)r6)rkr\)
r=r5r�r~rk�reportlab.lib.stylesr?r6�xml.sax.saxutilsr:)r rUrVr�r�rkr?r6s        r!rTzDocPara.wrap�	sh�����r�"�%���J�J���C��
�
���@�%�'��/�E��;�;�/���-�E�����5�u�-�.�r#)NNNT)	r%r&r'r(r"rlr:r=rTr)r#r!r3r3�	s!����:�D�	�
r#r3c� �eZdZdd�Zd�Zd�Zy)�	DocAssertNc�J�tj|�||_||_yr�)r+r"rr�)r �condr�s   r!r"zDocAssert.__init__�	s�����$����	���r#c�R�tj|||�|_|jSr�)r3r(�_condr�s   r!r(zDocAssert.funcWrap�	s"���%�%�d�2�b�1��
��z�z�r#c�h�|j||�}t|j�st|��yr�)r=�boolrH�AssertionError)r rUrVr�s    r!rTzDocAssert.wrap�	s,�����r�"�%���D�J�J�� ��'�'�r#r�)r%r&r'r"r(rTr)r#r!rDrD�	s���
�r#rDc�"�eZdZgfd�Zd�Zd�Zy)�DocIfc�V�tj|�||_|xsg|f|_yr�)r+r"r�blocks)r rF�	thenBlock�	elseBlocks    r!r"zDocIf.__init__�	s'�����$����	��o�2�i�/��r#c�8�t|ttf�s|f}|Sr�)r!rr�)r �blocks  r!�
checkBlockzDocIf.checkBlock�	s���%��e��-��H�E��r#c
��|j|j|jtt	|j||�����yr�)r:rTrOr�rJr(r�s   r!rTz
DocIf.wrap�	s=������$�/�/�$�+�+�c�$�t�}�}�R�PR�?S�:T�6U�*V�W�X�r#N)r%r&r'r"rTrTr)r#r!rMrM�	s��/1�0�
�
r#rMc��eZdZd�Zd�Zy)�DocWhilec�h�tj|�||_|j|�|_yr�)r+r"rrTrS)r rF�
whileBlocks   r!r"zDocWhile.__init__
s'�����$����	��_�_�Z�0��
r#c��t|j||��r&|jt|j�|gz�yr�)rJr(r:rrSr�s   r!rTz
DocWhile.wrap
s8����
�
�b��$�%��D���t�D�J�J�/���6�8�r#N)r%r&r'r"rTr)r#r!rWrW
s��1�
r#rWc��eZdZdZdd�Zd�Zy)�SetTopFlowablesrwc� �||_||_yr���_F�_show�r rp�shows   r!r"zSetTopFlowables.__init__
��������
r#c��tt|dd�dd�}|rD|j|_|jr'|jr|j|j_y�Nr8r�r\)rar_�
_topFlowablesr`r�rj�r rUrVrs    r!rTzSetTopFlowables.wrap
sH���g�d�6�$�/��t�D��� $���C���z�z�d�g�g�/3�w�w��	�	�,�r#NrA�r%r&r'�
_ZEROZSIZEr"rTr)r#r!r\r\
����J��r#r\c��eZdZdZdd�Zd�Zy)�SetPageTopFlowablesrwc� �||_||_yr�r^ras   r!r"zSetPageTopFlowables.__init__
rcr#c��tt|dd�dd�}|rD|j|_|jr'|jr|j|j_yre)rar_�_pageTopFlowablesr`r�rjrgs    r!rTzSetPageTopFlowables.wrap 
sH���g�d�6�$�/��t�D���$(�G�G�C�!��z�z�d�g�g�/3�w�w��	�	�,�r#NrArhr)r#r!rlrl
rjr#rlr�)rwNNN)r�N)e�__version__r(r�rr�reportlab.lib.colorsrr�reportlab.lib.rl_accelr�reportlab.lib.enumsrr	r
rArr�rr
r�reportlab.lib.abagr�reportlab.pdfbaser�reportlab.pdfbase.pdfmetricsr�reportlab.rl_configrrrrrd�__all__rr+r�r�r�r�r�r�r�r�r6r:rCrIrOrSrUr|r�r�r�r�r�r�r�r�r�r�r�rrrr#rNrUrWr{r�r�r�r�r�rLrTrkrr�reportlab.lib.sequencerr�r&r�r�r�r�r�r�r�r�r�r�rrr.r3rDrMrWr\rlr)r#r!�<module>rzs\��
��	��,
��0�)�<�<�.�I�I�#�&�4�h�h� �
!&������N�N�`P�8�P�*��(��
�&4�PL�8�L�\[�H�[�z
�x�
�
P�X�
P�
-��
-�i�
�i�	�I�	�	�)�	�F�F�F�(3$�j
���@�?�8�@�D�\��C�H�C�	�!�(�!�">$��>$�@P��P�O��O�*��*�X/�/�
�8#��8#�td�:�h�d�N� �$j#�*�X�j#�Z;�;�zvQ�
�#5�h�vQ�p$�x�$�:.��.�, �x� �.s�(��s�j	5�V�5�"&$�d�&$�P,"�n�,"�\2�H�2�j4��$� � ��!�#�$�!�#�#���

�3�3�jB�1^��1^�fg��g�<+�(�(�T��}�:�h�}�~���<���4 �i� �0�i�0�d��� 
�G�
�	�u�	��h���(�r#

Zerion Mini Shell 1.0