
    Mi                      S r SSKJr  SSKJr  SSKJr  SSKJr  SSK	J
r
  SSKJr  S rS	 r " S
 S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S  S!\5      r " S" S#\5      r " S$ S%\5      r " S& S'\5      r " S( S)\5      r " S* S+\5      r g,)-z8Composers for default chart XML for various chart types.    )annotations)deepcopyescape)XL_CHART_TYPE)	parse_xml)nsdeclsc                (   [         n 0 UR                  [        _UR                  [        _UR                  [        _UR
                  [        _UR                  [        _UR                  [        _UR                  [        _UR                  [        _UR                  [        _UR                  [        _UR                  [        _UR                  [         _UR"                  [         _UR$                  [&        _UR(                  [&        _UR*                  [&        _UR,                  [&        _UR.                  [&        UR0                  [&        UR2                  [4        UR6                  [4        UR8                  [:        UR<                  [:        UR>                  [:        UR@                  [B        URD                  [B        URF                  [B        URH                  [B        URJ                  [B        0EU    nU" X5      $ ! [L         a    [O        SU -  5      ef = f)zw
Factory function returning appropriate XML writer object for
*chart_type*, loaded with *chart_type* and *chart_data*.
z0XML writer for chart type %s not yet implemented)(r   AREA_AreaChartXmlWriterAREA_STACKEDAREA_STACKED_100BAR_CLUSTERED_BarChartXmlWriterBAR_STACKEDBAR_STACKED_100BUBBLE_BubbleChartXmlWriterBUBBLE_THREE_D_EFFECTCOLUMN_CLUSTEREDCOLUMN_STACKEDCOLUMN_STACKED_100DOUGHNUT_DoughnutChartXmlWriterDOUGHNUT_EXPLODEDLINE_LineChartXmlWriterLINE_MARKERSLINE_MARKERS_STACKEDLINE_MARKERS_STACKED_100LINE_STACKEDLINE_STACKED_100PIE_PieChartXmlWriterPIE_EXPLODEDRADAR_RadarChartXmlWriterRADAR_FILLEDRADAR_MARKERS
XY_SCATTER_XyChartXmlWriterXY_SCATTER_LINESXY_SCATTER_LINES_NO_MARKERSXY_SCATTER_SMOOTHXY_SCATTER_SMOOTH_NO_MARKERSKeyErrorNotImplementedError)
chart_type
chart_dataXL_CT
BuilderClss       n/var/www/eduai.edurigo.com/storigo/production/storigo_env/lib/python3.13/site-packages/pptx/chart/xmlwriter.pyChartXmlWriterr7      s   
 E!c
JJ+
 3
 ""$7
 !3	

 1
 !!#5
 LL/
 '')>
 ""$6
   "4
 $$&8
 NN3
 ##%<
 JJ+
  3
  &&(;!
" **,?#
$  3""$7II) 2KK- 4!5/""$5--/@##%6..0A;
< =
B j--  c!"TWa"abbcs   G(G8 8Hc                *   [         nUR                  [        UR                  [        UR                  [
        UR                  [
        UR                  [
        UR                  [
        UR                  [
        0R                  U [        5      nU" U5      $ )zI
Return a |_BaseSeriesXmlRewriter| subclass appropriate to *chart_type*.
)r   r   _BubbleSeriesXmlRewriterr   r*   _XySeriesXmlRewriterr,   r-   r.   r/   get_CategorySeriesXmlRewriter)r2   r3   r4   RewriterClss       r6   SeriesXmlRewriterFactoryr>   8   s     E 	.##%=. 4))+?!5**,@ 
c*01  z""    c                  <   ^  \ rS rSrSrU 4S jr\S 5       rSrU =r	$ )_BaseChartXmlWriterO   z
Generates XML text (unicode) for a default chart, like the one added by
PowerPoint when you click the *Add Column Chart* button on the ribbon.
Differentiated XML for different chart types is provided by subclasses.
c                b   > [         [        U ]  5         Xl        X l        [        U5      U l        g N)superrA   __init___chart_type_chart_datalist_series_seq)selfr2   
series_seq	__class__s      r6   rF   _BaseChartXmlWriter.__init__V   s*    !413%%
+r?   c                    [        S5      e)z
The full XML stream for the chart specified by this chart builder, as
unicode text. This method must be overridden by each subclass.
z%must be implemented by all subclassesr1   rK   s    r6   xml_BaseChartXmlWriter.xml\   s     ""IJJr?   )rH   rG   rJ   )
__name__
__module____qualname____firstlineno____doc__rF   propertyrR   __static_attributes____classcell__rM   s   @r6   rA   rA   O   s#    , K Kr?   rA   c                  |   ^  \ rS rSrSrSU 4S jjr\S 5       rS rS r	\S 5       r
\S 5       r\S	 5       rS
rU =r$ )_BaseSeriesXmlWritere   z1
Provides shared members for series XML writers.
c                B   > [         [        U ]  5         Xl        X l        g rD   )rE   r^   rF   _series
_date_1904)rK   series	date_1904rM   s      r6   rF   _BaseSeriesXmlWriter.__init__j   s    "D24#r?   c                @    [        U R                  R                  5      $ )z'
The XML-escaped name for this series.
)r   ra   namerQ   s    r6   rg   _BaseSeriesXmlWriter.nameo   s    
 dll''((r?   c                N    U R                  U5      nSR                  " S0 XUS.D6$ )zP
Return the ``<c:numRef>`` element specified by the parameters as
unicode text.
z            <c:numRef>
              <c:f>{wksht_ref}</c:f>
              <c:numCache>
                <c:formatCode>{number_format}</c:formatCode>
{pt_xml}              </c:numCache>
            </c:numRef>
)	wksht_refnumber_formatpt_xml )rl   format)rK   rj   rk   valuesrl   s        r6   
numRef_xml_BaseSeriesXmlWriter.numRef_xmlv   s@    
 V$( & _ "+V\]_ 	_r?   c                    SR                  [        U5      S9nSn[        U5       H  u  pEUc  M
  X#R                  XES9-  nM     U$ )aR  
Return the ``<c:ptCount>`` and sequence of ``<c:pt>`` elements
corresponding to *values* as a single unicode text string.
`c:ptCount` refers to the number of `c:pt` elements in this sequence.
The `idx` attribute value for `c:pt` elements locates the data point
in the overall data point sequence of the chart and is started at
*offset*.
z.                <c:ptCount val="{pt_count}"/>
)pt_countz`                <c:pt idx="{idx}">
                  <c:v>{value}</c:v>
                </c:pt>
)idxvalue)rn   len	enumerate)rK   ro   rR   pt_tmplrt   ru   s         r6   rl   _BaseSeriesXmlWriter.pt_xml   s^     AHHRUV\R]H^( 	
 $F+JC}>>c>77C ,
 
r?   c           
         U R                   R                  " S0 U R                  R                  U R                  S[        S5      -  S.D6n[        U5      $ )zO
Return a ``<c:tx>`` oxml element for this series, containing the
series name.
 %scrj   series_namer	   rm   )_tx_tmplrn   ra   name_refrg   r	   r   rK   rR   s     r6   tx_BaseSeriesXmlWriter.tx   sN     mm"" 
!\\22#yy 73</
 ~r?   c                ~    U R                   R                  " S0 U R                  R                  U R                  SS.D6$ )z
Return the ``<c:tx>`` (tx is short for 'text') element for this
series as unicode text. This element contains the series name.
 r}   rm   )r   rn   ra   r   rg   rQ   s    r6   tx_xml_BaseSeriesXmlWriter.tx_xml   s<     }}## 
!\\22#yy
 	
r?   c                     g)z
The string formatting template for the ``<c:tx>`` element for this
series, containing the series title and spreadsheet range reference.
a>            <c:tx{nsdecls}>
            <c:strRef>
              <c:f>{wksht_ref}</c:f>
              <c:strCache>
                <c:ptCount val="1"/>
                <c:pt idx="0">
                  <c:v>{series_name}</c:v>
                </c:pt>
              </c:strCache>
            </c:strRef>
          </c:tx>
rm   rQ   s    r6   r   _BaseSeriesXmlWriter._tx_tmpl   s    
"	
r?   )rb   ra   )F)rT   rU   rV   rW   rX   rF   rY   rg   rp   rl   r   r   r   rZ   r[   r\   s   @r6   r^   r^   e   sh    $
 ) )_ .   
 
 
 
r?   r^   c                  J   ^  \ rS rSrSrU 4S jrS rS rS rS r	S r
S	rU =r$ )
_BaseSeriesXmlRewriter   z&
Base class for series XML rewriters.
c                6   > [         [        U ]  5         Xl        g rD   )rE   r   rF   rH   )rK   r3   rM   s     r6   rF   _BaseSeriesXmlRewriter.__init__   s    $d46%r?   c                    UR                   UR                  p2U R                  nU R                  U[	        U5      5        [        UR                  U5       H  u  pVU R                  XVU5        M     g)a  
Rewrite the series data under *chartSpace* using the chart data
contents. All series-level formatting is left undisturbed. If
the chart data contains fewer series than *chartSpace*, the extra
series in *chartSpace* are deleted. If *chart_data* contains more
series than the *chartSpace* element, new series are added to the
last plot in the chart and series formatting is "cloned" from the
last series in that plot.
N)plotAreard   rH   _adjust_ser_countrv   zipsers_rewrite_ser_data)rK   
chartSpacer   rd   r3   serseries_datas          r6   replace_series_data*_BaseSeriesXmlRewriter.replace_series_data   s^     )11:3G3G)%%
xZ9 #HMM: >C""3Y? !?r?   c                ^   ^ U4S jnTR                   n[        U5       H  nU" U5      nM     g)zx
Add `c:ser` elements to the last xChart element in *plotArea*, cloned
from the last `c:ser` child of that last xChart.
c                   > [        U 5      nTR                  UR                  l        TR                  UR
                  l        U R                  U5        U$ rD   )r   next_idxrt   val
next_orderorderaddnext)r   new_serr   s     r6   	clone_ser:_BaseSeriesXmlRewriter._add_cloned_sers.<locals>.clone_ser   s@    smG&//GKKO ( 3 3GMMKK Nr?   N)last_serrange)rK   r   countr   r   _s    `    r6   _add_cloned_sers'_BaseSeriesXmlRewriter._add_cloned_sers   s-    	 $$uA *H r?   c                    U[        UR                  5      -
  nUS:  a  U R                  X5        gUS:  a  U R                  U[	        U5      5        gg)al  
Adjust the number of c:ser elements in *plotArea* to *new_ser_count*.
Excess c:ser elements are deleted from the end, along with any xChart
elements that are left empty as a result. Series elements are
considered in xChart + series order. Any new c:ser elements required
are added to the last xChart element and cloned from the last c:ser
element in that xChart.
r   N)rv   r   r   _trim_ser_count_byabs)rK   r   new_ser_countser_count_diffs       r6   r   (_BaseSeriesXmlRewriter._adjust_ser_count   sO     'X]]);;A!!(;a##Hc..AB  r?   c                    [        S5      e)zP
Rewrite selected child elements of *ser* based on the values in
*series_data*.
z$must be implemented by each subclassrP   )rK   r   r   rd   s       r6   r   (_BaseSeriesXmlRewriter._rewrite_ser_data  s    
 ""HIIr?   c                L   UR                   U* S nU H$  nUR                  5       nUR                  U5        M&     UR                  5        Vs/ s H   n[	        UR                   5      S:X  d  M  UPM"     nnU H$  nUR                  5       nUR                  U5        M&     gs  snf )z
Remove the last *count* ser elements from *plotArea*. Any xChart
elements having no ser child elements after trimming are also
removed.
Nr   )r   	getparentremoveiter_xChartsrv   )rK   r   r   
extra_sersr   parentxChartextra_xChartss           r6   r   )_BaseSeriesXmlRewriter._trim_ser_count_by  s     ]]E67+
C]]_FMM#  /7.C.C.E_.EFV[[IY]^I^.E_#F%%'FMM&! $ `s   B!.B!)rH   )rT   rU   rV   rW   rX   rF   r   r   r   r   r   rZ   r[   r\   s   @r6   r   r      s.    &@ +"CJ" "r?   r   c                  X    \ rS rSrSr\S 5       r\S 5       r\S 5       r\S 5       r	Sr
g)	r   i  zK
Provides specialized methods particular to the ``<c:areaChart>`` element.
c                j    SR                   " S0 U R                  U R                  U R                  S.D6$ )Na  <?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<c:chartSpace xmlns:c="http://schemas.openxmlformats.org/drawingml/2006/chart" xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">
  <c:date1904 val="0"/>
  <c:roundedCorners val="0"/>
  <c:chart>
    <c:autoTitleDeleted val="0"/>
    <c:plotArea>
      <c:layout/>
      <c:areaChart>
{grouping_xml}        <c:varyColors val="0"/>
{ser_xml}        <c:dLbls>
          <c:showLegendKey val="0"/>
          <c:showVal val="0"/>
          <c:showCatName val="0"/>
          <c:showSerName val="0"/>
          <c:showPercent val="0"/>
          <c:showBubbleSize val="0"/>
        </c:dLbls>
        <c:axId val="-2101159928"/>
        <c:axId val="-2100718248"/>
      </c:areaChart>
{cat_ax_xml}      <c:valAx>
        <c:axId val="-2100718248"/>
        <c:scaling>
          <c:orientation val="minMax"/>
        </c:scaling>
        <c:delete val="0"/>
        <c:axPos val="l"/>
        <c:majorGridlines/>
        <c:numFmt formatCode="General" sourceLinked="1"/>
        <c:majorTickMark val="out"/>
        <c:minorTickMark val="none"/>
        <c:tickLblPos val="nextTo"/>
        <c:crossAx val="-2101159928"/>
        <c:crosses val="autoZero"/>
        <c:crossBetween val="midCat"/>
      </c:valAx>
    </c:plotArea>
    <c:legend>
      <c:legendPos val="r"/>
      <c:layout/>
      <c:overlay val="0"/>
    </c:legend>
    <c:plotVisOnly val="1"/>
    <c:dispBlanksAs val="zero"/>
    <c:showDLblsOverMax val="0"/>
  </c:chart>
  <c:txPr>
    <a:bodyPr/>
    <a:lstStyle/>
    <a:p>
      <a:pPr>
        <a:defRPr sz="1800"/>
      </a:pPr>
      <a:endParaRPr/>
    </a:p>
  </c:txPr>
</c:chartSpace>
grouping_xmlser_xml
cat_ax_xmlrm   rn   _grouping_xml_ser_xml_cat_ax_xmlrQ   s    r6   rR   _AreaChartXmlWriter.xml$  sJ    ? @ &CA G
F !% 2 2=="..EG
 G	
r?   c                    U R                   R                  nUR                  (       a  SR                  " S0 SUR                  0D6$  g)Na!        <c:dateAx>
        <c:axId val="-2101159928"/>
        <c:scaling>
          <c:orientation val="minMax"/>
        </c:scaling>
        <c:delete val="0"/>
        <c:axPos val="b"/>
        <c:numFmt formatCode="{nf}" sourceLinked="1"/>
        <c:majorTickMark val="out"/>
        <c:minorTickMark val="none"/>
        <c:tickLblPos val="nextTo"/>
        <c:crossAx val="-2100718248"/>
        <c:crosses val="autoZero"/>
        <c:auto val="1"/>
        <c:lblOffset val="100"/>
        <c:baseTimeUnit val="days"/>
      </c:dateAx>
nfa?        <c:catAx>
        <c:axId val="-2101159928"/>
        <c:scaling>
          <c:orientation val="minMax"/>
        </c:scaling>
        <c:delete val="0"/>
        <c:axPos val="b"/>
        <c:numFmt formatCode="General" sourceLinked="1"/>
        <c:majorTickMark val="out"/>
        <c:minorTickMark val="none"/>
        <c:tickLblPos val="nextTo"/>
        <c:crossAx val="-2100718248"/>
        <c:crosses val="autoZero"/>
        <c:auto val="1"/>
        <c:lblAlgn val="ctr"/>
        <c:lblOffset val="100"/>
        <c:noMultiLvlLbl val="0"/>
      </c:catAx>
rm   rH   
categories	are_datesrn   rk   rK   r   s     r6   r   _AreaChartXmlWriter._cat_ax_xmlo  sV    %%00
&" f% 9$ j667%9 9*!	
r?   c                    [         R                  S[         R                  S[         R                  S0U R                     nSU-  $ )NstandardstackedpercentStackedz        <c:grouping val="%s"/>
)r   r   r   r   rG   )rK   r   s     r6   r   !_AreaChartXmlWriter._grouping_xml  sJ     
&&	**,<
 

	
 2C77r?   c                    SnU R                    H[  n[        U5      nUSR                  " S0 UR                  UR                  UR                  UR
                  UR                  S.D6-  nM]     U$ Nr   z        <c:ser>
          <c:idx val="{ser_idx}"/>
          <c:order val="{ser_order}"/>
{tx_xml}{cat_xml}{val_xml}        </c:ser>
)ser_idx	ser_orderr   cat_xmlval_xmlrm   rH   _CategorySeriesXmlWriterrn   indexr   r   r   rK   rR   rc   
xml_writers       r6   r   _AreaChartXmlWriter._ser_xml  }    &&F1&9J% f   &||!'(//)11)11 C '& 
r?   rm   N)rT   rU   rV   rW   rX   rY   rR   r   r   r   rZ   rm   r?   r6   r   r     s[     H
 H
T +
 +
Z 8 8  r?   r   c                      \ rS rSrSr\S 5       r\S 5       r\S 5       r\S 5       r	\S 5       r
\S 5       r\S	 5       r\S
 5       rSrg)r   i  zJ
