From bf1f6446986b9219eb07f583701d31961aa74ff6 Mon Sep 17 00:00:00 2001 From: Robin Date: Fri, 15 Jan 2010 20:16:06 +0000 Subject: [PATCH] Added Symptom Abstraction. Note this needs removal of some set theory maths from the algorithm section. --- symptom_abstraction/Makefile | 19 + symptom_abstraction/mybib.bib | 153 ++ symptom_abstraction/symptom_abstraction.bbl | 44 + symptom_abstraction/symptom_abstraction.blg | 48 + symptom_abstraction/symptom_abstraction.dvi | Bin 0 -> 38916 bytes symptom_abstraction/symptom_abstraction.fig | 23 + symptom_abstraction/symptom_abstraction.tex | 690 +++++++ symptom_abstraction/symptom_abstraction2.fig | 30 + symptom_abstraction/symptom_abstraction2.jpg | Bin 0 -> 32582 bytes symptom_abstraction/symptom_abstraction3.fig | 37 + symptom_abstraction/symptom_abstraction3.jpg | Bin 0 -> 39131 bytes symptom_abstraction/symptom_abstraction4.fig | 29 + symptom_abstraction/symptom_abstraction4.jpg | Bin 0 -> 19821 bytes symptom_abstraction/synmptom_abstraction.fig | 23 + symptom_abstraction/synmptom_abstraction.jpg | Bin 0 -> 30523 bytes symptom_abstraction/vmgbibliography.bib | 1747 ++++++++++++++++++ thesis.tex | 9 + 17 files changed, 2852 insertions(+) create mode 100644 symptom_abstraction/Makefile create mode 100644 symptom_abstraction/mybib.bib create mode 100644 symptom_abstraction/symptom_abstraction.bbl create mode 100644 symptom_abstraction/symptom_abstraction.blg create mode 100644 symptom_abstraction/symptom_abstraction.dvi create mode 100644 symptom_abstraction/symptom_abstraction.fig create mode 100644 symptom_abstraction/symptom_abstraction.tex create mode 100644 symptom_abstraction/symptom_abstraction2.fig create mode 100644 symptom_abstraction/symptom_abstraction2.jpg create mode 100644 symptom_abstraction/symptom_abstraction3.fig create mode 100644 symptom_abstraction/symptom_abstraction3.jpg create mode 100644 symptom_abstraction/symptom_abstraction4.fig create mode 100644 symptom_abstraction/symptom_abstraction4.jpg create mode 100644 symptom_abstraction/synmptom_abstraction.fig create mode 100644 symptom_abstraction/synmptom_abstraction.jpg create mode 100644 symptom_abstraction/vmgbibliography.bib diff --git a/symptom_abstraction/Makefile b/symptom_abstraction/Makefile new file mode 100644 index 0000000..439f031 --- /dev/null +++ b/symptom_abstraction/Makefile @@ -0,0 +1,19 @@ + +# +# Make the propositional logic diagram a paper +# + +all: + pdflatex symptom_abstraction.tex + okular symptom_abstraction.pdf + +#paper: paper.tex logic_diagram_paper.tex +# latex paper.tex +# dvipdf paper +# okular paper.pdf + + +# Remove the need for referncing graphics in subdirectories +# +#logic_diagram_paper.tex: logic_diagram.tex +# cat logic_diagram.tex | sed 's/logic_diagram\///' > logic_diagram_paper.tex diff --git a/symptom_abstraction/mybib.bib b/symptom_abstraction/mybib.bib new file mode 100644 index 0000000..b996d80 --- /dev/null +++ b/symptom_abstraction/mybib.bib @@ -0,0 +1,153 @@ + + +% my bib file. + + +% $Id: mybib.bib,v 1.2 2008/09/26 16:31:31 robin Exp $ + + +@ARTICLE{valueoflife, + AUTHOR = "W.K. Viscusi", + TITLE = "The value of life: Estimates with risks by occupation and industry", + JOURNAL = "Harvard John M. Olin Canter for Law ISSN 1045-6333", + YEAR = "2003" +} + + +@ARTICLE{nucfta, + AUTHOR = "US Nuclear reg commission", + TITLE = "Fault Tree Handbook", + JOURNAL = "Nuclear Safety Analysis Handbook", + YEAR = "1981" +} + +@ARTICLE{nasafta, + AUTHOR = "NASA", + TITLE = "Fault Tree Handbook with Aerospace Applications", + JOURNAL = "NASA Handbook", + YEAR = "2002" +} + + +@BOOK{mil1991, + AUTHOR = "United~States~DOD", + TITLE = "Reliability Prediction of Electronic Equipment", + PUBLISHER = "DOD", + YEAR = "1991" +} + + +@BOOK{sccs, + AUTHOR = "Neil~Storey", + TITLE = "Safety-Critical Computer Systems ISBN 0-201-42787-7", + PUBLISHER = "Prentice Hall", + YEAR = "1996" +} + +@BOOK{sem, + AUTHOR = "J.~Woodcock,~Martin~Loomes", + TITLE = "Software Engineering Mathematics ISBN 0-273-02673-9", + PUBLISHER = "Pitman", + YEAR = "1988" +} + +@BOOK{f77, + AUTHOR = "A.~Balfour D.H.~Marwick", + TITLE = "Programming in Standard Fortran 77 ISBN 0-435-77486-7", + PUBLISHER = "Heinemann Educational Books", + YEAR = "1979" +} + +@BOOK{ctw, + AUTHOR = "Gregory~J.E.~Rawlins", + TITLE = "Compared to What ? An introduction to the analysis of algorithms ISBN 0-7167-8243-x", + PUBLISHER = "Computer Science Press", + YEAR = "1991" +} + + + +@BOOK{alg, + AUTHOR = "Alan~Gibbons", + TITLE = "Algorithmic Graph Theory ISBN 0-521-28881-9", + PUBLISHER = "Cambridge University Press", + YEAR = "1985" +} + +@BOOK{found, + AUTHOR = "Ian~Stewart, David~Tall", + TITLE = "The Foundations of Mathematics : ISBN 0-19-853165-6", + PUBLISHER = "Oxford University Press", + YEAR = "1977" +} + +@BOOK{shin, + AUTHOR = "Sun-Joo~Shin", + TITLE = "The Iconic Logic of Peirces Graphs", + PUBLISHER = "Bradford", + YEAR = "2002" +} + + +@BOOK{idmfssz, + AUTHOR = " D~C~Ince", + TITLE = " An Introduction to Discrete Mathematics, Formal System Specification and Z : Oxford : ISBN 0-19-853836-7", + PUBLISHER = "Oxford University Press", + YEAR = "1988" +} + + +@BOOK{wdycwopt, + AUTHOR = " Richard~P~Feynman", + TITLE = " What do you care what other people think: Harper Collins : ISBN 0-586-21855-6", + PUBLISHER = " harpercollins", + YEAR = "1988" +} + + +@MISC{gnuplot, + author = "Various Open~source~Project", + title = "GNUPlot 4 Home Page", + howpublished = "Available from http://www.gnuplot.info/", + year = "2005" +} + +@MISC{eulerviz, + author = "Peter~Rodgers, John~Howse, Andrew~Fish", + title = "Visualization of Euler Diagrams", + howpublished = "http://www.cmis.bton.ac.uk/research/vmg/papers/EulerViz.pdf", + year = "2005" +} + +@MISC{eulerprop, + author = "Peter~Rodgers, John~Howse, Gem~Stapleton", + title = "Properties of Euler Diagrams", + howpublished = "http://www.cmis.bton.ac.uk/research/vmg/papers/", + year = "2007" +} +@MISC{en298, + author = "E N Standard", + title = "Gas Burner Controllers with forced draft", + howpublished = "EN298", + year = "2003" +} + +@MISC{en61508, + author = "E N Standard", + title = "Functional safety of electrical/electronic/programmable electronic safety related systems", + howpublished = "EN61508", + year = "2002" +} +@MISC{javaarea, + author = "Sun~Micro~Systems", + title = "Java Area Operations", + howpublished = "Available from http://java.sun.com/j2se/1.3/docs/api/java/awt/geom/Area.html", + year = "2000" +} +@MISC{javaarea, + author = "Sun~Micro~Systems", + title = "Java Area Operations", + howpublished = "Available from http://java.sun.com/j2se/1.3/docs/api/java/awt/geom/Area.html", + year = "2000" +} + diff --git a/symptom_abstraction/symptom_abstraction.bbl b/symptom_abstraction/symptom_abstraction.bbl new file mode 100644 index 0000000..b1cc510 --- /dev/null +++ b/symptom_abstraction/symptom_abstraction.bbl @@ -0,0 +1,44 @@ +\begin{thebibliography}{1} + +\bibitem{mil1991} +U.~S. DOD. +\newblock {\em Reliability Prediction of Electronic Equipment}. +\newblock DOD, 1991. + +\bibitem{microchip} +Microchip. +\newblock Microchip technology inc. home page. +\newblock Available from http://www.microchip.com/, 2009. + +\bibitem{nasafta} +NASA. +\newblock Fault tree handbook with aerospace applications. +\newblock {\em NASA Handbook}, 2002. + +\bibitem{eulerviz} +A.~F. Peter~Rodgers, John~Howse. +\newblock Visualization of euler diagrams. +\newblock http://www.cmis.bton.ac.uk/research/vmg/papers/EulerViz.pdf, 2005. + +\bibitem{nucfta} +U.~N. reg commission. +\newblock Fault tree handbook. +\newblock {\em Nuclear Safety Analysis Handbook}, 1981. + +\bibitem{en61508} +E.~N. Standard. +\newblock Functional safety of electrical/electronic/programmable electronic + safety related systems. +\newblock EN61508, 2002. + +\bibitem{en298} +E.~N. Standard. +\newblock Gas burner controllers with forced draft. +\newblock EN298, 2003. + +\bibitem{sccs} +N.~Storey. +\newblock {\em Safety-Critical Computer Systems ISBN 0-201-42787-7}. +\newblock Prentice Hall, 1996. + +\end{thebibliography} diff --git a/symptom_abstraction/symptom_abstraction.blg b/symptom_abstraction/symptom_abstraction.blg new file mode 100644 index 0000000..78e843c --- /dev/null +++ b/symptom_abstraction/symptom_abstraction.blg @@ -0,0 +1,48 @@ +This is BibTeX, Version 0.99c (Web2C 7.5.6) +The top-level auxiliary file: symptom_abstraction.aux +The style file: abbrv.bst +Database file #1: ../vmgbibliography.bib +Database file #2: ../mybib.bib +Warning--I didn't find a database entry for "constraint" +You've used 8 entries, + 2118 wiz_defined-function locations, + 537 strings with 4490 characters, +and the built_in function-call counts, 1690 in all, are: += -- 158 +> -- 56 +< -- 0 ++ -- 24 +- -- 16 +* -- 58 +:= -- 303 +add.period$ -- 24 +call.type$ -- 8 +change.case$ -- 30 +chr.to.int$ -- 0 +cite$ -- 8 +duplicate$ -- 72 +empty$ -- 167 +format.name$ -- 16 +if$ -- 359 +int.to.chr$ -- 0 +int.to.str$ -- 8 +missing$ -- 6 +newline$ -- 43 +num.names$ -- 16 +pop$ -- 56 +preamble$ -- 1 +purify$ -- 24 +quote$ -- 0 +skip$ -- 54 +stack$ -- 0 +substring$ -- 40 +swap$ -- 8 +text.length$ -- 0 +text.prefix$ -- 0 +top$ -- 0 +type$ -- 28 +warning$ -- 0 +while$ -- 16 +width$ -- 9 +write$ -- 82 +(There was 1 warning) diff --git a/symptom_abstraction/symptom_abstraction.dvi b/symptom_abstraction/symptom_abstraction.dvi new file mode 100644 index 0000000000000000000000000000000000000000..68258174158cced73f394f3a83b56a32c0dfeb8b GIT binary patch literal 38916 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 literal 0 HcmV?d00001 diff --git a/symptom_abstraction/symptom_abstraction.fig b/symptom_abstraction/symptom_abstraction.fig new file mode 100644 index 0000000..06d9c25 --- /dev/null +++ b/symptom_abstraction/symptom_abstraction.fig @@ -0,0 +1,23 @@ +#FIG 3.2 Produced by xfig version 3.2.5 +Landscape +Center +Metric +A4 +100.00 +Single +-2 +1200 2 +1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 3766 2645 1178 1178 3766 2645 4621 3455 +1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 6616 2506 1178 1178 6616 2506 7471 3316 +1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 3870 5625 1178 1178 3870 5625 4725 6435 +1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 6840 5580 1178 1178 6840 5580 7695 6390 +1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 9540 2520 1178 1178 9540 2520 10395 3330 +1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 3780 8370 1178 1178 3780 8370 4635 9180 +1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 6975 8505 1178 1178 6975 8505 7830 9315 +4 0 0 50 -1 0 12 0.0000 4 135 195 3285 7155 c1\001 +4 0 0 50 -1 0 12 0.0000 4 135 195 6840 7200 c2\001 +4 0 0 50 -1 0 12 0.0000 4 135 210 3735 4320 b1\001 +4 0 0 50 -1 0 12 0.0000 4 135 210 6660 4320 b2\001 +4 0 0 50 -1 0 12 0.0000 4 135 195 3600 1395 a1\001 +4 0 0 50 -1 0 12 0.0000 4 135 195 6480 1260 a2\001 +4 0 0 50 -1 0 12 0.0000 4 135 195 9405 1260 a3\001 diff --git a/symptom_abstraction/symptom_abstraction.tex b/symptom_abstraction/symptom_abstraction.tex new file mode 100644 index 0000000..a145cbf --- /dev/null +++ b/symptom_abstraction/symptom_abstraction.tex @@ -0,0 +1,690 @@ + +\begin{abstract} +In modular systems design, it is often very useful to +know the failure modes of the sub-systems used. +This paper outlines a technique for determining the failure modes of a sub-system given +its component parts. +%, and the failure modes of those parts. + + +The technique uses a graphical notation, based on Euler\cite{eulerviz} and Constraint +diagrams\cite{constraint} to model failure modes and failure mode common symptom collection. +The technique is designed for making building blocks for a hierarchical fault model. + +Once the failure modes have been determined for a sub-system, +that sub-system may be treated as a `component' or `black box' and used +in conjunction with other such analysed sub-systems, to model +higher level sub-systems. In this way a hierarchy to represent the fault behaviour +of a system can be built. + + +%FMMD hierarchy +The hierarchy is built from the bottom up. +Starting with component failure modes at the bottom. +Because the process is bottom-up +no component failure mode can be overlooked. +Once a hierarchy is in place it can be converted into a fault data model. + +From the fault data model, automatic generation +of FTA\cite{nasafta} (Fault Tree Analysis) and mimimal cuts sets\cite{nucfta} are possible. +Also statistical reliability\cite{en61508} and MTTF (Mean Time to Failure) calculations can be produced +automatically, where component failure mode statistics are available\cite{mil1991}. + +This paper focuses on the process of building the blocks that are used in the hierarchy. + +\end{abstract} + +%\clearpage + +\section{Introduction} + +\subsection{Static Analysis} + +In the field of safety critical engineering; to comply with +European Law a product must be certified under the approriate `EN' standard. +Typically environmental stress, EMC, electrical stressing, endurance tests, +software~inspections and project~management quality reviews are applied\cite{sccs}. + +Static testing is also applied. This is theoretical analysis of the design of the product from the safety +perspective. +Three main techniques are currenly used, +Statistical failure models, FMEA (Failure mode Effects Analysis) and FTA (Fault Tree Analysis). +The technique outlined here aims to provide a mathematical frame work +to assist in the production of these three results of static analysis. + +{ +The aims are +\begin{itemize} + \item To automate the process where possible + \item To apply a documented trail for each analysis phase (determination of functional groups, and analysis of component failure modes on those groups) + \item To use a modular approach so that analysed sub-systems can be re-used + \item Automatically ensure no failure mode is unhandled + \item To produce a data model from which FTA, FMEA and statistical failure models may be obtained automatically +\end{itemize} +} + + +\subsection{Systems, functional groups, sub-systems and failure modes} + +It is helpful here to define some terms, `system', `functional~group', `component', `base~component' and `sub-system'. + +A System, is really any coherent entity that would be sold as a safety critical product. +A sub-system is a system that is part of some larger system. +For instance a stereo amplifier separate is a sub-system. The +whole Sound System, consists perhaps of the following `sub-systems': +CD-player, tuner, amplifier~separate, loudspeakers and ipod~interface. + +Thinking like this is a top~down analysis approach +and is the way in which FTA\cite{nucfta} analyses a System +and breaks it down. + +A sub-system will be composed of component parts, which +may themselves be sub-systems. However each `component part' +will have a fault/failure behaviour and it should +always be possible to obtain a set of failure modes +for each `component'. + +If we look at the sound system again as an +example; the CD~player could fail in serveral distinct ways, no matter +what has happened to it or has gone wrong inside it. + + +Using the reasoning that working from the bottom up forces the consideration of all possible +component failures (which can be missed in a top~down approach) +we are presented with a problem. Which initial collections of base components should we choose ? + +For instance in the CD~player example; to start at the bottom; we are presented with +a massive list of base~components, resistors, motors, user~switches, laser~diodes all sorts ! +Clearly, working from the bottom~up we need to pick small +collections of components that work together in some way. +These are termed `functional~groups'. For instance the circuitry that powers the laser diode +to illuminate the CD might contain a handful of components, and as such would make a good candidate +to be one of the base level functional~groups. + + +In choosing the lowest level (base component) sub-systems we would look +for the smallest `functional~groups' of components within a system. A functional~group is a set of components that interact +to perform a specific function. + +When we have analysed the fault behaviour of a functional group, we can treat it as a `black box'. +We can now call our functional~group a sub-system. We know how will behave under fault conditions ! +%Imagine buying one such `sub~system' from a very honest vendor. +%One of those sir, yes but be warned it may fail in these distinct ways, here +%in the honest data sheet the set of failure modes is listed! +This type of thinking is starting to become more commonplace in product literature, with the emergence +of reliability safety standards such as IOC1508\cite{sccs},EN61508\cite{en61508}. +FIT (Failure in Time - expected number of failures per billion hours of operation) values +are published for some micro-controllers. A micro~controller +is a complex sub-system in its self and could be considered a `black~box' with a given reliability. +\footnote{Microchip sources give an FIT of 4 for their PIC18 series micro~controllers\cite{microchip}, The DOD +1991 reliability manual\cite{mil1991} applies a FIT of 100 for this generic type of component} + +As electrical components have detailed datasheets a useful extension of this would +be failure modes of the component, with environmental factors and MTTF statistics. + +Currently this sort of information is generally only available for generic component types\cite{mil1991}. + + +%At higher levels of analysis, functional~groups are pre-analysed sub-systems that interact to +%erform a given function. + +\vspace{0.3cm} +%\begin{table}[p] +\begin{tabular}{||l|l||} \hline \hline + {\em Definition } & {\em Description} \\ \hline +System & A product designed to \\ + & work as a coherent entity \\ \hline +Sub-system & A part of a system, \\ + & sub-systems may contain sub-systems \\ \hline +Functional Group & A collection of sub-systems and/or \\ + & components that interact to \\ + & perform a specific function \\ \hline +Base Component & Any bought in component, which \\ + & hopefully has a known set of failure modes \\ \hline +Failure mode & A way in which a System, \\ + & Sub-system or component can fail \\ \hline + \hline +\end{tabular} +%\end{table} +\vspace{0.3cm} + + +\section{The Symptom abstraction Process} + +% TO DO: separate these two: + +\paragraph{symptom abstraction described} + +The objective of `symptom abstraction' is to analyse the functional~group and find out what will happen to it, +when specified component failure modes occur. +Once we know how it fails as a functional~group, we can treat it as a component or sub-system +with its own set of failure modes. + +Each failure mode (or combination of) investigated is termed a `test case'. +Each `test case' is analysed. +The component failure modes are examined with respect to their effect on the functional~group. +When all `test~cases' have been analysed a second phase is applied. + +This looks at the results of the `test~cases' as symptoms +of the sub-system. + In this way `test~case~results' are grouped as common symptoms, from the perspective of the sub-system. + To go back to the CD~player example, a failed +output stage, and a failed internal audio amplifier, +will both cause the same failure; $no\_sound$ ! + + + +\paragraph{symptom abstraction represented on the diagram} +This process can be applied using a diagram. +From the collection of parts for the sub-system under analysis, a set of failure +modes for each component is obtained. A diagram is then drawn with +each component failure mode represented by a contour. +Component failure mode combinations are +chosen for `test cases'.\footnote{Combinations of component failure modes can be represented by overlapping contours} + +A `test case' is represented on the diagram as a point or asterisk, +in a region enclosed by the contours representing the failure modes it investigates. + +The effect on the sub-system of each test case is analysed. +%It is then represented on the diagram by an asterisk on the contour representing the failure mode. +The `test~case~results' are archived. +When all test cases have been analysed, we switch our attention to a higher abstraction level. +% We treat the sub-system as a black box, or as a component part itsself. +% We can now look at the test case results from the perspective of a `user' +% of this sub-system. +% +% +% We treat the sub-system as a `black box' and view the effects of the component failure +% at the sub-system level. This mean we are not interested so much in what the compoent does, +% but how the sub-system reacts when it fails in a certain way. +% +% Each `test case' is labelled from the perspective of the failure as seen at sub-system level. + +% +We can now try to simplfy by determining common symptoms. +A common symptom, in this context, is defined as faults caused by different +component failure modes that have the same effect from the perspective +of a `user' of the sub-system. + +Test case results can now viewed as failure modes of the sub-sytem or `black box', and grouped together +where there are common symptoms. +These are grouped together by joining them with lines. These lines form collected groups (or `spiders'). +See figure \ref{fig:gensubsys3}. +% +It can be seen now that each {\em lone test case} and {\em spider} on the +diagram is a distinct failure mode of the sub-system. +This means that these failure modes represent the fault behaviour of the sub-system. +We can now treat this sub-system as a component in its own right, or in other words, +we have derived a failure mode model at a higher level of abstraction. + +We can now draw a new diagram to represent the failure modes of the sub-system. +Each spider or lone test case, becomes a contour representing a failure mode +of the sub-system in this new diagram (see figure \ref{fig:gensubsys4}. + + + +\section{The Process : To analyse a base level sub-system} + +To sumarise: + +\begin{itemize} + \item Determine a minimal functional group + \item Obtain list of components in the functional group + \item Collect the failure modes for each component + \item Draw these as contours on a diagram + \item Where multiple failures are examined use overlapping contours + \item For each region on the diagram, make a test case + \item Examine each test case and determine the effect of the component failure modes on the behaviour of the functional group + \item Collect common symptoms. Imagine you are handed this functional group as a `black box', a sub-system to use. +Determine which test cases produce the same fault symptoms. Join common symptoms with lines connecting them (sometimes termed a `spider'). + \item The lone test cases and the spiders are now the fault mode behaviour of the sub-system. + \item A new diagram can now be drawn where each spider, or lone test case from the original diagram +is represented as a contour. These contours represent the failure modes of the sub-system. +\end{itemize} + + + + +\section{A general Sub-System example} + +Consider a functional group $FG$ with component parts $A$,$B$ and $C$. +Each part has a set of related fault modes (i.e. ways in which it can fail to operate correctly). +Let us define the following failure modes for each component part, defining a function $FM()$ where $K$ +is a component part and $F$ is its set of failure modes\footnote{Base component failure modes are defined, often with +statistics and evironmental factors in a variety of sources. \cite{mil1991} +}. + +$$ +FM : K \mapsto F +$$ +\\ +For our example above +\\ +$$ FM(A) = \{ a_1, a_2, a_3 \} $$ +$$ FM(B) = \{ b_1, b_2 \} $$ +$$ FM(C) = \{ c_1, c_2 \} $$ + +We can now represent the sub-system as a set of component faulure modes $FG_{cfm}$, +thus + +\begin{equation} + FG_{cfm} = \{a_1, a_2, a_3, b_1, b_2, c_1, c_2 \} +\end{equation} + + + + +The failure modes of the components can be represented as contours on +on the diagram in \ref{fig:gensubsys1}. +\begin{figure} + \centering + \includegraphics[width=3in,height=3in,bb=0 0 513 541]{symptom_abstraction/synmptom_abstraction.jpg} + % synmptom_abstraction.jpg: 570x601 pixel, 80dpi, 18.10x19.08 cm, bb=0 0 513 541 +\label{fig:gensubsys1} + \caption{$FG_{cfm}$ Component Failure modes represented as contours} +\end{figure} + +% % DIAGRAM WITH SPIDER +% \begin{figure} +% \centering +% \includegraphics[scale=20]{./synmptom_abstraction.jpg} +% % synmptom_abstraction.jpg: 570x601 pixel, 80dpi, 18.10x19.08 cm, bb=0 0 513 541 +% \label{fig:gensubsys2} +% \caption{$SS_{cfm}$ Component Failure modes represented as contours} +% \end{figure} + + +We can now look at the effects that component failure modes have +on the sub-system. +This process involves examining `test cases'. Each `test case' represents the fault behaviour +of the sub-system due to particular combinations of component fault modes. + +Each test case can be represented on the diagram as a labeled point. +The labeled point will reside in a region on the diagram +enclosed by the contours representing particular component fault modes. +The label will indicate the fault symptom from the perspective of the sub-system. +For the sake of example, only single component failure modes are considered. +We can now assign a test~case to each contour, and mark it on the diagram. + +% \begin{figure}[h+] +% \centering +% \includegraphics[scale=20]{./symptom_abstraction2.jpg} +% % synmptom_abstraction.jpg: 570x601 pixel, 80dpi, 18.10x19.08 cm, bb=0 0 513 541 +% \label{fig:gensubsys2} +% \caption{Component Failure modes with analysed test cases} +% \end{figure} +\begin{figure} + \centering + \includegraphics[width=3in,height=3in,bb=0 0 513 541]{symptom_abstraction/symptom_abstraction2.jpg} + % symptom_abstraction2.jpg: 570x601 pixel, 80dpi, 18.10x19.08 cm, bb=0 0 513 541 + \label{fig:gensubsys2} + \caption{Component Failure modes with analysed test cases} +\end{figure} + +\par +\vspace{0.3cm} +\begin{tabular}{||l|l||} \hline \hline + {\em Component Failure Mode } & {\em test case} \\ \hline +$a\_1$ & $fs\_1$ \\ \hline +$a\_2$ & $fs\_2$ \\ \hline +$a\_3$ & $fs\_3$ \\ \hline +$b\_1$ & $fs\_4$ \\ \hline +$b\_2$ & $fs\_5$ \\ \hline +$c\_1$ & $fs\_6$ \\ \hline +$c\_2$ & $fs\_7$ \\ \hline + \hline +\end{tabular} +\vspace{0.3cm} + + + +The sub-system fault symptoms are now represented on the diagram as in figure \ref{fig:gensubsys2}. + +A second stage of analysis is now applied. +Empirically, it is often noticed that a sub-system will fail in the same way due to a variety of reasons. +To the `user' of the sub-system, it does not matter which component or combination of components has failed. +The sub-system can thus be considered to have its own set of failure modes. +This stage of the analysis is to determine these, to collect `like symptoms'. +This is performed on the diagram by linking the test cases with lines to form `spiders' + +For the sake of example let us consider the fault symptoms $SP1 = \{fs_2, fs_4, fs_5\}$ to be an identical +failure mode at the {\em sub-system} level. These can then be joined to form a spider. Likewise +let $SP2 = \{fs_1, fs_3, fs_7\}$ be an identical failure mode at the {\em sub-system} level. +Let $\{fs_6\}$ be a distinct failure mode at {\em sub-system} level. + +The diagram can now be drawn as in figure \ref{fig:gensubsys3}. + +% \begin{figure}[h+] +% \centering +% \includegraphics[scale=20]{./symptom_abstraction3.jpg} +% % synmptom_abstraction.jpg: 570x601 pixel, 80dpi, 18.10x19.08 cm, bb=0 0 513 541 +% \label{fig:gensubsys3} +% \caption{Common failure modes collected as `Spiders'} +% \end{figure} +\begin{figure}[h+] + \centering + \includegraphics[width=3in,height=3in,bb=0 0 513 541]{symptom_abstraction/symptom_abstraction3.jpg} + % symptom_abstraction3.jpg: 570x601 pixel, 80dpi, 18.10x19.08 cm, bb=0 0 513 541 + \label{fig:gensubsys3} +\caption{Common failure modes collected as `Spiders'} +\end{figure} + + +The third stage of the process can be applied automatically. +Each `spider' or `lone test case' becomes a contour +in the new diagram (see figure \ref{fig:gensubsys4}. + +The result of this will be, a set of failure modes for the sub-system, as though it were a {\em black box} +or a {\em component} to be used in higher level designs. + + +We have now in $SP1$, $SP2$ and $fs_6$ the three ways in which this sub-system can fail. +In other words we have derived failure modes for this sub-system. + + +%\section{The Process : To analyse a base level sub-system} + +% \REQUIRE Obtain a list of components for the System $S$ under investigation. \ENSURE Decomposition of $S$ into atomic +% components where each component $c$ has a know set of $fm$ failure modes. +% +% \STATE Determine functional groups $fg_n \subset S$ of components, where n is an index number +% \COMMENT{ The functional groups should be chosen to be minimally sized collections of components that perform a specific function.} +% \REQUIRE{ Ensure that all components belong to at least one functinal group $\bigcup_i fg_i = S $ +% % +% \FORALL { $fg_i \in S$} +% +% \STATE state something +% +% \ENDFOR +% +% \STATE Check for cut vertices \COMMENT{here we choose to decompose +% all nested components in one go} +% % +% \FORALL {vertices $v \in G$} +% \STATE Check if $v$ is a cut vertex. \COMMENT{so $d$ is nested and in +% $d$ there must be a 0-separating curve in the zone corresponding to $v$} +% \ENDFOR +% +% +%%%%%%%%%%%% + + +% \begin{itemize} +% \item determine a minimal functional group +% \item obtain list of components in the functional group +% \item collect the failure modes for each component +% \item draw these as contours on a diagram +% \item where multiple failures are examined use overlapping contours to represent this +% \item for each region on the diagram, make a test case +% \item examine each test case and determine the effect of the component failure modes on the behaviour of the functional group +% \item collect common symptoms. imagine you are handed this functional group as a `black box', a sub system to use. +% which test cases produce the same fault symptoms. Join common symptoms with `spiders', lines connecting them +% \item The lone test cases and the spiders are now the fault mode behaviour of the sub-system +% \item A new diagram can now be drawn where each spider, or lone test case from the original diagram +% is represented as a contour. These contours represent the failure modes of the sub-system. +% \end{itemize} + +This sub-system may now therfore, be represented as three separate failure modes. +We may now treat this sub-system as we would a component with a known set of failure modes. +The failure modes of the Sub-system $SS$ are now the set $SS_{fm} = \{ SP1, Sp2, fs_6 \}$. + +Defining the function `$\bowtie$' to represent the {\em symptom abstraction} process, we may now +write + +$$ +\bowtie : SubSystemComponentFaultModes \mapsto SubSystemFaultModes +$$ + +\begin{equation} + \bowtie(FG_{cfm}) = SS_{fm} +\end{equation} + +The $SS_{fm}$ set of fault modes can be represented as a diagram with each fault~mode of $SS$ being a contour. +The derivation of $SS_{fm}$ is represented graphically using the `$\bowtie$' symbol, as in figure \ref{fig:gensubsys4} + +% \begin{figure}[h+] +% \centering +% \includegraphics[width=3in,height=3in]{./symptom_abstraction4.jpg} +% % synmptom_abstraction.jpg: 570x601 pixel, 80dpi, 18.10x19.08 cm, bb=0 0 513 541 +% \label{fig:gensubsys3} +% \caption{Deriving a new diagram} +% \end{figure} +% + +\begin{figure}[h+] + \centering + \includegraphics[width=3in,height=3in,bb=0 0 376 410]{symptom_abstraction/symptom_abstraction4.jpg} + % symptom_abstraction4.jpg: 418x455 pixel, 80dpi, 13.27x14.45 cm, bb=0 0 376 410 + \caption{Deriving a new diagram} + \label{fig:gensubsys4} +\end{figure} + + +The derived diagram in figure \ref{fig:gensubsys4} shows the functional group of components $A,B,C$ +analysed as a sub-system. The result is a set of fault modes that define the fault mode behaviour of that sub-system. + + +This sub-system, with its three error modes, can now be treated as a component (although at a higher level of abstraction) +with known failure modes. + + + + +\clearpage +\section{A Formal Algorithmic Description of `Symptom Abstraction'} + +The algorithm for {\em symptom abstraction} is described in +this section +%describes the symptom abstraction process +using set theory. + +The {\em symptom abstraction process} (given the symbol `$\bowtie$') takes a functional group $FG$ +and converts it to a sub-system $SS$. +The sub-system $SS$ is a collection +of failure~modes of the sub-system. +The sub-system $SS$ may now be treated +as a component with a known set of failure modes. +Thus $SS$ can be used as a system building block at a higher +level of fault abstraction. + + +The algorithm has been broken down into five stages, each following on from the other. + +\begin{algorithm}[h+] + ~\label{alg:sympabs1} +\caption{Determine failure modes: $FG \mapsto FG_{cfm}$} \label{alg:sympabs11} +\begin{algorithmic}[1] +%\REQUIRE Obtain a list of components for the System $S$ under investigation. +%ENSURE Decomposition of $S$ into atomic components where each component $c$ has a know set of $fm$ failure modes. + + +%\STATE Determine functional groups $fg_n \subset S$ of components, where n is an index number and the number of functional groups found. + +\STATE { Let $FG$ be a set of components } \COMMENT{ The functional group should be chosen to be minimally sized collections of components that perform a specific function} +\STATE { Let $c$ represent a component} +\STATE { let $CFM$ represent a set of failure modes } +\STATE { $FM(c) \mapsto CFM $} \COMMENT {let the function $FM$ take a component and return a set of all its failure modes} + +%\ENSURE { $ \forall c | c \in FG \wedge FM(c) \neq \emptyset $} +\ENSURE { $ c | c \in FG \wedge FM(c) \neq \emptyset $} +\COMMENT{ i.e. for each component $c \in FG $ has a known set of failure modes } +%\REQUIRE{ Ensure that all components belong to at least one functional group $\bigcup_{i=1...n} fg_i = S $ } +%symptom_abstraction +% okular + +\STATE {let $FG_{cfm}$ be a set of failure modes} + +\FORALL { $c \in FG $ } +\STATE { $ FM(c) \in FG_{cfm} $ } \COMMENT {Collect all failure modes from the components into the set $FM_{cfm}$} +\ENDFOR + +%\hline +Algorthim \ref{alg:sympabs11} has taken a functional group $FG$ and returned a set of failure~modes $FG_{cfm}$. +The next task is to formulate `test cases'. These are the collections of failure~modes that will be used +in the analysis stages. + + +\end{algorithmic} +\end{algorithm} + + +\begin{algorithm}[h+] + ~\label{alg:sympabs2} +\caption{Determine Test Cases: $FM_{cfm} \mapsto TC $} \label{alg:sympabs22} +\begin{algorithmic}[1] + + \REQUIRE {Determine the test cases to be applied} + + \STATE { All test cases are now chosen by the investigating engineer(s). Typically all single + component failures are investigated + with some specially selected combination faults} + + \STATE { Let $tc_j$ be set of component failure modes where $j$ is an index of $J$} + \COMMENT { Each set $tc_j$ is a `test case' } + \STATE { Let $TC$ be a set of test cases } + \STATE { $ \forall j \in J | tc_j \in TC $ } + \COMMENT { Let $TC$ be the set test cases to be applied to the functional group} + + %\STATE { $ \bigcup_{j=1...N} tc_j = \bigcup TC $ } + %\COMMENT { All $tc_j$ test cases sets belong to $TC$ } + + %\REQUIRE { $ TC \subset \bigcup (FM_{cfm}) $ } + %\COMMENT { $TC$ is the set of all test_cases +% Let TC be a subset of the powerset of the failure modes $ FG_{cfm} $, +%i.e. only failure modes present in $ FG_{cfm} $ are present in sets belonging to $ TC $} + + + \COMMENT { Ensure the test cases are complete and unique } + + \FORALL { $tc_j \in TC$ } + \ENSURE {$ tc_j \subset \bigcap FG_{cfm} $} + \COMMENT { require that the test case is a member of the powerset of $FM_{cfm}$ } + \ENSURE { $ \forall \; j2 \; \in J ( \forall \; j1 \; \in J | tc_{j1} \neq tc_{j2} \; \wedge \; j1 \neq j2 ) $} + \COMMENT { Test cases must be unique } + \ENDFOR + + + + \STATE { let $f$ represet a component failure mode } + \REQUIRE { That all failure modes are represented in at least one test case } + \ENSURE { $ \forall f | (f \in FM_{cfm}) \wedge (f \in \bigcup TC) $ } + \COMMENT { This corresponds to checking that at least each failure mode is considered at least once in the analysis; some european standards +imply checking all double fault combinations\cite{en298} } + +%\hline +Algorithm \ref{alg:sympabs22} has taken the set of failure modes $FM_{cfm}$ and returned a set of test cases $TC$. +The next stages is to analyse the effect of each test case on the functional group. + +\end{algorithmic} +\end{algorithm} + +\begin{algorithm}[h+] + ~\label{alg:sympabs3} +\caption{Analyse Test Cases: $ TC \mapsto R $} \label{alg:sympabs33} +\begin{algorithmic}[1] + \STATE { let r be a `test case result'} + \STATE { Let the function $Analyse : tc \mapsto r $ } \COMMENT { This analysis is a human activity, examining the failure~modes in the test case and determining how the functional~group will fail under those conditions} + \STATE { $ R $ is a set of test case results $r_j \in R$ where the index $j$ corresponds to $tc_j \in TC$} + \FORALL { $tc_j \in TC$ } + \STATE { $ rc_j = Analyse(tc_j) $} \COMMENT {this is Fault Mode Effects Analysis (FMEA) applied in the context of the functional group} + \STATE { $ rc_j \in R $ } + \ENDFOR + +%\hline +Algorithm \ref{alg:sympabs33} has built the set $R$, the sub-system/functional group results for each test case. +\end{algorithmic} +\end{algorithm} + + + + +\begin{algorithm}[h+] + ~\label{alg:sympabs4} + +\caption{Find Common Symptoms: $ R \mapsto SP $} \label{alg:sympabs44} + +\begin{algorithmic}[1] + + + %\REQUIRE {All failure modes for the components in $fm_i = FM(fg_i)$} + \STATE {Let $sp_l$ be a set of `test cases results' where $l$ is an index set $L$} + \STATE {Let $SP$ be a set whose members are sets $sp_l$} + \COMMENT{ $SP$ is the set of `fault symptoms' for the sub-system} +% + %\COMMENT{This corresponds to a fault symptom of the functional group $FG$} + %\COMMENT{where double failure modes are required the cardinality constrained powerset of two must be applied to each failure mode} + + \FORALL { $ r_j \in R$ } + \STATE { $sp_l \in \mathcal{P} R \wedge sp_l \in SP$ } + \STATE { $sp_l \in \bigcap R \wedge sp_l \in SP$ } \COMMENT{ Collect common symptoms. + Analyse the sub-system's fault behaviour under the failure modes in $tc_j$ and determine the symptoms $sp_l$ that it +causes in the functional group $FG$} + %\ENSURE { $ \forall l2 \in L ( \forall l1 \in L | \exists a \in sp_{l1} \neq \exists b \in sp_{l2} \wedge l1 \neq l2 ) $} + + \ENSURE {$ \forall a \in sp_l | \forall sp_i \in \bigcap_{i=1..L} SP ( sp_i = sp_l \implies a \in sp_i)$} + + \COMMENT { Ensure that the elements in each $sp_l$ are not present in any other $sp_l$ set } + + \ENDFOR + + + + \STATE { The Set $SP$ can now be considered to be the set of fault modes for the sub-system that $FG$ represents} + +%\hline +Algorithm \ref{alg:sympabs44} raises the failure~mode abstraction level. +The failures have now been considered not from the component level, but from the sub-system or +functional group level. +We now have a set $SP$ of the symptoms of failure. + +\end{algorithmic} +\end{algorithm} + +\begin{algorithm}[h+] + ~\label{alg:sympabs5} + +\caption{Treat the symptoms as failure modes of the Sub-System: $ SP \mapsto SS $} \label{alg:sympabs55} + +\begin{algorithmic}[1] + + \STATE { Let $SS$ be a set of faliure modes with failure modes $f$ indexed by $l$ } + \FORALL { $sp_l \in SP$ } + \STATE { $ f_l = ConvertToFaultMode(sp_l) $} + \STATE { $ f_l \in SS $} + \ENDFOR +%\hline + +Algorithm \ref{alg:sympabs55} is the final stage in the process. We now have a +sub-system $SS$, which has its own set of failure~modes. This can now be treated +as a component, and used to form functional~groups at a higher level of failure~mode~abstraction. +\end{algorithmic} +\end{algorithm} + + + +\clearpage +\section{To conclude} + +The technique provides a methodology for bottom-up analysis of the fault behaviour of complex safety critical systems. + +\subsection{Hierarchical Simplification} + +Because symptom abstraction collects fault modes, the number of faults to handle decreases +as the hierarchy progresses upwards. +This is seen in real life Systems. At the highest levels the number of faults +reduces. A Sound system might have, for instance only four faults at its highest or System level, +\small +$$ SoundSystemFaults = \{TUNER\_FAULT, CD\_FAULT, SOUND\_OUT\_FAULT, IPOD\_FAULT\}$$ +\normalsize +The number of causes for any of these faults is very large ! +It does not matter which combination of causes caused the fault to the user. +But as the hierarchy goes up in abstraction level the number of faults goes down. + +\subsection{Tracable Fault Modes} + +Because the fault modes are determined from the bottom-up, the causes +for all high level faults naturally form trees. +Minimal cut sets \cite{nasafta} can be determined from these, and by +analysing the statistical likely hood of the component failures +the MTTF and SIL\cite{en61508} levels can be automatically calculated. + diff --git a/symptom_abstraction/symptom_abstraction2.fig b/symptom_abstraction/symptom_abstraction2.fig new file mode 100644 index 0000000..f5728d9 --- /dev/null +++ b/symptom_abstraction/symptom_abstraction2.fig @@ -0,0 +1,30 @@ +#FIG 3.2 Produced by xfig version 3.2.5 +Landscape +Center +Metric +A4 +100.00 +Single +-2 +1200 2 +1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 3766 2645 1178 1178 3766 2645 4621 3455 +1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 6616 2506 1178 1178 6616 2506 7471 3316 +1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 3870 5625 1178 1178 3870 5625 4725 6435 +1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 6840 5580 1178 1178 6840 5580 7695 6390 +1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 9540 2520 1178 1178 9540 2520 10395 3330 +1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 3780 8370 1178 1178 3780 8370 4635 9180 +1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 6975 8505 1178 1178 6975 8505 7830 9315 +4 0 0 50 -1 0 12 0.0000 4 135 195 3285 7155 c1\001 +4 0 0 50 -1 0 12 0.0000 4 135 195 6840 7200 c2\001 +4 0 0 50 -1 0 12 0.0000 4 135 210 3735 4320 b1\001 +4 0 0 50 -1 0 12 0.0000 4 135 210 6660 4320 b2\001 +4 0 0 50 -1 0 12 0.0000 4 135 195 3600 1395 a1\001 +4 0 0 50 -1 0 12 0.0000 4 135 195 6480 1260 a2\001 +4 0 0 50 -1 0 12 0.0000 4 135 195 9405 1260 a3\001 +4 0 0 50 -1 0 12 0.0000 4 165 495 3195 2565 * fs_1\001 +4 0 0 50 -1 0 12 0.0000 4 165 450 6525 2430 *fs_2\001 +4 0 0 50 -1 0 12 0.0000 4 165 495 9270 2430 * fs_3\001 +4 0 0 50 -1 0 12 0.0000 4 165 450 3600 5580 *fs_4\001 +4 0 0 50 -1 0 12 0.0000 4 165 450 6480 5625 *fs_5\001 +4 0 0 50 -1 0 12 0.0000 4 165 450 3420 8325 *fs_6\001 +4 0 0 50 -1 0 12 0.0000 4 165 450 6660 8370 *fs_7\001 diff --git a/symptom_abstraction/symptom_abstraction2.jpg b/symptom_abstraction/symptom_abstraction2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..dea5e8d24a6f45667ebe88318dc57b776318d633 GIT binary patch literal 32582 zcmc$GbzBr}+x7rUHv-bR2-4jMsKkN@(nyG;NOwsKB9e=MfD+Ov-5}j1-Q6i5Ahmqs zb3gZU$8*>FzJGknZ+{JL%g2r-a#kVR3D7yx8KBosoV>sEjk z0FY3@yZv#)|9&AMqd-v6&@nKvu)zbNTc0& z^c0=Jo|xA!DiwqAZgCTd>X)xjJ|hQzOf1ryWaJb~x0qROv+@fF3JHsd-n%a&D<=sTvN5IR#pjW}KL*UVGV`Agp#V34BOV7y6%Ff9x zDJ?6nsI024X>Mt4Ywzgn>K+;%866v+n4DT%T3%UQTi@8+IygM~c6@UB{p|e5xR3yp zpN93Hk^OF5gy6W4ArKS@`j2rTA-jSb3LylQo(GLc`Vsn5`x^|rei+1eqf(2TFd6w& zzmga^e8D1x@-H$S{21E5M)uDJ=KsGM*?$K1%ebZh926vQ@lXf>N#OLH<)bgwZ?=44 z@q1_$ak1x+gD!V0*~LA>7=}qkZXNX)Wc6kdN<2y%Ar>)Tv{jP0#R3Iu^X3}a9J}KD z(+ZUt`C@-!z7!)gm~hvzK#mkD@uPpdQ6bWn-j<9PILYsrd-e?QaG1ozvKXibcWXh< z0;NzmgSW7eK1?DvyqoH)49zI29+NC9c$ma#Ls$UkD(M~~q>a^rv@e>S>3VX(d9MK> zXah#M4~bAP!^o$UD$lCDIhG;Z@J&o#{CLs_CKrd;uHJP?D95*4sR+r!Dxl9;=_5 zZa2B&C|a-|mb6v1hCY^myBEa^TgXwXgbRv`GMxM|LSN?j=Vc8;G zHfWTgmh08ZCpJ=7&el?RYpjt2Y+LH)-wrpwUa{3fHrlSD()G)m4yl95R-8&APWkS; zzO{IG@@l^6-_UZd0jurG&w}xbeMRB-6AC8EkBF~^Lf){2i@qimBu63dRKfGF`i%XZ zPvh%q+is7gOI+Md%}2UrhdS~maP6MA30f8tojz{TCd2q@zD-lzp`x?$j;4EGKaHub!4Ckn;YdK}4&<8;<%Z2bRAGoBMy9N%n zBo}E$B{v+$CHMQ{t^vkDbZHsKYry0{DdN)ed8}yq?Ng)AmE20VJob{fA`Rb%N_PS@ zFb~N^hPvW2=MQM-^HlC97`CZqTgbs3ABJZu~?H5^DJumYV|BU0yDm0 ztx_oJ#A@LB+9|;K{P85(^iq&RSpH;Vqq)$jx(U~|pzxXATW*X`dP+>X;@f2Mg3pGn zQ(cacRhzY>7#K-%v$kHXs)`jhe2v`&4JCOb)dfugP~MNxUP4`OUOp4Oe|k_kQ~#l@ zJXONYF`in!Nh@4PwzI_;3PXRT=^6Z~eA0Mi|D)Z3nV_N@xpMcHW*z^km9v+ntMAaT z11aAk4O|1}Zn38bNr4S^MoHm_2c=JV@K13{Z)!b??tG0&NBhQm z(ABZJ`r+EAPPrf6sGgXgb;Kq zM9QOf|HexH+G-d2T5;s5j4Ie)2$@^DQ(uilZ#{nNKI#6VX-?c9KQ;yOhOOyv)YZ_YYpsF>B^l9wz_EYn zZ8@kd>upaHZ`NQ$yGL%uS(wHgMMNYe$}kD|AzgD)ZCrb0er`T>dhXNF8D}GM zQR|rG=oheqxIJ7|QC~bpPsREqz*0y&*1||rwrPPS(2bEJ($$IhUm}KSU0+F27@xao zJ(BoFjs1D@yn8C|{ScAlTjfD(vrNUt=@rC7Vd$>fba_qKGW)4K#Qt+25h1yIKA@BQ2i%B=GENJ>n z9)ECMtBLg@ZTxD@aQmbh{a%BHnYtRBhqj+PAF8SlhRgTh0zc8-UTDf0JCyPbyw=rN z?2#6;iDh)TgFPH(W@a{+g5_ZoW1OyAMoRjnF?s2|Rzhna-P&vZ!C zrC`!U0t&*A&;@@CD8aqktkQIU;0miR_P^(3L@T{QNIy~_J@NkNB8yru=w#YCeOpA& zCIa=%yGHy9J-6snO$JYE`f4v}JvRNUQ|nH#7-f;SfoFEc{Ra$I+7r{8WA;;19jndp zbfoMsXsnqrycY&7hQeXcXw5&d{Uyg7B(|KSh%tBeW8pz|R}5WC0EW$O=*Q|XBgE)Q z!qVaV{E-y7hfU$Q7Ot_EIa5$d@RKfAEgcmCoG9Uo4Klw@O>))l+Bnge&V`yq>0D~VxSb$$|xu@e}=g#lrv{c>gGLh&NiC{L#T`QdmgPNB}w#J%C$K zS9z1D1BZ~_9UA4I%R&x~ZUh_?I))Y!HLCQ@ABD(w*IxOL$*`@+!9S{IB@2uvze5h0 z=Ei@ghb+0X`2u#dUE>pzg@5d!(cdNBj<~!~WHh`QL4E6W6g$PZ@h4`IF$u$_V70O; zL?k5!3q}<}t}ovNp}}Ab)ujF4zSv-E<30M3tDBSRhCspzp9phrL~%4yB=E$Ii{aZ3 z!F60l+_rcc?3mieDoun}p(+Ns|7ecXOapKvr^BC3o^>Jy9?AUJ%(p3$PxKSS?XEs< zxvS1i0n-oQJdNv+KorhaWDUYZbg~qz^S7R6IC z`K(Y2N2p@;k`784>IppiJ6j~)?6fabGlLjOS!pD7WOqt_Og=rV*KxWVfMWuXG++6C z3_5>l2roSShC|VD@U3B+TL-u=Rh7kE7CCnb6$M6EbbLddiE><7(Q&KtoVApKnS-|G z*xtAsCt#|GJIFT0jD-4QEclD`0kHp=0}`sE7E4=>w$|bnh`a#|YM2{>27`VDsMdUW zj}y23+>O(YmaB|N8i1Wp9w`$3+U`*EYL3WQMv|R zb5^@%bRFu0|Bi!2v!Ll8;?y=qArT|D^8oVNX|ns_6Ol;J9~~* zNUQC;gBqULlwN!fD~d`ZddkaR(+3LOC?^Ken4^8s9~b{+dPX<^5z;)Io{^y%R0xEI z%it8I8~Woz2;13cm6EK*bga?VbZ&)CCnjR98V!j*Z!!rRUiaTWW^ECQ7YLks8rix_1iN?OF@TkO2XfTo26*yiXa^^Nl4858`>c z0k_07M&F0ynyA_?bm61m%B=5P1555pq$7xvjLiTTt)S*fGS1ZL+kE>LABN$P6A(B2l`a>~$#TD}8jCY&c=N}9gu0~Ru+)PeA$0e-k+8DzxP^_Y1cq&oTd+6^7rFsN&63tN95Lw_a7NXu){ya6!2E!gB8n5}gW|JX76h zakeFCt1IqTKb~MCF^)5}PMW zVJG<SSDFv*B#ROj&svOAh!Bd`i48h>IC zfBio9r7mP(@yuqI0j}F8F?K#D{5Br?EPR=Wu#=a??KSz*U2bW*9cghP%>zB%9#A0s zmf?b+K$sB7K?wVwE398KBHm=_Z*(9GPi;-!UF6}B$`jLMS@GUaPjY2*@IC-Qv;0#I z&6YeYxn!{vrl@A~w5UJPOpeuoaNVw@P!DS2SY9w4spC5`TF&BRO>v=Kr9*+u=FSP# zZe-UWE=GakEO>-`TI>_FW^OrgiBqDSgYfEiku#Z8IT)CeqXb2LDE39O1E^HcGX4Sb zK!pIqOrinO`OScp@`m8&q+Qd!xFriLRIDqF-x-MH_gLQcFgT zl0!aW30|lrc~dkw*qQb-)zqsf+uK{lLHuEn=8<`#GlouGW>kX8(*M>*P03(!<&5t} z7`H~v4;hoxUsE@z_lRb3+NDvR5(&wrEjThiwcD2*p#r}tT>pFEdj{bvJLSt$(xS( zksSUYH^uX50w?QSd`j^}L56;hNwM=`DsIiJf$eawE?`kGj&KC0u_Yar$O`5I@` zmWM}w@CWfuT9d+-i{8@dY;ibaQ=`Vfzvsabfq(WbZ*qDqL0|J4=#4xaDA|%9XKo-Q zl>3+)?yDuOcMbS?+XCOc)q0~XzACdNmB?>U&qlbInHecV;mWuETk^pyliaOjpvjvi zPODyNt6F~8P5;o!OlCd#UG|f=Jmg)J_Xy*dTlEDuHn}&BEK2pZf)A&ePEsni4)Xm4 znlxPIcD&VD@w*pxP1y8be!b^x%TeF@2vlHI`4tsVfidX5N>dpX9b1=NZpL4%ZETS{b4efUyyEHbBfD?ZCdEqmJh!0FM*m)$sL-U7uJByDtD6AEF^~OI zXq5FT0Y7xH(y&38(m%4p0dS&tn1NTCro9!r&Cuj&OWkTohvZ)q1S~|or&ZHpt&f<# z(?S0E5cNx!bAZ@QXk>oNRm>8=L$5cHdgcb-Tp)E>DUthqZ(Tg`4)_C}L$))$|K0Zu=sI*tg=tKINK zllL=vTNU1_KAzq2=H4DSayVfF`c>pmltC@YCE7DQH)TX~iO(j<=x>}TG19>Ip0-$T z?62Qy>bGn)x@8la_oIz@xx_Eq?p~$__sdU_`F`(_qrpyW^S9c3)Oy4g^q@0W!S}PE z5D$O~71X|sHHqTjMqg7IJGaEL=C6Jm>cC>^%m^WHqYLNJ@n##|7x2M+K4t3bJ8Lin zvkG#@V%S&Bc#YNJ3u_l?7w(rr_2Oz1bex=0%y~{hT^Bc0=5lvf{YFMV#*?UcHAfpU zg>2#F_wPXz>>420OoEOY4%={)?czFPd+oj0t|m8%6yAi5bwmAWhbktDPy05 z{)T@$F*rrh+C)5@@IeB{5({)W_L=XaJ$aORfQEMLQ@K!e#mKkL9a|1KbF8q9_h7Jz z>Wd1mT=7wWR0RWRnLgM?h%K?`%Q0I7iQE#kDz4y=TYh@6wl#UC1xb?7%rI|iBa4*M zdmH1by~fSog!jlv1(_}R8{<>@E%HSM(_OZVAR<$k0V9W)qYsYy;67KgyhAc1pcoit zUSATlBoj)I`T>Q27uK$vQ=o9*i67=o`PJov^`e(-k4Ef;>}&pu*Bnb>X%_Uzf-Dbw zW0)Rd0?S1y`0`(EFMaoXcGz-!Hmyd%MP5)oV@{&D28uL3AwnK+{B%$G^_DFjT)}YS zG5%V`MU+=>27-C+RqFQ7^Bcq}XjFH&zaDSDt8c5gD82l-_{$UX%SCZT;5lxz(&u{{_J){iCn00p1BCwFV24bn0Cf(UAj7YHAq*n2WnFt z-^-i3JWKa>J*y{l#n%IC{qo*5KtF(a4NPb%Uoq4a`u}w#{&OtzJ)pzqP~}qb8hEPv z>55|XD`r(EZyDb{8I=SrdXG5~~NeX4V_5s86Z|$n6QGW%! z{IXU*+o_-T;M&!JYj@-FOJ=f{XzB{P-)^KZ?Ho2V1Yb`K?UB_)3PC6a;f##co8#_~SLu{AG;bHvGwtBi&1KF{Jp zqXIf_k#0DkgBLr!RIIbenByYcvcHqeO%)r3qKqlBk(=j)NfphoLcp6s{g0|Jj^{$> zwjlz$N^XHK!UTCmbi^a~`Y9*Z-8y#$D@8i>m2_2K$$t4%t{51VQc?*A^%}YDks<-F zR6lxlE`n;GeMNWt5L=C7@>9|!i|sxE$K&po^~{=^&)6PhW2!r>V{|YZJ;r);j+QI zL{;Je3@_iJBtg-k1oCLB{~-1w_lAyS4v7ooJekV3b;Yesd^SVGlt>oFjlr(dos9yQ zM~T+t{~$}l6j}rD z2P)Fc7gx?wKK6+08ZDsQ#Vx218TYL6<(?h?Dj z?8}yte`WgsG4W-+M5pd`qE)1FrE4@Vx7*5eRIO!h#c)$QK4cIrkRZML?=c1=W(aN!ZwkAA)Y6@X5b!vYj~k0YQBEJ>}G6{3aPc{V-NjkFD+PAG1z zsj`aPRmS?L=G&s?Cx!37b_h)t4)Z?N51bhrHVll!30;Pg^ph*z?kr(Atg7IswQ(#TEfQ*<5Yt5wrVBJR)yMkFx+`1qpwE(Z_MBTF;+g3+ATxZ_ zNxI=4>3j`5KC|w&JIF`R&JlpEjoMJk4rjo53zKbY!a~jnS9pTC*ZZ88SLr@hTn4PZ zn()W4wqB~N3;_#e$Z}NA!9rOhfCr$2szBcU3UXH)b((PY;#_KWi6Sy-gfpPD&T0%s zy3`cmWEBG^x#u<+d^3WHIqde&AEmx%#|U5JmO3)-VkW2KB~lf=jM#V9{u=cBV;PaK%)G!4B)zWW$%DZ#c^{tX-BOG5jIo{Yzzu$GX z!abe-`Pehox&qEQ=rY(8qtzTyGdx zTN}=}LS)fuMi`-9-1S%_yvOXUqP2!0lM7WU*d${ zUz6oy-u#ov%~%J6C$mi!mNY_r;{N=4k!adqdF5%t0J+>Pl}!r$w##kC^xIKXQa592 zSm~fPE=DAB4pRFX-wFhuadHZC7ZB^0DOGtPN#P(D2@iT73g3m%tl&@(O?ScOS4@VPtmbdIb68vKfCE zjgZ9UJXd3C-mH1v!I{B;-s}5rHw_vg_<+DZ@@@)UH3S)ORXExz$emHl+;HWI3+r`_ z`?Bj?Mz@f%Md5Su@UGW7tuu6R*lEJ4$0b}4t^;+1o)SfxB;5r#R{%cWAKV_S6czxW zut~&=xB1dOqzDZ+Nm^3HiSCp_o%sR2fG;F+!e^Wom&y&K;bI(*CB5+2 zVivqxW+Dp+T`-}_!z1H`;|dE@=i4xp9N{`Wbhcln0-v_l ztMKcBb#tLHk~{{s4f^FRQT@uEeD`x`KoDYBnU&j<<^2upVyay&X7Wx{Z2-^zH`qp2 z&hsgoFq=w>%v1|w6k!?omg#Fn!}rLoI14u-jCFjbE6=m`zDaO8tF;(Bx9hT|GH+n8 zV~PrrZXcB;r!k5O0VWzgmkzV9)P1h?9~u+4O>l=itER&#UNDK2r06)b6^FI$R!%y} zo(0yzZ`Bzzo6x!2pYp7f`lIY1EnAY_p)4)03rB3hjyV*>cj_7p_i3cjdsL8RViwMx z*A@wx9O)7xQ4!p;v?Zypdjvx0M8eA|AcPJ8AQWbl{wK_pbwr2#;^(=E_&uk<#c#(_ zeb18TDghf)sx=1P)y4=)h;6a4k9p2yhx=1k)Y<&_Nq!dM9IZU*l`k*!mCSo zwTV6-;M?np7KX-mTi`E#gc!-_H|sDka@@xydl;1FgIX7DB8@G%&&)`!J@{fsh|XFC z1_gL!%&+qF$Eu1e5uL@hXCAduF+{VE_T|nMR>=h@{tG-tQdS+>6|i&;+J(|n ziQ5u?B95xS=oTgDwv&evMz%UZH4S!M@1JGGU06OeFi>V^T2Y+Y4RcZM+Q_3s)k9*W zqVW#_vNE?SMC)snpE^=)gd0b4;ok7YlvC>#?(8mtxFQ#78e}Zi-_)wo&AZ|p@+^~z zn&p>LCV)hhNFSv_;8>B;D~6+zI~=MV2q^^J2gZ$x^Y=d1Vd$#&NOj(r*D5q3OOZ{N zp`?5S?eZ=yannUlGTuZF#zoiDT=H9Y5;e6y-W$-XIe2ffa05X^t%i8n=ZLrlbbJnF zK&(bf@*2Q&&i~958&{~WM_Y}5qJDBw@8d3-ZXB8%A7t+bmtwwzie_D5Cahl}O0I#G z5YY4&`t%T@Cn8V62M_5S#4zd@!C62`eyYWSEKC}T=JQ=7@fwJ- z{E10Z>ej5Be4%x(a&{p4DxQDt$;BP>q{M?^m(c5Y#O;AnI&@NrA(`}}qR-8kBX|WYaF}M_1piX+I z1SWKU=z@Mugn#TwBD@x@DG-N>lkAsoHo2j7r7^o%kpQ3>%TUs&@Dmk|)gvjY zYvANbaK5)E7lGI3+LqjDxg+C`>5=T-2JWcwCLIti2+zp?na?0Lh!r&T&R@RK|7lum zw+=4h-z7ENZw6Uf`--E_$$g}LfUKMzum6r93>n`DDFqK6vbY+v=S;1vbdaV!J85ws?MN}* z*i4zq<0Jz|<1~A5$GT@_y+`go zx_GvlFGkAmJpRwQ)cryk!nt!eihqw~9Q^v-0LK#?A zXBHOKi9Atse5PpVM$U%$H~23!FDf6$8{ZNQBJBccFF4{+RnXNtdfe#J8vBTjs}GJ> zX)9i@x_!#L(rBK<1=M=GO^2?F8x>yzi_~=uXXPI}&X>i{Nb#(mYHnb?8~8AsZJ`5$ zF1$!J325>rDX$7yns0f`&)2%R3>U+QiSp~D3+$vjN&s3ee3}P#_ILKnzYFc$u}wa) zgFzYm*(acc$OA=-N=kIsFvD~rd9loG> z+8M22Y#B@IRFg@hpOq4&**J9nrF+FSb@Xx-e=?_0Cy1_BL4(_pQLYAH(r* z*kPTW5NkL-Q44jerbl00g3?MjW9UO^e^+KehWkvrxPL^CXC)tTTynj-&1`)(8+=Xc1BG7#QDmHXTD2gcvWw{yq3t##gFgp=Eb zQ(<>DbXP|2Lsa3z(XMtFQ+)h86iJ)fg3Hpjt2bFf__Xh64mI|KWT)v?oHe6DDx|}L zWP{>UH$8+BoVGDIRua+NV0$Xn#s*P^PK9f?5d7ToggFX+&Z%$5z$2lpOzYh{8! z>yH^SiEIRUgUrw#OmK$U*C|ct424O+TEGuua7rQ9v!qQ|>T4$;pFwM4JZL*}?{1&J zohx1Ur+2-LU?8}D4V3PQi(K?kOnLU8v~0fNo+aEFTa(2K5k}+a_LI6@mZJlJ?Be>c ze2ip6Rt>1)pP=RQ&VBqMt`hGki&yS@=I>}AC#XZdp(I#*WHGbDV&Vq?jej3 zRb7P_#_S8M^CL0+xH+MOc^Yz0at=|!93I}5+Cql=jQ#E09UiRFO=emu?m|h>rIYEM z8papRvt2g~xSsM7h*w>_JJe}HIspzUrGK!}0Ws-d(pN*x9FVN*G$VjVH6(wT+3_(M88e z4-F!p$wvz`-||p+ZlIpyDDh!MgkW~s`iK!XtmlZ0jm^+hn=mqqGDaRmWx%9d!Mw^^ zNL71jB<=25C?R#Pq2F2u{2{ND3G^)#S)OJ8f7bHw8(`je`{p=4tA(guqBD5~KO7bE zxKS7PcE6MnN^ldpV?>RHUO||y8lo=*5<+|DaPLX!RHLpTTq*w=;4|D+$=-R0+58^O z>NdX@-vwvi5Uk;gv-l@_M-lx@7}?4J{I1_i6&P!9UUcXnB;kKT)cmzwMUyxVYl~S) zD2$Py#8++SJ`C-N9(&*mun%B1iPok>Hkh4Id zx7_1my{q+0HCO+0t~mLsn1n0*nKC16O24a74nMl~`NUo(dwRS7cEr`+eU{QktoP;m zKI)q8ws=iwH*o>!j)d3uTMsS!r-BN`B0$ic)#A9 z>WRs)o)cVf>aaH}G_T}is6P*eGn2`BO7?<3rLJ4S?hI;*I89LaMgn#+RYKy_PAzz~OoG^SYY}&V5%aN%{r(%KQUm zAF@+og{j^H9vUI*e_yciWp}e_2Pt>(ErjF`%AJs_MHNW71BzGdUX*Ds&+ycm?U;sH z{e!f}@xc(v`tFnqNlbR)UT zB%J?L%%&FQ$O)`8%AHn-#%v$iJLb;0f4bUdHS-hR;GyFAMD4P&0+$C{UjF`PP(3dw zLEWz|s*Cuc`-|~Hgw4P{z(${` zgafQI3M&(b5_kI9_d=!p2T_x$Hja_?sE!D%tMx$ZPw3~hXXYae=(!#CeEoi(r?46P z(PX8Y7!&>qd;Z0Hvn7A^IlmJj2%l%O&~lh$*ME_H&!!Tb%$w(8&5m&Qv+$iCCEbX< zORs{~WOm!EiT+MuTzb#9oN}ij9Td^y7-?YeGx&Gp!rz|<`3_GK8}HD*J%UcXxY50y z4;MvuHJ$~7ljtsJbXS4WW5o?8%T1>$<75>@cZ#vwcqFS>F1J_gbWyU;L5f`V&eN}j zQKWJF(VLs5SW`W8E#lH>?c#U}3*Ts^r6}J1N{C5TT@A<%w1UJ%mX%a(i975}N)mLf zBNYm0CKypG-K*y-==|Q*;^tnI46%7+{AHud^7_pr+yI4&;qjK(*iUSIx$dO5W?vK? zo5Gp}ot3g1kq5I?s!ES~A)>KAoY=VNGk|i;^Y%NhxSo&G-yB6F?`JGhsxG%wM1MYf{ zzsng=KocytYb+V(x?Ge`bbViR#A>47*n_|rL`8W^-gPh+04^~-la>^%Ni3EU_nWe& z%St%v%PJoBIfPJJGIhrF%rq&UnW6;Z9xmAOO6OZ@3LZSxb92=hG53S08nj!b>Bc?^ zpt~o`N)|TJ*lr(ERim`pUrfE1rp!O0Vl1Ttuo=U&_!7JM-$8{@jR zyWVreR54jQ>>78AZ`{~;?;qNUU(YvaGng;IE(f0p)^Si~IDXhy$(5l`hPJWK%5|>+ zUcQ!F7dcS9@JTsYn%r&=LNKTP{cZoz|6l}uaC(4$@p-aFYrOa3!RO5R63_MC-AZr} zS6o-j?MZZX4;h2llqCGNOr)VJ5hpIQvPj#JGls~&ww#x^hi;TI6*jj@%M@>qUqs&( z&$%h_b)$tbAk<$L_s7lt4ebQ@NA3Vg?Ov z%k8F*5%YRWFpgT>ofE;cM@^&Mt{y4(GyfN?oH?HQY}^qUF7#dzjY+Rit$f1!Y#{G(W*seE8RpsS1;zd+iabDUyI_Q$KpY#1E%=$kV zG$%lt~g`Eg7->t85RX(n^?|PcnXmWe; ze>LbolKDS*j|u^@Rfs;w9<>Y{w%k0|Oin_obnG?GI?w9fee^Ocg<8ppBrb2WR9_F8rV03BA8c_~w$>Nd=3O!{&yIp6fMuoND|El-vm*9ZqWA&9ef_eD!tA(>&%G-HW z3+(K#PU&mq&-DDd+qGB8)1biD)60iUcW%Y)&9<#hFh8O$TEUTAlzU=4iYYFityRvG{Hc3lAW#SDI&L#dTreWP`D3B%xj8^~YJ zu-d3Ii&Gfq62duZh`2MH4!e7ngn&p$j0Y>Nn$9)v#-Da>75Q6hsUs%qLgaUsrD~kZ zw(fPD2K0B^m(Oams0uLzoIVKmMQ-=Y?91GI&P5?2fc;A7W{E6JGycplJ@l;sAz$Zx z>8bL+k;Y$3=5LN$M(Gk2s;tc)hQP2zy&A>@IMzENGgZ=(1#Tw4CEBXxR*qG32mwC* zbwRW2qQ|mJfP+}dCZn;sJn0^lkT8JGp4$dh0cMEz9+mqw^Xd&dvp9>nzy;v986Bxk z4t=5iQb;TdL|`i%U8FQldJe=_?~jq~mShcU%_V)Id)1+JHpX=g5taq1=&0x_!`DEG z!;O96iyS)CFh$jP&YMcZnj+4(3GSFcI;_c|?j?qxStdb3?W7|>snH%Pn*i5mt{Dwn zpC-5}xIQ{FzTo<>cT_`9)0Bpv4s%QiPr*#0dZT9)q~Y!uKy4(@57y)XfYmnz=?}V` z2FCaYb`|;M*DfSRh%(yB7G23!)S}v@S!Eyj(v^sD$~ry<>8=KexqT8X+Rrt=Ol~Oz zDYJ?^DDI(=nx~9WZ6rcLPRU_p#0i~>`P(Yzlasdgz>6?@X87oxy}~FIa)UXCEFNwk z*6SlX?sT+E+aCwztRm}R0Z#YLYh$ngR|l7G0t;|(*a9HZr#5n2FD7>wd$MdbY~EEF zMxm40E@br@$+eO0L&}1K9qW72n^Og?S_z%uVs0}^)|t8MJ$4QSd_fFydT2;e>PGI7 zxxzpM{!$W?zZ*YK%RPH+8K%v>!f+HQW2z?5=|(4qs7(2j68f)w{$Cxlaj6a#lw$|h zhpm*1e1TYGKhDJ*<%QkV(dMN}j`1UJ0mzUASW@tOF0{0VgvYGzOxj4UUMK|4)9z2N zrW?pVD(ZPpYVBY7myO08^m|OTWkE`Uhg!T6{U7KnEuhTwE7*bW0^kt84rYHce-MHN zjmzIYx1jRa4FP*Wn_Ks$MWDVdO}3-@?hzZwH}+in5tO!{YrTQ~FG?pYqaFymT?561 z=@YZ<8_OnEG+Vt{*-%Hh%Uh41T%KEDd zUG4V%ApCC3I(a7@?Nky&!x?*>5JAdyU?204>& z-D!(LQxzsm%c8F&q)F@=r&Y(dTu8t87J=ZjrSqu-CF^P0JuA1UqxS55!y7-l{U zmTQ9AySJ_2cqx6nKxaz?{8l4<$swDejWk5C;y`!0jf(reA7i)xR(6UZfDRzFvnu?C zC;yw4SkNZ?tEb)gLTvr(?D~oFm8iRcHCTtP5Yhjjjo3`>(dOAh}b)>r#PRo zUG&6Y`W&RJUqEC_1~Kow-^FaRfLZtx3t-Bo)MlK*Ak_lohRedoOk?gDQW2$xE(Ao_ zYk{)%buB7Sk7IN;)a(H4td6=t(rO8}i>Aj*i;g5S;i1ON_4yk9B&!GgjdN!z71XUf z+USHb-S0z@SScS(dUW5vmiQ`eN!J!W&|0KS4%SXH^Gi@RaJaB`H=9%)ljIxGCoZ2} z1Jbkj*8pVL=TPIPue>T407(O+^D;ajX~4poigEaP4^^S?cASl4C=TG$%xLc1U+V5v z;BvUXN~6eSI4GNgy>N(4Z?&8pV~1pP(IzSoxDu;s;C}jLq08L-#>@a29YG(l^am}- zi&o<`19$RI>y}gFd+;$YqZ?xlxX+D-cVvo@PbtnYi*6UAPb3I_{p zW&TUH;a@5FZ_njT%}>s|UjxRq{>z;)DT!T?l5q@ID^^ZVqaxjZPi*;R&n@)v9I}$BE7d6`@iJp z&P0BRC0nN>jQmkUO)OK!AIqO=fU{&=cyy1dl5>t$`AHL8YPR%x092O+SHop z7C7Tg!J7Wo{T@D>?M_3UaHKA}pK6oM61hHu>xDk^iChS|v)7tSuLn z9x|GgyG0dy?_(Ls7v2;6uuX^ovd5PQ?^ikN5zJi)9kv$+W}Bs(mCv?6w2(1hGFe#n ze@fe`Q8$kgXk}wJ#INiB%KwJw6QnFqR-_A904Xzh6Z4Z>F7|WU`c1Buw_KDU{`akj z@W|}!q-g`Se*q|eMiTyPUww9|`MOXkWBS>7!Tw~1KV@E?n^u?KYC95pQzBOPZjs=q z;X}5RLht2f&7G1MeZ^CBxtiD1#Yt?ziMvha9CHjcGZa9CCZ2E z#s;dqToZ0#H4TS`rF2;{{t}rthV$e#jMKloyED5lUCSAnpHmyeW@yI z9|gC|6*0=i1W36)?R@JI;o{m`C@YVkTuYLs;FL#UcO!@5w}YkEa_6uoVH7PpF6)RV z<=Xmuh}8y7*%cD8UhPiPIo7s+K;fE5!SSTUv2byXny;g^8W|QI;ga+eh7wGJ4?@XP zi#@yX9Jeo!yx?~Wh2y!8W8oSHf09mXJTgx{0{RGN5jvpuolpLwz%yD0>bw}?T#!Lh z(;n4c`t+p7{u1rs4b5cyX7y< zAc%>MBP>i8(VVX-aT4#2yOI$8hM!(vbot)wMQSi0fASo)IMY(l z<5MCP*Xr!_g1%0tRKjGq9aQBZUw}VvzKCkKG#$lXC(+uD+egaw9GS1PVA;wy-oo9< znk*?%{Bbg1#*sb2V@mn8Ps|?!Gx?tT#2aHb;W{w)^?A7frVsCx9mNfO@9{rEbJim~ zB8-T4Uorc9$*7$D0zo&DHA42)I)%gf8T#E!CLlzXE}o25~E^T31B@c!l@ zY(?#(5;8`@k1KGyG(R}(@)-*4g{NlCnbS3ZJ^$jeP2%#4ZgbB#JBoN$)F4@@5#Qc3%2Zax?T_W zJhRtOB2mOj@6T2i%95>81x`b0n1aND^N$nV`4hXS1TD?4EhE`<+yVeGxV zqu&xKU)3dRjigPwO7_@da~qqZ-8|Ky^MEkur zA(&{ntx2v4+0eXGU~Cr``TX3dbvf490}D>4M>$%WuiEA5?H z{K1KxCk+C zO_V=|IDs74nE@sdJEsWhtJSj7EsDEGOl6s{y+!oA^w749N8>$opE=6Ii5ROPUuXYc zd)FD&RN8I>1dw8YASfjmNRVEY4n`CLhztTU7>cNbK6D`+LAjAicn?z(?&e&rxSu?W{F{Anfp8pVBegC2k&NaAchSB_z481Y<2U_gv)eUh|5oX}=s<=1H&8p`j6 zN7`ImL;-`%L88_nz+gkvQU=iiry-@^cgkssOYD%FlkM!HQO%a=PLdK27JUo8^3f+x za*g819q@4Gmi@sM&FJ)$H*H?$?uAMFahNgj{mNh0CBnfFWJQ3r{`htRx&D4vsH)!Q zU|WXi>5l6m%f?dFk#)O^v2_Fsr;a&j1)&xQy4&RftW8Dd)g+jxRY`H#0sOVIxQiM16Q^t*^ju_DEh7 zQ13pXUR_rh5Z8FiTU=6Jgm&7nl#&q5Ow=27T_GmH#758k5Z9nSrzeaB+O^1hX@CjJx6rKwLGxFsMKje5CFmzcf z`{yI@6)E_~?|%8p7BY4I2!4FORi_YtbVJ^g0o#oP=2VMvs7+58AAu!udeRhALE_ZnV&(VB1>W#?Z z-Du-~*_8ikwEfdiLqD_aHkoh#%%e;z?X}A*S5+78qN7hOA?)Wzx!Ffzq;7ENYf<2Y zi|6yw{FGm6^hzwrFtIM;%8g+iAEWPhD~*h39T-h27Bn;{ z2G6CZhxA2I>4jnVD#H%7UpJuPHzX80I0Vx*NZ*~s+xOseo{YHvJ+ONh7vIhLO>~8Yp=*BsXutc8?Y1Jh@z~Aac9&BtGf9 zpAtd1@c_l#$6AhSsGOnYqKZP3kScG_;HA|Obw4ccSiF38%N88Rndnf5q&vh(P1`xBFVyAY^Jcwd0;YO zDh48}w!xoeja-MVLxskM7q6O!&kZKFKC?}6wH1rCEy##WSKZCzvzYS=O?_O(Xm{`S zo0F-qBbh2|?5}r{EMa2}6=#dOW|{)Qu^tV~@^!;`t{NcAU=(C=FtIVIZ!q?($uT+C z5ut#YcA}TH{Ugy(G`Hf#oUH^7Fx2?d4VZ3M_%Ee3a$2mK;Xaq#Y`IwKXten1NQhJc z4te zHlG;j9xY^DfCsS7-@Tg^0t_Yiw~-Ip^AZih}I+f%2*AGo@01P1}#K|nktb7lVF7OJ4!r3N@aY)u%l!;C=<0|wVIXU z*xBte>#sI+W_+4m4ni}fc$q9G2?f>IQI99 zov-g+R4Lsk+!Pa=+GmhxRF1mhy@?X59x#MlH&aGsr$y- zmLl%&k3?)d5?8vkf2gHSg|4&SjQXcj-`+I%^PGj<;N7GG`^4t$VlM;T@=JA|OY1a9 z9vt0F#Ys;vA3^H9+&?QJ{?z7wB+cDlO#Dr;G|>1=4_usxj3#g@ur#Dc0BiBw7x2Ic zX0$rU6lfqdJ8l0gabU+H+@QquR+FD!TV;@I4sx3)yv$t&nGwZsem$Ij<&Z&ujrP=W zi4P^+KqtU!5@LJb5M%PDHO0 z6ZJ`UO>tQb885^##1MXO5hPyfjOfv-$~r31_6|P~M;++m*}nzM{>PzUYbl>@y}q@8 z^61p88O%z3#cf~8AFLsN&I-)|zkD%_vbpZ()#JGjW~X5Y?TXqY?3G|?L@4EIxw;xS zva|hU&ax(Kan^0!d_{3ZjU6#p*i$xUx{eXwx6^K&qeNpV>}(iWMGva{d0-e26Z3n3 z!53xfmz}TQ+NQZsn$_V+7(0K=#m)oIL&r_vzzGqLzz-AE&9ZOQ4^L|I_5W`gf^D6| zIiD`l?S+1p#4dB$gHDJY2%->nt$v8OdShR+gWb3P0l;6JhDncMqp`7C+#1x?CpZKM z0Vm-=lp0hE4q}j^r(^pdX8YSR`_lnB2^j_EV;&1!b^)6EMg3Ty&ZFf57Sxai2Tn)A zK>2(&+3drEd;0=IY!XnH``r$br**2v98^Xlm-$v0;_DX(KbDJh&Wp>Y!<* zf_v$*nUHM99(0j9($OM${4AKD3F7Cb1cI`_(0#nOW8imULUL7QW1NROlMWEsuWb3` z*_m`j@t(P-aokP)H20_xzCG)@}ESvxh!DPT3feySqRf{YB`3LL`CB z5UnkR1f@c?K$JQF!yUq>fg^XAl zI4>apC%@HbNcra5=l35VmRdzyyQDvVfUATM6cB~%Y5pii-MM`Nx# z7N@?y()-#2HX8;usi4*G%r&&UP>uF)IshgVA^=yR(5uJ!_=k?YFHD;i5%Dt&4QdmV zdVQ;SY3V!)Slxq|xci>oXZju47pLf;OJ~vI`PRg7p9FzRL|G%DTS=8o&MpMul#jnu zWxHkB``QIvDeb=uy_UY5cIJ+mtGom};W3Y<63{UxlCnEGFtIb%74$GO-e>+%RT+`> zRcR(sK-s-jLZJywhnf^G4WD_^^P$bee|>VdHF?@8`z_okVkL03un8dCLBBg#Kba)yQdOT*p_@$+hK-2R?6cR{BW zll7X=hJJ_&Hdi2nn75#SeY0s*d%r5Pz}?V-qEuw)?5Xu`DS?1I>3R%K7VxV+)!j*2 z^(1y}3G60szm#nU3?#pacjlt57S7@i;*7tc^?%oYA``On#OuMeWS*k;my~^N%>rSM z4v$CpY|AQ%6qiM(1QHLyGuoqZoRfYtMrn zG6H9_^`j|im|1&~#q1XUfyd*UrP?(Y;zsyjJNnQ_|AI!8Cdw$F4vn*dQ^ ziJpy)MyTmpAd8KEFN2K_mBbjc&U)jps^YOtJyz4Y zCQG_F7OhJbqTTJ|;qvAJ55aNt*-D}H^&g`SEGmy+&M&-6HhfEZdg;vwG;v zC`AlO35fWnf-vo8Dp8lseqd)@7~JqQ&Vdsh0Z|o#@>PO`s2d!F>6es~e!_K8{$(}x z<$I>jL!Zfy+#x@5=UdMb`agT*PTIfOmme&(ziN6T??)apG6u*PAY*`x0Wt>27$9SS ki~%wR$QU4FfQ$h$2FMs7V}OhSG6u*P_xt`mfJi|WAq$|Opa81i4{$vV+yk&M zFfcLDu`n?)v9Ymm@JR9TaB=adNNy04(or+e(^1pXLg8F2P$mu-EiJ3iEsonf{QUe3 zEFu!Zyy9GZ{JcL8f`W~WjfaaziH}do%Sg+}`~UfI-3$<8q3WTEqMS?s1P)CbO;3ev=8_`03k*vVdRm< zxS?i>$>c=J`#kO~7VK_G3z_<-9XOwva{x9DIRzyZHS~}+0)j%qBBJ;1%gD;f zBNQ|=wX}6~^&XmASXx;>vU%*{>gMj@>E#{xA}BZ{G%Oq$|1u#l=~eRUcbQr5vvWS= z=9QL}S5#J2*VMMQwRd!Ob@%j+jE;RC|1vQ-wXnFfyt2CXZT;HQ8mwpk0{X&I6&>)yU`-Ot)0X8&Z2s$GV28py9rm52nCf?^*q<7=qmb75Q z_|$jE%$z^rki+>Gn0J46?U$bYZygKx|JAeq>)7x8nga09P{6@MBL*aa<1^NG{y2YX z1;XO@Fe;N0&mg-!UO2J~TP6uild#)*nhB_yts*o8H10i=8xW*7+Jo79T(-zBx>WUse!7<_r*2ilI4ZUX)-yg4L=1Q*I>h zH6R3U#H#Qk6AEP-`j-}II<`OR1DW1a%T6JuhR_y~JYTYydv@x^8{4#q zB4xv^CWPKM7{I88oWL4kR%i4)iez*>6$=VDU z!pTUy(@gSIGeJdr)O6g{c9Ux%OPAYjxhgIbdRs?5D>8sD@Y^G_bS1O34sW|@8@}%k zHP0-6w0Pht+HmZZc2u`VK9qmC6~~L1&()|x3W|&5(OI`0c@*uIZv=6PS7(LY?^aMi z?MCyb(>3)M*EV`H|7FC^KBHupJ|A<6Ia=Eyc=*XAQ7GGoz{f@Hk>(7|Jdu?i{0&^A zvc>xB@Hi74kIUtc?BpI??PbXJL^Ef^4=IZO+TDT%#ddGmc*n{rk53U@QoEDwcvU1^ z^1XNc>j((sHT<&?C%qgAk6@1$4I>w%LZj+dB?zc) z!ad>B+F9w??6Y-GN}|wK(=XrClea+X_Pu8k1=P6A^%ZAQIL6&+ICwbuFu!>`T%&WOW}CaICq z-2gqpTXKP^zU0*H4aV6Vt=AEj!&|HGsG(hNMspt}NJA_x-usKm!-g`vv_xD3SVp1O0B5hU zQLFD^!_|8iH{3J(a6Kv-%(z%bDOfCf#yfwJYv4p$oZ%X{n;miu1bp*5c|A5({zgcz zO5aCArM&UEfoPW-PVd`dSt%1)NBN7WZ{Yu z7oyrLjTtMQc||Ooaaz72v{1;bm5Po>US-X&J!f$|HiqZ+vR~ zVY&I54d?Px5uRBRmVL66Xj}#V_`q`f&W@Ncj;)Wd;@W5*A@z7Mj_sGQ9)HB%1POA% z>yEzQOw@$9c85-5aoO0$a#>S(z}EN!hhWe4&>%3K37@%rJ(uZTQ^p0#=RoYOB2Dsd#i>APD83wd zTc#!@9XmdJ*cG*}0*#`8qa=#sAu*S9uYsL7Bjabaf`L9xY2xPxg17VC7+(Yqt`8SH z$cp8?V^+!WOvu{Si|%qP{`Fy;aTR5<#F3ClNwW6FUlG&j`97W1FsQAT^mW+O+dTI6-NKOX zqGVu;Tw;MEy>Y<9Tmvsy+DiSpw$d+iVrnk)`IEjH7Y#|ITX_!7SfhzFXI>FC5Z}?a zXe@oXbkm)2+2Q^#k1UEN9c zBIk83X)ezLH?D4tR#!HZj5E@*83)=5i6`2aY0I|Evj%y>IAc9rNq?DQ*mez7)J4g8 z>vm%)5gHti)91Y2^4<>@8C;`8gQEm^K+|aQJ&QP3q8~9!?e@@M=&18z!2+<>1ei^S z7LKZ_6St*nV-%~C`{O$~#}%I@u_PgHYbGsUbax}BtBX}x(VWBE0^9K&oXD~pZ0VDn z_(JDnXE+j%xm2)eU)%GJ>3JvS^HboOW>3p`>S=Q8ui zk$S@_rNyM1m*=(p zCJ*0utkx#_kT>txG2J?Wsw{Ch{ET4a88)wtgNhtGjP1^6U?*p%gM<UR}5*6piE2OF@ zGQT$rqxTuQ-*s?3wH588iQpdNg)4)3*o=yVjnAXEIolYamP#7uzPWFoz0T73?(Wy- zV`*C}-z9Z32;17cYlvhXIVu0y8JsDo4N;eAIo5P5K{FKYrPdb1@^IM}=t2l4g!n`& zysL4Po3TD#?UPjiO|GN8$s0uQk4FHB=BmhT)Kh< z`V4GnETA9^iJT9>f)m}l#U>5?n^ahHzI~GWK3*y0N?J{U{K)s6yDWO)u&ZVF^eqts z`xx|ySIvZ#2A=W9+DuRF7;Ai_4cHBHj_ta|5>!N92Aw*Z5AHHO(VduHA9tFX>RM?{ zhLUq2;E7h|$bJO81dc?&2a=^v4z7Wic=CJ&X!!4Oat0u}X*qc$ z`XvfaL$>^Lg&G5<@QagUp&aBOcv>nh@D7Sec_1hHUjp2ARu))MfhQJhl@ zy!~D^WiLX0Wj)0iedoKEx^-Wq>oj&uU}PlMFhM}+At#vw7x~q=7ssLSFoy@0zAb>j zIM%BCUB#&P+K3pe+_r>N&Aki zzBuJr7wLSfdkLBVV{InVqf3H`WIhWIXL}00F*77@(KTRF5vOoUy!_#1?%IIc+A8p_vL9`g0*E;m zH70p>ww1nO({^c;;8Lo>)6{flqiC%ty(%+Q5(yA9M2D;ZYtFl?2_D^qIxpCjGanPfF-7JGAX}suk_Kw z3B8HaYrwobU~VWOC#5HnB^ljA zO_nPIXpFkCx{0|X1(3I3F0@B`{_p@P6xMkXz5py}tTbL$E@Y-a!VJ57I;{SlDQWx= zUA1D}ef0r19C8yF-Tgen-sf%hY_nRUX4nh0RpE=-hRYFKC07vT~MXC7-b#~&u&RhfCVr`-Y zyG_If23VWsEZK$@PQ0uVDle5WG;en*rQNPQy|^TN&_%BjFL1PdR6j7hG-^LODi-Ys zh~j+o@w3j>>+$mQK!0E0Imf?;^~qU^%DlM;>MIZf2AcY^i`tmb!@dbQCP@iS$FFsT zNEUJHfDW%gUKEmh3r%?6?A^3R4yJ83KV|vc)lC{uE8q4=ZZwl0T(#=yfv3I(x;|fc zm^&W5_6V`h8ngdM_i`xv-qBkewv|`H7@X&kHv7d`R&q{NfzF+4dR1l7U*vbvCmAD{ zg9|@oS@w}AVuTEFwQq3@O2gMU5FG=k*g4fr<6Dc!TiY{mp6>S##dQ0yo?~KiJVZD) z^PWx<&XCne(Ov^b9$^lCOZ!Fvt$h2T2YmwjMAv|0ACH?Gm3U|@66I7@GkqsiPi6nH z&{R<-%!zx7ds%mtVb&AIj&0zmV@2sRkANSLs-jB>Ax2$o-K$0p&J`)C`pVsl3l#JL ziy*)nz&ppOkpY*$Uz*m_AGi|AgNkD3@?4u1ohR0j@=*a;y=eqkm^=Bu!W^uGhAL6* z91!LV<37y)eB}*)2|TOLVx6kU%@8$c%?W5}vOqJ35V-@K3}jX5?zyw@Fcz zWXigy^)x6z##4g@sfA`OelZYB5D>n0^=a{qSV{^zof&bT#B;$imu9VSZHp)Lid0Df zjx}hmv7S}(PeTj2R^yfG6WVR;K6KhmA+THI`%JB%^EarRx|f3?{`SA#HS-hX+2R-F z=dl^{ST;)+c|&)$2ToTP`k^ODOxGnQ*l zjN?Hx#>SRQHOflo=CIaNTpAxf<;vo+n7)dNFvcLE8x^ELCQH0O=EIWzNQ@8sT zre|bmhZTb0(K2{NStbF55aLdD2BkDRF+DqsRlS>$( zpPp+jWqOdz(+hZ}WWxNFzi6ZDxoS4ZhNUWt|d*8p9!J7Rgt zudb?3dwyR?%kpMd*vBG{0~fl;G{ei~lBtK)s{JuAbY6(0U!UPf!d6M8JQeJ2YvYpsku9tP+ux|9Q+l<`z|7FUwEv7Vbxz*9ITC5;j+si+B;FR`mLF=X_+^6LT)H>DX9T^ejt!$-kp!@HRFzwN+5&w={<% zeI9$DahOz|EX1ihovsyz_PiYj?>_n8>Wh3`6ee$Vst zsWODm%Gt*L{p#Y)o>$%*9tn%;{1IvCcQCTpqpFEia6JsAW!7cVzbl1?&x@^P(W<|5Y^ z^)rfmyRL5D;s4A{^Xi~GUgZTnPWOWKt4KF(?Ft}GI;t2DF#$*K?_t9q`4T)y@)o`m zU;R4yti*j4x5lby=9>s=SatggXS{HFCRxweNFsSLA{G44^*ZExUHl{&p36~z?737B z;ueU@Yh(?WXRd*F>tDQiu7Ot)(~~#vd~XXvqGRSxQXY+WJCCTrKypUB4jJ=#%ah<-6irlx}@5BBR|a>YQj%e~TI+^~ZIB_<6Q!6Y7eBbWXn zMibK~$Y%SPpea(W&r>K9Y6f6$v_u^)PJU?rI4rNhk=*{U5*KpmWDwobsBv|Jj%#{l zT>O$my3NlfCxKGpr80KVM6`Q;eB?4}0RVDlzZZXhECm1c98)sq8fY);s5&z_<#c#Q z9aQSRkM^V*2NS2}_8qJquPhPq&2Q}KyOL+{+B-$*KRDg6OiYA%yBu3lgPLlo<(FZx z57>w2qXYa!&YKRlY1hZ+eCY&7^e1(4lK4Y&8o4F}ZV@&Uwe?d-Q8?lV$XIRAoRQCePElWxgt0fRkEDVR3tf8e-oA{ zz0zKy?B1?e4G=x|pxvY@%2a@zbIs}~#Vg%c3bR_gZK^eoC)@9Df(Lk;=O_SuAa9bm zxE;mbHdQ#1{!+<_s4R-%Q+tQylrVFm(EM(7K)GLssmC=SCBf}*>E5)@cMbRonqQ%( zUIPRo6OFa!WT{E0U!MjWpa(-{w%YxH4PN=>*vwog>V0qJ_XK5`y5AFjFtt2&pli2< zq6E|i1M_jI3>s2YemhYHhWmLZAzHN>`;>MorQkJIeKaJgS-STq^`slzHhvB(H1m^|oD@4);Wjr3`9G7qwTdV|VM!R$gS!%J zb=C3l@vtBfEb&rwe^oQUTPIW z{32J1tLrOQuky(vxBFgp$a7VFH_vft>iN7n2X{#}GRzf6_foQ=)_;m4y52#F#b0?x z1=z)GsW|L5Z&tnNZDmTqbVX;eMQT|U z$(E`Un2=nMLR^~BlCakJ%<0jQ`DkuR2tk~jXmd40Me85IsErRJa;$Dfh4eq}qRD zPC=HL!uP04sZ`mX%S~VMmSn@qgR&+G3|O%2TG0$166I%zA-o6?XSoJU^&}6%zt`gY zqWk;|!vtU$wqy7ihCd#epQ;7UMnWhJLzi3_g*&m>vS`Hh%=hk}X@6vpu?>EDi-;ho zmm?oWzoLB`Yu;qxU!-R3;Fl4IRpWN?1f!0es5H`^c?`$NE(YE;=YJ}{)OA=s zu4{|3M(B88nb=M?CRMSbkcOjma4Vl3`5Y;b*g1}G2 zxmzhUlZItqxKdReE|QUegP;wkGL&zD&||?OwT;6M&IgQJA66!tK!tQFk@}2jcSGyO za?S3R%#%1pJ4N%wq8KagDy1H|Bfmck4sl>UD5Q%m{|s4o37}ZE(wv!&9?2sRUSk0X zCCPSC>o5Ub{^rP(ezn_twhtLmorh3rgNr0juDVT ze~AiscAL>e^{#I4`zS1RsGWpp1}c@OvESm*rjfOIEn^*Z%-{dP5r^o8HO;Fnv0_n$ zKPi1V`8LHrLy}Q?(oj7`HuqIW-jI8l}EquDAWfHEUA0;GgD zSkXqrX|4gNSo%56cjGgC0avo2lN(ovwcw@=GFuRZB>pxH*|{I?e2rLy2MI)Rjhsj= zEbcGjscvb{9|8#m(UBMgazEJsXJ3I&Obt67iEnHcz8$g_ZrjmuEXm*PAa!QH1BuMT zOe}iEFxPcgzOQ8Ti`;J655$7;Mm~A@UXg=k+AJ&pJwR}%@1~ATnAxphDI(F*mE$vX zQj`$FNO1}8ReZjOqi!^hb33vk28O`8@@vwz^s#GACRXBv!ds zs_FOPmh#|*6Q#a|23En+URYy7?f+g6roBAgy6}0Ya1C%cf^bJq;TDL6j225P$z+1etW7HieSXl|9DCL`RLN|>c&ob@SzIEH}B}o zg-f=*vmYu|X^X3iy&~|}vQc_(CIa-r;7Bj{Fh*CP-!djh8JQY_|F38TrgIR8_+>u! zWgKl>cKlB7Q!n=+`q7B2Q<_5grc>Z3<4ebCx_^;(f7C+${khBWT>b7**o})%+37x_ zZvSy!aw*a9MR`9P@F-;j5f!P8)l$SDebc+FaPNX%-(I7ubE1{F^f-c(CIO#d@3fU%83D zJKagYO`8~prh+ZL<+TqAf!aPZ*MvmOEn%M*8c)0~~ zKP%UK3+Us`1!6QBt5eh>WJa_0ir$9~NDQmaS%wm2_&bYt!C%Y>UPO1fw?@4+H+RU< z>$0_FNW!u3*9CxrARcJNa9Rm2uEv`72}VAu`PL_Z&7 zQmR1B-_sB-XF_KV;R2gVoVg4TTOdL{MF@$;5DOT8qYMK%}IZ6lc z__vxLW$0vdd1rK{ifD3n%4l$ICYUC4C9Y%+3nXEMn<4Z6VZyRAv}*KUF@%q7=`q)j z&KB6i6T*6Rs^V!~rFZx+~yJ`oj+GJii^9)+Gz@4j39f}Aa!^oBo%qXfF;kEZph)sW0< zpid~_5I0C1GkVTO6>H5gP0<6*|L$!T26k6cl%YAl_PWm3hKsxOIXBk#QF?5M_;=#d z!t<)6;(B(Tz>fqlVz56qXRE0r`@}Du7S)f7$s)REBgUg zGFqa0whm+s^=hD?Kq9=P3JMAU;0Vx~W&H~GN)Imu?GzPFtv+>q(66p8Mc%zz(9;_X zwSYOtL@S6zAO0k}M=Ds|e7L?|p~sO}^hB$owa-$~qPo`>v$d5#-18HLI<5f{2I9gG zpcaL1r3VjnB{GEIb!YhDg(DHersH=JydcF4=J?Eiaz_lK`zWf1JgCxx>oFtch+7

