ó
    êZh›  ã                   ó  • S r SSKrSSKrSSKJrJrJrJrJr  SSK	r
SSKJr  / SQr\" SSS9SS
 j5       rSS jr\" SSS9\
R                   " SS	S9SS j5       5       r " S S5      r " S S\5      r " S S\5      rS rg)aS  Read and write graphs in GEXF format.

.. warning::
    This parser uses the standard xml library present in Python, which is
    insecure - see :external+python:mod:`xml` for additional information.
    Only parse GEFX files you trust.

GEXF (Graph Exchange XML Format) is a language for describing complex
network structures, their associated data and dynamics.

This implementation does not support mixed graphs (directed and
undirected edges together).

Format
------
GEXF is an XML format.  See http://gexf.net/schema.html for the
specification and http://gexf.net/basic.html for examples.
é    N)ÚElementÚElementTreeÚ
SubElementÚregister_namespaceÚtostring)Ú	open_file)Ú
write_gexfÚ	read_gexfÚrelabel_gexf_graphÚgenerate_gexfé   Úwb)ÚmodeTc                 ó\   • [        X#US9nUR                  U 5        UR                  U5        g)aœ  Write G in GEXF format to path.

"GEXF (Graph Exchange XML Format) is a language for describing
complex networks structures, their associated data and dynamics" [1]_.

Node attributes are checked according to the version of the GEXF
schemas used for parameters which are not user defined,
e.g. visualization 'viz' [2]_. See example for usage.

Parameters
----------
G : graph
   A NetworkX graph
path : file or string
   File or file name to write.
   File names ending in .gz or .bz2 will be compressed.
encoding : string (optional, default: 'utf-8')
   Encoding for text data.
prettyprint : bool (optional, default: True)
   If True use line breaks and indenting in output XML.
version: string (optional, default: '1.2draft')
   The version of GEXF to be used for nodes attributes checking

Examples
--------
>>> G = nx.path_graph(4)
>>> nx.write_gexf(G, "test.gexf")

# visualization data
>>> G.nodes[0]["viz"] = {"size": 54}
>>> G.nodes[0]["viz"]["position"] = {"x": 0, "y": 1}
>>> G.nodes[0]["viz"]["color"] = {"r": 0, "g": 0, "b": 256}


Notes
-----
This implementation does not support mixed graphs (directed and undirected
edges together).

The node id attribute is set to be the string of the node label.
If you want to specify an id use set it as node data, e.g.
node['a']['id']=1 to set the id of node 'a' to 1.

References
----------
.. [1] GEXF File Format, http://gexf.net/
.. [2] GEXF schema, http://gexf.net/schema.html
©ÚencodingÚprettyprintÚversionN)Ú
GEXFWriterÚ	add_graphÚwrite)ÚGÚpathr   r   r   Úwriters         Úd/home/gothic/public_html/Fooocus/fooocus_env/lib/python3.13/site-packages/networkx/readwrite/gexf.pyr	   r	   $   s+   € ôd  ÈGÑT€FØ
×Ñ�QÔØ
‡L�L�Õó    c              #   óˆ   #   • [        XUS9nUR                  U 5        [        U5      R                  5        Sh  v•N   g N7f)aP  Generate lines of GEXF format representation of G.

"GEXF (Graph Exchange XML Format) is a language for describing
complex networks structures, their associated data and dynamics" [1]_.

Parameters
----------
G : graph
A NetworkX graph
encoding : string (optional, default: 'utf-8')
Encoding for text data.
prettyprint : bool (optional, default: True)
If True use line breaks and indenting in output XML.
version : string (default: 1.2draft)
Version of GEFX File Format (see http://gexf.net/schema.html)
Supported values: "1.1draft", "1.2draft"


Examples
--------
>>> G = nx.path_graph(4)
>>> linefeed = chr(10)  # linefeed=

>>> s = linefeed.join(nx.generate_gexf(G))
>>> for line in nx.generate_gexf(G):  # doctest: +SKIP
...     print(line)

Notes
-----
This implementation does not support mixed graphs (directed and undirected
edges together).

The node id attribute is set to be the string of the node label.
If you want to specify an id use set it as node data, e.g.
node['a']['id']=1 to set the id of node 'a' to 1.

References
----------
.. [1] GEXF File Format, https://gephi.org/gexf/format/
r   N)r   r   ÚstrÚ
splitlines)r   r   r   r   r   s        r   r   r   [   s8   é € ôP  ÈGÑT€FØ
×Ñ�QÔÜ�6‹{×%Ñ%Ó'×'Ó'ùs   ‚8AºA »AÚrb)ÚgraphsÚreturns_graphc                 ó\   • [        XS9nU(       a  [        U" U 5      5      nU$ U" U 5      nU$ )a  Read graph in GEXF format from path.

"GEXF (Graph Exchange XML Format) is a language for describing
complex networks structures, their associated data and dynamics" [1]_.

Parameters
----------
path : file or string
   File or file name to read.
   File names ending in .gz or .bz2 will be decompressed.
node_type: Python type (default: None)
   Convert node ids to this type if not None.
relabel : bool (default: False)
   If True relabel the nodes to use the GEXF node "label" attribute
   instead of the node "id" attribute as the NetworkX node label.
version : string (default: 1.2draft)
Version of GEFX File Format (see http://gexf.net/schema.html)
   Supported values: "1.1draft", "1.2draft"

Returns
-------
graph: NetworkX graph
    If no parallel edges are found a Graph or DiGraph is returned.
    Otherwise a MultiGraph or MultiDiGraph is returned.

Notes
-----
This implementation does not support mixed graphs (directed and undirected
edges together).

References
----------
.. [1] GEXF File Format, http://gexf.net/
)Ú	node_typer   )Ú
GEXFReaderr   )r   r$   Úrelabelr   Úreaderr   s         r   r
   r
   ˆ   s7   € ôJ  )Ñ=€FÞÜ™v d›|Ó,ˆð €Hñ �4‹LˆØ€Hr   c            	       óœ   • \ rS rSrSSSSR	                  SS/5      SS.S	S