Provides specialized methods particular to the ``<c:barChart>`` element.
c                    SR                   " S0 U R                  U R                  U R                  U R                  U R
                  U R                  S.D6$ )Na  <?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<c:chartSpace xmlns:c="http://schemas.openxmlformats.org/drawingml/2006/chart" xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">
  <c:date1904 val="0"/>
  <c:chart>
    <c:autoTitleDeleted val="0"/>
    <c:plotArea>
      <c:barChart>
{barDir_xml}{grouping_xml}{ser_xml}{overlap_xml}        <c:axId val="-2068027336"/>
        <c:axId val="-2113994440"/>
      </c:barChart>
{cat_ax_xml}      <c:valAx>
        <c:axId val="-2113994440"/>
        <c:scaling/>
        <c:delete val="0"/>
        <c:axPos val="{val_ax_pos}"/>
        <c:majorGridlines/>
        <c:majorTickMark val="out"/>
        <c:minorTickMark val="none"/>
        <c:tickLblPos val="nextTo"/>
        <c:crossAx val="-2068027336"/>
        <c:crosses val="autoZero"/>
      </c:valAx>
    </c:plotArea>
    <c:dispBlanksAs val="gap"/>
  </c:chart>
  <c:txPr>
    <a:bodyPr/>
    <a:lstStyle/>
    <a:p>
      <a:pPr>
        <a:defRPr sz="1800"/>
      </a:pPr>
      <a:endParaRPr lang="en-US"/>
    </a:p>
  </c:txPr>
