\documentclass[dvipdfm,cjk]{beamer}

\usepackage[english]{babel}
\usepackage{fancybox}
\usepackage{ascmac}
%\usepackage{bootabs}
\usepackage{hyperref}
\hypersetup{
 bookmarksnumbered=true,
 setpagesize=false,
 pdftitle={YetAnotherStableKernel},
 pdfauthor={Hisao Munakata},
 pdfsubject={LinuxCon Japan 2012},
 pdfkeywords={Linux; kernel; stable; LTSI;}}

\usetheme{Warsaw}

% add slide no. to Warsaw template
\defbeamertemplate*{footline}{shadow theme}
{%
  \leavevmode%
    	\hbox{\begin{beamercolorbox}[wd=.5\paperwidth,ht=2.5ex,dp=1.125ex,leftskip=.3cm plus1fil,rightskip=.3cm]{author in head/foot}%
	        \usebeamerfont{author in head/foot}\insertframenumber\,/\,\inserttotalframenumber\hfill\insertshortauthor
	\end{beamercolorbox}%
	\begin{beamercolorbox}[wd=.5\paperwidth,ht=2.5ex,dp=1.125ex,leftskip=.3cm,rightskip=.3cm plus1fil]{title in head/foot}%
		\usebeamerfont{title in head/foot}\insertshorttitle%
	\end{beamercolorbox}}%
\vskip0pt%
}

\setbeamertemplate{items}[square]

\logo{\includegraphics[height=0.4cm]{ltsilogo.eps}}

%% adjust line space partially
\newenvironment{narrowlinespace}{
 \baselineskip = 3.0mm
 }

