%%
%% This is file `attachfile2.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% attachfile2.dtx  (with options: `package')
%% 
%% This is a generated file.
%% 
%% Project: attachfile2
%% Version: 2024-01-18 v2.12
%% 
%% Copyright (C)
%%    2005-2010, 2012  Heiko Oberdiek
%%    2016-2019  Oberdiek Package Support Group
%% 
%% 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
%%    https://www.latex-project.org/lppl/lppl-1-3c.txt
%% and the latest version of this license is in
%%    https://www.latex-project.org/lppl.txt
%% and version 1.3 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 Maintainers of this work are
%% Heiko Oberdiek and the Oberdiek Package Support Group
%% https://github.com/ho-tex/attachfile2/issues
%% 
%% 
%% This work consists of the main source file attachfile2.dtx
%% and the derived files
%%    attachfile2.sty, attachfile2.pdf,
%%    atfi-dvips.def, atfi-pdftex.def, atfi-dvipdfmx.def, atfi-luatex.def
%%    pdfatfi.pl, pdfatfi.1.
%% 
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{attachfile2}%
  [2024-01-18 v2.12 Attach files into PDF (HO)]%
\RequirePackage{iftex}[2019/11/07]
\RequirePackage{keyval}
\RequirePackage{color}
\RequirePackage{infwarerr}[2010/04/08]
\RequirePackage{ltxcmds}[2010/04/26]
\RequirePackage{kvoptions}[2009/07/21]
\RequirePackage{pdftexcmds}[2010/04/01]
\RequirePackage{pdfescape}[2007/11/11]
\RequirePackage{hyperref}
\RequirePackage{hycolor}[2008/07/29]
\ltx@IfUndefined{pdfmatch}{%
  \def\atfi@Match#1#2#3#4#5{}%
}{%
  \def\atfi@Match#1#2#3{%
    \begingroup
    \edef\^{\ltx@backslashchar\string^}%
    \edef\.{\ltx@backslashchar.}%
    \let\#\ltx@hashchar
    \edef\[{\ltx@backslashchar[}% ]]
    \edef\${\ltx@backslashchar$}%
    \let\%\ltx@percentchar
    \edef\&{\string&}%
    \edef\({\ltx@backslashchar(}%
    \edef\){\ltx@backslashchar)}%
    \edef\|{\ltx@backslashchar|}%
    \edef\*{\ltx@backslashchar*}%
    \edef\+{\ltx@backslashchar+}%
    \edef\?{\ltx@backslashchar?}%
    \edef\{{\ltx@backslashchar\ltx@leftbracechar}%
    \edef\}{\ltx@rightbracechar}%
    \edef\\{\ltx@backslashchar\ltx@backslashchar}%
    \edef\~{\string~}%
    \ifcase\pdfmatch#3{#2}{#1} %
      \endgroup
      \expandafter\ltx@secondoftwo
    \or
      \endgroup
      \expandafter\ltx@firstoftwo
    \else
      \atfi@Warning{%
        Internal error: Wrong pattern!\MessageBreak
        --> #2 <--\MessageBreak
        Pattern check ignored%
      }%
      \endgroup
      \expandafter\ltx@firstoftwo
    \fi
  }%
  \def\atfi@PatToken{%
    [%
      -% first character
      !%
      \#$\%\&'%
      \*\+\.%
      0-9%
      A-Z%
      \^_`%
      a-z%
      \{\}\|\~%
    ]+%
  }%
  \begingroup
    \lccode64=13 % @
  \lowercase{\endgroup
    \def\atfi@CR{@}%
  }%
  \def\atfi@PatQuotedString{%
    "%
    ([^"\\\atfi@CR]|\\.)*%
    "%
  }%
  \ltx@ifpackagelater{ltxcmds}{2010/09/11}{}{%
    \begingroup
      \lccode`0=`\{\relax
    \lowercase{\endgroup
      \def\ltx@leftbracechar{0}%
    }%
    \begingroup
      \lccode`0=`\}\relax
    \lowercase{\endgroup
      \def\ltx@rightbracechar{0}%
    }%
  }%
}
\def\atfi@Warning{\PackageWarning{attachfile2}}
\SetupKeyvalOptions{%
  family=AtFi,%
  prefix=atfi@%
}
\def\atfi@setup{\setkeys{AtFi}}
\DeclareBoolOption{draft}
\DeclareComplementaryOption{final}{draft}
\def\atfi@mimetype{}
\define@key{AtFi}{mimetype}{%
  \edef\atfi@mimetype{#1}%
  \ifx\atfi@mimetype\ltx@empty
  \else
    \atfi@Match\atfi@mimetype{%
      ^(application|audio|image|model|text|video|x-\atfi@PatToken)%
      /%
      ([a-z\-\+_\.0-9]+)%
      (; ?\atfi@PatToken=(\atfi@PatToken|\atfi@PatQuotedString))*$%
    }{icase}{}{%
      \atfi@Warning{%
        Invalid value `\atfi@mimetype'\MessageBreak
        of option `mimetype'.\MessageBreak
        Value is discarded%
      }%
      \let\atfi@mimetype\ltx@empty
    }%
  \fi
  \ifx\atfi@mimetype\ltx@empty
  \else
    \EdefEscapeName\atfi@mimetype{\atfi@mimetype}%
    \edef\atfi@mimetype{/Subtype/\atfi@mimetype}%
  \fi
}
\define@key{AtFi}{icon}{%
  \def\atfi@icon{/Name/#1}%
  \def\atfi@icon@icon{#1}%
}
\atfi@setup{icon=PushPin}
\define@key{AtFi}{color}{%
  \HyColor@AttachfileColor{#1}%
          \atfi@color@tex\atfi@color@inline\atfi@color@annot
          {attachfile2}{color}%
}
\atfi@setup{color=1 0.9255 0.7765}
\def\atfi@pad@ii#1{%
  \ifnum#1>9 %
    \number#1%
  \else
    0\number#1%
  \fi%
}
\let\atfi@timezone\ltx@empty
\define@key{AtFi}{timezone}{\def\atfi@timezone{#1}}
\edef\atfi@time{\the\time}
\def\atfi@hours{%
  \numexpr\dimexpr0.01667\dimexpr\atfi@time sp\relax\relax\relax
}
\def\atfi@minutes{%
  \numexpr\atfi@time-60*\atfi@hours\relax
}
\def\atfi@seconds{0}
\def\atfi@date{%
  /M(D:\the\year
      \atfi@pad@ii\month
      \atfi@pad@ii\day
      \atfi@pad@ii\atfi@hours
      \atfi@pad@ii\atfi@minutes
      \atfi@pad@ii\atfi@seconds
      \atfi@timezone)%
}
\define@key{AtFi}{date}{%
  \EdefEscapeString\atfi@date{#1}%
  \edef\atfi@date{/M(\atfi@date)}%
}
\DeclareRobustCommand{\atfi@pdfstringdef}[2]{%
  \pdfstringdef\atfi@temp@string{#2}%
  \edef#1{\atfi@temp@string}%
}
\def\atfi@NoValue{\NoValue}
\def\atfi@DefNoValueName#1#2#3{%
  \def#1{#3}%
  \ifx#1\atfi@NoValue
    \let#1\ltx@empty
  \else
    \atfi@pdfstringdef#1{#1}%
    \edef#1{/#2(#1)}%
  \fi
}
\let\atfi@annotname\ltx@empty
\define@key{AtFi}{annotname}[\NoValue]{%
  \atfi@DefNoValueName\atfi@annotname{NM}{#1}%
}
\def\atfi@author{}
\define@key{AtFi}{author}[\NoValue]{%
  \atfi@DefNoValueName\atfi@author{T}{#1}%
}
\def\atfi@description{}
\define@key{AtFi}{description}[\NoValue]{%
  \atfi@DefNoValueName\atfi@description{Contents}{#1}%
}
\def\atfi@subject{}
\define@key{AtFi}{subject}[\NoValue]{%
  \atfi@DefNoValueName\atfi@subject{Subj}{#1}%
}
\DeclareBoolOption[true]{print}
\DeclareBoolOption[true]{zoom}
\DeclareBoolOption[true]{locked}
\DeclareBoolOption[true]{appearance}
\DeclareStringOption[1]{scale}
\def\atfi@ucfilespec{}
\define@key{AtFi}{ucfilespec}[1]{%
  \def\atfi@ucfilespec{#1}%
  \ifx\atfi@ucfilespec\ltx@empty
  \else
    \atfi@pdfstringdef\atfi@ucfilespec{#1}%
  \fi
}
\DeclareBoolOption{nofiles}
\let\atfi@driver\ltx@empty
\def\atfi@driver@pdftex{pdftex}
\def\atfi@driver@luatex{luatex}
\def\atfi@driver@dvips{dvips}
\def\atfi@driver@dvipdfmx{dvipdfmx}
\DeclareVoidOption{pdftex}{%
 \ifpdf
  \let\atfi@driver\atfi@driver@pdftex
 \else
   \let\atfi@driver\ltx@empty
    \PackageError{attachfile2}{%
      Wrong driver option `pdftex',\MessageBreak
      because pdfTeX in PDF mode is not detected%
    }\@ehc
 \fi
}
\DeclareVoidOption{luatex}{%
  \let\atfi@driver\atfi@driver@luatex
}
\DeclareVoidOption{dvips}{%
  \let\atfi@driver\atfi@driver@dvips
}
\DeclareVoidOption{dvipdfmx}{%
  \let\atfi@driver\atfi@driver@dvipdfmx
}
\DeclareVoidOption{xetex}{%
  \let\atfi@driver\atfi@driver@dvipdfmx
}
\DeclareStringOption{driverfallback}
\DeclareRobustCommand{\attachfilesetup}[1]{\setkeys{AtFi}{#1}}
\DeclareLocalOptions{%
  annotname,%
  appearance,%
  author,%
  color,%
  date,%
  description,%
  icon,%
  mimetype,%
  nofiles,%
  print,%
  scale,%
  subject,%
  timezone,%
  ucfilespec,%
  zoom,%
  locked,%
}
\InputIfFileExists{attachfile.cfg}{}{}
\ProcessKeyvalOptions*
\def\atfi@DisableOption{%
  \DisableKeyvalOption[action=error,package=attachfile2]{AtFi}%
}
\ifpdf
 \ifluatex
  \let\atfi@driver\atfi@driver@luatex
 \else
  \let\atfi@driver\atfi@driver@pdftex
 \fi
\else
 \ifxetex
    \let\atfi@driver\atfi@driver@dvipdfmx
  \else
    \ifx\atfi@driver\ltx@empty
      \ifx\atfi@driverfallback\ltx@empty
      \else
        \expandafter\let\expandafter\atfi@driver
            \csname atfi@driver@\atfi@driverfallback\endcsname
        \ifx\atfi@driver\atfi@driver@dvips
        \else
          \ifx\atfi@driver\atfi@driver@dvipdfmx
          \else
             \let\atfi@driver\ltx@empty
             \PackageWarningNoLine{attachfile2}{%
               Option `driverfallback' with unsupported\MessageBreak
               DVI driver (\atfi@driverfallback)%
             }%
          \fi
        \fi
      \fi
      \ifx\atfi@driver\ltx@empty
        \PackageWarningNoLine{attachfile2}{%
          Driver is not specified,\MessageBreak
          enforce draft settings%
        }%
        \atfi@drafttrue
      \fi
    \fi
  \fi
\fi
\atfi@DisableOption{pdftex}
\atfi@DisableOption{dvips}
\atfi@DisableOption{dvipdfmx}
\atfi@DisableOption{xetex}
\atfi@DisableOption{driverfallback}
\DeclareRobustCommand{\notextattachfile}[2][]{%
  \begingroup
    \atfi@setup{#1}%
    \ifatfi@print
      \leavevmode
      \begingroup
        \HyColor@UseColor\atfi@color@tex
        #2\strut
      \endgroup
    \else
      \sbox\ltx@zero{#2\strut}%
      \makebox[\wd0]{}%
    \fi
  \endgroup
}
\atfi@DisableOption{draft}%
\atfi@DisableOption{final}%
\ifatfi@draft
  \def\atfi@dummy@pushpin{%
    \raisebox{-1.25bp}{\parbox[b][14bp]{24bp}{}}%
  }%
  \DeclareRobustCommand{\textattachfile}[3][]{%
    \notextattachfile[{#1}]{#3}%
  }%
  \DeclareRobustCommand{\noattachfile}[1][]{%
    \notextattachfile[{#1}]{\atfi@dummy@pushpin}%
  }%
  \DeclareRobustCommand{\attachfile}[2][]{%
    \noattachfile[{#1}]%
  }%
   \expandafter\endinput
\fi
\input{atfi-\atfi@driver.def}
\def\atfi@acroGraph@data{%
  \atfi@GSAVE
  0.5 \atfi@SETGRAYFILL
  1.1133 0 20.7202 18.2754 \atfi@RECTFILL
  0 \atfi@SETFLAT
  0.5 \atfi@SETLINEWIDTH
  4 \atfi@SETMITERLIMIT
  \atfi@RECTSTROKEFILL{%
    1 \atfi@SETGRAYFILL
  }{%
    0 \atfi@SETGRAYSTROKE
  }{%
    0.25 1.6453 20.145 17.7715 %
  }%
  0 \atfi@SETGRAYFILL
  2.7319 4.1367 3.9571 13.8867 \atfi@RECTFILL
  8.7031 4.1367 3.9571 9.8867 \atfi@RECTFILL
  14.7471 4.1367 3.9571 11.8867 \atfi@RECTFILL
  \atfi@color@inline{FILL}%
  1.689 3.0938 3.9571 13.8867 \atfi@RECTFILL
  7.6602 3.0938 3.9571 9.8867 \atfi@RECTFILL
  13.7041 3.0938 3.9571 11.8867 \atfi@RECTFILL
  \atfi@GRESTORE
}
\def\atfi@acroGraph{%
  \raisebox{-1.5bp}{\parbox[b][20bp]{22bp}{%
    \rule{0pt}{0pt}\atfi@literal{\atfi@acroGraph@data}}%
  }%
}
\newcommand{\atfi@acroPaperclip@data}{%
  \atfi@GSAVE
  0.75 \atfi@SETGRAYSTROKE
  0 \atfi@SETFLAT
  2.5 \atfi@SETLINEWIDTH
  1 \atfi@SETLINECAP
  4 \atfi@SETMITERLIMIT
  1.9619 11.7559 \atfi@MOVETO
  1.9619 3.3037 1.9619 2.5059 \atfi@CURVETOV
  1.9619 1.707 4.0947 1.25 \atfi@CURVETOY
  7.4141 1.25 \atfi@LINETO
  9.4292 1.8223 9.4292 3.3066 \atfi@CURVETOV
  9.4292 4.79 9.4292 16.8945 \atfi@CURVETOY
  9.7852 18.1514 8.481 18.1514 \atfi@CURVETOV
  7.1768 18.1514 5.1616 18.1514 \atfi@CURVETOY
  3.8574 17.9209 3.8574 16.8945 \atfi@CURVETOV
  3.8574 15.8652 3.8574 6.6172 \atfi@CURVETOY
  4.3325 5.418 5.1025 5.418 \atfi@CURVETOV
  5.8726 5.418 6.5845 5.418 \atfi@CURVETOY
  7.6812 5.6455 7.6812 6.4736 \atfi@CURVETOV
  7.6812 7.3027 7.6812 11.5264 \atfi@CURVETOY
  \atfi@STROKE
  0 \atfi@SETGRAYSTROKE
  1.2495 12.4404 \atfi@MOVETO
  1.2495 3.9883 1.2495 3.1895 \atfi@CURVETOV
  1.2495 2.3906 3.3833 1.9326 \atfi@CURVETOY
  6.7026 1.9326 \atfi@LINETO
  8.7178 2.5068 8.7178 3.9902 \atfi@CURVETOV
  8.7178 5.4736 8.7178 17.5781 \atfi@CURVETOY
  9.0732 18.834 7.769 18.834 \atfi@CURVETOV
  6.4653 18.834 4.4497 18.834 \atfi@CURVETOY
  3.146 18.6055 3.146 17.5781 \atfi@CURVETOV
  3.146 16.5498 3.146 7.3018 \atfi@CURVETOY
  3.6201 6.1016 4.3911 6.1016 \atfi@CURVETOV
  5.1611 6.1016 5.873 6.1016 \atfi@CURVETOY
  6.9692 6.3301 6.9692 7.1572 \atfi@CURVETOV
  6.9692 7.9863 6.9692 12.21 \atfi@CURVETOY
  \atfi@STROKE
  \atfi@color@inline{STROKE}%
  1 \atfi@SETLINEWIDTH
  1.2495 12.4404 \atfi@MOVETO
  1.2495 3.9883 1.2495 3.1895 \atfi@CURVETOV
  1.2495 2.3906 3.3833 1.9326 \atfi@CURVETOY
  6.7026 1.9326 \atfi@LINETO
  8.7178 2.5068 8.7178 3.9902 \atfi@CURVETOV
  8.7178 5.4736 8.7178 17.5781 \atfi@CURVETOY
  9.0732 18.834 7.769 18.834 \atfi@CURVETOV
  6.4653 18.834 4.4497 18.834 \atfi@CURVETOY
  3.146 18.6055 3.146 17.5781 \atfi@CURVETOV
  3.146 16.5498 3.146 7.3018 \atfi@CURVETOY
  3.6201 6.1016 4.3911 6.1016 \atfi@CURVETOV
  5.1611 6.1016 5.873 6.1016 \atfi@CURVETOY
  6.9692 6.3301 6.9692 7.1572 \atfi@CURVETOV
  6.9692 7.9863 6.9692 12.21 \atfi@CURVETOY
  \atfi@STROKE
  \atfi@GRESTORE
}
\def\atfi@acroPaperclip{%
  \raisebox{-1.25bp}{\parbox[b][21bp]{12bp}{%
    \rule{0pt}{0pt}\atfi@literal{\atfi@acroPaperclip@data}}%
  }%
}
\def\atfi@acroPushPin@data{%
  \atfi@GSAVE
  1 \atfi@SETLINEWIDTH
  1 6   \atfi@MOVETO
  11 6  \atfi@LINETO
  11 13 \atfi@LINETO
  12 13 \atfi@LINETO
  14 11 \atfi@LINETO
  21 11 \atfi@LINETO
  22 12 \atfi@LINETO
  23 12 \atfi@LINETO
  23 2  \atfi@LINETO
  22 2  \atfi@LINETO
  21 3  \atfi@LINETO
  14 3  \atfi@LINETO
  12 1  \atfi@LINETO
  11 1  \atfi@LINETO
  11 6  \atfi@LINETO
  \atfi@FILLSTROKE{%
    \atfi@color@inline{FILL}%
  }{%
    0 \atfi@SETGRAYSTROKE
  }%
  0.5 \atfi@SETGRAYSTROKE
  0 7  \atfi@MOVETO
  10 7 \atfi@LINETO
  10 8 \atfi@LINETO
  1 8  \atfi@LINETO
  \atfi@STROKE
  1 \atfi@SETGRAYSTROKE
  12 12 \atfi@MOVETO
  14 10 \atfi@LINETO
  22 10 \atfi@LINETO
  22 11 \atfi@LINETO
  \atfi@STROKE
  \atfi@GRESTORE
}
\def\atfi@acroPushPin{%
  \raisebox{-1.25bp}{\parbox[b][14bp]{24bp}{%
    \rule{0pt}{0pt}\atfi@literal{\atfi@acroPushPin@data}}%
  }%
}
\def\atfi@acroTag@data{%
  \atfi@GSAVE
  0.5 \atfi@SETGRAYFILL
  10.0542 14.9873 \atfi@MOVETO
  24.27 14.9873 \atfi@LINETO
  25.252 14.0059 \atfi@LINETO
  25.252 1.1455 \atfi@LINETO
  24.1064 0 \atfi@LINETO
  9.9609 0 \atfi@LINETO
  6.0327 6.0088 \atfi@LINETO
  6.0327 9.002 \atfi@LINETO
  10.0542 14.9873 \atfi@LINETO
  9.3994 9.376 \atfi@MOVETO
  8.5215 9.376 7.8096 8.5596 7.8096 7.5527 \atfi@CURVETO
  7.8096 6.5449 8.5215 5.7285 9.3994 5.7285 \atfi@CURVETO
  10.2778 5.7285 10.9897 6.5449 10.9897 7.5527 \atfi@CURVETO
  10.9897 8.5596 10.2778 9.376 9.3994 9.376 \atfi@CURVETO
  \atfi@CLOSEPATH
  \atfi@FILL
  0 \atfi@SETFLAT
  0.5 \atfi@SETLINEWIDTH
  4 \atfi@SETMITERLIMIT
  1 \atfi@SETLINEJOIN
  8.5107 16.5313 \atfi@MOVETO
  22.7266 16.5313 \atfi@LINETO
  23.7085 15.5488 \atfi@LINETO
  23.7085 2.6895 \atfi@LINETO
  22.563 1.543 \atfi@LINETO
  8.4175 1.543 \atfi@LINETO
  4.4893 7.5527 \atfi@LINETO
  4.4893 10.5449 \atfi@LINETO
  8.5107 16.5313 \atfi@LINETO
  7.856 10.9199 \atfi@MOVETO
  6.978 10.9199 6.2661 10.1035 6.2661 9.0957 \atfi@CURVETO
  6.2661 8.0879 6.978 7.2715 7.856 7.2715 \atfi@CURVETO
  8.7344 7.2715 9.4463 8.0879 9.4463 9.0957 \atfi@CURVETO
  9.4463 10.1035 8.7344 10.9199 7.856 10.9199 \atfi@CURVETO
  \atfi@CLOSEPATH
  \atfi@FILLSTROKE{%
    \atfi@color@inline{FILL}%
  }{%
    0 \atfi@SETGRAYSTROKE
  }%
  1 \atfi@SETLINEWIDTH
  12.3291 12.2656 \atfi@MOVETO
  21.1206 12.2656 \atfi@LINETO
  \atfi@STROKE
  12.3291 9.1797 \atfi@MOVETO
  21.1206 9.1797 \atfi@LINETO
  \atfi@STROKE
  12.3291 6.1875 \atfi@MOVETO
  21.1206 6.1875 \atfi@LINETO
  \atfi@STROKE
  % 0 \atfi@SETGRAYSTROKE % redundant?
  0.5 \atfi@SETLINEWIDTH
  0 9.0488 \atfi@MOVETO
  6.2661 9.0957 \atfi@LINETO
  \atfi@STROKE
  1.4028 5.2148 \atfi@MOVETO
  1.4028 9.6094 \atfi@LINETO
  1.6831 10.6387 2.4316 10.6387 \atfi@CURVETOV
  3.6475 10.6387 3.5542 9.0488 \atfi@CURVETOY
  \atfi@STROKE
  \atfi@GRESTORE
}
\def\atfi@acroTag{%
  \raisebox{-1.6bp}{\parbox[b][17bp]{25bp}{%
    \rule{0pt}{0pt}\atfi@literal{\atfi@acroTag@data}}%
  }%
}
\def\attachfile@timezone#1{%
  \ifx\\#1\\%
    % no timezone information given
  \else
    \def\atfi@timezone{#1}%
  \fi
}
\newcommand*{\attachfile@file}[2][]{%
  \EdefUnescapeHex\atfi@filename{#2}%
  \ifx\atfi@filename\ltx@empty
    \PackageError{attachfile2}{Empty file name}\@ehc
  \else
    \@namedef{atfi@file@\atfi@filename}{#1}%
  \fi
}
\InputIfFileExists{\jobname.atfi}{}{}%
\newif\ifatfi@checksum
\define@key{AtFi@file}{CheckSum}{%
  \atfi@checksumtrue
  \edef\atfi@params{\atfi@params/CheckSum<#1>}%
}
\newif\ifatfi@creationdate
\define@key{AtFi@file}{CreationDateTZ}{%
  \ifatfi@creationdate
  \else
    \atfi@creationdatetrue
    \edef\atfi@params{%
      \atfi@params
      /CreationDate(#1)%
    }%
  \fi
}
\define@key{AtFi@file}{CreationDate}{%
  \ifatfi@creationdate
  \else
    \atfi@creationdatetrue
    \edef\atfi@params{%
      \atfi@params
      /CreationDate(#1\atfi@timezone)%
    }%
  \fi
}
\newif\ifatfi@moddate
\define@key{AtFi@file}{ModDateTZ}{%
  \ifatfi@moddate
  \else
    \atfi@moddatetrue
    \edef\atfi@params{%
      \atfi@params
      /ModDate(#1)%
    }%
  \fi
}
\define@key{AtFi@file}{ModDate}{%
  \ifatfi@moddate
  \else
    \atfi@moddatetrue
    \edef\atfi@params{%
      \atfi@params
      /ModDate(D:#1\atfi@timezone)%
    }%
  \fi
}
\let\atfi@temp\ltx@one
\ltx@IfUndefined{pdf@filesize}{%
  \let\atfi@temp\ltx@zero
}{}
\ltx@IfUndefined{pdf@filemoddate}{%
  \let\atfi@temp\ltx@zero
}{}
\ltx@IfUndefined{pdf@filemdfivesum}{%
  \let\atfi@temp\ltx@zero
}{}
\ifcase\atfi@temp
  \let\atfi@pdftexdata\ltx@gobble
\or
  \def\atfi@pdftexdata#1{%
    \edef\atfi@temp{\pdf@filesize{#1}}%
    \ifx\atfi@temp\ltx@empty
    \else
      \setkeys{AtFi@file}{Size=\atfi@temp}%
      \edef\atfi@temp{\pdf@filemoddate{#1}}%
      \ifx\atfi@temp\ltx@empty
      \else
        \setkeys{AtFi@file}{ModDateTZ=\atfi@temp}%
      \fi
      \edef\atfi@temp{\pdf@filemdfivesum{#1}}%
      \ifx\atfi@temp\ltx@empty
      \else
        \setkeys{AtFi@file}{CheckSum=\atfi@temp}%
      \fi
    \fi
  }%
\fi
\if@filesw
\else
  \atfi@nofilestrue
\fi
\ifatfi@nofiles
  \PackageInfo{attachfile2}{%
    File `\jobname.atfi' will not be written because of\MessageBreak
    \string\nofiles\space or option `nofiles'%
  }%
  \let\atfi@writefile\ltx@gobble
\else
  \newwrite\atfi@stream
  \immediate\openout\atfi@stream=\jobname.atfi\relax
  \immediate\write\atfi@stream{%
    \string\attachfile@timezone{\atfi@timezone}%
  }%
  \def\atfi@writefile#1{%
    \begingroup
      \EdefEscapeHex\atfi@temp{#1}%
      \immediate\write\atfi@stream{%
        \string\attachfile@file[%
          \ltx@ifundefined{atfi@file@#1}{}{\@nameuse{atfi@file@#1}}%
        ]{\atfi@temp}%
      }%
    \endgroup
  }%
\fi
\atfi@DisableOption{nofiles}
\def\atfi@attachfile#1#2{%
  \ltx@IfUndefined{atfi@fileobj@#2}{%
    \atfi@writefile{#2}%
  }{%
    % don't need duplicates
  }%
  \atfi@setup{#1}%
  \atfi@embedfile{#2}%
  \atfi@set@appearance@icon
  \atfi@flags@to@int
  \atfi@insert@file@annot{#2}%
  \endgroup
}
\newlength{\atfi@appearancewidth}
\newlength{\atfi@appearanceheight}
\newlength{\atfi@appearancedepth}
\newsavebox{\atfi@appearancebox}
\def\atfi@set@appearance@icon{%
  \ltx@IfUndefined{atfi@appobj@\atfi@icon@icon}{%
    \savebox{\atfi@appearancebox}{%
      \@nameuse{atfi@acro\atfi@icon@icon}%
    }%
    \expandafter
    \xdef\csname atfi@appwidth@\atfi@icon@icon\endcsname{%
      \the\wd\atfi@appearancebox
    }%
    \expandafter
    \xdef\csname atfi@appheight@\atfi@icon@icon\endcsname{%
      \the\ht\atfi@appearancebox
    }%
    \expandafter
    \xdef\csname atfi@appdepth@\atfi@icon@icon\endcsname{%
      \the\dp\atfi@appearancebox
    }%
    \atfi@xform@icon
    \global\expandafter\let
        \csname atfi@appobj@\atfi@icon@icon\endcsname
        \atfi@appearanceobj
  }{%
  }%
  % optimization: \setlength dropped
  \atfi@appearancewidth=%
      \@nameuse{atfi@appwidth@\atfi@icon@icon}\relax
  \atfi@appearanceheight=%
      \@nameuse{atfi@appheight@\atfi@icon@icon}\relax
  \atfi@appearancedepth=%
      \@nameuse{atfi@appdepth@\atfi@icon@icon}\relax
  \expandafter\let\expandafter\atfi@appearanceobj
      \csname atfi@appobj@\atfi@icon@icon\endcsname
}
\def\atfi@set@appearance#1{%
  \savebox{\atfi@appearancebox}{#1}%
  \atfi@appearancewidth=\wd\atfi@appearancebox
  \atfi@appearanceheight=\ht\atfi@appearancebox
  \atfi@appearancedepth=\dp\atfi@appearancebox
  \atfi@xform
}
\newcounter{atfi@flags}
\DeclareRobustCommand{\atfi@flags@to@int}{%
  \setcounter{atfi@flags}{0}%
  \ifatfi@print
    \addtocounter{atfi@flags}{4}%
  \fi%
  \ifatfi@zoom
  \else
    \addtocounter{atfi@flags}{8}%
  \fi%
  \ifatfi@locked
   \addtocounter{atfi@flags}{128}%
  \fi%
}
\def\atfi@textattachfile#1#2{%
    \endgroup
    \atfi@textattachfile@i{#1}{#2}%
}
\def\atfi@textattachfile@i#1#2#3{%
    \ltx@IfUndefined{atfi@fileobj@#2}{%
      \atfi@writefile{#2}%
    }{%
      % don't need duplicates
    }%
    \atfi@setup{#1}%
    \atfi@embedfile{#2}%
    \atfi@set@appearance{%
      \leavevmode
      \begingroup
        \HyColor@UseColor\atfi@color@tex
        #3\strut
      \endgroup
    }%
    \atfi@flags@to@int
    \atfi@insert@file@annot{#2}%
  \endgroup
}
\DeclareRobustCommand{\attachfile}[1][]{%
  \begingroup
    \let\do\@makeother
    \dospecials
    \catcode`\{=1\relax
    \catcode`\}=2\relax
    \atfi@attachfile{#1}%
}
\DeclareRobustCommand{\textattachfile}[1][]{%
  \begingroup
    \begingroup
      \let\do\@makeother
      \dospecials
      \catcode`\{=1\relax
      \catcode`\}=2\relax
      \atfi@textattachfile{#1}%
}
\DeclareRobustCommand{\noattachfile}[1][]{%
  \begingroup
    \atfi@setup{#1}%
    \atfi@set@appearance@icon
    \ifatfi@print
      \expandafter
      \atfi@refxform\csname atfi@appobj@\atfi@icon@icon\endcsname
    \else
      \makebox[\atfi@appearancewidth]{}%
    \fi
  \endgroup
}
\endinput
%%
%% End of file `attachfile2.sty'.