</c:chartSpace>
)
barDir_xmlr   r   overlap_xmlr   
val_ax_posrm   )rn   _barDir_xmlr   r   _overlap_xmlr   _val_ax_posrQ   s    r6   rR   _BarChartXmlWriter.xml  sa    + X &[- 6
^ #.. $ 2 2==#00".."..]6
 6	
r?   c                   [         nUR                  UR                  UR                  4nUR                  UR
                  UR                  4nU R                  U;   a  gU R                  U;   a  g[        SU R                  -  5      e)Nz        <c:barDir val="bar"/>
z        <c:barDir val="col"/>
z"no _barDir_xml() for chart type %s)	r   r   r   r   r   r   r   rG   r1   )rK   XL	bar_types	col_typess       r6   r   _BarChartXmlWriter._barDir_xml  sz    %%r~~r7I7IJ	(("*;*;R=R=RS	y(4*4!"FIYIY"YZZr?   c                    [         R                  S[         R                  S[         R                  S[         R                  S[         R
                  S[         R                  S0U R                     $ )Nlbr   r   r   r   r   r   r   rG   rQ   s    r6   _cat_ax_pos_BarChartXmlWriter._cat_ax_pos	  `     ''%%s))3**C((#,,c
 

 	r?   c                    U R                   R                  nUR                  (       a)  SR                  " S0 U R                  UR
                  S.D6$ SR                  " S0 SU R                  0D6$ )Na,        <c:dateAx>
        <c:axId val="-2068027336"/>
        <c:scaling>
          <c:orientation val="minMax"/>
        </c:scaling>
        <c:delete val="0"/>
        <c:axPos val="{cat_ax_pos}"/>
        <c:numFmt formatCode="{nf}" sourceLinked="1"/>
        <c:majorTickMark val="out"/>
        <c:minorTickMark val="none"/>
        <c:tickLblPos val="nextTo"/>
        <c:crossAx val="-2113994440"/>
        <c:crosses val="autoZero"/>
        <c:auto val="1"/>
        <c:lblOffset val="100"/>
        <c:baseTimeUnit val="days"/>
      </c:dateAx>
)
cat_ax_posr   a        <c:catAx>
        <c:axId val="-2068027336"/>
        <c:scaling>
          <c:orientation val="minMax"/>
        </c:scaling>
        <c:delete val="0"/>
        <c:axPos val="{cat_ax_pos}"/>
        <c:majorTickMark val="out"/>
        <c:minorTickMark val="none"/>
        <c:tickLblPos val="nextTo"/>
        <c:crossAx val="-2113994440"/>
        <c:crosses val="autoZero"/>
        <c:auto val="1"/>
        <c:lblAlgn val="ctr"/>
        <c:lblOffset val="100"/>
        <c:noMultiLvlLbl val="0"/>
      </c:catAx>
r   rm   )rH   r   r   rn   r   rk   r   s     r6   r   _BarChartXmlWriter._cat_ax_xml  s    %%00
&" f% Y$ '+&6&6j>V>VW%Y Y*!" &% 5$ !$"2"23%5 	5r?   c                4   [         nUR                  UR                  4nUR                  UR                  4nUR
                  UR                  4nU R                  U;   a  gU R                  U;   a  gU R                  U;   a  g[        SU R                  -  5      e)Nz&        <c:grouping val="clustered"/>
$        <c:grouping val="stacked"/>
+        <c:grouping val="percentStacked"/>
$no _grouping_xml() for chart type %s)	r   r   r   r   r   r   r   rG   r1   )rK   r   clustered_typesstacked_typespercentStacked_typess        r6   r    _BarChartXmlWriter._grouping_xmlA  s    ++R-@-@A):):; " 2 2B4I4IJ.<.:!55A!"H4K[K["[\\r?   c                    [         nUR                  UR                  UR                  UR                  4nU R
                  U;   a  gg)Nz        <c:overlap val="100"/>
r   )r   r   r   r   r   rG   )rK   r   r   s      r6   r   _BarChartXmlWriter._overlap_xmlO  sH    NN!!	 
 335r?   c                    SnU R                    H[  n[        U5      nUSR                  " S0 UR                  UR                  UR                  UR
                  UR                  S.D6-  nM]     U$ r   r   r   s       r6   r   _BarChartXmlWriter._ser_xml\  r   r?   c                    [         R                  S[         R                  S[         R                  S[         R                  S[         R
                  S[         R                  S0U R                     $ )Nr   r   r   rQ   s    r6   r   _BarChartXmlWriter._val_ax_post  r   r?   rm   N)rT   rU   rV   rW   rX   rY   rR   r   r   r   r   r   r   r   rZ   rm   r?   r6   r   r     s     7
 7
r [ [   *5 *5X ] ] 
 
  .  r?   r   c                  H    \ rS rSrSr\S 5       r\S 5       r\S 5       rSr	g)r   i  zO
Provides specialized methods particular to the ``<c:doughnutChart>``
element.
c                >    SR                   " S0 SU R                  0D6$ )Na  <?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<c:chartSpace xmlns:c="http://schemas.openxmlformats.org/drawingml/2006/chart" xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">
  <c:date1904 val="0"/>
  <c:roundedCorners val="0"/>
  <c:chart>
    <c:autoTitleDeleted val="0"/>
    <c:plotArea>
      <c:layout/>
      <c:doughnutChart>
        <c:varyColors val="1"/>
{ser_xml}        <c:dLbls>
          <c:showLegendKey val="0"/>
          <c:showVal val="0"/>
          <c:showCatName val="0"/>
          <c:showSerName val="0"/>
          <c:showPercent val="0"/>
          <c:showBubbleSize val="0"/>
          <c:showLeaderLines val="1"/>
        </c:dLbls>
        <c:firstSliceAng val="0"/>
        <c:holeSize val="50"/>
      </c:doughnutChart>
    </c:plotArea>
    <c:legend>
      <c:legendPos val="r"/>
      <c:layout/>
      <c:overlay val="0"/>
    </c:legend>
    <c:plotVisOnly val="1"/>
    <c:dispBlanksAs val="gap"/>
    <c:showDLblsOverMax val="0"/>
  </c:chart>
  <c:txPr>
    <a:bodyPr/>
    <a:lstStyle/>
    <a:p>
      <a:pPr>
        <a:defRPr sz="1800"/>
      </a:pPr>
      <a:endParaRPr/>
    </a:p>
  </c:txPr>
</c:chartSpace>
r   rm   rn   r   rQ   s    r6   rR   _DoughnutChartXmlWriter.xml  s4    . ^ &a0 0/` t}}-a0/ 0	/r?   c                B    U R                   [        R                  :X  a  ggNz"          <c:explosion val="25"/>
r   )rG   r   r   rQ   s    r6   _explosion_xml&_DoughnutChartXmlWriter._explosion_xml  s    }>>>8r?   c                    SnU R                    Hf  n[        U5      nUSR                  " S0 UR                  UR                  UR                  U R
                  UR                  UR                  S.D6-  nMh     U$ )Nr   z        <c:ser>
          <c:idx val="{ser_idx}"/>
          <c:order val="{ser_order}"/>
{tx_xml}{explosion_xml}{cat_xml}{val_xml}        </c:ser>
)r   r   r   explosion_xmlr   r   rm   )rH   r   rn   r   r   r  r   r   r   s       r6   r    _DoughnutChartXmlWriter._ser_xml  s    &&F1&9J% f	   &||!'(//%)%8%8)11)11 C '* 
r?   rm   N
rT   rU   rV   rW   rX   rY   rR   r  r   rZ   rm   r?   r6   r   r     sD    
 1/ 1/f  
  r?   r   c                  h    \ rS rSrSr\S 5       r\S 5       r\S 5       r\S 5       r	\S 5       r
Srg	)
r   i  zK
Provides specialized methods particular to the ``<c:lineChart>`` element.
c                j    SR                   " S0 U R                  U R                  U R                  S.D6$ )Na`  <?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<c:chartSpace xmlns:c="http://schemas.openxmlformats.org/drawingml/2006/chart" xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">
  <c:date1904 val="0"/>
  <c:chart>
    <c:autoTitleDeleted val="0"/>
    <c:plotArea>
      <c:lineChart>
{grouping_xml}        <c:varyColors val="0"/>
{ser_xml}        <c:marker val="1"/>
        <c:smooth val="0"/>
        <c:axId val="2118791784"/>
        <c:axId val="2140495176"/>
      </c:lineChart>
{cat_ax_xml}      <c:valAx>
        <c:axId val="2140495176"/>
        <c:scaling/>
        <c:delete val="0"/>
        <c:axPos val="l"/>
        <c:majorGridlines/>
        <c:majorTickMark val="out"/>
        <c:minorTickMark val="none"/>
        <c:tickLblPos val="nextTo"/>
        <c:crossAx val="2118791784"/>
        <c:crosses val="autoZero"/>
      </c:valAx>
    </c:plotArea>
    <c:legend>
      <c:legendPos val="r"/>
      <c:layout/>
      <c:overlay val="0"/>
    </c:legend>
    <c:plotVisOnly val="1"/>
    <c:dispBlanksAs val="gap"/>
    <c:showDLblsOverMax val="0"/>
  </c:chart>
  <c:txPr>
    <a:bodyPr/>
    <a:lstStyle/>
    <a:p>
      <a:pPr>
        <a:defRPr sz="1800"/>
      </a:pPr>
      <a:endParaRPr lang="en-US"/>
    </a:p>
  </c:txPr>
</c:chartSpace>
r   rm   r   rQ   s    r6   rR   _LineChartXmlWriter.xml  sF    3 h &k5 ;
n !% 2 2=="..m;
 ;	
r?   c                    U R                   R                  nUR                  (       a  SR                  " S0 SUR                  0D6$  g)Na        <c:dateAx>
        <c:axId val="2118791784"/>
        <c:scaling>
          <c:orientation val="minMax"/>
        </c:scaling>
        <c:delete val="0"/>
        <c:axPos val="b"/>
        <c:numFmt formatCode="{nf}" sourceLinked="1"/>
        <c:majorTickMark val="out"/>
        <c:minorTickMark val="none"/>
        <c:tickLblPos val="nextTo"/>
        <c:crossAx val="2140495176"/>
        <c:crosses val="autoZero"/>
        <c:auto val="1"/>
        <c:lblOffset val="100"/>
        <c:baseTimeUnit val="days"/>
      </c:dateAx>
r   a        <c:catAx>
        <c:axId val="2118791784"/>
        <c:scaling>
          <c:orientation val="minMax"/>
        </c:scaling>
        <c:delete val="0"/>
        <c:axPos val="b"/>
        <c:majorTickMark val="out"/>
        <c:minorTickMark val="none"/>
        <c:tickLblPos val="nextTo"/>
        <c:crossAx val="2140495176"/>
        <c:crosses val="autoZero"/>
        <c:auto val="1"/>
        <c:lblAlgn val="ctr"/>
        <c:lblOffset val="100"/>
        <c:noMultiLvlLbl val="0"/>
      </c:catAx>
rm   r   r   s     r6   r   _LineChartXmlWriter._cat_ax_xml  sV    %%00
&" f% 9$ j667%9 9*!	
r?   c                4   [         nUR                  UR                  4nUR                  UR                  4nUR
                  UR                  4nU R                  U;   a  gU R                  U;   a  gU R                  U;   a  g[        SU R                  -  5      e)Nz%        <c:grouping val="standard"/>
r   r   r   )	r   r   r   r!   r   r"   r    rG   r1   )rK   r   standard_typesr   r   s        r6   r   !_LineChartXmlWriter._grouping_xmlL  s    ''2??3"*A*AB " 3 3R5P5PQ~-;.:!55A!"H4K[K["[\\r?   c                z    [         nUR                  UR                  UR                  4nU R                  U;   a   ggNzN          <c:marker>
            <c:symbol val="none"/>
          </c:marker>
r   )r   r   r!   r"   rG   )rK   r   no_marker_typess      r6   _marker_xml_LineChartXmlWriter._marker_xmlZ  s>    77BOOR5H5HI.*
 r?   c                    SnU R                    Hf  n[        U5      nUSR                  " S0 UR                  UR                  UR                  U R
                  UR                  UR                  S.D6-  nMh     U$ Nr   z        <c:ser>
          <c:idx val="{ser_idx}"/>
          <c:order val="{ser_order}"/>
{tx_xml}{marker_xml}{cat_xml}{val_xml}          <c:smooth val="0"/>
        </c:ser>
)r   r   r   
marker_xmlr   r   rm   rH   r   rn   r   r   r  r   r   r   s       r6   r   _LineChartXmlWriter._ser_xmlf      &&F1&9J% f
   &||!'(//"&"2"2)11)11 C ', 
r?   rm   N)rT   rU   rV   rW   rX   rY   rR   r   r   r  r   rZ   rm   r?   r6   r   r     so     <
 <
| *
 *
X ] ] 	 	  r?   r   c                  H    \ rS rSrSr\S 5       r\S 5       r\S 5       rSr	g)r$   i  zJ
Provides specialized methods particular to the ``<c:pieChart>`` element.
c                >    SR                   " S0 SU R                  0D6$ )Na  <?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<c:chartSpace xmlns:c="http://schemas.openxmlformats.org/drawingml/2006/chart" xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">
  <c:chart>
    <c:autoTitleDeleted val="0"/>
    <c:plotArea>
      <c:pieChart>
        <c:varyColors val="1"/>
{ser_xml}      </c:pieChart>
    </c:plotArea>
    <c:dispBlanksAs val="gap"/>
  </c:chart>
  <c:txPr>
    <a:bodyPr/>
    <a:lstStyle/>
    <a:p>
      <a:pPr>
        <a:defRPr sz="1800"/>
      </a:pPr>
      <a:endParaRPr lang="en-US"/>
    </a:p>
  </c:txPr>
