
    ph!c                        S r SSKrSSKJrJr  SSKJrJrJrJ	r	J
r
Jr  SSKJrJrJrJr  SSKJrJrJr  SSKJr  SSKJrJrJrJrJrJrJrJr   " S	 S
5      r \(       a  SSK!J"r"J#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)$z
Classes for drawing maps.

    N)OrderedDictdefaultdict)TYPE_CHECKINGDefaultDictOptionalSequenceUnioncast)ElementFigureHtmlMacroElement)ElementAddToElementEventHandlerIncludeStatement)Template)JsCode
TypeBoundsTypeBoundsReturnTypeJsonValueescape_backticksparse_optionsremove_emptyvalidate_locationc                        \ rS rSrS rS rSrg)classproperty   c                     Xl         g Nf)selfr!   s     bC:\Users\julio\OneDrive\Documentos\Trabajo\IdeasFrscas\Cabanna\env\Lib\site-packages\folium/map.py__init__classproperty.__init__   s        c                 $    U R                  U5      $ r   r    )r"   objowners      r#   __get__classproperty.__get__   s    vve}r&   r    N)__name__
__module____qualname____firstlineno__r$   r*   __static_attributes__ r&   r#   r   r      s    r&   r   )
CustomIconDivIconc                      ^  \ rS rSr% Sr\" \5      r\\	\4   \
S'   \S 5       r\S 5       r\S 5       rU 4S jrSrU =r$ )	Class&   z-The root class of the leaflet class hierarchy	_includesc                 B    U R                   U    R                  " S0 UD6  g )Nr1   )r7   update)clskwargss     r#   includeClass.include+   s    c!!+F+r&   c                      U R                   U    $ r   )r7   )r:   s    r#   includesClass.includes/   s    }}S!!r&   c                      SU R                    3$ )NzL.)_namer"   s    r#   leaflet_class_nameClass.leaflet_class_name3   s     DJJ<  r&   c           	        > U R                  5       n[        U[        5      (       d   S5       eU R                  (       ar  [	        U R
                  40 U R                  D6nUR                  R                  [        UR                  R                  X0R                  S95      U R                  S-   SS9  [        TU ](  " S0 UD6  g )N8You cannot render this Element if it is not in a Figure.thisr;   r7   )nameindexr1   )get_root
isinstancer   r?   r   rD   script	add_childr   	_templaterenderrB   super)r"   r;   figurestmt	__class__s       r#   rR   Class.render9   s    F
 
 	FE	F 
 ==#D$;$;Mt}}MD MM##--4-NOZZ+- $  	  r&   r1   )r,   r-   r.   r/   __doc__r   dictr7   r   str__annotations__classmethodr<   r   r?   propertyrD   rR   r0   __classcell__rV   s   @r#   r5   r5   &   sb    7(3D(9I{39%9, , " " ! !
! !r&   r5   c                   F    \ rS rSrSrS\4S jrS\4S jrS\S\4S jr	Sr
g	)
EventedL   a.  The base class for Layer and Map

Adds the `on` and `once` methods for event handling capabilities.

See https://leafletjs.com/reference.html#evented for
more in depth documentation. Please note that we have
only added the `on(<Object> eventMap)` variant of this
method using python keyword arguments.
	event_mapc                 ,    U R                   " SSS0UD6  g )NonceFr1   _addr"   rc   s     r#   on
Evented.onW   s    		*u*	*r&   c                 ,    U R                   " SSS0UD6  g )Nre   Tr1   rf   rh   s     r#   re   Evented.onceZ   s    		)t)y)r&   re   c                 l    UR                  5        H   u  p4U R                  [        X4U5      5        M"     g r   )itemsrP   r   )r"   re   rc   
event_typehandlers        r#   rg   Evented._add]   s)    #,??#4JNN<
TBC $5r&   r1   N)r,   r-   r.   r/   rX   r   ri   re   boolrg   r0   r1   r&   r#   ra   ra   L   s5    +f +* *D DF Dr&   ra   c            	       ^   ^  \ rS rSrSr    S
S\\   S\S\S\4U 4S jjjrU 4S jr	S	r
U =r$ )Layerb   a  An abstract class for everything that is a Layer on the map.
It will be used to define whether an object will be included in
LayerControls.