SSR	                  S	S/5      SS.S.rS rSSSSSSSSS.rS rSr	g)ÚGEXFéµ   zhttp://www.gexf.net/1.1draftz http://www.gexf.net/1.1draft/vizz)http://www.w3.org/2001/XMLSchema-instanceÚ z%http://www.gexf.net/1.1draft/gexf.xsdú1.1)ÚNS_GEXFÚNS_VIZÚNS_XSIÚSCHEMALOCATIONÚVERSIONzhttp://www.gexf.net/1.2draftz http://www.gexf.net/1.2draft/vizz%http://www.gexf.net/1.2draft/gexf.xsdz1.2)z1.1draftú1.2draftc                 óœ  • [         S4[        S4[        S4[        S4[        S4[        S4[         S4[
        S4[
        S4[
        S4/
n S	S KnUR                  S4UR                  S4UR                  S4UR                  S
4UR                  S
4UR                  S
4UR                  S
4UR                  S
4UR                  S
4UR                   S
4UR"                  S
4UR$                  S
4UR                  S
4UR&                  S
4UR(                  S
4/U-   n[	        U5      U l        [	        S U 5       5      U l        g ! [*         a     N4f = f)NÚintegerÚfloatÚdoubleÚbooleanÚstringÚlongÚ
liststringÚanyURIr   Úintc              3   ó8   #   • U  H  n[        U5      v •  M     g 7f©N)Úreversed)Ú.0Úas     r   Ú	<genexpr>Ú'GEXF.construct_types.<locals>.<genexpr>ù   s   é € Ð;²U°¤¨§ ²Uùs   ‚)r<   r5   ÚboolÚlistÚdictr   ÚnumpyÚfloat64Úfloat32Úfloat16Úint_Úint8Úint16Úint32Úint64Úuint8Úuint16Úuint32Úuint64ÚintcÚintpÚImportErrorÚxml_typeÚpython_type)ÚselfÚtypesÚnps      r   Úconstruct_typesÚGEXF.construct_typesÑ   sY  € ä�)ÐÜ�GÐÜ�HÐÜ�9ÐÜ�8ÐÜ�8ÐÜ�&ˆMÜ�,ÐÜ�(ˆOÜ�(ˆOð
ˆð	Ûð —‘˜WÐ%Ø—‘˜WÐ%Ø—‘˜WÐ%Ø—‘˜%Ð Ø—‘˜%Ð Ø—‘˜5Ð!Ø—‘˜5Ð!Ø—‘˜5Ð!Ø—‘˜5Ð!Ø—‘˜EÐ"Ø—‘˜EÐ"Ø—‘˜EÐ"Ø—‘˜%Ð Ø—‘˜%Ð Ø—‘˜%Ð ðð  ñ!ˆEô$ ˜U›ˆŒÜÑ;±UÓ;Ó;ˆÕøô/ ó 	Ùð	ús   Á
D> Ä>
EÅ
ETF)ÚtrueÚfalseÚTrueÚFalseÚ0r   Ú1r   c                 óä   • U R                   R                  U5      nUc  [        R                  " SU S35      eUS   U l        US   U l        US   U l        US   U l        US   U l        Xl	        g )NzUnknown GEXF version Ú.r-   r.   r/   r0   r1   )
ÚversionsÚgetÚnxÚNetworkXErrorr-   r.   r/   r0   r1   r   )rY   r   Úds      r   Úset_versionÚGEXF.set_version  su   € Ø�M‰M×Ñ˜gÓ&ˆØ‰9Ü×"Ò"Ð%:¸7¸)À1Ð#EÓFÐFØ˜‘|ˆŒØ˜‘kˆŒØ˜‘kˆŒØÐ 0Ñ1ˆÔØ˜‘|ˆŒØ�r   )r-   r.   r/   r0   r1   rX   r   rW   N)
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Újoinrf   r\   Úconvert_boolrk   Ú__static_attributes__© r   r   r)   r)   µ   s�   † ð 6Ø8ØAØ!Ÿh™hà2Ø;ðóð ñ
ð 6Ø8ØAØ!Ÿh™hà2Ø;ðóð ñ
ñ€Hò6(<ðX ØØØØØØØñ	€Lõ	r   r)   c                   ór   • \ rS rSr SS jrS rS rS rS rS r	S	 r
S
 rS rS rS rS rS rSS jrSrg)r   i  Nc                 óp  • U R                  5         X0l        X l        U R                  U5        [	        SU R
                  U R                  U R                  U R                  S.5      U l	        [	        S5      nS[        R                   3nU[        US5      l        UR                  S[        R                   " S5      5        U R                  R#                  U5        [%        SU R&                  5        [(        R*                  " 5       U l        [(        R*                  " 5       U l        [        5       U l        0 U l        0 U R2                  S	'   0 U R2                  S
'   0 U R2                  S	   S'   0 U R2                  S	   S'   0 U R2                  S
   S'   0 U R2                  S
   S'   Ub  U R5                  U5        g g )NÚgexf)Úxmlnsz	xmlns:xsizxsi:schemaLocationr   Úmetaz	NetworkX ÚcreatorÚlastmodifieddatez%Y-%m-%dÚvizÚnodeÚedgeÚdynamicÚstatic)r\   r   r   rk   r   r-   r/   r0   r1   Úxmlrh   Ú__version__r   ÚtextÚsetÚtimeÚstrftimeÚappendr   r.   Ú	itertoolsÚcountÚedge_idÚattr_idÚall_edge_idsÚattrr   )rY   Úgraphr   r   r   Úmeta_elementÚsubelement_texts          r   Ú__init__ÚGEXFWriter.__init__  sl  € ð 	×ÑÔØ&ÔØ ŒØ×Ñ˜Ô!ÜØàŸ™Ø!Ÿ[™[Ø&*×&9Ñ&9ØŸ<™<ñ	ó
ˆŒô ˜v“ˆØ%¤b§n¡nÐ%5Ð6ˆØ3BŒ
�< Ó+Ô0Ø×ÑÐ+¬T¯]ª]¸:Ó-FÔGØ�‰�‰˜Ô%ä˜5 $§+¡+Ô.ô !—’Ó(ˆŒÜ —’Ó(ˆŒÜ›EˆÔàˆŒ	Øˆ�	‰	�&ÑØˆ�	‰	�&ÑØ')ˆ�	‰	�&Ñ˜)Ñ$Ø&(ˆ�	‰	�&Ñ˜(Ñ#Ø')ˆ�	‰	�&Ñ˜)Ñ$Ø&(ˆ�	‰	�&Ñ˜(Ñ#àÑØ�N‰N˜5Õ!ð r   c                 óº   • U R                   (       a  U R                  U R                  5        [        U R                  5      R	                  U R
                  5      nU$ r>   )r   Úindentr�   r   Údecoder   )rY   Úss     r   Ú__str__ÚGEXFWriter.__str__A  s=   € Ø××Ø�K‰K˜Ÿ™Ô!Ü�T—X‘XÓ×%Ñ% d§m¡mÓ4ˆØˆr   c                 óú  • UR                  SS9 H@  u  p#nUR                  S5      nUc  M  U R                  R                  [	        U5      5        MB     UR
                  R                  S5      S:X  a  SnOSnUR                  5       (       a  SnOSnUR
                  R                  S	S
5      n[        SXvUS9n	X�l        U R                  X5        U R                  X5        U R                  R                  U	5        g )NT©ÚdataÚidr   r   r€   ÚdirectedÚ
undirectedÚnameÚ rŽ   )Údefaultedgetyper   rŸ   )Úedgesrg   rŒ   Úaddr   rŽ   Úis_directedr   Úgraph_elementÚ	add_nodesÚ	add_edgesr�   r‡   )
rY   r   ÚuÚvÚddÚeidr   ÚdefaultrŸ   r¥   s
             r   r   ÚGEXFWriter.add_graphG  sÌ   € àŸ™ T˜Ó*‰HˆA�"Ø—&‘&˜“,ˆCØ‹Ø×!Ñ!×%Ñ%¤c¨#£hÖ/ñ +ð
 �7‰7�;‰;�vÓ )Ó+Ø‰DàˆDà�=‰=�?‰?Ø ‰Gà"ˆGØ�w‰w�{‰{˜6 2Ó&ˆÜ ¸ÐRVÑWˆØ*ÔØ�‰�qÔ(Ø�‰�qÔ(Ø�‰�‰˜Õ&r   c                 ó´  • [        S5      nUR                  SS9 GHv  u  pEUR                  5       n[        UR	                  SU5      5      nSU0n[        UR	                  SU5      5      n	X˜S'    UR	                  S5      n
[        U
5      US'    UR	                  S5      n[        U5      US'   U R                  U5         UR	                  S5      n[        U5      US'   U R                  U5        [        S0 UD6nUR                  R                  S
0 5      nU R                  XÖ5      nU R                  S:X  a  U R                  XÖ5      nOU R                  XÖ5      nU R                  XÖ5      nU R                  S	XÖU5      nUR                  U5        GMy     UR                  U5        g ! [
         a     GN&f = f! [
         a     GNf = f! [
         a     Nåf = f)NÚnodesTrš   rœ   ÚlabelÚpidÚstartÚendr}   Únode_defaultr,   )r}   )r   r¯   Úcopyr   ÚpopÚKeyErrorÚalter_graph_mode_timeformatrŽ   rg   Úadd_parentsr1   Ú
add_slicesÚ
add_spellsÚadd_vizÚadd_attributesr‡   )rY   r   r¥   Únodes_elementr}   r›   Ú	node_dataÚnode_idÚkwr°   r±   r²   r³   Únode_elementr¬   s                  r   r¦   ÚGEXFWriter.add_nodes^  s»  € Ü Ó(ˆØŸ'™' t˜'Ô,‰JˆDØŸ	™	›ˆIÜ˜)Ÿ-™-¨¨dÓ3Ó4ˆGØ˜�ˆBÜ˜	Ÿ™ g¨tÓ4Ó5ˆEØˆw‰KðØ—m‘m EÓ*�Ü ›H��5‘	ðØ!Ÿ™ gÓ.�Ü! %›j��7‘Ø×0Ñ0°Ô7ðØ—m‘m EÓ*�Ü ›H��5‘	Ø×0Ñ0°Ô5ô #Ñ0¨RÑ0ˆLà—g‘g—k‘k .°"Ó5ˆGØ×(Ñ(¨ÓAˆIØ�|‰|˜uÓ$Ø ŸO™O¨LÓD‘	à ŸO™O¨LÓD�	ØŸ™ \Ó=ˆIØ×+Ñ+¨F°LÈWÓUˆIØ× Ñ  ×.ñE -ðF 	×Ñ˜]Õ+øô5 ó Úðûô ó Úðûô ó Ùðús6   Á0F(Â0F9Ã0G
Æ(
F6Æ5F6Æ9
GÇGÇ

GÇGc                 ó†  ^ • U 4S jn[        S5      nU" U5       GH¼  u  pVpxS[        U5      0n	 UR                  S5      n
[        U
5      U	S'    UR                  S5      n[        U5      U	S'    UR                  S5      n[        U5      U	S'    UR                  S5      n[        U5      U	S'   T R	                  U5         UR                  S5      n[        U5      U	S'   T R	                  U5        [        UR
                  U   R                  SU5      5      n[        UR
                  U   R                  SU5      5      n[        SUUS
.U	D6nUR                  R                  S0 5      nT R                  S:X  a  T R                  UU5      nOT R                  UU5      nT R                  UU5      nT R                  S	UUU5      nUR                  U5        GM¿     UR                  U5        g ! [         a     GN¬f = f! [         a     GN�f = f! [         a     GNŽf = f! [         a     GNnf = f! [         a     GNNf = f)Nc              3   ór  >#   • U R                  5       (       a×  U R                  SSS9 HÂ  u  pp4UR                  5       nUR                  US9  UR	                  SS 5      nUc‚  [        TR                  5      n[        U5      TR                  ;   a0  [        TR                  5      n[        U5      TR                  ;   a  M0  TR                  R                  [        U5      5        XXe4v •  MÄ     g U R                  SS9 H³  u  pnUR                  5       nUR	                  SS 5      nUc‚  [        TR                  5      n[        U5      TR                  ;   a0  [        TR                  5      n[        U5      TR                  ;   a  M0  TR                  R                  [        U5      5        XXe4v •  Mµ     g 7f)NT)r›   Úkeys)Úkeyrœ   rš   )
Úis_multigraphr¢   rµ   Úupdater¶   ÚnextrŠ   r   rŒ   r£   )r   r¨   r©   rÇ   r›   Ú	edge_datarŠ   rY   s          €r   Úedge_key_dataÚ+GEXFWriter.add_edges.<locals>.edge_key_data†  se  øé € à�‰× Ñ Ø'(§w¡w°D¸t wÓ'D‘O�A˜#Ø $§	¡	£�IØ×$Ñ$¨Ð$Ñ-Ø'Ÿm™m¨D°$Ó7�GØ‘Ü"& t§|¡|Ó"4˜Ü! '›l¨d×.?Ñ.?Ó?Ü&*¨4¯<©<Ó&8˜Gô " '›l¨d×.?Ñ.?Õ?à×)Ñ)×-Ñ-¬c°'«lÔ;Ø Ð2Ô2ò (Eð #$§'¡'¨t 'Ó"4‘J�A˜$Ø $§	¡	£�IØ'Ÿm™m¨D°$Ó7�GØ‘Ü"& t§|¡|Ó"4˜Ü! '›l¨d×.?Ñ.?Ó?Ü&*¨4¯<©<Ó&8˜Gô " '›l¨d×.?Ñ.?Õ?à×)Ñ)×-Ñ-¬c°'«lÔ;Ø Ð2Ô2ò #5ùs   ƒB<F7ÃCF7Æ/F7r¢   rœ   r°   ÚweightÚtyper²   r³   r~   )ÚsourceÚtargetÚedge_defaultr,   )r~   )r   r   r¶   r·   r¸   r¯   rg   rŽ   r1   rº   r»   r¼   r½   r‡   )rY   r   r¥   rÌ   Úedges_elementr¨   r©   rÇ   rË   rÁ   Ú
edge_labelÚedge_weightÚ	edge_typer²   r³   Ú	source_idÚ	target_idÚedge_elementr¬   s   `                  r   r§   ÚGEXFWriter.add_edges…  s+  ø€ õ	3ô0   Ó(ˆÙ$1°!×$4Ñ ˆA�#Øœ˜C›Ð!ˆBðØ&Ÿ]™]¨7Ó3�
Ü! *›o��7‘ðØ'Ÿm™m¨HÓ5�Ü" ;Ó/��8‘ðØ%ŸM™M¨&Ó1�	Ü  ›^��6‘
ðØ!Ÿ™ gÓ.�Ü! %›j��7‘Ø×0Ñ0°Ô7ðØ—m‘m EÓ*�Ü ›H��5‘	Ø×0Ñ0°Ô5ô ˜AŸG™G A™JŸN™N¨4°Ó3Ó4ˆIÜ˜AŸG™G A™JŸN™N¨4°Ó3Ó4ˆIÜ"ÐT°)ÀIÑTÐQSÑTˆLØ—g‘g—k‘k .°"Ó5ˆGØ�|‰|˜uÓ$Ø ŸO™O¨L¸)ÓD‘	à ŸO™O¨L¸)ÓD�	ØŸ™ \°9Ó=ˆIØ×+Ñ+¨F°LÀ)ÈWÓUˆIØ× Ñ  ×.ñO %5ðP 	×Ñ˜]Õ+øôG ó Úðûô
 ó Úðûô
 ó Úðûô ó Úðûô ó ÚðúsY   °G.ÁG?Á0HÂ0H!Ã0H2Ç.
G<Ç;G<Ç?
HÈHÈ
HÈHÈ!
H/È.H/È2
I È?I c                 ó*  • [        S5      n[        U5      S:X  a  U$ SnUR                  5        GHÎ  u  pxUS:X  a  Sn[        U5      n	X�R                  ;  a  [        SU	 35      e[        U[        5      (       Gaf  U H=  u  p«n[        U
5      n	Uc  Uc  M  SnU R                  U5        U R                  U5          O   U R                  [        U5      U R                  U	   XU5      nU Hð  u  p«n[        S5      nXÞR                  S	'   [        U
5      UR                  S
'   U	[        :X  ah  UR                  S
   S:X  a  SUR                  S
'   OEUR                  S
   S:X  a  SUR                  S
'   O"UR                  S
   S:X  a  SUR                  S
'   Ub  [        U5      UR                  S'   Ub  [        U5      UR                  S'   UR                  U5        Mò     GM²  SnU R                  [        U5      U R                  U	   XU5      n[        S5      nXÞR                  S	'   [        U[        5      (       a'  [        U5      R                  5       UR                  S
'   OŠ[        U5      UR                  S
'   U	[        :X  ah  UR                  S
   S:X  a  SUR                  S
'   OEUR                  S
   S:X  a  SUR                  S
'   O"UR                  S
   S:X  a  SUR                  S
'   UR                  U5        GMÑ     UR                  U5        U$ )NÚ	attvaluesr   r€   rÇ   Únetworkx_keyz%attribute value type is not allowed: r   ÚattvalueÚforÚvalueÚinfÚINFÚnanÚNaNz-infz-INFr²   r³   )r   ÚlenÚitemsrÏ   rW   Ú	TypeErrorÚ
isinstancerE   r¸   Úget_attr_idr   Úattribr5   r‡   rD   Úlower)rY   Únode_or_edgeÚxml_objr›   r¬   rÜ   r   Úkr©   Úval_typeÚvalr²   r³   r‹   Úes                  r   r½   ÚGEXFWriter.add_attributesÉ  sº  € ä˜KÓ(ˆ	Üˆt‹9˜‹>ØˆKØˆØ—J‘J—L‰DˆAà�E‹zØ"�Ü˜A“wˆHØŸ}™}Ó,ÜÐ"GÈÀzÐ RÓSÐSÜ˜!œT×"Ò"ã'(‘O�C Ü# C›y�HØÑ(¨C«OØ(˜Ø×8Ñ8¸Ô?Ø×8Ñ8¸Ô=Ùñ ()ð ×*Ñ*Ü˜“F˜DŸM™M¨(Ñ3°\ÈDó�ó ()‘O�C Ü 
Ó+�AØ&-—H‘H˜U‘OÜ(+¨C«�A—H‘H˜WÑ%à¤5Ó(ØŸ8™8 GÑ,°Ó5Ø05˜AŸH™H WÒ-ØŸX™X gÑ.°%Ó7Ø05˜AŸH™H WÒ-ØŸX™X gÑ.°&Ó8Ø06˜AŸH™H WÑ-ØÑ(Ü,/°«J˜Ÿ™ Ñ)Ø‘Ü*-¨c«(˜Ÿ™ ™Ø×$Ñ$ QÖ'ô! ()ð&  �Ø×*Ñ*Ü˜“F˜DŸM™M¨(Ñ3°\ÈDó�ô ˜JÓ'�Ø")—‘˜‘Ü˜a¤×&Ñ&Ü(+¨A«¯©«�A—H‘H˜WÒ%ä(+¨A«�A—H‘H˜WÑ%à¤5Ó(ØŸ8™8 GÑ,°Ó5Ø05˜AŸH™H WÒ-ØŸX™X gÑ.°%Ó7Ø05˜AŸH™H WÒ-ØŸX™X gÑ.°&Ó8Ø06˜AŸH™H WÑ-Ø× Ñ  ×#ñq !ðr 	�‰�yÔ!Øˆr   c                 ó‚  •  U R                   U   U   U   $ ! [         Ga    [        [        U R                  5      5      nX`R                   U   U   U'   XaUS.n[        S	0 UD6nUR                  U5      n	U	b,  [        S5      n
[        U	5      U
l        UR                  U
5        S nU R                  R                  S5       H6  nUR                  S5      nUR                  SS5      nXÓ:X  d  M-  Xå:X  d  M4  UnM8     Uc+  XSS.n[        S
0 UD6nU R                  R                  SU5        UR                  U5         U$ f = f)N)rœ   ÚtitlerÏ   r¬   Ú
attributesÚclassr   r€   )r   rö   r   )Ú	attribute)rõ   )r�   r·   r   rÊ   r‹   r   rg   rƒ   r‡   r¥   ÚfindallÚinsert)rY   rô   Ú	attr_typeÚedge_or_noder¬   r   Únew_idÚattr_kwargsr÷   Údefault_titleÚdefault_elementÚattributes_elementrA   Úa_classÚa_modes                  r   ré   ÚGEXFWriter.get_attr_id  s>  € ð	1Ø—9‘9˜\Ñ*¨4Ñ0°Ñ7Ð7øÜô 	1äœ˜dŸl™lÓ+Ó,ˆFØ39�I‰I�lÑ# DÑ)¨%Ñ0Ø!'ÀÑKˆKÜÑ;¨{Ñ;ˆIà#ŸK™K¨Ó.ˆMØÑ(Ü")¨)Ó"4�Ü'*¨=Ó'9�Ô$Ø× Ñ  Ô1à!%ÐØ×'Ñ'×/Ñ/°Ö=�àŸ%™% ›.�ØŸ™˜v xÓ0�ØÕ*¨v­~Ø)*Ò&ñ >ð "Ñ)à'+ÑC�Ü%,Ñ%I¸[Ñ%IÐ"Ø×"Ñ"×)Ñ)¨!Ð-?Ô@Ø×%Ñ% iÕ0Øˆð5	1ús   ‚ —CD>Ã.D>Ã5AD>Ä=D>c                 óˆ  • UR                  SS5      nU(       Ga§  UR                  S5      nUGb   U R                  S:X  ac  [        SU R                   S3[        UR                  S5      5      [        UR                  S5      5      [        UR                  S	5      5      S
9nO|[        SU R                   S3[        UR                  S5      5      [        UR                  S5      5      [        UR                  S	5      5      [        UR                  SS5      5      S9nUR                  U5        UR                  S5      nUb2  [        SU R                   S3[        U5      S9nUR                  U5        UR                  S5      nUb2  [        SU R                   S3[        U5      S9nUR                  U5        UR                  S5      nUbk  UR                  S5      (       a#  [        SU R                   S3S[        U5      S9nO![        SU R                   S3[        U5      S9nUR                  U5        UR                  S5      n	U	bs  [        SU R                   S3[        U	R                  S5      5      [        U	R                  S5      5      [        U	R                  S5      5      S9nUR                  U5        U$ )Nr|   FÚcolorr,   Ú{ú}colorÚrÚgÚb©r  r	  r
  rA   g      ð?©r  r	  r
  rA   Úsizeú}size)rà   Ú	thicknessú
}thicknessÚshapeÚhttpú}shapeÚimage)rà   ÚuriÚpositionú	}positionÚxÚyÚz©r  r  r  )r¶   rg   r1   r   r.   r   r‡   Ú
startswith)
rY   Úelementr¿   r|   r  rñ   r  r  r  r  s
             r   r¼   ÚGEXFWriter.add_viz+  sL  € Ø�m‰m˜E 5Ó)ˆßØ—G‘G˜GÓ$ˆEØÒ Ø—<‘< 5Ó(ÜØ˜TŸ[™[˜M¨Ð1Ü˜eŸi™i¨›nÓ-Ü˜eŸi™i¨›nÓ-Ü˜eŸi™i¨›nÓ-ñ	‘Aô  Ø˜TŸ[™[˜M¨Ð1Ü˜eŸi™i¨›nÓ-Ü˜eŸi™i¨›nÓ-Ü˜eŸi™i¨›nÓ-Ü˜eŸi™i¨¨SÓ1Ó2ñ�Að —‘˜qÔ!à—7‘7˜6“?ˆDØÑÜ˜b §¡ ¨VÐ4¼CÀ»IÑF�Ø—‘˜qÔ!àŸ™ Ó,ˆIØÑ$Ü˜b §¡ ¨[Ð9ÄÀYÃÑP�Ø—‘˜qÔ!à—G‘G˜GÓ$ˆEØÑ Ø×#Ñ# F×+Ñ+ÜØ˜TŸ[™[˜M¨Ð1¸ÄcÈ%Ãjñ‘Aô   " T§[¡[ M°Ð 9ÄÀUÃÑL�AØ—‘˜qÔ!à—w‘w˜zÓ*ˆHØÑ#ÜØ˜Ÿ™˜ ZÐ0Ü˜(Ÿ,™, sÓ+Ó,Ü˜(Ÿ,™, sÓ+Ó,Ü˜(Ÿ,™, sÓ+Ó,ñ	�ð —‘˜qÔ!ØÐr   c                 óê   • UR                  SS5      nU(       aY  [        S5      nU H7  n[        S5      n[        U5      UR                  S'   UR	                  U5        M9     UR	                  U5        U$ )NÚparentsFÚparentrß   )r¶   r   r   rê   r‡   )rY   rÂ   r¿   r   Úparents_elementÚprñ   s          r   r¹   ÚGEXFWriter.add_parents`  sh   € Ø—-‘- 	¨5Ó1ˆÞÜ% iÓ0ˆOÛ�Ü˜HÓ%�Ü"% a£&�—‘˜‘Ø×&Ñ& qÖ)ñ ð ×Ñ Ô0ØÐr   c                 óâ   • UR                  SS5      nU(       aU  [        S5      nU H3  u  pV[        S[        U5      [        U5      S9nUR                  U5        M5     UR                  U5        U$ )NÚslicesFÚslice)r²   r³   )r¶   r   r   r‡   )rY   Únode_or_edge_elementÚnode_or_edge_datar&  Úslices_elementr²   r³   rñ   s           r   rº   ÚGEXFWriter.add_slicesk  sg   € Ø"×&Ñ& x°Ó7ˆÞÜ$ XÓ.ˆNÛ$‘
�Ü˜G¬3¨u«:¼3¸s»8ÑD�Ø×%Ñ% aÖ(ñ %ð !×'Ñ'¨Ô7Ø Ð r   c                 ón  • UR                  SS5      nU(       a›  [        S5      nU Hy  u  pV[        S5      nUb)  [        U5      UR                  S'   U R	                  U5        Ub)  [        U5      UR                  S'   U R	                  U5        UR                  U5        M{     UR                  U5        U$ )NÚspellsFÚspellr²   r³   )r¶   r   r   rê   r¸   r‡   )rY   r(  r)  r-  Úspells_elementr²   r³   rñ   s           r   r»   ÚGEXFWriter.add_spellsu  s¥   € Ø"×&Ñ& x°Ó7ˆÞÜ$ XÓ.ˆNÛ$‘
�Ü˜GÓ$�ØÑ$Ü(+¨E«
�A—H‘H˜WÑ%Ø×4Ñ4°UÔ;Ø‘?Ü&)¨#£h�A—H‘H˜U‘OØ×4Ñ4°SÔ9Ø×%Ñ% aÖ(ñ %ð !×'Ñ'¨Ô7Ø Ð r   c                 óx  • U R                   R                  S5      S:X  a›  Ub—  [        U[        5      (       a  SnOF[        U[        5      (       a  SnO.[        U[
        5      (       a  SnO[        R                  " S5      eU R                   R                  SU5        U R                   R                  SS5        g g g )	Nr   r€   Údater6   r9   z2timeformat should be of the type int, float or strÚ
timeformatr   )	r¥   rg   rè   r   r5   r<   rh   ri   r„   )rY   Ústart_or_endr3  s      r   r¸   Ú&GEXFWriter.alter_graph_mode_timeformat…  s§   € ð ×Ñ×!Ñ! &Ó)¨XÓ5ØÑ'Ü˜l¬C×0Ñ0Ø!'‘JÜ ¬e×4Ñ4Ø!)‘JÜ ¬c×2Ñ2Ø!'‘Jä×*Ò*ØLóð ð ×"Ñ"×&Ñ& |°ZÔ@Ø×"Ñ"×&Ñ& v¨yÕ9ð (ð 6r   c                 óº   • U R                   (       a  U R                  U R                  5        [        U R                  5      nUR	                  XR
                  SS9  g )NT)r   Úxml_declaration)r   r”   r�   r   r   r   )rY   ÚfhÚdocuments      r   r   ÚGEXFWriter.write—  s=   € à××Ø�K‰K˜Ÿ™Ô!Ü˜tŸx™xÓ(ˆØ�‰�r§M¡MÀ4ˆÒHr   c                 ó<  • SSU-  -   n[        U5      (       aÅ  UR                  (       a  UR                  R                  5       (       d
  US-   Ul        UR                  (       a  UR                  R                  5       (       d  X1l        U H  nU R	                  XS-   5        M     UR                  (       a  UR                  R                  5       (       d  X1l        g g U(       a8  UR                  (       a  UR                  R                  5       (       d  X1l        g g g )NÚ
z  r   )rå   rƒ   ÚstripÚtailr”   )rY   ÚelemÚlevelÚis       r   r”   ÚGEXFWriter.indentž  sº   € à�4˜%‘<ÑˆÜˆt�9‰9Ø—9—9 D§I¡I§O¡O×$5Ñ$5Ø ™H�”	Ø—9—9 D§I¡I§O¡O×$5Ñ$5Ø”	Û�Ø—‘˜D¨!¡)Ö,ñ à—9—9 D§I¡I§O¡O×$5Ñ$5Ø•	ð %6ö ˜dŸiŸi¨t¯y©y¯©×/@Ñ/@Ø•	ð 0Aˆur   )rŒ   r�   r‹   rŠ   r   r¥   r   r�   )Núutf-8Tr2   )r   )rm   rn   ro   rp   r‘   r—   r   r¦   r§   r½   ré   r¼   r¹   rº   r»   r¸   r   r”   rs   rt   r   r   r   r     sX   † ð GQô)"òVò'ò.%,òNB,òH@òDò@3òj	ò!ò!ò :ò$I÷r   r   c                   ód   • \ rS rSrSS jrS rS rSS jrS rS r	S	 r
S
 rS rS rS rS rSrg)r%   i¯  Nc                 ó`   • U R                  5         Xl        SU l        U R                  U5        g )NT)r\   r$   Úsimple_graphrk   )rY   r$   r   s      r   r‘   ÚGEXFReader.__init__²  s)   € Ø×ÑÔØ"Œà ˆÔØ×Ñ˜Õ!r   c                 óŠ  • [        US9U l        U R                  R                  SU R                   S35      nUb  U R	                  U5      $ U R
                   HS  nU R                  U5        U R                  R                  SU R                   S35      nUc  MB  U R	                  U5      s  $    [        R                  " S5      e)N)Úfiler  z}graphz No <graph> element in GEXF file.)	r   r�   Úfindr-   Ú
make_graphrf   rk   rh   ri   )rY   Ústreamr	  r   s       r   Ú__call__ÚGEXFReader.__call__¹  s¤   € Ü FÑ+ˆŒØ�H‰H�M‰M˜B˜tŸ|™|˜n¨GÐ4Ó5ˆØ‰=Ø—?‘? 1Ó%Ð%à—}”}ˆGØ×Ñ˜WÔ%Ø—‘—‘  4§<¡< .°Ð8Ó9ˆAØ‹}Ø—‘ qÓ)Ò)ñ	 %ô
 ×ÒÐAÓBÐBr   c                 ó`  • UR                  SS 5      nUS:X  a  [        R                  " 5       nO[        R                  " 5       nUR                  SS5      nUS:w  a  XCR                  S'   UR                  S5      nUb  XSR                  S'   UR                  S5      nUb  XcR                  S'   UR                  SS5      nUS:X  a  SUR                  S'   OS	UR                  S'   UR                  S
5      U l        U R
                  S:X  a  SU l        UR                  SU R                   S35      n0 n	0 n
0 n0 nU H«  nUR                  S5      nUS:X  aF  U R                  U5      u  nnU	R                  U5        U
R                  U5        X£R                  S'   M`  US:X  aF  U R                  U5      u  nnUR                  U5        UR                  U5        XÃR                  S'   M¬  e    SSS	SS.0n0 nUR                  U5        UR                  U5        XÃR                  S'   UR                  SU R                   S35      nUb9  UR                  SU R                   S35       H  nU R                  UUU	5        M     UR                  SU R                   S35      nUb9  UR                  SU R                   S35       H  nU R                  UUU5        M     U R                  (       aC  UR                  5       (       a  [        R                  " U5      nU$ [        R                   " U5      nU$ )Nr¡   r�   rŸ   r    r²   r³   r   r   r€   r3  r2  r8   r  z}attributesrö   r}   r´   r~   rÒ   rÎ   r6   )rÏ   r   rô   ú}nodesú}nodez}edgesz}edge)rg   rh   ÚMultiDiGraphÚ
MultiGraphrŽ   r3  rø   r-   Úfind_gexf_attributesrÉ   rJ  Úadd_nodeÚadd_edgerF  r¤   ÚDiGraphÚGraph)rY   Ú	graph_xmlÚedgedefaultr   Ú
graph_nameÚgraph_startÚ	graph_endÚ
graph_modeÚattributes_elementsÚ	node_attrr´   Ú	edge_attrrÒ   rA   Ú
attr_classÚnaÚndÚeaÚedr¾   Únode_xmlrÓ   Úedge_xmls                          r   rK  ÚGEXFReader.make_graphÆ  sí  € à—m‘mÐ$5°tÓ<ˆØ˜*Ó$Ü—’Ó!‰Aä—’“ˆAð —]‘] 6¨2Ó.ˆ
Ø˜ÓØ(�G‰G�F‰OØ—m‘m GÓ,ˆØÑ"Ø*�G‰G�GÑØ—M‘M %Ó(ˆ	ØÑ Ø&�G‰G�E‰NØ—]‘] 6¨2Ó.ˆ
Ø˜Ó"Ø'ˆA�G‰G�FŠOà&ˆA�G‰G�F‰Oð $Ÿ-™-¨Ó5ˆŒØ�?‰?˜fÓ$Ø&ˆDŒOð (×/Ñ/°"°T·\±\°NÀ,Ð0OÓPÐàˆ	ØˆØˆ	ØˆÛ$ˆAØŸ™˜w›ˆJØ˜VÓ#Ø×2Ñ2°1Ó5‘��BØ× Ñ  Ô$Ø×#Ñ# BÔ'Ø*6—‘˜Ó'Ø˜vÓ%Ø×2Ñ2°1Ó5‘��BØ× Ñ  Ô$Ø×#Ñ# BÔ'Ø*6—‘˜Ó'àñ %ð"  °8ÀhÑOÐPˆØˆØ×Ñ˜ÔØ×Ñ˜BÔØ".�‰�Ñð "Ÿ™¨¨D¯L©L¨>¸Ð'AÓBˆØÑ$Ø)×1Ñ1°B°t·|±|°nÀFÐ2KÖL�Ø—‘˜a ¨9Ö5ñ Mð "Ÿ™¨¨D¯L©L¨>¸Ð'AÓBˆØÑ$Ø)×1Ñ1°B°t·|±|°nÀFÐ2KÖL�Ø—‘˜a ¨9Ö5ñ Mð ××Ø�}‰}�‰Ü—J’J˜q“M�ð ˆô —H’H˜Q“K�Øˆr   c                 ó‚  • U R                  X25      nU R                  XR5      nU R                  S:X  a  U R                  XR5      nOU R	                  XR5      nU R                  XR5      nU R                  XR5      nUR                  S5      nU R                  b  U R                  U5      nUR                  S5      nXuS'   UR                  SU5      nUb  XES'   UR                  SU R                   S35      nUb6  UR                  SU R                   S35       H  nU R                  XX6S9  M     UR                  " U40 UD6  g )	Nr,   rœ   r°   r±   r  rP  rQ  )Únode_pid)Údecode_attr_elementsr¹   r1   rº   r»   r¼   Úadd_start_endrg   r$   rJ  r-   rø   rU  )	rY   r   rg  r`  rk  r›   rÀ   Ú
node_labelÚsubnodess	            r   rU  ÚGEXFReader.add_node  s1  € ð ×(Ñ(¨Ó=ˆØ×Ñ Ó/ˆØ�<‰<˜5Ó Ø—?‘? 4Ó2‰Dà—?‘? 4Ó2ˆDØ�|‰|˜DÓ+ˆØ×!Ñ! $Ó1ˆð —,‘,˜tÓ$ˆØ�>‰>Ñ%Ø—n‘n WÓ-ˆGð —\‘\ 'Ó*ˆ
Ø"ˆW‰ð —<‘<  xÓ0ˆØÑØ"�‰Kð —=‘= 2 d§l¡l ^°7Ð!;Ó<ˆØÑØ$×,Ñ,¨r°$·,±,°¸vÐ-FÖG�Ø—‘˜a¨9�ÓGñ Hð 	
�
Š
�7Ñ#˜dÓ#r   c                 óÎ   • U R                   nUR                  S5      nUb  U R                  U   " U5      US'   UR                  S5      nUb  U R                  U   " U5      US'   U$ )Nr²   r³   )r3  rg   rX   )rY   r›   r�   ÚttypeÚ
node_startÚnode_ends         r   rm  ÚGEXFReader.add_start_end8  si   € à—‘ˆØ—W‘W˜WÓ%ˆ
ØÑ!Ø ×,Ñ,¨UÒ3°JÓ?ˆD�‰MØ—7‘7˜5“>ˆØÑØ×*Ñ*¨5Ò1°(Ó;ˆD�‰KØˆr   c           	      óœ  • 0 nUR                  SU R                   S35      nUbÍ  U R                  S:X  aR  [        UR	                  S5      5      [        UR	                  S5      5      [        UR	                  S5      5      S.US'   Ok[        UR	                  S5      5      [        UR	                  S5      5      [        UR	                  S5      5      [        UR	                  S	S
5      5      S.US'   UR                  SU R                   S35      nUb  [        UR	                  S5      5      US'   UR                  SU R                   S35      nUb  [        UR	                  S5      5      US'   UR                  SU R                   S35      nUb1  UR	                  S5      US'   US   S:X  a  UR	                  S5      US'   UR                  SU R                   S35      nUbT  [        UR	                  SS5      5      [        UR	                  SS5      5      [        UR	                  SS5      5      S.US'   [        U5      S:”  a  X1S'   U$ )Nr  r  r,   r  r	  r
  r  r  rA   r   r  r  rà   r  r  r  r  r  r  r  r  r  r   r  r  r  r  r|   )rJ  r.   r1   r<   rg   r5   rå   )	rY   r›   rg  r|   r  r  r  r  r  s	            r   r¼   ÚGEXFReader.add_vizC  s  € àˆØ—‘  4§;¡; -¨wÐ7Ó8ˆØÑØ�|‰|˜uÓ$ä˜UŸY™Y s›^Ó,Ü˜UŸY™Y s›^Ó,Ü˜UŸY™Y s›^Ó,ñ ��G’ô ˜UŸY™Y s›^Ó,Ü˜UŸY™Y s›^Ó,Ü˜UŸY™Y s›^Ó,Ü˜uŸy™y¨¨aÓ0Ó1ñ	 ��G‘ð �}‰}˜r $§+¡+ ¨fÐ5Ó6ˆØÑÜ §¡¨Ó 1Ó2ˆC�‰Kà—M‘M B t§{¡{ m°;Ð"?Ó@ˆ	ØÑ Ü$ Y§]¡]°7Ó%;Ó<ˆC�Ñà—‘  4§;¡; -¨wÐ7Ó8ˆØÑØ Ÿ9™9 WÓ-ˆC�‰LØ�7‰|˜wÓ&Ø$Ÿy™y¨Ó/��G‘à—=‘= 2 d§k¡k ]°*Ð!=Ó>ˆØÑä˜8Ÿ<™<¨¨QÓ/Ó0Ü˜8Ÿ<™<¨¨QÓ/Ó0Ü˜8Ÿ<™<¨¨QÓ/Ó0ñˆC�
‰Oô ˆs‹8�a‹<Ø�‰KØˆr   c                 óê   • UR                  SU R                   S35      nUbP  / US'   UR                  SU R                   S35       H(  nUR                  S5      nUS   R	                  U5        M*     U$ )Nr  z}parentsr   z}parentrß   ©rJ  r-   rø   rg   r‡   )rY   r›   rg  r"  r#  r!  s         r   r¹   ÚGEXFReader.add_parentsp  su   € Ø"Ÿ-™-¨"¨T¯\©\¨N¸)Ð(DÓEˆØÑ&Ø ˆD�‰OØ$×,Ñ,¨r°$·,±,°¸xÐ-HÖI�ØŸ™˜u›�Ø�Y‘×&Ñ& vÖ.ñ Jð ˆr   c                 ó  • UR                  SU R                   S35      nUbb  / US'   UR                  SU R                   S35       H:  nUR                  S5      nUR                  S5      nUS   R	                  XV45        M<     U$ )Nr  z}slicesr&  z}slicer²   r³   ry  )rY   r›   Únode_or_edge_xmlr*  r–   r²   r³   s          r   rº   ÚGEXFReader.add_slicesy  s†   € Ø)×.Ñ.°°D·L±L°>ÀÐ/JÓKˆØÑ%ØˆD�‰NØ#×+Ñ+¨b°·±°¸gÐ,FÖG�ØŸ™˜g›�Ø—e‘e˜E“l�Ø�X‘×%Ñ% u lÖ3ñ Hð ˆr   c                 ór  • UR                  SU R                   S35      nUb”  / US'   U R                  nUR                  SU R                   S35       H`  nU R                  U   " UR                  S5      5      nU R                  U   " UR                  S5      5      nUS   R                  Xg45        Mb     U$ )Nr  z}spellsr-  z}spellr²   r³   )rJ  r-   r3  rø   rX   rg   r‡   )rY   r›   r|  r/  rr  r–   r²   r³   s           r   r»   ÚGEXFReader.add_spellsƒ  s¯   € Ø)×.Ñ.°°D·L±L°>ÀÐ/JÓKˆØÑ%ØˆD�‰NØ—O‘OˆEØ#×+Ñ+¨b°·±°¸gÐ,FÖG�Ø×(Ñ(¨Ò/°·±°g³Ó?�Ø×&Ñ& uÒ-¨a¯e©e°E«lÓ;�Ø�X‘×%Ñ% u lÖ3ñ Hð ˆr   c                 ó¤  • UR                  S5      nUR                  5       (       a  US:X  a  [        R                  " S5      eUR                  5       (       d  US:X  a  [        R                  " S5      eUR                  S5      nUR                  S5      nU R                  b"  U R	                  U5      nU R	                  U5      nU R                  X25      nU R                  Xr5      nU R                  S:X  a  U R                  Xr5      nOU R                  Xr5      nUR                  S	5      nUb  X‡S	'   UR                  S
S 5      n	U	b  U	nUR                  S5      n
U
b  [        U
5      US'   UR                  S5      nUb  X·S'   UR                  XV5      (       a  SU l        UR                  " XV4SU0UD6  US:X  a  UR                  " Xe4SU0UD6  g g )NrÏ   rž   z(Undirected edge found in directed graph.r�   z(Directed edge found in undirected graph.rÐ   rÑ   r,   rœ   rÝ   rÎ   r°   FrÇ   Úmutual)rg   r¤   rh   ri   r$   rl  rm  r1   rº   r»   r¶   r5   Úhas_edgerF  rV  )rY   r   rÙ   ra  Úedge_directionrÐ   rÑ   r›   rŠ   Úmultigraph_keyrÎ   rÔ   s               r   rV  ÚGEXFReader.add_edgeŽ  s¸  € ð &×)Ñ)¨&Ó1ˆØ�=‰=�?‰?˜~°Ó=Ü×"Ò"Ð#MÓNÐNØ—‘—‘ ^°zÓ%AÜ×"Ò"Ð#MÓNÐNð ×!Ñ! (Ó+ˆØ×!Ñ! (Ó+ˆØ�>‰>Ñ%Ø—^‘^ FÓ+ˆFØ—^‘^ FÓ+ˆFà×(Ñ(¨ÓAˆØ×!Ñ! $Ó5ˆà�<‰<˜5Ó Ø—?‘? 4Ó6‰Dà—?‘? 4Ó6ˆDð
 ×"Ñ" 4Ó(ˆØÑØ �‰Jð Ÿ™ .°$Ó7ˆØÑ%Ø$ˆGà×!Ñ! (Ó+ˆØÑÜ" 6›]ˆD�‰Nà!×%Ñ% gÓ.ˆ
ØÑ!Ø&�‰Mà�:‰:�f×%Ñ%à %ˆDÔØ	�
Š
�6Ñ7 wÐ7°$Ò7Ø˜XÓ%Ø�JŠJ�vÑ;¨7Ð;°dÓ;ð &r   c                 ó¾  • 0 nUR                  SU R                   S35      nUGb
  UR                  SU R                   S35       Hç  nUR                  S5      n X   S   nX   S   n	UR                  S	5      n
U	S
:X  a  U R                  U
   n
OU R                  U	   " U
5      n
X   S   S:X  ay  U R                  nU R                  U   " UR                  S5      5      nU R                  U   " UR                  S5      5      nXs;   a  X7   R                  X¬U45        MÚ  X¬U4/X7'   Mã  X£U'   Mé     U$ ! [         a   n[
        R                  " SU S35      UeS nAff = f)Nr  z
}attvaluesz	}attvaluerß   rô   zNo attribute defined for=re   rÏ   rà   r7   r   r   r²   r³   )rJ  r-   rø   rg   r·   rh   ri   rr   rX   r3  r‡   )rY   Ú	gexf_keysÚobj_xmlr�   Úattr_elementrA   rÇ   rô   ÚerrÚatyperà   rr  r²   r³   s                 r   rl  ÚGEXFReader.decode_attr_elementsÂ  sq  € àˆà—|‘| b¨¯©¨°kÐ$BÓCˆØÒ#à!×)Ñ)¨B¨t¯|©|¨n¸JÐ*GÖH�Ø—e‘e˜E“l�ðXØ%™N¨7Ñ3�Eð "™ vÑ.�ØŸ™˜g›�Ø˜IÓ%Ø ×-Ñ-¨eÑ4‘Eà ×,Ñ,¨UÒ3°EÓ:�EØ‘> &Ñ)¨YÓ6ð !ŸO™O�EØ ×,Ñ,¨UÒ3°A·E±E¸'³NÓC�EØ×*Ñ*¨5Ò1°!·%±%¸³,Ó?�CØ“}Ø™×*Ñ*¨E¸#Ð+>Ö?à(-°cÐ':Ð&;˜›ð #(˜“Kñ1 Ið2 ˆøô+  ó XÜ×*Ò*Ð-FÀsÀeÈ1Ð+MÓNÐTWÐWûðXús   ÁD2Ä2
EÄ<EÅEc                 óÀ  • 0 n0 nUR                  S5      nUR                  SU R                   S35       H¤  nUR                  S5      nUR                  S5      nUR                  S5      nXxUS.X&'   UR                  SU R                   S35      n	U	c  Ma  US	:X  a  U R                  U	R
                     n
OU R                  U   " U	R
                  5      n
X£U'   M¦     X#4$ )
Nr   r  z
}attributerœ   rô   rÏ   )rô   rÏ   r   z}defaultr7   )rg   rø   r-   rJ  rr   rƒ   rX   )rY   r   ÚattrsÚdefaultsr   rî   r‹   rô   r‹  r¬   rà   s              r   rT  ÚGEXFReader.find_gexf_attributesä  sÙ   € àˆØˆØ!×%Ñ% fÓ-ˆØ#×+Ñ+¨b°·±°¸kÐ,JÖKˆAØ—e‘e˜D“kˆGØ—E‘E˜'“NˆEØ—E‘E˜&“MˆEØ',ÀTÑJˆE‰Nà—f‘f˜r $§,¡, ¨yÐ9Ó:ˆGØÓ"Ø˜IÓ%Ø ×-Ñ-¨g¯l©lÑ;‘Eà ×,Ñ,¨UÒ3°G·L±LÓA�EØ"'˜“ñ Lð ˆÐr   )r$   rF  r3  r�   )Nr2   r>   )rm   rn   ro   rp   r‘   rM  rK  rU  rm  r¼   r¹   rº   r»   rV  rl  rT  rs   rt   r   r   r%   r%   ¯  sE   † ô"òCòMô^!$òF	ò+òZòò	ò2<òh õDr   r%   c                 óò  •  U  Vs/ s H  oU R                   U   S   4PM     nn[	        U6 u  pE[        [        U5      5      [        U 5      :w  a  [        R                  " S5      e[        U5      n[        R                  " X5      nU  H·  nX'   nXvR                   U   S'   UR                   U   R                  S5        SUR                   U   ;   a$  X R                   U   S      UR                   U   S'   SUR                   U   ;   d  M‚  U R                   U   S    V	s/ s H  o’U	   PM	     sn	UR                   U   S'   M¹     U$ s  snf ! [         a  n[        R                  " S5      UeSnAff = fs  sn	f )aÕ  Relabel graph using "label" node keyword for node label.

Parameters
----------
G : graph
   A NetworkX graph read from GEXF data

Returns
-------
H : graph
  A NetworkX graph with relabeled nodes

Raises
------
NetworkXError
    If node labels are missing or not unique while relabel=True.

Notes
-----
This function relabels the nodes in a NetworkX graph with the
"label" attribute.  It also handles relabeling the specific GEXF
node attributes "parents", and "pid".
r°   zFFailed to relabel nodes: missing node labels found. Use relabel=False.NzHFailed to relabel nodes: duplicate node labels found. Use relabel=False.rœ   r±   r   )
r¯   r·   rh   ri   Úziprå   r„   rF   Úrelabel_nodesr¶   )
r   r¨   ÚmappingrŠ  r  r  ÚHÚnÚmr#  s
             r   r   r   ù  sb  € ð2Ù56Ó7²Q°�q—w‘w˜q‘z 'Ñ*Ó+±QˆÐ7ô
 �ˆ=�D€AÜ
Œ3ˆq‹6ƒ{”c˜!“fÓÜ×Òð!ó
ð 	
ô
 �7‹m€GÜ
×Ò˜Ó$€AãˆØ‰JˆØ�‰�‰
�4ÑØ	�‰�‰
�‰�wÔØ�A—G‘G˜A‘JÓØ '¯©°©
°5Ñ(9Ñ :ˆA�G‰G�A‰J�uÑØ˜Ÿ™ ™
Õ"Ø9:¿¹À¹ÀIÒ9NÓ$OÒ9N°A¨Q¤ZÑ9NÑ$OˆA�G‰G�A‰J�yÓ!ñ ð €Hùò/ 8øÜó Ü×ÒØTó
àð	ûðüò* %Ps-   ‚E †E£E ÄE4ÅE Å
E1ÅE,Å,E1)rC  Tr2   )NFr2   )Ú__doc__rˆ   r…   Úxml.etree.ElementTreer   r   r   r   r   Únetworkxrh   Únetworkx.utilsr   Ú__all__r	   r   Ú_dispatchabler
   r)   r   r%   r   rt   r   r   Ú<module>rž     s¬   ðñó& Û ÷õ ó Ý $â
L€ñ ˆ1�4Ñó3ó ð3ôl*(ñZ ˆ1�4ÑØ×Ò˜¨TÑ2ó(ó 3ó ð(÷V[ñ [ô|Y�ô YôxG�ô GóT
1r   