</c:chartSpace>
r   rm   r  rQ   s    r6   rR   _PieChartXmlWriter.xml  s0     4 &7 /6 t}}-7/ 	/r?   c                B    U R                   [        R                  :X  a  ggr
  )rG   r   r%   rQ   s    r6   r  !_PieChartXmlWriter._explosion_xml  s    }9998r?   c           	         [        U R                  S   5      nSR                  " S0 UR                  U R                  UR
                  UR                  S.D6nU$ )Nr   z        <c:ser>
          <c:idx val="0"/>
          <c:order val="0"/>
{tx_xml}{explosion_xml}{cat_xml}{val_xml}        </c:ser>
)r   r  r   r   rm   )r   rH   rn   r   r  r   r   )rK   r   rR   s      r6   r   _PieChartXmlWriter._ser_xml  sf    -d.>.>q.AB
! &	 
 %++!%!4!4%--%--	
" 
r?   rm   Nr  rm   r?   r6   r$   r$     sC     / /<  
  r?   r$   c                  X    \ rS rSrSr\S 5       r\S 5       r\S 5       r\S 5       r	Sr
g)	r'   i  z3
Generates XML for the ``<c:radarChart>`` element.
c                T    SR                   " S0 U R                  U R                  S.D6$ )NaI	  <?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<c:chartSpace xmlns:c="http://schemas.openxmlformats.org/drawingml/2006/chart" xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">
  <c:date1904 val="0"/>
  <c:roundedCorners val="0"/>
  <mc:AlternateContent xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006">
    <mc:Choice xmlns:c14="http://schemas.microsoft.com/office/drawing/2007/8/2/chart" Requires="c14">
      <c14:style val="118"/>
    </mc:Choice>
    <mc:Fallback>
      <c:style val="18"/>
    </mc:Fallback>
  </mc:AlternateContent>
  <c:chart>
    <c:autoTitleDeleted val="0"/>
    <c:plotArea>
      <c:layout/>
      <c:radarChart>
        <c:radarStyle val="{radar_style}"/>
        <c:varyColors val="0"/>
{ser_xml}        <c:axId val="2073612648"/>
        <c:axId val="-2112772216"/>
      </c:radarChart>
      <c:catAx>
        <c:axId val="2073612648"/>
        <c:scaling>
          <c:orientation val="minMax"/>
        </c:scaling>
        <c:delete val="0"/>
        <c:axPos val="b"/>
        <c:majorGridlines/>
        <c:numFmt formatCode="m/d/yy" sourceLinked="1"/>
        <c:majorTickMark val="out"/>
        <c:minorTickMark val="none"/>
        <c:tickLblPos val="nextTo"/>
        <c:crossAx val="-2112772216"/>
        <c:crosses val="autoZero"/>
        <c:auto val="1"/>
        <c:lblAlgn val="ctr"/>
        <c:lblOffset val="100"/>
        <c:noMultiLvlLbl val="0"/>
      </c:catAx>
      <c:valAx>
        <c:axId val="-2112772216"/>
        <c:scaling>
          <c:orientation val="minMax"/>
        </c:scaling>
        <c:delete val="0"/>
        <c:axPos val="l"/>
        <c:majorGridlines/>
        <c:numFmt formatCode="General" sourceLinked="1"/>
        <c:majorTickMark val="cross"/>
        <c:minorTickMark val="none"/>
        <c:tickLblPos val="nextTo"/>
        <c:crossAx val="2073612648"/>
        <c:crosses val="autoZero"/>
        <c:crossBetween val="between"/>
      </c:valAx>
    </c:plotArea>
    <c:plotVisOnly val="1"/>
    <c:dispBlanksAs val="gap"/>
    <c:showDLblsOverMax val="0"/>
  </c:chart>
  <c:txPr>
    <a:bodyPr/>
    <a:lstStyle/>
    <a:p>
      <a:pPr>
        <a:defRPr sz="1800"/>
      </a:pPr>
      <a:endParaRPr lang="en-US"/>
    </a:p>
  </c:txPr>