Parameters
----------
name : string, default None
    The name of the Layer, as it will appear in LayerControls
overlay : bool, default False
    Adds the layer as an optional overlay (True) or the base layer (False).
control : bool, default True
    Whether the Layer will be included in LayerControls.
show: bool, default True
    Whether the layer will be shown on opening.
rK   overlaycontrolshowc                 z   > [         TU ]  5         Ub  UOU R                  5       U l        X l        X0l        X@l        g r   )rS   r$   get_name
layer_namerv   rw   rx   )r"   rK   rv   rw   rx   rV   s        r#   r$   Layer.__init__s   s3     	"&"2$	r&   c                    > U R                   (       aO  U R                  [        U R                  5       U R                  R                  5       S9U R                  5       S-   S9  [
        TU ]  " S0 UD6  g )N)element_nameelement_parent_namerg   rK   r1   )rx   rP   r   rz   _parentrS   rR   )r"   r;   rV   s     r#   rR   Layer.render   s]    99NN#!%(,(=(=(? ]]_v-   	  r&   )rw   r{   rv   rx   )NFTT)r,   r-   r.   r/   rX   r   rZ   rr   r$   rR   r0   r^   r_   s   @r#   rt   rt   b   sT    $ #sm  	
  	! 	!r&   rt   c                   f   ^  \ rS rSrSr\" S5      r    SS\\   S\	S\	S\	S\
4
U 4S	 jjjrS
rU =r$ )FeatureGroup   a%  
Create a FeatureGroup layer ; you can put things in it and handle them
as a single layer.  For example, you can add a LayerControl to
tick/untick the whole group.

Parameters
----------
name : str, default None
    The name of the featureGroup layer.
    It will be displayed in the LayerControl.
    If None get_name() will be called to get the technical (ugly) name.
overlay : bool, default True
    Whether your layer will be an overlay (ticked with a check box in
    LayerControls) or a base layer (ticked with a radio button).
control: bool, default True
    Whether the layer will be included in LayerControls.
show: bool, default True
    Whether the layer will be shown on opening.
**kwargs
    Additional (possibly inherited) options. See
    https://leafletjs.com/reference.html#featuregroup

z
        {% macro script(this, kwargs) %}
            var {{ this.get_name() }} = L.featureGroup(
                {{ this.options|tojavascript }}
            );
        {% endmacro %}
        rK   rv   rw   rx   r;   c                    > [         TU ]  XX4S9  SU l        Ub  UOU R                  5       U l        [        S0 UD6U l        g )N)rK   rv   rw   rx   r   r1   )rS   r$   rB   rz   	tile_namer   options)r"   rK   rv   rw   rx   r;   rV   s         r#   r$   FeatureGroup.__init__   sA     	dWP#
!%!1t}}#-f-r&   )rB   r   r   )NTTT)r,   r-   r.   r/   rX   r   rQ   r   rZ   rr   r   r$   r0   r^   r_   s   @r#   r   r      se    0 	I #.sm. . 	.
 .  . .r&   r   c                   v   ^  \ rS rSrSr\" S5      r    SS\S\S\S\S\	4
U 4S	 jjjr
SS
 jrU 4S jrSrU =r$ )LayerControl   a6  
Creates a LayerControl object to be added on a folium map.

This object should be added to a Map object. Only Layer children
of Map are included in the layer control.

Note
----
The LayerControl should be added last to the map.
Otherwise, the LayerControl and/or the controlled layers may not appear.

Parameters
----------
position : str
      The position of the control (one of the map corners), can be
      'topleft', 'topright', 'bottomleft' or 'bottomright'
      default: 'topright'
collapsed : bool, default True
      If true the control will be collapsed into an icon and expanded on
      mouse hover or touch.
autoZIndex : bool, default True
      If true the control assigns zIndexes in increasing order to all of
      its layers so that the order is preserved when switching them on/off.
draggable: bool, default False
      By default the layer control has a fixed position. Set this argument
      to True to allow dragging the control around.
