cccb-formulare/fvextra.sty
2024-12-07 07:13:08 +01:00

3282 lines
105 KiB
TeX

%%
%% This is file `fvextra.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% fvextra.dtx (with options: `package')
%%
%% This is a generated file.
%%
%% Copyright (C) 2016-2024 by Geoffrey M. Poore <gpoore@gmail.com>
%% --------------------------------------------------------------------------
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
%% of this license or (at your option) any later version.
%% The latest version of this license is in
%% http://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.
%%
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesPackage{fvextra}
[2024/11/17 v1.10.0 fvextra - extensions and patches for fancyvrb]
\RequirePackage{etoolbox}
\RequirePackage{fancyvrb}
\RequirePackage{upquote}
\AtEndPreamble{%
\ifx\encodingdefault\upquote@OTone
\ifx\ttdefault\upquote@cmtt\else\RequirePackage{textcomp}\fi
\else
\RequirePackage{textcomp}
\fi}
\RequirePackage{lineno}
\@ifpackageloaded{csquotes}%
{\PackageWarning{fvextra}{csquotes should be loaded after fvextra, %
to avoid a warning from the lineno package}}{}
\begingroup
\catcode`\ =\active%
\gdef\FV@ActiveSpaceToken{ }%
\endgroup%
\edef\FV@SpaceCatTen{{\detokenize{ }}}
\def\FV@FVSpaceToken{\FV@Space}
\def\FV@FVTabToken{\FV@Tab}
\def\FVExtraDoSpecials{%
\do\ \do\!\do\"\do\#\do\$\do\%\do\&\do\'\do\(\do\)\do\*\do\+\do\,\do\-%
\do\.\do\/\do\:\do\;\do\<\do\=\do\>\do\?\do\@\do\[\do\\\do\]\do\^\do\_%
\do\`\do\{\do\|\do\}\do\~}
\begingroup
\def\do#1{%
\expandafter\global\expandafter
\let\csname FV@Special:\expandafter\@gobble\detokenize{#1}\endcsname\relax}
\FVExtraDoSpecials
\endgroup
\begingroup
\catcode`\<=11
\catcode`\>=11
\gdef\FV@Sentinel{\FV@<Sentinel>}
\endgroup
\begingroup
\catcode`\^^M=\active%
\gdef\FV@OuterDefEOLEmpty{\outer\def^^M{}}%
\endgroup
\begingroup
\catcode`\^^M=\active%
\gdef\FV@DefEOLEmpty{\def^^M{}}%
\endgroup
\begingroup
\catcode`\^^B=\active
\gdef\FV@OuterDefSTXEmpty{\outer\def^^B{}}
\endgroup
\begingroup
\catcode`\^^C=\active
\gdef\FV@OuterDefETXEmpty{\outer\def^^C{}}
\endgroup
\newif\ifFV@pdfTeXinputenc
\FV@pdfTeXinputencfalse
\ifcsname pdfmatch\endcsname
\ifx\pdfmatch\relax
\else
\@ifpackageloaded{inputenc}%
{\ifcsname inputencodingname\endcsname
\ifx\inputencodingname\relax
\else
\FV@pdfTeXinputenctrue
\fi\fi}
{}%
\fi\fi
\ifFV@pdfTeXinputenc
\begingroup
\catcode`\~=13
\catcode`\"=12
\def\FV@UTFviii@loop{%
\uccode`\~\count@
\uppercase\expandafter{\FV@UTFviii@Tmp}%
\advance\count@\@ne
\ifnum\count@<\@tempcnta
\expandafter\FV@UTFviii@loop
\fi}
\count@"C2
\@tempcnta"E0
\def\FV@UTFviii@Tmp{\expandafter\gdef\csname FV@U8:\string~\endcsname{%
\FV@UTF@two@octets}}
\FV@UTFviii@loop
\count@"E0
\@tempcnta"F0
\def\FV@UTFviii@Tmp{\expandafter\gdef\csname FV@U8:\string~\endcsname{%
\FV@UTF@three@octets}}
\FV@UTFviii@loop
\count@"F0
\@tempcnta"F4
\def\FV@UTFviii@Tmp{\expandafter\gdef\csname FV@U8:\string~\endcsname{%
\FV@UTF@four@octets}}
\FV@UTFviii@loop
\endgroup
\def\FV@UTF@two@octets#1#2{%
\ifcsname u8:\detokenize{#1#2}\endcsname
\else
#1#2%
\fi
\FV@UTF@octets@after{#1#2}}
\def\FV@UTF@three@octets#1#2#3{%
\ifcsname u8:\detokenize{#1#2#3}\endcsname
\else
#1#2#3%
\fi
\FV@UTF@octets@after{#1#2#3}}
\def\FV@UTF@four@octets#1#2#3#4{%
\ifcsname u8:\detokenize{#1#2#3#4}\endcsname
\else
#1#2#3#4%
\fi
\FV@UTF@octets@after{#1#2#3#4}}
\fi
\long\def\FVExtra@ifnextcharAny#1#2#3{%
\let\reserved@d= #1%
\def\reserved@a{#2}%
\def\reserved@b{#3}%
\futurelet\@let@token\FVExtra@ifnchAny}
\def\FVExtra@ifnchAny{%
\ifx\@let@token\reserved@d
\expandafter\reserved@a
\else
\expandafter\reserved@b
\fi}
\long\def\FVExtra@ifnextcharVArg#1#2#3{%
\begingroup
\edef\FV@TmpSpaceCat{\the\catcode` }%
\let\do\@makeother\FVExtraDoSpecials
\catcode`\ =\FV@TmpSpaceCat\relax
\catcode`\{=1
\catcode`\}=2
\@ifnextchar#1{\endgroup#2}{\endgroup#3}}
\begingroup
\catcode`\*=12
\gdef\FVExtra@ifstarVArg#1{\FVExtra@ifnextcharVArg*{\@firstoftwo{#1}}}
\endgroup
\def\FV@ReadOArgContinue#1[#2]{#1{#2}}
\newcommand{\FVExtraReadOArgBeforeVArg}[2][]{%
\FVExtra@ifnextcharVArg[%
{\FV@ReadOArgContinue{#2}}%
{\FV@ReadOArgContinue{#2}[#1]}}
\newcommand{\FVExtraReadOArgBeforeVEnv}[2][]{%
\begingroup
\catcode`\^^M=\active
\@ifnextchar[%
{\endgroup\FVExtraReadOArgBeforeVEnv@i{#2}}%
{\endgroup\FVExtraReadOArgBeforeVEnv@i{#2}[#1]}}
\def\FVExtraReadOArgBeforeVEnv@i#1[#2]{%
\begingroup
\catcode`\^^M=\active
\FVExtraReadOArgBeforeVEnv@ii{#1}{#2}}
\begingroup
\catcode`\^^M=\active%
\gdef\FVExtraReadOArgBeforeVEnv@ii#1#2#3^^M{%
\endgroup%
\FVExtraReadOArgBeforeVEnv@iii{#1}{#2}{#3}}%
\endgroup%
\def\FVExtraReadOArgBeforeVEnv@iii#1#2#3{%
\if\relax\detokenize{#3}\relax
\else
\PackageError{fvextra}%
{Discarded invalid text while checking for optional argument of verbatim environment}%
{Discarded invalid text while checking for optional argument of verbatim environment}%
\fi
#1{#2}}
\def\FVExtraReadVArg#1{%
\begingroup
\ifFV@pdfTeXinputenc
\ifdefstring{\inputencodingname}{utf8}%
{\let\FV@ReadVArg@Char\FV@ReadVArg@Char@UTF}%
{}%
\fi
\edef\FV@TmpSpaceCat{\the\catcode` }%
\let\do\@makeother\FVExtraDoSpecials
\catcode`\^^B=\active
\FV@OuterDefSTXEmpty
\catcode`\^^C=\active
\FV@OuterDefETXEmpty
\begingroup
\catcode`\ =\FV@TmpSpaceCat\relax
\catcode`\{=1
\catcode`\}=2
\@ifnextchar\bgroup
{\endgroup
\catcode`\{=1
\catcode`\}=2
\catcode`\ =\active
\catcode`\^^I=\active
\FV@ReadVArg@Group{#1}}%
{\endgroup
\catcode`\ =\active
\catcode`\^^I=\active
\FV@ReadVArg@Char{#1}}}
\def\FVExtraReadVArgSingleLine#1{%
\begingroup
\ifFV@pdfTeXinputenc
\ifdefstring{\inputencodingname}{utf8}%
{\let\FV@ReadVArg@Char\FV@ReadVArg@Char@UTF}%
{}%
\fi
\edef\FV@TmpSpaceCat{\the\catcode` }%
\let\do\@makeother\FVExtraDoSpecials
\catcode`\^^B=\active
\FV@OuterDefSTXEmpty
\catcode`\^^C=\active
\FV@OuterDefETXEmpty
\catcode`\^^M=\active
\FV@OuterDefEOLEmpty
\begingroup
\catcode`\ =\FV@TmpSpaceCat\relax
\catcode`\{=1
\catcode`\}=2
\@ifnextchar\bgroup
{\endgroup
\catcode`\{=1
\catcode`\}=2
\catcode`\ =\active
\catcode`\^^I=\active
\FV@ReadVArg@Group{#1}}%
{\endgroup
\catcode`\ =\active
\catcode`\^^I=\active
\FV@ReadVArg@Char{#1}}}
\def\FV@ReadVArg@Group#1#2{%
\endgroup
#1{#2}}
\def\FV@ReadVArg@Char#1#2{%
\expandafter\expandafter\expandafter
\if\expandafter\expandafter\expandafter\relax\expandafter\@gobble\detokenize{#2}\relax
\expandafter\@gobble
\else
\expandafter\@firstofone
\fi
{\PackageError{fvextra}%
{Verbatim delimiters must be single characters, not commands}%
{Try a different delimiter}}%
\def\FV@ReadVArg@Char@i##1##2#2{%
\endgroup
##1{##2}}%
\FV@ReadVArg@Char@i{#1}}%
\ifFV@pdfTeXinputenc
\def\FV@ReadVArg@Char@UTF#1#2{%
\expandafter\expandafter\expandafter
\if\expandafter\expandafter\expandafter\relax\expandafter\@gobble\detokenize{#2}\relax
\expandafter\@gobble
\else
\expandafter\@firstofone
\fi
{\PackageError{fvextra}%
{Verbatim delimiters must be single characters, not commands}%
{Try a different delimiter}}%
\ifcsname FV@U8:\detokenize{#2}\endcsname
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi
{\def\FV@UTF@octets@after##1{\FV@ReadVArg@Char@UTF@i{#1}{##1}}%
\csname FV@U8:\detokenize{#2}\endcsname#2}%
{\FV@ReadVArg@Char@UTF@i{#1}{#2}}}
\def\FV@ReadVArg@Char@UTF@i#1#2{%
\def\FV@ReadVArg@Char@i##1##2#2{%
\endgroup
##1{##2}}%
\FV@ReadVArg@Char@i{#1}}%
\fi
\newbool{FV@vargsingleline}
\define@booleankey{FV}{vargsingleline}%
{\booltrue{FV@vargsingleline}}
{\boolfalse{FV@vargsingleline}}
\fvset{vargsingleline=false}
\def\FVExtrapdfstringdef#1#2{%
\AfterPreamble{%
\ifcsname pdfstringdef\endcsname
\ifx\pdfstringdef\relax
\else
\pdfstringdef#1{#2}%
\fi\fi}}
\def\FVExtrapdfstringdefDisableCommands#1{%
\AfterPreamble{%
\ifcsname pdfstringdefDisableCommands\endcsname
\ifx\pdfstringdefDisableCommands\relax
\else
\pdfstringdefDisableCommands{#1}%
\fi\fi}}
\long\def\FVExtraAlwaysUnexpanded#1{%
\unexpanded{\FVExtraAlwaysUnexpanded{#1}}}
\FVExtrapdfstringdefDisableCommands{%
\long\def\FVExtraAlwaysUnexpanded#1{#1}}
\newbool{FVExtraRobustCommandExpanded}
\protected\def\FVExtraRobustCommand#1#2{%
\ifx#2\FVExtraAlwaysUnexpanded
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi
{\booltrue{FVExtraRobustCommandExpanded}\FV@RobustCommand@i{#1}}%
{\boolfalse{FVExtraRobustCommandExpanded}#1}}
\FVExtrapdfstringdefDisableCommands{%
\def\FVExtraRobustCommand{}}
\def\FV@RobustCommand@i#1#2{\expandafter#1\@gobble#2}
\def\FVExtraUnexpandedReadStarOArgMArg#1#{%
\FV@UnexpandedReadStarOArgMArg@i{#1}}
\def\FV@UnexpandedReadStarOArgMArg@i#1#2{%
\FVExtraAlwaysUnexpanded{\FVExtraUnexpandedReadStarOArgMArg#1{#2}}}
\FVExtrapdfstringdefDisableCommands{%
\makeatletter
\def\FV@UnexpandedReadStarOArgMArg@i#1#2{#2}%
\makeatother}
\def\FVExtraUseVerbUnexpandedReadStarOArgMArg#1#{%
\FV@UseVerbUnexpandedReadStarOArgMArg@i{#1}}
\def\FV@UseVerbUnexpandedReadStarOArgMArg@i#1#2{%
\FVExtraAlwaysUnexpanded{\FVExtraUseVerbUnexpandedReadStarOArgMArg#1{#2}}}
\FVExtrapdfstringdefDisableCommands{%
\makeatletter
\def\FV@UseVerbUnexpandedReadStarOArgMArg@i#1#2{%
\ifcsname FV@SVRaw@#2\endcsname
\expandafter\expandafter\expandafter\FVExtraPDFStringVerbatimDetokenize
\expandafter\expandafter\expandafter{\csname FV@SVRaw@#2\endcsname}%
\fi}%
\makeatother}
\def\FVExtraUnexpandedReadStarOArgBVArg#1#{%
\FV@UnexpandedReadStarOArgBVArg@i{#1}}
\def\FV@UnexpandedReadStarOArgBVArg@i#1#2{%
\FVExtraAlwaysUnexpanded{\FVExtraUnexpandedReadStarOArgBVArg#1{#2}}}
\FVExtrapdfstringdefDisableCommands{%
\makeatletter
\def\FV@UnexpandedReadStarOArgBVArg@i#1#2{%
\FVExtraPDFStringVerbatimDetokenize{#2}}%
\makeatother}
\def\FVExtraUnexpandedReadStarOArgBEscVArg#1#{%
\FV@UnexpandedReadStarOArgBEscVArg@i{#1}}
\def\FV@UnexpandedReadStarOArgBEscVArg@i#1#2{%
\FVExtraAlwaysUnexpanded{\FVExtraUnexpandedReadStarOArgBEscVArg#1{#2}}}
\FVExtrapdfstringdefDisableCommands{%
\makeatletter
\def\FV@UnexpandedReadStarOArgBEscVArg@i#1#2{%
\FVExtraPDFStringEscapedVerbatimDetokenize{#2}}%
\makeatother}
\def\FVExtraUnexpandedReadStarOArgMArgBVArg#1#{%
\FV@UnexpandedReadStarOArgMArgBVArg@i{#1}}
\def\FV@UnexpandedReadStarOArgMArgBVArg@i#1#2{%
\FV@UnexpandedReadStarOArgMArgBVArg@ii{#1}{#2}}
\def\FV@UnexpandedReadStarOArgMArgBVArg@ii#1#2#3#{%
\FV@UnexpandedReadStarOArgMArgBVArg@iii{#1}{#2}{#3}}
\def\FV@UnexpandedReadStarOArgMArgBVArg@iii#1#2#3#4{%
\FVExtraAlwaysUnexpanded{\FVExtraUnexpandedReadStarOArgMArgBVArg#1{#2}#3{#4}}}
\FVExtrapdfstringdefDisableCommands{%
\makeatletter
\def\FV@UnexpandedReadStarOArgMArgBVArg@iii#1#2#3#4{%
\FVExtraPDFStringVerbatimDetokenize{#4}}%
\makeatother}
\def\FVExtraPDFStringEscapeChar#1{%
\ifcsname FV@PDFStringEscapeChar@#1\endcsname
\csname FV@PDFStringEscapeChar@#1\endcsname
\else
#1%
\fi}
\begingroup
\catcode`\&=14
\catcode`\%=12&
\catcode`\(=12&
\catcode`\)=12&
\catcode`\^^J=12&
\catcode`\^^M=12&
\catcode`\^^I=12&
\catcode`\^^H=12&
\catcode`\^^L=12&
\catcode`\!=0\relax&
!catcode`!\=12!relax&
!expandafter!gdef!csname FV@PDFStringEscapeChar@\!endcsname{\\}&
!expandafter!gdef!csname FV@PDFStringEscapeChar@%!endcsname{\%}&
!expandafter!gdef!csname FV@PDFStringEscapeChar@(!endcsname{\(}&
!expandafter!gdef!csname FV@PDFStringEscapeChar@)!endcsname{\)}&
!expandafter!gdef!csname FV@PDFStringEscapeChar@^^J!endcsname{\n}&
!expandafter!gdef!csname FV@PDFStringEscapeChar@^^M!endcsname{\r}&
!expandafter!gdef!csname FV@PDFStringEscapeChar@^^I!endcsname{\t}&
!expandafter!gdef!csname FV@PDFStringEscapeChar@^^H!endcsname{\b}&
!expandafter!gdef!csname FV@PDFStringEscapeChar@^^L!endcsname{\f}&
!catcode`!\=0!relax&
\endgroup
\def\FVExtraPDFStringEscapeChars#1{%
\FV@PDFStringEscapeChars#1\FV@Sentinel}
\def\FV@PDFStringEscapeChars#1{%
\ifx#1\FV@Sentinel
\else
\FVExtraPDFStringEscapeChar{#1}%
\expandafter\FV@PDFStringEscapeChars
\fi}%
\begingroup
\catcode`\ =10
\catcode`\a=11
\catcode`\<=11
\catcode`\>=11
\catcode`\^^C=\active
\gdef\FVExtraVerbatimDetokenize#1{%
\FV@VDetok@Scan{}#1^^C \FV@<Sentinel>}
\gdef\FV@VDetok@Scan#1 #2\FV@<Sentinel>{%
\if\relax\detokenize{#2}\relax
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi
{\FV@VDetok@ScanEnd#1}%
{\FV@VDetok@ScanCont{#1}{#2}}}
\gdef\FV@VDetok@ScanEnd#1^^C{%
\if\relax\detokenize{#1}\relax
\expandafter\@gobble
\else
\expandafter\@firstofone
\fi
{\expandafter\FV@VDetok@ScanGroup\@gobble#1{\FV@<Sentinel>}}}
\begingroup
\catcode`\ =12%
\gdef\FV@VDetok@ScanCont#1#2{%
\if\relax\detokenize{#1}\relax%
\expandafter\@gobble%
\else%
\expandafter\@firstofone%
\fi%
{\expandafter\FV@VDetok@ScanGroup\@gobble#1{\FV@<Sentinel>}}%
%<-catcode 12 space
\FV@VDetok@Scan{}#2\FV@<Sentinel>}%
\endgroup
\gdef\FV@VDetok@ScanGroup#1#{%
\FV@VDetok@ScanToken#1\FV@Sentinel
\FV@VDetok@ScanGroup@i}
\gdef\FV@VDetok@ScanGroup@i#1{%
\if\relax\detokenize{#1}\relax
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi
{\FV@VDetok@ScanEmptyGroup}%
{\FV@VDetok@ScanGroup@ii{}#1\FV@<Sentinel>^^C}}
\begingroup
\catcode`\(=1
\catcode`\)=2
\catcode`\{=12
\catcode`\}=12
\gdef\FV@VDetok@ScanEmptyGroup({}\FV@VDetok@ScanGroup)
\endgroup
\begingroup
\catcode`\(=1
\catcode`\)=2
\catcode`\{=12
\catcode`\}=12
\gdef\FV@VDetok@ScanGroup@ii#1\FV@<Sentinel>#2^^C(%
\if\relax\detokenize(#2)\relax
\expandafter\@firstofone
\else
\expandafter\@gobble
\fi
({\FV@VDetok@Scan#1^^C \FV@<Sentinel>}\FV@VDetok@ScanGroup))
\endgroup
\gdef\FV@VDetok@ScanToken#1{%
\ifx\FV@Sentinel#1%
\expandafter\@gobble
\else
\expandafter\@firstofone
\fi
{\expandafter\FV@VDetok@ScanToken@i\detokenize{#1}^^C \FV@<Sentinel>}}
\gdef\FV@VDetok@ScanToken@i#1 #2\FV@<Sentinel>{%
\if\relax\detokenize{#2}\relax
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi
{\FV@VDetok@ScanTokenNoSpace#1}%
{\FV@VDetok@ScanTokenWithSpace{#1}}}
\gdef\FV@VDetok@ScanTokenNoSpace#1^^C{#1\FV@VDetok@ScanToken}
\gdef\FV@VDetok@ScanTokenWithSpace#1{%
\if\relax\detokenize{#1}\relax
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi
{\FV@VDetok@ScanTokenActiveSpace}%
{\FV@VDetok@ScanTokenWithSpace@i#1\FV@<Sentinel>}}
\begingroup
\catcode`\ =12%
\gdef\FV@VDetok@ScanTokenActiveSpace{ \FV@VDetok@ScanToken}%
\endgroup
\gdef\FV@VDetok@ScanTokenWithSpace@i#1#2\FV@<Sentinel>{%
\if\relax\detokenize{#2}\relax
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi
{\FV@VDetok@ScanTokenEscSpace{#1}}%
{\FV@VDetok@ScanTokenCW{#1#2}}}
\begingroup
\catcode`\ =12%
\gdef\FV@VDetok@ScanTokenEscSpace#1{#1 \FV@VDetok@ScanToken}%
\endgroup
\begingroup
\catcode`\ =12%
\gdef\FV@VDetok@ScanTokenCW#1#2{%
\ifcat\noexpand#2a%
\expandafter\@firstoftwo%
\else%
\expandafter\@secondoftwo%
\fi%
{#1 \FV@VDetok@ScanToken#2}%
{#1\FV@VDetok@ScanToken#2}}%
\endgroup
\gdef\FVExtraPDFStringVerbatimDetokenize#1{%
\FV@PDFStrVDetok@Scan{}#1^^C \FV@<Sentinel>}
\gdef\FV@PDFStrVDetok@Scan#1 #2\FV@<Sentinel>{%
\if\relax\detokenize{#2}\relax
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi
{\FV@PDFStrVDetok@ScanEnd#1}%
{\FV@PDFStrVDetok@ScanCont{#1}{#2}}}
\gdef\FV@PDFStrVDetok@ScanEnd#1^^C{%
\if\relax\detokenize{#1}\relax
\expandafter\@gobble
\else
\expandafter\@firstofone
\fi
{\expandafter\FV@PDFStrVDetok@ScanGroup\@gobble#1{\FV@<Sentinel>}}}
\begingroup
\catcode`\ =12%
\gdef\FV@PDFStrVDetok@ScanCont#1#2{%
\if\relax\detokenize{#1}\relax%
\expandafter\@gobble%
\else%
\expandafter\@firstofone%
\fi%
{\expandafter\FV@PDFStrVDetok@ScanGroup\@gobble#1{\FV@<Sentinel>}}%
%<-catcode 12 space
\FV@PDFStrVDetok@Scan{}#2\FV@<Sentinel>}%
\endgroup
\gdef\FV@PDFStrVDetok@ScanGroup#1#{%
\FV@PDFStrVDetok@ScanToken#1\FV@Sentinel
\FV@PDFStrVDetok@ScanGroup@i}
\gdef\FV@PDFStrVDetok@ScanGroup@i#1{%
\if\relax\detokenize{#1}\relax
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi
{\FV@PDFStrVDetok@ScanEmptyGroup}%
{\FV@PDFStrVDetok@ScanGroup@ii{}#1\FV@<Sentinel>^^C}}
\begingroup
\catcode`\(=1
\catcode`\)=2
\catcode`\{=12
\catcode`\}=12
\gdef\FV@PDFStrVDetok@ScanEmptyGroup({}\FV@PDFStrVDetok@ScanGroup)
\endgroup
\begingroup
\catcode`\(=1
\catcode`\)=2
\catcode`\{=12
\catcode`\}=12
\gdef\FV@PDFStrVDetok@ScanGroup@ii#1\FV@<Sentinel>#2^^C(%
\if\relax\detokenize(#2)\relax
\expandafter\@firstofone
\else
\expandafter\@gobble
\fi
({\FV@PDFStrVDetok@Scan#1^^C \FV@<Sentinel>}\FV@PDFStrVDetok@ScanGroup))
\endgroup
\gdef\FV@PDFStrVDetok@ScanToken#1{%
\ifx\FV@Sentinel#1%
\expandafter\@gobble
\else
\expandafter\@firstofone
\fi
{\expandafter\FV@PDFStrVDetok@ScanToken@i\detokenize{#1}^^C \FV@<Sentinel>}}
\gdef\FV@PDFStrVDetok@ScanToken@i#1 #2\FV@<Sentinel>{%
\if\relax\detokenize{#2}\relax
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi
{\FV@PDFStrVDetok@ScanTokenNoSpace#1}%
{\FV@PDFStrVDetok@ScanTokenWithSpace{#1}}}
\gdef\FV@PDFStrVDetok@ScanTokenNoSpace#1^^C{%
\FVExtraPDFStringEscapeChars{#1}\FV@PDFStrVDetok@ScanToken}
\gdef\FV@PDFStrVDetok@ScanTokenWithSpace#1{%
\if\relax\detokenize{#1}\relax
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi
{\FV@PDFStrVDetok@ScanTokenActiveSpace}%
{\FV@PDFStrVDetok@ScanTokenWithSpace@i#1\FV@<Sentinel>}}
\begingroup
\catcode`\!=0\relax
\catcode`\\=12!relax
!gdef!FV@PDFStrVDetok@ScanTokenActiveSpace{\040!FV@PDFStrVDetok@ScanToken}%
!catcode`!\=0!relax
\endgroup
\gdef\FV@PDFStrVDetok@ScanTokenWithSpace@i#1#2\FV@<Sentinel>{%
\if\relax\detokenize{#2}\relax
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi
{\FV@PDFStrVDetok@ScanTokenEscSpace{#1}}%
{\FV@PDFStrVDetok@ScanTokenCW{#1#2}}}
\begingroup
\catcode`\!=0\relax
\catcode`\\=12!relax
!gdef!FV@PDFStrVDetok@ScanTokenEscSpace#1{%
!FVExtraPDFStringEscapeChar{#1}\040!FV@PDFStrVDetok@ScanToken}%
!catcode`!\=0!relax
\endgroup
\begingroup
\catcode`\ =12%
\gdef\FV@PDFStrVDetok@ScanTokenCW#1#2{%
\ifcat\noexpand#2a%
\expandafter\@firstoftwo%
\else%
\expandafter\@secondoftwo%
\fi%
{\FVExtraPDFStringEscapeChars{#1} \FV@PDFStrVDetok@ScanToken#2}%
{\FVExtraPDFStringEscapeChars{#1}\FV@PDFStrVDetok@ScanToken#2}}
\endgroup
\gdef\FVExtraEscapedVerbatimDetokenize#1{%
\FV@EscVDetok@Scan{}#1^^C \FV@<Sentinel>}
\gdef\FV@EscVDetok@Scan#1 #2\FV@<Sentinel>{%
\if\relax\detokenize{#2}\relax
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi
{\FV@EscVDetok@ScanEnd#1}%
{\FV@EscVDetok@ScanCont{#1}{#2}}}
\gdef\FV@EscVDetok@ScanEnd#1^^C{%
\if\relax\detokenize{#1}\relax
\expandafter\@gobble
\else
\expandafter\@firstofone
\fi
{\expandafter\FV@EscVDetok@ScanGroup\@gobble#1{\FV@<Sentinel>}}}
\begingroup
\catcode`\ =12%
\gdef\FV@EscVDetok@ScanCont#1#2{%
\if\relax\detokenize{#1}\relax%
\expandafter\@gobble%
\else%
\expandafter\@firstofone%
\fi%
{\expandafter\FV@EscVDetok@ScanGroup\@gobble#1{\FV@<Sentinel>}}%
%<-catcode 12 space
\FV@EscVDetok@Scan{}#2\FV@<Sentinel>}%
\endgroup
\gdef\FV@EscVDetok@ScanGroup#1#{%
\FV@EscVDetok@ScanToken#1\FV@Sentinel
\FV@EscVDetok@ScanGroup@i}
\gdef\FV@EscVDetok@ScanGroup@i#1{%
\if\relax\detokenize{#1}\relax
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi
{\FV@EscVDetok@ScanEmptyGroup}%
{\FV@EscVDetok@ScanGroup@ii{}#1\FV@<Sentinel>^^C}}
\begingroup
\catcode`\(=1
\catcode`\)=2
\catcode`\{=12
\catcode`\}=12
\gdef\FV@EscVDetok@ScanEmptyGroup({}\FV@EscVDetok@ScanGroup)
\endgroup
\begingroup
\catcode`\(=1
\catcode`\)=2
\catcode`\{=12
\catcode`\}=12
\gdef\FV@EscVDetok@ScanGroup@ii#1\FV@<Sentinel>#2^^C(%
\if\relax\detokenize(#2)\relax
\expandafter\@firstofone
\else
\expandafter\@gobble
\fi
({\FV@EscVDetok@Scan#1^^C \FV@<Sentinel>}\FV@EscVDetok@ScanGroup))
\endgroup
\gdef\FV@EscVDetok@ScanToken#1{%
\ifx\FV@Sentinel#1%
\expandafter\@gobble
\else
\expandafter\@firstofone
\fi
{\expandafter\FV@EscVDetok@ScanToken@i\detokenize{#1}^^C \FV@<Sentinel>}}
\gdef\FV@EscVDetok@ScanToken@i#1 #2\FV@<Sentinel>{%
\if\relax\detokenize{#2}\relax
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi
{\FV@EscVDetok@ScanTokenNoSpace#1}%
{\FV@EscVDetok@ScanTokenWithSpace{#1}}}
\gdef\FV@EscVDetok@ScanTokenNoSpace#1#2^^C{%
\if\relax\detokenize{#2}\relax
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi
{#1\FV@EscVDetok@ScanToken}%
{#2\FV@EscVDetok@ScanToken}}
\gdef\FV@REscVDetok@ScanTokenNoSpace#1#2^^C{%
\if\relax\detokenize{#2}\relax
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi
{#1\FV@EscVDetok@ScanToken}%
{\ifcsname FV@Special:\detokenize{#2}\endcsname#2\else\noexpand\FV@<InvalidEscape>\fi
\FV@EscVDetok@ScanToken}}
\gdef\FV@EscVDetok@ScanTokenWithSpace#1{%
\if\relax\detokenize{#1}\relax
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi
{\FV@EscVDetok@ScanTokenActiveSpace}%
{\FV@EscVDetok@ScanTokenWithSpace@i#1\FV@<Sentinel>}}
\begingroup
\catcode`\ =12%
\gdef\FV@EscVDetok@ScanTokenActiveSpace{ \FV@EscVDetok@ScanToken}%
\endgroup
\gdef\FV@EscVDetok@ScanTokenWithSpace@i#1#2\FV@<Sentinel>{%
\if\relax\detokenize{#2}\relax
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi
{\FV@EscVDetok@ScanTokenEscSpace{#1}}%
{\FV@EscVDetok@ScanTokenCW{#1}{#2}}}
\gdef\FV@REscVDetok@ScanTokenWithSpace@i#1#2\FV@<Sentinel>{%
\if\relax\detokenize{#2}\relax
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi
{\FV@EscVDetok@ScanTokenEscSpace{#1}}%
{\noexpand\FV@<InvalidEscape>\FV@EscVDetok@ScanToken}}
\begingroup
\catcode`\ =12%
\gdef\FV@EscVDetok@ScanTokenEscSpace#1{ \FV@EscVDetok@ScanToken}%
\endgroup
\begingroup
\catcode`\ =12%
\gdef\FV@EscVDetok@ScanTokenCW#1#2#3{%
\ifcat\noexpand#2a%
\expandafter\@firstoftwo%
\else%
\expandafter\@secondoftwo%
\fi%
{#2 \FV@EscVDetok@ScanToken#3}%
{#2\FV@EscVDetok@ScanToken#3}}
\endgroup
\gdef\FVExtraPDFStringEscapedVerbatimDetokenize#1{%
\FV@PDFStrEscVDetok@Scan{}#1^^C \FV@<Sentinel>}
\gdef\FV@PDFStrEscVDetok@Scan#1 #2\FV@<Sentinel>{%
\if\relax\detokenize{#2}\relax
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi
{\FV@PDFStrEscVDetok@ScanEnd#1}%
{\FV@PDFStrEscVDetok@ScanCont{#1}{#2}}}
\gdef\FV@PDFStrEscVDetok@ScanEnd#1^^C{%
\if\relax\detokenize{#1}\relax
\expandafter\@gobble
\else
\expandafter\@firstofone
\fi
{\expandafter\FV@PDFStrEscVDetok@ScanGroup\@gobble#1{\FV@<Sentinel>}}}
\begingroup
\catcode`\!=0\relax
\catcode`\\=12!relax
!gdef!FV@PDFStrEscVDetok@ScanCont#1#2{%
!if!relax!detokenize{#1}!relax
!expandafter!@gobble
!else
!expandafter!@firstofone
!fi
{!expandafter!FV@PDFStrEscVDetok@ScanGroup!@gobble#1{!FV@<Sentinel>}}%
\040%<-space
!FV@PDFStrEscVDetok@Scan{}#2!FV@<Sentinel>}%
!catcode`!\=0!relax
\endgroup
\gdef\FV@PDFStrEscVDetok@ScanGroup#1#{%
\FV@PDFStrEscVDetok@ScanToken#1\FV@Sentinel
\FV@PDFStrEscVDetok@ScanGroup@i}
\gdef\FV@PDFStrEscVDetok@ScanGroup@i#1{%
\if\relax\detokenize{#1}\relax
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi
{\FV@PDFStrEscVDetok@ScanEmptyGroup}%
{\FV@PDFStrEscVDetok@ScanGroup@ii{}#1\FV@<Sentinel>^^C}}
\begingroup
\catcode`\(=1
\catcode`\)=2
\catcode`\{=12
\catcode`\}=12
\gdef\FV@PDFStrEscVDetok@ScanEmptyGroup({}\FV@PDFStrEscVDetok@ScanGroup)
\endgroup
\begingroup
\catcode`\(=1
\catcode`\)=2
\catcode`\{=12
\catcode`\}=12
\gdef\FV@PDFStrEscVDetok@ScanGroup@ii#1\FV@<Sentinel>#2^^C(%
\if\relax\detokenize(#2)\relax
\expandafter\@firstofone
\else
\expandafter\@gobble
\fi
({\FV@PDFStrEscVDetok@Scan#1^^C \FV@<Sentinel>}\FV@PDFStrEscVDetok@ScanGroup))
\endgroup
\gdef\FV@PDFStrEscVDetok@ScanToken#1{%
\ifx\FV@Sentinel#1%
\expandafter\@gobble
\else
\expandafter\@firstofone
\fi
{\expandafter\FV@PDFStrEscVDetok@ScanToken@i\detokenize{#1}^^C \FV@<Sentinel>}}
\gdef\FV@PDFStrEscVDetok@ScanToken@i#1 #2\FV@<Sentinel>{%
\if\relax\detokenize{#2}\relax
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi
{\FV@PDFStrEscVDetok@ScanTokenNoSpace#1}%
{\FV@PDFStrEscVDetok@ScanTokenWithSpace{#1}}}
\gdef\FV@PDFStrEscVDetok@ScanTokenNoSpace#1#2^^C{%
\if\relax\detokenize{#2}\relax
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi
{\FVExtraPDFStringEscapeChar{#1}\FV@PDFStrEscVDetok@ScanToken}%
{\FVExtraPDFStringEscapeChar{#2}\FV@PDFStrEscVDetok@ScanToken}}
\gdef\FV@PDFStrEscVDetok@ScanTokenWithSpace#1{%
\if\relax\detokenize{#1}\relax
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi
{\FV@PDFStrEscVDetok@ScanTokenActiveSpace}%
{\FV@PDFStrEscVDetok@ScanTokenWithSpace@i#1\FV@<Sentinel>}}
\begingroup
\catcode`\!=0\relax
\catcode`\\=12!relax
!gdef!FV@PDFStrEscVDetok@ScanTokenActiveSpace{\040!FV@PDFStrEscVDetok@ScanToken}%
!catcode`!\=0!relax
\endgroup
\gdef\FV@PDFStrEscVDetok@ScanTokenWithSpace@i#1#2\FV@<Sentinel>{%
\if\relax\detokenize{#2}\relax
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi
{\FV@PDFStrEscVDetok@ScanTokenEscSpace{#1}}%
{\FV@PDFStrEscVDetok@ScanTokenCW{#1}{#2}}}
\begingroup
\catcode`\!=0\relax
\catcode`\\=12!relax
!gdef!FV@PDFStrEscVDetok@ScanTokenEscSpace#1{\040!FV@PDFStrEscVDetok@ScanToken}
!catcode`!\=0!relax
\endgroup
\begingroup
\catcode`\ =12%
\gdef\FV@PDFStrEscVDetok@ScanTokenCW#1#2#3{%
\ifcat\noexpand#2a%
\expandafter\@firstoftwo%
\else%
\expandafter\@secondoftwo%
\fi%
{\FVExtraPDFStringEscapeChars{#2} \FV@PDFStrEscVDetok@ScanToken#3}%
{\FVExtraPDFStringEscapeChars{#2}\FV@PDFStrEscVDetok@ScanToken#3}}
\endgroup
\gdef\FVExtraDetokenizeVArg#1#2{%
\begingroup
\catcode`\^^C=\active
\let^^C\FV@Sentinel
\edef\FV@Tmp{\FVExtraVerbatimDetokenize{#2}}%
\expandafter\FV@DetokenizeVArg@i\expandafter{\FV@Tmp}{#1}}
\gdef\FV@DetokenizeVArg@i#1#2{%
\endgroup
#2{#1}}
\gdef\FVExtraDetokenizeEscVArg#1#2{%
\begingroup
\catcode`\^^C=\active
\let^^C\FV@Sentinel
\edef\FV@Tmp{\FVExtraEscapedVerbatimDetokenize{#2}}%
\expandafter\FV@DetokenizeVArg@i\expandafter{\FV@Tmp}{#1}}
\gdef\FVExtraDetokenizeREscVArg#1#2{%
\begingroup
\catcode`\^^C=\active
\let^^C\FV@Sentinel
\let\FV@EscVDetok@ScanTokenNoSpace\FV@REscVDetok@ScanTokenNoSpace
\let\FV@EscVDetok@ScanTokenWithSpace@i\FV@REscVDetok@ScanTokenWithSpace@i
\edef\FV@Tmp{\FVExtraEscapedVerbatimDetokenize{#2}}%
\expandafter\FV@DetokenizeREscVArg@InvalidEscapeCheck\FV@Tmp\FV@<InvalidEscape>\FV@<Sentinel>
\expandafter\FV@DetokenizeVArg@i\expandafter{\FV@Tmp}{#1}}
\gdef\FV@DetokenizeREscVArg@InvalidEscapeCheck#1\FV@<InvalidEscape>#2\FV@<Sentinel>{%
\if\relax\detokenize{#2}\relax
\expandafter\@gobble
\else
\expandafter\@firstofone
\fi
{\PackageError{fvextra}%
{Invalid backslash escape; only escape ASCII symbols and punctuation}%
{Only use \@backslashchar <char> for ASCII symbols and punctuation}}}
\endgroup
\begingroup
\catcode`\^^C=\active%
\catcode`\^^M=\active%
\gdef\FV@RetokVArg@Read#1^^C^^M{%
\endgroup%
\def\FV@TmpRetoked{#1}}%
\endgroup
\begingroup
\catcode`\^^B=\active
\catcode`\^^C=\active
\gdef\FVExtraRetokenizeVArg#1#2#3{%
\begingroup
#2%
\catcode`\^^B=\active
\catcode`\^^C=\active
\catcode`\^^M=\active
\let^^B\FV@RetokVArg@Read
\let^^C\@empty
\FV@DefEOLEmpty
\scantokens{^^B#3^^C}%
\expandafter\FV@RetokenizeVArg@i\expandafter{\FV@TmpRetoked}{#1}}%
\gdef\FV@RetokenizeVArg@i#1#2{%
#2{#1}}
\endgroup
\let\FV@FormattingPrep@PreHook\@empty
\let\FV@FormattingPrep@PostHook\@empty
\expandafter\def\expandafter\FV@FormattingPrep\expandafter{%
\expandafter\FV@FormattingPrep@PreHook\FV@FormattingPrep\FV@FormattingPrep@PostHook}
\let\FV@PygmentsHook\relax
\g@addto@macro\FV@FormattingPrep@PreHook{\FV@PygmentsHook}
\edef\FV@hashchar{\string#}
\edef\FV@dollarchar{\string$}
\edef\FV@ampchar{\string&}
\edef\FV@underscorechar{\string_}
\edef\FV@caretchar{\string^}
\edef\FV@tildechar{\string~}
\edef\FV@leftsquarebracket{\string[}
\edef\FV@rightsquarebracket{\string]}
\edef\FV@commachar{\string,}
\newcommand{\FV@EscChars}{%
\let\#\FV@hashchar
\let\%\@percentchar
\let\{\@charlb
\let\}\@charrb
\let\$\FV@dollarchar
\let\&\FV@ampchar
\let\_\FV@underscorechar
\let\^\FV@caretchar
\let\\\@backslashchar
\let~\FV@tildechar
\let\~\FV@tildechar
\let\[\FV@leftsquarebracket
\let\]\FV@rightsquarebracket
\let\,\FV@commachar
} %$ <- highlighting
\def\FV@InlineKeyValues{}
\def\fvinlineset#1{%
\expandafter\def\expandafter\FV@InlineKeyValues\expandafter{%
\FV@InlineKeyValues#1,}}
\def\FV@UseInlineKeyValues{%
\expandafter\fvset\expandafter{\FV@InlineKeyValues}%
\FV@ApplyBreakAnywhereInlineStretch}
\newbool{FV@extra}
\define@booleankey{FV}{extra}%
{\booltrue{FV@extra}}%
{\boolfalse{FV@extra}}
\fvset{extra=true}
\def\FancyVerbFormatInline#1{#1}
\def\Verb{%
\FVExtraRobustCommand\RobustVerb\FVExtraUnexpandedReadStarOArgBVArg}
\protected\def\RobustVerb{\FV@Command{}{Verb}}
\FVExtrapdfstringdefDisableCommands{%
\def\RobustVerb{}}
\let\FVC@Verb@FV\FVC@Verb
\def\FVC@Verb{%
\begingroup
\FV@UseInlineKeyValues\FV@UseKeyValues
\ifFV@extra
\expandafter\endgroup\expandafter\FVC@Verb@Extra
\else
\expandafter\endgroup\expandafter\FVC@Verb@FV
\fi}
\def\FVC@Verb@Extra{%
\ifbool{FVExtraRobustCommandExpanded}%
{\@ifnextchar\bgroup
{\FVC@Verb@Extra@i}%
{\PackageError{fvextra}%
{\string\Verb\space delimiters must be paired curly braces in this context}%
{Use curly braces as delimiters}}}%
{\FVC@Verb@Extra@i}}
\def\FVC@Verb@Extra@i{%
\begingroup
\ifbool{FV@vargsingleline}%
{\let\FV@Reader\FVExtraReadVArgSingleLine}%
{\let\FV@Reader\FVExtraReadVArg}%
\FV@Reader{%
\FV@UseInlineKeyValues\FV@UseKeyValues\FV@FormattingPrep
\FVExtraDetokenizeVArg{%
\FVExtraRetokenizeVArg{\FVC@Verb@Extra@ii}{\FV@CatCodes}}}}
\def\FVC@Verb@Extra@ii#1{%
\ifx\FancyVerbBackgroundColor\relax
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi
{\ifbool{FV@breaklines}%
{\FV@InsertBreaks{\FancyVerbFormatInline}{#1}}%
{\mbox{\FancyVerbFormatInline{#1}}}}%
{\setlength{\FV@TmpLength}{\fboxsep}%
\ifx\FancyVerbBackgroundColorPadding\relax
\setlength{\fboxsep}{0pt}%
\else
\setlength{\fboxsep}{\FancyVerbBackgroundColorPadding}%
\fi
\colorbox{\FancyVerbBackgroundColor}{%
\setlength{\fboxsep}{\FV@TmpLength}%
\FancyVerbBackgroundColorVPhantom\FancyVerbFormatInline{#1}}}%
\endgroup}
\let\FVC@SaveVerb@FV\FVC@SaveVerb
\def\FVC@SaveVerb{%
\begingroup
\FV@UseInlineKeyValues\FV@UseKeyValues
\ifFV@extra
\expandafter\endgroup\expandafter\FVC@SaveVerb@Extra
\else
\expandafter\endgroup\expandafter\FVC@SaveVerb@FV
\fi}
\def\FVC@SaveVerb@Extra#1{%
\@namedef{FV@SV@#1}{}%
\@namedef{FV@SVRaw@#1}{}%
\begingroup
\ifbool{FV@vargsingleline}%
{\let\FV@Reader\FVExtraReadVArgSingleLine}%
{\let\FV@Reader\FVExtraReadVArg}%
\FV@Reader{%
\FVC@SaveVerb@Extra@i{#1}}}
\def\FVC@SaveVerb@Extra@i#1#2{%
\FV@UseInlineKeyValues\FV@UseKeyValues\FV@FormattingPrep
\FVExtraDetokenizeVArg{%
\FVExtraRetokenizeVArg{\FVC@SaveVerb@Extra@ii{#1}{#2}}{\FV@CatCodes}}{#2}}
\def\FVC@SaveVerb@Extra@ii#1#2#3{%
\global\let\FV@AfterSave\FancyVerbAfterSave
\endgroup
\@namedef{FV@SV@#1}{#3}%
\@namedef{FV@SVRaw@#1}{#2}%
\FV@AfterSave}%
\newbool{FV@retokenize}
\define@booleankey{FV}{retokenize}%
{\booltrue{FV@retokenize}}{\boolfalse{FV@retokenize}}
\def\UseVerb{%
\FVExtraRobustCommand\RobustUseVerb\FVExtraUseVerbUnexpandedReadStarOArgMArg}
\protected\def\RobustUseVerb{\FV@Command{}{UseVerb}}
\FVExtrapdfstringdefDisableCommands{%
\def\RobustUseVerb{}}
\let\FVC@UseVerb@FV\FVC@UseVerb
\def\FVC@UseVerb{%
\begingroup
\FV@UseInlineKeyValues\FV@UseKeyValues
\ifFV@extra
\expandafter\endgroup\expandafter\FVC@UseVerb@Extra
\else
\expandafter\endgroup\expandafter\FVC@UseVerb@FV
\fi}
\def\FVC@UseVerb@Extra#1{%
\@ifundefined{FV@SV@#1}%
{\FV@Error{Short verbatim text never saved to name `#1'}\FV@eha}%
{\begingroup
\FV@UseInlineKeyValues\FV@UseKeyValues\FV@FormattingPrep
\ifbool{FV@retokenize}%
{\expandafter\let\expandafter\FV@Tmp\csname FV@SVRaw@#1\endcsname
\expandafter\FV@UseVerb@Extra@Retok\expandafter{\FV@Tmp}}%
{\expandafter\let\expandafter\FV@Tmp\csname FV@SV@#1\endcsname
\expandafter\FV@UseVerb@Extra\expandafter{\FV@Tmp}}}}
\def\FV@UseVerb@Extra@Retok#1{%
\FVExtraDetokenizeVArg{%
\FVExtraRetokenizeVArg{\FV@UseVerb@Extra}{\FV@CatCodes}}{#1}}
\let\FV@UseVerb@Extra\FVC@Verb@Extra@ii
\def\EscVerb{%
\FVExtraRobustCommand\RobustEscVerb\FVExtraUnexpandedReadStarOArgBEscVArg}
\protected\def\RobustEscVerb{\FV@Command{}{EscVerb}}
\FVExtrapdfstringdefDisableCommands{%
\def\RobustEscVerb{}}
\def\FVC@EscVerb{%
\@ifnextchar\bgroup
{\FVC@EscVerb@i}%
{\PackageError{fvextra}%
{Invalid argument; argument must be delimited by paired curly braces}%
{Delimit argument with curly braces}}}
\def\FVC@EscVerb@i#1{%
\begingroup
\FV@UseInlineKeyValues\FV@UseKeyValues\FV@FormattingPrep
\FVExtraDetokenizeREscVArg{%
\FVExtraRetokenizeVArg{\FVC@EscVerb@ii}{\FV@CatCodes}}{#1}}
\let\FVC@EscVerb@ii\FVC@Verb@Extra@ii
\def\VerbEnv{%
\ifcsname @currenvir\endcsname
\ifx\@currenvir\@empty
\PackageError{fvextra}{VerbEnv is an environment}{VerbEnv is an environment}%
\else
\ifx\@currenvir\relax
\PackageError{fvextra}{VerbEnv is an environment}{VerbEnv is an environment}%
\fi
\fi
\else
\PackageError{fvextra}{VerbEnv is an environment}{VerbEnv is an environment}%
\fi
\VerbatimEnvironment
\FVExtraReadOArgBeforeVEnv{\expandafter\VerbEnv@i\expandafter{\FV@EnvironName}}}
\def\VerbEnv@i#1#2{%
\begingroup
\let\do\@makeother\FVExtraDoSpecials
\catcode`\ =\active
\catcode`\^^I=\active
\catcode`\^^M=\active
\VerbEnv@ii{#1}{#2}}
\begingroup
\catcode`\!=0
\catcode`\<=1
\catcode`\>=2
!catcode`!\=12
!catcode`!{=12
!catcode`!}=12
!catcode`!^^M=!active%
!gdef!VerbEnv@ii#1#2#3^^M<%
!endgroup%
!def!VerbEnv@CheckLine##1\end{#1}##2!FV@Sentinel<%
!if!relax!detokenize<##2>!relax%
!else%
!PackageError<fvextra><Missing environment contents><Missing environment contents>%
!let!VerbEnv@iii!VerbEnv@iii@Error%
!fi>%
!VerbEnv@CheckLine#3\end{#1}!FV@Sentinel%
!VerbEnv@iii<#1><#2><#3>>%
!endgroup%
\def\VerbEnv@iii@Error#1#2#3{}
\def\VerbEnv@iii#1#2#3{%
\begingroup
\let\do\@makeother\FVExtraDoSpecials
\catcode`\ =10\relax
\catcode`\^^M=\active
\VerbEnv@iv{#1}{#2}{#3}}
\begingroup
\catcode`\!=0
\catcode`\<=1
\catcode`\>=2
!catcode`!\=12
!catcode`!{=12
!catcode`!}=12
!catcode`!^^M=!active%
!gdef!VerbEnv@iv#1#2#3#4^^M<%
!endgroup%
!def!VerbEnv@CheckEndDelim##1\end{#1}##2!FV@Sentinel<%
!if!relax!detokenize<##2>!relax%
!PackageError<fvextra><Missing end for environment !FV@EnvironName><Add environment end>%
!let!VerbEnv@v!VerbEnv@v@Error%
!else%
!VerbEnv@CheckEndLeading##1!FV@Sentinel%
!VerbEnv@CheckEndTrailing##2!FV@Sentinel%
!fi>%
!def!VerbEnv@CheckEndTrailing##1\end{#1}!FV@Sentinel<%
!if!relax!detokenize<##1>!relax%
!else%
!PackageError<fvextra>%
<Discarded text after end of environment !FV@EnvironName>%
<Discarded text after end of environment !FV@EnvironName>%
!let!VerbEnv@v!VerbEnv@v@Error%
!fi>%
!VerbEnv@CheckEndDelim#4\end{#1}!FV@Sentinel%
!VerbEnv@v<#2><#3>>%
!endgroup
\def\VerbEnv@CheckEndLeading{%
\FVExtra@ifnextcharAny\@sptoken%
{\VerbEnv@CheckEndLeading@Continue}%
{\ifx\@let@token\FV@Sentinel
\expandafter\VerbEnv@CheckEndLeading@End
\else
\expandafter\VerbEnv@CheckEndLeading@EndError
\fi}}
\def\VerbEnv@CheckEndLeading@Continue#1{%
\VerbEnv@CheckEndLeading}
\def\VerbEnv@CheckEndLeading@End#1\FV@Sentinel{}
\def\VerbEnv@CheckEndLeading@EndError{%
\PackageError{fvextra}%
{Discarded text before end of environment \FV@EnvironName}%
{Discarded text before end of environment \FV@EnvironName}%
\let\VerbEnv@v\VerbEnv@v@Error}
\def\VerbEnv@v@Error#1#2{}
\def\VerbEnv@v#1#2{%
\Verb[#1]{#2}%
\expandafter\end\expandafter{\FV@EnvironName}}
\def\endVerbEnv{\global\let\FV@EnvironName\relax}
\define@key{FV}{writefilehandle}{%
\FV@SetWrite#1\FV@Sentinel}
\def\FV@SetWrite#1#2\FV@Sentinel{%
\let\FancyVerbWriteFileHandle\relax
\if\relax\detokenize{#2}\relax
\let\FancyVerbWriteFileHandle#1\relax
\fi
\ifx\FancyVerbWriteFileHandle\relax
\PackageError{fvextra}%
{Missing or invalid file handle for write}%
{Need file handle from \string\newwrite}%
\fi}
\let\FancyVerbWriteFileHandle\relax
\define@key{FV}{writer}{%
\let\FV@Writer#1\relax}
\def\FancyVerbDefaultWriter#1{%
\immediate\write\FancyVerbWriteFileHandle{\detokenize{#1}}}
\fvset{writer=\FancyVerbDefaultWriter}
\newcounter{FancyVerbWriteLine}
\def\VerbatimWrite{%
\FV@Environment
{codes=,commandchars=none,commentchar=none,defineactive,%
gobble=0,formatcom=,firstline,lastline}%
{VerbatimWrite}}
\def\FVB@VerbatimWrite{%
\@bsphack
\begingroup
\setcounter{FancyVerbWriteLine}{0}%
\let\c@FancyVerbLine\c@FancyVerbWriteLine
\FV@UseKeyValues
\FV@DefineWhiteSpace
\def\FV@Space{\space}%
\FV@DefineTabOut
\let\FV@ProcessLine\FV@Writer
\let\FV@FontScanPrep\relax
\let\@noligs\relax
\FancyVerbDefineActive
\FancyVerbFormatCom
\FV@Scan}
\def\FVE@VerbatimWrite{%
\endgroup
\@esphack}
\def\endVerbatimWrite{\FVE@VerbatimWrite}
\define@key{FV}{afterbuffer}{%
\def\FV@afterbuffer{#1}}
\fvset{afterbuffer=}
\def\FancyVerbBufferIndex{0}
\define@key{FV}{bufferer}{%
\let\FV@Bufferer=#1\relax}
\def\FancyVerbDefaultBufferer#1{%
\expandafter\xdef\csname\FancyVerbBufferLineName\FancyVerbBufferIndex\endcsname{%
\detokenize{#1}}}
\fvset{bufferer=\FancyVerbDefaultBufferer}
\define@key{FV}{bufferlengthname}{%
\ifcsname#1\endcsname
\else
\expandafter\xdef\csname#1\endcsname{0}%
\fi
\def\FV@bufferlengthname{#1}%
\expandafter\def\expandafter\FV@bufferlengthmacro\expandafter{%
\csname#1\endcsname}}
\fvset{bufferlengthname=FancyVerbBufferLength}
\define@key{FV}{bufferlinename}{%
\def\FancyVerbBufferLineName{#1}}
\fvset{bufferlinename=FancyVerbBufferLine}
\define@key{FV}{buffername}{%
\fvset{bufferlengthname=#1length,bufferlinename=#1line}}
\newbool{FV@globalbuffer}
\define@booleankey{FV}{globalbuffer}%
{\booltrue{FV@globalbuffer}}%
{\boolfalse{FV@globalbuffer}}
\fvset{globalbuffer=false}
\newcounter{FancyVerbBufferLine}
\newbool{FV@globalbuffer@tmp}
\let\FV@oldbufferlength\relax
\let\FV@bufferlengthmacro@tmp\relax
\let\FancyVerbBufferLineName@tmp\relax
\let\FV@afterbuffer@tmp\relax
\def\VerbatimBuffer{%
\FV@Environment
{codes=,commandchars=none,commentchar=none,defineactive,%
gobble=0,formatcom=,firstline,lastline}%
{VerbatimBuffer}}
\def\FVB@VerbatimBuffer{%
\@bsphack
\begingroup
\FV@UseKeyValues
\setcounter{FancyVerbBufferLine}{\FV@bufferlengthmacro}%
\let\c@FancyVerbLine\c@FancyVerbBufferLine
\xdef\FancyVerbBufferIndex{\FV@bufferlengthmacro}%
\ifbool{FV@globalbuffer}%
{\global\booltrue{FV@globalbuffer@tmp}}%
{\global\boolfalse{FV@globalbuffer@tmp}%
\expandafter\global\expandafter\let\expandafter\FV@oldbufferlength\FV@bufferlengthmacro
\global\let\FV@bufferlengthmacro@tmp\FV@bufferlengthmacro
\global\let\FancyVerbBufferLineName@tmp\FancyVerbBufferLineName}%
\global\let\FV@afterbuffer@tmp\FV@afterbuffer
\FV@DefineWhiteSpace
\def\FV@ProcessLine{%
\xdef\FancyVerbBufferIndex{\the\numexpr\FancyVerbBufferIndex+1\relax}%
\FV@Bufferer}%
\let\FV@FontScanPrep\relax
\let\@noligs\relax
\FancyVerbDefineActive
\FancyVerbFormatCom
\FV@Scan}
\def\FVE@VerbatimBuffer{%
\expandafter\xdef\FV@bufferlengthmacro{\FancyVerbBufferIndex}%
\gdef\FancyVerbBufferIndex{0}%
\endgroup
\@esphack
\begingroup
\FV@afterbuffer@tmp
\global\let\FV@afterbuffer@tmp\relax
\endgroup
\ifbool{FV@globalbuffer@tmp}%
{}%
{\loop\unless\ifnum\FV@bufferlengthmacro@tmp=\FV@oldbufferlength\relax
\expandafter\global\expandafter\let\csname
\FancyVerbBufferLineName@tmp\FV@bufferlengthmacro@tmp
\endcsname\FV@Undefined
\expandafter\xdef\FV@bufferlengthmacro@tmp{%
\the\numexpr\FV@bufferlengthmacro@tmp-1\relax}%
\repeat
\global\let\FV@bufferlengthmacro@tmp\relax
\global\let\FancyVerbBufferLineName@tmp\relax}%
\global\let\FV@oldbufferlength\relax}
\def\endVerbatimBuffer{\FVE@VerbatimBuffer}
\define@key{FV}{insertenvname}{%
\def\FV@VerbatimInsertEnvName{#1}}
\fvset{insertenvname=Verbatim}
\def\FV@Environment@InsertBuffer#1#2{%
\def\FV@KeyValues{#1}%
\FV@GetKeyValues{\@nameuse{FVB@#2}}}
\def\FV@Scan@InsertBuffer{%
\FV@CatCodes
\xdef\FV@EnvironName{\FV@VerbatimInsertEnvName}%
\ifnum\FV@bufferlengthmacro=\z@\relax
\PackageError{fvextra}%
{Buffer length macro \expandafter\string\FV@bufferlengthmacro\space is invalid or zero}%
{}%
\let\FV@GetLine\relax
\fi
\FV@BeginScanning}%
\def\VerbatimInsertBuffer@def@FV@Line#1{%
\FVExtraRetokenizeVArg{\def\FV@Line}{}{#1}}
\def\FancyVerbGetLine@VerbatimInsertBuffer{%
\ifnum\FancyVerbBufferIndex>\FV@bufferlengthmacro\relax
\global\let\FV@EnvironName\relax
\let\next\relax
\else
\ifcsname\FancyVerbBufferLineName\FancyVerbBufferIndex\endcsname
\expandafter\let\expandafter\FV@Line@Buffer
\csname\FancyVerbBufferLineName\FancyVerbBufferIndex\endcsname
\expandafter\VerbatimInsertBuffer@def@FV@Line\expandafter{\FV@Line@Buffer}%
\def\next{\FV@PreProcessLine\FV@GetLine}%
\xdef\FancyVerbBufferIndex{\the\numexpr\FancyVerbBufferIndex+1\relax}%
\else
\def\next{%
\PackageError{fvextra}%
{Buffer with line macro named
"\FancyVerbBufferLineName\FancyVerbBufferIndex" does not exist}%
{Check bufferlinename, bufferlengthname, and globalbuffer settings}%
}%
\fi
\fi
\next}
\newcommand{\VerbatimInsertBuffer}[1][]{%
\begingroup
\let\FV@Scan\FV@Scan@InsertBuffer
\let\FV@CheckScan\relax
\let\FV@Environment\FV@Environment@InsertBuffer
\let\FancyVerbGetLine\FancyVerbGetLine@VerbatimInsertBuffer
\gdef\FancyVerbBufferIndex{1}%
\VerbatimInsertBuffer@i{#1}%
\gdef\FancyVerbBufferIndex{0}%
\endgroup
\@doendpe}
\begingroup
\catcode`\^^M=\active
\gdef\VerbatimInsertBuffer@i#1{%
\begingroup%
\fvset{#1}%
\global\let\FV@CurrentVerbatimInsertEnvName\FV@VerbatimInsertEnvName%
\endgroup%
\csname \FV@CurrentVerbatimInsertEnvName\endcsname[#1]^^M%
\csname end\FV@CurrentVerbatimInsertEnvName\endcsname%
\global\let\FV@CurrentVerbatimInsertEnvName\FV@Undefined}%
\endgroup
\newcommand{\VerbatimClearBuffer}[1][]{%
\begingroup
\def\FV@KeyValues{#1}%
\FV@UseKeyValues
\xdef\FancyVerbBufferIndex{\FV@bufferlengthmacro}%
\expandafter\xdef\FV@bufferlengthmacro{0}%
\loop\unless\ifnum\FancyVerbBufferIndex<1\relax
\expandafter\global\expandafter\let
\csname\FancyVerbBufferLineName\FancyVerbBufferIndex\endcsname
\FV@Undefined
\xdef\FancyVerbBufferIndex{\the\numexpr\FancyVerbBufferIndex-1\relax}%
\repeat
\gdef\FancyVerbBufferIndex{0}%
\endgroup}
\def\FV@Command#1#2{%
\FVExtra@ifstarVArg
{\def\FV@KeyValues{#1,showspaces,showtabs}\FV@@Command{#2}}%
{\def\FV@KeyValues{#1}\FV@@Command{#2}}}
\def\FV@@Command#1{%
\FVExtra@ifnextcharVArg[%
{\FV@GetKeyValues{\@nameuse{FVC@#1}}}%
{\@nameuse{FVC@#1}}}
\def\@CustomVerbatimCommand#1#2#3#4{%
\begingroup\fvset{#4}\endgroup
\@ifundefined{FVC@#3}%
{\FV@Error{Command `\string#3' is not a FancyVerb command.}\@eha}%
{\ifcsname Robust#3\endcsname
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi
{\expandafter\let\expandafter\@tempa\csname #3\endcsname
\def\@tempb##1##2##3{%
\expandafter\def\expandafter\@tempc\expandafter{%
\csname Robust\expandafter\@gobble\string#2\endcsname}%
\def\@tempd####1{%
#1{#2}{##1####1##3}}%
\expandafter\@tempd\@tempc
\expandafter\protected\expandafter\def\@tempc{\FV@Command{#4}{#3}}}%
\expandafter\@tempb\@tempa}%
{#1{#2}{\FV@Command{#4}{#3}}}}}
\def\FancyVerbSpace{%
\makebox[0.5em]{%
\kern.07em
\vrule height.3ex
\hrulefill
\vrule height.3ex
\kern.07em}}
\newcounter{FV@TrueTabGroupLevel}
\def\FV@@ObeyTabs#1{%
\let\FV@Space@Orig\FV@Space
\let\FV@Space\FV@Space@ObeyTabs
\edef\FV@TmpCurrentGroupLevel{\the\currentgrouplevel}%
\setcounter{FV@TrueTabGroupLevel}{\FV@TmpCurrentGroupLevel}%
\addtocounter{FV@TrueTabGroupLevel}{1}%
\setbox\FV@TabBox=\hbox{#1}\box\FV@TabBox
\let\FV@Space\FV@Space@Orig}
\def\FV@TrueTab{%
\ifnum\value{FV@TrueTabGroupLevel}=\the\currentgrouplevel\relax
\expandafter\FV@TrueTab@NoGroup
\else
\expandafter\FV@TrueTab@Group
\fi}
\let\FV@TrueTabSaveWidth\relax
\newcounter{FV@TrueTabCounter}
\def\FV@TrueTabSaveWidth@Save{%
\expandafter\xdef\csname FV@TrueTab:Width\arabic{FV@TrueTabCounter}\endcsname{%
\number\@tempdima}%
\stepcounter{FV@TrueTabCounter}}
\def\FV@TrueTab@NoGroup{%
\egroup
\@tempdima=\FV@ObeyTabSize sp\relax
\@tempcnta=\wd\FV@TabBox
\advance\@tempcnta\FV@@ObeyTabSize\relax
\divide\@tempcnta\@tempdima
\multiply\@tempdima\@tempcnta
\advance\@tempdima-\wd\FV@TabBox
\FV@TrueTabSaveWidth
\setbox\FV@TabBox=\hbox\bgroup
\unhbox\FV@TabBox\hbox to\@tempdima{\hss\FV@TabChar}}
\newbool{FV@ObeyTabs@Whitespace@Tab}
\def\FV@TrueTab@Group{%
\booltrue{FV@ObeyTabs@Whitespace@Tab}%
\gdef\FV@TmpWhitespace{\FV@FVTabToken}%
\FV@ObeyTabs@ScanWhitespace}
\def\FV@Space@ObeyTabs{%
\ifnum\value{FV@TrueTabGroupLevel}=\the\currentgrouplevel\relax
\expandafter\FV@Space@ObeyTabs@NoGroup
\else
\expandafter\FV@Space@ObeyTabs@Group
\fi}
\def\FV@Space@ObeyTabs@NoGroup{\FV@Space@Orig}
\def\FV@Space@ObeyTabs@Group{%
\boolfalse{FV@ObeyTabs@Whitespace@Tab}%
\gdef\FV@TmpWhitespace{\FV@FVSpaceToken}%
\FV@ObeyTabs@ScanWhitespace}
\def\FV@ObeyTabs@ScanWhitespace{%
\@ifnextchar\FV@FVSpaceToken%
{\FV@TrueTab@CaptureWhitespace@Space}%
{\ifx\@let@token\FV@FVTabToken
\expandafter\FV@TrueTab@CaptureWhitespace@Tab
\else
\expandafter\FV@ObeyTabs@ResolveWhitespace
\fi}}
\def\FV@TrueTab@CaptureWhitespace@Space#1{%
\g@addto@macro\FV@TmpWhitespace{\FV@FVSpaceToken}%
\FV@ObeyTabs@ScanWhitespace}
\def\FV@TrueTab@CaptureWhitespace@Tab#1{%
\booltrue{FV@ObeyTabs@Whitespace@Tab}%
\g@addto@macro\FV@TmpWhitespace{\FV@FVTabToken}%
\FV@ObeyTabs@ScanWhitespace}
\newbox\FV@TabBox@Group
\def\FV@TrueTab@Group@Expand{%
\egroup
\@tempdima=\FV@ObeyTabSize sp\relax
\@tempcnta=\wd\FV@TabBox@Group
\advance\@tempcnta\FV@@ObeyTabSize\relax
\divide\@tempcnta\@tempdima
\multiply\@tempdima\@tempcnta
\advance\@tempdima-\wd\FV@TabBox@Group
\FV@TrueTabSaveWidth
\setbox\FV@TabBox@Group=\hbox\bgroup
\unhbox\FV@TabBox@Group\hbox to\@tempdima{\hss\FV@TabChar}}
\def\FV@ObeyTabs@ResolveWhitespace{%
\let\FV@Space\FV@Space@Orig
\let\FV@Tab\FV@TrueTab@Group@Expand
\expandafter\FV@ObeyTabs@ResolveWhitespace@i\expandafter{\FV@TmpWhitespace}%
\let\FV@Space\FV@Space@ObeyTabs
\let\FV@Tab\FV@TrueTab}
\def\FV@ObeyTabs@ResolveWhitespace@i#1{%
\ifbool{FV@ObeyTabs@Whitespace@Tab}%
{\setbox\FV@TabBox@Group=\hbox{#1}\box\FV@TabBox@Group}%
{#1}}
\def\FancyVerbMathSpace{ }
\def\FV@SetupMathSpace{%
\everymath\expandafter{\the\everymath\let\FV@Space\FancyVerbMathSpace}}
\g@addto@macro\FV@FormattingPrep@PreHook{\FV@SetupMathSpace}
\begingroup
\catcode`\'=\active
\catcode`\^=7
\gdef\FV@pr@m@s{%
\ifx'\@let@token
\expandafter\pr@@@s
\else
\ifx^\@let@token
\expandafter\expandafter\expandafter\pr@@@t
\else
\egroup
\fi
\fi}
\endgroup
\def\FV@SetupMathFont{%
\everymath\expandafter{\the\everymath\fontfamily{\familydefault}\selectfont}}
\g@addto@macro\FV@FormattingPrep@PreHook{\FV@SetupMathFont}
\def\FV@SetupMathLigs{%
\everymath\expandafter{%
\the\everymath
\let\pr@m@s\FV@pr@m@s
\begingroup\lccode`\~=`\'\lowercase{\endgroup\def~}{%
\ifmmode\expandafter\active@math@prime\else'\fi}%
\begingroup\lccode`\~=`\`\lowercase{\endgroup\def~}{`}%
\begingroup\lccode`\~=`\<\lowercase{\endgroup\def~}{<}%
\begingroup\lccode`\~=`\>\lowercase{\endgroup\def~}{>}%
\begingroup\lccode`\~=`\,\lowercase{\endgroup\def~}{,}%
\begingroup\lccode`\~=`\-\lowercase{\endgroup\def~}{-}%
}%
}
\g@addto@macro\FV@FormattingPrep@PreHook{\FV@SetupMathLigs}
\def\FV@BeginListFrame@Lines{%
\begingroup
\lineskip\z@skip
\FV@SingleFrameLine{\z@}%
\kern-0.5\baselineskip\relax
\baselineskip\z@skip
\kern\FV@FrameSep\relax
\penalty\@M
\endgroup}
\define@key{FV}{rulecolor}{%
\ifstrempty{#1}%
{\let\FancyVerbRuleColor\relax}%
{\ifstrequal{#1}{none}%
{\let\FancyVerbRuleColor\relax}%
{\def\@tempa{#1}%
\FV@KVProcess@RuleColor#1\FV@Undefined}}}
\def\FV@KVProcess@RuleColor#1#2\FV@Undefined{%
\ifx#1\color
\else
\expandafter\def\expandafter\@tempa\expandafter{%
\expandafter\color\expandafter{\@tempa}}%
\fi
\let\FancyVerbRuleColor\@tempa}
\fvset{rulecolor=none}
\define@key{FV}{fillcolor}{%
\ifstrempty{#1}%
{\let\FancyVerbFillColor\relax}%
{\ifstrequal{#1}{none}%
{\let\FancyVerbFillColor\relax}%
{\def\@tempa{#1}%
\FV@KVProcess@FillColor#1\FV@Undefined}}}
\def\FV@KVProcess@FillColor#1#2\FV@Undefined{%
\ifx#1\color
\else
\expandafter\def\expandafter\@tempa\expandafter{%
\expandafter\color\expandafter{\@tempa}}%
\fi
\let\FancyVerbFillColor\@tempa}
\fvset{fillcolor=none}
\define@booleankey{FV}{linenos}%
{\@nameuse{FV@Numbers@left}}{\@nameuse{FV@Numbers@none}}
\define@key{FV}{tab}{\def\FancyVerbTab{#1}}
\define@key{FV}{tabcolor}%
{\ifstrempty{#1}%
{\let\FV@TabColor\relax}%
{\ifstrequal{#1}{none}%
{\let\FV@TabColor\relax}%
{\def\FV@TabColor{\textcolor{#1}}}}}
\define@booleankey{FV}{showtabs}%
{\def\FV@TabChar{\FV@TabColor{\FancyVerbTab}}}%
{\let\FV@TabChar\relax}
\fvset{tabcolor=none, showtabs=false}
\newbool{FV@showspaces}
\define@booleankey{FV}{showspaces}%
{\booltrue{FV@showspaces}}%
{\boolfalse{FV@showspaces}}
\fvset{showspaces=false}
\define@key{FV}{space}{\def\FancyVerbSpace{#1}}
\define@key{FV}{spacecolor}%
{\ifstrempty{#1}%
{\let\FV@SpaceColor\relax}%
{\ifstrequal{#1}{none}%
{\let\FV@SpaceColor\relax}%
{\def\FV@SpaceColor{\textcolor{#1}}}}}
\fvset{spacecolor=none}
\define@key{FV}{spacebreak}{%
\def\FancyVerbSpaceBreak{#1}}
\fvset{spacebreak=\discretionary{}{}{}}
\newbool{FV@breakcollapsespaces}
\define@booleankey{FV}{breakcollapsespaces}%
{\booltrue{FV@breakcollapsespaces}}%
{\boolfalse{FV@breakcollapsespaces}}%
\fvset{breakcollapsespaces=true}
\def\FV@DefFVSpace{%
\ifbool{FV@showspaces}%
{\ifbool{FV@breaklines}%
{\ifcsname FV@BreakBefore@Token\FV@SpaceCatTen\endcsname
\def\FV@Space{\FV@SpaceColor{\FancyVerbSpace}}%
\else\ifcsname FV@BreakAfter@Token\FV@SpaceCatTen\endcsname
\def\FV@Space{\FV@SpaceColor{\FancyVerbSpace}}%
\else
\def\FV@Space{\FV@SpaceColor{\FancyVerbSpace}\FancyVerbSpaceBreak}%
\fi\fi}%
{\def\FV@Space{\FV@SpaceColor{\FancyVerbSpace}}}}%
{\ifbool{FV@breaklines}%
{\ifcsname FV@BreakBefore@Token\FV@SpaceCatTen\endcsname
\def\FV@Space{\mbox{\FV@SpaceCatTen}}%
\else\ifcsname FV@BreakAfter@Token\FV@SpaceCatTen\endcsname
\def\FV@Space{\mbox{\FV@SpaceCatTen}}%
\else
\ifbool{FV@breakcollapsespaces}%
{\def\FV@Space{\FV@SpaceCatTen}}%
{\def\FV@Space{\mbox{\FV@SpaceCatTen}\FancyVerbSpaceBreak}}%
\fi\fi}%
{\def\FV@Space{\FV@SpaceCatTen}}}}%
\AtEndOfPackage{%
\g@addto@macro\FV@FormattingPrep@PreHook{\FV@DefFVSpace}}
\define@booleankey{FV}{mathescape}%
{\let\FancyVerbMathEscape\FV@MathEscape}%
{\let\FancyVerbMathEscape\relax}
\def\FV@MathEscape{\catcode`\$=3\catcode`\&=4\catcode`\^=7\catcode`\_=8\relax}
\FV@AddToHook\FV@CatCodesHook\FancyVerbMathEscape
\fvset{mathescape=false}
\define@booleankey{FV}{beameroverlays}%
{\let\FancyVerbBeamerOverlays\FV@BeamerOverlays}%
{\let\FancyVerbBeamerOverlays\relax}
\def\FV@BeamerOverlays{%
\expandafter\def\expandafter\@noligs\expandafter{\@noligs
\catcode`\<=12\catcode`\>=12\relax}}
\FV@AddToHook\FV@FormattingPrep@PreHook\FancyVerbBeamerOverlays
\fvset{beameroverlays=false}
\newbool{FV@CurlyQuotes}
\define@booleankey{FV}{curlyquotes}%
{\booltrue{FV@CurlyQuotes}}%
{\boolfalse{FV@CurlyQuotes}}
\def\FancyVerbCurlyQuotes{%
\ifbool{FV@CurlyQuotes}%
{\expandafter\def\expandafter\@noligs\expandafter{\@noligs
\begingroup\lccode`\~=`\`\lowercase{\endgroup\def~}{`}%
\begingroup\lccode`\~=`\'\lowercase{\endgroup\def~}{'}}}%
{}}
\g@addto@macro\FV@FormattingPrep@PreHook{\FancyVerbCurlyQuotes}
\fvset{curlyquotes=false}
\define@key{FV}{fontencoding}%
{\ifstrempty{#1}%
{\let\FV@FontEncoding\relax}%
{\ifstrequal{#1}{none}%
{\let\FV@FontEncoding\relax}%
{\def\FV@FontEncoding{\fontencoding{#1}}}}}
\expandafter\def\expandafter\FV@SetupFont\expandafter{%
\expandafter\FV@FontEncoding\FV@SetupFont}
\fvset{fontencoding=none}
\def\FancyVerbFormatLine#1{#1}
\def\FancyVerbFormatText#1{#1}
\def\FV@ListProcessLine@NoBreak#1{%
\hbox to \hsize{%
\kern\leftmargin
\hbox to \linewidth{%
\FV@LeftListNumber
\FV@LeftListFrame
\FV@BGColor@List{%
\FancyVerbFormatLine{%
\FancyVerbHighlightLine{%
\FV@ObeyTabs{\FancyVerbFormatText{#1}}}}}\hss
\FV@RightListFrame
\FV@RightListNumber}%
\hss}}
\def\FV@BProcessLine#1{%
\hbox{\FancyVerbFormatLine{%
\ifx\FancyVerbBackgroundColor\relax
\else
\expandafter\FancyVerbBackgroundColorVPhantom
\fi
\FancyVerbHighlightLine{%
\FV@ObeyTabs{\FancyVerbFormatText{#1}}}}}}
\newbool{FV@NumberFirstLine}
\define@booleankey{FV}{numberfirstline}%
{\booltrue{FV@NumberFirstLine}}%
{\boolfalse{FV@NumberFirstLine}}
\fvset{numberfirstline=false}
\newbool{FV@StepNumberFromFirst}
\define@booleankey{FV}{stepnumberfromfirst}%
{\booltrue{FV@StepNumberFromFirst}}%
{\boolfalse{FV@StepNumberFromFirst}}
\fvset{stepnumberfromfirst=false}
\newbool{FV@StepNumberOffsetValues}
\define@booleankey{FV}{stepnumberoffsetvalues}%
{\booltrue{FV@StepNumberOffsetValues}}%
{\boolfalse{FV@StepNumberOffsetValues}}
\fvset{stepnumberoffsetvalues=false}
\def\FV@Numbers@left{%
\let\FV@RightListNumber\relax
\def\FV@LeftListNumber{%
\ifx\FancyVerbStartNum\z@
\let\FancyVerbStartNum\@ne
\fi
\ifbool{FV@StepNumberFromFirst}%
{\@tempcnta=\FV@CodeLineNo
\@tempcntb=\FancyVerbStartNum
\advance\@tempcntb\FV@StepNumber
\divide\@tempcntb\FV@StepNumber
\multiply\@tempcntb\FV@StepNumber
\advance\@tempcnta\@tempcntb
\advance\@tempcnta-\FancyVerbStartNum
\@tempcntb=\@tempcnta}%
{\ifbool{FV@StepNumberOffsetValues}%
{\@tempcnta=\FV@CodeLineNo
\@tempcntb=\FV@CodeLineNo}%
{\@tempcnta=\c@FancyVerbLine
\@tempcntb=\c@FancyVerbLine}}%
\divide\@tempcntb\FV@StepNumber
\multiply\@tempcntb\FV@StepNumber
\ifnum\@tempcnta=\@tempcntb
\if@FV@NumberBlankLines
\hbox to\z@{\hss\theFancyVerbLine\kern\FV@NumberSep}%
\else
\ifx\FV@Line\empty
\else
\hbox to\z@{\hss\theFancyVerbLine\kern\FV@NumberSep}%
\fi
\fi
\else
\ifbool{FV@NumberFirstLine}{%
\ifnum\FV@CodeLineNo=\FancyVerbStartNum
\hbox to\z@{\hss\theFancyVerbLine\kern\FV@NumberSep}%
\fi}{}%
\fi}%
}
\def\FV@Numbers@right{%
\let\FV@LeftListNumber\relax
\def\FV@RightListNumber{%
\ifx\FancyVerbStartNum\z@
\let\FancyVerbStartNum\@ne
\fi
\ifbool{FV@StepNumberFromFirst}%
{\@tempcnta=\FV@CodeLineNo
\@tempcntb=\FancyVerbStartNum
\advance\@tempcntb\FV@StepNumber
\divide\@tempcntb\FV@StepNumber
\multiply\@tempcntb\FV@StepNumber
\advance\@tempcnta\@tempcntb
\advance\@tempcnta-\FancyVerbStartNum
\@tempcntb=\@tempcnta}%
{\ifbool{FV@StepNumberOffsetValues}%
{\@tempcnta=\FV@CodeLineNo
\@tempcntb=\FV@CodeLineNo}%
{\@tempcnta=\c@FancyVerbLine
\@tempcntb=\c@FancyVerbLine}}%
\divide\@tempcntb\FV@StepNumber
\multiply\@tempcntb\FV@StepNumber
\ifnum\@tempcnta=\@tempcntb
\if@FV@NumberBlankLines
\hbox to\z@{\kern\FV@NumberSep\theFancyVerbLine\hss}%
\else
\ifx\FV@Line\empty
\else
\hbox to\z@{\kern\FV@NumberSep\theFancyVerbLine\hss}%
\fi
\fi
\else
\ifbool{FV@NumberFirstLine}{%
\ifnum\FV@CodeLineNo=\FancyVerbStartNum
\hbox to\z@{\hss\theFancyVerbLine\kern\FV@NumberSep}%
\fi}{}%
\fi}%
}
\def\FV@Numbers@both{%
\def\FV@LeftListNumber{%
\ifx\FancyVerbStartNum\z@
\let\FancyVerbStartNum\@ne
\fi
\ifbool{FV@StepNumberFromFirst}%
{\@tempcnta=\FV@CodeLineNo
\@tempcntb=\FancyVerbStartNum
\advance\@tempcntb\FV@StepNumber
\divide\@tempcntb\FV@StepNumber
\multiply\@tempcntb\FV@StepNumber
\advance\@tempcnta\@tempcntb
\advance\@tempcnta-\FancyVerbStartNum
\@tempcntb=\@tempcnta}%
{\ifbool{FV@StepNumberOffsetValues}%
{\@tempcnta=\FV@CodeLineNo
\@tempcntb=\FV@CodeLineNo}%
{\@tempcnta=\c@FancyVerbLine
\@tempcntb=\c@FancyVerbLine}}%
\divide\@tempcntb\FV@StepNumber
\multiply\@tempcntb\FV@StepNumber
\ifnum\@tempcnta=\@tempcntb
\if@FV@NumberBlankLines
\hbox to\z@{\hss\theFancyVerbLine\kern\FV@NumberSep}%
\else
\ifx\FV@Line\empty
\else
\hbox to\z@{\hss\theFancyVerbLine\kern\FV@NumberSep}%
\fi
\fi
\else
\ifbool{FV@NumberFirstLine}{%
\ifnum\FV@CodeLineNo=\FancyVerbStartNum
\hbox to\z@{\hss\theFancyVerbLine\kern\FV@NumberSep}%
\fi}{}%
\fi}%
\def\FV@RightListNumber{%
\ifx\FancyVerbStartNum\z@
\let\FancyVerbStartNum\@ne
\fi
\ifbool{FV@StepNumberFromFirst}%
{\@tempcnta=\FV@CodeLineNo
\@tempcntb=\FancyVerbStartNum
\advance\@tempcntb\FV@StepNumber
\divide\@tempcntb\FV@StepNumber
\multiply\@tempcntb\FV@StepNumber
\advance\@tempcnta\@tempcntb
\advance\@tempcnta-\FancyVerbStartNum
\@tempcntb=\@tempcnta}%
{\ifbool{FV@StepNumberOffsetValues}%
{\@tempcnta=\FV@CodeLineNo
\@tempcntb=\FV@CodeLineNo}%
{\@tempcnta=\c@FancyVerbLine
\@tempcntb=\c@FancyVerbLine}}%
\divide\@tempcntb\FV@StepNumber
\multiply\@tempcntb\FV@StepNumber
\ifnum\@tempcnta=\@tempcntb
\if@FV@NumberBlankLines
\hbox to\z@{\kern\FV@NumberSep\theFancyVerbLine\hss}%
\else
\ifx\FV@Line\empty
\else
\hbox to\z@{\kern\FV@NumberSep\theFancyVerbLine\hss}%
\fi
\fi
\else
\ifbool{FV@NumberFirstLine}{%
\ifnum\FV@CodeLineNo=\FancyVerbStartNum
\hbox to\z@{\hss\theFancyVerbLine\kern\FV@NumberSep}%
\fi}{}%
\fi}%
}
\define@key{FV}{backgroundcolor}{%
\def\FancyVerbBackgroundColor{#1}%
\ifx\FancyVerbBackgroundColor\FV@None
\let\FancyVerbBackgroundColor\relax
\else\ifx\FancyVerbBackgroundColor\@empty
\let\FancyVerbBackgroundColor\relax
\fi\fi}%
\fvset{backgroundcolor=none}
\define@key{FV}{bgcolor}{%
\fvset{backgroundcolor=#1}}
\define@key{FV}{backgroundcolorvphantom}{%
\def\FancyVerbBackgroundColorVPhantom{#1}%
\ifx\FancyVerbBackgroundColorVPhantom\FV@None
\let\FancyVerbBackgroundColorVPhantom\relax
\else\ifx\FancyVerbBackgroundColorVPhantom\@empty
\let\FancyVerbBackgroundColorVPhantom\relax
\fi\fi}
\fvset{backgroundcolorvphantom=\vphantom{\"Apgjy}}
\define@key{FV}{bgcolorvphantom}{%
\fvset{backgroundcolorvphantom=#1}}
\let\FancyVerbBackgroundColorPadding\relax
\def\FV@backgroundcolorpadding@none@framenotsingle{%
\fvset{frame=none,framerule,rulecolor=none}}
\def\FV@backgroundcolorpadding@dim@framenotsingle{%
\fvset{frame=single,framerule=0pt,rulecolor=\FancyVerbBackgroundColor}}
\define@key{FV}{backgroundcolorpadding}{%
\def\FancyVerbBackgroundColorPadding{#1}%
\ifx\FancyVerbBackgroundColorPadding\FV@None
\let\FancyVerbBackgroundColorPadding\relax
\else\ifx\FancyVerbBackgroundColorPadding\@empty
\let\FancyVerbBackgroundColorPadding\relax
\fi\fi
\let\FV@Next\relax
\ifx\FancyVerbBackgroundColorPadding\relax
\ifx\FV@BeginListFrame\FV@BeginListFrame@Single
\else
\let\FV@Next\FV@backgroundcolorpadding@none@framenotsingle
\fi
\ifx\FV@LeftListFrame\FV@LeftListFrame@Single
\else
\let\FV@Next\FV@backgroundcolorpadding@none@framenotsingle
\fi
\ifx\FV@RightListFrame\FV@RightListFrame@Single
\else
\let\FV@Next\FV@backgroundcolorpadding@none@framenotsingle
\fi
\ifx\FV@EndListFrame\FV@EndListFrame@Single
\else
\let\FV@Next\FV@backgroundcolorpadding@none@framenotsingle
\fi
\FV@Next
\fvset{framesep,fillcolor=none}%
\else
\ifx\FV@BeginListFrame\FV@BeginListFrame@Single
\else
\let\FV@Next\FV@backgroundcolorpadding@dim@framenotsingle
\fi
\ifx\FV@LeftListFrame\FV@LeftListFrame@Single
\else
\let\FV@Next\FV@backgroundcolorpadding@dim@framenotsingle
\fi
\ifx\FV@RightListFrame\FV@RightListFrame@Single
\else
\let\FV@Next\FV@backgroundcolorpadding@dim@framenotsingle
\fi
\ifx\FV@EndListFrame\FV@EndListFrame@Single
\else
\let\FV@Next\FV@backgroundcolorpadding@dim@framenotsingle
\fi
\FV@Next
\fvset{framesep=#1,fillcolor=\FancyVerbBackgroundColor}%
\fi}
\define@key{FV}{bgcolorpadding}{\fvset{backgroundcolorpadding=#1}}
\def\FV@BGColor@List#1{%
\ifx\FancyVerbBackgroundColor\relax
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi
{#1}%
{\setlength{\FV@TmpLength}{\fboxsep}%
\setlength{\fboxsep}{0pt}%
\colorbox{\FancyVerbBackgroundColor}{%
\setlength{\fboxsep}{\FV@TmpLength}%
\rlap{\FancyVerbBackgroundColorVPhantom\strut#1}%
\hspace{\linewidth}%
\ifx\FV@RightListFrame\relax\else
\hspace{-\FV@FrameSep}%
\hspace{-\FV@FrameRule}%
\fi
\ifx\FV@LeftListFrame\relax\else
\hspace{-\FV@FrameSep}%
\hspace{-\FV@FrameRule}%
\fi}%
\hss}}
\let\FV@BVerbatimBegin@NoBGColor\FV@BVerbatimBegin
\let\FV@BVerbatimEnd@NoBGColor\FV@BVerbatimEnd
\def\FV@BVerbatimBegin{%
\begingroup
\FV@UseKeyValues
\FV@FormattingPrep
\let\FV@FormattingPrep\relax
\FV@ObeyTabsInit
\let\FV@ObeyTabsInit\relax
\ifx\FancyVerbBackgroundColor\relax
\expandafter\FV@BVerbatimBegin@NoBGColor
\else
\expandafter\FV@BVerbatimBegin@BGColor
\fi}
\def\FV@BVerbatimEnd{%
\ifx\FancyVerbBackgroundColor\relax
\expandafter\FV@BVerbatimEnd@NoBGColor
\else
\expandafter\FV@BVerbatimEnd@BGColor
\fi
\endgroup}
\def\FV@BVerbatimBegin@BGColor{%
\gdef\FV@TheVerbatim{}%
\ifx\FV@boxwidth\relax
\gdef\FV@boxwidth@tmp{0pt}%
\def\FV@ProcessLine##1{%
\sbox{\FV@LineBox}{\FV@BProcessLine{##1}}%
\ifdim\wd\FV@LineBox>\FV@boxwidth@tmp\relax
\xdef\FV@boxwidth@tmp{\the\wd\FV@LineBox}%
\fi
\expandafter\gdef\expandafter\FV@TheVerbatim\expandafter{%
\FV@TheVerbatim\FV@ProcessLine{##1}}}%
\else
\def\FV@ProcessLine##1{%
\expandafter\gdef\expandafter\FV@TheVerbatim\expandafter{%
\FV@TheVerbatim\FV@ProcessLine{##1}}}%
\fi}
\def\FV@BVerbatimEnd@BGColor{%
\ifx\FV@boxwidth\relax
\let\FV@boxwidth\FV@boxwidth@tmp
\global\let\FV@boxwidth@tmp\FV@Undefined
\fi
\setlength{\FV@TmpLength}{\fboxsep}%
\ifx\FancyVerbBackgroundColorPadding\relax
\setlength{\fboxsep}{0pt}%
\else
\setlength{\fboxsep}{\FancyVerbBackgroundColorPadding}%
\fi
\colorbox{\FancyVerbBackgroundColor}{%
\setlength{\fboxsep}{\FV@TmpLength}%
\FV@BVerbatimBegin@NoBGColor\FV@TheVerbatim\FV@BVerbatimEnd@NoBGColor}%
\gdef\FV@TheVerbatim{}}
\define@key{FV}{highlightlines}{\def\FV@HighlightLinesList{#1}}%
\fvset{highlightlines=}
\define@key{FV}{highlightcolor}{\def\FancyVerbHighlightColor{#1}}%
\let\FancyVerbHighlightColor\@empty
\ifcsname definecolor\endcsname
\ifx\definecolor\relax
\else
\definecolor{FancyVerbHighlightColor}{rgb}{0.878, 1, 1}
\fvset{highlightcolor=FancyVerbHighlightColor}
\fi\fi
\AtBeginDocument{%
\ifx\FancyVerbHighlightColor\@empty
\ifcsname definecolor\endcsname
\ifx\definecolor\relax
\else
\definecolor{FancyVerbHighlightColor}{rgb}{0.878, 1, 1}
\fvset{highlightcolor=FancyVerbHighlightColor}
\fi\fi
\fi}
\def\FancyVerbHighlightLine#1{#1}
\def\FV@HighlightLine#1{%
\@tempcnta=\c@FancyVerbLine
\@tempcntb=\c@FancyVerbLine
\ifcsname FV@HighlightLine:\number\@tempcnta\endcsname
\advance\@tempcntb\m@ne
\ifcsname FV@HighlightLine:\number\@tempcntb\endcsname
\advance\@tempcntb\tw@
\ifcsname FV@HighlightLine:\number\@tempcntb\endcsname
\let\FV@HighlightLine@Next\FancyVerbHighlightLineMiddle
\else
\let\FV@HighlightLine@Next\FancyVerbHighlightLineLast
\fi
\else
\advance\@tempcntb\tw@
\ifcsname FV@HighlightLine:\number\@tempcntb\endcsname
\let\FV@HighlightLine@Next\FancyVerbHighlightLineFirst
\else
\let\FV@HighlightLine@Next\FancyVerbHighlightLineSingle
\fi
\fi
\else
\let\FV@HighlightLine@Next\FancyVerbHighlightLineNormal
\fi
\FV@HighlightLine@Next{#1}%
}
\def\FancyVerbHighlightLineNormal#1{#1}
\newlength{\FV@TmpLength}
\def\FancyVerbHighlightLineFirst#1{%
\setlength{\FV@TmpLength}{\fboxsep}%
\setlength{\fboxsep}{0pt}%
\colorbox{\FancyVerbHighlightColor}{%
\setlength{\fboxsep}{\FV@TmpLength}%
\rlap{\strut#1}%
\hspace{\linewidth}%
\ifx\FV@RightListFrame\relax\else
\hspace{-\FV@FrameSep}%
\hspace{-\FV@FrameRule}%
\fi
\ifx\FV@LeftListFrame\relax\else
\hspace{-\FV@FrameSep}%
\hspace{-\FV@FrameRule}%
\fi
}%
\hss
}
\let\FancyVerbHighlightLineMiddle\FancyVerbHighlightLineFirst
\let\FancyVerbHighlightLineLast\FancyVerbHighlightLineFirst
\let\FancyVerbHighlightLineSingle\FancyVerbHighlightLineFirst
\def\FV@HighlightLinesPrep{%
\ifx\FV@HighlightLinesList\@empty
\else
\let\FancyVerbHighlightLine\FV@HighlightLine
\expandafter\FV@HighlightLinesPrep@i
\fi}
\def\FV@HighlightLinesPrep@i{%
\renewcommand{\do}[1]{%
\ifstrempty{##1}{}{\FV@HighlightLinesParse##1-\FV@Undefined}}%
\expandafter\docsvlist\expandafter{\FV@HighlightLinesList}}
\def\FV@HighlightLinesParse#1-#2\FV@Undefined{%
\ifstrempty{#2}%
{\FV@HighlightLinesParse@Single{#1}}%
{\FV@HighlightLinesParse@Range{#1}#2\relax}}
\def\FV@HighlightLinesParse@Single#1{%
\expandafter\let\csname FV@HighlightLine:\detokenize{#1}\endcsname\relax}
\newcounter{FV@HighlightLinesStart}
\newcounter{FV@HighlightLinesStop}
\def\FV@HighlightLinesParse@Range#1#2-{%
\setcounter{FV@HighlightLinesStart}{#1}%
\setcounter{FV@HighlightLinesStop}{#2}%
\stepcounter{FV@HighlightLinesStop}%
\FV@HighlightLinesParse@Range@Loop}
\def\FV@HighlightLinesParse@Range@Loop{%
\ifnum\value{FV@HighlightLinesStart}<\value{FV@HighlightLinesStop}\relax
\expandafter\let\csname FV@HighlightLine:\arabic{FV@HighlightLinesStart}\endcsname\relax
\stepcounter{FV@HighlightLinesStart}%
\expandafter\FV@HighlightLinesParse@Range@Loop
\fi}
\g@addto@macro\FV@FormattingPrep@PreHook{\FV@HighlightLinesPrep}
\def\FV@StepLineNo@Patch@HighlightLine{%
\ifcsname FV@HighlightLine:\number\c@FancyVerbLine\endcsname
\@tempcnta=\c@FancyVerbLine
\advance\@tempcnta\@ne
\ifcsname FV@HighlightLine:\number\@tempcnta\endcsname
\else
\expandafter\let
\csname FV@HighlightLine:\number\c@FancyVerbLine\endcsname\FV@Undefined
\fi
\fi}
\patchcmd{\FV@StepLineNo}%
{\ifx\FV@Line\empty}%
{\ifx\FV@Line\empty\FV@StepLineNo@Patch@HighlightLine}%
{}%
{\PackageError{fvextra}%
{Failed to patch \string\FV@StepLineNo\ to make highlightlines
compatible with numberblanklines}%
{Failed to patch \string\FV@StepLineNo\ to make highlightlines
compatible with numberblanklines}}
\newcount\FV@LoopCount
\newbox\FV@NCharsBox
\def\FV@SetToWidthNChars#1#2{%
\FV@LoopCount=#2\relax
\ifnum\FV@LoopCount>0
\def\FV@NChars{}%
\loop
\ifnum\FV@LoopCount>0
\expandafter\def\expandafter\FV@NChars\expandafter{\FV@NChars x}%
\fi
\advance\FV@LoopCount by -1
\ifnum\FV@LoopCount>0
\repeat
\setbox\FV@NCharsBox\hbox{\FV@NChars}%
#1=\wd\FV@NCharsBox
\else
#1=0pt\relax
\fi
}
\newbool{FV@breaklines}
\define@booleankey{FV}{breaklines}%
{\booltrue{FV@breaklines}%
\let\FV@ListProcessLine\FV@ListProcessLine@Break}%
{\boolfalse{FV@breaklines}%
\let\FV@ListProcessLine\FV@ListProcessLine@NoBreak}
\AtEndOfPackage{\fvset{breaklines=false}}
\def\FV@BreakLinesLuaTeXHook{%
\expandafter\def\expandafter\@noligs\expandafter{\@noligs
\begingroup\lccode`\~=`\-\lowercase{\endgroup\def~}{\leavevmode\kern\z@\mbox{-}}}}
\ifcsname directlua\endcsname
\ifx\directlua\relax
\else
\FV@AddToHook\FV@FormattingPrep@PreHook\FV@BreakLinesLuaTeXHook
\fi
\fi
\def\FV@BreakLinesIndentationHook{}
\g@addto@macro\FV@FormattingPrep@PostHook{%
\ifFV@breaklines
\FV@BreakLinesIndentationHook
\fi}
\newdimen\FV@BreakIndent
\newcount\FV@BreakIndentNChars
\define@key{FV}{breakindent}{%
\FV@BreakIndent=#1\relax
\FV@BreakIndentNChars=0\relax}
\define@key{FV}{breakindentnchars}{\FV@BreakIndentNChars=#1\relax}
\g@addto@macro\FV@BreakLinesIndentationHook{%
\ifnum\FV@BreakIndentNChars>0
\FV@SetToWidthNChars{\FV@BreakIndent}{\FV@BreakIndentNChars}%
\fi}
\fvset{breakindentnchars=0}
\newbool{FV@breakautoindent}
\define@booleankey{FV}{breakautoindent}%
{\booltrue{FV@breakautoindent}}{\boolfalse{FV@breakautoindent}}
\fvset{breakautoindent=true}
\define@key{FV}{breaksymbolleft}{\def\FancyVerbBreakSymbolLeft{#1}}
\define@key{FV}{breaksymbol}{\fvset{breaksymbolleft=#1}}
\fvset{breaksymbolleft=\tiny\ensuremath{\hookrightarrow}}
\define@key{FV}{breaksymbolright}{\def\FancyVerbBreakSymbolRight{#1}}
\fvset{breaksymbolright={}}
\newdimen\FV@BreakSymbolSepLeft
\newcount\FV@BreakSymbolSepLeftNChars
\define@key{FV}{breaksymbolsepleft}{%
\FV@BreakSymbolSepLeft=#1\relax
\FV@BreakSymbolSepLeftNChars=0\relax}
\define@key{FV}{breaksymbolsep}{\fvset{breaksymbolsepleft=#1}}
\define@key{FV}{breaksymbolsepleftnchars}{\FV@BreakSymbolSepLeftNChars=#1\relax}
\define@key{FV}{breaksymbolsepnchars}{\fvset{breaksymbolsepleftnchars=#1}}
\g@addto@macro\FV@BreakLinesIndentationHook{%
\ifnum\FV@BreakSymbolSepLeftNChars>0
\FV@SetToWidthNChars{\FV@BreakSymbolSepLeft}{\FV@BreakSymbolSepLeftNChars}%
\fi}
\fvset{breaksymbolsepleftnchars=2}
\newdimen\FV@BreakSymbolSepRight
\newcount\FV@BreakSymbolSepRightNChars
\define@key{FV}{breaksymbolsepright}{%
\FV@BreakSymbolSepRight=#1\relax
\FV@BreakSymbolSepRightNChars=0\relax}
\define@key{FV}{breaksymbolseprightnchars}{\FV@BreakSymbolSepRightNChars=#1\relax}
\g@addto@macro\FV@BreakLinesIndentationHook{%
\ifnum\FV@BreakSymbolSepRightNChars>0
\FV@SetToWidthNChars{\FV@BreakSymbolSepRight}{\FV@BreakSymbolSepRightNChars}%
\fi}
\fvset{breaksymbolseprightnchars=2}
\newdimen\FV@BreakSymbolIndentLeft
\newcount\FV@BreakSymbolIndentLeftNChars
\define@key{FV}{breaksymbolindentleft}{%
\FV@BreakSymbolIndentLeft=#1\relax
\FV@BreakSymbolIndentLeftNChars=0\relax}
\define@key{FV}{breaksymbolindent}{\fvset{breaksymbolindentleft=#1}}
\define@key{FV}{breaksymbolindentleftnchars}{\FV@BreakSymbolIndentLeftNChars=#1\relax}
\define@key{FV}{breaksymbolindentnchars}{\fvset{breaksymbolindentleftnchars=#1}}
\g@addto@macro\FV@BreakLinesIndentationHook{%
\ifnum\FV@BreakSymbolIndentLeftNChars>0
\FV@SetToWidthNChars{\FV@BreakSymbolIndentLeft}{\FV@BreakSymbolIndentLeftNChars}%
\fi}
\fvset{breaksymbolindentleftnchars=4}
\newdimen\FV@BreakSymbolIndentRight
\newcount\FV@BreakSymbolIndentRightNChars
\define@key{FV}{breaksymbolindentright}{%
\FV@BreakSymbolIndentRight=#1\relax
\FV@BreakSymbolIndentRightNChars=0\relax}
\define@key{FV}{breaksymbolindentrightnchars}{\FV@BreakSymbolIndentRightNChars=#1\relax}
\g@addto@macro\FV@BreakLinesIndentationHook{%
\ifnum\FV@BreakSymbolIndentRightNChars>0
\FV@SetToWidthNChars{\FV@BreakSymbolIndentRight}{\FV@BreakSymbolIndentRightNChars}%
\fi}
\fvset{breaksymbolindentrightnchars=4}
\newcommand{\FancyVerbBreakSymbolLeftLogic}[1]{%
\ifnum\value{linenumber}=1\relax\else{#1}\fi}
\newcounter{FancyVerbLineBreakLast}
\newcommand{\FV@SetLineBreakLast}{%
\setcounter{FancyVerbLineBreakLast}{\value{linenumber}}}
\newcommand{\FancyVerbBreakSymbolRightLogic}[1]{%
\ifnum\value{linenumber}=\value{FancyVerbLineBreakLast}\relax\else{#1}\fi}
\let\FancyVerbBreakStart\relax
\let\FancyVerbBreakStop\relax
\let\FV@Break@DefaultToken\FV@Break@NBToken
\newbool{FV@breakanywhere}
\define@booleankey{FV}{breakanywhere}%
{\booltrue{FV@breakanywhere}%
\let\FancyVerbBreakStart\FV@Break
\let\FancyVerbBreakStop\FV@EndBreak
\let\FV@Break@DefaultToken\FV@Break@AnyToken}%
{\boolfalse{FV@breakanywhere}%
\let\FancyVerbBreakStart\relax
\let\FancyVerbBreakStop\relax
\let\FV@Break@DefaultToken\FV@Break@NBToken}
\fvset{breakanywhere=false}
\define@key{FV}{breakanywhereinlinestretch}{%
\def\FV@breakanywhereinlinestretch{#1}%
\ifx\FV@breakanywhereinlinestretch\FV@None
\let\FV@breakanywhereinlinestretch\relax
\else\ifx\FV@breakanywhereinlinestretch\@empty
\let\FV@breakanywhereinlinestretch\relax
\fi\fi}
\fvset{breakanywhereinlinestretch=none}
\def\FV@ApplyBreakAnywhereInlineStretch{%
\ifx\FV@breakanywhereinlinestretch\relax
\else
\let\FancyVerbBreakAnywhereBreak@Orig\FancyVerbBreakAnywhereBreak
\def\FancyVerbBreakAnywhereBreak{%
\nobreak\hspace{0pt plus \FV@breakanywhereinlinestretch}%
\FancyVerbBreakAnywhereBreak@Orig}%
\fi}
\define@key{FV}{breakbefore}{%
\ifstrempty{#1}%
{\let\FV@BreakBefore\@empty
\let\FancyVerbBreakStart\relax
\let\FancyVerbBreakStop\relax
\let\FV@Break@DefaultToken\FV@Break@NBToken}%
{\def\FV@BreakBefore{#1}%
\let\FancyVerbBreakStart\FV@Break
\let\FancyVerbBreakStop\FV@EndBreak
\let\FV@Break@DefaultToken\FV@Break@BeforeAfterToken}%
}
\fvset{breakbefore={}}
\newbool{FV@breakbeforeinrun}
\define@booleankey{FV}{breakbeforeinrun}%
{\booltrue{FV@breakbeforeinrun}}%
{\boolfalse{FV@breakbeforeinrun}}%
\fvset{breakbeforeinrun=false}
\def\FV@BreakBeforePrep{%
\ifx\FV@BreakBefore\@empty\relax
\else
\gdef\FV@BreakBefore@Def{}%
\begingroup
\def\FV@BreakBefore@Process##1##2\FV@Undefined{%
\expandafter\FV@BreakBefore@Process@i\expandafter{##1}%
\expandafter\ifx\expandafter\relax\detokenize{##2}\relax
\else
\FV@BreakBefore@Process##2\FV@Undefined
\fi
}%
\def\FV@BreakBefore@Process@i##1{%
\g@addto@macro\FV@BreakBefore@Def{%
\@namedef{FV@BreakBefore@Token\detokenize{##1}}{}}%
}%
\FV@EscChars
\expandafter\FV@BreakBefore@Process\FV@BreakBefore\FV@Undefined
\endgroup
\FV@BreakBefore@Def
\FV@BreakBeforePrep@PygmentsHook
\fi
}
\let\FV@BreakBeforePrep@PygmentsHook\relax
\define@key{FV}{breakafter}{%
\ifstrempty{#1}%
{\let\FV@BreakAfter\@empty
\let\FancyVerbBreakStart\relax
\let\FancyVerbBreakStop\relax
\let\FV@Break@DefaultToken\FV@Break@NBToken}%
{\def\FV@BreakAfter{#1}%
\let\FancyVerbBreakStart\FV@Break
\let\FancyVerbBreakStop\FV@EndBreak
\let\FV@Break@DefaultToken\FV@Break@BeforeAfterToken}%
}
\fvset{breakafter={}}
\newbool{FV@breakafterinrun}
\define@booleankey{FV}{breakafterinrun}%
{\booltrue{FV@breakafterinrun}}%
{\boolfalse{FV@breakafterinrun}}%
\fvset{breakafterinrun=false}
\def\FV@BreakAfterPrep{%
\ifx\FV@BreakAfter\@empty\relax
\else
\gdef\FV@BreakAfter@Def{}%
\begingroup
\def\FV@BreakAfter@Process##1##2\FV@Undefined{%
\expandafter\FV@BreakAfter@Process@i\expandafter{##1}%
\expandafter\ifx\expandafter\relax\detokenize{##2}\relax
\else
\FV@BreakAfter@Process##2\FV@Undefined
\fi
}%
\def\FV@BreakAfter@Process@i##1{%
\ifcsname FV@BreakBefore@Token\detokenize{##1}\endcsname
\ifbool{FV@breakbeforeinrun}%
{\ifbool{FV@breakafterinrun}%
{}%
{\PackageError{fvextra}%
{Conflicting breakbeforeinrun and breakafterinrun for "\detokenize{##1}"}%
{Conflicting breakbeforeinrun and breakafterinrun for "\detokenize{##1}"}}}%
{\ifbool{FV@breakafterinrun}%
{\PackageError{fvextra}%
{Conflicting breakbeforeinrun and breakafterinrun for "\detokenize{##1}"}%
{Conflicting breakbeforeinrun and breakafterinrun for "\detokenize{##1}"}}%
{}}%
\fi
\g@addto@macro\FV@BreakAfter@Def{%
\@namedef{FV@BreakAfter@Token\detokenize{##1}}{}}%
}%
\FV@EscChars
\expandafter\FV@BreakAfter@Process\FV@BreakAfter\FV@Undefined
\endgroup
\FV@BreakAfter@Def
\FV@BreakAfterPrep@PygmentsHook
\fi
}
\let\FV@BreakAfterPrep@PygmentsHook\relax
\g@addto@macro\FV@FormattingPrep@PreHook{%
\ifFV@pdfTeXinputenc
\ifdefstring{\inputencodingname}{utf8}%
{\let\FV@BreakBeforePrep\FV@BreakBeforePrep@UTF
\let\FV@BreakAfterPrep\FV@BreakAfterPrep@UTF}%
{}%
\fi
\FV@BreakBeforePrep\FV@BreakAfterPrep}
\define@key{FV}{breakanywheresymbolpre}{%
\ifstrempty{#1}%
{\def\FancyVerbBreakAnywhereSymbolPre{}}%
{\def\FancyVerbBreakAnywhereSymbolPre{\hbox{#1}}}}
\fvset{breakanywheresymbolpre={\,\footnotesize\ensuremath{_\rfloor}}}
\define@key{FV}{breakanywheresymbolpost}{%
\ifstrempty{#1}%
{\def\FancyVerbBreakAnywhereSymbolPost{}}%
{\def\FancyVerbBreakAnywhereSymbolPost{\hbox{#1}}}}
\fvset{breakanywheresymbolpost={}}
\define@key{FV}{breakbeforesymbolpre}{%
\ifstrempty{#1}%
{\def\FancyVerbBreakBeforeSymbolPre{}}%
{\def\FancyVerbBreakBeforeSymbolPre{\hbox{#1}}}}
\fvset{breakbeforesymbolpre={\,\footnotesize\ensuremath{_\rfloor}}}
\define@key{FV}{breakbeforesymbolpost}{%
\ifstrempty{#1}%
{\def\FancyVerbBreakBeforeSymbolPost{}}%
{\def\FancyVerbBreakBeforeSymbolPost{\hbox{#1}}}}
\fvset{breakbeforesymbolpost={}}
\define@key{FV}{breakaftersymbolpre}{%
\ifstrempty{#1}%
{\def\FancyVerbBreakAfterSymbolPre{}}%
{\def\FancyVerbBreakAfterSymbolPre{\hbox{#1}}}}
\fvset{breakaftersymbolpre={\,\footnotesize\ensuremath{_\rfloor}}}
\define@key{FV}{breakaftersymbolpost}{%
\ifstrempty{#1}%
{\def\FancyVerbBreakAfterSymbolPost{}}%
{\def\FancyVerbBreakAfterSymbolPost{\hbox{#1}}}}
\fvset{breakaftersymbolpost={}}
\newcommand{\FancyVerbBreakAnywhereBreak}{%
\discretionary{\FancyVerbBreakAnywhereSymbolPre}%
{\FancyVerbBreakAnywhereSymbolPost}{}}
\newcommand{\FancyVerbBreakBeforeBreak}{%
\discretionary{\FancyVerbBreakBeforeSymbolPre}%
{\FancyVerbBreakBeforeSymbolPost}{}}
\newcommand{\FancyVerbBreakAfterBreak}{%
\discretionary{\FancyVerbBreakAfterSymbolPre}%
{\FancyVerbBreakAfterSymbolPost}{}}
\newbool{FV@breaknonspaceingroup}
\define@booleankey{FV}{breaknonspaceingroup}%
{\booltrue{FV@breaknonspaceingroup}}%
{\boolfalse{FV@breaknonspaceingroup}}
\fvset{breaknonspaceingroup=false}
\newbool{FV@breakpreferspaces}
\booltrue{FV@breakpreferspaces}
\define@booleankey{FV}{breakpreferspaces}%
{\booltrue{FV@breakpreferspaces}}%
{\boolfalse{FV@breakpreferspaces}}
\def\FV@BreakHyphenation{%
\finalhyphendemerits=0\relax
\ifbool{FV@breakpreferspaces}{}{\linepenalty=\@M\relax}}
\g@addto@macro\FV@FormattingPrep@PreHook{\FV@BreakHyphenation}
\newsavebox{\FV@LineBox}
\newsavebox{\FV@LineIndentBox}
\let\FV@LineIndentChars\@empty
\def\FV@GetLineIndent{%
\@ifnextchar\FV@Sentinel
{\FV@GetLineIndent@End}%
{\ifx\@let@token\FV@FVSpaceToken
\let\FV@Next\FV@GetLineIndent@Whitespace
\else\ifx\@let@token\FV@FVTabToken
\let\FV@Next\FV@GetLineIndent@Whitespace
\else\ifcsname FV@PYG@Redefed\endcsname
\ifx\@let@token\FV@PYG@Redefed
\let\FV@Next\FV@GetLineIndent@Pygments
\else
\let\FV@Next\FV@GetLineIndent@End
\fi
\else
\let\FV@Next\FV@GetLineIndent@End
\fi\fi\fi
\FV@Next}}
\def\FV@GetLineIndent@End#1\FV@Sentinel{}
\def\FV@GetLineIndent@Whitespace#1{%
\expandafter\def\expandafter\FV@LineIndentChars\expandafter{\FV@LineIndentChars#1}%
\FV@GetLineIndent}
\def\FV@GetLineIndent@Pygments#1#2#3{%
\FV@GetLineIndent#3}
\def\FV@TrueTab@UseWidth{%
\@tempdima=\csname FV@TrueTab:Width\arabic{FV@TrueTabCounter}\endcsname sp\relax
\stepcounter{FV@TrueTabCounter}%
\hbox to\@tempdima{\hss\FV@TabChar}}
\newcounter{FV@BreakBufferDepth}
\def\FV@BreakBuffer@Append#1{%
\expandafter\def\expandafter\FV@BreakBuffer\expandafter{\FV@BreakBuffer#1}}
\def\FV@BreakBufferStart{%
\FV@BreakBufferStart@i}
\def\FV@BreakBufferStart@i#1{%
\ifnum\value{FV@BreakBufferDepth}>0\relax
\expandafter\let\csname FV@BreakBuffer\arabic{FV@BreakBufferDepth}\endcsname
\FV@BreakBuffer
\expandafter\let\csname FV@Break@Token\arabic{FV@BreakBufferDepth}\endcsname
\FV@Break@Token
\fi
\def\FV@BreakBuffer{}%
\let\FV@Break@Token=#1%
\stepcounter{FV@BreakBufferDepth}%
\let\FV@LastToken=\FV@Undefined
\FV@Break@Scan}
\newbool{FV@UserMacroBreaks}
\def\FV@BreakBufferStop{%
\FV@BreakBufferStop@i}
\def\FV@BreakBufferStop@i#1{%
\addtocounter{FV@BreakBufferDepth}{-1}%
\let\FV@LastToken=\FV@Undefined
\ifnum\value{FV@BreakBufferDepth}<0\relax
\PackageError{fvextra}%
{Line break insertion error (extra \string\FancyVerbBreakStop?)}%
{Line break insertion error (extra \string\FancyVerbBreakStop?)}%
\def\FV@BreakBuffer{}%
\fi
\ifnum\value{FV@BreakBufferDepth}>0\relax
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi
{\expandafter\FV@BreakBufferStop@ii\expandafter{\FV@BreakBuffer}{#1}}%
{\ifbool{FV@UserMacroBreaks}%
{\expandafter\let\expandafter\FV@BreakBuffer\expandafter\FV@Undefined\FV@BreakBuffer}%
{}}}
\def\FV@BreakBufferStop@ii#1#2{%
\ifstrempty{#2}%
{\FV@BreakBufferStop@iii{#1}}%
{\expandafter\FV@BreakBufferStop@iii\expandafter{#2{#1}}}}
\def\FV@BreakBufferStop@iii#1{%
\expandafter\let\expandafter\FV@BreakBufferUpLevel
\csname FV@BreakBuffer\arabic{FV@BreakBufferDepth}\endcsname
\expandafter\def\expandafter\FV@BreakBuffer\expandafter{\FV@BreakBufferUpLevel#1}%
\expandafter\let\expandafter\FV@Break@Token
\csname FV@Break@Token\arabic{FV@BreakBufferDepth}\endcsname
\FV@Break@Scan}
\def\FV@InsertBreaks#1#2{%
\ifx\FancyVerbBreakStart\relax
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi
{#1{#2}}%
{\ifFV@pdfTeXinputenc
\ifdefstring{\inputencodingname}{utf8}%
{\ifx\FV@Break@DefaultToken\FV@Break@AnyToken
\let\FV@Break@DefaultToken\FV@Break@AnyToken@UTF
\else
\ifx\FV@Break@DefaultToken\FV@Break@BeforeAfterToken
\let\FV@Break@DefaultToken\FV@Break@BeforeAfterToken@UTF
\fi
\fi}%
{}%
\fi
\setcounter{FV@BreakBufferDepth}{0}%
\boolfalse{FV@UserMacroBreaks}%
\FancyVerbBreakStart#2\FancyVerbBreakStop
\setcounter{FV@BreakBufferDepth}{0}%
\booltrue{FV@UserMacroBreaks}%
\expandafter\FV@InsertBreaks@i\expandafter{\FV@BreakBuffer}{#1}}}
\def\FV@InsertBreaks@i#1#2{%
\let\FV@BreakBuffer\FV@Undefined
#2{#1}}
\def\FV@Break{%
\FV@BreakBufferStart{\FV@Break@DefaultToken}}
\def\FV@EndBreak{%
\FV@BreakBufferStop{}}
\begingroup
\catcode`\$=3
\gdef\FV@Break@Scan{%
\@ifnextchar\FancyVerbBreakStart%
{}%
{\ifx\@let@token\FancyVerbBreakStop
\let\FV@Break@Next\relax
\else\ifx\@let@token\FV@BreakBufferStart
\let\FV@Break@Next\relax
\else\ifx\@let@token\FV@BreakBufferStop
\let\FV@Break@Next\relax
\else\ifx\@let@token$
\let\FV@Break@Next\FV@Break@Math
\else\ifx\@let@token\bgroup
\let\FV@Break@Next\FV@Break@Group
\else
\let\FV@Break@Next\FV@Break@Token
\fi\fi\fi\fi\fi
\FV@Break@Next}}
\endgroup
\begingroup
\catcode`\$=3%
\gdef\FV@Break@Math$#1${%
\FV@BreakBufferStart{\FV@Break@NBToken}#1\FV@BreakBufferStop{\FV@Break@MathTemplate}}
\gdef\FV@Break@MathTemplate#1{$#1$}
\endgroup
\def\FV@Break@Group#1{%
\ifstrempty{#1}%
{\FV@BreakBuffer@Append{{}}%
\FV@Break@Scan}%
{\ifbool{FV@breaknonspaceingroup}%
{\FV@BreakBufferStart{\FV@Break@DefaultToken}%
#1\FV@BreakBufferStop{\FV@Break@GroupTemplate}}%
{\FV@BreakBufferStart{\FV@Break@NBToken}%
#1\FV@BreakBufferStop{\FV@Break@GroupTemplate}}}}
\def\FV@Break@GroupTemplate#1{{#1}}
\def\FV@Break@NBToken#1{%
\FV@BreakBuffer@Append{#1}%
\let\FV@LastToken=\FV@Undefined
\FV@Break@Scan}
\def\FV@Break@AnyToken#1{%
\ifx\FV@FVSpaceToken#1\relax
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi
{\let\FV@LastToken=#1\FV@BreakBuffer@Append{#1}\FV@Break@Scan}%
{\ifx\FV@LastToken\FV@FVSpaceToken
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi
{\let\FV@LastToken=#1%
\FV@BreakBuffer@Append{#1}\FV@Break@Scan}%
{\let\FV@LastToken=#1%
\FV@BreakBuffer@Append{\FancyVerbBreakAnywhereBreak#1}\FV@Break@Scan}}}
\def\FV@Break@BeforeAfterToken#1{%
\ifcsname FV@BreakBefore@Token\detokenize{#1}\endcsname
\let\FV@Break@Next\FV@Break@BeforeTokenBreak
\else
\ifcsname FV@BreakAfter@Token\detokenize{#1}\endcsname
\let\FV@Break@Next\FV@Break@AfterTokenBreak
\else
\let\FV@Break@Next\FV@Break@BeforeAfterTokenNoBreak
\fi
\fi
\FV@Break@Next{#1}%
}
\def\FV@Break@BeforeAfterTokenNoBreak#1{%
\FV@BreakBuffer@Append{#1}%
\let\FV@LastToken=#1%
\FV@Break@Scan}
\def\FV@Break@BeforeTokenBreak#1{%
\ifbool{FV@breakbeforeinrun}%
{\ifcsname FV@BreakAfter@Token\detokenize{#1}\endcsname
\ifx#1\FV@FVSpaceToken
\FV@BreakBuffer@Append{\FancyVerbSpaceBreak}%
\else
\FV@BreakBuffer@Append{\FancyVerbBreakBeforeBreak}%
\fi
\let\FV@Break@Next\FV@Break@BeforeTokenBreak@AfterRescan
\def\FV@RescanToken{#1}%
\else
\ifx#1\FV@FVSpaceToken
\FV@BreakBuffer@Append{\FancyVerbSpaceBreak#1}%
\else
\FV@BreakBuffer@Append{\FancyVerbBreakBeforeBreak#1}%
\fi
\let\FV@Break@Next\FV@Break@Scan
\let\FV@LastToken=#1%
\fi}%
{\ifx#1\FV@LastToken\relax
\ifcsname FV@BreakAfter@Token\detokenize{#1}\endcsname
\let\FV@Break@Next\FV@Break@BeforeTokenBreak@AfterRescan
\def\FV@RescanToken{#1}%
\else
\FV@BreakBuffer@Append{#1}%
\let\FV@Break@Next\FV@Break@Scan
\let\FV@LastToken=#1%
\fi
\else
\ifcsname FV@BreakAfter@Token\detokenize{#1}\endcsname
\ifx#1\FV@FVSpaceToken
\FV@BreakBuffer@Append{\FancyVerbSpaceBreak}%
\else
\FV@BreakBuffer@Append{\FancyVerbBreakBeforeBreak}%
\fi
\let\FV@Break@Next\FV@Break@BeforeTokenBreak@AfterRescan
\def\FV@RescanToken{#1}%
\else
\ifx#1\FV@FVSpaceToken
\FV@BreakBuffer@Append{\FancyVerbSpaceBreak#1}%
\else
\FV@BreakBuffer@Append{\FancyVerbBreakBeforeBreak#1}%
\fi
\let\FV@Break@Next\FV@Break@Scan
\let\FV@LastToken=#1%
\fi
\fi}%
\FV@Break@Next}
\def\FV@Break@BeforeTokenBreak@AfterRescan{%
\expandafter\FV@Break@AfterTokenBreak\FV@RescanToken}
\def\FV@Break@AfterTokenBreak#1{%
\let\FV@LastToken=#1%
\@ifnextchar\FV@FVSpaceToken%
{\ifx#1\FV@FVSpaceToken
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi
{\FV@Break@AfterTokenBreak@i{#1}}%
{\FV@BreakBuffer@Append{#1}%
\FV@Break@Scan}}%
{\FV@Break@AfterTokenBreak@i{#1}}}
\def\FV@Break@AfterTokenBreak@i#1{%
\ifbool{FV@breakafterinrun}%
{\ifx#1\FV@FVSpaceToken
\FV@BreakBuffer@Append{#1\FancyVerbSpaceBreak}%
\else
\FV@BreakBuffer@Append{#1\FancyVerbBreakAfterBreak}%
\fi
\let\FV@Break@Next\FV@Break@Scan}%
{\ifx\@let@token#1\relax
\FV@BreakBuffer@Append{#1}%
\let\FV@Break@Next\FV@Break@Scan
\else
\expandafter\ifx\csname @let@token\endcsname\bgroup\relax
\FV@BreakBuffer@Append{#1}%
\let\FV@Break@Next\FV@Break@AfterTokenBreak@Group
\else
\ifx#1\FV@FVSpaceToken
\FV@BreakBuffer@Append{#1\FancyVerbSpaceBreak}%
\else
\FV@BreakBuffer@Append{#1\FancyVerbBreakAfterBreak}%
\fi
\let\FV@Break@Next\FV@Break@Scan
\fi
\fi}%
\FV@Break@Next
}
\def\FV@Break@AfterTokenBreak@Group#1{%
\ifstrempty{#1}%
{\FV@BreakBuffer@Append{{}}%
\@ifnextchar\FV@LastToken%
{\FV@Break@Scan}%
{\ifx\FV@LastToken\FV@FVSpaceToken
\FV@BreakBuffer@Append{\FancyVerbSpaceBreak}%
\else
\FV@BreakBuffer@Append{\FancyVerbBreakAfterBreak}%
\fi
\FV@Break@Scan}}%
{\ifx\FV@LastToken\FV@FVSpaceToken
\FV@BreakBuffer@Append{\FancyVerbSpaceBreak}%
\else
\FV@BreakBuffer@Append{\FancyVerbBreakAfterBreak}%
\fi
\FV@Break@Group{#1}}}
\ifFV@pdfTeXinputenc
\def\FV@BreakBeforePrep@UTF{%
\ifx\FV@BreakBefore\@empty\relax
\else
\gdef\FV@BreakBefore@Def{}%
\begingroup
\def\FV@BreakBefore@Process##1{%
\ifcsname FV@U8:\detokenize{##1}\endcsname
\expandafter\let\expandafter\FV@Break@Next\csname FV@U8:\detokenize{##1}\endcsname
\let\FV@UTF@octets@after\FV@BreakBefore@Process@ii
\else
\ifx##1\FV@Undefined
\let\FV@Break@Next\@gobble
\else
\let\FV@Break@Next\FV@BreakBefore@Process@i
\fi
\fi
\FV@Break@Next##1%
}%
\def\FV@BreakBefore@Process@i##1{%
\expandafter\FV@BreakBefore@Process@ii\expandafter{##1}}%
\def\FV@BreakBefore@Process@ii##1{%
\g@addto@macro\FV@BreakBefore@Def{%
\@namedef{FV@BreakBefore@Token\detokenize{##1}}{}}%
\FV@BreakBefore@Process
}%
\FV@EscChars
\expandafter\FV@BreakBefore@Process\FV@BreakBefore\FV@Undefined
\endgroup
\FV@BreakBefore@Def
\FV@BreakBeforePrep@PygmentsHook
\fi
}
\def\FV@BreakAfterPrep@UTF{%
\ifx\FV@BreakAfter\@empty\relax
\else
\gdef\FV@BreakAfter@Def{}%
\begingroup
\def\FV@BreakAfter@Process##1{%
\ifcsname FV@U8:\detokenize{##1}\endcsname
\expandafter\let\expandafter\FV@Break@Next\csname FV@U8:\detokenize{##1}\endcsname
\let\FV@UTF@octets@after\FV@BreakAfter@Process@ii
\else
\ifx##1\FV@Undefined
\let\FV@Break@Next\@gobble
\else
\let\FV@Break@Next\FV@BreakAfter@Process@i
\fi
\fi
\FV@Break@Next##1%
}%
\def\FV@BreakAfter@Process@i##1{%
\expandafter\FV@BreakAfter@Process@ii\expandafter{##1}}%
\def\FV@BreakAfter@Process@ii##1{%
\ifcsname FV@BreakBefore@Token\detokenize{##1}\endcsname
\ifbool{FV@breakbeforeinrun}%
{\ifbool{FV@breakafterinrun}%
{}%
{\PackageError{fvextra}%
{Conflicting breakbeforeinrun and breakafterinrun for "\detokenize{##1}"}%
{Conflicting breakbeforeinrun and breakafterinrun for "\detokenize{##1}"}}}%
{\ifbool{FV@breakafterinrun}%
{\PackageError{fvextra}%
{Conflicting breakbeforeinrun and breakafterinrun for "\detokenize{##1}"}%
{Conflicting breakbeforeinrun and breakafterinrun for "\detokenize{##1}"}}%
{}}%
\fi
\g@addto@macro\FV@BreakAfter@Def{%
\@namedef{FV@BreakAfter@Token\detokenize{##1}}{}}%
\FV@BreakAfter@Process
}%
\FV@EscChars
\expandafter\FV@BreakAfter@Process\FV@BreakAfter\FV@Undefined
\endgroup
\FV@BreakAfter@Def
\FV@BreakAfterPrep@PygmentsHook
\fi
}
\def\FV@Break@AnyToken@UTF#1{%
\ifcsname FV@U8:\detokenize{#1}\endcsname
\expandafter\let\expandafter\FV@Break@Next\csname FV@U8:\detokenize{#1}\endcsname
\let\FV@UTF@octets@after\FV@Break@AnyToken@UTF@i
\else
\let\FV@Break@Next\FV@Break@AnyToken@UTF@i
\fi
\FV@Break@Next{#1}%
}
\def\FV@Break@AnyToken@UTF@i#1{%
\def\FV@CurrentToken{#1}%
\ifx\FV@CurrentToken\FV@ActiveSpaceToken\relax
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi
{\let\FV@LastToken\FV@CurrentToken
\FV@BreakBuffer@Append{#1}\FV@Break@Scan}%
{\ifx\FV@LastToken\FV@ActiveSpaceToken
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi
{\let\FV@LastToken\FV@CurrentToken
\FV@BreakBuffer@Append{#1}\FV@Break@Scan}%
{\let\FV@LastToken\FV@CurrentToken
\FV@BreakBuffer@Append{\FancyVerbBreakAnywhereBreak#1}\FV@Break@Scan}}}
\def\FV@Break@BeforeAfterToken@UTF#1{%
\ifcsname FV@U8:\detokenize{#1}\endcsname
\expandafter\let\expandafter\FV@Break@Next\csname FV@U8:\detokenize{#1}\endcsname
\let\FV@UTF@octets@after\FV@Break@BeforeAfterToken@UTF@i
\else
\let\FV@Break@Next\FV@Break@BeforeAfterToken@UTF@i
\fi
\FV@Break@Next{#1}%
}
\def\FV@Break@BeforeAfterToken@UTF@i#1{%
\ifcsname FV@BreakBefore@Token\detokenize{#1}\endcsname
\let\FV@Break@Next\FV@Break@BeforeTokenBreak@UTF
\else
\ifcsname FV@BreakAfter@Token\detokenize{#1}\endcsname
\let\FV@Break@Next\FV@Break@AfterTokenBreak@UTF
\else
\let\FV@Break@Next\FV@Break@BeforeAfterTokenNoBreak@UTF
\fi
\fi
\FV@Break@Next{#1}%
}
\def\FV@Break@BeforeAfterTokenNoBreak@UTF#1{%
\FV@BreakBuffer@Append{#1}%
\def\FV@LastToken{#1}%
\FV@Break@Scan}
\def\FV@Break@BeforeTokenBreak@UTF#1{%
\def\FV@CurrentToken{#1}%
\ifbool{FV@breakbeforeinrun}%
{\ifcsname FV@BreakAfter@Token\detokenize{#1}\endcsname
\ifx\FV@CurrentToken\FV@ActiveSpaceToken
\FV@BreakBuffer@Append{\FancyVerbSpaceBreak}%
\else
\FV@BreakBuffer@Append{\FancyVerbBreakBeforeBreak}%
\fi
\let\FV@Break@Next\FV@Break@BeforeTokenBreak@AfterRescan@UTF
\def\FV@RescanToken{#1}%
\else
\ifx\FV@CurrentToken\FV@ActiveSpaceToken
\FV@BreakBuffer@Append{\FancyVerbSpaceBreak#1}%
\else
\FV@BreakBuffer@Append{\FancyVerbBreakBeforeBreak#1}%
\fi
\let\FV@Break@Next\FV@Break@Scan
\def\FV@LastToken{#1}%
\fi}%
{\ifx\FV@CurrentToken\FV@LastToken\relax
\ifcsname FV@BreakAfter@Token\detokenize{#1}\endcsname
\let\FV@Break@Next\FV@Break@BeforeTokenBreak@AfterRescan@UTF
\def\FV@RescanToken{#1}%
\else
\FV@BreakBuffer@Append{#1}%
\let\FV@Break@Next\FV@Break@Scan
\def\FV@LastToken{#1}%
\fi
\else
\ifcsname FV@BreakAfter@Token\detokenize{#1}\endcsname
\ifx\FV@CurrentToken\FV@ActiveSpaceToken
\FV@BreakBuffer@Append{\FancyVerbSpaceBreak}%
\else
\FV@BreakBuffer@Append{\FancyVerbBreakBeforeBreak}%
\fi
\let\FV@Break@Next\FV@Break@BeforeTokenBreak@AfterRescan@UTF
\def\FV@RescanToken{#1}%
\else
\ifx\FV@CurrentToken\FV@ActiveSpaceToken
\FV@BreakBuffer@Append{\FancyVerbSpaceBreak#1}%
\else
\FV@BreakBuffer@Append{\FancyVerbBreakBeforeBreak#1}%
\fi
\let\FV@Break@Next\FV@Break@Scan
\def\FV@LastToken{#1}%
\fi
\fi}%
\FV@Break@Next}
\def\FV@Break@BeforeTokenBreak@AfterRescan@UTF{%
\expandafter\FV@Break@AfterTokenBreak@UTF\expandafter{\FV@RescanToken}}
\def\FV@Break@AfterTokenBreak@UTF#1{%
\def\FV@LastToken{#1}%
\@ifnextchar\FV@FVSpaceToken%
{\ifx\FV@LastToken\FV@ActiveSpaceToken
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi
{\FV@Break@AfterTokenBreak@UTF@i{#1}}%
{\FV@BreakBuffer@Append{#1}%
\FV@Break@Scan}}%
{\FV@Break@AfterTokenBreak@UTF@i{#1}}}
\def\FV@Break@AfterTokenBreak@UTF@i#1{%
\ifbool{FV@breakafterinrun}%
{\ifx\FV@LastToken\FV@ActiveSpaceToken
\FV@BreakBuffer@Append{#1\FancyVerbSpaceBreak}%
\else
\FV@BreakBuffer@Append{#1\FancyVerbBreakAfterBreak}%
\fi
\let\FV@Break@Next\FV@Break@Scan}%
{\FV@BreakBuffer@Append{#1}%
\expandafter\ifx\csname @let@token\endcsname\bgroup\relax
\let\FV@Break@Next\FV@Break@AfterTokenBreak@Group@UTF
\else
\let\FV@Break@Next\FV@Break@AfterTokenBreak@UTF@ii
\fi}%
\FV@Break@Next}
\def\FV@Break@AfterTokenBreak@UTF@ii#1{%
\ifcsname FV@U8:\detokenize{#1}\endcsname
\expandafter\let\expandafter\FV@Break@Next\csname FV@U8:\detokenize{#1}\endcsname
\let\FV@UTF@octets@after\FV@Break@AfterTokenBreak@UTF@ii
\else
\def\FV@NextToken{#1}%
\ifx\FV@LastToken\FV@NextToken
\else
\ifx\FV@LastToken\FV@ActiveSpaceToken
\FV@BreakBuffer@Append{\FancyVerbSpaceBreak}%
\else
\FV@BreakBuffer@Append{\FancyVerbBreakAfterBreak}%
\fi
\fi
\let\FV@Break@Next\FV@Break@Scan
\fi
\FV@Break@Next#1}
\def\FV@Break@AfterTokenBreak@Group@UTF#1{%
\ifstrempty{#1}%
{\FV@BreakBuffer@Append{{}}%
\@ifnextchar\bgroup
{\ifx\FV@LastToken\FV@ActiveSpaceToken
\FV@BreakBuffer@Append{\FancyVerbSpaceBreak}%
\else
\FV@BreakBuffer@Append{\FancyVerbBreakAfterBreak}%
\fi
\FV@Break@Group}%
{\FV@Break@AfterTokenBreak@Group@UTF@i}}%
{\ifx\FV@LastToken\FV@ActiveSpaceToken
\FV@BreakBuffer@Append{\FancyVerbSpaceBreak}%
\else
\FV@BreakBuffer@Append{\FancyVerbBreakAfterBreak}%
\fi
\FV@Break@Group{#1}}}
\def\FV@Break@AfterTokenBreak@Group@UTF@i#1{%
\ifcsname FV@U8:\detokenize{#1}\endcsname
\expandafter\let\expandafter\FV@Break@Next\csname FV@U8:\detokenize{#1}\endcsname
\let\FV@UTF@octets@after\FV@Break@AfterTokenBreak@Group@UTF@i
\else
\def\FV@NextToken{#1}%
\ifx\FV@LastToken\FV@NextToken
\else
\ifx\FV@LastToken\FV@ActiveSpaceToken
\FV@BreakBuffer@Append{\FancyVerbSpaceBreak}%
\else
\FV@BreakBuffer@Append{\FancyVerbBreakAfterBreak}%
\fi
\fi
\let\FV@Break@Next\FV@Break@Scan
\fi
\FV@Break@Next#1}
\fi
\def\FV@makeLineNumber{%
\hss
\FancyVerbBreakSymbolLeftLogic{\FancyVerbBreakSymbolLeft}%
\hbox to \FV@BreakSymbolSepLeft{\hfill}%
\rlap{\hskip\linewidth
\hbox to \FV@BreakSymbolSepRight{\hfill}%
\FancyVerbBreakSymbolRightLogic{\FancyVerbBreakSymbolRight}%
\FV@SetLineBreakLast
}%
}
\def\FV@RaggedRight{%
\let\\\@centercr
\@rightskip\@flushglue\rightskip\@rightskip\leftskip\z@skip\parindent\z@}
\newdimen\FV@LineWidth
\def\FV@SaveLineBox#1{%
\savebox{\FV@LineBox}{%
\advance\FV@LineWidth by -\FV@BreakIndent
\hbox to \FV@BreakIndent{\hfill}%
\ifbool{FV@breakautoindent}%
{\let\FV@LineIndentChars\@empty
\FV@GetLineIndent#1\FV@Sentinel
\savebox{\FV@LineIndentBox}{\FV@LineIndentChars}%
\hbox to \wd\FV@LineIndentBox{\hfill}%
\advance\FV@LineWidth by -\wd\FV@LineIndentBox
\setcounter{FV@TrueTabCounter}{0}}%
{}%
\ifdefempty{\FancyVerbBreakSymbolLeft}{}%
{\hbox to \FV@BreakSymbolIndentLeft{\hfill}%
\advance\FV@LineWidth by -\FV@BreakSymbolIndentLeft}%
\ifdefempty{\FancyVerbBreakSymbolRight}{}%
{\advance\FV@LineWidth by -\FV@BreakSymbolIndentRight}%
\parbox[t]{\FV@LineWidth}{%
\FV@RaggedRight
\leftlinenumbers*
\begin{internallinenumbers*}%
\let\makeLineNumber\FV@makeLineNumber
\noindent\hspace*{-\FV@BreakIndent}%
\ifdefempty{\FancyVerbBreakSymbolLeft}{}{%
\hspace*{-\FV@BreakSymbolIndentLeft}}%
\ifbool{FV@breakautoindent}%
{\hspace*{-\wd\FV@LineIndentBox}}%
{}%
\FV@BreakByTokenAnywhereHook
\strut\FV@InsertBreaks{\FancyVerbFormatText}{#1}\nobreak\strut
\end{internallinenumbers*}
}%
\ifdefempty{\FancyVerbBreakSymbolRight}{}%
{\hbox to \FV@BreakSymbolIndentRight{\hfill}}%
}%
}
\let\FV@BreakByTokenAnywhereHook\relax
\def\FV@ListProcessLine@Break#1{%
\hbox to \hsize{%
\kern\leftmargin
\hbox to \linewidth{%
\FV@LineWidth\linewidth
\ifx\FV@RightListFrame\relax\else
\advance\FV@LineWidth by -\FV@FrameSep
\advance\FV@LineWidth by -\FV@FrameRule
\fi
\ifx\FV@LeftListFrame\relax\else
\advance\FV@LineWidth by -\FV@FrameSep
\advance\FV@LineWidth by -\FV@FrameRule
\fi
\ifx\FV@Tab\FV@TrueTab
\let\FV@TrueTabSaveWidth\FV@TrueTabSaveWidth@Save
\setcounter{FV@TrueTabCounter}{0}%
\fi
\sbox{\FV@LineBox}{%
\let\FancyVerbBreakStart\relax
\let\FancyVerbBreakStop\relax
\FancyVerbFormatLine{%
%\FancyVerbHighlightLine %<-- Default definition using \rlap breaks breaking
{\FV@ObeyTabs{\FancyVerbFormatText{#1}}}}}%
\ifx\FV@Tab\FV@TrueTab
\let\FV@TrueTabSaveWidth\relax
\fi
\ifdim\wd\FV@LineBox>\FV@LineWidth
\setcounter{FancyVerbLineBreakLast}{0}%
\ifx\FV@Tab\FV@TrueTab
\let\FV@Tab\FV@TrueTab@UseWidth
\setcounter{FV@TrueTabCounter}{0}%
\fi
\FV@SaveLineBox{#1}%
\ifdefempty{\FancyVerbBreakSymbolRight}{}{%
\let\FV@SetLineBreakLast\relax
\setcounter{FV@TrueTabCounter}{0}%
\FV@SaveLineBox{#1}}%
\FV@LeftListNumber
\FV@LeftListFrame
\FV@BGColor@List{%
\FancyVerbFormatLine{%
\FancyVerbHighlightLine{\usebox{\FV@LineBox}}}}%
\FV@RightListFrame
\FV@RightListNumber
\ifx\FV@Tab\FV@TrueTab@UseWidth
\let\FV@Tab\FV@TrueTab
\fi
\else
\let\FancyVerbBreakStart\relax
\let\FancyVerbBreakStop\relax
\FV@LeftListNumber
\FV@LeftListFrame
\FV@BGColor@List{%
\FancyVerbFormatLine{%
\FancyVerbHighlightLine{%
\parbox[t]{\FV@LineWidth}{%
\noindent\strut\FV@ObeyTabs{\FancyVerbFormatText{#1}}\strut}}}}%
\FV@RightListFrame
\FV@RightListNumber
\fi}%
\hss}\baselineskip\z@\lineskip\z@}
\def\FV@BreakBeforePrep@Pygments#1{%
\ifcsname FV@BreakBefore@Token\@backslashchar\endcsname
\@namedef{FV@BreakBefore@Token#1Zbs }{}%
\fi
\ifcsname FV@BreakBefore@Token\FV@underscorechar\endcsname
\@namedef{FV@BreakBefore@Token#1Zus }{}%
\fi
\ifcsname FV@BreakBefore@Token\@charlb\endcsname
\@namedef{FV@BreakBefore@Token#1Zob }{}%
\fi
\ifcsname FV@BreakBefore@Token\@charrb\endcsname
\@namedef{FV@BreakBefore@Token#1Zcb }{}%
\fi
\ifcsname FV@BreakBefore@Token\detokenize{^}\endcsname
\@namedef{FV@BreakBefore@Token#1Zca }{}%
\fi
\ifcsname FV@BreakBefore@Token\FV@ampchar\endcsname
\@namedef{FV@BreakBefore@Token#1Zam }{}%
\fi
\ifcsname FV@BreakBefore@Token\detokenize{<}\endcsname
\@namedef{FV@BreakBefore@Token#1Zlt }{}%
\fi
\ifcsname FV@BreakBefore@Token\detokenize{>}\endcsname
\@namedef{FV@BreakBefore@Token#1Zgt }{}%
\fi
\ifcsname FV@BreakBefore@Token\FV@hashchar\endcsname
\@namedef{FV@BreakBefore@Token#1Zsh }{}%
\fi
\ifcsname FV@BreakBefore@Token\@percentchar\endcsname
\@namedef{FV@BreakBefore@Token#1Zpc }{}%
\fi
\ifcsname FV@BreakBefore@Token\FV@dollarchar\endcsname
\@namedef{FV@BreakBefore@Token#1Zdl }{}%
\fi
\ifcsname FV@BreakBefore@Token\detokenize{-}\endcsname
\@namedef{FV@BreakBefore@Token#1Zhy }{}%
\fi
\ifcsname FV@BreakBefore@Token\detokenize{'}\endcsname
\@namedef{FV@BreakBefore@Token#1Zsq }{}%
\fi
\ifcsname FV@BreakBefore@Token\detokenize{"}\endcsname
\@namedef{FV@BreakBefore@Token#1Zdq }{}%
\fi
\ifcsname FV@BreakBefore@Token\FV@tildechar\endcsname
\@namedef{FV@BreakBefore@Token#1Zti }{}%
\fi
\ifcsname FV@BreakBefore@Token\detokenize{@}\endcsname
\@namedef{FV@BreakBefore@Token#1Zat }{}%
\fi
\ifcsname FV@BreakBefore@Token\detokenize{[}\endcsname
\@namedef{FV@BreakBefore@Token#1Zlb }{}%
\fi
\ifcsname FV@BreakBefore@Token\detokenize{]}\endcsname
\@namedef{FV@BreakBefore@Token#1Zrb }{}%
\fi
}
\def\FV@BreakAfterPrep@Pygments#1{%
\ifcsname FV@BreakAfter@Token\@backslashchar\endcsname
\@namedef{FV@BreakAfter@Token#1Zbs }{}%
\fi
\ifcsname FV@BreakAfter@Token\FV@underscorechar\endcsname
\@namedef{FV@BreakAfter@Token#1Zus }{}%
\fi
\ifcsname FV@BreakAfter@Token\@charlb\endcsname
\@namedef{FV@BreakAfter@Token#1Zob }{}%
\fi
\ifcsname FV@BreakAfter@Token\@charrb\endcsname
\@namedef{FV@BreakAfter@Token#1Zcb }{}%
\fi
\ifcsname FV@BreakAfter@Token\detokenize{^}\endcsname
\@namedef{FV@BreakAfter@Token#1Zca }{}%
\fi
\ifcsname FV@BreakAfter@Token\FV@ampchar\endcsname
\@namedef{FV@BreakAfter@Token#1Zam }{}%
\fi
\ifcsname FV@BreakAfter@Token\detokenize{<}\endcsname
\@namedef{FV@BreakAfter@Token#1Zlt }{}%
\fi
\ifcsname FV@BreakAfter@Token\detokenize{>}\endcsname
\@namedef{FV@BreakAfter@Token#1Zgt }{}%
\fi
\ifcsname FV@BreakAfter@Token\FV@hashchar\endcsname
\@namedef{FV@BreakAfter@Token#1Zsh }{}%
\fi
\ifcsname FV@BreakAfter@Token\@percentchar\endcsname
\@namedef{FV@BreakAfter@Token#1Zpc }{}%
\fi
\ifcsname FV@BreakAfter@Token\FV@dollarchar\endcsname
\@namedef{FV@BreakAfter@Token#1Zdl }{}%
\fi
\ifcsname FV@BreakAfter@Token\detokenize{-}\endcsname
\@namedef{FV@BreakAfter@Token#1Zhy }{}%
\fi
\ifcsname FV@BreakAfter@Token\detokenize{'}\endcsname
\@namedef{FV@BreakAfter@Token#1Zsq }{}%
\fi
\ifcsname FV@BreakAfter@Token\detokenize{"}\endcsname
\@namedef{FV@BreakAfter@Token#1Zdq }{}%
\fi
\ifcsname FV@BreakAfter@Token\FV@tildechar\endcsname
\@namedef{FV@BreakAfter@Token#1Zti }{}%
\fi
\ifcsname FV@BreakAfter@Token\detokenize{@}\endcsname
\@namedef{FV@BreakAfter@Token#1Zat }{}%
\fi
\ifcsname FV@BreakAfter@Token\detokenize{[}\endcsname
\@namedef{FV@BreakAfter@Token#1Zlb }{}%
\fi
\ifcsname FV@BreakAfter@Token\detokenize{]}\endcsname
\@namedef{FV@BreakAfter@Token#1Zrb }{}%
\fi
}
\newbool{FV@breakbytoken}
\define@booleankey{FV}{breakbytoken}%
{\booltrue{FV@breakbytoken}}%
{\boolfalse{FV@breakbytoken}\boolfalse{FV@breakbytokenanywhere}}
\newbool{FV@breakbytokenanywhere}
\define@booleankey{FV}{breakbytokenanywhere}%
{\booltrue{FV@breakbytokenanywhere}\booltrue{FV@breakbytoken}}%
{\boolfalse{FV@breakbytokenanywhere}\boolfalse{FV@breakbytoken}}
\def\FancyVerbBreakByTokenAnywhereBreak{\allowbreak{}}
\def\VerbatimPygments#1#2{%
\def\FV@PygmentsHook{\FV@VerbatimPygments{#1}{#2}}}
\def\FV@VerbatimPygments#1#2{%
\edef\FV@PYG@Literal{\expandafter\FV@DetokMacro@StripSpace\detokenize{#1}}%
\def\FV@BreakBeforePrep@PygmentsHook{%
\expandafter\FV@BreakBeforePrep@Pygments\expandafter{\FV@PYG@Literal}}%
\def\FV@BreakAfterPrep@PygmentsHook{%
\expandafter\FV@BreakAfterPrep@Pygments\expandafter{\FV@PYG@Literal}}%
\ifx#2\relax
\let\FV@PYG=#1\relax
\else
\let\FV@PYG=#2\relax
\fi
\ifbool{FV@breakbytoken}%
{\ifbool{FV@breakbytokenanywhere}%
{\def\FV@BreakByTokenAnywhereHook{%
\def\FV@BreakByTokenAnywhereBreak{%
\let\FV@BreakByTokenAnywhereBreak\FancyVerbBreakByTokenAnywhereBreak}}%
\def#1##1##2{%
\FV@BreakByTokenAnywhereBreak
\leavevmode\hbox{\FV@PYG{##1}{##2}}}}%
{\def#1##1##2{%
\leavevmode\hbox{\FV@PYG{##1}{##2}}}}}%
{\def#1##1##2{%
\FV@PYG{##1}{\FancyVerbBreakStart##2\FancyVerbBreakStop}}}%
\let\FV@PYG@Redefed=#1\relax
}
\let\FV@BreakByTokenAnywhereBreak\relax
\def\FV@DetokMacro@StripSpace#1 {#1}
%% \Finale
\endinput
%%
%% End of file `fvextra.sty'.