ÿØÿà JFIF ÿþ >CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), default quality
ÿÛ C
Server IP : 172.67.171.101 / Your IP : 216.73.216.123 Web Server : Apache System : Linux server1.morocco-tours.com 3.10.0-1127.19.1.el7.x86_64 #1 SMP Tue Aug 25 17:23:54 UTC 2020 x86_64 User : zagoradraa ( 1005) PHP Version : 7.4.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /usr/share/doc/python-docs-2.7.5/html/library/ |
Upload File : |
| Current File : /usr/share/doc/python-docs-2.7.5/html/library/heapq.html |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>8.4. heapq — Heap queue algorithm — Python 2.7.5 documentation</title>
<link rel="stylesheet" href="../_static/default.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../',
VERSION: '2.7.5',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
};
</script>
<script type="text/javascript" src="../_static/jquery.js"></script>
<script type="text/javascript" src="../_static/underscore.js"></script>
<script type="text/javascript" src="../_static/doctools.js"></script>
<script type="text/javascript" src="../_static/sidebar.js"></script>
<link rel="search" type="application/opensearchdescription+xml"
title="Search within Python 2.7.5 documentation"
href="../_static/opensearch.xml"/>
<link rel="author" title="About these documents" href="../about.html" />
<link rel="copyright" title="Copyright" href="../copyright.html" />
<link rel="top" title="Python 2.7.5 documentation" href="../index.html" />
<link rel="up" title="8. Data Types" href="datatypes.html" />
<link rel="next" title="8.5. bisect — Array bisection algorithm" href="bisect.html" />
<link rel="prev" title="8.3. collections — High-performance container datatypes" href="collections.html" />
<link rel="shortcut icon" type="image/png" href="../_static/py.png" />
<script type="text/javascript" src="../_static/copybutton.js"></script>
</head>
<body>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="bisect.html" title="8.5. bisect — Array bisection algorithm"
accesskey="N">next</a> |</li>
<li class="right" >
<a href="collections.html" title="8.3. collections — High-performance container datatypes"
accesskey="P">previous</a> |</li>
<li><img src="../_static/py.png" alt=""
style="vertical-align: middle; margin-top: -1px"/></li>
<li><a href="http://www.python.org/">Python</a> »</li>
<li>
<a href="../index.html">Python 2.7.5 documentation</a> »
</li>
<li><a href="index.html" >The Python Standard Library</a> »</li>
<li><a href="datatypes.html" accesskey="U">8. Data Types</a> »</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body">
<div class="section" id="module-heapq">
<span id="heapq-heap-queue-algorithm"></span><h1>8.4. <a class="reference internal" href="#module-heapq" title="heapq: Heap queue algorithm (a.k.a. priority queue)."><tt class="xref py py-mod docutils literal"><span class="pre">heapq</span></tt></a> — Heap queue algorithm<a class="headerlink" href="#module-heapq" title="Permalink to this headline">¶</a></h1>
<p class="versionadded">
<span class="versionmodified">New in version 2.3.</span></p>
<p><strong>Source code:</strong> <a class="reference external" href="http://hg.python.org/cpython/file/2.7/Lib/heapq.py">Lib/heapq.py</a></p>
<hr class="docutils" />
<p>This module provides an implementation of the heap queue algorithm, also known
as the priority queue algorithm.</p>
<p>Heaps are binary trees for which every parent node has a value less than or
equal to any of its children. This implementation uses arrays for which
<tt class="docutils literal"><span class="pre">heap[k]</span> <span class="pre"><=</span> <span class="pre">heap[2*k+1]</span></tt> and <tt class="docutils literal"><span class="pre">heap[k]</span> <span class="pre"><=</span> <span class="pre">heap[2*k+2]</span></tt> for all <em>k</em>, counting
elements from zero. For the sake of comparison, non-existing elements are
considered to be infinite. The interesting property of a heap is that its
smallest element is always the root, <tt class="docutils literal"><span class="pre">heap[0]</span></tt>.</p>
<p>The API below differs from textbook heap algorithms in two aspects: (a) We use
zero-based indexing. This makes the relationship between the index for a node
and the indexes for its children slightly less obvious, but is more suitable
since Python uses zero-based indexing. (b) Our pop method returns the smallest
item, not the largest (called a “min heap” in textbooks; a “max heap” is more
common in texts because of its suitability for in-place sorting).</p>
<p>These two make it possible to view the heap as a regular Python list without
surprises: <tt class="docutils literal"><span class="pre">heap[0]</span></tt> is the smallest item, and <tt class="docutils literal"><span class="pre">heap.sort()</span></tt> maintains the
heap invariant!</p>
<p>To create a heap, use a list initialized to <tt class="docutils literal"><span class="pre">[]</span></tt>, or you can transform a
populated list into a heap via function <a class="reference internal" href="#heapq.heapify" title="heapq.heapify"><tt class="xref py py-func docutils literal"><span class="pre">heapify()</span></tt></a>.</p>
<p>The following functions are provided:</p>
<dl class="function">
<dt id="heapq.heappush">
<tt class="descclassname">heapq.</tt><tt class="descname">heappush</tt><big>(</big><em>heap</em>, <em>item</em><big>)</big><a class="headerlink" href="#heapq.heappush" title="Permalink to this definition">¶</a></dt>
<dd><p>Push the value <em>item</em> onto the <em>heap</em>, maintaining the heap invariant.</p>
</dd></dl>
<dl class="function">
<dt id="heapq.heappop">
<tt class="descclassname">heapq.</tt><tt class="descname">heappop</tt><big>(</big><em>heap</em><big>)</big><a class="headerlink" href="#heapq.heappop" title="Permalink to this definition">¶</a></dt>
<dd><p>Pop and return the smallest item from the <em>heap</em>, maintaining the heap
invariant. If the heap is empty, <a class="reference internal" href="exceptions.html#exceptions.IndexError" title="exceptions.IndexError"><tt class="xref py py-exc docutils literal"><span class="pre">IndexError</span></tt></a> is raised.</p>
</dd></dl>
<dl class="function">
<dt id="heapq.heappushpop">
<tt class="descclassname">heapq.</tt><tt class="descname">heappushpop</tt><big>(</big><em>heap</em>, <em>item</em><big>)</big><a class="headerlink" href="#heapq.heappushpop" title="Permalink to this definition">¶</a></dt>
<dd><p>Push <em>item</em> on the heap, then pop and return the smallest item from the
<em>heap</em>. The combined action runs more efficiently than <a class="reference internal" href="#heapq.heappush" title="heapq.heappush"><tt class="xref py py-func docutils literal"><span class="pre">heappush()</span></tt></a>
followed by a separate call to <a class="reference internal" href="#heapq.heappop" title="heapq.heappop"><tt class="xref py py-func docutils literal"><span class="pre">heappop()</span></tt></a>.</p>
<p class="versionadded">
<span class="versionmodified">New in version 2.6.</span></p>
</dd></dl>
<dl class="function">
<dt id="heapq.heapify">
<tt class="descclassname">heapq.</tt><tt class="descname">heapify</tt><big>(</big><em>x</em><big>)</big><a class="headerlink" href="#heapq.heapify" title="Permalink to this definition">¶</a></dt>
<dd><p>Transform list <em>x</em> into a heap, in-place, in linear time.</p>
</dd></dl>
<dl class="function">
<dt id="heapq.heapreplace">
<tt class="descclassname">heapq.</tt><tt class="descname">heapreplace</tt><big>(</big><em>heap</em>, <em>item</em><big>)</big><a class="headerlink" href="#heapq.heapreplace" title="Permalink to this definition">¶</a></dt>
<dd><p>Pop and return the smallest item from the <em>heap</em>, and also push the new <em>item</em>.
The heap size doesn’t change. If the heap is empty, <a class="reference internal" href="exceptions.html#exceptions.IndexError" title="exceptions.IndexError"><tt class="xref py py-exc docutils literal"><span class="pre">IndexError</span></tt></a> is raised.</p>
<p>This one step operation is more efficient than a <a class="reference internal" href="#heapq.heappop" title="heapq.heappop"><tt class="xref py py-func docutils literal"><span class="pre">heappop()</span></tt></a> followed by
<a class="reference internal" href="#heapq.heappush" title="heapq.heappush"><tt class="xref py py-func docutils literal"><span class="pre">heappush()</span></tt></a> and can be more appropriate when using a fixed-size heap.
The pop/push combination always returns an element from the heap and replaces
it with <em>item</em>.</p>
<p>The value returned may be larger than the <em>item</em> added. If that isn’t
desired, consider using <a class="reference internal" href="#heapq.heappushpop" title="heapq.heappushpop"><tt class="xref py py-func docutils literal"><span class="pre">heappushpop()</span></tt></a> instead. Its push/pop
combination returns the smaller of the two values, leaving the larger value
on the heap.</p>
</dd></dl>
<p>The module also offers three general purpose functions based on heaps.</p>
<dl class="function">
<dt id="heapq.merge">
<tt class="descclassname">heapq.</tt><tt class="descname">merge</tt><big>(</big><em>*iterables</em><big>)</big><a class="headerlink" href="#heapq.merge" title="Permalink to this definition">¶</a></dt>
<dd><p>Merge multiple sorted inputs into a single sorted output (for example, merge
timestamped entries from multiple log files). Returns an <a class="reference internal" href="../glossary.html#term-iterator"><em class="xref std std-term">iterator</em></a>
over the sorted values.</p>
<p>Similar to <tt class="docutils literal"><span class="pre">sorted(itertools.chain(*iterables))</span></tt> but returns an iterable, does
not pull the data into memory all at once, and assumes that each of the input
streams is already sorted (smallest to largest).</p>
<p class="versionadded">
<span class="versionmodified">New in version 2.6.</span></p>
</dd></dl>
<dl class="function">
<dt id="heapq.nlargest">
<tt class="descclassname">heapq.</tt><tt class="descname">nlargest</tt><big>(</big><em>n</em>, <em>iterable</em><span class="optional">[</span>, <em>key</em><span class="optional">]</span><big>)</big><a class="headerlink" href="#heapq.nlargest" title="Permalink to this definition">¶</a></dt>
<dd><p>Return a list with the <em>n</em> largest elements from the dataset defined by
<em>iterable</em>. <em>key</em>, if provided, specifies a function of one argument that is
used to extract a comparison key from each element in the iterable:
<tt class="docutils literal"><span class="pre">key=str.lower</span></tt> Equivalent to: <tt class="docutils literal"><span class="pre">sorted(iterable,</span> <span class="pre">key=key,</span>
<span class="pre">reverse=True)[:n]</span></tt></p>
<p class="versionadded">
<span class="versionmodified">New in version 2.4.</span></p>
<p class="versionchanged">
<span class="versionmodified">Changed in version 2.5: </span>Added the optional <em>key</em> argument.</p>
</dd></dl>
<dl class="function">
<dt id="heapq.nsmallest">
<tt class="descclassname">heapq.</tt><tt class="descname">nsmallest</tt><big>(</big><em>n</em>, <em>iterable</em><span class="optional">[</span>, <em>key</em><span class="optional">]</span><big>)</big><a class="headerlink" href="#heapq.nsmallest" title="Permalink to this definition">¶</a></dt>
<dd><p>Return a list with the <em>n</em> smallest elements from the dataset defined by
<em>iterable</em>. <em>key</em>, if provided, specifies a function of one argument that is
used to extract a comparison key from each element in the iterable:
<tt class="docutils literal"><span class="pre">key=str.lower</span></tt> Equivalent to: <tt class="docutils literal"><span class="pre">sorted(iterable,</span> <span class="pre">key=key)[:n]</span></tt></p>
<p class="versionadded">
<span class="versionmodified">New in version 2.4.</span></p>
<p class="versionchanged">
<span class="versionmodified">Changed in version 2.5: </span>Added the optional <em>key</em> argument.</p>
</dd></dl>
<p>The latter two functions perform best for smaller values of <em>n</em>. For larger
values, it is more efficient to use the <a class="reference internal" href="functions.html#sorted" title="sorted"><tt class="xref py py-func docutils literal"><span class="pre">sorted()</span></tt></a> function. Also, when
<tt class="docutils literal"><span class="pre">n==1</span></tt>, it is more efficient to use the built-in <a class="reference internal" href="functions.html#min" title="min"><tt class="xref py py-func docutils literal"><span class="pre">min()</span></tt></a> and <a class="reference internal" href="functions.html#max" title="max"><tt class="xref py py-func docutils literal"><span class="pre">max()</span></tt></a>
functions.</p>
<div class="section" id="basic-examples">
<h2>8.4.1. Basic Examples<a class="headerlink" href="#basic-examples" title="Permalink to this headline">¶</a></h2>
<p>A <a class="reference external" href="http://en.wikipedia.org/wiki/Heapsort">heapsort</a> can be implemented by
pushing all values onto a heap and then popping off the smallest values one at a
time:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">>>> </span><span class="k">def</span> <span class="nf">heapsort</span><span class="p">(</span><span class="n">iterable</span><span class="p">):</span>
<span class="gp">... </span> <span class="s">'Equivalent to sorted(iterable)'</span>
<span class="gp">... </span> <span class="n">h</span> <span class="o">=</span> <span class="p">[]</span>
<span class="gp">... </span> <span class="k">for</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">iterable</span><span class="p">:</span>
<span class="gp">... </span> <span class="n">heappush</span><span class="p">(</span><span class="n">h</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span>
<span class="gp">... </span> <span class="k">return</span> <span class="p">[</span><span class="n">heappop</span><span class="p">(</span><span class="n">h</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">h</span><span class="p">))]</span>
<span class="gp">...</span>
<span class="gp">>>> </span><span class="n">heapsort</span><span class="p">([</span><span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="mi">7</span><span class="p">,</span> <span class="mi">9</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">6</span><span class="p">,</span> <span class="mi">8</span><span class="p">,</span> <span class="mi">0</span><span class="p">])</span>
<span class="go">[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]</span>
</pre></div>
</div>
<p>Heap elements can be tuples. This is useful for assigning comparison values
(such as task priorities) alongside the main record being tracked:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">>>> </span><span class="n">h</span> <span class="o">=</span> <span class="p">[]</span>
<span class="gp">>>> </span><span class="n">heappush</span><span class="p">(</span><span class="n">h</span><span class="p">,</span> <span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="s">'write code'</span><span class="p">))</span>
<span class="gp">>>> </span><span class="n">heappush</span><span class="p">(</span><span class="n">h</span><span class="p">,</span> <span class="p">(</span><span class="mi">7</span><span class="p">,</span> <span class="s">'release product'</span><span class="p">))</span>
<span class="gp">>>> </span><span class="n">heappush</span><span class="p">(</span><span class="n">h</span><span class="p">,</span> <span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="s">'write spec'</span><span class="p">))</span>
<span class="gp">>>> </span><span class="n">heappush</span><span class="p">(</span><span class="n">h</span><span class="p">,</span> <span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="s">'create tests'</span><span class="p">))</span>
<span class="gp">>>> </span><span class="n">heappop</span><span class="p">(</span><span class="n">h</span><span class="p">)</span>
<span class="go">(1, 'write spec')</span>
</pre></div>
</div>
</div>
<div class="section" id="priority-queue-implementation-notes">
<h2>8.4.2. Priority Queue Implementation Notes<a class="headerlink" href="#priority-queue-implementation-notes" title="Permalink to this headline">¶</a></h2>
<p>A <a class="reference external" href="http://en.wikipedia.org/wiki/Priority_queue">priority queue</a> is common use
for a heap, and it presents several implementation challenges:</p>
<ul class="simple">
<li>Sort stability: how do you get two tasks with equal priorities to be returned
in the order they were originally added?</li>
<li>In the future with Python 3, tuple comparison breaks for (priority, task)
pairs if the priorities are equal and the tasks do not have a default
comparison order.</li>
<li>If the priority of a task changes, how do you move it to a new position in
the heap?</li>
<li>Or if a pending task needs to be deleted, how do you find it and remove it
from the queue?</li>
</ul>
<p>A solution to the first two challenges is to store entries as 3-element list
including the priority, an entry count, and the task. The entry count serves as
a tie-breaker so that two tasks with the same priority are returned in the order
they were added. And since no two entry counts are the same, the tuple
comparison will never attempt to directly compare two tasks.</p>
<p>The remaining challenges revolve around finding a pending task and making
changes to its priority or removing it entirely. Finding a task can be done
with a dictionary pointing to an entry in the queue.</p>
<p>Removing the entry or changing its priority is more difficult because it would
break the heap structure invariants. So, a possible solution is to mark the
existing entry as removed and add a new entry with the revised priority:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="n">pq</span> <span class="o">=</span> <span class="p">[]</span> <span class="c"># list of entries arranged in a heap</span>
<span class="n">entry_finder</span> <span class="o">=</span> <span class="p">{}</span> <span class="c"># mapping of tasks to entries</span>
<span class="n">REMOVED</span> <span class="o">=</span> <span class="s">'<removed-task>'</span> <span class="c"># placeholder for a removed task</span>
<span class="n">counter</span> <span class="o">=</span> <span class="n">itertools</span><span class="o">.</span><span class="n">count</span><span class="p">()</span> <span class="c"># unique sequence count</span>
<span class="k">def</span> <span class="nf">add_task</span><span class="p">(</span><span class="n">task</span><span class="p">,</span> <span class="n">priority</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
<span class="s">'Add a new task or update the priority of an existing task'</span>
<span class="k">if</span> <span class="n">task</span> <span class="ow">in</span> <span class="n">entry_finder</span><span class="p">:</span>
<span class="n">remove_task</span><span class="p">(</span><span class="n">task</span><span class="p">)</span>
<span class="n">count</span> <span class="o">=</span> <span class="nb">next</span><span class="p">(</span><span class="n">counter</span><span class="p">)</span>
<span class="n">entry</span> <span class="o">=</span> <span class="p">[</span><span class="n">priority</span><span class="p">,</span> <span class="n">count</span><span class="p">,</span> <span class="n">task</span><span class="p">]</span>
<span class="n">entry_finder</span><span class="p">[</span><span class="n">task</span><span class="p">]</span> <span class="o">=</span> <span class="n">entry</span>
<span class="n">heappush</span><span class="p">(</span><span class="n">pq</span><span class="p">,</span> <span class="n">entry</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">remove_task</span><span class="p">(</span><span class="n">task</span><span class="p">):</span>
<span class="s">'Mark an existing task as REMOVED. Raise KeyError if not found.'</span>
<span class="n">entry</span> <span class="o">=</span> <span class="n">entry_finder</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">task</span><span class="p">)</span>
<span class="n">entry</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">REMOVED</span>
<span class="k">def</span> <span class="nf">pop_task</span><span class="p">():</span>
<span class="s">'Remove and return the lowest priority task. Raise KeyError if empty.'</span>
<span class="k">while</span> <span class="n">pq</span><span class="p">:</span>
<span class="n">priority</span><span class="p">,</span> <span class="n">count</span><span class="p">,</span> <span class="n">task</span> <span class="o">=</span> <span class="n">heappop</span><span class="p">(</span><span class="n">pq</span><span class="p">)</span>
<span class="k">if</span> <span class="n">task</span> <span class="ow">is</span> <span class="ow">not</span> <span class="n">REMOVED</span><span class="p">:</span>
<span class="k">del</span> <span class="n">entry_finder</span><span class="p">[</span><span class="n">task</span><span class="p">]</span>
<span class="k">return</span> <span class="n">task</span>
<span class="k">raise</span> <span class="ne">KeyError</span><span class="p">(</span><span class="s">'pop from an empty priority queue'</span><span class="p">)</span>
</pre></div>
</div>
</div>
<div class="section" id="theory">
<h2>8.4.3. Theory<a class="headerlink" href="#theory" title="Permalink to this headline">¶</a></h2>
<p>Heaps are arrays for which <tt class="docutils literal"><span class="pre">a[k]</span> <span class="pre"><=</span> <span class="pre">a[2*k+1]</span></tt> and <tt class="docutils literal"><span class="pre">a[k]</span> <span class="pre"><=</span> <span class="pre">a[2*k+2]</span></tt> for all
<em>k</em>, counting elements from 0. For the sake of comparison, non-existing
elements are considered to be infinite. The interesting property of a heap is
that <tt class="docutils literal"><span class="pre">a[0]</span></tt> is always its smallest element.</p>
<p>The strange invariant above is meant to be an efficient memory representation
for a tournament. The numbers below are <em>k</em>, not <tt class="docutils literal"><span class="pre">a[k]</span></tt>:</p>
<div class="highlight-python"><pre> 0
1 2
3 4 5 6
7 8 9 10 11 12 13 14
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30</pre>
</div>
<p>In the tree above, each cell <em>k</em> is topping <tt class="docutils literal"><span class="pre">2*k+1</span></tt> and <tt class="docutils literal"><span class="pre">2*k+2</span></tt>. In an usual
binary tournament we see in sports, each cell is the winner over the two cells
it tops, and we can trace the winner down the tree to see all opponents s/he
had. However, in many computer applications of such tournaments, we do not need
to trace the history of a winner. To be more memory efficient, when a winner is
promoted, we try to replace it by something else at a lower level, and the rule
becomes that a cell and the two cells it tops contain three different items, but
the top cell “wins” over the two topped cells.</p>
<p>If this heap invariant is protected at all time, index 0 is clearly the overall
winner. The simplest algorithmic way to remove it and find the “next” winner is
to move some loser (let’s say cell 30 in the diagram above) into the 0 position,
and then percolate this new 0 down the tree, exchanging values, until the
invariant is re-established. This is clearly logarithmic on the total number of
items in the tree. By iterating over all items, you get an O(n log n) sort.</p>
<p>A nice feature of this sort is that you can efficiently insert new items while
the sort is going on, provided that the inserted items are not “better” than the
last 0’th element you extracted. This is especially useful in simulation
contexts, where the tree holds all incoming events, and the “win” condition
means the smallest scheduled time. When an event schedule other events for
execution, they are scheduled into the future, so they can easily go into the
heap. So, a heap is a good structure for implementing schedulers (this is what
I used for my MIDI sequencer :-).</p>
<p>Various structures for implementing schedulers have been extensively studied,
and heaps are good for this, as they are reasonably speedy, the speed is almost
constant, and the worst case is not much different than the average case.
However, there are other representations which are more efficient overall, yet
the worst cases might be terrible.</p>
<p>Heaps are also very useful in big disk sorts. You most probably all know that a
big sort implies producing “runs” (which are pre-sorted sequences, which size is
usually related to the amount of CPU memory), followed by a merging passes for
these runs, which merging is often very cleverly organised <a class="footnote-reference" href="#id2" id="id1">[1]</a>. It is very
important that the initial sort produces the longest runs possible. Tournaments
are a good way to that. If, using all the memory available to hold a
tournament, you replace and percolate items that happen to fit the current run,
you’ll produce runs which are twice the size of the memory for random input, and
much better for input fuzzily ordered.</p>
<p>Moreover, if you output the 0’th item on disk and get an input which may not fit
in the current tournament (because the value “wins” over the last output value),
it cannot fit in the heap, so the size of the heap decreases. The freed memory
could be cleverly reused immediately for progressively building a second heap,
which grows at exactly the same rate the first heap is melting. When the first
heap completely vanishes, you switch heaps and start a new run. Clever and
quite effective!</p>
<p>In a word, heaps are useful memory structures to know. I use them in a few
applications, and I think it is good to keep a ‘heap’ module around. :-)</p>
<p class="rubric">Footnotes</p>
<table class="docutils footnote" frame="void" id="id2" rules="none">
<colgroup><col class="label" /><col /></colgroup>
<tbody valign="top">
<tr><td class="label"><a class="fn-backref" href="#id1">[1]</a></td><td>The disk balancing algorithms which are current, nowadays, are more annoying
than clever, and this is a consequence of the seeking capabilities of the disks.
On devices which cannot seek, like big tape drives, the story was quite
different, and one had to be very clever to ensure (far in advance) that each
tape movement will be the most effective possible (that is, will best
participate at “progressing” the merge). Some tapes were even able to read
backwards, and this was also used to avoid the rewinding time. Believe me, real
good tape sorts were quite spectacular to watch! From all times, sorting has
always been a Great Art! :-)</td></tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<div class="sphinxsidebar">
<div class="sphinxsidebarwrapper">
<h3><a href="../contents.html">Table Of Contents</a></h3>
<ul>
<li><a class="reference internal" href="#">8.4. <tt class="docutils literal"><span class="pre">heapq</span></tt> — Heap queue algorithm</a><ul>
<li><a class="reference internal" href="#basic-examples">8.4.1. Basic Examples</a></li>
<li><a class="reference internal" href="#priority-queue-implementation-notes">8.4.2. Priority Queue Implementation Notes</a></li>
<li><a class="reference internal" href="#theory">8.4.3. Theory</a></li>
</ul>
</li>
</ul>
<h4>Previous topic</h4>
<p class="topless"><a href="collections.html"
title="previous chapter">8.3. <tt class="docutils literal"><span class="pre">collections</span></tt> — High-performance container datatypes</a></p>
<h4>Next topic</h4>
<p class="topless"><a href="bisect.html"
title="next chapter">8.5. <tt class="docutils literal"><span class="pre">bisect</span></tt> — Array bisection algorithm</a></p>
<h3>This Page</h3>
<ul class="this-page-menu">
<li><a href="../bugs.html">Report a Bug</a></li>
<li><a href="../_sources/library/heapq.txt"
rel="nofollow">Show Source</a></li>
</ul>
<div id="searchbox" style="display: none">
<h3>Quick search</h3>
<form class="search" action="../search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Go" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
<p class="searchtip" style="font-size: 90%">
Enter search terms or a module, class or function name.
</p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="bisect.html" title="8.5. bisect — Array bisection algorithm"
>next</a> |</li>
<li class="right" >
<a href="collections.html" title="8.3. collections — High-performance container datatypes"
>previous</a> |</li>
<li><img src="../_static/py.png" alt=""
style="vertical-align: middle; margin-top: -1px"/></li>
<li><a href="http://www.python.org/">Python</a> »</li>
<li>
<a href="../index.html">Python 2.7.5 documentation</a> »
</li>
<li><a href="index.html" >The Python Standard Library</a> »</li>
<li><a href="datatypes.html" >8. Data Types</a> »</li>
</ul>
</div>
<div class="footer">
© <a href="../copyright.html">Copyright</a> 1990-2019, Python Software Foundation.
<br />
The Python Software Foundation is a non-profit corporation.
<a href="http://www.python.org/psf/donations/">Please donate.</a>
<br />
Last updated on Jul 03, 2019.
<a href="../bugs.html">Found a bug</a>?
<br />
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
</div>
</body>
</html>
| N4m3 |
5!z3 |
L45t M0d!f!3d |
0wn3r / Gr0up |
P3Rm!55!0n5 |
0pt!0n5 |
| .. |
-- |
October 23 2020 09:20:37 |
root / root |
0755 |
|
| | | | | |
| 2to3.html |
49.274 KB |
July 03 2019 16:47:49 |
root / root |
0644 |
|
| __builtin__.html |
10.261 KB |
July 03 2019 16:47:49 |
root / root |
0644 |
|
| __future__.html |
13.794 KB |
July 03 2019 16:47:49 |
root / root |
0644 |
|
| __main__.html |
7.055 KB |
July 03 2019 16:47:49 |
root / root |
0644 |
|
| _winreg.html |
59.208 KB |
July 03 2019 16:47:49 |
root / root |
0644 |
|
| abc.html |
23.898 KB |
July 03 2019 16:47:50 |
root / root |
0644 |
|
| aepack.html |
13.16 KB |
July 03 2019 16:47:50 |
root / root |
0644 |
|
| aetools.html |
14.914 KB |
July 03 2019 16:47:50 |
root / root |
0644 |
|
| aetypes.html |
18.882 KB |
July 03 2019 16:47:50 |
root / root |
0644 |
|
| aifc.html |
22.404 KB |
July 03 2019 16:47:50 |
root / root |
0644 |
|
| al.html |
17.341 KB |
July 03 2019 16:47:50 |
root / root |
0644 |
|
| allos.html |
33.725 KB |
July 03 2019 16:47:50 |
root / root |
0644 |
|
| anydbm.html |
16.33 KB |
July 03 2019 16:47:50 |
root / root |
0644 |
|
| archiving.html |
9.263 KB |
July 03 2019 16:47:50 |
root / root |
0644 |
|
| argparse.html |
237.615 KB |
July 03 2019 16:47:50 |
root / root |
0644 |
|
| array.html |
29.295 KB |
July 03 2019 16:47:50 |
root / root |
0644 |
|
| ast.html |
34.98 KB |
July 03 2019 16:47:51 |
root / root |
0644 |
|
| asynchat.html |
31.434 KB |
July 03 2019 16:47:51 |
root / root |
0644 |
|
| asyncore.html |
36.513 KB |
July 03 2019 16:47:51 |
root / root |
0644 |
|
| atexit.html |
16.803 KB |
July 03 2019 16:47:51 |
root / root |
0644 |
|
| audioop.html |
31.356 KB |
July 03 2019 16:47:51 |
root / root |
0644 |
|
| autogil.html |
8.186 KB |
July 03 2019 16:47:51 |
root / root |
0644 |
|
| base64.html |
19.669 KB |
July 03 2019 16:47:51 |
root / root |
0644 |
|
| basehttpserver.html |
34.039 KB |
July 03 2019 16:47:51 |
root / root |
0644 |
|
| bastion.html |
11.04 KB |
July 03 2019 16:47:51 |
root / root |
0644 |
|
| bdb.html |
36.682 KB |
July 03 2019 16:47:51 |
root / root |
0644 |
|
| binascii.html |
20.665 KB |
July 03 2019 16:47:51 |
root / root |
0644 |
|
| binhex.html |
10.577 KB |
July 03 2019 16:47:51 |
root / root |
0644 |
|
| bisect.html |
23.236 KB |
July 03 2019 16:47:51 |
root / root |
0644 |
|
| bsddb.html |
26.433 KB |
July 03 2019 16:47:51 |
root / root |
0644 |
|
| bz2.html |
26.082 KB |
July 03 2019 16:47:51 |
root / root |
0644 |
|
| calendar.html |
37.788 KB |
July 03 2019 16:47:51 |
root / root |
0644 |
|
| carbon.html |
48.944 KB |
July 03 2019 16:47:51 |
root / root |
0644 |
|
| cd.html |
27.96 KB |
July 03 2019 16:47:52 |
root / root |
0644 |
|
| cgi.html |
49.924 KB |
July 03 2019 16:47:52 |
root / root |
0644 |
|
| cgihttpserver.html |
13.099 KB |
July 03 2019 16:47:52 |
root / root |
0644 |
|
| cgitb.html |
11.411 KB |
July 03 2019 16:47:52 |
root / root |
0644 |
|
| chunk.html |
14.664 KB |
July 03 2019 16:47:52 |
root / root |
0644 |
|
| cmath.html |
25.632 KB |
July 03 2019 16:47:52 |
root / root |
0644 |
|
| cmd.html |
26.095 KB |
July 03 2019 16:47:52 |
root / root |
0644 |
|
| code.html |
24.577 KB |
July 03 2019 16:47:52 |
root / root |
0644 |
|
| codecs.html |
100.638 KB |
July 03 2019 16:47:52 |
root / root |
0644 |
|
| codeop.html |
14.841 KB |
July 03 2019 16:47:52 |
root / root |
0644 |
|
| collections.html |
133.964 KB |
July 03 2019 16:47:53 |
root / root |
0644 |
|
| colorpicker.html |
7.523 KB |
July 03 2019 16:47:53 |
root / root |
0644 |
|
| colorsys.html |
11.037 KB |
July 03 2019 16:47:53 |
root / root |
0644 |
|
| commands.html |
14.361 KB |
July 03 2019 16:47:53 |
root / root |
0644 |
|
| compileall.html |
16.827 KB |
July 03 2019 16:47:53 |
root / root |
0644 |
|
| compiler.html |
67.75 KB |
July 03 2019 16:47:53 |
root / root |
0644 |
|
| configparser.html |
62.131 KB |
July 03 2019 16:47:53 |
root / root |
0644 |
|
| constants.html |
12.834 KB |
July 03 2019 16:47:53 |
root / root |
0644 |
|
| contextlib.html |
19.388 KB |
July 03 2019 16:47:53 |
root / root |
0644 |
|
| cookie.html |
39.068 KB |
July 03 2019 16:47:53 |
root / root |
0644 |
|
| cookielib.html |
83.822 KB |
July 03 2019 16:47:53 |
root / root |
0644 |
|
| copy.html |
12.189 KB |
July 03 2019 16:47:53 |
root / root |
0644 |
|
| copy_reg.html |
13.765 KB |
July 03 2019 16:47:53 |
root / root |
0644 |
|
| crypt.html |
10.041 KB |
July 03 2019 16:47:53 |
root / root |
0644 |
|
| crypto.html |
7.591 KB |
July 03 2019 16:47:53 |
root / root |
0644 |
|
| csv.html |
67.371 KB |
July 03 2019 16:47:54 |
root / root |
0644 |
|
| ctypes.html |
238.781 KB |
July 03 2019 16:47:54 |
root / root |
0644 |
|
| curses.ascii.html |
22.288 KB |
July 03 2019 16:47:55 |
root / root |
0644 |
|
| curses.html |
146.633 KB |
July 03 2019 16:47:55 |
root / root |
0644 |
|
| curses.panel.html |
14.388 KB |
July 03 2019 16:47:55 |
root / root |
0644 |
|
| custominterp.html |
7.624 KB |
July 03 2019 16:47:55 |
root / root |
0644 |
|
| datatypes.html |
16.845 KB |
July 03 2019 16:47:55 |
root / root |
0644 |
|
| datetime.html |
226.595 KB |
July 03 2019 16:47:55 |
root / root |
0644 |
|
| dbhash.html |
15.482 KB |
July 03 2019 16:47:55 |
root / root |
0644 |
|
| dbm.html |
12.068 KB |
July 03 2019 16:47:55 |
root / root |
0644 |
|
| debug.html |
10.151 KB |
July 03 2019 16:47:55 |
root / root |
0644 |
|
| decimal.html |
194.439 KB |
July 03 2019 16:47:56 |
root / root |
0644 |
|
| development.html |
14.168 KB |
July 03 2019 16:47:56 |
root / root |
0644 |
|
| difflib.html |
84.829 KB |
July 03 2019 16:47:56 |
root / root |
0644 |
|
| dircache.html |
11.407 KB |
July 03 2019 16:47:56 |
root / root |
0644 |
|
| dis.html |
69.951 KB |
July 03 2019 16:47:56 |
root / root |
0644 |
|
| distutils.html |
8.055 KB |
July 03 2019 16:47:56 |
root / root |
0644 |
|
| dl.html |
16.327 KB |
July 03 2019 16:47:56 |
root / root |
0644 |
|
| doctest.html |
165.542 KB |
July 03 2019 16:47:57 |
root / root |
0644 |
|
| docxmlrpcserver.html |
16.432 KB |
July 03 2019 16:47:57 |
root / root |
0644 |
|
| dumbdbm.html |
14.021 KB |
July 03 2019 16:47:57 |
root / root |
0644 |
|
| dummy_thread.html |
9.432 KB |
July 03 2019 16:47:57 |
root / root |
0644 |
|
| dummy_threading.html |
8.368 KB |
July 03 2019 16:47:57 |
root / root |
0644 |
|
| easydialogs.html |
30.546 KB |
July 03 2019 16:47:57 |
root / root |
0644 |
|
| email-examples.html |
45.654 KB |
July 03 2019 16:47:57 |
root / root |
0644 |
|
| email.charset.html |
26.804 KB |
July 03 2019 16:47:57 |
root / root |
0644 |
|
| email.encoders.html |
11.856 KB |
July 03 2019 16:47:57 |
root / root |
0644 |
|
| email.errors.html |
15.767 KB |
July 03 2019 16:47:57 |
root / root |
0644 |
|
| email.generator.html |
20.771 KB |
July 03 2019 16:47:57 |
root / root |
0644 |
|
| email.header.html |
26.922 KB |
July 03 2019 16:47:57 |
root / root |
0644 |
|
| email.html |
44.235 KB |
July 03 2019 16:47:57 |
root / root |
0644 |
|
| email.iterators.html |
11.521 KB |
July 03 2019 16:47:57 |
root / root |
0644 |
|
| email.message.html |
63.156 KB |
July 03 2019 16:47:57 |
root / root |
0644 |
|
| email.mime.html |
27.928 KB |
July 03 2019 16:47:57 |
root / root |
0644 |
|
| email.parser.html |
30.452 KB |
July 03 2019 16:47:58 |
root / root |
0644 |
|
| email.util.html |
24.461 KB |
July 03 2019 16:47:58 |
root / root |
0644 |
|
| errno.html |
37.994 KB |
July 03 2019 16:47:58 |
root / root |
0644 |
|
| exceptions.html |
56.126 KB |
July 03 2019 16:47:58 |
root / root |
0644 |
|
| fcntl.html |
22.673 KB |
July 03 2019 16:47:58 |
root / root |
0644 |
|
| filecmp.html |
22.299 KB |
July 03 2019 16:47:58 |
root / root |
0644 |
|
| fileformats.html |
9.136 KB |
July 03 2019 16:47:58 |
root / root |
0644 |
|
| fileinput.html |
24.278 KB |
July 03 2019 16:47:58 |
root / root |
0644 |
|
| filesys.html |
10.203 KB |
July 03 2019 16:47:58 |
root / root |
0644 |
|
| fl.html |
49.923 KB |
July 03 2019 16:47:58 |
root / root |
0644 |
|
| fm.html |
11.905 KB |
July 03 2019 16:47:58 |
root / root |
0644 |
|
| fnmatch.html |
14.577 KB |
July 03 2019 16:47:58 |
root / root |
0644 |
|
| formatter.html |
34.061 KB |
July 03 2019 16:47:58 |
root / root |
0644 |
|
| fpectl.html |
16.008 KB |
July 03 2019 16:47:58 |
root / root |
0644 |
|
| fpformat.html |
10.587 KB |
July 03 2019 16:47:58 |
root / root |
0644 |
|
| fractions.html |
22.608 KB |
July 03 2019 16:47:59 |
root / root |
0644 |
|
| framework.html |
33.345 KB |
July 03 2019 16:47:59 |
root / root |
0644 |
|
| frameworks.html |
7.143 KB |
July 03 2019 16:47:59 |
root / root |
0644 |
|
| ftplib.html |
43.989 KB |
July 03 2019 16:47:59 |
root / root |
0644 |
|
| functions.html |
183.145 KB |
July 03 2019 16:47:59 |
root / root |
0644 |
|
| functools.html |
27.169 KB |
July 03 2019 16:47:59 |
root / root |
0644 |
|
| future_builtins.html |
13.04 KB |
July 03 2019 16:47:59 |
root / root |
0644 |
|
| gc.html |
25.75 KB |
July 03 2019 16:47:59 |
root / root |
0644 |
|
| gdbm.html |
15.965 KB |
July 03 2019 16:47:59 |
root / root |
0644 |
|
| gensuitemodule.html |
11.513 KB |
July 03 2019 16:47:59 |
root / root |
0644 |
|
| getopt.html |
23.662 KB |
July 03 2019 16:47:59 |
root / root |
0644 |
|
| getpass.html |
10.652 KB |
July 03 2019 16:47:59 |
root / root |
0644 |
|
| gettext.html |
78.757 KB |
July 03 2019 16:48:00 |
root / root |
0644 |
|
| gl.html |
22.094 KB |
July 03 2019 16:48:00 |
root / root |
0644 |
|
| glob.html |
13.26 KB |
July 03 2019 16:48:00 |
root / root |
0644 |
|
| grp.html |
10.494 KB |
July 03 2019 16:48:00 |
root / root |
0644 |
|
| gzip.html |
18.985 KB |
July 03 2019 16:48:00 |
root / root |
0644 |
|
| hashlib.html |
18.198 KB |
July 03 2019 16:48:00 |
root / root |
0644 |
|
| heapq.html |
31.61 KB |
July 03 2019 16:48:00 |
root / root |
0644 |
|
| hmac.html |
10.464 KB |
July 03 2019 16:48:00 |
root / root |
0644 |
|
| hotshot.html |
18.649 KB |
July 03 2019 16:48:00 |
root / root |
0644 |
|
| htmllib.html |
25.315 KB |
July 03 2019 16:48:00 |
root / root |
0644 |
|
| htmlparser.html |
39.114 KB |
July 03 2019 16:48:00 |
root / root |
0644 |
|
| httplib.html |
62.95 KB |
July 03 2019 16:48:00 |
root / root |
0644 |
|
| i18n.html |
9.523 KB |
July 03 2019 16:48:00 |
root / root |
0644 |
|
| ic.html |
17.169 KB |
July 03 2019 16:48:00 |
root / root |
0644 |
|
| idle.html |
20.896 KB |
July 03 2019 16:48:00 |
root / root |
0644 |
|
| imageop.html |
14.765 KB |
July 03 2019 16:48:00 |
root / root |
0644 |
|
| imaplib.html |
51.986 KB |
July 03 2019 16:48:01 |
root / root |
0644 |
|
| imgfile.html |
11.712 KB |
July 03 2019 16:48:01 |
root / root |
0644 |
|
| imghdr.html |
11.297 KB |
July 03 2019 16:48:01 |
root / root |
0644 |
|
| imp.html |
34.344 KB |
July 03 2019 16:48:01 |
root / root |
0644 |
|
| importlib.html |
8.258 KB |
July 03 2019 16:48:01 |
root / root |
0644 |
|
| imputil.html |
31.808 KB |
July 03 2019 16:48:01 |
root / root |
0644 |
|
| index.html |
72.778 KB |
July 03 2019 16:48:01 |
root / root |
0644 |
|
| inspect.html |
50.705 KB |
July 03 2019 16:48:01 |
root / root |
0644 |
|
| internet.html |
24.872 KB |
July 03 2019 16:48:01 |
root / root |
0644 |
|
| intro.html |
8.935 KB |
July 03 2019 16:48:01 |
root / root |
0644 |
|
| io.html |
98.13 KB |
July 03 2019 16:48:02 |
root / root |
0644 |
|
| ipc.html |
13.405 KB |
July 03 2019 16:48:02 |
root / root |
0644 |
|
| itertools.html |
115.905 KB |
July 03 2019 16:48:02 |
root / root |
0644 |
|
| jpeg.html |
12.743 KB |
July 03 2019 16:48:02 |
root / root |
0644 |
|
| json.html |
67.037 KB |
July 03 2019 16:48:02 |
root / root |
0644 |
|
| keyword.html |
7.677 KB |
July 03 2019 16:48:02 |
root / root |
0644 |
|
| language.html |
11.027 KB |
July 03 2019 16:48:02 |
root / root |
0644 |
|
| linecache.html |
10.591 KB |
July 03 2019 16:48:02 |
root / root |
0644 |
|
| locale.html |
55.137 KB |
July 03 2019 16:48:02 |
root / root |
0644 |
|
| logging.config.html |
63.355 KB |
July 03 2019 16:48:03 |
root / root |
0644 |
|
| logging.handlers.html |
69.645 KB |
July 03 2019 16:48:03 |
root / root |
0644 |
|
| logging.html |
95.645 KB |
July 03 2019 16:48:03 |
root / root |
0644 |
|
| mac.html |
21.787 KB |
July 03 2019 16:48:03 |
root / root |
0644 |
|
| macos.html |
14.758 KB |
July 03 2019 16:48:03 |
root / root |
0644 |
|
| macosa.html |
12.959 KB |
July 03 2019 16:48:03 |
root / root |
0644 |
|
| macostools.html |
15.516 KB |
July 03 2019 16:48:03 |
root / root |
0644 |
|
| macpath.html |
7.764 KB |
July 03 2019 16:48:03 |
root / root |
0644 |
|
| mailbox.html |
156.753 KB |
July 03 2019 16:48:03 |
root / root |
0644 |
|
| mailcap.html |
13.215 KB |
July 03 2019 16:48:03 |
root / root |
0644 |
|
| markup.html |
18.772 KB |
July 03 2019 16:48:04 |
root / root |
0644 |
|
| marshal.html |
17.977 KB |
July 03 2019 16:48:04 |
root / root |
0644 |
|
| math.html |
39.242 KB |
July 03 2019 16:48:04 |
root / root |
0644 |
|
| md5.html |
13.968 KB |
July 03 2019 16:48:04 |
root / root |
0644 |
|
| mhlib.html |
21.537 KB |
July 03 2019 16:48:04 |
root / root |
0644 |
|
| mimetools.html |
19.251 KB |
July 03 2019 16:48:04 |
root / root |
0644 |
|
| mimetypes.html |
28.39 KB |
July 03 2019 16:48:04 |
root / root |
0644 |
|
| mimewriter.html |
15.016 KB |
July 03 2019 16:48:04 |
root / root |
0644 |
|
| mimify.html |
13.361 KB |
July 03 2019 16:48:04 |
root / root |
0644 |
|
| miniaeframe.html |
12.199 KB |
July 03 2019 16:48:04 |
root / root |
0644 |
|
| misc.html |
6.868 KB |
July 03 2019 16:48:04 |
root / root |
0644 |
|
| mm.html |
9.032 KB |
July 03 2019 16:48:04 |
root / root |
0644 |
|
| mmap.html |
28.364 KB |
July 03 2019 16:48:04 |
root / root |
0644 |
|
| modulefinder.html |
15.313 KB |
July 03 2019 16:48:04 |
root / root |
0644 |
|
| modules.html |
8.456 KB |
July 03 2019 16:48:04 |
root / root |
0644 |
|
| msilib.html |
52.431 KB |
July 03 2019 16:48:04 |
root / root |
0644 |
|
| msvcrt.html |
19.372 KB |
July 03 2019 16:48:04 |
root / root |
0644 |
|
| multifile.html |
24.297 KB |
July 03 2019 16:48:04 |
root / root |
0644 |
|
| multiprocessing.html |
365.706 KB |
July 03 2019 16:48:05 |
root / root |
0644 |
|
| mutex.html |
11.231 KB |
July 03 2019 16:48:05 |
root / root |
0644 |
|
| netdata.html |
16.983 KB |
July 03 2019 16:48:05 |
root / root |
0644 |
|
| netrc.html |
12.305 KB |
July 03 2019 16:48:05 |
root / root |
0644 |
|
| new.html |
12.122 KB |
July 03 2019 16:48:05 |
root / root |
0644 |
|
| nis.html |
10.636 KB |
July 03 2019 16:48:05 |
root / root |
0644 |
|
| nntplib.html |
41.919 KB |
July 03 2019 16:48:05 |
root / root |
0644 |
|
| numbers.html |
37.748 KB |
July 03 2019 16:48:05 |
root / root |
0644 |
|
| numeric.html |
13.553 KB |
July 03 2019 16:48:05 |
root / root |
0644 |
|
| operator.html |
82 KB |
July 03 2019 16:48:06 |
root / root |
0644 |
|
| optparse.html |
222.556 KB |
July 03 2019 16:48:06 |
root / root |
0644 |
|
| os.html |
214.245 KB |
July 03 2019 16:48:07 |
root / root |
0644 |
|
| os.path.html |
38.341 KB |
July 03 2019 16:48:07 |
root / root |
0644 |
|
| ossaudiodev.html |
41.503 KB |
July 03 2019 16:48:07 |
root / root |
0644 |
|
| othergui.html |
9.084 KB |
July 03 2019 16:48:07 |
root / root |
0644 |
|
| parser.html |
39.363 KB |
July 03 2019 16:48:07 |
root / root |
0644 |
|
| pdb.html |
33.961 KB |
July 03 2019 16:48:07 |
root / root |
0644 |
|
| persistence.html |
14.865 KB |
July 03 2019 16:48:07 |
root / root |
0644 |
|
| pickle.html |
102.271 KB |
July 03 2019 16:48:07 |
root / root |
0644 |
|
| pickletools.html |
10.631 KB |
July 03 2019 16:48:07 |
root / root |
0644 |
|
| pipes.html |
18.01 KB |
July 03 2019 16:48:08 |
root / root |
0644 |
|
| pkgutil.html |
25.107 KB |
July 03 2019 16:48:08 |
root / root |
0644 |
|
| platform.html |
28.367 KB |
July 03 2019 16:48:08 |
root / root |
0644 |
|
| plistlib.html |
17.028 KB |
July 03 2019 16:48:08 |
root / root |
0644 |
|
| popen2.html |
25.431 KB |
July 03 2019 16:48:08 |
root / root |
0644 |
|
| poplib.html |
22.321 KB |
July 03 2019 16:48:08 |
root / root |
0644 |
|
| posix.html |
14.413 KB |
July 03 2019 16:48:08 |
root / root |
0644 |
|
| posixfile.html |
19.763 KB |
July 03 2019 16:48:08 |
root / root |
0644 |
|
| pprint.html |
29.922 KB |
July 03 2019 16:48:08 |
root / root |
0644 |
|
| profile.html |
63.556 KB |
July 03 2019 16:48:08 |
root / root |
0644 |
|
| pty.html |
9.478 KB |
July 03 2019 16:48:08 |
root / root |
0644 |
|
| pwd.html |
11.428 KB |
July 03 2019 16:48:08 |
root / root |
0644 |
|
| py_compile.html |
11.116 KB |
July 03 2019 16:48:08 |
root / root |
0644 |
|
| pyclbr.html |
14.707 KB |
July 03 2019 16:48:08 |
root / root |
0644 |
|
| pydoc.html |
11.484 KB |
July 03 2019 16:48:08 |
root / root |
0644 |
|
| pyexpat.html |
71.528 KB |
July 03 2019 16:48:08 |
root / root |
0644 |
|
| python.html |
12.274 KB |
July 03 2019 16:48:09 |
root / root |
0644 |
|
| queue.html |
24.22 KB |
July 03 2019 16:48:09 |
root / root |
0644 |
|
| quopri.html |
11.896 KB |
July 03 2019 16:48:09 |
root / root |
0644 |
|
| random.html |
37.835 KB |
July 03 2019 16:48:09 |
root / root |
0644 |
|
| re.html |
134.742 KB |
July 03 2019 16:48:09 |
root / root |
0644 |
|
| readline.html |
28.24 KB |
July 03 2019 16:48:09 |
root / root |
0644 |
|
| repr.html |
20.427 KB |
July 03 2019 16:48:09 |
root / root |
0644 |
|
| resource.html |
26.483 KB |
July 03 2019 16:48:09 |
root / root |
0644 |
|
| restricted.html |
11.647 KB |
July 03 2019 16:48:09 |
root / root |
0644 |
|
| rexec.html |
37.41 KB |
July 03 2019 16:48:09 |
root / root |
0644 |
|
| rfc822.html |
42.22 KB |
July 03 2019 16:48:09 |
root / root |
0644 |
|
| rlcompleter.html |
13.506 KB |
July 03 2019 16:48:09 |
root / root |
0644 |
|
| robotparser.html |
12.268 KB |
July 03 2019 16:48:10 |
root / root |
0644 |
|
| runpy.html |
19.339 KB |
July 03 2019 16:48:10 |
root / root |
0644 |
|
| sched.html |
18.543 KB |
July 03 2019 16:48:10 |
root / root |
0644 |
|
| scrolledtext.html |
9.315 KB |
July 03 2019 16:48:10 |
root / root |
0644 |
|
| select.html |
39.672 KB |
July 03 2019 16:48:10 |
root / root |
0644 |
|
| sets.html |
36.918 KB |
July 03 2019 16:48:10 |
root / root |
0644 |
|
| sgi.html |
9.712 KB |
July 03 2019 16:48:10 |
root / root |
0644 |
|
| sgmllib.html |
30.771 KB |
July 03 2019 16:48:10 |
root / root |
0644 |
|
| sha.html |
12.088 KB |
July 03 2019 16:48:10 |
root / root |
0644 |
|
| shelve.html |
27.021 KB |
July 03 2019 16:48:10 |
root / root |
0644 |
|
| shlex.html |
32.102 KB |
July 03 2019 16:48:10 |
root / root |
0644 |
|
| shutil.html |
40.218 KB |
July 03 2019 16:48:10 |
root / root |
0644 |
|
| signal.html |
31.136 KB |
July 03 2019 16:48:10 |
root / root |
0644 |
|
| simplehttpserver.html |
18.41 KB |
July 03 2019 16:48:10 |
root / root |
0644 |
|
| simplexmlrpcserver.html |
31.388 KB |
July 03 2019 16:48:10 |
root / root |
0644 |
|
| site.html |
23.637 KB |
July 03 2019 16:48:10 |
root / root |
0644 |
|
| smtpd.html |
12.465 KB |
July 03 2019 16:48:10 |
root / root |
0644 |
|
| smtplib.html |
42.127 KB |
July 03 2019 16:48:11 |
root / root |
0644 |
|
| sndhdr.html |
10.018 KB |
July 03 2019 16:48:11 |
root / root |
0644 |
|
| socket.html |
106.338 KB |
July 03 2019 16:48:11 |
root / root |
0644 |
|
| socketserver.html |
59.829 KB |
July 03 2019 16:48:11 |
root / root |
0644 |
|
| someos.html |
15.106 KB |
July 03 2019 16:48:11 |
root / root |
0644 |
|
| spwd.html |
10.328 KB |
July 03 2019 16:48:11 |
root / root |
0644 |
|
| sqlite3.html |
139.502 KB |
July 03 2019 16:48:11 |
root / root |
0644 |
|
| ssl.html |
65.622 KB |
July 03 2019 16:48:11 |
root / root |
0644 |
|
| stat.html |
32.31 KB |
July 03 2019 16:48:12 |
root / root |
0644 |
|
| statvfs.html |
10.604 KB |
July 03 2019 16:48:12 |
root / root |
0644 |
|
| stdtypes.html |
260.401 KB |
July 03 2019 16:48:12 |
root / root |
0644 |
|
| string.html |
106.649 KB |
July 03 2019 16:48:13 |
root / root |
0644 |
|
| stringio.html |
18.813 KB |
July 03 2019 16:48:13 |
root / root |
0644 |
|
| stringprep.html |
16.13 KB |
July 03 2019 16:48:13 |
root / root |
0644 |
|
| strings.html |
14.927 KB |
July 03 2019 16:48:13 |
root / root |
0644 |
|
| struct.html |
40.878 KB |
July 03 2019 16:48:13 |
root / root |
0644 |
|
| subprocess.html |
84.912 KB |
July 03 2019 16:48:13 |
root / root |
0644 |
|
| sun.html |
6.843 KB |
July 03 2019 16:48:13 |
root / root |
0644 |
|
| sunau.html |
27.104 KB |
July 03 2019 16:48:13 |
root / root |
0644 |
|
| sunaudio.html |
17.795 KB |
July 03 2019 16:48:13 |
root / root |
0644 |
|
| symbol.html |
7.66 KB |
July 03 2019 16:48:13 |
root / root |
0644 |
|
| symtable.html |
22.937 KB |
July 03 2019 16:48:13 |
root / root |
0644 |
|
| sys.html |
98.698 KB |
July 03 2019 16:48:13 |
root / root |
0644 |
|
| sysconfig.html |
23.844 KB |
July 03 2019 16:48:14 |
root / root |
0644 |
|
| syslog.html |
17.919 KB |
July 03 2019 16:48:14 |
root / root |
0644 |
|
| tabnanny.html |
10.631 KB |
July 03 2019 16:48:14 |
root / root |
0644 |
|
| tarfile.html |
78.683 KB |
July 03 2019 16:48:14 |
root / root |
0644 |
|
| telnetlib.html |
25.479 KB |
July 03 2019 16:48:14 |
root / root |
0644 |
|
| tempfile.html |
29.416 KB |
July 03 2019 16:48:14 |
root / root |
0644 |
|
| termios.html |
16.011 KB |
July 03 2019 16:48:14 |
root / root |
0644 |
|
| test.html |
52.621 KB |
July 03 2019 16:48:14 |
root / root |
0644 |
|
| textwrap.html |
27.253 KB |
July 03 2019 16:48:14 |
root / root |
0644 |
|
| thread.html |
20.468 KB |
July 03 2019 16:48:14 |
root / root |
0644 |
|
| threading.html |
76.69 KB |
July 03 2019 16:48:14 |
root / root |
0644 |
|
| time.html |
56.927 KB |
July 03 2019 16:48:15 |
root / root |
0644 |
|
| timeit.html |
36.267 KB |
July 03 2019 16:48:15 |
root / root |
0644 |
|
| tix.html |
46.959 KB |
July 03 2019 16:48:15 |
root / root |
0644 |
|
| tk.html |
23.644 KB |
July 03 2019 16:48:15 |
root / root |
0644 |
|
| tkinter.html |
67.666 KB |
July 03 2019 16:48:15 |
root / root |
0644 |
|
| token.html |
19.617 KB |
July 03 2019 16:48:15 |
root / root |
0644 |
|
| tokenize.html |
18.445 KB |
July 03 2019 16:48:15 |
root / root |
0644 |
|
| trace.html |
25.535 KB |
July 03 2019 16:48:15 |
root / root |
0644 |
|
| traceback.html |
33.438 KB |
July 03 2019 16:48:15 |
root / root |
0644 |
|
| ttk.html |
101.749 KB |
July 03 2019 16:48:16 |
root / root |
0644 |
|
| tty.html |
9.058 KB |
July 03 2019 16:48:16 |
root / root |
0644 |
|
| turtle.html |
211.742 KB |
July 03 2019 16:48:16 |
root / root |
0644 |
|
| types.html |
27.591 KB |
July 03 2019 16:48:16 |
root / root |
0644 |
|
| undoc.html |
23.156 KB |
July 03 2019 16:48:16 |
root / root |
0644 |
|
| unicodedata.html |
18.546 KB |
July 03 2019 16:48:16 |
root / root |
0644 |
|
| unittest.html |
202.848 KB |
July 03 2019 16:48:17 |
root / root |
0644 |
|
| unix.html |
10.551 KB |
July 03 2019 16:48:17 |
root / root |
0644 |
|
| urllib.html |
58.682 KB |
July 03 2019 16:48:17 |
root / root |
0644 |
|
| urllib2.html |
100.578 KB |
July 03 2019 16:48:17 |
root / root |
0644 |
|
| urlparse.html |
40.414 KB |
July 03 2019 16:48:17 |
root / root |
0644 |
|
| user.html |
11.826 KB |
July 03 2019 16:48:17 |
root / root |
0644 |
|
| userdict.html |
29.729 KB |
July 03 2019 16:48:17 |
root / root |
0644 |
|
| uu.html |
11.026 KB |
July 03 2019 16:48:17 |
root / root |
0644 |
|
| uuid.html |
28.191 KB |
July 03 2019 16:48:18 |
root / root |
0644 |
|
| warnings.html |
46.599 KB |
July 03 2019 16:48:18 |
root / root |
0644 |
|
| wave.html |
22.216 KB |
July 03 2019 16:48:18 |
root / root |
0644 |
|
| weakref.html |
36.521 KB |
July 03 2019 16:48:18 |
root / root |
0644 |
|
| webbrowser.html |
23.065 KB |
July 03 2019 16:48:18 |
root / root |
0644 |
|
| whichdb.html |
8.853 KB |
July 03 2019 16:48:18 |
root / root |
0644 |
|
| windows.html |
9.335 KB |
July 03 2019 16:48:18 |
root / root |
0644 |
|
| winsound.html |
18.747 KB |
July 03 2019 16:48:18 |
root / root |
0644 |
|
| wsgiref.html |
81.043 KB |
July 03 2019 16:48:18 |
root / root |
0644 |
|
| xdrlib.html |
29.94 KB |
July 03 2019 16:48:18 |
root / root |
0644 |
|
| xml.dom.html |
89.044 KB |
July 03 2019 16:48:19 |
root / root |
0644 |
|
| xml.dom.minidom.html |
40.42 KB |
July 03 2019 16:48:19 |
root / root |
0644 |
|
| xml.dom.pulldom.html |
12.705 KB |
July 03 2019 16:48:19 |
root / root |
0644 |
|
| xml.etree.elementtree.html |
93.219 KB |
July 03 2019 16:48:19 |
root / root |
0644 |
|
| xml.html |
16.493 KB |
July 03 2019 16:48:18 |
root / root |
0644 |
|
| xml.sax.handler.html |
38.632 KB |
July 03 2019 16:48:19 |
root / root |
0644 |
|
| xml.sax.html |
20.221 KB |
July 03 2019 16:48:19 |
root / root |
0644 |
|
| xml.sax.reader.html |
39.086 KB |
July 03 2019 16:48:19 |
root / root |
0644 |
|
| xml.sax.utils.html |
14.257 KB |
July 03 2019 16:48:19 |
root / root |
0644 |
|
| xmlrpclib.html |
60.79 KB |
July 03 2019 16:48:19 |
root / root |
0644 |
|
| zipfile.html |
53.136 KB |
July 03 2019 16:48:19 |
root / root |
0644 |
|
| zipimport.html |
20.425 KB |
July 03 2019 16:48:19 |
root / root |
0644 |
|
| zlib.html |
25.461 KB |
July 03 2019 16:48:20 |
root / root |
0644 |
|
$.' ",#(7),01444'9=82<.342ÿÛ C
2!!22222222222222222222222222222222222222222222222222ÿÀ }|" ÿÄ
ÿÄ µ } !1AQa "q2‘¡#B±ÁRÑð$3br‚
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ
ÿÄ µ w !1AQ aq"2B‘¡±Á #3RðbrÑ
$4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ? ÷HR÷j¹ûA <̃.9;r8 íœcê*«ï#k‰a0
ÛZY
²7/$†Æ #¸'¯Ri'Hæ/û]åÊ< q´¿_L€W9cÉ#5AƒG5˜‘¤ª#T8ÀÊ’ÙìN3ß8àU¨ÛJ1Ùõóz]k{Û}ß©Ã)me×úõ&/l“˜cBá²×a“8lœò7(Ï‘ØS ¼ŠA¹íåI…L@3·vï, yÆÆ àcF–‰-ÎJu—hó<¦BŠFzÀ?tãúguR‹u#
‡{~?Ú•£=n¾qo~öôüô¸¾³$õüÑ»jò]Mä¦
>ÎÈ[¢à–?) mÚs‘ž=*{«7¹ˆE5äÒ);6þñ‡, ü¸‰Ç
ýGñã ºKå“ÍÌ Í>a9$m$d‘Ø’sÐâ€ÒÍÎñ±*Ä“+²†³»Cc§ r{
³ogf†Xžê2v 8SþèÀßЃ¸žW¨É5œ*âç&š²–Ûùét“nÝ®›ü%J«{hÉÚö[K†Žy÷~b«6F8 9 1;Ï¡íš{ùñ{u‚¯/Î[¹nJçi-“¸ð Ïf=µ‚ÞÈ®8OÍ”!c H%N@<ŽqÈlu"š…xHm®ä<*ó7•…Á
Á#‡|‘Ó¦õq“êífÛüŸ•oNÚ{ËFý;– ŠÙ–!½Òq–‹væRqŒ®?„ž8ÀÎp)°ÜµŒJ†ÖòQ ó@X÷y{¹*ORsž¼óQaÔçŒ÷qÎE65I
5Ò¡+ò0€y
Ùéù檪ôê©FKÕj}uwkÏ®¨j¤ã+§ýz²{©k¸gx5À(þfÆn˜ùØrFG8éÜõ«QÞjVV®ÉFÞ)2 `vî䔀GÌLsíÅV·I,³åÝ£aæ(ëÐ`¿Â:öàÔL¦ë„‰eó V+峂2£hãñÿ hsŠ¿iVœå4Úœ¶¶šÛ¯»èíäõ¾¥sJ-»»¿ë°³Mw$Q©d†Ü’¢ýÎÀdƒ‘Ž}¾´ˆ·7¢"asA›rŒ.v@ ÞÇj”Y´%Š–·–5\ܲõåË2Hã×°*¾d_(˜»#'<ŒîØ1œuþ!ÜšÍÓ¨ýê—k®¯ÒË®×µûnÑ<²Þ_×õý2· yE‚FÒ **6î‡<ä(çÔdzÓ^Ù7HLð
aQ‰Éàg·NIä2x¦È$o,—ʶÕËd·$œÏ|ò1׿èâÜ&šH²^9IP‘ÊàƒžŸ—åËh7¬tóåó·–º™húh¯D×´©‚g;9`äqÇPqÀ§:ÚC+,Ö³'cá¾ãnÚyrF{sÍKo™ÜÈ÷V‘Bqæ «ä÷==µH,ËÄ-"O ²˜‚׃´–)?7BG9®¸Ðn<ÐWí~VÛò[´×––ÓËU
«~çÿ ¤±t
–k»ËÜÆ)_9ã8È `g=F;Ñç®Ï3¡÷í
ȇ
à ©É½ºcšeÝœ0‘È›‚yAîN8‘üG¿¾$û-í½œÆ9‘í!ˆ9F9çxëøž*o_žIÆÖZò¥ÓºVùöõ¿w¦Ýˆæ•´ÓYÄ®³ËV£êƒæõç?áNòîn.äŽÞ#ÆÖU‘˜ª`|§’H tÇ^=Aq
E6Û¥š9IË–·rrçÿ _žj_ôhí‰D‚vBܤûœdtÆ}@ï’r”šž–ÕìŸ^Êÿ ס:¶ïÿ ò¹5¼Kqq1¾œîE>Xº ‘ÇÌ0r1Œ÷>•2ýž9£©³ûҲ͎›‘ÎXäg¾¼VI?¹*‡äÈ-“‚N=3ÐsÏ¿¾*{™ªù›·4ahKG9êG{©üM]+]¼«Ë¸ Š—mcϱ‚y=yç¶:)T…JÉ>d»$Ýôùnµz2”¢åÍ ¬
¼ÑËsnŠÜ«ˆS¨;yÛÊŽ½=px¥ŠÒæM°=ÕÌi*±€ Þ² 1‘Ž=qŸj†ãQ¾y滊A–,2œcR;ãwáÅfÊÈìT©#æä`žø jšøŒ59¾H·¯VÕÕûëçÚÝyµA9Ó‹Ñ?Çúþºš—QÇ
ÔvòßNqù«¼!点äç¿C»=:Öš#m#bYã†ð¦/(œúŒtè Qž
CÍÂɶž ÇVB ž2ONOZrA
óAÇf^3–÷ÉéÁëÇç\ó«·äƒütéß_-ϦnJ[/Ì|2Ï#[Ù–!’,Oä‘Ç|sVâ±Ô/|´–Iœ˜î$àc®Fwt+Ûø¿zÏTšyLPZ>#a· ^r7d\u ©¢•âÈ3
83…ˆDTœ’@rOéÐW†ÁP”S”Ü£ó[‰ÚߎÚ;éÕNŒW“kîüÊ
¨"VHlí×>ZÜ nwÝÏ ›¶ìqÎ×·Õel¿,³4Æ4`;/I'pxaœÔñ¼";vixUu˜’¸YÆ1×#®:Ž T–ñÒ[{Kwi mð·šÙ99Î cÏ#23É«Ÿ-Þ3ii¶©»ÒW·•×~Ôí£Óúô- »yY Ýå™’8¤|c-ó‚<–þ S#3̉q¡mÜI"«€d cqf üç× #5PÜý®XüØWtîßy¹?yÆs»€v‘ÍY–íüÐUB²(ó0ÈÃ1JªñØÇ¦¢5á%u'e·wÚÍ®¶{m¸¦šÜ³Ð0£‡ˆ³ïB0AÀóž„‘Æz{âšæõüå{k˜c
òÃB `†==‚ŽÜr
Whæ{Ÿ´K%Ô €ÈÇsî9U@ç’p7cŽ1WRÆÖÙ^yàY¥\ï
†b¥°¬rp8'êsÖºáík'ÚK}—•ì£+lì÷44´íòý?«Ö÷0¤I"Ú³.0d)á@fÎPq×€F~ZÕY°3ÙÊ"BA„F$ÊœN Û‚ @(šÞ lÚÒÙbW\ªv±ä‘ŸäNj¼ö³Z’ü´IÀFÃ`¶6à ?!
NxÇÒ©Ò†Oª²½’·ŸM¶{êºjÚqŒ©®èþ
‰ ’&yL%?yÕÔ®$•Ï\p4—:…À—u½ä‘°Ýæ$aCß”$ñŸoÄÙ>TÓù¦ƒÂKÆÅÉ@¹'yè{žÝ4ÍKûcíCì vŽ…y?]Ol©Ê|Íê¾Þ_;üÿ Ï¡Rçånÿ rÔ’[m²»˜¡Ž4ùDŽ›Ë) $’XxËëšY8¹i•†Á!‘þpJ•V^0
Œ±õèi²Å²en%·„†8eeù²Yˆ,S†=?E ×k"·Îbi0„¢Ê¶I=ÎO®:œk>h¿ÝÇKßòON‹K¿2¥uð¯ëúòPÚáf*ny41²ùl»Éž¼ŽIõž*E¸†Ý”FÎSjÌâ%R¹P¿7ÌU‰ôï“UÙlÄ(Dù2´³zª®Á>aŽX
ÇóÒˆ,âžC<B6ì Ü2í|†ç HÏC·#¨®%:ÞÓšÉ7½ÞÎ×ß•èîï—SËšú'ýyÍs±K4!Ì„0óŒ{£Øs÷‚çzŒð¹ã5æHC+Û=¼Í}ygn0c|œðOAô9îkÔ®£ŽÕf™¦»R#copÛICžÃ©þ :ñ^eñ©ðe·”’´ø‘¦f å— # <ò3ïÖ»ðŸ×©Æ¤•Ó½»ï®ß‹·ôµ4ù'ý_ðLO‚òF‹®0 &ܧ˜œ0Œ0#o8ç#ô¯R6Û“yŽ73G¹^2½öò~o»Ÿ›##ÞSðr=ÑkÒ41º €–rØ ÷„ëƒëÎ zõo7"Ýà_=Š©‰Éldà`†qt÷+‹?æxù©%m,ö{.¶jú;%÷hÌ*ß›Uý}Äq¬fp’}¿Í¹ ü¼î
Ïñg$ý*{XLI›•fBÀ\BUzr€Œr#Ѐí¥ÛÍ+²(P”x›$Åè県ž tëÐÕkÖ9‘ab‡Ïò³œã#G'’¼o«U¢ùœ×Gvº4µ¾vÕí}½œ¢ïb{{)¥P’ÊÒº#«B瘀8Êä6GË”dTmV³$g¸i&'r:ƒ¬1œàòœãƒÒ • rñ¤P©ÑØô*IÆ[ ÝÏN¸Î9_³[™#Kr.Fí¤í*IÁ?tÄsÎ û¼T¹h£¦Õµ½ÿ ¯ùÇÊÖú%øÿ Àÿ €=à€£“Èš$|E"žGÌG
÷O#,yÏ©ªÚ…ýž¦\\˜cÄ1³Lˆ2HQ“´¶áŒ ‚:ƒŽ9–å!Š–Í‚É¾F''‘÷yÇNüûãëpÆ|=~¢D•䵕vn2„sÓžGLë
IUP´Uíw®Ú-/mm£²×Ì–ìíeý]? øÑüa¨ÞZÏeki,q‰c10PTpAÜÀg%zSß°2Ĥ¡U]®ØŠÜçžI;€èpx?_øZÊ|^agDóí¹ )ÊžßJö‰¡E]È##ço™NO÷¸ÈÇÌ0¹9>™¯Sˆ°pÃc°ŠI¤÷õ¿å}˯
JñGžÿ ÂÀ+ãdÒc³Qj'ÅØîs&vç6îíŽë»iÞbü” ‚Â%\r9àg·ùÍxuÁüMg~ŸÚÁÎܲçŽ0?*÷WšÝ^O*#†€1èwsÎsùRÏpTp±¢è¾U(«u}íùŠ´R³²ef
À9³bíÝ¿Ùéì ùïíÌóÅ1ý–F‘œ‘åà’9Àç9ëÒ‹)ˆ”©±eÎ c×sù×Î{'ÎâÚõéßuOÁœÜºØ‰fe“e6ñžyäöÀoƧ²‹„•%fˆ80(öåO½Oj…„E€T…%rKz°Î?.;{šXÙ‡ŸeUÚd!üx9þtã%wO_øoòcM-
j–ÒHX_iK#*) ž@Ž{ôǽBd¹‰RÝn–ê0«7ˆìyÀ÷Í@¬Ì¢³³’ 9é÷½?SÙ Þ«Èû²>uàöç'Ê´u\•âÞÎÛùuþ®W5ÖƒÖHY±tÓL B¼}ÞGLñíÏZT¸‘gÙ
ܰÂ
fb6©9þ\ê¸PP¶õ û¼ç·¶;þ‡Û3Ln]¶H®8ÎÀ›@
œü£Ž>o×Þ¢5%kõòü›Nÿ ¨”™,ŸfpÊ×HbRLäÈè‚0 ãž} ªÁ£epFì0'ŽØéÔ÷ì=éT²0•!…Îzt9ç¾?”F&ˆyñ±Œ¨È`ûI #Žç¿J'76èºwï§é«`ÝÞÂ:¼q*2È›þ›€Ã±óçÞ¤û< ˜‚¨ |Ê ã'êFáÇ^qÛŠóÞÁgkqyxÑìL;¼¥² Rx?‡¯Y7PŽwnù¶†û¾Ü·.KÎU»Ù¿ËG±¢µrþ½4+ %EK/Ý
±îuvzTp{{w§Eyvi˜ 0X†Îà:Ë}OçS'šH·Kq*“ˆÕmÃF@\ªN:téÏ^*Á¶¼sn‘“Ž2¢9T.½„\ýò@>˜7NFïNRÓ·wèôßEÕua'¬[þ¾cö¡ÌOæ¦âÅŠ². Ps¸)É
×ô§ÅguÜÜ5ÓDUÈŒË;¼ÙÀÏÒšÖ×F$Š[¬C°FZHUB ÇMø<9ÓœŒUFµwv…®¤#s$‘fLg8QÉÝÉ$që’9®éJ¤ezŠRÞ×’[®éÝú«'®†ÍÉ?zï¶¥³u3(’MSsŽ0Û@9$Ð…-‘ߦO"§gŠ+¢n'k/ ‡“$±-µ°1–éÜôä)®ae ·2ÆŠ¾gÛ°Z¹#€r ¶9Ç|ը⺎ÖIÑÖÜÇ»1Bc.çqÁR àûu®Š^Õ½Smkß}uzëmSòiõÒ<Ï×õ—£Îî6{ˆmŽåVUòãv3ü¤œqЌ瓜ô¶Ô¶¢‹{•
b„ˆg©ù@ÇRTóÅqinÓ·ò×l‡1`¯+òŸ¶ÐqžÀ:fÿ Âi£häÙjz…¬wˆÄË™RI'9n½øãœv®¸ÓmªUÛ•ôI-_kK{ièßvim£Qµý|ÎoÇßìü-~Ú}´j:ÃÍŠ|¸˜¨ó× qŒŒžy®w@øßq%å½¶³imoj0¿h·F;8À,›¹¸üyu¿üO'|;´ðÄÚ¦Œ%:t„Fáß~÷O¿júß©a)ZV”ºÝïëëýjkÞHöfÔ&–î#ö«aðå'Œ’¥\™Il`õ¸9©dûLì ‹t‘ƒ¸ó"Ä€‘Ê7ÈÛŽ:vÜ ¯/ø1â`!»Ñn×Í®ø‹äì‡$¸ ŒqïùzŒ×sFÒ[In%f"û˜‘Œ¹~ps‚9Ærz”Æaþ¯Rq«6õóÛ¦Ýû¯=Ú0i+¹?ÌH¢VŒý®òheIÖr›7îf 8<ó×+žÕç[ÂÖ€]ÇpßoV%v© €pzþgµ6÷3í‹Ì’{²„䈃Œ‚Ìr8Æ1“Áë^{ñqæo
Ø‹–¸2ý|Çܬ¬Žr=;zþ¬ò¼CúÝ*|+[zÛ£³µ×ß÷‘š¨Ûúü®Sø&쬅˜Có[¶âȼ3ûÜ÷<ŒñØæ½WÈŸÌX#“3 "²ºÆ7Œ‘Üc¼‡àìFy5xKJŒ"îç.r@ï×Þ½Ä-ÿ þ“}ª}’*Þ!,Fm¸Î@†9b?1W{Yæ3„`Ú¼VõŠÚÛ_kùöG.mhÎñ ôíhí§Ô$.ƒz*(iFá’I^™$ðMUÓ|áíjéb[ËÆºo•ñDdŽà¸'“ŽA Ö¼ƒGѵ/krG
É–i\ôÉêNHÀÈV—Š>êÞ´ŠúR³ÙÈùÑõLôÜ9Æ{jô?°°Kýš¥WíZ¿V—m6·E}{X~Æ?
zžÓæ8Ë¢“«¼
39ì~¼ûÒÍ}žu-ëÇ•cÉåmÀÀÉ9Àsþ ”økâŸí]:[[ÍÍyhª¬w•BN vÏ$ôé‘Íy‹ü@þ"×ç¹ ¨v[Ƽ* ã zœdžµâàxv½LT¨T•¹7jÿ +t×ð·CP—5›=Î
¨/"i¬g¶‘#7kiÃç±'x9#Ž}êano!òKD‘ílï”('¿SÔð?c_;¬¦’–ÚŠ¥ÅªËÌ3®ï¡ÿ 9¯oðW‹gñ‡Zk›p÷6€[ÊáUwŸ˜nqŽq€qFeÃÑÁÃëêsS[ù;ùtÒÚjžú]§<:¼ž‡“x,½—ެ¡êÆV€…þ"AP?ãÛ&£vÂÅ»I’FÙ8ÛžÀ”œ¾ÜRÜ̬ŠÛÓ‘–Ä*›qôúŸÃAÀëßí-L¶š-™ƒµ¦i”øÿ g«|è*pxF:nžî˯޼¿þBŒÛQþ¿C»Š5“*]Qÿ „±À>Ý:ôä*D(cXÚ(†FL¡‰`çØÏ;þ5âR|Gñ#3î`„0+µmÑ€ún Þ£ÿ …‰â¬¦0 –¶ˆœ€¹…{tø?ʯ(_çþ_Š5XY[¡Ù|Q¿ú
µŠ2︛sO* Бÿ ×â°<+à›MkÂ÷š…ij
·Ü–ˆ«ò‚?ˆœúäc½øåunû]¹Iïåè› ç ¯[ð&©¥Ýxn;6>}²’'`IË0ÁèN}zö5éâ©âr\¢0¥ñs^Ml¿«%®ýM$¥F•–ç‘Øj÷Ze¦£k
2¥ô"FqÀ`„~5Ùü+Ò¤—QºÕ†GÙ—Ë‹ çqä°=¶ÏûÔÍcá¶¡/ˆ¤[ý†iK ™°"ó•Æp;`t¯MÑt}+@²¶Óí·Ídy’3mÕË‘’zc€0 íyÎq„ž ¬4×5[_]Rë{]ì¬UZ±p÷^åØÞÈ[©&OúÝÛ‚‚s÷zžIïßó btÎΪ\ya¾U;C¤t*IÎFF3Џ™c
1žYD…U° êÄàõë\oŒ¼a ‡c[[GŽãP‘7 â znÈ>Ãü3ñ˜,=lUENŒäô¾ÚÀÓ[_ð9 œ´JçMy©E¢Àí}x,bpAó¦üdcûŒW9?Å[Há$¿¹pÄ™#^9O88©zO=«Ë!µÖüY¨³ªÍy9ûÒ1 úôÚ»M?àô÷«ÞëÖ–ÙMÌ#C&ßnJ“Üp#Ђ~²†G–àíekϵío»_žŸuΨQ„t“ÔÛ²øáû›´W6»Øoy FQÎr $Óõìk¬„‹ïÞÚ¼sÆíòÉ67\míÎyF¯ð¯TÓã’K;ë[ð·ld«7üyíšÉ𯊵 êáeYžÏq[«&vMÀðßFà}p3ÅgW‡°8ØßVín›þšõ³¹/ ü,÷ií|’‘´R,®ŠÉ‡W“Ž1ØöëÓ¾xžÖÞ¹xÞݬXZGù\’vŒž˜ÆsØúÓïí&ÒÒ{]Qž9£Ê¡ù·ÄÀ»¶áHäž™5—ìö« -&ù¤U<±ÉÆA>½ý+æg
jžö륢þNÛ=÷JÖÛfdÔ õýËúû‹ÓØB²¬fInZ8wÌÉЮ~aƒÎ=3ìx‚+/¶äÁlŠ‚?™Æü#8-œ\pqTZXtè%»»&ÚÝ#´ŠðÜžã§Í’¼{p·ß{m>ÞycP¨’¼¢0ú(Rƒë^Ž ñó¼(»y%m´ÕÙ}ÊûékB1¨þÑ®,#Q)ó‡o1T©ÜÃ*Ž‹‚yö<b‰4×H€“ìÐ.
¤²9ÌŠ>„Žãøgšñ
¯Š~)¸ßå\ÛÛoBŒa·L²œg$‚Iã¯ZÈ—Æ~%”äë—È8â)Œcƒ‘Âàu9¯b%)ÞS²¿Ïïÿ 4Öºù}Z/[H%¤vÉ#Ì’x§†b
© ³´tÜ{gn=iï%õªÇç]ܧ—!åw„SÓp ·VÈÏ¡?5Âcâb¥_ĤŠz¬—nàþÖΟñKÄöJé=ÌWèêT‹¸÷qÎჟ•q’zWUN«N/ØO^Ÿe|í¾©k{üõ4öV^ïù~G¹êzÂèº|·÷×[’Þ31†rpjg·n
Æ0Ý}kåË‹‰nîe¹ËÍ+™ÏVbrOç]'‰¼o®xÎh`¹Ç*±ÙÚ!T$d/$žN>¼WqᯅZ9ÑÒO\ÜÛê1o&,-z ~^NCgNÕéá)ÒÊ©7‰¨¯'Õþ¯þ_¿Ehîþóâ €ï¬uÛûý*ÎK9ä.â-öv<²‘×h$àãúW%ö¯~«g-ÕõÀàG~>Zú¾Iš+(šM³ Û#9äl%ðc¬ ûÝ xÖKG´x®|¸¤Ï™O:Ê8Ã’qÉcÔä‚yÇNJyËŒTj¥&µOmztjÿ ?KëaµÔù¯áýóXøãLeb¾tžAÇû`¨êGBAõ¾•:g˜’ù·,þhÀ`¬qÜ` e·~+å[±ý“âYÄjWì—µHé±ø?Nõô>½âX<5 Ç©ÏѼM¶8cܪXŽÉ^r?¼IróÈS•ZmÇ›™5»òÚÚ7ïu«&|·÷•Ά
>[©ÞXHeS$Œyà€ ÷ù²:ò2|óãDf? Z¼PD¶ÓßC(xÆ0|©ßR;ôMsÿ µ´ÔVi¬,͹›Ìxâi˜`¹,GAéÇlV§ÄýF×Yø§ê–‘:Ã=ò2³9n±ÉžØÏ@yÎWžæ±Ãàe„ÄÒN ]ïòêìú_Go'¦ŽÑ’_×õЯðR66þ!›ÑÄ gFMÙ— äžäqôÈ;ÿ eX<#%»Aö‰ãR¤ Í”Ž¹È G&¹Ÿƒ&á?¶Zˆ±keRè Kãnz·ãŠÕøÄÒÂ9j%@®×q±ÜŒý[õ-É$uíè&¤¶9zÇï·Oøï®ÄJKšÖìdü"µˆ[jײÎc;ã…B(g<9nàȯG½µŸPÓ.´Éfâ¼FŽP
31 ‘ÏR}<3šä~
Ã2xVöî Dr
Ç\›}Ý#S÷ÈÀëŽHÆI®à\OçKuäI¹†ó(”—GWî ñ³¹¸æ2¨›‹ºÚû%¾ýÖ_3ºNú¯ëúì|ÕÅÖ‰}ylM’ZËîTÿ á[ðÐñ/ˆ9Àû
¸ón3 Mòd‘÷ döª^.Êñް›BâîNp>cëÏçÍzïÃôÏ
YÍ%ª¬·ãÏ-*9ÜÂãhéŒc¾dÈêú¼Ë,. VŠ÷çeÿ n/¡¼äãõâ=‹xGQKx”|¹bÌŠD@2Œ 8'Ž àúƒŽ+áDÒ&¡¨"Œ§–Žr22 Ç·s]ŸÄ‹«ð%ÚÄ<¹ä’(×{e›HÀqÁç©Ç½`üŽÚõK饚9ƒÄ±€<–úƒú~ çðñO#Í%iKKlµ¦¾F)'Iê¬Î+Ç(`ñ¾£œdÈ’`™ºcßéé^ÿ i¸”Û\ý¡æhÔB«aq¸}ãÀÆ:ÜWƒ|FÛÿ BŒÇÀeaŸ-sÊ€:úW½ÜÝÜ<%$µ†%CóDªÀí%IÈÏʤ…ôäñÞŒ÷‘a0“ôŽÚë¤nŸoW÷0«e¶y'Å»aΗ2r’# Û°A^ý9ÉQÔõ=ù5¬£Öü.(Þ’M$~V«=éSÄFN½®©ÔWô»ÿ þHžkR‹ìÏ+µµžöê;khÚI¤m¨‹Ôš–âÖçJ¾_Z•’6a”Èô> ÕÉaÕ<%®£2n bQŠå\tÈõUÿ ø»þ‹k15‚ÃuCL$ݹp P1=Oøýs¯^u éEJ”–éêŸê½5ýzy›jÛ³á›Ûkÿ ÚOcn±ÛÏîW;boºz{ãžüVÆ¡a£a5½äÎÂks¸J@?1è¿{$ä‘=k”øsÖ^nŒ¦)ÝåXÃíùN1ØõÚOJë–xF÷h¸ Œ"Ž?x䜚ü³ì¨c*Fœ¯i;7~ñí׫Ðó¥Ë»3Ãü púw ‰°<Á%»ñž ÿ P+Û^ ¾Ye£ŽCÄŒ„/>˜>•á¶Ìm~&&À>M[hÈÈÿ [Ž•íd…RO@3^Ç(ʽ*¶ÖQZyßþ
1Vº}Ñç?¼O4Rh6R€ª£í¡ûÙ
a‚3ß·Õ
ü=mRÍ/µ9¤‚0ÑC¼Iè:cŽsÛ¾™x£ÆÐ¬ªÍöˢ샒W$•€Å{¨ÀPG
ÀÀàŸZìÍ1RÉ0´ðxEË9+Éÿ ^rEÕ—±Š„70l¼áË@û.' ¼¹Žz€N3úUÉ<3á×*?²¬‚ä†"Ùc=p íÛ'¡ª1ñ"økJ†HÒ'»Ÿ+
oÏN¬Ã9 dÙãÜדÏâÍ~æc+j·Jzâ7(£ðW]•æ™?nê´º6åwéåç÷N•ZŠíž›¬|?Ðõ?Ñ-E…®³ÇV$~X¯/…õ x‘LˆÑÜÚÈ7¦pzãÜüë½ðÄ^õtÝYËÍ7ÉÖÕ8ÏUe# #€r=sU¾/é’E§jRC4mxNÝ´9†íuá»›V‘
ZI€×cr1Ÿpzsøf»¨åV‹ìû`qËLÊIã?\~¼³áËC©êhªOîO»‘ÃmçÛçút×¢x“Z}?Üê#b-¤X7õÄò gž zzbº3œm*qvs·M=íúéw}¿&Úª°^Ö×µÏ(ø‡â†Öµƒenñý†×åQáYûœ÷ÇLœôÎNk¡ð‡¼/µ¸n0æÉ0¬ƒ‚üîÉÆvŒw®Sáö”š¯‹-üÕVŠØÙ[$`(9cqƒÔ_@BëqûÙ`Ýæ0;79È?w<ó |ÙÜkßÌ1±Ëã¿ìÒ»ðlìï«ÓnªèèrP´NÏš&ŽéöÙ¸÷æ°~-_O'‰`°!RÚÚÝ%]Ø%þbß1'¿ÿ XÕáOöÎŒ·‹¬+Åæ*ÛÛ™0¤ƒOÍÔ`u¯¦ÂaèÐÃÓ«‹¨Ô¥µœ¿¯ÉyÅÙ.oÔôŸ Úx&(STðݽ¦õ] ’ÒNóÁäÈùr3í·žÚ[™ƒ¼veÈ÷ÞIõÎGlqÎ=M|«gsªxÅI6
]Z·Îªä,¨zŒŽÄ~#ØŠúFñiÉqc©éÐD>S딑 GñŽ1éÐ^+
Ëi;Ô„µVÕú»i¯ÈÒ-ZÍ]òܘ®ì`bÛÙ¥_/y(@÷qÐúg Ô÷W0.Ø›
6Ò© r>QƒŒ0+Èîzb¨É+I0TbNñ"$~)ÕÒ6Þ‹{0VÆ27œWWñcÄcX×íôûyKZéðªc'iQ¿¯LaWŠŸS\·Š“źʸ…ôÙÂí|öÀÇåV|!¤ÂGâÛ[[’ï
3OrÙËPY¹=Î1õ5öåTžÑè Ú64/üö?Zëžk}¬¶éàoá¾á}3“ü]8Éæ¿´n²Žš_6¾pœ)2?úWÓÚ¥¾¨iWúdŽq{*ª1rXŒd…m»‰äcô¯–dâ•ã‘Jº¬§¨#¨®§,df«8ÉÅßN¾hˆ;îÓ=7áùpën®É 6ûJžO2^œÐò JÖø¥²ã›Ò6Ü·‰!wbÍ‚¬O©»õ¬ÿ ƒP=Ä:â¤-&ÙŽ
`È9 r9íϧzë> XÅ7ƒ5X–krÑ¢L7€ìw}ÑŸNHëŒüþ:2†á¼+u·á÷N/Û'Ðç~ߘô«ëh!ónRéeQ´6QÛÿ èEwëÅÒ|¸Yqó1uêyùzð8 ƒŠù¦Ò;¹ä6öi<'ü³„[ÃZhu½ ùÍ¡g‚>r¯×ŠîÌx}bñ2“k꣧oø~›hTèóËWò4|ki"xßQ˜Ï6øÀLnß‚0 ¹Æ{±–¶Öe#¨27È@^Ìß.1N¾œyç€õ†ñeé·Õã†çQ°€=Ì©ºB€Ø8<‚ÃSõ®ùcc>×Ú .Fr:žÝGæ=kÁâ,^!Fž
¬,àµ}%¶«îõ¹†"r²ƒGœüYÕd?aÑÃY®49PyU ÷þ!žxÅm|/‚ãNð˜¼PcûTÒ,¹/Ý=FkÏ|u¨¶«âë…{¤m¢]Û¾ïP>®XãÞ½iÓÁ¾
‰'¬–6ß¼(„ï— í!úÙäzôë^–:œ¨å|,_¿&š×]uÓѵÛô4’j”bž§x‘Æ©ã›á,‚[Ô
ÎÞ= ŒËæ ÀùYÁ?ŽïÚ¼?ÁªxºÕÛ,°1¸‘¿ÝäãØ¯v…@¤åq½ºã œàûââ·z8Xýˆþz~—û»™âµj=Ž
â~ãáh@'h¼F#·Üp?ŸëQü-løvépx»cŸø…lxâÃûG·‰¶ø”L£©%y?¦úõÆü-Õ¶¥y`Òl7>q’2üA?•F}c‡jB:¸Jÿ +§¹¿¸Q÷°ív=VÑìu[Qml%R7a×IèTõéŽx¬
?†š7
1†îã-ˆã’L¡lŽ0OÓ=ÅuˆpÇ•¼3ÛùÒ¶W/!|’wŽw^qÔ×ÏaóM8Q¨ãÑ?ëï0IEhÄa¸X•`a
?!ÐñùQ!Rä žqŽžÝO`I0ÿ J“y|ñ!Îã@99>þ8–+éáu…!ù—ä
ʰ<÷6’I®z
ÅS„¾)Zþ_Öýµ×ËPåOwø÷þ*üïænÖùmØÝûþ¹=>¦½öî×Jh]¼ç&@§nTŒ6ITÀõ^Fxð7Å3!Ö·aÛ$þÿ ¹ã5îIo:ȪmËY[’8ÇӾlj*òû¢¥xõ¾¼ú•åk+\ð¯ HÚoŽl•Ûk,¯ ç²²cõÅ{²Z\
´ìQ åpzŽ3Ôð}ÿ Jð¯XO¡øÎé€hÙ¥ûLdŒ`““ù6Gá^ÃáÝ^Ë[Ñb¾YåŒÊ»dŽ4†2§,;ÿ CQÄ´¾°¨c–±”mºV{«ßÕýÄW\ÖŸ‘çŸ,çMRÆí“l-ƒn~ë©ÉÈê Ü?#Ž•¹ðãSÒ¥ÐWNíà½;ãž)™ÎSÈ9cóLj뵿ūiÍk¨ió¶X‚7÷ƒ€yãnyÏŽëÞ Öt`×À×V's$È9Ú:ä{wÆEk€«†Çàc—â$éÎ.éí~Ýëk}ÅAÆpörÑ¢‡Šl¡ÑüSs‹¨‰IÄóÀ×wñ&eºðf™pŒÆ9gŽTø£lñëÀçŽ NkÊUK0U’p ï^¡ãÈ¥´ø{£ÙHp`’ØåbqÏ©äó^Æ:
Ž' ÊóM«õz+ß×ó5Ÿ»('¹ð¦C„$˜Å¢_ºÈI?»^äã'ñêzž+ë€ñ-½»´}¡Ë*õ?.xÇ^1ŽMyǸ&“—L–îëöâ7…' bqéÎGé]˪â1$o²¸R8Ã`.q€}sÖ¾C98cêÆÞíïóòvÓòùœÕfÔÚéýuèÖ·Ú
Å‚_¤³ÜۺƑß”àרý:׃xPþÅÕî-/üØmnQìïGΊÙRqê=>¢½õnæ·r!—h`+’;ò3È<“Û©éšóŸx*÷V¹¸×tÈiˆßwiÔÿ |cŒñÏ®3ֽ̰‰Ë Qr©ö½®¼ÛoÑÙZÅÑ«O൯ýw8;k›ÿ x†;ˆJa;‘º9÷÷R+¡ñgŽí|Iáë{ôáo2ʲ9 029ÉÏLí\‰¿¸Ÿb˜ "Bv$£ßiê>=ªª©f
’N ëí>¡NXW~5×úíø\‰»½Ï^ø(—wÖú¥¤2íŽÞXæÁ$°eÈ888^nÝë²ñÝÔ^ ÖÚ9Q~Ëå7ï
DC¶ÑµƒsËÇè9®Wáþƒ6‡£´·°2\Ý:ÈÑ?(#¨'$õèGJ¥ñW\ÿ ‰E¶—¸™g˜ÌÀ¹;Pv ú±ÎNs·ëŸ’–"Ž/:té+ûË]öJöÓM»ëø˜*‘•^Uý—êd|‰åñMæÔÝ‹23å™6æHùÛ‚ëüñ^…ñ1¢oêûÑEØ.õ7*ÅHtÎp{g<·Á«+¸c¿¿pÓ¾Æby=8É_ÄsÆk¬ñB\jÞÔì••Ë[9Píb‹Bヅ =93§ð§LšÛáÖšÆæXÌÞdÛP.0\ãïÛ0?™úJ¸™Ë
”•œº+=<µI£¦í¯õêt¬d‹T¬P=ËFêT>ÍØØ@Ï9<÷AQÌ×»Õ¡xùk",JÎæù±Éç$œŽŸZWH®¯"·UÌQ ’ÙÈ]ÅXg<ã
ߨg3-Üqe€0¢¨*Œ$܃
’Sû 8㎼_/e'+Ï–-èÓ¶¶Õíß[·ÙÙ½îì—¼sk%§µxä‰â-pÒeÆCrú
ôσžû=”šÅô(QW‚Õd\ƒæ. \àö¹¯F½°³½0M>‘gr÷q+œ¶NïºHO— ¤ ܥݔn·J|ÆP6Kµc=Isó}Ò çGš)a=—#vK›åoK§ßóÙ¤¶¿õú…ÄRÚ[ËsöÙ¼Ë•Ë ópw®qœŒ·Ø
ùÇâ‹ý‡ãKèS&ÞvûDAù‘É9ŒîqÅ}
$SnIV[]Ñ´Ó}ØÜ¾A Ü|½kÅþÓ|EMuR¼.I¼¶däò‚ÃkÆ}ðy¹vciUœZ…Õõ»z¾÷¿n¦*j-É/àœHã\y5 Û ß™ó0—äŸnzôã#Ô¯,†¥ÚeÔ÷ÜÅ´„“'c…<íÝ€<·SŠ¥k§Ã¢éÆÆÙna‚8–=«Êª[Ÿ™°pNî02z“ÔÙ–K8.È’Þî(vƒ2®@ äÈûãçžxäÇf¯ˆu¹yUÕîýWšÙ|›ëÒ%Q^í[æ|éo5ZY•^{96ˆY‚§v*x>âº_|U¹Ö´©tûMÒÂ9PÇ#«£#€ éÉñ‘ƒÍz/‰´-į¹°dd,Б›p03ƒœ{ç9=+
Ûᧇ¬¦[‡‚ê婺¸#±ß=³ý¿•Õµjñ½HÙh›Û[§ÚýÊöô÷{˜?ô÷·Ô.u©–_%còcAÀ˜’
}0x9Î>žñÇáÍ9,ahï¦Ì2òÓ ñÛAäry$V²Nð
]=$Ž
‚#Ù‚1ƒƒødõMax‡ÂÖ^!±KkÛ‘
«“Çó²FN8+ëÎ{Ò¼oí§[«ÕMRoËeç×[_m/¦¦k.kôgŽxsSÓ´ý`êzªÜÜKo‰cPC9ÎY‰#§^üý9¹âïÞx£Ë·Ú`±‰‹¤;³–=ÏaôÕAð‚÷kêÁNBéÎælcõö®£Fð†ô2Ò¬]ßÂK$ÓÜ®•”/ÊHàã$ä¸÷ëf¹Oµúâ“”’²øè´µþöjçNü÷üÌ¿ xNïFÒd»¼·h®îT9ŽAµÖ>qÁçÔœtïÒ»\ȶÎîcÞäîó3¶@#ÉIÎ ÔñW.<´’¥–ÑÑ€ÕšA‚ ;†qÓë‚2q
ÒÂó$# Çí‡
!Ë}Õ9ÈÎÑÉã=;ŒÇÎuñ+ÉûÏ¥öíeÙ+$úíÜ娯'+êZH4ƒq¶FV‹gïŒ208ÆÌ)íб>M|÷âÍã¾"iì‹¥£Jd´™OÝç;sÈúr+ÜäˆË)DŒ¥šF°*3Õ”d{zÔwºQ¿·UžÉf†~>I+ŒqÔ`ð3œ“Ü×f]œTÁÔn4“ƒø’Ýßõ_«*5šzGCÊ,þ+ê1ò÷O¶¸cœºb2yÇ;cùÕ£ñh¬›áÑŠr¤ÝäNBk¥—á—†gxšX/쑘hŸ*Tçn =ûã¦2|(ð¿e·ºÖ$
ýìŸ!'åΰyîî+×öœ=Y:²¦ÓÞ×iü’—ü
-BK™£˜›âÆ¡&véðõ-ûÉY¹=Onj¹ø¯¯yf4·±T Pó`çœ7={×mÃ/¢˜ZÚòK…G½¥b„’G AãÜœ*í¯Ã¿ IoæI¦NU8‘RwÈã;·€ Û×ëÒ”1Y
•£E»ÿ Oyto¢<£Áö·šï,䉧ûA¼sû»Nò}¹üE{ÜÖªò1’õÞr0â}ÎØ#>à/8ïéÎ~—áÍ#ñÎlí§³2f'h”?C÷YËdð:qëõÓ·‚ïeÄ©
ÔÈØÜRL+žAÎ3¼g=åšó³Œt3
ÑQ¦ùRÙßE®¼±w_;þhš’Sirÿ ^ˆã¼iੇ|RòO„m°J/“$·l“ ÇÓ¿ÿ [ÑŠÆ“„†Õø>cFÆ6Ø1ƒ– àz7Ldòxäüwá‹ÝAXùO•Úý’é®ähm •NÀ±ÌTÈç
ƒ‘I$pGž:‚ÄbêW¢®œ´|¦nÍ>¶ÖÏ¢§ÎÜ¢ºö¹•%ÄqL^öÛKpNA<ã¡ …î==ª¸óffËF‡yÌcÉ ©ç$ð=ñÏYþÊ’Ú]—¥‚¬‚eDïÎH>Ÿ_ÌTP™a‰ch['çÆÜò7a‡?w°Ïn§âÎ5”’¨¹uÚÛ|´ÓÓc§{O—ü1•ªxsÃZ…ÊÏy¡Ã3¸Ë2Èé» ‘ƒÎ äžÜðA§cáOéúÛ4ý5-fŒï„ù¬ûô.Ç Üsž•Ò¾•wo<¶Ÿ"¬¡º|£
î2sÇ¡éE²ÉFѱrU°dÜ6œ¨ mc†Îxë׺Þ'0²¡Rr„{j¾í·è›µ÷)º·å–‹î2|I®Y¼ºÍË·–ÃÆàã£'óÆxƒOÆÞ&>\lóÌxP Xc¸ì Sþ5§qà/ê>#žÞW¸if$\3 ® ûÄ“ùŽÕê¾ð<Ó‹H¶óÏ" å·( á‘€:ã†8Ï=+ꨬUA×ÃËÚT’ÑÞöù¥¢]{»ms¥F0\ÑÕ—ô}&ÛB´ƒOŽÚ+›xíÄÀ1
,v± žIëíZ0ǧ™3í2®0ทp9öÝÔž)ÓZËoq/Ú“‘L ²ŒmùŽï‘Ó9§[Û#Ä‘\ÞB¬Çs [;à à«g‚2ôòªœÝV§»·¯/[uó½õÛï¾
/šÍ}öüÿ «=x»HŸÂÞ.™ ÌQùŸh´‘#a$‚'¡u<Š›Æ>2>+ƒLSiöwµFó1!eg`£åœ ÷ëÛö}Á¿ÛVÙêv $¬ƒ|,s÷z€ð΃¨x÷ÅD\ÜŒÞmåÔ„ ˆ o| :{ÇÓ¶–òÁn!´0Ål€, ƒ ( ÛŒŒc¶rsšæ,4‹MÛOH!@¢ ÇŽ„`å²9ÝÃw;AÍt0®¤¡…¯ØÄ.Àìí´ƒ‘ßñ5Í,Óëu-ÈÔc¢KÃÓ£òÖ̺U.õL¯0…%2È—"~x
‚[`có±nHàŽyàö™¥keˆìŒÛFç{(Ø©†`Jã#Žwg<“:ÚÉ;M
^\yhûX‡vB·÷zrF?§BÊÔ/s<ÐÈB)Û± ·ÍÔwç5Âã:så§e{mѤï«Òíh—]Wm4âí¿ùþW4bC3¶ª¾Ùr$pw`àädzt!yŠI„hÂîàM)!edŒm'æ>Ç?wzºKìcŒ´¯Ìq6fp$)ãw¡éUl`µ»ARAˆÝÕgr:äŒgƒéé[Ôö±”iYs5Ýï«ÙG—K=þF’æMG«óÿ `ŠKɦuOQ!ÕåŒ/ÎGÞ`@ËqÕzdõâ«Ê/Ö(ƒK´%ŽbMüåÜŸö—>¤óŒŒV‘°„I¢Yž#™¥ùÏÊ@8
œgqöö5ª4vד[¬(q cò¨À!FGaÁõõ¯?§†¥ÏU½í¿WªZ$úyú½Žz×§Éþ?>Ã×È•6°{™™ŽÙ.$`ÎUœ…çè ' ¤r$1Ø(y7 ðV<ž:È ÁÎMw¾Â'Øb§øxb7gãО½óÉÊë²,i„Fȹ£§8ãä½k¹¥¦ê/ç{ïê驪2œ/«ü?¯Ô›ìñÜ$þeýœRIåŒg9Ác’zrrNO bÚi¢
ѺË/$,“ª¯Ýä;Œ× ´<ÛÑn³IvŸb™¥ nm–ÄŸ—nÝÀãŽ3ëÍG,.öó³˜Ù£¹uÊÌrŠ[<±!@Æ:c9ÅZh
ì’M5ÄìÌ-‚¼ëÉùqŽGì9¬á ;¨A-ž—évþÖ–^ON·Ô”ŸEý}ú×PO&e[]ÒG¸˜Ûp ƒÃà/Ë·8ûÀ€1ž@¿ÚB*²¼ñì8@p™8Q“žÆH'8«I-%¸‚
F»“åó6°Uù|¶Ú¸ã ò^Äw¥ŠÖK–1ÜÝK,Žddlí²0PÀü“×ükG…¯U«·¶–´w¶ŽÍ¾©yÞú[Zös•¯Á[™6°
¨¼ÉVæq·,#
ìãï‘×8îry®A››¨,ãc66»Ë´ã'æÉù?t}¢æH--Òá"›|ˆ¬[í 7¶ö#¸9«––‹$,+Ëqœ\Êøc€yê^ݸÄa°«™B-9%«×®‹V´w~vÜTéꢷþ¼ˆ%·¹• ’[xç•÷2gØS?6åÀÚ õ9É#š@÷bT¸º²C*3Bá¤òÎA9 =úU§Ó"2Ãlá0iÝIc‚2Î@%öç94ùô»'»HÄ¥Ô¾@à Tp£šíx:úÊ:5eºßMý×wµ›Ó_+šº3Ýyvÿ "ºÇ<ÂI>Õ1G·Ë«È«É# àÈÇ øp Jv·šæDûE¿›†Ë’NFr2qŸ½ÇAÜšu•´éí#Ħ8£2”Ú2Ã/€[ÎTr;qŠz*ý’Îþ(≠;¡TÆâ›;ºÿ àçœk‘Þ8¾Uª¾íé{^×IZéwÓkXÉûÑZo¯_øo×È¡¬ â–ÞR§2„‚Àœü½ùç® SVa†Âüª¼±D‘ŒísŸàä|ä2 æ[‹z”¯s{wn„ÆmáóCO+†GO8Ïeçåº`¯^¼ðG5f{Xžä,k‰<á y™¥voÆ éÛõëI=œ1‹éíÔÀÑ)R#;AÂncäŽ:tÏ#¶TkB.0Œ-ÖÞZÛgumß}fÎJÉ+#2êÔP£žùÈÅi¢%œ3P*Yƒò‚A쓎2r:ƒÐúñiRUQq‰H9!”={~¼“JŽV¥»×²m.ÛߺiYl¾òk˜gL³·rT•
’…wHÁ6ä`–Î3ùÌ4Øe³†&òL‘•%clyîAÂäà0 žüç$[3uŘpNOÀÉ=† cï{rYK
ååä~FÁ
•a»"Lär1Ó¯2Äõæ<™C•.fÕ»è¥~½-¿g½Â4¡{[ør¨¶·Žõäx¥’l®qpwÇ»8ärF \cޏܯÓ-g‚yciÏÀ¾rÎwèØÈ#o°Á9ã5¢šfÔxÞæfGusÏÌJÿ µ×œ/LtãÅT7²¶w,l
ɳ;”eúà·¨çîŒsÜgTÃS¦^ '~‹®›¯+k÷ZÖd©Æ*Ó[Ü«%Œk0ŽXƒ”$k#Ȩ P2bv‘ƒŸáÇ™ÆÕb)m$É*8óLE‘8'–ÜN Úyàúô+{uº±I'wvš4fÜr íì½=úuú
sFlìV$‘ö†HÑù€$§ õ=½¸«Ž]
:Ž+•¦ïmRþ½l´îÊT#nkiøÿ _ðÆT¶7Ò½ºÒ£Î¸d\ã8=yãŽÜäR{x]ZâÚé#¸r²#»ÎHÆ6õ ç® ÎFkr;sºÄ.&;só±Ç9êH÷ýSšÕtÐU¢-n Ì| vqœ„{gŒt§S.P‹’މ_[;m¥ÞZýRûÂX{+¥úü¼ú•-àÓ7!„G"“´‹žƒnrYXã¸îp éœ!ÓoPÌtÑ (‰Þ¹é€sÓ#GLçÕšÑnJý¡!‘Tä#“ß?îýp}xÇ‚I¥Õn#·¸–y'qó@r[ Êô÷<ÔWÃÓ¢áN¥4Ô’I&ݼ¬¬¼ÞºvéÆ
FQV~_ÒüJÖÚt¥¦Xá3BÄP^%ÈÎW-×c¡ú©¤·Iþèk¥š?–UQåIR[’O 5x\ÉhÆI¶K4«2ùªŠŒ<¼óœçØ`u«‚Í.VHä€ Ëgfx''9ÆI#±®Z8
sISºku¢ßÞ]úk»Jößl¡B.Ü»ÿ MWe
°·Ž%šêɆ¼»Âù³´œ O¿cÐÓÄh©"ÛÜÏ.ÖV’3nüÄmnq[ŒòznšÖ>J¬òˆæ…qýØP Ž:ä7^0yëWšÍ_79äoaÈ °#q0{ää×mœy”R{vÒÞ¶ÚÏe¥“ÚÆÐ¥Ì®—õýjR •íç›Ìb„+JyÜØÙ•Ç]¿Ôd þËOL²”9-Œ—õÃc'æÝלçÚ²ìejP“½
âù°¨†ðqòädЃÉäÖÜj÷PÇp“ÍšŠå«‘î
<iWNsmª»¶vÓz5»ûì:Rs\Ðßôû×uÔÿÙ