**kwargs
    Additional (possibly inherited) options. See
    https://leafletjs.com/reference.html#control-layers

a  
        {% macro script(this,kwargs) %}
            var {{ this.get_name() }}_layers = {
                base_layers : {
                    {%- for key, val in this.base_layers.items() %}
                    {{ key|tojson }} : {{val}},
                    {%- endfor %}
                },
                overlays :  {
                    {%- for key, val in this.overlays.items() %}
                    {{ key|tojson }} : {{val}},
                    {%- endfor %}
                },
            };
            let {{ this.get_name() }} = L.control.layers(
                {{ this.get_name() }}_layers.base_layers,
                {{ this.get_name() }}_layers.overlays,
                {{ this.options|tojavascript }}
            ).addTo({{this._parent.get_name()}});

            {%- if this.draggable %}
            new L.Draggable({{ this.get_name() }}.getContainer()).enable();
            {%- endif %}

        {% endmacro %}
        position	collapsed
autoZIndex	draggabler;   c                    > [         TU ]  5         SU l        [        SXUS.UD6U l        X@l        [        5       U l        [        5       U l        g )Nr   )r   r   r   r1   )	rS   r$   rB   r   r   r   r   base_layersoverlays)r"   r   r   r   r   r;   rV   s         r#   r$   LayerControl.__init__   sO     	#
# 
z
MS
 #2=-/:}r&   c                 @    [        5       U l        [        5       U l        g r   )r   r   r   rC   s    r#   resetLayerControl.reset  s    &=#r&   c                   > U R                  5         U R                  R                  R                  5        H  n[	        U[
        5      (       a  UR                  (       d  M+  UR                  nUR                  (       d  UR                  5       U R                  U'   Mg  UR                  5       U R                  U'   M     [        TU ]5  5         g)/Renders the HTML representation of the element.N)r   r   	_childrenvaluesrN   rt   rw   r{   rv   rz   r   r   rS   rR   )r"   r;   itemkeyrV   s       r#   rR   LayerControl.render  s    

LL**113DdE**$,,//C<<(,  %%)]]_c" 4 	r&   )rB   r   r   r   r   )toprightTTF)returnN)r,   r-   r.   r/   rX   r   rQ   rZ   rr   r   r$   r   rR   r0   r^   r_   s   @r#   r   r      sq    @ 	I> #== = 	=
 =  = ="& r&   r   c                   n   ^  \ rS rSrSr\" S5      r1 Skr     SS\S\S\S\	S	\S
\
4U 4S jjjrSrU =r$ )Iconi  a  
Creates an Icon object that will be rendered
using Leaflet.awesome-markers.

Parameters
----------
color : str, default 'blue'
    The color of the marker. You can use:

        ['red', 'blue', 'green', 'purple', 'orange', 'darkred',
         'lightred', 'beige', 'darkblue', 'darkgreen', 'cadetblue',
         'darkpurple', 'white', 'pink', 'lightblue', 'lightgreen',
         'gray', 'black', 'lightgray']

icon_color : str, default 'white'
    The color of the drawing on the marker. You can use colors above,
    or an html color code.
icon : str, default 'info-sign'
    The name of the marker sign.
    See Font-Awesome website to choose yours.
    Warning : depending on the icon you choose you may need to adapt
    the `prefix` as well.
angle : int, default 0
    The icon will be rotated by this amount of degrees.
prefix : str, default 'glyphicon'
    The prefix states the source of the icon. 'fa' for font-awesome or
    'glyphicon' for bootstrap 3.

https://github.com/lvoogdt/Leaflet.awesome-markers

z
        {% macro script(this, kwargs) %}
            var {{ this.get_name() }} = L.AwesomeMarkers.icon(
                {{ this.options|tojavascript }}
            );
        {% endmacro %}
        >   redbluegraypinkbeigeblackgreenwhiteorangepurpledarkreddarkbluelightred	cadetblue	darkgreen	lightblue	lightgray
darkpurple
lightgreencolor
icon_coloriconangleprefixr;   c           	         > [         TU ]  5         SU l        XR                  ;  a#  [        R
                  " SU R                   S3SS9  [        SUUUUSU 3S.UD6U l        g )	Nr   z)color argument of Icon should be one of: .   )