</c:chartSpace>
)radar_styler   rm   )rn   _radar_styler   rQ   s    r6   rR   _RadarChartXmlWriter.xml  sB    N ^ &aP PQ` $(#4#4OaPQ P	Qr?   c                D    U R                   [        R                  :X  a   ggr  )rG   r   r&   rQ   s    r6   r   _RadarChartXmlWriter._marker_xml  s%    }222*
 r?   c                B    U R                   [        R                  :X  a  gg)Nfilledmarker)rG   r   r(   rQ   s    r6   r.  !_RadarChartXmlWriter._radar_style&  s    }999r?   c                    SnU R                    Hf  n[        U5      nUSR                  " S0 UR                  UR                  UR                  U R
                  UR                  UR                  S.D6-  nMh     U$ r  r!  r   s       r6   r   _RadarChartXmlWriter._ser_xml,  r#  r?   rm   N)rT   rU   rV   rW   rX   rY   rR   r  r.  r   rZ   rm   r?   r6   r'   r'     s\     QQ QQf    
  r?   r'   c                  h    \ rS rSrSr\S 5       r\S 5       r\S 5       r\S 5       r	\S 5       r
Srg	)
r+   iH  z5
Generates XML for the ``<c:scatterChart>`` element.
c                D    SU R                   < SU R                  < S3nU$ )Nag  <?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<c:chartSpace xmlns:c="http://schemas.openxmlformats.org/drawingml/2006/chart" xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">
  <c:chart>
    <c:plotArea>
      <c:scatterChart>
        <c:scatterStyle val="z$"/>
        <c:varyColors val="0"/>
a          <c:axId val="-2128940872"/>
        <c:axId val="-2129643912"/>
      </c:scatterChart>
      <c:valAx>
        <c:axId val="-2128940872"/>
        <c:scaling>
          <c:orientation val="minMax"/>
        </c:scaling>
        <c:delete val="0"/>
        <c:axPos val="b"/>
        <c:numFmt formatCode="General" sourceLinked="1"/>
        <c:majorTickMark val="out"/>
        <c:minorTickMark val="none"/>
        <c:tickLblPos val="nextTo"/>
        <c:crossAx val="-2129643912"/>
        <c:crosses val="autoZero"/>
        <c:crossBetween val="midCat"/>
      </c:valAx>
      <c:valAx>
        <c:axId val="-2129643912"/>
        <c:scaling>
          <c:orientation val="minMax"/>
        </c:scaling>
        <c:delete val="0"/>
        <c:axPos val="l"/>
        <c:majorGridlines/>
        <c:numFmt formatCode="General" sourceLinked="1"/>
        <c:majorTickMark val="out"/>
        <c:minorTickMark val="none"/>
        <c:tickLblPos val="nextTo"/>
        <c:crossAx val="-2128940872"/>
        <c:crosses val="autoZero"/>
        <c:crossBetween val="midCat"/>
      </c:valAx>
    </c:plotArea>
    <c:legend>
      <c:legendPos val="r"/>
      <c:layout/>
      <c:overlay val="0"/>
    </c:legend>
    <c:plotVisOnly val="1"/>
    <c:dispBlanksAs val="gap"/>
    <c:showDLblsOverMax val="0"/>
  </c:chart>
  <c:txPr>
    <a:bodyPr/>
    <a:lstStyle/>
    <a:p>
      <a:pPr>
        <a:defRPr sz="1800"/>
      </a:pPr>
      <a:endParaRPr lang="en-US"/>
    </a:p>
  </c:txPr>
</c:chartSpace>
)_scatterStyle_valr   r   s     r6   rR   _XyChartXmlWriter.xmlM  s%    J ##T]]GC4H 
r?   c                h    [         R                  [         R                  4nU R                  U;   a   ggr  )r   r-   r/   rG   )rK   r  s     r6   r  _XyChartXmlWriter._marker_xml  s<     5566
 .*
 r?   c                f    [         R                  [         R                  4nU R                  U;   a  gg)NsmoothMarker
lineMarker)r   r.   r/   rG   )rK   smooth_typess     r6   r:  #_XyChartXmlWriter._scatterStyle_val  s3     ++66
 |+!r?   c                   SnU R                    Hq  n[        U5      nUSR                  " S0 UR                  UR                  UR                  U R
                  U R                  UR                  UR                  S.D6-  nMs     U$ )Nr   z        <c:ser>
          <c:idx val="{ser_idx}"/>
          <c:order val="{ser_order}"/>
{tx_xml}{spPr_xml}{marker_xml}{xVal_xml}{yVal_xml}          <c:smooth val="0"/>
        </c:ser>
)r   r   r   spPr_xmlr   xVal_xmlyVal_xmlrm   )	rH   _XySeriesXmlWriterrn   r   r   	_spPr_xmlr  rE  rF  r   s       r6   r   _XyChartXmlWriter._ser_xml  s    &&F+F3J	% f   &||!'(// $"&"2"2 * 3 3 * 3 3 C '0 
r?   c                D    U R                   [        R                  :X  a   gg)Nzr          <c:spPr>
            <a:ln w="47625">
              <a:noFill/>
            </a:ln>
          </c:spPr>
r   )rG   r   r*   rQ   s    r6   rH  _XyChartXmlWriter._spPr_xml  s%    }777( r?   rm   N)rT   rU   rV   rW   rX   rY   rR   r  r:  r   rH  rZ   rm   r?   r6   r+   r+   H  sn     E EN      8 	 	r?   r+   c                  H    \ rS rSrSr\S 5       r\S 5       r\S 5       rSr	g)r   i  zM
Provides specialized methods particular to the ``<c:bubbleChart>``
element.
c                $    SU R                   -  nU$ )Na  <?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<c:chartSpace xmlns:c="http://schemas.openxmlformats.org/drawingml/2006/chart" xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">
  <c:chart>
    <c:autoTitleDeleted val="0"/>
    <c:plotArea>
      <c:layout/>
      <c:bubbleChart>
        <c:varyColors val="0"/>
%s        <c:dLbls>
          <c:showLegendKey val="0"/>
          <c:showVal val="0"/>
          <c:showCatName val="0"/>
          <c:showSerName val="0"/>
          <c:showPercent val="0"/>
          <c:showBubbleSize val="0"/>
        </c:dLbls>
        <c:bubbleScale val="100"/>
        <c:showNegBubbles val="0"/>
        <c:axId val="-2115720072"/>
        <c:axId val="-2115723560"/>
      </c:bubbleChart>
      <c:valAx>
        <c:axId val="-2115720072"/>
        <c:scaling>
          <c:orientation val="minMax"/>
        </c:scaling>
        <c:delete val="0"/>
        <c:axPos val="b"/>
        <c:numFmt formatCode="General" sourceLinked="1"/>
        <c:majorTickMark val="out"/>
        <c:minorTickMark val="none"/>
        <c:tickLblPos val="nextTo"/>
        <c:crossAx val="-2115723560"/>
        <c:crosses val="autoZero"/>
        <c:crossBetween val="midCat"/>
      </c:valAx>
      <c:valAx>
        <c:axId val="-2115723560"/>
        <c:scaling>
          <c:orientation val="minMax"/>
        </c:scaling>
        <c:delete val="0"/>
        <c:axPos val="l"/>
        <c:majorGridlines/>
        <c:numFmt formatCode="General" sourceLinked="1"/>
        <c:majorTickMark val="out"/>
        <c:minorTickMark val="none"/>
        <c:tickLblPos val="nextTo"/>
        <c:crossAx val="-2115720072"/>
        <c:crosses val="autoZero"/>
        <c:crossBetween val="midCat"/>
      </c:valAx>
    </c:plotArea>
    <c:legend>
      <c:legendPos val="r"/>
      <c:layout/>
      <c:overlay val="0"/>
    </c:legend>
    <c:plotVisOnly val="1"/>
    <c:dispBlanksAs val="gap"/>
    <c:showDLblsOverMax val="0"/>
  </c:chart>
  <c:txPr>
    <a:bodyPr/>
    <a:lstStyle/>
    <a:p>
      <a:pPr>
        <a:defRPr sz="1800"/>
      </a:pPr>
      <a:endParaRPr lang="en-US"/>
    </a:p>
  </c:txPr>
</c:chartSpace>
)r   r   s     r6   rR   _BubbleChartXmlWriter.xml  s#    L Z MM]N^ 
r?   c                B    U R                   [        R                  :X  a  gg)N10)rG   r   r   rQ   s    r6   _bubble3D_val#_BubbleChartXmlWriter._bubble3D_val0  s    }BBBr?   c                   SnU R                    Hq  n[        U5      nUSR                  " S0 UR                  UR                  UR                  UR
                  UR                  UR                  U R                  S.D6-  nMs     U$ )Nr   z        <c:ser>
          <c:idx val="{ser_idx}"/>
          <c:order val="{ser_order}"/>
{tx_xml}          <c:invertIfNegative val="0"/>
{xVal_xml}{yVal_xml}{bubbleSize_xml}          <c:bubble3D val="{bubble3D_val}"/>
        </c:ser>
)r   r   r   rE  rF  bubbleSize_xmlbubble3D_valrm   )	rH   _BubbleSeriesXmlWriterrn   r   r   rE  rF  rU  rR  r   s       r6   r   _BubbleChartXmlWriter._ser_xml6  s    &&F/7J	% f   &||!'(// * 3 3 * 3 3&0&?&?$($6$6 C '0 
r?   rm   N)
rT   rU   rV   rW   rX   rY   rR   rR  r   rZ   rm   r?   r6   r   r     sF    
 P Pd  
  r?   r   c                      \ rS rSrSr\S 5       r\S 5       r\S 5       r\S 5       r	\S 5       r
\S 5       r\S	 5       rS
 r\S 5       r\S 5       r\S 5       r\S 5       rSrg)r   iT  z?
Generates XML snippets particular to a category chart series.
c                   U R                   R                  nUR                  (       ai  [        U R                  R
                  " S0 U R                   R                  UR                  UR                  U R                  S[        S5      -  S.D65      $ UR                  S:X  a^  [        U R                  R
                  " S0 U R                   R                  UR                  U R                  S[        S5      -  S.D65      $ [        U R                  R
                  " S0 U R                   R                  UR                  U R                  U5      S[        S5      -  S.D65      $ )zI
Return the ``<c:cat>`` element XML for this series, as an oxml
element.
r{   r|   rj   rk   	cat_count
cat_pt_xmlr	      rj   r\  r]  r	   rj   r\  lvl_xmlr	   rm   )ra   r   are_numericr   _numRef_cat_tmplrn   categories_refrk   
leaf_count_cat_num_pt_xmlr	   depth	_cat_tmpl_cat_pt_xml_multiLvl_cat_tmpl_lvl_xmlr   s     r6   cat_CategorySeriesXmlWriter.catY  s:    \\,,
!!%%,, %)\\%@%@)3)A)A%/%:%:&*&:&:#(73<#7
 
 q %% %)\\%@%@%/%:%:&*&6&6#(73<#7		 	 ##** !%!<!<!+!6!6#}}Z8$ws|3		
 		
r?   c           
     F   U R                   R                  nUR                  (       aT  U R                  R                  " S0 U R                   R
                  UR                  UR                  U R                  SS.D6$ UR                  S:X  aI  U R                  R                  " S0 U R                   R
                  UR                  U R                  SS.D6$ U R                  R                  " S0 U R                   R
                  UR                  U R                  U5      SS.D6$ )z
The unicode XML snippet for the ``<c:cat>`` element for this series,
containing the category labels and spreadsheet reference.
r   r[  r^  r_  r`  rm   )ra   r   rb  rc  rn   rd  rk   re  rf  rg  rh  ri  rj  rk  r   s     r6   r    _CategorySeriesXmlWriter.cat_xml  s    \\,,
!!((// !%!<!<%/%=%=!+!6!6"&"6"6!  q >>(( !%!<!<!+!6!6"&"2"2!	  &&-- 
!\\88'22==4	
 	
r?   c           
         U R                   R                  " S0 S[        S5      -  U R                  R                  U R                  R
                  [        U R                  5      U R                  S.D6n[        U5      $ )z:
The ``<c:val>`` XML for this series, as an oxml element.
r{   r|   r	   
values_refrk   	val_count
val_pt_xmlrm   )		_val_tmplrn   r	   ra   rr  rk   rv   _val_pt_xmlr   r   s     r6   r   _CategorySeriesXmlWriter.val  si    
 nn## 
 73</"ll55!%!;!; ."..
 ~r?   c           
         U R                   R                  " S0 SU R                  R                  U R                  R                  [        U R                  5      U R                  S.D6$ )z
Return the unicode XML snippet for the ``<c:val>`` element describing
this series, containing the series values and their spreadsheet range
reference.
r   rq  rm   )ru  rn   ra   rr  rk   rv   rv  rQ   s    r6   r    _CategorySeriesXmlWriter.val_xml  sW     ~~$$ 
"ll55!%!;!; ."..
 	
r?   c           
         Sn[        U R                  R                  5       H6  u  p#USR                  " S0 UUR	                  U R
                  5      S.D6-  nM8     U$ )zm
The unicode XML snippet for the ``<c:pt>`` elements when category
labels are numeric (including date type).
r   zj                <c:pt idx="{cat_idx}">
                  <c:v>{cat_lbl_str}</c:v>
                </c:pt>
)cat_idxcat_lbl_strrm   )rw   ra   r   rn   numeric_str_valrb   rK   rR   rt   categorys       r6   rf  (_CategorySeriesXmlWriter._cat_num_pt_xml  sm     &t||'>'>?MC, f	 	  ##+#;#;DOO#L	 	C @ 
r?   c                    Sn[        U R                  R                  5       H9  u  p#USR                  " S0 U[	        [        UR                  5      5      S.D6-  nM;     U$ )zd
The unicode XML snippet for the ``<c:pt>`` elements containing the
category names for this series.
r   zh                <c:pt idx="{cat_idx}">
                  <c:v>{cat_label}</c:v>
                </c:pt>
)r{  	cat_labelrm   )rw   ra   r   rn   r   strlabelr~  s       r6   ri  $_CategorySeriesXmlWriter._cat_pt_xml  sl     &t||'>'>?MC, f	 S $'VC<O5PQ	S SC @ 
r?   c                     g)zu
The template for the ``<c:cat>`` element for this series, containing
the category labels and spreadsheet reference.
z          <c:cat{nsdecls}>
            <c:strRef>
              <c:f>{wksht_ref}</c:f>
              <c:strCache>
                <c:ptCount val="{cat_count}"/>
{cat_pt_xml}              </c:strCache>
            </c:strRef>
          </c:cat>
