From 9c546984af162bcadfe9351b70bbb73ff5789a3d Mon Sep 17 00:00:00 2001
From: Orestis <orestis.malaspinas@pm.me>
Date: Mon, 12 Dec 2022 18:00:13 +0100
Subject: [PATCH] added cours 10

---
 slides/cours_10.md                         | 553 ++++++++++++++++++
 slides/figs/Singly-linked-list.svg         | 638 +++++++++++++++++++++
 slides/figs/fig_empty_queue_insert.png     | Bin 0 -> 13624 bytes
 slides/figs/fig_non_empty_queue_insert.png | Bin 0 -> 20622 bytes
 slides/figs/fig_queue_extract.png          | Bin 0 -> 19932 bytes
 slides/figs/fig_queue_extract_one.svg      | 298 ++++++++++
 slides/figs/fig_queue_representation.png   | Bin 0 -> 7251 bytes
 7 files changed, 1489 insertions(+)
 create mode 100644 slides/cours_10.md
 create mode 100644 slides/figs/Singly-linked-list.svg
 create mode 100644 slides/figs/fig_empty_queue_insert.png
 create mode 100644 slides/figs/fig_non_empty_queue_insert.png
 create mode 100644 slides/figs/fig_queue_extract.png
 create mode 100644 slides/figs/fig_queue_extract_one.svg
 create mode 100644 slides/figs/fig_queue_representation.png