stacklevelz
fa-rotate-)marker_colorr   r   r   extra_classesr1   )rS   r$   rB   color_optionswarningswarnr   r   )r"   r   r   r   r   r   r;   rV   s          r#   r$   Icon.__init__^  sx     	
***MM;D<N<N;OqQ $ 
!&ug.
 
r&   )rB   r   )r   r   z	info-signr   	glyphicon)r,   r-   r.   r/   rX   r   rQ   r   rZ   intr   r$   r0   r^   r_   s   @r#   r   r     sv    @ 	IM0 !!

 
 	

 
 
  
 
r&   r   c                      ^  \ rS rSrSr\" S5      r " S S\5      r     SS\	\
\      S\S	\S4   S
\S\S4   S\	\\SS4      S\S\4U 4S jjjrS\4S jrU 4S jrU 4S jrSU 4S jjrSrU =r$ )Markerix  a  
Create a simple stock Leaflet marker on the map, with optional
popup text or Vincent visualization.

Parameters
----------
location: tuple or list
    Latitude and Longitude of Marker (Northing, Easting)
popup: string or folium.Popup, default None
    Label for the Marker; either an escaped HTML string to initialize
    folium.Popup or a folium.Popup instance.
tooltip: str or folium.Tooltip, default None
    Display a text when hovering over the object.
icon: Icon, CustomIcon or DivIcon, optional
    the Icon plugin to use to render the marker.
draggable: bool, default False
    Set to True to be able to drag the marker around the map.

Returns
-------
Marker names and HTML in obj.template_vars

Examples
--------
>>> Marker(location=[45.5, -122.3], popup="Portland, OR")
>>> Marker(location=[45.5, -122.3], popup=Popup("Portland, OR"))
# If the popup label has characters that need to be escaped in HTML
>>> Marker(
...     location=[45.5, -122.3],
...     popup=Popup("Mom & Pop Arrow Shop >>", parse_html=True),
... )
a  
        {% macro script(this, kwargs) %}
            var {{ this.get_name() }} = L.marker(
                {{ this.location|tojson }},
                {{ this.options|tojavascript }}
            ).addTo({{ this._parent.get_name() }});
        {% endmacro %}
        c                   T   ^  \ rS rSrSr\" S5      rSSS\\SS4   4U 4S	 jjr	S
r
U =r$ )Marker.SetIconi  z0Set the icon of a marker after both are created.z
            {% macro script(this, kwargs) %}
                {{ this.marker.get_name() }}.setIcon({{ this.icon.get_name() }});
            {% endmacro %}
        markerr   r   r2   r3   c                 H   > [         TU ]  5         SU l        Xl        X l        g )NSetIcon)rS   r$   rB   r   r   )r"   r   r   rV   s      r#   r$   Marker.SetIcon.__init__  s!     G"DJ KIr&   )rB   r   r   )r,   r-   r.   r/   rX   r   rQ   r	   r   r$   r0   r^   r_   s   @r#   r   r     s;    >
		"	*/lI0M*N	 	r&   r   NlocationpopupPopuptooltipTooltipr   r2   r3   r   r;   c                   > [         TU ]  5         SU l        Ub  [        U5      OS U l        [        SU=(       d    S U=(       d    S S.UD6U l        S U l        Ub  U R                  U5        Ub:  U R                  [        U[        5      (       a  UO[        [        U5      5      5        Ub;  U R                  [        U[        5      (       a  UO[        [        U5      5      5        g g )Nr   )r   autoPanr1   )rS   r$   rB   r   r   r   r   r   set_iconrP   rN   r   rZ   r   )r"   r   r   r   r   r   r;   rV   s          r#   r$   Marker.__init__  s     	
