
    Vi[                        d dl Z d dlZd dlZd dlZd dlZd dlZ	 d dlZn!# e$ r  ed            e	d           Y nw xY w ej
                     dZdZe dZe dZdZd	Zd
 Zd Zd Zd Zd Zd Zedk    r e             dS dS )    Nz,[!] Zainstaluj msgpack: pip3 install msgpack   zO/var/lib/pterodactyl/volumes/cc7ccc03-03bd-4bde-8488-3057d3803420/squaremap/webz_/var/lib/pterodactyl/volumes/cc7ccc03-03bd-4bde-8488-3057d3803420/world/mtr/minecraft/overworldz/stations.jsonz/final_map_data.jsonz?https://mtr.ciapongi.szablix.pl/mtr/api/map/stations-and-routesz1https://mtr.ciapongi.szablix.pl/mtr/api/map/railsc                     t          |                                                                                               dd          S )N  )strstriplowerreplace)ss    &/root/ciapongi-mapa/generate_map_v7.py	normalizer      s1    Q--//77R@@@    c                 x    t          j        | d         |d         z
  dz  | d         |d         z
  dz  z             S )Nr      r   )mathsqrt)p1p2s     r   dist_2dr      s8    DIr!uRU{Q&6"Q%1+9I&IJJJr   c                     	 t          j        | dd          }|j        dk    r|                                S n#  Y nxY wi S )NF   )verifytimeout   )requestsgetstatus_codejson)urlrs     r   
fetch_jsonr!      sI    LUB777=CDDIs   59 =c                    i }t           j                            t          |           }t           j                            |          s|S t          j        |          D ]\  }}}|D ]w}|                    d          r	 t          t           j                            ||          d          5 }t          j	        |
                                d          }|                    di           |                    di           }
}	|                    dd          }|	r|
rt          t          |	                    d	d
          |	                    dd
          |	                    dd
          f|
                    d	d
          |
                    dd
          |
                    dd
          fg                    }|||<   d d d            n# 1 swxY w Y   q#  Y vxY w|S )N.rbF)raw	position1	position2nameNieznanyxr   yz)ospathjoinMTR_SAVES_PATHexistswalk
startswithopenmsgpackunpackbreadr   tuplesorted)folder_namemapping	full_pathroot_filesfilefdatar   r   r(   ks                r   load_msgpack_datarD      s   G^[99I7>>)$$4Wn'),,  a 	 	Ds##-X	"',,tT22D99 *Q"?16688???D!XXk266b8Q8QB88FJ77D *b *!&266#a=="&&Q--PSTU*W+-66#a=="&&Q--PSTU*W*Y #Z #Z [ [%)
* * * * * * * * * * * * * * * DD	 Ns1    .G.DG
>G
GGGGGc                    ||k    r|gS d|fg}|d i}|di}|rt          j        |          \  }}||k    rn|                    |g           D ]h}	|                     |	i                               dd          }
||         |
z   }|	|vs|||	         k     r!|||	<   t          j        |||	f           |||	<   i|||vrd S g }|}||                    |           ||         }||                                 |S )Nr   length
   )heapqheappopr   heappushappendreverse)	rail_dictadj	start_ridend_ridqueue	came_fromcost_so_farcurrent_costcurrnxtdistnew_costr.   cs                 r   dijkstra_on_railsrZ   .   sJ   GYK/^ED!Ia.K
 
&"]511d7??E774$$ 	& 	&C==b))--h;;D"4(4/H+%%K4D)D)D#+C uxo666!%	#  
& iDA
-AaL - 	LLNNNKr   c                    '()* t          d           t          d          } t          d          }t          t                                        di                               dg           }d |D             }t          t
                    }t          |t                    r*|                    di                               dg           n|}i i i c*}(d'g g g }	}}t                      }
|D ]}|d	         }|*|<   t          |                    d
g                     ||<   d t          |                    dg           d           D             }|si|

                    t          |d         d         d          t          |d         d         d          f           |

                    t          |d         d         d          t          |d         d         d          f           |D ]h}t          |d         'z            t          |d         'z            }}||f(vrt                      (||f<   (||f         
                    |           i|                    di           |                    di           }}t          t          |                    dd          |                    dd          |                    dd          f|                    dd          |                    dd          |                    dd          fg                    }|| v r |                    || |         d           V||v r |                    |||         d           z|	                    |           |D ]@}|                    d