diff --git a/slides/cours_10.md b/slides/cours_10.md
new file mode 100644
index 0000000..6d34021
--- /dev/null
+++ b/slides/cours_10.md
@@ -0,0 +1,553 @@
+---
+title: "Piles et files d'attente"
+date: "2021-12-08"
+patat:
+  eval:
+    tai:
+      command: fish
+      fragment: false
+      replace: true
+    ccc:
+      command: fish
+      fragment: false
+      replace: true
+  images:
+    backend: auto
+---
+
+# Rappel
+
+## Qu'est-ce qu'une pile?
+
+. . .
+
+* Structure de données LIFO.
+
+## Quelles fonctionnalités?
+
+. . .
+
+1. Empiler (push): ajouter un élément sur la pile.
+2. Dépiler (pop): retirer l'élément du sommet de la pile et le retrouner.
+3. Liste vide? (is_empty?).
+4. Jeter un oeil (peek): retourner l'élément du sommet de la pile (sans le dépiler).
+5. Nombre d'éléments (length).
+
+# Le tri à deux piles (3/3)
+
+## Exercice: trier le tableau `[2, 10, 5, 20, 15]`
+
+```C
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+# La calculatrice (1/8)
+
+## Vocabulaire
+
+```C
+2 + 3 = 2 3 +,
+```
+
+`2` et `3` sont les *opérandes*, `+` l'*opérateur*.
+
+. . .
+
+## La notation infixe
+
+```C
+2 * (3 + 2) - 4 = 6.
+```
+
+## La notation postfixe
+
+```C
+2 3 2 + * 4 - = 6.
+```
+
+## Exercice: écrire `2 * 3 * 4 + 2` en notation `postfixe`
+
+. . .
+
+```C
+2 3 4 * * 2 + = (2 * (3 * 4)) + 2.
+```
+
+# La calculatrice (2/8)
+
+## De infixe à post-fixe
+
+* Une *pile* est utilisée pour stocker *opérateurs* et *parenthèses*.
+* Les opérateurs on des *priorités* différentes.
+
+```C
+^   : priorité 3
+* / : priorité 2
++ - : priorité 1
+( ) : priorité 0 // pas un opérateur mais bon
+```
+
+
+# La calculatrice (3/8)
+
+## De infixe à post-fixe: algorithme
+
+* On lit l'expression infixe de gauche à droite.
+
+* On examine le prochain caractère de l'expression infixe.
+    * Si opérande, le placer dans l'expression du résultat.
+    * Si parenthèse le mettre dans la pile (priorité 0).
+    * Si opérateur, comparer sa priorité avec celui du sommet de la pile:
+        * Si sa priorité est plus élevée, empiler.
+        * Sinon dépiler l'opérateur de la pile dans l'expression du résultat et
+          recommencer jusqu'à apparition d'un opérateur de priorité plus faible
+          au sommet de la pile (ou pile vide).
+    * Si parenthèse fermée, dépiler les opérateurs du sommet de la pile et les
+      placer dans l'expression du résultat, jusqu'à ce qu'une parenthèse
+      ouverte apparaisse au sommet, dépiler également la parenthèse.
+    * Si il n'y a pas de caractère dans l'expression dépiler tous les
+      opérateurs dans le résultat.
+
+# La calculatrice (4/8)
+
+## De infixe à post-fixe: exemple
+
+```C
+Infixe              Postfixe            Pile    Priorité
+((A*B)/D-F)/(G+H)   Vide                Vide    Néant
+ (A*B)/D-F)/(G+H)   Vide                (       0
+  A*B)/D-F)/(G+H)   Vide                ((      0
+   *B)/D-F)/(G+H)   A                   ((      0
+    B)/D-F)/(G+H)   A                   ((*     2
+     )/D-F)/(G+H)   AB                  ((*     2
+      /D-F)/(G+H)   AB*                 (       0
+       D-F)/(G+H)   AB*                 (/      2
+        -F)/(G+H)   AB*D                (/      2
+         F)/(G+H)   AB*D/               (-      1
+          )/(G+H)   AB*D/F              (-      1
+           /(G+H)   AB*D/F-             Vide    Néant
+```
+
+# La calculatrice (5/8)
+
+## De infixe à post-fixe: exemple
+
+```C
+Infixe              Postfixe            Pile    Priorité
+((A*B)/D-F)/(G+H)   Vide                Vide    Néant
+--------------------------------------------------------
+           /(G+H)   AB*D/F-             Vide    Néant
+            (G+H)   AB*D/F-             /       2
+             G+H)   AB*D/F-             /(      0
+              +H)   AB*D/F-G            /(      0
+               H)   AB*D/F-G            /(+     1
+                )   AB*D/F-GH           /(+     1
+             Vide   AB*D/F-GH+          /       2
+             Vide   AB*D/F-GH+/         Vide    Néant
+```
+
+# La calculatrice (6/8)
+
+\footnotesize
+
+## Exercice: écrire le code et le poster sur matrix
+
+* Quelle est la signature de la fonction?
+
+. . .
+
+```C
+char *infix_to_postfix(char* infix) { // init and alloc stack and postfix
+    for (size_t i = 0; i < strlen(infix); ++i) {
+        if (is_operand(infix[i])) { 
+            // we just add operands in the new postfix string
+        } else if (infix[i] == '(') { 
+            // we push opening parenthesis into the stack
+            stack_push(&s, infix[i]); 
+        } else if (infix[i] == ')') { 
+            // we pop everything into the postfix
+        } else if (is_operator(infix[i])) {
+            // this is an operator. We add it to the postfix based 
+            // on the priority of what is already in the stack and push it
+        }    
+    } 
+    // pop all the operators from the s at the end of postfix
+    // and end the postfix with `\0`
+    return postfix;
+} 
+```
+
+
+# La calculatrice (7/8)
+
+## Évaluation d'expression postfixe: algorithme
+
+* Chaque *opérateur* porte sur les deux opérandes qui le précèdent.
+* Le *résultat d'une opération* est un nouvel *opérande* qui est remis au
+  sommet de la pile.
+
+## Exemple
+
+```C
+2 3 4 + * 5 - = ?
+```
+
+* On parcours de gauche à droite:
+
+```C
+Caractère lu        Pile opérandes
+    2               2
+    3               2, 3
+    4               2, 3, 4
+    +               2, (3 + 4)
+    *               2 * 7
+    5               14, 5
+    -               14 - 5 = 9
+```
+
+# La calculatrice (8/8)
+
+## Évaluation d'expression postfixe: algorithme
+
+1. La valeur d'un opérande est *toujours* empilée.
+2. L'opérateur s'applique *toujours* au 2 opérandes au sommet.
+3. Le résultat est remis au sommet.
+
+## Exercice: écrire l'algorithme en C (et poster sur matrix)
+
+. . .
+
+```C
+bool evaluate(char *postfix, double *val) { // init stack
+    for (size_t i = 0; i < strlen(postfix); ++i) {
+        if (is_operand(postfix[i])) {
+            stack_push(&s, postfix[i]);
+        } else if (is_operator(postfix[i])) {
+            double rhs = stack_pop(&s);
+            double lhs = stack_pop(&s);
+            stack_push(&s, op(postfix[i], lhs, rhs));
+        }    
+    }
+    return stack_pop(&s);
+}
+```
+
+
+
+# La liste chaînée et pile (1/6)
+
+## Structure de données
+
+* Chaque élément de la liste contient:
+    1. une valeur,
+    2. un pointeur vers le prochain élément.
+* La pile est un pointeur vers le premier élément.
+
+![Un exemple de liste chaînée.](figs/Singly-linked-list.svg){width=80%}
+
+# La liste chaînée et pile (2/6)
+
+## Une pile-liste-chaînée
+
+```C
+typedef struct _element {
+    int data;
+    struct _element *next;
+} element;
+typedef element* stack;
+```
+
+## Fonctionnalités?
+
+. . .
+
+```C
+void stack_create(stack *s); // *s = NULL;
+void stack_destroy(stack *s);
+void stack_push(stack *s, int val);
+void stack_pop(stack *s, int *val);
+void stack_peek(stack s, int *val);
+bool stack_is_empty(stack s); // reutrn NULL == stack;
+```
+
+# La liste chaînée et pile (3/6)
+
+## Empiler? (faire un dessin)
+
+. . .
+
+```C
+
+
+
+
+
+
+
+```
+
+## Empiler? (le code ensemble)
+
+. . .
+
+```C
+void stack_push(stack *s, int val) {
+    element *elem = malloc(sizeof(*elem));
+    elem->data = val;
+    elem->next = *s;
+    s = elem;
+}
+```
+
+# La liste chaînée et pile (4/6)
+
+## Jeter un oeil? (faire un dessin)
+
+. . .
+
+```C
+
+
+
+
+
+
+
+```
+
+## Jeter un oeil? (le code ensemble)
+
+. . .
+
+```C
+void stack_peek(stack s, int *val) {
+    *val = s->data;
+}
+```
+
+# La liste chaînée et pile (5/6)
+
+## Dépiler? (faire un dessin)
+
+. . .
+
+```C
+
+
+
+
+
+
+
+```
+
+## Dépiler? (le code ensemble)
+
+. . .
+
+```C
+void stack_pop(stack *s, int *val) {
+    stack_peek(*s, val);
+    element *tmp = *s;
+    *s = (*s)->next;
+    free(tmp);
+    return val;
+}
+```
+
+# La liste chaînée et pile (6/6)
+
+## Détruire? (faire un dessin)
+
+. . .
+
+```C
+
+
+
+
+
+
+
+```
+
+## Détruire? (le code ensemble)
+
+. . .
+
+```C
+void stack_destroy(stack *s) {
+    while (!stack_is_empty(*s)) {
+        int val = stack_pop(s);
+    }
+}
+```
+
+# La file d'attente (1/2)
+
+* Structure de données abstraite permettant le stockage d'éléments.
+* *FIFO*: First In First Out, ou première entrée première sortie.
+* Analogue de la vie "réelle"":
+    * File à un guichet,
+    * Serveur d'impressions,
+    * Mémoire tampon, ...
+
+## Fonctionnalités
+ 
+ . . .
+
+* Enfiler, ajouter un élément à la fin de la file.
+* Défiler, extraire un élément au devant de la file.
+* Tester si la file est vide.
+
+. . .
+
+* Lire l'élément de la fin de la file.
+* Lire l'élément du devant de la file.
+* Créer une liste vide.
+* Détruire une liste vide.
+
+# La file d'attente (2/2)
+
+## Implémentation possible
+
+* La structure file, contient un pointeur vers la tête et un vers la queue.
+* Entre les deux, les éléments sont stockés dans une liste chaînée (comme une
+  pile).
+
+![Illustration d'une file
+d'attente.](figs/fig_queue_representation.png)
+
+## Structure de données en C?
+
+. . .
+
+```C
+txpedef struct _element {  // Elément de liste
+   int data;
+   struct _element* next;
+} element;
+
+typedef struct _queue {    // File d'attente:
+   element* head;  //    tête de file d'attente
+   element* tail;  //    queue de file d'attente
+} queue;
+```
+
+# Fonctionnalités d'une file d'attente
+
+## Creation et consultations
+
+. . .
+
+```C
+void queue_init(queue *fa); // head = tail = NULL
+bool queue_is_empty(queue fa); // fa.head == fa.tail == NULL
+int queue_tail(queue fa); // return fa.head->data
+int queue_head(queue fa); // return fa.tail->data
+```
+
+## Manipulations et destruction
+
+. . .
+
+```C
+void queue_enqueue(queue *fa, int val); // adds an element before the tail
+int queue_dequeue(queue *fa); // removes the head and returns stored value
+void queue_destroy(queue *fa); // dequeues everything into oblivion
+```
+
+# Enfilage
+
+## Deux cas différents:
+
+1. La file est vide (faire un dessin):
+
+. . .
+
+![Insertion dans une file d'attente vide.](./figs/fig_empty_queue_insert.png){width=40%}
+
+2. La file n'est pas vide (faire un dessin):
+
+. . .
+
+![Insertion dans une file d'attente non-vide.](./figs/fig_non_empty_queue_insert.png){width=70%}
+
+# Enfilage
+
+## Live (implémentation)
+
+. . .
+
+```C
+void queue_enqueue(queue *fa, int val) {
+    element elmt = malloc(sizeof(*elmt));
+    elmt->data = val;
+    elmt->next = NULL;
+    if (queue_is_empty(*fa)) {
+        fa->head = elmt;
+        fa->tail = elmt;
+    } else {
+        fa->tail->next = elmt;
+        fa->tail = elmt;
+    }
+}
+```
+
+# Défilage
+
+## Trois cas différents
+
+1. La file a plus d'un élément (faire un dessin):
+
+. . .
+
+![Extraction d'une file d'attente](./figs/fig_queue_extract.png){width=80%}
+
+2. La file un seul élément (faire un dessin):
+
+. . .
+
+![Extraction d'une file d'attente de longueur 1.](./figs/fig_queue_extract_one.svg){width=25%}
+
+
+3. La file est vide (problème)
+
+# Défilage
+
+## Live (implémentation)
+
+. . .
+
+```C
+int queue_dequeue(queue *fa) {
+    elmt = fa->head;
+    int val = elmt->data;
+    fa->head = fa->head->next;
+    free(elmt);
+    if (NULL == fa->head) {
+        fa->tail = NULL;
+    }
+    return val;
+}
+```
+
+. . .
+
+## Problème avec cette implémentation?
+
diff --git a/slides/figs/Singly-linked-list.svg b/slides/figs/Singly-linked-list.svg
new file mode 100644
index 0000000..dae4ee1
--- /dev/null
+++ b/slides/figs/Singly-linked-list.svg
@@ -0,0 +1,638 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   width="271.77063mm"
+   height="108.99983mm"
+   viewBox="0 0 271.77063 108.99983"
+   version="1.1"
+   id="svg92"
+   sodipodi:docname="Singly-linked-list.svg"
+   inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20, custom)"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:svg="http://www.w3.org/2000/svg">
+  <sodipodi:namedview
+     id="namedview94"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     inkscape:pagecheckerboard="0"
+     inkscape:document-units="mm"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:zoom="0.16191253"
+     inkscape:cx="382.92281"
+     inkscape:cy="867.75249"
+     inkscape:window-width="944"
+     inkscape:window-height="1022"
+     inkscape:window-x="962"
+     inkscape:window-y="44"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="layer1" />
+  <defs
+     id="defs89">
+    <marker
+       style="overflow:visible"
+       id="DotM"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="DotM"
+       inkscape:isstock="true">
+      <path
+         transform="matrix(0.4,0,0,0.4,2.96,0.4)"
+         style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
+         d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z"
+         id="path7259" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="Arrow2Lend"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Lend"
+       inkscape:isstock="true">
+      <path
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.625;stroke-linejoin:round"
+         id="path7216" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="Arrow1Lstart"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow1Lstart"
+       inkscape:isstock="true">
+      <path
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
+         d="M 0,0 5,-5 -12.5,0 5,5 Z"
+         id="path7195" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="Arrow2Lend-7"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Lend"
+       inkscape:isstock="true">
+      <path
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.625;stroke-linejoin:round"
+         id="path7216-5" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="DotM-0"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="DotM"
+       inkscape:isstock="true">
+      <path
+         transform="matrix(0.4,0,0,0.4,2.96,0.4)"
+         style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
+         d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z"
+         id="path7259-9" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="Arrow2Lend-3"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Lend"
+       inkscape:isstock="true">
+      <path
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.625;stroke-linejoin:round"
+         id="path7216-6" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="Arrow2Lend-7-0"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Lend"
+       inkscape:isstock="true">
+      <path
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.625;stroke-linejoin:round"
+         id="path7216-5-6" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="DotM-8"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="DotM"
+       inkscape:isstock="true">
+      <path
+         transform="matrix(0.4,0,0,0.4,2.96,0.4)"
+         style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
+         d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z"
+         id="path7259-97" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="Arrow2Lend-36"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Lend"
+       inkscape:isstock="true">
+      <path
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.625;stroke-linejoin:round"
+         id="path7216-1" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="DotM-8-4"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="DotM"
+       inkscape:isstock="true">
+      <path
+         transform="matrix(0.4,0,0,0.4,2.96,0.4)"
+         style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
+         d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z"
+         id="path7259-97-5" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="Arrow2Lend-36-0"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Lend"
+       inkscape:isstock="true">
+      <path
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.625;stroke-linejoin:round"
+         id="path7216-1-3" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="DotM-0-6"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="DotM"
+       inkscape:isstock="true">
+      <path
+         transform="matrix(0.4,0,0,0.4,2.96,0.4)"
+         style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
+         d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z"
+         id="path7259-9-1" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="Arrow2Lend-3-0"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Lend"
+       inkscape:isstock="true">
+      <path
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.625;stroke-linejoin:round"
+         id="path7216-6-6" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="Arrow2Lend-7-0-3"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Lend"
+       inkscape:isstock="true">
+      <path
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.625;stroke-linejoin:round"
+         id="path7216-5-6-2" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="DotM-8-4-7"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="DotM"
+       inkscape:isstock="true">
+      <path
+         transform="matrix(0.4,0,0,0.4,2.96,0.4)"
+         style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
+         d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z"
+         id="path7259-97-5-7" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="Arrow2Lend-36-0-6"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Lend"
+       inkscape:isstock="true">
+      <path
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.625;stroke-linejoin:round"
+         id="path7216-1-3-4" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="DotM-8-3"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="DotM"
+       inkscape:isstock="true">
+      <path
+         transform="matrix(0.4,0,0,0.4,2.96,0.4)"
+         style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
+         d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z"
+         id="path7259-97-6" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="Arrow2Lend-36-7"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Lend"
+       inkscape:isstock="true">
+      <path
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.625;stroke-linejoin:round"
+         id="path7216-1-5" />
+    </marker>
+  </defs>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-0.36967225,-2.5050807)">
+    <g
+       id="g3580">
+      <g
+         id="g24207">
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.5833px;line-height:1.25;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0px;stroke-width:0.264583"
+           x="36.682896"
+           y="38.202869"
+           id="text6474-3"><tspan
+             sodipodi:role="line"
+             id="tspan6472-6"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583"
+             x="36.682896"
+             y="38.202869">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.5833px;line-height:1.25;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0px;stroke-width:0.264583"
+           x="-0.73103225"
+           y="10.545908"
+           id="text17747"><tspan
+             sodipodi:role="line"
+             id="tspan17745"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583"
+             x="-0.73103225"
+             y="10.545908">stack</tspan></text>
+        <path
+           style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
+           d="M 12.729453,13.750898 C 12.330364,25.260185 17.227241,33.50031 33.621646,34.643091"
+           id="path18808"
+           sodipodi:nodetypes="cc" />
+      </g>
+    </g>
+    <g
+       id="g3643"
+       transform="translate(-8.1840905,2.5045546)">
+      <rect
+         style="fill:none;stroke:#000000;stroke-width:1;stroke-opacity:1"
+         id="rect140-29"
+         width="31.621361"
+         height="15.888521"
+         x="140.73814"
+         y="23.853914" />
+      <path
+         style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="M 164.53454,24.18415 V 39.63821"
+         id="path1501-3" />
+      <text
+         xml:space="preserve"
+         style="font-size:10.5833px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;stroke-width:0.264583"
+         x="145.9039"
+         y="35.655811"
+         id="text6474-19"><tspan
+           sodipodi:role="line"
+           id="tspan6472-4"
+           style="stroke-width:0.264583"
+           x="145.9039"
+           y="35.655811">21</tspan></text>
+      <path
+         style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#DotM-8);marker-end:url(#Arrow2Lend-36)"
+         d="m 168.072,31.56383 h 15.84399"
+         id="path7136-78" />
+      <g
+         id="g43819"
+         transform="translate(135.35753,-128.52638)">
+        <rect
+           style="fill:none;stroke:#000000;stroke-width:1;stroke-opacity:1"
+           id="rect140-2"
+           width="31.621361"
+           height="15.888521"
+           x="49.971462"
+           y="152.42796" />
+        <path
+           style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           d="m 73.767859,152.75821 v 15.45406"
+           id="path1501-6" />
+        <text
+           xml:space="preserve"
+           style="font-size:10.5833px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;stroke-width:0.264583"
+           x="55.137226"
+           y="164.22986"
+           id="text6474-1"><tspan
+             sodipodi:role="line"
+             id="tspan6472-8"
+             style="stroke-width:0.264583"
+             x="55.137226"
+             y="164.22986">17</tspan></text>
+        <path
+           style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#DotM-0);marker-end:url(#Arrow2Lend-3)"
+           d="M 77.305319,160.13789 H 93.149313"
+           id="path7136-7" />
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.5833px;line-height:1.25;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0px;stroke-width:0.264583"
+           x="95.359497"
+           y="164.22469"
+           id="text6474-3-5-9"><tspan
+             sodipodi:role="line"
+             id="tspan6472-6-6-2"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583"
+             x="95.359497"
+             y="164.22469">0</tspan></text>
+      </g>
+      <g
+         id="g24758-0"
+         transform="translate(97.719115,-51.525442)">
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.5833px;line-height:1.25;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0px;stroke-width:0.264583"
+           x="6.4283442"
+           y="59.566795"
+           id="text17747-2-2"><tspan
+             sodipodi:role="line"
+             id="tspan17745-9-3"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583"
+             x="6.4283442"
+             y="59.566795">stack</tspan></text>
+        <path
+           style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Lend-7-0)"
+           d="M 19.888829,62.771786 C 19.48974,74.281073 24.386617,82.521198 40.781022,83.663979"
+           id="path18808-1-7"
+           sodipodi:nodetypes="cc" />
+      </g>
+    </g>
+    <g
+       id="g3624"
+       transform="translate(-7.3070295,-13.303108)">
+      <g
+         id="g702"
+         transform="translate(-1.5543969,-0.09757996)">
+        <rect
+           style="fill:none;stroke:#000000;stroke-width:1;stroke-opacity:1"
+           id="rect140-29-3"
+           width="31.621361"
+           height="15.888521"
+           x="140.7131"
+           y="88.780045" />
+        <path
+           style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           d="M 164.50949,89.110281 V 104.56434"
+           id="path1501-3-5" />
+        <text
+           xml:space="preserve"
+           style="font-size:10.5833px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;stroke-width:0.264583"
+           x="145.87886"
+           y="100.58194"
+           id="text6474-19-6"><tspan
+             sodipodi:role="line"
+             id="tspan6472-4-2"
+             style="stroke-width:0.264583"
+             x="145.87886"
+             y="100.58194">12</tspan></text>
+        <path
+           style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#DotM-8-3);marker-end:url(#Arrow2Lend-36-7)"
+           d="m 168.04695,96.489961 h 15.84399"
+           id="path7136-78-9" />
+      </g>
+      <rect
+         style="fill:none;stroke:#000000;stroke-width:1;stroke-opacity:1"
+         id="rect140-29-6"
+         width="31.621361"
+         height="15.888521"
+         x="183.78406"
+         y="88.682465" />
+      <path
+         style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="m 207.58045,89.0127 v 15.45406"
+         id="path1501-3-1" />
+      <text
+         xml:space="preserve"
+         style="font-size:10.5833px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;stroke-width:0.264583"
+         x="188.94981"
+         y="100.48436"
+         id="text6474-19-5"><tspan
+           sodipodi:role="line"
+           id="tspan6472-4-5"
+           style="stroke-width:0.264583"
+           x="188.94981"
+           y="100.48436">21</tspan></text>
+      <path
+         style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#DotM-8-4);marker-end:url(#Arrow2Lend-36-0)"
+         d="M 211.11791,96.39238 H 226.9619"
+         id="path7136-78-4" />
+      <g
+         id="g43819-7"
+         transform="translate(178.40344,-63.69783)">
+        <rect
+           style="fill:none;stroke:#000000;stroke-width:1;stroke-opacity:1"
+           id="rect140-2-6"
+           width="31.621361"
+           height="15.888521"
+           x="49.971462"
+           y="152.42796" />
+        <path
+           style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           d="m 73.767859,152.75821 v 15.45406"
+           id="path1501-6-5" />
+        <text
+           xml:space="preserve"
+           style="font-size:10.5833px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;stroke-width:0.264583"
+           x="55.137226"
+           y="164.22986"
+           id="text6474-1-6"><tspan
+             sodipodi:role="line"
+             id="tspan6472-8-9"
+             style="stroke-width:0.264583"
+             x="55.137226"
+             y="164.22986">17</tspan></text>
+        <path
+           style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#DotM-0-6);marker-end:url(#Arrow2Lend-3-0)"
+           d="M 77.305319,160.13789 H 93.149313"
+           id="path7136-7-3" />
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.5833px;line-height:1.25;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0px;stroke-width:0.264583"
+           x="95.359497"
+           y="164.22469"
+           id="text6474-3-5-9-7"><tspan
+             sodipodi:role="line"
+             id="tspan6472-6-6-2-4"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583"
+             x="95.359497"
+             y="164.22469">0</tspan></text>
+      </g>
+      <g
+         id="g24758-0-5"
+         transform="translate(96.842054,13.303108)">
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.5833px;line-height:1.25;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0px;stroke-width:0.264583"
+           x="6.4283442"
+           y="59.566795"
+           id="text17747-2-2-2"><tspan
+             sodipodi:role="line"
+             id="tspan17745-9-3-5"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583"
+             x="6.4283442"
+             y="59.566795">stack</tspan></text>
+        <path
+           style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Lend-7-0-3)"
+           d="M 19.888829,62.771786 C 19.48974,74.281073 24.386617,82.521198 40.781022,83.663979"
+           id="path18808-1-7-4"
+           sodipodi:nodetypes="cc" />
+      </g>
+    </g>
+    <g
+       id="g3599">
+      <rect
+         style="fill:none;stroke:#000000;stroke-width:1;stroke-opacity:1"
+         id="rect140"
+         width="31.621361"
+         height="15.888521"
+         x="35.965668"
+         y="75.427032" />
+      <path
+         style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="M 59.762066,75.757277 V 91.211331"
+         id="path1501" />
+      <text
+         xml:space="preserve"
+         style="font-size:10.5833px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;stroke-width:0.264583"
+         x="41.131432"
+         y="87.228928"
+         id="text6474"><tspan
+           sodipodi:role="line"
+           id="tspan6472"
+           style="stroke-width:0.264583"
+           x="41.131432"
+           y="87.228928">17</tspan></text>
+      <path
+         style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#DotM);marker-end:url(#Arrow2Lend)"
+         d="M 63.299526,83.136951 H 79.14352"
+         id="path7136" />
+      <text
+         xml:space="preserve"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.5833px;line-height:1.25;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0px;stroke-width:0.264583"
+         x="81.353706"
+         y="87.223755"
+         id="text6474-3-5"><tspan
+           sodipodi:role="line"
+           id="tspan6472-6-6"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583"
+           x="81.353706"
+           y="87.223755">0</tspan></text>
+      <g
+         id="g24758"
+         transform="translate(-7.0295076)">
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.5833px;line-height:1.25;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0px;stroke-width:0.264583"
+           x="6.4283442"
+           y="59.566795"
+           id="text17747-2"><tspan
+             sodipodi:role="line"
+             id="tspan17745-9"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583"
+             x="6.4283442"
+             y="59.566795">stack</tspan></text>
+        <path
+           style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Lend-7)"
+           d="M 19.888829,62.771786 C 19.48974,74.281073 24.386617,82.521198 40.781022,83.663979"
+           id="path18808-1"
+           sodipodi:nodetypes="cc" />
+      </g>
+      <text
+         xml:space="preserve"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.86468px;line-height:1.25;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0px;stroke-width:0.293233"
+         x="35.846004"
+         y="98.283569"
+         id="text26870"><tspan
+           sodipodi:role="line"
+           id="tspan26868"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.86468px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.293233"
+           x="35.846004"
+           y="98.283569">data</tspan></text>
+      <text
+         xml:space="preserve"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.86468px;line-height:1.25;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0px;stroke-width:0.293233"
+         x="64.074135"
+         y="71.651909"
+         id="text26870-2"><tspan
+           sodipodi:role="line"
+           id="tspan26868-7"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.86468px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.293233"
+           x="64.074135"
+           y="71.651909">next</tspan></text>
+      <text
+         xml:space="preserve"
+         style="font-size:10.5833px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;stroke-width:0.264583"
+         x="35.886299"
+         y="111.35505"
+         id="text42316"><tspan
+           sodipodi:role="line"
+           id="tspan42314"
+           style="stroke-width:0.264583"
+           x="35.886299"
+           y="111.35505">element</tspan></text>
+    </g>
+  </g>
+</svg>
diff --git a/slides/figs/fig_empty_queue_insert.png b/slides/figs/fig_empty_queue_insert.png
new file mode 100644
index 0000000000000000000000000000000000000000..62d73bdb4f2aaacb9060748b89575cb0ad1a6f4a
GIT binary patch
literal 13624
zcmeAS@N?(olHy`uVBq!ia0y~yV02?(U|7h(#K6E{(%h)Yz#w|ODkP#LD6w3jpeR2r
zGbdG{q_QAYA+;hije()!*4kO=MLOFjwf?`ZmBv}Xxmo5$$IXK}_4}H$;`D7ZlRRFU
z-DG23VyV`B{@?uncIWFqrmk#Jk6gL)>6;&3x?3;&T)6A|>)J1RckADWpPE1a&-wHA
ze?K>K+lW^7ykB3rzklE7J+=QGJm)_@e*V0DYTdP!^IP}n*X&=kZq5Ab>67QTCRNP;
zKL7swZ$BN*+si!vTtDM}-^X=-PrqL&(384G{IGD@my37n4_7Z;@xS)XpY`?5K6@@6
zt*Y01Z@mBb`=4(f_cQAJKL4>e-n#q#;g5P>O4t1Ho?~~u`uEeHKi+<NxLo$<hf41s
z{|@y!{^ff5{-bsJ)#7i}yXJjz-tp;qK)m}N`;W&C27Rp4`5gP>{*Rq^-XAM3z3Z#D
z)#6pfod?sOF$>z;{d~IHzV80<m+H|ziS37yIVQ`z*eT_mkvNG#e)7J*oKHJ-^^Alb
zsT5CKet7%dAJuo4y)N8%YU=doa}REou>AM)_s_4L|6hOi=bpRR=zH8jm9PJN3j%64
z@}~Oz|D+f6;Jo^>vd6FIe?R#5*U}?yMj7U3rZShA-&1Y-`F^Wt{=CJT+qbKISGzg=
zYh;5!VQ#W<Ncktd-x+q*;Z7R&gpYgGWqe<?Nj~Mk?c~Ibrza$xQCZFwJNvvy{e5Yj
zJ^sx4Du<Gmd1`UKQqflRo>{kgN<h6%l+os#qpM6`TRxkj`#fe-!K&#IK^rG|Yi`|g
zDSOSzsIyzIL`A>V-NMmx^Ky~)+HKdWo-eX3z4mI){?A7^l>1C_o&>td=6><~dB!C7
zS!CMW+;5^`F%Abdf6`jLZriVKvx9DB-afbc&92+;+M}#LE=g9OU-T+-dHv~I>Z|S3
z-(ElSxAxi}_3VdgUhlQ<Z$5T;X^rkfR`q3bCT^TyBdLFifmL>jvAgy11!pwV*R}pQ
zlF=ADYtrUDMs94Eza8xRKW+E>nZHl(v32==|C#O|&Eo!`@Bb(6bYJ;fv3URUxBQXO
ze-GvE;S3TN3KlTBRJUhk`$a$Q#E+WWKQSC>SbFAG@$bMz?`y?wF+b?)<=L7rCrzIF
zsX%W#x6DF+BeC0hw=TRt&cAM#+G^{+c7HY$`Kf<!&;L++_xx4Y=E50va(}gsXuaNd
zAnu)$@%vW}hi;|YR6k2)FnK5&9pSv^%eu8D8P;#w7SEl(z1Zcrea`dEk{VyKt>4`h
zn4jYO@X8kdd;H-GzC_vYoU@~Q;`Fe~Z$6}-Zg|DGMqm1P#993rwwrFwyUfw_)^PVU
zoo_!({=8f_Su^=R*WA}(SJN`h=0|B3?y}Xcm@8g-#@n#CtXyYXY(lL6y}!w8MdLjj
z&nE{qSLZGMF#Y!4?;+Q8(z@%}SK3KSc(a@@Z4$4ms;R4e6mRRccJ*S@?{929PR~qP
z+MYS_gx=<fVhc0sc<UBTc(&x+?(Fn0d2{;N@{QZ=)@+V{RcHTr#k2keGdA51aFe;}
zq^0XVb@4^+-SZ~BoF?>m)tZ})obne`T`EPpCRx~)T14sR=uJ0Q4Lp5Ewf|m3huAXX
z7tu2+-mp3fCY+vIwbV)|H6z#5J}LH{=N>^Lwdg#aThAG$B<sCi7<*#N&GO*gZnG9&
z6P}b|J}K@%ioVx#3qDgh``;F;FFsZ1X4mgXydQ2RvqQ#!Bjoq8?|TAgC|^8iz9*f3
zR>O&&&B<ElPv&m_9b~iMz``Sy|Ib`)O;s(D(^|(^xM%+VkXxM%-(9sCet+D?rTbrJ
zuh-AOcd81`HliZz0>YQP8e3d!a}2l{G}*7r)ZLWFSQzV7Y09Oo_o_o@>a$w2Dhsju
zJd#ti0w%TJE;yQ3xpDVIy>+JCSNI%12ro>UTqN*!``0sZDu+&+ZK%GQ)a@**Q0cU9
zul(m$o5ss?!efH|zFoUBNJ@51Zll$wr8XNrZQyJaaVTY)!!o7r%>yORQnS-c#?p<<
z1vdk}mY#olT*W&5+}@WlQI~DK_+1*bUQe?Of3y7BxxC{iYk#<k)JQK+3$Sj!bb408
zt21Xeb!Ty^9AnOD<uY{FT_Sk%&MXnn)zu62S03HK*?YfcpRiAdx~_kyQ;ej_saCV?
zRY~VwMppM02$XG>?fBqoC()bbnDx$)zvy7<#*nx>CqF60RBy=5%E>*o`K#I6lOA%y
z+iov;!o8GdL4@Xtb4rro>Qnt5^Ife~XfkFIou?AgtgM&h_L@Iwr`qBTE7~ef_v~@*
zzh?QxtjUV!=+-KamFt*49xypsSR2D`A$sTJ=O15L%<NY>tTJAoxpcYLl^gc_u3y<2
z1<&a^*t|aDl-tPHTystS@P|JV>>K0Py-d-XBXzF2JA}b!iOIpILY)gdObd4IW9OAx
z{xLJ*?@5Pm8)KVZ99wyG#ly8s>w70L?hNz$V0+h5<yI<xxcl>R_fvXb{MUW|V!A4d
zqv;ld#Kw8ax{sW70~(tzUwg-$E*-Mb_{s6i;`O(To@`+J%C+FR&-&KxUGr0FyjiF3
zH~itO=5bW<kMYxqfo^>hu6=kiEzQnwiJ8{=o>xA<+Se3ECT^bHslLo0{n*mBMosQ5
zZf~9DZQh==V)F8oPcJh5^;};2`NkCAuiwI3J)P9n9{G0C&WHOQzZJ{TGLI=Am11{<
zU2fWG>R)V?sdc=+`=7ekk<#S(M&4-|rZHCqvi2$|#>c&$e#1JlW9N=_$IdZlNrp}2
zS8jZ7Qo*v~WagcW+7l%ji(1`RnO*%k$Md_c$FD7MDqdPLwE-15RZn}o7)-U+F<Kv}
z%1}L`62&T7)zR|EG`#1tWRvlehULd?Ezg=9d0_lR`dIo#Lyl)cK^sh0=iXqlUtlYd
z>hoZ7^88EkuS!)tbdFmnP2IMjR&Uxjr(KP6TJ=^=QPr_pdTD~_!k)*SRR<sIe96A(
zC&v?D@QsP(`pyqCXRp7MIqf2Y=a1yoeUFyh_G_QU_r~{uhOvU<I!(ur7jFV`-+HaT
zwA)&Ihv9@ny<4ssC^}{?i1{k5;?<NLwR4m5(pBC^Eg!H2nMSDuI#|}Os&-tzO6CM}
z&*9+Di7eNaAFhjP{$8{8kka||srlIfobyAMXq=9H6#H`hw@-ObfAUu^j9_I*HkGb=
zVIVclNa3Ww>8zyY%3CD`_9gQJf7!oW!MlY~ZKsFEfg`CKY$~ptbkT2+b&}g#uJmGd
znbi(u4*jpXvPbs?h%u}TFi7CuQRYw+_?3x&%bRtH9g8`R9L@4D-~M~@S@x(I%PJ>{
z2K@W<L}y3Jt%-aIt2^#KVLws4qFO%S&V;I48#@;;W?N-W6-m6s)@wTdrhSdf5x#}X
zpRL%m$v9ws%k>GmDNI!%T(7wkw=OSJoR+X(!@Fa(LH7TKL;D*I&iS4H@%!M#mmb}_
zO+~ZTu5VSyVYuRX|Cmqc*HvrOzHobRP5X5uQ{CtNiyJIX0ulu_huW8aYdWX4W`#jq
zgW+1<_g@)o)ISB+zLAS`5OGuNoFNeQWHa;HrdQI*mzgH9Y+AI!f0_^Ptd1zd1A+od
zm)KTvz6$epz1>j0`<3_`H*PcimhI+FR|5C4zI>@~<LoGKp(N>uQ{lxo!eW|naVz!h
zOds-0@hn@M=*RHs#;;eK{LlYtkrLRI>&V-AKUAmF%)nFeu=vtzy<%$jYiF61v2-g;
zwtF$D>tpcoij@@=E8`Ezzu}BHxKl*oR>X{`27d$Ny62pie+Y7jGSpp=d{aF6$?=S?
zp4qy#E_(SlOhV-ScWe_(5D?guu=ZDwqT+Fzi+VZCE0)x^wJ`tqa>F65T(eFz-Z5ff
zLgH5?g}6^AM3SUagWp{aV>)oq;>I@F`dO1*KeJ7<<IGydWmvsWeT&|w1tt>$3Xkk=
z&i&%>P+2dozEx?@s}t`Zy_hBBYck(r)<ez>-xSO@bXF>h&im$eP+;3+p@{}N_wanE
zTl@L4){5wm+n4n>s(ueW_5aJpmTR(c4qZ9T(E(-7-`8HAeCoLOu|xb>H#tNdwzHJ)
z4EHM$d3{jegt>>_y`VD{LaTVD+g`rEZ|%S3uE%<BK7Kv%*yYpgMvm_35}P$AJ_xbT
zP8Q*NuBhUz{I%oG{2#SB;w(Mq^J71A{*jtu^NMAO{<YGb+&wC;tBr&D8>|anueWuK
zP5fq~^>jg(2J;DVj@x4M949xfan;hFz+RLlwfjWgq+M4tSxi{HDrGka@0}pLW?c}+
z$BG#yoU3FwIR6$cZP413lvfv_vum}v$<`bHEw3EuxRkoG?@Lcm{49wtdu;@>wuomP
zR6QjVWS`x5&hvTxGPTSZ%C}~<y2SGzDn7L*=;N1U7lFrJHraudYfpTV{V8x^kz(lg
zbFVtybllL~{dnf<h90ll51}c%r7sT1KVi>h6B2sVu&kvtD}RyE6InYmtvSw3UTz-l
z&h_U%FRTBu)1-XT2ggU57R~?PE#D}9&SHt<+N=qUyKda5ySYOAj-r_FVUzRMCmdC=
z>*Uevdm28q(#5$@>Ck+KcablQr!AGVvfId3d7Nh&^CaJ#)w`MbZ(Pk_3HCns%}nhP
zzcaVV#L_<^N0a@Gz4%UK$<`c?YreLEk^gnBO<r}v{@4v+LN7vs7~bS49A*kyotAZV
zJI6Nh`0T4&+~p=|9q3WMk-@a*h)(XW=c#!e3mG*`4qmu&;wwjQ&jmBF{bp9;u1%i`
zLjGzquW)D1KUlSH{R^87>08YM-pSi5iHq`XSu|@QW4)VWQt5`Qp9$XzjTknyg}Kbg
zJuA5_o|*Hp$%>DHH%jGZGHEu=Rj|6P_ry?HX_ARbol?%N3(bD6tAANkw#Jl4JV{&b
zXwF%9+VjC{Zdn1#Z-NbzS1q0U@W?5~jh0GnLa~Qs-uf!4vUlf97PFIM<!0}8VED!m
zDY56lioceE8~fSczn*KW)XkOBSZJKszsuWxnwxjytBk)o((g@rcw%|DEg40MzBI?Z
z-pHaNxx?PTOUC#qr-KWV`=n_p4on})CaWD(Q=Z1^?<rLC(rsZeyXW6CUzrz}ckC^E
z%OH{POnJ){<x@Rghr<^+WU~plt*$U)VY%JhGn*}iLAs%3@8UZV$!8Rd7R+2Re{G`e
z6b(79X-c*or?S{5yl4nsVrl=&dVVJVJC<Ay9|hMHo+sodm6gh$otM#Bo59%7ae7fn
zgT1`T5BE<By6@MoymvCg;i0IuuT3<c9j~!x@|k(Pa)(tG9cW-U!l_!fY;xtI=?yVg
z{l))f)_C;TC>aVREcxs5-^W|ZH0M+N^fY+`{ZCml%p7n3FsihFt834-|M2Bml8+Re
z&j<=;Hhi7AHRD_ZOWFTvRrBx11;|^Lh)xnwW`8wvh9`5X1NTwR7lF_E+BgIl+&=T1
z4LAAf%y*_^jVy=c&-H8WmVdsuznHCZ!&1q`0s-a^oi@q6(@<Jg-t$h1g|q#OlDU8V
zwpyzkq2Cb<b~_A(ALezgIC;wZ^ZWx}-yOf18+V|8%cIJO;1IWX#mf`JK6X45xHU__
z>)YGgTpuLQdO6Hivq;^xEIKVj{kT2DvT89Sfwbs1LV0X&dEUfGT$y@EC11^-GwytZ
zbZ+O<lUsCDWnN#K(6>mg<X6otYgQ+&f{cQ)5Utn){0D-qFUT&R7BPPgchy5Ksf&FI
zP0jCavNJHstu5!fzFjRk;jHzcil=uEJ~8o4x~X+HYT?3!1^=8hKMCJzN=tlu<8|GK
z_QK_rrr&rk+Vy(NM($&n7ACoOm7_0HSi9OL-(sibIsYf@e_qX$|4(oFqo41V950T!
zVf!&)`j))I{O9&<dKWq&)LuFI+=Y`F{R<9k2;0**iOJKVfZ6+jEV~R3dy3Z)k*{lc
zZp5=ZxH)5%-+xvX@rh3}4>KqmT26iA;b)z*$F1q@C8o8zuk1_v&HJ{sXrc7f4bPAF
zTy1XW-L<m3+xt@J_Y+UGmMm)6+MICQd-20(ZfED;N#EXNvZU{h%a5ZQCbHyqCcZk=
zz_HKepuEeC6Bb90hZXcU2>G~h%1&YUv@~C=OWAn>Yxe%Y@(0F=Y-e7$y|J-${cg$I
z<G4cB;Ku@sH1m@^Jb$>lFSTFux%9xYx$BssOIN`5d7JV+IR0|r^kJU8c=tqoZ)Yik
zhcD!PS6u!%vv&Ue1*!Z@i+d+3Db)w2p54N_Z*Nz-irLLiYxV^hGOzy?U~u5eUhQYk
zMNgRQahp|MvXXfc$ClfD?|JvG@U&se)z3=%IWyq&kt_BI&nMK(R1t2pn0T&qk>K}B
zTWpuOe&1EyXgZBc{ZhjFGZK}xze9ut|J=GHFjf0Vq+!|ai7`{0x4rs0<@%OZEw-Kw
z>D>BlZVHk=`)<ZAn6&iupDG6CPfkvg|K%`GVq9sYx>%C!e8#uCAqPZTVs><LE)H63
zAku21{fZ;aWwWhF?6PBl)frX}ES#REPVMb4OiMN|;Wn`JUt-EOPqyP+vCGWkw|k_d
zdOd%A&R*nlo#O!WH5ZkV9*r)RI&JQIp5aHHs2$mS{%aS<`Mq9}KkwY;=YM7rA}lNN
zCiTp6KLdx&t4$7?FtGS`&p5D@Ihtv~ya@vC=Dp=dggbsS=`>j^_f&{~#d!Fp(1%XJ
zdEGazm2Bbb`|Q_eJI&$T@$3k$pv4WH>)r*bzn{<G{4#In{Jc2FO^jSoZl_+XDo#If
zyQOV%l&e<q!6!AHA$OyNd#8Pl_$N5Ec3E)5p6He%GhSbBxD;>Wc|E4G<Wp<5kyDw#
zzFmrQmlRnBJ8Yb4(qPEdVtzcP=n^k`JLiNMt6WMCAKJxh_b^b-NZ~5)L;1qu6|6QQ
z>73`Myi@rv*}bG%RD*fP&Q;O|Y64Pq&5NApUzSRI&Q*3O#B=YQ16vM%Q<&Ii_enWP
ztUbiyY1b*`l*#+fPxmjb&0qAQEmimZ+bPqv_FV6M^Lx{si`QR&4?X)+Ky8*wa+<CQ
zZ^N=Jd`#v(XB#tZQ>N#=6@L)Oc1ky}CGX14@|dW&RU(h-;`UB9-}`6Zis>eo*`E3J
zZdw_f_CnzJ*7@Jx{_YbGum8$!^Yl}CQ0cwnOYA2x%#GmT+`VDa#uwABu|)*jS{~qj
zBJJ-*J_V~6^O^p=GCO@`f_*QeZGM1XeW`G1xP(-9%HCJ{i$A>j)S1COYg<Xs){lxE
z%vw8l-)&8MqVj&8$$XX|fz^TK3lx=l-?Se6HCc1^3ts7>z5hNh=b68GkNV8=cOS}+
zAL&VC`8c_#_(AuAu+3&M_w<5e+}B(-HLP3D_Rz{wUO~P!`PHRI9}Ti!n`t(&N4A`b
zoF#F~*&%Oc_1)DoqaS+BE@EmpuygnA{kLylzjk!XemQRG)xQ<w8niy0{CAGkaZ<UR
zMf20o|9V?m->d%qvop<AH12Zn;fGZZX3Y7$@OPBN!Z@zB)YS8py#G&>o|NJ`l3n(<
z-)F`05F5VZlW#k0wYaO=ZvG(eiQ#nCgRN((bMCrmTS+fnHrp?J$AbRYJ+4hhokP~#
z`20v^Zn=5L1iPOJXL##Z+rMRG&Xf1dsXWt=C-Or{k9n`D=QUj|-@3~Cm*&6A72--$
ze&JNL%(r*_6O$b-$F@$23*g&tXS&kOA?t|Q7jxxHRe}57gvISBkGo($YuT3Nw^upE
z*=6Kbd3n?)Jg}Y@v%BH*fhF}1+~(Ei$JfnQk?Z>XGd^!w&LuCGyM+u4j4heY&H<jz
z&afd}1_q6ZwG(YU4m-#kjSpVBNR-`r%A*Mjts(_P3$JL2EOc5S8dYkr^9%PZiAf^j
z?gzI%cyK)F>cOLt;q2j#0)H3^i;IIwCJOzZE)sR5qTo({`FFYU_Y4aIQ)gW@Wy{!=
zn-=70I6Yp_dHoA#5yc|{Q)Z@~@d}dK_xQCO<Gy>U71RFjw0GYhwLwBapfi0&;;kdE
zj|9)&cCd23#i3K1ylVVxvM#Z9%I{oP@#omiCz}o!E2o(myUQqwdCRUTG0>hZ^--lT
z=4#0)@glj^bGBP#UzN(fJ9)oB%!TRGclZ@^XzC;g3b|;kSlFbMqmpsebK``Cf0y*z
zKl`Oxr1@l3!^C7c=?e<G>ps~3xVtuVj>Pv#hddYjK3Ztk)_6hh!W!#y-#0!s@o#uw
zT(ETeUuoWiUz5L7MR&_HGT%OMv@|;STf=Etg<mNrmc8+EoaMBUW6%7H=1&_BMlUG8
z`g-lw{>$tN-my#b8=9RHmbl!^wtN5X<(s$njo1FGW031CY7Ny*|IWa`z**oCS<Jwo
zrwqc36-({Q7#JAXOFVsD*`IPtuuDr>T6;}pV2~~Gba4!+xb=2!ZNZgmKi|tA&@akc
z>3T^lc0t4)lZaF%G2PCoOE?#uZ7`bKz*Mou&uPt_%vW>I`QB9Vy{U3`gJ!VuEdi6a
zJ~zKSRSK#*yv(nAR$AAbo#NUmk}is_8=1vCpGECqZ52`e)Re05?XUAT!?fJ>_pj~#
z_W9@G$FZ`R{qu_VS>^Z7GhVrPF|z=Rq`r@vumXpdl%v2DlO_d?Ocuw0OB_v;+yq!u
zdr`$bl{uOw$!-6!E%kS;9IwpjPZvBqu6b2msz{M2G7}BFRx|01(1vUcro*fA%DI|&
z&U6Tv23+$nn|S^6;c2?j5z}Pl&C_mwTikDFb!0NL_9^$8qnB8O7?{HQkDFdEKC^hq
z1!d8r$0xZ=d7S#fr$Zr9Epu9G<-GYH%sAJ~n4_>bZ@LfXr2cHB#8V-2FKcTaJo=bN
z*PWN$wf8}URkUdCidm;mDqa1{>nT*bOpSFW|D;uYck@|P=Pr$CtDKi4sde@V%jt``
z%ko$=ELl|N_WoG+S#W~M)Nh<Bu8y-`@5r!XQJp(=(zjZMCWT9OjS3x3A8d1$3Qj5c
z=F}6F#Nz0gE;dPp@sGk^H}en8W(t}jW|Ksp@P7VtU~}$q_O7Qh3O98)UpiBAL6*P4
z?>)=;&kH6bUh?7fo~CnBw>f5C&Ce$%CvQ$Wd+PM*(`)Bkzka>{hbjO6{hR++f8Sjh
z{41MVKW4{-`5<uLf7bf@6aGKgR2l#8)AY@LmsmW7ryYnij2A!dX??V_<|FsEw~W^<
zU7tlqDP>yry=-3Zs;uYyxyUDFmt0ogQ?XBhc6WE1`)*#fs%zQHn2qi4f9LP}`K(J+
z+rub*-mP`7^X~7fHCeYO_xtYn|F^FE{Qp?HR`ti%_4Q{z|Iyuk=hAssv;2E|o_lZq
zx1K96ByZp1?hh-k8CLk^N5||)3eT>}oIUGYX-dlnPTMWT-`DEu#_ai85|w%W?JAvl
zaa(trzU}6}c`n(txY(G%#N7OOz`XY0Uw=PuUR(YD{K4c}Sy9)*>+53w#wUJ#b#?33
zt=)3>486YFwQMYT5a}5jYI>M+o#ms-dGZbqET^UJW@Ko1e{0&)md^+G$@OOB@ol->
zCHD2|ig)}u+}d*6ReePZRC@1}->(e~4PB)1ZSt~3ixzF#RP^=L)ku?R-zEu7e^44*
zq`c>WRN4}E_DkiVjn`+c@L=7Stdi?BDN>2yzSpZIk5n{V4Rab+D7hvlg?+c?^fMIh
z(s5N-*i{l=^z}@H3*%9r1^ODBik_Zgm#--}^VNpMbN8++gTP)@Pq(BL*K*~H+NSf8
zBDiuCmz_{)5DYMk3QOi`aNam4^YW}C6WIiVlXred<2ZS|<l4qP3(mW)I-ss{HX-ob
ziBnUxudj(LzF+&jcjvrzh0OCG5BO>sN+0;j!SQR|M-@kh^z%~{I8M0w^Gtg9OHk)v
zfzGuwmDOKtSUiPU95)EM3NkQE33wW@>V!+`)m5SVHXj_my^v&kpLOViPNMXWKBlGv
zt3p@5+yDRHRPFGzevl1L0m6H9i}xs;47~b*>G~C3@fh38%En|Vy&Y|Nm5s?S`rhB%
z^^$Gg%Gq%bB-*?Uw=CE0nziLG&)s>Mv!0)yfBx?&VU`~PuC~iP)2@3*&*qo4x^idM
z#;GSKSQbB96SK4Ea2xOcKhN#`=iAwC^Iq1x_47{W+pA7>U5-^dUiz|UjraPft*@R=
zkM~ReyL0{G#oP7fCW_lPoy$>J($>bdyIVJU+m<a`7#LgwxpyZ-emf?eFB3Lp)5Up<
zlT{o0RDNacJKN&tu446E+BW(!Q{=NE#ntC+zu)1n|Ii$|IxIEzx6P858)cIJ{rUO%
z`T6+GX}&)`{`mO#F4z5?#p%AjybL~bt)`|%PD^#3cz(9|`UMLVX6H32{E7<w(Cgun
z{Key3zxJ9LYgjlf**8^vdgAFhDQxYI+8<T_o=o=Nbn&?L_8GR--`?EZJY7FtuFj_Z
zU(NPI_bVRvipNzvd~~#%m6i4Lv$L=Bj-5VrYMI|$s~hsS_SIIqySMA`FP~JkY}Jbc
z7v`<K&B(#PFi);m(!@R5v$^lJVUYi=d9PJPyr!g{^L7cDp3H3f(laV3%_ukKd`PmP
z=>*|9OS9T|gD!<s3fUM>+`@eRns2<9it?7(JtqavPUrD%oFSn8C~D5O$<v;*&RX;<
zDCERDx#MdhH>aJQW$I%a9ujiEq|oHcoSz#@!uprpx^+uRN-D1A<I&@C)o*s+|NHLi
z^>}`U$!fm8j+yTZ3=9km4&Ge-{he|8xh2IbU%kp=n2`GOP%F2yw6}SFY|Ormnk7B=
zcUhEJ=HJ`3qvY+vzP`R^x=)Wz-ED1U^=kF<>7~n7t=Ed&_BqDg{rJ06k3Q+1O*WjC
zcP}U`Vq4k$m*-^G-MD(IuqyiMtqY9%GLs_{)A!BVuB)xL_TJX)$Gh&%HD>XBeah?F
zyVJGu@BbY?Kl9_qc@b+%{)>o+e7PL>|FHZ&fv|TojnnnsIG!qBm2;bo!T0jLy5DcZ
z<7-R5y}8+Zrh9Tgt{ZQ3RM)E-$=Q7~`qE#|dKUH1wD`fEXGQB~UWqv^y_&PANrAKN
zxdy|646d5{{62R}b}V_u$RK((iHDKF;dGSJNiWW$rYj0V>M!NYKWs8P?zg^-cY3({
zU-|z(jxY0_trxe)V^WF*AOHWl&$I8(v8gOdPEM}yN=|-!sFl0?&5gqIw%>W4O|QMr
zU$cLD{=9rQ)m~qf6uk>c$4vPdHJ`bex-MI@!}8nX{|1j81%9w7pGtbsdj0PT&W49K
zmMn^xbV^Xz|NP=v!aZ3=99`Yr;`(uW%HH0}y}eD=s$|95wP&~GhK5E?tNs0UyL{!7
ziLBgWPo6(NKi~fUp;qp@>07sKsrmo=e*LeP%lH3y)V-y?OR(ZlK&UkXgZ&3)dyWIw
zr?#B`Xd+m#j$h!%LTeDYZ)$)~P=e<N+x4$o3}?RF^-B2U#wmimYIhkF3bwR7WOhhU
z7ZSMom1XvnMQJY<IXDTh2>h^nRp}D_^6l;I`~UrV{n)u~-Rram;itf0)v8sy>aT2j
zD{EaQV_CH1dW);C@7d`5y;FVEF7GzbRO4}-=6dac%S0ZHLuP9nCb+6<act8uHks*@
zwM~J0kNiXxtBDg-JH=GvCZ#l{)fgvMWwqTe`<#2X;GA{ayAL)q+G_7H9u|A-c~q><
zpuNXu`Hme6gB#~gNO8WR>>#Kl{>Nd`izQ-@E#?I&E6w#dQgP+;hZ!P%Hy94=xRZX^
z<oE*qUq2rA+yDRbx%TYzc{Y`s_U*H4U-Nd?yE&G{vu4k3m+Msh5YxXPW73I)o%)fR
zmh8^!S9mRyud{dQlj{5PY<+C+e_H(C>cj8f?%SuzO}=HXSNZ$x_UhW;pdclVCIyc2
z`?cQ%rX4AgYdSS|hmYkQyX7w`ln*c8yZ7&bMrH;Ffg_KOb~~#Y^E6L$v|YTUcv8Rp
zza6`FMG3U*ezz;zfbpN;6=N?e?U{D9Rq@Q3DK#4^KR^3Fb8Qt{%n_#vaV91v9+OJG
zytp{U-G82qWzgHt>ho)wCb>-r1X-|jdfY7Y{5Y?~{u%w|2Q+?GEM6j*a^aBNKM85;
zdmNMA9y&M4(s+)Xa}iJM^~2kfekp#D?K%F~dB?uzm71-w(b3U?fre9eiZ4*f{@OFi
zt%(14AzMlGw_16Iwr6+$+)SU(`)$gbsLQV$Hd%j*c(wQFtL^Kex2N7-_iNcXi@dd8
zud23!!P4ySy*WACJH@KsTv+J5*M0e9_3*GTtG>yfYF~c2KT&S_#^Vzn3g1{IvGGaD
zCif$T=9vbwa)TWNR9qJ~pYHHA^_>?J82Itc=JV60O?&3>yXSK9&W?N+m#JY}<_WSe
z2M7Az-c&njVdkCPbxV%KL`GIVIWaNCXr^<Oo9A<xbz<H^Oz%~b3|)<_pBLK9f0p6j
zeaFpMP}bc3WWx-_?pmk7OO~zaFZfPw;F0h2T+q2@$!`XS?u{;&3hp>_Ej>MPNq?CX
zAGes!i}*7W?%LhcczNel*>5|8rV~LdC*2+^y_i*~+QV_uZ8BH7wAii8kehodi&cMB
zC@V9&2D^ka=r^UkyeGI%vn^4A>#a%Ef_`(OMH8GtK9n40X5g@4XPK#fpj^jV#_@L>
z-=?1ECw)pc-#_l{j@Y^ErOTzxV@U@t?>oGTb0W)z-W3AhB?BKs#D%HkEIHoy<@k-+
zaoN&KZ5Avk_PY`jvb*ZFhFMl+potIP%gT_)70Jh?9gWsL4?N51CFOXme_r4v4x@En
zdM3F|C|sI8#iXf6+ZL1(VqQwB_9{H~I^Xd6Qu3ims@_F<=Zl}6IoQN~@{`3qjh8;c
zY<DE0_2T#K$-BF&SK3@mM1*I?j-^Xe54Z82xA}bL>-Bj1Ir4Wmr=M?RW|ymev+>WL
zKX-KZ`N_W*-JZUDUf`u<2eUVkKR+Di|Nr~`e?1Ki4`XBP@O3i(`gg6{op`uy+O%o6
zZr!@MIsJLY$KH<q@2f&rKWLk(k(rVbAo8@o{*N+4#I&g=pL_pcySe}0*Y&O3;{V>}
z*GKQEDAbF3fBOGgg`f3vuk*=xSALmWes5vkx|011uB+aA@tW&+zr6meaKpb!jg#Em
z8gAXXwS0b^)t~#DjDDq+UiV&j;nJl~d*9ctU$*R7r~14ZCYeEbk_NkeMPHkExmGr|
z%A1qn$#egGB`f!?H(8$c<m?>F;&b)-a!Y0Wq<V9=PJDA@+uPgu`}c0$YWk<*Ft7O>
z%i^?8Pk7c=X>@&hGTHyzpJ(%`-&MX`I$iBi+wH}idP%+_ese4~*8KdGXUlxx=H~SK
z)$jM7*?#Hnn|phI-@gB^EIC<u8lRVxq|Dm2Yfn$tw=aC;vi`mC&F}ldE-`%g_xt_y
z>C^ZB`E)wMO(Rn!_SWs&t5>ZG%Cj<lHi=K(TvSxF-|p9oqut^gHw0Wdalq#5mEf&g
zw`%gIHZO4w3ElhooOQpvec#j8Np8OuZ`)ROd6{pmY;I1DP4%~&w4zJb%p5Z271W+C
zl+iJrVlrvg_Ip*USFKw0-|lB4GrN)5y!ZA8FD>={|L^;LW1eQ#_DOC*1&@w&{(iSR
z-$5~T&HKCl$A90ees5dwz#%sFZu!2?vN{$ZV?gaZe%mhrm6etMPquAKe$C<a%fJ5D
zW$pEQHf3B?(lMH1a!H<BT<^}7%*m;d^Xvar#>U>A>~A-7`t<3Wrsn16pWm=#xzEf?
zYaj0a^He_~LL)OpAg26osrPif+7AcW_2c*PFf3iV)Zg~&71{DTg8SM;Ssb06osX&5
zrk<K&ntg50|9`)$zrUMnmMg`u=i9Apc7C}dNlu>1&5Ntg=x`j;um5@4{C>^nKR-WL
ze|r<TzwWQQeC?D*o-NzA+yD7+`2GI>|GM?}S)`wvvuM$x`G20MGhDcM@#CH1^NEbT
zA}=1>22Mz={Qd1M!-nkZdVwOw^BM1d_nh?R=h>ab&(qG$xq0i>tm)Ise|&hjv-o+E
zVWM{LlJ3k|3<i~-o`6bpAEOK2=NSxgZ*7tP`@)@};OD2O&*#_6o#u$nREdqb&a2Ej
zb?VfmUwCA-?f!f?JZaLT)6@0EMMXjWHcmTp;LxEkDaj)avmWnQbLvKqr187`|LYhs
za&!Nl&97@#ZJp#+6n%-|!<AtF)<%K4|G)3gw=U=7=2o?R_c8bMx8LuAqo+wPF`v-(
zrlaOs_s-(ydhz>Y7|zYL{(gvCpXbq;1BTY-*W`Ak23+!Jdzz!QXw6R*&IC=S(?v}h
zT};P|oJ?M_Ffgbj9(URK+1V>9D(a8{v#P49iEsMD*kef>Kg_@X@7s3fstskf&xIzf
zsAAz{*rv6C=QQ`i)FU(AIaN)QoL{04>HT`&*3_k;yU(}IFALSXcj->$lRN89y)@Xn
z>2<*6W1l98-k$Y)$C-C`cOTxgZq=$&x2oUv>Fp?eeXWtVIOFuANvXH}%I_vz-IRBF
z&b^&$B)qQ6zVbM3^jK(0i5d5<Ed?L1t*g3yaZmpJm)h**p<+&jp|#hK|9Um)k#^~y
ztZVDz=kJR;*7ffBxjQ?H^<#Hk$-lKsH?=iYdiE}R^Xu2+1>e40+s(Lc#@hJPJ>DB0
z&t1#Xwrb}bouJtG3o`CsZTK7nVjGh=<Age_LW_UNdZa(R6JdUOnlAU=eV|Ou_(&{r
z)h|Bf&hUE&msI{cRdDEgt;RA9BiYjrBBV|}QQ4X}Z+S$USM8OJbGE%~I#E`Cut;Z5
z@{H?e#8@3S)c>zz*zxbzYjK^330t>YXI@%zT)y7sPyOd-XaDZ-w%Ap<W=3N0zR<VU
zCo2x=_8(_SayY$U$;30~x_6#)ceu1t^sRK(rTB$fwpx0g6I&lxy)*S^JI!@}`i{@%
ztc}I)muIYr+iUfO)3)M6LTqg8{L6RNajRUtEv#!G+L#<^_o|@KHL2>z-uI`CG%{5-
zPx|(Ep6%;-6(>E;^uF+XskK*_MQ~n8?~=pyn+kre60fYR?6>=s@nioYjatuJ-){#=
zv^_{}OWi$h_7mRDhoR{ZmrZuMuug7bsbc043#HyGma3TyD^{)Is&$I5|NC`eYqa7F
zkC2AHS%;)ffUI0RL51@{yex-Gfr;fakCRKz#6){GE9`i7w&UBkZ|3(Zlyg>Ws#Lh^
z8yI*|x!>kezO(Oyl!sRZgJKT9DF38A6_j9)srnjUK3KfY=M~E~rBiC^#R;?LMtl=}
zuW|qLIp(vM!ef^#T)1%QQdWjjr%!LLQMl_{T3RY0^>Au<oaa_aj)NOaD(02DUY@rw
zEBv0z$C9%gUaB)+UpIOzap##{^h1|@KUi;nTTuM+l<B0>-}hJUPOt7aS^ApK(#zs?
zZnR%wWY7L8E8W?D9eyj-JTAJt%vV-c*3{H=*0Qf&2R=A?&Q7$vV0zzw;}Xqc8`p_0
z0u^-!j_?>)rRpjyO+9A(;?l&eUy4j$Ue{f^Z`YEFqv!5rYHMpB4qCT<{rQE`_NA{v
z0s{jr63bp)S()8up0Bz8)YTM@X^!s=Q*!<szczJh*gGrpgk8&epDtawD%aD~(_%ti
zZtmH&(d*Z(<CAyGzP`@)rTw-YDUnij^J=5mRC{{_pT9C+7ZJ91_0D|PdAGMOEsFel
zE<4!7+`N62hQ9v!oxkm>zGO(8-?C!Gils|cr_TO<?Nn;$?ODGnL%wE8PBAe$wkhw{
z^(*DxwNqc0`)|v=eJ$R3`qz?vscY-w@4HLi+4DZYp0{BBG|Br33l<fgo^hOCMva|c
zZqL_i(biU0%Y0{Fv)$!ZAej9~XjfKG;-3SFn=&pgTIxOhkbsl2PtJy^a`U%r*;4a$
zb$o7q{`qY`8k-N9oK^Ln#&DoV(zs97dRozT0hZ{OoCojitv;Mvxanu>DaMDDc6Tnn
zKFn`_XJazEnD(|y$-&&l+X`ha@xQ*lzW?}R;Sa|)svCa_2@O5D$!1&SkB|NJcdlGv
zVX!WLw`4_$?eawzU$D#9e0a5beOkYvwUyPXRjd5wSTHh3o8@>EZ@-mcVwJdB-mB`#
z!py21S%YQ;4)LYlUS2AmUjJPtseJzQY17&2FXH=u9ChZmWnoyq@7JsI_5VJb<g*;V
zbmGTC>o<;kJIlTwX6CmM*jKo-{{O$c^`$JTwv8t`6Ox->cs_e-`|*hI!~eDIZVmyL
zG+y3W_`BEpPLGtT?Zb@x{PUeZ8k?ES7rS}-$4E&@6{*%eSP-$hEcb=*uj~8&nTBSt
zu&CPJtG@d<Id6?LNLMfO%Zu_Jzxx)h%v#j1a8r4&<kj<a-!@-R|8i73{?CWQ{2SK<
zUJ`CHs7q*5@ik%+&-nOc>%%`x$2&f$tlp*kBm3^`z~|4OKVSFwS4Q(XwPe=^R&qx#
z)E-&<Ri-^*#=;-oCScI>)9oyaatBXhUxVhlM>Ess{RBDZ^89~WcI=RNE#PG}`@^J(
z84Dx@xfm2a=-6gfswjIfIWzpIGD$jm=A1|4ytS{FahvFOzB!;Y-?I4GnVH7!|2v;V
z?#kQA_+uJ>$aIt5CGUQSXm{0U1TZlua4ayMwC{aXAG^rmizyFoZIc$@IUQ8zAIx*0
z*Zkg&#KUZB>~4HKw@vJp=P{AXe#aKAdf7aE%8nVwPYbQ=bUMU(y+gY#S1Zu9{GfSC
zoLOXKn$OJsRPXf5o*XfEl9y(<i0zIFcYpemrDM|z?LAX?+^^4D=#mooM8eJI2IB-3
zl~lt#Mh3@;eOhjlj;}LfZJKn>m%~jcvT2%#>8Z)<)=Bxeq<MNxkchq<8#TdV(xc=o
zpCz@*3nv#%QTB{`Vq-f~cGk9#qk>6+eM%gYmN<Fdjym*ES;+U&B9GZoEBu2xRJSZi
zloZsL^4#GNRPue=BokjIheZG2gtG_w%9mLbJ>l@Zd_A`OZbr#LS^hgqgf=tA^f#<F
zzwsf)`~#2aGr<RzEE^&(PWajP`XbZa*Jd&NcT#N9oF4qxo8SD*QY+7rf#;g)l#;Ly
zH<J6WUcGvDj^*Yp+--?o-rn9`UTVIxOwOpyR^TvOq`}1C@Zw-is=a!XO2foQT|Q;<
zXPW%j7{l`uFIP&dhzE-BF^GsV9C%}S<wf>+I~G-2wGBGa;o;@4uB;4R?)UcQ=H<VC
zFIu!{cHXX)(GQm{T^e8W(Y0#Ri+}wOBbBlu8V@X8@yX<LVBz5}sfOKEOIfrH*5&Om
zT;}e5_QRU>v-k>DN+liN#H4qOiG_t_-h1W=D}5RlEHT!2IpzNLZQI(q-5wsdez#-s
z+O@iCwJ+(s%_tOQQB+#R88^vtURp-m<fOpHMUuCIMO%efBfGLUi9FrOa`wU;iQdke
z7fMr=W+k0sT5YW3&CVhjG3~tfs;pB=*#<nmpC?wdEUuVmG$mrn2ixP1Cv#3@VNlds
z5jgE~MW1>tSI*^cJLQ%g==-@rveCiy_xJbVBB@)P_nw_=UH<piS5{WmnOn{+pI`Uu
zob`JXGqZPhcbm`j`4)as@>%%)Usv~jzjykx&H2wSTTXn8z0Ir9wlHXGP-C{W-N_9l
zZnF*MJ<q*;?oZsAzq67$%qOL3CTP!X>XkOXSMj)a``xnJE7HDns?UqqoW^^&=TY*X
zM@PH+9-Ekfz`oz_cK7!79`Bcz|FC9#?c410cE8{7*Z(+t(C&)IuKs263=J>dKiJVc
zC!l=x-%01rpWpv>+wHLRaki@@YoE<bcl$F-zUG5ta`NMchufv4q@<*!W!1l$9aZtv
zi`cMW<;s_j`|aQTtaWresN8R}sqXKumBGuCe4Pq(=4RTQf1Ou%zxMmx!|nX>I|>wA
zT|a&D^7a=0l5lNJB!hzIC2#$`S1e;@ns`oHGHaI9tYsVd6otbs?VH-6?sI*)@+_sE
zZ!GUXZQX5q?;6=vf6F;F<??d>_nHqXKR;V4vvISIwAZgb>vsX6r56{uMpRGW)Xg+k
z^h&$pXB2hhLt=|+?aNC`zu&7~zq}##y07Ku@Q4VD{Cj)y7&q(up1Qt9b?*EGiDlJ%
zJg<41CY6<*U8FLN#cGzsJCSgA_v0Irk5_U1cyV#@biG)wnHAU8L~@JiXlQG5o5n;%
zS*4zuqWI^<-SYc$yJsI&)OdMO>ZH}X4Rg3|-MaPf&vX0vmc?pwF8q44`TQ@h%GYbR
z->dn2c45Q*uWR#ruS8eG|GG4N!!8AlmjUONN%c$D&0c@1$<JtFi&oG)xn30+1<w!6
zQDGvTFXP{f>&2{CxpL>X-;*Xy3fP-yU31yjytnee+UxQ4e{ZJGKYR36!J8W!w{6=d
zbGBx^w4-Ognuxsb5!u)ci)RTgv`)?YS#zl4l7NJfuA9WYH~(vI9y)Yr!^%1K^>zNd
z>9?7LPH)<ld;R+L=SjI5Iy!qEwn-P6eBLYfMYzl`>5SOM8x>8w_a~)CNckLReGz_%
z#ZjVdW6sS@I_4`@t-A5uS#8l0=KI%5FPGWe-+aeR!ocU+larIZy}ULY5J+KI+H>~&
zu30C#Je@i;vz#WraMIymIr%i~*7iwh2VNU>7wQP4*lfAP;^^>TXWR|u?@eYPc~#Hd
zyC!X5D%e`#V>*X{!%pdP*pyU@zUij@8eepMHyh59X?o&ue70D!r{T5DGsT4Z)>qg~
z5b<Pqpkmnc<V%Fr6jRT@2nG%#xnq|&nieb(WO4LV=77yVMjqriQ?Y&P)~na9$=TId
z{0;8v>WYevX8)=^zwVdjG_fY06C6iA+7&-L^S<u;ZpXPsES~pkKA&AI+ady<w|o$R
kG?59Ouyhkp@&56Dsb^2*^Y5Z!3=9kmp00i_>zopr0AT%Hr~m)}

literal 0
HcmV?d00001

diff --git a/slides/figs/fig_non_empty_queue_insert.png b/slides/figs/fig_non_empty_queue_insert.png
new file mode 100644
index 0000000000000000000000000000000000000000..2d0c4aa785e63dee2b3c57c6643eab01b706aa49
GIT binary patch
literal 20622
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
YZPs*F1_dVz1_lNOPgg&ebxsLQ0LliAUH||9

literal 0
HcmV?d00001

diff --git a/slides/figs/fig_queue_extract.png b/slides/figs/fig_queue_extract.png
new file mode 100644
index 0000000000000000000000000000000000000000..a31dfba6e27cc7cfbe046fef3158da529a93f55d
GIT binary patch
literal 19932
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

literal 0
HcmV?d00001

diff --git a/slides/figs/fig_queue_extract_one.svg b/slides/figs/fig_queue_extract_one.svg
new file mode 100644
index 0000000..7778d43
--- /dev/null
+++ b/slides/figs/fig_queue_extract_one.svg
@@ -0,0 +1,298 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   width="71.796646mm"
+   height="55.054691mm"
+   viewBox="0 0 71.796646 55.054692"
+   version="1.1"
+   id="svg26163"
+   inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20, custom)"
+   sodipodi:docname="fig_queue_extract_one.svg"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:svg="http://www.w3.org/2000/svg">
+  <sodipodi:namedview
+     id="namedview26165"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     inkscape:pagecheckerboard="0"
+     inkscape:document-units="mm"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:zoom="1.2953002"
+     inkscape:cx="183.35518"
+     inkscape:cy="147.84217"
+     inkscape:window-width="1920"
+     inkscape:window-height="1080"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="layer1" />
+  <defs
+     id="defs26160">
+    <marker
+       style="overflow:visible"
+       id="Arrow2Lend"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Lend"
+       inkscape:isstock="true">
+      <path
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.625;stroke-linejoin:round"
+         id="path8989" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="Arrow2Lend-7"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Lend"
+       inkscape:isstock="true">
+      <path
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.625;stroke-linejoin:round"
+         id="path8989-5" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="Arrow2Lend-7-3"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Lend"
+       inkscape:isstock="true">
+      <path
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.625;stroke-linejoin:round"
+         id="path8989-5-6" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="Arrow2Lend-7-2"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Lend"
+       inkscape:isstock="true">
+      <path
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.625;stroke-linejoin:round"
+         id="path8989-5-9" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="Arrow2Lend-7-27"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Lend"
+       inkscape:isstock="true">
+      <path
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.625;stroke-linejoin:round"
+         id="path8989-5-0" />
+    </marker>
+  </defs>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-38.04528,-128.39909)">
+    <g
+       id="g27567">
+      <rect
+         style="fill:#ffffff;stroke:#000000;stroke-width:1;stroke-opacity:1"
+         id="rect849"
+         width="32.000549"
+         height="13.894769"
+         x="61.211033"
+         y="163.60229" />
+      <path
+         style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="m 77.211308,163.81338 v 13.47261"
+         id="path986" />
+      <text
+         xml:space="preserve"
+         style="font-style:normal;font-weight:normal;font-size:3.52777px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+         x="63.648254"
+         y="167.44313"
+         id="text3270"><tspan
+           sodipodi:role="line"
+           id="tspan3268"
+           x="63.648254"
+           y="167.44313"
+           style="stroke-width:0.264583">data</tspan></text>
+      <text
+         xml:space="preserve"
+         style="font-style:normal;font-weight:normal;font-size:3.52777px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+         x="80.402161"
+         y="167.34151"
+         id="text3270-3"><tspan
+           sodipodi:role="line"
+           id="tspan3268-6"
+           x="80.402161"
+           y="167.34151"
+           style="stroke-width:0.264583">next</tspan></text>
+      <path
+         style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
+         d="M 90.506705,170.55434 H 101.39839"
+         id="path8966" />
+      <path
+         style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend-7)"
+         d="m 57.156648,151.19704 9.957227,11.4829"
+         id="path8966-3"
+         sodipodi:nodetypes="cc" />
+      <path
+         style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend-7-3)"
+         d="m 57.070207,134.41304 13.529066,8.95621"
+         id="path8966-3-0"
+         sodipodi:nodetypes="cc" />
+      <path
+         style="fill:none;stroke:#000000;stroke-width:0.264583;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.529167, 0.264583;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#Arrow2Lend-7-2)"
+         d="m 79.884799,151.13428 -8.461285,11.75329"
+         id="path8966-3-1"
+         sodipodi:nodetypes="cc" />
+      <path
+         style="fill:none;stroke:#000000;stroke-width:0.264583;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.529167, 0.264583;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#Arrow2Lend-7-27)"
+         d="m 99.450797,151.13241 -25.53153,11.89643"
+         id="path8966-3-9"
+         sodipodi:nodetypes="cc" />
+      <g
+         id="g19539"
+         transform="matrix(0.26458333,0,0,0.26458333,50.232802,175.83868)">
+        <g
+           id="g14281"
+           transform="translate(-30.526542,-27.424011)">
+          <rect
+             style="fill:#ffffff;stroke:#000000;stroke-width:1.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect9442"
+             width="71.481941"
+             height="28.485205"
+             x="-14.786533"
+             y="-94.194954" />
+          <text
+             xml:space="preserve"
+             style="font-style:normal;font-weight:normal;font-size:13.3333px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none"
+             x="5.6842546"
+             y="-74.981659"
+             id="text11594"><tspan
+               sodipodi:role="line"
+               id="tspan11592"
+               x="5.6842546"
+               y="-74.981659">elmt</tspan></text>
+        </g>
+      </g>
+      <g
+         id="g19533"
+         transform="matrix(0.26458333,0,0,0.26458333,50.232802,175.83868)">
+        <rect
+           style="fill:#ffffff;stroke:#000000;stroke-width:1.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect14815"
+           width="139.78581"
+           height="29.670931"
+           x="76.975639"
+           y="-122.71912" />
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-weight:normal;font-size:13.3333px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none"
+           x="90.747475"
+           y="-103.29707"
+           id="text16175"><tspan
+             sodipodi:role="line"
+             id="tspan16173"
+             x="90.747475"
+             y="-103.29707">tete</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-weight:normal;font-size:13.3333px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none"
+           x="167.53326"
+           y="-102.91296"
+           id="text16175-5"><tspan
+             sodipodi:role="line"
+             id="tspan16173-6"
+             x="167.53326"
+             y="-102.91296">debut</tspan></text>
+        <path
+           style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           d="m 146.86855,-122.04171 v 28.316121"
+           id="path17624" />
+      </g>
+      <g
+         id="g24610"
+         transform="matrix(0.26458333,0,0,0.26458333,50.232802,175.83868)">
+        <rect
+           style="fill:#ffffff;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+           id="rect20383"
+           width="33.501225"
+           height="22.229925"
+           x="-7.6590633"
+           y="-178.79926" />
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-weight:normal;font-size:13.3333px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none"
+           x="3.1117313"
+           y="-162.71361"
+           id="text21875"><tspan
+             sodipodi:role="line"
+             id="tspan21873"
+             x="3.1117313"
+             y="-162.71361">fa</tspan></text>
+      </g>
+      <g
+         id="g25290"
+         transform="matrix(0.26458333,0,0,0.26458333,50.232802,175.83868)">
+        <rect
+           style="fill:#ffffff;stroke:#000000;stroke-width:3.77953;stroke-opacity:1"
+           id="rect9338"
+           width="25.912838"
+           height="48.277096"
+           x="197.49173"
+           y="-44.128456" />
+        <path
+           style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           d="m 198.44004,-28.851968 13.81444,-13.814444"
+           id="path25192" />
+        <path
+           style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           d="m 198.16174,-17.266685 24.00548,-24.005477"
+           id="path25194" />
+        <path
+           style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           d="m 198.02184,-6.705438 25.33761,-25.337608"
+           id="path25198" />
+        <path
+           style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           d="M 197.49173,4.1486397 223.4456,-21.805234"
+           id="path25200" />
+        <path
+           style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           d="M 208.19521,4.2844338 223.75226,-11.272625"
+           id="path25202" />
+      </g>
+    </g>
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 57.951433,161.18156 40.25922,21.83269"
+       id="path27602" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 98.210653,161.18156 -40.25922,21.83269"
+       id="path27602-6" />
+  </g>
+</svg>
diff --git a/slides/figs/fig_queue_representation.png b/slides/figs/fig_queue_representation.png
new file mode 100644
index 0000000000000000000000000000000000000000..262d9a7ee941a10e3d50a19ac87a287d6f42ce71
GIT binary patch
literal 7251
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
Kb6Mw<&;$VDzVn&@

literal 0
HcmV?d00001

-- 
GitLab