rm   rQ   s    r6   rh  "_CategorySeriesXmlWriter._cat_tmpl      #
	
r?   c           
     p    S nSnUR                    H   nUSR                  " S0 SU" U5      0D6-  nM"     U$ )z]
The unicode XML snippet for the ``<c:lvl>`` elements containing
multi-level category names.
c                L    SnU  H  u  p#USU[        SU-  5      4-  -  nM     U$ )Nr   z^                  <c:pt idx="%d">
                    <c:v>%s</c:v>
                  </c:pt>
z%sr   )levelrR   rt   rg   s       r6   
lvl_pt_xml5_CategorySeriesXmlWriter._lvl_xml.<locals>.lvl_pt_xml  sA    C"	2 &-.	/ / # Jr?   r   z=                <c:lvl>
{lvl_pt_xml}                </c:lvl>
r  rm   )levelsrn   )rK   r   r  rR   r  s        r6   rk  !_CategorySeriesXmlWriter._lvl_xml  sO    	 &&E[cc E!23 C ' 
r?   c                     g)zj
The template for the ``<c:cat>`` element for this series when there
are multi-level (nested) categories.
a            <c:cat{nsdecls}>
            <c:multiLvlStrRef>
              <c:f>{wksht_ref}</c:f>
              <c:multiLvlStrCache>
                <c:ptCount val="{cat_count}"/>
{lvl_xml}              </c:multiLvlStrCache>
            </c:multiLvlStrRef>
          </c:cat>