7?7K)(3QU# 
'41Bd
FL
 	MM$NNJue$<$<5%E
BSTNN%gw77WS\=R r&   r   c                 l    U R                   c   e[        [        U R                   U R                   /5      $ )ziComputes the bounds of the object itself.

Because a marker has only single coordinates, we repeat them.
)r   r
   r   rC   s    r#   _get_self_boundsMarker._get_self_bounds  s/    
 }}((($t}}dmm&DEEr&   c                    > U R                   c  [        U R                   S35      eU R                  (       a(  U R	                  U R                  X R                  S95        [        TU ]  5         g )Nz6 location must be assigned when added directly to map.)r   r   )r   
ValueErrorrB   r   rP   r   rS   rR   )r"   rV   s    r#   rR   Marker.render  sW    == ::,TU  99NN4<<t))<DEr&   c                 0   > [         TU ]  U5        Xl        g)zSet the icon for this MarkerN)rS   rP   r   )r"   r   rV   s     r#   r   Marker.set_icon  s    $	r&   c                    > SS K Jn  [        U[        UR                  UR
                  45      (       a  U R                  U5        U $ [        TU ]!  XU5        U $ )Nr   )	folium.featuresfeaturesrN   r   r2   r3   r   rS   rP   )r"   childrK   rL   r   rV   s        r#   rP   Marker.add_child  sO    *edH$7$79I9IJKKMM%   Ge51r&   )rB   r   r   r   )NNNNF)NN)r,   r-   r.   r/   rX   r   rQ   r   r   r   r   floatr	   rZ   r   rr   r   r$   r   r   rR   r   rP   r0   r^   r_   s   @r#   r   r   x  s    B 		I, * /3+//3?C8E?+ Wc4'( y#t+,	
 uT<:;<    4F"2 F
 r&   r   c                      ^  \ rS rSrSr\" S5      r      SS\\\	S4   S\
S\\\4   S\
S	\
S
\
S\4U 4S jjjrS rSrU =r$ )r   i  aH  Create a Popup instance that can be linked to a Layer.

Parameters
----------
html: string or Element
    Content of the Popup.
parse_html: bool, default False
    True if the popup is a template that needs to the rendered first.
max_width: int for pixels or text for percentages, default '100%'
    The maximal width of the popup.
show: bool, default False
    True renders the popup open on page load.
sticky: bool, default False
    True prevents map and other popup clicks from closing.
lazy: bool, default False
    True only loads the Popup content when clicking on the Marker.
aM  
        var {{this.get_name()}} = L.popup({{ this.options|tojavascript }});

        {% for name, element in this.html._children.items() %}
            {% if this.lazy %}
                {{ this._parent.get_name() }}.once('click', function() {
                    {{ this.get_name() }}.setContent($(`{{ element.render(**kwargs).replace('\n',' ') }}`)[0]);
                });
            {% else %}
                var {{ name }} = $(`{{ element.render(**kwargs).replace('\n',' ') }}`)[0];
                {{ this.get_name() }}.setContent({{ name }});
            {% endif %}
        {% endfor %}

        {{ this._parent.get_name() }}.bindPopup({{ this.get_name() }})
        {% if this.show %}.openPopup(){% endif %};

        {% for name, element in this.script._children.items() %}
            {{element.render()}}
        {% endfor %}
    Nhtml
