%%
%% This is file `lastpage.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% lastpage.dtx  (with options: `package')
%% 
%% This is a generated file.
%% 
%% Project: lastpage
%% Version: 2015/03/29 v1.2m
%% 
%% Copyright (C) 2010 - 2015 by
%%     H.-Martin M"unch <Martin dot Muench at Uni-Bonn dot de>
%% Portions of code copyrighted by other people as marked.
%% 
%% The usual disclaimer applies:
%% If it doesn't work right that's your problem.
%% (Nevertheless, send an e-mail to the maintainer
%%  when you find an error in this package.)
%% 
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either
%% version 1.3c of this license or (at your option) any later
%% version. This version of this license is in
%%    http://www.latex-project.org/lppl/lppl-1-3c.txt
%% and the latest version of this license is in
%%    http://www.latex-project.org/lppl.txt
%% and version 1.3c or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
%% 
%% This work has the LPPL maintenance status "maintained".
%% 
%% The Current Maintainer of this work is H.-Martin Muench.
%% 
%% This package was invented by
%% Jeffrey P. Goldberg (jeffrey+news at goldmark dot org).
%% I thought that a replacement was needed and therefore created the pageslts package,
%% https://www.ctan.org/pkg/pageslts
%% . Nevertheless, for compatibility with existing documents/packages as well as for
%% the low amount of resources needed by the lastpage package (no new counter!),
%% I updated this package.
%% Thanks go to Jeffrey P. Goldberg for allowing me to do this.
%% 
%% This work consists of the main source file lastpage.dtx,
%% the README, and the derived files
%%    lastpage.sty, lastpage.pdf,
%%    lastpage.ins, lastpage.drv,
%%    lastpage-example.tex, lastpage-example.pdf.
%% 
%% In memoriam
%%  Claudia Simone Barth + 1996/01/30
%%  Tommy Muench + 2014/01/02
%%  Hans-Klaus Muench + 2014/08/24
%% 
\NeedsTeXFormat{LaTeX2e}[2014/05/01]
\ProvidesPackage{lastpage}%
  [2015/03/29 v1.2m Refers to last page's name (HMM; JPG)]%

%% lastpage may work with earlier versions of LaTeX,
%% but this was not tested. Please consider updating
%% your LaTeX (and packages) to the most recent version
%% (if it is/they are not already the most recent version).

%% Allows for things like
%% Page \thepage{} of \pageref{LastPage}
%% to get
%% 'Page 7 of 9'.
%% For LaTeX 2.09 use lastpage209.sty.
%% For LaTeX 2e maybe consider upgrading to the pageslts package.
%% lastpage may work with earlier versions of LaTeX2e,
%% but this was not tested. Please consider updating your LaTeX
%% contribution to the most recent version (if it is not already
%% the most recent version).

%% The recent version of the endfloat package is v2.5d as of 2011/12/25.
%% The lastpage package is not fully compatible with version 2.0
%% (and earlier) of the endfloat package, because those versions
%% redefined the \enddocument command.

\def\lastpage@one{1}
\gdef\lastpage@hyper{0}
\gdef\lastpage@nameref{0}
\gdef\lastpage@LTS{0}
\def\lastpage@firstpage{1}

\AtBeginDocument{%
  \@ifpackageloaded{tikz}{\gdef\lastpage@tikz{1}}{}%
  \@ifpackageloaded{hyperref}{\gdef\lastpage@hyper{1}}{}%
  \@ifpackageloaded{nameref}{\gdef\lastpage@nameref{1}}{}%
  \@ifpackageloaded{pageslts}{%
    \PackageWarning{lastpage}{Package pageslts found.\MessageBreak%
      Therefore the lastpage package is no longer\MessageBreak%
      necessary.%
      }%
    \gdef\lastpage@LTS{1}%
   }{\PackageInfo{lastpage}{%
       Please have a look at the pageslts package at\MessageBreak%
       https://www.ctan.org/pkg/pageslts\MessageBreak%
       !}%
   }%
  \@ifpackageloaded{pagesLTS}{%
    \PackageWarning{lastpage}{%
      Outdated pagesLTS package found.\MessageBreak%
      Please replace by a recent version of\MessageBreak%
      pageslts package, see e.g. at\MessageBreak%
      https://www.ctan.org/pkg/pageslts\MessageBreak%
      !\MessageBreak%
      With pagesLTS as well as pageslts package\MessageBreak%
      the lastpage package is no longer necessary.\MessageBreak%
     }%
    \gdef\lastpage@LTS{1}%
   }{}%
  \gdef\lastpage@putlabel{\relax}%
  }

\newcommand{\lastpage@putl@bel}{%
  \@ifundefined{Hy@Warning}{%  hyperref not loaded
    }{\gdef\lastpage@hyper{1}% hyperref loaded
     }%
  \ifx\lastpage@LTS\lastpage@one%
  \else%
    \ifx\lastpage@hyper\lastpage@one%
      \lastpage@putlabelhyper%
    \else%
      \ifx\lastpage@nameref\lastpage@one%
        \lastpage@putlabelNR%
      \else%
        \begingroup%
          \addtocounter{page}{-1}%
          \immediate\write\@auxout{\string\newlabel{LastPage}{{}{\thepage}}}%
          \immediate\write\@auxout{\string\xdef\string\lastpage@lastpage{\thepage}}%
          \immediate\write\@auxout{\string\gdef\string\lastpage@lastpageHy{}}%
          \addtocounter{page}{+1}%
        \endgroup%
      \fi%
    \fi%
  \fi%
  }

\newcommand{\lastpage@putlabelhyper}{%
  \ifHy@pageanchor%
  \else%
    \PackageError{lastpage}{hyperref option pageanchor disabled}{%
      The \string\pageref{LastPage} link doesn't work\MessageBreak%
      using hyperref with disabled option `pageanchor'.\MessageBreak%
    }%
  \fi%
  \begingroup%
    \addtocounter{page}{-1}%
%% The following code is from the hyperref package          %%
%% [2010/04/17 v6.80x; newer versions are available]        %%
%% by Heiko Oberdiek (Big Thanks!).                         %%
    \let\@number\@firstofone
    \ifHy@pageanchor
      \ifHy@hypertexnames
        \ifHy@plainpages
          \def\Hy@temp{\arabic{page}}%
        \else
          \Hy@unicodefalse
%% Code not from hyperref package:                          %%
%% The following lines are taken from the pageslts package, %%
%% which in turn got them from the hyperref package and     %%
%% modified them.                                           %%
%% Without the modification, after the first shipout "PD1"  %%
%% is inserted each time |\pdfstringdef\Hy@temp{\thepage}|  %%
%% is executed.                                             %%
          \ifnum \value{page}=1%
            \ifx \lastpage@firstpage\lastpage@one
              \def\Hy@temp{\thepage}%
              \gdef\lastpage@firstpage{0}%
            \else%
%% Code from hyperref package again:                        %%
                \pdfstringdef\Hy@temp{\thepage}%
%% End of code from the hyperref package.                   %%
          \fi%
%% The pageslts package would even check for fnsymbol page  %%
%% numbering scheme and adapt the code correspondingly.     %%
          \else%
%% Code from hyperref package again:                        %%
            \pdfstringdef\Hy@temp{\thepage}%
%% Code from pageslts package again:                        %%
          \fi%
%% Code from hyperref package again:                        %%
        \fi
      \else
        \def\Hy@temp{\the\Hy@pagecounter}%
      \fi
    \fi
    \immediate\write\@auxout{%
      \string\newlabel
        {LastPage}{{}{\thepage}{}{%
          \ifHy@pageanchor page.\Hy@temp\fi}{}}%
    }%
%% End of code from the hyperref package.                   %%
    \immediate\write\@auxout{%
      \string\xdef\string\lastpage@lastpage{\thepage}}%
    \ifHy@pageanchor%
      \immediate\write\@auxout{%
        \string\xdef\string\lastpage@lastpageHy{\Hy@temp}}%
    \else%
      \immediate\write\@auxout{%
        \string\gdef\string\lastpage@lastpageHy{}}%
    \fi%
    \addtocounter{page}{+1}%
  \endgroup%
  }

\newcommand{\lastpage@putlabelNR}{%
  \begingroup%
    \addtocounter{page}{-1}%
    \immediate\write\@auxout{\string\newlabel{LastPage}{{}{\thepage}{}{}{}}}%
    \immediate\write\@auxout{\string\xdef\string\lastpage@lastpage{\thepage}}%
    \immediate\write\@auxout{\string\gdef\string\lastpage@lastpageHy{}}%
    \addtocounter{page}{+1}%
  \endgroup%
  }

\newcommand{\lastpage@fileswtest}[2]{%
  \edef\lastpage@testa{#1}%
  \edef\lastpage@testb{#2}%
  \ifx\lastpage@testa\lastpage@testb% OK
  \else%
    \ifx\lastpage@tikz\lastpage@one%
      \PackageWarning{lastpage}%
       {The lastpage package was not allowed to write to an\MessageBreak%
        .aux file. This package does not work without access\MessageBreak%
        to an .aux file.\MessageBreak%
        It is OK if the .aux file was already updated\MessageBreak%
        by a previouse compiler run\MessageBreak%
        and would not have changed anyway.\MessageBreak%
       }%
    \else%
      \PackageError{lastpage}{No auxiliary file allowed}%
       {The lastpage package was not allowed to write to an .aux file.\MessageBreak%
        This package does not work without access to an .aux file.\MessageBreak%
        Press Ctrl+Z to exit.\MessageBreak%
       }%
    \fi%
  \fi%
  }
\newcommand{\lastpage@fileswtestHy}{%
  \ifHy@pageanchor%
    \lastpage@fileswtest{\Hy@temp}{\lastpage@lastpageHy}%
  \else%
    \lastpage@fileswtest{\empty}{\lastpage@lastpageHy}%
  \fi%
  }

\AtEndDocument{%
  \gdef\lastpage@putlabel{\relax}%
  \ifx\lastpage@LTS\lastpage@one%
  \else%
    \@ifundefined{lastpage@lastpage}%
     {\gdef\lastpage@lastpage{LastpagePackageError}%
     % If there really is a page numbered (!) "LastpagePackageError",
     % you will get the rerun warning whether it is necessary or not.
      \PackageWarning{lastpage}{Rerun to get the references right}%
     }{% already defined, nothing to be done.
     }%
    \@ifundefined{lastpage@lastpageHy}%
     {\gdef\lastpage@lastpageHy{LastpagePackageError}%
     }{% already defined, nothing to be done.
     }%
  \fi%
  \if@filesw%
    \message{^^JAED: lastpage setting LastPage^^J}%
    \clearpage\lastpage@putl@bel%
  \else%
    \ifx\lastpage@LTS\lastpage@one%
    \else%
      \lastpage@fileswtest{\thepage}{\lastpage@lastpage}%
      \ifx\lastpage@hyper\lastpage@one%
        \lastpage@fileswtestHy%
      \fi%
    \fi%
  \fi%
  }

\endinput
%%
%% End of file `lastpage.sty'.