From 7d94fb8e8b808c88c17e6cea9204f0953c2e2624 Mon Sep 17 00:00:00 2001 From: Oliver Date: Mon, 23 Sep 2019 23:31:02 -0400 Subject: [PATCH] slides --- src/teaching/cse-662/2019fa/index.md | 3 + .../slide/2019-09-24-ProgramSlicing2.erb | 431 ++++++++++++ .../graphics/2019-09-24-DynamicSlicing.png | Bin 0 -> 73938 bytes .../slide/graphics/2019-09-24-FlowGraph.svg | 609 ++++++++++++++++ .../2019-09-24-FlowGraphControlDeps.svg | 652 +++++++++++++++++ .../2019-09-24-FlowGraphUnbrokenPath.svg | 664 ++++++++++++++++++ .../2019-09-24-FlowGraphUnbrokenPath2.svg | 645 +++++++++++++++++ 7 files changed, 3004 insertions(+) create mode 100644 src/teaching/cse-662/2019fa/slide/2019-09-24-ProgramSlicing2.erb create mode 100644 src/teaching/cse-662/2019fa/slide/graphics/2019-09-24-DynamicSlicing.png create mode 100644 src/teaching/cse-662/2019fa/slide/graphics/2019-09-24-FlowGraph.svg create mode 100644 src/teaching/cse-662/2019fa/slide/graphics/2019-09-24-FlowGraphControlDeps.svg create mode 100644 src/teaching/cse-662/2019fa/slide/graphics/2019-09-24-FlowGraphUnbrokenPath.svg create mode 100644 src/teaching/cse-662/2019fa/slide/graphics/2019-09-24-FlowGraphUnbrokenPath2.svg diff --git a/src/teaching/cse-662/2019fa/index.md b/src/teaching/cse-662/2019fa/index.md index b4121688..4fdb4907 100644 --- a/src/teaching/cse-662/2019fa/index.md +++ b/src/teaching/cse-662/2019fa/index.md @@ -86,6 +86,9 @@ After the taking the course, students should be able to: * **Sep 10** - Consistency through Monotonicity ([reading](https://dl-acm-org.gate.lib.buffalo.edu/citation.cfm?id=2391230) | [slides](slide/2019-09-10-BloomL.html)) * **Sep 12** - Recursive View Maintenance ([reading](https://infoscience.epfl.ch/record/183767)) * **Sep 17** - Program Slicing ([reading 1](https://cse.buffalo.edu/LRG/CSE705/Papers/Weiser-Static-Slicing.pdf) | [reading 2](http://sites.computer.org/debull/A07dec/cheney.pdf)) +* **Sep 19** - Learned Index Structures +* **Sep 24** - Program Slicing ([slides](slide/2019-09-24-ProgramSlicing2.html)) +* **Oct 1** - Interpretable Deep Learning ([reading](https://ieeexplore-ieee-org.gate.lib.buffalo.edu/abstract/document/8022871)) --- diff --git a/src/teaching/cse-662/2019fa/slide/2019-09-24-ProgramSlicing2.erb b/src/teaching/cse-662/2019fa/slide/2019-09-24-ProgramSlicing2.erb new file mode 100644 index 00000000..4da94e87 --- /dev/null +++ b/src/teaching/cse-662/2019fa/slide/2019-09-24-ProgramSlicing2.erb @@ -0,0 +1,431 @@ +--- +template: templates/cse662_2019_slides.erb +title: Program Slicing (continued) +date: September 24 +--- + +
+
+

Program Slicing Recap

+ +
    +
  • Dead Code Elimination
  • +
  • Highlight Dependent Instructions
  • +
  • Delta Programs
  • +
  • Optimization
  • +
+
+ +
+

+01:        read(N)
+02:        Z := 0
+03:        I := 1
+04:        while (I < N) do
+05:          read(X)
+06:          if (X < 0) then
+07:            Y := f1(X)
+             else
+08:            Y := f2(X)
+             end if
+09:          Z = f3(Z, Y)
+10:          I = I + 1
+           end while
+11:        write(Z)
+    
+ Agrawal et. a. Dynamic Slicing in the Presence of Unconstrained Pointers +
+ +
+

Control Flow Graph

+ +
+ +
+

Data Flow Dependency

+ +

Instruction 4 has a data dependency on 1

+


+01:        read(N)
+02:        Z := 0
+03:        I := 1
+04:        while (I < N) do
+    
+
+ +
+

Data Flow Dependency

+ +

Instruction 11 has a data dependency on both 2 and 9
(any unbroken path from write to read counts)

+


+02:        Z := 0
+           ...
+04:        while (I < N) do
+           ...
+09:          Z = f3(Z, Y)
+           ...
+           end while
+11:        write(Z)
+    
+
+ +
+

Control Flow Dependency

+ +

Instruction 8 has a control flow dependency from 6
Instruction 9 has a control flow dependency from 4

+


+04:        while (I < N) do
+06:          if (X < 0) then
+             else
+08:            Y := f2(X)
+09:          Z = f3(Z, Y)
+    
+
+ +
+

Slicing

+

Target: Start with a line and a set of variables.

+

Goal: Find the subset of the program that generates the same values for the specified variables.

+
+ +
+

Slicing Algorithm

+
    +
  1. Assume that the target line reads from the target variables
  2. +
  3. Compute the transitive closure of all data dependencies
  4. +
  5. Add in control dependencies to any available statement
  6. +
  7. Repeat from step 2 until nothing new is added
  8. +
+
+
+ +
+
+

Function Slices

+ +
    +
  • Simple: Treat $f(a, b, c)$ as a read/write to/from a, b, c.
  • +
  • Moderate: Expand out/inline $f(a, b, c)$ then go as normal.
  • +
  • Up/Down Flow
  • +
+
+ +
+

Up/Down Flow

+ + For call $f(a, b, c)$ with $f$ defined as $\texttt{def } f(x, y, z)$. +

+      define f(x, y, z):
+1:      x = y + z
+2:      z = y * z
+      end
+    
+
    +
  1. Add virtual write instructions for each: x, y, z at the start.
  2. +
  3. For each variable, compute the slice targetting the variable on the last line of the function. Note down which virtual writes appear in the slice
  4. +
  5. Treat each call site as one write for each variable, using the virtual writes to determine which variables the writes depend on.
  6. +
+
+ +
+

Worst case assumptions: +

    +
  • Every variable depends on every other variable
  • +
  • Every call site depends on every other call sites (external state)
  • +
+

+
+
+ +
+
+

Pointers

+

+1:    x = 2
+2:    y = 3
+3:    *z = 4
+4:    write(x)    
+    
+

Does $x$ on the last line depend on line 3?

+

It depends on what $z$ is

+
+ +
+

Not just pointers

+

+1:    x[0] = 2
+2:    x[1] = 3
+3:    x[z] = 4
+4:    write(x[0])
+    
+

Does $x[0]$ on the last line depend on line 3?

+

It also depends on what $z$ is

+
+ +
+

Which value gets written to can change at runtime.

+
+ +
+

Idea 1: Worst-case assumptions

+
    +
  • Every variable access depends on all preceeding pointer assignments
  • +
  • Every pointer reference depends on all preceding assignments
  • +
+ +

Slightly tighter restrictions possible if referring to an array/struct instead of a pointer

+
+ +
+

Idea 2: Determine possible program states

+
+ +
+

Example

+

+        struct { int curr; LL *next } LL;
+1:      read(N)
+2:      I := 0
+3:      X := new LL { -1, null }
+4:      Y := &X->curr
+5:      while(I < N)
+6:        X := new LL { I, X }
+7:        Y := X->next->curr
+8:        I := I + 1
+        end while
+9:      print_ll(X)
+    
+

What does X depend on as of line 6?

+
+ +
+

Consider possible state trajectories

+ +
    +
  1. { N = [read value] (line 1) }
  2. +
  3. + { I = 0 (line 2) }
  4. +
  5. + { X = ptr to $\ell_1$ (line 3); $\ell_1$ = { -1, null } (line 3) }
  6. +
  7. + { Y = ptr to $\ell_1$.curr; (line 4) }
  8. +
  9. nothing added
  10. +
  11. + { X = ptr to $\ell_2$ (line 6); $\ell_2$ = { 0, ptr to $\ell_1$ } (line 6) }
    + OR nothing added
  12. +
+

View each entry in the state trajectory as a set of possible states

+
+ +
+
+ + + + + + + +
{N = [read value] (line 1);
I = 0 (line 2);
$\ell_1$ = { -1, null } (line 3);
Y = ptr to $\ell_1$.curr; (line 4);
X = ptr to $\ell_2$ (line 6);
$\ell_2$ = { 0, ptr to $\ell_1$ } (line 6) }
+ OR + + + + + + +
{N = [read value] (line 1);
I = 0 (line 2);
X = ptr to $\ell_1$ (line 3);
$\ell_1$ = { -1, null } (line 3);
Y = ptr to $\ell_1$.curr; (line 4); }
+
+
+ +
+ + + + + + + +
{N = [read value] (line 1);
I = 0 (line 2);
$\ell_1$ = { -1, null } (line 3);
Y = ptr to $\ell_1$.curr; (line 4);
X = ptr to $\ell_2$ OR $\ell_1$ (lines 3 or 6)
$\ell_2$ = { 0, ptr to $\ell_1$ } (line 6) }
+
+ +
+

Problem: Infinite possible states!

+

Each time through the loop we get another $\ell$ assigned.

+
+ +
+

Observation: Only need to repeat states enough times to get dependencies

+

Idea: Collapse states into the minimum needed

+
+ +
+

Collapsing States

+
    +
  • Ignore constants (0, -1, etc...)
  • +
  • Merge values at unidentified locations (i.e. anything labeled by $\ell$), as long as the dependency data is the same
  • +
+
+ +
+

Simplified Example

+

+        struct { int curr; LL *next } LL;
+1:      read(N)
+2:      I := 0
+3:      X := new LL { -1, null }
+4:      while(I < N)
+5:        X := new LL { I, X }
+6:        I := I + 1
+        end while
+7:      print_ll(X)
+    
+
+ +
+

As of Line 4 (0 loops)

+ + + + + +
{N = $\mathbb C$ (line 1);
I = $\mathbb C$ (line 2);
$\ell_1$ = { $\mathbb C$, null } (line 3);
X = ptr to $\ell_1$ (line 3)
+
+
+

As of Line 4 (1 loop)

+ + + + + + +
{N = $\mathbb C$ (line 1);
I = $\mathbb C$ (line 2);
$\ell_1$ = { $\mathbb C$, null } (line 3);
$\ell_2$ = { $\mathbb C$, ptr to $\ell_1$ } (line 5);
X = ptr to $\ell_2$ (line 5)
+
+
+

As of Line 4 (2 loops)

+ + + + + + + +
{N = $\mathbb C$ (line 1);
I = $\mathbb C$ (line 2);
$\ell_1$ = { $\mathbb C$, null } (line 3);
$\ell_2$ = { $\mathbb C$, ptr to $\ell_1$ } (line 5);
$\ell_3$ = { $\mathbb C$, ptr to $\ell_2$ } (line 5);
X = ptr to $\ell_2$ (line 5)
+

$\ell_2$ and $\ell_3$ are "similar". Replace them with a new virtual $v_4$

+
+
+

As of Line 4 (2+ loops)

+ + + + + + +
{N = $\mathbb C$ (line 1);
I = $\mathbb C$ (line 2);
$\ell_1$ = { $\mathbb C$, null } (line 3);
$v_4$ = { $\mathbb C$, ptr to $\ell_1$ OR $v_4$ } (line 5);
X = ptr to $v_4$ (line 5)
+
+ +
+

Subsumption

+ State $S_2$ subsumes state $S_1$ if you can reach $S_2$ from $S_1$ by any of... +
    +
  • Add alternatives for pointers
  • +
  • Add new line dependencies
  • +
  • Rename an un-identified (i.e., $\ell_i$) location
  • +
  • Merge values at un-identified (i.e. anything labeled by $\ell$) into a virtual location.
  • +
+
+ +
+

Subsumption

+ +
    +
  1. 0 loops
  2. +
  3. 1 loop
  4. +
  5. 2+ loops
  6. +
  7. 3+ loops
  8. +
+

2+ loops subsumes both 1 loop and 3+ loops

+

Final state representation: { 0 loops; 2+ loops }

+
+ +
+

Flow Dependencies

+ +
    +
  1. Replay state trajectory.
  2. +
  3. Apply virtual node replacements.
  4. +
  5. Use computed possible states to determine possible data dependencies.
  6. +
  7. Include every possible data dependency.
  8. +
+
+
+ +
+
+

What if we want to slice a program in the context of specific inputs?

+
+
+ +

+01:        read(N)
+02:        Z := 0
+03:        I := 1
+04:        while (I < N) do
+05:          read(X)
+06:          if (X < 0) then
+07:            Y := f1(X)
+             else
+08:            Y := f2(X)
+             end if
+09:          Z = f3(Z, Y)
+10:          I = I + 1
+           end while
+11:        write(Z)
+    
+

... with N = 2, X = -4, 3 the trace of this program is
+ $1^1$ $2^1$ $3^1$ $4^1$ $5^1$ $6^1$ $7^1$ $9^1$ $10^1$ $4^2$ $5^2$ $6^2$ $8^2$ $9^2$ $10^2$ $4^3$ $11^1$ +

+

(superscripts distiguish repeated occurrences)

+
+ +
+

Dynamic Slicing

+ +

Instead of considering all paths, focus on the trace under the provided inputs

+
+ +
+ +

(Dependencies for Y as of $8^2$ on N = 2, X = -4, 3)

+
+ +
+
    +
  • Same as before, but allowed to have multiple copies of nodes.
  • +
  • Each instruction instance may have different dependencies... only consider the immediately preceding assignemnt to each variable.
  • +
  • First slice the trace
  • +
  • Every instruction that appears at least once in the sliced trace is in the final slice
  • +
+
+ +
+

Added benefit: Can handle pointer tracking gracefully: Know exactly what the pointer's value will be.

+
+ +
+

Bibliography

+ +
+
diff --git a/src/teaching/cse-662/2019fa/slide/graphics/2019-09-24-DynamicSlicing.png b/src/teaching/cse-662/2019fa/slide/graphics/2019-09-24-DynamicSlicing.png new file mode 100644 index 0000000000000000000000000000000000000000..40adba058ca0977eeaf3f1bca7b5fd780439f2c4 GIT binary patch literal 73938 zcma&MbyQVt)IECWP7#nU>F(~7kdhD(kdQ7x5Tv9#1*E%0kPrk3X_b@`kOl#jQc}RX z&inno-x&A)b%*2i#mzovKYKlE%{Av-PmHdP8UZd9E&_od&`?*_M<7sNA`mFm*qCrd zzRL150zu2~Z)oDJZ|%$A;pJ}c=wip<{nW#b!OqXo9)a+iZ_aT{r4jRp__t0bi+Zvt zZbC}Z8Je`eUz9VYs9`PPqQ8M3@UBL;t>ZR|#NXHdI`-tw?y1G|X3qSmoc_&~B)ztg zvnSUjYZ*4SzklkCPv7SVc`WJ7|LIZg>1m^zEXR^py?u9q8^yEjZhJ`?rSTpIBG$gY5?| z+^})CwD^oJY43gER(knmxg#z-{BMHe)5E~7Z(~i@Cz>(Zw)GwSzH}ZJ$8CL_t8eG; z@QuZs-Ym%b*QDz3Jpe_q?>$}|P7MATl|GKh8MzH!sQ8m3A=9T?61;-McVgIDHQn^9 zSt``N<%~5QEKzG-cHlQ9N2fYDl}64mno3aYR&44JjHKRqQkH)I{*GO`sliC|)P1v? zsv{Zq-O8qC?z@+a&SS<*H!Ncq_7%WxT6L4JqL=uPAMPhZ?K zHVaG;5!-D1&D*}$@|P|k-*2+$>aNU4UeLfx@_79>F8$RaKSW&~IQ=Tmac?_rS=ev= z{b;7s^vY)DLxJGwm?_?JEr-qd``1?)A`jet4c>mfQp*0wmU~NnAV*MML2dK%Y4T&k zt#lzdbmQBp&AREiH_`#0gX+@ZI4~OQ{o~)IvrD~VUQM1z;QM#FRqYu86^AD8O||oK>Xd&T zS+sTYo#sydGHExO$uDXcZJhbp%u`|~br|Bv~IvV(ef98JQ?=4&5QT1G;FQ*>|N24&D~QMo@oRu zJ+q}VvLrmz`nvff={V3`?m^r}m^JZMmYbxxEial&=&pSVZbv{`nST*_Z0AplUoMuI z-i8kw1zhaz%5Y{FD6Uur`*dAek;WSB&5O-Eo|ILZ?%+x9n?Fxubsn=X=XHE_A@L4F9>(5JHi;5nW%Tg1z(^dep;J5 zEI~MD@9S@M-^Mw8YOnio zMAsqtqD=~Ca)>&9I3g}@VaT_Fb*JF5>AzPkm}i+gaYEbeU(`f0h%0IYUMUuOA*kJ6 z51aH=|DEJ{n|yV$w{aJ(we3gMaEUm>ndq}S1C3`{lDeA4zdPE^hQF~s&07pj6$sMT zr?Y;W{sSlA31?xk!^xuhry#Z+tZhWieDUuU+lrU+sVK3zTABuE6vJw<#%{82J_>T2 z7)rnVdVhJowo@-`XE9=a^hWrGEKB~8)YO-6j7B$a-7-V7#W5_eur0(Ykw9ymoVbgp zEJY&CQ;ToKwTEiUv0OOGHenZ5;+rdahiYYxkw==#Q18Z~5K3&5o3h_Idi|L7lucex zYyXF;6(uca$v;>%7MN=6=-W+s(~X*IJYN$g-8t`1O7HFqbYBsOkB`3)i*+sHe2z9; zhPDzS+E8fg_4U>!o<-%HmxuJW$@765^QC1{8^+VTSjmF#wR*OX zxck4FbQ+Y4d-dm0tAS))iGrr})|x11VnvP4FD!ml-$yaV z;^BiT7fz+!e1}1G({8m60R>CNhF70MJrk?(edsI0>%^@Vo?*P@72_rwDcsT6E$$&- z^i-0WeEDPaf)jrS2j%X*&UtJx@4nisArXa_%Kdj}BQKNPar5~qaVd4{M3VIxy;1l- z2q$+)jfXrct8KM8GG|0tLzJIB3BkL6lkv8chbV)XJfeo(>HxL3{)F|kpWWnp%rQ0@ zn_tfbbK!eyWhDsUF2o&Qfv48V72{BB zsb)nsDp^Xr$8yJ8%1La5S@Bp~|S+D3Ri%tN$^l4QeQUiIvX4 z_L-DzwOU$6?z^^?c#B&owmAiU$!y5;#fqn`uP;13H1Svu#3t*{vKmtu1DX?`^39M`~&LM5%JBhDkgePD`dnvay(Axb?wrUrVO8# z_9~}RI)ooSec9O<)7SpCE{%H8XvOx1CnKimab&GNO=WWDVPIU6<7z zL>9Lgzlr1a5fwijb|9O|_GwT(5I0mBd9dqXLpUWxj5+1$jA+J|O~ka*v=WTz#@AD7 zdBV6rPBk4(Ll>CVfsJ~m9G5I4sOnHqk5O0o;Z7p{8qOa~9SpXl^cUFD&q7t%84L-& z;W+dYzPSB7(3nB6wMv68M=NuR?rX&vzGP7*FE4A_Vdy>PinB@+DQuK+-umNy><*Fz zo63u{A;YLG!>?ohk9bRl6*I>>Fg8%%UB4`5kGZW-C?`8fQRlLhW}L3NsEZeyTg-eQ zJbRxcG$u!R5tkE%Kxv7_R(f3dCxN~DHqpU!13Dem?a*!n1+kR}q6KTdF>ZH}w)nYy zqhvOfS+qu)a5#b5e5U(WWQ;{}`pPsnUowd#u|R)9=Ll^pPR$*rX(4p^^vpTdj;5xV z{yb-<&j>EIw?lZ>Q;JpG7?>{%n8RsPe8rgTQ6mUXtzNf?y-P{vyJQl1nfR+H>LcO) z`g&dH3sSucOzl*?Ju<>MbJmA7WIbn`Q)aY&zO9G4d6WkUy{ME5zqY3|f=0fm>sY93 z|71Z4cVzB(Kr|<$yeZ(@?e4)v_d>K{NWs0yUv+0QH(UIr$%H zgw|YPN$wqL-5!P{@2`6|tVquMV}3CU1SSWuYxS`dXtLv0CS@_d^C75<$xR)ZToGsb zA<7{YEjF*ImnE#^?{e=PPq}Y{hJXRFG_j=5&YkvQ?3MWYC?<*}hNs3QE}!D%NtA1& zYeRwz3k<)eJsW4-$dCN_cc_EyZgA+Po8IH-ZLQ#=l}9ZISN*HEci4^OyYyR)eL_y$ zz492DV>sO<4krfKG3)!EAI5~4>93eG1%wq=wXqb?BJwoyt5oY<7@J8%0?=0I_OaGb zCPQxGZ%cB7Fp*M`$tYzzvh7rBtEk@l!T877l^pSn#BQ7he~iaF`R*KhzflX9I?N8_?av$K5f8rI@+vm6HbiKr-AcaMr1Ao{xoYd))X&zBf;H5yhKEkb+nNSGhm_uwP(ICm6n|huaMW09!a(csWI8Mk*Isy_k}x3Q+<))sFi?_`kW;S zf9(?m%^x2AQUQeN9@e;*C&~^-s=w2N#Hw){ks3Sec*3L!S`7bVVN~aoA~nvEL9FK0 zs65Y77g|9~f`=rDYV4W^AsZ}*+Dz^DW)=;`$9IV-WHlYPc<$&rYv zsbaLc&6jSrU?@jiC$5W$?N2>Q0}P1)_Z&Q~Djo>5mena$(%8ST@RCENmSi zTDrl)4zD5w!LXh({RTAkV}%nwTa1O1NCpZmW32nSPw^&L6DX#nSqKgk+=)rwo1>YN zdWK`&ZH$rHMdb-A#ZYQYxBj*j{c&SUT=+iQP%a~LZ?R>W-Ql3rQytg{)O*oMT3h1C!Jh{VO z=0vVb-t|%j5+V z7s)#@Pgh#lH~KyC`s%)v5>IzCkCPHee|Ycbf?XTmqjo2i;Fypljzl<~=46;z0nJwH zLT^tsH}eZi_lJiK8owDs)n%L=sZhQBN3^w?KYk>}o3C1v_;9*yVHLr_mBFW3(_Pt0+t~BHzFx&2cUuD6G zdBiTysV4~EmU&emtCrI><>Q97V4C+$6Fp(u32938?-MDK;e02k$qq(X-0K+am@HI> zo_yNdT3nCLvx8#B^t8QS)pSmNowY@;7@%!^?nLs+_Oa`DDyc!ja{HV*Bdrf17( z1l}Iwb^R|@6qSCD-KpK&UX@57?&oF?wiTt~^c3cY_W8U=$8VF?vE2T)ZRo!heY!m(wY+W z7WT8J?E5hWwtVO@DwKYD-)h|H#*BqDULtC3k=;3i1J3InCaiOLf={ZJ(p9Qv1r>eN zpZ2ko9u#FE2JST%xJLWkp*byniiO`nn=RtjO=v81Rp^NGb(%NnrfpCftxC3@kd4M| z2d0={%_c_|(J~$f9{eb-dpTY04nu2PA$EwWA0e*mA$+(%iW+sjE46Ibu8&k zH}Ao|U7~z?M;}cRuZ*IPKAQL+Fpw_os7kHg&Dj)jd(H& z_QRdGTs2?Zctju>O8;_4OCmQ*Iis@3`W4E0B!`@@ZN2^`7(9a*Wi^p*{wG+v=b5w9%0c(H&-8WFSAzq%{@l>9o8xzn`=3LU|J+A z@)b+6J#A{`zLHyfC*vq7AJ+KfxMe=tc%E(+>+n3=f)b5*)#B$y$8fDQ+Q$$6qGE*} z<%(jz7W`IBZG@gbvGeCsZIduAw?{Acs-ZT=3nQkbc{VTXu1KF?C7XIwT$NfSb*g_e zc&4mm_&%sJOlsgi*piQ?CmmPs=1;wUkD_>WC7bIp=xc7A6nHS8^pv)PG%(s(@_d!#4hb0Vawv3qyC6Fitg9&tgU}^J?)I`0i5jT~c=;@7f-z z`)IzS38Ej1i*`J-W?353@KLDnjT)i|loebx|Dg)J9=M$Nj9WmJ-c0sDcZe$zza>|D zA;;r$TDe-7WIVRr2wRHXy^pt+8BA%Jl~GooSL|u0ci%~;z2CY*r?5C|mhFK>jZp3} z-?$wr5<*XEw(#&Ti<6L}FC%k+H_LzxCaIw05~eOKK~8hmG`X;PhU!fcJ<-;)famrO z=X#C=MbFP36MZ&+BHkK%Pi=E0pThx>IuLeF^-4fHbrh&i`ZfJBftO-swkap)7-vdei_!ZXWNb5e{CRLjW{G$?c`u^{(`06#Pc#EunPx0-n(wr+qLLu#5eBV;EaBObujIz;#Z(UD)mo8NcZ-9nJVtXauLiNCf)2EmQa-HnKasj`l)pDI+|YF0ofwXpkz4he(w0s78Y9M6{z z75_eV*R5u1V#?MdEBq>Sj6$!!;`ckEa)=6NqxAWR74^-O2g!RH^VEq{hJS2ZDp2sA5+U}d)vC|@6G2~rAV47Fgm)WG-WR5>D9hsb>*K@=X=<| zJg;t+?=9z_JosgR#UZYIdTS@y$c#l&)wbjW14=Mz^5+93gYdFZL`dz_L5iN*3nn~k z3O9^shSy&H#eW-}xtj(rza@Ls5<6Do>l%jD{m4+KBh*bJ2b0e~@;{rpq%6P9utIWDApFH} zN_@9U=|Z_IKU^*qb?Hw)a&-DhMBJXmnea%T@<%d_i47Je)z>YrYQOfM-7s~(-PL){YuFiQ;aw4%nX9d7_Dgcj8g5iw5vk zx7CeyGip~UZ3mUVSBsjM3CZALdQq(QT&N9`ZI%*J74wGg~MkZNuS#G zQ7{OH%)OyIbC!F7T3k@su5ODVaukG{UX>uDeOFMvq?$u?PXcv*j!_wZZXrxU%Z8`a zD9v!D30D;@r)`I{jsSh*q!_(8XK^+qD>60YCsS9OW-6vE;W>NW*$JD8N+tFLp6nqx zZ-6iz6(#L2*X*sO#cSEqu4?bk)Dpg&BMNzlyz*a^zZl=EX1gP1SGErfZA`1Nz1JpU z-WalYznk9_Qhgt5=GDHG!E(*glhg|+LSva=P&O>+oivIfG#=O0!+zGh+4r3I z=2<4sVtEqb2UOMQCONy58@j=(-?W$F1|~?VwtZOFoLufTy*yO)Ue|svHu~z5jP_Ds z>G5}g)})2muwbR?9Lz0Zg6+g@OKhH9x=6MT^YvYI8c}}Y+hndA3agT?LY-eG{-*pO z_x;UhPIRI2S*>`nQp(`Of=$#n;r8u3{;)4TA90(Wl_ZpMm-CpI!7GeI&0t zQ0uVmQBq|wgfTfBa^F;bocoQ#1sZ9Tp-$dB#iW}uL3)}f&QqtZiI_f;Odik5hL>tH zjY}MDBpmmj`lDAyYGD7C^qGtMK6^`+n-jeg;^mH@hBPaXr$t%j)?7& zn=kdQc#ZCmEXf(*fIj0h!1kkZ4Iz?zJ9|WL$or-&hvM1Ja0%*~sJ=nwpPb(E0pAQo zwR_S1U6P&Ao&=xJ9!ZE#rnsBWza00>3(QoVKI48<&2t`gy-l}=V$CpD^ytO@-$nAV z?;7dlImS0qj&B9N9c!qG%@$3tSm}Lerj4UGQ7IW8Kek^(>&N9j*61wNVrzvitlfH6 zLv7~&NJ#5Zg@=l~n@f3H+2F6`3y3XPlkJ{hiR)V+7Pp4SI;)FU|QD`+~ zjiXij$F;;YMJ^{xM^k4zQ!z%)E294;95E7nH$A3&o&CDJT+%8#l<4(uEvo1GGNk^8 z*ir$@LkVJS3QIJ<@U7ayM|Iftn(6zd`FSfbUEdVC{!$5R*~2SpYDs)?CWdpDl#o=z zdrrp3A(LFX_<0jXD5X?AR^>+AvxtT`)$7ve`cjILT+f{bG^WH(N`WU=ea0j;wE`FRmB`>PG&2zzjeuCUY$#3680DC-{vf{&Qm+NOYpHKB(g=N z?@cmC1i{H>?S#0jmO(@DzhC8L1M8`4A&&;qsX0p>1vzK`Bqr|#q)D^#QBaX{mt-gJ z%(uAEXWnERK<)VO4!<~JvxH7f-qTV{SX=SaF1y8k<-4)+$kA3+(;+%Sub{3X;X4$s zu{;bD#xRPoNM30l`_qo15q7Y=+)|@9FU&plrd?tm(XvVNWycfXSbL$u$)bd{UVI%) zm734GmF2{cqmf3`!KIGF`y`s9@8Ei@fL8u&e4_r-gM$@)V%wVakZRU5l=&PpNj2;Q z2dS3@{fT{dm8jL&&GJg0{+;;ySoVC@v3KnC-hR-5d)Kv`MWu#|4c9;F@^p`^Ha}`2 z7@=Z5)KpVO{6qdJd|#0US8zPkO&=o=yv)e|Q2ff|p1?&cZw+k~taThpGy+;;V=s9G zf&rnStYGLj|MQ!#$<5glu>-z4Qo<-CDzOiX?&~%v{WNJn<17~798jKcAWN9FdMMl{ z%(BHffJueHq8j_2*@&2Urw|+aIm5lu{Kh4@qu(9bPk7P|X1+i5<87m}x8Hv$(P*F9 zd^0+_o6;s;V8DdgssG;p{3t$T3l}JDXlw=H?|1=1!CS~XDAyU%keA~g5BNU|`QJBa$S4^? zzT45O>T2BEw{KTgR?2H@6CetUicns>c=7s~j)DTp{QNuu5h{a0{O>} zAI($#=k>K_re|i>CQ8(XK7CTs(Mdcz{rS@+Jw3g!v=qIptc;z5L&3r#?`%K)#fzf4 zIzoiQboI^oCP(J$w{PAE5|cPNIq6zhTz$M277;0`slk(xkwHGd-`{_Gu7No|Az`BJ z@gquV>fX6IO1SvUi!$v7uClT@LA(HK9xg6!a%$@HrY7Oi^77c=vEgA95(P_3dR0|b zenG+KF)=vt@$utz7E;^W+wy8^SnuAwTU!*3yoJ`KkOMt!D*xHIU8-3H* zsHdwN5*dk!K>p?J<1^9XYPP+*tEi%)vM5qpRu(by%1jC3@#=oFB78xJ@gVEW^mGi` z6ouSafgBd1vby>MY(ivYch}tD5g)114Kcc11ovX81)#BV%HQxoi;H zT3S{P4%ikJ7M{9a$rRii9XaUag5uSZ=on!?pFVxMw%pj*n39%;1~2NpzeI~%vzS;E zY^DG4E{3zSGo)xyWhHhdpQWmyAz9sn_p#yO=uOVEgioG4sc&oyd-aOP|8(!l$YOqy zlZ{P{#^XWz6N0yH-<}s2Ger{8;syi+bet{)Y%h1o`8Epux9;~r^0(;e`3U)uuL-M$ zvN<&Ar1;i5Gc&V2S%yb;^R_RYjgODWz+`yVI@_Pac55O;`xp!&$n_V z9%G8REy_m`(juQOE-r5MbFN{0a&j&9ArjNFIsg@V&wqdS-28Y`Sw)4BnHkOA-X0m% z_wQveiRieGQ8w`o4-c^k2vi&#*!Py+$DyEMTCMfPczAfoLsnc1cIvW|F>!F<=;`UT z23<)a-y6ySS(i&obS0_@A1d`qN`q+Z4JvDE`y%it`V<~LctEEbPZ{d?rQG^xW0;?x zf91~qEQhRH< zEG#St;*fcbzPULKDjFII8Cm$++CyXpT>ROg6mz2ioTT=#G&MC9_uZoz&6A3Xqu?uU zX(5M24Qvdj2{=x&Z2$Q28{>@a>({Rk)_&wlZr#G6rl$U!FGD>#ItsP3h5JA8U}^W= z&u`rXBqW4w&Jwi49Y~~&13(;7K0W;eAmgz;&WMhQ$podeKA0307l%hfOWQ9Ynv<=| zt_)fDp|_WWoIJ9$lm(wk7(0#a?m#++ft9s&55-mi85!Bi_CyIbK7QXTv$x3P`J63+ zr=z3eFk44!O#EL9Vo`wiOr()`z8v(IAc;=q!@+8=fX}X>R=)HtKpH{grH>!)(8&0c z{XN|uggxQ6|4fN|4TEwm$D{C{ubH{H@T{$^vGMSfY;9TI`R)@wdi1EZwG}Wsm2XaN zcyv@%SC<$9nUa+ijdO!_C5%Y6`|NPNsI;{2W*@RUHf*Is3+e8b_rzOj^;}>1`7<8w zQ&%pWo{Ppdt~2kszWRH(;NI0UG=#n1^-p$jagjwbnU{y>zraF@;8E~)fB1mP%ggKG z>ACtxJ(wAi6}eo8CV%RU_=OgiNF}<*pc=D6-d03d|&g5;#Cam9E zBfU_8e&rVh!T_$Y`*U5vayq%Ybmb(#+)TuQhG#)6~7w&UQDSfuEoF`uZB6 zyRR?i#^Lqf{l^rCa#Pa)=d0hpM*$9g&JiP`4?1HclCeV8{oF!yTwE_i&hzZR8re8T zMhK9>`#dsY*Ya6JL`2+soA}AkxzPA{d}LA}KYDSx&-dl~#nSr#agP-QA-ybqkuJ8e zv2kmA`(xr`Hs$c&-^Xlb>nz|MqVn=+WiJnuv~olf&>sI+Pggm+yH4mB7}jt{bW+kF zq~QUqv$v;bl@F)aP6KF6(DnHvWK^|tL`_;;Zf%Vf5V^X#wn_dYARrJAybwP5wGb5@ zjg3zyO}V$XmnHF-_4~?YT1SWU<7hijXNWLN0!1Su@aX0K?^wf8Cq1tXjE$w+V=Rn zA_MV|cUufL2?@#BZp~{XImEytx4ODG7HrhH_{SMwYI@7b*|~pn1W2Be654!=>)#p2 zit6fWVq#*1rKKeqIr+nhVwHn~gOHRIl4S=z4qje>M5&b@Kk#ncxKVq*85b&g@&4!r zp1^>uk)k4M+q-wEsi~w;KZ&Ec5=u-d>RX?9$Z$Ehx#KTRerW<{-Pqhz0ctI1(7CZ; zdvQE#x%2aDqq4H0k&!9{XbO5lY)lLzQ}OGr>uf|aRO#8imbNwy;{4)*lmzJScXb1U zG)eDmd8iv@<)*;DPmT@_3T*}xV}1y7am7(lQ9Y2rOi@>c*3Jt3L*K}#9Jb8>8ve3( zus$#eSy|bsA|0Qo)tT?e|%H{nQ1O6r@I1IM!d`o@k@#EI)!?ctUiR}2wpw>T@G2<;Jz&Dvd}`HSVZhRQ`=Ll5@#EYdEk2E(nHmo4#CY{gP%(-u}lg4-ex;(o+{|?LSzc~J}y1UCMGTcxg{q*^- zg}3XIWt!2^(IItpyb#~;M`QWcbM@BxX~gf}y`!=Wz7l!(@ZrI)x68#qdyreKlP`?} z)c*3Imk3D)uyXjSUcVlM#Kd)XcLxP$4V7f_&YJ^%Z1eiBn`IF3GBYt9^ix=_toBAB zan-2KoI^~b53be+UHOBy>HhQykN(*K3faw@w=c2^TNYS5~a9-`MCULBA^Uej0sxvS^(rW`?3NmH5|L1kE{=IuD@Hu9XF;wCn3_O;dxqtz~{rxI5 z$%6v}ACF}oz#U6VOQo+~X#?68f6Ck2perGP zLZL@}&XnQfBht*^R(Sp3Jp#eO!Ex~WcUWgXMUu@-tc`jyz`U7m(a>(B!b2!>+VX{r%UV%~OiH zP!1%~CkfaLtn7Vjzf>72B?NAzQ4bvF;c)8h`sU_{#6&_Mlqog#ee)-7PD1JK3#Q6>ixsF94e>SgqlIdGi5&~zww03re4fzStG z5!Qo=v}%Z;n&}xCOrS1dQ$ZvopTEJ2Q2aUHj0eb|22yY|UnZ`;o*$}QX)RGiMurwR5F!Lx z#CdLlaMa_fPI%w4?`T2>w7Vo-eX2_AbUJF{Jz_jz3L{oEfN-aD=qWil)Erz~ zX;D#8eWR3jb#%%P4m=L=6z<=rvh2`a0Z142+EAYyA1{Qe`T~^fpI29h$%i)`9l5}9 z6{yABN`VfxRh2;CfYIJK-uV*6#LRqNY)u*i9mm)*9h?W5fdww6KJ?v6bQ;W;&PrsL#n5eF!gA_@t zD=P@ND*fy%nU8J&=!8J=)RZBWT#&S*vvbV|Z*V37)2ghDBHk0k|CNdMRLoSyfp%4$p)?CCDxx4?{rvquj(B+i>&fD`Muk{o`TF{@ zu&`JGK_m6eg++t|MeMxTvE{=0dR^8ZLtx~fprAl&=mx%KWp5uD5`rM++aA1+1a*-c zDeB>HAuA_m9p0cd@UJK;Dk_WMvW+W2AE4~oVNpezkff7=7U zJLu;^0TK*Fo&d@h=>nR)b(?E)yaDa)-^p*-OBFCq5SI<;&d|?t^YZ%t@y4OdMUyZS zQ&YzQ;#h5de1YT>@Yq2LB4>%ktWPFi+JPPbYR2Ic5DYIbTkhF2gL{(#?%vn=d3`Od z_`W9zuT2^hJ1+3kTtJmGgQv4Q^J>AFujlMxL@n&>?qZuz;Q3~zV7rqM6o25^Y7}It zVvW(O)S9wKw|p~&SSbL}`5$j-Y2}KO0MArYRmFt(vx(Jo0_#VHG)u&pT=rs{d9mZ^ z4d{YtLpB72gag14>fOFcc6yX`0~rUt9!Dg1Neq%aGAs;DUtj@OvN z7-j%R1KLR+n4*?{_g|!^C#R=}a~PCI52`P>Jyx@yWN3Dp#s!6?uC0x13Sf2~LSo7T zD)sla-UbH)s#g(yUs_wMh3wY`2F%8ruj}eqfpI~fye%ds=6~_0N}1jrddT_N*^uE6 zI|!Mby?tlu)}zzCZ%q&TaiL#Pl3b;nEkXay&CO-!<4cN;25GDSktqbd6#b7^MC3(v zO-)%HA+m%A2cy7QahxpGNKZ@qZM5)GCO{Mi9d*9(QPSscHLI(uVE?eaX=o^dgg(p^ zLv9qyS8%<7?j=Ho^$ia8E-X-Ua&meZTn`PYBjq_Xrr!QI3KCEj(AHz5M!^)Y+4}sF zor^21r9~7Z3*+>wOn{Mys32aXd7j_Rm*%+PTz)rO7za#cB-dLC*q1?i1~+fsyi^%Q?t?~ZN{Ry5T8yxI zNSd^E({<=pO&+U?`UVCiAQbh%*zcorR#Cxdc3sFI=Qd$@A>;}QPdkpBr}(ANqu764 zpk7kj+uK_=-;|e^Pu!>fvAfI8%p3-CAtrhokQmuaAi-}0+y9zx-uUr@Yr^L80e6>! zjg69+`_i)?zs~;tO@kznkdPRjlA)oXP=j0st;>9PW;;NI2VnJn6AfJB9EcEj_rufK z!+g22f!Q!P0PiOe?A6;R;x*OPeO;PIp4VT&3v*ok5aA8}2NTmf=%~Q@;)AY^jbkJR z2&hHJ1NPsmfjUrD_Ff+#xLA#%XK}NGa^gHXI%0yrc=`HLV2!%(er~ycUIAGwt*X*!v>!?RwEv$COu7p68`(XeKY4=z+Qt?9^r=K!dwZHZ0|OB1 z7`iW6`T05^ue`x#i+Mc@vPa*+q4KP&LOVwlI#1c$oJm!iC{kDUMiP{Oa|0oT1l0H} zLP}467kD5Ouyx>-0Tr&`q9=U*{CNn7gS|gLEO=;QA_WX&K+J-!pSO^(o(bcM3!wHI z48-FAZkukeJei8YBT5A*C7_cwSuAEAHn*^F1j0rdTn9Wy6`G4J6xog8o(RRFv;2wa z>Dw@%dH48xVjs=IUAZe|5TC+8+IDVKlBD!uW`f;D^45^_NiNlA zJ>c6A5^}6D7%(sc*MA4O7e{9dPD8>iAxNiR0NM^9Xpqbvl!Sip66C4l$8?U;k`g5# zb(h3e?h%hNg--aOFpaJAj?dYC@!&435(}D9h-CgouiYioVgIAZT)c z87mtb=m^qgUVk??UKn^G5CAP<5GvX0GaEz*WCb@jx9!n|9&nAh2AlqxUr5suIbsrN z=HlW4seENGR|gL5I*3ZR0ZaCL;|3VHOniL%c`d%@M|OSv{R(Dg)QEb|byZtiTlLMS zLj3$l=NM_KjmiGSPh-{gueh+5ZqF4sNrkSYd2iOkrlz)*jELy$WWl|RsbB-j5E%i| z*?uvb0emR>Qm`^R8?HCNlfm za!3{j0KU?i8ci%Bx{bJu_o6V^{F?@ZwCd&Dq@mkls{*7~8RXv`m5{5I9<&(A{CDpp zVf;p#q>Yb@TMRZ{XWMlTsACXl(b3nGdn;giR8>`t1kv>L^dMCcEF|~`%UAv0I{DJcv}kfSa|#plYt1Y$^g{28=FN`Z&y zTcde#m6hx<`vVEl(ehwKk$|ow83e8M99Y9TNH!Hn5CllZTi@RKtW*D_M^381M@59d z3jv!d1aSu6?KrdU;pO!KcsK(w_ITr?yFf>cbEmFd-;3{q1P5CVIV0kI(82!VyCckT z)bHFuMf~~s^#+o`T6V+(n+?dD`2>)f2C;Bm?zC7$y?qxla%gEOU($C^3mBUI<3*uI zqor4WPv33}03GT`?Gj{SQsiwU5-!g)Bb|L^rpCy~IO1=KiG`Kc*(s}?E8d`I_6w#f z{W!mSdwXw7rd)L$o}RJ+7X}tt3`SF@6|!xg_=1>-M`kW^q^7PO0xjfzbLwj|q+j#i z|5y=tP)c$#0;U=o!4d<&41jc%e*e4Qwfu0<>vYc|D?9tc>@3Cf^fV$Q<_6oHsZwS~ zkR{x*vry7!+a*cFl$3KnUu8pnsX~mA4!Fq2C(x`2fMXvvI|F3|{aYm^2mXf=*kAxc zFk7NGZ}W=ayFb7KxU6ez%=Q4I@6#tu-oXcefRj)L8fIoW;OuhW95lDIyo(e{1eE-R z{j9N5v$J2oujub8kO|0euVgi{u;6i{U3z1O7kG6%JCb1_EH0h}S_+y~3=C}ND;E+m z8+exf_bfn63`xZz5|*Z3wR{0(j}*$lg6QbzfIak5a6!9fT?U(u-(y7{IZZ&Sj&kjs z4X2;C5$3HPC`bo_-$2r2$py;-(u3$k%FoWK z>?|-2TYXx=u@HZD#t+uljLWNRm}aqaaw%I;`7vyn2XwLKJc8jUQ8%gRcO!V~hNUG!Odulw>oIwGq{Le63L9#qU zA${N9&O-;>>e@mn`_Mbj}jE=5sZOsb0JXCXQaI{t|((Q2bgQ>@_xrUPA!5-1U z(?Q^M9I~?c(a}(6-1lq(z=Y8O2Z1eAUS96WN@Y&Vraut}+ zO@4=K_FpZ*fJCZ409p=K*7D(#-#u9L$yHT5T+Z{FVNe#y;M*opiNt1>r9WP@7~S{) zsXS3*%m>X71)K^>xuA~4=^mJ(AV-pO^YcuSl2kw})3a^u!tf!Y2x1hgdy9UGem6T~_difTl12!_z(&pJaeuX0lr8;?%6ENB05EFZ=aeBN{ zQIHDbPm8V~3#ZWtFjruto0gN4V@`N?4S1#P6fD-t#wKhqi5{uHKzU>=PAkBu2x;m6 zn0?JGDry9eMaV;Iwja%nxx9P^17-&&C(%zqB_$;SPE+g-&dw!8MWOC292+pu0(j;& zYr#i=Z5e%edCB@U6CMvBQ}p_E5@3j!Bi`;ipC9}%YOcDoCF{N<-PhN*0>6Nfc9-9X zKeC)P$|%BqW1xmEmb3b|Vf6I&D(#Yn#VIoZc`E@48GFN6tT}VAQWhk&JIk%3^(47e zK*hj+SEt%RV~!3E$vHV@jitsHo0*m%8}23K8&z=_8XJSpfCV)B=s0111bvyr~3zG)&1z>$X^bPWugkI26u zr5E6ylD$1Ew3Tz!R0RNWHEU}|AT{8?X1hFdh0Xx~(7S&>7J605-2z!{qw=gQN~8x2 zE_DxdxY9N0T$l`lvoQ$A6&fCm(RD7{(tt#K34=~dkd~D-HO#!cI=pBw^KvhS+GpqC zQ9+glMivNR@FCbkFcqGJ#Hp3T6k05Eyo$fP1e3r&LPz z2dAdUpi#i+uxGqT=|3UFLMo#1(#6#krnWJ(Qg8&S&ax{pIhk19YasEn~1rh@$Zg)j#d{?trPL!;%o&{78O zpT?yGoN8&Z`$P`lR0gfV%b$Ob_mS2SvfgHDO<`)#4F;qYvoIFSJc43E7pa(fq^oheyw5n1EpOEu=9+0xQgQ27Wh5N78bPN|IKdy z1w8!#gB+ws0NZ8*Uat22a%kpA=MXvz^5hYG5AhEYF*^a8OA z>Wh(y2^I9;rF_~c*2=$xPoGCeBh%7uh`P>CZU04%vSIqr;D78CPcKJj`Rq_7ZDZ;g z&^ohA3%{Rp0w$)WtI#`N%soby7u1zJ12IxIKbO*24Yr3kXnBQHgM8IeBevZVnRt zIV4i=)Kt@i*)Q0vc%apc3=D-D@3#L9i!DD319!+}xsw*CPv+3Oq{PHXI6DBAcH3Wb zOpoN@(g6Vb!wEHdYY;aF$Hy-|Suu);+!V6^98zA+`uzFxagf_pdl613CGYg3*?L_{Fzp_3CQ1mh4GDV$s>?C78Ylt9XBpo_?(EKq#^=hPA~K_#H? zNV^#Zo=Sk*_PZP4P#}{La*QoMWoZuSU)i+hPb~*5r7U)`bhdF%VT*p%(um~Dp z@D@||5BMIGKOs_0gKv4Jy2+5%P_AcSfOhxpT^ex@1o$j&DaSRpdjJ*dt$I+Alkw%? ze=;xxfapSpP%<~q^;5|hAct(eC1l?{I!cIS-8tL00q&3|b>JWa66FBZw|91W;P4rw zIGnPIfFTaVqNuD41GWRq#1&Xd<*QdJP;HPP;h#TifrwxL^B)fGAt%HC=fn;^y(|sD zNcv03-@kwN!kS@dJFz`m1^a=8Mh8&vrFC^W@G|KaM{po76&4(L z`ps9nB?*EuiR4>PnkzDKA{1le<5`G^h+rJR1c$Pa1CLi0?HNo=OmJ3iJMT2*~5?gAP zBSsKnC^C$m3yK+L#ME~w&*Z>O-B?{!fKal4eU>fsh!B2^=j7tbdA1Dp1eh0^Kn_^o zg?6WFD8QG}_4I6*n)&{M%NUX{Ho8)SbslLFfUTD;Gv*55CKGg-6&(#xU^%k8-rVm& zT1z7%a6;4lb!TTjOh+`7l)~U}4Aa|V4{)-PE~a)CzXI#h3b4N%mxN6?8T6*Uz7Xl& z`#7t?{PEXvR{?nbS|C@U?`wgdG}3bYS1vCH%tn2nqUun=_9NLU6ujoi^OC%Ld=)UW z7|)jppbA_N5D>6+a=HWWPzv>D&zA!}IJD*qU@I(jOVm_U0JCwkvfm-!-=1zyFe4`l z02WYEryDJFNOMwKI{_ALS8S)lLOKCMS_d$@VDkZat8_O1@Pb5e1o%a2b5N7F-QD-e zarCbQBxV~tu#pEXfHV_O zy8V2YsjN&)&%tj7cU^n&&1X1Q^)vY0vvWb8?eWlZoxD3BaJ@{ifIK(BoELJZ7z)wC z{^LzrT5Xv4CS2%}$0#>}a}98qy|^SqL@!%v_bDRB0@AN zAsH&#WC)Q;ky6S~86y#*C{(DVp3mC%@BixYX5aVTuIu^^=egFgj^kMC+?bLy={C%i z8MR8sBSWr7e|Z0Xck(EwRRN-^^jy1{;>B^vl1bNA6b2_OQ`6H64<2e~CNK8Wr%A~6 zR==%&WDQH6N}kJj{5Xi`A9?=6_z@$5S=Sk)@f=&HVe=9vspz^L#|L*cWA85eWPTzla{JAzX$y)C_Xn0GKvXf4mziJo%5GLD6| zLu^jjhlW1~auUBBPtIk{?cTpX9f;7=<0ZA-qbE-eo^`y>dwb5VbNBEN+Xpz~BuLH5 z{(NoiCK2fEJ$`iIt$)Kxk(!e;ZRvhJv^nbN>MxfcvXJq7u3Wb+9lm5$)u(Ax?3Yb) zTf$3-QnWn($}N}?wWxCRyWL>*1<--_gI5G4jaSnC5Hx9k*jPGt>?oWys2R7ZPZM(m zEghX5=x#&;@h4-iJH-Mn(w_$N2}Abi@#CgU@o*MjszQCna%(CR1wdh!<|otA(xevT zak9%-B3NBHf7-+~-S{84}p$e|?>Vi|E2!wb|WT?L^s4C6&#mGDooQL0k`sUp;H~ zY@nu!lst+`y;`WMhEI4n`NiX*bFXj1vp2;4W@1i-t~hh`8fx0{yh&P0?%!@T*R+aj zsQ;Dxt*UBANJzKwf2yYYL{|cnvX74LgfFi}n>IT4NL4y!gB` z<{2G;j=)gj_B7Oqy{4o_E`x z8EI)dF$|fo(uKe3+O?|=#8&?GRsAL0LV`s6ObiMM$pfuqlDAA0t4Cgi7OABq?6JJs zh@w-17VOxE(t3!HLI2ZCFKuYM)EYDQBm{~9Fu68KoBlZ%5@LS;lKu6So?@;+1#zib zu8OECG{gP-F*&=!6VJo4f4}jWUC}Xc-gz|6McIc8YHMq)!jiTnWQE?@T>Y&t?3gE! z`z=}yrZ+FH1?)bb@{Oc?obupeT%7AqSEMSNb9M<`n=AE7p|Tpjra1fAmcWPE*~Zj$ z0fB+yPsD!XxM-0f26oJtMd9e`r%=o~dhGAmsnc+eS~qOD;z8l}wb!S%sH>}dcxdd#*crY4E1Kuc z+fR8pvNj+J#Stz{49yrQdU!1VF%l)e%>Z@v1#mwXuU!i{bWCh>^Qox?FF(` zU6;7;;TDhhy{ z$F3Nl-Tem%VG;ry#=*k(1!JL9p@xk4!qdFa>4=FL85z4tc}B2g%P$T6Nwkt>M)5n< z!Qr^Yyd!)9raEUy)>qP+|JAGi5a%+}lEMxiG+~npv(Bz~Gb}+bDPqcD9Uns6r)TzC z4<3Gpv%Uwmh-t>g#-~uUaPGAD| zBSi5W@?fYmbabv*zjkAVEx``)IL3CQ*`!H+CCh%KZHP(t3l3HvIePl9FE5O2Y;4|_ zmYN|iy&aacRouf+&gys=qphPVJ`9ia4I7|G$s+V9E;HX)r9TN`y(Dt_D)k!Gr^Am2 zXYa~&o8STP`0-@6BuyF;PO=xMh>rZFt7|i8b>=va+8{z5BJBjX%HqjBqt7FaKf-_H zj9&{7Y;0y`ri1ETivv_++_wzFqrh)3yh+?A(3zvxjfGy$&TG_C+ zhqGT`pb-%G{kwO0X9_-&td{4@+&=GTUCo+RXG?kX1B%9c{Z+X2GzrrWIqb38A7Io! z|K7P{jQOV1k54&Xkc!ScS=tVU`poTDUU(-x-HOz{gj%=b)-SwIx?)Cb!sUO4XC<0a z_?B7?D2tM?gyV?wj!QRYB=_&=vjms84(?963l0O)F}_uiC6g!U0%N3K8PsTCOlo@2c4y@jUvgPx8 zIhrLBBGGA1!R%QPP@F$KI>CeMf3;m$w-O&xU8JjBktksjTG%H@r6r}M0R$E@V^Yqj zQz5fYEy?t(xql)yHUKh5Lr*VxTHJcR=~`_9(Cz#4v-|)~yi;Jgq`W3313LP{G6{i+ z=b%FeCr8JrHa7WV4ql?z2M-xF_T09v{8gs?_OE@^)xE)jW<2I&kDIjv%G2HR?95B| z;U#HLo?Ojo^5R$vYyV6>5H~i7TQcEV;GC5*ShuI2}ewZ zWf}MD5M!Tw43Vn#>B|-^TlOVH^cdkXCs6h4`a+M10HY`%Rnn8fkMG|~|H6{nrsK?p_o@&w8KBl2`Lfe|t4pRjw7q=ngDuI~S z8b2@nke5aGgNF`HLVXwefTE%zl~3Q^?bPqDUbCj>xN-hEibo->#8iro zGnc;Uqwxz_ncaKz$fYoN{pl;YE$!D73iU7&&kOGXV>eb9k9Dm?Rn3RwRez> zYYd)Bjktt9o5y(hZfyQ_9%es4&0O-EYvIj;GcPAknW7F&A|a>8@-J=+kDkI?L>PG8 zGud&(&(@bupC0JEbm={p`UOhbPD4K7-izvMjl;k0Z^y*<4=ad*_*@ zlapG^yrjdtx4*`YJ!)ZLAv&ei)%v(|iA^_e+~^M!oe}A+i=`n@hvuyrkLYGlTe^IO zxS^+nb!=E~9=8;k{t%r{P@8s3y=_+dX-p*eWKzqDWs5Jsp8cfAXVnoiclX2%BTiq@ z{QmS1e7y-CXJE?D5C>TM5b8QnHXpo|Wa`eCd=Hg_CEUl%5DQeoO3DbDw4FS69eft`?pWo=Rs50x}L&;~;kmKOQ zCR(k^#uJ4Z!eD&%mfc(SHy3=r62M>0ED@a~r?g(PR4J)J<-F0Cs7`1g9c4E$gQcRq_ z{wvY&6Q5qu*)Q4j?CFTPs!)=moYa4|+62icv6?*le&&|L)^z^CXa&-MkaqX3`IAe( z0n{JEx4u3z&M6=%he<4QumSGw?lxCOC#$)} z^2qM}nB28Tk3sW(#|_`rQZyG7C)tqf7jY+3eGZ)F)Ic&ngD-oC>tdPd&d^7Oo&IUDuDKS2>! zt^`rJIcEiHTCI;MdvSRe+W}SnPfUG1Y>~jh-WOhE{{+!V!vFHT?>~3zkUhRO<%wK#d>@cidx7Mv%6&=~-mAyWY6o9faT$bLU;R^?- z7Z|PCxbe;9#DjmFDEHsLd7}@v)LBKPz~whQp&GZwbLdZ}5yimTQv;XO4}?i9I-&42 zceN&fjb+fV=G?QacCDSe5B#;A1w&8|;0c9|T2&NtZMvP^WZ-yT6%~~!YaVA)xa-r7 zEn@JbnN4oP6h*K9`r3_7mj?VY=JO((fX&{$FT&3w|N4P_6f(3S-k5Lv!y6lv0OM=;{eIIB!2{(cSN6gntAJ=U(HpZ&bRKITF zk|os>qNkggn+vSv2P$pC3op)Zf|b^CQ0{1+l6l=`EK9P4QDh$txVxpc%9$0kxh%B$ zO93%6hjcI909OBW|NNoboAll`ow{@}p%9IL6`bzu9DV2DI89Ao*p8q1g(H1UJ9c`x z#!tf&-bvUGxh+(Y)qkJ478m#P;I%x2RGawKk;V_ST$JELiccmF-%xD)_urS3BkpgS4HG5% zsWkuUS>p%k-F%FTdT(QeEDBS;Q`vP?#(;h&;Vp9TJT-Kjdm}#HXHA!=h=`0Qrq`}s zjU*sZS~bbUZfXj~3CVip0ipZH+~F#%bmnid z69#$Bnp1eQZAC$1UlvvMov4=sRkFiPK;&HkB7re~}or$qM9HSy5Y4CqqIKG#{Bk6Of z7=UR4GPw5cChLn1o^zkv&G7HvpuM*ig-hG|DHh=drIA^;tpPt|^-CMeIx7XE}4~)Z?I?e{65&ZheO!MUmq6 z`{(lgjgQ>o#xv5>y(jGNrQv`1oc+YmhU8*r(c3LMwW7Dma zls5<8N7*PC1cIgwR8W9?_@G3!HQE z^L&6DO5;-(yBF+K9jAMpB_~n0XO<6Z(Z6#mYBpa?Ow^rC8B=f@NAkRyeZUM{ zOVX2W5vJRv|HOK|pAW|LKHJdH(C%+r(-V)p#OQJd z8eR{}3Cvm#LTvSPga%J)uU;xD;_qYoBdGk>gvg$x1qg>*%7tSGg*!$|y2??#qNOM+Gy|hXWW-e-pi`UTd?gL-xla?GKAlCy)o=Xx-XsTFQ#(-pJWAfW z6$^wuvJCXXg0mhYb#yw*a1$7}HEaIfuyLbl;jT4n)<8#i=H^;aDfZznkjRlzZWF5O zua7(ZQaO~>ah>52GG7AkC|6?$T*nb}=KOg@oL#hq-vSB~V`+)eN7VyUO4k^EjV%dB zW>1^e2#QtuxgiCNDN4Ee-7iIJLoK8AjGY^cbg;qaf#YLWWoX-;O!XTA)OD9 zq2E$MWPhH_nw7o*Lc{FV=U7gNbrm)JQg3;}R==ZLx_!59r|0%2O@FJXFogBOGbAdN zv$OLzoK^rC+MQEq*fIHb(-W^!^0s`A@+@4V<)#!j>LlP+aF za?l+JLTPj1UA5`1-IOnGk1fjUmOkn;b@li9Kbwh!hSR5a;t?J~B=EO;pTJSh`K+MQ&380B5 za=~@Dn`zTL0liE|@QV+Y=>e^~4%x!CG><7!qthroTR;Mk(`&GttrW z%SV^#vJrOjniDtwQo4QnHlZy=ZhFa*-EjDM6VwlaiHj%{TeN7g4U`C4K5_0`8}2iyvF~~P%bpMyHKJ!|5NXHo)g%OhFR2}`5T0p*+J>q!NWinQK#L>cW zA4u6U)PlZ>MifKt)!!OXAc?*!;JGaP$fr+B#N7$S6+KW^Ax-OCBg$}J`d0}Z$9dP*)-S%6ngX2{Z)RqK zlDN%rra9nvz2cu~#vNUhRyRdOL!A2%qsn79tlV`T?9_~h#Ikmv0gJ+|DOQG;Wv;VG zWCXD{B_+~UJ;%mo-E)2SAEjN$)^Ezol{`E=XjbXLmioF*`^1m;FHc*6?`3EUi*opi z*NI9i>ahslMPtgz&E1ZuCeIgDv$k{%ds$2?zgOobtY2}?KDjqv^7UIu4{IbuR(4~C zscff=gId#qdRMahOq7wa5)|E+=*z}?-yXw_%bKq-=gzJC`g$BsjCftV>$EjZ^Bd~x zMw1@_EZ$1-n_F&A!O5_)=uS&+P^MuqbfLz%e@Gb3Cdk#zPM$ouW%IaIYuBa`Qf^jE zaL?qT|LX{B-h3e$S{eXJO}aXZ+}+1Qtu@or)1x&P8=Uv*haC*sTdc1Kq9ch~fDs$M zjiHRbc;(6tkS_J1Vv{CbN}o+3Jt!$<)(it3-oONrN9tnsS;VzzBOP>r?(gLVW3J!0 zu>c`JWkfFp2SBEDU5J&6bjqa`!4wsgPN@0)8`RtzkU&Mt2!hS0r}Uv_dy7vNn6EQ( zq!G4e+RqBi)UO_qJ^#1$B!<3JhdG>XA-h0vCbB z@yPG3sAgg&B*y(IF6`b$QRd@F1R*05gqe9zvT|%+6j0f=nDC7!Oei9Hfh=yb%@Xea zZPdOgs6z`IFqyNi!=_mGn$=OB8zC);XC6PglkjjQY!^|)+Ipp%+n0-;Efu&ksh423 zuwS*Ljv;jI%AX$B@V6G10Evn%e1dzI@=6V2^Dd^M5bYT@um=FT-po?wU{Pw%P1@9j zOC<7nQTnWKa*Taqx@g(5!Bp8;C_ND@7BG;>PJ0Tmof6lJqT(&-%0*>ImV=f9E^Xxb zH>`cF;loP;R*4@0J$s1Fl@@@bCiMNiytm_N;01VRne9e0Z;c<_T|$%kIa9hlT^(F;Of*2%fOfpRpLPavtC?BkJ0m=%ScSeXV`lD!o7S^<01MYj?wBI`S7<*i4L z5uT;jZ^N&06(+Pu=RGS+TpkR6kV#vVwKwiuT#x7;8L0*%FGFJDCbg%+kZC8x{dUlE zT1g||jb!^spAx-l`sU_mv(m3!yLK1S6>m&~?SK}SeEsn_wBRzyUANQIqq6L-@%o+v z?y&+9X6g%+|M}N98XmF_gJ6J0td!E+@AR~K(d@v?J|#wYRlAFGFQ99wT>Ss5^1&)3(N$XvSmR~})U z;M{!S!iCa|w>;L_*2ae5`d`D!?VYV2McAQNue$K_?;ZsFuXzI(Uw6C= zC&ykXp8jq#+@k<7tSk+;c=%K(sXW_+#61Y!<5B%uVn}9R2OMkEFtJA{4_kUXpmJ8h zsI5qMU)v1eC`fWg%T8~Ki_>RCc5ShJ8*5M8Q4sLK2k&C^kCCtJMtCBZ>Cc&SNbOzMZrv7Qmpa6Zp$Fl54F&q^2Th5BQBXp) zdv#;&UZ)BoVJcB>zKcs6%pGys5wvyg2RVs{8DGSZtfpJP7d3EkX6cM z@OA|y1%LK|J;r{OK1-WK;Yn)|09C?#aGEH73uw(hq`P(y-Ax%IDgbP^**w^Hw_yOq zymizml>V&`a^pDW+JYclJx*p`O)mIo(wDN3XLDe9;!li$wK|dT(d}M|hN&AJFr8Je}NTT&Cz^SL2 zf(-Pc`bP#;|836YMQxd%b$ix}%Y23GNXn2ohyAee?q>(5zIxS*Oc?QGgqjz~xc}(U-C2=C zG|%SI6DG692nv9FFJQK9h7rUids$L6AGIFT2|mZ-kX9q4dP9O~$c|MPTivtN{`2S0 zd`HI}L^HRVoVs5b+1YofU{^61M@Cjv9O>A*w-Su**iBWtWA6_F#&HL!q<7G_e!K;G zzBDV^SdM>-l~lGr&KhIu2@BvoK@;DwJKx(IOb<_Qyta3MlYb5F+Ph=N?Uc6t)YTQ) z0Vn28+~0fL9{y7i`77wjyUOq1Z&3}kS5WO8ovwZFCX z+^ZGv!k(LRsp$0QwQIXj`CZ>wsZJZNhUQ7z*|VFIb!C1Kizuk)a8QEGEr@Kk@Z}GF zXGcZz`wt(slR;zV=BH*@g0=e4whfo|XL0uc=Jq}5!qlG)H5F=3u9ZyBV=>&q{Zo;* zp3Jku+nd7iSZ>oBEMY09p{avb>;kH*1_S*h7Z43yW-5MOeByCVGM){l zsrhLRsp1V7&X`ek`GNY3l}tXv54I57N>G+#+MX^_QDZTmTryUS=5(6G?)+`O?*^U0{|XT$E6Iz1hIFpECH6c=loar|Y)k!2_Z$rbRyj z*?lj*-xKg-rF($p1|v($1DZdN0xM5NMJbXxPt`?=g0i|vr|LN&Ay76I8=gS<8d_P! z8kyv0PMAHr8-#5d740LH6JG}W&CD363Q49;6Lah2%Qg_T40l+-_prfzQ z#w5tPL=MDI#tfB-Br>&TU-I(uhSOA@=w1_`Y1n<+ffG$B5B0f-tbj3kh!E`&*VAZD z*PYod$O0naBHb*B8!NqI+aK6(_`?vg{O<;pn9NiU97f?ft{!qf|T2_I)JY`(33d96ClYgoibJz-ev9Qt}kOQ%qTU5 z7{M%gD{k`xE+u8@#AO5)3_LHMj)=z%V`FRU+`lpzBY`3t)YkEdhYxNZ{z$wF-v9gC zTO(xrOD1hHLZs1}8i&8SsN^~@xf#s_^|hae#RUq5L$Ahn{&MjC&tJc`5ot2d2GsG;Mn^5-zymC8y@-YHDi4d^jxMtuFblJYPtCGTy-hT;p@!D zk%vwgTe8oZQ=r7nwE#1LqO#|nv5xFNWAWB4?U^>km)uW9P)Kgx zPg!sKPsoyqq(bJR1&tj8f#C9F$NT9o--mClpI>t{NZO~bRIH%#_V#`%sDq( zNC)4Qeuad^Z@+#`BrZBv<~@EaO(|JF93j6W?1s@|B0Lz47aGrcvf|V><#zeejRtHu zCgVL8xOS}jwcg&RJ(`!z*IM?tjBh2x0uK9?#m|qNjdsi5n<~>LCWjLgu)K- z4lGoh8=esg${Y=U9&4fixgpo@{CRK}ZJ&MnzEmBn9Jd**M}a&*d1rJjcJhrd{}-=b z?W6ex_oZ8{4G#(&a68s1i$`dZ-wU_bx7r`eg44aOEN-(tn1bUL^DSj+AS4d92Gh`R z8p#kithVAp3*TO87Wf58!mfr%aToIZ*>C_3;|0kDCN8QI!ma`Po^! z##*qumEjfC=2Q4VQ(U_=6nk^Q6ya@EdS75fF>LFns#=VF`v^GAK^J!z z5_gf_2Kr|F7C6?Qvlt)w_dBLG_a$#$@wC`tiX%Xa2CcjVLrVRLnO0{NjVxOjy##qm>wG z3wcTrxxiF?0c!-ruDg6Ha^3;!Ci`zWq@<)MKt~MxaDOqI7vRjG!x1n@)+YxxHSh~C z`17;OmUTP)o$`Gq->9kcLW0SB3Oo_5G5XsFTQ=1H$;r>(L)c@e z>7fzY$F80TZbZC3Om7b8jegjB9s6Hq9u*va*ofZz> znbSJEx>l7J^yF8EX@i0qQhi&;bCGJmAA7*yBDe8gqMaCx);t!qxEPxKSZQcthC_*Q9EL7K8I{G-fbY+3vyo@TVpxEMlYa9w%lMAuwaX7T^mrb1`u}+W`1>h9N?@oA zZlJA+vZicxsFrdY27EJuB@wG1(PCci$$qdHwDN*HJ*e1KVz7nKzNkyC-Fgu4keAuw4edDBzf$}bdU zyMi`kLl=0gQyM3-5y5abT4R(k z>U5*ulHnwOK1^sy)7>_zsmoC#mOF0oLN+$r^PqkZ_hmosv7JUIZJW+i8wf^t(K&?&`FK?JS!g^q**W|VK zp#G2EnFMS@9yTe>Tq0u2h7H2eAdy^{QgU+utq4$*w;&05GEFIdWu!2Dk&53gU7kkc zCf-U#-XTb=U&~{Z?zT6M%ie`+fb3Xq*&}OyPG1;%tS3qpLrvvy2JDYA zW)${q6|-(M!TD%i8%)2n&ox;|S2___I$+@4H!#!ibkF`*K5H=*j9$Mz;P%GV%H>Qy zHfJiJdzahaozdFP&R)pmxbU=H_RQ>u>&ey{f}dX|IP-r925KH2nnQ+&G@>!zzHF0W z`=&BDo;_T|N0%&L{^xBXZ)?n#e3p#~{Hw;Akx*4gV;z*0TR`70+Kv!it(yE%LDgu- z%`d4B?%sVi-^l-9oar?kZ867XPIXMPZF@HVUCY+30|VT?Ye>nC3nmgqY< zeOP=NKf+puq6!#6*abmt13S|u6{y~cxk>b&YA<}J+(wc5p$Sl)NS=`TY&ps$+-#g{ zK`U}R^yE9bA~rPCj}z5LS-CoNncJ)DtFkxkhs~=W)a3cSd!?7d!BdQ;X!7P%0&eNx z87d6lNuvnVbvLY1D|`4OjnjVUMBEb=z9nx)SA{EI{2@6ecArWEyP>bq>opU|JvH!>lKgkt$UMM`RWC^89{!2 zB6A)-a%8Krt+5)67c(~&ST|Js+;H^gsL%&RWo2!lVRN-FdmeCo#O@5f7jd@A5!0=Z zAR3!;U%jdewLld1qB-v!N*)W0ky8Wf|NOFNNQ77>yMN6CX4XD5#wF+xT{z&aRVQa(L57eiS@ zSi1W?ao>(PK>=WhDzrs;dergbDPMvZg!}!8xA9Jk{J^0%bsRERUh3MV%Lx{jULp_G3mUGsHlcIZuIujkE&T{HOZ=-T?>YD9smXJ+K{kU2bhyrVCvm>23kLm z(`}FvT_j4VE!my!(2&3!kv*NqO|i6;nWkGd_5Vr~IlZUs+G357|NOIdP^JrMS&l}5 z>5yri#5#l{2Np;~#{1d#Rx&zh?I3R({wtUWH^$e;8h=hJ&PUaDUR9uXb|8^ni*s%K z{imJ2+jG48C|2TkptRL9H|9Ly7%1A>@LN?w+dm+nw)9TIS!FE;1xiMyay)w5l-k8wp3V^zoVS`b5h0yq(WFkYgawC-1SivB&

0-;?lA83z!~+A7 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�&SNd(3RXZxJwwuA~~bnMEO59?HD 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 zphksF + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + 1 + + + + 2 + + + + 3 + + + + 4 + + + + 5 + + + + 6 + + + + 7 + + + + 8 + + + + 9 + + + + 10 + + + + 11 + + + + + + + + + + + + + + diff --git a/src/teaching/cse-662/2019fa/slide/graphics/2019-09-24-FlowGraphControlDeps.svg b/src/teaching/cse-662/2019fa/slide/graphics/2019-09-24-FlowGraphControlDeps.svg new file mode 100644 index 00000000..2591e343 --- /dev/null +++ b/src/teaching/cse-662/2019fa/slide/graphics/2019-09-24-FlowGraphControlDeps.svg @@ -0,0 +1,652 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + 1 + + + + 2 + + + + 3 + + + + 4 + + + + 5 + + + + 6 + + + + 7 + + + + 8 + + + + 9 + + + + 10 + + + + 11 + + + + + + + + + + + + + + diff --git a/src/teaching/cse-662/2019fa/slide/graphics/2019-09-24-FlowGraphUnbrokenPath.svg b/src/teaching/cse-662/2019fa/slide/graphics/2019-09-24-FlowGraphUnbrokenPath.svg new file mode 100644 index 00000000..92c41ec3 --- /dev/null +++ b/src/teaching/cse-662/2019fa/slide/graphics/2019-09-24-FlowGraphUnbrokenPath.svg @@ -0,0 +1,664 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + 1 + + + + 2 + + + + 3 + + + + 4 + + + + 5 + + + + 6 + + + + 7 + + + + 8 + + + + 9 + + + + 10 + + + + 11 + + + + + + + + + + + + + Defines N + Uses N + Unbroken Path + + + + + + diff --git a/src/teaching/cse-662/2019fa/slide/graphics/2019-09-24-FlowGraphUnbrokenPath2.svg b/src/teaching/cse-662/2019fa/slide/graphics/2019-09-24-FlowGraphUnbrokenPath2.svg new file mode 100644 index 00000000..7edd9c10 --- /dev/null +++ b/src/teaching/cse-662/2019fa/slide/graphics/2019-09-24-FlowGraphUnbrokenPath2.svg @@ -0,0 +1,645 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + 1 + + + + 2 + + + + 3 + + + + 5 + + + + 6 + + + + 7 + + + + 8 + + + + 9 + + + + 10 + + + + 11 + + + + + + + + + + + + + + + 4 + + + +