parse_html	max_widthrx   stickylazyr;   c                 P  > [         T	U ]  5         SU l        [        5       U l        [        5       U l        [        5       U l        X R                  l        X R
                  l        X R                  l        U(       + n[        U[        5      (       a  U R
                  R                  U5        OB[        U[        5      (       a-  [        U5      nU R
                  R                  [        XS95        X@l        X`l        [        SUU(       d  U(       a  SOS U(       a  SOS S.UD6U l        g )Nr   )rO   F)r   	autoClosecloseOnClickr1   )rS   r$   rB   r   headerr   rO   r   rN   rP   rZ   r   r   rx   r   r   r   )
r"   r   r   r   rx   r   r   r;   rO   rV   s
            r#   r$   Popup.__init__  s     	
iI	i" 		"dG$$II%c""#D)DIIT 9:		# 
#ve4"(d
 	
r&   c           	      V   U R                   R                  5        H  u  p#UR                  " S0 UD6  M     U R                  5       n[	        U[
        5      (       d   S5       eUR                  R                  [        U R                  R                  XS95      U R                  5       S9  g)r   rG   rH   r   Nr1   )r   rn   rR   rM   rN   r   rO   rP   r   rQ   rz   )r"   r;   rK   r   rT   s        r#   rR   Popup.renderB  s    >>//1KDLL"6" 2 F
 
 	FE	F 
 	DNN))t)CD 	  	
r&   )rB   r   r   r   r   rO   rx   )NFz100%FFF)r,   r-   r.   r/   rX   r   rQ   r	   rZ   r   rr   r   r   r$   rR   r0   r^   r_   s   @r#   r   r     s    $ 	I4 +/ %+#
C$&'#
 #
 c?	#

 #
 #
 #
  #
 #
J
 
r&   r   c            	       ^   ^  \ rS rSrSr\" S5      r  S
S\S\\   S\	S\
4U 4S jjjrS	rU =r$ )r   iR  aB  
Create a tooltip that shows text when hovering over its parent object.

Parameters
----------
text: str
    String to display as a tooltip on the object. If the argument is of a
    different type it will be converted to str.
style: str, default None.
    HTML inline style properties like font and colors. Will be applied to
    a div with the text in it.
sticky: bool, default True
    Whether the tooltip should follow the mouse.
**kwargs
    These values will map directly to the Leaflet Options. More info
    available here: https://leafletjs.com/reference.html#tooltip

aQ  
        {% macro script(this, kwargs) %}
            {{ this._parent.get_name() }}.bindTooltip(
                `<div{% if this.style %} style={{ this.style|tojson }}{% endif %}>
                     {{ this.text }}
                 </div>`,
                {{ this.options|tojavascript }}
            );
        {% endmacro %}
        textstyler   r;   c                    > [         TU ]  5         SU l        [        U5      U l        UR                  SU05        [        S0 UD6U l        U(       a#  [        U[        5      (       d   S5       eX l	        g g )Nr   r   z8Pass a valid inline HTML style property string to style.r1   )
rS   r$   rB   rZ   r   r9   r   r   rN   r   )r"   r   r   r   r;   rV   s        r#   r$   Tooltip.__init__s  sw     	
I	x()#-f-s  JIJ  J r&   )rB   r   r   r   )NT)r,   r-   r.   r/   rX   r   rQ   rZ   r   rr   r   r$   r0   r^   r_   s   @r#   r   r   R  sU    & 		I   $	 } 	
   r&   r   c                      ^  \ rS rSrSr\" S5      r    SS\S\\	\
      S\\	\
      S\\	\
      S\\   4
U 4S	 jjjrS
rU =r$ )	FitBoundsi  a  Fit the map to contain a bounding box with the
maximum zoom level possible.

Parameters
----------
bounds: list of (latitude, longitude) points
    Bounding box specified as two points [southwest, northeast]
padding_top_left: (x, y) point, default None
    Padding in the top left corner. Useful if some elements in
    the corner, such as controls, might obscure objects you're zooming
    to.
padding_bottom_right: (x, y) point, default None
    Padding in the bottom right corner.
padding: (x, y) point, default None
    Equivalent to setting both top left and bottom right padding to
    the same value.
max_zoom: int, default None
    Maximum zoom to be used.
z
        {% macro script(this, kwargs) %}
            {{ this._parent.get_name() }}.fitBounds(
                {{ this.bounds|tojson }},
                {{ this.options|tojson }}
            );
        {% endmacro %}
        boundspadding_top_leftpadding_bottom_rightpaddingmax_zoomc                 ^   > [         TU ]  5         SU l        Xl        [	        UUUUS9U l        g )Nr   )r   r   r   r   )rS   r$   rB   r   r   r   )r"   r   r   r   r   r   rV   s         r#   r$   FitBounds.__init__  s4     	 
$-!5	
r&   )rB   r   r   )NNNN)r,   r-   r.   r/   rX   r   rQ   r   r   r   r   r   r$   r0   r^   r_   s   @r#   r   r     s    ( 		I 7;:>-1"&

 #8E?3
 'x7	

 (5/*
 3-
 
r&   r   c            	       b   ^  \ rS rSrSr\" S5      r    S
S\S\\   S\	S\	4U 4S jjjr
S	rU =r$ )FitOverlaysi  a  Fit the bounds of the maps to the enabled overlays.

Parameters
----------
padding: int, default 0
    Amount of padding in pixels applied in the corners.
max_zoom: int, optional
    The maximum possible zoom to use when fitting to the bounds.
fly: bool, default False
    Use a smoother, longer animation.
fit_on_map_load: bool, default True
    Apply the fit when initially loading the map.
a  
        {% macro script(this, kwargs) %}
        function customFlyToBounds() {
            let bounds = L.latLngBounds([]);
            {{ this._parent.get_name() }}.eachLayer(function(layer) {
                if (typeof layer.getBounds === 'function') {
                    bounds.extend(layer.getBounds());
                }
            });
            if (bounds.isValid()) {
                {{ this._parent.get_name() }}.{{ this.method }}(bounds, {{ this.options|tojavascript }});
            }
        }
        {{ this._parent.get_name() }}.on('overlayadd', customFlyToBounds);
        {%- if this.fit_on_map_load %}
        customFlyToBounds();
        {%- endif %}
        {% endmacro %}
    r   r   flyfit_on_map_loadc                 |   > [         TU ]  5         SU l        U(       a  SOSU l        X@l        [        X4US9U l        g )Nr  flyToBounds	fitBounds)r   r   )rS   r$   rB   methodr  r   r   )r"   r   r   r  r  rV   s        r#   r$   FitOverlays.__init__  s9     	"
'*m.#W,>Rr&   )rB   r  r  r   )r   NFT)r,   r-   r.   r/   rX   r   rQ   r   r   rr   r$   r0   r^   r_   s   @r#   r  r    sa     	I0 "& $SS 3-S 	S
 S Sr&   r  c                   ^   ^  \ rS rSrSr\" S5      r  S	S\S\\	\4   S\
4U 4S jjjrSrU =r$ )

CustomPanei  a"  
Creates a custom pane to hold map elements.

Behavior is as in https://leafletjs.com/examples/map-panes/

Parameters
----------
name: string
    Name of the custom pane. Other map elements can be added
    to the pane by specifying the 'pane' kwarg when constructing
    them.
z_index: int or string, default 625
    The z-index that will be associated with the pane, and will
    determine which map elements lie over/under it. The default
    (625) corresponds to between markers and tooltips. Default
    panes and z-indexes can be found at
    https://leafletjs.com/reference.html#map-pane
pointer_events: bool, default False
    Whether or not layers in the pane should interact with the
    cursor. Setting to False will prevent interfering with
    pointer events associated with lower layers.
a  
        {% macro script(this, kwargs) %}
            var {{ this.get_name() }} = {{ this._parent.get_name() }}.createPane(
                {{ this.name|tojson }});
            {{ this.get_name() }}.style.zIndex = {{ this.z_index|tojson }};
            {% if not this.pointer_events %}
                {{ this.get_name() }}.style.pointerEvents = 'none';
            {% endif %}
        {% endmacro %}
        rK   z_indexpointer_eventsc                 T   > [         TU ]  5         SU l        Xl        X l        X0l        g )NPane)rS   r$   rB   rK   r  r  )r"   rK   r  r  rV   s       r#   r$   CustomPane.__init__  s'     	
	,r&   )rB   rK   r  r  )iq  F)r,   r-   r.   r/   rX   r   rQ   rZ   r	   r   rr   r$   r0   r^   r_   s   @r#   r  r    sO    . 		I  $'$	
-
- sCx
- 	
- 
-r&   r  )0rX   r   collectionsr   r   typingr   r   r   r   r	   r
   branca.elementr   r   r   r   folium.elementsr   r   r   folium.templater   folium.utilitiesr   r   r   r   r   r   r   r   r   r   r2   r3   r5   ra   rt   r   r   r   r   r   r   r   r  r  r1   r&   r#   <module>r     s   
  0 N N > > O O $	 	 	  3#!L #!LDe D,'!G '!T..5 ..b^< ^BW
< W
tw\ wt]
L ]
@5l 5p0
 0
f0S, 0Sf/- /-r&   