%% add width changeable block definition
\newenvironment<>{varblock}[2][\textwidth]{
    \begin{center}
      \begin{minipage}{#1}
        \setlength{\textwidth}{#1}
          \begin{actionenv}#3
            \def\insertblocktitle{#2}
            \par
            \usebeamertemplate{block begin}}
  {\par
      \usebeamertemplate{block end}
    \end{actionenv}
  \end{minipage}
\end{center}}

%% add variable width hline
\newcommand{\bhline}[1]{\noalign{\hrule height #1}}  

\title{Yet another long-term stable kernel}
\subtitle{introduction of Linux Foundation project named "LTSI"}
\author[Hisao Munakata]{Hisao Munakata}
\institute[Renesas]{Renesas Solutions Corp.}
\date[2012-6-9 LinuxCon Japan]{June 7th 2012, LinuxCon Japan}

\begin{document}

\begin{frame}
 \titlepage{}
\end{frame}

\begin{frame}
 \frametitle{Agenda}
 \tableofcontents{}
\end{frame}

\begin{frame}
 \frametitle{who am I}
  \begin{itemize}
	  \item From embedded SoC provider company Renesas
	  \item Linux Foundation CE working Gr. Steering committee member\\LF/CEWG Architecture Gr. co-chair
	  \item One of LF/CEWG LTSI project initial proposer
	  \item LinuxCon Japan (and others) steering committee
	  \item At my company, I had been encouraging my team developers to send patch to the upstream
	  \item \textcolor{red}{We have sent hundreds of patch to the LTSI 3.0}
  \end{itemize}
\end{frame}

\section{Why we have initiated LTSI project}
\subsection{community long-term maintenance}

\begin{frame}
 \frametitle{Question : How did you choose your kernel version ?}
 {\large
 \begin{block}{}
 \begin{enumerate}
	 \item No care : part of distribution\footnote{i.e. Debian/Ubuntu/Fedora/\ldots}
	 \item No care : part of application platform\footnote{i.e. Android/Tizen/Genivi/\ldots}
	 \vspace{0.2cm}
	 \ \hrule width 4cm
 	 \vspace{0.2cm}
	 \item No option : development started with SoC vendor's BSP
	 \vspace{0.2cm}
	 \ \hrule width 4cm
 	 \vspace{0.2cm}
	 \item Selected : selected previously adopted kernel
	 \item Selected : selected today's latest fresh kernel\footnote{This is always our preference anyway}
 \end{enumerate}
 \end{block}}
\end{frame}
	
\begin{frame}
	\frametitle{Vintage \textcolor{yellow}{kernel} is not always matured as it \textcolor{yellow}{is not a wine}}
	\begin{alertblock}{\ Software lifetime}
		\ Software will die when its maintenance becomes discontinued
	\end{alertblock}
	\begin{itemize}
	 \item modern system software works as a part of connected world.
         \item application program and data changes (expands) all the time.
	 \item So software need to be maintained throughout its lifetime.\\
     	       ( Bug-fix, security-fix patch must be collected and applied.)
	\end{itemize}
	\begin{narrowlinespace}
		Some people want to stick on old kernel (like 2.6 series so far),
		as they think it is enough stabilized. However \textcolor{red}{code
		maturity is fully depends on how actively that version is kept maintained.
		In other word, how many patch flow happening against that kernel.}
	\end{narrowlinespace}
\end{frame}

\begin{frame}
 \frametitle{Upstream kernel maintenance expiration date}
 \narrowlinespace{
 Maintenance period = accept bug-fix and/or security-fix patches.\\
 Once expired, community will discontinue such patch collection activity. 
 If you want to keep it maintained after expiration, you need to invest someone to
 continue work on maintenance operation.} \\

 \begin{block}{}  
   \begin{tabbing}
     XX\=XXXXX\=XXXXX\= 01234567890 \kill
     \>\textcolor{red}{regular}\>\textcolor{red}{kernel} \>\textcolor{red}{= roughly 80 days} after its release\\ 
     \>LTS\footnote{long term stable version kernel} \>kernel \>= normally a few year length
   \end{tabbing} 
 \end{block}
 \narrowlinespace{
 \textcolor{red}{\\ Selecting LTS version kernel should be the best practice to minimize long-term kernel maintenance cost.}}
\end{frame}

\begin{frame}
 \frametitle{Community maintenance : stable and long-term stable}
 \begin{figure}[tb] 
  	\vspace{-1.0cm}
	 \begin{center}
		 \includegraphics[clip, angle=270, width=10.5cm]{ltsplan.eps}
	 \end{center}
 \end{figure} 
\end{frame}

\begin{frame} 
	\frametitle{LTS version selection criteria}
 \vspace{-1.0cm}
 \begin{varblock}[11cm]{LTS selection rules}
 \begin{itemize}
  \item Bug-fix/security-fix patches must be provided to the enterprise server system for 5 years (or longer). 
  \item Then Linux distro requested community to continue patch collection for specific version kernel.
  \item LTS version = 2.6.16 / 2.6.27 / 2.6.32 / 2.6.34 / 2.6.35\ldots
 \end{itemize}  
  \begin{varblock}[10cm]{New stable-kernel rule proposed by Greg Kroah-Hartman}
  \vspace{0.3cm}
  \begin{itemize}
   \item CE industry demand for LTS is different time-line
   \item \textcolor{red}{select one version per year for LTS maintenance target}
   \item \textcolor{red}{keep it maintained for 2 year length after its release}
  \end{itemize}
  \end{varblock}
 \end{varblock}
\end{frame}

\subsection{why we needed LTSI}

\begin{frame}
 \frametitle{OK, LTS seems a good choice, but...}
 \begin{narrowlinespace}
	 Development speed of consumer product is relatively faster than
	 other industry like enterprise, automotive world. This might
	 cause delay of mainline kernel support catch up even such proposals
	 are already submitted in upstream community.\\
 \end{narrowlinespace}
 \begin{alertblock}{\ timing gap challenge for early adoption}
  \begin{itemize}
	  \item <+-| alert@+> Newly mainlined platform/SoC support is not available on LTS
	  \item <+-| alert@+> Newly mainlined device drivers are still missing on LTS
	  \item <+-| alert@+> Newly mainlined kernel features are still not available on LTS
	  \item <+-| alert@+> LTS kernel might not include device errata fix local patch
   \end{itemize}
  \end{alertblock}
  \vspace{0.3cm}
  \begin{narrowlinespace}
	  Then, we envisioned to create LTSI to solve these embedded industry issues
	  as an extension of community LTS release.
  \end{narrowlinespace}
\end{frame}

\begin{frame}
 \frametitle{LTS vs LTSI : What differs ?}
 \begin{alertblock}{LF/CEWG LTSI kernel}
	 \begin{itemize}
	 	 \item <+-| alert@+> \textcolor{red}{\textbf {kernel features back-port form latest mainline}}
	 	 \item <+-| alert@+> \textcolor{red}{\textbf {device drivers back-port from latest mainline}}
		 \item <+-| alert@+> \textcolor{red}{\textbf {local patch (=not yet mainlined) integration}}
	 \end{itemize}
	 \vspace{-0.5cm}
	 \begin{varblock}[10cm]{community LTS kernel (is designed to be conservative)}
		 \begin{itemize}
			 \item only accept bug-fix back-port
			 \item only accept security-fix back-port
		 \end{itemize}
	 \vspace{-0.5cm}
	 \begin{varblock}[9cm]{upstream kernel}
		 \begin{itemize}
			 \item regularly migrated community kernel
		 \end{itemize}
	 \end{varblock}
 	\end{varblock}
 \end{alertblock}
\end{frame}

\begin{frame}
 \frametitle{Concept of LTSI}
 \begin{block}{}
 \begin{itemize}
	 \item Community \textcolor{red}{LTS + industry demanded} extra patches.
	 \item \textcolor{red}{Governed by LF/CEWG}
	 \item \textcolor{red}{Focus on kernel} code\footnote{device drivers are part of kernel, of course}, not aiming complete BSP
	 \item \textcolor{red}{CPU architecture and platform neutral}
	 \item Can be combined with existing platform\footnote{Android, Tizen, Yocto, WebOS and others}
	 \item \textcolor{red}{Comply with upstream} rules\footnote{e.g. signed-off-by process}
	 \item Industry friendly patch collection (\textcolor{red}{flexible patch forms}, etc)
	 \item Help CE (and others) industry to utilize Linux
 \end{itemize}
 \end{block} 
\end{frame}

\begin{frame}
 \frametitle{Who can do what for LTSI}
 \vspace{-0.9cm}
 \begin{table}[htbp]
 \begin{center}
 \small
 \begin{tabular}{lcccc}\bhline{1.5pt}
          	&  \multicolumn{4}{c}{membership category} \\ \cline{2-5} \\[-5pt]
		action			& \shortstack{CEWG\\AG voting} & \shortstack{CEWG\\Corporate} & \shortstack{CEWG\\Individual} & \shortstack{Other\\(public)} \\ \bhline{1.0pt}
	    	project web access	& yes  & yes  & yes & yes  \\ \hline
	    	code download		& yes  & yes  & yes & yes  \\ \hline
	    	ML subscription		& yes  & yes  & yes & yes  \\ \hline
		\textcolor{blue}{attend ICM\footnote{industry contact meeting} meeting}	& \textcolor{blue}{yes}  & \textcolor{blue}{yes}  &     &      \\ \hline
	    	send patch proposal 	& yes  & yes  & yes & yes  \\ \hline
	    	review patch by ML 	& yes  & yes  & yes & yes  \\ \hline
	    	discuss patch at meeting 	& yes  & yes  & yes &      \\ \hline
	    	vote for patch (if needed)		& yes  &      &     &      \\ \hline
 \end{tabular}
 \end{center}
 \end{table}
 \vspace{-0.2cm}
 \begin{narrowlinespace}
	 If you plan to adopt LTSI to your product, \textcolor{red}{we recommend you
	 to join Linux Foundation and become a CEWG/AG member \\to get full advantage of LTSI project.}
 \end{narrowlinespace}
\end{frame}
  
\section{LTSI creation process}
\subsection{patch collection}

\begin{frame}
\frametitle{Which code can be integrated to LTSI and how (1)}
\begin{exampleblock}{from upstream}
	\begin{itemize}
		\item newly adopted LTS bug-fix, security-fix \hfill(automatic)
		\item newly mainlined new kernel feature \hfill(request basis)
		\item newly mainlined new kernel driver \hfill(request basis)
		\item newly queued (to -rc version) code \hfill(request basis)
	\end{itemize}
\end{exampleblock}
\begin{block}{from SoC vendor}
	\begin{itemize}
		\item curved up from SoC vendor kernel tree \hfill(request basis)
		\item submitted to upstream but still in review \hfill(request basis)
		\item not mainlined chip workaround code \hfill(request basis)
	\end{itemize}
\end{block}
\end{frame}

\begin{frame}
\frametitle{Which code can be integrated to LTSI and how (2)}
\begin{block}{from product producer, distribution}
	\begin{itemize}
		\item in-house bug-fix patch \hfill(request basis)
		\item private enhancement \hfill(request basis)
			\begin{itemize}
				\item \textcolor{red}{may require strict compatibility review}
			\end{itemize}
	\end{itemize}
\end{block}
\begin{block}{Others}
	\begin{itemize}
		\item not mainlined open-source project code \hfill(request basis)
			\begin{itemize}
				\item ideally mainline attempt history already exist.
				\item LTSI project will help re-attempt action.
			\end{itemize}
		\item LF/CEWG funded open project result \hfill(request basis)
	\end{itemize}
\end{block}
\end{frame}

\begin{frame}
 \frametitle{LTSI patch collection process}
  \begin{figure}[tb]
  	\vspace{-1.0cm}
	 \begin{center}
		 \includegraphics[clip, angle=270, width=11.0cm]{collection.eps}
	 \end{center}
 \end{figure}
\end{frame}

\begin{frame}
 \frametitle{LTSI maintenance process}
  \begin{figure}[tb] 
  	\vspace{-1.0cm}
	 \begin{center}
		 \includegraphics[clip, angle=270, width=11.0cm]{adoption.eps}
	 \end{center}
 \end{figure}  
\end{frame}

\subsection{validation and maintenance}
\begin{frame}
 \frametitle{LTSI staging process}
 \begin{narrowlinespace}
	 Once patch collection window is closed, LTSI project will provide \textcolor{red}{integrated snapshot for test} that includes all approved patches.
 \end{narrowlinespace}
 \begin{block}{During LTSI-staging period}
  \begin{itemize}
	  \item Anyone who send a patch should test your code.
	  \item \textcolor{red}{SoC vendor and distribution are expected to validate this snapshot}
		  using own reference development environment.
		  \begin{itemize}
			  \item LTSI is CPU/platform neutral. You can use your environment.
			  \item You can publish test result like \textcolor{blue}{\it ``LTSI tested''} 
				  or \textcolor{blue}{\it ``LTSI ready''}
			  \item When you send a feedback, please clarify your environment\\
				  (kernel config, test target spec ,reproduce procedure,..)
		  \end{itemize}
	  \item If you hit any issues (bug, regression,..) please report it to ML.\\
		  ( We did not have dedicated BTS system like Bugzilla so far. )
  \end{itemize}
 \end{block}
\end{frame}
 
\section{Why we suggest you to use LTSI} 
\subsection{value offering}

\begin{frame}
 \frametitle{Resolve SoC mainline support timing gap issue}
 \begin{block}{SoC mainline support timing gap issue}
	 Consumer product developer never (or, can not) wait until new SoC/Platform support code becomes part of mainline kernel.
 \end{block}
  \begin{itemize}
 	  \item SoC companies are requested to deliver Linux
		BSP right after (within 0-3 month !) device sample release.
 	  \item Therefore SoC vendor needs to prioritize local
		in-house BSP development other than upstream patch submission.
 	  \item As a result, bunch of local in-house tree exit 
		those hardly integrate to upstream, as its code manner is too unique. 
  \end{itemize}
  \textcolor{red}{LTSI can accept newly developed SoC support code to eliminate industry fragmentation (is in-house vendor tree).}
\end{frame}

\begin{frame}
	\frametitle{\ [ Example ] R-mobileA1 {\it``Armaddilo''} platform support}
\begin{exampleblock}{We added new ARM platform support to LTSI 3.0}
	\begin{itemize}
		\item Kernel 3.0 development completed July 2011
		\item Our new platform became ready in March 2012
		\item And We were requested to support kernel 3.0 with it
  		\item Initially we submitted platform support patch to upstream\footnote{We followed ``upstream first'' strategy as usual}
  		\item Once merged (or queued), then we wrote 3.4-rc to 3.0 backport patch set to add support in LTSI 3.0
  		\item \textcolor{red}{Finally {\it``Armadillo''} will be supported in both LTSI 3.0 and today's latest (and later) kernel}
	\end{itemize}
\end{exampleblock}
\end{frame}

\begin{frame}
 \frametitle{LTSI can maximize your code reusability}
 \begin{block}{Primarily KPI of software productivity is code reuse ratio}
	 Linux kernel is originally designed to fit with various target with single configurable source. 
 \end{block}
  \begin{itemize}
	  \item Apply collect abstraction (do not write immediate address)
 	  \item Follow the Linux standard framework (clock, DMA, GPIO,..) Otherwise your original framework will be overwritten.
	  \item Isolate platform specific and generic code
  \end{itemize}
  \textcolor{red}{LTSI project will help you to write community compatible reusable kernel code}
\end{frame}

\section{Status Update}
\subsection{LTSI 3.0 status as of May/31}

\begin{frame}
	\frametitle{LTSI milestone}
	\begin{block}{}
	\begin{description}
		\item[2011.10.25] \ \textcolor{blue}{1st partner meeting@ELCE2011}
		\item[2011.10.26] \ \textcolor{red}{project launch @ELCE2011}
		\item[2012.02.01] \ \textcolor{red}{Greg Kroah-Hartman becomes LTSI chief maintainer}
		\item[2012.02.14] \ \textcolor{blue}{2nd partner meeting@ELC2012}
		\item[2012.02.16] \ 3.0 staging-tree open
		\item[2012.02.17] \ project web page launched
		\item[2012.04.17] \ Japan workshop@Yokohama
		\item[2012.05.30] \ LTSI 3.0 merge window close
		\item[2012.06.08] \ \textcolor{blue}{1st Industry Contact Meeting [ICM]@Yokohama}
		\item[2012.06.30] \ \textcolor{red}{LTSI 3.0 code release}
		\item[2012.08.29] \ \textcolor{blue}{2rd ICM @San Diego (planing)}
	\end{description}
	\end{block}
\end{frame}

\begin{frame}[fragile]
	\frametitle{LTSI ML posting status {\small \ (as of end of May)}}
 \begin{figure}[tb]
	 \begin{center}
		 \includegraphics[clip, width=8.5cm]{graph1.eps}
		 \caption{LTSI public\_ML activity}
	 \end{center}
  \end{figure}
\end{frame}

\begin{frame}[fragile]
	\frametitle{Current LTSI tree status {\small \ (as of end of May)}}
{\tiny
\begin{verbatim}
2012-05-17 23:35 Greg Kroah-Hartman o [master] [origin/HEAD][origin/master] fix up pramfs patch
2012-05-15 15:27 Greg Kroah-Hartman o pramfs patches added
2012-05-14 16:43 Greg Kroah-Hartman o update to 3.0.31
2012-05-14 16:38 Greg Kroah-Hartman o runtime pm patches added
2012-04-26 10:38 Greg Kroah-Hartman o Add armadillo800eva patches to the build
2012-04-25 17:38 Greg Kroah-Hartman o Update to latest version of LTTNG (v2.0.1)
2012-04-25 17:36 Greg Kroah-Hartman o Revert ``remove old version of LTTNG''
2012-04-25 17:35 Greg Kroah-Hartman o remove old version of LTTNG
2012-04-25 17:34 Greg Kroah-Hartman o update to 3.0.29
2012-02-15 15:33 Greg Kroah-Hartman o README: put proper ltsi-dev mailing list information in the file
2012-02-14 22:03 Greg Kroah-Hartman o initial scripts/generate_* script additions
2012-02-14 21:53 Greg Kroah-Hartman o create patches.ltsi for the ltsi project specific patches
2012-02-14 21:53 Greg Kroah-Hartman o README: added lots of info
2012-02-14 21:50 Greg Kroah-Hartman o KERNEL_VERSION added
2012-02-13 11:03 Greg Kroah-Hartman o add forgotten lttng patch
2012-02-12 23:23 Greg Kroah-Hartman o add android to the build
2012-02-12 23:19 Greg Kroah-Hartman o LTTng patches added
2012-02-12 23:11 Greg Kroah-Hartman o android patches
2012-02-12 23:11 Greg Kroah-Hartman o Add patch for -ltsi in kernel version
2012-02-12 23:10 Greg Kroah-Hartman o Added a script to generate android patches from mainline.
2012-02-12 22:56 Greg Kroah-Hartman I Added series and README file to start the repo off.

[main] 264a08866119c2dd919620eff67686ef59f7ace1 - commit 1 of 21 (100%)
\end{verbatim}
}
\end{frame}

\begin{frame}
	\frametitle{Current LTSI component {\small \ (as of end of May)}}
	\begin{block}{Extra stuff added on top of community 3.0-LTS}
	\begin{itemize}
		\item  {\Large patches.android}
		\item  {\Large patches.armadillo800eva}
		\item  {\Large patches.ltsi}
		\item  {\Large patches.lttng}
		\item  {\Large patches.pramfs}
		\item  {\Large patches.runtime\_pm}
		\item  {\Large scripts}
		\item  {\Large \textcolor{blue}{Some others will be merged}}
	\end{itemize}
	\end{block}
\end{frame}

\begin{frame}
 \frametitle{LTSI 3.0 release schedule}
 \begin{figure}[tb] 
  	\vspace{-1.0cm}
	 \begin{center}
		 \includegraphics[clip, angle=270, width=11.0cm]{first.eps}
	 \end{center}
 \end{figure}
\end{frame}

\subsection{next step}

\subsection{resources}

\begin{frame}[fragile]
\frametitle{LTSI resources}
	\begin{block}{source tree (git)}
		{\small
		\begin{itemize}
			\item release tree = will open at the end of June
			\item staging tree \\ {\tt \verb|http://git.linuxfoundation.org/ltsi-kernel.git|}
			\item upstreaming staging tree = will open soon
		\end{itemize}
		}
	\end{block}
	\begin{block}{communication method}
		{\small
		\begin{itemize}
			\item project web = {\tt \verb|http://ltsi.linuxfoundation.org/|}
			\item mailing list \\ {\tt \verb|http://lists.linuxfoundation.org/pipermail/ltsi-dev/|}
			\item social media = {\tt \verb|http://twitter.com/#!/LinuxLTSI|}
		\end{itemize}
		}
	\end{block}
\end{frame}

\begin{frame}
 \frametitle{LTSI code repository}
 \begin{figure}[tb]
  	\vspace{-1.0cm}
	 \begin{center}
		 \includegraphics[clip, angle=270, width=9.0cm]{tree2.eps}
	 \end{center}
 \end{figure} 
\end{frame}

\subsection{conclusion \& call for action}

\begin{frame}
\frametitle{Conclusion}
	\begin{block}{}
		{\small
		\begin{itemize}
			\item LF/CEWG \textcolor{red}{launched LTSI project} to develop and distribute specially
				enhanced LTS kernel named LTSI for Embedded industry use. It contains some feature
				backport from current latest kernel, off-tree kernel patches owned by SoC
				vendor/product developer and others.
			\vspace{0.2cm}
			\item We believe \textcolor{red}{LTSI can dramatically reduce your own effort (=cost)} 
				for in-house kernel management. Also we hope LTSI can encourage CE company
				developer to send more code to upstream.
			\vspace{0.2cm} 
			\item Very first \textcolor{red}{LTSI release 3.0  will be released at the end of June
				2012.} LTSI3.0 will be maintained (at least) until 2013 June timing.
			\vspace{0.2cm} 
			\item \textcolor{red}{SCOOP!! Community maintainer decided 3.4 is the
				next LTS.}\\ Following this decision we will start preparation for
				\textcolor{red}{next LTSI 3.4 staging process } sometime soon.
		\end{itemize}
		}
	\end{block}
\end{frame}

\begin{frame}
	\frametitle{Call for action for \ \textcolor{yellow}{LTSI3.0 (now)}\ \&\ \textcolor{yellow}{LTSI3.4 (next)}} 
	\begin{block}{For SoC vendor, CPU core provider}
		\begin{itemize}
			\item \textcolor{red}{Send your not-yet-mainlined (AKA vendor tree) code} to LTSI
			\item \textcolor{red}{Test LTSI} kernel on your environment and
				\textcolor{red}{feedback test result}
			\item If any software workaround exist, please share that with us.
		\end{itemize}
	\end{block}
	\begin{block}{For product producer}
		\begin{itemize}
			\item \textcolor{red}{Adopt LTSI kernel} to reduce your in-house maintenance cost
			\item If you have \textcolor{red}{not-yet-mainlined bug-fix}, send it to LTSI
		\end{itemize}
	\end{block}
	\begin{block}{For software distributor, integrator}
		\begin{itemize}
			\item \textcolor{red}{Adopt and support LTSI} as your base kernel.
			\item Send us your \textcolor{red}{feedback to improve LTSI} and future upstream
		\end{itemize}
	\end{block}
\end{frame}
    
\end{document}