XU62aZJf1RZP=9xB%QG^a!lll-Pf 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�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 literal 0 HcmV?d00001 diff --git a/symptom_abstraction/symptom_abstraction4.fig b/symptom_abstraction/symptom_abstraction4.fig new file mode 100644 index 0000000..fdd5627 --- /dev/null +++ b/symptom_abstraction/symptom_abstraction4.fig @@ -0,0 +1,29 @@ +#FIG 3.2 Produced by xfig version 3.2.5 +Landscape +Center +Metric +A4 +100.00 +Single +-2 +1200 2 +1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 6300 7020 288 288 6300 7020 6480 7245 +1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 6300 7650 288 288 6300 7650 6480 7875 +1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 6975 7065 288 288 6975 7065 7155 7290 +1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 7740 7065 288 288 7740 7065 7920 7290 +1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 7043 7682 288 288 7043 7682 7223 7907 +1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 7065 8325 288 288 7065 8325 7245 8550 +1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 6300 8325 288 288 6300 8325 6480 8550 +1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 6492 3156 288 288 6492 3156 6672 3381 +1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 7245 3150 288 288 7245 3150 7425 3375 +1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 7941 3171 288 288 7941 3171 8121 3396 +2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5 + 9990 4230 9990 2430 5760 2430 5760 4230 9990 4230 +2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5 + 10350 8910 10350 6390 5400 6390 5400 8910 10350 8910 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 7695 4230 7695 6390 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 6 + 7065 5535 8235 5085 8235 5580 7110 4995 7155 5535 7155 5490 +4 0 0 50 -1 0 12 0.0000 4 165 525 10575 3240 SS_fm\001 +4 0 0 50 -1 0 12 0.0000 4 165 615 10710 7560 SS_cfm\001 diff --git a/symptom_abstraction/symptom_abstraction4.jpg b/symptom_abstraction/symptom_abstraction4.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6751471ab215b39a75e54f0406ba34807c1708a7 GIT binary patch literal 19821 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