rm   rQ   s    r6   rj  +_CategorySeriesXmlWriter._multiLvl_cat_tmpl  r  r?   c                     g)zh
The template for the ``<c:cat>`` element for this series when the
labels are numeric (or date) values.
a1            <c:cat{nsdecls}>
            <c:numRef>
              <c:f>{wksht_ref}</c:f>
              <c:numCache>
                <c:formatCode>{number_format}</c:formatCode>
                <c:ptCount val="{cat_count}"/>
{cat_pt_xml}              </c:numCache>
            </c:numRef>
          </c:cat>
rm   rQ   s    r6   rc  )_CategorySeriesXmlWriter._numRef_cat_tmpl*      	#	
r?   c           	         Sn[        U R                  R                  5       H!  u  p#Uc  M
  USR                  " S0 X#S.D6-  nM#     U$ )zc
The unicode XML snippet containing the ``<c:pt>`` elements containing
the values for this series.
r   zf                <c:pt idx="{val_idx:d}">
                  <c:v>{value}</c:v>
                </c:pt>
)val_idxru   rm   )rw   ra   ro   rn   )rK   rR   rt   ru   s       r6   rv  $_CategorySeriesXmlWriter._val_pt_xml=  s`     #DLL$7$78JC}, f	 9 $'7	9 9C 9 
r?   c                     g)z
The template for the ``<c:val>`` element for this series, containing
the series values and their spreadsheet range reference.
a2            <c:val{nsdecls}>
            <c:numRef>
              <c:f>{values_ref}</c:f>
              <c:numCache>
                <c:formatCode>{number_format}</c:formatCode>
                <c:ptCount val="{val_count}"/>
{val_pt_xml}              </c:numCache>
            </c:numRef>
          </c:val>
rm   rQ   s    r6   ru  "_CategorySeriesXmlWriter._val_tmplN  r  r?   rm   N)rT   rU   rV   rW   rX   rY   rl  r   r   r   rf  ri  rh  rk  rj  rc  rv  ru  rZ   rm   r?   r6   r   r   T  s     )
 )
V #
 #
J   
 
   &   
 
". 
 
" 
 
$    
 
r?   r   c                  x    \ rS rSrSr\S 5       r\S 5       r\S 5       r\S 5       r	\S 5       r
\S 5       rS	rg
)rG  ib  z4
Generates XML snippets particular to an XY series.
c           
        U R                   R                  " S0 S[        S5      -  U R                  U R                  R
                  U R                  R                  U R                  R                  5      S.D6n[        U5      $ )zy
Return the ``<c:xVal>`` element for this series as an oxml element.
This element contains the X values for this series.
r{   r|   r	   rp   rm   )	
_xVal_tmplrn   r	   rp   ra   x_values_refrk   x_valuesr   r   s     r6   xVal_XySeriesXmlWriter.xValg  m     oo$$ 	
 73</"ooLL--LL..LL))	
 ~r?   c           
         U R                   R                  " S0 SU R                  U R                  R                  U R                  R
                  U R                  R                  5      S.D6$ )zv
Return the ``<c:xVal>`` element for this series as unicode text. This
element contains the X values for this series.
r   r  rm   )r  rn   rp   ra   r  rk   r  rQ   s    r6   rE  _XySeriesXmlWriter.xVal_xmly  [     %% 	
"ooLL--LL..LL))	
 		
r?   c           
        U R                   R                  " S0 S[        S5      -  U R                  U R                  R
                  U R                  R                  U R                  R                  5      S.D6n[        U5      $ )zy
Return the ``<c:yVal>`` element for this series as an oxml element.
This element contains the Y values for this series.
r{   r|   r  rm   )	
_yVal_tmplrn   r	   rp   ra   y_values_refrk   y_valuesr   r   s     r6   yVal_XySeriesXmlWriter.yVal  r  r?   c           
         U R                   R                  " S0 SU R                  U R                  R                  U R                  R
                  U R                  R                  5      S.D6$ )zv
Return the ``<c:yVal>`` element for this series as unicode text. This
element contains the Y values for this series.
r   r  rm   )r  rn   rp   ra   r  rk   r  rQ   s    r6   rF  _XySeriesXmlWriter.yVal_xml  r  r?   c                    g)z{
The template for the ``<c:xVal>`` element for this series, containing
the X values and their spreadsheet range reference.
z<          <c:xVal{nsdecls}>
{numRef_xml}          </c:xVal>
rm   rQ   s    r6   r  _XySeriesXmlWriter._xVal_tmpl       Vr?   c                    g)z{
The template for the ``<c:yVal>`` element for this series, containing
the Y values and their spreadsheet range reference.
z<          <c:yVal{nsdecls}>
{numRef_xml}          </c:yVal>
rm   rQ   s    r6   r  _XySeriesXmlWriter._yVal_tmpl  r  r?   rm   N)rT   rU   rV   rW   rX   rY   r  rE  r  rF  r  r  rZ   rm   r?   r6   rG  rG  b  s      " 
 
   " 
 
  V V V Vr?   rG  c                  H    \ rS rSrSr\S 5       r\S 5       r\S 5       rSr	g)rW  i  z=
Generates XML snippets particular to a bubble chart series.
c           
        U R                   R                  " S0 S[        S5      -  U R                  U R                  R
                  U R                  R                  U R                  R                  5      S.D6n[        U5      $ )z
Return the ``<c:bubbleSize>`` element for this series as an oxml
element. This element contains the bubble size values for this
series.
r{   r|   r  rm   )	_bubbleSize_tmplrn   r	   rp   ra   bubble_sizes_refrk   bubble_sizesr   r   s     r6   
bubbleSize!_BubbleSeriesXmlWriter.bubbleSize  so     ##** 	
 73</"ooLL11LL..LL--	
 ~r?   c           
         U R                   R                  " S0 SU R                  U R                  R                  U R                  R
                  U R                  R                  5      S.D6$ )z
Return the ``<c:bubbleSize>`` element for this series as unicode
text. This element contains the bubble size values for all the
data points in the chart.
r   r  rm   )r  rn   rp   ra   r  rk   r  rQ   s    r6   rU  %_BubbleSeriesXmlWriter.bubbleSize_xml  s]     $$++ 	
"ooLL11LL..LL--	
 		
r?   c                    g)z
The template for the ``<c:bubbleSize>`` element for this series,
containing the bubble size values and their spreadsheet range
reference.
zH          <c:bubbleSize{nsdecls}>
{numRef_xml}          </c:bubbleSize>
rm   rQ   s    r6   r  '_BubbleSeriesXmlWriter._bubbleSize_tmpl  s     br?   rm   N)
rT   rU   rV   rW   rX   rY   r  rU  r  rZ   rm   r?   r6   rW  rW    sE      $ 
 
" b br?   rW  c                      \ rS rSrSrS rSrg)r9   i  z/
A series rewriter suitable for bubble charts.
c                r   UR                  5         UR                  5         UR                  5         UR                  5         [	        U5      nUR                  UR                  5        UR                  UR                  5        UR                  UR                  5        UR                  UR                  5        gzs
Rewrite the ``<c:tx>``, ``<c:cat>`` and ``<c:val>`` child elements
of *ser* based on the values in *series_data*.
N)
_remove_tx_remove_xVal_remove_yVal_remove_bubbleSizerW  
_insert_txr   _insert_xValr  _insert_yValr  _insert_bubbleSizer  rK   r   r   rd   r   s        r6   r   *_BubbleSeriesXmlRewriter._rewrite_ser_data  s    
 	 +K8
z}}%))z445r?   rm   NrT   rU   rV   rW   rX   r   rZ   rm   r?   r6   r9   r9     s    6r?   r9   c                      \ rS rSrSrS rSrg)r<   i	  z1
A series rewriter suitable for category charts.
c                   UR                  5         UR                  5         UR                  5         [        X#5      nUR	                  UR
                  5        UR                  UR                  5        UR                  UR                  5        gr  )
r  _remove_cat_remove_valr   r  r   _insert_catrl  _insert_valr   r  s        r6   r   ,_CategorySeriesXmlRewriter._rewrite_ser_data  s\    
 	-kE
z}}%
'
'r?   rm   Nr  rm   r?   r6   r<   r<   	  s    (r?   r<   c                      \ rS rSrSrS rSrg)r:   i  z:
A series rewriter suitable for XY (aka. scatter) charts.
c                   UR                  5         UR                  5         UR                  5         [        U5      nUR	                  UR
                  5        UR                  UR                  5        UR                  UR                  5        g)zu
Rewrite the ``<c:tx>``, ``<c:xVal>`` and ``<c:yVal>`` child elements
of *ser* based on the values in *series_data*.
N)
r  r  r  rG  r  r   r  r  r  r  r  s        r6   r   &_XySeriesXmlRewriter._rewrite_ser_data#  sd    
 	'4
z}}%))r?   rm   Nr  rm   r?   r6   r:   r:     s    *r?   r:   N)!rX   
__future__r   copyr   xml.sax.saxutilsr   pptx.enum.chartr   	pptx.oxmlr   pptx.oxml.nsr	   r7   r>   objectrA   r^   r   r   r   r   r   r$   r'   r+   r   r   rG  rW  r9   r<   r:   rm   r?   r6   <module>r     s(   > "  # )   (.V#.K& K,g
6 g
TM"V M"`]- ]@~, ~BX1 Xvd- dN>, >BB. BJL+ L^z- zzK
3 K
\YV- YVx1b/ 1bh65 6.(!7 (**1 *r?   