g           D ]'}||v r!||         
                    |d	                    (A'(*fd}	 t          t           d          5 }t#          j        |          }d d d            n# 1 swxY w Y   n# t&          $ r Y d S w xY wg }|                    dg           D ]}t)          |                    dd                    )|                    )          p-t+          )fd|                                D             d           }|r8|                    d	          |d	<   |                    dg           |d<   |d         }g }t/          |          dk    rt1          t/          |          dz
            D ]}||         ||dz            }} ||d         |d         f          \  } }! ||d         |d         f          \  }"}#| r]|"r[t3          *|| |"          }$|$rG|r0|d         |$d         k    r|                    |$dd                     |                    |$           |rg }%d }&|D ]}*                    |          }d t          |                    dg           d            D             }|sJ|&Bt7          |&|d                   t7          |&|d                   k     r|                                 |%r>t7          |%d         |d                   d!k     r|%                    |dd                     n|%                    |           |d         }&|%|d"<   n-d# |                    d"g           D             |d"<   n	d|vrg |d<   |                    |           t          t:          d$          5 }t#          j        |                    dg           ||||	t?          |
          d%|           d d d            n# 1 swxY w Y   t          d&           d S )'Nz==== GENERATOR V20 (ZOPTYMALIZOWANE PERONY I CZYSTE TRASY) ===	platformssidingsrB   routesc                 V    i | ]&}t          |                    d d                    |'S )r(   r   )r   r   ).0r    s     r   
<dictcomp>zmain.<locals>.<dictcomp>O   s0    JJJ!ifb 1 122AJJJr   rails    idconnectedRailsc                 .    g | ]}|d          |d         gS r*   r,    r`   rY   s     r   
<listcomp>zmain.<locals>.<listcomp>^   s%    gggA##gggr   curvePointsc                     | d         S Nprogressrh   r*   s    r   <lambda>zmain.<locals>.<lambda>^   s    XYZdXe r   )keyr   r   r   r&   r'   r*   r+   r,   )r.   r(   c           	         t          | d         z            t          | d         z            }}t                      }dD ]8}dD ]3}|                                        ||z   ||z   fg                      49d t	          d          }}|D ]I}|                             dg           D ]*}	t          | |	d         |	d         f          }
|
|k     r|
}|}+J||fS )Nr   r   )rr   r   r   infrk   r*   r,   )intsetupdater   floatr   )ptgxgzcandsdxdz	best_railmin_dridrY   d	GRID_SIZEgridrM   s              r   find_closest_railzmain.<locals>.find_closest_railv   s   RUI%&&BqE9,<(=(=B 	K 	KBJJTXXr"ubenb-I-I J J J JJu5	 	9 	9Cs^''r:: 9 9B33 011u99aeS9 %r   r    r(   r   c              3   *   K   | ]\  }}|v 	|V  d S )Nrh   )r`   rC   v	norm_names      r   	<genexpr>zmain.<locals>.<genexpr>   s3      9q9q1bkopbpbp!bpbpbpbp9q9qr   stationsc                 .    g | ]}|d          |d         gS rg   rh   ri   s     r   rj   zmain.<locals>.<listcomp>   s%    sssAcFAcF+sssr   c                     | d         S rm   rh   ro   s    r   rp   zmain.<locals>.<lambda>   s    defpdq r   g       @r.   c                 .    g | ]}|d          |d         gS rg   rh   )r`   ps     r   rj   zmain.<locals>.<listcomp>   s%     T T Ta!C&!C&!1 T T Tr   w)r   r^   r\   r]   infrastructurenodesu@   ✅ GOTOWE! Wyeksportowano zaktualizowane perony i czyste trasy.) printrD   r!   API_ROUTES_URLr   API_RAILS_URL
isinstancedictrv   r9   addroundru   r8   rK   r4   STATIONS_FILEr   load	Exceptionr   nextitemslenrangerZ   extendr   rL   OUTPUT_FILEdumplist)+platform_datasiding_data
api_routesapi_routes_map	api_rails
rails_listrN   platforms_outsidings_out	infra_out	nodes_setr    r   ptsry   rz   r{   r   r   rC   	connectedr   rA   rB   final_routesrouteapi_datar   
route_ridsis1s2r1d1r2d2sub_pathdetailed_pathlast_ptr   r   r   rM   s+                                          @@@@r   mainr   I   sM   	
IJJJ%k22M#I..KN++//;;??"MMJJJzJJJN=))I?I)UY?Z?Zivr**..w;;;`iJr2IsDI,.B	;MI $ $g	#quu-r2233CggmR0H0HNeNe)f)f)fgggHuSVAY**E#a&)Q,?,?@AAAuSWQZ++U3r71:q-A-ABCCC 	$ 	$BA	)**C1y0@,A,ABBxt##ceeT2r(^"bNs####{B''{B)?)?B&266#a=="&&Q--AG66#a=="&&Q--AGI J J K K }33S-XYJZ4[4[\\\\+{113TU2W2WXXXXs#### = =/44 	= 	=ICY!3!3AdG!<!<!<	=
  
  
  
  
  
  
 -%%?49Q<<D???????????????fffL(B'' +# +#eii3344	!%%i00xD9q9q9q9qH\H\H^H^9q9q9qsw4x4x %	?",,t,,E$K (Z < <E*Z(HJ8}}q  s8}}q011 > >A%a[(1Q3-B..3C/ABBFB..3C/ABBFB >b >#4YR#L#L# >) >jn.K.KZM^M^_ghihjhj_kMlMlMlMl","3"3H"="="= U "% 
& 
&C!c**AssVAEE-QS<T<TZqZq5r5r5rsssC(*"7CG44wwA7O7OOOQTQ\Q\Q^Q^Q^$ 4r1BCF)K)Kc)Q)QS`SgSghklmlnlnhoSpSpSpSp'..s333!"gGG -f T T8<<PR;S;S T T Tf&&Bj(9E""""	k3		 1	R00"&"')__
 
 	 	 	               

LMMMMMsH   
P P 4P  PP PP 
PP>]]]__main__)r-   r   r   rH   r   urllib3r5   ImportErrorr   exitdisable_warnings	BASE_PATHr0   r   r   r   r   r   r   r!   rD   rZ   r   __name__rh   r   r   <module>r      sS   / / / / / / / / / / / / / / / / / / / / / / / /NNNN   	E
8999DGGGGG     ]	r,,,000RC @ @ @ J J J    &  6vN vN vNp z4466666s    ==